rez_core 2.2.253 → 2.2.255
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/module/communication/communication.module.js +2 -0
- package/dist/module/communication/communication.module.js.map +1 -1
- package/dist/module/communication/factories/telephone.factory.d.ts +3 -1
- package/dist/module/communication/factories/telephone.factory.js +9 -3
- package/dist/module/communication/factories/telephone.factory.js.map +1 -1
- package/dist/module/communication/strategies/telephone/tubelight-voice.strategy.d.ts +15 -0
- package/dist/module/communication/strategies/telephone/tubelight-voice.strategy.js +104 -0
- package/dist/module/communication/strategies/telephone/tubelight-voice.strategy.js.map +1 -0
- package/dist/module/meta/controller/entity.controller.js +11 -6
- package/dist/module/meta/controller/entity.controller.js.map +1 -1
- package/dist/module/user/service/user.service.d.ts +2 -1
- package/dist/module/user/service/user.service.js +2 -0
- package/dist/module/user/service/user.service.js.map +1 -1
- package/dist/module/workflow/entity/action-data.entity.d.ts +1 -0
- package/dist/module/workflow/entity/action-data.entity.js +4 -0
- package/dist/module/workflow/entity/action-data.entity.js.map +1 -1
- package/dist/module/workflow/entity/action.entity.d.ts +1 -0
- package/dist/module/workflow/entity/action.entity.js +4 -0
- package/dist/module/workflow/entity/action.entity.js.map +1 -1
- package/dist/module/workflow-automation/service/workflow-automation-engine.service.d.ts +1 -1
- package/dist/module/workflow-automation/service/workflow-automation-engine.service.js +13 -5
- package/dist/module/workflow-automation/service/workflow-automation-engine.service.js.map +1 -1
- package/dist/module/workflow-automation/service/workflow-automation.service.d.ts +34 -2
- package/dist/module/workflow-automation/service/workflow-automation.service.js +136 -15
- package/dist/module/workflow-automation/service/workflow-automation.service.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/module/communication/communication.module.ts +2 -0
- package/src/module/communication/factories/telephone.factory.ts +6 -1
- package/src/module/communication/strategies/telephone/tubelight-voice.strategy.ts +122 -0
- package/src/module/meta/controller/entity.controller.ts +51 -42
- package/src/module/user/service/user.service.ts +2 -1
- package/src/module/workflow/entity/action-data.entity.ts +3 -0
- package/src/module/workflow/entity/action.entity.ts +3 -0
- package/src/module/workflow-automation/service/workflow-automation-engine.service.ts +53 -26
- package/src/module/workflow-automation/service/workflow-automation.service.ts +223 -25
|
@@ -11,6 +11,7 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
11
11
|
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
12
|
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
13
|
};
|
|
14
|
+
var WorkflowAutomationService_1;
|
|
14
15
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
16
|
exports.WorkflowAutomationService = void 0;
|
|
16
17
|
const common_1 = require("@nestjs/common");
|
|
@@ -20,12 +21,15 @@ const workflow_automation_entity_1 = require("../entity/workflow-automation.enti
|
|
|
20
21
|
const workflow_automation_action_entity_1 = require("../entity/workflow-automation-action.entity");
|
|
21
22
|
const entity_service_impl_service_1 = require("../../meta/service/entity-service-impl.service");
|
|
22
23
|
const saved_filter_service_1 = require("../../filter/service/saved-filter.service");
|
|
23
|
-
|
|
24
|
-
|
|
24
|
+
const global_constant_1 = require("../../../constant/global.constant");
|
|
25
|
+
let WorkflowAutomationService = WorkflowAutomationService_1 = class WorkflowAutomationService extends entity_service_impl_service_1.EntityServiceImpl {
|
|
26
|
+
constructor(wfRepo, actionRepo, savedFilterService, dataSource) {
|
|
25
27
|
super();
|
|
26
28
|
this.wfRepo = wfRepo;
|
|
27
29
|
this.actionRepo = actionRepo;
|
|
28
30
|
this.savedFilterService = savedFilterService;
|
|
31
|
+
this.dataSource = dataSource;
|
|
32
|
+
this.logger = new common_1.Logger(WorkflowAutomationService_1.name);
|
|
29
33
|
}
|
|
30
34
|
async createRule(data) {
|
|
31
35
|
const rule = this.wfRepo.create(data);
|
|
@@ -55,54 +59,171 @@ let WorkflowAutomationService = class WorkflowAutomationService extends entity_s
|
|
|
55
59
|
});
|
|
56
60
|
}
|
|
57
61
|
async updateEntity(entityData, loggedInUser) {
|
|
62
|
+
this.logger.debug(`Updating WorkflowAutomation with data: ${JSON.stringify(entityData)}`);
|
|
58
63
|
const { event, criteria, action, ...workflowData } = entityData;
|
|
64
|
+
this.logger.log(`Updating core workflow fields for workflow...`);
|
|
59
65
|
let workflow = await super.updateEntity(workflowData, loggedInUser);
|
|
66
|
+
this.logger.debug(`Workflow updated (id=${workflow.id})`);
|
|
60
67
|
if (event?.eventFilterJson || event?.triggerType || event?.event) {
|
|
68
|
+
this.logger.log(`Processing EVENT filter for workflow ${workflow.id}`);
|
|
61
69
|
const eventFilterMaster = {
|
|
62
70
|
entity_type: 'SFM',
|
|
63
71
|
name: `Event_Filter_${workflow.id}`,
|
|
64
72
|
filterDetails: event?.eventFilterJson ?? [],
|
|
65
73
|
filter_scope: 'RULE',
|
|
74
|
+
organization_id: loggedInUser.organization_id,
|
|
75
|
+
enterprise_id: loggedInUser.enterprise_id,
|
|
66
76
|
};
|
|
67
|
-
|
|
77
|
+
if (workflow.condition_filter_code) {
|
|
78
|
+
this.logger.debug(`Existing event filter found: ${workflow.condition_filter_code}`);
|
|
79
|
+
const existing = await this.savedFilterService.getEntityDataByCode(global_constant_1.ENTITYTYPE_SAVEDFILTERMASTER, workflow.condition_filter_code, loggedInUser);
|
|
80
|
+
if (existing) {
|
|
81
|
+
eventFilterMaster['id'] = existing.id;
|
|
82
|
+
const updatedEvent = await this.savedFilterService.updateEntity(eventFilterMaster, loggedInUser);
|
|
83
|
+
workflow.condition_filter_code = updatedEvent.code;
|
|
84
|
+
this.logger.log(`Updated existing event filter: ${updatedEvent.code}`);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
const savedEvent = await this.savedFilterService.createEntity(eventFilterMaster, loggedInUser);
|
|
89
|
+
workflow.condition_filter_code = savedEvent.code;
|
|
90
|
+
this.logger.log(`Created new event filter: ${savedEvent.code}`);
|
|
91
|
+
}
|
|
68
92
|
workflow.trigger_type = event?.triggerType ?? null;
|
|
69
93
|
workflow.trigger_event = event?.event ?? null;
|
|
70
|
-
workflow.condition_filter_code = savedEvent.code;
|
|
71
94
|
}
|
|
72
95
|
if (criteria?.criteriaFilterJson?.length) {
|
|
96
|
+
this.logger.log(`Processing CRITERIA filter for workflow ${workflow.id}`);
|
|
73
97
|
const criteriaFilterMaster = {
|
|
74
98
|
entity_type: 'SFM',
|
|
75
99
|
name: `Criteria_Filter_${workflow.id}`,
|
|
76
100
|
filterDetails: criteria?.criteriaFilterJson ?? [],
|
|
77
101
|
filter_scope: 'RULE',
|
|
102
|
+
organization_id: loggedInUser.organization_id,
|
|
103
|
+
enterprise_id: loggedInUser.enterprise_id,
|
|
78
104
|
};
|
|
79
|
-
|
|
80
|
-
|
|
105
|
+
if (workflow.criteria_filter_code) {
|
|
106
|
+
this.logger.debug(`Existing criteria filter found: ${workflow.criteria_filter_code}`);
|
|
107
|
+
const existing = await this.savedFilterService.getEntityDataByCode(global_constant_1.ENTITYTYPE_SAVEDFILTERMASTER, workflow.criteria_filter_code, loggedInUser);
|
|
108
|
+
if (existing) {
|
|
109
|
+
criteriaFilterMaster['id'] = existing.id;
|
|
110
|
+
const updatedCriteria = await this.savedFilterService.updateEntity(criteriaFilterMaster, loggedInUser);
|
|
111
|
+
workflow.criteria_filter_code = updatedCriteria.code;
|
|
112
|
+
this.logger.log(`Updated existing criteria filter: ${updatedCriteria.code}`);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
const savedCriteria = await this.savedFilterService.createEntity(criteriaFilterMaster, loggedInUser);
|
|
117
|
+
workflow.criteria_filter_code = savedCriteria.code;
|
|
118
|
+
this.logger.log(`Created new criteria filter: ${savedCriteria.code}`);
|
|
119
|
+
}
|
|
81
120
|
}
|
|
82
121
|
if (Array.isArray(action) && action.length) {
|
|
122
|
+
this.logger.log(`Processing ${action.length} actions for workflow ${workflow.id}`);
|
|
123
|
+
const existingActions = await this.dataSource
|
|
124
|
+
.getRepository(workflow_automation_action_entity_1.WorkflowAutomationActionEntity)
|
|
125
|
+
.find({
|
|
126
|
+
where: { workflow_automation_id: workflow.id },
|
|
127
|
+
});
|
|
128
|
+
const existingMap = new Map(existingActions.map((a) => [a.entity_method, a]));
|
|
83
129
|
for (const a of action) {
|
|
84
|
-
if (!a?.actionCategory)
|
|
130
|
+
if (!a?.actionCategory) {
|
|
131
|
+
this.logger.warn(`Skipping action without category: ${JSON.stringify(a)}`);
|
|
85
132
|
continue;
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
133
|
+
}
|
|
134
|
+
const existing = existingMap.get(a.actionCategory);
|
|
135
|
+
if (existing) {
|
|
136
|
+
existing.payload = a.actionPayload ?? {};
|
|
137
|
+
await this.dataSource
|
|
138
|
+
.getRepository(workflow_automation_action_entity_1.WorkflowAutomationActionEntity)
|
|
139
|
+
.save(existing);
|
|
140
|
+
this.logger.log(`Updated action: ${a.actionCategory}`);
|
|
141
|
+
}
|
|
142
|
+
else {
|
|
143
|
+
const actionEntity = new workflow_automation_action_entity_1.WorkflowAutomationActionEntity();
|
|
144
|
+
actionEntity.entity_type = 'WFAA';
|
|
145
|
+
actionEntity.workflow_automation_id = workflow.id;
|
|
146
|
+
actionEntity.entity_method = a.actionCategory;
|
|
147
|
+
actionEntity.payload = a.actionPayload ?? {};
|
|
148
|
+
await this.dataSource
|
|
149
|
+
.getRepository(workflow_automation_action_entity_1.WorkflowAutomationActionEntity)
|
|
150
|
+
.save(actionEntity);
|
|
151
|
+
this.logger.log(`Created new action: ${a.actionCategory}`);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
const incomingCategories = action.map((a) => a.actionCategory);
|
|
155
|
+
const toDelete = existingActions.filter((a) => !incomingCategories.includes(a.entity_method));
|
|
156
|
+
if (toDelete.length) {
|
|
157
|
+
await this.dataSource
|
|
158
|
+
.getRepository(workflow_automation_action_entity_1.WorkflowAutomationActionEntity)
|
|
159
|
+
.remove(toDelete);
|
|
160
|
+
this.logger.log(`Deleted ${toDelete.length} actions not present in request.`);
|
|
92
161
|
}
|
|
93
162
|
}
|
|
94
163
|
workflow = await super.updateEntity(workflow, loggedInUser);
|
|
164
|
+
this.logger.debug(`Final workflow updated (id=${workflow.id})`);
|
|
95
165
|
return workflow;
|
|
96
166
|
}
|
|
167
|
+
async getEntityData(entity_type, id, loggedInUser) {
|
|
168
|
+
this.logger.log(`Fetching WorkflowAutomation by id=${id}`);
|
|
169
|
+
const workflowAutomation = await this.dataSource
|
|
170
|
+
.getRepository(workflow_automation_entity_1.WorkflowAutomation)
|
|
171
|
+
.findOne({
|
|
172
|
+
where: { id },
|
|
173
|
+
});
|
|
174
|
+
if (!workflowAutomation) {
|
|
175
|
+
throw new common_1.NotFoundException(`WorkflowAutomation not found with id=${id}`);
|
|
176
|
+
}
|
|
177
|
+
let event = null;
|
|
178
|
+
if (workflowAutomation.condition_filter_code) {
|
|
179
|
+
const eventFilterMaster = await this.savedFilterService.getEntityDataByCode(global_constant_1.ENTITYTYPE_SAVEDFILTERMASTER, workflowAutomation.condition_filter_code, loggedInUser);
|
|
180
|
+
if (eventFilterMaster) {
|
|
181
|
+
const eventFilterDetails = await this.savedFilterService.getDetailsByCode(eventFilterMaster.code);
|
|
182
|
+
event = {
|
|
183
|
+
eventFilterJson: eventFilterDetails ?? [],
|
|
184
|
+
triggerType: workflowAutomation.trigger_type,
|
|
185
|
+
event: workflowAutomation.trigger_event,
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
let criteria = null;
|
|
190
|
+
if (workflowAutomation.criteria_filter_code) {
|
|
191
|
+
const criteriaFilterMaster = await this.savedFilterService.getEntityDataByCode(global_constant_1.ENTITYTYPE_SAVEDFILTERMASTER, workflowAutomation.criteria_filter_code, loggedInUser);
|
|
192
|
+
if (criteriaFilterMaster) {
|
|
193
|
+
const criteriaFilterDetails = await this.savedFilterService.getDetailsByCode(criteriaFilterMaster.code);
|
|
194
|
+
criteria = {
|
|
195
|
+
criteriaFilterJson: criteriaFilterDetails ?? [],
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
const actions = await this.dataSource
|
|
200
|
+
.getRepository(workflow_automation_action_entity_1.WorkflowAutomationActionEntity)
|
|
201
|
+
.find({
|
|
202
|
+
where: { workflow_automation_id: workflowAutomation.id },
|
|
203
|
+
});
|
|
204
|
+
const action = actions.map((a) => ({
|
|
205
|
+
actionCategory: a.entity_method,
|
|
206
|
+
actionPayload: a.payload,
|
|
207
|
+
}));
|
|
208
|
+
const response = {
|
|
209
|
+
...workflowAutomation,
|
|
210
|
+
event,
|
|
211
|
+
criteria,
|
|
212
|
+
action,
|
|
213
|
+
};
|
|
214
|
+
this.logger.debug(`Fetched WorkflowAutomation (id=${id}) with relations`);
|
|
215
|
+
return response;
|
|
216
|
+
}
|
|
97
217
|
};
|
|
98
218
|
exports.WorkflowAutomationService = WorkflowAutomationService;
|
|
99
|
-
exports.WorkflowAutomationService = WorkflowAutomationService = __decorate([
|
|
219
|
+
exports.WorkflowAutomationService = WorkflowAutomationService = WorkflowAutomationService_1 = __decorate([
|
|
100
220
|
(0, common_1.Injectable)(),
|
|
101
221
|
__param(0, (0, typeorm_1.InjectRepository)(workflow_automation_entity_1.WorkflowAutomation)),
|
|
102
222
|
__param(1, (0, typeorm_1.InjectRepository)(workflow_automation_action_entity_1.WorkflowAutomationActionEntity)),
|
|
103
223
|
__param(2, (0, common_1.Inject)('SavedFilterService')),
|
|
104
224
|
__metadata("design:paramtypes", [typeorm_2.Repository,
|
|
105
225
|
typeorm_2.Repository,
|
|
106
|
-
saved_filter_service_1.SavedFilterService
|
|
226
|
+
saved_filter_service_1.SavedFilterService,
|
|
227
|
+
typeorm_2.DataSource])
|
|
107
228
|
], WorkflowAutomationService);
|
|
108
229
|
//# sourceMappingURL=workflow-automation.service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-automation.service.js","sourceRoot":"","sources":["../../../../src/module/workflow-automation/service/workflow-automation.service.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"workflow-automation.service.js","sourceRoot":"","sources":["../../../../src/module/workflow-automation/service/workflow-automation.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAA+E;AAC/E,6CAAmD;AACnD,qCAAiD;AACjD,qFAA0E;AAC1E,mGAA6F;AAC7F,gGAAwF;AAExF,oFAAoF;AACpF,uEAA4E;AAGrE,IAAM,yBAAyB,iCAA/B,MAAM,yBAA0B,SAAQ,+CAAiB;IAE9D,YAEE,MAAuD,EAEvD,UAAuE,EAEvE,kBAAuD,EACtC,UAAsB;QAEvC,KAAK,EAAE,CAAC;QAPS,WAAM,GAAN,MAAM,CAAgC;QAEtC,eAAU,GAAV,UAAU,CAA4C;QAEtD,uBAAkB,GAAlB,kBAAkB,CAAoB;QACtC,eAAU,GAAV,UAAU,CAAY;QARxB,WAAM,GAAG,IAAI,eAAM,CAAC,2BAAyB,CAAC,IAAI,CAAC,CAAC;IAWrE,CAAC;IAED,KAAK,CAAC,UAAU,CACd,IAAiC;QAEjC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACtC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,UAAU,CACd,EAAU,EACV,IAAiC;QAEjC,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QACnC,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,EAAU;QACzB,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,EAAU;QACtB,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,cAAc,CAClB,UAAkB,EAClB,KAAa;QAEb,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;YACtB,KAAK,EAAE;gBACL,kBAAkB,EAAE,UAAU;gBAC9B,aAAa,EAAE,KAAK;aACrB;SACF,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,iBAAiB,CACrB,sBAA8B;QAE9B,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YAC1B,KAAK,EAAE,EAAE,sBAAsB,EAAE;SAClC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,UAAe,EAAE,YAAsB;QACxD,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,0CAA0C,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CACvE,CAAC;QAEF,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,YAAY,EAAE,GAAG,UAAU,CAAC;QAGhE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;QACjE,IAAI,QAAQ,GAAG,MAAM,KAAK,CAAC,YAAY,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;QACpE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,wBAAwB,QAAQ,CAAC,EAAE,GAAG,CAAC,CAAC;QAG1D,IAAI,KAAK,EAAE,eAAe,IAAI,KAAK,EAAE,WAAW,IAAI,KAAK,EAAE,KAAK,EAAE,CAAC;YACjE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,wCAAwC,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;YAEvE,MAAM,iBAAiB,GAAG;gBACxB,WAAW,EAAE,KAAK;gBAClB,IAAI,EAAE,gBAAgB,QAAQ,CAAC,EAAE,EAAE;gBACnC,aAAa,EAAE,KAAK,EAAE,eAAe,IAAI,EAAE;gBAC3C,YAAY,EAAE,MAAM;gBACpB,eAAe,EAAE,YAAY,CAAC,eAAe;gBAC7C,aAAa,EAAE,YAAY,CAAC,aAAa;aAC1C,CAAC;YAEF,IAAI,QAAQ,CAAC,qBAAqB,EAAE,CAAC;gBACnC,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,gCAAgC,QAAQ,CAAC,qBAAqB,EAAE,CACjE,CAAC;gBACF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,mBAAmB,CAChE,8CAA4B,EAC5B,QAAQ,CAAC,qBAAqB,EAC9B,YAAY,CACb,CAAC;gBAEF,IAAI,QAAQ,EAAE,CAAC;oBACb,iBAAiB,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC;oBACtC,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAC7D,iBAAwB,EACxB,YAAY,CACb,CAAC;oBACF,QAAQ,CAAC,qBAAqB,GAAG,YAAY,CAAC,IAAI,CAAC;oBACnD,IAAI,CAAC,MAAM,CAAC,GAAG,CACb,kCAAkC,YAAY,CAAC,IAAI,EAAE,CACtD,CAAC;gBACJ,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAC3D,iBAAiB,EACjB,YAAY,CACb,CAAC;gBACF,QAAQ,CAAC,qBAAqB,GAAG,UAAU,CAAC,IAAI,CAAC;gBACjD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,6BAA6B,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;YAClE,CAAC;YAED,QAAQ,CAAC,YAAY,GAAG,KAAK,EAAE,WAAW,IAAI,IAAI,CAAC;YACnD,QAAQ,CAAC,aAAa,GAAG,KAAK,EAAE,KAAK,IAAI,IAAI,CAAC;QAChD,CAAC;QAGD,IAAI,QAAQ,EAAE,kBAAkB,EAAE,MAAM,EAAE,CAAC;YACzC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,2CAA2C,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;YAE1E,MAAM,oBAAoB,GAAG;gBAC3B,WAAW,EAAE,KAAK;gBAClB,IAAI,EAAE,mBAAmB,QAAQ,CAAC,EAAE,EAAE;gBACtC,aAAa,EAAE,QAAQ,EAAE,kBAAkB,IAAI,EAAE;gBACjD,YAAY,EAAE,MAAM;gBACpB,eAAe,EAAE,YAAY,CAAC,eAAe;gBAC7C,aAAa,EAAE,YAAY,CAAC,aAAa;aAC1C,CAAC;YAEF,IAAI,QAAQ,CAAC,oBAAoB,EAAE,CAAC;gBAClC,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,mCAAmC,QAAQ,CAAC,oBAAoB,EAAE,CACnE,CAAC;gBACF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,mBAAmB,CAChE,8CAA4B,EAC5B,QAAQ,CAAC,oBAAoB,EAC7B,YAAY,CACb,CAAC;gBAEF,IAAI,QAAQ,EAAE,CAAC;oBACb,oBAAoB,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC;oBACzC,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAChE,oBAA2B,EAC3B,YAAY,CACb,CAAC;oBACF,QAAQ,CAAC,oBAAoB,GAAG,eAAe,CAAC,IAAI,CAAC;oBACrD,IAAI,CAAC,MAAM,CAAC,GAAG,CACb,qCAAqC,eAAe,CAAC,IAAI,EAAE,CAC5D,CAAC;gBACJ,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAC9D,oBAAoB,EACpB,YAAY,CACb,CAAC;gBACF,QAAQ,CAAC,oBAAoB,GAAG,aAAa,CAAC,IAAI,CAAC;gBACnD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,gCAAgC,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC;YACxE,CAAC;QACH,CAAC;QAGD,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAC3C,IAAI,CAAC,MAAM,CAAC,GAAG,CACb,cAAc,MAAM,CAAC,MAAM,yBAAyB,QAAQ,CAAC,EAAE,EAAE,CAClE,CAAC;YAEF,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,UAAU;iBAC1C,aAAa,CAAC,kEAA8B,CAAC;iBAC7C,IAAI,CAAC;gBACJ,KAAK,EAAE,EAAE,sBAAsB,EAAE,QAAQ,CAAC,EAAE,EAAE;aAC/C,CAAC,CAAC;YAEL,MAAM,WAAW,GAAG,IAAI,GAAG,CACzB,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,CACjD,CAAC;YAGF,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;gBACvB,IAAI,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC;oBACvB,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,qCAAqC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CACzD,CAAC;oBACF,SAAS;gBACX,CAAC;gBAED,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;gBAEnD,IAAI,QAAQ,EAAE,CAAC;oBAEb,QAAQ,CAAC,OAAO,GAAG,CAAC,CAAC,aAAa,IAAI,EAAE,CAAC;oBACzC,MAAM,IAAI,CAAC,UAAU;yBAClB,aAAa,CAAC,kEAA8B,CAAC;yBAC7C,IAAI,CAAC,QAAQ,CAAC,CAAC;oBAClB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC;gBACzD,CAAC;qBAAM,CAAC;oBAEN,MAAM,YAAY,GAAG,IAAI,kEAA8B,EAAE,CAAC;oBAC1D,YAAY,CAAC,WAAW,GAAG,MAAM,CAAC;oBAClC,YAAY,CAAC,sBAAsB,GAAG,QAAQ,CAAC,EAAE,CAAC;oBAClD,YAAY,CAAC,aAAa,GAAG,CAAC,CAAC,cAAc,CAAC;oBAC9C,YAAY,CAAC,OAAO,GAAG,CAAC,CAAC,aAAa,IAAI,EAAE,CAAC;oBAE7C,MAAM,IAAI,CAAC,UAAU;yBAClB,aAAa,CAAC,kEAA8B,CAAC;yBAC7C,IAAI,CAAC,YAAY,CAAC,CAAC;oBACtB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC;gBAC7D,CAAC;YACH,CAAC;YACD,MAAM,kBAAkB,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;YAC/D,MAAM,QAAQ,GAAG,eAAe,CAAC,MAAM,CACrC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CACrD,CAAC;YAEF,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;gBACpB,MAAM,IAAI,CAAC,UAAU;qBAClB,aAAa,CAAC,kEAA8B,CAAC;qBAC7C,MAAM,CAAC,QAAQ,CAAC,CAAC;gBACpB,IAAI,CAAC,MAAM,CAAC,GAAG,CACb,WAAW,QAAQ,CAAC,MAAM,kCAAkC,CAC7D,CAAC;YACJ,CAAC;QACH,CAAC;QAGD,QAAQ,GAAG,MAAM,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QAC5D,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,8BAA8B,QAAQ,CAAC,EAAE,GAAG,CAAC,CAAC;QAEhE,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,WAAmB,EAAE,EAAU,EAAE,YAAsB;QACzE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,qCAAqC,EAAE,EAAE,CAAC,CAAC;QAG3D,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,UAAU;aAC7C,aAAa,CAAC,+CAAkB,CAAC;aACjC,OAAO,CAAC;YACP,KAAK,EAAE,EAAE,EAAE,EAAE;SACd,CAAC,CAAC;QAEL,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACxB,MAAM,IAAI,0BAAiB,CAAC,wCAAwC,EAAE,EAAE,CAAC,CAAC;QAC5E,CAAC;QAGD,IAAI,KAAK,GAAQ,IAAI,CAAC;QACtB,IAAI,kBAAkB,CAAC,qBAAqB,EAAE,CAAC;YAC7C,MAAM,iBAAiB,GACrB,MAAM,IAAI,CAAC,kBAAkB,CAAC,mBAAmB,CAC/C,8CAA4B,EAC5B,kBAAkB,CAAC,qBAAqB,EACxC,YAAY,CACb,CAAC;YAEJ,IAAI,iBAAiB,EAAE,CAAC;gBAEtB,MAAM,kBAAkB,GACtB,MAAM,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAC5C,iBAAiB,CAAC,IAAI,CACvB,CAAC;gBAEJ,KAAK,GAAG;oBACN,eAAe,EAAE,kBAAkB,IAAI,EAAE;oBACzC,WAAW,EAAE,kBAAkB,CAAC,YAAY;oBAC5C,KAAK,EAAE,kBAAkB,CAAC,aAAa;iBACxC,CAAC;YACJ,CAAC;QACH,CAAC;QAGD,IAAI,QAAQ,GAAQ,IAAI,CAAC;QACzB,IAAI,kBAAkB,CAAC,oBAAoB,EAAE,CAAC;YAC5C,MAAM,oBAAoB,GACxB,MAAM,IAAI,CAAC,kBAAkB,CAAC,mBAAmB,CAC/C,8CAA4B,EAC5B,kBAAkB,CAAC,oBAAoB,EACvC,YAAY,CACb,CAAC;YAEJ,IAAI,oBAAoB,EAAE,CAAC;gBAEzB,MAAM,qBAAqB,GACzB,MAAM,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAC5C,oBAAoB,CAAC,IAAI,CAC1B,CAAC;gBAEJ,QAAQ,GAAG;oBACT,kBAAkB,EAAE,qBAAqB,IAAI,EAAE;iBAChD,CAAC;YACJ,CAAC;QACH,CAAC;QAGD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU;aAClC,aAAa,CAAC,kEAA8B,CAAC;aAC7C,IAAI,CAAC;YACJ,KAAK,EAAE,EAAE,sBAAsB,EAAE,kBAAkB,CAAC,EAAE,EAAE;SACzD,CAAC,CAAC;QAEL,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACjC,cAAc,EAAE,CAAC,CAAC,aAAa;YAC/B,aAAa,EAAE,CAAC,CAAC,OAAO;SACzB,CAAC,CAAC,CAAC;QAGJ,MAAM,QAAQ,GAAG;YACf,GAAG,kBAAkB;YACrB,KAAK;YACL,QAAQ;YACR,MAAM;SACP,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kCAAkC,EAAE,kBAAkB,CAAC,CAAC;QAC1E,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF,CAAA;AA3TY,8DAAyB;oCAAzB,yBAAyB;IADrC,IAAA,mBAAU,GAAE;IAIR,WAAA,IAAA,0BAAgB,EAAC,+CAAkB,CAAC,CAAA;IAEpC,WAAA,IAAA,0BAAgB,EAAC,kEAA8B,CAAC,CAAA;IAEhD,WAAA,IAAA,eAAM,EAAC,oBAAoB,CAAC,CAAA;qCAHJ,oBAAU;QAEN,oBAAU;QAEF,yCAAkB;QAC1B,oBAAU;GAT9B,yBAAyB,CA2TrC"}
|