@cargolift-cdi/util-rabbitmq 0.1.25 → 0.1.27
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,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import * as amqp from 'amqplib';
|
|
2
2
|
import { LoggerContextService } from '@cargolift-cdi/common';
|
|
3
3
|
export declare class RabbitMQPublisherService {
|
|
4
4
|
private readonly logger;
|
|
@@ -7,14 +7,58 @@ export declare class RabbitMQPublisherService {
|
|
|
7
7
|
* Emite mensagem diretamente com amqplib para garantir que headers virem nas Properties.
|
|
8
8
|
* - pattern: nome da fila/routingKey (ex: 'notifications')
|
|
9
9
|
* - payload: corpo da mensagem
|
|
10
|
-
* - client: ClientProxy (mantido para compatibilidade, mas não usado para publicar)
|
|
11
10
|
* - opts: opções opcionais: { exchange, exchangeType, routingKey, headers }
|
|
12
11
|
*/
|
|
13
|
-
emit(pattern: string, payload: any,
|
|
12
|
+
emit(pattern: string, payload: any, opts?: {
|
|
14
13
|
exchange?: string;
|
|
15
14
|
exchangeType?: string;
|
|
16
15
|
routingKey?: string;
|
|
17
16
|
headers?: Record<string, any>;
|
|
18
17
|
}): Promise<void>;
|
|
18
|
+
/**
|
|
19
|
+
* Publica usando diretamente `channel.publish` do amqplib.
|
|
20
|
+
* Diferente de `emit`, este método SEMPRE exige um exchange explícito e nunca faz fallback para `sendToQueue`.
|
|
21
|
+
* Pode ser útil quando se quer garantir o fluxo via exchange ou quando o pattern difere de routingKey.
|
|
22
|
+
*
|
|
23
|
+
* @param exchange Exchange onde publicar
|
|
24
|
+
* @param routingKey Routing key (binding) usada na publicação
|
|
25
|
+
* @param payload Corpo da mensagem (objeto será serializado em JSON)
|
|
26
|
+
* @param opts Opções adicionais
|
|
27
|
+
* - exchangeType (default: direct)
|
|
28
|
+
* - headers (headers adicionais)
|
|
29
|
+
* - pattern (default: routingKey) inserido no body { pattern, data }
|
|
30
|
+
* - persistent (default: true)
|
|
31
|
+
*/
|
|
32
|
+
publish2(exchange: string, routingKey: string, payload: any, opts?: {
|
|
33
|
+
exchangeType?: string;
|
|
34
|
+
headers?: Record<string, any>;
|
|
35
|
+
pattern?: string;
|
|
36
|
+
persistent?: boolean;
|
|
37
|
+
}): Promise<void>;
|
|
38
|
+
/**
|
|
39
|
+
* Publica mensagem em exchange usando ConfirmChannel para garantir confirmação (publisher confirms).
|
|
40
|
+
* Boas práticas amqplib aplicadas:
|
|
41
|
+
* - Uso de createConfirmChannel para confirmação de publicação (ack/nack)
|
|
42
|
+
* - Tratamento de backpressure via retorno boolean do publish e evento 'drain'
|
|
43
|
+
* - Timeout configurável para confirmação
|
|
44
|
+
* - Opções de publicação (contentType, contentEncoding, expiration, priority, etc.) expostas
|
|
45
|
+
* - Possibilidade de customizar opções de assertExchange
|
|
46
|
+
* - Preserva contexto (correlation id, trace) e adiciona pattern no header e body
|
|
47
|
+
*
|
|
48
|
+
* @param exchange Exchange alvo
|
|
49
|
+
* @param routingKey Routing key
|
|
50
|
+
* @param payload Payload (serializado em JSON por padrão)
|
|
51
|
+
* @param opts Opções avançadas
|
|
52
|
+
*/
|
|
53
|
+
publish(exchange: string, routingKey: string, payload: any, opts?: {
|
|
54
|
+
exchangeType?: string;
|
|
55
|
+
assertExchangeOptions?: amqp.Options.AssertExchange;
|
|
56
|
+
publishOptions?: amqp.Options.Publish;
|
|
57
|
+
headers?: Record<string, any>;
|
|
58
|
+
pattern?: string;
|
|
59
|
+
persistent?: boolean;
|
|
60
|
+
timeoutMs?: number;
|
|
61
|
+
serialize?: (data: any) => Buffer;
|
|
62
|
+
}): Promise<void>;
|
|
19
63
|
}
|
|
20
64
|
//# sourceMappingURL=rabbitmq-publisher.service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rabbitmq-publisher.service.d.ts","sourceRoot":"","sources":["../src/rabbitmq-publisher.service.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"rabbitmq-publisher.service.d.ts","sourceRoot":"","sources":["../src/rabbitmq-publisher.service.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,IAAI,MAAM,SAAS,CAAC;AAEhC,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAI7D,qBACa,wBAAwB;IAEO,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,oBAAoB;IAEvF;;;;;OAKG;IAEG,IAAI,CACR,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,GAAG,EACZ,IAAI,CAAC,EAAE;QACL,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;KAC/B,GACA,OAAO,CAAC,IAAI,CAAC;IAqHhB;;;;;;;;;;;;;OAaG;IACG,QAAQ,CACZ,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,GAAG,EACZ,IAAI,CAAC,EAAE;QACL,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,UAAU,CAAC,EAAE,OAAO,CAAC;KACtB,GACA,OAAO,CAAC,IAAI,CAAC;IA+DhB;;;;;;;;;;;;;;OAcG;IACG,OAAO,CACX,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,GAAG,EACZ,IAAI,CAAC,EAAE;QACL,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,qBAAqB,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC;QACpD,cAAc,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;QACtC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,MAAM,CAAC;KACnC,GACA,OAAO,CAAC,IAAI,CAAC;CAgGjB"}
|
|
@@ -22,10 +22,9 @@ let RabbitMQPublisherService = class RabbitMQPublisherService {
|
|
|
22
22
|
* Emite mensagem diretamente com amqplib para garantir que headers virem nas Properties.
|
|
23
23
|
* - pattern: nome da fila/routingKey (ex: 'notifications')
|
|
24
24
|
* - payload: corpo da mensagem
|
|
25
|
-
* - client: ClientProxy (mantido para compatibilidade, mas não usado para publicar)
|
|
26
25
|
* - opts: opções opcionais: { exchange, exchangeType, routingKey, headers }
|
|
27
26
|
*/
|
|
28
|
-
async emit(pattern, payload,
|
|
27
|
+
async emit(pattern, payload, opts) {
|
|
29
28
|
const ctx = this.logger.getContext();
|
|
30
29
|
const headers = { ...(opts?.headers || {}) };
|
|
31
30
|
if (ctx?.correlation_id)
|
|
@@ -136,6 +135,207 @@ let RabbitMQPublisherService = class RabbitMQPublisherService {
|
|
|
136
135
|
}
|
|
137
136
|
}
|
|
138
137
|
}
|
|
138
|
+
/**
|
|
139
|
+
* Publica usando diretamente `channel.publish` do amqplib.
|
|
140
|
+
* Diferente de `emit`, este método SEMPRE exige um exchange explícito e nunca faz fallback para `sendToQueue`.
|
|
141
|
+
* Pode ser útil quando se quer garantir o fluxo via exchange ou quando o pattern difere de routingKey.
|
|
142
|
+
*
|
|
143
|
+
* @param exchange Exchange onde publicar
|
|
144
|
+
* @param routingKey Routing key (binding) usada na publicação
|
|
145
|
+
* @param payload Corpo da mensagem (objeto será serializado em JSON)
|
|
146
|
+
* @param opts Opções adicionais
|
|
147
|
+
* - exchangeType (default: direct)
|
|
148
|
+
* - headers (headers adicionais)
|
|
149
|
+
* - pattern (default: routingKey) inserido no body { pattern, data }
|
|
150
|
+
* - persistent (default: true)
|
|
151
|
+
*/
|
|
152
|
+
async publish2(exchange, routingKey, payload, opts) {
|
|
153
|
+
if (!exchange)
|
|
154
|
+
throw new Error('Exchange é obrigatório');
|
|
155
|
+
const ctx = this.logger.getContext();
|
|
156
|
+
const headers = { ...(opts?.headers || {}) };
|
|
157
|
+
if (ctx?.correlation_id)
|
|
158
|
+
headers['x-correlation-id'] = ctx.correlation_id;
|
|
159
|
+
if (ctx?.trace)
|
|
160
|
+
headers['x-trace'] = ctx.trace;
|
|
161
|
+
const pattern = opts?.pattern || routingKey;
|
|
162
|
+
headers['pattern'] = pattern;
|
|
163
|
+
const messageBody = { pattern, data: payload };
|
|
164
|
+
const url = process.env.RABBITMQ_URL;
|
|
165
|
+
if (!url)
|
|
166
|
+
throw new Error('RABBITMQ_URL não definido');
|
|
167
|
+
const connection = await amqp.connect(url);
|
|
168
|
+
connection.on('error', (err) => {
|
|
169
|
+
try {
|
|
170
|
+
this.logger?.error('AMQP connection error', err, {
|
|
171
|
+
application: { name: 'util-rabbitmq', function: 'RabbitMQPublisherService', action: 'publish' },
|
|
172
|
+
data: { rabbitmq: { url, exchange, routingKey } },
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
catch { }
|
|
176
|
+
});
|
|
177
|
+
connection.on('close', () => { });
|
|
178
|
+
let channel = null;
|
|
179
|
+
try {
|
|
180
|
+
channel = await connection.createChannel();
|
|
181
|
+
channel.on('error', () => { });
|
|
182
|
+
channel.on('close', () => { });
|
|
183
|
+
const exchangeType = opts?.exchangeType || process.env.RABBITMQ_EXCHANGE_TYPE || 'direct';
|
|
184
|
+
await channel.assertExchange(exchange, exchangeType, { durable: true });
|
|
185
|
+
const content = Buffer.from(JSON.stringify(messageBody));
|
|
186
|
+
const published = channel.publish(exchange, routingKey, content, {
|
|
187
|
+
persistent: opts?.persistent !== false,
|
|
188
|
+
headers,
|
|
189
|
+
});
|
|
190
|
+
if (!published) {
|
|
191
|
+
await new Promise((res) => channel.once('drain', () => res()));
|
|
192
|
+
}
|
|
193
|
+
this.logger.info(`Mensagem publicada (publish) no exchange "${exchange}" routingKey "${routingKey}"`, {
|
|
194
|
+
application: { name: 'util-rabbitmq', function: 'RabbitMQPublisherService', action: 'publish' },
|
|
195
|
+
data: { rabbitmq: { exchange, routingKey, pattern } },
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
catch (err) {
|
|
199
|
+
this.logger.error(`Erro ao publicar (publish) no exchange "${exchange}"`, err, {
|
|
200
|
+
application: { name: 'util-rabbitmq', function: 'RabbitMQPublisherService', action: 'publish' },
|
|
201
|
+
data: { rabbitmq: { exchange, routingKey } },
|
|
202
|
+
});
|
|
203
|
+
throw err;
|
|
204
|
+
}
|
|
205
|
+
finally {
|
|
206
|
+
try {
|
|
207
|
+
if (channel) {
|
|
208
|
+
try {
|
|
209
|
+
await channel.close();
|
|
210
|
+
}
|
|
211
|
+
catch { }
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
catch { }
|
|
215
|
+
try {
|
|
216
|
+
await connection.close();
|
|
217
|
+
}
|
|
218
|
+
catch { }
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Publica mensagem em exchange usando ConfirmChannel para garantir confirmação (publisher confirms).
|
|
223
|
+
* Boas práticas amqplib aplicadas:
|
|
224
|
+
* - Uso de createConfirmChannel para confirmação de publicação (ack/nack)
|
|
225
|
+
* - Tratamento de backpressure via retorno boolean do publish e evento 'drain'
|
|
226
|
+
* - Timeout configurável para confirmação
|
|
227
|
+
* - Opções de publicação (contentType, contentEncoding, expiration, priority, etc.) expostas
|
|
228
|
+
* - Possibilidade de customizar opções de assertExchange
|
|
229
|
+
* - Preserva contexto (correlation id, trace) e adiciona pattern no header e body
|
|
230
|
+
*
|
|
231
|
+
* @param exchange Exchange alvo
|
|
232
|
+
* @param routingKey Routing key
|
|
233
|
+
* @param payload Payload (serializado em JSON por padrão)
|
|
234
|
+
* @param opts Opções avançadas
|
|
235
|
+
*/
|
|
236
|
+
async publish(exchange, routingKey, payload, opts) {
|
|
237
|
+
if (!exchange)
|
|
238
|
+
throw new Error('Exchange é obrigatório');
|
|
239
|
+
const ctx = this.logger.getContext();
|
|
240
|
+
const headers = { ...(opts?.headers || {}) };
|
|
241
|
+
if (ctx?.correlation_id)
|
|
242
|
+
headers['x-correlation-id'] = ctx.correlation_id;
|
|
243
|
+
if (ctx?.trace)
|
|
244
|
+
headers['x-trace'] = ctx.trace;
|
|
245
|
+
const pattern = opts?.pattern || routingKey;
|
|
246
|
+
headers['pattern'] = pattern;
|
|
247
|
+
const messageBody = { pattern, data: payload };
|
|
248
|
+
const serialize = opts?.serialize || ((data) => Buffer.from(JSON.stringify(data)));
|
|
249
|
+
const content = serialize(messageBody);
|
|
250
|
+
const url = process.env.RABBITMQ_URL;
|
|
251
|
+
if (!url)
|
|
252
|
+
throw new Error('RABBITMQ_URL não definido');
|
|
253
|
+
const connection = await amqp.connect(url);
|
|
254
|
+
connection.on('error', (err) => {
|
|
255
|
+
try {
|
|
256
|
+
this.logger?.error('AMQP connection error', err, {
|
|
257
|
+
application: { name: 'util-rabbitmq', function: 'RabbitMQPublisherService', action: 'publishConfirm' },
|
|
258
|
+
data: { rabbitmq: { url, exchange, routingKey } },
|
|
259
|
+
});
|
|
260
|
+
}
|
|
261
|
+
catch { }
|
|
262
|
+
});
|
|
263
|
+
connection.on('close', () => { });
|
|
264
|
+
let channel = null;
|
|
265
|
+
try {
|
|
266
|
+
channel = await connection.createConfirmChannel();
|
|
267
|
+
channel.on('error', (err) => {
|
|
268
|
+
this.logger.error('Erro no ConfirmChannel', err, {
|
|
269
|
+
application: { name: 'util-rabbitmq', function: 'RabbitMQPublisherService', action: 'publishConfirm' },
|
|
270
|
+
data: { rabbitmq: { exchange, routingKey } },
|
|
271
|
+
});
|
|
272
|
+
});
|
|
273
|
+
channel.on('close', () => { });
|
|
274
|
+
const exchangeType = opts?.exchangeType || process.env.RABBITMQ_EXCHANGE_TYPE || 'direct';
|
|
275
|
+
const assertOptions = { durable: true, ...(opts?.assertExchangeOptions || {}) };
|
|
276
|
+
await channel.assertExchange(exchange, exchangeType, assertOptions);
|
|
277
|
+
const publishOptions = {
|
|
278
|
+
persistent: opts?.persistent !== false,
|
|
279
|
+
headers,
|
|
280
|
+
contentType: 'application/json',
|
|
281
|
+
...opts?.publishOptions,
|
|
282
|
+
};
|
|
283
|
+
const timeoutMs = opts?.timeoutMs ?? 5000;
|
|
284
|
+
await new Promise((resolve, reject) => {
|
|
285
|
+
let settled = false;
|
|
286
|
+
const timer = setTimeout(() => {
|
|
287
|
+
if (!settled) {
|
|
288
|
+
settled = true;
|
|
289
|
+
reject(new Error(`Timeout aguardando confirmação de publicação (>${timeoutMs}ms)`));
|
|
290
|
+
}
|
|
291
|
+
}, timeoutMs);
|
|
292
|
+
const ok = channel.publish(exchange, routingKey, content, publishOptions, (err) => {
|
|
293
|
+
if (settled)
|
|
294
|
+
return;
|
|
295
|
+
settled = true;
|
|
296
|
+
clearTimeout(timer);
|
|
297
|
+
if (err)
|
|
298
|
+
return reject(err);
|
|
299
|
+
resolve();
|
|
300
|
+
});
|
|
301
|
+
if (!ok) {
|
|
302
|
+
channel.once('drain', () => {
|
|
303
|
+
// apenas log informativo; a confirmação ainda é aguardada via callback
|
|
304
|
+
this.logger.info('Backpressure aliviado após drain', {
|
|
305
|
+
application: { name: 'util-rabbitmq', function: 'RabbitMQPublisherService', action: 'publishConfirm' },
|
|
306
|
+
data: { rabbitmq: { exchange, routingKey } },
|
|
307
|
+
});
|
|
308
|
+
});
|
|
309
|
+
}
|
|
310
|
+
});
|
|
311
|
+
this.logger.info(`Mensagem publicada (publishConfirm) confirmada no exchange "${exchange}" routingKey "${routingKey}"`, {
|
|
312
|
+
application: { name: 'util-rabbitmq', function: 'RabbitMQPublisherService', action: 'publishConfirm' },
|
|
313
|
+
data: { rabbitmq: { exchange, routingKey, pattern } },
|
|
314
|
+
});
|
|
315
|
+
}
|
|
316
|
+
catch (err) {
|
|
317
|
+
this.logger.error(`Erro ao publicar (publishConfirm) no exchange "${exchange}"`, err, {
|
|
318
|
+
application: { name: 'util-rabbitmq', function: 'RabbitMQPublisherService', action: 'publishConfirm' },
|
|
319
|
+
data: { rabbitmq: { exchange, routingKey } },
|
|
320
|
+
});
|
|
321
|
+
throw err;
|
|
322
|
+
}
|
|
323
|
+
finally {
|
|
324
|
+
try {
|
|
325
|
+
if (channel) {
|
|
326
|
+
try {
|
|
327
|
+
await channel.close();
|
|
328
|
+
}
|
|
329
|
+
catch { }
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
catch { }
|
|
333
|
+
try {
|
|
334
|
+
await connection.close();
|
|
335
|
+
}
|
|
336
|
+
catch { }
|
|
337
|
+
}
|
|
338
|
+
}
|
|
139
339
|
};
|
|
140
340
|
RabbitMQPublisherService = __decorate([
|
|
141
341
|
Injectable({ scope: Scope.REQUEST }),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rabbitmq-publisher.service.js","sourceRoot":"","sources":["../src/rabbitmq-publisher.service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"rabbitmq-publisher.service.js","sourceRoot":"","sources":["../src/rabbitmq-publisher.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAE3D,OAAO,KAAK,IAAI,MAAM,SAAS,CAAC;AAEhC,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAKtD,IAAM,wBAAwB,GAA9B,MAAM,wBAAwB;IACnC,gEAAgE;IAChE,YAA2D,MAA4B;QAA5B,WAAM,GAAN,MAAM,CAAsB;IAAI,CAAC;IAE5F;;;;;OAKG;IAEH,KAAK,CAAC,IAAI,CACR,OAAe,EACf,OAAY,EACZ,IAKC;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QACrC,MAAM,OAAO,GAAwB,EAAE,GAAG,CAAC,IAAI,EAAE,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC;QAElE,IAAI,GAAG,EAAE,cAAc;YAAE,OAAO,CAAC,kBAAkB,CAAC,GAAG,GAAG,CAAC,cAAc,CAAC;QAC1E,IAAI,GAAG,EAAE,KAAK;YAAE,OAAO,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC;QAE/C,OAAO,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC;QAC7B,MAAM,WAAW,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QAE/C,0DAA0D;QAC1D,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;QACrC,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAEvD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAE3C,6EAA6E;QAC7E,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YAC7B,IAAI,CAAC;gBACH,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,uBAAuB,EAAE,GAAU,EACpD;oBACE,WAAW,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,0BAA0B,EAAE,MAAM,EAAE,MAAM,EAAE;oBAC5F,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;iBAC5C,CAAC,CAAC;YACP,CAAC;YAAC,MAAM,CAAC,CAAC,CAAC;QACb,CAAC,CAAC,CAAC;QACH,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YAC1B,8BAA8B;QAChC,CAAC,CAAC,CAAC;QAEH,IAAI,OAAO,GAAwB,IAAI,CAAC;QAExC,IAAI,CAAC;YACH,OAAO,GAAG,MAAM,UAAU,CAAC,aAAa,EAAE,CAAC;YAE3C,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;gBAC1B,8BAA8B;YAChC,CAAC,CAAC,CAAC;YACH,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;gBACvB,8BAA8B;YAChC,CAAC,CAAC,CAAC;YAEH,kFAAkF;YAClF,MAAM,SAAS,GAAwB,EAAE,CAAC;YAC1C,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;gBAC7B,SAAS,CAAC,wBAAwB,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;YACjE,CAAC;YAED,sFAAsF;YACtF,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM;gBAChD,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE;gBACzC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YAEtB,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC;YAEzD,+FAA+F;YAC/F,MAAM,aAAa,GAAG,IAAI,EAAE,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;YACtE,MAAM,YAAY,GAAG,IAAI,EAAE,YAAY,IAAK,OAAO,CAAC,GAAG,CAAC,sBAA8B,IAAI,QAAQ,CAAC;YACnG,MAAM,UAAU,GAAG,IAAI,EAAE,UAAU,IAAI,OAAO,CAAC;YAE/C,IAAI,aAAa,EAAE,CAAC;gBAClB,MAAM,OAAO,CAAC,cAAc,CAAC,aAAa,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC7E,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE,UAAU,EAAE,OAAO,EAAE;oBACpE,UAAU,EAAE,IAAI;oBAChB,OAAO;iBACR,CAAC,CAAC;gBACH,IAAI,CAAC,SAAS,EAAE,CAAC;oBACf,8DAA8D;oBAC9D,MAAM,IAAI,OAAO,CAAO,CAAC,GAAG,EAAE,EAAE,CAAC,OAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;gBACxE,CAAC;gBACD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mCAAmC,aAAa,qBAAqB,UAAU,GAAG,EAAE;oBACnG,WAAW,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,0BAA0B,EAAE,MAAM,EAAE,MAAM,EAAE;oBAC5F,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,UAAU,EAAE,EAAE;iBAC5E,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,0DAA0D;gBAC1D;;;;;;kBAME;gBACF,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE;oBACpC,UAAU,EAAE,IAAI;oBAChB,OAAO;iBACR,CAAC,CAAC;gBACH,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,2CAA2C,OAAO,GAAG,EAAE;oBACtE,WAAW,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,0BAA0B,EAAE,MAAM,EAAE,MAAM,EAAE;oBAC5F,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;iBACvC,CAAC,CAAC;YACL,CAAC;YAED,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;QACxB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,mEAAmE;YACnE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0CAA0C,OAAO,GAAG,EAAE,GAAU,EAAE;gBAClF,WAAW,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,0BAA0B,EAAE,MAAM,EAAE,MAAM,EAAE;gBAC5F,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;aACvC,CAAC,CAAC;YACH,MAAM,GAAG,CAAC;QACZ,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC;gBACH,IAAI,OAAO,EAAE,CAAC;oBACZ,IAAI,CAAC;wBACH,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;oBACxB,CAAC;oBAAC,MAAM,CAAC,CAAC,CAAC;gBACb,CAAC;YACH,CAAC;YAAC,MAAM,CAAC,CAAC,CAAC;YACX,IAAI,CAAC;gBACH,MAAM,UAAU,CAAC,KAAK,EAAE,CAAC;YAC3B,CAAC;YAAC,MAAM,CAAC;gBACP,iCAAiC;YACnC,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,KAAK,CAAC,QAAQ,CACZ,QAAgB,EAChB,UAAkB,EAClB,OAAY,EACZ,IAKC;QAED,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAEzD,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QACrC,MAAM,OAAO,GAAwB,EAAE,GAAG,CAAC,IAAI,EAAE,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC;QAClE,IAAI,GAAG,EAAE,cAAc;YAAE,OAAO,CAAC,kBAAkB,CAAC,GAAG,GAAG,CAAC,cAAc,CAAC;QAC1E,IAAI,GAAG,EAAE,KAAK;YAAE,OAAO,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC;QAE/C,MAAM,OAAO,GAAG,IAAI,EAAE,OAAO,IAAI,UAAU,CAAC;QAC5C,OAAO,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC;QAC7B,MAAM,WAAW,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QAE/C,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;QACrC,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAEvD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC3C,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YAC7B,IAAI,CAAC;gBACH,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,uBAAuB,EAAE,GAAU,EAAE;oBACtD,WAAW,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,0BAA0B,EAAE,MAAM,EAAE,SAAS,EAAE;oBAC/F,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE;iBAClD,CAAC,CAAC;YACL,CAAC;YAAC,MAAM,CAAC,CAAA,CAAC;QACZ,CAAC,CAAC,CAAC;QACH,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAe,CAAC,CAAC,CAAC;QAE9C,IAAI,OAAO,GAAwB,IAAI,CAAC;QACxC,IAAI,CAAC;YACH,OAAO,GAAG,MAAM,UAAU,CAAC,aAAa,EAAE,CAAC;YAC3C,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAe,CAAC,CAAC,CAAC;YAC3C,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAe,CAAC,CAAC,CAAC;YAE3C,MAAM,YAAY,GAAG,IAAI,EAAE,YAAY,IAAK,OAAO,CAAC,GAAG,CAAC,sBAA8B,IAAI,QAAQ,CAAC;YACnG,MAAM,OAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YAExE,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC;YACzD,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE;gBAC/D,UAAU,EAAE,IAAI,EAAE,UAAU,KAAK,KAAK;gBACtC,OAAO;aACR,CAAC,CAAC;YACH,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,MAAM,IAAI,OAAO,CAAO,CAAC,GAAG,EAAE,EAAE,CAAC,OAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YACxE,CAAC;YACD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,6CAA6C,QAAQ,iBAAiB,UAAU,GAAG,EAAE;gBACpG,WAAW,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,0BAA0B,EAAE,MAAM,EAAE,SAAS,EAAE;gBAC/F,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE;aACtD,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,2CAA2C,QAAQ,GAAG,EAAE,GAAU,EAAE;gBACpF,WAAW,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,0BAA0B,EAAE,MAAM,EAAE,SAAS,EAAE;gBAC/F,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE;aAC7C,CAAC,CAAC;YACH,MAAM,GAAG,CAAC;QACZ,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC;gBACH,IAAI,OAAO,EAAE,CAAC;oBACZ,IAAI,CAAC;wBAAC,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;oBAAC,CAAC;oBAAC,MAAM,CAAC,CAAA,CAAC;gBACzC,CAAC;YACH,CAAC;YAAC,MAAM,CAAC,CAAA,CAAC;YACV,IAAI,CAAC;gBAAC,MAAM,UAAU,CAAC,KAAK,EAAE,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAA,CAAC;QAC5C,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;;;OAcG;IACH,KAAK,CAAC,OAAO,CACX,QAAgB,EAChB,UAAkB,EAClB,OAAY,EACZ,IASC;QAED,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAEzD,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QACrC,MAAM,OAAO,GAAwB,EAAE,GAAG,CAAC,IAAI,EAAE,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC;QAClE,IAAI,GAAG,EAAE,cAAc;YAAE,OAAO,CAAC,kBAAkB,CAAC,GAAG,GAAG,CAAC,cAAc,CAAC;QAC1E,IAAI,GAAG,EAAE,KAAK;YAAE,OAAO,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC;QAE/C,MAAM,OAAO,GAAG,IAAI,EAAE,OAAO,IAAI,UAAU,CAAC;QAC5C,OAAO,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC;QAE7B,MAAM,WAAW,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QAC/C,MAAM,SAAS,GAAG,IAAI,EAAE,SAAS,IAAI,CAAC,CAAC,IAAS,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACxF,MAAM,OAAO,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC;QAEvC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;QACrC,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAEvD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC3C,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YAC7B,IAAI,CAAC;gBACH,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,uBAAuB,EAAE,GAAU,EAAE;oBACtD,WAAW,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,0BAA0B,EAAE,MAAM,EAAE,gBAAgB,EAAE;oBACtG,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE;iBAClD,CAAC,CAAC;YACL,CAAC;YAAC,MAAM,CAAC,CAAA,CAAC;QACZ,CAAC,CAAC,CAAC;QACH,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAe,CAAC,CAAC,CAAC;QAE9C,IAAI,OAAO,GAA+B,IAAI,CAAC;QAC/C,IAAI,CAAC;YACH,OAAO,GAAG,MAAM,UAAU,CAAC,oBAAoB,EAAE,CAAC;YAClD,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;gBAC1B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,wBAAwB,EAAE,GAAU,EAAE;oBACtD,WAAW,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,0BAA0B,EAAE,MAAM,EAAE,gBAAgB,EAAE;oBACtG,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE;iBAC7C,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YACH,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAe,CAAC,CAAC,CAAC;YAE3C,MAAM,YAAY,GAAG,IAAI,EAAE,YAAY,IAAK,OAAO,CAAC,GAAG,CAAC,sBAA8B,IAAI,QAAQ,CAAC;YACnG,MAAM,aAAa,GAAgC,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,qBAAqB,IAAI,EAAE,CAAC,EAAE,CAAC;YAC7G,MAAM,OAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,YAAY,EAAE,aAAa,CAAC,CAAC;YAEpE,MAAM,cAAc,GAAyB;gBAC3C,UAAU,EAAE,IAAI,EAAE,UAAU,KAAK,KAAK;gBACtC,OAAO;gBACP,WAAW,EAAE,kBAAkB;gBAC/B,GAAG,IAAI,EAAE,cAAc;aACxB,CAAC;YAEF,MAAM,SAAS,GAAG,IAAI,EAAE,SAAS,IAAI,IAAI,CAAC;YAE1C,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBAC1C,IAAI,OAAO,GAAG,KAAK,CAAC;gBACpB,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;oBAC5B,IAAI,CAAC,OAAO,EAAE,CAAC;wBACb,OAAO,GAAG,IAAI,CAAC;wBACf,MAAM,CAAC,IAAI,KAAK,CAAC,kDAAkD,SAAS,KAAK,CAAC,CAAC,CAAC;oBACtF,CAAC;gBACH,CAAC,EAAE,SAAS,CAAC,CAAC;gBAEd,MAAM,EAAE,GAAG,OAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC,GAAG,EAAE,EAAE;oBACjF,IAAI,OAAO;wBAAE,OAAO;oBAClB,OAAO,GAAG,IAAI,CAAC;oBACf,YAAY,CAAC,KAAK,CAAC,CAAC;oBACpB,IAAI,GAAG;wBAAE,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;oBAC5B,OAAO,EAAE,CAAC;gBACd,CAAC,CAAC,CAAC;gBACH,IAAI,CAAC,EAAE,EAAE,CAAC;oBACR,OAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE;wBAC1B,uEAAuE;wBACvE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kCAAkC,EAAE;4BACnD,WAAW,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,0BAA0B,EAAE,MAAM,EAAE,gBAAgB,EAAE;4BACtG,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE;yBAC7C,CAAC,CAAC;oBACL,CAAC,CAAC,CAAC;gBACL,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,+DAA+D,QAAQ,iBAAiB,UAAU,GAAG,EAAE;gBACtH,WAAW,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,0BAA0B,EAAE,MAAM,EAAE,gBAAgB,EAAE;gBACtG,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE;aACtD,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kDAAkD,QAAQ,GAAG,EAAE,GAAU,EAAE;gBAC3F,WAAW,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,0BAA0B,EAAE,MAAM,EAAE,gBAAgB,EAAE;gBACtG,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE;aAC7C,CAAC,CAAC;YACH,MAAM,GAAG,CAAC;QACZ,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC;gBAAC,IAAI,OAAO,EAAE,CAAC;oBAAC,IAAI,CAAC;wBAAC,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;oBAAC,CAAC;oBAAC,MAAM,CAAC,CAAA,CAAC;gBAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAA,CAAC;YACzE,IAAI,CAAC;gBAAC,MAAM,UAAU,CAAC,KAAK,EAAE,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAA,CAAC;QAC5C,CAAC;IACH,CAAC;CAEF,CAAA;AA7VY,wBAAwB;IADpC,UAAU,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;IAGtB,WAAA,MAAM,CAAC,oBAAoB,CAAC,CAAA;qCAA0B,oBAAoB;GAF5E,wBAAwB,CA6VpC"}
|