myrta-ui 17.0.75 → 17.0.77

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/esm2022/lib/components/form/formula-editor/enums/error-messages.enum.mjs +16 -0
  2. package/esm2022/lib/components/form/formula-editor/enums/formula-editor-size.enum.mjs +7 -0
  3. package/esm2022/lib/components/form/formula-editor/formula-editor.component.mjs +342 -0
  4. package/esm2022/lib/components/form/formula-editor/formula-editor.module.mjs +44 -0
  5. package/esm2022/lib/components/form/formula-editor/helpers/check-errors.helper.mjs +73 -0
  6. package/esm2022/lib/components/form/formula-editor/helpers/create-tags.helper.mjs +17 -0
  7. package/esm2022/lib/components/form/formula-editor/models/check-error-result.model.mjs +2 -0
  8. package/esm2022/lib/components/form/formula-editor/models/formula-editor.model.mjs +2 -0
  9. package/esm2022/lib/components/form/formula-editor/models/index.mjs +4 -0
  10. package/esm2022/lib/components/form/formula-editor/models/white-list-item.model.mjs +2 -0
  11. package/esm2022/lib/components/form/json-editor/json-editor.component.mjs +1 -1
  12. package/esm2022/lib/components/form/json-editor/json-editor.module.mjs +1 -1
  13. package/esm2022/lib/components/form/select/helpers/clean-selected-items.helper.mjs +3 -5
  14. package/esm2022/lib/components/form/select/helpers/get-inner-items.helper.mjs +4 -4
  15. package/esm2022/lib/components/form/select/models/select-inner-item.model.mjs +1 -1
  16. package/esm2022/lib/components/form/select/select.component.mjs +4 -4
  17. package/esm2022/lib/components/paginator/paginator.component.mjs +2 -1
  18. package/esm2022/lib/helpers/is-number.helper.mjs +7 -0
  19. package/esm2022/public-api.mjs +4 -1
  20. package/fesm2022/myrta-ui.mjs +499 -18
  21. package/fesm2022/myrta-ui.mjs.map +1 -1
  22. package/lib/components/form/formula-editor/enums/error-messages.enum.d.ts +8 -0
  23. package/lib/components/form/formula-editor/enums/formula-editor-size.enum.d.ts +6 -0
  24. package/lib/components/form/formula-editor/formula-editor.component.d.ts +74 -0
  25. package/lib/components/form/formula-editor/formula-editor.module.d.ts +13 -0
  26. package/lib/components/form/formula-editor/helpers/check-errors.helper.d.ts +6 -0
  27. package/lib/components/form/formula-editor/helpers/create-tags.helper.d.ts +5 -0
  28. package/lib/components/form/formula-editor/models/check-error-result.model.d.ts +5 -0
  29. package/lib/components/form/formula-editor/models/formula-editor.model.d.ts +5 -0
  30. package/lib/components/form/formula-editor/models/index.d.ts +3 -0
  31. package/lib/components/form/formula-editor/models/white-list-item.model.d.ts +5 -0
  32. package/lib/components/form/select/helpers/clean-selected-items.helper.d.ts +2 -6
  33. package/lib/components/form/select/helpers/get-inner-items.helper.d.ts +1 -1
  34. package/lib/components/form/select/models/select-inner-item.model.d.ts +1 -0
  35. package/lib/components/form/select/select.component.d.ts +2 -4
  36. package/lib/helpers/is-number.helper.d.ts +1 -0
  37. package/package.json +1 -1
  38. package/public-api.d.ts +3 -0
@@ -0,0 +1,17 @@
1
+ //  
2
+ export const createTag = (content) => {
3
+ return `<div class="tag argument -medium" contenteditable="false" tabindex="-1">${content}</div>&nbsp;`;
4
+ };
5
+ export const createOperator = (content) => {
6
+ return `<div class="tag operator -large" contenteditable="false" tabindex="-1">${content}</div>&nbsp;`;
7
+ };
8
+ export const createNumber = (content) => {
9
+ return `<div class="tag number -medium" contenteditable="false" tabindex="-1">${content}</div>&nbsp;`;
10
+ };
11
+ export const createBracket = (content) => {
12
+ return `<div class="tag bracket -medium" contenteditable="false" tabindex="-1">${content}</div>&nbsp;`;
13
+ };
14
+ export const createTagOutside = (content) => {
15
+ return `{${content}}`;
16
+ };
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXRhZ3MuaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGEtdWkvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vZm9ybXVsYS1lZGl0b3IvaGVscGVycy9jcmVhdGUtdGFncy5oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsU0FBUztBQUNULE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxDQUFDLE9BQWUsRUFBRSxFQUFFO0lBQzNDLE9BQU8sMkVBQTJFLE9BQU8sY0FBYyxDQUFBO0FBQ3pHLENBQUMsQ0FBQTtBQUVELE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxDQUFDLE9BQWUsRUFBRSxFQUFFO0lBQ2hELE9BQU8sMEVBQTBFLE9BQU8sY0FBYyxDQUFBO0FBQ3hHLENBQUMsQ0FBQTtBQUVELE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUFDLE9BQWUsRUFBRSxFQUFFO0lBQzlDLE9BQU8seUVBQXlFLE9BQU8sY0FBYyxDQUFBO0FBQ3ZHLENBQUMsQ0FBQTtBQUVELE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxDQUFDLE9BQWUsRUFBRSxFQUFFO0lBQy9DLE9BQU8sMEVBQTBFLE9BQU8sY0FBYyxDQUFBO0FBQ3hHLENBQUMsQ0FBQTtBQUVELE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLENBQUMsT0FBZSxFQUFFLEVBQUU7SUFDbEQsT0FBTyxJQUFJLE9BQU8sR0FBRyxDQUFBO0FBQ3ZCLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8vICZuYnNwO1xyXG5leHBvcnQgY29uc3QgY3JlYXRlVGFnID0gKGNvbnRlbnQ6IHN0cmluZykgPT4ge1xyXG4gIHJldHVybiBgPGRpdiBjbGFzcz1cInRhZyBhcmd1bWVudCAtbWVkaXVtXCIgY29udGVudGVkaXRhYmxlPVwiZmFsc2VcIiB0YWJpbmRleD1cIi0xXCI+JHtjb250ZW50fTwvZGl2PiZuYnNwO2BcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IGNyZWF0ZU9wZXJhdG9yID0gKGNvbnRlbnQ6IHN0cmluZykgPT4ge1xyXG4gIHJldHVybiBgPGRpdiBjbGFzcz1cInRhZyBvcGVyYXRvciAtbGFyZ2VcIiBjb250ZW50ZWRpdGFibGU9XCJmYWxzZVwiIHRhYmluZGV4PVwiLTFcIj4ke2NvbnRlbnR9PC9kaXY+Jm5ic3A7YFxyXG59XHJcblxyXG5leHBvcnQgY29uc3QgY3JlYXRlTnVtYmVyID0gKGNvbnRlbnQ6IHN0cmluZykgPT4ge1xyXG4gIHJldHVybiBgPGRpdiBjbGFzcz1cInRhZyBudW1iZXIgLW1lZGl1bVwiIGNvbnRlbnRlZGl0YWJsZT1cImZhbHNlXCIgdGFiaW5kZXg9XCItMVwiPiR7Y29udGVudH08L2Rpdj4mbmJzcDtgXHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBjcmVhdGVCcmFja2V0ID0gKGNvbnRlbnQ6IHN0cmluZykgPT4ge1xyXG4gIHJldHVybiBgPGRpdiBjbGFzcz1cInRhZyBicmFja2V0IC1tZWRpdW1cIiBjb250ZW50ZWRpdGFibGU9XCJmYWxzZVwiIHRhYmluZGV4PVwiLTFcIj4ke2NvbnRlbnR9PC9kaXY+Jm5ic3A7YFxyXG59XHJcblxyXG5leHBvcnQgY29uc3QgY3JlYXRlVGFnT3V0c2lkZSA9IChjb250ZW50OiBzdHJpbmcpID0+IHtcclxuICByZXR1cm4gYHske2NvbnRlbnR9fWBcclxufVxyXG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2stZXJyb3ItcmVzdWx0Lm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGEtdWkvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vZm9ybXVsYS1lZGl0b3IvbW9kZWxzL2NoZWNrLWVycm9yLXJlc3VsdC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXJyb3JUeXBlRW51bSB9IGZyb20gJy4uL2VudW1zL2Vycm9yLW1lc3NhZ2VzLmVudW0nO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDaGVja0Vycm9yUmVzdWx0TW9kZWwge1xyXG4gIGlzRXJyb3I6IGJvb2xlYW4sXHJcbiAgZXJyb3JUeXBlOiBFcnJvclR5cGVFbnVtXHJcbn1cclxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybXVsYS1lZGl0b3IubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJ0YS11aS9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS9mb3JtdWxhLWVkaXRvci9tb2RlbHMvZm9ybXVsYS1lZGl0b3IubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIEZvcm11bGFFZGl0b3JWYWx1ZVR5cGVzID0gc3RyaW5nO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBGb3JtdWxhRWRpdG9yVmFsdWVXaXRoSWQge1xyXG4gIHZhbHVlOiBGb3JtdWxhRWRpdG9yVmFsdWVUeXBlcyxcclxuICBpZDogc3RyaW5nXHJcbn1cclxuIl19
@@ -0,0 +1,4 @@
1
+ export * from './formula-editor.model';
2
+ export * from './check-error-result.model';
3
+ export * from './white-list-item.model';
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJ0YS11aS9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS9mb3JtdWxhLWVkaXRvci9tb2RlbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMseUJBQXlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2Zvcm11bGEtZWRpdG9yLm1vZGVsJztcclxuZXhwb3J0ICogZnJvbSAnLi9jaGVjay1lcnJvci1yZXN1bHQubW9kZWwnO1xyXG5leHBvcnQgKiBmcm9tICcuL3doaXRlLWxpc3QtaXRlbS5tb2RlbCc7XHJcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2hpdGUtbGlzdC1pdGVtLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGEtdWkvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vZm9ybXVsYS1lZGl0b3IvbW9kZWxzL3doaXRlLWxpc3QtaXRlbS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBXaGl0ZUxpc3RJdGVtTW9kZWwge1xyXG4gIHN5c05hbWU6IHN0cmluZyxcclxuICBsYWJlbDogc3RyaW5nLFxyXG4gIGRyb3BMYWJlbD86IHN0cmluZ1xyXG59XHJcbiJdfQ==
@@ -221,4 +221,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
221
221
  type: ViewChild,
222
222
  args: ['jsonEditorContainer', { static: true }]
223
223
  }] } });
