@elite.framework/ng.ui.core 1.0.76 → 1.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.
@@ -1 +1 @@
1
- {"version":3,"file":"elite.framework-ng.ui.core-generic-search-advanced.mjs","sources":["../tmp-esm2022/generic-search-advanced/lib/generic-search-advanced-module.js","../tmp-esm2022/generic-search-advanced/lib/query-builder.service.js","../tmp-esm2022/generic-search-advanced/lib/query-builder.component.js","../tmp-esm2022/generic-search-advanced/lib/sort-builder.component.js","../tmp-esm2022/generic-search-advanced/lib/generic-search-advanced.js","../tmp-esm2022/generic-search-advanced/elite.framework-ng.ui.core-generic-search-advanced.js"],"sourcesContent":["import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport * as i0 from \"@angular/core\";\nexport class GenericSearchAdvancedModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericSearchAdvancedModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericSearchAdvancedModule, imports: [CommonModule] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericSearchAdvancedModule, imports: [CommonModule] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericSearchAdvancedModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1zZWFyY2gtYWR2YW5jZWQtbW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZy51aS5jb3JlL2dlbmVyaWMtc2VhcmNoLWFkdmFuY2VkL3NyYy9saWIvZ2VuZXJpYy1zZWFyY2gtYWR2YW5jZWQtbW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQUsvQyxNQUFNLE9BQU8sMkJBQTJCO3VHQUEzQiwyQkFBMkI7d0dBQTNCLDJCQUEyQixZQUY1QixZQUFZO3dHQUVYLDJCQUEyQixZQUY1QixZQUFZOzsyRkFFWCwyQkFBMkI7a0JBSHZDLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO2lCQUN4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgR2VuZXJpY1NlYXJjaEFkdmFuY2VkTW9kdWxlIHt9XG4iXX0=","// query-builder.service.ts\nimport { Injectable } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class QueryBuilderService {\n buildQueryUIFields(fields) {\n return [\n {\n key: 'quickSearch',\n type: 'input',\n props: {\n label: 'بحث سريع',\n placeholder: 'ابحث في جميع الحقول...',\n icon: 'pi pi-search'\n }\n },\n {\n key: 'advancedFilters',\n type: 'query-builder',\n props: {\n label: 'مرشحات متقدمة',\n fields: this.extractFilterableFields(fields)\n }\n },\n {\n key: 'sorting',\n type: 'sort-builder',\n props: {\n label: 'ترتيب النتائج',\n fields: this.extractSortableFields(fields)\n }\n },\n {\n key: 'pagination',\n type: 'group',\n props: { label: 'التقسيم الصفحي' },\n fieldGroup: [\n {\n key: 'top',\n type: 'input',\n props: {\n type: 'number',\n label: 'عدد السجلات',\n min: 1,\n max: 1000,\n description: 'أقصى عدد للسجلات المراد عرضها'\n }\n },\n {\n key: 'skip',\n type: 'input',\n props: {\n type: 'number',\n label: 'تخطي السجلات',\n min: 0,\n description: 'عدد السجلات التي سيتم تخطيها'\n }\n }\n ]\n },\n {\n key: 'expand',\n type: 'multiselect',\n props: {\n label: 'توسيع الحقول',\n options: this.extractExpandableFields(fields),\n placeholder: 'اختر الحقول للتوسيع'\n }\n }\n ];\n }\n extractFilterableFields(fields) {\n const filterableFields = [];\n this.traverseFields(fields, (field) => {\n if (field.key && field.props && field.props['filterable'] !== false && !field.props?.hidden) {\n filterableFields.push({\n key: field.key,\n label: field.props.label || field.key,\n type: this.mapFieldType(field.type),\n operators: this.getOperatorsForType(field.type)\n });\n }\n });\n return filterableFields;\n }\n extractSortableFields(fields) {\n const sortableFields = [];\n this.traverseFields(fields, (field) => {\n if (field.key && field.props && field.props['sortable'] !== false && !field.props?.hidden) {\n sortableFields.push({\n key: field.key,\n label: field.props.label || field.key\n });\n }\n });\n return sortableFields;\n }\n extractExpandableFields(fields) {\n const expandableFields = [];\n this.traverseFields(fields, (field) => {\n if (field.key && field.props && field.props['expandable'] && !field.props?.hidden) {\n expandableFields.push({\n label: field.props.label || field.key,\n value: field.key\n });\n }\n });\n return expandableFields;\n }\n traverseFields(fields, callback) {\n fields.forEach(field => {\n callback(field);\n if (field.fieldGroup) {\n this.traverseFields(field.fieldGroup, callback);\n }\n if (field.fieldGroup) {\n this.traverseFields(field.fieldGroup ?? [], callback);\n }\n });\n }\n mapFieldType(type) {\n const typeMap = {\n 'input': 'string',\n 'number': 'number',\n 'datepicker': 'date',\n 'select': 'string',\n 'checkbox': 'boolean',\n 'radio': 'string',\n 'textarea': 'string'\n };\n return typeMap[type || 'input'] || 'string';\n }\n getOperatorsForType(type) {\n const operatorsMap = {\n 'string': ['eq', 'ne', 'contains', 'startswith', 'endswith'],\n 'number': ['eq', 'ne', 'gt', 'ge', 'lt', 'le'],\n 'date': ['eq', 'ne', 'gt', 'ge', 'lt', 'le'],\n 'boolean': ['eq', 'ne']\n };\n return operatorsMap[this.mapFieldType(type)] || ['eq', 'ne'];\n }\n buildODataFromQueryModel(model, originalFields) {\n const params = {\n filters: [],\n orderBy: [],\n groupBy: [],\n expand: model.expand || []\n };\n // Quick search\n if (model.quickSearch) {\n const searchableFields = this.extractFilterableFields(originalFields);\n searchableFields.forEach(field => {\n params.filters.push({\n field: field.key,\n operator: 'contains',\n value: model.quickSearch,\n logicalOperator: 'or'\n });\n });\n }\n // Advanced filters\n if (model.advancedFilters && Array.isArray(model.advancedFilters)) {\n model.advancedFilters.forEach((filter) => {\n if (filter.field && filter.operator && filter.value !== undefined && filter.value !== '') {\n params.filters.push({\n field: filter.field,\n operator: filter.operator,\n value: filter.value,\n logicalOperator: 'and'\n });\n }\n });\n }\n // Sorting\n if (model.sorting && Array.isArray(model.sorting)) {\n model.sorting.forEach((sort) => {\n if (sort.field && sort.direction) {\n params.orderBy.push({\n field: sort.field,\n direction: sort.direction\n });\n }\n });\n }\n // Pagination\n if (model.pagination) {\n if (model.pagination.top) {\n params.top = Number(model.pagination.top);\n }\n if (model.pagination.skip) {\n params.skip = Number(model.pagination.skip);\n }\n }\n return params;\n }\n toODataQueryString(params) {\n const queryParts = [];\n // Filters\n if (params.filters.length > 0) {\n const filterGroups = {};\n params.filters.forEach(filter => {\n const logicalOp = filter.logicalOperator || 'and';\n if (!filterGroups[logicalOp]) {\n filterGroups[logicalOp] = [];\n }\n filterGroups[logicalOp].push(`${filter.field} ${filter.operator} ${this.formatODataValue(filter.value)}`);\n });\n let filterString = '';\n Object.keys(filterGroups).forEach((op, index) => {\n if (index > 0)\n filterString += ' and ';\n if (filterGroups[op].length > 1) {\n filterString += `(${filterGroups[op].join(` ${op} `)})`;\n }\n else {\n filterString += filterGroups[op][0];\n }\n });\n queryParts.push(`$filter=${encodeURIComponent(filterString)}`);\n }\n // Order by\n if (params.orderBy.length > 0) {\n const orderByString = params.orderBy.map(order => `${order.field} ${order.direction}`).join(',');\n queryParts.push(`$orderby=${encodeURIComponent(orderByString)}`);\n }\n // Expand\n if (params.expand && params.expand.length > 0) {\n queryParts.push(`$expand=${encodeURIComponent(params.expand.join(','))}`);\n }\n // Top\n if (params.top) {\n queryParts.push(`$top=${params.top}`);\n }\n // Skip\n if (params.skip) {\n queryParts.push(`$skip=${params.skip}`);\n }\n return queryParts.length > 0 ? '?' + queryParts.join('&') : '';\n }\n formatODataValue(value) {\n if (typeof value === 'string') {\n return `'${value.replace(/'/g, \"''\")}'`;\n }\n else if (value instanceof Date) {\n return `'${value.toISOString()}'`;\n }\n else if (typeof value === 'boolean') {\n return value.toString();\n }\n return value;\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: QueryBuilderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: QueryBuilderService, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: QueryBuilderService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktYnVpbGRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZy51aS5jb3JlL2dlbmVyaWMtc2VhcmNoLWFkdmFuY2VkL3NyYy9saWIvcXVlcnktYnVpbGRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDJCQUEyQjtBQUMzQixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQU8zQyxNQUFNLE9BQU8sbUJBQW1CO0lBRTlCLGtCQUFrQixDQUFDLE1BQTJCO1FBQzVDLE9BQU87WUFDTDtnQkFDRSxHQUFHLEVBQUUsYUFBYTtnQkFDbEIsSUFBSSxFQUFFLE9BQU87Z0JBQ2IsS0FBSyxFQUFFO29CQUNMLEtBQUssRUFBRSxVQUFVO29CQUNqQixXQUFXLEVBQUUsd0JBQXdCO29CQUNyQyxJQUFJLEVBQUUsY0FBYztpQkFDckI7YUFDRjtZQUNEO2dCQUNFLEdBQUcsRUFBRSxpQkFBaUI7Z0JBQ3RCLElBQUksRUFBRSxlQUFlO2dCQUNyQixLQUFLLEVBQUU7b0JBQ0wsS0FBSyxFQUFFLGVBQWU7b0JBQ3RCLE1BQU0sRUFBRSxJQUFJLENBQUMsdUJBQXVCLENBQUMsTUFBTSxDQUFDO2lCQUM3QzthQUNGO1lBQ0Q7Z0JBQ0UsR0FBRyxFQUFFLFNBQVM7Z0JBQ2QsSUFBSSxFQUFFLGNBQWM7Z0JBQ3BCLEtBQUssRUFBRTtvQkFDTCxLQUFLLEVBQUUsZUFBZTtvQkFDdEIsTUFBTSxFQUFFLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLENBQUM7aUJBQzNDO2FBQ0Y7WUFDRDtnQkFDRSxHQUFHLEVBQUUsWUFBWTtnQkFDakIsSUFBSSxFQUFFLE9BQU87Z0JBQ2IsS0FBSyxFQUFFLEVBQUUsS0FBSyxFQUFFLGdCQUFnQixFQUFFO2dCQUNsQyxVQUFVLEVBQUU7b0JBQ1Y7d0JBQ0UsR0FBRyxFQUFFLEtBQUs7d0JBQ1YsSUFBSSxFQUFFLE9BQU87d0JBQ2IsS0FBSyxFQUFFOzRCQUNMLElBQUksRUFBRSxRQUFROzRCQUNkLEtBQUssRUFBRSxhQUFhOzRCQUNwQixHQUFHLEVBQUUsQ0FBQzs0QkFDTixHQUFHLEVBQUUsSUFBSTs0QkFDVCxXQUFXLEVBQUUsK0JBQStCO3lCQUM3QztxQkFDRjtvQkFDRDt3QkFDRSxHQUFHLEVBQUUsTUFBTTt3QkFDWCxJQUFJLEVBQUUsT0FBTzt3QkFDYixLQUFLLEVBQUU7NEJBQ0wsSUFBSSxFQUFFLFFBQVE7NEJBQ2QsS0FBSyxFQUFFLGNBQWM7NEJBQ3JCLEdBQUcsRUFBRSxDQUFDOzRCQUNOLFdBQVcsRUFBRSw4QkFBOEI7eUJBQzVDO3FCQUNGO2lCQUNGO2FBQ0Y7WUFDRDtnQkFDRSxHQUFHLEVBQUUsUUFBUTtnQkFDYixJQUFJLEVBQUUsYUFBYTtnQkFDbkIsS0FBSyxFQUFFO29CQUNMLEtBQUssRUFBRSxjQUFjO29CQUNyQixPQUFPLEVBQUUsSUFBSSxDQUFDLHVCQUF1QixDQUFDLE1BQU0sQ0FBQztvQkFDN0MsV0FBVyxFQUFFLHFCQUFxQjtpQkFDbkM7YUFDRjtTQUNGLENBQUM7SUFDSixDQUFDO0lBRU8sdUJBQXVCLENBQUMsTUFBMkI7UUFDekQsTUFBTSxnQkFBZ0IsR0FBd0IsRUFBRSxDQUFDO1FBRWpELElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDcEMsSUFBSSxLQUFLLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxDQUFDO2dCQUM1RixnQkFBZ0IsQ0FBQyxJQUFJLENBQUM7b0JBQ3BCLEdBQUcsRUFBRSxLQUFLLENBQUMsR0FBRztvQkFDZCxLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLEdBQUc7b0JBQ3JDLElBQUksRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxJQUFjLENBQUM7b0JBQzdDLFNBQVMsRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLElBQWMsQ0FBQztpQkFDMUQsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxnQkFBZ0IsQ0FBQztJQUMxQixDQUFDO0lBRU8scUJBQXFCLENBQUMsTUFBMkI7UUFDdkQsTUFBTSxjQUFjLEdBQXVCLEVBQUUsQ0FBQztRQUU5QyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ3BDLElBQUksS0FBSyxDQUFDLEdBQUcsSUFBSSxLQUFLLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQztnQkFDMUYsY0FBYyxDQUFDLElBQUksQ0FBQztvQkFDbEIsR0FBRyxFQUFFLEtBQUssQ0FBQyxHQUFhO29CQUN4QixLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLEdBQWE7aUJBQ2hELENBQUMsQ0FBQztZQUNMLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sY0FBYyxDQUFDO0lBQ3hCLENBQUM7SUFFTyx1QkFBdUIsQ0FBQyxNQUEyQjtRQUN6RCxNQUFNLGdCQUFnQixHQUFVLEVBQUUsQ0FBQztRQUVuQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ3BDLElBQUksS0FBSyxDQUFDLEdBQUcsSUFBSSxLQUFLLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxDQUFDO2dCQUNsRixnQkFBZ0IsQ0FBQyxJQUFJLENBQUM7b0JBQ3BCLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsR0FBRztvQkFDckMsS0FBSyxFQUFFLEtBQUssQ0FBQyxHQUFHO2lCQUNqQixDQUFDLENBQUM7WUFDTCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLGdCQUFnQixDQUFDO0lBQzFCLENBQUM7SUFFTyxjQUFjLENBQUMsTUFBMkIsRUFBRSxRQUE0QztRQUM5RixNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3JCLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUVoQixJQUFJLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDckIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQ2xELENBQUM7WUFFRCxJQUFJLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDckIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsVUFBVSxJQUFHLEVBQUUsRUFBRSxRQUFRLENBQUMsQ0FBQztZQUN2RCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sWUFBWSxDQUFDLElBQWE7UUFDaEMsTUFBTSxPQUFPLEdBQThCO1lBQ3pDLE9BQU8sRUFBRSxRQUFRO1lBQ2pCLFFBQVEsRUFBRSxRQUFRO1lBQ2xCLFlBQVksRUFBRSxNQUFNO1lBQ3BCLFFBQVEsRUFBRSxRQUFRO1lBQ2xCLFVBQVUsRUFBRSxTQUFTO1lBQ3JCLE9BQU8sRUFBRSxRQUFRO1lBQ2pCLFVBQVUsRUFBRSxRQUFRO1NBQ3JCLENBQUM7UUFFRixPQUFPLE9BQU8sQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLElBQUksUUFBUSxDQUFDO0lBQzlDLENBQUM7SUFFTyxtQkFBbUIsQ0FBQyxJQUFhO1FBQ3ZDLE1BQU0sWUFBWSxHQUFnQztZQUNoRCxRQUFRLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsVUFBVSxDQUFDO1lBQzVELFFBQVEsRUFBRSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDO1lBQzlDLE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDO1lBQzVDLFNBQVMsRUFBRSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUM7U0FDeEIsQ0FBQztRQUVGLE9BQU8sWUFBWSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRUQsd0JBQXdCLENBQUMsS0FBVSxFQUFFLGNBQW1DO1FBQ3RFLE1BQU0sTUFBTSxHQUF5QjtZQUNuQyxPQUFPLEVBQUUsRUFBRTtZQUNYLE9BQU8sRUFBRSxFQUFFO1lBQ1gsT0FBTyxFQUFFLEVBQUU7WUFDWCxNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU0sSUFBSSxFQUFFO1NBQzNCLENBQUM7UUFFRixlQUFlO1FBQ2YsSUFBSSxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDdEIsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDdEUsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUMvQixNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztvQkFDbEIsS0FBSyxFQUFFLEtBQUssQ0FBQyxHQUFHO29CQUNoQixRQUFRLEVBQUUsVUFBVTtvQkFDcEIsS0FBSyxFQUFFLEtBQUssQ0FBQyxXQUFXO29CQUN4QixlQUFlLEVBQUUsSUFBSTtpQkFDdEIsQ0FBQyxDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO1FBRUQsbUJBQW1CO1FBQ25CLElBQUksS0FBSyxDQUFDLGVBQWUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDO1lBQ2xFLEtBQUssQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBVyxFQUFFLEVBQUU7Z0JBQzVDLElBQUksTUFBTSxDQUFDLEtBQUssSUFBSSxNQUFNLENBQUMsUUFBUSxJQUFJLE1BQU0sQ0FBQyxLQUFLLEtBQUssU0FBUyxJQUFJLE1BQU0sQ0FBQyxLQUFLLEtBQUssRUFBRSxFQUFFLENBQUM7b0JBQ3pGLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO3dCQUNsQixLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUs7d0JBQ25CLFFBQVEsRUFBRSxNQUFNLENBQUMsUUFBUTt3QkFDekIsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLO3dCQUNuQixlQUFlLEVBQUUsS0FBSztxQkFDdkIsQ0FBQyxDQUFDO2dCQUNMLENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxVQUFVO1FBQ1YsSUFBSSxLQUFLLENBQUMsT0FBTyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDbEQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRTtnQkFDbEMsSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztvQkFDakMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7d0JBQ2xCLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSzt3QkFDakIsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO3FCQUMxQixDQUFDLENBQUM7Z0JBQ0wsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELGFBQWE7UUFDYixJQUFJLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNyQixJQUFJLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQ3pCLE1BQU0sQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDNUMsQ0FBQztZQUNELElBQUksS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDMUIsTUFBTSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM5QyxDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxNQUE0QjtRQUM3QyxNQUFNLFVBQVUsR0FBYSxFQUFFLENBQUM7UUFFaEMsVUFBVTtRQUNWLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDOUIsTUFBTSxZQUFZLEdBQWdDLEVBQUUsQ0FBQztZQUVyRCxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTtnQkFDOUIsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLGVBQWUsSUFBSSxLQUFLLENBQUM7Z0JBQ2xELElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztvQkFDN0IsWUFBWSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDL0IsQ0FBQztnQkFDRCxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUMxQixHQUFHLE1BQU0sQ0FBQyxLQUFLLElBQUksTUFBTSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQzVFLENBQUM7WUFDSixDQUFDLENBQUMsQ0FBQztZQUVILElBQUksWUFBWSxHQUFHLEVBQUUsQ0FBQztZQUN0QixNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRTtnQkFDOUMsSUFBSSxLQUFLLEdBQUcsQ0FBQztvQkFBRSxZQUFZLElBQUksT0FBTyxDQUFDO2dCQUN2QyxJQUFJLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7b0JBQ2hDLFlBQVksSUFBSSxJQUFJLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUM7Z0JBQzFELENBQUM7cUJBQU0sQ0FBQztvQkFDTixZQUFZLElBQUksWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN0QyxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFFSCxVQUFVLENBQUMsSUFBSSxDQUFDLFdBQVcsa0JBQWtCLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2pFLENBQUM7UUFFRCxXQUFXO1FBQ1gsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUM5QixNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUMvQyxHQUFHLEtBQUssQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLFNBQVMsRUFBRSxDQUNwQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNaLFVBQVUsQ0FBQyxJQUFJLENBQUMsWUFBWSxrQkFBa0IsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbkUsQ0FBQztRQUVELFNBQVM7UUFDVCxJQUFJLE1BQU0sQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDOUMsVUFBVSxDQUFDLElBQUksQ0FBQyxXQUFXLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzVFLENBQUM7UUFFRCxNQUFNO1FBQ04sSUFBSSxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDZixVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDeEMsQ0FBQztRQUVELE9BQU87UUFDUCxJQUFJLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNoQixVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDMUMsQ0FBQztRQUVELE9BQU8sVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDakUsQ0FBQztJQUVPLGdCQUFnQixDQUFDLEtBQVU7UUFDakMsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUM5QixPQUFPLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQztRQUMxQyxDQUFDO2FBQU0sSUFBSSxLQUFLLFlBQVksSUFBSSxFQUFFLENBQUM7WUFDakMsT0FBTyxJQUFJLEtBQUssQ0FBQyxXQUFXLEVBQUUsR0FBRyxDQUFDO1FBQ3BDLENBQUM7YUFBTSxJQUFJLE9BQU8sS0FBSyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3RDLE9BQU8sS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzFCLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7dUdBeFJVLG1CQUFtQjsyR0FBbkIsbUJBQW1CLGNBRmxCLE1BQU07OzJGQUVQLG1CQUFtQjtrQkFIL0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBxdWVyeS1idWlsZGVyLnNlcnZpY2UudHNcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtbHlGaWVsZENvbmZpZyB9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xyXG5pbXBvcnQgeyBGaWx0ZXJDb25kaXRpb24sIE9yZGVyQnlDbGF1c2UsIE9EYXRhUXVlcnlQYXJhbWV0ZXJzLCBRdWVyeUJ1aWxkZXJGaWVsZCwgU29ydEJ1aWxkZXJGaWVsZCB9IGZyb20gJy4vaW50ZXJmYWNlcyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBRdWVyeUJ1aWxkZXJTZXJ2aWNlIHtcclxuXHJcbiAgYnVpbGRRdWVyeVVJRmllbGRzKGZpZWxkczogRm9ybWx5RmllbGRDb25maWdbXSk6IEZvcm1seUZpZWxkQ29uZmlnW10ge1xyXG4gICAgcmV0dXJuIFtcclxuICAgICAge1xyXG4gICAgICAgIGtleTogJ3F1aWNrU2VhcmNoJyxcclxuICAgICAgICB0eXBlOiAnaW5wdXQnLFxyXG4gICAgICAgIHByb3BzOiB7XHJcbiAgICAgICAgICBsYWJlbDogJ9io2K3YqyDYs9ix2YrYuScsXHJcbiAgICAgICAgICBwbGFjZWhvbGRlcjogJ9in2KjYrdirINmB2Yog2KzZhdmK2Lkg2KfZhNit2YLZiNmELi4uJyxcclxuICAgICAgICAgIGljb246ICdwaSBwaS1zZWFyY2gnXHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAga2V5OiAnYWR2YW5jZWRGaWx0ZXJzJyxcclxuICAgICAgICB0eXBlOiAncXVlcnktYnVpbGRlcicsXHJcbiAgICAgICAgcHJvcHM6IHtcclxuICAgICAgICAgIGxhYmVsOiAn2YXYsdi02K3Yp9iqINmF2KrZgtiv2YXYqScsXHJcbiAgICAgICAgICBmaWVsZHM6IHRoaXMuZXh0cmFjdEZpbHRlcmFibGVGaWVsZHMoZmllbGRzKVxyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGtleTogJ3NvcnRpbmcnLFxyXG4gICAgICAgIHR5cGU6ICdzb3J0LWJ1aWxkZXInLFxyXG4gICAgICAgIHByb3BzOiB7XHJcbiAgICAgICAgICBsYWJlbDogJ9iq2LHYqtmK2Kgg2KfZhNmG2KrYp9im2KwnLFxyXG4gICAgICAgICAgZmllbGRzOiB0aGlzLmV4dHJhY3RTb3J0YWJsZUZpZWxkcyhmaWVsZHMpXHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAga2V5OiAncGFnaW5hdGlvbicsXHJcbiAgICAgICAgdHlwZTogJ2dyb3VwJyxcclxuICAgICAgICBwcm9wczogeyBsYWJlbDogJ9in2YTYqtmC2LPZitmFINin2YTYtdmB2K3ZiicgfSxcclxuICAgICAgICBmaWVsZEdyb3VwOiBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIGtleTogJ3RvcCcsXHJcbiAgICAgICAgICAgIHR5cGU6ICdpbnB1dCcsXHJcbiAgICAgICAgICAgIHByb3BzOiB7XHJcbiAgICAgICAgICAgICAgdHlwZTogJ251bWJlcicsXHJcbiAgICAgICAgICAgICAgbGFiZWw6ICfYudiv2K8g2KfZhNiz2KzZhNin2KonLFxyXG4gICAgICAgICAgICAgIG1pbjogMSxcclxuICAgICAgICAgICAgICBtYXg6IDEwMDAsXHJcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICfYo9mC2LXZiSDYudiv2K8g2YTZhNiz2KzZhNin2Kog2KfZhNmF2LHYp9ivINi52LHYttmH2KcnXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIGtleTogJ3NraXAnLFxyXG4gICAgICAgICAgICB0eXBlOiAnaW5wdXQnLFxyXG4gICAgICAgICAgICBwcm9wczoge1xyXG4gICAgICAgICAgICAgIHR5cGU6ICdudW1iZXInLFxyXG4gICAgICAgICAgICAgIGxhYmVsOiAn2KrYrti32Yog2KfZhNiz2KzZhNin2KonLFxyXG4gICAgICAgICAgICAgIG1pbjogMCxcclxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ9i52K/YryDYp9mE2LPYrNmE2KfYqiDYp9mE2KrZiiDYs9mK2KrZhSDYqtiu2LfZitmH2KcnXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICBdXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBrZXk6ICdleHBhbmQnLFxyXG4gICAgICAgIHR5cGU6ICdtdWx0aXNlbGVjdCcsXHJcbiAgICAgICAgcHJvcHM6IHtcclxuICAgICAgICAgIGxhYmVsOiAn2KrZiNiz2YrYuSDYp9mE2K3ZgtmI2YQnLFxyXG4gICAgICAgICAgb3B0aW9uczogdGhpcy5leHRyYWN0RXhwYW5kYWJsZUZpZWxkcyhmaWVsZHMpLFxyXG4gICAgICAgICAgcGxhY2Vob2xkZXI6ICfYp9iu2KrYsSDYp9mE2K3ZgtmI2YQg2YTZhNiq2YjYs9mK2LknXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICBdO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBleHRyYWN0RmlsdGVyYWJsZUZpZWxkcyhmaWVsZHM6IEZvcm1seUZpZWxkQ29uZmlnW10pOiBRdWVyeUJ1aWxkZXJGaWVsZFtdIHtcclxuICAgIGNvbnN0IGZpbHRlcmFibGVGaWVsZHM6IFF1ZXJ5QnVpbGRlckZpZWxkW10gPSBbXTtcclxuXHJcbiAgICB0aGlzLnRyYXZlcnNlRmllbGRzKGZpZWxkcywgKGZpZWxkKSA9PiB7XHJcbiAgICAgIGlmIChmaWVsZC5rZXkgJiYgZmllbGQucHJvcHMgJiYgZmllbGQucHJvcHNbJ2ZpbHRlcmFibGUnXSAhPT0gZmFsc2UgJiYgIWZpZWxkLnByb3BzPy5oaWRkZW4pIHtcclxuICAgICAgICBmaWx0ZXJhYmxlRmllbGRzLnB1c2goe1xyXG4gICAgICAgICAga2V5OiBmaWVsZC5rZXksXHJcbiAgICAgICAgICBsYWJlbDogZmllbGQucHJvcHMubGFiZWwgfHwgZmllbGQua2V5LFxyXG4gICAgICAgICAgdHlwZTogdGhpcy5tYXBGaWVsZFR5cGUoZmllbGQudHlwZSBhcyBzdHJpbmcpLFxyXG4gICAgICAgICAgb3BlcmF0b3JzOiB0aGlzLmdldE9wZXJhdG9yc0ZvclR5cGUoZmllbGQudHlwZSBhcyBzdHJpbmcpXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBmaWx0ZXJhYmxlRmllbGRzO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBleHRyYWN0U29ydGFibGVGaWVsZHMoZmllbGRzOiBGb3JtbHlGaWVsZENvbmZpZ1tdKTogU29ydEJ1aWxkZXJGaWVsZFtdIHtcclxuICAgIGNvbnN0IHNvcnRhYmxlRmllbGRzOiBTb3J0QnVpbGRlckZpZWxkW10gPSBbXTtcclxuXHJcbiAgICB0aGlzLnRyYXZlcnNlRmllbGRzKGZpZWxkcywgKGZpZWxkKSA9PiB7XHJcbiAgICAgIGlmIChmaWVsZC5rZXkgJiYgZmllbGQucHJvcHMgJiYgZmllbGQucHJvcHNbJ3NvcnRhYmxlJ10gIT09IGZhbHNlICYmICFmaWVsZC5wcm9wcz8uaGlkZGVuKSB7XHJcbiAgICAgICAgc29ydGFibGVGaWVsZHMucHVzaCh7XHJcbiAgICAgICAgICBrZXk6IGZpZWxkLmtleSBhcyBzdHJpbmcsXHJcbiAgICAgICAgICBsYWJlbDogZmllbGQucHJvcHMubGFiZWwgfHwgZmllbGQua2V5IGFzIHN0cmluZ1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gc29ydGFibGVGaWVsZHM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGV4dHJhY3RFeHBhbmRhYmxlRmllbGRzKGZpZWxkczogRm9ybWx5RmllbGRDb25maWdbXSk6IGFueVtdIHtcclxuICAgIGNvbnN0IGV4cGFuZGFibGVGaWVsZHM6IGFueVtdID0gW107XHJcblxyXG4gICAgdGhpcy50cmF2ZXJzZUZpZWxkcyhmaWVsZHMsIChmaWVsZCkgPT4ge1xyXG4gICAgICBpZiAoZmllbGQua2V5ICYmIGZpZWxkLnByb3BzICYmIGZpZWxkLnByb3BzWydleHBhbmRhYmxlJ10gJiYgIWZpZWxkLnByb3BzPy5oaWRkZW4pIHtcclxuICAgICAgICBleHBhbmRhYmxlRmllbGRzLnB1c2goe1xyXG4gICAgICAgICAgbGFiZWw6IGZpZWxkLnByb3BzLmxhYmVsIHx8IGZpZWxkLmtleSxcclxuICAgICAgICAgIHZhbHVlOiBmaWVsZC5rZXlcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIGV4cGFuZGFibGVGaWVsZHM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHRyYXZlcnNlRmllbGRzKGZpZWxkczogRm9ybWx5RmllbGRDb25maWdbXSwgY2FsbGJhY2s6IChmaWVsZDogRm9ybWx5RmllbGRDb25maWcpID0+IHZvaWQpOiB2b2lkIHtcclxuICAgIGZpZWxkcy5mb3JFYWNoKGZpZWxkID0+IHtcclxuICAgICAgY2FsbGJhY2soZmllbGQpO1xyXG5cclxuICAgICAgaWYgKGZpZWxkLmZpZWxkR3JvdXApIHtcclxuICAgICAgICB0aGlzLnRyYXZlcnNlRmllbGRzKGZpZWxkLmZpZWxkR3JvdXAsIGNhbGxiYWNrKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKGZpZWxkLmZpZWxkR3JvdXApIHtcclxuICAgICAgICB0aGlzLnRyYXZlcnNlRmllbGRzKGZpZWxkLmZpZWxkR3JvdXAgPz9bXSwgY2FsbGJhY2spO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbWFwRmllbGRUeXBlKHR5cGU/OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgdHlwZU1hcDogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHtcclxuICAgICAgJ2lucHV0JzogJ3N0cmluZycsXHJcbiAgICAgICdudW1iZXInOiAnbnVtYmVyJyxcclxuICAgICAgJ2RhdGVwaWNrZXInOiAnZGF0ZScsXHJcbiAgICAgICdzZWxlY3QnOiAnc3RyaW5nJyxcclxuICAgICAgJ2NoZWNrYm94JzogJ2Jvb2xlYW4nLFxyXG4gICAgICAncmFkaW8nOiAnc3RyaW5nJyxcclxuICAgICAgJ3RleHRhcmVhJzogJ3N0cmluZydcclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIHR5cGVNYXBbdHlwZSB8fCAnaW5wdXQnXSB8fCAnc3RyaW5nJztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0T3BlcmF0b3JzRm9yVHlwZSh0eXBlPzogc3RyaW5nKTogc3RyaW5nW10ge1xyXG4gICAgY29uc3Qgb3BlcmF0b3JzTWFwOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZ1tdIH0gPSB7XHJcbiAgICAgICdzdHJpbmcnOiBbJ2VxJywgJ25lJywgJ2NvbnRhaW5zJywgJ3N0YXJ0c3dpdGgnLCAnZW5kc3dpdGgnXSxcclxuICAgICAgJ251bWJlcic6IFsnZXEnLCAnbmUnLCAnZ3QnLCAnZ2UnLCAnbHQnLCAnbGUnXSxcclxuICAgICAgJ2RhdGUnOiBbJ2VxJywgJ25lJywgJ2d0JywgJ2dlJywgJ2x0JywgJ2xlJ10sXHJcbiAgICAgICdib29sZWFuJzogWydlcScsICduZSddXHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiBvcGVyYXRvcnNNYXBbdGhpcy5tYXBGaWVsZFR5cGUodHlwZSldIHx8IFsnZXEnLCAnbmUnXTtcclxuICB9XHJcblxyXG4gIGJ1aWxkT0RhdGFGcm9tUXVlcnlNb2RlbChtb2RlbDogYW55LCBvcmlnaW5hbEZpZWxkczogRm9ybWx5RmllbGRDb25maWdbXSk6IE9EYXRhUXVlcnlQYXJhbWV0ZXJzIHtcclxuICAgIGNvbnN0IHBhcmFtczogT0RhdGFRdWVyeVBhcmFtZXRlcnMgPSB7XHJcbiAgICAgIGZpbHRlcnM6IFtdLFxyXG4gICAgICBvcmRlckJ5OiBbXSxcclxuICAgICAgZ3JvdXBCeTogW10sXHJcbiAgICAgIGV4cGFuZDogbW9kZWwuZXhwYW5kIHx8IFtdXHJcbiAgICB9O1xyXG5cclxuICAgIC8vIFF1aWNrIHNlYXJjaFxyXG4gICAgaWYgKG1vZGVsLnF1aWNrU2VhcmNoKSB7XHJcbiAgICAgIGNvbnN0IHNlYXJjaGFibGVGaWVsZHMgPSB0aGlzLmV4dHJhY3RGaWx0ZXJhYmxlRmllbGRzKG9yaWdpbmFsRmllbGRzKTtcclxuICAgICAgc2VhcmNoYWJsZUZpZWxkcy5mb3JFYWNoKGZpZWxkID0+IHtcclxuICAgICAgICBwYXJhbXMuZmlsdGVycy5wdXNoKHtcclxuICAgICAgICAgIGZpZWxkOiBmaWVsZC5rZXksXHJcbiAgICAgICAgICBvcGVyYXRvcjogJ2NvbnRhaW5zJyxcclxuICAgICAgICAgIHZhbHVlOiBtb2RlbC5xdWlja1NlYXJjaCxcclxuICAgICAgICAgIGxvZ2ljYWxPcGVyYXRvcjogJ29yJ1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBBZHZhbmNlZCBmaWx0ZXJzXHJcbiAgICBpZiAobW9kZWwuYWR2YW5jZWRGaWx0ZXJzICYmIEFycmF5LmlzQXJyYXkobW9kZWwuYWR2YW5jZWRGaWx0ZXJzKSkge1xyXG4gICAgICBtb2RlbC5hZHZhbmNlZEZpbHRlcnMuZm9yRWFjaCgoZmlsdGVyOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoZmlsdGVyLmZpZWxkICYmIGZpbHRlci5vcGVyYXRvciAmJiBmaWx0ZXIudmFsdWUgIT09IHVuZGVmaW5lZCAmJiBmaWx0ZXIudmFsdWUgIT09ICcnKSB7XHJcbiAgICAgICAgICBwYXJhbXMuZmlsdGVycy5wdXNoKHtcclxuICAgICAgICAgICAgZmllbGQ6IGZpbHRlci5maWVsZCxcclxuICAgICAgICAgICAgb3BlcmF0b3I6IGZpbHRlci5vcGVyYXRvcixcclxuICAgICAgICAgICAgdmFsdWU6IGZpbHRlci52YWx1ZSxcclxuICAgICAgICAgICAgbG9naWNhbE9wZXJhdG9yOiAnYW5kJ1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBTb3J0aW5nXHJcbiAgICBpZiAobW9kZWwuc29ydGluZyAmJiBBcnJheS5pc0FycmF5KG1vZGVsLnNvcnRpbmcpKSB7XHJcbiAgICAgIG1vZGVsLnNvcnRpbmcuZm9yRWFjaCgoc29ydDogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHNvcnQuZmllbGQgJiYgc29ydC5kaXJlY3Rpb24pIHtcclxuICAgICAgICAgIHBhcmFtcy5vcmRlckJ5LnB1c2goe1xyXG4gICAgICAgICAgICBmaWVsZDogc29ydC5maWVsZCxcclxuICAgICAgICAgICAgZGlyZWN0aW9uOiBzb3J0LmRpcmVjdGlvblxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBQYWdpbmF0aW9uXHJcbiAgICBpZiAobW9kZWwucGFnaW5hdGlvbikge1xyXG4gICAgICBpZiAobW9kZWwucGFnaW5hdGlvbi50b3ApIHtcclxuICAgICAgICBwYXJhbXMudG9wID0gTnVtYmVyKG1vZGVsLnBhZ2luYXRpb24udG9wKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAobW9kZWwucGFnaW5hdGlvbi5za2lwKSB7XHJcbiAgICAgICAgcGFyYW1zLnNraXAgPSBOdW1iZXIobW9kZWwucGFnaW5hdGlvbi5za2lwKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBwYXJhbXM7XHJcbiAgfVxyXG5cclxuICB0b09EYXRhUXVlcnlTdHJpbmcocGFyYW1zOiBPRGF0YVF1ZXJ5UGFyYW1ldGVycyk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBxdWVyeVBhcnRzOiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuICAgIC8vIEZpbHRlcnNcclxuICAgIGlmIChwYXJhbXMuZmlsdGVycy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGNvbnN0IGZpbHRlckdyb3VwczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmdbXSB9ID0ge307XHJcblxyXG4gICAgICBwYXJhbXMuZmlsdGVycy5mb3JFYWNoKGZpbHRlciA9PiB7XHJcbiAgICAgICAgY29uc3QgbG9naWNhbE9wID0gZmlsdGVyLmxvZ2ljYWxPcGVyYXRvciB8fCAnYW5kJztcclxuICAgICAgICBpZiAoIWZpbHRlckdyb3Vwc1tsb2dpY2FsT3BdKSB7XHJcbiAgICAgICAgICBmaWx0ZXJHcm91cHNbbG9naWNhbE9wXSA9IFtdO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmaWx0ZXJHcm91cHNbbG9naWNhbE9wXS5wdXNoKFxyXG4gICAgICAgICAgYCR7ZmlsdGVyLmZpZWxkfSAke2ZpbHRlci5vcGVyYXRvcn0gJHt0aGlzLmZvcm1hdE9EYXRhVmFsdWUoZmlsdGVyLnZhbHVlKX1gXHJcbiAgICAgICAgKTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgICBsZXQgZmlsdGVyU3RyaW5nID0gJyc7XHJcbiAgICAgIE9iamVjdC5rZXlzKGZpbHRlckdyb3VwcykuZm9yRWFjaCgob3AsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgaWYgKGluZGV4ID4gMCkgZmlsdGVyU3RyaW5nICs9ICcgYW5kICc7XHJcbiAgICAgICAgaWYgKGZpbHRlckdyb3Vwc1tvcF0ubGVuZ3RoID4gMSkge1xyXG4gICAgICAgICAgZmlsdGVyU3RyaW5nICs9IGAoJHtmaWx0ZXJHcm91cHNbb3BdLmpvaW4oYCAke29wfSBgKX0pYDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgZmlsdGVyU3RyaW5nICs9IGZpbHRlckdyb3Vwc1tvcF1bMF07XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHF1ZXJ5UGFydHMucHVzaChgJGZpbHRlcj0ke2VuY29kZVVSSUNvbXBvbmVudChmaWx0ZXJTdHJpbmcpfWApO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIE9yZGVyIGJ5XHJcbiAgICBpZiAocGFyYW1zLm9yZGVyQnkubGVuZ3RoID4gMCkge1xyXG4gICAgICBjb25zdCBvcmRlckJ5U3RyaW5nID0gcGFyYW1zLm9yZGVyQnkubWFwKG9yZGVyID0+XHJcbiAgICAgICAgYCR7b3JkZXIuZmllbGR9ICR7b3JkZXIuZGlyZWN0aW9ufWBcclxuICAgICAgKS5qb2luKCcsJyk7XHJcbiAgICAgIHF1ZXJ5UGFydHMucHVzaChgJG9yZGVyYnk9JHtlbmNvZGVVUklDb21wb25lbnQob3JkZXJCeVN0cmluZyl9YCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gRXhwYW5kXHJcbiAgICBpZiAocGFyYW1zLmV4cGFuZCAmJiBwYXJhbXMuZXhwYW5kLmxlbmd0aCA+IDApIHtcclxuICAgICAgcXVlcnlQYXJ0cy5wdXNoKGAkZXhwYW5kPSR7ZW5jb2RlVVJJQ29tcG9uZW50KHBhcmFtcy5leHBhbmQuam9pbignLCcpKX1gKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBUb3BcclxuICAgIGlmIChwYXJhbXMudG9wKSB7XHJcbiAgICAgIHF1ZXJ5UGFydHMucHVzaChgJHRvcD0ke3BhcmFtcy50b3B9YCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gU2tpcFxyXG4gICAgaWYgKHBhcmFtcy5za2lwKSB7XHJcbiAgICAgIHF1ZXJ5UGFydHMucHVzaChgJHNraXA9JHtwYXJhbXMuc2tpcH1gKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcXVlcnlQYXJ0cy5sZW5ndGggPiAwID8gJz8nICsgcXVlcnlQYXJ0cy5qb2luKCcmJykgOiAnJztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZm9ybWF0T0RhdGFWYWx1ZSh2YWx1ZTogYW55KTogc3RyaW5nIHtcclxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgIHJldHVybiBgJyR7dmFsdWUucmVwbGFjZSgvJy9nLCBcIicnXCIpfSdgO1xyXG4gICAgfSBlbHNlIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcclxuICAgICAgcmV0dXJuIGAnJHt2YWx1ZS50b0lTT1N0cmluZygpfSdgO1xyXG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJykge1xyXG4gICAgICByZXR1cm4gdmFsdWUudG9TdHJpbmcoKTtcclxuICAgIH1cclxuICAgIHJldHVybiB2YWx1ZTtcclxuICB9XHJcbn1cclxuIl19","// query-builder.component.ts\nimport { Component } from '@angular/core';\nimport { FieldType } from '@ngx-formly/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { ButtonModule } from 'primeng/button';\nimport { CheckboxModule } from 'primeng/checkbox';\nimport { SelectModule } from 'primeng/select';\nimport { DatePickerModule } from 'primeng/datepicker';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common\";\nimport * as i2 from \"@angular/forms\";\nimport * as i3 from \"primeng/select\";\nimport * as i4 from \"primeng/inputtext\";\nimport * as i5 from \"primeng/button\";\nimport * as i6 from \"primeng/checkbox\";\nexport class QueryBuilderComponent extends FieldType {\n conditions = [];\n ngOnInit() {\n if (this.formControl.value && Array.isArray(this.formControl.value)) {\n this.conditions = [...this.formControl.value];\n }\n }\n addCondition() {\n this.conditions.push({ field: '', operator: 'eq', value: '' });\n this.updateValue();\n }\n removeCondition(index) {\n this.conditions.splice(index, 1);\n this.updateValue();\n }\n onFieldChange(condition) {\n condition.operator = 'eq';\n condition.value = '';\n this.updateValue();\n }\n updateValue() {\n this.formControl.setValue([...this.conditions]);\n }\n getOperatorsForField(fieldKey) {\n if (!fieldKey)\n return [];\n const field = this.props['fields'].find((f) => f.key === fieldKey);\n const operators = field?.operators || ['eq', 'ne'];\n return operators.map((op) => ({\n label: this.getOperatorLabel(op),\n value: op\n }));\n }\n getOperatorLabel(operator) {\n const labels = {\n 'eq': 'يساوي',\n 'ne': 'لا يساوي',\n 'contains': 'يحتوي على',\n 'startswith': 'يبدأ بـ',\n 'endswith': 'ينتهي بـ',\n 'gt': 'أكبر من',\n 'ge': 'أكبر أو يساوي',\n 'lt': 'أصغر من',\n 'le': 'أصغر أو يساوي'\n };\n return labels[operator] || operator;\n }\n getFieldType(fieldKey) {\n const field = this.props['fields'].find((f) => f.key === fieldKey);\n return field?.type || 'string';\n }\n getInputType(fieldKey) {\n const type = this.getFieldType(fieldKey);\n return type === 'number' ? 'number' : 'text';\n }\n getValuePlaceholder(fieldKey) {\n return 'القيمة';\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: QueryBuilderComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.1.8\", type: QueryBuilderComponent, isStandalone: true, selector: \"formly-query-builder\", usesInheritance: true, ngImport: i0, template: `\r\n <div class=\"query-builder p-3 border-round border-1 surface-border\">\r\n <h4 class=\"mt-0\">{{ props.label }}</h4>\r\n\r\n <div *ngFor=\"let condition of conditions; let i = index\" class=\"condition-row mb-2 p-2 border-round surface-card\">\r\n <div class=\"grid grid-nogutter align-items-center gap-2\">\r\n <!-- Field Selector -->\r\n <div class=\"col\">\r\n <p-select\r\n [options]=\"props['fields']\"\r\n optionLabel=\"label\"\r\n optionValue=\"key\"\r\n [(ngModel)]=\"condition.field\"\r\n (onChange)=\"onFieldChange(condition)\"\r\n placeholder=\"اختر الحقل\"\r\n [showClear]=\"true\"\r\n styleClass=\"w-full\">\r\n </p-select>\r\n </div>\r\n\r\n <!-- Operator Selector -->\r\n <div class=\"col\">\r\n <p-select\r\n [options]=\"getOperatorsForField(condition.field)\"\r\n [(ngModel)]=\"condition.operator\"\r\n placeholder=\"المعامل\"\r\n styleClass=\"w-full\">\r\n </p-select>\r\n </div>\r\n\r\n <!-- Value Input -->\r\n <div class=\"col\" *ngIf=\"condition.field && getFieldType(condition.field) !== 'boolean'\">\r\n <input\r\n *ngIf=\"getFieldType(condition.field) !== 'date'\"\r\n pInputText\r\n [(ngModel)]=\"condition.value\"\r\n [type]=\"getInputType(condition.field)\"\r\n [placeholder]=\"getValuePlaceholder(condition.field)\"\r\n styleClass=\"w-full\">\r\n\r\n <p-calendar\r\n *ngIf=\"getFieldType(condition.field) === 'date'\"\r\n [(ngModel)]=\"condition.value\"\r\n dateFormat=\"yy-mm-dd\"\r\n styleClass=\"w-full\">\r\n </p-calendar>\r\n </div>\r\n\r\n <!-- Boolean Value -->\r\n <div class=\"col\" *ngIf=\"condition.field && getFieldType(condition.field) === 'boolean'\">\r\n <p-checkbox\r\n [(ngModel)]=\"condition.value\"\r\n [binary]=\"true\">\r\n </p-checkbox>\r\n </div>\r\n\r\n <!-- Remove Button -->\r\n <div class=\"col-fixed\">\r\n <button\r\n pButton\r\n icon=\"pi pi-times\"\r\n class=\"p-button-danger p-button-text\"\r\n (click)=\"removeCondition(i)\">\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <button\r\n pButton\r\n icon=\"pi pi-plus\"\r\n label=\"إضافة شرط\"\r\n class=\"p-button-outlined w-full\"\r\n (click)=\"addCondition()\">\r\n </button>\r\n </div>\r\n `, isInline: true, dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"directive\", type: i1.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i2.DefaultValueAccessor, selector: \"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]\" }, { kind: \"directive\", type: i2.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i2.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"ngmodule\", type: SelectModule }, { kind: \"component\", type: i3.Select, selector: \"p-select\", inputs: [\"id\", \"scrollHeight\", \"filter\", \"panelStyle\", \"styleClass\", \"panelStyleClass\", \"readonly\", \"editable\", \"tabindex\", \"placeholder\", \"loadingIcon\", \"filterPlaceholder\", \"filterLocale\", \"inputId\", \"dataKey\", \"filterBy\", \"filterFields\", \"autofocus\", \"resetFilterOnHide\", \"checkmark\", \"dropdownIcon\", \"loading\", \"optionLabel\", \"optionValue\", \"optionDisabled\", \"optionGroupLabel\", \"optionGroupChildren\", \"group\", \"showClear\", \"emptyFilterMessage\", \"emptyMessage\", \"lazy\", \"virtualScroll\", \"virtualScrollItemSize\", \"virtualScrollOptions\", \"overlayOptions\", \"ariaFilterLabel\", \"ariaLabel\", \"ariaLabelledBy\", \"filterMatchMode\", \"tooltip\", \"tooltipPosition\", \"tooltipPositionStyle\", \"tooltipStyleClass\", \"focusOnHover\", \"selectOnFocus\", \"autoOptionFocus\", \"autofocusFilter\", \"filterValue\", \"options\", \"appendTo\"], outputs: [\"onChange\", \"onFilter\", \"onFocus\", \"onBlur\", \"onClick\", \"onShow\", \"onHide\", \"onClear\", \"onLazyLoad\"] }, { kind: \"ngmodule\", type: InputTextModule }, { kind: \"directive\", type: i4.InputText, selector: \"[pInputText]\", inputs: [\"pSize\", \"variant\", \"fluid\", \"invalid\"] }, { kind: \"ngmodule\", type: ButtonModule }, { kind: \"directive\", type: i5.ButtonDirective, selector: \"[pButton]\", inputs: [\"iconPos\", \"loadingIcon\", \"loading\", \"severity\", \"raised\", \"rounded\", \"text\", \"outlined\", \"size\", \"plain\", \"fluid\", \"label\", \"icon\", \"buttonProps\"] }, { kind: \"ngmodule\", type: DatePickerModule }, { kind: \"ngmodule\", type: CheckboxModule }, { kind: \"component\", type: i6.Checkbox, selector: \"p-checkbox, p-checkBox, p-check-box\", inputs: [\"value\", \"binary\", \"ariaLabelledBy\", \"ariaLabel\", \"tabindex\", \"inputId\", \"inputStyle\", \"styleClass\", \"inputClass\", \"indeterminate\", \"formControl\", \"checkboxIcon\", \"readonly\", \"autofocus\", \"trueValue\", \"falseValue\", \"variant\", \"size\"], outputs: [\"onChange\", \"onFocus\", \"onBlur\"] }] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: QueryBuilderComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'formly-query-builder',\n standalone: true,\n imports: [\n CommonModule,\n FormsModule,\n SelectModule,\n InputTextModule,\n ButtonModule,\n DatePickerModule,\n CheckboxModule\n ],\n template: `\r\n <div class=\"query-builder p-3 border-round border-1 surface-border\">\r\n <h4 class=\"mt-0\">{{ props.label }}</h4>\r\n\r\n <div *ngFor=\"let condition of conditions; let i = index\" class=\"condition-row mb-2 p-2 border-round surface-card\">\r\n <div class=\"grid grid-nogutter align-items-center gap-2\">\r\n <!-- Field Selector -->\r\n <div class=\"col\">\r\n <p-select\r\n [options]=\"props['fields']\"\r\n optionLabel=\"label\"\r\n optionValue=\"key\"\r\n [(ngModel)]=\"condition.field\"\r\n (onChange)=\"onFieldChange(condition)\"\r\n placeholder=\"اختر الحقل\"\r\n [showClear]=\"true\"\r\n styleClass=\"w-full\">\r\n </p-select>\r\n </div>\r\n\r\n <!-- Operator Selector -->\r\n <div class=\"col\">\r\n <p-select\r\n [options]=\"getOperatorsForField(condition.field)\"\r\n [(ngModel)]=\"condition.operator\"\r\n placeholder=\"المعامل\"\r\n styleClass=\"w-full\">\r\n </p-select>\r\n </div>\r\n\r\n <!-- Value Input -->\r\n <div class=\"col\" *ngIf=\"condition.field && getFieldType(condition.field) !== 'boolean'\">\r\n <input\r\n *ngIf=\"getFieldType(condition.field) !== 'date'\"\r\n pInputText\r\n [(ngModel)]=\"condition.value\"\r\n [type]=\"getInputType(condition.field)\"\r\n [placeholder]=\"getValuePlaceholder(condition.field)\"\r\n styleClass=\"w-full\">\r\n\r\n <p-calendar\r\n *ngIf=\"getFieldType(condition.field) === 'date'\"\r\n [(ngModel)]=\"condition.value\"\r\n dateFormat=\"yy-mm-dd\"\r\n styleClass=\"w-full\">\r\n </p-calendar>\r\n </div>\r\n\r\n <!-- Boolean Value -->\r\n <div class=\"col\" *ngIf=\"condition.field && getFieldType(condition.field) === 'boolean'\">\r\n <p-checkbox\r\n [(ngModel)]=\"condition.value\"\r\n [binary]=\"true\">\r\n </p-checkbox>\r\n </div>\r\n\r\n <!-- Remove Button -->\r\n <div class=\"col-fixed\">\r\n <button\r\n pButton\r\n icon=\"pi pi-times\"\r\n class=\"p-button-danger p-button-text\"\r\n (click)=\"removeCondition(i)\">\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <button\r\n pButton\r\n icon=\"pi pi-plus\"\r\n label=\"إضافة شرط\"\r\n class=\"p-button-outlined w-full\"\r\n (click)=\"addCondition()\">\r\n </button>\r\n </div>\r\n `\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktYnVpbGRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25nLnVpLmNvcmUvZ2VuZXJpYy1zZWFyY2gtYWR2YW5jZWQvc3JjL2xpYi9xdWVyeS1idWlsZGVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw2QkFBNkI7QUFDN0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsU0FBUyxFQUFtQixNQUFNLGtCQUFrQixDQUFDO0FBQzlELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7Ozs7OztBQTRGdEQsTUFBTSxPQUFPLHFCQUFzQixTQUFRLFNBQTBCO0lBQ25FLFVBQVUsR0FBVSxFQUFFLENBQUM7SUFFdkIsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDcEUsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNoRCxDQUFDO0lBQ0gsQ0FBQztJQUVELFlBQVk7UUFDVixJQUFJLENBQUMsVUFBVSxDQUFD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LDhCQUNoQixjQUFjOzsyRkFnRkwscUJBQXFCO2tCQTFGakMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsc0JBQXNCO29CQUNoQyxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxZQUFZO3dCQUNaLGVBQWU7d0JBQ2YsWUFBWTt3QkFDWixnQkFBZ0I7d0JBQ2hCLGNBQWM7cUJBQ2Y7b0JBQ0QsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNEVUO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLy8gcXVlcnktYnVpbGRlci5jb21wb25lbnQudHNcclxuaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZpZWxkVHlwZSwgRmllbGRUeXBlQ29uZmlnIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBJbnB1dFRleHRNb2R1bGUgfSBmcm9tICdwcmltZW5nL2lucHV0dGV4dCc7XHJcbmltcG9ydCB7IEJ1dHRvbk1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvYnV0dG9uJztcclxuaW1wb3J0IHsgQ2hlY2tib3hNb2R1bGUgfSBmcm9tICdwcmltZW5nL2NoZWNrYm94JztcclxuaW1wb3J0IHsgU2VsZWN0TW9kdWxlIH0gZnJvbSAncHJpbWVuZy9zZWxlY3QnO1xyXG5pbXBvcnQgeyBEYXRlUGlja2VyTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9kYXRlcGlja2VyJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZm9ybWx5LXF1ZXJ5LWJ1aWxkZXInLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBTZWxlY3RNb2R1bGUsXHJcbiAgICBJbnB1dFRleHRNb2R1bGUsXHJcbiAgICBCdXR0b25Nb2R1bGUsXHJcbiAgICBEYXRlUGlja2VyTW9kdWxlLFxyXG4gICAgQ2hlY2tib3hNb2R1bGVcclxuICBdLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8ZGl2IGNsYXNzPVwicXVlcnktYnVpbGRlciBwLTMgYm9yZGVyLXJvdW5kIGJvcmRlci0xIHN1cmZhY2UtYm9yZGVyXCI+XHJcbiAgICAgIDxoNCBjbGFzcz1cIm10LTBcIj57eyBwcm9wcy5sYWJlbCB9fTwvaDQ+XHJcblxyXG4gICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBjb25kaXRpb24gb2YgY29uZGl0aW9uczsgbGV0IGkgPSBpbmRleFwiIGNsYXNzPVwiY29uZGl0aW9uLXJvdyBtYi0yIHAtMiBib3JkZXItcm91bmQgc3VyZmFjZS1jYXJkXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQgZ3JpZC1ub2d1dHRlciBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cclxuICAgICAgICAgIDwhLS0gRmllbGQgU2VsZWN0b3IgLS0+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgIDxwLXNlbGVjdFxyXG4gICAgICAgICAgICAgIFtvcHRpb25zXT1cInByb3BzWydmaWVsZHMnXVwiXHJcbiAgICAgICAgICAgICAgb3B0aW9uTGFiZWw9XCJsYWJlbFwiXHJcbiAgICAgICAgICAgICAgb3B0aW9uVmFsdWU9XCJrZXlcIlxyXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29uZGl0aW9uLmZpZWxkXCJcclxuICAgICAgICAgICAgICAob25DaGFuZ2UpPVwib25GaWVsZENoYW5nZShjb25kaXRpb24pXCJcclxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cItin2K7YqtixINin2YTYrdmC2YRcIlxyXG4gICAgICAgICAgICAgIFtzaG93Q2xlYXJdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgc3R5bGVDbGFzcz1cInctZnVsbFwiPlxyXG4gICAgICAgICAgICA8L3Atc2VsZWN0PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPCEtLSBPcGVyYXRvciBTZWxlY3RvciAtLT5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgPHAtc2VsZWN0XHJcbiAgICAgICAgICAgICAgW29wdGlvbnNdPVwiZ2V0T3BlcmF0b3JzRm9yRmllbGQoY29uZGl0aW9uLmZpZWxkKVwiXHJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb25kaXRpb24ub3BlcmF0b3JcIlxyXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwi2KfZhNmF2LnYp9mF2YRcIlxyXG4gICAgICAgICAgICAgIHN0eWxlQ2xhc3M9XCJ3LWZ1bGxcIj5cclxuICAgICAgICAgICAgPC9wLXNlbGVjdD5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDwhLS0gVmFsdWUgSW5wdXQgLS0+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCIgKm5nSWY9XCJjb25kaXRpb24uZmllbGQgJiYgZ2V0RmllbGRUeXBlKGNvbmRpdGlvbi5maWVsZCkgIT09ICdib29sZWFuJ1wiPlxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAqbmdJZj1cImdldEZpZWxkVHlwZShjb25kaXRpb24uZmllbGQpICE9PSAnZGF0ZSdcIlxyXG4gICAgICAgICAgICAgIHBJbnB1dFRleHRcclxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbmRpdGlvbi52YWx1ZVwiXHJcbiAgICAgICAgICAgICAgW3R5cGVdPVwiZ2V0SW5wdXRUeXBlKGNvbmRpdGlvbi5maWVsZClcIlxyXG4gICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJnZXRWYWx1ZVBsYWNlaG9sZGVyKGNvbmRpdGlvbi5maWVsZClcIlxyXG4gICAgICAgICAgICAgIHN0eWxlQ2xhc3M9XCJ3LWZ1bGxcIj5cclxuXHJcbiAgICAgICAgICAgIDxwLWNhbGVuZGFyXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJnZXRGaWVsZFR5cGUoY29uZGl0aW9uLmZpZWxkKSA9PT0gJ2RhdGUnXCJcclxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbmRpdGlvbi52YWx1ZVwiXHJcbiAgICAgICAgICAgICAgZGF0ZUZvcm1hdD1cInl5LW1tLWRkXCJcclxuICAgICAgICAgICAgICBzdHlsZUNsYXNzPVwidy1mdWxsXCI+XHJcbiAgICAgICAgICAgIDwvcC1jYWxlbmRhcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDwhLS0gQm9vbGVhbiBWYWx1ZSAtLT5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIiAqbmdJZj1cImNvbmRpdGlvbi5maWVsZCAmJiBnZXRGaWVsZFR5cGUoY29uZGl0aW9uLmZpZWxkKSA9PT0gJ2Jvb2xlYW4nXCI+XHJcbiAgICAgICAgICAgIDxwLWNoZWNrYm94XHJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb25kaXRpb24udmFsdWVcIlxyXG4gICAgICAgICAgICAgIFtiaW5hcnldPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICA8L3AtY2hlY2tib3g+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8IS0tIFJlbW92ZSBCdXR0b24gLS0+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWZpeGVkXCI+XHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICBwQnV0dG9uXHJcbiAgICAgICAgICAgICAgaWNvbj1cInBpIHBpLXRpbWVzXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cInAtYnV0dG9uLWRhbmdlciBwLWJ1dHRvbi10ZXh0XCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlQ29uZGl0aW9uKGkpXCI+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgIHBCdXR0b25cclxuICAgICAgICBpY29uPVwicGkgcGktcGx1c1wiXHJcbiAgICAgICAgbGFiZWw9XCLYpdi22KfZgdipINi02LHYt1wiXHJcbiAgICAgICAgY2xhc3M9XCJwLWJ1dHRvbi1vdXRsaW5lZCB3LWZ1bGxcIlxyXG4gICAgICAgIChjbGljayk9XCJhZGRDb25kaXRpb24oKVwiPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gIGBcclxufSlcclxuZXhwb3J0IGNsYXNzIFF1ZXJ5QnVpbGRlckNvbXBvbmVudCBleHRlbmRzIEZpZWxkVHlwZTxGaWVsZFR5cGVDb25maWc+IHtcclxuICBjb25kaXRpb25zOiBhbnlbXSA9IFtdO1xyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIGlmICh0aGlzLmZvcm1Db250cm9sLnZhbHVlICYmIEFycmF5LmlzQXJyYXkodGhpcy5mb3JtQ29udHJvbC52YWx1ZSkpIHtcclxuICAgICAgdGhpcy5jb25kaXRpb25zID0gWy4uLnRoaXMuZm9ybUNvbnRyb2wudmFsdWVdO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYWRkQ29uZGl0aW9uKCkge1xyXG4gICAgdGhpcy5jb25kaXRpb25zLnB1c2goeyBmaWVsZDogJycsIG9wZXJhdG9yOiAnZXEnLCB2YWx1ZTogJycgfSk7XHJcbiAgICB0aGlzLnVwZGF0ZVZhbHVlKCk7XHJcbiAgfVxyXG5cclxuICByZW1vdmVDb25kaXRpb24oaW5kZXg6IG51bWJlcikge1xyXG4gICAgdGhpcy5jb25kaXRpb25zLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICB0aGlzLnVwZGF0ZVZhbHVlKCk7XHJcbiAgfVxyXG5cclxuICBvbkZpZWxkQ2hhbmdlKGNvbmRpdGlvbjogYW55KSB7XHJcbiAgICBjb25kaXRpb24ub3BlcmF0b3IgPSAnZXEnO1xyXG4gICAgY29uZGl0aW9uLnZhbHVlID0gJyc7XHJcbiAgICB0aGlzLnVwZGF0ZVZhbHVlKCk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVWYWx1ZSgpIHtcclxuICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsdWUoWy4uLnRoaXMuY29uZGl0aW9uc10pO1xyXG4gIH1cclxuXHJcbiAgZ2V0T3BlcmF0b3JzRm9yRmllbGQoZmllbGRLZXk6IHN0cmluZyk6IGFueVtdIHtcclxuICAgIGlmICghZmllbGRLZXkpIHJldHVybiBbXTtcclxuXHJcbiAgICBjb25zdCBmaWVsZCA9IHRoaXMucHJvcHNbJ2ZpZWxkcyddLmZpbmQoKGY6IGFueSkgPT4gZi5rZXkgPT09IGZpZWxkS2V5KTtcclxuICAgIGNvbnN0IG9wZXJhdG9ycyA9IGZpZWxkPy5vcGVyYXRvcnMgfHwgWydlcScsICduZSddO1xyXG5cclxuICAgIHJldHVybiBvcGVyYXRvcnMubWFwKChvcDphbnkpID0+ICh7XHJcbiAgICAgIGxhYmVsOiB0aGlzLmdldE9wZXJhdG9yTGFiZWwob3ApLFxyXG4gICAgICB2YWx1ZTogb3BcclxuICAgIH0pKTtcclxuICB9XHJcblxyXG4gIGdldE9wZXJhdG9yTGFiZWwob3BlcmF0b3I6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBsYWJlbHM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7XHJcbiAgICAgICdlcSc6ICfZitiz2KfZiNmKJyxcclxuICAgICAgJ25lJzogJ9mE2Kcg2YrYs9in2YjZiicsXHJcbiAgICAgICdjb250YWlucyc6ICfZitit2KrZiNmKINi52YTZiScsXHJcbiAgICAgICdzdGFydHN3aXRoJzogJ9mK2KjYr9ijINio2YAnLFxyXG4gICAgICAnZW5kc3dpdGgnOiAn2YrZhtiq2YfZiiDYqNmAJyxcclxuICAgICAgJ2d0JzogJ9ij2YPYqNixINmF2YYnLFxyXG4gICAgICAnZ2UnOiAn2KPZg9io2LEg2KPZiCDZitiz2KfZiNmKJyxcclxuICAgICAgJ2x0JzogJ9ij2LXYutixINmF2YYnLFxyXG4gICAgICAnbGUnOiAn2KPYtdi62LEg2KPZiCDZitiz2KfZiNmKJ1xyXG4gICAgfTtcclxuXHJcbiAgICByZXR1cm4gbGFiZWxzW29wZXJhdG9yXSB8fCBvcGVyYXRvcjtcclxuICB9XHJcblxyXG4gIGdldEZpZWxkVHlwZShmaWVsZEtleTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGZpZWxkID0gdGhpcy5wcm9wc1snZmllbGRzJ10uZmluZCgoZjogYW55KSA9PiBmLmtleSA9PT0gZmllbGRLZXkpO1xyXG4gICAgcmV0dXJuIGZpZWxkPy50eXBlIHx8ICdzdHJpbmcnO1xyXG4gIH1cclxuXHJcbiAgZ2V0SW5wdXRUeXBlKGZpZWxkS2V5OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgdHlwZSA9IHRoaXMuZ2V0RmllbGRUeXBlKGZpZWxkS2V5KTtcclxuICAgIHJldHVybiB0eXBlID09PSAnbnVtYmVyJyA/ICdudW1iZXInIDogJ3RleHQnO1xyXG4gIH1cclxuXHJcbiAgZ2V0VmFsdWVQbGFjZWhvbGRlcihmaWVsZEtleTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiAn2KfZhNmC2YrZhdipJztcclxuICB9XHJcbn1cclxuIl19","// sort-builder.component.ts\nimport { Component } from '@angular/core';\nimport { FieldType } from '@ngx-formly/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { SelectModule } from 'primeng/select';\nimport { ButtonModule } from 'primeng/button';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common\";\nimport * as i2 from \"@angular/forms\";\nimport * as i3 from \"primeng/select\";\nimport * as i4 from \"primeng/button\";\nexport class SortBuilderComponent extends FieldType {\n sorts = [];\n directionOptions = [\n { label: 'تصاعدي', value: 'asc' },\n { label: 'تنازلي', value: 'desc' }\n ];\n ngOnInit() {\n if (this.formControl.value && Array.isArray(this.formControl.value)) {\n this.sorts = [...this.formControl.value];\n }\n }\n addSort() {\n this.sorts.push({ field: '', direction: 'asc' });\n this.updateValue();\n }\n removeSort(index) {\n this.sorts.splice(index, 1);\n this.updateValue();\n }\n updateValue() {\n this.formControl.setValue([...this.sorts]);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: SortBuilderComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.1.8\", type: SortBuilderComponent, isStandalone: true, selector: \"formly-sort-builder\", usesInheritance: true, ngImport: i0, template: `\r\n <div class=\"sort-builder p-3 border-round border-1 surface-border\">\r\n <h4 class=\"mt-0\">{{ props.label }}</h4>\r\n\r\n <div *ngFor=\"let sort of sorts; let i = index\" class=\"sort-row mb-2 p-2 border-round surface-card\">\r\n <div class=\"grid grid-nogutter align-items-center gap-2\">\r\n <!-- Field Selector -->\r\n <div class=\"col\">\r\n <p-select\r\n [options]=\"props['fields']\"\r\n optionLabel=\"label\"\r\n optionValue=\"key\"\r\n [(ngModel)]=\"sort.field\"\r\n placeholder=\"اختر الحقل للترتيب\"\r\n [showClear]=\"true\"\r\n styleClass=\"w-full\">\r\n </p-select>\r\n </div>\r\n\r\n <!-- Direction Selector -->\r\n <div class=\"col\">\r\n <p-select\r\n [options]=\"directionOptions\"\r\n [(ngModel)]=\"sort.direction\"\r\n placeholder=\"الاتجاه\"\r\n styleClass=\"w-full\">\r\n </p-select>\r\n </div>\r\n\r\n <!-- Remove Button -->\r\n <div class=\"col-fixed\">\r\n <button\r\n pButton\r\n icon=\"pi pi-times\"\r\n class=\"p-button-danger p-button-text\"\r\n (click)=\"removeSort(i)\">\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <button\r\n pButton\r\n icon=\"pi pi-sort-alt\"\r\n label=\"إضافة ترتيب\"\r\n class=\"p-button-outlined w-full\"\r\n (click)=\"addSort()\">\r\n </button>\r\n </div>\r\n `, isInline: true, dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"directive\", type: i1.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i2.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i2.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"ngmodule\", type: SelectModule }, { kind: \"component\", type: i3.Select, selector: \"p-select\", inputs: [\"id\", \"scrollHeight\", \"filter\", \"panelStyle\", \"styleClass\", \"panelStyleClass\", \"readonly\", \"editable\", \"tabindex\", \"placeholder\", \"loadingIcon\", \"filterPlaceholder\", \"filterLocale\", \"inputId\", \"dataKey\", \"filterBy\", \"filterFields\", \"autofocus\", \"resetFilterOnHide\", \"checkmark\", \"dropdownIcon\", \"loading\", \"optionLabel\", \"optionValue\", \"optionDisabled\", \"optionGroupLabel\", \"optionGroupChildren\", \"group\", \"showClear\", \"emptyFilterMessage\", \"emptyMessage\", \"lazy\", \"virtualScroll\", \"virtualScrollItemSize\", \"virtualScrollOptions\", \"overlayOptions\", \"ariaFilterLabel\", \"ariaLabel\", \"ariaLabelledBy\", \"filterMatchMode\", \"tooltip\", \"tooltipPosition\", \"tooltipPositionStyle\", \"tooltipStyleClass\", \"focusOnHover\", \"selectOnFocus\", \"autoOptionFocus\", \"autofocusFilter\", \"filterValue\", \"options\", \"appendTo\"], outputs: [\"onChange\", \"onFilter\", \"onFocus\", \"onBlur\", \"onClick\", \"onShow\", \"onHide\", \"onClear\", \"onLazyLoad\"] }, { kind: \"ngmodule\", type: ButtonModule }, { kind: \"directive\", type: i4.ButtonDirective, selector: \"[pButton]\", inputs: [\"iconPos\", \"loadingIcon\", \"loading\", \"severity\", \"raised\", \"rounded\", \"text\", \"outlined\", \"size\", \"plain\", \"fluid\", \"label\", \"icon\", \"buttonProps\"] }] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: SortBuilderComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'formly-sort-builder',\n standalone: true,\n imports: [CommonModule, FormsModule, SelectModule, ButtonModule],\n template: `\r\n <div class=\"sort-builder p-3 border-round border-1 surface-border\">\r\n <h4 class=\"mt-0\">{{ props.label }}</h4>\r\n\r\n <div *ngFor=\"let sort of sorts; let i = index\" class=\"sort-row mb-2 p-2 border-round surface-card\">\r\n <div class=\"grid grid-nogutter align-items-center gap-2\">\r\n <!-- Field Selector -->\r\n <div class=\"col\">\r\n <p-select\r\n [options]=\"props['fields']\"\r\n optionLabel=\"label\"\r\n optionValue=\"key\"\r\n [(ngModel)]=\"sort.field\"\r\n placeholder=\"اختر الحقل للترتيب\"\r\n [showClear]=\"true\"\r\n styleClass=\"w-full\">\r\n </p-select>\r\n </div>\r\n\r\n <!-- Direction Selector -->\r\n <div class=\"col\">\r\n <p-select\r\n [options]=\"directionOptions\"\r\n [(ngModel)]=\"sort.direction\"\r\n placeholder=\"الاتجاه\"\r\n styleClass=\"w-full\">\r\n </p-select>\r\n </div>\r\n\r\n <!-- Remove Button -->\r\n <div class=\"col-fixed\">\r\n <button\r\n pButton\r\n icon=\"pi pi-times\"\r\n class=\"p-button-danger p-button-text\"\r\n (click)=\"removeSort(i)\">\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <button\r\n pButton\r\n icon=\"pi pi-sort-alt\"\r\n label=\"إضافة ترتيب\"\r\n class=\"p-button-outlined w-full\"\r\n (click)=\"addSort()\">\r\n </button>\r\n </div>\r\n `\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydC1idWlsZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmcudWkuY29yZS9nZW5lcmljLXNlYXJjaC1hZHZhbmNlZC9zcmMvbGliL3NvcnQtYnVpbGRlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsNEJBQTRCO0FBQzVCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFFLFNBQVMsRUFBbUIsTUFBTSxrQkFBa0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7OztBQXlEOUMsTUFBTSxPQUFPLG9CQUFxQixTQUFRLFNBQTBCO0lBQ2xFLEtBQUssR0FBVSxFQUFFLENBQUM7SUFDbEIsZ0JBQWdCLEdBQUc7UUFDakIsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUU7UUFDakMsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUU7S0FDbkMsQ0FBQztJQUVGLFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3BFLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0MsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPO1FBQ0wsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ2pELElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQWE7UUFDdEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzVCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUM3QyxDQUFDO3VHQXpCVSxvQkFBb0I7MkZBQXBCLG9CQUFvQixzR0FuRHJCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaURULDJEQWxEUyxZQUFZLDJKQUFFLFdBQVcsOFZBQUUsWUFBWSx3L0JBQUUsWUFBWTs7MkZBb0RwRCxvQkFBb0I7a0JBdkRoQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxxQkFBcUI7b0JBQy9CLFVBQVUsRUFBRSxJQUFJO29CQUNoQixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxZQUFZLENBQUM7b0JBQ2hFLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWlEVDtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbIi8vIHNvcnQtYnVpbGRlci5jb21wb25lbnQudHNcclxuaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZpZWxkVHlwZSwgRmllbGRUeXBlQ29uZmlnIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBTZWxlY3RNb2R1bGUgfSBmcm9tICdwcmltZW5nL3NlbGVjdCc7XHJcbmltcG9ydCB7IEJ1dHRvbk1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvYnV0dG9uJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZm9ybWx5LXNvcnQtYnVpbGRlcicsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGb3Jtc01vZHVsZSwgU2VsZWN0TW9kdWxlLCBCdXR0b25Nb2R1bGVdLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8ZGl2IGNsYXNzPVwic29ydC1idWlsZGVyIHAtMyBib3JkZXItcm91bmQgYm9yZGVyLTEgc3VyZmFjZS1ib3JkZXJcIj5cclxuICAgICAgPGg0IGNsYXNzPVwibXQtMFwiPnt7IHByb3BzLmxhYmVsIH19PC9oND5cclxuXHJcbiAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHNvcnQgb2Ygc29ydHM7IGxldCBpID0gaW5kZXhcIiBjbGFzcz1cInNvcnQtcm93IG1iLTIgcC0yIGJvcmRlci1yb3VuZCBzdXJmYWNlLWNhcmRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZCBncmlkLW5vZ3V0dGVyIGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiPlxyXG4gICAgICAgICAgPCEtLSBGaWVsZCBTZWxlY3RvciAtLT5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgPHAtc2VsZWN0XHJcbiAgICAgICAgICAgICAgW29wdGlvbnNdPVwicHJvcHNbJ2ZpZWxkcyddXCJcclxuICAgICAgICAgICAgICBvcHRpb25MYWJlbD1cImxhYmVsXCJcclxuICAgICAgICAgICAgICBvcHRpb25WYWx1ZT1cImtleVwiXHJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzb3J0LmZpZWxkXCJcclxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cItin2K7YqtixINin2YTYrdmC2YQg2YTZhNiq2LHYqtmK2KhcIlxyXG4gICAgICAgICAgICAgIFtzaG93Q2xlYXJdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgc3R5bGVDbGFzcz1cInctZnVsbFwiPlxyXG4gICAgICAgICAgICA8L3Atc2VsZWN0PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPCEtLSBEaXJlY3Rpb24gU2VsZWN0b3IgLS0+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgIDxwLXNlbGVjdFxyXG4gICAgICAgICAgICAgIFtvcHRpb25zXT1cImRpcmVjdGlvbk9wdGlvbnNcIlxyXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic29ydC5kaXJlY3Rpb25cIlxyXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwi2KfZhNin2KrYrNin2YdcIlxyXG4gICAgICAgICAgICAgIHN0eWxlQ2xhc3M9XCJ3LWZ1bGxcIj5cclxuICAgICAgICAgICAgPC9wLXNlbGVjdD5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDwhLS0gUmVtb3ZlIEJ1dHRvbiAtLT5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtZml4ZWRcIj5cclxuICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgIHBCdXR0b25cclxuICAgICAgICAgICAgICBpY29uPVwicGkgcGktdGltZXNcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwicC1idXR0b24tZGFuZ2VyIHAtYnV0dG9uLXRleHRcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmVTb3J0KGkpXCI+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgIHBCdXR0b25cclxuICAgICAgICBpY29uPVwicGkgcGktc29ydC1hbHRcIlxyXG4gICAgICAgIGxhYmVsPVwi2KXYttin2YHYqSDYqtix2KrZitioXCJcclxuICAgICAgICBjbGFzcz1cInAtYnV0dG9uLW91dGxpbmVkIHctZnVsbFwiXHJcbiAgICAgICAgKGNsaWNrKT1cImFkZFNvcnQoKVwiPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gIGBcclxufSlcclxuZXhwb3J0IGNsYXNzIFNvcnRCdWlsZGVyQ29tcG9uZW50IGV4dGVuZHMgRmllbGRUeXBlPEZpZWxkVHlwZUNvbmZpZz4ge1xyXG4gIHNvcnRzOiBhbnlbXSA9IFtdO1xyXG4gIGRpcmVjdGlvbk9wdGlvbnMgPSBbXHJcbiAgICB7IGxhYmVsOiAn2KrYtdin2LnYr9mKJywgdmFsdWU6ICdhc2MnIH0sXHJcbiAgICB7IGxhYmVsOiAn2KrZhtin2LLZhNmKJywgdmFsdWU6ICdkZXNjJyB9XHJcbiAgXTtcclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBpZiAodGhpcy5mb3JtQ29udHJvbC52YWx1ZSAmJiBBcnJheS5pc0FycmF5KHRoaXMuZm9ybUNvbnRyb2wudmFsdWUpKSB7XHJcbiAgICAgIHRoaXMuc29ydHMgPSBbLi4udGhpcy5mb3JtQ29udHJvbC52YWx1ZV07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhZGRTb3J0KCkge1xyXG4gICAgdGhpcy5zb3J0cy5wdXNoKHsgZmllbGQ6ICcnLCBkaXJlY3Rpb246ICdhc2MnIH0pO1xyXG4gICAgdGhpcy51cGRhdGVWYWx1ZSgpO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlU29ydChpbmRleDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLnNvcnRzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICB0aGlzLnVwZGF0ZVZhbHVlKCk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVWYWx1ZSgpIHtcclxuICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsdWUoWy4uLnRoaXMuc29ydHNdKTtcclxuICB9XHJcbn1cclxuIl19","// generic-search.component.ts\nimport { Component, EventEmitter, Input, Output, ViewChild, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { FormlyForm, FormlyModule } from '@ngx-formly/core';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { ToolbarModule } from 'primeng/toolbar';\nimport { ButtonModule } from 'primeng/button';\nimport { Popover, PopoverModule } from 'primeng/popover';\nimport { InputIconModule } from 'primeng/inputicon';\nimport { IconFieldModule } from 'primeng/iconfield';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { DrawerModule } from 'primeng/drawer';\nimport { QueryBuilderService } from './query-builder.service';\nimport { QueryBuilderComponent } from './query-builder.component';\nimport { SortBuilderComponent } from './sort-builder.component';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"primeng/button\";\nimport * as i2 from \"@angular/forms\";\nimport * as i3 from \"primeng/iconfield\";\nimport * as i4 from \"primeng/inputtext\";\nimport * as i5 from \"primeng/drawer\";\nimport * as i6 from \"@ngx-formly/core\";\nimport * as i7 from \"@ngx-translate/core\";\nexport class GenericSearchAdvanced {\n overlay;\n translate = inject(TranslateService);\n queryBuilder = inject(QueryBuilderService);\n drawerVisible = false;\n search = new EventEmitter();\n odataSearch = new EventEmitter();\n form = new FormGroup({});\n model = {};\n options = {};\n fields = [];\n fields_ = [];\n enableQueryBuilder = false;\n odataConfig = {};\n ngOnInit() {\n this.buildQueryUIFields();\n }\n buildQueryUIFields() {\n if (this.enableQueryBuilder) {\n this.fields_ = this.queryBuilder.buildQueryUIFields(this.fields);\n }\n else {\n this.fields_ = this.fields;\n }\n }\n onSubmit() {\n this.search.emit(this.model);\n if (this.enableQueryBuilder) {\n const odataParams = this.queryBuilder.buildODataFromQueryModel(this.model, this.fields);\n this.odataSearch.emit(odataParams);\n // Generate query string\n const queryString = this.queryBuilder.toODataQueryString(odataParams);\n console.log('OData Query String:', queryString);\n }\n else {\n // Use existing logic for non-query-builder mode\n const odataParams = this.buildODataQueryParameters(this.model);\n this.odataSearch.emit(odataParams);\n }\n }\n onReset() {\n this.model = {};\n this.form.reset();\n this.search.emit(this.model);\n this.odataSearch.emit({\n filters: [],\n orderBy: [],\n groupBy: [],\n expand: []\n });\n }\n // Existing OData building methods for backward compatibility\n buildODataQueryParameters(model) {\n const params = {\n filters: [],\n orderBy: [],\n groupBy: [],\n expand: this.odataConfig.expandFields || []\n };\n Object.keys(model).forEach(key => {\n const value = model[key];\n if (value === null || value === undefined || value === '' ||\n (Array.isArray(value) && value.length === 0)) {\n return;\n }\n if (typeof value === 'object' && value !== null) {\n this.processComplexField(key, value, params);\n }\n else {\n params.filters.push({\n field: key,\n operator: 'eq',\n value: value,\n logicalOperator: 'and'\n });\n }\n });\n return params;\n }\n processComplexField(key, value, params) {\n if (value.from || value.to) {\n if (value.from) {\n params.filters.push({\n field: key,\n operator: 'ge',\n value: value.from,\n logicalOperator: 'and'\n });\n }\n if (value.to) {\n params.filters.push({\n field: key,\n operator: 'le',\n value: value.to,\n logicalOperator: 'and'\n });\n }\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericSearchAdvanced, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.1.8\", type: GenericSearchAdvanced, isStandalone: true, selector: \"lib-generic-search-advanced\", inputs: { model: \"model\", fields: \"fields\", enableQueryBuilder: \"enableQueryBuilder\", odataConfig: \"odataConfig\" }, outputs: { search: \"search\", odataSearch: \"odataSearch\" }, viewQueries: [{ propertyName: \"overlay\", first: true, predicate: [\"overlay\"], descendants: true }], ngImport: i0, template: \"<div class=\\\"flex flex-wrap items-center gap-3 w-full\\\">\\r\\n <!-- Search Input with Icon -->\\r\\n <p-iconfield iconPosition=\\\"left\\\">\\r\\n <input\\r\\n pInputText\\r\\n type=\\\"text\\\"\\r\\n (keyup.enter)=\\\"onSubmit()\\\"\\r\\n [(ngModel)]=\\\"model['filter']\\\"\\r\\n placeholder=\\\"{{ 'SEARCH' | translate }}\\\"\\r\\n />\\r\\n </p-iconfield>\\r\\n\\r\\n <!-- Filter Button -->\\r\\n <p-button\\r\\n icon=\\\"pi pi-filter\\\"\\r\\n outlined\\r\\n severity=\\\"secondary\\\"\\r\\n (onClick)=\\\"drawerVisible = true\\\"\\r\\n ></p-button>\\r\\n</div>\\r\\n\\r\\n<!-- Drawer for Advanced Multi-field Search -->\\r\\n<p-drawer\\r\\n [(visible)]=\\\"drawerVisible\\\"\\r\\n position=\\\"right\\\"\\r\\n [modal]=\\\"true\\\"\\r\\n [dismissible]=\\\"true\\\"\\r\\n styleClass=\\\"p-4 w-full max-w-md max-h-[90vh] flex flex-col\\\"\\r\\n>\\r\\n <!-- Entire form wrapper -->\\r\\n <form [formGroup]=\\\"form\\\" (ngSubmit)=\\\"onSubmit(); drawerVisible=false\\\" class=\\\"flex flex-col flex-1\\\">\\r\\n <!-- Scrollable Form -->\\r\\n <div class=\\\"flex-1 overflow-auto\\\">\\r\\n <formly-form\\r\\n [form]=\\\"form\\\"\\r\\n [fields]=\\\"fields_\\\"\\r\\n [model]=\\\"model\\\"\\r\\n [options]=\\\"options\\\"\\r\\n >\\r\\n </formly-form>\\r\\n </div>\\r\\n\\r\\n <!-- Action Buttons -->\\r\\n <div class=\\\"flex justify-end mt-2 space-x-2 flex-none\\\">\\r\\n <button type=\\\"submit\\\" pButton size=\\\"small\\\" label=\\\"{{ 'SEARCH' | translate }}\\\"></button>\\r\\n <button\\r\\n type=\\\"button\\\"\\r\\n pButton\\r\\n size=\\\"small\\\"\\r\\n class=\\\"p-button-text\\\"\\r\\n (click)=\\\"onReset(); drawerVisible=false\\\"\\r\\n >\\r\\n {{ 'CLEAR' | translate }}\\r\\n </button>\\r\\n </div>\\r\\n </form>\\r\\n</p-drawer>\\r\\n\", dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"component\", type: FormlyForm, selector: \"formly-form\", inputs: [\"form\", \"model\", \"fields\", \"options\"], outputs: [\"modelChange\"] }, { kind: \"ngmodule\", type: TranslateModule }, { kind: \"ngmodule\", type: ToolbarModule }, { kind: \"ngmodule\", type: ButtonModule }, { kind: \"directive\", type: i1.ButtonDirective, selector: \"[pButton]\", inputs: [\"iconPos\", \"loadingIcon\", \"loading\", \"severity\", \"raised\", \"rounded\", \"text\", \"outlined\", \"size\", \"plain\", \"fluid\", \"label\", \"icon\", \"buttonProps\"] }, { kind: \"component\", type: i1.Button, selector: \"p-button\", inputs: [\"type\", \"iconPos\", \"icon\", \"badge\", \"label\", \"disabled\", \"loading\", \"loadingIcon\", \"raised\", \"rounded\", \"text\", \"plain\", \"severity\", \"outlined\", \"link\", \"tabindex\", \"size\", \"variant\", \"style\", \"styleClass\", \"badgeClass\", \"badgeSeverity\", \"ariaLabel\", \"buttonProps\", \"autofocus\", \"fluid\"], outputs: [\"onClick\", \"onFocus\", \"onBlur\"] }, { kind: \"ngmodule\", type: ReactiveFormsModule }, { kind: \"directive\", type: i2.ɵNgNoValidate, selector: \"form:not([ngNoForm]):not([ngNativeValidate])\" }, { kind: \"directive\", type: i2.DefaultValueAccessor, selector: \"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]\" }, { kind: \"directive\", type: i2.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i2.NgControlStatusGroup, selector: \"[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]\" }, { kind: \"directive\", type: i2.FormGroupDirective, selector: \"[formGroup]\", inputs: [\"formGroup\"], outputs: [\"ngSubmit\"], exportAs: [\"ngForm\"] }, { kind: \"ngmodule\", type: PopoverModule }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i2.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"ngmodule\", type: InputIconModule }, { kind: \"ngmodule\", type: IconFieldModule }, { kind: \"component\", type: i3.IconField, selector: \"p-iconfield, p-iconField, p-icon-field\", inputs: [\"iconPosition\", \"styleClass\"] }, { kind: \"ngmodule\", type: InputTextModule }, { kind: \"directive\", type: i4.InputText, selector: \"[pInputText]\", inputs: [\"pSize\", \"variant\", \"fluid\", \"invalid\"] }, { kind: \"ngmodule\", type: DrawerModule }, { kind: \"component\", type: i5.Drawer, selector: \"p-drawer\", inputs: [\"appendTo\", \"blockScroll\", \"style\", \"styleClass\", \"ariaCloseLabel\", \"autoZIndex\", \"baseZIndex\", \"modal\", \"closeButtonProps\", \"dismissible\", \"showCloseIcon\", \"closeOnEscape\", \"transitionOptions\", \"visible\", \"position\", \"fullScreen\", \"header\", \"maskStyle\", \"closable\"], outputs: [\"onShow\", \"onHide\", \"visibleChange\"] }, { kind: \"ngmodule\", type: FormlyModule }, { kind: \"component\", type: i6.LegacyFormlyForm, selector: \"formly-form\" }, { kind: \"pipe\", type: i7.TranslatePipe, name: \"translate\" }] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericSearchAdvanced, decorators: [{\n type: Component,\n args: [{ selector: 'lib-generic-search-advanced', standalone: true, imports: [\n CommonModule,\n FormlyForm,\n TranslateModule,\n ToolbarModule,\n ButtonModule,\n ReactiveFormsModule,\n PopoverModule,\n FormsModule,\n InputIconModule,\n IconFieldModule,\n InputTextModule,\n DrawerModule,\n FormlyModule,\n QueryBuilderComponent,\n SortBuilderComponent\n ], template: \"<div class=\\\"flex flex-wrap items-center gap-3 w-full\\\">\\r\\n <!-- Search Input with Icon -->\\r\\n <p-iconfield iconPosition=\\\"left\\\">\\r\\n <input\\r\\n pInputText\\r\\n type=\\\"text\\\"\\r\\n (keyup.enter)=\\\"onSubmit()\\\"\\r\\n [(ngModel)]=\\\"model['filter']\\\"\\r\\n placeholder=\\\"{{ 'SEARCH' | translate }}\\\"\\r\\n />\\r\\n </p-iconfield>\\r\\n\\r\\n <!-- Filter Button -->\\r\\n <p-button\\r\\n icon=\\\"pi pi-filter\\\"\\r\\n outlined\\r\\n severity=\\\"secondary\\\"\\r\\n (onClick)=\\\"drawerVisible = true\\\"\\r\\n ></p-button>\\r\\n</div>\\r\\n\\r\\n<!-- Drawer for Advanced Multi-field Search -->\\r\\n<p-drawer\\r\\n [(visible)]=\\\"drawerVisible\\\"\\r\\n position=\\\"right\\\"\\r\\n [modal]=\\\"true\\\"\\r\\n [dismissible]=\\\"true\\\"\\r\\n styleClass=\\\"p-4 w-full max-w-md max-h-[90vh] flex flex-col\\\"\\r\\n>\\r\\n <!-- Entire form wrapper -->\\r\\n <form [formGroup]=\\\"form\\\" (ngSubmit)=\\\"onSubmit(); drawerVisible=false\\\" class=\\\"flex flex-col flex-1\\\">\\r\\n <!-- Scrollable Form -->\\r\\n <div class=\\\"flex-1 overflow-auto\\\">\\r\\n <formly-form\\r\\n [form]=\\\"form\\\"\\r\\n [fields]=\\\"fields_\\\"\\r\\n [model]=\\\"model\\\"\\r\\n [options]=\\\"options\\\"\\r\\n >\\r\\n </formly-form>\\r\\n </div>\\r\\n\\r\\n <!-- Action Buttons -->\\r\\n <div class=\\\"flex justify-end mt-2 space-x-2 flex-none\\\">\\r\\n <button type=\\\"submit\\\" pButton size=\\\"small\\\" label=\\\"{{ 'SEARCH' | translate }}\\\"></button>\\r\\n <button\\r\\n type=\\\"button\\\"\\r\\n pButton\\r\\n size=\\\"small\\\"\\r\\n class=\\\"p-button-text\\\"\\r\\n (click)=\\\"onReset(); drawerVisible=false\\\"\\r\\n >\\r\\n {{ 'CLEAR' | translate }}\\r\\n </button>\\r\\n </div>\\r\\n </form>\\r\\n</p-drawer>\\r\\n\" }]\n }], propDecorators: { overlay: [{\n type: ViewChild,\n args: ['overlay']\n }], search: [{\n type: Output\n }], odataSearch: [{\n type: Output\n }], model: [{\n type: Input\n }], fields: [{\n type: Input\n }], enableQueryBuilder: [{\n type: Input\n }], odataConfig: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1zZWFyY2gtYWR2YW5jZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25nLnVpLmNvcmUvZ2VuZXJpYy1zZWFyY2gtYWR2YW5jZWQvc3JjL2xpYi9nZW5lcmljLXNlYXJjaC1hZHZhbmNlZC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmcudWkuY29yZS9nZW5lcmljLXNlYXJjaC1hZHZhbmNlZC9zcmMvbGliL2dlbmVyaWMtc2VhcmNoLWFkdmFuY2VkLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsOEJBQThCO0FBQzlCLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3RSxPQUFPLEVBQXFCLFVBQVUsRUFBcUIsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbEcsT0FBTyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFOUQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7Ozs7OztBQXdCaEUsTUFBTSxPQUFPLHFCQUFxQjtJQUNWLE9BQU8sQ0FBVztJQUN4QyxTQUFTLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDN0IsWUFBWSxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBRW5ELGFBQWEsR0FBRyxLQUFLLENBQUM7SUFFWixNQUFNLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztJQUNqQyxXQUFXLEdBQUcsSUFBSSxZQUFZLEVBQXdCLENBQUM7SUFFakUsSUFBSSxHQUFHLElBQUksU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2hCLEtBQUssR0FBUSxFQUFFLENBQUM7SUFDekIsT0FBTyxHQUFzQixFQUFFLENBQUM7SUFDdkIsTUFBTSxHQUF3QixFQUFFLENBQUM7SUFDMUMsT0FBTyxHQUF3QixFQUFFLENBQUM7SUFFekIsa0JBQWtCLEdBQVksS0FBSyxDQUFDO0lBQ3BDLFdBQVcsR0FBUSxFQUFFLENBQUM7SUFFL0IsUUFBUTtRQUNOLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFTyxrQkFBa0I7UUFDeEIsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUM1QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ25FLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQzdCLENBQUM7SUFDSCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUU3QixJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQzVCLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDeEYsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7WUFFbkMsd0JBQXdCO1lBQ3hCLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDdEUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUNsRCxDQUFDO2FBQU0sQ0FBQztZQUNOLGdEQUFnRDtZQUNoRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQy9ELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3JDLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTztRQUNMLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO1lBQ3BCLE9BQU8sRUFBRSxFQUFFO1lBQ1gsT0FBTyxFQUFFLEVBQUU7WUFDWCxPQUFPLEVBQUUsRUFBRTtZQUNYLE1BQU0sRUFBRSxFQUFFO1NBQ1gsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELDZEQUE2RDtJQUNyRCx5QkFBeUIsQ0FBQyxLQUFVO1FBQzFDLE1BQU0sTUFBTSxHQUF5QjtZQUNuQyxPQUFPLEVBQUUsRUFBRTtZQUNYLE9BQU8sRUFBRSxFQUFFO1lBQ1gsT0FBTyxFQUFFLEVBQUU7WUFDWCxNQUFNLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLElBQUksRUFBRTtTQUM1QyxDQUFDO1FBRUYsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDL0IsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBRXpCLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxLQUFLLEtBQUssU0FBUyxJQUFJLEtBQUssS0FBSyxFQUFFO2dCQUNyRCxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUNqRCxPQUFPO1lBQ1QsQ0FBQztZQUVELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLEtBQUssS0FBSyxJQUFJLEVBQUUsQ0FBQztnQkFDaEQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDL0MsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO29CQUNsQixLQUFLLEVBQUUsR0FBRztvQkFDVixRQUFRLEVBQUUsSUFBSTtvQkFDZCxLQUFLLEVBQUUsS0FBSztvQkFDWixlQUFlLEVBQUUsS0FBSztpQkFDdkIsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVPLG1CQUFtQixDQUFDLEdBQVcsRUFBRSxLQUFVLEVBQUUsTUFBNEI7UUFDL0UsSUFBSSxLQUFLLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUMzQixJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDZixNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztvQkFDbEIsS0FBSyxFQUFFLEdBQUc7b0JBQ1YsUUFBUSxFQUFFLElBQUk7b0JBQ2QsS0FBSyxFQUFFLEtBQUssQ0FBQyxJQUFJO29CQUNqQixlQUFlLEVBQUUsS0FBSztpQkFDdkIsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztZQUNELElBQUksS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUNiLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO29CQUNsQixLQUFLLEVBQUUsR0FBRztvQkFDVixRQUFRLEVBQUUsSUFBSTtvQkFDZCxLQUFLLEVBQUUsS0FBSyxDQUFDLEVBQUU7b0JBQ2YsZUFBZSxFQUFFLEtBQUs7aUJBQ3ZCLENBQUMsQ0FBQztZQUNMLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQzt1R0EvR1UscUJBQXFCOzJGQUFyQixxQkFBcUIsMFdDeENsQyxzcURBeURBLDJDRG5DSSxZQUFZLCtCQUNaLFVBQVUsaUlBQ1YsZUFBZSw4QkFDZixhQUFhLDhCQUNiLFlBQVksdXBCQUNaLG1CQUFtQiw0eUJBQ25CLGFBQWEsOEJBQ2IsV0FBVyxzUEFDWCxlQUFlLDhCQUNmLGVBQWUscUtBQ2YsZUFBZSxxSkFDZixZQUFZLGlhQUNaLFlBQVk7OzJGQU1ILHFCQUFxQjtrQkF0QmpDLFNBQVM7K0JBQ0UsNkJBQTZCLGNBQzNCLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLFVBQVU7d0JBQ1YsZUFBZTt3QkFDZixhQUFhO3dCQUNiLFlBQVk7d0JBQ1osbUJBQW1CO3dCQUNuQixhQUFhO3dCQUNiLFdBQVc7d0JBQ1gsZUFBZTt3QkFDZixlQUFlO3dCQUNmLGVBQWU7d0JBQ2YsWUFBWTt3QkFDWixZQUFZO3dCQUNaLHFCQUFxQjt3QkFDckIsb0JBQW9CO3FCQUNyQjs4QkFJcUIsT0FBTztzQkFBNUIsU0FBUzt1QkFBQyxTQUFTO2dCQU1WLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUdFLEtBQUs7c0JBQWIsS0FBSztnQkFFRyxNQUFNO3NCQUFkLEtBQUs7Z0JBR0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBnZW5lcmljLXNlYXJjaC5jb21wb25lbnQudHNcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRm9ybUdyb3VwLCBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEZvcm1seUZpZWxkQ29uZmlnLCBGb3JtbHlGb3JtLCBGb3JtbHlGb3JtT3B0aW9ucywgRm9ybWx5TW9kdWxlIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUsIFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IFRvb2xiYXJNb2R1bGUgfSBmcm9tICdwcmltZW5nL3Rvb2xiYXInO1xuaW1wb3J0IHsgQnV0dG9uTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9idXR0b24nO1xuaW1wb3J0IHsgUG9wb3ZlciwgUG9wb3Zlck1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvcG9wb3Zlcic7XG5pbXBvcnQgeyBJbnB1dEljb25Nb2R1bGUgfSBmcm9tICdwcmltZW5nL2lucHV0aWNvbic7XG5pbXBvcnQgeyBJY29uRmllbGRNb2R1bGUgfSBmcm9tICdwcmltZW5nL2ljb25maWVsZCc7XG5pbXBvcnQgeyBJbnB1dFRleHRNb2R1bGUgfSBmcm9tICdwcmltZW5nL2lucHV0dGV4dCc7XG5pbXBvcnQgeyBEcmF3ZXJNb2R1bGUgfSBmcm9tICdwcmltZW5nL2RyYXdlcic7XG5pbXBvcnQgeyBRdWVyeUJ1aWxkZXJTZXJ2aWNlIH0gZnJvbSAnLi9xdWVyeS1idWlsZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgT0RhdGFRdWVyeVBhcmFtZXRlcnMgfSBmcm9tICcuL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgUXVlcnlCdWlsZGVyQ29tcG9uZW50IH0gZnJvbSAnLi9xdWVyeS1idWlsZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTb3J0QnVpbGRlckNvbXBvbmVudCB9IGZyb20gJy4vc29ydC1idWlsZGVyLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1nZW5lcmljLXNlYXJjaC1hZHZhbmNlZCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRm9ybWx5Rm9ybSxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgVG9vbGJhck1vZHVsZSxcbiAgICBCdXR0b25Nb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBQb3BvdmVyTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIElucHV0SWNvbk1vZHVsZSxcbiAgICBJY29uRmllbGRNb2R1bGUsXG4gICAgSW5wdXRUZXh0TW9kdWxlLFxuICAgIERyYXdlck1vZHVsZSxcbiAgICBGb3JtbHlNb2R1bGUsXG4gICAgUXVlcnlCdWlsZGVyQ29tcG9uZW50LFxuICAgIFNvcnRCdWlsZGVyQ29tcG9uZW50XG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9nZW5lcmljLXNlYXJjaC1hZHZhbmNlZC5odG1sJyxcbn0pXG5leHBvcnQgY2xhc3MgR2VuZXJpY1NlYXJjaEFkdmFuY2VkIGltcGxlbWVudHMgT25Jbml0IHtcbiAgQFZpZXdDaGlsZCgnb3ZlcmxheScpIG92ZXJsYXkhOiBQb3BvdmVyO1xuICB0cmFuc2xhdGUgPSBpbmplY3QoVHJhbnNsYXRlU2VydmljZSk7XG4gIHByaXZhdGUgcXVlcnlCdWlsZGVyID0gaW5qZWN0KFF1ZXJ5QnVpbGRlclNlcnZpY2UpO1xuXG4gIGRyYXdlclZpc2libGUgPSBmYWxzZTtcblxuICBAT3V0cHV0KCkgc2VhcmNoID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBvZGF0YVNlYXJjaCA9IG5ldyBFdmVudEVtaXR0ZXI8T0RhdGFRdWVyeVBhcmFtZXRlcnM+KCk7XG5cbiAgZm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xuICBASW5wdXQoKSBtb2RlbDogYW55ID0ge307XG4gIG9wdGlvbnM6IEZvcm1seUZvcm1PcHRpb25zID0ge307XG4gIEBJbnB1dCgpIGZpZWxkczogRm9ybWx5RmllbGRDb25maWdbXSA9IFtdO1xuICBmaWVsZHNfOiBGb3JtbHlGaWVsZENvbmZpZ1tdID0gW107XG5cbiAgQElucHV0KCkgZW5hYmxlUXVlcnlCdWlsZGVyOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIG9kYXRhQ29uZmlnOiBhbnkgPSB7fTtcblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmJ1aWxkUXVlcnlVSUZpZWxkcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZFF1ZXJ5VUlGaWVsZHMoKSB7XG4gICAgaWYgKHRoaXMuZW5hYmxlUXVlcnlCdWlsZGVyKSB7XG4gICAgICB0aGlzLmZpZWxkc18gPSB0aGlzLnF1ZXJ5QnVpbGRlci5idWlsZFF1ZXJ5VUlGaWVsZHModGhpcy5maWVsZHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZpZWxkc18gPSB0aGlzLmZpZWxkcztcbiAgICB9XG4gIH1cblxuICBvblN1Ym1pdCgpIHtcbiAgICB0aGlzLnNlYXJjaC5lbWl0KHRoaXMubW9kZWwpO1xuXG4gICAgaWYgKHRoaXMuZW5hYmxlUXVlcnlCdWlsZGVyKSB7XG4gICAgICBjb25zdCBvZGF0YVBhcmFtcyA9IHRoaXMucXVlcnlCdWlsZGVyLmJ1aWxkT0RhdGFGcm9tUXVlcnlNb2RlbCh0aGlzLm1vZGVsLCB0aGlzLmZpZWxkcyk7XG4gICAgICB0aGlzLm9kYXRhU2VhcmNoLmVtaXQob2RhdGFQYXJhbXMpO1xuXG4gICAgICAvLyBHZW5lcmF0ZSBxdWVyeSBzdHJpbmdcbiAgICAgIGNvbnN0IHF1ZXJ5U3RyaW5nID0gdGhpcy5xdWVyeUJ1aWxkZXIudG9PRGF0YVF1ZXJ5U3RyaW5nKG9kYXRhUGFyYW1zKTtcbiAgICAgIGNvbnNvbGUubG9nKCdPRGF0YSBRdWVyeSBTdHJpbmc6JywgcXVlcnlTdHJpbmcpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBVc2UgZXhpc3RpbmcgbG9naWMgZm9yIG5vbi1xdWVyeS1idWlsZGVyIG1vZGVcbiAgICAgIGNvbnN0IG9kYXRhUGFyYW1zID0gdGhpcy5idWlsZE9EYXRhUXVlcnlQYXJhbWV0ZXJzKHRoaXMubW9kZWwpO1xuICAgICAgdGhpcy5vZGF0YVNlYXJjaC5lbWl0KG9kYXRhUGFyYW1zKTtcbiAgICB9XG4gIH1cblxuICBvblJlc2V0KCkge1xuICAgIHRoaXMubW9kZWwgPSB7fTtcbiAgICB0aGlzLmZvcm0ucmVzZXQoKTtcbiAgICB0aGlzLnNlYXJjaC5lbWl0KHRoaXMubW9kZWwpO1xuICAgIHRoaXMub2RhdGFTZWFyY2guZW1pdCh7XG4gICAgICBmaWx0ZXJzOiBbXSxcbiAgICAgIG9yZGVyQnk6IFtdLFxuICAgICAgZ3JvdXBCeTogW10sXG4gICAgICBleHBhbmQ6IFtdXG4gICAgfSk7XG4gIH1cblxuICAvLyBFeGlzdGluZyBPRGF0YSBidWlsZGluZyBtZXRob2RzIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5XG4gIHByaXZhdGUgYnVpbGRPRGF0YVF1ZXJ5UGFyYW1ldGVycyhtb2RlbDogYW55KTogT0RhdGFRdWVyeVBhcmFtZXRlcnMge1xuICAgIGNvbnN0IHBhcmFtczogT0RhdGFRdWVyeVBhcmFtZXRlcnMgPSB7XG4gICAgICBmaWx0ZXJzOiBbXSxcbiAgICAgIG9yZGVyQnk6IFtdLFxuICAgICAgZ3JvdXBCeTogW10sXG4gICAgICBleHBhbmQ6IHRoaXMub2RhdGFDb25maWcuZXhwYW5kRmllbGRzIHx8IFtdXG4gICAgfTtcblxuICAgIE9iamVjdC5rZXlzKG1vZGVsKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICBjb25zdCB2YWx1ZSA9IG1vZGVsW2tleV07XG5cbiAgICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSAnJyB8fFxuICAgICAgICAgIChBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPT09IDApKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgIT09IG51bGwpIHtcbiAgICAgICAgdGhpcy5wcm9jZXNzQ29tcGxleEZpZWxkKGtleSwgdmFsdWUsIHBhcmFtcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwYXJhbXMuZmlsdGVycy5wdXNoKHtcbiAgICAgICAgICBmaWVsZDoga2V5LFxuICAgICAgICAgIG9wZXJhdG9yOiAnZXEnLFxuICAgICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgICBsb2dpY2FsT3BlcmF0b3I6ICdhbmQnXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHBhcmFtcztcbiAgfVxuXG4gIHByaXZhdGUgcHJvY2Vzc0NvbXBsZXhGaWVsZChrZXk6IHN0cmluZywgdmFsdWU6IGFueSwgcGFyYW1zOiBPRGF0YVF1ZXJ5UGFyYW1ldGVycyk6IHZvaWQge1xuICAgIGlmICh2YWx1ZS5mcm9tIHx8IHZhbHVlLnRvKSB7XG4gICAgICBpZiAodmFsdWUuZnJvbSkge1xuICAgICAgICBwYXJhbXMuZmlsdGVycy5wdXNoKHtcbiAgICAgICAgICBmaWVsZDoga2V5LFxuICAgICAgICAgIG9wZXJhdG9yOiAnZ2UnLFxuICAgICAgICAgIHZhbHVlOiB2YWx1ZS5mcm9tLFxuICAgICAgICAgIGxvZ2ljYWxPcGVyYXRvcjogJ2FuZCdcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBpZiAodmFsdWUudG8pIHtcbiAgICAgICAgcGFyYW1zLmZpbHRlcnMucHVzaCh7XG4gICAgICAgICAgZmllbGQ6IGtleSxcbiAgICAgICAgICBvcGVyYXRvcjogJ2xlJyxcbiAgICAgICAgICB2YWx1ZTogdmFsdWUudG8sXG4gICAgICAgICAgbG9naWNhbE9wZXJhdG9yOiAnYW5kJ1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtd3JhcCBpdGVtcy1jZW50ZXIgZ2FwLTMgdy1mdWxsXCI+XHJcbiAgPCEtLSBTZWFyY2ggSW5wdXQgd2l0aCBJY29uIC0tPlxyXG4gIDxwLWljb25maWVsZCBpY29uUG9zaXRpb249XCJsZWZ0XCI+XHJcbiAgICA8aW5wdXRcclxuICAgICAgcElucHV0VGV4dFxyXG4gICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgIChrZXl1cC5lbnRlcik9XCJvblN1Ym1pdCgpXCJcclxuICAgICAgWyhuZ01vZGVsKV09XCJtb2RlbFsnZmlsdGVyJ11cIlxyXG4gICAgICBwbGFjZWhvbGRlcj1cInt7ICdTRUFSQ0gnIHwgdHJhbnNsYXRlIH19XCJcclxuICAgIC8+XHJcbiAgPC9wLWljb25maWVsZD5cclxuXHJcbiAgPCEtLSBGaWx0ZXIgQnV0dG9uIC0tPlxyXG4gIDxwLWJ1dHRvblxyXG4gICAgaWNvbj1cInBpIHBpLWZpbHRlclwiXHJcbiAgICBvdXRsaW5lZFxyXG4gICAgc2V2ZXJpdHk9XCJzZWNvbmRhcnlcIlxyXG4gICAgKG9uQ2xpY2spPVwiZHJhd2VyVmlzaWJsZSA9IHRydWVcIlxyXG4gID48L3AtYnV0dG9uPlxyXG48L2Rpdj5cclxuXHJcbjwhLS0gRHJhd2VyIGZvciBBZHZhbmNlZCBNdWx0aS1maWVsZCBTZWFyY2ggLS0+XHJcbjxwLWRyYXdlclxyXG4gIFsodmlzaWJsZSldPVwiZHJhd2VyVmlzaWJsZVwiXHJcbiAgcG9zaXRpb249XCJyaWdodFwiXHJcbiAgW21vZGFsXT1cInRydWVcIlxyXG4gIFtkaXNtaXNzaWJsZV09XCJ0cnVlXCJcclxuICBzdHlsZUNsYXNzPVwicC00IHctZnVsbCBtYXgtdy1tZCBtYXgtaC1bOTB2aF0gZmxleCBmbGV4LWNvbFwiXHJcbj5cclxuICA8IS0tIEVudGlyZSBmb3JtIHdyYXBwZXIgLS0+XHJcbiAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCIgKG5nU3VibWl0KT1cIm9uU3VibWl0KCk7IGRyYXdlclZpc2libGU9ZmFsc2VcIiBjbGFzcz1cImZsZXggZmxleC1jb2wgZmxleC0xXCI+XHJcbiAgICA8IS0tIFNjcm9sbGFibGUgRm9ybSAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJmbGV4LTEgb3ZlcmZsb3ctYXV0b1wiPlxyXG4gICAgICA8Zm9ybWx5LWZvcm1cclxuICAgICAgICBbZm9ybV09XCJmb3JtXCJcclxuICAgICAgICBbZmllbGRzXT1cImZpZWxkc19cIlxyXG4gICAgICAgIFttb2RlbF09XCJtb2RlbFwiXHJcbiAgICAgICAgW29wdGlvbnNdPVwib3B0aW9uc1wiXHJcbiAgICAgID5cclxuICAgICAgPC9mb3JtbHktZm9ybT5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gQWN0aW9uIEJ1dHRvbnMgLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWVuZCBtdC0yIHNwYWNlLXgtMiBmbGV4LW5vbmVcIj5cclxuICAgICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgcEJ1dHRvbiBzaXplPVwic21hbGxcIiBsYWJlbD1cInt7ICdTRUFSQ0gnIHwgdHJhbnNsYXRlIH19XCI+PC9idXR0b24+XHJcbiAgICAgIDxidXR0b25cclxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICBwQnV0dG9uXHJcbiAgICAgICAgc2l6ZT1cInNtYWxsXCJcclxuICAgICAgICBjbGFzcz1cInAtYnV0dG9uLXRleHRcIlxyXG4gICAgICAgIChjbGljayk9XCJvblJlc2V0KCk7IGRyYXdlclZpc2libGU9ZmFsc2VcIlxyXG4gICAgICA+XHJcbiAgICAgICAge3sgJ0NMRUFSJyB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZm9ybT5cclxuPC9wLWRyYXdlcj5cclxuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxpdGUuZnJhbWV3b3JrLW5nLnVpLmNvcmUtZ2VuZXJpYy1zZWFyY2gtYWR2YW5jZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL25nLnVpLmNvcmUvZ2VuZXJpYy1zZWFyY2gtYWR2YW5jZWQvc3JjL2VsaXRlLmZyYW1ld29yay1uZy51aS5jb3JlLWdlbmVyaWMtc2VhcmNoLWFkdmFuY2VkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":["i5","i4","i1","i3","i6"],"mappings":"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"}
1
+ {"version":3,"file":"elite.framework-ng.ui.core-generic-search-advanced.mjs","sources":["../tmp-esm2022/generic-search-advanced/lib/generic-search-advanced-module.js","../tmp-esm2022/generic-search-advanced/lib/query-builder.service.js","../tmp-esm2022/generic-search-advanced/lib/generic-search-advanced.js","../tmp-esm2022/generic-search-advanced/lib/sort-builder.component.js","../tmp-esm2022/generic-search-advanced/lib/query-builder.component.js","../tmp-esm2022/generic-search-advanced/lib/tab-type.component.js","../tmp-esm2022/generic-search-advanced/lib/group.component.js","../tmp-esm2022/generic-search-advanced/lib/formly-config.js","../tmp-esm2022/generic-search-advanced/elite.framework-ng.ui.core-generic-search-advanced.js"],"sourcesContent":["import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport * as i0 from \"@angular/core\";\nexport class GenericSearchAdvancedModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericSearchAdvancedModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericSearchAdvancedModule, imports: [CommonModule] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericSearchAdvancedModule, imports: [CommonModule] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericSearchAdvancedModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1zZWFyY2gtYWR2YW5jZWQtbW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZy51aS5jb3JlL2dlbmVyaWMtc2VhcmNoLWFkdmFuY2VkL3NyYy9saWIvZ2VuZXJpYy1zZWFyY2gtYWR2YW5jZWQtbW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQUsvQyxNQUFNLE9BQU8sMkJBQTJCO3VHQUEzQiwyQkFBMkI7d0dBQTNCLDJCQUEyQixZQUY1QixZQUFZO3dHQUVYLDJCQUEyQixZQUY1QixZQUFZOzsyRkFFWCwyQkFBMkI7a0JBSHZDLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO2lCQUN4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgR2VuZXJpY1NlYXJjaEFkdmFuY2VkTW9kdWxlIHt9XG4iXX0=","// query-builder.service.ts\nimport { inject, Injectable } from '@angular/core';\nimport { QueryParser } from '@elite.framework/ng.core/services';\nimport { TranslateService } from '@ngx-translate/core';\nimport * as i0 from \"@angular/core\";\nexport class QueryBuilderService {\n translate = inject(TranslateService);\n // Field type configuration that matches QueryBuilderComponent\n fieldTypeConfig = {\n 'input': { defaultOperator: 'contains', defaultValue: '', operators: ['eq', 'ne', 'contains', 'startswith', 'endswith'] },\n 'number': { defaultOperator: 'eq', defaultValue: null, operators: ['eq', 'ne', 'gt', 'ge', 'lt', 'le'] },\n 'datepicker': { defaultOperator: 'eq', defaultValue: null, operators: ['eq', 'ne', 'gt', 'ge', 'lt', 'le'] },\n 'select': { defaultOperator: 'eq', defaultValue: '', operators: ['eq', 'ne', 'in', 'notin'] },\n 'checkbox': { defaultOperator: 'eq', defaultValue: null, operators: ['eq', 'ne'] },\n 'generic-selector': { defaultOperator: 'eq', defaultValue: null, operators: ['eq', 'ne', 'in', 'notin'] },\n 'switch': { defaultOperator: 'eq', defaultValue: null, operators: ['eq', 'ne'] },\n 'radio': { defaultOperator: 'eq', defaultValue: '', operators: ['eq', 'ne'] },\n 'textarea': { defaultOperator: 'contains', defaultValue: '', operators: ['eq', 'ne', 'contains', 'startswith', 'endswith'] }\n };\n buildQueryUIFields(fields) {\n return [\n // {\n // key: 'quickSearch',\n // type: 'input',\n // props: {\n // label: 'بحث سريع',\n // placeholder: 'ابحث في جميع الحقول...',\n // icon: 'pi pi-search'\n // }\n // },\n {\n type: 'tab-type',\n // key: 'queryTabs',\n props: {\n tabViewClass: 'advanced-query-tabs',\n scrollable: false,\n lazy: true,\n activeIndex: 0\n },\n fieldGroup: this.getQueryTabs(fields)\n }\n ];\n }\n getQueryTabs(fields) {\n return [\n {\n type: 'group',\n props: {\n label: 'FILTERS',\n leftIcon: 'pi pi-filter',\n badge: (field) => {\n const fieldGroup = (field?.fieldGroup ?? [])[0];\n return (fieldGroup?.model?.advancedFilters ?? [])[0]?.conditions?.length || 0;\n },\n },\n fieldGroup: this.getFilterTabFields(fields)\n },\n {\n type: 'group',\n props: {\n label: 'SORTING',\n leftIcon: 'pi pi-sort-alt',\n badge: (field) => {\n const fieldGroup = (field?.fieldGroup ?? [])[0];\n return (fieldGroup?.model?.sorting ?? [])?.length || 0;\n },\n },\n fieldGroup: this.getSortingTabFields(fields)\n },\n {\n type: 'group',\n props: {\n label: 'PAGINATION',\n leftIcon: 'pi pi-table',\n badge: (field) => {\n return field?.model?.pagination && field?.model?.pagination?.top ? 1 : 0;\n },\n },\n fieldGroup: this.getPaginationTabFields()\n }\n ];\n }\n getFilterTabFields(fields) {\n return [\n {\n key: 'advancedFilters',\n type: 'query-builder',\n props: {\n label: 'مرشحات متقدمة',\n description: 'أنشئ مرشحات معقدة باستخدام مشغلين منطقيين',\n fields: this.extractFilterableFields(fields)\n }\n }\n ];\n }\n getSortingTabFields(fields) {\n return [\n {\n key: 'sorting',\n type: 'sort-builder',\n props: {\n label: 'ترتيب النتائج',\n description: 'حدد أولوية وعرض ترتيب البيانات',\n fields: this.extractSortableFields(fields)\n }\n }\n ];\n }\n getPaginationTabFields() {\n return [\n {\n key: 'pagination',\n type: 'group',\n props: {\n label: '',\n description: '',\n collapsible: false,\n showFieldCount: true,\n variant: 'card'\n },\n fieldGroup: [\n {\n key: 'top',\n type: 'input',\n props: {\n type: 'number',\n label: 'الحد الأقصى للسجلات',\n min: 1,\n max: 1000,\n description: 'أقصى عدد للسجلات المراد عرضها'\n }\n },\n // {\n // key: 'skip',\n // type: 'input',\n // props: {\n // type: 'number',\n // label: 'تخطي السجلات',\n // min: 0,\n // description: 'عدد السجلات التي سيتم تخطيها'\n // }\n // }\n ]\n }\n ];\n }\n getFilterCount() {\n return '0';\n }\n extractFilterableFields(fields) {\n const filterableFields = [];\n this.traverseFields(fields, (field) => {\n if (field.key && field.props && field.props['filterable'] !== false && !field.props?.hidden) {\n const fieldType = this.mapFieldType(field.type);\n const fieldConfig = this.fieldTypeConfig[fieldType] || this.fieldTypeConfig.input;\n filterableFields.push({\n key: field.key,\n label: this.translate.instant(field.props.label || field.key),\n type: fieldType,\n props: { ...field.props },\n operators: fieldConfig.operators,\n // Add default values for QueryBuilderComponent compatibility\n defaultOperator: fieldConfig.defaultOperator,\n defaultValue: fieldConfig.defaultValue\n });\n }\n });\n return filterableFields;\n }\n extractSortableFields(fields) {\n const sortableFields = [];\n this.traverseFields(fields, (field) => {\n if (field.key && field.props && field.props['sortable'] !== false && !field.props?.hidden) {\n sortableFields.push({\n key: field.key,\n label: this.translate.instant(field.props.label || field.key)\n });\n }\n });\n return sortableFields;\n }\n extractExpandableFields(fields) {\n const expandableFields = [];\n this.traverseFields(fields, (field) => {\n if (field.key && field.props && field.props['expandable'] && !field.props?.hidden) {\n expandableFields.push({\n label: field.props.label || field.key,\n value: field.key\n });\n }\n });\n return expandableFields;\n }\n traverseFields(fields, callback) {\n fields.forEach(field => {\n callback(field);\n if (field.fieldGroup) {\n this.traverseFields(field.fieldGroup, callback);\n }\n });\n }\n mapFieldType(type) {\n const typeMap = {\n 'input': 'input',\n 'number': 'number',\n 'datepicker': 'datepicker',\n 'select': 'select',\n 'checkbox': 'checkbox',\n 'generic-selector': 'generic-selector',\n 'switch': 'switch',\n 'radio': 'radio',\n 'textarea': 'textarea'\n };\n return typeMap[type || 'input'] || 'input';\n }\n getOperatorsForType(type) {\n const fieldType = this.mapFieldType(type);\n const config = this.fieldTypeConfig[fieldType];\n return config ? config.operators : ['eq', 'ne'];\n }\n // OData methods remain the same\n buildODataFromQueryModel(model, originalFields) {\n const params = {\n filters: [],\n orderBy: [],\n groupBy: [],\n expand: model.expand || []\n };\n // Quick search\n if (model.quickSearch) {\n const searchableFields = this.extractFilterableFields(originalFields);\n const quickSearchConditions = searchableFields.map(field => ({\n field: field.key,\n operator: 'contains',\n value: model.quickSearch\n }));\n if (quickSearchConditions.length > 0) {\n params.filters.push({\n logicalOperator: 'or',\n conditions: quickSearchConditions\n });\n }\n }\n // Advanced filters\n if (model.advancedFilters && Array.isArray(model.advancedFilters)) {\n params.filters.push(...model.advancedFilters);\n }\n // Sorting\n if (model.sorting && Array.isArray(model.sorting)) {\n params.orderBy = model.sorting\n .filter((sort) => sort.field && sort.direction)\n .map((sort) => ({\n field: sort.field,\n direction: sort.direction\n }));\n }\n // Pagination\n if (model.pagination) {\n if (model.pagination.top) {\n params.top = Number(model.pagination.top);\n }\n if (model.pagination.skip) {\n params.skip = Number(model.pagination.skip);\n }\n }\n return params;\n }\n toODataQueryString(params) {\n return QueryParser.toString(params);\n }\n parseODataQuery(queryString) {\n return QueryParser.parse(queryString);\n }\n parseODataToQueryModel(queryString, originalFields) {\n const params = this.parseODataQuery(queryString);\n const model = {\n advancedFilters: [],\n sorting: [],\n pagination: {}\n };\n // Parse filters back to UI model\n if (params.filters && params.filters.length > 0) {\n params.filters.forEach((group) => {\n if (group.logicalOperator === 'or' && group.conditions.length > 1) {\n const firstValue = group.conditions[0].value;\n if (group.conditions.every(cond => cond.operator === 'contains' && cond.value === firstValue)) {\n model.quickSearch = firstValue;\n return;\n }\n }\n group.conditions.forEach(condition => {\n model.advancedFilters.push({\n field: condition.field,\n operator: condition.operator,\n value: condition.value\n });\n });\n });\n }\n // Parse sorting\n if (params.orderBy) {\n model.sorting = params.orderBy.map(order => ({\n field: order.field,\n direction: order.direction\n }));\n }\n // Parse pagination\n if (params.top !== undefined) {\n model.pagination.top = params.top;\n }\n if (params.skip !== undefined) {\n model.pagination.skip = params.skip;\n }\n // Parse expand\n if (params.expand) {\n model.expand = params.expand;\n }\n return model;\n }\n buildODataQueryString(model, originalFields) {\n const params = this.buildODataFromQueryModel(model, originalFields);\n return this.toODataQueryString(params);\n }\n // Helper method to get field configuration for QueryBuilderComponent\n getFieldConfig(fieldKey, fields) {\n return fields.find(f => f.key === fieldKey);\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: QueryBuilderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: QueryBuilderService, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: QueryBuilderService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktYnVpbGRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZy51aS5jb3JlL2dlbmVyaWMtc2VhcmNoLWFkdmFuY2VkL3NyYy9saWIvcXVlcnktYnVpbGRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDJCQUEyQjtBQUMzQixPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUduRCxPQUFPLEVBQWlELFdBQVcsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQy9HLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDOztBQUt2RCxNQUFNLE9BQU8sbUJBQW1CO0lBQzlCLFNBQVMsR0FBcUIsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFFdkQsOERBQThEO0lBQ3RELGVBQWUsR0FBRztRQUN4QixPQUFPLEVBQUUsRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFVBQVUsQ0FBQyxFQUFFO1FBQ3pILFFBQVEsRUFBRSxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFO1FBQ3hHLFlBQVksRUFBRSxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFO1FBQzVHLFFBQVEsRUFBRSxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUsWUFBWSxF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QUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxxRUFBcUU7SUFDckUsY0FBYyxDQUFDLFFBQWdCLEVBQUUsTUFBMkI7UUFDMUQsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxRQUFRLENBQUMsQ0FBQztJQUM5QyxDQUFDO3VHQXpXVSxtQkFBbUI7MkdBQW5CLG1CQUFtQixjQUZsQixNQUFNOzsyRkFFUCxtQkFBbUI7a0JBSC9CLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiLy8gcXVlcnktYnVpbGRlci5zZXJ2aWNlLnRzXHJcbmltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtbHlGaWVsZENvbmZpZyB9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xyXG5pbXBvcnQgeyBRdWVyeUJ1aWxkZXJGaWVsZCwgU29ydEJ1aWxkZXJGaWVsZCB9IGZyb20gJy4vaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IEZpbHRlckNvbmRpdGlvbiwgRmlsdGVyR3JvdXAsIFF1ZXJ5UGFyYW1ldGVycywgUXVlcnlQYXJzZXIgfSBmcm9tICdAZWxpdGUuZnJhbWV3b3JrL25nLmNvcmUvc2VydmljZXMnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBRdWVyeUJ1aWxkZXJTZXJ2aWNlIHtcclxuICB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UgPSBpbmplY3QoVHJhbnNsYXRlU2VydmljZSk7XHJcblxyXG4gIC8vIEZpZWxkIHR5cGUgY29uZmlndXJhdGlvbiB0aGF0IG1hdGNoZXMgUXVlcnlCdWlsZGVyQ29tcG9uZW50XHJcbiAgcHJpdmF0ZSBmaWVsZFR5cGVDb25maWcgPSB7XHJcbiAgICAnaW5wdXQnOiB7IGRlZmF1bHRPcGVyYXRvcjogJ2NvbnRhaW5zJywgZGVmYXVsdFZhbHVlOiAnJywgb3BlcmF0b3JzOiBbJ2VxJywgJ25lJywgJ2NvbnRhaW5zJywgJ3N0YXJ0c3dpdGgnLCAnZW5kc3dpdGgnXSB9LFxyXG4gICAgJ251bWJlcic6IHsgZGVmYXVsdE9wZXJhdG9yOiAnZXEnLCBkZWZhdWx0VmFsdWU6IG51bGwsIG9wZXJhdG9yczogWydlcScsICduZScsICdndCcsICdnZScsICdsdCcsICdsZSddIH0sXHJcbiAgICAnZGF0ZXBpY2tlcic6IHsgZGVmYXVsdE9wZXJhdG9yOiAnZXEnLCBkZWZhdWx0VmFsdWU6IG51bGwsIG9wZXJhdG9yczogWydlcScsICduZScsICdndCcsICdnZScsICdsdCcsICdsZSddIH0sXHJcbiAgICAnc2VsZWN0JzogeyBkZWZhdWx0T3BlcmF0b3I6ICdlcScsIGRlZmF1bHRWYWx1ZTogJycsIG9wZXJhdG9yczogWydlcScsICduZScsICdpbicsICdub3RpbiddIH0sXHJcbiAgICAnY2hlY2tib3gnOiB7IGRlZmF1bHRPcGVyYXRvcjogJ2VxJywgZGVmYXVsdFZhbHVlOiBudWxsLCBvcGVyYXRvcnM6IFsnZXEnLCAnbmUnXSB9LFxyXG4gICAgJ2dlbmVyaWMtc2VsZWN0b3InOiB7IGRlZmF1bHRPcGVyYXRvcjogJ2VxJywgZGVmYXVsdFZhbHVlOiBudWxsLCBvcGVyYXRvcnM6IFsnZXEnLCAnbmUnLCAnaW4nLCAnbm90aW4nXSB9LFxyXG4gICAgJ3N3aXRjaCc6IHsgZGVmYXVsdE9wZXJhdG9yOiAnZXEnLCBkZWZhdWx0VmFsdWU6IG51bGwsIG9wZXJhdG9yczogWydlcScsICduZSddIH0sXHJcbiAgICAncmFkaW8nOiB7IGRlZmF1bHRPcGVyYXRvcjogJ2VxJywgZGVmYXVsdFZhbHVlOiAnJywgb3BlcmF0b3JzOiBbJ2VxJywgJ25lJ10gfSxcclxuICAgICd0ZXh0YXJlYSc6IHsgZGVmYXVsdE9wZXJhdG9yOiAnY29udGFpbnMnLCBkZWZhdWx0VmFsdWU6ICcnLCBvcGVyYXRvcnM6IFsnZXEnLCAnbmUnLCAnY29udGFpbnMnLCAnc3RhcnRzd2l0aCcsICdlbmRzd2l0aCddIH1cclxuICB9O1xyXG5cclxuICBidWlsZFF1ZXJ5VUlGaWVsZHMoZmllbGRzOiBGb3JtbHlGaWVsZENvbmZpZ1tdKTogRm9ybWx5RmllbGRDb25maWdbXSB7XHJcbiAgICByZXR1cm4gW1xyXG4gICAgICAvLyB7XHJcbiAgICAgIC8vICAga2V5OiAncXVpY2tTZWFyY2gnLFxyXG4gICAgICAvLyAgIHR5cGU6ICdpbnB1dCcsXHJcbiAgICAgIC8vICAgcHJvcHM6IHtcclxuICAgICAgLy8gICAgIGxhYmVsOiAn2KjYrdirINiz2LHZiti5JyxcclxuICAgICAgLy8gICAgIHBsYWNlaG9sZGVyOiAn2KfYqNit2Ksg2YHZiiDYrNmF2YrYuSDYp9mE2K3ZgtmI2YQuLi4nLFxyXG4gICAgICAvLyAgICAgaWNvbjogJ3BpIHBpLXNlYXJjaCdcclxuICAgICAgLy8gICB9XHJcbiAgICAgIC8vIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiAndGFiLXR5cGUnLFxyXG4gICAgICAgIC8vIGtleTogJ3F1ZXJ5VGFicycsXHJcbiAgICAgICAgcHJvcHM6IHtcclxuICAgICAgICAgIHRhYlZpZXdDbGFzczogJ2FkdmFuY2VkLXF1ZXJ5LXRhYnMnLFxyXG4gICAgICAgICAgc2Nyb2xsYWJsZTogZmFsc2UsXHJcbiAgICAgICAgICBsYXp5OiB0cnVlLFxyXG4gICAgICAgICAgYWN0aXZlSW5kZXg6IDBcclxuICAgICAgICB9LFxyXG4gICAgICAgIGZpZWxkR3JvdXA6IHRoaXMuZ2V0UXVlcnlUYWJzKGZpZWxkcylcclxuICAgICAgfVxyXG4gICAgXTtcclxuICB9XHJcblxyXG4gcHJpdmF0ZSBnZXRRdWVyeVRhYnMoZmllbGRzOiBGb3JtbHlGaWVsZENvbmZpZ1tdKTogRm9ybWx5RmllbGRDb25maWdbXSB7XHJcbiAgICByZXR1cm4gW1xyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogJ2dyb3VwJyxcclxuICAgICAgICBwcm9wczoge1xyXG4gICAgICAgICAgbGFiZWw6ICdGSUxURVJTJyxcclxuICAgICAgICAgIGxlZnRJY29uOiAncGkgcGktZmlsdGVyJyxcclxuICAgICAgICAgIGJhZGdlOiAoZmllbGQ6IEZvcm1seUZpZWxkQ29uZmlnKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGZpZWxkR3JvdXAgPSAoZmllbGQ/LmZpZWxkR3JvdXAgPz8gW10pWzBdIGFzIGFueTtcclxuICAgICAgICAgICAgcmV0dXJuIChmaWVsZEdyb3VwPy5tb2RlbD8uYWR2YW5jZWRGaWx0ZXJzID8/IFtdKVswXT8uY29uZGl0aW9ucz8ubGVuZ3RoIHx8IDA7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZmllbGRHcm91cDogdGhpcy5nZXRGaWx0ZXJUYWJGaWVsZHMoZmllbGRzKVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogJ2dyb3VwJyxcclxuICAgICAgICBwcm9wczoge1xyXG4gICAgICAgICAgbGFiZWw6ICdTT1JUSU5HJyxcclxuICAgICAgICAgIGxlZnRJY29uOiAncGkgcGktc29ydC1hbHQnLFxyXG4gICAgICAgICAgYmFkZ2U6IChmaWVsZDogRm9ybWx5RmllbGRDb25maWcpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgZmllbGRHcm91cCA9IChmaWVsZD8uZmllbGRHcm91cCA/PyBbXSlbMF0gYXMgYW55O1xyXG4gICAgICAgICAgICByZXR1cm4gKGZpZWxkR3JvdXA/Lm1vZGVsPy5zb3J0aW5nID8/IFtdKT8ubGVuZ3RoIHx8IDA7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZmllbGRHcm91cDogdGhpcy5nZXRTb3J0aW5nVGFiRmllbGRzKGZpZWxkcylcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHR5cGU6ICdncm91cCcsXHJcbiAgICAgICAgcHJvcHM6IHtcclxuICAgICAgICAgIGxhYmVsOiAnUEFHSU5BVElPTicsXHJcbiAgICAgICAgICBsZWZ0SWNvbjogJ3BpIHBpLXRhYmxlJyxcclxuICAgICAgICAgIGJhZGdlOiAoZmllbGQ6IEZvcm1seUZpZWxkQ29uZmlnKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiBmaWVsZD8ubW9kZWw/LnBhZ2luYXRpb24gJiYgZmllbGQ/Lm1vZGVsPy5wYWdpbmF0aW9uPy50b3AgPyAxIDogMDtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSxcclxuICAgICAgICBmaWVsZEdyb3VwOiB0aGlzLmdldFBhZ2luYXRpb25UYWJGaWVsZHMoKVxyXG4gICAgICB9XHJcbiAgICBdO1xyXG59XHJcblxyXG4gIHByaXZhdGUgZ2V0RmlsdGVyVGFiRmllbGRzKGZpZWxkczogRm9ybWx5RmllbGRDb25maWdbXSk6IEZvcm1seUZpZWxkQ29uZmlnW10ge1xyXG4gICAgcmV0dXJuIFtcclxuICAgICAge1xyXG4gICAgICAgIGtleTogJ2FkdmFuY2VkRmlsdGVycycsXHJcbiAgICAgICAgdHlwZTogJ3F1ZXJ5LWJ1aWxkZXInLFxyXG4gICAgICAgIHByb3BzOiB7XHJcbiAgICAgICAgICBsYWJlbDogJ9mF2LHYtNit2KfYqiDZhdiq2YLYr9mF2KknLFxyXG4gICAgICAgICAgZGVzY3JpcHRpb246ICfYo9mG2LTYpiDZhdix2LTYrdin2Kog2YXYudmC2K/YqSDYqNin2LPYqtiu2K/Yp9mFINmF2LTYutmE2YrZhiDZhdmG2LfZgtmK2YrZhicsXHJcbiAgICAgICAgICBmaWVsZHM6IHRoaXMuZXh0cmFjdEZpbHRlcmFibGVGaWVsZHMoZmllbGRzKVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgXTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0U29ydGluZ1RhYkZpZWxkcyhmaWVsZHM6IEZvcm1seUZpZWxkQ29uZmlnW10pOiBGb3JtbHlGaWVsZENvbmZpZ1tdIHtcclxuICAgIHJldHVybiBbXHJcbiAgICAgIHtcclxuICAgICAgICBrZXk6ICdzb3J0aW5nJyxcclxuICAgICAgICB0eXBlOiAnc29ydC1idWlsZGVyJyxcclxuICAgICAgICBwcm9wczoge1xyXG4gICAgICAgICAgbGFiZWw6ICfYqtix2KrZitioINin2YTZhtiq2KfYptisJyxcclxuICAgICAgICAgIGRlc2NyaXB0aW9uOiAn2K3Yr9ivINij2YjZhNmI2YrYqSDZiNi52LHYtiDYqtix2KrZitioINin2YTYqNmK2KfZhtin2KonLFxyXG4gICAgICAgICAgZmllbGRzOiB0aGlzLmV4dHJhY3RTb3J0YWJsZUZpZWxkcyhmaWVsZHMpXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICBdO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRQYWdpbmF0aW9uVGFiRmllbGRzKCk6IEZvcm1seUZpZWxkQ29uZmlnW10ge1xyXG4gICAgcmV0dXJuIFtcclxuICAgICAge1xyXG4gICAgICAgIGtleTogJ3BhZ2luYXRpb24nLFxyXG4gICAgICAgIHR5cGU6ICdncm91cCcsXHJcbiAgICAgICAgcHJvcHM6IHtcclxuICAgICAgICAgIGxhYmVsOiAnJyxcclxuICAgICAgICAgIGRlc2NyaXB0aW9uOiAnJyxcclxuICAgICAgICAgIGNvbGxhcHNpYmxlOiBmYWxzZSxcclxuICAgICAgICAgIHNob3dGaWVsZENvdW50OiB0cnVlLFxyXG4gICAgICAgICAgdmFyaWFudDogJ2NhcmQnXHJcbiAgICAgICAgfSxcclxuICAgICAgICBmaWVsZEdyb3VwOiBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIGtleTogJ3RvcCcsXHJcbiAgICAgICAgICAgIHR5cGU6ICdpbnB1dCcsXHJcbiAgICAgICAgICAgIHByb3BzOiB7XHJcbiAgICAgICAgICAgICAgdHlwZTogJ251bWJlcicsXHJcbiAgICAgICAgICAgICAgbGFiZWw6ICfYp9mE2K3YryDYp9mE2KPZgti12Ykg2YTZhNiz2KzZhNin2KonLFxyXG4gICAgICAgICAgICAgIG1pbjogMSxcclxuICAgICAgICAgICAgICBtYXg6IDEwMDAsXHJcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICfYo9mC2LXZiSDYudiv2K8g2YTZhNiz2KzZhNin2Kog2KfZhNmF2LHYp9ivINi52LHYttmH2KcnXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICAvLyB7XHJcbiAgICAgICAgICAvLyAgIGtleTogJ3NraXAnLFxyXG4gICAgICAgICAgLy8gICB0eXBlOiAnaW5wdXQnLFxyXG4gICAgICAgICAgLy8gICBwcm9wczoge1xyXG4gICAgICAgICAgLy8gICAgIHR5cGU6ICdudW1iZXInLFxyXG4gICAgICAgICAgLy8gICAgIGxhYmVsOiAn2KrYrti32Yog2KfZhNiz2KzZhNin2KonLFxyXG4gICAgICAgICAgLy8gICAgIG1pbjogMCxcclxuICAgICAgICAgIC8vICAgICBkZXNjcmlwdGlvbjogJ9i52K/YryDYp9mE2LPYrNmE2KfYqiDYp9mE2KrZiiDYs9mK2KrZhSDYqtiu2LfZitmH2KcnXHJcbiAgICAgICAgICAvLyAgIH1cclxuICAgICAgICAgIC8vIH1cclxuICAgICAgICBdXHJcbiAgICAgIH1cclxuICAgIF07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEZpbHRlckNvdW50KCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gJzAnO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBleHRyYWN0RmlsdGVyYWJsZUZpZWxkcyhmaWVsZHM6IEZvcm1seUZpZWxkQ29uZmlnW10pOiBRdWVyeUJ1aWxkZXJGaWVsZFtdIHtcclxuICAgIGNvbnN0IGZpbHRlcmFibGVGaWVsZHM6IFF1ZXJ5QnVpbGRlckZpZWxkW10gPSBbXTtcclxuXHJcbiAgICB0aGlzLnRyYXZlcnNlRmllbGRzKGZpZWxkcywgKGZpZWxkKSA9PiB7XHJcbiAgICAgIGlmIChmaWVsZC5rZXkgJiYgZmllbGQucHJvcHMgJiYgZmllbGQucHJvcHNbJ2ZpbHRlcmFibGUnXSAhPT0gZmFsc2UgJiYgIWZpZWxkLnByb3BzPy5oaWRkZW4pIHtcclxuICAgICAgICBjb25zdCBmaWVsZFR5cGUgPSB0aGlzLm1hcEZpZWxkVHlwZShmaWVsZC50eXBlIGFzIHN0cmluZyk7XHJcbiAgICAgICAgY29uc3QgZmllbGRDb25maWcgPSB0aGlzLmZpZWxkVHlwZUNvbmZpZ1tmaWVsZFR5cGUgYXMga2V5b2YgdHlwZW9mIHRoaXMuZmllbGRUeXBlQ29uZmlnXSB8fCB0aGlzLmZpZWxkVHlwZUNvbmZpZy5pbnB1dDtcclxuXHJcbiAgICAgICAgZmlsdGVyYWJsZUZpZWxkcy5wdXNoKHtcclxuICAgICAgICAgIGtleTogZmllbGQua2V5IGFzIHN0cmluZyxcclxuICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGZpZWxkLnByb3BzLmxhYmVsIHx8IChmaWVsZC5rZXkgYXMgc3RyaW5nKSksXHJcbiAgICAgICAgICB0eXBlOiBmaWVsZFR5cGUsXHJcbiAgICAgICAgICBwcm9wczogeyAuLi5maWVsZC5wcm9wcyB9LFxyXG4gICAgICAgICAgb3BlcmF0b3JzOiBmaWVsZENvbmZpZy5vcGVyYXRvcnMsXHJcbiAgICAgICAgICAvLyBBZGQgZGVmYXVsdCB2YWx1ZXMgZm9yIFF1ZXJ5QnVpbGRlckNvbXBvbmVudCBjb21wYXRpYmlsaXR5XHJcbiAgICAgICAgICBkZWZhdWx0T3BlcmF0b3I6IGZpZWxkQ29uZmlnLmRlZmF1bHRPcGVyYXRvcixcclxuICAgICAgICAgIGRlZmF1bHRWYWx1ZTogZmllbGRDb25maWcuZGVmYXVsdFZhbHVlXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBmaWx0ZXJhYmxlRmllbGRzO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBleHRyYWN0U29ydGFibGVGaWVsZHMoZmllbGRzOiBGb3JtbHlGaWVsZENvbmZpZ1tdKTogU29ydEJ1aWxkZXJGaWVsZFtdIHtcclxuICAgIGNvbnN0IHNvcnRhYmxlRmllbGRzOiBTb3J0QnVpbGRlckZpZWxkW10gPSBbXTtcclxuXHJcbiAgICB0aGlzLnRyYXZlcnNlRmllbGRzKGZpZWxkcywgKGZpZWxkKSA9PiB7XHJcbiAgICAgIGlmIChmaWVsZC5rZXkgJiYgZmllbGQucHJvcHMgJiYgZmllbGQucHJvcHNbJ3NvcnRhYmxlJ10gIT09IGZhbHNlICYmICFmaWVsZC5wcm9wcz8uaGlkZGVuKSB7XHJcbiAgICAgICAgc29ydGFibGVGaWVsZHMucHVzaCh7XHJcbiAgICAgICAgICBrZXk6IGZpZWxkLmtleSBhcyBzdHJpbmcsXHJcbiAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChmaWVsZC5wcm9wcy5sYWJlbCB8fCBmaWVsZC5rZXkgYXMgc3RyaW5nKVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gc29ydGFibGVGaWVsZHM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGV4dHJhY3RFeHBhbmRhYmxlRmllbGRzKGZpZWxkczogRm9ybWx5RmllbGRDb25maWdbXSk6IGFueVtdIHtcclxuICAgIGNvbnN0IGV4cGFuZGFibGVGaWVsZHM6IGFueVtdID0gW107XHJcblxyXG4gICAgdGhpcy50cmF2ZXJzZUZpZWxkcyhmaWVsZHMsIChmaWVsZCkgPT4ge1xyXG4gICAgICBpZiAoZmllbGQua2V5ICYmIGZpZWxkLnByb3BzICYmIGZpZWxkLnByb3BzWydleHBhbmRhYmxlJ10gJiYgIWZpZWxkLnByb3BzPy5oaWRkZW4pIHtcclxuICAgICAgICBleHBhbmRhYmxlRmllbGRzLnB1c2goe1xyXG4gICAgICAgICAgbGFiZWw6IGZpZWxkLnByb3BzLmxhYmVsIHx8IGZpZWxkLmtleSxcclxuICAgICAgICAgIHZhbHVlOiBmaWVsZC5rZXlcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIGV4cGFuZGFibGVGaWVsZHM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHRyYXZlcnNlRmllbGRzKGZpZWxkczogRm9ybWx5RmllbGRDb25maWdbXSwgY2FsbGJhY2s6IChmaWVsZDogRm9ybWx5RmllbGRDb25maWcpID0+IHZvaWQpOiB2b2lkIHtcclxuICAgIGZpZWxkcy5mb3JFYWNoKGZpZWxkID0+IHtcclxuICAgICAgY2FsbGJhY2soZmllbGQpO1xyXG4gICAgICBpZiAoZmllbGQuZmllbGRHcm91cCkge1xyXG4gICAgICAgIHRoaXMudHJhdmVyc2VGaWVsZHMoZmllbGQuZmllbGRHcm91cCwgY2FsbGJhY2spO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbWFwRmllbGRUeXBlKHR5cGU/OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgdHlwZU1hcDogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHtcclxuICAgICAgJ2lucHV0JzogJ2lucHV0JyxcclxuICAgICAgJ251bWJlcic6ICdudW1iZXInLFxyXG4gICAgICAnZGF0ZXBpY2tlcic6ICdkYXRlcGlja2VyJyxcclxuICAgICAgJ3NlbGVjdCc6ICdzZWxlY3QnLFxyXG4gICAgICAnY2hlY2tib3gnOiAnY2hlY2tib3gnLFxyXG4gICAgICAnZ2VuZXJpYy1zZWxlY3Rvcic6ICdnZW5lcmljLXNlbGVjdG9yJyxcclxuICAgICAgJ3N3aXRjaCc6ICdzd2l0Y2gnLFxyXG4gICAgICAncmFkaW8nOiAncmFkaW8nLFxyXG4gICAgICAndGV4dGFyZWEnOiAndGV4dGFyZWEnXHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiB0eXBlTWFwW3R5cGUgfHwgJ2lucHV0J10gfHwgJ2lucHV0JztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0T3BlcmF0b3JzRm9yVHlwZSh0eXBlPzogc3RyaW5nKTogc3RyaW5nW10ge1xyXG4gICAgY29uc3QgZmllbGRUeXBlID0gdGhpcy5tYXBGaWVsZFR5cGUodHlwZSk7XHJcbiAgICBjb25zdCBjb25maWcgPSB0aGlzLmZpZWxkVHlwZUNvbmZpZ1tmaWVsZFR5cGUgYXMga2V5b2YgdHlwZW9mIHRoaXMuZmllbGRUeXBlQ29uZmlnXTtcclxuICAgIHJldHVybiBjb25maWcgPyBjb25maWcub3BlcmF0b3JzIDogWydlcScsICduZSddO1xyXG4gIH1cclxuXHJcbiAgLy8gT0RhdGEgbWV0aG9kcyByZW1haW4gdGhlIHNhbWVcclxuICBidWlsZE9EYXRhRnJvbVF1ZXJ5TW9kZWwobW9kZWw6IGFueSwgb3JpZ2luYWxGaWVsZHM6IEZvcm1seUZpZWxkQ29uZmlnW10pOiBRdWVyeVBhcmFtZXRlcnMge1xyXG5cclxuICAgIGNvbnN0IHBhcmFtczogUXVlcnlQYXJhbWV0ZXJzID0ge1xyXG4gICAgICBmaWx0ZXJzOiBbXSxcclxuICAgICAgb3JkZXJCeTogW10sXHJcbiAgICAgIGdyb3VwQnk6IFtdLFxyXG4gICAgICBleHBhbmQ6IG1vZGVsLmV4cGFuZCB8fCBbXVxyXG4gICAgfTtcclxuXHJcbiAgICAvLyBRdWljayBzZWFyY2hcclxuICAgIGlmIChtb2RlbC5xdWlja1NlYXJjaCkge1xyXG4gICAgICBjb25zdCBzZWFyY2hhYmxlRmllbGRzID0gdGhpcy5leHRyYWN0RmlsdGVyYWJsZUZpZWxkcyhvcmlnaW5hbEZpZWxkcyk7XHJcbiAgICAgIGNvbnN0IHF1aWNrU2VhcmNoQ29uZGl0aW9uczogRmlsdGVyQ29uZGl0aW9uW10gPSBzZWFyY2hhYmxlRmllbGRzLm1hcChmaWVsZCA9PiAoe1xyXG4gICAgICAgIGZpZWxkOiBmaWVsZC5rZXksXHJcbiAgICAgICAgb3BlcmF0b3I6ICdjb250YWlucycsXHJcbiAgICAgICAgdmFsdWU6IG1vZGVsLnF1aWNrU2VhcmNoXHJcbiAgICAgIH0pKTtcclxuXHJcbiAgICAgIGlmIChxdWlja1NlYXJjaENvbmRpdGlvbnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHBhcmFtcy5maWx0ZXJzLnB1c2goe1xyXG4gICAgICAgICAgbG9naWNhbE9wZXJhdG9yOiAnb3InLFxyXG4gICAgICAgICAgY29uZGl0aW9uczogcXVpY2tTZWFyY2hDb25kaXRpb25zXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBBZHZhbmNlZCBmaWx0ZXJzXHJcbiAgICBpZiAobW9kZWwuYWR2YW5jZWRGaWx0ZXJzICYmIEFycmF5LmlzQXJyYXkobW9kZWwuYWR2YW5jZWRGaWx0ZXJzKSkge1xyXG4gICAgIHBhcmFtcy5maWx0ZXJzLnB1c2goLi4ubW9kZWwuYWR2YW5jZWRGaWx0ZXJzKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBTb3J0aW5nXHJcbiAgICBpZiAobW9kZWwuc29ydGluZyAmJiBBcnJheS5pc0FycmF5KG1vZGVsLnNvcnRpbmcpKSB7XHJcbiAgICAgIHBhcmFtcy5vcmRlckJ5ID0gbW9kZWwuc29ydGluZ1xyXG4gICAgICAgIC5maWx0ZXIoKHNvcnQ6IGFueSkgPT4gc29ydC5maWVsZCAmJiBzb3J0LmRpcmVjdGlvbilcclxuICAgICAgICAubWFwKChzb3J0OiBhbnkpID0+ICh7XHJcbiAgICAgICAgICBmaWVsZDogc29ydC5maWVsZCxcclxuICAgICAgICAgIGRpcmVjdGlvbjogc29ydC5kaXJlY3Rpb25cclxuICAgICAgICB9KSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gUGFnaW5hdGlvblxyXG4gICAgaWYgKG1vZGVsLnBhZ2luYXRpb24pIHtcclxuICAgICAgaWYgKG1vZGVsLnBhZ2luYXRpb24udG9wKSB7XHJcbiAgICAgICAgcGFyYW1zLnRvcCA9IE51bWJlcihtb2RlbC5wYWdpbmF0aW9uLnRvcCk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKG1vZGVsLnBhZ2luYXRpb24uc2tpcCkge1xyXG4gICAgICAgIHBhcmFtcy5za2lwID0gTnVtYmVyKG1vZGVsLnBhZ2luYXRpb24uc2tpcCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcGFyYW1zO1xyXG4gIH1cclxuXHJcbiAgdG9PRGF0YVF1ZXJ5U3RyaW5nKHBhcmFtczogUXVlcnlQYXJhbWV0ZXJzKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBRdWVyeVBhcnNlci50b1N0cmluZyhwYXJhbXMpO1xyXG4gIH1cclxuXHJcbiAgcGFyc2VPRGF0YVF1ZXJ5KHF1ZXJ5U3RyaW5nOiBzdHJpbmcpOiBRdWVyeVBhcmFtZXRlcnMge1xyXG4gICAgcmV0dXJuIFF1ZXJ5UGFyc2VyLnBhcnNlKHF1ZXJ5U3RyaW5nKTtcclxuICB9XHJcblxyXG4gIHBhcnNlT0RhdGFUb1F1ZXJ5TW9kZWwocXVlcnlTdHJpbmc6IHN0cmluZywgb3JpZ2luYWxGaWVsZHM6IEZvcm1seUZpZWxkQ29uZmlnW10pOiBhbnkge1xyXG4gICAgY29uc3QgcGFyYW1zID0gdGhpcy5wYXJzZU9EYXRhUXVlcnkocXVlcnlTdHJpbmcpO1xyXG4gICAgY29uc3QgbW9kZWw6IGFueSA9IHtcclxuICAgICAgYWR2YW5jZWRGaWx0ZXJzOiBbXSxcclxuICAgICAgc29ydGluZzogW10sXHJcbiAgICAgIHBhZ2luYXRpb246IHt9XHJcbiAgICB9O1xyXG5cclxuICAgIC8vIFBhcnNlIGZpbHRlcnMgYmFjayB0byBVSSBtb2RlbFxyXG4gICAgaWYgKHBhcmFtcy5maWx0ZXJzICYmIHBhcmFtcy5maWx0ZXJzLmxlbmd0aCA+IDApIHtcclxuICAgICAgcGFyYW1zLmZpbHRlcnMuZm9yRWFjaCgoZ3JvdXA6IEZpbHRlckdyb3VwKSA9PiB7XHJcbiAgICAgICAgaWYgKGdyb3VwLmxvZ2ljYWxPcGVyYXRvciA9PT0gJ29yJyAmJiBncm91cC5jb25kaXRpb25zLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAgIGNvbnN0IGZpcnN0VmFsdWUgPSBncm91cC5jb25kaXRpb25zWzBdLnZhbHVlO1xyXG4gICAgICAgICAgaWYgKGdyb3VwLmNvbmRpdGlvbnMuZXZlcnkoY29uZCA9PiBjb25kLm9wZXJhdG9yID09PSAnY29udGFpbnMnICYmIGNvbmQudmFsdWUgPT09IGZpcnN0VmFsdWUpKSB7XHJcbiAgICAgICAgICAgIG1vZGVsLnF1aWNrU2VhcmNoID0gZmlyc3RWYWx1ZTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZ3JvdXAuY29uZGl0aW9ucy5mb3JFYWNoKGNvbmRpdGlvbiA9PiB7XHJcbiAgICAgICAgICBtb2RlbC5hZHZhbmNlZEZpbHRlcnMucHVzaCh7XHJcbiAgICAgICAgICAgIGZpZWxkOiBjb25kaXRpb24uZmllbGQsXHJcbiAgICAgICAgICAgIG9wZXJhdG9yOiBjb25kaXRpb24ub3BlcmF0b3IsXHJcbiAgICAgICAgICAgIHZhbHVlOiBjb25kaXRpb24udmFsdWVcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBQYXJzZSBzb3J0aW5nXHJcbiAgICBpZiAocGFyYW1zLm9yZGVyQnkpIHtcclxuICAgICAgbW9kZWwuc29ydGluZyA9IHBhcmFtcy5vcmRlckJ5Lm1hcChvcmRlciA9PiAoe1xyXG4gICAgICAgIGZpZWxkOiBvcmRlci5maWVsZCxcclxuICAgICAgICBkaXJlY3Rpb246IG9yZGVyLmRpcmVjdGlvblxyXG4gICAgICB9KSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gUGFyc2UgcGFnaW5hdGlvblxyXG4gICAgaWYgKHBhcmFtcy50b3AgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBtb2RlbC5wYWdpbmF0aW9uLnRvcCA9IHBhcmFtcy50b3A7XHJcbiAgICB9XHJcbiAgICBpZiAocGFyYW1zLnNraXAgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBtb2RlbC5wYWdpbmF0aW9uLnNraXAgPSBwYXJhbXMuc2tpcDtcclxuICAgIH1cclxuXHJcbiAgICAvLyBQYXJzZSBleHBhbmRcclxuICAgIGlmIChwYXJhbXMuZXhwYW5kKSB7XHJcbiAgICAgIG1vZGVsLmV4cGFuZCA9IHBhcmFtcy5leHBhbmQ7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG1vZGVsO1xyXG4gIH1cclxuXHJcbiAgYnVpbGRPRGF0YVF1ZXJ5U3RyaW5nKG1vZGVsOiBhbnksIG9yaWdpbmFsRmllbGRzOiBGb3JtbHlGaWVsZENvbmZpZ1tdKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHBhcmFtcyA9IHRoaXMuYnVpbGRPRGF0YUZyb21RdWVyeU1vZGVsKG1vZGVsLCBvcmlnaW5hbEZpZWxkcyk7XHJcbiAgICByZXR1cm4gdGhpcy50b09EYXRhUXVlcnlTdHJpbmcocGFyYW1zKTtcclxuICB9XHJcblxyXG4gIC8vIEhlbHBlciBtZXRob2QgdG8gZ2V0IGZpZWxkIGNvbmZpZ3VyYXRpb24gZm9yIFF1ZXJ5QnVpbGRlckNvbXBvbmVudFxyXG4gIGdldEZpZWxkQ29uZmlnKGZpZWxkS2V5OiBzdHJpbmcsIGZpZWxkczogUXVlcnlCdWlsZGVyRmllbGRbXSk6IGFueSB7XHJcbiAgICByZXR1cm4gZmllbGRzLmZpbmQoZiA9PiBmLmtleSA9PT0gZmllbGRLZXkpO1xyXG4gIH1cclxufVxyXG4iXX0=","// generic-search.component.ts\nimport { Component, EventEmitter, Input, Output, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { FormlyForm } from '@ngx-formly/core';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { ToolbarModule } from 'primeng/toolbar';\nimport { ButtonModule } from 'primeng/button';\nimport { InputIconModule } from 'primeng/inputicon';\nimport { IconFieldModule } from 'primeng/iconfield';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { DrawerModule } from 'primeng/drawer';\nimport { QueryBuilderService } from './query-builder.service';\nimport { InputGroupAddonModule } from 'primeng/inputgroupaddon';\nimport { InputGroupModule } from 'primeng/inputgroup';\nimport { BadgeModule } from 'primeng/badge';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common\";\nimport * as i2 from \"primeng/api\";\nimport * as i3 from \"primeng/button\";\nimport * as i4 from \"@angular/forms\";\nimport * as i5 from \"primeng/inputtext\";\nimport * as i6 from \"primeng/drawer\";\nimport * as i7 from \"primeng/inputgroup\";\nimport * as i8 from \"primeng/inputgroupaddon\";\nimport * as i9 from \"primeng/badge\";\nimport * as i10 from \"@ngx-translate/core\";\nexport class GenericSearchAdvanced {\n translate = inject(TranslateService);\n queryBuilder = inject(QueryBuilderService);\n drawerVisible = false;\n search = new EventEmitter();\n paginationChange = new EventEmitter();\n odataSearch = new EventEmitter();\n form = new FormGroup({});\n model = {};\n options = {};\n fields = [];\n fields_ = [];\n enableQueryBuilder = true;\n odataConfig = {};\n ngOnInit() {\n this.buildQueryUIFields();\n }\n get filterCount() {\n const filters = ((this.model?.advancedFilters ?? [])[0]?.conditions?.length || 0) +\n ((this.model?.sorting ?? [])?.length || 0) +\n (this.model?.pagination && this.model?.pagination?.top ? 1 : 0);\n return filters;\n }\n buildQueryUIFields() {\n if (this.enableQueryBuilder) {\n this.fields_ = this.queryBuilder.buildQueryUIFields(this.fields);\n }\n else {\n this.fields_ = this.fields;\n }\n }\n onSubmit() {\n // Use the new QueryBuilderService methods\n const odataParams = this.queryBuilder.buildODataFromQueryModel(this.model, this.fields);\n // this.odataSearch.emit(odataParams);\n // Generate query string using the unified method\n const queryString = this.queryBuilder.toODataQueryString(odataParams);\n // console.log('OData Query String:', queryString);\n debugger;\n if (this.model?.pagination && this.model?.pagination?.top) {\n this.paginationChange.emit({\n top: this.model?.pagination?.top,\n // skip:,\n });\n }\n this.search.emit({\n filter: this.model['filter'],\n query: queryString,\n // sorting:,\n // top:,\n // skip:,\n });\n }\n onReset() {\n this.model = {};\n this.form.reset();\n this.paginationChange.emit({\n top: 10,\n // skip:,\n });\n this.search.emit(this.model);\n // Emit empty QueryParameters using the proper structure\n // this.odataSearch.emit({\n // filters: [],\n // orderBy: [],\n // groupBy: [],\n // expand: []\n // });\n }\n // Toggle drawer visibility\n toggleDrawer() {\n this.drawerVisible = !this.drawerVisible;\n }\n // Close drawer\n closeDrawer() {\n this.drawerVisible = false;\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericSearchAdvanced, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.8\", type: GenericSearchAdvanced, isStandalone: true, selector: \"lib-generic-search-advanced\", inputs: { model: \"model\", fields: \"fields\", enableQueryBuilder: \"enableQueryBuilder\", odataConfig: \"odataConfig\" }, outputs: { search: \"search\", paginationChange: \"paginationChange\", odataSearch: \"odataSearch\" }, ngImport: i0, template: \"<div class=\\\"flex flex-wrap items-center gap-3 w-full\\\">\\r\\n <!-- Search Input with Icon -->\\r\\n <p-inputgroup class=\\\"w-full\\\">\\r\\n <input\\r\\n pInputText\\r\\n type=\\\"text\\\"\\r\\n [(ngModel)]=\\\"model['filter']\\\"\\r\\n placeholder=\\\"{{ 'SEARCH' | translate }}\\\"\\r\\n (keyup.enter)=\\\"onSubmit()\\\"\\r\\n />\\r\\n\\r\\n\\r\\n <p-inputgroup-addon>\\r\\n <p-button\\r\\n icon=\\\"pi pi-search\\\"\\r\\n severity=\\\"secondary\\\"\\r\\n (click)=\\\"onSubmit()\\\"\\r\\n ></p-button>\\r\\n </p-inputgroup-addon>\\r\\n<p-inputgroup-addon>\\r\\n <div class=\\\"relative inline-flex\\\">\\r\\n <p-button\\r\\n icon=\\\"pi pi-filter\\\"\\r\\n severity=\\\"secondary\\\"\\r\\n (onClick)=\\\"drawerVisible = true\\\">\\r\\n </p-button>\\r\\n\\r\\n <p-badge\\r\\n *ngIf=\\\"filterCount > 0\\\"\\r\\n [value]=\\\"filterCount\\\"\\r\\n severity=\\\"warn\\\"\\r\\n size=\\\"small\\\"\\r\\n class=\\\"absolute -top-0 -right-0\\\">\\r\\n </p-badge>\\r\\n </div>\\r\\n</p-inputgroup-addon>\\r\\n\\r\\n <p-inputgroup-addon *ngIf=\\\"model['filter'] || filterCount > 0\\\">\\r\\n <p-button\\r\\n icon=\\\"pi pi-times\\\"\\r\\n severity=\\\"danger\\\"\\r\\n (click)=\\\"model['filter']=''; onReset()\\\"\\r\\n ></p-button>\\r\\n </p-inputgroup-addon>\\r\\n</p-inputgroup>\\r\\n\\r\\n\\r\\n</div>\\r\\n\\r\\n<!-- Drawer for Advanced Multi-field Search -->\\r\\n @if(drawerVisible){\\r\\n<p-drawer\\r\\n [(visible)]=\\\"drawerVisible\\\"\\r\\n position=\\\"right\\\"\\r\\n [styleClass]=\\\"'!w-full md:!w-80 lg:!w-[40rem] !h-full' \\\"\\r\\n [modal]=\\\"true\\\"\\r\\n [dismissible]=\\\"true\\\"\\r\\n styleClass=\\\"p-4 w-full max-w-md max-h-[90vh] flex flex-col\\\"\\r\\n>\\r\\n <!-- Entire form wrapper -->\\r\\n <form [formGroup]=\\\"form\\\" (ngSubmit)=\\\"onSubmit(); drawerVisible=false\\\" class=\\\"flex flex-col flex-1\\\">\\r\\n <!-- Scrollable Form -->\\r\\n <div class=\\\"flex-1 overflow-auto\\\">\\r\\n <formly-form\\r\\n [form]=\\\"form\\\"\\r\\n [fields]=\\\"fields_\\\"\\r\\n [model]=\\\"model\\\"\\r\\n [options]=\\\"options\\\"\\r\\n >\\r\\n </formly-form>\\r\\n </div>\\r\\n\\r\\n </form>\\r\\n <!-- Action Buttons -->\\r\\n <ng-template pTemplate=\\\"footer\\\">\\r\\n <div class=\\\"flex justify-end mt-2 space-x-2 flex-none\\\">\\r\\n <button\\r\\n type=\\\"submit\\\"\\r\\n pButton size=\\\"small\\\"\\r\\n (click)=\\\" onSubmit(); drawerVisible=false\\\"\\r\\n label=\\\"{{ 'SEARCH' | translate }}\\\">\\r\\n </button>\\r\\n <button\\r\\n type=\\\"button\\\"\\r\\n pButton\\r\\n size=\\\"small\\\"\\r\\n class=\\\"p-button-text\\\"\\r\\n (click)=\\\"onReset(); drawerVisible=false\\\"\\r\\n >\\r\\n {{ 'CLEAR' | translate }}\\r\\n </button>\\r\\n </div>\\r\\n </ng-template>\\r\\n</p-drawer>\\r\\n\\r\\n }\\r\\n\", dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"directive\", type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"component\", type: FormlyForm, selector: \"formly-form\", inputs: [\"form\", \"model\", \"fields\", \"options\"], outputs: [\"modelChange\"] }, { kind: \"ngmodule\", type: TranslateModule }, { kind: \"ngmodule\", type: ToolbarModule }, { kind: \"directive\", type: i2.PrimeTemplate, selector: \"[pTemplate]\", inputs: [\"type\", \"pTemplate\"] }, { kind: \"ngmodule\", type: ButtonModule }, { kind: \"directive\", type: i3.ButtonDirective, selector: \"[pButton]\", inputs: [\"iconPos\", \"loadingIcon\", \"loading\", \"severity\", \"raised\", \"rounded\", \"text\", \"outlined\", \"size\", \"plain\", \"fluid\", \"label\", \"icon\", \"buttonProps\"] }, { kind: \"component\", type: i3.Button, selector: \"p-button\", inputs: [\"type\", \"iconPos\", \"icon\", \"badge\", \"label\", \"disabled\", \"loading\", \"loadingIcon\", \"raised\", \"rounded\", \"text\", \"plain\", \"severity\", \"outlined\", \"link\", \"tabindex\", \"size\", \"variant\", \"style\", \"styleClass\", \"badgeClass\", \"badgeSeverity\", \"ariaLabel\", \"buttonProps\", \"autofocus\", \"fluid\"], outputs: [\"onClick\", \"onFocus\", \"onBlur\"] }, { kind: \"ngmodule\", type: ReactiveFormsModule }, { kind: \"directive\", type: i4.ɵNgNoValidate, selector: \"form:not([ngNoForm]):not([ngNativeValidate])\" }, { kind: \"directive\", type: i4.DefaultValueAccessor, selector: \"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]\" }, { kind: \"directive\", type: i4.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i4.NgControlStatusGroup, selector: \"[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]\" }, { kind: \"directive\", type: i4.FormGroupDirective, selector: \"[formGroup]\", inputs: [\"formGroup\"], outputs: [\"ngSubmit\"], exportAs: [\"ngForm\"] }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i4.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"ngmodule\", type: InputIconModule }, { kind: \"ngmodule\", type: IconFieldModule }, { kind: \"ngmodule\", type: InputTextModule }, { kind: \"directive\", type: i5.InputText, selector: \"[pInputText]\", inputs: [\"pSize\", \"variant\", \"fluid\", \"invalid\"] }, { kind: \"ngmodule\", type: DrawerModule }, { kind: \"component\", type: i6.Drawer, selector: \"p-drawer\", inputs: [\"appendTo\", \"blockScroll\", \"style\", \"styleClass\", \"ariaCloseLabel\", \"autoZIndex\", \"baseZIndex\", \"modal\", \"closeButtonProps\", \"dismissible\", \"showCloseIcon\", \"closeOnEscape\", \"transitionOptions\", \"visible\", \"position\", \"fullScreen\", \"header\", \"maskStyle\", \"closable\"], outputs: [\"onShow\", \"onHide\", \"visibleChange\"] }, { kind: \"ngmodule\", type: InputGroupModule }, { kind: \"component\", type: i7.InputGroup, selector: \"p-inputgroup, p-inputGroup, p-input-group\", inputs: [\"styleClass\"] }, { kind: \"ngmodule\", type: InputGroupAddonModule }, { kind: \"component\", type: i8.InputGroupAddon, selector: \"p-inputgroup-addon, p-inputGroupAddon\", inputs: [\"style\", \"styleClass\"] }, { kind: \"ngmodule\", type: BadgeModule }, { kind: \"component\", type: i9.Badge, selector: \"p-badge\", inputs: [\"styleClass\", \"badgeSize\", \"size\", \"severity\", \"value\", \"badgeDisabled\"] }, { kind: \"pipe\", type: i10.TranslatePipe, name: \"translate\" }] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: GenericSearchAdvanced, decorators: [{\n type: Component,\n args: [{ selector: 'lib-generic-search-advanced', standalone: true, imports: [\n CommonModule,\n FormlyForm,\n TranslateModule,\n ToolbarModule,\n ButtonModule,\n ReactiveFormsModule,\n FormsModule,\n InputIconModule,\n IconFieldModule,\n InputTextModule,\n DrawerModule,\n InputGroupModule,\n InputGroupAddonModule,\n BadgeModule\n ], template: \"<div class=\\\"flex flex-wrap items-center gap-3 w-full\\\">\\r\\n <!-- Search Input with Icon -->\\r\\n <p-inputgroup class=\\\"w-full\\\">\\r\\n <input\\r\\n pInputText\\r\\n type=\\\"text\\\"\\r\\n [(ngModel)]=\\\"model['filter']\\\"\\r\\n placeholder=\\\"{{ 'SEARCH' | translate }}\\\"\\r\\n (keyup.enter)=\\\"onSubmit()\\\"\\r\\n />\\r\\n\\r\\n\\r\\n <p-inputgroup-addon>\\r\\n <p-button\\r\\n icon=\\\"pi pi-search\\\"\\r\\n severity=\\\"secondary\\\"\\r\\n (click)=\\\"onSubmit()\\\"\\r\\n ></p-button>\\r\\n </p-inputgroup-addon>\\r\\n<p-inputgroup-addon>\\r\\n <div class=\\\"relative inline-flex\\\">\\r\\n <p-button\\r\\n icon=\\\"pi pi-filter\\\"\\r\\n severity=\\\"secondary\\\"\\r\\n (onClick)=\\\"drawerVisible = true\\\">\\r\\n </p-button>\\r\\n\\r\\n <p-badge\\r\\n *ngIf=\\\"filterCount > 0\\\"\\r\\n [value]=\\\"filterCount\\\"\\r\\n severity=\\\"warn\\\"\\r\\n size=\\\"small\\\"\\r\\n class=\\\"absolute -top-0 -right-0\\\">\\r\\n </p-badge>\\r\\n </div>\\r\\n</p-inputgroup-addon>\\r\\n\\r\\n <p-inputgroup-addon *ngIf=\\\"model['filter'] || filterCount > 0\\\">\\r\\n <p-button\\r\\n icon=\\\"pi pi-times\\\"\\r\\n severity=\\\"danger\\\"\\r\\n (click)=\\\"model['filter']=''; onReset()\\\"\\r\\n ></p-button>\\r\\n </p-inputgroup-addon>\\r\\n</p-inputgroup>\\r\\n\\r\\n\\r\\n</div>\\r\\n\\r\\n<!-- Drawer for Advanced Multi-field Search -->\\r\\n @if(drawerVisible){\\r\\n<p-drawer\\r\\n [(visible)]=\\\"drawerVisible\\\"\\r\\n position=\\\"right\\\"\\r\\n [styleClass]=\\\"'!w-full md:!w-80 lg:!w-[40rem] !h-full' \\\"\\r\\n [modal]=\\\"true\\\"\\r\\n [dismissible]=\\\"true\\\"\\r\\n styleClass=\\\"p-4 w-full max-w-md max-h-[90vh] flex flex-col\\\"\\r\\n>\\r\\n <!-- Entire form wrapper -->\\r\\n <form [formGroup]=\\\"form\\\" (ngSubmit)=\\\"onSubmit(); drawerVisible=false\\\" class=\\\"flex flex-col flex-1\\\">\\r\\n <!-- Scrollable Form -->\\r\\n <div class=\\\"flex-1 overflow-auto\\\">\\r\\n <formly-form\\r\\n [form]=\\\"form\\\"\\r\\n [fields]=\\\"fields_\\\"\\r\\n [model]=\\\"model\\\"\\r\\n [options]=\\\"options\\\"\\r\\n >\\r\\n </formly-form>\\r\\n </div>\\r\\n\\r\\n </form>\\r\\n <!-- Action Buttons -->\\r\\n <ng-template pTemplate=\\\"footer\\\">\\r\\n <div class=\\\"flex justify-end mt-2 space-x-2 flex-none\\\">\\r\\n <button\\r\\n type=\\\"submit\\\"\\r\\n pButton size=\\\"small\\\"\\r\\n (click)=\\\" onSubmit(); drawerVisible=false\\\"\\r\\n label=\\\"{{ 'SEARCH' | translate }}\\\">\\r\\n </button>\\r\\n <button\\r\\n type=\\\"button\\\"\\r\\n pButton\\r\\n size=\\\"small\\\"\\r\\n class=\\\"p-button-text\\\"\\r\\n (click)=\\\"onReset(); drawerVisible=false\\\"\\r\\n >\\r\\n {{ 'CLEAR' | translate }}\\r\\n </button>\\r\\n </div>\\r\\n </ng-template>\\r\\n</p-drawer>\\r\\n\\r\\n }\\r\\n\" }]\n }], propDecorators: { search: [{\n type: Output\n }], paginationChange: [{\n type: Output\n }], odataSearch: [{\n type: Output\n }], model: [{\n type: Input\n }], fields: [{\n type: Input\n }], enableQueryBuilder: [{\n type: Input\n }], odataConfig: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1zZWFyY2gtYWR2YW5jZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25nLnVpLmNvcmUvZ2VuZXJpYy1zZWFyY2gtYWR2YW5jZWQvc3JjL2xpYi9nZW5lcmljLXNlYXJjaC1hZHZhbmNlZC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmcudWkuY29yZS9nZW5lcmljLXNlYXJjaC1hZHZhbmNlZC9zcmMvbGliL2dlbmVyaWMtc2VhcmNoLWFkdmFuY2VkLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsOEJBQThCO0FBQzlCLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQWEsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdFLE9BQU8sRUFBcUIsVUFBVSxFQUFxQixNQUFNLGtCQUFrQixDQUFDO0FBQ3BGLE9BQU8sRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5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LGVBQWU7d0JBQ2YsWUFBWTt3QkFDWixnQkFBZ0I7d0JBQ2hCLHFCQUFxQjt3QkFDckIsV0FBVztxQkFDWjs4QkFTUyxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csZ0JBQWdCO3NCQUF6QixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU07Z0JBR0UsS0FBSztzQkFBYixLQUFLO2dCQUVHLE1BQU07c0JBQWQsS0FBSztnQkFHRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8vIGdlbmVyaWMtc2VhcmNoLmNvbXBvbmVudC50c1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3JtR3JvdXAsIEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRm9ybWx5RmllbGRDb25maWcsIEZvcm1seUZvcm0sIEZvcm1seUZvcm1PcHRpb25zIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUsIFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IFRvb2xiYXJNb2R1bGUgfSBmcm9tICdwcmltZW5nL3Rvb2xiYXInO1xuaW1wb3J0IHsgQnV0dG9uTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9idXR0b24nO1xuaW1wb3J0IHsgSW5wdXRJY29uTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9pbnB1dGljb24nO1xuaW1wb3J0IHsgSWNvbkZpZWxkTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9pY29uZmllbGQnO1xuaW1wb3J0IHsgSW5wdXRUZXh0TW9kdWxlIH0gZnJvbSAncHJpbWVuZy9pbnB1dHRleHQnO1xuaW1wb3J0IHsgRHJhd2VyTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9kcmF3ZXInO1xuaW1wb3J0IHsgUXVlcnlCdWlsZGVyU2VydmljZSB9IGZyb20gJy4vcXVlcnktYnVpbGRlci5zZXJ2aWNlJztcbmltcG9ydCB7IElucHV0R3JvdXBBZGRvbk1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvaW5wdXRncm91cGFkZG9uJztcbmltcG9ydCB7IElucHV0R3JvdXBNb2R1bGUgfSBmcm9tICdwcmltZW5nL2lucHV0Z3JvdXAnO1xuaW1wb3J0IHsgUXVlcnlQYXJhbWV0ZXJzIH0gZnJvbSAnQGVsaXRlLmZyYW1ld29yay9uZy5jb3JlL3NlcnZpY2VzJztcbmltcG9ydCB7IEJhZGdlTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9iYWRnZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1nZW5lcmljLXNlYXJjaC1hZHZhbmNlZCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRm9ybWx5Rm9ybSxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgVG9vbGJhck1vZHVsZSxcbiAgICBCdXR0b25Nb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBJbnB1dEljb25Nb2R1bGUsXG4gICAgSWNvbkZpZWxkTW9kdWxlLFxuICAgIElucHV0VGV4dE1vZHVsZSxcbiAgICBEcmF3ZXJNb2R1bGUsXG4gICAgSW5wdXRHcm91cE1vZHVsZSxcbiAgICBJbnB1dEdyb3VwQWRkb25Nb2R1bGUsXG4gICAgQmFkZ2VNb2R1bGVcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2dlbmVyaWMtc2VhcmNoLWFkdmFuY2VkLmh0bWwnLFxufSlcbmV4cG9ydCBjbGFzcyBHZW5lcmljU2VhcmNoQWR2YW5jZWQgaW1wbGVtZW50cyBPbkluaXQge1xuICB0cmFuc2xhdGUgPSBpbmplY3QoVHJhbnNsYXRlU2VydmljZSk7XG4gIHByaXZhdGUgcXVlcnlCdWlsZGVyID0gaW5qZWN0KFF1ZXJ5QnVpbGRlclNlcnZpY2UpO1xuXG4gIGRyYXdlclZpc2libGUgPSBmYWxzZTtcblxuICBAT3V0cHV0KCkgc2VhcmNoID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBwYWdpbmF0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBvZGF0YVNlYXJjaCA9IG5ldyBFdmVudEVtaXR0ZXI8UXVlcnlQYXJhbWV0ZXJzPigpO1xuXG4gIGZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcbiAgQElucHV0KCkgbW9kZWw6IGFueSA9IHt9O1xuICBvcHRpb25zOiBGb3JtbHlGb3JtT3B0aW9ucyA9IHt9O1xuICBASW5wdXQoKSBmaWVsZHM6IEZvcm1seUZpZWxkQ29uZmlnW10gPSBbXTtcbiAgZmllbGRzXzogRm9ybWx5RmllbGRDb25maWdbXSA9IFtdO1xuXG4gIEBJbnB1dCgpIGVuYWJsZVF1ZXJ5QnVpbGRlcjogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpIG9kYXRhQ29uZmlnOiBhbnkgPSB7fTtcblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmJ1aWxkUXVlcnlVSUZpZWxkcygpO1xuICB9XG5cbiAgZ2V0IGZpbHRlckNvdW50KCl7XG4gICAgY29uc3QgZmlsdGVycyA9ICgodGhpcy5tb2RlbD8uYWR2YW5jZWRGaWx0ZXJzID8/IFtdKVswXT8uY29uZGl0aW9ucz8ubGVuZ3RoIHx8IDApICtcbiAgICAoKHRoaXMubW9kZWw/LnNvcnRpbmcgPz8gW10pPy5sZW5ndGggfHwgMCkgK1xuICAgICh0aGlzLm1vZGVsPy5wYWdpbmF0aW9uICYmIHRoaXMubW9kZWw/LnBhZ2luYXRpb24/LnRvcCA/IDEgOiAwKTtcbiAgICByZXR1cm4gZmlsdGVycztcbiAgfVxuICBwcml2YXRlIGJ1aWxkUXVlcnlVSUZpZWxkcygpIHtcbiAgICBpZiAodGhpcy5lbmFibGVRdWVyeUJ1aWxkZXIpIHtcbiAgICAgIHRoaXMuZmllbGRzXyA9IHRoaXMucXVlcnlCdWlsZGVyLmJ1aWxkUXVlcnlVSUZpZWxkcyh0aGlzLmZpZWxkcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZmllbGRzXyA9IHRoaXMuZmllbGRzO1xuICAgIH1cbiAgfVxuXG4gIG9uU3VibWl0KCkge1xuICAgIC8vIFVzZSB0aGUgbmV3IFF1ZXJ5QnVpbGRlclNlcnZpY2UgbWV0aG9kc1xuICAgIGNvbnN0IG9kYXRhUGFyYW1zID0gdGhpcy5xdWVyeUJ1aWxkZXIuYnVpbGRPRGF0YUZyb21RdWVyeU1vZGVsKHRoaXMubW9kZWwsIHRoaXMuZmllbGRzKTtcbiAgICAvLyB0aGlzLm9kYXRhU2VhcmNoLmVtaXQob2RhdGFQYXJhbXMpO1xuXG4gICAgLy8gR2VuZXJhdGUgcXVlcnkgc3RyaW5nIHVzaW5nIHRoZSB1bmlmaWVkIG1ldGhvZFxuICAgIGNvbnN0IHF1ZXJ5U3RyaW5nID0gdGhpcy5xdWVyeUJ1aWxkZXIudG9PRGF0YVF1ZXJ5U3RyaW5nKG9kYXRhUGFyYW1zKTtcbiAgICAvLyBjb25zb2xlLmxvZygnT0RhdGEgUXVlcnkgU3RyaW5nOicsIHF1ZXJ5U3RyaW5nKTtcbiAgICBkZWJ1Z2dlclxuICAgIGlmKHRoaXMubW9kZWw/LnBhZ2luYXRpb24gJiYgdGhpcy5tb2RlbD8ucGFnaW5hdGlvbj8udG9wKXtcbiAgICB0aGlzLnBhZ2luYXRpb25DaGFuZ2UuZW1pdCh7XG4gICAgICB0b3A6dGhpcy5tb2RlbD8ucGFnaW5hdGlvbj8udG9wLFxuICAgICAgICAvLyBza2lwOixcbiAgICB9KTtcbiAgfVxuICAgIHRoaXMuc2VhcmNoLmVtaXQoXG4gICAgICB7XG4gICAgICAgIGZpbHRlcjp0aGlzLm1vZGVsWydmaWx0ZXInXSxcbiAgICAgICAgcXVlcnk6cXVlcnlTdHJpbmcsXG4gICAgICAgIC8vIHNvcnRpbmc6LFxuICAgICAgICAvLyB0b3A6LFxuICAgICAgICAvLyBza2lwOixcblxuICAgIH1cbiAgKTtcblxuICB9XG5cbiAgb25SZXNldCgpIHtcbiAgICB0aGlzLm1vZGVsID0ge307XG4gICAgdGhpcy5mb3JtLnJlc2V0KCk7XG4gICAgdGhpcy5wYWdpbmF0aW9uQ2hhbmdlLmVtaXQoe1xuICAgICAgdG9wOjEwLFxuICAgICAgICAvLyBza2lwOixcbiAgICB9KTtcbiAgICB0aGlzLnNlYXJjaC5lbWl0KHRoaXMubW9kZWwpO1xuXG4gICAgLy8gRW1pdCBlbXB0eSBRdWVyeVBhcmFtZXRlcnMgdXNpbmcgdGhlIHByb3BlciBzdHJ1Y3R1cmVcbiAgICAvLyB0aGlzLm9kYXRhU2VhcmNoLmVtaXQoe1xuICAgIC8vICAgZmlsdGVyczogW10sXG4gICAgLy8gICBvcmRlckJ5OiBbXSxcbiAgICAvLyAgIGdyb3VwQnk6IFtdLFxuICAgIC8vICAgZXhwYW5kOiBbXVxuICAgIC8vIH0pO1xuICB9XG5cblxuXG4gIC8vIFRvZ2dsZSBkcmF3ZXIgdmlzaWJpbGl0eVxuICB0b2dnbGVEcmF3ZXIoKSB7XG4gICAgdGhpcy5kcmF3ZXJWaXNpYmxlID0gIXRoaXMuZHJhd2VyVmlzaWJsZTtcbiAgfVxuXG4gIC8vIENsb3NlIGRyYXdlclxuICBjbG9zZURyYXdlcigpIHtcbiAgICB0aGlzLmRyYXdlclZpc2libGUgPSBmYWxzZTtcbiAgfVxuXG5cbn1cbiIsIjxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtd3JhcCBpdGVtcy1jZW50ZXIgZ2FwLTMgdy1mdWxsXCI+XHJcbiAgPCEtLSBTZWFyY2ggSW5wdXQgd2l0aCBJY29uIC0tPlxyXG4gIDxwLWlucHV0Z3JvdXAgY2xhc3M9XCJ3LWZ1bGxcIj5cclxuICA8aW5wdXRcclxuICAgIHBJbnB1dFRleHRcclxuICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgIFsobmdNb2RlbCldPVwibW9kZWxbJ2ZpbHRlciddXCJcclxuICAgIHBsYWNlaG9sZGVyPVwie3sgJ1NFQVJDSCcgfCB0cmFuc2xhdGUgfX1cIlxyXG4gICAgKGtleXVwLmVudGVyKT1cIm9uU3VibWl0KClcIlxyXG4gIC8+XHJcblxyXG5cclxuICA8cC1pbnB1dGdyb3VwLWFkZG9uPlxyXG4gICAgPHAtYnV0dG9uXHJcbiAgICAgIGljb249XCJwaSBwaS1zZWFyY2hcIlxyXG4gICAgICBzZXZlcml0eT1cInNlY29uZGFyeVwiXHJcbiAgICAgIChjbGljayk9XCJvblN1Ym1pdCgpXCJcclxuICAgID48L3AtYnV0dG9uPlxyXG4gIDwvcC1pbnB1dGdyb3VwLWFkZG9uPlxyXG48cC1pbnB1dGdyb3VwLWFkZG9uPlxyXG4gIDxkaXYgY2xhc3M9XCJyZWxhdGl2ZSBpbmxpbmUtZmxleFwiPlxyXG4gICAgPHAtYnV0dG9uXHJcbiAgICAgIGljb249XCJwaSBwaS1maWx0ZXJcIlxyXG4gICAgICBzZXZlcml0eT1cInNlY29uZGFyeVwiXHJcbiAgICAgIChvbkNsaWNrKT1cImRyYXdlclZpc2libGUgPSB0cnVlXCI+XHJcbiAgICA8L3AtYnV0dG9uPlxyXG5cclxuICAgIDxwLWJhZGdlXHJcbiAgICAgICpuZ0lmPVwiZmlsdGVyQ291bnQgPiAwXCJcclxuICAgICAgW3ZhbHVlXT1cImZpbHRlckNvdW50XCJcclxuICAgICAgc2V2ZXJpdHk9XCJ3YXJuXCJcclxuICAgICAgc2l6ZT1cInNtYWxsXCJcclxuICAgICAgY2xhc3M9XCJhYnNvbHV0ZSAtdG9wLTAgLXJpZ2h0LTBcIj5cclxuICAgIDwvcC1iYWRnZT5cclxuICA8L2Rpdj5cclxuPC9wLWlucHV0Z3JvdXAtYWRkb24+XHJcblxyXG4gIDxwLWlucHV0Z3JvdXAtYWRkb24gKm5nSWY9XCJtb2RlbFsnZmlsdGVyJ10gfHwgZmlsdGVyQ291bnQgPiAwXCI+XHJcbiAgICA8cC1idXR0b25cclxuICAgICAgaWNvbj1cInBpIHBpLXRpbWVzXCJcclxuICAgICAgc2V2ZXJpdHk9XCJkYW5nZXJcIlxyXG4gICAgICAoY2xpY2spPVwibW9kZWxbJ2ZpbHRlciddPScnOyBvblJlc2V0KClcIlxyXG4gICAgPjwvcC1idXR0b24+XHJcbiAgPC9wLWlucHV0Z3JvdXAtYWRkb24+XHJcbjwvcC1pbnB1dGdyb3VwPlxyXG5cclxuXHJcbjwvZGl2PlxyXG5cclxuPCEtLSBEcmF3ZXIgZm9yIEFkdmFuY2VkIE11bHRpLWZpZWxkIFNlYXJjaCAtLT5cclxuIEBpZihkcmF3ZXJWaXNpYmxlKXtcclxuPHAtZHJhd2VyXHJcbiAgWyh2aXNpYmxlKV09XCJkcmF3ZXJWaXNpYmxlXCJcclxuICBwb3NpdGlvbj1cInJpZ2h0XCJcclxuICBbc3R5bGVDbGFzc109XCInIXctZnVsbCBtZDohdy04MCBsZzohdy1bNDByZW1dICFoLWZ1bGwnIFwiXHJcbiAgW21vZGFsXT1cInRydWVcIlxyXG4gIFtkaXNtaXNzaWJsZV09XCJ0cnVlXCJcclxuICBzdHlsZUNsYXNzPVwicC00IHctZnVsbCBtYXgtdy1tZCBtYXgtaC1bOTB2aF0gZmxleCBmbGV4LWNvbFwiXHJcbj5cclxuICA8IS0tIEVudGlyZSBmb3JtIHdyYXBwZXIgLS0+XHJcbiAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCIgKG5nU3VibWl0KT1cIm9uU3VibWl0KCk7IGRyYXdlclZpc2libGU9ZmFsc2VcIiBjbGFzcz1cImZsZXggZmxleC1jb2wgZmxleC0xXCI+XHJcbiAgICA8IS0tIFNjcm9sbGFibGUgRm9ybSAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJmbGV4LTEgb3ZlcmZsb3ctYXV0b1wiPlxyXG4gICAgICA8Zm9ybWx5LWZvcm1cclxuICAgICAgICBbZm9ybV09XCJmb3JtXCJcclxuICAgICAgICBbZmllbGRzXT1cImZpZWxkc19cIlxyXG4gICAgICAgIFttb2RlbF09XCJtb2RlbFwiXHJcbiAgICAgICAgW29wdGlvbnNdPVwib3B0aW9uc1wiXHJcbiAgICAgID5cclxuICAgICAgPC9mb3JtbHktZm9ybT5cclxuICAgIDwvZGl2PlxyXG5cclxuICA8L2Zvcm0+XHJcbiAgPCEtLSBBY3Rpb24gQnV0dG9ucyAtLT5cclxuICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImZvb3RlclwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1lbmQgbXQtMiBzcGFjZS14LTIgZmxleC1ub25lXCI+XHJcbiAgICAgIDxidXR0b25cclxuICAgICAgdHlwZT1cInN1Ym1pdFwiXHJcbiAgICAgICBwQnV0dG9uIHNpemU9XCJzbWFsbFwiXHJcbiAgICAgICAgKGNsaWNrKT1cIiBvblN1Ym1pdCgpOyBkcmF3ZXJWaXNpYmxlPWZhbHNlXCJcclxuICAgICAgIGxhYmVsPVwie3sgJ1NFQVJDSCcgfCB0cmFuc2xhdGUgfX1cIj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxidXR0b25cclxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICBwQnV0dG9uXHJcbiAgICAgICAgc2l6ZT1cInNtYWxsXCJcclxuICAgICAgICBjbGFzcz1cInAtYnV0dG9uLXRleHRcIlxyXG4gICAgICAgIChjbGljayk9XCJvblJlc2V0KCk7IGRyYXdlclZpc2libGU9ZmFsc2VcIlxyXG4gICAgICA+XHJcbiAgICAgICAge3sgJ0NMRUFSJyB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuPC9wLWRyYXdlcj5cclxuXHJcbiB9XHJcbiJdfQ==","// sort-builder.component.ts\nimport { Component } from '@angular/core';\nimport { FieldType } from '@ngx-formly/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { SelectModule } from 'primeng/select';\nimport { ButtonModule } from 'primeng/button';\nimport { DragDropModule } from 'primeng/dragdrop';\nimport { TooltipModule } from 'primeng/tooltip';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common\";\nimport * as i2 from \"@angular/forms\";\nimport * as i3 from \"primeng/select\";\nimport * as i4 from \"primeng/button\";\nimport * as i5 from \"primeng/dragdrop\";\nimport * as i6 from \"primeng/tooltip\";\nexport class SortBuilderComponent extends FieldType {\n sorts = [];\n directionOptions = [\n { label: 'تصاعدي (أ → ي)', value: 'asc' },\n { label: 'تنازلي (ي → أ)', value: 'desc' }\n ];\n dragStartIndex = -1;\n ngOnInit() {\n if (this.formControl.value && Array.isArray(this.formControl.value)) {\n this.sorts = this.formControl.value.map((sort) => ({\n field: sort.field || '',\n direction: sort.direction || 'asc'\n }));\n }\n }\n addSort() {\n this.sorts.push({ field: '', direction: 'asc' });\n this.updateValue();\n }\n removeSort(index) {\n this.sorts.splice(index, 1);\n this.updateValue();\n }\n moveSort(fromIndex, toIndex) {\n if (toIndex >= 0 && toIndex < this.sorts.length) {\n const movedItem = this.sorts.splice(fromIndex, 1)[0];\n this.sorts.splice(toIndex, 0, movedItem);\n this.updateValue();\n }\n }\n onDragStart(index) {\n this.dragStartIndex = index;\n }\n onDrop(event, dropIndex) {\n if (this.dragStartIndex !== -1 && this.dragStartIndex !== dropIndex) {\n this.moveSort(this.dragStartIndex, dropIndex);\n }\n this.dragStartIndex = -1;\n }\n reverseSorts() {\n this.sorts.forEach(sort => {\n sort.direction = sort.direction === 'asc' ? 'desc' : 'asc';\n });\n this.updateValue();\n }\n clearAll() {\n this.sorts = [];\n this.updateValue();\n }\n getAvailableFields(currentField) {\n const usedFields = this.sorts.map(s => s.field).filter(f => f && f !== currentField);\n return this.props['fields'].filter((field) => !usedFields.includes(field.key) || field.key === currentField);\n }\n getFieldLabel(fieldKey) {\n const field = this.props['fields'].find((f) => f.key === fieldKey);\n return field?.label || fieldKey;\n }\n getDirectionIcon(direction) {\n return direction === 'asc' ? 'pi pi-sort-up' : 'pi pi-sort-down';\n }\n getDirectionColor(direction) {\n return direction === 'asc' ? 'text-green-500' : 'text-red-500';\n }\n updateValue() {\n // Filter out empty sorts and update value\n const validSorts = this.sorts.filter(sort => sort.field && sort.direction);\n this.formControl.setValue(validSorts);\n }\n // Helper to check if it's the last item\n get isLast() {\n return false; // This is used in template context\n }\n // Method to get current sort configuration\n getSortConfiguration() {\n return this.sorts.filter(sort => sort.field && sort.direction);\n }\n // Method to load sort configuration\n loadSortConfiguration(sortConfig) {\n if (sortConfig && Array.isArray(sortConfig)) {\n this.sorts = sortConfig.map(sort => ({\n field: sort.field || '',\n direction: sort.direction || 'asc'\n }));\n this.updateValue();\n }\n }\n // Method to check if a field is already used in sorting\n isFieldUsed(fieldKey) {\n return this.sorts.some(sort => sort.field === fieldKey);\n }\n // Get the next available field\n getNextAvailableField() {\n const availableFields = this.props['fields'].filter((field) => !this.isFieldUsed(field.key));\n return availableFields.length > 0 ? availableFields[0].key : '';\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: SortBuilderComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.1.8\", type: SortBuilderComponent, isStandalone: true, selector: \"formly-sort-builder\", usesInheritance: true, ngImport: i0, template: `\r\n <div class=\"sort-builder p-3 border-round border-1 surface-border\">\r\n <div class=\"flex justify-content-between align-items-center mb-3\">\r\n <h4 class=\"mt-0 mb-0\">{{ props.label }}</h4>\r\n <small class=\"text-500\">الأولوية من الأعلى إلى الأسفل</small>\r\n </div>\r\n\r\n <!-- Sort List -->\r\n <div *ngIf=\"sorts.length > 0\" class=\"sort-list space-y-2 mb-3\">\r\n <div\r\n *ngFor=\"let sort of sorts; let i = index; let isFirst = first; let isLast = last\"\r\n class=\"sort-row p-2 border-round surface-card\"\r\n pDraggable\r\n pDroppable\r\n (onDragStart)=\"onDragStart(i)\"\r\n (onDrop)=\"onDrop($event, i)\"\r\n [ngClass]=\"{'border-left-3 border-primary': isFirst, 'border-left-3 border-200': !isFirst}\">\r\n\r\n <div class=\"grid grid-cols-4 align-items-center gap-2\">\r\n <!-- Drag Handle -->\r\n\r\n\r\n <!-- Field Selector -->\r\n <div class=\"col-span-2 flex\">\r\n <button\r\n pButton\r\n icon=\"pi pi-bars\"\r\n type=\"button\"\r\n class=\"p-button-text p-button-plain cursor-move\"\r\n pTooltip=\"اسحب لتغيير الأولوية\"\r\n tooltipPosition=\"top\">\r\n </button>\r\n <p-select\r\n [options]=\"getAvailableFields(sort.field)\"\r\n optionLabel=\"label\"\r\n optionValue=\"key\"\r\n [(ngModel)]=\"sort.field\"\r\n (onChange)=\"updateValue()\"\r\n placeholder=\"اختر الحقل للترتيب\"\r\n [showClear]=\"true\"\r\n appendTo=\"body\"\r\n styleClass=\"w-full\">\r\n </p-select>\r\n </div>\r\n\r\n\r\n <!-- Direction Icon -->\r\n <div class=\"col-fixed\">\r\n <p-select\r\n [options]=\"directionOptions\"\r\n [(ngModel)]=\"sort.direction\"\r\n (onChange)=\"updateValue()\"\r\n placeholder=\"الاتجاه\"\r\n appendTo=\"body\"\r\n styleClass=\"w-full\">\r\n </p-select>\r\n </div>\r\n\r\n <!-- Actions -->\r\n <div class=\"col-fixed flex gap-2\" style=\"justify-content: flex-end;\">\r\n\r\n<!--\r\n <button\r\n outlined\r\n pButton\r\n [icon]=\"getDirectionIcon(sort.direction)\"\r\n type=\"button\"\r\n [ngClass]=\"'p-button-text p-button-sm' + getDirectionColor(sort.direction)\"\r\n pTooltip=\"{{ sort.direction === 'asc' ? 'تصاعدي' : 'تنازلي' }}\"\r\n tooltipPosition=\"top\">\r\n </button> -->\r\n <!-- Move Up -->\r\n <button\r\n outlined\r\n style=\" width: var(--p-button-icon-only-width);\"\r\n *ngIf=\"!isFirst\"\r\n pButton\r\n icon=\"pi pi-arrow-up\"\r\n type=\"button\"\r\n class=\" p-button-sm p-button-success\"\r\n (click)=\"moveSort(i, i - 1)\"\r\n pTooltip=\"تحريك للأعلى\"\r\n tooltipPosition=\"top\">\r\n </button>\r\n\r\n <!-- Move Down -->\r\n <button\r\n outlined\r\n style=\" width: var(--p-button-icon-only-width);\"\r\n *ngIf=\"!isLast\"\r\n pButton\r\n icon=\"pi pi-arrow-down\"\r\n type=\"button\"\r\n class=\" p-button-sm p-button-success\"\r\n (click)=\"moveSort(i, i + 1)\"\r\n pTooltip=\"تحريك للأسفل\"\r\n tooltipPosition=\"top\">\r\n </button>\r\n\r\n <!-- Remove -->\r\n <button\r\n style=\" width: var(--p-button-icon-only-width);\"\r\n pButton\r\n icon=\"pi pi-times\"\r\n type=\"button\"\r\n class=\" p-button-sm p-button-danger\"\r\n (click)=\"removeSort(i)\"\r\n pTooltip=\"حذف الترتيب\"\r\n tooltipPosition=\"top\">\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <!-- Field Info -->\r\n <!-- <div *ngIf=\"sort.field\" class=\"field-info mt-2 text-sm text-500\">\r\n <small>الحقل: {{ getFieldLabel(sort.field) }}</small>\r\n </div> -->\r\n </div>\r\n </div>\r\n\r\n <!-- Empty State -->\r\n <div *ngIf=\"sorts.length === 0\" class=\"empty-state text-center p-4 border-round surface-section\">\r\n <i class=\"pi pi-sort-alt text-4xl text-500 mb-3\"></i>\r\n <p class=\"text-500 mb-3\">لا توجد قواعد ترتيب محددة</p>\r\n <p class=\"text-400 text-sm mb-3\">سيتم استخدام الترتيب الافتراضي للبيانات</p>\r\n </div>\r\n\r\n <!-- Actions -->\r\n <div class=\"flex gap-2\">\r\n <button\r\n pButton\r\n icon=\"pi pi-sort-alt\"\r\n label=\"إضافة ترتيب\"\r\n type=\"button\"\r\n class=\"p-button-outlined flex-1\"\r\n (click)=\"addSort()\">\r\n </button>\r\n\r\n <button\r\n *ngIf=\"sorts.length > 1\"\r\n pButton\r\n icon=\"pi pi-random\"\r\n label=\"عكس الترتيب\"\r\n type=\"button\"\r\n class=\"p-button-outlined\"\r\n (click)=\"reverseSorts()\"\r\n pTooltip=\"عكس اتجاه جميع قواعد الترتيب\"\r\n tooltipPosition=\"top\">\r\n </button>\r\n\r\n <button\r\n *ngIf=\"sorts.length > 0\"\r\n pButton\r\n icon=\"pi pi-trash\"\r\n type=\"button\"\r\n class=\"p-button-outlined p-button-danger\"\r\n (click)=\"clearAll()\"\r\n pTooltip=\"مسح جميع قواعد الترتيب\"\r\n tooltipPosition=\"top\">\r\n </button>\r\n </div>\r\n\r\n <!-- Summary -->\r\n <div *ngIf=\"sorts.length > 0\" class=\"sort-summary mt-3 p-2 border-round surface-ground\">\r\n <h5 class=\"mt-0 mb-2 text-sm\">ملخص الترتيب:</h5>\r\n <div class=\"text-sm text-500\">\r\n <span *ngFor=\"let sort of sorts; let i = index\" class=\"sort-step\">\r\n <span class=\"font-semibold\">{{ getFieldLabel(sort.field) }}</span>\r\n <span class=\"direction-badge\" [ngClass]=\"sort.direction === 'asc' ? 'bg-green-100 text-green-800' : 'bg-red-100 text-red-800'\">\r\n {{ sort.direction === 'asc' ? '▲' : '▼' }}\r\n </span>\r\n <span *ngIf=\"!isLast\"> ثم </span>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n `, isInline: true, styles: [\"\"], dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"directive\", type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i1.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i2.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i2.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"ngmodule\", type: SelectModule }, { kind: \"component\", type: i3.Select, selector: \"p-select\", inputs: [\"id\", \"scrollHeight\", \"filter\", \"panelStyle\", \"styleClass\", \"panelStyleClass\", \"readonly\", \"editable\", \"tabindex\", \"placeholder\", \"loadingIcon\", \"filterPlaceholder\", \"filterLocale\", \"inputId\", \"dataKey\", \"filterBy\", \"filterFields\", \"autofocus\", \"resetFilterOnHide\", \"checkmark\", \"dropdownIcon\", \"loading\", \"optionLabel\", \"optionValue\", \"optionDisabled\", \"optionGroupLabel\", \"optionGroupChildren\", \"group\", \"showClear\", \"emptyFilterMessage\", \"emptyMessage\", \"lazy\", \"virtualScroll\", \"virtualScrollItemSize\", \"virtualScrollOptions\", \"overlayOptions\", \"ariaFilterLabel\", \"ariaLabel\", \"ariaLabelledBy\", \"filterMatchMode\", \"tooltip\", \"tooltipPosition\", \"tooltipPositionStyle\", \"tooltipStyleClass\", \"focusOnHover\", \"selectOnFocus\", \"autoOptionFocus\", \"autofocusFilter\", \"filterValue\", \"options\", \"appendTo\"], outputs: [\"onChange\", \"onFilter\", \"onFocus\", \"onBlur\", \"onClick\", \"onShow\", \"onHide\", \"onClear\", \"onLazyLoad\"] }, { kind: \"ngmodule\", type: ButtonModule }, { kind: \"directive\", type: i4.ButtonDirective, selector: \"[pButton]\", inputs: [\"iconPos\", \"loadingIcon\", \"loading\", \"severity\", \"raised\", \"rounded\", \"text\", \"outlined\", \"size\", \"plain\", \"fluid\", \"label\", \"icon\", \"buttonProps\"] }, { kind: \"ngmodule\", type: DragDropModule }, { kind: \"directive\", type: i5.Draggable, selector: \"[pDraggable]\", inputs: [\"pDraggable\", \"dragEffect\", \"dragHandle\", \"pDraggableDisabled\"], outputs: [\"onDragStart\", \"onDragEnd\", \"onDrag\"] }, { kind: \"directive\", type: i5.Droppable, selector: \"[pDroppable]\", inputs: [\"pDroppable\", \"pDroppableDisabled\", \"dropEffect\"], outputs: [\"onDragEnter\", \"onDragLeave\", \"onDrop\"] }, { kind: \"ngmodule\", type: TooltipModule }, { kind: \"directive\", type: i6.Tooltip, selector: \"[pTooltip]\", inputs: [\"tooltipPosition\", \"tooltipEvent\", \"positionStyle\", \"tooltipStyleClass\", \"tooltipZIndex\", \"escape\", \"showDelay\", \"hideDelay\", \"life\", \"positionTop\", \"positionLeft\", \"autoHide\", \"fitContent\", \"hideOnEscape\", \"pTooltip\", \"tooltipDisabled\", \"tooltipOptions\", \"appendTo\"] }] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: SortBuilderComponent, decorators: [{\n type: Component,\n args: [{ selector: 'formly-sort-builder', standalone: true, imports: [\n CommonModule,\n FormsModule,\n SelectModule,\n ButtonModule,\n DragDropModule,\n TooltipModule\n ], template: `\r\n <div class=\"sort-builder p-3 border-round border-1 surface-border\">\r\n <div class=\"flex justify-content-between align-items-center mb-3\">\r\n <h4 class=\"mt-0 mb-0\">{{ props.label }}</h4>\r\n <small class=\"text-500\">الأولوية من الأعلى إلى الأسفل</small>\r\n </div>\r\n\r\n <!-- Sort List -->\r\n <div *ngIf=\"sorts.length > 0\" class=\"sort-list space-y-2 mb-3\">\r\n <div\r\n *ngFor=\"let sort of sorts; let i = index; let isFirst = first; let isLast = last\"\r\n class=\"sort-row p-2 border-round surface-card\"\r\n pDraggable\r\n pDroppable\r\n (onDragStart)=\"onDragStart(i)\"\r\n (onDrop)=\"onDrop($event, i)\"\r\n [ngClass]=\"{'border-left-3 border-primary': isFirst, 'border-left-3 border-200': !isFirst}\">\r\n\r\n <div class=\"grid grid-cols-4 align-items-center gap-2\">\r\n <!-- Drag Handle -->\r\n\r\n\r\n <!-- Field Selector -->\r\n <div class=\"col-span-2 flex\">\r\n <button\r\n pButton\r\n icon=\"pi pi-bars\"\r\n type=\"button\"\r\n class=\"p-button-text p-button-plain cursor-move\"\r\n pTooltip=\"اسحب لتغيير الأولوية\"\r\n tooltipPosition=\"top\">\r\n </button>\r\n <p-select\r\n [options]=\"getAvailableFields(sort.field)\"\r\n optionLabel=\"label\"\r\n optionValue=\"key\"\r\n [(ngModel)]=\"sort.field\"\r\n (onChange)=\"updateValue()\"\r\n placeholder=\"اختر الحقل للترتيب\"\r\n [showClear]=\"true\"\r\n appendTo=\"body\"\r\n styleClass=\"w-full\">\r\n </p-select>\r\n </div>\r\n\r\n\r\n <!-- Direction Icon -->\r\n <div class=\"col-fixed\">\r\n <p-select\r\n [options]=\"directionOptions\"\r\n [(ngModel)]=\"sort.direction\"\r\n (onChange)=\"updateValue()\"\r\n placeholder=\"الاتجاه\"\r\n appendTo=\"body\"\r\n styleClass=\"w-full\">\r\n </p-select>\r\n </div>\r\n\r\n <!-- Actions -->\r\n <div class=\"col-fixed flex gap-2\" style=\"justify-content: flex-end;\">\r\n\r\n<!--\r\n <button\r\n outlined\r\n pButton\r\n [icon]=\"getDirectionIcon(sort.direction)\"\r\n type=\"button\"\r\n [ngClass]=\"'p-button-text p-button-sm' + getDirectionColor(sort.direction)\"\r\n pTooltip=\"{{ sort.direction === 'asc' ? 'تصاعدي' : 'تنازلي' }}\"\r\n tooltipPosition=\"top\">\r\n </button> -->\r\n <!-- Move Up -->\r\n <button\r\n outlined\r\n style=\" width: var(--p-button-icon-only-width);\"\r\n *ngIf=\"!isFirst\"\r\n pButton\r\n icon=\"pi pi-arrow-up\"\r\n type=\"button\"\r\n class=\" p-button-sm p-button-success\"\r\n (click)=\"moveSort(i, i - 1)\"\r\n pTooltip=\"تحريك للأعلى\"\r\n tooltipPosition=\"top\">\r\n </button>\r\n\r\n <!-- Move Down -->\r\n <button\r\n outlined\r\n style=\" width: var(--p-button-icon-only-width);\"\r\n *ngIf=\"!isLast\"\r\n pButton\r\n icon=\"pi pi-arrow-down\"\r\n type=\"button\"\r\n class=\" p-button-sm p-button-success\"\r\n (click)=\"moveSort(i, i + 1)\"\r\n pTooltip=\"تحريك للأسفل\"\r\n tooltipPosition=\"top\">\r\n </button>\r\n\r\n <!-- Remove -->\r\n <button\r\n style=\" width: var(--p-button-icon-only-width);\"\r\n pButton\r\n icon=\"pi pi-times\"\r\n type=\"button\"\r\n class=\" p-button-sm p-button-danger\"\r\n (click)=\"removeSort(i)\"\r\n pTooltip=\"حذف الترتيب\"\r\n tooltipPosition=\"top\">\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <!-- Field Info -->\r\n <!-- <div *ngIf=\"sort.field\" class=\"field-info mt-2 text-sm text-500\">\r\n <small>الحقل: {{ getFieldLabel(sort.field) }}</small>\r\n </div> -->\r\n </div>\r\n </div>\r\n\r\n <!-- Empty State -->\r\n <div *ngIf=\"sorts.length === 0\" class=\"empty-state text-center p-4 border-round surface-section\">\r\n <i class=\"pi pi-sort-alt text-4xl text-500 mb-3\"></i>\r\n <p class=\"text-500 mb-3\">لا توجد قواعد ترتيب محددة</p>\r\n <p class=\"text-400 text-sm mb-3\">سيتم استخدام الترتيب الافتراضي للبيانات</p>\r\n </div>\r\n\r\n <!-- Actions -->\r\n <div class=\"flex gap-2\">\r\n <button\r\n pButton\r\n icon=\"pi pi-sort-alt\"\r\n label=\"إضافة ترتيب\"\r\n type=\"button\"\r\n class=\"p-button-outlined flex-1\"\r\n (click)=\"addSort()\">\r\n </button>\r\n\r\n <button\r\n *ngIf=\"sorts.length > 1\"\r\n pButton\r\n icon=\"pi pi-random\"\r\n label=\"عكس الترتيب\"\r\n type=\"button\"\r\n class=\"p-button-outlined\"\r\n (click)=\"reverseSorts()\"\r\n pTooltip=\"عكس اتجاه جميع قواعد الترتيب\"\r\n tooltipPosition=\"top\">\r\n </button>\r\n\r\n <button\r\n *ngIf=\"sorts.length > 0\"\r\n pButton\r\n icon=\"pi pi-trash\"\r\n type=\"button\"\r\n class=\"p-button-outlined p-button-danger\"\r\n (click)=\"clearAll()\"\r\n pTooltip=\"مسح جميع قواعد الترتيب\"\r\n tooltipPosition=\"top\">\r\n </button>\r\n </div>\r\n\r\n <!-- Summary -->\r\n <div *ngIf=\"sorts.length > 0\" class=\"sort-summary mt-3 p-2 border-round surface-ground\">\r\n <h5 class=\"mt-0 mb-2 text-sm\">ملخص الترتيب:</h5>\r\n <div class=\"text-sm text-500\">\r\n <span *ngFor=\"let sort of sorts; let i = index\" class=\"sort-step\">\r\n <span class=\"font-semibold\">{{ getFieldLabel(sort.field) }}</span>\r\n <span class=\"direction-badge\" [ngClass]=\"sort.direction === 'asc' ? 'bg-green-100 text-green-800' : 'bg-red-100 text-red-800'\">\r\n {{ sort.direction === 'asc' ? '▲' : '▼' }}\r\n </span>\r\n <span *ngIf=\"!isLast\"> ثم </span>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n ` }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydC1idWlsZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmcudWkuY29yZS9nZW5lcmljLXNlYXJjaC1hZHZhbmNlZC9zcmMvbGliL3NvcnQtYnVpbGRlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsNEJBQTRCO0FBQzVCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFFLFNBQVMsRUFBbUIsTUFBTSxrQkFBa0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7Ozs7QUFnTWhELE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxTQUEwQjtJQUNsRSxLQUFLLEdBQVUsRUFBRSxDQUFDO0lBQ2xCLGdCQUFnQixHQUFHO1FBQ2pCLEVBQUUsS0FBSyxFQUFFLGdCQUFnQixFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUU7UUFDekMsRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTtLQUMzQyxDQUFDO0lBRU0sY0FBYyxHQUFXLENBQUMsQ0FBQyxDQUFDO0lBRXBDLFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3BFLElB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L0JBQ1osWUFBWSxvUUFDWixjQUFjLGtaQUNkLGFBQWE7OzJGQXFMSixvQkFBb0I7a0JBOUxoQyxTQUFTOytCQUNFLHFCQUFxQixjQUNuQixJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixXQUFXO3dCQUNYLFlBQVk7d0JBQ1osWUFBWTt3QkFDWixjQUFjO3dCQUNkLGFBQWE7cUJBQ2QsWUFFUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnTFQiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBzb3J0LWJ1aWxkZXIuY29tcG9uZW50LnRzXHJcbmltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGaWVsZFR5cGUsIEZpZWxkVHlwZUNvbmZpZyB9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgU2VsZWN0TW9kdWxlIH0gZnJvbSAncHJpbWVuZy9zZWxlY3QnO1xyXG5pbXBvcnQgeyBCdXR0b25Nb2R1bGUgfSBmcm9tICdwcmltZW5nL2J1dHRvbic7XHJcbmltcG9ydCB7IERyYWdEcm9wTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9kcmFnZHJvcCc7XHJcbmltcG9ydCB7IFRvb2x0aXBNb2R1bGUgfSBmcm9tICdwcmltZW5nL3Rvb2x0aXAnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdmb3JtbHktc29ydC1idWlsZGVyJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgU2VsZWN0TW9kdWxlLFxyXG4gICAgQnV0dG9uTW9kdWxlLFxyXG4gICAgRHJhZ0Ryb3BNb2R1bGUsXHJcbiAgICBUb29sdGlwTW9kdWxlXHJcbiAgXSxcclxuICBzdHlsZVVybHM6WycuL3NvcnQtYnVpbGRlci5jb21wb25lbnQuY3NzJ10sXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxkaXYgY2xhc3M9XCJzb3J0LWJ1aWxkZXIgcC0zIGJvcmRlci1yb3VuZCBib3JkZXItMSBzdXJmYWNlLWJvcmRlclwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgbWItM1wiPlxyXG4gICAgICAgIDxoNCBjbGFzcz1cIm10LTAgbWItMFwiPnt7IHByb3BzLmxhYmVsIH19PC9oND5cclxuICAgICAgICA8c21hbGwgY2xhc3M9XCJ0ZXh0LTUwMFwiPtin2YTYo9mI2YTZiNmK2Kkg2YXZhiDYp9mE2KPYudmE2Ykg2KXZhNmJINin2YTYo9iz2YHZhDwvc21hbGw+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPCEtLSBTb3J0IExpc3QgLS0+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCJzb3J0cy5sZW5ndGggPiAwXCIgY2xhc3M9XCJzb3J0LWxpc3Qgc3BhY2UteS0yIG1iLTNcIj5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgc29ydCBvZiBzb3J0czsgbGV0IGkgPSBpbmRleDsgbGV0IGlzRmlyc3QgPSBmaXJzdDsgbGV0IGlzTGFzdCA9IGxhc3RcIlxyXG4gICAgICAgICAgY2xhc3M9XCJzb3J0LXJvdyBwLTIgYm9yZGVyLXJvdW5kIHN1cmZhY2UtY2FyZFwiXHJcbiAgICAgICAgICBwRHJhZ2dhYmxlXHJcbiAgICAgICAgICBwRHJvcHBhYmxlXHJcbiAgICAgICAgICAob25EcmFnU3RhcnQpPVwib25EcmFnU3RhcnQoaSlcIlxyXG4gICAgICAgICAgKG9uRHJvcCk9XCJvbkRyb3AoJGV2ZW50LCBpKVwiXHJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7J2JvcmRlci1sZWZ0LTMgYm9yZGVyLXByaW1hcnknOiBpc0ZpcnN0LCAnYm9yZGVyLWxlZnQtMyBib3JkZXItMjAwJzogIWlzRmlyc3R9XCI+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQgZ3JpZC1jb2xzLTQgYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCI+XHJcbiAgICAgICAgICAgIDwhLS0gRHJhZyBIYW5kbGUgLS0+XHJcblxyXG5cclxuICAgICAgICAgICAgPCEtLSBGaWVsZCBTZWxlY3RvciAtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zcGFuLTIgZmxleFwiPlxyXG4gICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICBwQnV0dG9uXHJcbiAgICAgICAgICAgICAgICBpY29uPVwicGkgcGktYmFyc1wiXHJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwicC1idXR0b24tdGV4dCBwLWJ1dHRvbi1wbGFpbiBjdXJzb3ItbW92ZVwiXHJcbiAgICAgICAgICAgICAgICBwVG9vbHRpcD1cItin2LPYrdioINmE2KrYutmK2YrYsSDYp9mE2KPZiNmE2YjZitipXCJcclxuICAgICAgICAgICAgICAgIHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiPlxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDxwLXNlbGVjdFxyXG4gICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiZ2V0QXZhaWxhYmxlRmllbGRzKHNvcnQuZmllbGQpXCJcclxuICAgICAgICAgICAgICAgIG9wdGlvbkxhYmVsPVwibGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgb3B0aW9uVmFsdWU9XCJrZXlcIlxyXG4gICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzb3J0LmZpZWxkXCJcclxuICAgICAgICAgICAgICAgIChvbkNoYW5nZSk9XCJ1cGRhdGVWYWx1ZSgpXCJcclxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwi2KfYrtiq2LEg2KfZhNit2YLZhCDZhNmE2KrYsdiq2YrYqFwiXHJcbiAgICAgICAgICAgICAgICBbc2hvd0NsZWFyXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgYXBwZW5kVG89XCJib2R5XCJcclxuICAgICAgICAgICAgICAgIHN0eWxlQ2xhc3M9XCJ3LWZ1bGxcIj5cclxuICAgICAgICAgICAgICA8L3Atc2VsZWN0PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgICAgICAgICA8IS0tIERpcmVjdGlvbiBJY29uIC0tPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWZpeGVkXCI+XHJcbiAgICAgICAgICAgICAgPHAtc2VsZWN0XHJcbiAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJkaXJlY3Rpb25PcHRpb25zXCJcclxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic29ydC5kaXJlY3Rpb25cIlxyXG4gICAgICAgICAgICAgICAgKG9uQ2hhbmdlKT1cInVwZGF0ZVZhbHVlKClcIlxyXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCLYp9mE2KfYqtis2KfZh1wiXHJcbiAgICAgICAgICAgICAgICBhcHBlbmRUbz1cImJvZHlcIlxyXG4gICAgICAgICAgICAgICAgc3R5bGVDbGFzcz1cInctZnVsbFwiPlxyXG4gICAgICAgICAgICAgIDwvcC1zZWxlY3Q+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPCEtLSBBY3Rpb25zIC0tPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWZpeGVkIGZsZXggZ2FwLTJcIiBzdHlsZT1cImp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XCI+XHJcblxyXG48IS0tXHJcbiAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgb3V0bGluZWRcclxuICAgICAgICAgICAgICAgIHBCdXR0b25cclxuICAgICAgICAgICAgICAgIFtpY29uXT1cImdldERpcmVjdGlvbkljb24oc29ydC5kaXJlY3Rpb24pXCJcclxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiJ3AtYnV0dG9uLXRleHQgcC1idXR0b24tc20nICsgZ2V0RGlyZWN0aW9uQ29sb3Ioc29ydC5kaXJlY3Rpb24pXCJcclxuICAgICAgICAgICAgICAgIHBUb29sdGlwPVwie3sgc29ydC5kaXJlY3Rpb24gPT09ICdhc2MnID8gJ9iq2LXYp9i52K/ZiicgOiAn2KrZhtin2LLZhNmKJyB9fVwiXHJcbiAgICAgICAgICAgICAgICB0b29sdGlwUG9zaXRpb249XCJ0b3BcIj5cclxuICAgICAgICAgICAgICA8L2J1dHRvbj4gLS0+XHJcbiAgICAgICAgICAgICAgPCEtLSBNb3ZlIFVwIC0tPlxyXG4gICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICBvdXRsaW5lZFxyXG4gICAgICAgICAgICAgICAgc3R5bGU9XCIgICAgd2lkdGg6IHZhcigtLXAtYnV0dG9uLWljb24tb25seS13aWR0aCk7XCJcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIWlzRmlyc3RcIlxyXG4gICAgICAgICAgICAgICAgcEJ1dHRvblxyXG4gICAgICAgICAgICAgICAgaWNvbj1cInBpIHBpLWFycm93LXVwXCJcclxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCIgcC1idXR0b24tc20gcC1idXR0b24tc3VjY2Vzc1wiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwibW92ZVNvcnQoaSwgaSAtIDEpXCJcclxuICAgICAgICAgICAgICAgIHBUb29sdGlwPVwi2KrYrdix2YrZgyDZhNmE2KPYudmE2YlcIlxyXG4gICAgICAgICAgICAgICAgdG9vbHRpcFBvc2l0aW9uPVwidG9wXCI+XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgICAgICAgIDwhLS0gTW92ZSBEb3duIC0tPlxyXG4gICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICBvdXRsaW5lZFxyXG4gICAgICAgICAgICAgICAgICAgc3R5bGU9XCIgICAgd2lkdGg6IHZhcigtLXAtYnV0dG9uLWljb24tb25seS13aWR0aCk7XCJcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIWlzTGFzdFwiXHJcbiAgICAgICAgICAgICAgICBwQnV0dG9uXHJcbiAgICAgICAgICAgICAgICBpY29uPVwicGkgcGktYXJyb3ctZG93blwiXHJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiIHAtYnV0dG9uLXNtIHAtYnV0dG9uLXN1Y2Nlc3NcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm1vdmVTb3J0KGksIGkgKyAxKVwiXHJcbiAgICAgICAgICAgICAgICBwVG9vbHRpcD1cItiq2K3YsdmK2YMg2YTZhNij2LPZgdmEXCJcclxuICAgICAgICAgICAgICAgIHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiPlxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgICAgICAgICA8IS0tIFJlbW92ZSAtLT5cclxuICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgIHN0eWxlPVwiICAgIHdpZHRoOiB2YXIoLS1wLWJ1dHRvbi1pY29uLW9ubHktd2lkdGgpO1wiXHJcbiAgICAgICAgICAgICAgICBwQnV0dG9uXHJcbiAgICAgICAgICAgICAgICBpY29uPVwicGkgcGktdGltZXNcIlxyXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIiBwLWJ1dHRvbi1zbSBwLWJ1dHRvbi1kYW5nZXJcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZVNvcnQoaSlcIlxyXG4gICAgICAgICAgICAgICAgcFRvb2x0aXA9XCLYrdiw2YEg2KfZhNiq2LHYqtmK2KhcIlxyXG4gICAgICAgICAgICAgICAgdG9vbHRpcFBvc2l0aW9uPVwidG9wXCI+XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPCEtLSBGaWVsZCBJbmZvIC0tPlxyXG4gICAgICAgICAgPCEtLSA8ZGl2ICpuZ0lmPVwic29ydC5maWVsZFwiIGNsYXNzPVwiZmllbGQtaW5mbyBtdC0yIHRleHQtc20gdGV4dC01MDBcIj5cclxuICAgICAgICAgICAgPHNtYWxsPtin2YTYrdmC2YQ6IHt7IGdldEZpZWxkTGFiZWwoc29ydC5maWVsZCkgfX08L3NtYWxsPlxyXG4gICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwhLS0gRW1wdHkgU3RhdGUgLS0+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCJzb3J0cy5sZW5ndGggPT09IDBcIiBjbGFzcz1cImVtcHR5LXN0YXRlIHRleHQtY2VudGVyIHAtNCBib3JkZXItcm91bmQgc3VyZmFjZS1zZWN0aW9uXCI+XHJcbiAgICAgICAgPGkgY2xhc3M9XCJwaSBwaS1zb3J0LWFsdCB0ZXh0LTR4bCB0ZXh0LTUwMCBtYi0zXCI+PC9pPlxyXG4gICAgICAgIDxwIGNsYXNzPVwidGV4dC01MDAgbWItM1wiPtmE2Kcg2KrZiNis2K8g2YLZiNin2LnYryDYqtix2KrZitioINmF2K3Yr9iv2Kk8L3A+XHJcbiAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LTQwMCB0ZXh0LXNtIG1iLTNcIj7Ys9mK2KrZhSDYp9iz2KrYrtiv2KfZhSDYp9mE2KrYsdiq2YrYqCDYp9mE2KfZgdiq2LHYp9i22Yog2YTZhNio2YrYp9mG2KfYqjwvcD5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8IS0tIEFjdGlvbnMgLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGdhcC0yXCI+XHJcbiAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgcEJ1dHRvblxyXG4gICAgICAgICAgaWNvbj1cInBpIHBpLXNvcnQtYWx0XCJcclxuICAgICAgICAgIGxhYmVsPVwi2KXYttin2YHYqSDYqtix2KrZitioXCJcclxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgY2xhc3M9XCJwLWJ1dHRvbi1vdXRsaW5lZCBmbGV4LTFcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cImFkZFNvcnQoKVwiPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAqbmdJZj1cInNvcnRzLmxlbmd0aCA+IDFcIlxyXG4gICAgICAgICAgcEJ1dHRvblxyXG4gICAgICAgICAgaWNvbj1cInBpIHBpLXJhbmRvbVwiXHJcbiAgICAgICAgICBsYWJlbD1cIti52YPYsyDYp9mE2KrYsdiq2YrYqFwiXHJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgIGNsYXNzPVwicC1idXR0b24tb3V0bGluZWRcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cInJldmVyc2VTb3J0cygpXCJcclxuICAgICAgICAgIHBUb29sdGlwPVwi2LnZg9izINin2KrYrNin2Ycg2KzZhdmK2Lkg2YLZiNin2LnYryDYp9mE2KrYsdiq2YrYqFwiXHJcbiAgICAgICAgICB0b29sdGlwUG9zaXRpb249XCJ0b3BcIj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgKm5nSWY9XCJzb3J0cy5sZW5ndGggPiAwXCJcclxuICAgICAgICAgIHBCdXR0b25cclxuICAgICAgICAgIGljb249XCJwaSBwaS10cmFzaFwiXHJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgIGNsYXNzPVwicC1idXR0b24tb3V0bGluZWQgcC1idXR0b24tZGFuZ2VyXCJcclxuICAgICAgICAgIChjbGljayk9XCJjbGVhckFsbCgpXCJcclxuICAgICAgICAgIHBUb29sdGlwPVwi2YXYs9itINis2YXZiti5INmC2YjYp9i52K8g2KfZhNiq2LHYqtmK2KhcIlxyXG4gICAgICAgICAgdG9vbHRpcFBvc2l0aW9uPVwidG9wXCI+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPCEtLSBTdW1tYXJ5IC0tPlxyXG4gICAgICA8ZGl2ICpuZ0lmPVwic29ydHMubGVuZ3RoID4gMFwiIGNsYXNzPVwic29ydC1zdW1tYXJ5IG10LTMgcC0yIGJvcmRlci1yb3VuZCBzdXJmYWNlLWdyb3VuZFwiPlxyXG4gICAgICAgIDxoNSBjbGFzcz1cIm10LTAgbWItMiB0ZXh0LXNtXCI+2YXZhNiu2LUg2KfZhNiq2LHYqtmK2Kg6PC9oNT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1zbSB0ZXh0LTUwMFwiPlxyXG4gICAgICAgICAgPHNwYW4gKm5nRm9yPVwibGV0IHNvcnQgb2Ygc29ydHM7IGxldCBpID0gaW5kZXhcIiBjbGFzcz1cInNvcnQtc3RlcFwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZvbnQtc2VtaWJvbGRcIj57eyBnZXRGaWVsZExhYmVsKHNvcnQuZmllbGQpIH19PC9zcGFuPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRpcmVjdGlvbi1iYWRnZVwiIFtuZ0NsYXNzXT1cInNvcnQuZGlyZWN0aW9uID09PSAnYXNjJyA/ICdiZy1ncmVlbi0xMDAgdGV4dC1ncmVlbi04MDAnIDogJ2JnLXJlZC0xMDAgdGV4dC1yZWQtODAwJ1wiPlxyXG4gICAgICAgICAgICAgIHt7IHNvcnQuZGlyZWN0aW9uID09PSAnYXNjJyA/ICfilrInIDogJ+KWvCcgfX1cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFpc0xhc3RcIj4g2KvZhSA8L3NwYW4+XHJcbiAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgYFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU29ydEJ1aWxkZXJDb21wb25lbnQgZXh0ZW5kcyBGaWVsZFR5cGU8RmllbGRUeXBlQ29uZmlnPiB7XHJcbiAgc29ydHM6IGFueVtdID0gW107XHJcbiAgZGlyZWN0aW9uT3B0aW9ucyA9IFtcclxuICAgIHsgbGFiZWw6ICfYqti12KfYudiv2YogKNijIOKGkiDZiiknLCB2YWx1ZTogJ2FzYycgfSxcclxuICAgIHsgbGFiZWw6ICfYqtmG2KfYstmE2YogKNmKIOKGkiDYoyknLCB2YWx1ZTogJ2Rlc2MnIH1cclxuICBdO1xyXG5cclxuICBwcml2YXRlIGRyYWdTdGFydEluZGV4OiBudW1iZXIgPSAtMTtcclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBpZiAodGhpcy5mb3JtQ29udHJvbC52YWx1ZSAmJiBBcnJheS5pc0FycmF5KHRoaXMuZm9ybUNvbnRyb2wudmFsdWUpKSB7XHJcbiAgICAgIHRoaXMuc29ydHMgPSB0aGlzLmZvcm1Db250cm9sLnZhbHVlLm1hcCgoc29ydDogYW55KSA9PiAoe1xyXG4gICAgICAgIGZpZWxkOiBzb3J0LmZpZWxkIHx8ICcnLFxyXG4gICAgICAgIGRpcmVjdGlvbjogc29ydC5kaXJlY3Rpb24gfHwgJ2FzYydcclxuICAgICAgfSkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYWRkU29ydCgpIHtcclxuICAgIHRoaXMuc29ydHMucHVzaCh7IGZpZWxkOiAnJywgZGlyZWN0aW9uOiAnYXNjJyB9KTtcclxuICAgIHRoaXMudXBkYXRlVmFsdWUoKTtcclxuICB9XHJcblxyXG4gIHJlbW92ZVNvcnQoaW5kZXg6IG51bWJlcikge1xyXG4gICAgdGhpcy5zb3J0cy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgdGhpcy51cGRhdGVWYWx1ZSgpO1xyXG4gIH1cclxuXHJcbiAgbW92ZVNvcnQoZnJvbUluZGV4OiBudW1iZXIsIHRvSW5kZXg6IG51bWJlcikge1xyXG4gICAgaWYgKHRvSW5kZXggPj0gMCAmJiB0b0luZGV4IDwgdGhpcy5zb3J0cy5sZW5ndGgpIHtcclxuICAgICAgY29uc3QgbW92ZWRJdGVtID0gdGhpcy5zb3J0cy5zcGxpY2UoZnJvbUluZGV4LCAxKVswXTtcclxuICAgICAgdGhpcy5zb3J0cy5zcGxpY2UodG9JbmRleCwgMCwgbW92ZWRJdGVtKTtcclxuICAgICAgdGhpcy51cGRhdGVWYWx1ZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25EcmFnU3RhcnQoaW5kZXg6IG51bWJlcikge1xyXG4gICAgdGhpcy5kcmFnU3RhcnRJbmRleCA9IGluZGV4O1xyXG4gIH1cclxuXHJcbiAgb25Ecm9wKGV2ZW50OiBhbnksIGRyb3BJbmRleDogbnVtYmVyKSB7XHJcbiAgICBpZiAodGhpcy5kcmFnU3RhcnRJbmRleCAhPT0gLTEgJiYgdGhpcy5kcmFnU3RhcnRJbmRleCAhPT0gZHJvcEluZGV4KSB7XHJcbiAgICAgIHRoaXMubW92ZVNvcnQodGhpcy5kcmFnU3RhcnRJbmRleCwgZHJvcEluZGV4KTtcclxuICAgIH1cclxuICAgIHRoaXMuZHJhZ1N0YXJ0SW5kZXggPSAtMTtcclxuICB9XHJcblxyXG4gIHJldmVyc2VTb3J0cygpIHtcclxuICAgIHRoaXMuc29ydHMuZm9yRWFjaChzb3J0ID0+IHtcclxuICAgICAgc29ydC5kaXJlY3Rpb24gPSBzb3J0LmRpcmVjdGlvbiA9PT0gJ2FzYycgPyAnZGVzYycgOiAnYXNjJztcclxuICAgIH0pO1xyXG4gICAgdGhpcy51cGRhdGVWYWx1ZSgpO1xyXG4gIH1cclxuXHJcbiAgY2xlYXJBbGwoKSB7XHJcbiAgICB0aGlzLnNvcnRzID0gW107XHJcbiAgICB0aGlzLnVwZGF0ZVZhbHVlKCk7XHJcbiAgfVxyXG5cclxuICBnZXRBdmFpbGFibGVGaWVsZHMoY3VycmVudEZpZWxkOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IHVzZWRGaWVsZHMgPSB0aGlzLnNvcnRzLm1hcChzID0+IHMuZmllbGQpLmZpbHRlcihmID0+IGYgJiYgZiAhPT0gY3VycmVudEZpZWxkKTtcclxuICAgIHJldHVybiB0aGlzLnByb3BzWydmaWVsZHMnXS5maWx0ZXIoKGZpZWxkOiBhbnkpID0+XHJcbiAgICAgICF1c2VkRmllbGRzLmluY2x1ZGVzKGZpZWxkLmtleSkgfHwgZmllbGQua2V5ID09PSBjdXJyZW50RmllbGRcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRGaWVsZExhYmVsKGZpZWxkS2V5OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgZmllbGQgPSB0aGlzLnByb3BzWydmaWVsZHMnXS5maW5kKChmOiBhbnkpID0+IGYua2V5ID09PSBmaWVsZEtleSk7XHJcbiAgICByZXR1cm4gZmllbGQ/LmxhYmVsIHx8IGZpZWxkS2V5O1xyXG4gIH1cclxuXHJcbiAgZ2V0RGlyZWN0aW9uSWNvbihkaXJlY3Rpb246IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gZGlyZWN0aW9uID09PSAnYXNjJyA/ICdwaSBwaS1zb3J0LXVwJyA6ICdwaSBwaS1zb3J0LWRvd24nO1xyXG4gIH1cclxuXHJcbiAgZ2V0RGlyZWN0aW9uQ29sb3IoZGlyZWN0aW9uOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIGRpcmVjdGlvbiA9PT0gJ2FzYycgPyAndGV4dC1ncmVlbi01MDAnIDogJ3RleHQtcmVkLTUwMCc7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVWYWx1ZSgpIHtcclxuICAgIC8vIEZpbHRlciBvdXQgZW1wdHkgc29ydHMgYW5kIHVwZGF0ZSB2YWx1ZVxyXG4gICAgY29uc3QgdmFsaWRTb3J0cyA9IHRoaXMuc29ydHMuZmlsdGVyKHNvcnQgPT4gc29ydC5maWVsZCAmJiBzb3J0LmRpcmVjdGlvbik7XHJcbiAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKHZhbGlkU29ydHMpO1xyXG4gIH1cclxuXHJcbiAgLy8gSGVscGVyIHRvIGNoZWNrIGlmIGl0J3MgdGhlIGxhc3QgaXRlbVxyXG4gIGdldCBpc0xhc3QoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gZmFsc2U7IC8vIFRoaXMgaXMgdXNlZCBpbiB0ZW1wbGF0ZSBjb250ZXh0XHJcbiAgfVxyXG5cclxuICAvLyBNZXRob2QgdG8gZ2V0IGN1cnJlbnQgc29ydCBjb25maWd1cmF0aW9uXHJcbiAgZ2V0U29ydENvbmZpZ3VyYXRpb24oKTogYW55W10ge1xyXG4gICAgcmV0dXJuIHRoaXMuc29ydHMuZmlsdGVyKHNvcnQgPT4gc29ydC5maWVsZCAmJiBzb3J0LmRpcmVjdGlvbik7XHJcbiAgfVxyXG5cclxuICAvLyBNZXRob2QgdG8gbG9hZCBzb3J0IGNvbmZpZ3VyYXRpb25cclxuICBsb2FkU29ydENvbmZpZ3VyYXRpb24oc29ydENvbmZpZzogYW55W10pIHtcclxuICAgIGlmIChzb3J0Q29uZmlnICYmIEFycmF5LmlzQXJyYXkoc29ydENvbmZpZykpIHtcclxuICAgICAgdGhpcy5zb3J0cyA9IHNvcnRDb25maWcubWFwKHNvcnQgPT4gKHtcclxuICAgICAgICBmaWVsZDogc29ydC5maWVsZCB8fCAnJyxcclxuICAgICAgICBkaXJlY3Rpb246IHNvcnQuZGlyZWN0aW9uIHx8ICdhc2MnXHJcbiAgICAgIH0pKTtcclxuICAgICAgdGhpcy51cGRhdGVWYWx1ZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gTWV0aG9kIHRvIGNoZWNrIGlmIGEgZmllbGQgaXMgYWxyZWFkeSB1c2VkIGluIHNvcnRpbmdcclxuICBpc0ZpZWxkVXNlZChmaWVsZEtleTogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5zb3J0cy5zb21lKHNvcnQgPT4gc29ydC5maWVsZCA9PT0gZmllbGRLZXkpO1xyXG4gIH1cclxuXHJcbiAgLy8gR2V0IHRoZSBuZXh0IGF2YWlsYWJsZSBmaWVsZFxyXG4gIGdldE5leHRBdmFpbGFibGVGaWVsZCgpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgYXZhaWxhYmxlRmllbGRzID0gdGhpcy5wcm9wc1snZmllbGRzJ10uZmlsdGVyKChmaWVsZDogYW55KSA9PlxyXG4gICAgICAhdGhpcy5pc0ZpZWxkVXNlZChmaWVsZC5rZXkpXHJcbiAgICApO1xyXG4gICAgcmV0dXJuIGF2YWlsYWJsZUZpZWxkcy5sZW5ndGggPiAwID8gYXZhaWxhYmxlRmllbGRzWzBdLmtleSA6ICcnO1xyXG4gIH1cclxufVxyXG4iXX0=","// query-builder.component.ts\nimport { ListboxModule } from 'primeng/listbox';\nimport { ChangeDetectorRef, Component, inject } from '@angular/core';\nimport { FieldType, FormlyForm } from '@ngx-formly/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { ButtonModule } from 'primeng/button';\nimport { CheckboxModule } from 'primeng/checkbox';\nimport { SelectModule } from 'primeng/select';\nimport { DatePickerModule } from 'primeng/datepicker';\nimport { RadioButtonModule } from 'primeng/radiobutton';\nimport { TooltipModule } from 'primeng/tooltip';\nimport { QueryBuilderService } from './query-builder.service';\nimport { MenuModule } from 'primeng/menu';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { InputGroupAddonModule } from 'primeng/inputgroupaddon';\nimport { InputGroupModule } from 'primeng/inputgroup';\nimport { PopoverModule } from 'primeng/popover';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common\";\nimport * as i2 from \"@angular/forms\";\nimport * as i3 from \"primeng/api\";\nimport * as i4 from \"primeng/button\";\nimport * as i5 from \"primeng/tooltip\";\nimport * as i6 from \"primeng/popover\";\nimport * as i7 from \"primeng/listbox\";\nimport * as i8 from \"@ngx-translate/core\";\nexport class QueryBuilderComponent extends FieldType {\n queryBuilderService = inject(QueryBuilderService);\n cdr = inject(ChangeDetectorRef);\n translate = inject(TranslateService);\n groups = [];\n logicalOperators = [\n { label: this.translate.instant('and'), value: 'and' },\n { label: this.translate.instant('or'), value: 'or' }\n ];\n onAndClick(group, event) {\n group.logicalOperator = 'and';\n this.updateValue();\n }\n onOrClick(group, event) {\n group.logicalOperator = 'or';\n this.updateValue();\n }\n ngOnInit() {\n // Initialize with existing value or default group with conditions\n if (this.formControl.value && (Array.isArray(this.formControl.value) && this.formControl.value.length > 0)) {\n this.groups = this.formControl.value.map((group, groupIndex) => ({\n logicalOperator: group.logicalOperator || 'and',\n groupLogicalOperator: group.groupLogicalOperator || 'and',\n conditions: this.initializeConditionsWithFieldConfigs(group.conditions || [], groupIndex)\n }));\n }\n else {\n // Start with default conditions for important fields\n this.initializeDefaultConditions();\n }\n }\n getLogicalOperatorText(operator) {\n const operatorMap = {\n 'and': this.translate.instant('and'),\n 'or': this.translate.instant('or'),\n 'not': this.translate.instant('not')\n };\n return operatorMap[operator] || operator;\n }\n initializeDefaultConditions() {\n // Get default fields using the service logic\n const defaultFields = this.getDefaultFields();\n const defaultConditions = [];\n for (let i = 0; i < defaultFields.length; i++) {\n const field = defaultFields[i];\n defaultConditions.push(this.createDefaultCondition(field, 0, i));\n }\n this.groups = [{\n logicalOperator: 'and',\n groupLogicalOperator: 'and',\n conditions: defaultConditions\n }];\n this.updateValue();\n }\n getDefaultFields() {\n // Get all filterable fields\n const filterableFields = this.props['fields'].filter((field) => field.filterable !== false && field.key && this.isSupportedFieldType(field.type));\n // If no filterable fields, return empty array\n if (filterableFields.length === 0) {\n return [];\n }\n const selectedFields = filterableFields;\n return selectedFields;\n }\n isSupportedFieldType(fieldType) {\n // Only include field types that make sense for filtering\n const supportedTypes = ['input', 'number', 'datepicker', 'select', 'checkbox', 'generic-selector', 'switch', 'radio', 'textarea'];\n return supportedTypes.includes(fieldType);\n }\n getFieldLabel(key) {\n const f = this.props['fields']?.find((x) => x.key === key);\n return f ? f.label : '';\n }\n createDefaultCondition(field, groupIndex, conditionIndex) {\n const defaultCondition = {\n field: field.key,\n operator: this.getDefaultOperator(field.type),\n value: this.getDefaultValue(field.type),\n valueFieldConfig: null,\n operatorsForField: this.getOperatorsForField(field),\n };\n // Generate field config for this condition\n defaultCondition.valueFieldConfig = this.generateValueFieldConfig(defaultCondition, groupIndex, conditionIndex);\n return defaultCondition;\n }\n initializeConditionsWithFieldConfigs(conditions, groupIndex) {\n return conditions.map((condition, conditionIndex) => ({\n ...condition,\n operatorsForField: this.getOperatorsForField(condition.field),\n valueFieldConfig: condition.field ?\n this.generateValueFieldConfig(condition, groupIndex, conditionIndex) :\n null\n }));\n }\n // Field type and operator methods that use QueryBuilderService logic\n getFieldType(fieldKey) {\n const field = this.props['fields'].find((f) => f.key === fieldKey);\n return field?.type || 'input';\n }\n getOperatorsForField(fieldKey) {\n if (!fieldKey)\n return [];\n const field = this.props['fields'].find((f) => f.key === fieldKey);\n // Use operators from the field configuration\n const operators = field?.operators || this.queryBuilderService['getOperatorsForType'](field?.type);\n return operators.map((op) => ({\n label: this.getOperatorLabel(op).label,\n icon: this.getOperatorLabel(op).icon,\n value: op\n }));\n }\n getOperatorLabel(operator) {\n const map = {\n eq: { label: this.translate.instant('eq'), icon: 'pi pi-equals' },\n ne: { label: this.translate.instant('ne'), icon: 'pi pi-hashtag' },\n contains: { label: this.translate.instant('contains'), icon: 'pi pi-search' },\n startswith: { label: this.translate.instant('startswith'), icon: 'pi pi-arrow-right' },\n endswith: { label: this.translate.instant('endswith'), icon: 'pi pi-arrow-left' },\n gt: { label: this.translate.instant('gt'), icon: 'pi pi-chevron-right' },\n ge: { label: this.translate.instant('ge'), icon: 'pi pi-angle-double-right' },\n lt: { label: this.translate.instant('lt'), icon: 'pi pi-chevron-left' },\n le: { label: this.translate.instant('le'), icon: 'pi pi-angle-double-left' },\n in: { label: this.translate.instant('in'), icon: 'pi pi-list' },\n notin: { label: this.translate.instant('notin'), icon: 'pi pi-ban' },\n };\n return map[operator] || { label: operator, icon: 'pi pi-question' };\n }\n getDefaultOperator(fieldType) {\n // Use service's field type config\n const fieldConfig = this.queryBuilderService['fieldTypeConfig'][fieldType];\n return fieldConfig ? fieldConfig.defaultOperator : 'contains';\n }\n getDefaultValue(fieldType) {\n // Use service's field type config\n const fieldConfig = this.queryBuilderService['fieldTypeConfig'][fieldType];\n return fieldConfig ? fieldConfig.defaultValue : '';\n }\n getFieldProps(fieldKey) {\n const field = this.props['fields'].find((f) => f.key === fieldKey);\n // Return props without label to avoid duplication\n const props = { ...field?.props };\n delete props.label;\n delete props.loadDefault;\n return props;\n }\n generateValueFieldConfig(condition, groupIndex, conditionIndex) {\n const fieldType = this.getFieldType(condition.field);\n const fieldProps = this.getFieldProps(condition.field);\n const fieldKey = this.getConditionValueKey(groupIndex, conditionIndex);\n return {\n key: fieldKey,\n type: fieldType,\n wrappers: [],\n props: {\n ...fieldProps, // Include all other props from the original field\n placeholder: '',\n loadDefault: false,\n change: (field, event) => {\n this.updateValue();\n }\n },\n hooks: {\n onInit: (field) => {\n if (field.formControl && condition.value !== undefined) {\n field.formControl.setValue(condition.value, { emitEvent: false });\n }\n }\n },\n modelOptions: {\n updateOn: 'change'\n }\n };\n }\n getConditionValueKey(groupIndex, conditionIndex) {\n return `condition_${groupIndex}_${conditionIndex}_value`;\n }\n // Group Management\n addGroup() {\n this.groups.push({\n logicalOperator: 'and',\n groupLogicalOperator: 'and',\n conditions: []\n });\n this.updateValue();\n }\n removeGroup(groupIndex) {\n this.groups.splice(groupIndex, 1);\n this.updateValue();\n }\n // Condition Management\n addCondition(groupIndex = 0) {\n if (!this.groups[groupIndex]) {\n this.addGroup();\n }\n const newCondition = {\n field: '',\n operator: 'eq',\n value: '',\n valueFieldConfig: {}\n };\n const conditionIndex = this.groups[groupIndex].conditions.length;\n newCondition.valueFieldConfig = this.generateValueFieldConfig(newCondition, groupIndex, conditionIndex);\n this.groups[groupIndex].conditions.push(newCondition);\n this.updateValue();\n }\n onFieldChange(condition, groupIndex, conditionIndex) {\n condition.operator = this.getDefaultOperator(this.getFieldType(condition.field));\n condition.value = this.getDefaultValue(this.getFieldType(condition.field));\n // Generate and store the field config when field changes\n condition.valueFieldConfig = this.generateValueFieldConfig(condition, groupIndex, conditionIndex);\n condition.operatorsForField = this.getOperatorsForField(condition.field);\n this.updateValue();\n }\n addConditionToLastGroup() {\n const lastGroupIndex = this.groups.length - 1;\n if (lastGroupIndex >= 0) {\n this.addCondition(lastGroupIndex);\n }\n else {\n this.addGroup();\n this.addCondition(0);\n }\n }\n removeCondition(groupIndex, conditionIndex) {\n if (this.groups[groupIndex]) {\n this.groups[groupIndex].conditions.splice(conditionIndex, 1);\n // Remove empty groups\n if (this.groups[groupIndex].conditions.length === 0 && this.groups.length > 1) {\n this.removeGroup(groupIndex);\n }\n this.updateValue();\n }\n }\n // Value Management\n updateValue() {\n // Sync condition values from form model with safe access\n for (let g = 0; g < this.groups.length; g++) {\n const group = this.groups[g];\n for (let c = 0; c < group.conditions.length; c++) {\n const condition = group.conditions[c];\n const fieldKey = this.getConditionValueKey(g, c);\n const modelValue = this.model?.[fieldKey];\n if (modelValue !== undefined) {\n condition.value = modelValue;\n }\n }\n }\n const filteredGroups = [];\n for (let g = 0; g < this.groups.length; g++) {\n const group = this.groups[g];\n const validConditions = [];\n for (let c = 0; c < group.conditions.length; c++) {\n const condition = group.conditions[c];\n if (condition.field &&\n condition.operator &&\n condition.value !== undefined &&\n condition.value !== null &&\n condition.value !== '') {\n validConditions.push(condition);\n }\n }\n if (validConditions.length > 0) {\n filteredGroups.push({ ...group, conditions: validConditions });\n }\n }\n this.formControl.setValue(filteredGroups);\n this.cdr.detectChanges();\n }\n clearAll() {\n this.groups = [];\n this.addGroup();\n }\n // Helper methods\n getQueryStructure() {\n return this.groups;\n }\n loadQueryStructure(queryStructure) {\n if (queryStructure && Array.isArray(queryStructure)) {\n this.groups = queryStructure.map((group, groupIndex) => ({\n logicalOperator: group.logicalOperator || 'and',\n groupLogicalOperator: group.groupLogicalOperator || 'and',\n conditions: this.initializeConditionsWithFieldConfigs(group.conditions || [], groupIndex)\n }));\n this.updateValue();\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: QueryBuilderComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.1.8\", type: QueryBuilderComponent, isStandalone: true, selector: \"formly-query-builder\", usesInheritance: true, ngImport: i0, template: \"<div>\\r\\n\\r\\n <!-- Groups Container with Connecting Lines -->\\r\\n <div class=\\\"groups-container\\\" #groupsContainer>\\r\\n <div *ngFor=\\\"let group of groups; let groupIndex = index\\\"\\r\\n class=\\\"group-wrapper relative\\\"\\r\\n #groupElement>\\r\\n\\r\\n <!-- Vertical Connector Line from Previous Group -->\\r\\n<div *ngIf=\\\"groupIndex > 0\\\" class=\\\"vertical-connector\\\">\\r\\n <div class=\\\"vertical-line\\\"></div>\\r\\n\\r\\n <!-- Operator Button -->\\r\\n <button\\r\\n type=\\\"button\\\"\\r\\n class=\\\"group-logical-operator-box\\\"\\r\\n [class.and]=\\\"group.groupLogicalOperator === 'and'\\\"\\r\\n [class.or]=\\\"group.groupLogicalOperator === 'or'\\\"\\r\\n (click)=\\\"opPopover.toggle($event)\\\">\\r\\n <span class=\\\"operator-text\\\">\\r\\n {{ getLogicalOperatorText(group.groupLogicalOperator || 'and') }}\\r\\n </span>\\r\\n <div class=\\\"connector-arrow\\\"></div>\\r\\n </button>\\r\\n\\r\\n <!-- Popover -->\\r\\n <p-popover #opPopover appendTo=\\\"body\\\">\\r\\n <div class=\\\"w-12rem\\\">\\r\\n <p-listbox\\r\\n [options]=\\\"logicalOperators\\\"\\r\\n optionLabel=\\\"label\\\"\\r\\n optionValue=\\\"value\\\"\\r\\n [(ngModel)]=\\\"group.groupLogicalOperator\\\"\\r\\n (onChange)=\\\" opPopover.toggle($event)\\\"\\r\\n [style]=\\\"{ width: '100%' }\\\">\\r\\n </p-listbox>\\r\\n </div>\\r\\n </p-popover>\\r\\n</div>\\r\\n\\r\\n <div class=\\\"group-container mb-6 p-1 bg-white rounded-lg border-l-4 border-t-1 border-b-1 border-r-1 shadow-sm transition-all duration-300 relative\\\"\\r\\n [class.border-blue-500]=\\\"group.logicalOperator === 'and'\\\"\\r\\n [class.border-or-500]=\\\"group.logicalOperator === 'or'\\\"\\r\\n [class.pulse]=\\\"groupIndex === 0\\\">\\r\\n\\r\\n <!-- Rounded Button for \\\"\\u0631\\u0628\\u0637 \\u0627\\u0644\\u0634\\u0631\\u0648\\u0637\\\" on left border -->\\r\\n<div\\r\\n class=\\\"absolute -left-4 top-1/2 transform -translate-y-1/2 z-10 transition-all duration-300\\\"\\r\\n\\r\\n>\\r\\n\\r\\n\\r\\n\\r\\n<!-- Logical Operator Popover Button -->\\r\\n<p-button\\r\\n [severity]=\\\"group.logicalOperator === 'and' ? 'success' : 'info'\\\"\\r\\n [styleClass]=\\\"group.logicalOperator === 'and'\\r\\n ? 'p-button-icon-only p-button-rounded p-button-sm logical-and'\\r\\n : 'p-button-icon-only p-button-rounded p-button-sm logical-or'\\\"\\r\\n (click)=\\\"opPopover.toggle($event)\\\">\\r\\n {{group.logicalOperator === 'and' ? ('and' | translate) : ('or' | translate)}}\\r\\n</p-button>\\r\\n\\r\\n<!-- Popover for Operator Selection -->\\r\\n<p-popover #opPopover appendTo=\\\"body\\\">\\r\\n <div class=\\\"w-10rem\\\">\\r\\n <p-listbox\\r\\n [options]=\\\"[\\r\\n { label: 'and' | translate, value: 'and' },\\r\\n { label: 'or' | translate, value: 'or' }\\r\\n ]\\\"\\r\\n optionLabel=\\\"label\\\"\\r\\n optionValue=\\\"value\\\"\\r\\n [(ngModel)]=\\\"group.logicalOperator\\\"\\r\\n (onChange)=\\\"updateValue(); opPopover.toggle($event)\\\"\\r\\n [style]=\\\"{ width: '100%' }\\\">\\r\\n <ng-template let-item pTemplate=\\\"item\\\">\\r\\n {{ item.label }}\\r\\n </ng-template>\\r\\n </p-listbox>\\r\\n </div>\\r\\n</p-popover>\\r\\n\\r\\n</div>\\r\\n\\r\\n\\r\\n\\r\\n <!-- Group Header -->\\r\\n <div class=\\\"group-header-wrapper mb-4 pl-8\\\">\\r\\n <div class=\\\"group-header flex justify-between items-center\\\">\\r\\n\\r\\n <div class=\\\"flex gap-1\\\">\\r\\n <button\\r\\n pButton\\r\\n icon=\\\"pi pi-plus\\\"\\r\\n type=\\\"button\\\"\\r\\n class=\\\"p-button-success p-button p-button-sm !p-1.5 rounded-md transition-colors\\\"\\r\\n (click)=\\\"addCondition(groupIndex)\\\"\\r\\n pTooltip=\\\"{{ 'ADD_CONDITION' | translate }}\\\"\\r\\n tooltipPosition=\\\"top\\\">\\r\\n </button>\\r\\n <button\\r\\n *ngIf=\\\"groups.length > 1\\\"\\r\\n pButton\\r\\n icon=\\\"pi pi-times\\\"\\r\\n type=\\\"button\\\"\\r\\n class=\\\"p-button-danger p-button p-button-sm !p-1.5 rounded-md transition-colors\\\"\\r\\n (click)=\\\"removeGroup(groupIndex)\\\"\\r\\n pTooltip=\\\"{{ 'DELETE_GROUP' | translate }}\\\"\\r\\n tooltipPosition=\\\"top\\\">\\r\\n </button>\\r\\n</div>\\r\\n </div>\\r\\n </div>\\r\\n\\r\\n <!-- Conditions in this group -->\\r\\n <div *ngFor=\\\"let condition of group.conditions; let conditionIndex = index\\\"\\r\\n class=\\\"p-1 bg-gray-50 \\\">\\r\\n <div class=\\\"grid grid-cols-1 gap-1 items-center\\\">\\r\\n <!-- Field Selector -->\\r\\n <div class=\\\"md:col-span-2\\\">\\r\\n <div class=\\\"flex w-full rounded-md overflow-hidden border border-gray-300 bg-white shadow-sm\\\">\\r\\n <!-- Field Selector Button -->\\r\\n <div style=\\\"align-items: center;display: flex; min-width: 130px;max-width: 130px;\\\" class=\\\"flex-shrink-0 \\\">\\r\\n <button\\r\\n type=\\\"button\\\"\\r\\n style=\\\"height: -webkit-fill-available;\\\"\\r\\n class=\\\"flex items-center justify-between w-full px-3 py-2 text-sm bg-white hover:bg-gray-50 focus:outline-none focus:ring-2 focus:z-10\\\"\\r\\n (click)=\\\"overlay.toggle($event)\\\">\\r\\n <span style=\\\"\\r\\n display: inline-block;\\r\\n max-width: 100px;\\r\\n overflow: hidden;\\r\\n text-overflow: ellipsis;\\r\\n white-space: nowrap;\\r\\n \\\">{{ getFieldLabel(condition.field) || ('SELECT_FIELD' | translate) }}</span>\\r\\n <i class=\\\"pi pi-chevron-down mr-2 ml-2 text-xs\\\"></i>\\r\\n </button>\\r\\n\\r\\n <!-- Overlay Content -->\\r\\n <p-popover #overlay appendTo=\\\"body\\\">\\r\\n <div class=\\\"w-60\\\">\\r\\n <p-listbox\\r\\n tabindex=\\\"0\\\"\\r\\n [options]=\\\"props['fields']\\\"\\r\\n optionLabel=\\\"label\\\"\\r\\n optionValue=\\\"key\\\"\\r\\n [(ngModel)]=\\\"condition.field\\\"\\r\\n (onChange)=\\\"onFieldChange(condition, groupIndex, conditionIndex); overlay.toggle($event)\\\"\\r\\n [style]=\\\"{ width: '100%' }\\\">\\r\\n </p-listbox>\\r\\n </div>\\r\\n </p-popover>\\r\\n </div>\\r\\n <!-- Operator Button -->\\r\\n <div style=\\\"align-items: center;display: flex;\\\" class=\\\"flex-shrink-0 border-l border-r border-gray-300\\\">\\r\\n <button\\r\\n type=\\\"button\\\"\\r\\n class=\\\"flex items-center justify-center w-full px-3 py-2 text-sm bg-gray-50 hover:bg-gray-100 focus:outline-none focus:ring-2 focus:z-10\\\"\\r\\n style=\\\"height: -webkit-fill-available;\\\"\\r\\n pTooltip=\\\"{{ getOperatorLabel(condition.operator).label }}\\\"\\r\\n (click)=\\\"opPopover.toggle($event)\\\">\\r\\n <i [class]=\\\"getOperatorLabel(condition.operator).icon\\\"></i>\\r\\n </button>\\r\\n\\r\\n <p-popover #opPopover appendTo=\\\"body\\\">\\r\\n <div class=\\\"w-60\\\">\\r\\n <p-listbox\\r\\n [options]=\\\"condition.operatorsForField\\\"\\r\\n optionLabel=\\\"label\\\"\\r\\n optionValue=\\\"value\\\"\\r\\n [(ngModel)]=\\\"condition.operator\\\"\\r\\n (onChange)=\\\"opPopover.toggle($event)\\\"\\r\\n [style]=\\\"{ width: '100%' }\\\">\\r\\n </p-listbox>\\r\\n </div>\\r\\n </p-popover>\\r\\n </div>\\r\\n <!-- Form Field -->\\r\\n <div style=\\\"background: #f9fafb\\\" class=\\\"flex-grow p-1\\\">\\r\\n <formly-form\\r\\n [form]=\\\"form\\\"\\r\\n [fields]=\\\"[condition.valueFieldConfig]\\\"\\r\\n [model]=\\\"model\\\">\\r\\n </formly-form>\\r\\n </div>\\r\\n\\r\\n\\r\\n\\r\\n <!-- Delete Button -->\\r\\n <div style=\\\"align-items: center;display: flex;\\\" class=\\\"flex-shrink-0\\\">\\r\\n <button\\r\\n style=\\\"height: -webkit-fill-available;\\\"\\r\\n class=\\\"flex items-center justify-center w-full px-3 py-2 text-sm bg-red-50 text-red-600 hover:bg-red-100 focus:outline-none focus:ring-2 focus:ring-red-500 focus:z-10\\\"\\r\\n type=\\\"button\\\"\\r\\n (click)=\\\"removeCondition(groupIndex, conditionIndex)\\\"\\r\\n pTooltip=\\\"\\u062D\\u0630\\u0641 \\u0627\\u0644\\u0634\\u0631\\u0637\\\"\\r\\n tooltipPosition=\\\"top\\\">\\r\\n <i class=\\\"pi pi-times\\\"></i>\\r\\n </button>\\r\\n </div>\\r\\n</div>\\r\\n </div>\\r\\n\\r\\n\\r\\n </div>\\r\\n </div>\\r\\n\\r\\n <!-- Group Footer -->\\r\\n <div class=\\\"group-footer flex justify-between items-center mt-3 pt-3 border-t border-gray-200 \\\">\\r\\n <small class=\\\"text-gray-500\\\">\\r\\n {{ group.conditions.length }} \\u0634\\u0631\\u0637 \\u0641\\u064A \\u0647\\u0630\\u0647 \\u0627\\u0644\\u0645\\u062C\\u0645\\u0648\\u0639\\u0629\\r\\n </small>\\r\\n <small class=\\\"text-gray-500\\\">\\r\\n <span *ngIf=\\\"groupIndex > 0\\\">\\r\\n \\u0645\\u0631\\u062A\\u0628\\u0637 \\u0645\\u0639 \\u0627\\u0644\\u0633\\u0627\\u0628\\u0642\\u0629 \\u0628\\u0640 <strong [class.text-blue-600]=\\\"group.groupLogicalOperator === 'and'\\\"\\r\\n [class.text-amber-600]=\\\"group.groupLogicalOperator === 'or'\\\">\\r\\n {{ group.groupLogicalOperator === 'and' ? '\\u0648' : '\\u0623\\u0648' }}\\r\\n </strong>\\r\\n </span>\\r\\n </small>\\r\\n </div>\\r\\n </div>\\r\\n </div>\\r\\n </div>\\r\\n\\r\\n <!-- Actions -->\\r\\n<div class=\\\"flex flex-wrap gap-3 mt-6\\\">\\r\\n <button\\r\\n pButton\\r\\n type=\\\"button\\\"\\r\\n icon=\\\"pi pi-plus\\\"\\r\\n [label]=\\\"'GROUP' | translate\\\"\\r\\n class=\\\"p-button-outlined p-button-sm !bg-white !border !border-blue-500 !text-blue-600 hover:!bg-blue-50 transition-colors flex items-center gap-2\\\"\\r\\n (click)=\\\"addGroup();\\\">\\r\\n </button>\\r\\n\\r\\n <button\\r\\n pButton\\r\\n type=\\\"button\\\"\\r\\n icon=\\\"pi pi-plus\\\"\\r\\n [label]=\\\"'CONDITION' | translate\\\"\\r\\n class=\\\"p-button-outlined p-button-sm !bg-white !border !border-blue-500 !text-blue-600 hover:!bg-blue-50 transition-colors flex items-center gap-2\\\"\\r\\n (click)=\\\"addConditionToLastGroup()\\\">\\r\\n </button>\\r\\n\\r\\n <button\\r\\n *ngIf=\\\"groups.length > 0\\\"\\r\\n pButton\\r\\n type=\\\"button\\\"\\r\\n icon=\\\"pi pi-trash\\\"\\r\\n [label]=\\\"'CLEAR' | translate\\\"\\r\\n class=\\\"p-button-danger p-button-outlined p-button-sm !bg-white !border !border-red-500 !text-red-600 hover:!bg-red-50 transition-colors flex items-center gap-2\\\"\\r\\n (click)=\\\"clearAll()\\\">\\r\\n </button>\\r\\n</div>\\r\\n\\r\\n<!-- Empty State -->\\r\\n<div *ngIf=\\\"groups.length === 0\\\" class=\\\"empty-state text-center p-6 border-2 border-dashed border-gray-300 rounded-xl bg-gray-50\\\">\\r\\n <i class=\\\"pi pi-search text-4xl text-gray-400 mb-3\\\"></i>\\r\\n <p class=\\\"text-gray-500 mb-4\\\">{{ 'NO_SEARCH_CONDITIONS' | translate }}</p>\\r\\n <button\\r\\n pButton\\r\\n type=\\\"button\\\"\\r\\n icon=\\\"pi pi-plus\\\"\\r\\n [label]=\\\"'ADD_SEARCH_CONDITION' | translate\\\"\\r\\n class=\\\"p-button-outlined !px-4 !py-2\\\"\\r\\n (click)=\\\"addGroup()\\\">\\r\\n </button>\\r\\n</div>\\r\\n</div>\\r\\n\", styles: [\".vertical-connector{position:relative;display:flex;justify-content:center;margin-bottom:1rem}.vertical-line{position:absolute;top:-1rem;height:1rem;width:2px;background-color:#d1d5db}.group-logical-operator-box{position:relative;padding:.25rem .75rem;border-radius:.375rem;font-weight:500;font-size:.75rem;z-index:10;transition:all .3s ease}.group-logical-operator-box.and{background-color:#dbeafe;color:#1d4ed8;border:1px solid #93c5fd}.group-logical-operator-box.or{background-color:#fef3c7;color:#92400e;border:1px solid #fcd34d}.connector-arrow{position:absolute;top:100%;left:50%;transform:translate(-50%);width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent}.group-logical-operator-box.and .connector-arrow{border-top:6px solid #93c5fd}.group-logical-operator-box.or .connector-arrow{border-top:6px solid #fcd34d}.border-blue-500{border-color:#93c5fd}.border-or-500{border-color:#fcd34d}.border-t-1{border-top-width:1px}.border-b-1{border-bottom-width:1px}.border-r-1{border-right-width:1px}.p-popover-content{padding:5px!important}\\n\"], dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"directive\", type: i1.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i2.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i2.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"ngmodule\", type: ReactiveFormsModule }, { kind: \"ngmodule\", type: SelectModule }, { kind: \"directive\", type: i3.PrimeTemplate, selector: \"[pTemplate]\", inputs: [\"type\", \"pTemplate\"] }, { kind: \"ngmodule\", type: InputTextModule }, { kind: \"ngmodule\", type: ButtonModule }, { kind: \"directive\", type: i4.ButtonDirective, selector: \"[pButton]\", inputs: [\"iconPos\", \"loadingIcon\", \"loading\", \"severity\", \"raised\", \"rounded\", \"text\", \"outlined\", \"size\", \"plain\", \"fluid\", \"label\", \"icon\", \"buttonProps\"] }, { kind: \"component\", type: i4.Button, selector: \"p-button\", inputs: [\"type\", \"iconPos\", \"icon\", \"badge\", \"label\", \"disabled\", \"loading\", \"loadingIcon\", \"raised\", \"rounded\", \"text\", \"plain\", \"severity\", \"outlined\", \"link\", \"tabindex\", \"size\", \"variant\", \"style\", \"styleClass\", \"badgeClass\", \"badgeSeverity\", \"ariaLabel\", \"buttonProps\", \"autofocus\", \"fluid\"], outputs: [\"onClick\", \"onFocus\", \"onBlur\"] }, { kind: \"ngmodule\", type: DatePickerModule }, { kind: \"ngmodule\", type: CheckboxModule }, { kind: \"ngmodule\", type: RadioButtonModule }, { kind: \"component\", type: FormlyForm, selector: \"formly-form\", inputs: [\"form\", \"model\", \"fields\", \"options\"], outputs: [\"modelChange\"] }, { kind: \"ngmodule\", type: TooltipModule }, { kind: \"directive\", type: i5.Tooltip, selector: \"[pTooltip]\", inputs: [\"tooltipPosition\", \"tooltipEvent\", \"positionStyle\", \"tooltipStyleClass\", \"tooltipZIndex\", \"escape\", \"showDelay\", \"hideDelay\", \"life\", \"positionTop\", \"positionLeft\", \"autoHide\", \"fitContent\", \"hideOnEscape\", \"pTooltip\", \"tooltipDisabled\", \"tooltipOptions\", \"appendTo\"] }, { kind: \"ngmodule\", type: MenuModule }, { kind: \"ngmodule\", type: TranslateModule }, { kind: \"ngmodule\", type: InputGroupModule }, { kind: \"ngmodule\", type: InputGroupAddonModule }, { kind: \"ngmodule\", type: PopoverModule }, { kind: \"component\", type: i6.Popover, selector: \"p-popover\", inputs: [\"ariaLabel\", \"ariaLabelledBy\", \"dismissable\", \"style\", \"styleClass\", \"appendTo\", \"autoZIndex\", \"ariaCloseLabel\", \"baseZIndex\", \"focusOnShow\", \"showTransitionOptions\", \"hideTransitionOptions\"], outputs: [\"onShow\", \"onHide\"] }, { kind: \"ngmodule\", type: ListboxModule }, { kind: \"component\", type: i7.Listbox, selector: \"p-listbox, p-listBox, p-list-box\", inputs: [\"id\", \"searchMessage\", \"emptySelectionMessage\", \"selectionMessage\", \"autoOptionFocus\", \"ariaLabel\", \"selectOnFocus\", \"searchLocale\", \"focusOnHover\", \"filterMessage\", \"filterFields\", \"lazy\", \"virtualScroll\", \"virtualScrollItemSize\", \"virtualScrollOptions\", \"scrollHeight\", \"tabindex\", \"multiple\", \"styleClass\", \"listStyle\", \"listStyleClass\", \"readonly\", \"checkbox\", \"filter\", \"filterBy\", \"filterMatchMode\", \"filterLocale\", \"metaKeySelection\", \"dataKey\", \"showToggleAll\", \"optionLabel\", \"optionValue\", \"optionGroupChildren\", \"optionGroupLabel\", \"optionDisabled\", \"ariaFilterLabel\", \"filterPlaceHolder\", \"emptyFilterMessage\", \"emptyMessage\", \"group\", \"options\", \"filterValue\", \"selectAll\", \"striped\", \"highlightOnSelect\", \"checkmark\", \"dragdrop\", \"fluid\"], outputs: [\"onChange\", \"onClick\", \"onDblClick\", \"onFilter\", \"onFocus\", \"onBlur\", \"onSelectAllChange\", \"onLazyLoad\", \"onDrop\"] }, { kind: \"pipe\", type: i8.TranslatePipe, name: \"translate\" }] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: QueryBuilderComponent, decorators: [{\n type: Component,\n args: [{ selector: 'formly-query-builder', standalone: true, imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n SelectModule,\n InputTextModule,\n ButtonModule,\n DatePickerModule,\n CheckboxModule,\n RadioButtonModule,\n FormlyForm,\n TooltipModule,\n MenuModule,\n TranslateModule,\n InputGroupModule,\n InputGroupAddonModule,\n PopoverModule,\n ListboxModule\n ], template: \"<div>\\r\\n\\r\\n <!-- Groups Container with Connecting Lines -->\\r\\n <div class=\\\"groups-container\\\" #groupsContainer>\\r\\n <div *ngFor=\\\"let group of groups; let groupIndex = index\\\"\\r\\n class=\\\"group-wrapper relative\\\"\\r\\n #groupElement>\\r\\n\\r\\n <!-- Vertical Connector Line from Previous Group -->\\r\\n<div *ngIf=\\\"groupIndex > 0\\\" class=\\\"vertical-connector\\\">\\r\\n <div class=\\\"vertical-line\\\"></div>\\r\\n\\r\\n <!-- Operator Button -->\\r\\n <button\\r\\n type=\\\"button\\\"\\r\\n class=\\\"group-logical-operator-box\\\"\\r\\n [class.and]=\\\"group.groupLogicalOperator === 'and'\\\"\\r\\n [class.or]=\\\"group.groupLogicalOperator === 'or'\\\"\\r\\n (click)=\\\"opPopover.toggle($event)\\\">\\r\\n <span class=\\\"operator-text\\\">\\r\\n {{ getLogicalOperatorText(group.groupLogicalOperator || 'and') }}\\r\\n </span>\\r\\n <div class=\\\"connector-arrow\\\"></div>\\r\\n </button>\\r\\n\\r\\n <!-- Popover -->\\r\\n <p-popover #opPopover appendTo=\\\"body\\\">\\r\\n <div class=\\\"w-12rem\\\">\\r\\n <p-listbox\\r\\n [options]=\\\"logicalOperators\\\"\\r\\n optionLabel=\\\"label\\\"\\r\\n optionValue=\\\"value\\\"\\r\\n [(ngModel)]=\\\"group.groupLogicalOperator\\\"\\r\\n (onChange)=\\\" opPopover.toggle($event)\\\"\\r\\n [style]=\\\"{ width: '100%' }\\\">\\r\\n </p-listbox>\\r\\n </div>\\r\\n </p-popover>\\r\\n</div>\\r\\n\\r\\n <div class=\\\"group-container mb-6 p-1 bg-white rounded-lg border-l-4 border-t-1 border-b-1 border-r-1 shadow-sm transition-all duration-300 relative\\\"\\r\\n [class.border-blue-500]=\\\"group.logicalOperator === 'and'\\\"\\r\\n [class.border-or-500]=\\\"group.logicalOperator === 'or'\\\"\\r\\n [class.pulse]=\\\"groupIndex === 0\\\">\\r\\n\\r\\n <!-- Rounded Button for \\\"\\u0631\\u0628\\u0637 \\u0627\\u0644\\u0634\\u0631\\u0648\\u0637\\\" on left border -->\\r\\n<div\\r\\n class=\\\"absolute -left-4 top-1/2 transform -translate-y-1/2 z-10 transition-all duration-300\\\"\\r\\n\\r\\n>\\r\\n\\r\\n\\r\\n\\r\\n<!-- Logical Operator Popover Button -->\\r\\n<p-button\\r\\n [severity]=\\\"group.logicalOperator === 'and' ? 'success' : 'info'\\\"\\r\\n [styleClass]=\\\"group.logicalOperator === 'and'\\r\\n ? 'p-button-icon-only p-button-rounded p-button-sm logical-and'\\r\\n : 'p-button-icon-only p-button-rounded p-button-sm logical-or'\\\"\\r\\n (click)=\\\"opPopover.toggle($event)\\\">\\r\\n {{group.logicalOperator === 'and' ? ('and' | translate) : ('or' | translate)}}\\r\\n</p-button>\\r\\n\\r\\n<!-- Popover for Operator Selection -->\\r\\n<p-popover #opPopover appendTo=\\\"body\\\">\\r\\n <div class=\\\"w-10rem\\\">\\r\\n <p-listbox\\r\\n [options]=\\\"[\\r\\n { label: 'and' | translate, value: 'and' },\\r\\n { label: 'or' | translate, value: 'or' }\\r\\n ]\\\"\\r\\n optionLabel=\\\"label\\\"\\r\\n optionValue=\\\"value\\\"\\r\\n [(ngModel)]=\\\"group.logicalOperator\\\"\\r\\n (onChange)=\\\"updateValue(); opPopover.toggle($event)\\\"\\r\\n [style]=\\\"{ width: '100%' }\\\">\\r\\n <ng-template let-item pTemplate=\\\"item\\\">\\r\\n {{ item.label }}\\r\\n </ng-template>\\r\\n </p-listbox>\\r\\n </div>\\r\\n</p-popover>\\r\\n\\r\\n</div>\\r\\n\\r\\n\\r\\n\\r\\n <!-- Group Header -->\\r\\n <div class=\\\"group-header-wrapper mb-4 pl-8\\\">\\r\\n <div class=\\\"group-header flex justify-between items-center\\\">\\r\\n\\r\\n <div class=\\\"flex gap-1\\\">\\r\\n <button\\r\\n pButton\\r\\n icon=\\\"pi pi-plus\\\"\\r\\n type=\\\"button\\\"\\r\\n class=\\\"p-button-success p-button p-button-sm !p-1.5 rounded-md transition-colors\\\"\\r\\n (click)=\\\"addCondition(groupIndex)\\\"\\r\\n pTooltip=\\\"{{ 'ADD_CONDITION' | translate }}\\\"\\r\\n tooltipPosition=\\\"top\\\">\\r\\n </button>\\r\\n <button\\r\\n *ngIf=\\\"groups.length > 1\\\"\\r\\n pButton\\r\\n icon=\\\"pi pi-times\\\"\\r\\n type=\\\"button\\\"\\r\\n class=\\\"p-button-danger p-button p-button-sm !p-1.5 rounded-md transition-colors\\\"\\r\\n (click)=\\\"removeGroup(groupIndex)\\\"\\r\\n pTooltip=\\\"{{ 'DELETE_GROUP' | translate }}\\\"\\r\\n tooltipPosition=\\\"top\\\">\\r\\n </button>\\r\\n</div>\\r\\n </div>\\r\\n </div>\\r\\n\\r\\n <!-- Conditions in this group -->\\r\\n <div *ngFor=\\\"let condition of group.conditions; let conditionIndex = index\\\"\\r\\n class=\\\"p-1 bg-gray-50 \\\">\\r\\n <div class=\\\"grid grid-cols-1 gap-1 items-center\\\">\\r\\n <!-- Field Selector -->\\r\\n <div class=\\\"md:col-span-2\\\">\\r\\n <div class=\\\"flex w-full rounded-md overflow-hidden border border-gray-300 bg-white shadow-sm\\\">\\r\\n <!-- Field Selector Button -->\\r\\n <div style=\\\"align-items: center;display: flex; min-width: 130px;max-width: 130px;\\\" class=\\\"flex-shrink-0 \\\">\\r\\n <button\\r\\n type=\\\"button\\\"\\r\\n style=\\\"height: -webkit-fill-available;\\\"\\r\\n class=\\\"flex items-center justify-between w-full px-3 py-2 text-sm bg-white hover:bg-gray-50 focus:outline-none focus:ring-2 focus:z-10\\\"\\r\\n (click)=\\\"overlay.toggle($event)\\\">\\r\\n <span style=\\\"\\r\\n display: inline-block;\\r\\n max-width: 100px;\\r\\n overflow: hidden;\\r\\n text-overflow: ellipsis;\\r\\n white-space: nowrap;\\r\\n \\\">{{ getFieldLabel(condition.field) || ('SELECT_FIELD' | translate) }}</span>\\r\\n <i class=\\\"pi pi-chevron-down mr-2 ml-2 text-xs\\\"></i>\\r\\n </button>\\r\\n\\r\\n <!-- Overlay Content -->\\r\\n <p-popover #overlay appendTo=\\\"body\\\">\\r\\n <div class=\\\"w-60\\\">\\r\\n <p-listbox\\r\\n tabindex=\\\"0\\\"\\r\\n [options]=\\\"props['fields']\\\"\\r\\n optionLabel=\\\"label\\\"\\r\\n optionValue=\\\"key\\\"\\r\\n [(ngModel)]=\\\"condition.field\\\"\\r\\n (onChange)=\\\"onFieldChange(condition, groupIndex, conditionIndex); overlay.toggle($event)\\\"\\r\\n [style]=\\\"{ width: '100%' }\\\">\\r\\n </p-listbox>\\r\\n </div>\\r\\n </p-popover>\\r\\n </div>\\r\\n <!-- Operator Button -->\\r\\n <div style=\\\"align-items: center;display: flex;\\\" class=\\\"flex-shrink-0 border-l border-r border-gray-300\\\">\\r\\n <button\\r\\n type=\\\"button\\\"\\r\\n class=\\\"flex items-center justify-center w-full px-3 py-2 text-sm bg-gray-50 hover:bg-gray-100 focus:outline-none focus:ring-2 focus:z-10\\\"\\r\\n style=\\\"height: -webkit-fill-available;\\\"\\r\\n pTooltip=\\\"{{ getOperatorLabel(condition.operator).label }}\\\"\\r\\n (click)=\\\"opPopover.toggle($event)\\\">\\r\\n <i [class]=\\\"getOperatorLabel(condition.operator).icon\\\"></i>\\r\\n </button>\\r\\n\\r\\n <p-popover #opPopover appendTo=\\\"body\\\">\\r\\n <div class=\\\"w-60\\\">\\r\\n <p-listbox\\r\\n [options]=\\\"condition.operatorsForField\\\"\\r\\n optionLabel=\\\"label\\\"\\r\\n optionValue=\\\"value\\\"\\r\\n [(ngModel)]=\\\"condition.operator\\\"\\r\\n (onChange)=\\\"opPopover.toggle($event)\\\"\\r\\n [style]=\\\"{ width: '100%' }\\\">\\r\\n </p-listbox>\\r\\n </div>\\r\\n </p-popover>\\r\\n </div>\\r\\n <!-- Form Field -->\\r\\n <div style=\\\"background: #f9fafb\\\" class=\\\"flex-grow p-1\\\">\\r\\n <formly-form\\r\\n [form]=\\\"form\\\"\\r\\n [fields]=\\\"[condition.valueFieldConfig]\\\"\\r\\n [model]=\\\"model\\\">\\r\\n </formly-form>\\r\\n </div>\\r\\n\\r\\n\\r\\n\\r\\n <!-- Delete Button -->\\r\\n <div style=\\\"align-items: center;display: flex;\\\" class=\\\"flex-shrink-0\\\">\\r\\n <button\\r\\n style=\\\"height: -webkit-fill-available;\\\"\\r\\n class=\\\"flex items-center justify-center w-full px-3 py-2 text-sm bg-red-50 text-red-600 hover:bg-red-100 focus:outline-none focus:ring-2 focus:ring-red-500 focus:z-10\\\"\\r\\n type=\\\"button\\\"\\r\\n (click)=\\\"removeCondition(groupIndex, conditionIndex)\\\"\\r\\n pTooltip=\\\"\\u062D\\u0630\\u0641 \\u0627\\u0644\\u0634\\u0631\\u0637\\\"\\r\\n tooltipPosition=\\\"top\\\">\\r\\n <i class=\\\"pi pi-times\\\"></i>\\r\\n </button>\\r\\n </div>\\r\\n</div>\\r\\n </div>\\r\\n\\r\\n\\r\\n </div>\\r\\n </div>\\r\\n\\r\\n <!-- Group Footer -->\\r\\n <div class=\\\"group-footer flex justify-between items-center mt-3 pt-3 border-t border-gray-200 \\\">\\r\\n <small class=\\\"text-gray-500\\\">\\r\\n {{ group.conditions.length }} \\u0634\\u0631\\u0637 \\u0641\\u064A \\u0647\\u0630\\u0647 \\u0627\\u0644\\u0645\\u062C\\u0645\\u0648\\u0639\\u0629\\r\\n </small>\\r\\n <small class=\\\"text-gray-500\\\">\\r\\n <span *ngIf=\\\"groupIndex > 0\\\">\\r\\n \\u0645\\u0631\\u062A\\u0628\\u0637 \\u0645\\u0639 \\u0627\\u0644\\u0633\\u0627\\u0628\\u0642\\u0629 \\u0628\\u0640 <strong [class.text-blue-600]=\\\"group.groupLogicalOperator === 'and'\\\"\\r\\n [class.text-amber-600]=\\\"group.groupLogicalOperator === 'or'\\\">\\r\\n {{ group.groupLogicalOperator === 'and' ? '\\u0648' : '\\u0623\\u0648' }}\\r\\n </strong>\\r\\n </span>\\r\\n </small>\\r\\n </div>\\r\\n </div>\\r\\n </div>\\r\\n </div>\\r\\n\\r\\n <!-- Actions -->\\r\\n<div class=\\\"flex flex-wrap gap-3 mt-6\\\">\\r\\n <button\\r\\n pButton\\r\\n type=\\\"button\\\"\\r\\n icon=\\\"pi pi-plus\\\"\\r\\n [label]=\\\"'GROUP' | translate\\\"\\r\\n class=\\\"p-button-outlined p-button-sm !bg-white !border !border-blue-500 !text-blue-600 hover:!bg-blue-50 transition-colors flex items-center gap-2\\\"\\r\\n (click)=\\\"addGroup();\\\">\\r\\n </button>\\r\\n\\r\\n <button\\r\\n pButton\\r\\n type=\\\"button\\\"\\r\\n icon=\\\"pi pi-plus\\\"\\r\\n [label]=\\\"'CONDITION' | translate\\\"\\r\\n class=\\\"p-button-outlined p-button-sm !bg-white !border !border-blue-500 !text-blue-600 hover:!bg-blue-50 transition-colors flex items-center gap-2\\\"\\r\\n (click)=\\\"addConditionToLastGroup()\\\">\\r\\n </button>\\r\\n\\r\\n <button\\r\\n *ngIf=\\\"groups.length > 0\\\"\\r\\n pButton\\r\\n type=\\\"button\\\"\\r\\n icon=\\\"pi pi-trash\\\"\\r\\n [label]=\\\"'CLEAR' | translate\\\"\\r\\n class=\\\"p-button-danger p-button-outlined p-button-sm !bg-white !border !border-red-500 !text-red-600 hover:!bg-red-50 transition-colors flex items-center gap-2\\\"\\r\\n (click)=\\\"clearAll()\\\">\\r\\n </button>\\r\\n</div>\\r\\n\\r\\n<!-- Empty State -->\\r\\n<div *ngIf=\\\"groups.length === 0\\\" class=\\\"empty-state text-center p-6 border-2 border-dashed border-gray-300 rounded-xl bg-gray-50\\\">\\r\\n <i class=\\\"pi pi-search text-4xl text-gray-400 mb-3\\\"></i>\\r\\n <p class=\\\"text-gray-500 mb-4\\\">{{ 'NO_SEARCH_CONDITIONS' | translate }}</p>\\r\\n <button\\r\\n pButton\\r\\n type=\\\"button\\\"\\r\\n icon=\\\"pi pi-plus\\\"\\r\\n [label]=\\\"'ADD_SEARCH_CONDITION' | translate\\\"\\r\\n class=\\\"p-button-outlined !px-4 !py-2\\\"\\r\\n (click)=\\\"addGroup()\\\">\\r\\n </button>\\r\\n</div>\\r\\n</div>\\r\\n\", styles: [\".vertical-connector{position:relative;display:flex;justify-content:center;margin-bottom:1rem}.vertical-line{position:absolute;top:-1rem;height:1rem;width:2px;background-color:#d1d5db}.group-logical-operator-box{position:relative;padding:.25rem .75rem;border-radius:.375rem;font-weight:500;font-size:.75rem;z-index:10;transition:all .3s ease}.group-logical-operator-box.and{background-color:#dbeafe;color:#1d4ed8;border:1px solid #93c5fd}.group-logical-operator-box.or{background-color:#fef3c7;color:#92400e;border:1px solid #fcd34d}.connector-arrow{position:absolute;top:100%;left:50%;transform:translate(-50%);width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent}.group-logical-operator-box.and .connector-arrow{border-top:6px solid #93c5fd}.group-logical-operator-box.or .connector-arrow{border-top:6px solid #fcd34d}.border-blue-500{border-color:#93c5fd}.border-or-500{border-color:#fcd34d}.border-t-1{border-top-width:1px}.border-b-1{border-bottom-width:1px}.border-r-1{border-right-width:1px}.p-popover-content{padding:5px!important}\\n\"] }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktYnVpbGRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25nLnVpLmNvcmUvZ2VuZXJpYy1zZWFyY2gtYWR2YW5jZWQvc3JjL2xpYi9xdWVyeS1idWlsZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmcudWkuY29yZS9nZW5lcmljLXNlYXJjaC1hZHZhbmNlZC9zcmMvbGliL3F1ZXJ5LWJ1aWxkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsNkJBQTZCO0FBQzdCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFjLE1BQU0sRUFBbUMsTUFBTSxlQUFlLENBQUM7QUFDbEgsT0FBTyxFQUFFLFNBQVMsRUFBc0MsVUFBVSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDN0YsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFN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VTt3QkFDVixlQUFlO3dCQUNkLGdCQUFnQjt3QkFDakIscUJBQXFCO3dCQUNyQixhQUFhO3dCQUNiLGFBQWE7cUJBQ2QiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBxdWVyeS1idWlsZGVyLmNvbXBvbmVudC50c1xyXG5pbXBvcnQgeyBMaXN0Ym94TW9kdWxlIH0gZnJvbSAncHJpbWVuZy9saXN0Ym94JztcclxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgaW5qZWN0LCBPbkluaXQsIFF1ZXJ5TGlzdCwgVmlld0NoaWxkcmVuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZpZWxkVHlwZSwgRmllbGRUeXBlQ29uZmlnLCBGb3JtbHlGaWVsZENvbmZpZywgRm9ybWx5Rm9ybSB9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgSW5wdXRUZXh0TW9kdWxlIH0gZnJvbSAncHJpbWVuZy9pbnB1dHRleHQnO1xyXG5pbXBvcnQgeyBCdXR0b25Nb2R1bGUgfSBmcm9tICdwcmltZW5nL2J1dHRvbic7XHJcbmltcG9ydCB7IENoZWNrYm94TW9kdWxlIH0gZnJvbSAncHJpbWVuZy9jaGVja2JveCc7XHJcbmltcG9ydCB7IFNlbGVjdE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvc2VsZWN0JztcclxuaW1wb3J0IHsgRGF0ZVBpY2tlck1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvZGF0ZXBpY2tlcic7XHJcbmltcG9ydCB7IFJhZGlvQnV0dG9uTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9yYWRpb2J1dHRvbic7XHJcbmltcG9ydCB7IFRvb2x0aXBNb2R1bGUgfSBmcm9tICdwcmltZW5nL3Rvb2x0aXAnO1xyXG5pbXBvcnQgeyBRdWVyeUJ1aWxkZXJTZXJ2aWNlIH0gZnJvbSAnLi9xdWVyeS1idWlsZGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNZW51TW9kdWxlIH0gZnJvbSAncHJpbWVuZy9tZW51JztcclxuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlLCBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IElucHV0R3JvdXBBZGRvbk1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvaW5wdXRncm91cGFkZG9uJztcclxuaW1wb3J0IHsgSW5wdXRHcm91cE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvaW5wdXRncm91cCc7XHJcbmltcG9ydCB7IFBvcG92ZXJNb2R1bGUgfSBmcm9tICdwcmltZW5nL3BvcG92ZXInO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdmb3JtbHktcXVlcnktYnVpbGRlcicsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICBTZWxlY3RNb2R1bGUsXHJcbiAgICBJbnB1dFRleHRNb2R1bGUsXHJcbiAgICBCdXR0b25Nb2R1bGUsXHJcbiAgICBEYXRlUGlja2VyTW9kdWxlLFxyXG4gICAgQ2hlY2tib3hNb2R1bGUsXHJcbiAgICBSYWRpb0J1dHRvbk1vZHVsZSxcclxuICAgIEZvcm1seUZvcm0sXHJcbiAgICBUb29sdGlwTW9kdWxlLFxyXG4gICAgTWVudU1vZHVsZSxcclxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcclxuICAgICBJbnB1dEdyb3VwTW9kdWxlLFxyXG4gICAgSW5wdXRHcm91cEFkZG9uTW9kdWxlLFxyXG4gICAgUG9wb3Zlck1vZHVsZSxcclxuICAgIExpc3Rib3hNb2R1bGVcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9xdWVyeS1idWlsZGVyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9xdWVyeS1idWlsZGVyLmNvbXBvbmVudC5jc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUXVlcnlCdWlsZGVyQ29tcG9uZW50IGV4dGVuZHMgRmllbGRUeXBlPEZpZWxkVHlwZUNvbmZpZz4gaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIHByaXZhdGUgcXVlcnlCdWlsZGVyU2VydmljZSA9IGluamVjdChRdWVyeUJ1aWxkZXJTZXJ2aWNlKTtcclxuICBwcml2YXRlIGNkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XHJcbiAgcHJpdmF0ZSB0cmFuc2xhdGUgPSBpbmplY3QoVHJhbnNsYXRlU2VydmljZSk7XHJcblxyXG4gIGdyb3VwczogYW55W10gPSBbXTtcclxuXHJcbiAgbG9naWNhbE9wZXJhdG9ycyA9IFtcclxuICAgeyBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnYW5kJyksIHZhbHVlOiAnYW5kJyB9LFxyXG4gIHsgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ29yJyksIHZhbHVlOiAnb3InIH1cclxuICBdO1xyXG5cclxub25BbmRDbGljayhncm91cDogYW55LCBldmVudDogYW55KTogdm9pZCB7XHJcbiAgZ3JvdXAubG9naWNhbE9wZXJhdG9yID0gJ2FuZCc7XHJcbiAgdGhpcy51cGRhdGVWYWx1ZSgpO1xyXG59XHJcblxyXG5vbk9yQ2xpY2soZ3JvdXA6IGFueSwgZXZlbnQ6IGFueSk6IHZvaWQge1xyXG4gIGdyb3VwLmxvZ2ljYWxPcGVyYXRvciA9ICdvcic7XHJcbiAgdGhpcy51cGRhdGVWYWx1ZSgpO1xyXG59XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgLy8gSW5pdGlhbGl6ZSB3aXRoIGV4aXN0aW5nIHZhbHVlIG9yIGRlZmF1bHQgZ3JvdXAgd2l0aCBjb25kaXRpb25zXHJcbiAgICBpZiAodGhpcy5mb3JtQ29udHJvbC52YWx1ZSAmJiAoQXJyYXkuaXNBcnJheSh0aGlzLmZvcm1Db250cm9sLnZhbHVlKSAmJiB0aGlzLmZvcm1Db250cm9sLnZhbHVlLmxlbmd0aCA+IDApKSB7XHJcbiAgICAgIHRoaXMuZ3JvdXBzID0gdGhpcy5mb3JtQ29udHJvbC52YWx1ZS5tYXAoKGdyb3VwOiBhbnksIGdyb3VwSW5kZXg6IG51bWJlcikgPT4gKHtcclxuICAgICAgICBsb2dpY2FsT3BlcmF0b3I6IGdyb3VwLmxvZ2ljYWxPcGVyYXRvciB8fCAnYW5kJyxcclxuICAgICAgICBncm91cExvZ2ljYWxPcGVyYXRvcjogZ3JvdXAuZ3JvdXBMb2dpY2FsT3BlcmF0b3IgfHwgJ2FuZCcsXHJcbiAgICAgICAgY29uZGl0aW9uczogdGhpcy5pbml0aWFsaXplQ29uZGl0aW9uc1dpdGhGaWVsZENvbmZpZ3MoZ3JvdXAuY29uZGl0aW9ucyB8fCBbXSwgZ3JvdXBJbmRleClcclxuICAgICAgfSkpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gU3RhcnQgd2l0aCBkZWZhdWx0IGNvbmRpdGlvbnMgZm9yIGltcG9ydGFudCBmaWVsZHNcclxuICAgICAgdGhpcy5pbml0aWFsaXplRGVmYXVsdENvbmRpdGlvbnMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuXHJcbiAgZ2V0TG9naWNhbE9wZXJhdG9yVGV4dChvcGVyYXRvcjogc3RyaW5nKTogc3RyaW5nIHtcclxuICBjb25zdCBvcGVyYXRvck1hcDogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHtcclxuICAnYW5kJzogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnYW5kJyksXHJcbiAgJ29yJzogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnb3InKSxcclxuICAnbm90JzogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnbm90JylcclxufTtcclxuICAgIHJldHVybiBvcGVyYXRvck1hcFtvcGVyYXRvcl0gfHwgb3BlcmF0b3I7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGluaXRpYWxpemVEZWZhdWx0Q29uZGl0aW9ucygpOiB2b2lkIHtcclxuICAgIC8vIEdldCBkZWZhdWx0IGZpZWxkcyB1c2luZyB0aGUgc2VydmljZSBsb2dpY1xyXG4gICAgY29uc3QgZGVmYXVsdEZpZWxkcyA9IHRoaXMuZ2V0RGVmYXVsdEZpZWxkcygpO1xyXG5cclxuICAgIGNvbnN0IGRlZmF1bHRDb25kaXRpb25zID0gW107XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRlZmF1bHRGaWVsZHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgY29uc3QgZmllbGQgPSBkZWZhdWx0RmllbGRzW2ldO1xyXG4gICAgICBkZWZhdWx0Q29uZGl0aW9ucy5wdXNoKHRoaXMuY3JlYXRlRGVmYXVsdENvbmRpdGlvbihmaWVsZCwgMCwgaSkpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZ3JvdXBzID0gW3tcclxuICAgICAgbG9naWNhbE9wZXJhdG9yOiAnYW5kJyxcclxuICAgICAgZ3JvdXBMb2dpY2FsT3BlcmF0b3I6ICdhbmQnLFxyXG4gICAgICBjb25kaXRpb25zOiBkZWZhdWx0Q29uZGl0aW9uc1xyXG4gICAgfV07XHJcblxyXG4gICAgdGhpcy51cGRhdGVWYWx1ZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXREZWZhdWx0RmllbGRzKCk6IGFueVtdIHtcclxuICAgIC8vIEdldCBhbGwgZmlsdGVyYWJsZSBmaWVsZHNcclxuICAgIGNvbnN0IGZpbHRlcmFibGVGaWVsZHMgPSB0aGlzLnByb3BzWydmaWVsZHMnXS5maWx0ZXIoKGZpZWxkOiBhbnkpID0+XHJcbiAgICAgIGZpZWxkLmZpbHRlcmFibGUgIT09IGZhbHNlICYmIGZpZWxkLmtleSAmJiB0aGlzLmlzU3VwcG9ydGVkRmllbGRUeXBlKGZpZWxkLnR5cGUpXHJcbiAgICApO1xyXG5cclxuICAgIC8vIElmIG5vIGZpbHRlcmFibGUgZmllbGRzLCByZXR1cm4gZW1wdHkgYXJyYXlcclxuICAgIGlmIChmaWx0ZXJhYmxlRmllbGRzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICByZXR1cm4gW107XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgc2VsZWN0ZWRGaWVsZHMgPSBmaWx0ZXJhYmxlRmllbGRzO1xyXG4gICAgcmV0dXJuIHNlbGVjdGVkRmllbGRzO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc1N1cHBvcnRlZEZpZWxkVHlwZShmaWVsZFR5cGU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgLy8gT25seSBpbmNsdWRlIGZpZWxkIHR5cGVzIHRoYXQgbWFrZSBzZW5zZSBmb3IgZmlsdGVyaW5nXHJcbiAgICBjb25zdCBzdXBwb3J0ZWRUeXBlcyA9IFsnaW5wdXQnLCAnbnVtYmVyJywgJ2RhdGVwaWNrZXInLCAnc2VsZWN0JywgJ2NoZWNrYm94JywgJ2dlbmVyaWMtc2VsZWN0b3InLCAnc3dpdGNoJywgJ3JhZGlvJywgJ3RleHRhcmVhJ107XHJcbiAgICByZXR1cm4gc3VwcG9ydGVkVHlwZXMuaW5jbHVkZXMoZmllbGRUeXBlKTtcclxuICB9XHJcbmdldEZpZWxkTGFiZWwoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gIGNvbnN0IGYgPSB0aGlzLnByb3BzWydmaWVsZHMnXT8uZmluZCgoeDogYW55KSA9PiB4LmtleSA9PT0ga2V5KTtcclxuICByZXR1cm4gZiA/IGYubGFiZWwgOiAnJztcclxufVxyXG4gIHByaXZhdGUgY3JlYXRlRGVmYXVsdENvbmRpdGlvbihmaWVsZDogYW55LCBncm91cEluZGV4OiBudW1iZXIsIGNvbmRpdGlvbkluZGV4OiBudW1iZXIpOiBhbnkge1xyXG4gICAgY29uc3QgZGVmYXVsdENvbmRpdGlvbiA9IHtcclxuICAgICAgZmllbGQ6IGZpZWxkLmtleSxcclxuICAgICAgb3BlcmF0b3I6IHRoaXMuZ2V0RGVmYXVsdE9wZXJhdG9yKGZpZWxkLnR5cGUpLFxyXG4gICAgICB2YWx1ZTogdGhpcy5nZXREZWZhdWx0VmFsdWUoZmllbGQudHlwZSksXHJcbiAgICAgIHZhbHVlRmllbGRDb25maWc6IG51bGwsXHJcbiAgICAgIG9wZXJhdG9yc0ZvckZpZWxkIDogdGhpcy5nZXRPcGVyYXRvcnNGb3JGaWVsZChmaWVsZCksXHJcbiAgICB9O1xyXG5cclxuICAgIC8vIEdlbmVyYXRlIGZpZWxkIGNvbmZpZyBmb3IgdGhpcyBjb25kaXRpb25cclxuICAgIGRlZmF1bHRDb25kaXRpb24udmFsdWVGaWVsZENvbmZpZyA9IHRoaXMuZ2VuZXJhdGVWYWx1ZUZpZWxkQ29uZmlnKFxyXG4gICAgICBkZWZhdWx0Q29uZGl0aW9uLFxyXG4gICAgICBncm91cEluZGV4LFxyXG4gICAgICBjb25kaXRpb25JbmRleFxyXG4gICAgKSBhcyBhbnk7XHJcblxyXG4gICAgcmV0dXJuIGRlZmF1bHRDb25kaXRpb247XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGluaXRpYWxpemVDb25kaXRpb25zV2l0aEZpZWxkQ29uZmlncyhjb25kaXRpb25zOiBhbnlbXSwgZ3JvdXBJbmRleDogbnVtYmVyKTogYW55W10ge1xyXG4gICAgcmV0dXJuIGNvbmRpdGlvbnMubWFwKChjb25kaXRpb24sIGNvbmRpdGlvbkluZGV4KSA9PiAoe1xyXG4gICAgICAuLi5jb25kaXRpb24sXHJcbiAgICAgIG9wZXJhdG9yc0ZvckZpZWxkIDogdGhpcy5nZXRPcGVyYXRvcnNGb3JGaWVsZChjb25kaXRpb24uZmllbGQpLFxyXG4gICAgICB2YWx1ZUZpZWxkQ29uZmlnOiBjb25kaXRpb24uZmllbGQgP1xyXG4gICAgICAgIHRoaXMuZ2VuZXJhdGVWYWx1ZUZpZWxkQ29uZmlnKGNvbmRpdGlvbiwgZ3JvdXBJbmRleCwgY29uZGl0aW9uSW5kZXgpIDpcclxuICAgICAgICBudWxsXHJcbiAgICB9KSk7XHJcbiAgfVxyXG5cclxuICAvLyBGaWVsZCB0eXBlIGFuZCBvcGVyYXRvciBtZXRob2RzIHRoYXQgdXNlIFF1ZXJ5QnVpbGRlclNlcnZpY2UgbG9naWNcclxuICBnZXRGaWVsZFR5cGUoZmllbGRLZXk6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBmaWVsZCA9IHRoaXMucHJvcHNbJ2ZpZWxkcyddLmZpbmQoKGY6IGFueSkgPT4gZi5rZXkgPT09IGZpZWxkS2V5KTtcclxuICAgIHJldHVybiBmaWVsZD8udHlwZSB8fCAnaW5wdXQnO1xyXG4gIH1cclxuXHJcbiAgIGdldE9wZXJhdG9yc0ZvckZpZWxkKGZpZWxkS2V5OiBzdHJpbmcpOiBhbnlbXSB7XHJcbiAgICBpZiAoIWZpZWxkS2V5KSByZXR1cm4gW107XHJcblxyXG4gICAgY29uc3QgZmllbGQgPSB0aGlzLnByb3BzWydmaWVsZHMnXS5maW5kKChmOiBhbnkpID0+IGYua2V5ID09PSBmaWVsZEtleSk7XHJcbiAgICAvLyBVc2Ugb3BlcmF0b3JzIGZyb20gdGhlIGZpZWxkIGNvbmZpZ3VyYXRpb25cclxuICAgIGNvbnN0IG9wZXJhdG9ycyA9IGZpZWxkPy5vcGVyYXRvcnMgfHwgdGhpcy5xdWVyeUJ1aWxkZXJTZXJ2aWNlWydnZXRPcGVyYXRvcnNGb3JUeXBlJ10oZmllbGQ/LnR5cGUpO1xyXG5cclxuICAgIHJldHVybiBvcGVyYXRvcnMubWFwKChvcDogc3RyaW5nKSA9PiAoe1xyXG4gICAgICBsYWJlbDogdGhpcy5nZXRPcGVyYXRvckxhYmVsKG9wKS5sYWJlbCxcclxuICAgICAgaWNvbjogdGhpcy5nZXRPcGVyYXRvckxhYmVsKG9wKS5pY29uLFxyXG4gICAgICB2YWx1ZTogb3BcclxuICAgIH0pKTtcclxuICB9XHJcblxyXG5cclxuZ2V0T3BlcmF0b3JMYWJlbChvcGVyYXRvcjogc3RyaW5nKTogeyBsYWJlbDogc3RyaW5nOyBpY29uOiBzdHJpbmcgfSB7XHJcbiAgY29uc3QgbWFwOiB7IFtrZXk6IHN0cmluZ106IHsgbGFiZWw6IHN0cmluZzsgaWNvbjogc3RyaW5nIH0gfSA9IHtcclxuICAgIGVxOiB7IGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlcScpLCBpY29uOiAncGkgcGktZXF1YWxzJyB9LFxyXG4gICAgbmU6IHsgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ25lJyksIGljb246ICdwaSBwaS1oYXNodGFnJyB9LFxyXG4gICAgY29udGFpbnM6IHsgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2NvbnRhaW5zJyksIGljb246ICdwaSBwaS1zZWFyY2gnIH0sXHJcbiAgICBzdGFydHN3aXRoOiB7IGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdzdGFydHN3aXRoJyksIGljb246ICdwaSBwaS1hcnJvdy1yaWdodCcgfSxcclxuICAgIGVuZHN3aXRoOiB7IGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlbmRzd2l0aCcpLCBpY29uOiAncGkgcGktYXJyb3ctbGVmdCcgfSxcclxuICAgIGd0OiB7IGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdndCcpLCBpY29uOiAncGkgcGktY2hldnJvbi1yaWdodCcgfSxcclxuICAgIGdlOiB7IGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdnZScpLCBpY29uOiAncGkgcGktYW5nbGUtZG91YmxlLXJpZ2h0JyB9LFxyXG4gICAgbHQ6IHsgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2x0JyksIGljb246ICdwaSBwaS1jaGV2cm9uLWxlZnQnIH0sXHJcbiAgICBsZTogeyBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnbGUnKSwgaWNvbjogJ3BpIHBpLWFuZ2xlLWRvdWJsZS1sZWZ0JyB9LFxyXG4gICAgaW46IHsgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2luJyksIGljb246ICdwaSBwaS1saXN0JyB9LFxyXG4gICAgbm90aW46IHsgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ25vdGluJyksIGljb246ICdwaSBwaS1iYW4nIH0sXHJcbiAgfTtcclxuXHJcbiAgcmV0dXJuIG1hcFtvcGVyYXRvcl0gfHwgeyBsYWJlbDogb3BlcmF0b3IsIGljb246ICdwaSBwaS1xdWVzdGlvbicgfTtcclxufVxyXG5cclxuXHJcblxyXG4gICBnZXREZWZhdWx0T3BlcmF0b3IoZmllbGRUeXBlOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgLy8gVXNlIHNlcnZpY2UncyBmaWVsZCB0eXBlIGNvbmZpZ1xyXG4gICAgY29uc3QgZmllbGRDb25maWcgPSB0aGlzLnF1ZXJ5QnVpbGRlclNlcnZpY2VbJ2ZpZWxkVHlwZUNvbmZpZyddW2ZpZWxkVHlwZSBhcyBrZXlvZiB0eXBlb2YgdGhpcy5xdWVyeUJ1aWxkZXJTZXJ2aWNlWydmaWVsZFR5cGVDb25maWcnXV07XHJcbiAgICByZXR1cm4gZmllbGRDb25maWcgPyBmaWVsZENvbmZpZy5kZWZhdWx0T3BlcmF0b3IgOiAnY29udGFpbnMnO1xyXG4gIH1cclxuXHJcbiAgZ2V0RGVmYXVsdFZhbHVlKGZpZWxkVHlwZTogc3RyaW5nKTogYW55IHtcclxuICAgIC8vIFVzZSBzZXJ2aWNlJ3MgZmllbGQgdHlwZSBjb25maWdcclxuICAgIGNvbnN0IGZpZWxkQ29uZmlnID0gdGhpcy5xdWVyeUJ1aWxkZXJTZXJ2aWNlWydmaWVsZFR5cGVDb25maWcnXVtmaWVsZFR5cGUgYXMga2V5b2YgdHlwZW9mIHRoaXMucXVlcnlCdWlsZGVyU2VydmljZVsnZmllbGRUeXBlQ29uZmlnJ11dO1xyXG4gICAgcmV0dXJuIGZpZWxkQ29uZmlnID8gZmllbGRDb25maWcuZGVmYXVsdFZhbHVlIDogJyc7XHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIGdldEZpZWxkUHJvcHMoZmllbGRLZXk6IHN0cmluZyk6IGFueSB7XHJcbiAgICBjb25zdCBmaWVsZCA9IHRoaXMucHJvcHNbJ2ZpZWxkcyddLmZpbmQoKGY6IGFueSkgPT4gZi5rZXkgPT09IGZpZWxkS2V5KTtcclxuICAgIC8vIFJldHVybiBwcm9wcyB3aXRob3V0IGxhYmVsIHRvIGF2b2lkIGR1cGxpY2F0aW9uXHJcbiAgICBjb25zdCBwcm9wcyA9IHsgLi4uZmllbGQ/LnByb3BzIH07XHJcbiAgICBkZWxldGUgcHJvcHMubGFiZWw7XHJcbiAgICBkZWxldGUgcHJvcHMubG9hZERlZmF1bHQ7XHJcbiAgICByZXR1cm4gcHJvcHM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdlbmVyYXRlVmFsdWVGaWVsZENvbmZpZyhjb25kaXRpb246IGFueSwgZ3JvdXBJbmRleDogbnVtYmVyLCBjb25kaXRpb25JbmRleDogbnVtYmVyKTogRm9ybWx5RmllbGRDb25maWcge1xyXG4gICAgY29uc3QgZmllbGRUeXBlID0gdGhpcy5nZXRGaWVsZFR5cGUoY29uZGl0aW9uLmZpZWxkKTtcclxuICAgIGNvbnN0IGZpZWxkUHJvcHMgPSB0aGlzLmdldEZpZWxkUHJvcHMoY29uZGl0aW9uLmZpZWxkKTtcclxuICAgIGNvbnN0IGZpZWxkS2V5ID0gdGhpcy5nZXRDb25kaXRpb25WYWx1ZUtleShncm91cEluZGV4LCBjb25kaXRpb25JbmRleCk7XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAga2V5OiBmaWVsZEtleSxcclxuICAgICAgdHlwZTogZmllbGRUeXBlLFxyXG4gICAgICB3cmFwcGVyczpbXSxcclxuICAgICAgcHJvcHM6IHtcclxuICAgICAgICAuLi5maWVsZFByb3BzLCAvLyBJbmNsdWRlIGFsbCBvdGhlciBwcm9wcyBmcm9tIHRoZSBvcmlnaW5hbCBmaWVsZFxyXG4gICAgICAgIHBsYWNlaG9sZGVyOicnLFxyXG4gICAgICAgIGxvYWREZWZhdWx0OmZhbHNlLFxyXG4gICAgICAgIGNoYW5nZTogKGZpZWxkOiBGb3JtbHlGaWVsZENvbmZpZywgZXZlbnQ/OiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMudXBkYXRlVmFsdWUoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIGhvb2tzOiB7XHJcbiAgICAgICAgb25Jbml0OiAoZmllbGQ6IEZvcm1seUZpZWxkQ29uZmlnKSA9PiB7XHJcbiAgICAgICAgICBpZiAoZmllbGQuZm9ybUNvbnRyb2wgJiYgY29uZGl0aW9uLnZhbHVlICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgZmllbGQuZm9ybUNvbnRyb2wuc2V0VmFsdWUoY29uZGl0aW9uLnZhbHVlLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBtb2RlbE9wdGlvbnM6IHtcclxuICAgICAgICB1cGRhdGVPbjogJ2NoYW5nZSdcclxuICAgICAgfVxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIGdldENvbmRpdGlvblZhbHVlS2V5KGdyb3VwSW5kZXg6IG51bWJlciwgY29uZGl0aW9uSW5kZXg6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gYGNvbmRpdGlvbl8ke2dyb3VwSW5kZXh9XyR7Y29uZGl0aW9uSW5kZXh9X3ZhbHVlYDtcclxuICB9XHJcblxyXG4gIC8vIEdyb3VwIE1hbmFnZW1lbnRcclxuICBhZGRHcm91cCgpIHtcclxuICAgIHRoaXMuZ3JvdXBzLnB1c2goe1xyXG4gICAgICBsb2dpY2FsT3BlcmF0b3I6ICdhbmQnLFxyXG4gICAgICBncm91cExvZ2ljYWxPcGVyYXRvcjogJ2FuZCcsXHJcbiAgICAgIGNvbmRpdGlvbnM6IFtdXHJcbiAgICB9KTtcclxuICAgIHRoaXMudXBkYXRlVmFsdWUoKTtcclxuICB9XHJcblxyXG4gIHJlbW92ZUdyb3VwKGdyb3VwSW5kZXg6IG51bWJlcikge1xyXG4gICAgdGhpcy5ncm91cHMuc3BsaWNlKGdyb3VwSW5kZXgsIDEpO1xyXG4gICAgdGhpcy51cGRhdGVWYWx1ZSgpO1xyXG4gIH1cclxuXHJcbiAgLy8gQ29uZGl0aW9uIE1hbmFnZW1lbnRcclxuICBhZGRDb25kaXRpb24oZ3JvdXBJbmRleDogbnVtYmVyID0gMCkge1xyXG4gICAgaWYgKCF0aGlzLmdyb3Vwc1tncm91cEluZGV4XSkge1xyXG4gICAgICB0aGlzLmFkZEdyb3VwKCk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgbmV3Q29uZGl0aW9uID0ge1xyXG4gICAgICBmaWVsZDogJycsXHJcbiAgICAgIG9wZXJhdG9yOiAnZXEnLFxyXG4gICAgICB2YWx1ZTogJycsXHJcbiAgICAgIHZhbHVlRmllbGRDb25maWc6IHt9XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IGNvbmRpdGlvbkluZGV4ID0gdGhpcy5ncm91cHNbZ3JvdXBJbmRleF0uY29uZGl0aW9ucy5sZW5ndGg7XHJcbiAgICBuZXdDb25kaXRpb24udmFsdWVGaWVsZENvbmZpZyA9IHRoaXMuZ2VuZXJhdGVWYWx1ZUZpZWxkQ29uZmlnKG5ld0NvbmRpdGlvbiwgZ3JvdXBJbmRleCwgY29uZGl0aW9uSW5kZXgpO1xyXG5cclxuICAgIHRoaXMuZ3JvdXBzW2dyb3VwSW5kZXhdLmNvbmRpdGlvbnMucHVzaChuZXdDb25kaXRpb24pO1xyXG4gICAgdGhpcy51cGRhdGVWYWx1ZSgpO1xyXG4gIH1cclxuXHJcbiAgb25GaWVsZENoYW5nZShjb25kaXRpb246IGFueSwgZ3JvdXBJbmRleDogbnVtYmVyLCBjb25kaXRpb25JbmRleDogbnVtYmVyKSB7XHJcbiAgICBjb25kaXRpb24ub3BlcmF0b3IgPSB0aGlzLmdldERlZmF1bHRPcGVyYXRvcih0aGlzLmdldEZpZWxkVHlwZShjb25kaXRpb24uZmllbGQpKTtcclxuICAgIGNvbmRpdGlvbi52YWx1ZSA9IHRoaXMuZ2V0RGVmYXVsdFZhbHVlKHRoaXMuZ2V0RmllbGRUeXBlKGNvbmRpdGlvbi5maWVsZCkpO1xyXG5cclxuICAgIC8vIEdlbmVyYXRlIGFuZCBzdG9yZSB0aGUgZmllbGQgY29uZmlnIHdoZW4gZmllbGQgY2hhbmdlc1xyXG4gICAgY29uZGl0aW9uLnZhbHVlRmllbGRDb25maWcgPSB0aGlzLmdlbmVyYXRlVmFsdWVGaWVsZENvbmZpZyhjb25kaXRpb24sIGdyb3VwSW5kZXgsIGNvbmRpdGlvbkluZGV4KTtcclxuICAgIGNvbmRpdGlvbi5vcGVyYXRvcnNGb3JGaWVsZCA9IHRoaXMuZ2V0T3BlcmF0b3JzRm9yRmllbGQoY29uZGl0aW9uLmZpZWxkKTtcclxuXHJcbiAgICB0aGlzLnVwZGF0ZVZhbHVlKCk7XHJcbiAgfVxyXG5cclxuICBhZGRDb25kaXRpb25Ub0xhc3RHcm91cCgpIHtcclxuICAgIGNvbnN0IGxhc3RHcm91cEluZGV4ID0gdGhpcy5ncm91cHMubGVuZ3RoIC0gMTtcclxuICAgIGlmIChsYXN0R3JvdXBJbmRleCA+PSAwKSB7XHJcbiAgICAgIHRoaXMuYWRkQ29uZGl0aW9uKGxhc3RHcm91cEluZGV4KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuYWRkR3JvdXAoKTtcclxuICAgICAgdGhpcy5hZGRDb25kaXRpb24oMCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZW1vdmVDb25kaXRpb24oZ3JvdXBJbmRleDogbnVtYmVyLCBjb25kaXRpb25JbmRleDogbnVtYmVyKSB7XHJcbiAgICBpZiAodGhpcy5ncm91cHNbZ3JvdXBJbmRleF0pIHtcclxuICAgICAgdGhpcy5ncm91cHNbZ3JvdXBJbmRleF0uY29uZGl0aW9ucy5zcGxpY2UoY29uZGl0aW9uSW5kZXgsIDEpO1xyXG5cclxuICAgICAgLy8gUmVtb3ZlIGVtcHR5IGdyb3Vwc1xyXG4gICAgICBpZiAodGhpcy5ncm91cHNbZ3JvdXBJbmRleF0uY29uZGl0aW9ucy5sZW5ndGggPT09IDAgJiYgdGhpcy5ncm91cHMubGVuZ3RoID4gMSkge1xyXG4gICAgICAgIHRoaXMucmVtb3ZlR3JvdXAoZ3JvdXBJbmRleCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMudXBkYXRlVmFsdWUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIFZhbHVlIE1hbmFnZW1lbnRcclxuICB1cGRhdGVWYWx1ZSgpIHtcclxuICAgIC8vIFN5bmMgY29uZGl0aW9uIHZhbHVlcyBmcm9tIGZvcm0gbW9kZWwgd2l0aCBzYWZlIGFjY2Vzc1xyXG4gICAgZm9yIChsZXQgZyA9IDA7IGcgPCB0aGlzLmdyb3Vwcy5sZW5ndGg7IGcrKykge1xyXG4gICAgICBjb25zdCBncm91cCA9IHRoaXMuZ3JvdXBzW2ddO1xyXG4gICAgICBmb3IgKGxldCBjID0gMDsgYyA8IGdyb3VwLmNvbmRpdGlvbnMubGVuZ3RoOyBjKyspIHtcclxuICAgICAgICBjb25zdCBjb25kaXRpb24gPSBncm91cC5jb25kaXRpb25zW2NdO1xyXG4gICAgICAgIGNvbnN0IGZpZWxkS2V5ID0gdGhpcy5nZXRDb25kaXRpb25WYWx1ZUtleShnLCBjKTtcclxuXHJcbiAgICAgICAgY29uc3QgbW9kZWxWYWx1ZSA9IHRoaXMubW9kZWw/LltmaWVsZEtleV07XHJcbiAgICAgICAgaWYgKG1vZGVsVmFsdWUgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgY29uZGl0aW9uLnZhbHVlID0gbW9kZWxWYWx1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBmaWx0ZXJlZEdyb3VwcyA9IFtdO1xyXG4gICAgZm9yIChsZXQgZyA9IDA7IGcgPCB0aGlzLmdyb3Vwcy5sZW5ndGg7IGcrKykge1xyXG4gICAgICBjb25zdCBncm91cCA9IHRoaXMuZ3JvdXBzW2ddO1xyXG4gICAgICBjb25zdCB2YWxpZENvbmRpdGlvbnMgPSBbXTtcclxuXHJcbiAgICAgIGZvciAobGV0IGMgPSAwOyBjIDwgZ3JvdXAuY29uZGl0aW9ucy5sZW5ndGg7IGMrKykge1xyXG4gICAgICAgIGNvbnN0IGNvbmRpdGlvbiA9IGdyb3VwLmNvbmRpdGlvbnNbY107XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgY29uZGl0aW9uLmZpZWxkICYmXHJcbiAgICAgICAgICBjb25kaXRpb24ub3BlcmF0b3IgJiZcclxuICAgICAgICAgIGNvbmRpdGlvbi52YWx1ZSAhPT0gdW5kZWZpbmVkICYmXHJcbiAgICAgICAgICBjb25kaXRpb24udmFsdWUgIT09IG51bGwgJiZcclxuICAgICAgICAgIGNvbmRpdGlvbi52YWx1ZSAhPT0gJydcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHZhbGlkQ29uZGl0aW9ucy5wdXNoKGNvbmRpdGlvbik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodmFsaWRDb25kaXRpb25zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBmaWx0ZXJlZEdyb3Vwcy5wdXNoKHsgLi4uZ3JvdXAsIGNvbmRpdGlvbnM6IHZhbGlkQ29uZGl0aW9ucyB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsdWUoZmlsdGVyZWRHcm91cHMpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgY2xlYXJBbGwoKSB7XHJcbiAgICB0aGlzLmdyb3VwcyA9IFtdO1xyXG4gICAgdGhpcy5hZGRHcm91cCgpO1xyXG4gIH1cclxuXHJcbiAgLy8gSGVscGVyIG1ldGhvZHNcclxuICBnZXRRdWVyeVN0cnVjdHVyZSgpOiBhbnkge1xyXG4gICAgcmV0dXJuIHRoaXMuZ3JvdXBzO1xyXG4gIH1cclxuXHJcbiAgbG9hZFF1ZXJ5U3RydWN0dXJlKHF1ZXJ5U3RydWN0dXJlOiBhbnlbXSkge1xyXG4gICAgaWYgKHF1ZXJ5U3RydWN0dXJlICYmIEFycmF5LmlzQXJyYXkocXVlcnlTdHJ1Y3R1cmUpKSB7XHJcbiAgICAgIHRoaXMuZ3JvdXBzID0gcXVlcnlTdHJ1Y3R1cmUubWFwKChncm91cCwgZ3JvdXBJbmRleCkgPT4gKHtcclxuICAgICAgICBsb2dpY2FsT3BlcmF0b3I6IGdyb3VwLmxvZ2ljYWxPcGVyYXRvciB8fCAnYW5kJyxcclxuICAgICAgICBncm91cExvZ2ljYWxPcGVyYXRvcjogZ3JvdXAuZ3JvdXBMb2dpY2FsT3BlcmF0b3IgfHwgJ2FuZCcsXHJcbiAgICAgICAgY29uZGl0aW9uczogdGhpcy5pbml0aWFsaXplQ29uZGl0aW9uc1dpdGhGaWVsZENvbmZpZ3MoZ3JvdXAuY29uZGl0aW9ucyB8fCBbXSwgZ3JvdXBJbmRleClcclxuICAgICAgfSkpO1xyXG4gICAgICB0aGlzLnVwZGF0ZVZhbHVlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxkaXY+XHJcblxyXG4gIDwhLS0gR3JvdXBzIENvbnRhaW5lciB3aXRoIENvbm5lY3RpbmcgTGluZXMgLS0+XHJcbiAgPGRpdiBjbGFzcz1cImdyb3Vwcy1jb250YWluZXJcIiAjZ3JvdXBzQ29udGFpbmVyPlxyXG4gICAgPGRpdiAqbmdGb3I9XCJsZXQgZ3JvdXAgb2YgZ3JvdXBzOyBsZXQgZ3JvdXBJbmRleCA9IGluZGV4XCJcclxuICAgICAgICAgY2xhc3M9XCJncm91cC13cmFwcGVyIHJlbGF0aXZlXCJcclxuICAgICAgICAgI2dyb3VwRWxlbWVudD5cclxuXHJcbiAgICAgPCEtLSBWZXJ0aWNhbCBDb25uZWN0b3IgTGluZSBmcm9tIFByZXZpb3VzIEdyb3VwIC0tPlxyXG48ZGl2ICpuZ0lmPVwiZ3JvdXBJbmRleCA+IDBcIiBjbGFzcz1cInZlcnRpY2FsLWNvbm5lY3RvclwiPlxyXG4gIDxkaXYgY2xhc3M9XCJ2ZXJ0aWNhbC1saW5lXCI+PC9kaXY+XHJcblxyXG4gIDwhLS0gT3BlcmF0b3IgQnV0dG9uIC0tPlxyXG4gIDxidXR0b25cclxuICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgY2xhc3M9XCJncm91cC1sb2dpY2FsLW9wZXJhdG9yLWJveFwiXHJcbiAgICBbY2xhc3MuYW5kXT1cImdyb3VwLmdyb3VwTG9naWNhbE9wZXJhdG9yID09PSAnYW5kJ1wiXHJcbiAgICBbY2xhc3Mub3JdPVwiZ3JvdXAuZ3JvdXBMb2dpY2FsT3BlcmF0b3IgPT09ICdvcidcIlxyXG4gICAgKGNsaWNrKT1cIm9wUG9wb3Zlci50b2dnbGUoJGV2ZW50KVwiPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJvcGVyYXRvci10ZXh0XCI+XHJcbiAgICAgIHt7IGdldExvZ2ljYWxPcGVyYXRvclRleHQoZ3JvdXAuZ3JvdXBMb2dpY2FsT3BlcmF0b3IgfHwgJ2FuZCcpIH19XHJcbiAgICA8L3NwYW4+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29ubmVjdG9yLWFycm93XCI+PC9kaXY+XHJcbiAgPC9idXR0b24+XHJcblxyXG4gIDwhLS0gUG9wb3ZlciAtLT5cclxuICA8cC1wb3BvdmVyICNvcFBvcG92ZXIgYXBwZW5kVG89XCJib2R5XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwidy0xMnJlbVwiPlxyXG4gICAgICA8cC1saXN0Ym94XHJcbiAgICAgICAgW29wdGlvbnNdPVwibG9naWNhbE9wZXJhdG9yc1wiXHJcbiAgICAgICAgb3B0aW9uTGFiZWw9XCJsYWJlbFwiXHJcbiAgICAgICAgb3B0aW9uVmFsdWU9XCJ2YWx1ZVwiXHJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJncm91cC5ncm91cExvZ2ljYWxPcGVyYXRvclwiXHJcbiAgICAgICAgKG9uQ2hhbmdlKT1cIiBvcFBvcG92ZXIudG9nZ2xlKCRldmVudClcIlxyXG4gICAgICAgIFtzdHlsZV09XCJ7IHdpZHRoOiAnMTAwJScgfVwiPlxyXG4gICAgICA8L3AtbGlzdGJveD5cclxuICAgIDwvZGl2PlxyXG4gIDwvcC1wb3BvdmVyPlxyXG48L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJncm91cC1jb250YWluZXIgbWItNiBwLTEgYmctd2hpdGUgcm91bmRlZC1sZyBib3JkZXItbC00IGJvcmRlci10LTEgYm9yZGVyLWItMSBib3JkZXItci0xICBzaGFkb3ctc20gdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tMzAwIHJlbGF0aXZlXCJcclxuICAgICAgICAgICBbY2xhc3MuYm9yZGVyLWJsdWUtNTAwXT1cImdyb3VwLmxvZ2ljYWxPcGVyYXRvciA9PT0gJ2FuZCdcIlxyXG4gICAgICAgICAgIFtjbGFzcy5ib3JkZXItb3ItNTAwXT1cImdyb3VwLmxvZ2ljYWxPcGVyYXRvciA9PT0gJ29yJ1wiXHJcbiAgICAgICAgICAgW2NsYXNzLnB1bHNlXT1cImdyb3VwSW5kZXggPT09IDBcIj5cclxuXHJcbiAgICAgICAgPCEtLSBSb3VuZGVkIEJ1dHRvbiBmb3IgXCLYsdio2Lcg2KfZhNi02LHZiNi3XCIgb24gbGVmdCBib3JkZXIgLS0+XHJcbjxkaXZcclxuICBjbGFzcz1cImFic29sdXRlIC1sZWZ0LTQgdG9wLTEvMiB0cmFuc2Zvcm0gLXRyYW5zbGF0ZS15LTEvMiB6LTEwIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTMwMFwiXHJcblxyXG4+XHJcblxyXG5cclxuXHJcbjwhLS0gTG9naWNhbCBPcGVyYXRvciBQb3BvdmVyIEJ1dHRvbiAtLT5cclxuPHAtYnV0dG9uXHJcbiAgW3NldmVyaXR5XT1cImdyb3VwLmxvZ2ljYWxPcGVyYXRvciA9PT0gJ2FuZCcgPyAnc3VjY2VzcycgOiAnaW5mbydcIlxyXG4gIFtzdHlsZUNsYXNzXT1cImdyb3VwLmxvZ2ljYWxPcGVyYXRvciA9PT0gJ2FuZCdcclxuICAgID8gJ3AtYnV0dG9uLWljb24tb25seSBwLWJ1dHRvbi1yb3VuZGVkIHAtYnV0dG9uLXNtIGxvZ2ljYWwtYW5kJ1xyXG4gICAgOiAncC1idXR0b24taWNvbi1vbmx5IHAtYnV0dG9uLXJvdW5kZWQgcC1idXR0b24tc20gbG9naWNhbC1vcidcIlxyXG4gIChjbGljayk9XCJvcFBvcG92ZXIudG9nZ2xlKCRldmVudClcIj5cclxuICB7e2dyb3VwLmxvZ2ljYWxPcGVyYXRvciA9PT0gJ2FuZCcgPyAoJ2FuZCcgfCB0cmFuc2xhdGUpIDogKCdvcicgfCB0cmFuc2xhdGUpfX1cclxuPC9wLWJ1dHRvbj5cclxuXHJcbjwhLS0gUG9wb3ZlciBmb3IgT3BlcmF0b3IgU2VsZWN0aW9uIC0tPlxyXG48cC1wb3BvdmVyICNvcFBvcG92ZXIgYXBwZW5kVG89XCJib2R5XCI+XHJcbiAgPGRpdiBjbGFzcz1cInctMTByZW1cIj5cclxuICAgIDxwLWxpc3Rib3hcclxuICAgICAgW29wdGlvbnNdPVwiW1xyXG4gICAgICAgIHsgbGFiZWw6ICdhbmQnIHwgdHJhbnNsYXRlLCB2YWx1ZTogJ2FuZCcgfSxcclxuICAgICAgICB7IGxhYmVsOiAnb3InIHwgdHJhbnNsYXRlLCB2YWx1ZTogJ29yJyB9XHJcbiAgICAgIF1cIlxyXG4gICAgICBvcHRpb25MYWJlbD1cImxhYmVsXCJcclxuICAgICAgb3B0aW9uVmFsdWU9XCJ2YWx1ZVwiXHJcbiAgICAgIFsobmdNb2RlbCldPVwiZ3JvdXAubG9naWNhbE9wZXJhdG9yXCJcclxuICAgICAgKG9uQ2hhbmdlKT1cInVwZGF0ZVZhbHVlKCk7IG9wUG9wb3Zlci50b2dnbGUoJGV2ZW50KVwiXHJcbiAgICAgIFtzdHlsZV09XCJ7IHdpZHRoOiAnMTAwJScgfVwiPlxyXG4gICAgICA8bmctdGVtcGxhdGUgbGV0LWl0ZW0gcFRlbXBsYXRlPVwiaXRlbVwiPlxyXG4gICAgICAgIHt7IGl0ZW0ubGFiZWwgfX1cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvcC1saXN0Ym94PlxyXG4gIDwvZGl2PlxyXG48L3AtcG9wb3Zlcj5cclxuXHJcbjwvZGl2PlxyXG5cclxuXHJcblxyXG4gICAgICAgIDwhLS0gR3JvdXAgSGVhZGVyIC0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJncm91cC1oZWFkZXItd3JhcHBlciBtYi00IHBsLThcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJncm91cC1oZWFkZXIgZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyXCI+XHJcblxyXG4gICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGdhcC0xXCI+XHJcbiAgPGJ1dHRvblxyXG4gICAgcEJ1dHRvblxyXG4gICAgaWNvbj1cInBpIHBpLXBsdXNcIlxyXG4gICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICBjbGFzcz1cInAtYnV0dG9uLXN1Y2Nlc3MgcC1idXR0b24gcC1idXR0b24tc20gIXAtMS41IHJvdW5kZWQtbWQgdHJhbnNpdGlvbi1jb2xvcnNcIlxyXG4gICAgKGNsaWNrKT1cImFkZENvbmRpdGlvbihncm91cEluZGV4KVwiXHJcbiAgICBwVG9vbHRpcD1cInt7ICdBRERfQ09ORElUSU9OJyB8IHRyYW5zbGF0ZSB9fVwiXHJcbiAgICB0b29sdGlwUG9zaXRpb249XCJ0b3BcIj5cclxuICA8L2J1dHRvbj5cclxuICA8YnV0dG9uXHJcbiAgICAqbmdJZj1cImdyb3Vwcy5sZW5ndGggPiAxXCJcclxuICAgIHBCdXR0b25cclxuICAgIGljb249XCJwaSBwaS10aW1lc1wiXHJcbiAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgIGNsYXNzPVwicC1idXR0b24tZGFuZ2VyIHAtYnV0dG9uIHAtYnV0dG9uLXNtICFwLTEuNSByb3VuZGVkLW1kIHRyYW5zaXRpb24tY29sb3JzXCJcclxuICAgIChjbGljayk9XCJyZW1vdmVHcm91cChncm91cEluZGV4KVwiXHJcbiAgICBwVG9vbHRpcD1cInt7ICdERUxFVEVfR1JPVVAnIHwgdHJhbnNsYXRlIH19XCJcclxuICAgIHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiPlxyXG4gIDwvYnV0dG9uPlxyXG48L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8IS0tIENvbmRpdGlvbnMgaW4gdGhpcyBncm91cCAtLT5cclxuICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBjb25kaXRpb24gb2YgZ3JvdXAuY29uZGl0aW9uczsgbGV0IGNvbmRpdGlvbkluZGV4ID0gaW5kZXhcIlxyXG4gICAgICAgICAgICAgY2xhc3M9XCJwLTEgYmctZ3JheS01MCAgXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZCBncmlkLWNvbHMtMSAgZ2FwLTEgaXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgIDwhLS0gRmllbGQgU2VsZWN0b3IgLS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZDpjb2wtc3Bhbi0yXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IHctZnVsbCByb3VuZGVkLW1kIG92ZXJmbG93LWhpZGRlbiBib3JkZXIgYm9yZGVyLWdyYXktMzAwIGJnLXdoaXRlIHNoYWRvdy1zbVwiPlxyXG4gIDwhLS0gRmllbGQgU2VsZWN0b3IgQnV0dG9uIC0tPlxyXG4gIDxkaXYgc3R5bGU9XCJhbGlnbi1pdGVtczogY2VudGVyO2Rpc3BsYXk6IGZsZXg7ICAgIG1pbi13aWR0aDogMTMwcHg7bWF4LXdpZHRoOiAxMzBweDtcIiBjbGFzcz1cImZsZXgtc2hyaW5rLTAgXCI+XHJcbiAgICA8YnV0dG9uXHJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICBzdHlsZT1cImhlaWdodDogLXdlYmtpdC1maWxsLWF2YWlsYWJsZTtcIlxyXG4gICAgICBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiB3LWZ1bGwgcHgtMyBweS0yIHRleHQtc20gYmctd2hpdGUgaG92ZXI6YmctZ3JheS01MCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0yICBmb2N1czp6LTEwXCJcclxuICAgICAgKGNsaWNrKT1cIm92ZXJsYXkudG9nZ2xlKCRldmVudClcIj5cclxuICAgICAgPHNwYW4gIHN0eWxlPVwiXHJcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICBtYXgtd2lkdGg6IDEwMHB4O1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xyXG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcclxuICBcIj57eyBnZXRGaWVsZExhYmVsKGNvbmRpdGlvbi5maWVsZCkgfHwgKCdTRUxFQ1RfRklFTEQnIHwgdHJhbnNsYXRlKSB9fTwvc3Bhbj5cclxuICAgICAgPGkgY2xhc3M9XCJwaSBwaS1jaGV2cm9uLWRvd24gbXItMiBtbC0yIHRleHQteHNcIj48L2k+XHJcbiAgICA8L2J1dHRvbj5cclxuXHJcbiAgICA8IS0tIE92ZXJsYXkgQ29udGVudCAtLT5cclxuICAgIDxwLXBvcG92ZXIgI292ZXJsYXkgYXBwZW5kVG89XCJib2R5XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ3LTYwXCI+XHJcbiAgICAgICAgPHAtbGlzdGJveFxyXG4gICAgICAgIHRhYmluZGV4PVwiMFwiXHJcbiAgICAgICAgICBbb3B0aW9uc109XCJwcm9wc1snZmllbGRzJ11cIlxyXG4gICAgICAgICAgb3B0aW9uTGFiZWw9XCJsYWJlbFwiXHJcbiAgICAgICAgICBvcHRpb25WYWx1ZT1cImtleVwiXHJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbmRpdGlvbi5maWVsZFwiXHJcbiAgICAgICAgICAob25DaGFuZ2UpPVwib25GaWVsZENoYW5nZShjb25kaXRpb24sIGdyb3VwSW5kZXgsIGNvbmRpdGlvbkluZGV4KTsgb3ZlcmxheS50b2dnbGUoJGV2ZW50KVwiXHJcbiAgICAgICAgICBbc3R5bGVdPVwieyB3aWR0aDogJzEwMCUnIH1cIj5cclxuICAgICAgICA8L3AtbGlzdGJveD5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L3AtcG9wb3Zlcj5cclxuICA8L2Rpdj5cclxuIDwhLS0gT3BlcmF0b3IgQnV0dG9uIC0tPlxyXG4gIDxkaXYgc3R5bGU9XCJhbGlnbi1pdGVtczogY2VudGVyO2Rpc3BsYXk6IGZsZXg7XCIgIGNsYXNzPVwiZmxleC1zaHJpbmstMCBib3JkZXItbCBib3JkZXItciBib3JkZXItZ3JheS0zMDBcIj5cclxuICAgIDxidXR0b25cclxuICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHctZnVsbCBweC0zIHB5LTIgdGV4dC1zbSBiZy1ncmF5LTUwIGhvdmVyOmJnLWdyYXktMTAwIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTIgIGZvY3VzOnotMTBcIlxyXG4gICAgICBzdHlsZT1cImhlaWdodDogLXdlYmtpdC1maWxsLWF2YWlsYWJsZTtcIlxyXG4gICAgICBwVG9vbHRpcD1cInt7IGdldE9wZXJhdG9yTGFiZWwoY29uZGl0aW9uLm9wZXJhdG9yKS5sYWJlbCB9fVwiXHJcbiAgICAgIChjbGljayk9XCJvcFBvcG92ZXIudG9nZ2xlKCRldmVudClcIj5cclxuICAgICAgPGkgW2NsYXNzXT1cImdldE9wZXJhdG9yTGFiZWwoY29uZGl0aW9uLm9wZXJhdG9yKS5pY29uXCI+PC9pPlxyXG4gICAgPC9idXR0b24+XHJcblxyXG4gICAgPHAtcG9wb3ZlciAjb3BQb3BvdmVyIGFwcGVuZFRvPVwiYm9keVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidy02MFwiPlxyXG4gICAgICAgIDxwLWxpc3Rib3hcclxuICAgICAgICAgIFtvcHRpb25zXT1cImNvbmRpdGlvbi5vcGVyYXRvcnNGb3JGaWVsZFwiXHJcbiAgICAgICAgICBvcHRpb25MYWJlbD1cImxhYmVsXCJcclxuICAgICAgICAgIG9wdGlvblZhbHVlPVwidmFsdWVcIlxyXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJjb25kaXRpb24ub3BlcmF0b3JcIlxyXG4gICAgICAgICAgKG9uQ2hhbmdlKT1cIm9wUG9wb3Zlci50b2dnbGUoJGV2ZW50KVwiXHJcbiAgICAgICAgICBbc3R5bGVdPVwieyB3aWR0aDogJzEwMCUnIH1cIj5cclxuICAgICAgICA8L3AtbGlzdGJveD5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L3AtcG9wb3Zlcj5cclxuICA8L2Rpdj5cclxuICA8IS0tIEZvcm0gRmllbGQgLS0+XHJcbiAgPGRpdiBzdHlsZT1cImJhY2tncm91bmQ6ICNmOWZhZmJcIiBjbGFzcz1cImZsZXgtZ3JvdyBwLTFcIj5cclxuICAgIDxmb3JtbHktZm9ybVxyXG4gICAgICBbZm9ybV09XCJmb3JtXCJcclxuICAgICAgW2ZpZWxkc109XCJbY29uZGl0aW9uLnZhbHVlRmllbGRDb25maWddXCJcclxuICAgICAgW21vZGVsXT1cIm1vZGVsXCI+XHJcbiAgICA8L2Zvcm1seS1mb3JtPlxyXG4gIDwvZGl2PlxyXG5cclxuXHJcblxyXG4gIDwhLS0gRGVsZXRlIEJ1dHRvbiAtLT5cclxuICA8ZGl2IHN0eWxlPVwiYWxpZ24taXRlbXM6IGNlbnRlcjtkaXNwbGF5OiBmbGV4O1wiIGNsYXNzPVwiZmxleC1zaHJpbmstMFwiPlxyXG4gICAgPGJ1dHRvblxyXG4gICAgc3R5bGU9XCJoZWlnaHQ6IC13ZWJraXQtZmlsbC1hdmFpbGFibGU7XCJcclxuICAgICAgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB3LWZ1bGwgcHgtMyBweS0yIHRleHQtc20gYmctcmVkLTUwIHRleHQtcmVkLTYwMCBob3ZlcjpiZy1yZWQtMTAwIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTIgZm9jdXM6cmluZy1yZWQtNTAwIGZvY3VzOnotMTBcIlxyXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgKGNsaWNrKT1cInJlbW92ZUNvbmRpdGlvbihncm91cEluZGV4LCBjb25kaXRpb25JbmRleClcIlxyXG4gICAgICBwVG9vbHRpcD1cItit2LDZgSDYp9mE2LTYsdi3XCJcclxuICAgICAgdG9vbHRpcFBvc2l0aW9uPVwidG9wXCI+XHJcbiAgICAgIDxpIGNsYXNzPVwicGkgcGktdGltZXNcIj48L2k+XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPCEtLSBHcm91cCBGb290ZXIgLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImdyb3VwLWZvb3RlciBmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXIgbXQtMyBwdC0zIGJvcmRlci10IGJvcmRlci1ncmF5LTIwMCBcIj5cclxuICAgICAgICAgIDxzbWFsbCBjbGFzcz1cInRleHQtZ3JheS01MDBcIj5cclxuICAgICAgICAgICAge3sgZ3JvdXAuY29uZGl0aW9ucy5sZW5ndGggfX0g2LTYsdi3INmB2Yog2YfYsNmHINin2YTZhdis2YXZiNi52KlcclxuICAgICAgICAgIDwvc21hbGw+XHJcbiAgICAgICAgICA8c21hbGwgY2xhc3M9XCJ0ZXh0LWdyYXktNTAwXCI+XHJcbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZ3JvdXBJbmRleCA+IDBcIj5cclxuICAgICAgICAgICAgICDZhdix2KrYqNi3INmF2Lkg2KfZhNiz2KfYqNmC2Kkg2KjZgCA8c3Ryb25nIFtjbGFzcy50ZXh0LWJsdWUtNjAwXT1cImdyb3VwLmdyb3VwTG9naWNhbE9wZXJhdG9yID09PSAnYW5kJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy50ZXh0LWFtYmVyLTYwMF09XCJncm91cC5ncm91cExvZ2ljYWxPcGVyYXRvciA9PT0gJ29yJ1wiPlxyXG4gICAgICAgICAgICAgICAge3sgZ3JvdXAuZ3JvdXBMb2dpY2FsT3BlcmF0b3IgPT09ICdhbmQnID8gJ9mIJyA6ICfYo9mIJyB9fVxyXG4gICAgICAgICAgICAgIDwvc3Ryb25nPlxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICA8L3NtYWxsPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuIDwhLS0gQWN0aW9ucyAtLT5cclxuPGRpdiBjbGFzcz1cImZsZXggZmxleC13cmFwIGdhcC0zIG10LTZcIj5cclxuICA8YnV0dG9uXHJcbiAgICBwQnV0dG9uXHJcbiAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgIGljb249XCJwaSBwaS1wbHVzXCJcclxuICAgIFtsYWJlbF09XCInR1JPVVAnIHwgdHJhbnNsYXRlXCJcclxuICAgIGNsYXNzPVwicC1idXR0b24tb3V0bGluZWQgcC1idXR0b24tc20gIWJnLXdoaXRlICFib3JkZXIgIWJvcmRlci1ibHVlLTUwMCAhdGV4dC1ibHVlLTYwMCBob3ZlcjohYmctYmx1ZS01MCB0cmFuc2l0aW9uLWNvbG9ycyBmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMlwiXHJcbiAgICAoY2xpY2spPVwiYWRkR3JvdXAoKTtcIj5cclxuICA8L2J1dHRvbj5cclxuXHJcbiAgPGJ1dHRvblxyXG4gICAgcEJ1dHRvblxyXG4gICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICBpY29uPVwicGkgcGktcGx1c1wiXHJcbiAgICBbbGFiZWxdPVwiJ0NPTkRJVElPTicgfCB0cmFuc2xhdGVcIlxyXG4gICAgY2xhc3M9XCJwLWJ1dHRvbi1vdXRsaW5lZCBwLWJ1dHRvbi1zbSAhYmctd2hpdGUgIWJvcmRlciAhYm9yZGVyLWJsdWUtNTAwICF0ZXh0LWJsdWUtNjAwIGhvdmVyOiFiZy1ibHVlLTUwIHRyYW5zaXRpb24tY29sb3JzIGZsZXggaXRlbXMtY2VudGVyIGdhcC0yXCJcclxuICAgIChjbGljayk9XCJhZGRDb25kaXRpb25Ub0xhc3RHcm91cCgpXCI+XHJcbiAgPC9idXR0b24+XHJcblxyXG4gIDxidXR0b25cclxuICAgICpuZ0lmPVwiZ3JvdXBzLmxlbmd0aCA+IDBcIlxyXG4gICAgcEJ1dHRvblxyXG4gICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICBpY29uPVwicGkgcGktdHJhc2hcIlxyXG4gICAgW2xhYmVsXT1cIidDTEVBUicgfCB0cmFuc2xhdGVcIlxyXG4gICAgY2xhc3M9XCJwLWJ1dHRvbi1kYW5nZXIgcC1idXR0b24tb3V0bGluZWQgcC1idXR0b24tc20gIWJnLXdoaXRlICFib3JkZXIgIWJvcmRlci1yZWQtNTAwICF0ZXh0LXJlZC02MDAgaG92ZXI6IWJnLXJlZC01MCB0cmFuc2l0aW9uLWNvbG9ycyBmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMlwiXHJcbiAgICAoY2xpY2spPVwiY2xlYXJBbGwoKVwiPlxyXG4gIDwvYnV0dG9uPlxyXG48L2Rpdj5cclxuXHJcbjwhLS0gRW1wdHkgU3RhdGUgLS0+XHJcbjxkaXYgKm5nSWY9XCJncm91cHMubGVuZ3RoID09PSAwXCIgY2xhc3M9XCJlbXB0eS1zdGF0ZSB0ZXh0LWNlbnRlciBwLTYgYm9yZGVyLTIgYm9yZGVyLWRhc2hlZCBib3JkZXItZ3JheS0zMDAgcm91bmRlZC14bCBiZy1ncmF5LTUwXCI+XHJcbiAgPGkgY2xhc3M9XCJwaSBwaS1zZWFyY2ggdGV4dC00eGwgdGV4dC1ncmF5LTQwMCBtYi0zXCI+PC9pPlxyXG4gIDxwIGNsYXNzPVwidGV4dC1ncmF5LTUwMCBtYi00XCI+e3sgJ05PX1NFQVJDSF9DT05ESVRJT05TJyB8IHRyYW5zbGF0ZSB9fTwvcD5cclxuICA8YnV0dG9uXHJcbiAgICBwQnV0dG9uXHJcbiAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgIGljb249XCJwaSBwaS1wbHVzXCJcclxuICAgIFtsYWJlbF09XCInQUREX1NFQVJDSF9DT05ESVRJT04nIHwgdHJhbnNsYXRlXCJcclxuICAgIGNsYXNzPVwicC1idXR0b24tb3V0bGluZWQgIXB4LTQgIXB5LTJcIlxyXG4gICAgKGNsaWNrKT1cImFkZEdyb3VwKClcIj5cclxuICA8L2J1dHRvbj5cclxuPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=","// tab-type.component.ts\nimport { Component } from '@angular/core';\nimport { FieldType, FormlyField } from '@ngx-formly/core';\nimport { CommonModule } from '@angular/common';\nimport { TabsModule } from 'primeng/tabs';\nimport { BadgeModule } from 'primeng/badge';\nimport { TranslateModule } from '@ngx-translate/core';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common\";\nimport * as i2 from \"primeng/tabs\";\nimport * as i3 from \"primeng/badge\";\nimport * as i4 from \"@ngx-translate/core\";\nexport class TabTypeComponent extends FieldType {\n activeTabValue = '0';\n ngOnInit() {\n if (this.props['activeIndex'] !== undefined) {\n this.activeTabValue = this.props['activeIndex'].toString();\n }\n }\n resolveBadge(tab) {\n const badge = tab.props?.['badge'];\n if (typeof badge === 'function') {\n const result = badge(tab);\n return result == 0 ? null : result;\n }\n return badge ?? null;\n }\n onTabChange(newValue) {\n this.activeTabValue = newValue;\n if (this.props['onTabChange']) {\n this.props['onTabChange']({\n activeIndex: parseInt(newValue),\n tab: this.field.fieldGroup?.[parseInt(newValue)]\n });\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: TabTypeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.1.8\", type: TabTypeComponent, isStandalone: true, selector: \"formly-tab-type\", usesInheritance: true, ngImport: i0, template: `\r\n <p-tabs\r\n [value]=\"activeTabValue\"\r\n [scrollable]=\"props['scrollable'] !== false\"\r\n [lazy]=\"props['lazy'] !== false\"\r\n (valueChange)=\"onTabChange($event)\">\r\n\r\n <p-tablist>\r\n <p-tab\r\n *ngFor=\"let tab of field.fieldGroup; let i = index\"\r\n [value]=\"i.toString()\"\r\n [disabled]=\"tab.props?.disabled\">\r\n\r\n @if(tab.props){\r\n <div class=\"flex align-items-center gap-2\">\r\n <!-- Left Icon -->\r\n <i *ngIf=\"tab.props['leftIcon']\" [class]=\"tab.props['leftIcon']\" class=\"text-sm\"></i>\r\n\r\n <!-- Label -->\r\n <span>{{ (tab.props['label'] ?? '') | translate }}</span>\r\n\r\n <!-- Badge -->\r\n\r\n <p-badge\r\n *ngIf=\"resolveBadge(tab) !== null\"\r\n [value]=\"resolveBadge(tab)\"\r\n size=\"small\">\r\n </p-badge>\r\n\r\n <!-- Right Icon -->\r\n <i *ngIf=\"tab.props['rightIcon']\" [class]=\"tab.props['rightIcon']\" class=\"text-sm\"></i>\r\n </div>\r\n }\r\n </p-tab>\r\n </p-tablist>\r\n\r\n <p-tabpanels style=\"padding: 0;\">\r\n <p-tabpanel\r\n *ngFor=\"let tab of field.fieldGroup; let i = index\"\r\n [value]=\"i.toString()\">\r\n\r\n <div class=\"p-3\">\r\n <formly-field [field]=\"tab\"></formly-field>\r\n\r\n <!-- Empty state -->\r\n <div\r\n *ngIf=\"!tab.fieldGroup || tab.fieldGroup.length === 0\"\r\n class=\"empty-tab text-center p-4 text-500\">\r\n <i class=\"pi pi-inbox text-2xl mb-2\"></i>\r\n <p>لا توجد حقول في هذه التبويبة</p>\r\n </div>\r\n </div>\r\n </p-tabpanel>\r\n </p-tabpanels>\r\n </p-tabs>\r\n `, isInline: true, dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"directive\", type: i1.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"ngmodule\", type: TabsModule }, { kind: \"component\", type: i2.Tabs, selector: \"p-tabs\", inputs: [\"value\", \"scrollable\", \"lazy\", \"selectOnFocus\", \"showNavigators\", \"tabindex\"], outputs: [\"valueChange\"] }, { kind: \"component\", type: i2.TabPanels, selector: \"p-tabpanels\" }, { kind: \"component\", type: i2.TabPanel, selector: \"p-tabpanel\", inputs: [\"value\"], outputs: [\"valueChange\"] }, { kind: \"component\", type: i2.TabList, selector: \"p-tablist\" }, { kind: \"component\", type: i2.Tab, selector: \"p-tab\", inputs: [\"value\", \"disabled\"], outputs: [\"valueChange\"] }, { kind: \"ngmodule\", type: BadgeModule }, { kind: \"component\", type: i3.Badge, selector: \"p-badge\", inputs: [\"styleClass\", \"badgeSize\", \"size\", \"severity\", \"value\", \"badgeDisabled\"] }, { kind: \"component\", type: FormlyField, selector: \"formly-field\", inputs: [\"field\"] }, { kind: \"ngmodule\", type: TranslateModule }, { kind: \"pipe\", type: i4.TranslatePipe, name: \"translate\" }] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: TabTypeComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'formly-tab-type',\n template: `\r\n <p-tabs\r\n [value]=\"activeTabValue\"\r\n [scrollable]=\"props['scrollable'] !== false\"\r\n [lazy]=\"props['lazy'] !== false\"\r\n (valueChange)=\"onTabChange($event)\">\r\n\r\n <p-tablist>\r\n <p-tab\r\n *ngFor=\"let tab of field.fieldGroup; let i = index\"\r\n [value]=\"i.toString()\"\r\n [disabled]=\"tab.props?.disabled\">\r\n\r\n @if(tab.props){\r\n <div class=\"flex align-items-center gap-2\">\r\n <!-- Left Icon -->\r\n <i *ngIf=\"tab.props['leftIcon']\" [class]=\"tab.props['leftIcon']\" class=\"text-sm\"></i>\r\n\r\n <!-- Label -->\r\n <span>{{ (tab.props['label'] ?? '') | translate }}</span>\r\n\r\n <!-- Badge -->\r\n\r\n <p-badge\r\n *ngIf=\"resolveBadge(tab) !== null\"\r\n [value]=\"resolveBadge(tab)\"\r\n size=\"small\">\r\n </p-badge>\r\n\r\n <!-- Right Icon -->\r\n <i *ngIf=\"tab.props['rightIcon']\" [class]=\"tab.props['rightIcon']\" class=\"text-sm\"></i>\r\n </div>\r\n }\r\n </p-tab>\r\n </p-tablist>\r\n\r\n <p-tabpanels style=\"padding: 0;\">\r\n <p-tabpanel\r\n *ngFor=\"let tab of field.fieldGroup; let i = index\"\r\n [value]=\"i.toString()\">\r\n\r\n <div class=\"p-3\">\r\n <formly-field [field]=\"tab\"></formly-field>\r\n\r\n <!-- Empty state -->\r\n <div\r\n *ngIf=\"!tab.fieldGroup || tab.fieldGroup.length === 0\"\r\n class=\"empty-tab text-center p-4 text-500\">\r\n <i class=\"pi pi-inbox text-2xl mb-2\"></i>\r\n <p>لا توجد حقول في هذه التبويبة</p>\r\n </div>\r\n </div>\r\n </p-tabpanel>\r\n </p-tabpanels>\r\n </p-tabs>\r\n `,\n standalone: true,\n imports: [CommonModule, TabsModule, BadgeModule, FormlyField, TranslateModule]\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLXR5cGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZy51aS5jb3JlL2dlbmVyaWMtc2VhcmNoLWFkdmFuY2VkL3NyYy9saWIvdGFiLXR5cGUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHdCQUF3QjtBQUN4QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFxQixNQUFNLGtCQUFrQixDQUFDO0FBQzdFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7Ozs7QUErRHRELE1BQU0sT0FBTyxnQkFBaUIsU0FBUSxTQUE0QjtJQUNoRSxjQUFjLEdBQVcsR0FBRyxDQUFDO0lBRTdCLFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDNUMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzdELENBQUM7SUFDSCxDQUFDO0lBQ0YsWUFBWSxDQUFDLEdBQXNCO1FBQ2hDLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNuQyxJQUFJLE9BQU8sS0FBSyxLQUFLLFVBQVUsRUFBRSxDQUFDO1lBQ2hDLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUMxQixPQUFPLE1BQU0sSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO1FBQ3JDLENBQUM7UUFDRCxPQUFPLEtBQUssSUFBSSxJQUFJLENBQUM7SUFDdkIsQ0FBQztJQUNELFdBQVcsQ0FBQyxRQUFhO1FBQ3ZCLElBQUksQ0FBQyxjQUFjLEdBQUcsUUFBUSxDQUFDO1FBRS9CLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDO1lBQzlCLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7Z0JBQ3hCLFdBQVcsRUFBRSxRQUFRLENBQUMsUUFBUSxDQUFDO2dCQUMvQixHQUFHLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDakQsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7dUdBekJVLGdCQUFnQjsyRkFBaEIsZ0JBQWdCLGtHQTNEakI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F1RFQsMkRBRVMsWUFBWSwrUEFBRSxVQUFVLDhpQkFBRSxXQUFXLDhLQUFDLFdBQVcsMkVBQUMsZUFBZTs7MkZBRWhFLGdCQUFnQjtrQkE3RDVCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGlCQUFpQjtvQkFDM0IsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdURUO29CQUNELFVBQVUsRUFBRSxJQUFJO29CQUNoQixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBQyxXQUFXLEVBQUMsZUFBZSxDQUFDO2lCQUM3RSIsInNvdXJjZXNDb250ZW50IjpbIi8vIHRhYi10eXBlLmNvbXBvbmVudC50c1xyXG5pbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRmllbGRUeXBlLCBGb3JtbHlGaWVsZCwgRm9ybWx5RmllbGRDb25maWcgfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgVGFic01vZHVsZSB9IGZyb20gJ3ByaW1lbmcvdGFicyc7XHJcbmltcG9ydCB7IEJhZGdlTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9iYWRnZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdmb3JtbHktdGFiLXR5cGUnLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8cC10YWJzXHJcbiAgICAgIFt2YWx1ZV09XCJhY3RpdmVUYWJWYWx1ZVwiXHJcbiAgICAgIFtzY3JvbGxhYmxlXT1cInByb3BzWydzY3JvbGxhYmxlJ10gIT09IGZhbHNlXCJcclxuICAgICAgW2xhenldPVwicHJvcHNbJ2xhenknXSAhPT0gZmFsc2VcIlxyXG4gICAgICAodmFsdWVDaGFuZ2UpPVwib25UYWJDaGFuZ2UoJGV2ZW50KVwiPlxyXG5cclxuICAgICAgPHAtdGFibGlzdD5cclxuICAgICAgICA8cC10YWJcclxuICAgICAgICAgICpuZ0Zvcj1cImxldCB0YWIgb2YgZmllbGQuZmllbGRHcm91cDsgbGV0IGkgPSBpbmRleFwiXHJcbiAgICAgICAgICBbdmFsdWVdPVwiaS50b1N0cmluZygpXCJcclxuICAgICAgICAgIFtkaXNhYmxlZF09XCJ0YWIucHJvcHM/LmRpc2FibGVkXCI+XHJcblxyXG4gICAgICAgICAgQGlmKHRhYi5wcm9wcyl7XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cclxuICAgICAgICAgICAgPCEtLSBMZWZ0IEljb24gLS0+XHJcbiAgICAgICAgICAgIDxpICpuZ0lmPVwidGFiLnByb3BzWydsZWZ0SWNvbiddXCIgW2NsYXNzXT1cInRhYi5wcm9wc1snbGVmdEljb24nXVwiIGNsYXNzPVwidGV4dC1zbVwiPjwvaT5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gTGFiZWwgLS0+XHJcbiAgICAgICAgICAgIDxzcGFuPnt7ICh0YWIucHJvcHNbJ2xhYmVsJ10gPz8gJycpIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxyXG5cclxuICAgICAgICAgICAgPCEtLSBCYWRnZSAtLT5cclxuXHJcbiAgICAgICAgICAgICA8cC1iYWRnZVxyXG4gICAgICAgICAgICAgICpuZ0lmPVwicmVzb2x2ZUJhZGdlKHRhYikgIT09IG51bGxcIlxyXG4gICAgICAgICAgICAgIFt2YWx1ZV09XCJyZXNvbHZlQmFkZ2UodGFiKVwiXHJcbiAgICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCI+XHJcbiAgICAgICAgICAgIDwvcC1iYWRnZT5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gUmlnaHQgSWNvbiAtLT5cclxuICAgICAgICAgICAgPGkgKm5nSWY9XCJ0YWIucHJvcHNbJ3JpZ2h0SWNvbiddXCIgW2NsYXNzXT1cInRhYi5wcm9wc1sncmlnaHRJY29uJ11cIiBjbGFzcz1cInRleHQtc21cIj48L2k+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIH1cclxuICAgICAgICA8L3AtdGFiPlxyXG4gICAgICA8L3AtdGFibGlzdD5cclxuXHJcbiAgICAgIDxwLXRhYnBhbmVscyBzdHlsZT1cInBhZGRpbmc6IDA7XCI+XHJcbiAgICAgICAgPHAtdGFicGFuZWxcclxuICAgICAgICAgICpuZ0Zvcj1cImxldCB0YWIgb2YgZmllbGQuZmllbGRHcm91cDsgbGV0IGkgPSBpbmRleFwiXHJcbiAgICAgICAgICBbdmFsdWVdPVwiaS50b1N0cmluZygpXCI+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInAtM1wiPlxyXG4gICAgICAgICAgICA8Zm9ybWx5LWZpZWxkIFtmaWVsZF09XCJ0YWJcIj48L2Zvcm1seS1maWVsZD5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gRW1wdHkgc3RhdGUgLS0+XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAqbmdJZj1cIiF0YWIuZmllbGRHcm91cCB8fCB0YWIuZmllbGRHcm91cC5sZW5ndGggPT09IDBcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZW1wdHktdGFiIHRleHQtY2VudGVyIHAtNCB0ZXh0LTUwMFwiPlxyXG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwicGkgcGktaW5ib3ggdGV4dC0yeGwgbWItMlwiPjwvaT5cclxuICAgICAgICAgICAgICA8cD7ZhNinINiq2YjYrNivINit2YLZiNmEINmB2Yog2YfYsNmHINin2YTYqtio2YjZitio2Kk8L3A+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9wLXRhYnBhbmVsPlxyXG4gICAgICA8L3AtdGFicGFuZWxzPlxyXG4gICAgPC9wLXRhYnM+XHJcbiAgYCxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFRhYnNNb2R1bGUsIEJhZGdlTW9kdWxlLEZvcm1seUZpZWxkLFRyYW5zbGF0ZU1vZHVsZV1cclxufSlcclxuZXhwb3J0IGNsYXNzIFRhYlR5cGVDb21wb25lbnQgZXh0ZW5kcyBGaWVsZFR5cGU8Rm9ybWx5RmllbGRDb25maWc+IHtcclxuICBhY3RpdmVUYWJWYWx1ZTogc3RyaW5nID0gJzAnO1xyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIGlmICh0aGlzLnByb3BzWydhY3RpdmVJbmRleCddICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgdGhpcy5hY3RpdmVUYWJWYWx1ZSA9IHRoaXMucHJvcHNbJ2FjdGl2ZUluZGV4J10udG9TdHJpbmcoKTtcclxuICAgIH1cclxuICB9XHJcbiByZXNvbHZlQmFkZ2UodGFiOiBGb3JtbHlGaWVsZENvbmZpZyk6IGFueSB7XHJcbiAgICBjb25zdCBiYWRnZSA9IHRhYi5wcm9wcz8uWydiYWRnZSddO1xyXG4gICAgaWYgKHR5cGVvZiBiYWRnZSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICBjb25zdCByZXN1bHQgPSBiYWRnZSh0YWIpO1xyXG4gICAgICByZXR1cm4gcmVzdWx0ID09IDAgPyBudWxsIDogcmVzdWx0O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGJhZGdlID8/IG51bGw7XHJcbiAgfVxyXG4gIG9uVGFiQ2hhbmdlKG5ld1ZhbHVlOiBhbnkpIHtcclxuICAgIHRoaXMuYWN0aXZlVGFiVmFsdWUgPSBuZXdWYWx1ZTtcclxuXHJcbiAgICBpZiAodGhpcy5wcm9wc1snb25UYWJDaGFuZ2UnXSkge1xyXG4gICAgICB0aGlzLnByb3BzWydvblRhYkNoYW5nZSddKHtcclxuICAgICAgICBhY3RpdmVJbmRleDogcGFyc2VJbnQobmV3VmFsdWUpLFxyXG4gICAgICAgIHRhYjogdGhpcy5maWVsZC5maWVsZEdyb3VwPy5bcGFyc2VJbnQobmV3VmFsdWUpXVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19","// group-type.component.ts\nimport { Component } from '@angular/core';\nimport { FieldType, FormlyField } from '@ngx-formly/core';\nimport { CommonModule } from '@angular/common';\nimport { ButtonModule } from 'primeng/button';\nimport { TooltipModule } from 'primeng/tooltip';\nimport { BadgeModule } from 'primeng/badge';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common\";\nimport * as i2 from \"primeng/button\";\nimport * as i3 from \"primeng/tooltip\";\nexport class GroupTypeComponent extends FieldType {\n collapsed = this.props.collapsedByDefault ?? false;\n get showValidation() {\n return this.props.showValidation !== false &&\n this.formControl.invalid && (this.formControl.dirty || this.formControl.touched);\n }\n get validationIcon() {\n if (this.formControl.valid)\n return 'pi pi-check-circle text-green-500';\n if (this.formControl.invalid)\n return 'pi pi-exclamation-circle text-red-500';\n return 'pi pi-circle text-500';\n }\n get validationText() {\n return this.formControl.valid ? 'جميع الحقول صالحة' : 'هناك أخطاء في بعض الحقول';\n }\n get groupClass() {\n const v = this.props.variant || 'default';\n const map = {\n default: 'border-round border-1 border-200 bg-white mb-3',\n card: 'border-round surface-card shadow-sm mb-3',\n bordered: 'border-round border-1 border-300 surface-section mb-3',\n transparent: 'border-0 bg-transparent mb-3'\n };\n return map[v];\n }\n get gridClass() {\n const cols = this.props.columns || 1;\n const gap = this.props.gap || 'normal';\n const gaps = { none: 'gap-0', small: 'gap-2', normal: 'gap-3', large: 'gap-4' };\n return `grid grid-cols-1 ${cols > 1 ? 'md:grid-cols-' + cols : ''} ${gaps[gap]}`;\n }\n toggle() {\n this.collapsed = !this.collapsed;\n }\n isRequired() {\n return this.field.fieldGroup?.some(f => f.props?.required || f.validators?.['required']) ?? false;\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: GroupTypeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.1.8\", type: GroupTypeComponent, isStandalone: true, selector: \"formly-group-type\", usesInheritance: true, ngImport: i0, template: `\r\n <div [class]=\"groupClass\">\r\n <div *ngIf=\"props.label || props.collapsible\" class=\"flex justify-between items-center p-2\"\r\n (click)=\"props.collapsible && toggle()\">\r\n <div class=\"flex items-center gap-2\">\r\n <i *ngIf=\"props.collapsible\" [class]=\"collapsed ? 'pi pi-chevron-down' : 'pi pi-chevron-up'\"></i>\r\n <label *ngIf=\"props.label\" class=\"font-semibold\">{{ props.label }}</label>\r\n <i *ngIf=\"isRequired()\" class=\"pi pi-asterisk text-red-500 text-xs\" pTooltip=\"حقل مطلوب\"></i>\r\n </div>\r\n <div class=\"flex gap-2\">\r\n <i *ngIf=\"props.description && !collapsed\" class=\"pi pi-info-circle text-500\"\r\n pTooltip=\"{{ props.description }}\"></i>\r\n <i *ngIf=\"showValidation\" [class]=\"validationIcon\" [pTooltip]=\"validationText\"></i>\r\n <button *ngFor=\"let a of props.actions || []\" pButton type=\"button\" class=\"p-button-text p-button-sm\"\r\n [icon]=\"a.icon\" [pTooltip]=\"a.tooltip\" [ngClass]=\"a.styleClass\"\r\n (click)=\"a.handler?.(field, form, this); $event.stopPropagation()\"></button>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"!collapsed\" class=\"p-3 pt-0\" [ngClass]=\"props.compact ? 'compact-layout' : ''\">\r\n <p *ngIf=\"props.description && props.showDescription\" class=\"text-500 text-sm mb-2\">{{ props.description }}</p>\r\n\r\n <div [ngClass]=\"gridClass\">\r\n <ng-container *ngFor=\"let f of field.fieldGroup\">\r\n <formly-field [field]=\"f\"></formly-field>\r\n <small *ngIf=\"f.props?.description\"\r\n class=\"block text-500 text-xs mt-1 ml-1\">\r\n {{ f.props?.description }}\r\n </small>\r\n </ng-container>\r\n</div>\r\n\r\n\r\n <div *ngIf=\"!field.fieldGroup?.length\" class=\"text-center p-4 surface-section border-round\">\r\n <i class=\"pi pi-inbox text-4xl text-500 mb-2\"></i>\r\n <p class=\"text-500\">لا توجد حقول</p>\r\n </div>\r\n </div>\r\n </div>\r\n `, isInline: true, dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"directive\", type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i1.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"component\", type: FormlyField, selector: \"formly-field\", inputs: [\"field\"] }, { kind: \"ngmodule\", type: ButtonModule }, { kind: \"directive\", type: i2.ButtonDirective, selector: \"[pButton]\", inputs: [\"iconPos\", \"loadingIcon\", \"loading\", \"severity\", \"raised\", \"rounded\", \"text\", \"outlined\", \"size\", \"plain\", \"fluid\", \"label\", \"icon\", \"buttonProps\"] }, { kind: \"ngmodule\", type: TooltipModule }, { kind: \"directive\", type: i3.Tooltip, selector: \"[pTooltip]\", inputs: [\"tooltipPosition\", \"tooltipEvent\", \"positionStyle\", \"tooltipStyleClass\", \"tooltipZIndex\", \"escape\", \"showDelay\", \"hideDelay\", \"life\", \"positionTop\", \"positionLeft\", \"autoHide\", \"fitContent\", \"hideOnEscape\", \"pTooltip\", \"tooltipDisabled\", \"tooltipOptions\", \"appendTo\"] }, { kind: \"ngmodule\", type: BadgeModule }] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.8\", ngImport: i0, type: GroupTypeComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'formly-group-type',\n standalone: true,\n imports: [CommonModule, FormlyField, ButtonModule, TooltipModule, BadgeModule],\n template: `\r\n <div [class]=\"groupClass\">\r\n <div *ngIf=\"props.label || props.collapsible\" class=\"flex justify-between items-center p-2\"\r\n (click)=\"props.collapsible && toggle()\">\r\n <div class=\"flex items-center gap-2\">\r\n <i *ngIf=\"props.collapsible\" [class]=\"collapsed ? 'pi pi-chevron-down' : 'pi pi-chevron-up'\"></i>\r\n <label *ngIf=\"props.label\" class=\"font-semibold\">{{ props.label }}</label>\r\n <i *ngIf=\"isRequired()\" class=\"pi pi-asterisk text-red-500 text-xs\" pTooltip=\"حقل مطلوب\"></i>\r\n </div>\r\n <div class=\"flex gap-2\">\r\n <i *ngIf=\"props.description && !collapsed\" class=\"pi pi-info-circle text-500\"\r\n pTooltip=\"{{ props.description }}\"></i>\r\n <i *ngIf=\"showValidation\" [class]=\"validationIcon\" [pTooltip]=\"validationText\"></i>\r\n <button *ngFor=\"let a of props.actions || []\" pButton type=\"button\" class=\"p-button-text p-button-sm\"\r\n [icon]=\"a.icon\" [pTooltip]=\"a.tooltip\" [ngClass]=\"a.styleClass\"\r\n (click)=\"a.handler?.(field, form, this); $event.stopPropagation()\"></button>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"!collapsed\" class=\"p-3 pt-0\" [ngClass]=\"props.compact ? 'compact-layout' : ''\">\r\n <p *ngIf=\"props.description && props.showDescription\" class=\"text-500 text-sm mb-2\">{{ props.description }}</p>\r\n\r\n <div [ngClass]=\"gridClass\">\r\n <ng-container *ngFor=\"let f of field.fieldGroup\">\r\n <formly-field [field]=\"f\"></formly-field>\r\n <small *ngIf=\"f.props?.description\"\r\n class=\"block text-500 text-xs mt-1 ml-1\">\r\n {{ f.props?.description }}\r\n </small>\r\n </ng-container>\r\n</div>\r\n\r\n\r\n <div *ngIf=\"!field.fieldGroup?.length\" class=\"text-center p-4 surface-section border-round\">\r\n <i class=\"pi pi-inbox text-4xl text-500 mb-2\"></i>\r\n <p class=\"text-500\">لا توجد حقول</p>\r\n </div>\r\n </div>\r\n </div>\r\n `\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZy51aS5jb3JlL2dlbmVyaWMtc2VhcmNoLWFkdmFuY2VkL3NyYy9saWIvZ3JvdXAuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDBCQUEwQjtBQUMxQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxTQUFTLEVBQXFCLFdBQVcsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzdFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7O0FBb0U1QyxNQUFNLE9BQU8sa0JBQW1CLFNBQVEsU0FBNEM7SUFDbEYsU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsa0JBQWtCLElBQUksS0FBSyxDQUFDO0lBR25ELElBQUksY0FBYztRQUNoQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxLQUFLLEtBQUs7WUFDeEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3JGLENBQUM7SUFFRCxJQUFJLGNBQWM7UUFDaEIsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUs7WUFBRSxPQUFPLG1DQUFtQyxDQUFDO1FBQ3ZFLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPO1lBQUUsT0FBTyx1Q0FBdUMsQ0FBQztRQUM3RSxPQUFPLHVCQUF1QixDQUFDO0lBQ2pDLENBQUM7SUFFRCxJQUFJLGNBQWM7UUFDaEIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLDBCQUEwQixDQUFDO0lBQ25GLENBQUM7SUFFRCxJQUFJLFVBQVU7UUFDWixNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sSUFBSSxTQUFTLENBQUM7UUFDMUMsTUFBTSxHQUFHLEdBQVE7WUFDZixPQUFPLEVBQUUsZ0RBQWdEO1lBQ3pELElBQUksRUFBRSwwQ0FBMEM7WUFDaEQsUUFBUSxFQUFFLHVEQUF1RDtZQUNqRSxXQUFXLEVBQUUsOEJBQThCO1NBQzVDLENBQUM7UUFDRixPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoQixDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1gsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDO1FBQ3JDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLFFBQVEsQ0FBQztRQUN2QyxNQUFNLElBQUksR0FBUSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsQ0FBQztRQUNyRixPQUFPLG9CQUFvQixJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7SUFDbkYsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsVUFBVTtRQUNSLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxRQUFRLElBQUksQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDO0lBQ3BHLENBQUM7dUdBM0NVLGtCQUFrQjsyRkFBbEIsa0JBQWtCLG9HQXpDbkI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXVDVCwyREF4Q1MsWUFBWSw4VkFBRSxXQUFXLDJFQUFFLFlBQVksb1FBQUUsYUFBYSxxWEFBRSxXQUFXOzsyRkEwQ2xFLGtCQUFrQjtrQkE3QzlCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLG1CQUFtQjtvQkFDN0IsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxXQUFXLENBQUM7b0JBQzlFLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdUNUO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLy8gZ3JvdXAtdHlwZS5jb21wb25lbnQudHNcclxuaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZpZWxkVHlwZSwgRm9ybWx5RmllbGRDb25maWcsIEZvcm1seUZpZWxkIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEJ1dHRvbk1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvYnV0dG9uJztcclxuaW1wb3J0IHsgVG9vbHRpcE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvdG9vbHRpcCc7XHJcbmltcG9ydCB7IEJhZGdlTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9iYWRnZSc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEdyb3VwVHlwZVByb3BzIHtcclxuICBsYWJlbD86IHN0cmluZztcclxuICBkZXNjcmlwdGlvbj86IHN0cmluZztcclxuICBjb2xsYXBzaWJsZT86IGJvb2xlYW47XHJcbiAgY29sbGFwc2VkQnlEZWZhdWx0PzogYm9vbGVhbjtcclxuICBzaG93RmllbGRDb3VudD86IGJvb2xlYW47XHJcbiAgc2hvd0Rlc2NyaXB0aW9uPzogYm9vbGVhbjtcclxuICBzaG93U3VtbWFyeT86IGJvb2xlYW47XHJcbiAgc2hvd1ZhbGlkYXRpb24/OiBib29sZWFuO1xyXG4gIGNvbXBhY3Q/OiBib29sZWFuO1xyXG4gIHZhcmlhbnQ/OiAnZGVmYXVsdCcgfCAnY2FyZCcgfCAnYm9yZGVyZWQnIHwgJ3RyYW5zcGFyZW50JztcclxuICBjb2x1bW5zPzogbnVtYmVyO1xyXG4gIGdhcD86ICdub25lJyB8ICdzbWFsbCcgfCAnbm9ybWFsJyB8ICdsYXJnZSc7XHJcbiAgYWN0aW9ucz86IHtcclxuICAgIGljb246IHN0cmluZztcclxuICAgIHRvb2x0aXA6IHN0cmluZztcclxuICAgIHN0eWxlQ2xhc3M/OiBzdHJpbmc7XHJcbiAgICBoYW5kbGVyPzogKGZpZWxkOiBGb3JtbHlGaWVsZENvbmZpZywgZm9ybTogYW55LCBjb21wb25lbnQ6IGFueSkgPT4gdm9pZDtcclxuICB9W107XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZm9ybWx5LWdyb3VwLXR5cGUnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRm9ybWx5RmllbGQsIEJ1dHRvbk1vZHVsZSwgVG9vbHRpcE1vZHVsZSwgQmFkZ2VNb2R1bGVdLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8ZGl2IFtjbGFzc109XCJncm91cENsYXNzXCI+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCJwcm9wcy5sYWJlbCB8fCBwcm9wcy5jb2xsYXBzaWJsZVwiIGNsYXNzPVwiZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyIHAtMlwiXHJcbiAgICAgICAgICAgKGNsaWNrKT1cInByb3BzLmNvbGxhcHNpYmxlICYmIHRvZ2dsZSgpXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0yXCI+XHJcbiAgICAgICAgICA8aSAqbmdJZj1cInByb3BzLmNvbGxhcHNpYmxlXCIgW2NsYXNzXT1cImNvbGxhcHNlZCA/ICdwaSBwaS1jaGV2cm9uLWRvd24nIDogJ3BpIHBpLWNoZXZyb24tdXAnXCI+PC9pPlxyXG4gICAgICAgICAgPGxhYmVsICpuZ0lmPVwicHJvcHMubGFiZWxcIiBjbGFzcz1cImZvbnQtc2VtaWJvbGRcIj57eyBwcm9wcy5sYWJlbCB9fTwvbGFiZWw+XHJcbiAgICAgICAgICA8aSAqbmdJZj1cImlzUmVxdWlyZWQoKVwiIGNsYXNzPVwicGkgcGktYXN0ZXJpc2sgdGV4dC1yZWQtNTAwIHRleHQteHNcIiBwVG9vbHRpcD1cItit2YLZhCDZhdi32YTZiNioXCI+PC9pPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGdhcC0yXCI+XHJcbiAgICAgICAgICA8aSAqbmdJZj1cInByb3BzLmRlc2NyaXB0aW9uICYmICFjb2xsYXBzZWRcIiBjbGFzcz1cInBpIHBpLWluZm8tY2lyY2xlIHRleHQtNTAwXCJcclxuICAgICAgICAgICAgIHBUb29sdGlwPVwie3sgcHJvcHMuZGVzY3JpcHRpb24gfX1cIj48L2k+XHJcbiAgICAgICAgICA8aSAqbmdJZj1cInNob3dWYWxpZGF0aW9uXCIgW2NsYXNzXT1cInZhbGlkYXRpb25JY29uXCIgW3BUb29sdGlwXT1cInZhbGlkYXRpb25UZXh0XCI+PC9pPlxyXG4gICAgICAgICAgPGJ1dHRvbiAqbmdGb3I9XCJsZXQgYSBvZiBwcm9wcy5hY3Rpb25zIHx8IFtdXCIgcEJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJwLWJ1dHRvbi10ZXh0IHAtYnV0dG9uLXNtXCJcclxuICAgICAgICAgICAgICAgICAgW2ljb25dPVwiYS5pY29uXCIgW3BUb29sdGlwXT1cImEudG9vbHRpcFwiIFtuZ0NsYXNzXT1cImEuc3R5bGVDbGFzc1wiXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhLmhhbmRsZXI/LihmaWVsZCwgZm9ybSwgdGhpcyk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPjwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgKm5nSWY9XCIhY29sbGFwc2VkXCIgY2xhc3M9XCJwLTMgcHQtMFwiIFtuZ0NsYXNzXT1cInByb3BzLmNvbXBhY3QgPyAnY29tcGFjdC1sYXlvdXQnIDogJydcIj5cclxuICAgICAgICA8cCAqbmdJZj1cInByb3BzLmRlc2NyaXB0aW9uICYmIHByb3BzLnNob3dEZXNjcmlwdGlvblwiIGNsYXNzPVwidGV4dC01MDAgdGV4dC1zbSBtYi0yXCI+e3sgcHJvcHMuZGVzY3JpcHRpb24gfX08L3A+XHJcblxyXG4gICAgICAgIDxkaXYgW25nQ2xhc3NdPVwiZ3JpZENsYXNzXCI+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZiBvZiBmaWVsZC5maWVsZEdyb3VwXCI+XHJcbiAgICA8Zm9ybWx5LWZpZWxkIFtmaWVsZF09XCJmXCI+PC9mb3JtbHktZmllbGQ+XHJcbiAgICA8c21hbGwgKm5nSWY9XCJmLnByb3BzPy5kZXNjcmlwdGlvblwiXHJcbiAgICAgICAgICAgY2xhc3M9XCJibG9jayB0ZXh0LTUwMCB0ZXh0LXhzIG10LTEgbWwtMVwiPlxyXG4gICAgICB7eyBmLnByb3BzPy5kZXNjcmlwdGlvbiAgfX1cclxuICAgIDwvc21hbGw+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbjwvZGl2PlxyXG5cclxuXHJcbiAgICAgICAgPGRpdiAqbmdJZj1cIiFmaWVsZC5maWVsZEdyb3VwPy5sZW5ndGhcIiBjbGFzcz1cInRleHQtY2VudGVyIHAtNCBzdXJmYWNlLXNlY3Rpb24gYm9yZGVyLXJvdW5kXCI+XHJcbiAgICAgICAgICA8aSBjbGFzcz1cInBpIHBpLWluYm94IHRleHQtNHhsIHRleHQtNTAwIG1iLTJcIj48L2k+XHJcbiAgICAgICAgICA8cCBjbGFzcz1cInRleHQtNTAwXCI+2YTYpyDYqtmI2KzYryDYrdmC2YjZhDwvcD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICBgXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBHcm91cFR5cGVDb21wb25lbnQgZXh0ZW5kcyBGaWVsZFR5cGU8Rm9ybWx5RmllbGRDb25maWc8R3JvdXBUeXBlUHJvcHM+PiB7XHJcbiAgY29sbGFwc2VkID0gdGhpcy5wcm9wcy5jb2xsYXBzZWRCeURlZmF1bHQgPz8gZmFsc2U7XHJcblxyXG5cclxuICBnZXQgc2hvd1ZhbGlkYXRpb24oKSB7XHJcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5zaG93VmFsaWRhdGlvbiAhPT0gZmFsc2UgJiZcclxuICAgICAgdGhpcy5mb3JtQ29udHJvbC5pbnZhbGlkICYmICh0aGlzLmZvcm1Db250cm9sLmRpcnR5IHx8IHRoaXMuZm9ybUNvbnRyb2wudG91Y2hlZCk7XHJcbiAgfVxyXG5cclxuICBnZXQgdmFsaWRhdGlvbkljb24oKSB7XHJcbiAgICBpZiAodGhpcy5mb3JtQ29udHJvbC52YWxpZCkgcmV0dXJuICdwaSBwaS1jaGVjay1jaXJjbGUgdGV4dC1ncmVlbi01MDAnO1xyXG4gICAgaWYgKHRoaXMuZm9ybUNvbnRyb2wuaW52YWxpZCkgcmV0dXJuICdwaSBwaS1leGNsYW1hdGlvbi1jaXJjbGUgdGV4dC1yZWQtNTAwJztcclxuICAgIHJldHVybiAncGkgcGktY2lyY2xlIHRleHQtNTAwJztcclxuICB9XHJcblxyXG4gIGdldCB2YWxpZGF0aW9uVGV4dCgpIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm1Db250cm9sLnZhbGlkID8gJ9is2YXZiti5INin2YTYrdmC2YjZhCDYtdin2YTYrdipJyA6ICfZh9mG2KfZgyDYo9iu2LfYp9ihINmB2Yog2KjYudi2INin2YTYrdmC2YjZhCc7XHJcbiAgfVxyXG5cclxuICBnZXQgZ3JvdXBDbGFzcygpIHtcclxuICAgIGNvbnN0IHYgPSB0aGlzLnByb3BzLnZhcmlhbnQgfHwgJ2RlZmF1bHQnO1xyXG4gICAgY29uc3QgbWFwOiBhbnkgPSB7XHJcbiAgICAgIGRlZmF1bHQ6ICdib3JkZXItcm91bmQgYm9yZGVyLTEgYm9yZGVyLTIwMCBiZy13aGl0ZSBtYi0zJyxcclxuICAgICAgY2FyZDogJ2JvcmRlci1yb3VuZCBzdXJmYWNlLWNhcmQgc2hhZG93LXNtIG1iLTMnLFxyXG4gICAgICBib3JkZXJlZDogJ2JvcmRlci1yb3VuZCBib3JkZXItMSBib3JkZXItMzAwIHN1cmZhY2Utc2VjdGlvbiBtYi0zJyxcclxuICAgICAgdHJhbnNwYXJlbnQ6ICdib3JkZXItMCBiZy10cmFuc3BhcmVudCBtYi0zJ1xyXG4gICAgfTtcclxuICAgIHJldHVybiBtYXBbdl07XHJcbiAgfVxyXG5cclxuICBnZXQgZ3JpZENsYXNzKCkge1xyXG4gICAgY29uc3QgY29scyA9IHRoaXMucHJvcHMuY29sdW1ucyB8fCAxO1xyXG4gICAgY29uc3QgZ2FwID0gdGhpcy5wcm9wcy5nYXAgfHwgJ25vcm1hbCc7XHJcbiAgICBjb25zdCBnYXBzOiBhbnkgPSB7IG5vbmU6ICdnYXAtMCcsIHNtYWxsOiAnZ2FwLTInLCBub3JtYWw6ICdnYXAtMycsIGxhcmdlOiAnZ2FwLTQnIH07XHJcbiAgICByZXR1cm4gYGdyaWQgZ3JpZC1jb2xzLTEgJHtjb2xzID4gMSA/ICdtZDpncmlkLWNvbHMtJyArIGNvbHMgOiAnJ30gJHtnYXBzW2dhcF19YDtcclxuICB9XHJcblxyXG4gIHRvZ2dsZSgpIHtcclxuICAgIHRoaXMuY29sbGFwc2VkID0gIXRoaXMuY29sbGFwc2VkO1xyXG4gIH1cclxuXHJcbiAgaXNSZXF1aXJlZCgpIHtcclxuICAgIHJldHVybiB0aGlzLmZpZWxkLmZpZWxkR3JvdXA/LnNvbWUoZiA9PiBmLnByb3BzPy5yZXF1aXJlZCB8fCBmLnZhbGlkYXRvcnM/LlsncmVxdWlyZWQnXSkgPz8gZmFsc2U7XHJcbiAgfVxyXG59XHJcbiJdfQ==","import { provideFormlyConfig } from '@ngx-formly/core';\nimport { QueryBuilderComponent } from './query-builder.component';\nimport { SortBuilderComponent } from './sort-builder.component';\nimport { GroupTypeComponent } from './group.component';\nimport { TabTypeComponent } from './tab-type.component';\nexport const formlyConfig = provideFormlyConfig({\n types: [\n {\n name: 'query-builder',\n component: QueryBuilderComponent\n },\n {\n name: 'sort-builder',\n component: SortBuilderComponent\n },\n {\n name: 'group', component: GroupTypeComponent\n },\n {\n name: 'tab-type',\n component: TabTypeComponent\n },\n ],\n});\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWx5LWNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmcudWkuY29yZS9nZW5lcmljLXNlYXJjaC1hZHZhbmNlZC9zcmMvbGliL2Zvcm1seS1jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFHLG1CQUFtQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDeEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFeEQsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLG1CQUFtQixDQUFDO0lBQzlDLEtBQUssRUFBRTtRQUVEO1lBQ0UsSUFBSSxFQUFFLGVBQWU7WUFDckIsU0FBUyxFQUFFLHFCQUFxQjtTQUNqQztRQUNEO1lBQ0UsSUFBSSxFQUFFLGNBQWM7WUFDcEIsU0FBUyxFQUFFLG9CQUFvQjtTQUNoQztRQUNEO1lBQ0UsSUFBSSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsa0JBQWtCO1NBQzdDO1FBQ0Q7WUFDRSxJQUFJLEVBQUUsVUFBVTtZQUNoQixTQUFTLEVBQUUsZ0JBQWdCO1NBQzVCO0tBR047Q0FFRixDQUVBLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyAgcHJvdmlkZUZvcm1seUNvbmZpZyB9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xyXG5pbXBvcnQgeyBRdWVyeUJ1aWxkZXJDb21wb25lbnQgfSBmcm9tICcuL3F1ZXJ5LWJ1aWxkZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU29ydEJ1aWxkZXJDb21wb25lbnQgfSBmcm9tICcuL3NvcnQtYnVpbGRlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBHcm91cFR5cGVDb21wb25lbnQgfSBmcm9tICcuL2dyb3VwLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRhYlR5cGVDb21wb25lbnQgfSBmcm9tICcuL3RhYi10eXBlLmNvbXBvbmVudCc7XHJcblxyXG5leHBvcnQgY29uc3QgZm9ybWx5Q29uZmlnID0gcHJvdmlkZUZvcm1seUNvbmZpZyh7XHJcbiAgdHlwZXM6IFtcclxuXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbmFtZTogJ3F1ZXJ5LWJ1aWxkZXInLFxyXG4gICAgICAgICAgY29tcG9uZW50OiBRdWVyeUJ1aWxkZXJDb21wb25lbnRcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIG5hbWU6ICdzb3J0LWJ1aWxkZXInLFxyXG4gICAgICAgICAgY29tcG9uZW50OiBTb3J0QnVpbGRlckNvbXBvbmVudFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbmFtZTogJ2dyb3VwJywgY29tcG9uZW50OiBHcm91cFR5cGVDb21wb25lbnRcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIG5hbWU6ICd0YWItdHlwZScsXHJcbiAgICAgICAgICBjb21wb25lbnQ6IFRhYlR5cGVDb21wb25lbnRcclxuICAgICAgICB9LFxyXG5cclxuXHJcbiAgXSxcclxuXHJcbn0sXHJcblxyXG4pO1xyXG5cclxuXHJcblxyXG5cclxuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxpdGUuZnJhbWV3b3JrLW5nLnVpLmNvcmUtZ2VuZXJpYy1zZWFyY2gtYWR2YW5jZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL25nLnVpLmNvcmUvZ2VuZXJpYy1zZWFyY2gtYWR2YW5jZWQvc3JjL2VsaXRlLmZyYW1ld29yay1uZy51aS5jb3JlLWdlbmVyaWMtc2VhcmNoLWFkdmFuY2VkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":["i3","i4","i2","i5","i6","i7","i8"],"mappings":"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A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,EAAE,CAAC,SAAS,EAAE,cAAc,EAAE,eAAe,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,I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CjF,wBAAwB,YAAY;AACpC,wBAAwB,WAAW;AACnC,wBAAwB,YAAY;AACpC,wBAAwB,YAAY;AACpC,wBAAwB,cAAc;AACtC,wBAAwB;AACxB,qBAAqB,EAAE,QAAQ,EAAE,CAAC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,CAAC,EAAE;AACL,SAAS,CAAC,EAAE,CAAC;;AC5db;AA4BO,MAAM,qBAAqB,SAAS,SAAS,CAAC;AACrD,IAAI,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC;AACrD,IAAI,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC;AACnC,IAAI,SAAS,G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"}