224
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbi1lZGl0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGEtdWkvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vanNvbi1lZGl0b3IvanNvbi1lZGl0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGEtdWkvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vanNvbi1lZGl0b3IvanNvbi1lZGl0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBRVQsWUFBWSxFQUNaLFVBQVUsRUFDVixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxVQUFVLE1BQU0sWUFBWSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxFQUFFLElBQUksTUFBTSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXBDLE9BQU8sRUFBa0IsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7QUFpQjlFLE1BQU0sT0FBTyxtQkFBbUI7SUFDdEIsS0FBSyxHQUFXLEVBQUUsQ0FBQztJQUNuQixNQUFNLENBQWM7SUFFckIsY0FBYyxHQUFHLEtBQUssQ0FBQztJQUN2QixRQUFRLEdBQUcsS0FBSyxDQUFDO0lBQ2pCLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFFekIsYUFBYTtJQUNOLElBQUksR0FBVyxNQUFNLEVBQUUsQ0FBQTtJQUNkLE1BQU0sR0FBWSxFQUFFLENBQUM7SUFFNUIsT0FBTyxHQUFzQixJQUFJLGlCQUFpQixFQUFFLENBQUM7SUFDckQsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUV2QixJQUFtQixJQUFJLENBQUMsS0FBYTtRQUNuQyxJQUFJLENBQUMs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Q0FBQztJQUVPLFVBQVUsR0FBRyxDQUFDLEtBQVUsRUFBRSxFQUFFO0lBQ3BDLENBQUMsQ0FBQztJQUNNLFdBQVcsR0FBRyxHQUFHLEVBQUU7SUFDM0IsQ0FBQyxDQUFDO3dHQTdOUyxtQkFBbUI7NEZBQW5CLG1CQUFtQixpTkFSbkI7WUFDVDtnQkFDRSxPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLG1CQUFtQixDQUFDO2dCQUNsRCxLQUFLLEVBQUUsSUFBSTthQUNaO1NBQ0Ysb0tDN0JILG9EQUNBOzs0RkQ4QmEsbUJBQW1CO2tCQWQvQixTQUFTOytCQUNFLGlCQUFpQix1QkFHTixLQUFLLG1CQUNULHVCQUF1QixDQUFDLE1BQU0sYUFDcEM7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsb0JBQW9CLENBQUM7NEJBQ2xELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGO3dEQVllLE1BQU07c0JBQXJCLEtBQUs7Z0JBRUcsT0FBTztzQkFBZixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFFYSxJQUFJO3NCQUF0QixLQUFLO3VCQUFDLE1BQU07Z0JBUUksT0FBTztzQkFBdkIsTUFBTTtnQkFDVSxXQUFXO3NCQUEzQixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBRTJDLG1CQUFtQjtzQkFBcEUsU0FBUzt1QkFBQyxxQkFBcUIsRUFBRSxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBmb3J3YXJkUmVmLFxyXG4gIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgVmlld0NoaWxkXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IEpTT05FZGl0b3IgZnJvbSAnanNvbmVkaXRvcic7XHJcbmltcG9ydCB7IHY0IGFzIHV1aWR2NCB9IGZyb20gJ3V1aWQnO1xyXG5pbXBvcnQgeyBGaWVsZCB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzJztcclxuaW1wb3J0IHsgSnNvbkVkaXRvck1vZGUsIEpzb25FZGl0b3JPcHRpb25zIH0gZnJvbSAnLi91dGlscy9qc29uZWRpdG9yb3B0aW9ucyc7XHJcbmltcG9ydCB7IEpzb25FZGl0b3JWYWx1ZVR5cGVzLCBKc29uRWRpdG9yVmFsdWVXaXRoSWQgfSBmcm9tICcuL2pzb24tZWRpdG9yLmVudW0nO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdtcngtanNvbi1lZGl0b3InLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9qc29uLWVkaXRvci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2pzb24tZWRpdG9yLmNvbXBvbmVudC5sZXNzJyxcclxuICBwcmVzZXJ2ZVdoaXRlc3BhY2VzOiBmYWxzZSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEpzb25FZGl0b3JDb21wb25lbnQpLFxyXG4gICAgICBtdWx0aTogdHJ1ZSxcclxuICAgIH0sXHJcbiAgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEpzb25FZGl0b3JDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIHByaXZhdGUgX2RhdGE6IE9iamVjdCA9IHt9O1xyXG4gIHByaXZhdGUgZWRpdG9yITogSlNPTkVkaXRvcjtcclxuXHJcbiAgcHVibGljIG9wdGlvbnNDaGFuZ2VkID0gZmFsc2U7XHJcbiAgcHVibGljIGRpc2FibGVkID0gZmFsc2U7XHJcbiAgcHVibGljIGlzRm9jdXNlZCA9IGZhbHNlO1xyXG5cclxuICAvLyBTQVZFIFNUQVRFXHJcbiAgcHVibGljIHV1aWQ6IHN0cmluZyA9IHV1aWR2NCgpXHJcbiAgQElucHV0KCkgcHVibGljIGZpZWxkczogRmllbGRbXSA9IFtdO1xyXG5cclxuICBASW5wdXQoKSBvcHRpb25zOiBKc29uRWRpdG9yT3B0aW9ucyA9IG5ldyBKc29uRWRpdG9yT3B0aW9ucygpO1xyXG4gIEBJbnB1dCgpIGRlYnVnID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgnZGF0YScpIHNldCBkYXRhKHZhbHVlOiBPYmplY3QpIHtcclxuICAgIHRoaXMuX2RhdGEgPSB2YWx1ZTtcclxuICAgIGlmICh0aGlzLmVkaXRvcikge1xyXG4gICAgICB0aGlzLmVkaXRvci5kZXN0cm95KCk7XHJcbiAgICAgIHRoaXMubmdPbkluaXQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBPdXRwdXQoKSBwdWJsaWMgY2hhbmdlZDogRXZlbnRFbWl0dGVyPEpzb25FZGl0b3JWYWx1ZVR5cGVzPiA9IG5ldyBFdmVudEVtaXR0ZXI8SnNvbkVkaXRvclZhbHVlVHlwZXM+KCk7XHJcbiAgQE91dHB1dCgpIHB1YmxpYyBtb2RlbENoYW5nZTogRXZlbnRFbWl0dGVyPEpzb25FZGl0b3JWYWx1ZVdpdGhJZD4gPSBuZXcgRXZlbnRFbWl0dGVyPEpzb25FZGl0b3JWYWx1ZVdpdGhJZD4oKTtcclxuICBAT3V0cHV0KCkganNvbkNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgQFZpZXdDaGlsZCgnanNvbkVkaXRvckNvbnRhaW5lcicsIHtzdGF0aWM6IHRydWV9KSBqc29uRWRpdG9yQ29udGFpbmVyITogRWxlbWVudFJlZjtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGxldCBvcHRpb25zQmVmb3JlID0gdGhpcy5vcHRpb25zO1xyXG4gICAgaWYgKCF0aGlzLm9wdGlvbnNDaGFuZ2VkICYmIHRoaXMuZWRpdG9yKSB7XHJcbiAgICAgIC8vVE9ETzogY2hlY2sgaWYgdGhpcyBpcyBuZWVkZWRcclxuICAgICAgb3B0aW9uc0JlZm9yZSA9ICh0aGlzLmVkaXRvciBhcyBhbnkpLm9wdGlvbnM7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCF0aGlzLm9wdGlvbnMub25DaGFuZ2VKU09OICYmIHRoaXMuanNvbkNoYW5nZSkge1xyXG4gICAgICB0aGlzLm9wdGlvbnMub25DaGFuZ2VKU09OID0gdGhpcy5vbkNoYW5nZUpTT047XHJcbiAgICB9XHJcbiAgICBpZiAoIXRoaXMub3B0aW9ucy5vbkNoYW5nZSAmJiB0aGlzLmNoYW5nZWQpIHtcclxuICAgICAgdGhpcy5vcHRpb25zLm9uQ2hhbmdlID0gdGhpcy5vbkNoYW5nZTtcclxuICAgIH1cclxuICAgIGNvbnN0IG9wdGlvbnNDb3B5ID0gT2JqZWN0LmFzc2lnbih7fSwgb3B0aW9uc0JlZm9yZSk7XHJcblxyXG4gICAgLy8gZXhwYW5kQWxsIGlzIGFuIG9wdGlvbiBvbmx5IHN1cHBvcnRlZCBieSBhbmctanNvbmVkaXRvciBhbmQgbm90IGJ5IHRoZSB0aGUgb3JpZ2luYWwganNvbmVkaXRvci5cclxuICAgIGRlbGV0ZSBvcHRpb25zQ29weS5leHBhbmRBbGw7XHJcbiAgICBpZiAodGhpcy5kZWJ1Zykge1xyXG4gICAgICBjb25zb2xlLmxvZyhvcHRpb25zQ29weSwgdGhpcy5fZGF0YSk7XHJcbiAgICB9XHJcbiAgICBpZiAoIXRoaXMuanNvbkVkaXRvckNvbnRhaW5lci5uYXRpdmVFbGVtZW50KSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoYENhbid0IGZpbmQgdGhlIEVsZW1lbnRSZWYgcmVmZXJlbmNlIGZvciBqc29uZWRpdG9yKWApO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChcclxuICAgICAgb3B0aW9uc0NvcHkubW9kZSA9PT0gJ3RleHQnIHx8IG9wdGlvbnNDb3B5Lm1vZGUgPT09ICdjb2RlJyB8fFxyXG4gICAgICAoXHJcbiAgICAgICAgb3B0aW9uc0NvcHkubW9kZXMgJiZcclxuICAgICAgICAob3B0aW9uc0NvcHkubW9kZXMuaW5kZXhPZigndGV4dCcpICE9PSAtMSB8fCBvcHRpb25zQ29weS5tb2Rlcy5pbmRleE9mKCdjb2RlJykgIT09IC0xKVxyXG4gICAgICApXHJcbiAgICApIHtcclxuICAgICAgb3B0aW9uc0NvcHkub25DaGFuZ2VKU09OID0gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG4gICAgdGhpcy5lZGl0b3IgPSBuZXcgSlNPTkVkaXRvcih0aGlzLmpzb25FZGl0b3JDb250YWluZXIubmF0aXZlRWxlbWVudCwgb3B0aW9uc0NvcHkgYXMgYW55LCB0aGlzLl9kYXRhKTtcclxuXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLmV4cGFuZEFsbCkge1xyXG4gICAgICB0aGlzLmVkaXRvci5leHBhbmRBbGwoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uQ2hhbmdlSlNPTiA9ICgpID0+IHtcclxuICAgIGlmICh0aGlzLmVkaXRvcikge1xyXG4gICAgICB0cnkge1xyXG4gICAgICAgIHRoaXMuanNvbkNoYW5nZS5lbWl0KHRoaXMuZWRpdG9yLmdldCgpKTtcclxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICBpZiAodGhpcy5kZWJ1Zykge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIHB1YmxpYyBvbkNoYW5nZSA9ICgpID0+IHtcclxuICAgIGlmICh0aGlzLmVkaXRvcikge1xyXG4gICAgICB0cnkge1xyXG4gICAgICAgIGNvbnN0IGpzb24gPSB0aGlzLmVkaXRvci5nZXQoKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKGpzb24pXHJcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZGVidWcpIHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9O1xyXG5cclxuICAvKipcclxuICAgKiBKU09OIEVESVRPUiBGVU5DVElPTlNcclxuICAgKi9cclxuXHJcbiAgcHVibGljIGNvbGxhcHNlQWxsKCkge1xyXG4gICAgdGhpcy5lZGl0b3IuY29sbGFwc2VBbGwoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBleHBhbmRBbGwoKSB7XHJcbiAgICB0aGlzLmVkaXRvci5leHBhbmRBbGwoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBmb2N1cygpIHtcclxuICAgIHRoaXMuZWRpdG9yLmZvY3VzKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0KCk6IEpTT04ge1xyXG4gICAgcmV0dXJuIHRoaXMuZWRpdG9yLmdldCgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldE1vZGUoKTogSnNvbkVkaXRvck1vZGUge1xyXG4gICAgcmV0dXJuIHRoaXMuZWRpdG9yLmdldE1vZGUoKSBhcyBKc29uRWRpdG9yTW9kZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXROYW1lKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5lZGl0b3IuZ2V0TmFtZSgpITtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRUZXh0KCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5lZGl0b3IuZ2V0VGV4dCgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldChqc29uOiBKU09OKSB7XHJcbiAgICB0aGlzLmVkaXRvci5zZXQoanNvbik7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0TW9kZShtb2RlOiBKc29uRWRpdG9yTW9kZSkge1xyXG4gICAgdGhpcy5lZGl0b3Iuc2V0TW9kZShtb2RlKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXROYW1lKG5hbWU6IHN0cmluZykge1xyXG4gICAgdGhpcy5lZGl0b3Iuc2V0TmFtZShuYW1lKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXRTZWxlY3Rpb24oc3RhcnQ6IGFueSwgZW5kOiBhbnkpIHtcclxuICAgIHRoaXMuZWRpdG9yLnNldFNlbGVjdGlvbihzdGFydCwgZW5kKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRTZWxlY3Rpb24oKTogYW55IHtcclxuICAgIHJldHVybiB0aGlzLmVkaXRvci5nZXRTZWxlY3Rpb24oKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRWYWxpZGF0ZVNjaGVtYSgpOiBhbnkge1xyXG4gICAgLy9UT0RPOiBjaGVjayBpZiB0aGlzIGlzIG5lZWRlZFxyXG4gICAgcmV0dXJuICh0aGlzLmVkaXRvciBhcyBhbnkpLnZhbGlkYXRlU2NoZW1hO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldFNjaGVtYShzY2hlbWE6IGFueSwgc2NoZW1hUmVmczogYW55KSB7XHJcbiAgICB0aGlzLmVkaXRvci5zZXRTY2hlbWEoc2NoZW1hLCBzY2hlbWFSZWZzKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZWFyY2gocXVlcnk6IHN0cmluZykge1xyXG4gICAgLy9UT0RPOiBjaGVjayBpZiB0aGlzIGlzIG5lZWRlZFxyXG4gICAgKHRoaXMuZWRpdG9yIGFzIGFueSkuc2VhcmNoKHF1ZXJ5KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXRPcHRpb25zKG5ld09wdGlvbnM6IEpzb25FZGl0b3JPcHRpb25zKSB7XHJcbiAgICBpZiAodGhpcy5lZGl0b3IpIHtcclxuICAgICAgdGhpcy5lZGl0b3IuZGVzdHJveSgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5vcHRpb25zQ2hhbmdlZCA9IHRydWU7XHJcbiAgICB0aGlzLm9wdGlvbnMgPSBuZXdPcHRpb25zO1xyXG4gICAgdGhpcy5uZ09uSW5pdCgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHVwZGF0ZShqc29uOiBKU09OKSB7XHJcbiAgICB0aGlzLmVkaXRvci51cGRhdGUoanNvbik7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZGVzdHJveSgpIHtcclxuICAgIGlmICh0aGlzLmVkaXRvcikge1xyXG4gICAgICB0aGlzLmVkaXRvci5kZXN0cm95KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0RWRpdG9yKCkge1xyXG4gICAgLy9UT0RPOiBtYWRlIGl0IGFueSBiZWNhdXNlIG9mIHRoZSBtaXNzaW5nIHR5cGUgZGVmaW5pdGlvblxyXG4gICAgcmV0dXJuIHRoaXMuZWRpdG9yIGFzIGFueTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBpc1ZhbGlkSnNvbigpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIEpTT04ucGFyc2UodGhpcy5nZXRUZXh0KCkpO1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLmRhdGEgPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyB1cGRhdGVWYWx1ZShpbnNpZGVWYWx1ZTogYW55KSB7XHJcbiAgICB0aGlzLmNoYW5nZWQuZW1pdChpbnNpZGVWYWx1ZSk7XHJcbiAgICB0aGlzLm1vZGVsQ2hhbmdlLmVtaXQoe3ZhbHVlOiBpbnNpZGVWYWx1ZSwgaWQ6IHRoaXMudXVpZH0pXHJcbiAgICB0aGlzLm9uQ2hhbmdlRm4oaW5zaWRlVmFsdWUpO1xyXG4gICAgdGhpcy5vblRvdWNoZWRGbigpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSkge1xyXG4gICAgdGhpcy5vbkNoYW5nZUZuID0gZm47XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHt9KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVG91Y2hlZEZuID0gZm47XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG9uQ2hhbmdlRm4gPSAodmFsdWU6IGFueSkgPT4ge1xyXG4gIH07XHJcbiAgcHJpdmF0ZSBvblRvdWNoZWRGbiA9ICgpID0+IHtcclxuICB9O1xyXG59XHJcbiIsIjxkaXYgW2lkXT1cInV1aWRcIiAjanNvbkVkaXRvckNvbnRhaW5lcj48L2Rpdj5cclxuIl19
224
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbi1lZGl0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGEtdWkvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vanNvbi1lZGl0b3IvanNvbi1lZGl0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGEtdWkvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vanNvbi1lZGl0b3IvanNvbi1lZGl0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBRVQsWUFBWSxFQUNaLFVBQVUsRUFDVixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxVQUFVLE1BQU0sWUFBWSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxFQUFFLElBQUksTUFBTSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXBDLE9BQU8sRUFBa0IsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7QUFpQjlFLE1BQU0sT0FBTyxtQkFBbUI7SUFDdEIsS0FBSyxHQUFXLEVBQUUsQ0FBQztJQUNuQixNQUFNLENBQWM7SUFFckIsY0FBYyxHQUFHLEtBQUssQ0FBQztJQUN2QixRQUFRLEdBQUcsS0FBSyxDQUFDO0lBQ2pCLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFFekIsYUFBYTtJQUNOLElBQUksR0FBVyxNQUFNLEVBQUUsQ0FBQTtJQUNkLE1BQU0sR0FBWSxFQUFFLENBQUM7SUFFNUIsT0FBTyxHQUFzQixJQUFJLGlCQUFpQixFQUFFLENBQUM7SUFDckQsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUV2QixJQUFtQixJQUFJLENBQUMsS0FBYTtRQUNuQyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNsQixDQUFDO0lBQ0gsQ0FBQztJQUVnQixPQUFPLEdBQXVDLElBQUksWUFBWSxFQUF3QixDQUFDO0lBQ3ZGLFdBQVcsR0FBd0MsSUFBSSxZQUFZLEVBQXlCLENBQUM7SUFDcEcsVUFBVSxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO0lBRWhCLG1CQUFtQixDQUFjO0lBRW5GO0lBQ0EsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLGFBQWEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN4QywrQkFBK0I7WUFDL0IsYUFBYSxHQUFJLElBQUksQ0FBQyxNQUFjLENBQUMsT0FBTyxDQUFDO1FBQy9DLENBQUM7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2xELElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7UUFDaEQsQ0FBQztRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDM0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUN4QyxDQUFDO1FBQ0QsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFFckQsa0dBQWtHO1FBQ2xHLE9BQU8sV0FBVyxDQUFDLFNBQVMsQ0FBQztRQUM3QixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNmLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2QyxDQUFDO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUM1QyxPQUFPLENBQUMsS0FBSyxDQUFDLHFEQUFxRCxDQUFDLENBQUM7UUFDdkUsQ0FBQztRQUVELElBQ0UsV0FBVyxDQUFDLElBQUksS0FBSyxNQUFNLElBQUksV0FBVyxDQUFDLElBQUksS0FBSyxNQUFNO1lBQzFELENBQ0UsV0FBVyxDQUFDLEtBQUs7Z0JBQ2pCLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksV0FBVyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FDdkYsRUFDRCxDQUFDO1lBQ0QsV0FBVyxDQUFDLFlBQVksR0FBRyxTQUFTLENBQUM7UUFDdkMsQ0FBQztRQUNELElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGFBQWEsRUFBRSxXQUFrQixFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVyRyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUMxQixDQUFDO0lBQ0gsQ0FBQztJQUVELFdBQVc7SUFDWCxDQUFDO0lBRU0sWUFBWSxHQUFHLEdBQUcsRUFBRTtRQUN6QixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUM7Z0JBQ0gsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQzFDLENBQUM7WUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO2dCQUNmLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO29CQUNmLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3JCLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUMsQ0FBQztJQUVLLFFBQVEsR0FBRyxHQUFHLEVBQUU7UUFDckIsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDaEIsSUFBSSxDQUFDO2dCQUNILE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQy9CLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUE7WUFDeEIsQ0FBQztZQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7Z0JBQ2YsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7b0JBQ2YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDckIsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQyxDQUFDO0lBRUY7O09BRUc7SUFFSSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVNLFNBQVM7UUFDZCxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFTSxLQUFLO1FBQ1YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRU0sR0FBRztRQUNSLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRU0sT0FBTztRQUNaLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQW9CLENBQUM7SUFDakQsQ0FBQztJQUVNLE9BQU87UUFDWixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFHLENBQUM7SUFDaEMsQ0FBQztJQUVNLE9BQU87UUFDWixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVNLEdBQUcsQ0FBQyxJQUFVO1FBQ25CLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFFTSxPQUFPLENBQUMsSUFBb0I7UUFDakMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVNLE9BQU8sQ0FBQyxJQUFZO1FBQ3pCLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFTSxZQUFZLENBQUMsS0FBVSxFQUFFLEdBQVE7UUFDdEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFTSxZQUFZO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBRU0saUJBQWlCO1FBQ3RCLCtCQUErQjtRQUMvQixPQUFRLElBQUksQ0FBQyxNQUFjLENBQUMsY0FBYyxDQUFDO0lBQzdDLENBQUM7SUFFTSxTQUFTLENBQUMsTUFBVyxFQUFFLFVBQWU7UUFDM0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFTSxNQUFNLENBQUMsS0FBYTtRQUN6QiwrQkFBK0I7UUFDOUIsSUFBSSxDQUFDLE1BQWMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVNLFVBQVUsQ0FBQyxVQUE2QjtRQUM3QyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3hCLENBQUM7UUFDRCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztRQUMzQixJQUFJLENBQUMsT0FBTyxHQUFHLFVBQVUsQ0FBQztRQUMxQixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbEIsQ0FBQztJQUVNLE1BQU0sQ0FBQyxJQUFVO1FBQ3RCLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFTSxPQUFPO1FBQ1osSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDaEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUN4QixDQUFDO0lBQ0gsQ0FBQztJQUVNLFNBQVM7UUFDZCwwREFBMEQ7UUFDMUQsT0FBTyxJQUFJLENBQUMsTUFBYSxDQUFDO0lBQzVCLENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQztZQUNILElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7WUFDM0IsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNYLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztJQUNILENBQUM7SUFFRCxVQUFVLENBQUMsS0FBVTtRQUNuQixJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBRU0sV0FBVyxDQUFDLFdBQWdCO1FBQ2pDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQy9CLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUMsS0FBSyxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBQyxDQUFDLENBQUE7UUFDMUQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVNLGdCQUFnQixDQUFDLEVBQU87UUFDN0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVNLGlCQUFpQixDQUFDLEVBQVk7UUFDbkMsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVPLFVBQVUsR0FBRyxDQUFDLEtBQVUsRUFBRSxFQUFFO0lBQ3BDLENBQUMsQ0FBQztJQUNNLFdBQVcsR0FBRyxHQUFHLEVBQUU7SUFDM0IsQ0FBQyxDQUFDO3dHQTdOUyxtQkFBbUI7NEZBQW5CLG1CQUFtQixpTkFSbkI7WUFDVDtnQkFDRSxPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLG1CQUFtQixDQUFDO2dCQUNsRCxLQUFLLEVBQUUsSUFBSTthQUNaO1NBQ0Ysb0tDN0JILG9EQUNBOzs0RkQ4QmEsbUJBQW1CO2tCQWQvQixTQUFTOytCQUNFLGlCQUFpQix1QkFHTixLQUFLLG1CQUNULHVCQUF1QixDQUFDLE1BQU0sYUFDcEM7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsb0JBQW9CLENBQUM7NEJBQ2xELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGO3dEQVllLE1BQU07c0JBQXJCLEtBQUs7Z0JBRUcsT0FBTztzQkFBZixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFFYSxJQUFJO3NCQUF0QixLQUFLO3VCQUFDLE1BQU07Z0JBUUksT0FBTztzQkFBdkIsTUFBTTtnQkFDVSxXQUFXO3NCQUEzQixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBRTJDLG1CQUFtQjtzQkFBcEUsU0FBUzt1QkFBQyxxQkFBcUIsRUFBRSxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIGZvcndhcmRSZWYsXG4gIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgSlNPTkVkaXRvciBmcm9tICdqc29uZWRpdG9yJztcbmltcG9ydCB7IHY0IGFzIHV1aWR2NCB9IGZyb20gJ3V1aWQnO1xuaW1wb3J0IHsgRmllbGQgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBKc29uRWRpdG9yTW9kZSwgSnNvbkVkaXRvck9wdGlvbnMgfSBmcm9tICcuL3V0aWxzL2pzb25lZGl0b3JvcHRpb25zJztcbmltcG9ydCB7IEpzb25FZGl0b3JWYWx1ZVR5cGVzLCBKc29uRWRpdG9yVmFsdWVXaXRoSWQgfSBmcm9tICcuL2pzb24tZWRpdG9yLmVudW0nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtcngtanNvbi1lZGl0b3InLFxuICB0ZW1wbGF0ZVVybDogJy4vanNvbi1lZGl0b3IuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vanNvbi1lZGl0b3IuY29tcG9uZW50Lmxlc3MnLFxuICBwcmVzZXJ2ZVdoaXRlc3BhY2VzOiBmYWxzZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gSnNvbkVkaXRvckNvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBKc29uRWRpdG9yQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBfZGF0YTogT2JqZWN0ID0ge307XG4gIHByaXZhdGUgZWRpdG9yITogSlNPTkVkaXRvcjtcblxuICBwdWJsaWMgb3B0aW9uc0NoYW5nZWQgPSBmYWxzZTtcbiAgcHVibGljIGRpc2FibGVkID0gZmFsc2U7XG4gIHB1YmxpYyBpc0ZvY3VzZWQgPSBmYWxzZTtcblxuICAvLyBTQVZFIFNUQVRFXG4gIHB1YmxpYyB1dWlkOiBzdHJpbmcgPSB1dWlkdjQoKVxuICBASW5wdXQoKSBwdWJsaWMgZmllbGRzOiBGaWVsZFtdID0gW107XG5cbiAgQElucHV0KCkgb3B0aW9uczogSnNvbkVkaXRvck9wdGlvbnMgPSBuZXcgSnNvbkVkaXRvck9wdGlvbnMoKTtcbiAgQElucHV0KCkgZGVidWcgPSBmYWxzZTtcblxuICBASW5wdXQoJ2RhdGEnKSBzZXQgZGF0YSh2YWx1ZTogT2JqZWN0KSB7XG4gICAgdGhpcy5fZGF0YSA9IHZhbHVlO1xuICAgIGlmICh0aGlzLmVkaXRvcikge1xuICAgICAgdGhpcy5lZGl0b3IuZGVzdHJveSgpO1xuICAgICAgdGhpcy5uZ09uSW5pdCgpO1xuICAgIH1cbiAgfVxuXG4gIEBPdXRwdXQoKSBwdWJsaWMgY2hhbmdlZDogRXZlbnRFbWl0dGVyPEpzb25FZGl0b3JWYWx1ZVR5cGVzPiA9IG5ldyBFdmVudEVtaXR0ZXI8SnNvbkVkaXRvclZhbHVlVHlwZXM+KCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgbW9kZWxDaGFuZ2U6IEV2ZW50RW1pdHRlcjxKc29uRWRpdG9yVmFsdWVXaXRoSWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxKc29uRWRpdG9yVmFsdWVXaXRoSWQ+KCk7XG4gIEBPdXRwdXQoKSBqc29uQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIEBWaWV3Q2hpbGQoJ2pzb25FZGl0b3JDb250YWluZXInLCB7c3RhdGljOiB0cnVlfSkganNvbkVkaXRvckNvbnRhaW5lciE6IEVsZW1lbnRSZWY7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBsZXQgb3B0aW9uc0JlZm9yZSA9IHRoaXMub3B0aW9ucztcbiAgICBpZiAoIXRoaXMub3B0aW9uc0NoYW5nZWQgJiYgdGhpcy5lZGl0b3IpIHtcbiAgICAgIC8vVE9ETzogY2hlY2sgaWYgdGhpcyBpcyBuZWVkZWRcbiAgICAgIG9wdGlvbnNCZWZvcmUgPSAodGhpcy5lZGl0b3IgYXMgYW55KS5vcHRpb25zO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5vcHRpb25zLm9uQ2hhbmdlSlNPTiAmJiB0aGlzLmpzb25DaGFuZ2UpIHtcbiAgICAgIHRoaXMub3B0aW9ucy5vbkNoYW5nZUpTT04gPSB0aGlzLm9uQ2hhbmdlSlNPTjtcbiAgICB9XG4gICAgaWYgKCF0aGlzLm9wdGlvbnMub25DaGFuZ2UgJiYgdGhpcy5jaGFuZ2VkKSB7XG4gICAgICB0aGlzLm9wdGlvbnMub25DaGFuZ2UgPSB0aGlzLm9uQ2hhbmdlO1xuICAgIH1cbiAgICBjb25zdCBvcHRpb25zQ29weSA9IE9iamVjdC5hc3NpZ24oe30sIG9wdGlvbnNCZWZvcmUpO1xuXG4gICAgLy8gZXhwYW5kQWxsIGlzIGFuIG9wdGlvbiBvbmx5IHN1cHBvcnRlZCBieSBhbmctanNvbmVkaXRvciBhbmQgbm90IGJ5IHRoZSB0aGUgb3JpZ2luYWwganNvbmVkaXRvci5cbiAgICBkZWxldGUgb3B0aW9uc0NvcHkuZXhwYW5kQWxsO1xuICAgIGlmICh0aGlzLmRlYnVnKSB7XG4gICAgICBjb25zb2xlLmxvZyhvcHRpb25zQ29weSwgdGhpcy5fZGF0YSk7XG4gICAgfVxuICAgIGlmICghdGhpcy5qc29uRWRpdG9yQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYENhbid0IGZpbmQgdGhlIEVsZW1lbnRSZWYgcmVmZXJlbmNlIGZvciBqc29uZWRpdG9yKWApO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIG9wdGlvbnNDb3B5Lm1vZGUgPT09ICd0ZXh0JyB8fCBvcHRpb25zQ29weS5tb2RlID09PSAnY29kZScgfHxcbiAgICAgIChcbiAgICAgICAgb3B0aW9uc0NvcHkubW9kZXMgJiZcbiAgICAgICAgKG9wdGlvbnNDb3B5Lm1vZGVzLmluZGV4T2YoJ3RleHQnKSAhPT0gLTEgfHwgb3B0aW9uc0NvcHkubW9kZXMuaW5kZXhPZignY29kZScpICE9PSAtMSlcbiAgICAgIClcbiAgICApIHtcbiAgICAgIG9wdGlvbnNDb3B5Lm9uQ2hhbmdlSlNPTiA9IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgdGhpcy5lZGl0b3IgPSBuZXcgSlNPTkVkaXRvcih0aGlzLmpzb25FZGl0b3JDb250YWluZXIubmF0aXZlRWxlbWVudCwgb3B0aW9uc0NvcHkgYXMgYW55LCB0aGlzLl9kYXRhKTtcblxuICAgIGlmICh0aGlzLm9wdGlvbnMuZXhwYW5kQWxsKSB7XG4gICAgICB0aGlzLmVkaXRvci5leHBhbmRBbGwoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgfVxuXG4gIHB1YmxpYyBvbkNoYW5nZUpTT04gPSAoKSA9PiB7XG4gICAgaWYgKHRoaXMuZWRpdG9yKSB7XG4gICAgICB0cnkge1xuICAgICAgICB0aGlzLmpzb25DaGFuZ2UuZW1pdCh0aGlzLmVkaXRvci5nZXQoKSk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAodGhpcy5kZWJ1Zykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBwdWJsaWMgb25DaGFuZ2UgPSAoKSA9PiB7XG4gICAgaWYgKHRoaXMuZWRpdG9yKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBqc29uID0gdGhpcy5lZGl0b3IuZ2V0KCk7XG4gICAgICAgIHRoaXMudXBkYXRlVmFsdWUoanNvbilcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmICh0aGlzLmRlYnVnKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIC8qKlxuICAgKiBKU09OIEVESVRPUiBGVU5DVElPTlNcbiAgICovXG5cbiAgcHVibGljIGNvbGxhcHNlQWxsKCkge1xuICAgIHRoaXMuZWRpdG9yLmNvbGxhcHNlQWxsKCk7XG4gIH1cblxuICBwdWJsaWMgZXhwYW5kQWxsKCkge1xuICAgIHRoaXMuZWRpdG9yLmV4cGFuZEFsbCgpO1xuICB9XG5cbiAgcHVibGljIGZvY3VzKCkge1xuICAgIHRoaXMuZWRpdG9yLmZvY3VzKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0KCk6IEpTT04ge1xuICAgIHJldHVybiB0aGlzLmVkaXRvci5nZXQoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRNb2RlKCk6IEpzb25FZGl0b3JNb2RlIHtcbiAgICByZXR1cm4gdGhpcy5lZGl0b3IuZ2V0TW9kZSgpIGFzIEpzb25FZGl0b3JNb2RlO1xuICB9XG5cbiAgcHVibGljIGdldE5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5lZGl0b3IuZ2V0TmFtZSgpITtcbiAgfVxuXG4gIHB1YmxpYyBnZXRUZXh0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZWRpdG9yLmdldFRleHQoKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXQoanNvbjogSlNPTikge1xuICAgIHRoaXMuZWRpdG9yLnNldChqc29uKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRNb2RlKG1vZGU6IEpzb25FZGl0b3JNb2RlKSB7XG4gICAgdGhpcy5lZGl0b3Iuc2V0TW9kZShtb2RlKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXROYW1lKG5hbWU6IHN0cmluZykge1xuICAgIHRoaXMuZWRpdG9yLnNldE5hbWUobmFtZSk7XG4gIH1cblxuICBwdWJsaWMgc2V0U2VsZWN0aW9uKHN0YXJ0OiBhbnksIGVuZDogYW55KSB7XG4gICAgdGhpcy5lZGl0b3Iuc2V0U2VsZWN0aW9uKHN0YXJ0LCBlbmQpO1xuICB9XG5cbiAgcHVibGljIGdldFNlbGVjdGlvbigpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLmVkaXRvci5nZXRTZWxlY3Rpb24oKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRWYWxpZGF0ZVNjaGVtYSgpOiBhbnkge1xuICAgIC8vVE9ETzogY2hlY2sgaWYgdGhpcyBpcyBuZWVkZWRcbiAgICByZXR1cm4gKHRoaXMuZWRpdG9yIGFzIGFueSkudmFsaWRhdGVTY2hlbWE7XG4gIH1cblxuICBwdWJsaWMgc2V0U2NoZW1hKHNjaGVtYTogYW55LCBzY2hlbWFSZWZzOiBhbnkpIHtcbiAgICB0aGlzLmVkaXRvci5zZXRTY2hlbWEoc2NoZW1hLCBzY2hlbWFSZWZzKTtcbiAgfVxuXG4gIHB1YmxpYyBzZWFyY2gocXVlcnk6IHN0cmluZykge1xuICAgIC8vVE9ETzogY2hlY2sgaWYgdGhpcyBpcyBuZWVkZWRcbiAgICAodGhpcy5lZGl0b3IgYXMgYW55KS5zZWFyY2gocXVlcnkpO1xuICB9XG5cbiAgcHVibGljIHNldE9wdGlvbnMobmV3T3B0aW9uczogSnNvbkVkaXRvck9wdGlvbnMpIHtcbiAgICBpZiAodGhpcy5lZGl0b3IpIHtcbiAgICAgIHRoaXMuZWRpdG9yLmRlc3Ryb3koKTtcbiAgICB9XG4gICAgdGhpcy5vcHRpb25zQ2hhbmdlZCA9IHRydWU7XG4gICAgdGhpcy5vcHRpb25zID0gbmV3T3B0aW9ucztcbiAgICB0aGlzLm5nT25Jbml0KCk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlKGpzb246IEpTT04pIHtcbiAgICB0aGlzLmVkaXRvci51cGRhdGUoanNvbik7XG4gIH1cblxuICBwdWJsaWMgZGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5lZGl0b3IpIHtcbiAgICAgIHRoaXMuZWRpdG9yLmRlc3Ryb3koKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0RWRpdG9yKCkge1xuICAgIC8vVE9ETzogbWFkZSBpdCBhbnkgYmVjYXVzZSBvZiB0aGUgbWlzc2luZyB0eXBlIGRlZmluaXRpb25cbiAgICByZXR1cm4gdGhpcy5lZGl0b3IgYXMgYW55O1xuICB9XG5cbiAgcHVibGljIGlzVmFsaWRKc29uKCkge1xuICAgIHRyeSB7XG4gICAgICBKU09OLnBhcnNlKHRoaXMuZ2V0VGV4dCgpKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmRhdGEgPSB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVWYWx1ZShpbnNpZGVWYWx1ZTogYW55KSB7XG4gICAgdGhpcy5jaGFuZ2VkLmVtaXQoaW5zaWRlVmFsdWUpO1xuICAgIHRoaXMubW9kZWxDaGFuZ2UuZW1pdCh7dmFsdWU6IGluc2lkZVZhbHVlLCBpZDogdGhpcy51dWlkfSlcbiAgICB0aGlzLm9uQ2hhbmdlRm4oaW5zaWRlVmFsdWUpO1xuICAgIHRoaXMub25Ub3VjaGVkRm4oKTtcbiAgfVxuXG4gIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpIHtcbiAgICB0aGlzLm9uQ2hhbmdlRm4gPSBmbjtcbiAgfVxuXG4gIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4ge30pOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZEZuID0gZm47XG4gIH1cblxuICBwcml2YXRlIG9uQ2hhbmdlRm4gPSAodmFsdWU6IGFueSkgPT4ge1xuICB9O1xuICBwcml2YXRlIG9uVG91Y2hlZEZuID0gKCkgPT4ge1xuICB9O1xufVxuIiwiPGRpdiBbaWRdPVwidXVpZFwiICNqc29uRWRpdG9yQ29udGFpbmVyPjwvZGl2PlxyXG4iXX0=
@@ -21,4 +21,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
21
21
  ]
22
22
  }]
23
23
  }] });
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbi1lZGl0b3IubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGEtdWkvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vanNvbi1lZGl0b3IvanNvbi1lZGl0b3IubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDOztBQWM5RCxNQUFNLE9BQU8sZ0JBQWdCO3dHQUFoQixnQkFBZ0I7eUdBQWhCLGdCQUFnQixpQkFUckIsbUJBQW1CLGFBR25CLFlBQVksYUFHWixtQkFBbUI7eUdBR2QsZ0JBQWdCLFlBTnJCLFlBQVk7OzRGQU1QLGdCQUFnQjtrQkFYNUIsUUFBUTttQkFBQztvQkFDTixZQUFZLEVBQUU7d0JBQ1YsbUJBQW1CO3FCQUN0QjtvQkFDRCxPQUFPLEVBQUU7d0JBQ0wsWUFBWTtxQkFDZjtvQkFDRCxPQUFPLEVBQUU7d0JBQ0wsbUJBQW1CO3FCQUN0QjtpQkFDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEpzb25FZGl0b3JDb21wb25lbnQgfSBmcm9tICcuL2pzb24tZWRpdG9yLmNvbXBvbmVudCc7XHJcblxyXG5cclxuQE5nTW9kdWxlKHtcclxuICAgIGRlY2xhcmF0aW9uczogW1xyXG4gICAgICAgIEpzb25FZGl0b3JDb21wb25lbnRcclxuICAgIF0sXHJcbiAgICBpbXBvcnRzOiBbXHJcbiAgICAgICAgQ29tbW9uTW9kdWxlXHJcbiAgICBdLFxyXG4gICAgZXhwb3J0czogW1xyXG4gICAgICAgIEpzb25FZGl0b3JDb21wb25lbnRcclxuICAgIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIEpzb25FZGl0b3JNb2R1bGUge1xyXG59XHJcbiJdfQ==
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbi1lZGl0b3IubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGEtdWkvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vanNvbi1lZGl0b3IvanNvbi1lZGl0b3IubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDOztBQWM5RCxNQUFNLE9BQU8sZ0JBQWdCO3dHQUFoQixnQkFBZ0I7eUdBQWhCLGdCQUFnQixpQkFUckIsbUJBQW1CLGFBR25CLFlBQVksYUFHWixtQkFBbUI7eUdBR2QsZ0JBQWdCLFlBTnJCLFlBQVk7OzRGQU1QLGdCQUFnQjtrQkFYNUIsUUFBUTttQkFBQztvQkFDTixZQUFZLEVBQUU7d0JBQ1YsbUJBQW1CO3FCQUN0QjtvQkFDRCxPQUFPLEVBQUU7d0JBQ0wsWUFBWTtxQkFDZjtvQkFDRCxPQUFPLEVBQUU7d0JBQ0wsbUJBQW1CO3FCQUN0QjtpQkFDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSnNvbkVkaXRvckNvbXBvbmVudCB9IGZyb20gJy4vanNvbi1lZGl0b3IuY29tcG9uZW50JztcblxuXG5ATmdNb2R1bGUoe1xuICAgIGRlY2xhcmF0aW9uczogW1xuICAgICAgICBKc29uRWRpdG9yQ29tcG9uZW50XG4gICAgXSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZVxuICAgIF0sXG4gICAgZXhwb3J0czogW1xuICAgICAgICBKc29uRWRpdG9yQ29tcG9uZW50XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBKc29uRWRpdG9yTW9kdWxlIHtcbn1cbiJdfQ==
@@ -1,5 +1,3 @@
1
- export const cleanSelectItems = (innerList) => {
2
- return innerList.map(cleanSelectItem);
3
- };
4
- export const cleanSelectItem = ({ __id, __selected, ...rest }) => rest;
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xlYW4tc2VsZWN0ZWQtaXRlbXMuaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGEtdWkvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vc2VsZWN0L2hlbHBlcnMvY2xlYW4tc2VsZWN0ZWQtaXRlbXMuaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLENBQUMsU0FBaUMsRUFBRSxFQUFFO0lBQ3BFLE9BQU8sU0FBUyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQztBQUN4QyxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsQ0FBQyxFQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsR0FBRyxJQUFJLEVBQXVCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNlbGVjdElubmVySXRlbU1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL3NlbGVjdC1pbm5lci1pdGVtLm1vZGVsJztcclxuXHJcbmV4cG9ydCBjb25zdCBjbGVhblNlbGVjdEl0ZW1zID0gKGlubmVyTGlzdDogU2VsZWN0SW5uZXJJdGVtTW9kZWxbXSkgPT4ge1xyXG4gIHJldHVybiBpbm5lckxpc3QubWFwKGNsZWFuU2VsZWN0SXRlbSk7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgY2xlYW5TZWxlY3RJdGVtID0gKHtfX2lkLCBfX3NlbGVjdGVkLCAuLi5yZXN0fTogU2VsZWN0SW5uZXJJdGVtTW9kZWwpID0+IHJlc3Q7XHJcblxyXG4iXX0=
1
+ export const cleanSelectItems = (innerList) => innerList.map(cleanSelectItem);
2
+ export const cleanSelectItem = (innerItem) => innerItem.__origin;
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xlYW4tc2VsZWN0ZWQtaXRlbXMuaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGEtdWkvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vc2VsZWN0L2hlbHBlcnMvY2xlYW4tc2VsZWN0ZWQtaXRlbXMuaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLENBQUMsU0FBaUMsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQTtBQUVyRyxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsQ0FBQyxTQUErQixFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2VsZWN0SW5uZXJJdGVtTW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvc2VsZWN0LWlubmVyLWl0ZW0ubW9kZWwnO1xyXG5cclxuZXhwb3J0IGNvbnN0IGNsZWFuU2VsZWN0SXRlbXMgPSAoaW5uZXJMaXN0OiBTZWxlY3RJbm5lckl0ZW1Nb2RlbFtdKSA9PiBpbm5lckxpc3QubWFwKGNsZWFuU2VsZWN0SXRlbSlcclxuXHJcbmV4cG9ydCBjb25zdCBjbGVhblNlbGVjdEl0ZW0gPSAoaW5uZXJJdGVtOiBTZWxlY3RJbm5lckl0ZW1Nb2RlbCkgPT4gaW5uZXJJdGVtLl9fb3JpZ2luXHJcblxyXG4iXX0=
@@ -1,13 +1,13 @@
1
1
  import isEqual from 'lodash-es/isEqual';
2
- export const getInnerItems = (items, selectedItems = []) => {
2
+ export const getInnerItems = (items, selectedItems = [], bindValue) => {
3
3
  return items.map((item, idx) => {
4
4
  const findItem = selectedItems.find(i => isEqual(i, item));
5
5
  if (typeof item === 'object' && !Array.isArray(item)) {
6
- return { ...item, __id: item['id'] || idx, __selected: !!findItem };
6
+ return { __origin: item, __id: item['id'] || idx, __selected: !!findItem };
7
7
  }
8
8
  else {
9
- return { label: item, __id: idx, __selected: !!findItem };
9
+ return { __origin: item, __id: idx, __selected: !!findItem };
10
10
  }
11
11
  });
12
12
  };
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWlubmVyLWl0ZW1zLmhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cnRhLXVpL3NyYy9saWIvY29tcG9uZW50cy9mb3JtL3NlbGVjdC9oZWxwZXJzL2dldC1pbm5lci1pdGVtcy5oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxPQUFPLE1BQU0sbUJBQW1CLENBQUM7QUFFeEMsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLENBQUMsS0FBd0IsRUFBRSxnQkFBbUMsRUFBRSxFQUFFLEVBQUU7SUFDL0YsT0FBTyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBd0IsRUFBRTtRQUNuRCxNQUFNLFFBQVEsR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBRTNELElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3JELE9BQU8sRUFBQyxHQUFHLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBQyxDQUFDO1FBQ3BFLENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxFQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBQyxDQUFDO1FBQzFELENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNlbGVjdEl0ZW1Nb2RlbCB9IGZyb20gJy4uL21vZGVscy9zZWxlY3QtaXRlbS5tb2RlbCc7XHJcbmltcG9ydCB7IFNlbGVjdElubmVySXRlbU1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL3NlbGVjdC1pbm5lci1pdGVtLm1vZGVsJztcclxuXHJcbmltcG9ydCBpc0VxdWFsIGZyb20gJ2xvZGFzaC1lcy9pc0VxdWFsJztcclxuXHJcbmV4cG9ydCBjb25zdCBnZXRJbm5lckl0ZW1zID0gKGl0ZW1zOiBTZWxlY3RJdGVtTW9kZWxbXSwgc2VsZWN0ZWRJdGVtczogU2VsZWN0SXRlbU1vZGVsW10gPSBbXSkgPT4ge1xyXG4gIHJldHVybiBpdGVtcy5tYXAoKGl0ZW0sIGlkeCk6IFNlbGVjdElubmVySXRlbU1vZGVsID0+IHtcclxuICAgIGNvbnN0IGZpbmRJdGVtID0gc2VsZWN0ZWRJdGVtcy5maW5kKGkgPT4gaXNFcXVhbChpLCBpdGVtKSk7XHJcblxyXG4gICAgaWYgKHR5cGVvZiBpdGVtID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheShpdGVtKSkge1xyXG4gICAgICByZXR1cm4gey4uLml0ZW0sIF9faWQ6IGl0ZW1bJ2lkJ10gfHwgaWR4LCBfX3NlbGVjdGVkOiAhIWZpbmRJdGVtfTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB7bGFiZWw6IGl0ZW0sIF9faWQ6IGlkeCwgX19zZWxlY3RlZDogISFmaW5kSXRlbX07XHJcbiAgICB9XHJcbiAgfSk7XHJcbn1cclxuIl19
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWlubmVyLWl0ZW1zLmhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cnRhLXVpL3NyYy9saWIvY29tcG9uZW50cy9mb3JtL3NlbGVjdC9oZWxwZXJzL2dldC1pbm5lci1pdGVtcy5oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxPQUFPLE1BQU0sbUJBQW1CLENBQUM7QUFFeEMsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLENBQUMsS0FBd0IsRUFBRSxnQkFBbUMsRUFBRSxFQUFFLFNBQXdCLEVBQUUsRUFBRTtJQUN6SCxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUF3QixFQUFFO1FBQ25ELE1BQU0sUUFBUSxHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7UUFFM0QsSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDckQsT0FBTyxFQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUMsQ0FBQztRQUMzRSxDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUMsQ0FBQztRQUM3RCxDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTZWxlY3RJdGVtTW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvc2VsZWN0LWl0ZW0ubW9kZWwnO1xyXG5pbXBvcnQgeyBTZWxlY3RJbm5lckl0ZW1Nb2RlbCB9IGZyb20gJy4uL21vZGVscy9zZWxlY3QtaW5uZXItaXRlbS5tb2RlbCc7XHJcblxyXG5pbXBvcnQgaXNFcXVhbCBmcm9tICdsb2Rhc2gtZXMvaXNFcXVhbCc7XHJcblxyXG5leHBvcnQgY29uc3QgZ2V0SW5uZXJJdGVtcyA9IChpdGVtczogU2VsZWN0SXRlbU1vZGVsW10sIHNlbGVjdGVkSXRlbXM6IFNlbGVjdEl0ZW1Nb2RlbFtdID0gW10sIGJpbmRWYWx1ZTogc3RyaW5nIHwgbnVsbCkgPT4ge1xyXG4gIHJldHVybiBpdGVtcy5tYXAoKGl0ZW0sIGlkeCk6IFNlbGVjdElubmVySXRlbU1vZGVsID0+IHtcclxuICAgIGNvbnN0IGZpbmRJdGVtID0gc2VsZWN0ZWRJdGVtcy5maW5kKGkgPT4gaXNFcXVhbChpLCBpdGVtKSk7XHJcblxyXG4gICAgaWYgKHR5cGVvZiBpdGVtID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheShpdGVtKSkge1xyXG4gICAgICByZXR1cm4ge19fb3JpZ2luOiBpdGVtLCBfX2lkOiBpdGVtWydpZCddIHx8IGlkeCwgX19zZWxlY3RlZDogISFmaW5kSXRlbX07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4ge19fb3JpZ2luOiBpdGVtLCBfX2lkOiBpZHgsIF9fc2VsZWN0ZWQ6ICEhZmluZEl0ZW19O1xyXG4gICAgfVxyXG4gIH0pO1xyXG59O1xyXG4iXX0=
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWlubmVyLWl0ZW0ubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJ0YS11aS9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS9zZWxlY3QvbW9kZWxzL3NlbGVjdC1pbm5lci1pdGVtLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIFNlbGVjdElubmVySXRlbU1vZGVsIHtcclxuICBbbmFtZTogc3RyaW5nXTogYW55O1xyXG5cclxuICBfX2lkOiBudW1iZXI7XHJcbiAgX19zZWxlY3RlZDogYm9vbGVhbjtcclxufVxyXG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWlubmVyLWl0ZW0ubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJ0YS11aS9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS9zZWxlY3QvbW9kZWxzL3NlbGVjdC1pbm5lci1pdGVtLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIFNlbGVjdElubmVySXRlbU1vZGVsIHtcclxuICBbbmFtZTogc3RyaW5nXTogYW55O1xyXG5cclxuICBfX29yaWdpbjogYW55O1xyXG4gIF9faWQ6IG51bWJlcjtcclxuICBfX3NlbGVjdGVkOiBib29sZWFuO1xyXG59XHJcbiJdfQ==
@@ -184,7 +184,7 @@ export class SelectComponent {
184
184
  else {
185
185
  this.selected = getInnerSelected(items, [selected], this.bindValue);
186
186
  }
187
- this.innerItems = getInnerItems(items, this.selected);
187
+ this.innerItems = getInnerItems(items, this.selected, this.bindValue);
188
188
  }
189
189
  updateValue(selectedItems) {
190
190
  const clearedSelected = getSelectedItems(selectedItems, this.bindValue);
@@ -211,7 +211,7 @@ export class SelectComponent {
211
211
  useExisting: forwardRef(() => SelectComponent),
212
212
  multi: true,
213
213
  },
214
- ], queries: [{ propertyName: "optionTemplate", first: true, predicate: ["optionTemplate"], descendants: true }, { propertyName: "labelTemplate", first: true, predicate: ["labelTemplate"], descendants: true }, { propertyName: "popupHeaderTemplate", first: true, predicate: ["popupHeaderTemplate"], descendants: true }, { propertyName: "popupFooterTemplate", first: true, predicate: ["popupFooterTemplate"], descendants: true }, { propertyName: "contentTemplate", first: true, predicate: ["contentTemplate"], descendants: true }], viewQueries: [{ propertyName: "dropdown", first: true, predicate: ["dropdown"], descendants: true }], ngImport: i0, template: "<div [class.-disabled]=\"disabled\"\r\n [class.-readonly]=\"readonly\"\r\n [class.mrx-input-error]=\"invalid\"\r\n [class]=\"getClasses\"\r\n class=\"mrx-select\"\r\n>\r\n <div class=\"mrx-select__wrapper\">\r\n @switch (use) {\r\n @case ('default') {\r\n <div [mrxPopupTrigger]=\"dropdown\" [popupPosition]=\"popupPosition\" class=\"mrx-select__input\">\r\n @if (getSelectedLabels.length) {\r\n @if (multiple) {\r\n <div class=\"mrx-select__input__values\">\r\n @if (multiCollapseCount && getSelectedLabels.length >= multiCollapseCount) {\r\n <div class=\"mrx-select__input__badge\">\r\n <p>\u0412\u044B\u0431\u0440\u0430\u043D\u043E: {{ getSelectedLabels.length }}</p>\r\n\r\n @if (!disabled && !readonly) {\r\n <span class=\"mrx-icon icon-close icon-font-16\" (click)=\"onClear($event)\"></span>\r\n }\r\n </div>\r\n } @else {\r\n @for (item of getSelectedLabels; track item; let first = $first; let last = $last) {\r\n @if (labelTemplate) {\r\n <ng-container\r\n [ngTemplateOutlet]=\"labelTemplate\"\r\n [ngTemplateOutletContext]=\"{item, first, last, clear: clearItem}\"\r\n ></ng-container>\r\n } @else {\r\n <ng-container\r\n [ngTemplateOutlet]=\"defaultLabelTemplate\"\r\n [ngTemplateOutletContext]=\"{item, first, last}\"\r\n ></ng-container>\r\n }\r\n }\r\n }\r\n </div>\r\n } @else {\r\n <div class=\"mrx-select__input__value\">\r\n @for (item of getSelectedLabels; track item) {\r\n {{ bindLabel ? item[bindLabel] : item['label'] || item }}\r\n }\r\n </div>\r\n }\r\n } @else {\r\n <div class=\"mrx-select__input__placeholder\">{{ placeholder }}</div>\r\n }\r\n\r\n <div class=\"mrx-select__input__controls\">\r\n @if (isLoading) {\r\n <mrx-loader\r\n [size]=\"size === 'large' ? 'small' : 'extra-small'\"\r\n [color]=\"'brand'\"\r\n ></mrx-loader>\r\n }\r\n\r\n @if (getSelectedLabels.length && clearable) {\r\n <div class=\"mrx-select__input__controls--item\" (click)=\"onClear($event)\">\r\n <span\r\n class=\"mrx-icon icon-close\"\r\n [class.icon-font-24]=\"size === 'large'\"\r\n [class.icon-font-16]=\"size === 'medium'\"\r\n ></span>\r\n </div>\r\n }\r\n <div class=\"mrx-select__input__controls--item\" (click)=\"onOpen($event)\">\r\n <span\r\n [class.icon-chevron-down]=\"!isOpen\"\r\n [class.icon-chevron-up]=\"isOpen\"\r\n [class.icon-font-16]=\"size === 'medium'\"\r\n [class.icon-font-24]=\"size === 'large'\"\r\n class=\"mrx-icon\"\r\n ></span>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n\r\n @case ('link') {\r\n <div [mrxPopupTrigger]=\"dropdown\" [popupPosition]=\"popupPosition\" class=\"mrx-select__input-link\">\r\n <div class=\"mrx-select__input-link__controls\">\r\n @if (sortPlaceholder) {\r\n <p>{{ sortPlaceholder }}</p>\r\n }\r\n\r\n @if (sortIcon) {\r\n <span\r\n [class.icon-font-16]=\"size === 'medium'\"\r\n [class.icon-font-24]=\"size === 'large'\"\r\n class=\"mrx-icon {{sortIcon === 'asc' ? 'icon-sorting-up' : 'icon-sorting-down'}}\"\r\n ></span>\r\n }\r\n </div>\r\n\r\n <div class=\"mrx-select__input-link__controls\">\r\n @if (getSelectedLabels.length) {\r\n <div class=\"mrx-select__input-link__value\">\r\n @for (item of getSelectedLabels; track item) {\r\n {{ bindLabel ? item[bindLabel] : item['label'] || item }}\r\n }\r\n </div>\r\n }\r\n\r\n <div class=\"mrx-select__input__controls--item\" (click)=\"onOpen($event)\">\r\n <span\r\n [class.icon-chevron-down]=\"!isOpen\"\r\n [class.icon-chevron-up]=\"isOpen\"\r\n [class.icon-font-16]=\"size === 'medium'\"\r\n [class.icon-font-24]=\"size === 'large'\"\r\n class=\"mrx-icon\"\r\n ></span>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n }\r\n\r\n <mrx-popup #dropdown [closeAfterClick]=\"closable\" (toggle)=\"togglePopup($event)\">\r\n @for (item of filteredItems; track item.__id; let first = $first; let last = $last) {\r\n <mrx-popup-item [custom]=\"true\" [id]=\"item.__id\" (clicked)=\"onSelect(item)\">\r\n @if (optionTemplate) {\r\n <ng-container\r\n [ngTemplateOutlet]=\"optionTemplate\"\r\n [ngTemplateOutletContext]=\"{item, first, last}\"\r\n ></ng-container>\r\n } @else {\r\n <ng-container\r\n [ngTemplateOutlet]=\"defaultOptionTemplate\"\r\n [ngTemplateOutletContext]=\"{item, first, last}\"\r\n ></ng-container>\r\n }\r\n </mrx-popup-item>\r\n } @empty {\r\n <mrx-popup-item [custom]=\"true\">\r\n <div class=\"mrx-select__dropdown__empty\">{{ emptyText }}</div>\r\n </mrx-popup-item>\r\n }\r\n\r\n <ng-template #headerTemplate>\r\n @if (searchable) {\r\n <div class=\"mrx-select__dropdown__search\">\r\n <mrx-input-text\r\n [size]=\"'medium'\"\r\n [placeholder]=\"searchPlaceholder\"\r\n [(ngModel)]=\"searchValue\"\r\n ></mrx-input-text>\r\n </div>\r\n }\r\n\r\n @if (contentTemplate) {\r\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\r\n }\r\n\r\n @if (popupHeaderTemplate) {\r\n <ng-container\r\n [ngTemplateOutlet]=\"popupHeaderTemplate\"\r\n ></ng-container>\r\n }\r\n </ng-template>\r\n\r\n <ng-template #footerTemplate>\r\n @if (!!addOption) {\r\n <div class=\"mrx-select__dropdown__extra-option\">\r\n <mrx-input-text\r\n class=\"flex-grow-1\"\r\n [size]=\"'medium'\"\r\n [placeholder]=\"extraOptionPlaceholder\"\r\n [(ngModel)]=\"model.label\"\r\n [maxlength]=\"300\"\r\n [invalid]=\"!!form.errors['label']\"\r\n [invalidMessage]=\"form.errors['label']\"\r\n (ngModelChange)=\"changeTextValueEmpty()\"\r\n ></mrx-input-text>\r\n <mrx-button\r\n [iconOnly]=\"true\"\r\n icon=\"<span class='mrx-icon icon-plus icon-font-24'></span>\"\r\n size=\"medium\"\r\n type=\"secondary\"\r\n (click)=\"onAddNewCustomOption()\"\r\n ></mrx-button>\r\n </div>\r\n }\r\n\r\n @if (popupFooterTemplate) {\r\n <ng-container\r\n [ngTemplateOutlet]=\"popupFooterTemplate\"\r\n ></ng-container>\r\n }\r\n </ng-template>\r\n </mrx-popup>\r\n </div>\r\n\r\n <mrx-error-message\r\n *ngIf=\"invalid && isInvalidMessage\"\r\n [invalidMessage]=\"invalidMessage\"\r\n ></mrx-error-message>\r\n\r\n <mrx-save-state [fields]=\"fields\" [id]=\"uuid\" [type]=\"'input'\"></mrx-save-state>\r\n</div>\r\n\r\n<ng-template #defaultLabelTemplate let-item=\"item\">\r\n @if (asLabel(item); as label) {\r\n <div class=\"mrx-select__input__badge\">\r\n <p>{{ bindLabel ? label[bindLabel] : label['label'] || label }}</p>\r\n <span class=\"mrx-icon icon-close icon-font-16\" (click)=\"onUnselect(label)\"></span>\r\n </div>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #defaultOptionTemplate let-item=\"item\">\r\n @if (asOption(item); as option) {\r\n <div class=\"mrx-select__dropdown__item\">\r\n <div class=\"mrx-select__dropdown__item--content\">\r\n @if (bindIcon && option[bindIcon]) {\r\n <span class=\"mrx-icon icon-font-24\" [class]=\"option[bindIcon]\"></span>\r\n }\r\n\r\n <p>{{ bindLabel ? option[bindLabel] : option['label'] || option }}</p>\r\n </div>\r\n\r\n @if (option.__selected) {\r\n <span class=\"mrx-icon icon-check icon-font-24\"></span>\r\n }\r\n </div>\r\n }\r\n</ng-template>\r\n", styles: [".mrx-select__input{border:var(--border-width-default) solid var(--neutral-bg-stroke-default);border-radius:var(--border-radius-1);width:100%;outline:none;transition:outline-width .2s,border .2s;cursor:pointer;display:flex;align-items:flex-start;justify-content:space-between;gap:8px}.mrx-select__input:focus,.mrx-select__input:active{outline:var(--neutral-bg-island-default) solid var(--border-width-focused)}.mrx-select__input:hover{border:var(--border-width-default) solid var(--neutral-bg-stroke-hover)}.mrx-select__input__box{flex-grow:1}.mrx-select__input__controls{display:flex;align-items:center;gap:8px;padding-top:4px;padding-bottom:4px}.mrx-select__input__controls--item{display:flex;align-items:center;justify-content:center;border-radius:4px;background-color:transparent;transition:background-color .2s}.mrx-select__input__controls--item:hover{background-color:var(--brand-bg-tertiary-hover, #EDF5FF)}.mrx-select__input-link{border-radius:var(--border-radius-1);background:var(--brand-bg-tertiary-default, #FFF);outline:none;transition:outline-width .2s,border .2s;cursor:pointer;display:flex;flex-wrap:wrap;justify-content:flex-start;align-items:center;gap:8px;width:fit-content}.mrx-select__input-link__box{flex-grow:1}.mrx-select__input-link__controls{display:flex;align-items:center;gap:8px}.mrx-select__input-link__controls--item{display:flex;align-items:center;justify-content:center;border-radius:4px;background-color:transparent;transition:background-color .2s}.mrx-select__input-link__controls--item:hover{background-color:var(--brand-bg-tertiary-hover, #EDF5FF)}.mrx-select.mrx-select-lg .mrx-select__input,.mrx-select.mrx-select-lg .mrx-select__input-link{font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height)}.mrx-select.mrx-select-lg .mrx-select__input__values,.mrx-select.mrx-select-lg .mrx-select__input-link__values{min-height:32px}.mrx-select.mrx-select-lg .mrx-select__input__badge,.mrx-select.mrx-select-lg .mrx-select__input-link__badge{padding:6px 8px 6px 12px}.mrx-select.mrx-select-lg .mrx-select__input__badge p,.mrx-select.mrx-select-lg .mrx-select__input-link__badge p{font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height)}.mrx-select.mrx-select-lg .mrx-select__input{padding:calc(var(--spacing-2) - var(--border-width-default)) var(--spacing-3) calc(var(--spacing-2) - var(--border-width-default)) var(--spacing-2)}.mrx-select.mrx-select-lg .mrx-select__input__placeholder,.mrx-select.mrx-select-lg .mrx-select__input__value{padding:6px 8px}.mrx-select.mrx-select-lg .mrx-select__input-link{padding:0}.mrx-select.mrx-select-lg .mrx-select__input-link__placeholder,.mrx-select.mrx-select-lg .mrx-select__input-link__value{padding:2px 0}.mrx-select.mrx-select-md .mrx-select__input,.mrx-select.mrx-select-md .mrx-select__input-link{font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height)}.mrx-select.mrx-select-md .mrx-select__input__values,.mrx-select.mrx-select-md .mrx-select__input-link__values{min-height:24px}.mrx-select.mrx-select-md .mrx-select__input__badge,.mrx-select.mrx-select-md .mrx-select__input-link__badge{padding:4px 4px 4px 8px}.mrx-select.mrx-select-md .mrx-select__input__badge p,.mrx-select.mrx-select-md .mrx-select__input-link__badge p{font-family:var(--body-sm-font-family);font-size:var(--body-sm-font-size);font-weight:var(--body-sm-font-weight);line-height:var(--body-sm-line-height)}.mrx-select.mrx-select-md .mrx-select__input{padding:calc(var(--spacing-2) - var(--border-width-default)) var(--spacing-4) calc(var(--spacing-2) - var(--border-width-default)) var(--spacing-2)}.mrx-select.mrx-select-md .mrx-select__input__placeholder,.mrx-select.mrx-select-md .mrx-select__input__value{padding:2px 8px}.mrx-select.mrx-select-md .mrx-select__input-link,.mrx-select.mrx-select-md .mrx-select__input-link__placeholder,.mrx-select.mrx-select-md .mrx-select__input-link__value{padding:0}.mrx-select__input__value{font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height)}.mrx-select__input__values{display:flex;align-items:center;justify-content:flex-start;flex-wrap:wrap;gap:8px}.mrx-select__input__badge{display:flex;align-items:center;gap:4px;border-radius:4px;background-color:var(--brand-bg-secondary-default, #EDF5FF)}.mrx-select__input__badge .icon-close{transform:scale(1);transition:transform .2s}.mrx-select__input__badge .icon-close:hover{transform:scale(1.1)}.mrx-select__input__placeholder{font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height);color:var(--neutral-text-tertiary, #71767E)}.mrx-select__dropdown__item{padding:8px 8px 8px 16px;background-color:transparent;transition:background-color .3s;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:8px}.mrx-select__dropdown__item:hover{background-color:var(--brand-bg-tertiary-hover, #EDF5FF)}.mrx-select__dropdown__item--content{display:flex;align-items:center;justify-content:flex-start;gap:8px;flex-grow:1}.mrx-select__dropdown__item--content p{font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height);padding-top:2px;padding-bottom:2px}.mrx-select__dropdown__search{padding:8px;border-bottom:1.794px solid var(--neutral-bg-divider, #DBDFE5);background:var(--brand-bg-tertiary-default, #FFF)}.mrx-select__dropdown__extra-option{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:8px;border-top:1.794px solid var(--neutral-bg-divider, #DBDFE5);border-top:var(--border-width-default) solid var(--neutral-bg-stroke-default)}.mrx-select__dropdown__empty{padding:8px 16px;font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height)}.mrx-select.mrx-input-error .mrx-select__input{border-color:var(--system-bg-controls-negative-default)}.mrx-select.mrx-input-error .mrx-select__input:hover{border:var(--border-width-default) solid var(--system-bg-controls-negative-default)}.mrx-select.mrx-input-checked-error .mrx-select__input{border-color:var(--system-bg-controls-negative-default);background-color:var(--system-bg-negative-secondary)}.mrx-select.mrx-input-checked-error .mrx-select__input:hover{border:var(--border-width-default) solid var(--system-bg-controls-negative-default)}.mrx-select.mrx-input-checked-success .mrx-select__input{background-color:var(--system-bg-positive-secondary);border-color:var(--system-bg-controls-positive-default)}.mrx-select.mrx-input-checked-success .mrx-select__input:hover{border:var(--border-width-default) solid var(--system-bg-controls-positive-default)}.mrx-select.-disabled .mrx-select__input{background-color:var(--neutral-bg-disabled, #EEF0F4);-webkit-text-fill-color:var(--neutral-text-tertiary, #71767E);color:var(--neutral-text-tertiary, #71767E);pointer-events:none}.mrx-select.-readonly .mrx-select__input{background-color:var(--neutral-bg-disabled, #EEF0F4);-webkit-text-fill-color:var(--neutral-text-primary, #262626);color:var(--neutral-text-primary, #262626);pointer-events:none}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.PopupComponent, selector: "mrx-popup", inputs: ["closeAfterClick", "minWidth"], outputs: ["toggle", "_toggleInner", "_updateInner"] }, { kind: "component", type: i4.PopupItemComponent, selector: "mrx-popup-item", inputs: ["custom", "id", "disabled"], outputs: ["clicked"] }, { kind: "directive", type: i5.PopupTriggerDirective, selector: "[mrxPopupTrigger]", inputs: ["mrxPopupTrigger", "popupPosition"] }, { kind: "component", type: i6.LoaderComponent, selector: "mrx-loader", inputs: ["size", "color", "customClasses"] }, { kind: "component", type: i7.InputTextComponent, selector: "mrx-input-text", inputs: ["fields", "disabled", "required", "readonly", "maxlength", "minlength", "placeholder", "invalid", "invalidMessage", "checkInvalid", "customClasses", "size", "isTooltipValue", "icon", "iconColor", "mask", "maskPrefix", "showMaskTyped", "maskDropSpecialCharacters"], outputs: ["changed", "modelChange"] }, { kind: "component", type: i8.ErrorMessageComponent, selector: "mrx-error-message", inputs: ["invalid", "invalidMessage", "customClasses"] }, { kind: "component", type: i9.SaveStateComponent, selector: "mrx-save-state", inputs: ["type", "fields", "id"] }, { kind: "component", type: i10.ButtonComponent, selector: "mrx-button", inputs: ["size", "type", "color", "iconPosition", "active", "disabled", "isLoading", "iconOnly", "customClasses", "label", "icon", "iconClass", "buttonType", "href", "target", "routerLink", "queryParams"], outputs: ["mrxClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
214
+ ], queries: [{ propertyName: "optionTemplate", first: true, predicate: ["optionTemplate"], descendants: true }, { propertyName: "labelTemplate", first: true, predicate: ["labelTemplate"], descendants: true }, { propertyName: "popupHeaderTemplate", first: true, predicate: ["popupHeaderTemplate"], descendants: true }, { propertyName: "popupFooterTemplate", first: true, predicate: ["popupFooterTemplate"], descendants: true }, { propertyName: "contentTemplate", first: true, predicate: ["contentTemplate"], descendants: true }], viewQueries: [{ propertyName: "dropdown", first: true, predicate: ["dropdown"], descendants: true }], ngImport: i0, template: "<div\r\n [class.-disabled]=\"disabled\"\r\n [class.-readonly]=\"readonly\"\r\n [class.mrx-input-error]=\"invalid\"\r\n [class]=\"getClasses\"\r\n class=\"mrx-select\"\r\n>\r\n <div class=\"mrx-select__wrapper\">\r\n @switch (use) {\r\n @case ('default') {\r\n <div [mrxPopupTrigger]=\"dropdown\" [popupPosition]=\"popupPosition\" class=\"mrx-select__input\">\r\n @if (getSelectedLabels.length) {\r\n @if (multiple) {\r\n <div class=\"mrx-select__input__values\">\r\n @if (multiCollapseCount && getSelectedLabels.length >= multiCollapseCount) {\r\n <div class=\"mrx-select__input__badge\">\r\n <p>\u0412\u044B\u0431\u0440\u0430\u043D\u043E: {{ getSelectedLabels.length }}</p>\r\n\r\n @if (!disabled && !readonly) {\r\n <span class=\"mrx-icon icon-close icon-font-16\" (click)=\"onClear($event)\"></span>\r\n }\r\n </div>\r\n } @else {\r\n @for (item of getSelectedLabels; track item.__id; let first = $first; let last = $last) {\r\n @if (labelTemplate) {\r\n <ng-container\r\n [ngTemplateOutlet]=\"labelTemplate\"\r\n [ngTemplateOutletContext]=\"{item: item.__origin, first, last, clear: clearItem}\"\r\n ></ng-container>\r\n } @else {\r\n <ng-container\r\n [ngTemplateOutlet]=\"defaultLabelTemplate\"\r\n [ngTemplateOutletContext]=\"{item: item.__origin, first, last}\"\r\n ></ng-container>\r\n }\r\n }\r\n }\r\n </div>\r\n } @else {\r\n <div class=\"mrx-select__input__value\">\r\n @for (item of getSelectedLabels; track item.__id) {\r\n {{ bindLabel ? item.__origin[bindLabel] : item.__origin['label'] || item.__origin }}\r\n }\r\n </div>\r\n }\r\n } @else {\r\n <div class=\"mrx-select__input__placeholder\">{{ placeholder }}</div>\r\n }\r\n\r\n <div class=\"mrx-select__input__controls\">\r\n @if (isLoading) {\r\n <mrx-loader\r\n [size]=\"size === 'large' ? 'small' : 'extra-small'\"\r\n [color]=\"'brand'\"\r\n ></mrx-loader>\r\n }\r\n\r\n @if (getSelectedLabels.length && clearable) {\r\n <div class=\"mrx-select__input__controls--item\" (click)=\"onClear($event)\">\r\n <span\r\n class=\"mrx-icon icon-close\"\r\n [class.icon-font-24]=\"size === 'large'\"\r\n [class.icon-font-16]=\"size === 'medium'\"\r\n ></span>\r\n </div>\r\n }\r\n <div class=\"mrx-select__input__controls--item\" (click)=\"onOpen($event)\">\r\n <span\r\n [class.icon-chevron-down]=\"!isOpen\"\r\n [class.icon-chevron-up]=\"isOpen\"\r\n [class.icon-font-16]=\"size === 'medium'\"\r\n [class.icon-font-24]=\"size === 'large'\"\r\n class=\"mrx-icon\"\r\n ></span>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n @case ('link') {\r\n <div [mrxPopupTrigger]=\"dropdown\" [popupPosition]=\"popupPosition\" class=\"mrx-select__input-link\">\r\n <div class=\"mrx-select__input-link__controls\">\r\n @if (sortPlaceholder) {\r\n <p>{{ sortPlaceholder }}</p>\r\n }\r\n\r\n @if (sortIcon) {\r\n <span\r\n [class.icon-font-16]=\"size === 'medium'\"\r\n [class.icon-font-24]=\"size === 'large'\"\r\n class=\"mrx-icon {{sortIcon === 'asc' ? 'icon-sorting-up' : 'icon-sorting-down'}}\"\r\n ></span>\r\n }\r\n </div>\r\n\r\n <div class=\"mrx-select__input-link__controls\">\r\n @if (getSelectedLabels.length) {\r\n <div class=\"mrx-select__input-link__value\">\r\n @for (item of getSelectedLabels; track item.__id) {\r\n {{ bindLabel ? item.__origin[bindLabel] : item.__origin['label'] || item.__origin }}\r\n }\r\n </div>\r\n }\r\n\r\n <div class=\"mrx-select__input__controls--item\" (click)=\"onOpen($event)\">\r\n <span\r\n [class.icon-chevron-down]=\"!isOpen\"\r\n [class.icon-chevron-up]=\"isOpen\"\r\n [class.icon-font-16]=\"size === 'medium'\"\r\n [class.icon-font-24]=\"size === 'large'\"\r\n class=\"mrx-icon\"\r\n ></span>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n }\r\n\r\n <mrx-popup #dropdown [closeAfterClick]=\"closable\" (toggle)=\"togglePopup($event)\">\r\n @for (item of filteredItems; track item.__id; let first = $first; let last = $last) {\r\n <mrx-popup-item [custom]=\"true\" [id]=\"item.__id\" (clicked)=\"onSelect(item)\">\r\n @if (optionTemplate) {\r\n <ng-container\r\n [ngTemplateOutlet]=\"optionTemplate\"\r\n [ngTemplateOutletContext]=\"{item: item.__origin, first, last}\"\r\n ></ng-container>\r\n } @else {\r\n <ng-container\r\n [ngTemplateOutlet]=\"defaultOptionTemplate\"\r\n [ngTemplateOutletContext]=\"{item: item.__origin, first, last}\"\r\n ></ng-container>\r\n }\r\n </mrx-popup-item>\r\n } @empty {\r\n <mrx-popup-item [custom]=\"true\">\r\n <div class=\"mrx-select__dropdown__empty\">{{ emptyText }}</div>\r\n </mrx-popup-item>\r\n }\r\n\r\n <ng-template #headerTemplate>\r\n @if (searchable) {\r\n <div class=\"mrx-select__dropdown__search\">\r\n <mrx-input-text\r\n [size]=\"'medium'\"\r\n [placeholder]=\"searchPlaceholder\"\r\n [(ngModel)]=\"searchValue\"\r\n ></mrx-input-text>\r\n </div>\r\n }\r\n\r\n @if (contentTemplate) {\r\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\r\n }\r\n\r\n @if (popupHeaderTemplate) {\r\n <ng-container\r\n [ngTemplateOutlet]=\"popupHeaderTemplate\"\r\n ></ng-container>\r\n }\r\n </ng-template>\r\n\r\n <ng-template #footerTemplate>\r\n @if (!!addOption) {\r\n <div class=\"mrx-select__dropdown__extra-option\">\r\n <mrx-input-text\r\n class=\"flex-grow-1\"\r\n [size]=\"'medium'\"\r\n [placeholder]=\"extraOptionPlaceholder\"\r\n [(ngModel)]=\"model.label\"\r\n [maxlength]=\"300\"\r\n [invalid]=\"!!form.errors['label']\"\r\n [invalidMessage]=\"form.errors['label']\"\r\n (ngModelChange)=\"changeTextValueEmpty()\"\r\n ></mrx-input-text>\r\n <mrx-button\r\n [iconOnly]=\"true\"\r\n icon=\"<span class='mrx-icon icon-plus icon-font-24'></span>\"\r\n size=\"medium\"\r\n type=\"secondary\"\r\n (click)=\"onAddNewCustomOption()\"\r\n ></mrx-button>\r\n </div>\r\n }\r\n\r\n @if (popupFooterTemplate) {\r\n <ng-container\r\n [ngTemplateOutlet]=\"popupFooterTemplate\"\r\n ></ng-container>\r\n }\r\n </ng-template>\r\n </mrx-popup>\r\n </div>\r\n\r\n @if (invalid && isInvalidMessage) {\r\n <mrx-error-message [invalidMessage]=\"invalidMessage\"></mrx-error-message>\r\n }\r\n\r\n <mrx-save-state [fields]=\"fields\" [id]=\"uuid\" [type]=\"'input'\"></mrx-save-state>\r\n</div>\r\n\r\n<ng-template #defaultLabelTemplate let-item=\"item\">\r\n @if (asLabel(item); as label) {\r\n <div class=\"mrx-select__input__badge\">\r\n <p>{{ bindLabel ? label[bindLabel] : label['label'] || label }}</p>\r\n <span class=\"mrx-icon icon-close icon-font-16\" (click)=\"onUnselect(label)\"></span>\r\n </div>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #defaultOptionTemplate let-item=\"item\">\r\n @if (asOption(item); as option) {\r\n <div class=\"mrx-select__dropdown__item\">\r\n <div class=\"mrx-select__dropdown__item--content\">\r\n @if (bindIcon && option[bindIcon]) {\r\n <span class=\"mrx-icon icon-font-24\" [class]=\"option[bindIcon]\"></span>\r\n }\r\n\r\n <p>{{ bindLabel ? option[bindLabel] : option['label'] || option }}</p>\r\n </div>\r\n\r\n @if (option.__selected) {\r\n <span class=\"mrx-icon icon-check icon-font-24\"></span>\r\n }\r\n </div>\r\n }\r\n</ng-template>\r\n", styles: [".mrx-select__input{border:var(--border-width-default) solid var(--neutral-bg-stroke-default);border-radius:var(--border-radius-1);width:100%;outline:none;transition:outline-width .2s,border .2s;cursor:pointer;display:flex;align-items:flex-start;justify-content:space-between;gap:8px}.mrx-select__input:focus,.mrx-select__input:active{outline:var(--neutral-bg-island-default) solid var(--border-width-focused)}.mrx-select__input:hover{border:var(--border-width-default) solid var(--neutral-bg-stroke-hover)}.mrx-select__input__box{flex-grow:1}.mrx-select__input__controls{display:flex;align-items:center;gap:8px;padding-top:4px;padding-bottom:4px}.mrx-select__input__controls--item{display:flex;align-items:center;justify-content:center;border-radius:4px;background-color:transparent;transition:background-color .2s}.mrx-select__input__controls--item:hover{background-color:var(--brand-bg-tertiary-hover, #EDF5FF)}.mrx-select__input-link{border-radius:var(--border-radius-1);background:var(--brand-bg-tertiary-default, #FFF);outline:none;transition:outline-width .2s,border .2s;cursor:pointer;display:flex;flex-wrap:wrap;justify-content:flex-start;align-items:center;gap:8px;width:fit-content}.mrx-select__input-link__box{flex-grow:1}.mrx-select__input-link__controls{display:flex;align-items:center;gap:8px}.mrx-select__input-link__controls--item{display:flex;align-items:center;justify-content:center;border-radius:4px;background-color:transparent;transition:background-color .2s}.mrx-select__input-link__controls--item:hover{background-color:var(--brand-bg-tertiary-hover, #EDF5FF)}.mrx-select.mrx-select-lg .mrx-select__input,.mrx-select.mrx-select-lg .mrx-select__input-link{font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height)}.mrx-select.mrx-select-lg .mrx-select__input__values,.mrx-select.mrx-select-lg .mrx-select__input-link__values{min-height:32px}.mrx-select.mrx-select-lg .mrx-select__input__badge,.mrx-select.mrx-select-lg .mrx-select__input-link__badge{padding:6px 8px 6px 12px}.mrx-select.mrx-select-lg .mrx-select__input__badge p,.mrx-select.mrx-select-lg .mrx-select__input-link__badge p{font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height)}.mrx-select.mrx-select-lg .mrx-select__input{padding:calc(var(--spacing-2) - var(--border-width-default)) var(--spacing-3) calc(var(--spacing-2) - var(--border-width-default)) var(--spacing-2)}.mrx-select.mrx-select-lg .mrx-select__input__placeholder,.mrx-select.mrx-select-lg .mrx-select__input__value{padding:6px 8px}.mrx-select.mrx-select-lg .mrx-select__input-link{padding:0}.mrx-select.mrx-select-lg .mrx-select__input-link__placeholder,.mrx-select.mrx-select-lg .mrx-select__input-link__value{padding:2px 0}.mrx-select.mrx-select-md .mrx-select__input,.mrx-select.mrx-select-md .mrx-select__input-link{font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height)}.mrx-select.mrx-select-md .mrx-select__input__values,.mrx-select.mrx-select-md .mrx-select__input-link__values{min-height:24px}.mrx-select.mrx-select-md .mrx-select__input__badge,.mrx-select.mrx-select-md .mrx-select__input-link__badge{padding:4px 4px 4px 8px}.mrx-select.mrx-select-md .mrx-select__input__badge p,.mrx-select.mrx-select-md .mrx-select__input-link__badge p{font-family:var(--body-sm-font-family);font-size:var(--body-sm-font-size);font-weight:var(--body-sm-font-weight);line-height:var(--body-sm-line-height)}.mrx-select.mrx-select-md .mrx-select__input{padding:calc(var(--spacing-2) - var(--border-width-default)) var(--spacing-4) calc(var(--spacing-2) - var(--border-width-default)) var(--spacing-2)}.mrx-select.mrx-select-md .mrx-select__input__placeholder,.mrx-select.mrx-select-md .mrx-select__input__value{padding:2px 8px}.mrx-select.mrx-select-md .mrx-select__input-link,.mrx-select.mrx-select-md .mrx-select__input-link__placeholder,.mrx-select.mrx-select-md .mrx-select__input-link__value{padding:0}.mrx-select__input__value{font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height)}.mrx-select__input__values{display:flex;align-items:center;justify-content:flex-start;flex-wrap:wrap;gap:8px}.mrx-select__input__badge{display:flex;align-items:center;gap:4px;border-radius:4px;background-color:var(--brand-bg-secondary-default, #EDF5FF)}.mrx-select__input__badge .icon-close{transform:scale(1);transition:transform .2s}.mrx-select__input__badge .icon-close:hover{transform:scale(1.1)}.mrx-select__input__placeholder{font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height);color:var(--neutral-text-tertiary, #71767E)}.mrx-select__dropdown__item{padding:8px 8px 8px 16px;background-color:transparent;transition:background-color .3s;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:8px}.mrx-select__dropdown__item:hover{background-color:var(--brand-bg-tertiary-hover, #EDF5FF)}.mrx-select__dropdown__item--content{display:flex;align-items:center;justify-content:flex-start;gap:8px;flex-grow:1}.mrx-select__dropdown__item--content p{font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height);padding-top:2px;padding-bottom:2px}.mrx-select__dropdown__search{padding:8px;border-bottom:1.794px solid var(--neutral-bg-divider, #DBDFE5);background:var(--brand-bg-tertiary-default, #FFF)}.mrx-select__dropdown__extra-option{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:8px;border-top:1.794px solid var(--neutral-bg-divider, #DBDFE5);border-top:var(--border-width-default) solid var(--neutral-bg-stroke-default)}.mrx-select__dropdown__empty{padding:8px 16px;font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height)}.mrx-select.mrx-input-error .mrx-select__input{border-color:var(--system-bg-controls-negative-default)}.mrx-select.mrx-input-error .mrx-select__input:hover{border:var(--border-width-default) solid var(--system-bg-controls-negative-default)}.mrx-select.mrx-input-checked-error .mrx-select__input{border-color:var(--system-bg-controls-negative-default);background-color:var(--system-bg-negative-secondary)}.mrx-select.mrx-input-checked-error .mrx-select__input:hover{border:var(--border-width-default) solid var(--system-bg-controls-negative-default)}.mrx-select.mrx-input-checked-success .mrx-select__input{background-color:var(--system-bg-positive-secondary);border-color:var(--system-bg-controls-positive-default)}.mrx-select.mrx-input-checked-success .mrx-select__input:hover{border:var(--border-width-default) solid var(--system-bg-controls-positive-default)}.mrx-select.-disabled .mrx-select__input{background-color:var(--neutral-bg-disabled, #EEF0F4);-webkit-text-fill-color:var(--neutral-text-tertiary, #71767E);color:var(--neutral-text-tertiary, #71767E);pointer-events:none}.mrx-select.-readonly .mrx-select__input{background-color:var(--neutral-bg-disabled, #EEF0F4);-webkit-text-fill-color:var(--neutral-text-primary, #262626);color:var(--neutral-text-primary, #262626);pointer-events:none}\n"], dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.PopupComponent, selector: "mrx-popup", inputs: ["closeAfterClick", "minWidth"], outputs: ["toggle", "_toggleInner", "_updateInner"] }, { kind: "component", type: i4.PopupItemComponent, selector: "mrx-popup-item", inputs: ["custom", "id", "disabled"], outputs: ["clicked"] }, { kind: "directive", type: i5.PopupTriggerDirective, selector: "[mrxPopupTrigger]", inputs: ["mrxPopupTrigger", "popupPosition"] }, { kind: "component", type: i6.LoaderComponent, selector: "mrx-loader", inputs: ["size", "color", "customClasses"] }, { kind: "component", type: i7.InputTextComponent, selector: "mrx-input-text", inputs: ["fields", "disabled", "required", "readonly", "maxlength", "minlength", "placeholder", "invalid", "invalidMessage", "checkInvalid", "customClasses", "size", "isTooltipValue", "icon", "iconColor", "mask", "maskPrefix", "showMaskTyped", "maskDropSpecialCharacters"], outputs: ["changed", "modelChange"] }, { kind: "component", type: i8.ErrorMessageComponent, selector: "mrx-error-message", inputs: ["invalid", "invalidMessage", "customClasses"] }, { kind: "component", type: i9.SaveStateComponent, selector: "mrx-save-state", inputs: ["type", "fields", "id"] }, { kind: "component", type: i10.ButtonComponent, selector: "mrx-button", inputs: ["size", "type", "color", "iconPosition", "active", "disabled", "isLoading", "iconOnly", "customClasses", "label", "icon", "iconClass", "buttonType", "href", "target", "routerLink", "queryParams"], outputs: ["mrxClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
215
215
  }
216
216
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SelectComponent, decorators: [{
217
217
  type: Component,
@@ -221,7 +221,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
221
221
  useExisting: forwardRef(() => SelectComponent),
222
222
  multi: true,
223
223
  },
224
- ], template: "<div [class.-disabled]=\"disabled\"\r\n [class.-readonly]=\"readonly\"\r\n [class.mrx-input-error]=\"invalid\"\r\n [class]=\"getClasses\"\r\n class=\"mrx-select\"\r\n>\r\n <div class=\"mrx-select__wrapper\">\r\n @switch (use) {\r\n @case ('default') {\r\n <div [mrxPopupTrigger]=\"dropdown\" [popupPosition]=\"popupPosition\" class=\"mrx-select__input\">\r\n @if (getSelectedLabels.length) {\r\n @if (multiple) {\r\n <div class=\"mrx-select__input__values\">\r\n @if (multiCollapseCount && getSelectedLabels.length >= multiCollapseCount) {\r\n <div class=\"mrx-select__input__badge\">\r\n <p>\u0412\u044B\u0431\u0440\u0430\u043D\u043E: {{ getSelectedLabels.length }}</p>\r\n\r\n @if (!disabled && !readonly) {\r\n <span class=\"mrx-icon icon-close icon-font-16\" (click)=\"onClear($event)\"></span>\r\n }\r\n </div>\r\n } @else {\r\n @for (item of getSelectedLabels; track item; let first = $first; let last = $last) {\r\n @if (labelTemplate) {\r\n <ng-container\r\n [ngTemplateOutlet]=\"labelTemplate\"\r\n [ngTemplateOutletContext]=\"{item, first, last, clear: clearItem}\"\r\n ></ng-container>\r\n } @else {\r\n <ng-container\r\n [ngTemplateOutlet]=\"defaultLabelTemplate\"\r\n [ngTemplateOutletContext]=\"{item, first, last}\"\r\n ></ng-container>\r\n }\r\n }\r\n }\r\n </div>\r\n } @else {\r\n <div class=\"mrx-select__input__value\">\r\n @for (item of getSelectedLabels; track item) {\r\n {{ bindLabel ? item[bindLabel] : item['label'] || item }}\r\n }\r\n </div>\r\n }\r\n } @else {\r\n <div class=\"mrx-select__input__placeholder\">{{ placeholder }}</div>\r\n }\r\n\r\n <div class=\"mrx-select__input__controls\">\r\n @if (isLoading) {\r\n <mrx-loader\r\n [size]=\"size === 'large' ? 'small' : 'extra-small'\"\r\n [color]=\"'brand'\"\r\n ></mrx-loader>\r\n }\r\n\r\n @if (getSelectedLabels.length && clearable) {\r\n <div class=\"mrx-select__input__controls--item\" (click)=\"onClear($event)\">\r\n <span\r\n class=\"mrx-icon icon-close\"\r\n [class.icon-font-24]=\"size === 'large'\"\r\n [class.icon-font-16]=\"size === 'medium'\"\r\n ></span>\r\n </div>\r\n }\r\n <div class=\"mrx-select__input__controls--item\" (click)=\"onOpen($event)\">\r\n <span\r\n [class.icon-chevron-down]=\"!isOpen\"\r\n [class.icon-chevron-up]=\"isOpen\"\r\n [class.icon-font-16]=\"size === 'medium'\"\r\n [class.icon-font-24]=\"size === 'large'\"\r\n class=\"mrx-icon\"\r\n ></span>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n\r\n @case ('link') {\r\n <div [mrxPopupTrigger]=\"dropdown\" [popupPosition]=\"popupPosition\" class=\"mrx-select__input-link\">\r\n <div class=\"mrx-select__input-link__controls\">\r\n @if (sortPlaceholder) {\r\n <p>{{ sortPlaceholder }}</p>\r\n }\r\n\r\n @if (sortIcon) {\r\n <span\r\n [class.icon-font-16]=\"size === 'medium'\"\r\n [class.icon-font-24]=\"size === 'large'\"\r\n class=\"mrx-icon {{sortIcon === 'asc' ? 'icon-sorting-up' : 'icon-sorting-down'}}\"\r\n ></span>\r\n }\r\n </div>\r\n\r\n <div class=\"mrx-select__input-link__controls\">\r\n @if (getSelectedLabels.length) {\r\n <div class=\"mrx-select__input-link__value\">\r\n @for (item of getSelectedLabels; track item) {\r\n {{ bindLabel ? item[bindLabel] : item['label'] || item }}\r\n }\r\n </div>\r\n }\r\n\r\n <div class=\"mrx-select__input__controls--item\" (click)=\"onOpen($event)\">\r\n <span\r\n [class.icon-chevron-down]=\"!isOpen\"\r\n [class.icon-chevron-up]=\"isOpen\"\r\n [class.icon-font-16]=\"size === 'medium'\"\r\n [class.icon-font-24]=\"size === 'large'\"\r\n class=\"mrx-icon\"\r\n ></span>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n }\r\n\r\n <mrx-popup #dropdown [closeAfterClick]=\"closable\" (toggle)=\"togglePopup($event)\">\r\n @for (item of filteredItems; track item.__id; let first = $first; let last = $last) {\r\n <mrx-popup-item [custom]=\"true\" [id]=\"item.__id\" (clicked)=\"onSelect(item)\">\r\n @if (optionTemplate) {\r\n <ng-container\r\n [ngTemplateOutlet]=\"optionTemplate\"\r\n [ngTemplateOutletContext]=\"{item, first, last}\"\r\n ></ng-container>\r\n } @else {\r\n <ng-container\r\n [ngTemplateOutlet]=\"defaultOptionTemplate\"\r\n [ngTemplateOutletContext]=\"{item, first, last}\"\r\n ></ng-container>\r\n }\r\n </mrx-popup-item>\r\n } @empty {\r\n <mrx-popup-item [custom]=\"true\">\r\n <div class=\"mrx-select__dropdown__empty\">{{ emptyText }}</div>\r\n </mrx-popup-item>\r\n }\r\n\r\n <ng-template #headerTemplate>\r\n @if (searchable) {\r\n <div class=\"mrx-select__dropdown__search\">\r\n <mrx-input-text\r\n [size]=\"'medium'\"\r\n [placeholder]=\"searchPlaceholder\"\r\n [(ngModel)]=\"searchValue\"\r\n ></mrx-input-text>\r\n </div>\r\n }\r\n\r\n @if (contentTemplate) {\r\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\r\n }\r\n\r\n @if (popupHeaderTemplate) {\r\n <ng-container\r\n [ngTemplateOutlet]=\"popupHeaderTemplate\"\r\n ></ng-container>\r\n }\r\n </ng-template>\r\n\r\n <ng-template #footerTemplate>\r\n @if (!!addOption) {\r\n <div class=\"mrx-select__dropdown__extra-option\">\r\n <mrx-input-text\r\n class=\"flex-grow-1\"\r\n [size]=\"'medium'\"\r\n [placeholder]=\"extraOptionPlaceholder\"\r\n [(ngModel)]=\"model.label\"\r\n [maxlength]=\"300\"\r\n [invalid]=\"!!form.errors['label']\"\r\n [invalidMessage]=\"form.errors['label']\"\r\n (ngModelChange)=\"changeTextValueEmpty()\"\r\n ></mrx-input-text>\r\n <mrx-button\r\n [iconOnly]=\"true\"\r\n icon=\"<span class='mrx-icon icon-plus icon-font-24'></span>\"\r\n size=\"medium\"\r\n type=\"secondary\"\r\n (click)=\"onAddNewCustomOption()\"\r\n ></mrx-button>\r\n </div>\r\n }\r\n\r\n @if (popupFooterTemplate) {\r\n <ng-container\r\n [ngTemplateOutlet]=\"popupFooterTemplate\"\r\n ></ng-container>\r\n }\r\n </ng-template>\r\n </mrx-popup>\r\n </div>\r\n\r\n <mrx-error-message\r\n *ngIf=\"invalid && isInvalidMessage\"\r\n [invalidMessage]=\"invalidMessage\"\r\n ></mrx-error-message>\r\n\r\n <mrx-save-state [fields]=\"fields\" [id]=\"uuid\" [type]=\"'input'\"></mrx-save-state>\r\n</div>\r\n\r\n<ng-template #defaultLabelTemplate let-item=\"item\">\r\n @if (asLabel(item); as label) {\r\n <div class=\"mrx-select__input__badge\">\r\n <p>{{ bindLabel ? label[bindLabel] : label['label'] || label }}</p>\r\n <span class=\"mrx-icon icon-close icon-font-16\" (click)=\"onUnselect(label)\"></span>\r\n </div>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #defaultOptionTemplate let-item=\"item\">\r\n @if (asOption(item); as option) {\r\n <div class=\"mrx-select__dropdown__item\">\r\n <div class=\"mrx-select__dropdown__item--content\">\r\n @if (bindIcon && option[bindIcon]) {\r\n <span class=\"mrx-icon icon-font-24\" [class]=\"option[bindIcon]\"></span>\r\n }\r\n\r\n <p>{{ bindLabel ? option[bindLabel] : option['label'] || option }}</p>\r\n </div>\r\n\r\n @if (option.__selected) {\r\n <span class=\"mrx-icon icon-check icon-font-24\"></span>\r\n }\r\n </div>\r\n }\r\n</ng-template>\r\n", styles: [".mrx-select__input{border:var(--border-width-default) solid var(--neutral-bg-stroke-default);border-radius:var(--border-radius-1);width:100%;outline:none;transition:outline-width .2s,border .2s;cursor:pointer;display:flex;align-items:flex-start;justify-content:space-between;gap:8px}.mrx-select__input:focus,.mrx-select__input:active{outline:var(--neutral-bg-island-default) solid var(--border-width-focused)}.mrx-select__input:hover{border:var(--border-width-default) solid var(--neutral-bg-stroke-hover)}.mrx-select__input__box{flex-grow:1}.mrx-select__input__controls{display:flex;align-items:center;gap:8px;padding-top:4px;padding-bottom:4px}.mrx-select__input__controls--item{display:flex;align-items:center;justify-content:center;border-radius:4px;background-color:transparent;transition:background-color .2s}.mrx-select__input__controls--item:hover{background-color:var(--brand-bg-tertiary-hover, #EDF5FF)}.mrx-select__input-link{border-radius:var(--border-radius-1);background:var(--brand-bg-tertiary-default, #FFF);outline:none;transition:outline-width .2s,border .2s;cursor:pointer;display:flex;flex-wrap:wrap;justify-content:flex-start;align-items:center;gap:8px;width:fit-content}.mrx-select__input-link__box{flex-grow:1}.mrx-select__input-link__controls{display:flex;align-items:center;gap:8px}.mrx-select__input-link__controls--item{display:flex;align-items:center;justify-content:center;border-radius:4px;background-color:transparent;transition:background-color .2s}.mrx-select__input-link__controls--item:hover{background-color:var(--brand-bg-tertiary-hover, #EDF5FF)}.mrx-select.mrx-select-lg .mrx-select__input,.mrx-select.mrx-select-lg .mrx-select__input-link{font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height)}.mrx-select.mrx-select-lg .mrx-select__input__values,.mrx-select.mrx-select-lg .mrx-select__input-link__values{min-height:32px}.mrx-select.mrx-select-lg .mrx-select__input__badge,.mrx-select.mrx-select-lg .mrx-select__input-link__badge{padding:6px 8px 6px 12px}.mrx-select.mrx-select-lg .mrx-select__input__badge p,.mrx-select.mrx-select-lg .mrx-select__input-link__badge p{font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height)}.mrx-select.mrx-select-lg .mrx-select__input{padding:calc(var(--spacing-2) - var(--border-width-default)) var(--spacing-3) calc(var(--spacing-2) - var(--border-width-default)) var(--spacing-2)}.mrx-select.mrx-select-lg .mrx-select__input__placeholder,.mrx-select.mrx-select-lg .mrx-select__input__value{padding:6px 8px}.mrx-select.mrx-select-lg .mrx-select__input-link{padding:0}.mrx-select.mrx-select-lg .mrx-select__input-link__placeholder,.mrx-select.mrx-select-lg .mrx-select__input-link__value{padding:2px 0}.mrx-select.mrx-select-md .mrx-select__input,.mrx-select.mrx-select-md .mrx-select__input-link{font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height)}.mrx-select.mrx-select-md .mrx-select__input__values,.mrx-select.mrx-select-md .mrx-select__input-link__values{min-height:24px}.mrx-select.mrx-select-md .mrx-select__input__badge,.mrx-select.mrx-select-md .mrx-select__input-link__badge{padding:4px 4px 4px 8px}.mrx-select.mrx-select-md .mrx-select__input__badge p,.mrx-select.mrx-select-md .mrx-select__input-link__badge p{font-family:var(--body-sm-font-family);font-size:var(--body-sm-font-size);font-weight:var(--body-sm-font-weight);line-height:var(--body-sm-line-height)}.mrx-select.mrx-select-md .mrx-select__input{padding:calc(var(--spacing-2) - var(--border-width-default)) var(--spacing-4) calc(var(--spacing-2) - var(--border-width-default)) var(--spacing-2)}.mrx-select.mrx-select-md .mrx-select__input__placeholder,.mrx-select.mrx-select-md .mrx-select__input__value{padding:2px 8px}.mrx-select.mrx-select-md .mrx-select__input-link,.mrx-select.mrx-select-md .mrx-select__input-link__placeholder,.mrx-select.mrx-select-md .mrx-select__input-link__value{padding:0}.mrx-select__input__value{font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height)}.mrx-select__input__values{display:flex;align-items:center;justify-content:flex-start;flex-wrap:wrap;gap:8px}.mrx-select__input__badge{display:flex;align-items:center;gap:4px;border-radius:4px;background-color:var(--brand-bg-secondary-default, #EDF5FF)}.mrx-select__input__badge .icon-close{transform:scale(1);transition:transform .2s}.mrx-select__input__badge .icon-close:hover{transform:scale(1.1)}.mrx-select__input__placeholder{font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height);color:var(--neutral-text-tertiary, #71767E)}.mrx-select__dropdown__item{padding:8px 8px 8px 16px;background-color:transparent;transition:background-color .3s;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:8px}.mrx-select__dropdown__item:hover{background-color:var(--brand-bg-tertiary-hover, #EDF5FF)}.mrx-select__dropdown__item--content{display:flex;align-items:center;justify-content:flex-start;gap:8px;flex-grow:1}.mrx-select__dropdown__item--content p{font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height);padding-top:2px;padding-bottom:2px}.mrx-select__dropdown__search{padding:8px;border-bottom:1.794px solid var(--neutral-bg-divider, #DBDFE5);background:var(--brand-bg-tertiary-default, #FFF)}.mrx-select__dropdown__extra-option{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:8px;border-top:1.794px solid var(--neutral-bg-divider, #DBDFE5);border-top:var(--border-width-default) solid var(--neutral-bg-stroke-default)}.mrx-select__dropdown__empty{padding:8px 16px;font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height)}.mrx-select.mrx-input-error .mrx-select__input{border-color:var(--system-bg-controls-negative-default)}.mrx-select.mrx-input-error .mrx-select__input:hover{border:var(--border-width-default) solid var(--system-bg-controls-negative-default)}.mrx-select.mrx-input-checked-error .mrx-select__input{border-color:var(--system-bg-controls-negative-default);background-color:var(--system-bg-negative-secondary)}.mrx-select.mrx-input-checked-error .mrx-select__input:hover{border:var(--border-width-default) solid var(--system-bg-controls-negative-default)}.mrx-select.mrx-input-checked-success .mrx-select__input{background-color:var(--system-bg-positive-secondary);border-color:var(--system-bg-controls-positive-default)}.mrx-select.mrx-input-checked-success .mrx-select__input:hover{border:var(--border-width-default) solid var(--system-bg-controls-positive-default)}.mrx-select.-disabled .mrx-select__input{background-color:var(--neutral-bg-disabled, #EEF0F4);-webkit-text-fill-color:var(--neutral-text-tertiary, #71767E);color:var(--neutral-text-tertiary, #71767E);pointer-events:none}.mrx-select.-readonly .mrx-select__input{background-color:var(--neutral-bg-disabled, #EEF0F4);-webkit-text-fill-color:var(--neutral-text-primary, #262626);color:var(--neutral-text-primary, #262626);pointer-events:none}\n"] }]
224
+ ], template: "<div\r\n [class.-disabled]=\"disabled\"\r\n [class.-readonly]=\"readonly\"\r\n [class.mrx-input-error]=\"invalid\"\r\n [class]=\"getClasses\"\r\n class=\"mrx-select\"\r\n>\r\n <div class=\"mrx-select__wrapper\">\r\n @switch (use) {\r\n @case ('default') {\r\n <div [mrxPopupTrigger]=\"dropdown\" [popupPosition]=\"popupPosition\" class=\"mrx-select__input\">\r\n @if (getSelectedLabels.length) {\r\n @if (multiple) {\r\n <div class=\"mrx-select__input__values\">\r\n @if (multiCollapseCount && getSelectedLabels.length >= multiCollapseCount) {\r\n <div class=\"mrx-select__input__badge\">\r\n <p>\u0412\u044B\u0431\u0440\u0430\u043D\u043E: {{ getSelectedLabels.length }}</p>\r\n\r\n @if (!disabled && !readonly) {\r\n <span class=\"mrx-icon icon-close icon-font-16\" (click)=\"onClear($event)\"></span>\r\n }\r\n </div>\r\n } @else {\r\n @for (item of getSelectedLabels; track item.__id; let first = $first; let last = $last) {\r\n @if (labelTemplate) {\r\n <ng-container\r\n [ngTemplateOutlet]=\"labelTemplate\"\r\n [ngTemplateOutletContext]=\"{item: item.__origin, first, last, clear: clearItem}\"\r\n ></ng-container>\r\n } @else {\r\n <ng-container\r\n [ngTemplateOutlet]=\"defaultLabelTemplate\"\r\n [ngTemplateOutletContext]=\"{item: item.__origin, first, last}\"\r\n ></ng-container>\r\n }\r\n }\r\n }\r\n </div>\r\n } @else {\r\n <div class=\"mrx-select__input__value\">\r\n @for (item of getSelectedLabels; track item.__id) {\r\n {{ bindLabel ? item.__origin[bindLabel] : item.__origin['label'] || item.__origin }}\r\n }\r\n </div>\r\n }\r\n } @else {\r\n <div class=\"mrx-select__input__placeholder\">{{ placeholder }}</div>\r\n }\r\n\r\n <div class=\"mrx-select__input__controls\">\r\n @if (isLoading) {\r\n <mrx-loader\r\n [size]=\"size === 'large' ? 'small' : 'extra-small'\"\r\n [color]=\"'brand'\"\r\n ></mrx-loader>\r\n }\r\n\r\n @if (getSelectedLabels.length && clearable) {\r\n <div class=\"mrx-select__input__controls--item\" (click)=\"onClear($event)\">\r\n <span\r\n class=\"mrx-icon icon-close\"\r\n [class.icon-font-24]=\"size === 'large'\"\r\n [class.icon-font-16]=\"size === 'medium'\"\r\n ></span>\r\n </div>\r\n }\r\n <div class=\"mrx-select__input__controls--item\" (click)=\"onOpen($event)\">\r\n <span\r\n [class.icon-chevron-down]=\"!isOpen\"\r\n [class.icon-chevron-up]=\"isOpen\"\r\n [class.icon-font-16]=\"size === 'medium'\"\r\n [class.icon-font-24]=\"size === 'large'\"\r\n class=\"mrx-icon\"\r\n ></span>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n @case ('link') {\r\n <div [mrxPopupTrigger]=\"dropdown\" [popupPosition]=\"popupPosition\" class=\"mrx-select__input-link\">\r\n <div class=\"mrx-select__input-link__controls\">\r\n @if (sortPlaceholder) {\r\n <p>{{ sortPlaceholder }}</p>\r\n }\r\n\r\n @if (sortIcon) {\r\n <span\r\n [class.icon-font-16]=\"size === 'medium'\"\r\n [class.icon-font-24]=\"size === 'large'\"\r\n class=\"mrx-icon {{sortIcon === 'asc' ? 'icon-sorting-up' : 'icon-sorting-down'}}\"\r\n ></span>\r\n }\r\n </div>\r\n\r\n <div class=\"mrx-select__input-link__controls\">\r\n @if (getSelectedLabels.length) {\r\n <div class=\"mrx-select__input-link__value\">\r\n @for (item of getSelectedLabels; track item.__id) {\r\n {{ bindLabel ? item.__origin[bindLabel] : item.__origin['label'] || item.__origin }}\r\n }\r\n </div>\r\n }\r\n\r\n <div class=\"mrx-select__input__controls--item\" (click)=\"onOpen($event)\">\r\n <span\r\n [class.icon-chevron-down]=\"!isOpen\"\r\n [class.icon-chevron-up]=\"isOpen\"\r\n [class.icon-font-16]=\"size === 'medium'\"\r\n [class.icon-font-24]=\"size === 'large'\"\r\n class=\"mrx-icon\"\r\n ></span>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n }\r\n\r\n <mrx-popup #dropdown [closeAfterClick]=\"closable\" (toggle)=\"togglePopup($event)\">\r\n @for (item of filteredItems; track item.__id; let first = $first; let last = $last) {\r\n <mrx-popup-item [custom]=\"true\" [id]=\"item.__id\" (clicked)=\"onSelect(item)\">\r\n @if (optionTemplate) {\r\n <ng-container\r\n [ngTemplateOutlet]=\"optionTemplate\"\r\n [ngTemplateOutletContext]=\"{item: item.__origin, first, last}\"\r\n ></ng-container>\r\n } @else {\r\n <ng-container\r\n [ngTemplateOutlet]=\"defaultOptionTemplate\"\r\n [ngTemplateOutletContext]=\"{item: item.__origin, first, last}\"\r\n ></ng-container>\r\n }\r\n </mrx-popup-item>\r\n } @empty {\r\n <mrx-popup-item [custom]=\"true\">\r\n <div class=\"mrx-select__dropdown__empty\">{{ emptyText }}</div>\r\n </mrx-popup-item>\r\n }\r\n\r\n <ng-template #headerTemplate>\r\n @if (searchable) {\r\n <div class=\"mrx-select__dropdown__search\">\r\n <mrx-input-text\r\n [size]=\"'medium'\"\r\n [placeholder]=\"searchPlaceholder\"\r\n [(ngModel)]=\"searchValue\"\r\n ></mrx-input-text>\r\n </div>\r\n }\r\n\r\n @if (contentTemplate) {\r\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\r\n }\r\n\r\n @if (popupHeaderTemplate) {\r\n <ng-container\r\n [ngTemplateOutlet]=\"popupHeaderTemplate\"\r\n ></ng-container>\r\n }\r\n </ng-template>\r\n\r\n <ng-template #footerTemplate>\r\n @if (!!addOption) {\r\n <div class=\"mrx-select__dropdown__extra-option\">\r\n <mrx-input-text\r\n class=\"flex-grow-1\"\r\n [size]=\"'medium'\"\r\n [placeholder]=\"extraOptionPlaceholder\"\r\n [(ngModel)]=\"model.label\"\r\n [maxlength]=\"300\"\r\n [invalid]=\"!!form.errors['label']\"\r\n [invalidMessage]=\"form.errors['label']\"\r\n (ngModelChange)=\"changeTextValueEmpty()\"\r\n ></mrx-input-text>\r\n <mrx-button\r\n [iconOnly]=\"true\"\r\n icon=\"<span class='mrx-icon icon-plus icon-font-24'></span>\"\r\n size=\"medium\"\r\n type=\"secondary\"\r\n (click)=\"onAddNewCustomOption()\"\r\n ></mrx-button>\r\n </div>\r\n }\r\n\r\n @if (popupFooterTemplate) {\r\n <ng-container\r\n [ngTemplateOutlet]=\"popupFooterTemplate\"\r\n ></ng-container>\r\n }\r\n </ng-template>\r\n </mrx-popup>\r\n </div>\r\n\r\n @if (invalid && isInvalidMessage) {\r\n <mrx-error-message [invalidMessage]=\"invalidMessage\"></mrx-error-message>\r\n }\r\n\r\n <mrx-save-state [fields]=\"fields\" [id]=\"uuid\" [type]=\"'input'\"></mrx-save-state>\r\n</div>\r\n\r\n<ng-template #defaultLabelTemplate let-item=\"item\">\r\n @if (asLabel(item); as label) {\r\n <div class=\"mrx-select__input__badge\">\r\n <p>{{ bindLabel ? label[bindLabel] : label['label'] || label }}</p>\r\n <span class=\"mrx-icon icon-close icon-font-16\" (click)=\"onUnselect(label)\"></span>\r\n </div>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #defaultOptionTemplate let-item=\"item\">\r\n @if (asOption(item); as option) {\r\n <div class=\"mrx-select__dropdown__item\">\r\n <div class=\"mrx-select__dropdown__item--content\">\r\n @if (bindIcon && option[bindIcon]) {\r\n <span class=\"mrx-icon icon-font-24\" [class]=\"option[bindIcon]\"></span>\r\n }\r\n\r\n <p>{{ bindLabel ? option[bindLabel] : option['label'] || option }}</p>\r\n </div>\r\n\r\n @if (option.__selected) {\r\n <span class=\"mrx-icon icon-check icon-font-24\"></span>\r\n }\r\n </div>\r\n }\r\n</ng-template>\r\n", styles: [".mrx-select__input{border:var(--border-width-default) solid var(--neutral-bg-stroke-default);border-radius:var(--border-radius-1);width:100%;outline:none;transition:outline-width .2s,border .2s;cursor:pointer;display:flex;align-items:flex-start;justify-content:space-between;gap:8px}.mrx-select__input:focus,.mrx-select__input:active{outline:var(--neutral-bg-island-default) solid var(--border-width-focused)}.mrx-select__input:hover{border:var(--border-width-default) solid var(--neutral-bg-stroke-hover)}.mrx-select__input__box{flex-grow:1}.mrx-select__input__controls{display:flex;align-items:center;gap:8px;padding-top:4px;padding-bottom:4px}.mrx-select__input__controls--item{display:flex;align-items:center;justify-content:center;border-radius:4px;background-color:transparent;transition:background-color .2s}.mrx-select__input__controls--item:hover{background-color:var(--brand-bg-tertiary-hover, #EDF5FF)}.mrx-select__input-link{border-radius:var(--border-radius-1);background:var(--brand-bg-tertiary-default, #FFF);outline:none;transition:outline-width .2s,border .2s;cursor:pointer;display:flex;flex-wrap:wrap;justify-content:flex-start;align-items:center;gap:8px;width:fit-content}.mrx-select__input-link__box{flex-grow:1}.mrx-select__input-link__controls{display:flex;align-items:center;gap:8px}.mrx-select__input-link__controls--item{display:flex;align-items:center;justify-content:center;border-radius:4px;background-color:transparent;transition:background-color .2s}.mrx-select__input-link__controls--item:hover{background-color:var(--brand-bg-tertiary-hover, #EDF5FF)}.mrx-select.mrx-select-lg .mrx-select__input,.mrx-select.mrx-select-lg .mrx-select__input-link{font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height)}.mrx-select.mrx-select-lg .mrx-select__input__values,.mrx-select.mrx-select-lg .mrx-select__input-link__values{min-height:32px}.mrx-select.mrx-select-lg .mrx-select__input__badge,.mrx-select.mrx-select-lg .mrx-select__input-link__badge{padding:6px 8px 6px 12px}.mrx-select.mrx-select-lg .mrx-select__input__badge p,.mrx-select.mrx-select-lg .mrx-select__input-link__badge p{font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height)}.mrx-select.mrx-select-lg .mrx-select__input{padding:calc(var(--spacing-2) - var(--border-width-default)) var(--spacing-3) calc(var(--spacing-2) - var(--border-width-default)) var(--spacing-2)}.mrx-select.mrx-select-lg .mrx-select__input__placeholder,.mrx-select.mrx-select-lg .mrx-select__input__value{padding:6px 8px}.mrx-select.mrx-select-lg .mrx-select__input-link{padding:0}.mrx-select.mrx-select-lg .mrx-select__input-link__placeholder,.mrx-select.mrx-select-lg .mrx-select__input-link__value{padding:2px 0}.mrx-select.mrx-select-md .mrx-select__input,.mrx-select.mrx-select-md .mrx-select__input-link{font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height)}.mrx-select.mrx-select-md .mrx-select__input__values,.mrx-select.mrx-select-md .mrx-select__input-link__values{min-height:24px}.mrx-select.mrx-select-md .mrx-select__input__badge,.mrx-select.mrx-select-md .mrx-select__input-link__badge{padding:4px 4px 4px 8px}.mrx-select.mrx-select-md .mrx-select__input__badge p,.mrx-select.mrx-select-md .mrx-select__input-link__badge p{font-family:var(--body-sm-font-family);font-size:var(--body-sm-font-size);font-weight:var(--body-sm-font-weight);line-height:var(--body-sm-line-height)}.mrx-select.mrx-select-md .mrx-select__input{padding:calc(var(--spacing-2) - var(--border-width-default)) var(--spacing-4) calc(var(--spacing-2) - var(--border-width-default)) var(--spacing-2)}.mrx-select.mrx-select-md .mrx-select__input__placeholder,.mrx-select.mrx-select-md .mrx-select__input__value{padding:2px 8px}.mrx-select.mrx-select-md .mrx-select__input-link,.mrx-select.mrx-select-md .mrx-select__input-link__placeholder,.mrx-select.mrx-select-md .mrx-select__input-link__value{padding:0}.mrx-select__input__value{font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height)}.mrx-select__input__values{display:flex;align-items:center;justify-content:flex-start;flex-wrap:wrap;gap:8px}.mrx-select__input__badge{display:flex;align-items:center;gap:4px;border-radius:4px;background-color:var(--brand-bg-secondary-default, #EDF5FF)}.mrx-select__input__badge .icon-close{transform:scale(1);transition:transform .2s}.mrx-select__input__badge .icon-close:hover{transform:scale(1.1)}.mrx-select__input__placeholder{font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height);color:var(--neutral-text-tertiary, #71767E)}.mrx-select__dropdown__item{padding:8px 8px 8px 16px;background-color:transparent;transition:background-color .3s;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:8px}.mrx-select__dropdown__item:hover{background-color:var(--brand-bg-tertiary-hover, #EDF5FF)}.mrx-select__dropdown__item--content{display:flex;align-items:center;justify-content:flex-start;gap:8px;flex-grow:1}.mrx-select__dropdown__item--content p{font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height);padding-top:2px;padding-bottom:2px}.mrx-select__dropdown__search{padding:8px;border-bottom:1.794px solid var(--neutral-bg-divider, #DBDFE5);background:var(--brand-bg-tertiary-default, #FFF)}.mrx-select__dropdown__extra-option{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:8px;border-top:1.794px solid var(--neutral-bg-divider, #DBDFE5);border-top:var(--border-width-default) solid var(--neutral-bg-stroke-default)}.mrx-select__dropdown__empty{padding:8px 16px;font-family:var(--body-md-font-family);font-size:var(--body-md-font-size);font-weight:var(--body-md-font-weight);line-height:var(--body-md-line-height)}.mrx-select.mrx-input-error .mrx-select__input{border-color:var(--system-bg-controls-negative-default)}.mrx-select.mrx-input-error .mrx-select__input:hover{border:var(--border-width-default) solid var(--system-bg-controls-negative-default)}.mrx-select.mrx-input-checked-error .mrx-select__input{border-color:var(--system-bg-controls-negative-default);background-color:var(--system-bg-negative-secondary)}.mrx-select.mrx-input-checked-error .mrx-select__input:hover{border:var(--border-width-default) solid var(--system-bg-controls-negative-default)}.mrx-select.mrx-input-checked-success .mrx-select__input{background-color:var(--system-bg-positive-secondary);border-color:var(--system-bg-controls-positive-default)}.mrx-select.mrx-input-checked-success .mrx-select__input:hover{border:var(--border-width-default) solid var(--system-bg-controls-positive-default)}.mrx-select.-disabled .mrx-select__input{background-color:var(--neutral-bg-disabled, #EEF0F4);-webkit-text-fill-color:var(--neutral-text-tertiary, #71767E);color:var(--neutral-text-tertiary, #71767E);pointer-events:none}.mrx-select.-readonly .mrx-select__input{background-color:var(--neutral-bg-disabled, #EEF0F4);-webkit-text-fill-color:var(--neutral-text-primary, #262626);color:var(--neutral-text-primary, #262626);pointer-events:none}\n"] }]
225
225
  }], propDecorators: { fields: [{
226
226
  type: Input
227
227
  }], items: [{
@@ -300,4 +300,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
300
300
  }], modelChange: [{
301
301
  type: Output
302
302
  }] } });
303
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cnRhLXVpL3NyYy9saWIvY29tcG9uZW50cy9mb3JtL3NlbGVjdC9zZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGEtdWkvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vc2VsZWN0L3NlbGVjdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osWUFBWSxFQUNaLFVBQVUsRUFDVixLQUFLLEVBRUwsTUFBTSxFQUVOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLGNBQWMsRUFBbUIsTUFBTSxTQUFTLENBQUM7QUFJMUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDdkUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxFQUFFLElBQUksTUFBTSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBR3BDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsWUFBWSxFQUFnQixNQUFNLHdCQUF3QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7Ozs7Ozs7Ozs7QUFlckQsTUFBTSxPQUFPLGVBQWU7SUFDbkIsV0FBVyxHQUFXLEVBQUUsQ0FBQztJQUN6QixNQUFNLEdBQVksS0FBSyxDQUFDO0lBQ3hCLGNBQWMsR0FBZ0IsRUFB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TUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ29tcG9uZW50LFxyXG4gIENvbnRlbnRDaGlsZCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgZm9yd2FyZFJlZixcclxuICBJbnB1dCxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFRlbXBsYXRlUmVmLFxyXG4gIFZpZXdDaGlsZFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFNlbGVjdFNpemVFbnVtLCBTZWxlY3RTaXplVHlwZXMgfSBmcm9tICcuL2VudW1zJztcclxuaW1wb3J0IHsgUG9wdXBDb21wb25lbnQgfSBmcm9tICcuLi8uLi9wb3B1cC9jb21wb25lbnRzL3BvcHVwL3BvcHVwLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFNlbGVjdElubmVySXRlbU1vZGVsIH0gZnJvbSAnLi9tb2RlbHMvc2VsZWN0LWlubmVyLWl0ZW0ubW9kZWwnO1xyXG5pbXBvcnQgeyBBZGRPcHRpb25GbiwgU2VsZWN0SXRlbU1vZGVsIH0gZnJvbSAnLi9tb2RlbHMvc2VsZWN0LWl0ZW0ubW9kZWwnO1xyXG5pbXBvcnQgeyBnZXRTZWxlY3RlZEl0ZW1zIH0gZnJvbSAnLi9oZWxwZXJzL2dldC1zZWxlY3RlZC1pdGVtcy5oZWxwZXInO1xyXG5pbXBvcnQgeyBnZXRJbm5lckl0ZW1zIH0gZnJvbSAnLi9oZWxwZXJzL2dldC1pbm5lci1pdGVtcy5oZWxwZXInO1xyXG5pbXBvcnQgeyB2NCBhcyB1dWlkdjQgfSBmcm9tICd1dWlkJztcclxuaW1wb3J0IHsgRmllbGQgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcyc7XHJcbmltcG9ydCB7IFRlbXBsYXRlT3V0cHV0TW9kZWwgfSBmcm9tICcuL21vZGVscy90ZW1wbGF0ZS1vdXRwdXQubW9kZWwnO1xyXG5pbXBvcnQgeyBjbGVhblNlbGVjdEl0ZW0gfSBmcm9tICcuL2hlbHBlcnMvY2xlYW4tc2VsZWN0ZWQtaXRlbXMuaGVscGVyJztcclxuaW1wb3J0IHsgUG9zaXRpb25FbnVtLCBQb3NpdGlvblR5cGUgfSBmcm9tICcuLi8uLi8uLi9lbnVtcy9vdmVybGF5JztcclxuaW1wb3J0IHsgZ2V0SW5uZXJTZWxlY3RlZCB9IGZyb20gJy4vaGVscGVycy9nZXQtaW5uZXItc2VsZWN0ZWQuaGVscGVyJztcclxuaW1wb3J0IHsgTXJ4Rm9ybVZhbGlkYXRvciB9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlc1wiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdtcngtc2VsZWN0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vc2VsZWN0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vc2VsZWN0LmNvbXBvbmVudC5sZXNzJyxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFNlbGVjdENvbXBvbmVudCksXHJcbiAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgfSxcclxuICBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2VsZWN0Q29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uSW5pdCB7XHJcbiAgcHVibGljIHNlYXJjaFZhbHVlOiBzdHJpbmcgPSAnJztcclxuICBwdWJsaWMgaXNPcGVuOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIG9yaWdpblNlbGVjdGVkOiBhbnkgfCBhbnlbXSA9IFtdO1xyXG4gIHB1YmxpYyBvcmlnaW5JdGVtczogU2VsZWN0SXRlbU1vZGVsW10gPSBbXTtcclxuICBwdWJsaWMgc2VsZWN0ZWQ6IFNlbGVjdEl0ZW1Nb2RlbFtdID0gW107XHJcbiAgcHVibGljIGlubmVySXRlbXM6IFNlbGVjdElubmVySXRlbU1vZGVsW10gPSBbXTtcclxuICBwdWJsaWMgZm9ybSA9IG5ldyBNcnhGb3JtVmFsaWRhdG9yKCk7XHJcbiAgcHVibGljIG1vZGVsID0ge1xyXG4gICAgbGFiZWw6ICcnLFxyXG4gIH1cclxuXHJcbiAgLy8gU0FWRSBTVEFURVxyXG4gIHB1YmxpYyB1dWlkOiBzdHJpbmcgPSB1dWlkdjQoKTtcclxuICBASW5wdXQoKSBwdWJsaWMgZmllbGRzOiBGaWVsZFtdID0gW107XHJcblxyXG4gIEBJbnB1dCgpIHNldCBpdGVtcyhpdGVtczogYW55W10pIHtcclxuICAgIHRoaXMub3JpZ2luSXRlbXMgPSBpdGVtcztcclxuICAgIHRoaXMudXBkYXRlU2VsZWN0ZWQodGhpcy5vcmlnaW5JdGVtcywgdGhpcy5vcmlnaW5TZWxlY3RlZClcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpIG11bHRpcGxlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgaXNMb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgc2VhcmNoYWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGNsZWFyYWJsZTogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgY2xvc2FibGU6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHNpemU6IFNlbGVjdFNpemVUeXBlcyA9ICdsYXJnZSc7XHJcbiAgQElucHV0KCkgYmluZFZhbHVlOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuICBASW5wdXQoKSBiaW5kTGFiZWw6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gIEBJbnB1dCgpIGJpbmRJY29uOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuICBASW5wdXQoKSBlbXB0eVRleHQ6IHN0cmluZyA9ICfQndC1INC90LDQudC00LXQvdC+JztcclxuICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nID0gJ9CS0YvQsdC10YDQuNGC0LUg0LfQvdCw0YfQtdC90LjQtSc7XHJcbiAgQElucHV0KCkgc2VhcmNoUGxhY2Vob2xkZXI6IHN0cmluZyA9ICfQktCy0LXQtNC40YLQtSDQt9C90LDRh9C10L3QuNC1JztcclxuICBASW5wdXQoKSBtdWx0aUNvbGxhcHNlQ291bnQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG4gIEBJbnB1dCgpIGFkZE9wdGlvbiE6IEFkZE9wdGlvbkZuO1xyXG4gIEBJbnB1dCgnaXNFeHRyYU9wdGlvbicpIG9wdGlvblZhbGlkYXRpb246IHsgbGFiZWw6IHsgcmVxdWlyZWQ6IGJvb2xlYW4sIG1pbkxlbmd0aDogbnVtYmVyIH0gfSB8IG51bGwgPSBudWxsO1xyXG4gIEBJbnB1dCgpIGV4dHJhT3B0aW9uUGxhY2Vob2xkZXI6IHN0cmluZyA9ICfQktCy0LXQtNC40YLQtSDQt9C90LDRh9C10L3QuNC1JztcclxuICBASW5wdXQoKSB1c2U6ICdkZWZhdWx0JyB8ICdsaW5rJyA9ICdkZWZhdWx0JztcclxuICBASW5wdXQoKSBzb3J0SWNvbjogJ2FzYycgfCAnZGVzYycgfCBudWxsID0gbnVsbDtcclxuICBASW5wdXQoKSBzb3J0UGxhY2Vob2xkZXI6IHN0cmluZyA9ICcnO1xyXG5cclxuICBASW5wdXQoKSBwdWJsaWMgZGlzYWJsZWQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgcmVhZG9ubHkgPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KCkgcHVibGljIGludmFsaWQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgaW52YWxpZE1lc3NhZ2U6IHN0cmluZyB8IHN0cmluZ1tdID0gJyc7XHJcbiAgQElucHV0KCkgcHVibGljIGNoZWNrSW52YWxpZDogdHJ1ZSB8IGZhbHNlIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIEBJbnB1dCgpIHBvcHVwUG9zaXRpb246IFBvc2l0aW9uVHlwZSA9IFBvc2l0aW9uRW51bS5Cb3R0b21TdGFydDtcclxuXHJcbiAgQFZpZXdDaGlsZCgnZHJvcGRvd24nKSBkcm9wZG93biE6IFBvcHVwQ29tcG9uZW50O1xyXG5cclxuICBAQ29udGVudENoaWxkKCdvcHRpb25UZW1wbGF0ZScpIG9wdGlvblRlbXBsYXRlITogVGVtcGxhdGVSZWY8VGVtcGxhdGVPdXRwdXRNb2RlbD47XHJcbiAgQENvbnRlbnRDaGlsZCgnbGFiZWxUZW1wbGF0ZScpIGxhYmVsVGVtcGxhdGUhOiBUZW1wbGF0ZVJlZjxUZW1wbGF0ZU91dHB1dE1vZGVsPjtcclxuICBAQ29udGVudENoaWxkKCdwb3B1cEhlYWRlclRlbXBsYXRlJykgcG9wdXBIZWFkZXJUZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPFRlbXBsYXRlT3V0cHV0TW9kZWw+O1xyXG4gIEBDb250ZW50Q2hpbGQoJ3BvcHVwRm9vdGVyVGVtcGxhdGUnKSBwb3B1cEZvb3RlclRlbXBsYXRlITogVGVtcGxhdGVSZWY8VGVtcGxhdGVPdXRwdXRNb2RlbD47XHJcbiAgQENvbnRlbnRDaGlsZCgnY29udGVudFRlbXBsYXRlJykgY29udGVudFRlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcbiAgQE91dHB1dCgpIHB1YmxpYyBjaGFuZ2VkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSBwdWJsaWMgbW9kZWxDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMub3B0aW9uVmFsaWRhdGlvbikge1xyXG4gICAgICB0aGlzLmZvcm0uaW5pdEZpZWxkcyh0aGlzLm1vZGVsLCB0aGlzLm9wdGlvblZhbGlkYXRpb24pXHJcbiAgICB9XHJcbiAgfVxyXG4gIHB1YmxpYyBnZXQgcmVhZG9ubHlDbGFzcygpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMucmVhZG9ubHkgPyAnbXJ4LWlucHV0X19yZWFkb25seScgOiAnJztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgY2hlY2tWYWxpZENsYXNzZXMoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmNoZWNrSW52YWxpZCA9PT0gZmFsc2UgP1xyXG4gICAgICAnbXJ4LWlucHV0LWNoZWNrZWQtc3VjY2VzcycgOlxyXG4gICAgICB0aGlzLmNoZWNrSW52YWxpZCA9PT0gdHJ1ZSA/ICdtcngtaW5wdXQtY2hlY2tlZC1lcnJvcicgOiAnJztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgZ2V0Q2xhc3NlcygpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIGAke1NlbGVjdFNpemVFbnVtW3RoaXMuc2l6ZV19ICR7dGhpcy5yZWFkb25seUNsYXNzfSAke3RoaXMuY2hlY2tWYWxpZENsYXNzZXN9YDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgZ2V0U2VsZWN0ZWRMYWJlbHMoKTogU2VsZWN0SW5uZXJJdGVtTW9kZWxbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5pbm5lckl0ZW1zLmZpbHRlcihpID0+IGkuX19zZWxlY3RlZCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGZpbHRlcmVkSXRlbXMoKTogU2VsZWN0SW5uZXJJdGVtTW9kZWxbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5pbm5lckl0ZW1zLmZpbHRlcihpID0+IHtcclxuICAgICAgaWYgKHRoaXMuYmluZExhYmVsKSB7XHJcbiAgICAgICAgcmV0dXJuIFN0cmluZyhpW3RoaXMuYmluZExhYmVsXSkuaW5jbHVkZXModGhpcy5zZWFyY2hWYWx1ZSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIFN0cmluZyhpKS5pbmNsdWRlcyh0aGlzLnNlYXJjaFZhbHVlKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGlzSW52YWxpZE1lc3NhZ2UoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gISF0aGlzLmludmFsaWRNZXNzYWdlIHx8ICEhdGhpcy5pbnZhbGlkTWVzc2FnZT8ubGVuZ3RoO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uU2VsZWN0KGl0ZW06IGFueSkge1xyXG4gICAgaWYgKCF0aGlzLm11bHRpcGxlKSB7XHJcbiAgICAgIGlmICh0aGlzLnVzZSA9PT0gJ2RlZmF1bHQnKSB7XHJcbiAgICAgICAgdGhpcy5pbm5lckl0ZW1zID0gdGhpcy5pbm5lckl0ZW1zLm1hcChpID0+IHtcclxuICAgICAgICAgIHJldHVybiB7Li4uaSwgX19zZWxlY3RlZDogaS5fX2lkID09PSBpdGVtLl9faWQgPyAhaS5fX3NlbGVjdGVkIDogZmFsc2V9O1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuaW5uZXJJdGVtcyA9IHRoaXMuaW5uZXJJdGVtcy5tYXAoaSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gey4uLmksIF9fc2VsZWN0ZWQ6IGkuX19pZCA9PT0gaXRlbS5fX2lkfTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG5cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuaW5uZXJJdGVtcyA9IHRoaXMuaW5uZXJJdGVtcy5tYXAoaSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHsuLi5pLCBfX3NlbGVjdGVkOiBpLl9faWQgPT09IGl0ZW0uX19pZCA/ICFpLl9fc2VsZWN0ZWQgOiBpLl9fc2VsZWN0ZWR9O1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmRyb3Bkb3duLnVwZGF0ZVBvcHVwKCk7XHJcblxyXG4gICAgdGhpcy51cGRhdGVWYWx1ZSh0aGlzLmlubmVySXRlbXMpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNsZWFySXRlbShpdGVtOiBTZWxlY3RJbm5lckl0ZW1Nb2RlbCkge1xyXG4gICAgdGhpcy5vblVuc2VsZWN0KGl0ZW0pXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25VbnNlbGVjdChpdGVtOiBTZWxlY3RJbm5lckl0ZW1Nb2RlbCkge1xyXG4gICAgdGhpcy5pbm5lckl0ZW1zLmZvckVhY2goaSA9PiB7XHJcbiAgICAgIGlmIChpLl9faWQgPT09IGl0ZW0uX19pZCkge1xyXG4gICAgICAgIGkuX19zZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLnVwZGF0ZVZhbHVlKHRoaXMuaW5uZXJJdGVtcyk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25PcGVuKGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuXHJcbiAgICBpZiAodGhpcy5pc09wZW4pIHtcclxuICAgICAgdGhpcy5kcm9wZG93bi50b2dnbGVQb3B1cChmYWxzZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmRyb3Bkb3duLnRvZ2dsZVBvcHVwKHRydWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uQ2xlYXIoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG5cclxuICAgIHRoaXMuaW5uZXJJdGVtcyA9IHRoaXMuaW5uZXJJdGVtcy5tYXAoaXRlbSA9PiAoey4uLml0ZW0sIF9fc2VsZWN0ZWQ6IGZhbHNlfSkpO1xyXG5cclxuICAgIHRoaXMuZHJvcGRvd24udG9nZ2xlUG9wdXAoZmFsc2UpO1xyXG5cclxuICAgIHRoaXMudXBkYXRlVmFsdWUoW10pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHRvZ2dsZVBvcHVwKGlzT3BlbjogYm9vbGVhbikge1xyXG4gICAgdGhpcy5pc09wZW4gPSBpc09wZW47XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0Q2xlYW5TZWxlY3RJdGVtKGl0ZW06IFNlbGVjdElubmVySXRlbU1vZGVsKSB7XHJcbiAgICByZXR1cm4gY2xlYW5TZWxlY3RJdGVtKGl0ZW0pXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXNPcHRpb24ob3B0aW9uOiBTZWxlY3RJbm5lckl0ZW1Nb2RlbCk6IFNlbGVjdElubmVySXRlbU1vZGVsIHtcclxuICAgIHJldHVybiBvcHRpb247XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXNMYWJlbChsYWJlbDogU2VsZWN0SW5uZXJJdGVtTW9kZWwpOiBTZWxlY3RJbm5lckl0ZW1Nb2RlbCB7XHJcbiAgICByZXR1cm4gbGFiZWw7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgd3JpdGVWYWx1ZShzZWxlY3RlZDogYW55IHwgYW55W10gPSBbXSk6IHZvaWQge1xyXG4gICAgaWYgKHNlbGVjdGVkKSB7XHJcbiAgICAgIHRoaXMub3JpZ2luU2VsZWN0ZWQgPSBzZWxlY3RlZFxyXG4gICAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkKHRoaXMub3JpZ2luSXRlbXMsIHRoaXMub3JpZ2luU2VsZWN0ZWQpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2hhbmdlVGV4dFZhbHVlRW1wdHkoKTogdm9pZCB7XHJcbiAgICB0aGlzLmZvcm0uaW5pdE1vZGVsQ2hhbmdlZCh0aGlzLm1vZGVsKVxyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uQWRkTmV3Q3VzdG9tT3B0aW9uKCkge1xyXG4gICAgaWYgKHRoaXMuZm9ybS5pc1ZhbGlkKCkpIHtcclxuICAgICAgdGhpcy5hZGRPcHRpb24odGhpcy5tb2RlbC5sYWJlbCk7XHJcbiAgICAgIHRoaXMubW9kZWwubGFiZWwgPSAnJztcclxuXHJcbiAgICAgIHRoaXMuY2hhbmdlVGV4dFZhbHVlRW1wdHkoKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVTZWxlY3RlZChpdGVtczogYW55W10gPSBbXSwgc2VsZWN0ZWQ6IGFueVtdID0gW10pIHtcclxuICAgIGlmICh0aGlzLm11bHRpcGxlICYmIEFycmF5LmlzQXJyYXkodGhpcy5vcmlnaW5TZWxlY3RlZCkpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZCA9IGdldElubmVyU2VsZWN0ZWQoaXRlbXMsIHNlbGVjdGVkLCB0aGlzLmJpbmRWYWx1ZSlcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWQgPSBnZXRJbm5lclNlbGVjdGVkKGl0ZW1zLCBbc2VsZWN0ZWRdLCB0aGlzLmJpbmRWYWx1ZSlcclxuICAgIH1cclxuICAgIHRoaXMuaW5uZXJJdGVtcyA9IGdldElubmVySXRlbXMoaXRlbXMsIHRoaXMuc2VsZWN0ZWQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVWYWx1ZShzZWxlY3RlZEl0ZW1zOiBTZWxlY3RJbm5lckl0ZW1Nb2RlbFtdKSB7XHJcbiAgICBjb25zdCBjbGVhcmVkU2VsZWN0ZWQgPSBnZXRTZWxlY3RlZEl0ZW1zKHNlbGVjdGVkSXRlbXMsIHRoaXMuYmluZFZhbHVlKTtcclxuICAgIGNvbnN0IG91dHB1dFNlbGVjdGVkID0gdGhpcy5tdWx0aXBsZSA/IGNsZWFyZWRTZWxlY3RlZCA6IGNsZWFyZWRTZWxlY3RlZC5sZW5ndGggPyBjbGVhcmVkU2VsZWN0ZWRbMF0gOiBudWxsO1xyXG5cclxuICAgIHRoaXMuY2hhbmdlZC5lbWl0KG91dHB1dFNlbGVjdGVkKTtcclxuICAgIHRoaXMubW9kZWxDaGFuZ2UuZW1pdCh7dmFsdWU6IG91dHB1dFNlbGVjdGVkLCBpZDogdGhpcy51dWlkfSk7XHJcbiAgICB0aGlzLm9uQ2hhbmdlKG91dHB1dFNlbGVjdGVkKTtcclxuICAgIHRoaXMub25Ub3VjaGVkKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG9uQ2hhbmdlID0gKHZhbHVlOiBhbnkpID0+IHtcclxuICB9O1xyXG4gIHByaXZhdGUgb25Ub3VjaGVkID0gKCkgPT4ge1xyXG4gIH07XHJcblxyXG4gIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpIHtcclxuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4ge30pOiB2b2lkIHtcclxuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgW2NsYXNzLi1kaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgICAgW2NsYXNzLi1yZWFkb25seV09XCJyZWFkb25seVwiXHJcbiAgICAgW2NsYXNzLm1yeC1pbnB1dC1lcnJvcl09XCJpbnZhbGlkXCJcclxuICAgICBbY2xhc3NdPVwiZ2V0Q2xhc3Nlc1wiXHJcbiAgICAgY2xhc3M9XCJtcngtc2VsZWN0XCJcclxuPlxyXG4gIDxkaXYgY2xhc3M9XCJtcngtc2VsZWN0X193cmFwcGVyXCI+XHJcbiAgICBAc3dpdGNoICh1c2UpIHtcclxuICAgICAgQGNhc2UgKCdkZWZhdWx0Jykge1xyXG4gICAgICAgIDxkaXYgW21yeFBvcHVwVHJpZ2dlcl09XCJkcm9wZG93blwiIFtwb3B1cFBvc2l0aW9uXT1cInBvcHVwUG9zaXRpb25cIiBjbGFzcz1cIm1yeC1zZWxlY3RfX2lucHV0XCI+XHJcbiAgICAgICAgICBAaWYgKGdldFNlbGVjdGVkTGFiZWxzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICBAaWYgKG11bHRpcGxlKSB7XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1yeC1zZWxlY3RfX2lucHV0X192YWx1ZXNcIj5cclxuICAgICAgICAgICAgICAgIEBpZiAobXVsdGlDb2xsYXBzZUNvdW50ICYmIGdldFNlbGVjdGVkTGFiZWxzLmxlbmd0aCA+PSBtdWx0aUNvbGxhcHNlQ291bnQpIHtcclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1yeC1zZWxlY3RfX2lucHV0X19iYWRnZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwPtCS0YvQsdGA0LDQvdC+OiB7eyBnZXRTZWxlY3RlZExhYmVscy5sZW5ndGggfX08L3A+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIEBpZiAoIWRpc2FibGVkICYmICFyZWFkb25seSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcngtaWNvbiBpY29uLWNsb3NlIGljb24tZm9udC0xNlwiIChjbGljayk9XCJvbkNsZWFyKCRldmVudClcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICBAZm9yIChpdGVtIG9mIGdldFNlbGVjdGVkTGFiZWxzOyB0cmFjayBpdGVtOyBsZXQgZmlyc3QgPSAkZmlyc3Q7IGxldCBsYXN0ID0gJGxhc3QpIHtcclxuICAgICAgICAgICAgICAgICAgICBAaWYgKGxhYmVsVGVtcGxhdGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwibGFiZWxUZW1wbGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7aXRlbSwgZmlyc3QsIGxhc3QsIGNsZWFyOiBjbGVhckl0ZW19XCJcclxuICAgICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiZGVmYXVsdExhYmVsVGVtcGxhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie2l0ZW0sIGZpcnN0LCBsYXN0fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcngtc2VsZWN0X19pbnB1dF9fdmFsdWVcIj5cclxuICAgICAgICAgICAgICAgIEBmb3IgKGl0ZW0gb2YgZ2V0U2VsZWN0ZWRMYWJlbHM7IHRyYWNrIGl0ZW0pIHtcclxuICAgICAgICAgICAgICAgICAge3sgYmluZExhYmVsID8gaXRlbVtiaW5kTGFiZWxdIDogaXRlbVsnbGFiZWwnXSB8fCBpdGVtIH19XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXJ4LXNlbGVjdF9faW5wdXRfX3BsYWNlaG9sZGVyXCI+e3sgcGxhY2Vob2xkZXIgfX08L2Rpdj5cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibXJ4LXNlbGVjdF9faW5wdXRfX2NvbnRyb2xzXCI+XHJcbiAgICAgICAgICAgIEBpZiAoaXNMb2FkaW5nKSB7XHJcbiAgICAgICAgICAgICAgPG1yeC1sb2FkZXJcclxuICAgICAgICAgICAgICAgIFtzaXplXT1cInNpemUgPT09ICdsYXJnZScgPyAnc21hbGwnIDogJ2V4dHJhLXNtYWxsJ1wiXHJcbiAgICAgICAgICAgICAgICBbY29sb3JdPVwiJ2JyYW5kJ1wiXHJcbiAgICAgICAgICAgICAgPjwvbXJ4LWxvYWRlcj5cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgQGlmIChnZXRTZWxlY3RlZExhYmVscy5sZW5ndGggJiYgY2xlYXJhYmxlKSB7XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1yeC1zZWxlY3RfX2lucHV0X19jb250cm9scy0taXRlbVwiIChjbGljayk9XCJvbkNsZWFyKCRldmVudClcIj5cclxuICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICBjbGFzcz1cIm1yeC1pY29uIGljb24tY2xvc2VcIlxyXG4gICAgICAgICAgICAgIFtjbGFzcy5pY29uLWZvbnQtMjRdPVwic2l6ZSA9PT0gJ2xhcmdlJ1wiXHJcbiAgICAgICAgICAgICAgW2NsYXNzLmljb24tZm9udC0xNl09XCJzaXplID09PSAnbWVkaXVtJ1wiXHJcbiAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1yeC1zZWxlY3RfX2lucHV0X19jb250cm9scy0taXRlbVwiIChjbGljayk9XCJvbk9wZW4oJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgIFtjbGFzcy5pY29uLWNoZXZyb24tZG93bl09XCIhaXNPcGVuXCJcclxuICAgICAgICAgICAgICBbY2xhc3MuaWNvbi1jaGV2cm9uLXVwXT1cImlzT3BlblwiXHJcbiAgICAgICAgICAgICAgW2NsYXNzLmljb24tZm9udC0xNl09XCJzaXplID09PSAnbWVkaXVtJ1wiXHJcbiAgICAgICAgICAgICAgW2NsYXNzLmljb24tZm9udC0yNF09XCJzaXplID09PSAnbGFyZ2UnXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cIm1yeC1pY29uXCJcclxuICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgfVxyXG5cclxuICAgICAgQGNhc2UgKCdsaW5rJykge1xyXG4gICAgICAgIDxkaXYgW21yeFBvcHVwVHJpZ2dlcl09XCJkcm9wZG93blwiIFtwb3B1cFBvc2l0aW9uXT1cInBvcHVwUG9zaXRpb25cIiBjbGFzcz1cIm1yeC1zZWxlY3RfX2lucHV0LWxpbmtcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcngtc2VsZWN0X19pbnB1dC1saW5rX19jb250cm9sc1wiPlxyXG4gICAgICAgICAgICBAaWYgKHNvcnRQbGFjZWhvbGRlcikge1xyXG4gICAgICAgICAgICAgIDxwPnt7IHNvcnRQbGFjZWhvbGRlciB9fTwvcD5cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgQGlmIChzb3J0SWNvbikge1xyXG4gICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICBbY2xhc3MuaWNvbi1mb250LTE2XT1cInNpemUgPT09ICdtZWRpdW0nXCJcclxuICAgICAgICAgICAgICAgIFtjbGFzcy5pY29uLWZvbnQtMjRdPVwic2l6ZSA9PT0gJ2xhcmdlJ1wiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm1yeC1pY29uIHt7c29ydEljb24gPT09ICdhc2MnID8gJ2ljb24tc29ydGluZy11cCcgOiAnaWNvbi1zb3J0aW5nLWRvd24nfX1cIlxyXG4gICAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcngtc2VsZWN0X19pbnB1dC1saW5rX19jb250cm9sc1wiPlxyXG4gICAgICAgICAgICBAaWYgKGdldFNlbGVjdGVkTGFiZWxzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcngtc2VsZWN0X19pbnB1dC1saW5rX192YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgQGZvciAoaXRlbSBvZiBnZXRTZWxlY3RlZExhYmVsczsgdHJhY2sgaXRlbSkge1xyXG4gICAgICAgICAgICAgICAgICB7eyBiaW5kTGFiZWwgPyBpdGVtW2JpbmRMYWJlbF0gOiBpdGVtWydsYWJlbCddIHx8IGl0ZW0gfX1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1yeC1zZWxlY3RfX2lucHV0X19jb250cm9scy0taXRlbVwiIChjbGljayk9XCJvbk9wZW4oJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgIFtjbGFzcy5pY29uLWNoZXZyb24tZG93bl09XCIhaXNPcGVuXCJcclxuICAgICAgICAgICAgICBbY2xhc3MuaWNvbi1jaGV2cm9uLXVwXT1cImlzT3BlblwiXHJcbiAgICAgICAgICAgICAgW2NsYXNzLmljb24tZm9udC0xNl09XCJzaXplID09PSAnbWVkaXVtJ1wiXHJcbiAgICAgICAgICAgICAgW2NsYXNzLmljb24tZm9udC0yNF09XCJzaXplID09PSAnbGFyZ2UnXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cIm1yeC1pY29uXCJcclxuICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIDxtcngtcG9wdXAgI2Ryb3Bkb3duIFtjbG9zZUFmdGVyQ2xpY2tdPVwiY2xvc2FibGVcIiAodG9nZ2xlKT1cInRvZ2dsZVBvcHVwKCRldmVudClcIj5cclxuICAgICAgQGZvciAoaXRlbSBvZiBmaWx0ZXJlZEl0ZW1zOyB0cmFjayBpdGVtLl9faWQ7IGxldCBmaXJzdCA9ICRmaXJzdDsgbGV0IGxhc3QgPSAkbGFzdCkge1xyXG4gICAgICAgIDxtcngtcG9wdXAtaXRlbSBbY3VzdG9tXT1cInRydWVcIiBbaWRdPVwiaXRlbS5fX2lkXCIgKGNsaWNrZWQpPVwib25TZWxlY3QoaXRlbSlcIj5cclxuICAgICAgICAgIEBpZiAob3B0aW9uVGVtcGxhdGUpIHtcclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm9wdGlvblRlbXBsYXRlXCJcclxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie2l0ZW0sIGZpcnN0LCBsYXN0fVwiXHJcbiAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiZGVmYXVsdE9wdGlvblRlbXBsYXRlXCJcclxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie2l0ZW0sIGZpcnN0LCBsYXN0fVwiXHJcbiAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIH1cclxuICAgICAgICA8L21yeC1wb3B1cC1pdGVtPlxyXG4gICAgICB9IEBlbXB0eSB7XHJcbiAgICAgICAgPG1yeC1wb3B1cC1pdGVtIFtjdXN0b21dPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1yeC1zZWxlY3RfX2Ryb3Bkb3duX19lbXB0eVwiPnt7IGVtcHR5VGV4dCB9fTwvZGl2PlxyXG4gICAgICAgIDwvbXJ4LXBvcHVwLWl0ZW0+XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIDxuZy10ZW1wbGF0ZSAjaGVhZGVyVGVtcGxhdGU+XHJcbiAgICAgICAgQGlmIChzZWFyY2hhYmxlKSB7XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibXJ4LXNlbGVjdF9fZHJvcGRvd25fX3NlYXJjaFwiPlxyXG4gICAgICAgICAgICA8bXJ4LWlucHV0LXRleHRcclxuICAgICAgICAgICAgICBbc2l6ZV09XCInbWVkaXVtJ1wiXHJcbiAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInNlYXJjaFBsYWNlaG9sZGVyXCJcclxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlYXJjaFZhbHVlXCJcclxuICAgICAgICAgICAgPjwvbXJ4LWlucHV0LXRleHQ+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIEBpZiAoY29udGVudFRlbXBsYXRlKSB7XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udGVudFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBAaWYgKHBvcHVwSGVhZGVyVGVtcGxhdGUpIHtcclxuICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwicG9wdXBIZWFkZXJUZW1wbGF0ZVwiXHJcbiAgICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgfVxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgPG5nLXRlbXBsYXRlICNmb290ZXJUZW1wbGF0ZT5cclxuICAgICAgICBAaWYgKCEhYWRkT3B0aW9uKSB7XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibXJ4LXNlbGVjdF9fZHJvcGRvd25fX2V4dHJhLW9wdGlvblwiPlxyXG4gICAgICAgICAgICA8bXJ4LWlucHV0LXRleHRcclxuICAgICAgICAgICAgICBjbGFzcz1cImZsZXgtZ3Jvdy0xXCJcclxuICAgICAgICAgICAgICBbc2l6ZV09XCInbWVkaXVtJ1wiXHJcbiAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImV4dHJhT3B0aW9uUGxhY2Vob2xkZXJcIlxyXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwibW9kZWwubGFiZWxcIlxyXG4gICAgICAgICAgICAgIFttYXhsZW5ndGhdPVwiMzAwXCJcclxuICAgICAgICAgICAgICBbaW52YWxpZF09XCIhIWZvcm0uZXJyb3JzWydsYWJlbCddXCJcclxuICAgICAgICAgICAgICBbaW52YWxpZE1lc3NhZ2VdPVwiZm9ybS5lcnJvcnNbJ2xhYmVsJ11cIlxyXG4gICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImNoYW5nZVRleHRWYWx1ZUVtcHR5KClcIlxyXG4gICAgICAgICAgICA+PC9tcngtaW5wdXQtdGV4dD5cclxuICAgICAgICAgICAgPG1yeC1idXR0b25cclxuICAgICAgICAgICAgICBbaWNvbk9ubHldPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgaWNvbj1cIjxzcGFuIGNsYXNzPSdtcngtaWNvbiBpY29uLXBsdXMgaWNvbi1mb250LTI0Jz48L3NwYW4+XCJcclxuICAgICAgICAgICAgICBzaXplPVwibWVkaXVtXCJcclxuICAgICAgICAgICAgICB0eXBlPVwic2Vjb25kYXJ5XCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwib25BZGROZXdDdXN0b21PcHRpb24oKVwiXHJcbiAgICAgICAgICAgID48L21yeC1idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIEBpZiAocG9wdXBGb290ZXJUZW1wbGF0ZSkge1xyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJwb3B1cEZvb3RlclRlbXBsYXRlXCJcclxuICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICB9XHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8L21yeC1wb3B1cD5cclxuICA8L2Rpdj5cclxuXHJcbiAgPG1yeC1lcnJvci1tZXNzYWdlXHJcbiAgICAqbmdJZj1cImludmFsaWQgJiYgaXNJbnZhbGlkTWVzc2FnZVwiXHJcbiAgICBbaW52YWxpZE1lc3NhZ2VdPVwiaW52YWxpZE1lc3NhZ2VcIlxyXG4gID48L21yeC1lcnJvci1tZXNzYWdlPlxyXG5cclxuICA8bXJ4LXNhdmUtc3RhdGUgW2ZpZWxkc109XCJmaWVsZHNcIiBbaWRdPVwidXVpZFwiIFt0eXBlXT1cIidpbnB1dCdcIj48L21yeC1zYXZlLXN0YXRlPlxyXG48L2Rpdj5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjZGVmYXVsdExhYmVsVGVtcGxhdGUgbGV0LWl0ZW09XCJpdGVtXCI+XHJcbiAgQGlmIChhc0xhYmVsKGl0ZW0pOyBhcyBsYWJlbCkge1xyXG4gICAgPGRpdiBjbGFzcz1cIm1yeC1zZWxlY3RfX2lucHV0X19iYWRnZVwiPlxyXG4gICAgICA8cD57eyBiaW5kTGFiZWwgPyBsYWJlbFtiaW5kTGFiZWxdIDogbGFiZWxbJ2xhYmVsJ10gfHwgbGFiZWwgfX08L3A+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwibXJ4LWljb24gaWNvbi1jbG9zZSBpY29uLWZvbnQtMTZcIiAoY2xpY2spPVwib25VbnNlbGVjdChsYWJlbClcIj48L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuICB9XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2RlZmF1bHRPcHRpb25UZW1wbGF0ZSBsZXQtaXRlbT1cIml0ZW1cIj5cclxuICBAaWYgKGFzT3B0aW9uKGl0ZW0pOyBhcyBvcHRpb24pIHtcclxuICAgIDxkaXYgY2xhc3M9XCJtcngtc2VsZWN0X19kcm9wZG93bl9faXRlbVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibXJ4LXNlbGVjdF9fZHJvcGRvd25fX2l0ZW0tLWNvbnRlbnRcIj5cclxuICAgICAgICBAaWYgKGJpbmRJY29uICYmIG9wdGlvbltiaW5kSWNvbl0pIHtcclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXJ4LWljb24gaWNvbi1mb250LTI0XCIgW2NsYXNzXT1cIm9wdGlvbltiaW5kSWNvbl1cIj48L3NwYW4+XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICA8cD57eyBiaW5kTGFiZWwgPyBvcHRpb25bYmluZExhYmVsXSA6IG9wdGlvblsnbGFiZWwnXSB8fCBvcHRpb24gfX08L3A+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgQGlmIChvcHRpb24uX19zZWxlY3RlZCkge1xyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwibXJ4LWljb24gaWNvbi1jaGVjayBpY29uLWZvbnQtMjRcIj48L3NwYW4+XHJcbiAgICAgIH1cclxuICAgIDwvZGl2PlxyXG4gIH1cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
303
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cnRhLXVpL3NyYy9saWIvY29tcG9uZW50cy9mb3JtL3NlbGVjdC9zZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGEtdWkvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vc2VsZWN0L3NlbGVjdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osWUFBWSxFQUNaLFVBQVUsRUFDVixLQUFLLEVBRUwsTUFBTSxFQUVOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLGNBQWMsRUFBbUIsTUFBTSxTQUFTLENBQUM7QUFJMUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDdkUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxFQUFFLElBQUksTUFBTSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBR3BDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsWUFBWSxFQUFnQixNQUFNLHdCQUF3QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7Ozs7Ozs7Ozs7QUFlckQsTUFBTSxPQUFPLGVBQWU7SUFDbkIsV0FBVyxHQUFXLEVBQUUsQ0FBQztJQUN6QixNQUFNLEdBQVksS0FBSyxDQUFDO0lBQ3hCLGNBQWMsR0FBZ0IsRUFBRSxDQUFDO0lBQ2pDLFdBQVcsR0FBc0IsRUFBRSxDQUFDO0lBQ3BDLFFBQVEsR0FBc0IsRUFBRSxDQUFDO0lBQ2pDLFVBQVUsR0FBMkIsRUFBRSxDQUFDO0lBQ3hDLElBQUksR0FBRyxJQUFJLGdCQUFnQixFQUFFLENBQUM7SUFDOUIsS0FBSyxHQUFHO1FBQ2IsS0FBSyxFQUFFLEVBQUU7S0FDVixDQUFBO0lBRUQsYUFBYTtJQUNOLElBQUksR0FBVyxNQUFNLEVBQUUsQ0FBQztJQUNmLE1BQU0sR0FBWSxFQUFFLENBQUM7SUFFckMsSUFBYSxLQUFLLENBQUMsS0FBWTtRQUM3QixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztRQUN6QixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFBO0lBRTVELENBQUM7SUFFUSxRQUFRLEdBQVksS0FBSyxDQUFDO0lBQzFCLFNBQVMsR0FBWSxLQUFLLENBQUM7SUFDM0IsVUFBVSxHQUFZLEtBQUssQ0FBQztJQUM1QixTQUFTLEdBQVksSUFBSSxDQUFDO0lBQzFCLFFBQVEsR0FBWSxJQUFJLENBQUM7SUFDekIsSUFBSSxHQUFvQixPQUFPLENBQUM7SUFDaEMsU0FBUyxHQUFrQixJQUFJLENBQUM7SUFDaEMsU0FBUyxHQUFrQixJQUFJLENBQUM7SUFDaEMsUUFBUSxHQUFrQixJQUFJLENBQUM7SUFDL0IsU0FBUyxHQUFXLFlBQVksQ0FBQztJQUNqQyxXQUFXLEdBQVcsbUJBQW1CLENBQUM7SUFDMUMsaUJBQWlCLEdBQVcsa0JBQWtCLENBQUM7SUFDL0Msa0JBQWtCLEdBQWtCLElBQUksQ0FBQztJQUN6QyxTQUFTLENBQWU7SUFDVCxnQkFBZ0IsR0FBK0QsSUFBSSxDQUFDO0lBQ25HLHNCQUFzQixHQUFXLGtCQUFrQixDQUFDO0lBQ3BELEdBQUcsR0FBdUIsU0FBUyxDQUFDO0lBQ3BDLFFBQVEsR0FBMEIsSUFBSSxDQUFDO0lBQ3ZDLGVBQWUsR0FBVyxFQUFFLENBQUM7SUFFdEIsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUNqQixRQUFRLEdBQUcsS0FBSyxDQUFDO0lBRWpCLE9BQU8sR0FBRyxLQUFLLENBQUM7SUFDaEIsY0FBYyxHQUFzQixFQUFFLENBQUM7SUFDdkMsWUFBWSxHQUF3QixJQUFJLENBQUM7SUFFaEQsYUFBYSxHQUFpQixZQUFZLENBQUMsV0FBVyxDQUFDO0lBRXpDLFFBQVEsQ0FBa0I7SUFFakIsY0FBYyxDQUFvQztJQUNuRCxhQUFhLENBQW9DO0lBQzNDLG1CQUFtQixDQUFvQztJQUN2RCxtQkFBbUIsQ0FBb0M7SUFDM0QsZUFBZSxDQUFvQjtJQUVuRCxPQUFPLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7SUFDckQsV0FBVyxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO0lBRTFFLFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUE7UUFDekQsQ0FBQztJQUNILENBQUM7SUFDRCxJQUFXLGFBQWE7UUFDdEIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ3BELENBQUM7SUFFRCxJQUFXLGlCQUFpQjtRQUMxQixPQUFPLElBQUksQ0FBQyxZQUFZLEtBQUssS0FBSyxDQUFDLENBQUM7WUFDbEMsMkJBQTJCLENBQUMsQ0FBQztZQUM3QixJQUFJLENBQUMsWUFBWSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMseUJBQXlCLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUNoRSxDQUFDO0lBRUQsSUFBVyxVQUFVO1FBQ25CLE9BQU8sR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDeEYsQ0FBQztJQUVELElBQVcsaUJBQWlCO1FBQzFCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVELElBQVcsYUFBYTtRQUN0QixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ2hDLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUNuQixPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUM5RCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUM5QyxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsSUFBVyxnQkFBZ0I7UUFDekIsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxNQUFNLENBQUM7SUFDaEUsQ0FBQztJQUVNLFFBQVEsQ0FBQyxJQUEwQjtRQUN4QyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ25CLElBQUksSUFBSSxDQUFDLEdBQUcsS0FBSyxTQUFTLEVBQUUsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtvQkFDeEMsT0FBTyxFQUFDLEdBQUcsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFDLENBQUM7Z0JBQzFFLENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7b0JBQ3hDLE9BQU8sRUFBQyxHQUFHLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsSUFBSSxFQUFDLENBQUM7Z0JBQ2xELENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztRQUVILENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDeEMsT0FBTyxFQUFDLEdBQUcsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBQyxDQUFDO1lBQ2pGLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7UUFFNUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVNLFNBQVMsQ0FBQyxJQUEwQjtRQUN6QyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQ3ZCLENBQUM7SUFFTSxVQUFVLENBQUMsSUFBMEI7UUFDMUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDMUIsSUFBSSxDQUFDLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDekIsQ0FBQyxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7WUFDdkIsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVNLE1BQU0sQ0FBQyxLQUFpQjtRQUM3QixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFFeEIsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDaEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbkMsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsQyxDQUFDO0lBQ0gsQ0FBQztJQUVNLE9BQU8sQ0FBQyxLQUFpQjtRQUM5QixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFFeEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBQyxHQUFHLElBQUksRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUFDO1FBRTlFLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWpDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUVNLFdBQVcsQ0FBQyxNQUFlO1FBQ2hDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFFTSxrQkFBa0IsQ0FBQyxJQUEwQjtRQUNsRCxPQUFPLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUM5QixDQUFDO0lBRU0sUUFBUSxDQUFDLE1BQTRCO1FBQzFDLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxPQUFPLENBQUMsS0FBMkI7UUFDeEMsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRU0sVUFBVSxDQUFDLFdBQXdCLEVBQUU7UUFDMUMsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNiLElBQUksQ0FBQyxjQUFjLEdBQUcsUUFBUSxDQUFBO1lBQzlCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUE7UUFDNUQsQ0FBQztJQUNILENBQUM7SUFFTSxvQkFBb0I7UUFDekIsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDeEMsQ0FBQztJQUVNLG9CQUFvQjtRQUN6QixJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDakMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1lBRXRCLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFBO1FBQzdCLENBQUM7SUFDSCxDQUFDO0lBRU8sY0FBYyxDQUFDLFFBQWUsRUFBRSxFQUFFLFdBQWtCLEVBQUU7UUFDNUQsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUM7WUFDeEQsSUFBSSxDQUFDLFFBQVEsR0FBRyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUNuRSxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxRQUFRLEdBQUcsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFBO1FBQ3JFLENBQUM7UUFDRCxJQUFJLENBQUMsVUFBVSxHQUFHLGFBQWEsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVPLFdBQVcsQ0FBQyxhQUFxQztRQUN2RCxNQUFNLGVBQWUsR0FBRyxnQkFBZ0IsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3hFLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFFNUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDbEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBQyxLQUFLLEVBQUUsY0FBYyxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFDLENBQUMsQ0FBQztRQUM5RCxJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRU8sUUFBUSxHQUFHLENBQUMsS0FBVSxFQUFFLEVBQUU7SUFDbEMsQ0FBQyxDQUFDO0lBQ00sU0FBUyxHQUFHLEdBQUcsRUFBRTtJQUN6QixDQUFDLENBQUM7SUFFSyxnQkFBZ0IsQ0FBQyxFQUFPO1FBQzdCLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFTSxpQkFBaUIsQ0FBQyxFQUFZO1FBQ25DLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO0lBQ3RCLENBQUM7d0dBOU5VLGVBQWU7NEZBQWYsZUFBZSx5MEJBUmY7WUFDVDtnQkFDRSxPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGVBQWUsQ0FBQztnQkFDOUMsS0FBSyxFQUFFLElBQUk7YUFDWjtTQUNGLDhvQkN0Q0gsdTFSQWlPQTs7NEZEekxhLGVBQWU7a0JBYjNCLFNBQVM7K0JBQ0UsWUFBWSxtQkFHTCx1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLGdCQUFnQixDQUFDOzRCQUM5QyxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjs4QkFnQmUsTUFBTTtzQkFBckIsS0FBSztnQkFFTyxLQUFLO3NCQUFqQixLQUFLO2dCQU1HLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDa0IsZ0JBQWdCO3NCQUF2QyxLQUFLO3VCQUFDLGVBQWU7Z0JBQ2Isc0JBQXNCO3NCQUE5QixLQUFLO2dCQUNHLEdBQUc7c0JBQVgsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBRVUsUUFBUTtzQkFBdkIsS0FBSztnQkFDVSxRQUFRO3NCQUF2QixLQUFLO2dCQUVVLE9BQU87c0JBQXRCLEtBQUs7Z0JBQ1UsY0FBYztzQkFBN0IsS0FBSztnQkFDVSxZQUFZO3NCQUEzQixLQUFLO2dCQUVHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBRWlCLFFBQVE7c0JBQTlCLFNBQVM7dUJBQUMsVUFBVTtnQkFFVyxjQUFjO3NCQUE3QyxZQUFZO3VCQUFDLGdCQUFnQjtnQkFDQyxhQUFhO3NCQUEzQyxZQUFZO3VCQUFDLGVBQWU7Z0JBQ1EsbUJBQW1CO3NCQUF2RCxZQUFZO3VCQUFDLHFCQUFxQjtnQkFDRSxtQkFBbUI7c0JBQXZELFlBQVk7dUJBQUMscUJBQXFCO2dCQUNGLGVBQWU7c0JBQS9DLFlBQVk7dUJBQUMsaUJBQWlCO2dCQUVkLE9BQU87c0JBQXZCLE1BQU07Z0JBQ1UsV0FBVztzQkFBM0IsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ29tcG9uZW50LFxyXG4gIENvbnRlbnRDaGlsZCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgZm9yd2FyZFJlZixcclxuICBJbnB1dCxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFRlbXBsYXRlUmVmLFxyXG4gIFZpZXdDaGlsZFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFNlbGVjdFNpemVFbnVtLCBTZWxlY3RTaXplVHlwZXMgfSBmcm9tICcuL2VudW1zJztcclxuaW1wb3J0IHsgUG9wdXBDb21wb25lbnQgfSBmcm9tICcuLi8uLi9wb3B1cC9jb21wb25lbnRzL3BvcHVwL3BvcHVwLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFNlbGVjdElubmVySXRlbU1vZGVsIH0gZnJvbSAnLi9tb2RlbHMvc2VsZWN0LWlubmVyLWl0ZW0ubW9kZWwnO1xyXG5pbXBvcnQgeyBBZGRPcHRpb25GbiwgU2VsZWN0SXRlbU1vZGVsIH0gZnJvbSAnLi9tb2RlbHMvc2VsZWN0LWl0ZW0ubW9kZWwnO1xyXG5pbXBvcnQgeyBnZXRTZWxlY3RlZEl0ZW1zIH0gZnJvbSAnLi9oZWxwZXJzL2dldC1zZWxlY3RlZC1pdGVtcy5oZWxwZXInO1xyXG5pbXBvcnQgeyBnZXRJbm5lckl0ZW1zIH0gZnJvbSAnLi9oZWxwZXJzL2dldC1pbm5lci1pdGVtcy5oZWxwZXInO1xyXG5pbXBvcnQgeyB2NCBhcyB1dWlkdjQgfSBmcm9tICd1dWlkJztcclxuaW1wb3J0IHsgRmllbGQgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcyc7XHJcbmltcG9ydCB7IFRlbXBsYXRlT3V0cHV0TW9kZWwgfSBmcm9tICcuL21vZGVscy90ZW1wbGF0ZS1vdXRwdXQubW9kZWwnO1xyXG5pbXBvcnQgeyBjbGVhblNlbGVjdEl0ZW0gfSBmcm9tICcuL2hlbHBlcnMvY2xlYW4tc2VsZWN0ZWQtaXRlbXMuaGVscGVyJztcclxuaW1wb3J0IHsgUG9zaXRpb25FbnVtLCBQb3NpdGlvblR5cGUgfSBmcm9tICcuLi8uLi8uLi9lbnVtcy9vdmVybGF5JztcclxuaW1wb3J0IHsgZ2V0SW5uZXJTZWxlY3RlZCB9IGZyb20gJy4vaGVscGVycy9nZXQtaW5uZXItc2VsZWN0ZWQuaGVscGVyJztcclxuaW1wb3J0IHsgTXJ4Rm9ybVZhbGlkYXRvciB9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlc1wiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdtcngtc2VsZWN0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vc2VsZWN0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vc2VsZWN0LmNvbXBvbmVudC5sZXNzJyxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFNlbGVjdENvbXBvbmVudCksXHJcbiAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgfSxcclxuICBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2VsZWN0Q29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uSW5pdCB7XHJcbiAgcHVibGljIHNlYXJjaFZhbHVlOiBzdHJpbmcgPSAnJztcclxuICBwdWJsaWMgaXNPcGVuOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIG9yaWdpblNlbGVjdGVkOiBhbnkgfCBhbnlbXSA9IFtdO1xyXG4gIHB1YmxpYyBvcmlnaW5JdGVtczogU2VsZWN0SXRlbU1vZGVsW10gPSBbXTtcclxuICBwdWJsaWMgc2VsZWN0ZWQ6IFNlbGVjdEl0ZW1Nb2RlbFtdID0gW107XHJcbiAgcHVibGljIGlubmVySXRlbXM6IFNlbGVjdElubmVySXRlbU1vZGVsW10gPSBbXTtcclxuICBwdWJsaWMgZm9ybSA9IG5ldyBNcnhGb3JtVmFsaWRhdG9yKCk7XHJcbiAgcHVibGljIG1vZGVsID0ge1xyXG4gICAgbGFiZWw6ICcnLFxyXG4gIH1cclxuXHJcbiAgLy8gU0FWRSBTVEFURVxyXG4gIHB1YmxpYyB1dWlkOiBzdHJpbmcgPSB1dWlkdjQoKTtcclxuICBASW5wdXQoKSBwdWJsaWMgZmllbGRzOiBGaWVsZFtdID0gW107XHJcblxyXG4gIEBJbnB1dCgpIHNldCBpdGVtcyhpdGVtczogYW55W10pIHtcclxuICAgIHRoaXMub3JpZ2luSXRlbXMgPSBpdGVtcztcclxuICAgIHRoaXMudXBkYXRlU2VsZWN0ZWQodGhpcy5vcmlnaW5JdGVtcywgdGhpcy5vcmlnaW5TZWxlY3RlZClcclxuXHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBtdWx0aXBsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGlzTG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHNlYXJjaGFibGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBjbGVhcmFibGU6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIGNsb3NhYmxlOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBzaXplOiBTZWxlY3RTaXplVHlwZXMgPSAnbGFyZ2UnO1xyXG4gIEBJbnB1dCgpIGJpbmRWYWx1ZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcbiAgQElucHV0KCkgYmluZExhYmVsOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuICBASW5wdXQoKSBiaW5kSWNvbjogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcbiAgQElucHV0KCkgZW1wdHlUZXh0OiBzdHJpbmcgPSAn0J3QtSDQvdCw0LnQtNC10L3Qvic7XHJcbiAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZyA9ICfQktGL0LHQtdGA0LjRgtC1INC30L3QsNGH0LXQvdC40LUnO1xyXG4gIEBJbnB1dCgpIHNlYXJjaFBsYWNlaG9sZGVyOiBzdHJpbmcgPSAn0JLQstC10LTQuNGC0LUg0LfQvdCw0YfQtdC90LjQtSc7XHJcbiAgQElucHV0KCkgbXVsdGlDb2xsYXBzZUNvdW50OiBudW1iZXIgfCBudWxsID0gbnVsbDtcclxuICBASW5wdXQoKSBhZGRPcHRpb24hOiBBZGRPcHRpb25GbjtcclxuICBASW5wdXQoJ2lzRXh0cmFPcHRpb24nKSBvcHRpb25WYWxpZGF0aW9uOiB7IGxhYmVsOiB7IHJlcXVpcmVkOiBib29sZWFuLCBtaW5MZW5ndGg6IG51bWJlciB9IH0gfCBudWxsID0gbnVsbDtcclxuICBASW5wdXQoKSBleHRyYU9wdGlvblBsYWNlaG9sZGVyOiBzdHJpbmcgPSAn0JLQstC10LTQuNGC0LUg0LfQvdCw0YfQtdC90LjQtSc7XHJcbiAgQElucHV0KCkgdXNlOiAnZGVmYXVsdCcgfCAnbGluaycgPSAnZGVmYXVsdCc7XHJcbiAgQElucHV0KCkgc29ydEljb246ICdhc2MnIHwgJ2Rlc2MnIHwgbnVsbCA9IG51bGw7XHJcbiAgQElucHV0KCkgc29ydFBsYWNlaG9sZGVyOiBzdHJpbmcgPSAnJztcclxuXHJcbiAgQElucHV0KCkgcHVibGljIGRpc2FibGVkID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcHVibGljIHJlYWRvbmx5ID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpIHB1YmxpYyBpbnZhbGlkID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcHVibGljIGludmFsaWRNZXNzYWdlOiBzdHJpbmcgfCBzdHJpbmdbXSA9ICcnO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBjaGVja0ludmFsaWQ6IHRydWUgfCBmYWxzZSB8IG51bGwgPSBudWxsO1xyXG5cclxuICBASW5wdXQoKSBwb3B1cFBvc2l0aW9uOiBQb3NpdGlvblR5cGUgPSBQb3NpdGlvbkVudW0uQm90dG9tU3RhcnQ7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2Ryb3Bkb3duJykgZHJvcGRvd24hOiBQb3B1cENvbXBvbmVudDtcclxuXHJcbiAgQENvbnRlbnRDaGlsZCgnb3B0aW9uVGVtcGxhdGUnKSBvcHRpb25UZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPFRlbXBsYXRlT3V0cHV0TW9kZWw+O1xyXG4gIEBDb250ZW50Q2hpbGQoJ2xhYmVsVGVtcGxhdGUnKSBsYWJlbFRlbXBsYXRlITogVGVtcGxhdGVSZWY8VGVtcGxhdGVPdXRwdXRNb2RlbD47XHJcbiAgQENvbnRlbnRDaGlsZCgncG9wdXBIZWFkZXJUZW1wbGF0ZScpIHBvcHVwSGVhZGVyVGVtcGxhdGUhOiBUZW1wbGF0ZVJlZjxUZW1wbGF0ZU91dHB1dE1vZGVsPjtcclxuICBAQ29udGVudENoaWxkKCdwb3B1cEZvb3RlclRlbXBsYXRlJykgcG9wdXBGb290ZXJUZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPFRlbXBsYXRlT3V0cHV0TW9kZWw+O1xyXG4gIEBDb250ZW50Q2hpbGQoJ2NvbnRlbnRUZW1wbGF0ZScpIGNvbnRlbnRUZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gIEBPdXRwdXQoKSBwdWJsaWMgY2hhbmdlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCkgcHVibGljIG1vZGVsQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLm9wdGlvblZhbGlkYXRpb24pIHtcclxuICAgICAgdGhpcy5mb3JtLmluaXRGaWVsZHModGhpcy5tb2RlbCwgdGhpcy5vcHRpb25WYWxpZGF0aW9uKVxyXG4gICAgfVxyXG4gIH1cclxuICBwdWJsaWMgZ2V0IHJlYWRvbmx5Q2xhc3MoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLnJlYWRvbmx5ID8gJ21yeC1pbnB1dF9fcmVhZG9ubHknIDogJyc7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGNoZWNrVmFsaWRDbGFzc2VzKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5jaGVja0ludmFsaWQgPT09IGZhbHNlID9cclxuICAgICAgJ21yeC1pbnB1dC1jaGVja2VkLXN1Y2Nlc3MnIDpcclxuICAgICAgdGhpcy5jaGVja0ludmFsaWQgPT09IHRydWUgPyAnbXJ4LWlucHV0LWNoZWNrZWQtZXJyb3InIDogJyc7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGdldENsYXNzZXMoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBgJHtTZWxlY3RTaXplRW51bVt0aGlzLnNpemVdfSAke3RoaXMucmVhZG9ubHlDbGFzc30gJHt0aGlzLmNoZWNrVmFsaWRDbGFzc2VzfWA7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGdldFNlbGVjdGVkTGFiZWxzKCk6IFNlbGVjdElubmVySXRlbU1vZGVsW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuaW5uZXJJdGVtcy5maWx0ZXIoaSA9PiBpLl9fc2VsZWN0ZWQpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBmaWx0ZXJlZEl0ZW1zKCk6IFNlbGVjdElubmVySXRlbU1vZGVsW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuaW5uZXJJdGVtcy5maWx0ZXIoaSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLmJpbmRMYWJlbCkge1xyXG4gICAgICAgIHJldHVybiBTdHJpbmcoaVt0aGlzLmJpbmRMYWJlbF0pLmluY2x1ZGVzKHRoaXMuc2VhcmNoVmFsdWUpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiBTdHJpbmcoaSkuaW5jbHVkZXModGhpcy5zZWFyY2hWYWx1ZSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBpc0ludmFsaWRNZXNzYWdlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuICEhdGhpcy5pbnZhbGlkTWVzc2FnZSB8fCAhIXRoaXMuaW52YWxpZE1lc3NhZ2U/Lmxlbmd0aDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvblNlbGVjdChpdGVtOiBTZWxlY3RJbm5lckl0ZW1Nb2RlbCkge1xyXG4gICAgaWYgKCF0aGlzLm11bHRpcGxlKSB7XHJcbiAgICAgIGlmICh0aGlzLnVzZSA9PT0gJ2RlZmF1bHQnKSB7XHJcbiAgICAgICAgdGhpcy5pbm5lckl0ZW1zID0gdGhpcy5pbm5lckl0ZW1zLm1hcChpID0+IHtcclxuICAgICAgICAgIHJldHVybiB7Li4uaSwgX19zZWxlY3RlZDogaS5fX2lkID09PSBpdGVtLl9faWQgPyAhaS5fX3NlbGVjdGVkIDogZmFsc2V9O1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuaW5uZXJJdGVtcyA9IHRoaXMuaW5uZXJJdGVtcy5tYXAoaSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gey4uLmksIF9fc2VsZWN0ZWQ6IGkuX19pZCA9PT0gaXRlbS5fX2lkfTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG5cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuaW5uZXJJdGVtcyA9IHRoaXMuaW5uZXJJdGVtcy5tYXAoaSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHsuLi5pLCBfX3NlbGVjdGVkOiBpLl9faWQgPT09IGl0ZW0uX19pZCA/ICFpLl9fc2VsZWN0ZWQgOiBpLl9fc2VsZWN0ZWR9O1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmRyb3Bkb3duLnVwZGF0ZVBvcHVwKCk7XHJcblxyXG4gICAgdGhpcy51cGRhdGVWYWx1ZSh0aGlzLmlubmVySXRlbXMpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNsZWFySXRlbShpdGVtOiBTZWxlY3RJbm5lckl0ZW1Nb2RlbCkge1xyXG4gICAgdGhpcy5vblVuc2VsZWN0KGl0ZW0pXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25VbnNlbGVjdChpdGVtOiBTZWxlY3RJbm5lckl0ZW1Nb2RlbCkge1xyXG4gICAgdGhpcy5pbm5lckl0ZW1zLmZvckVhY2goaSA9PiB7XHJcbiAgICAgIGlmIChpLl9faWQgPT09IGl0ZW0uX19pZCkge1xyXG4gICAgICAgIGkuX19zZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLnVwZGF0ZVZhbHVlKHRoaXMuaW5uZXJJdGVtcyk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25PcGVuKGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuXHJcbiAgICBpZiAodGhpcy5pc09wZW4pIHtcclxuICAgICAgdGhpcy5kcm9wZG93bi50b2dnbGVQb3B1cChmYWxzZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmRyb3Bkb3duLnRvZ2dsZVBvcHVwKHRydWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uQ2xlYXIoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG5cclxuICAgIHRoaXMuaW5uZXJJdGVtcyA9IHRoaXMuaW5uZXJJdGVtcy5tYXAoaXRlbSA9PiAoey4uLml0ZW0sIF9fc2VsZWN0ZWQ6IGZhbHNlfSkpO1xyXG5cclxuICAgIHRoaXMuZHJvcGRvd24udG9nZ2xlUG9wdXAoZmFsc2UpO1xyXG5cclxuICAgIHRoaXMudXBkYXRlVmFsdWUoW10pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHRvZ2dsZVBvcHVwKGlzT3BlbjogYm9vbGVhbikge1xyXG4gICAgdGhpcy5pc09wZW4gPSBpc09wZW47XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0Q2xlYW5TZWxlY3RJdGVtKGl0ZW06IFNlbGVjdElubmVySXRlbU1vZGVsKSB7XHJcbiAgICByZXR1cm4gY2xlYW5TZWxlY3RJdGVtKGl0ZW0pXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXNPcHRpb24ob3B0aW9uOiBTZWxlY3RJbm5lckl0ZW1Nb2RlbCk6IFNlbGVjdElubmVySXRlbU1vZGVsIHtcclxuICAgIHJldHVybiBvcHRpb247XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXNMYWJlbChsYWJlbDogU2VsZWN0SW5uZXJJdGVtTW9kZWwpOiBTZWxlY3RJbm5lckl0ZW1Nb2RlbCB7XHJcbiAgICByZXR1cm4gbGFiZWw7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgd3JpdGVWYWx1ZShzZWxlY3RlZDogYW55IHwgYW55W10gPSBbXSk6IHZvaWQge1xyXG4gICAgaWYgKHNlbGVjdGVkKSB7XHJcbiAgICAgIHRoaXMub3JpZ2luU2VsZWN0ZWQgPSBzZWxlY3RlZFxyXG4gICAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkKHRoaXMub3JpZ2luSXRlbXMsIHRoaXMub3JpZ2luU2VsZWN0ZWQpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2hhbmdlVGV4dFZhbHVlRW1wdHkoKTogdm9pZCB7XHJcbiAgICB0aGlzLmZvcm0uaW5pdE1vZGVsQ2hhbmdlZCh0aGlzLm1vZGVsKVxyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uQWRkTmV3Q3VzdG9tT3B0aW9uKCkge1xyXG4gICAgaWYgKHRoaXMuZm9ybS5pc1ZhbGlkKCkpIHtcclxuICAgICAgdGhpcy5hZGRPcHRpb24odGhpcy5tb2RlbC5sYWJlbCk7XHJcbiAgICAgIHRoaXMubW9kZWwubGFiZWwgPSAnJztcclxuXHJcbiAgICAgIHRoaXMuY2hhbmdlVGV4dFZhbHVlRW1wdHkoKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVTZWxlY3RlZChpdGVtczogYW55W10gPSBbXSwgc2VsZWN0ZWQ6IGFueVtdID0gW10pIHtcclxuICAgIGlmICh0aGlzLm11bHRpcGxlICYmIEFycmF5LmlzQXJyYXkodGhpcy5vcmlnaW5TZWxlY3RlZCkpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZCA9IGdldElubmVyU2VsZWN0ZWQoaXRlbXMsIHNlbGVjdGVkLCB0aGlzLmJpbmRWYWx1ZSlcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWQgPSBnZXRJbm5lclNlbGVjdGVkKGl0ZW1zLCBbc2VsZWN0ZWRdLCB0aGlzLmJpbmRWYWx1ZSlcclxuICAgIH1cclxuICAgIHRoaXMuaW5uZXJJdGVtcyA9IGdldElubmVySXRlbXMoaXRlbXMsIHRoaXMuc2VsZWN0ZWQsIHRoaXMuYmluZFZhbHVlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlVmFsdWUoc2VsZWN0ZWRJdGVtczogU2VsZWN0SW5uZXJJdGVtTW9kZWxbXSkge1xyXG4gICAgY29uc3QgY2xlYXJlZFNlbGVjdGVkID0gZ2V0U2VsZWN0ZWRJdGVtcyhzZWxlY3RlZEl0ZW1zLCB0aGlzLmJpbmRWYWx1ZSk7XHJcbiAgICBjb25zdCBvdXRwdXRTZWxlY3RlZCA9IHRoaXMubXVsdGlwbGUgPyBjbGVhcmVkU2VsZWN0ZWQgOiBjbGVhcmVkU2VsZWN0ZWQubGVuZ3RoID8gY2xlYXJlZFNlbGVjdGVkWzBdIDogbnVsbDtcclxuXHJcbiAgICB0aGlzLmNoYW5nZWQuZW1pdChvdXRwdXRTZWxlY3RlZCk7XHJcbiAgICB0aGlzLm1vZGVsQ2hhbmdlLmVtaXQoe3ZhbHVlOiBvdXRwdXRTZWxlY3RlZCwgaWQ6IHRoaXMudXVpZH0pO1xyXG4gICAgdGhpcy5vbkNoYW5nZShvdXRwdXRTZWxlY3RlZCk7XHJcbiAgICB0aGlzLm9uVG91Y2hlZCgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvbkNoYW5nZSA9ICh2YWx1ZTogYW55KSA9PiB7XHJcbiAgfTtcclxuICBwcml2YXRlIG9uVG91Y2hlZCA9ICgpID0+IHtcclxuICB9O1xyXG5cclxuICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KSB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHt9KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2XHJcbiAgW2NsYXNzLi1kaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgW2NsYXNzLi1yZWFkb25seV09XCJyZWFkb25seVwiXHJcbiAgW2NsYXNzLm1yeC1pbnB1dC1lcnJvcl09XCJpbnZhbGlkXCJcclxuICBbY2xhc3NdPVwiZ2V0Q2xhc3Nlc1wiXHJcbiAgY2xhc3M9XCJtcngtc2VsZWN0XCJcclxuPlxyXG4gIDxkaXYgY2xhc3M9XCJtcngtc2VsZWN0X193cmFwcGVyXCI+XHJcbiAgICBAc3dpdGNoICh1c2UpIHtcclxuICAgICAgQGNhc2UgKCdkZWZhdWx0Jykge1xyXG4gICAgICAgIDxkaXYgW21yeFBvcHVwVHJpZ2dlcl09XCJkcm9wZG93blwiIFtwb3B1cFBvc2l0aW9uXT1cInBvcHVwUG9zaXRpb25cIiBjbGFzcz1cIm1yeC1zZWxlY3RfX2lucHV0XCI+XHJcbiAgICAgICAgICBAaWYgKGdldFNlbGVjdGVkTGFiZWxzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICBAaWYgKG11bHRpcGxlKSB7XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1yeC1zZWxlY3RfX2lucHV0X192YWx1ZXNcIj5cclxuICAgICAgICAgICAgICAgIEBpZiAobXVsdGlDb2xsYXBzZUNvdW50ICYmIGdldFNlbGVjdGVkTGFiZWxzLmxlbmd0aCA+PSBtdWx0aUNvbGxhcHNlQ291bnQpIHtcclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1yeC1zZWxlY3RfX2lucHV0X19iYWRnZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwPtCS0YvQsdGA0LDQvdC+OiB7eyBnZXRTZWxlY3RlZExhYmVscy5sZW5ndGggfX08L3A+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIEBpZiAoIWRpc2FibGVkICYmICFyZWFkb25seSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcngtaWNvbiBpY29uLWNsb3NlIGljb24tZm9udC0xNlwiIChjbGljayk9XCJvbkNsZWFyKCRldmVudClcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICBAZm9yIChpdGVtIG9mIGdldFNlbGVjdGVkTGFiZWxzOyB0cmFjayBpdGVtLl9faWQ7IGxldCBmaXJzdCA9ICRmaXJzdDsgbGV0IGxhc3QgPSAkbGFzdCkge1xyXG4gICAgICAgICAgICAgICAgICAgIEBpZiAobGFiZWxUZW1wbGF0ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJsYWJlbFRlbXBsYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntpdGVtOiBpdGVtLl9fb3JpZ2luLCBmaXJzdCwgbGFzdCwgY2xlYXI6IGNsZWFySXRlbX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJkZWZhdWx0TGFiZWxUZW1wbGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7aXRlbTogaXRlbS5fX29yaWdpbiwgZmlyc3QsIGxhc3R9XCJcclxuICAgICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1yeC1zZWxlY3RfX2lucHV0X192YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgQGZvciAoaXRlbSBvZiBnZXRTZWxlY3RlZExhYmVsczsgdHJhY2sgaXRlbS5fX2lkKSB7XHJcbiAgICAgICAgICAgICAgICAgIHt7IGJpbmRMYWJlbCA/IGl0ZW0uX19vcmlnaW5bYmluZExhYmVsXSA6IGl0ZW0uX19vcmlnaW5bJ2xhYmVsJ10gfHwgaXRlbS5fX29yaWdpbiB9fVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1yeC1zZWxlY3RfX2lucHV0X19wbGFjZWhvbGRlclwiPnt7IHBsYWNlaG9sZGVyIH19PC9kaXY+XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1yeC1zZWxlY3RfX2lucHV0X19jb250cm9sc1wiPlxyXG4gICAgICAgICAgICBAaWYgKGlzTG9hZGluZykge1xyXG4gICAgICAgICAgICAgIDxtcngtbG9hZGVyXHJcbiAgICAgICAgICAgICAgICBbc2l6ZV09XCJzaXplID09PSAnbGFyZ2UnID8gJ3NtYWxsJyA6ICdleHRyYS1zbWFsbCdcIlxyXG4gICAgICAgICAgICAgICAgW2NvbG9yXT1cIidicmFuZCdcIlxyXG4gICAgICAgICAgICAgID48L21yeC1sb2FkZXI+XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIEBpZiAoZ2V0U2VsZWN0ZWRMYWJlbHMubGVuZ3RoICYmIGNsZWFyYWJsZSkge1xyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcngtc2VsZWN0X19pbnB1dF9fY29udHJvbHMtLWl0ZW1cIiAoY2xpY2spPVwib25DbGVhcigkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm1yeC1pY29uIGljb24tY2xvc2VcIlxyXG4gICAgICAgICAgICAgICAgICBbY2xhc3MuaWNvbi1mb250LTI0XT1cInNpemUgPT09ICdsYXJnZSdcIlxyXG4gICAgICAgICAgICAgICAgICBbY2xhc3MuaWNvbi1mb250LTE2XT1cInNpemUgPT09ICdtZWRpdW0nXCJcclxuICAgICAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1yeC1zZWxlY3RfX2lucHV0X19jb250cm9scy0taXRlbVwiIChjbGljayk9XCJvbk9wZW4oJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICBbY2xhc3MuaWNvbi1jaGV2cm9uLWRvd25dPVwiIWlzT3BlblwiXHJcbiAgICAgICAgICAgICAgICBbY2xhc3MuaWNvbi1jaGV2cm9uLXVwXT1cImlzT3BlblwiXHJcbiAgICAgICAgICAgICAgICBbY2xhc3MuaWNvbi1mb250LTE2XT1cInNpemUgPT09ICdtZWRpdW0nXCJcclxuICAgICAgICAgICAgICAgIFtjbGFzcy5pY29uLWZvbnQtMjRdPVwic2l6ZSA9PT0gJ2xhcmdlJ1wiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm1yeC1pY29uXCJcclxuICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICB9XHJcbiAgICAgIEBjYXNlICgnbGluaycpIHtcclxuICAgICAgICA8ZGl2IFttcnhQb3B1cFRyaWdnZXJdPVwiZHJvcGRvd25cIiBbcG9wdXBQb3NpdGlvbl09XCJwb3B1cFBvc2l0aW9uXCIgY2xhc3M9XCJtcngtc2VsZWN0X19pbnB1dC1saW5rXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibXJ4LXNlbGVjdF9faW5wdXQtbGlua19fY29udHJvbHNcIj5cclxuICAgICAgICAgICAgQGlmIChzb3J0UGxhY2Vob2xkZXIpIHtcclxuICAgICAgICAgICAgICA8cD57eyBzb3J0UGxhY2Vob2xkZXIgfX08L3A+XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIEBpZiAoc29ydEljb24pIHtcclxuICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgW2NsYXNzLmljb24tZm9udC0xNl09XCJzaXplID09PSAnbWVkaXVtJ1wiXHJcbiAgICAgICAgICAgICAgICBbY2xhc3MuaWNvbi1mb250LTI0XT1cInNpemUgPT09ICdsYXJnZSdcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJtcngtaWNvbiB7e3NvcnRJY29uID09PSAnYXNjJyA/ICdpY29uLXNvcnRpbmctdXAnIDogJ2ljb24tc29ydGluZy1kb3duJ319XCJcclxuICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibXJ4LXNlbGVjdF9faW5wdXQtbGlua19fY29udHJvbHNcIj5cclxuICAgICAgICAgICAgQGlmIChnZXRTZWxlY3RlZExhYmVscy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXJ4LXNlbGVjdF9faW5wdXQtbGlua19fdmFsdWVcIj5cclxuICAgICAgICAgICAgICAgIEBmb3IgKGl0ZW0gb2YgZ2V0U2VsZWN0ZWRMYWJlbHM7IHRyYWNrIGl0ZW0uX19pZCkge1xyXG4gICAgICAgICAgICAgICAgICB7eyBiaW5kTGFiZWwgPyBpdGVtLl9fb3JpZ2luW2JpbmRMYWJlbF0gOiBpdGVtLl9fb3JpZ2luWydsYWJlbCddIHx8IGl0ZW0uX19vcmlnaW4gfX1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1yeC1zZWxlY3RfX2lucHV0X19jb250cm9scy0taXRlbVwiIChjbGljayk9XCJvbk9wZW4oJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgIFtjbGFzcy5pY29uLWNoZXZyb24tZG93bl09XCIhaXNPcGVuXCJcclxuICAgICAgICAgICAgICBbY2xhc3MuaWNvbi1jaGV2cm9uLXVwXT1cImlzT3BlblwiXHJcbiAgICAgICAgICAgICAgW2NsYXNzLmljb24tZm9udC0xNl09XCJzaXplID09PSAnbWVkaXVtJ1wiXHJcbiAgICAgICAgICAgICAgW2NsYXNzLmljb24tZm9udC0yNF09XCJzaXplID09PSAnbGFyZ2UnXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cIm1yeC1pY29uXCJcclxuICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIDxtcngtcG9wdXAgI2Ryb3Bkb3duIFtjbG9zZUFmdGVyQ2xpY2tdPVwiY2xvc2FibGVcIiAodG9nZ2xlKT1cInRvZ2dsZVBvcHVwKCRldmVudClcIj5cclxuICAgICAgQGZvciAoaXRlbSBvZiBmaWx0ZXJlZEl0ZW1zOyB0cmFjayBpdGVtLl9faWQ7IGxldCBmaXJzdCA9ICRmaXJzdDsgbGV0IGxhc3QgPSAkbGFzdCkge1xyXG4gICAgICAgIDxtcngtcG9wdXAtaXRlbSBbY3VzdG9tXT1cInRydWVcIiBbaWRdPVwiaXRlbS5fX2lkXCIgKGNsaWNrZWQpPVwib25TZWxlY3QoaXRlbSlcIj5cclxuICAgICAgICAgIEBpZiAob3B0aW9uVGVtcGxhdGUpIHtcclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm9wdGlvblRlbXBsYXRlXCJcclxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie2l0ZW06IGl0ZW0uX19vcmlnaW4sIGZpcnN0LCBsYXN0fVwiXHJcbiAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiZGVmYXVsdE9wdGlvblRlbXBsYXRlXCJcclxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie2l0ZW06IGl0ZW0uX19vcmlnaW4sIGZpcnN0LCBsYXN0fVwiXHJcbiAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIH1cclxuICAgICAgICA8L21yeC1wb3B1cC1pdGVtPlxyXG4gICAgICB9IEBlbXB0eSB7XHJcbiAgICAgICAgPG1yeC1wb3B1cC1pdGVtIFtjdXN0b21dPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1yeC1zZWxlY3RfX2Ryb3Bkb3duX19lbXB0eVwiPnt7IGVtcHR5VGV4dCB9fTwvZGl2PlxyXG4gICAgICAgIDwvbXJ4LXBvcHVwLWl0ZW0+XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIDxuZy10ZW1wbGF0ZSAjaGVhZGVyVGVtcGxhdGU+XHJcbiAgICAgICAgQGlmIChzZWFyY2hhYmxlKSB7XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibXJ4LXNlbGVjdF9fZHJvcGRvd25fX3NlYXJjaFwiPlxyXG4gICAgICAgICAgICA8bXJ4LWlucHV0LXRleHRcclxuICAgICAgICAgICAgICBbc2l6ZV09XCInbWVkaXVtJ1wiXHJcbiAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInNlYXJjaFBsYWNlaG9sZGVyXCJcclxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlYXJjaFZhbHVlXCJcclxuICAgICAgICAgICAgPjwvbXJ4LWlucHV0LXRleHQ+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIEBpZiAoY29udGVudFRlbXBsYXRlKSB7XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udGVudFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBAaWYgKHBvcHVwSGVhZGVyVGVtcGxhdGUpIHtcclxuICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwicG9wdXBIZWFkZXJUZW1wbGF0ZVwiXHJcbiAgICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgfVxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgPG5nLXRlbXBsYXRlICNmb290ZXJUZW1wbGF0ZT5cclxuICAgICAgICBAaWYgKCEhYWRkT3B0aW9uKSB7XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibXJ4LXNlbGVjdF9fZHJvcGRvd25fX2V4dHJhLW9wdGlvblwiPlxyXG4gICAgICAgICAgICA8bXJ4LWlucHV0LXRleHRcclxuICAgICAgICAgICAgICBjbGFzcz1cImZsZXgtZ3Jvdy0xXCJcclxuICAgICAgICAgICAgICBbc2l6ZV09XCInbWVkaXVtJ1wiXHJcbiAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImV4dHJhT3B0aW9uUGxhY2Vob2xkZXJcIlxyXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwibW9kZWwubGFiZWxcIlxyXG4gICAgICAgICAgICAgIFttYXhsZW5ndGhdPVwiMzAwXCJcclxuICAgICAgICAgICAgICBbaW52YWxpZF09XCIhIWZvcm0uZXJyb3JzWydsYWJlbCddXCJcclxuICAgICAgICAgICAgICBbaW52YWxpZE1lc3NhZ2VdPVwiZm9ybS5lcnJvcnNbJ2xhYmVsJ11cIlxyXG4gICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImNoYW5nZVRleHRWYWx1ZUVtcHR5KClcIlxyXG4gICAgICAgICAgICA+PC9tcngtaW5wdXQtdGV4dD5cclxuICAgICAgICAgICAgPG1yeC1idXR0b25cclxuICAgICAgICAgICAgICBbaWNvbk9ubHldPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgaWNvbj1cIjxzcGFuIGNsYXNzPSdtcngtaWNvbiBpY29uLXBsdXMgaWNvbi1mb250LTI0Jz48L3NwYW4+XCJcclxuICAgICAgICAgICAgICBzaXplPVwibWVkaXVtXCJcclxuICAgICAgICAgICAgICB0eXBlPVwic2Vjb25kYXJ5XCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwib25BZGROZXdDdXN0b21PcHRpb24oKVwiXHJcbiAgICAgICAgICAgID48L21yeC1idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIEBpZiAocG9wdXBGb290ZXJUZW1wbGF0ZSkge1xyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJwb3B1cEZvb3RlclRlbXBsYXRlXCJcclxuICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICB9XHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8L21yeC1wb3B1cD5cclxuICA8L2Rpdj5cclxuXHJcbiAgQGlmIChpbnZhbGlkICYmIGlzSW52YWxpZE1lc3NhZ2UpIHtcclxuICAgIDxtcngtZXJyb3ItbWVzc2FnZSBbaW52YWxpZE1lc3NhZ2VdPVwiaW52YWxpZE1lc3NhZ2VcIj48L21yeC1lcnJvci1tZXNzYWdlPlxyXG4gIH1cclxuXHJcbiAgPG1yeC1zYXZlLXN0YXRlIFtmaWVsZHNdPVwiZmllbGRzXCIgW2lkXT1cInV1aWRcIiBbdHlwZV09XCInaW5wdXQnXCI+PC9tcngtc2F2ZS1zdGF0ZT5cclxuPC9kaXY+XHJcblxyXG48bmctdGVtcGxhdGUgI2RlZmF1bHRMYWJlbFRlbXBsYXRlIGxldC1pdGVtPVwiaXRlbVwiPlxyXG4gIEBpZiAoYXNMYWJlbChpdGVtKTsgYXMgbGFiZWwpIHtcclxuICAgIDxkaXYgY2xhc3M9XCJtcngtc2VsZWN0X19pbnB1dF9fYmFkZ2VcIj5cclxuICAgICAgPHA+e3sgYmluZExhYmVsID8gbGFiZWxbYmluZExhYmVsXSA6IGxhYmVsWydsYWJlbCddIHx8IGxhYmVsIH19PC9wPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cIm1yeC1pY29uIGljb24tY2xvc2UgaWNvbi1mb250LTE2XCIgKGNsaWNrKT1cIm9uVW5zZWxlY3QobGFiZWwpXCI+PC9zcGFuPlxyXG4gICAgPC9kaXY+XHJcbiAgfVxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNkZWZhdWx0T3B0aW9uVGVtcGxhdGUgbGV0LWl0ZW09XCJpdGVtXCI+XHJcbiAgQGlmIChhc09wdGlvbihpdGVtKTsgYXMgb3B0aW9uKSB7XHJcbiAgICA8ZGl2IGNsYXNzPVwibXJ4LXNlbGVjdF9fZHJvcGRvd25fX2l0ZW1cIj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1yeC1zZWxlY3RfX2Ryb3Bkb3duX19pdGVtLS1jb250ZW50XCI+XHJcbiAgICAgICAgQGlmIChiaW5kSWNvbiAmJiBvcHRpb25bYmluZEljb25dKSB7XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1yeC1pY29uIGljb24tZm9udC0yNFwiIFtjbGFzc109XCJvcHRpb25bYmluZEljb25dXCI+PC9zcGFuPlxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgPHA+e3sgYmluZExhYmVsID8gb3B0aW9uW2JpbmRMYWJlbF0gOiBvcHRpb25bJ2xhYmVsJ10gfHwgb3B0aW9uIH19PC9wPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIEBpZiAob3B0aW9uLl9fc2VsZWN0ZWQpIHtcclxuICAgICAgICA8c3BhbiBjbGFzcz1cIm1yeC1pY29uIGljb24tY2hlY2sgaWNvbi1mb250LTI0XCI+PC9zcGFuPlxyXG4gICAgICB9XHJcbiAgICA8L2Rpdj5cclxuICB9XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==