@openora/core 0.4.1-canary.12 → 0.4.1-canary.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/contracts/adapters/index.d.ts +2 -2
  3. package/dist/contracts/adapters/index.d.ts.map +1 -1
  4. package/dist/contracts/adapters/index.js +1 -1
  5. package/dist/contracts/adapters/index.js.map +1 -1
  6. package/dist/contracts/adapters/payment.d.ts +57 -0
  7. package/dist/contracts/adapters/payment.d.ts.map +1 -1
  8. package/dist/contracts/adapters/payment.js +4 -2
  9. package/dist/contracts/adapters/payment.js.map +1 -1
  10. package/dist/contracts/schemas/__tests__/common-schemas.test.d.ts +2 -0
  11. package/dist/contracts/schemas/__tests__/common-schemas.test.d.ts.map +1 -0
  12. package/dist/contracts/schemas/__tests__/common-schemas.test.js +17 -0
  13. package/dist/contracts/schemas/__tests__/common-schemas.test.js.map +1 -0
  14. package/dist/contracts/schemas/common.js +1 -1
  15. package/dist/contracts/schemas/platform-config.d.ts +3 -0
  16. package/dist/contracts/schemas/platform-config.d.ts.map +1 -1
  17. package/dist/contracts/schemas/platform-config.js +2 -1
  18. package/dist/contracts/schemas/platform-config.js.map +1 -1
  19. package/dist/wallet/__tests__/hmac-payment-webhook-verifier.test.d.ts +2 -0
  20. package/dist/wallet/__tests__/hmac-payment-webhook-verifier.test.d.ts.map +1 -0
  21. package/dist/wallet/__tests__/hmac-payment-webhook-verifier.test.js +25 -0
  22. package/dist/wallet/__tests__/hmac-payment-webhook-verifier.test.js.map +1 -0
  23. package/dist/wallet/__tests__/wallet-auto-rule.router.test.js +8 -6
  24. package/dist/wallet/__tests__/wallet-auto-rule.router.test.js.map +1 -1
  25. package/dist/wallet/__tests__/wallet-auto-withdrawal.test.js +102 -4
  26. package/dist/wallet/__tests__/wallet-auto-withdrawal.test.js.map +1 -1
  27. package/dist/wallet/__tests__/wallet-webhook.router.test.d.ts +2 -0
  28. package/dist/wallet/__tests__/wallet-webhook.router.test.d.ts.map +1 -0
  29. package/dist/wallet/__tests__/wallet-webhook.router.test.js +78 -0
  30. package/dist/wallet/__tests__/wallet-webhook.router.test.js.map +1 -0
  31. package/dist/wallet/__tests__/wallet.router.test.js +4 -2
  32. package/dist/wallet/__tests__/wallet.router.test.js.map +1 -1
  33. package/dist/wallet/__tests__/wallet.service.test.js +248 -3
  34. package/dist/wallet/__tests__/wallet.service.test.js.map +1 -1
  35. package/dist/wallet/adapters/hmac-payment-webhook-verifier.d.ts +7 -0
  36. package/dist/wallet/adapters/hmac-payment-webhook-verifier.d.ts.map +1 -0
  37. package/dist/wallet/adapters/hmac-payment-webhook-verifier.js +30 -0
  38. package/dist/wallet/adapters/hmac-payment-webhook-verifier.js.map +1 -0
  39. package/dist/wallet/contract/index.d.ts +28 -0
  40. package/dist/wallet/contract/index.d.ts.map +1 -1
  41. package/dist/wallet/contract/index.js +28 -7
  42. package/dist/wallet/contract/index.js.map +1 -1
  43. package/dist/wallet/drizzle/migrations/0002_aromatic_archangel.sql +20 -0
  44. package/dist/wallet/drizzle/migrations/meta/0002_snapshot.json +513 -0
  45. package/dist/wallet/drizzle/migrations/meta/_journal.json +7 -0
  46. package/dist/wallet/plugin.d.ts.map +1 -1
  47. package/dist/wallet/plugin.js +12 -2
  48. package/dist/wallet/plugin.js.map +1 -1
  49. package/dist/wallet/router/index.d.ts +16 -2
  50. package/dist/wallet/router/index.d.ts.map +1 -1
  51. package/dist/wallet/router/index.js +24 -4
  52. package/dist/wallet/router/index.js.map +1 -1
  53. package/dist/wallet/schema/index.d.ts +144 -0
  54. package/dist/wallet/schema/index.d.ts.map +1 -1
  55. package/dist/wallet/schema/index.js +20 -4
  56. package/dist/wallet/schema/index.js.map +1 -1
  57. package/dist/wallet/service/wallet.service.d.ts +20 -2
  58. package/dist/wallet/service/wallet.service.d.ts.map +1 -1
  59. package/dist/wallet/service/wallet.service.js +196 -31
  60. package/dist/wallet/service/wallet.service.js.map +1 -1
  61. package/package.json +1 -1
@@ -0,0 +1,78 @@
1
+ import { describe, it, expect, vi } from 'vitest';
2
+ import { call, ORPCError } from '@orpc/server';
3
+ import { mock } from '../../testing/mock.js';
4
+ import { createWalletRouter } from '../router/index.js';
5
+ const fakeAudit = () => mock({ record: vi.fn() });
6
+ const fakeGuard = () => mock({ assert: vi.fn() });
7
+ function fakeWallet() {
8
+ return mock({
9
+ creditDepositByAddress: vi.fn().mockResolvedValue(undefined),
10
+ reconcileWithdrawalStatus: vi.fn().mockResolvedValue(undefined),
11
+ });
12
+ }
13
+ function ctx(rawBody, headers = {}) {
14
+ return { context: { request: { headers }, rawBody } };
15
+ }
16
+ describe('wallet webhook route (M2M, no admin session)', () => {
17
+ it('rejects when the signature verifier fails (fail closed)', async () => {
18
+ const wallet = fakeWallet();
19
+ const payment = mock({ parseWebhook: vi.fn() });
20
+ const verifier = mock({ verify: vi.fn().mockReturnValue(false) });
21
+ const router = createWalletRouter(wallet, fakeGuard(), fakeAudit(), payment, verifier);
22
+ await expect(call(router.webhook, {}, ctx('{}', { 'x-payment-signature': 'bad' }))).rejects.toBeInstanceOf(ORPCError);
23
+ expect(payment.parseWebhook).not.toHaveBeenCalled();
24
+ expect(wallet.creditDepositByAddress).not.toHaveBeenCalled();
25
+ });
26
+ it('rejects when no raw body was captured', async () => {
27
+ const wallet = fakeWallet();
28
+ const payment = mock({ parseWebhook: vi.fn() });
29
+ const verifier = mock({ verify: vi.fn().mockReturnValue(true) });
30
+ const router = createWalletRouter(wallet, fakeGuard(), fakeAudit(), payment, verifier);
31
+ await expect(call(router.webhook, {}, { context: { request: { headers: {} } } })).rejects.toBeInstanceOf(ORPCError);
32
+ expect(verifier.verify).not.toHaveBeenCalled();
33
+ });
34
+ it('dispatches a verified deposit event to creditDepositByAddress', async () => {
35
+ const wallet = fakeWallet();
36
+ const event = {
37
+ kind: 'deposit',
38
+ address: 'bc1qxyz',
39
+ amount: '0.5',
40
+ currency: 'BTC',
41
+ txHash: '0xabc',
42
+ externalId: 'vendor-ext-1',
43
+ };
44
+ const payment = mock({ parseWebhook: vi.fn().mockReturnValue(event) });
45
+ const verifier = mock({ verify: vi.fn().mockReturnValue(true) });
46
+ const router = createWalletRouter(wallet, fakeGuard(), fakeAudit(), payment, verifier);
47
+ const result = await call(router.webhook, {}, ctx('{"event":"deposit"}'));
48
+ expect(result).toEqual({ ok: true });
49
+ expect(wallet.creditDepositByAddress).toHaveBeenCalledWith(event);
50
+ expect(wallet.reconcileWithdrawalStatus).not.toHaveBeenCalled();
51
+ });
52
+ it('dispatches a verified withdrawal event to reconcileWithdrawalStatus', async () => {
53
+ const wallet = fakeWallet();
54
+ const event = {
55
+ kind: 'withdrawal',
56
+ externalId: 'vendor-ext-2',
57
+ status: 'completed',
58
+ };
59
+ const payment = mock({ parseWebhook: vi.fn().mockReturnValue(event) });
60
+ const verifier = mock({ verify: vi.fn().mockReturnValue(true) });
61
+ const router = createWalletRouter(wallet, fakeGuard(), fakeAudit(), payment, verifier);
62
+ const result = await call(router.webhook, {}, ctx('{"event":"withdrawal"}'));
63
+ expect(result).toEqual({ ok: true });
64
+ expect(wallet.reconcileWithdrawalStatus).toHaveBeenCalledWith(event);
65
+ expect(wallet.creditDepositByAddress).not.toHaveBeenCalled();
66
+ });
67
+ it('returns ok without dispatching when parseWebhook does not recognize the body', async () => {
68
+ const wallet = fakeWallet();
69
+ const payment = mock({ parseWebhook: vi.fn().mockReturnValue(null) });
70
+ const verifier = mock({ verify: vi.fn().mockReturnValue(true) });
71
+ const router = createWalletRouter(wallet, fakeGuard(), fakeAudit(), payment, verifier);
72
+ const result = await call(router.webhook, {}, ctx('{"event":"unknown"}'));
73
+ expect(result).toEqual({ ok: true });
74
+ expect(wallet.creditDepositByAddress).not.toHaveBeenCalled();
75
+ expect(wallet.reconcileWithdrawalStatus).not.toHaveBeenCalled();
76
+ });
77
+ });
78
+ //# sourceMappingURL=wallet-webhook.router.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wallet-webhook.router.test.js","sourceRoot":"","sources":["../../../src/wallet/__tests__/wallet-webhook.router.test.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,8 @@ import { mock } from '../../testing/mock.js';
4
4
  import { createWalletRouter } from '../router/index.js';
5
5
  const CTX = { request: { headers: {} } };
6
6
  const fakeAudit = () => mock({ record: vi.fn() });
7
+ const fakePayment = () => mock({});
8
+ const fakeWebhookVerifier = () => mock({ verify: vi.fn().mockReturnValue(false) });
7
9
  const USER_ID = '63d3c264-3bf4-4d08-9b92-ea3eaf40a440';
8
10
  function fakeWallet() {
9
11
  return mock({
@@ -29,13 +31,13 @@ function fakeAllowingGuard() {
29
31
  describe('wallet router listPlayerTransactions authz', () => {
30
32
  it('rejects a caller lacking transaction:view (IDOR guard)', async () => {
31
33
  const wallet = fakeWallet();
32
- const router = createWalletRouter(wallet, fakeTransactionDenyingGuard(), fakeAudit());
34
+ const router = createWalletRouter(wallet, fakeTransactionDenyingGuard(), fakeAudit(), fakePayment(), fakeWebhookVerifier());
33
35
  await expect(call(router.listPlayerTransactions, { userId: USER_ID, page: 1, limit: 20 }, { context: CTX })).rejects.toBeInstanceOf(ORPCError);
34
36
  expect(wallet.getTransactions).not.toHaveBeenCalled();
35
37
  });
36
38
  it('allows a caller with transaction:view to read any player ledger', async () => {
37
39
  const wallet = fakeWallet();
38
- const router = createWalletRouter(wallet, fakeAllowingGuard(), fakeAudit());
40
+ const router = createWalletRouter(wallet, fakeAllowingGuard(), fakeAudit(), fakePayment(), fakeWebhookVerifier());
39
41
  await call(router.listPlayerTransactions, { userId: USER_ID, page: 1, limit: 20 }, { context: CTX });
40
42
  expect(wallet.getTransactions).toHaveBeenCalledWith(USER_ID, 1, 20);
41
43
  });
@@ -1 +1 @@
1
- {"version":3,"file":"wallet.router.test.js","sourceRoot":"","sources":["../../../src/wallet/__tests__/wallet.router.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAG7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAGxD,MAAM,GAAG,GAAG,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC;AACzC,MAAM,SAAS,GAAG,GAAmB,EAAE,CAAC,IAAI,CAAiB,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AAClF,MAAM,OAAO,GAAG,sCAAsC,CAAC;AAEvD,SAAS,UAAU;IACjB,OAAO,IAAI,CAAgB;QACzB,eAAe,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;KACxF,CAAC,CAAC;AACL,CAAC;AAED,iFAAiF;AACjF,SAAS,2BAA2B;IAClC,OAAO,IAAI,CAAa;QACtB,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,IAAa,EAAE,QAAiB,EAAE,EAAE;YACvD,IAAI,QAAQ,KAAK,aAAa,EAAE,CAAC;gBAC/B,MAAM,IAAI,SAAS,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,sCAAsC,EAAE,CAAC,CAAC;YACxF,CAAC;YACD,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QACjD,CAAC,CAAC;KACH,CAAC,CAAC;AACL,CAAC;AAED,SAAS,iBAAiB;IACxB,OAAO,IAAI,CAAa;QACtB,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;KACnE,CAAC,CAAC;AACL,CAAC;AAED,QAAQ,CAAC,4CAA4C,EAAE,GAAG,EAAE;IAC1D,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;QACtE,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,kBAAkB,CAAC,MAAM,EAAE,2BAA2B,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;QAEtF,MAAM,MAAM,CACV,IAAI,CACF,MAAM,CAAC,sBAAsB,EAC7B,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EACvC,EAAE,OAAO,EAAE,GAAG,EAAE,CACjB,CACF,CAAC,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QACpC,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iEAAiE,EAAE,KAAK,IAAI,EAAE;QAC/E,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,kBAAkB,CAAC,MAAM,EAAE,iBAAiB,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;QAE5E,MAAM,IAAI,CACR,MAAM,CAAC,sBAAsB,EAC7B,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EACvC,EAAE,OAAO,EAAE,GAAG,EAAE,CACjB,CAAC;QAEF,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,oBAAoB,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"wallet.router.test.js","sourceRoot":"","sources":["../../../src/wallet/__tests__/wallet.router.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAO7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAGxD,MAAM,GAAG,GAAG,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC;AACzC,MAAM,SAAS,GAAG,GAAmB,EAAE,CAAC,IAAI,CAAiB,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AAClF,MAAM,WAAW,GAAG,GAAmB,EAAE,CAAC,IAAI,CAAiB,EAAE,CAAC,CAAC;AACnE,MAAM,mBAAmB,GAAG,GAA2B,EAAE,CACvD,IAAI,CAAyB,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAC3E,MAAM,OAAO,GAAG,sCAAsC,CAAC;AAEvD,SAAS,UAAU;IACjB,OAAO,IAAI,CAAgB;QACzB,eAAe,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;KACxF,CAAC,CAAC;AACL,CAAC;AAED,iFAAiF;AACjF,SAAS,2BAA2B;IAClC,OAAO,IAAI,CAAa;QACtB,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,IAAa,EAAE,QAAiB,EAAE,EAAE;YACvD,IAAI,QAAQ,KAAK,aAAa,EAAE,CAAC;gBAC/B,MAAM,IAAI,SAAS,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,sCAAsC,EAAE,CAAC,CAAC;YACxF,CAAC;YACD,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QACjD,CAAC,CAAC;KACH,CAAC,CAAC;AACL,CAAC;AAED,SAAS,iBAAiB;IACxB,OAAO,IAAI,CAAa;QACtB,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;KACnE,CAAC,CAAC;AACL,CAAC;AAED,QAAQ,CAAC,4CAA4C,EAAE,GAAG,EAAE;IAC1D,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;QACtE,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,kBAAkB,CAC/B,MAAM,EACN,2BAA2B,EAAE,EAC7B,SAAS,EAAE,EACX,WAAW,EAAE,EACb,mBAAmB,EAAE,CACtB,CAAC;QAEF,MAAM,MAAM,CACV,IAAI,CACF,MAAM,CAAC,sBAAsB,EAC7B,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EACvC,EAAE,OAAO,EAAE,GAAG,EAAE,CACjB,CACF,CAAC,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QACpC,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iEAAiE,EAAE,KAAK,IAAI,EAAE;QAC/E,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,kBAAkB,CAC/B,MAAM,EACN,iBAAiB,EAAE,EACnB,SAAS,EAAE,EACX,WAAW,EAAE,EACb,mBAAmB,EAAE,CACtB,CAAC;QAEF,MAAM,IAAI,CACR,MAAM,CAAC,sBAAsB,EAC7B,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EACvC,EAAE,OAAO,EAAE,GAAG,EAAE,CACjB,CAAC;QAEF,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,oBAAoB,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { describe, it, expect, vi, beforeEach } from 'vitest';
2
2
  import { mock, readPrivate, makeDrizzle, makeEvents, makePayment } from '../../testing/mock.js';
3
- import { WalletService, WalletNotFoundError, WithdrawalNotFoundError, WithdrawalNotPendingError, InsufficientBalanceError, CurrencyMismatchError, IdempotencyKeyReuseError, } from '../service/wallet.service.js';
3
+ import { WalletService, WalletNotFoundError, WithdrawalNotFoundError, WithdrawalNotPendingError, InsufficientBalanceError, CurrencyMismatchError, IdempotencyKeyReuseError, DepositAddressUnsupportedError, DestinationAddressRequiredError, } from '../service/wallet.service.js';
4
4
  function makeDirectory(summaries = []) {
5
5
  return {
6
6
  count: vi.fn(),
@@ -89,9 +89,22 @@ describe('WalletService.withdraw', () => {
89
89
  });
90
90
  const valuesSpy = readPrivate(drizzle.db, 'values');
91
91
  const svc = svcOf(drizzle, events, payment);
92
- await svc.withdraw({ userId: 'u-1', amount: '1', currency: 'BTC' });
92
+ await svc.withdraw({
93
+ userId: 'u-1',
94
+ amount: '1',
95
+ currency: 'BTC',
96
+ destinationAddress: 'bc1qtest',
97
+ });
93
98
  expect(valuesSpy).toHaveBeenCalledWith(expect.objectContaining({ rail: 'crypto' }));
94
99
  });
100
+ it('throws DestinationAddressRequiredError for a crypto withdrawal with no address', async () => {
101
+ const drizzle = makeDrizzle({
102
+ select: [[{ id: 'w-1', userId: 'u-1', balance: '5', currency: 'BTC' }]],
103
+ });
104
+ const svc = svcOf(drizzle, events, payment);
105
+ await expect(svc.withdraw({ userId: 'u-1', amount: '1', currency: 'BTC' })).rejects.toThrow(DestinationAddressRequiredError);
106
+ expect(payment.processWithdrawal).not.toHaveBeenCalled();
107
+ });
95
108
  it('throws CurrencyMismatchError when the request currency differs from the wallet', async () => {
96
109
  const drizzle = makeDrizzle({
97
110
  select: [[{ id: 'w-1', userId: 'u-1', balance: '100', currency: 'USD' }]],
@@ -495,7 +508,6 @@ describe('WalletService.approveWithdrawal', () => {
495
508
  },
496
509
  ],
497
510
  [{ userId: 'u-1' }], // userIdForWallet
498
- [], // failed-status update (awaited, unused)
499
511
  [], // refund balance update (awaited, unused)
500
512
  ],
501
513
  returning: [
@@ -509,6 +521,7 @@ describe('WalletService.approveWithdrawal', () => {
509
521
  currency: 'USD',
510
522
  },
511
523
  ],
524
+ [{ id: 'tx-1' }],
512
525
  ],
513
526
  });
514
527
  payment.processWithdrawal.mockRejectedValueOnce(new Error('psp down'));
@@ -723,4 +736,236 @@ describe('WalletService.listWithdrawals', () => {
723
736
  expect(rareResult.items[0]?.riskTags).not.toContain('high_frequency');
724
737
  });
725
738
  });
739
+ describe('WalletService.approveWithdrawal - async vendor', () => {
740
+ it('leaves the withdrawal processing (not completed) when the vendor returns a non-terminal status', async () => {
741
+ const events = makeEvents();
742
+ const payment = makePayment();
743
+ payment.processWithdrawal.mockResolvedValueOnce({ externalId: 'ext-3', status: 'processing' });
744
+ const drizzle = makeDrizzle({
745
+ select: [
746
+ [
747
+ {
748
+ id: 'tx-1',
749
+ walletId: 'w-1',
750
+ type: 'withdrawal',
751
+ status: 'pending',
752
+ amount: '40',
753
+ currency: 'USD',
754
+ },
755
+ ],
756
+ [{ userId: 'u-1' }],
757
+ [],
758
+ ],
759
+ returning: [
760
+ [
761
+ {
762
+ id: 'tx-1',
763
+ walletId: 'w-1',
764
+ type: 'withdrawal',
765
+ status: 'processing',
766
+ amount: '40',
767
+ currency: 'USD',
768
+ rail: 'fiat',
769
+ },
770
+ ],
771
+ ],
772
+ });
773
+ const setSpy = readPrivate(drizzle.db, 'set');
774
+ const svc = svcOf(drizzle, events, payment);
775
+ const result = await svc.approveWithdrawal('admin-1', 'tx-1');
776
+ expect(result).toEqual({ transactionId: 'tx-1', status: 'processing' });
777
+ expect(setSpy).toHaveBeenCalledWith({ providerName: 'psp', providerRefId: 'ext-3' });
778
+ expect(events.emit).toHaveBeenCalledWith('wallet.withdrawal.approved', expect.objectContaining({ transactionId: 'tx-1' }));
779
+ expect(events.emit).not.toHaveBeenCalledWith('wallet.withdrawal.completed', expect.anything());
780
+ });
781
+ });
782
+ describe('WalletService.reconcileWithdrawalStatus', () => {
783
+ const PROCESSING_TX = {
784
+ id: 'tx-1',
785
+ walletId: 'w-1',
786
+ type: 'withdrawal',
787
+ status: 'processing',
788
+ amount: '40',
789
+ currency: 'USD',
790
+ };
791
+ it('completed: transitions processing -> completed and emits wallet.withdrawal.completed', async () => {
792
+ const events = makeEvents();
793
+ const drizzle = makeDrizzle({
794
+ select: [[PROCESSING_TX], [{ userId: 'u-1' }]],
795
+ returning: [[{ id: 'tx-1' }]],
796
+ });
797
+ const setSpy = readPrivate(drizzle.db, 'set');
798
+ const svc = svcOf(drizzle, events, makePayment());
799
+ await svc.reconcileWithdrawalStatus({
800
+ kind: 'withdrawal',
801
+ externalId: 'ext-9',
802
+ status: 'completed',
803
+ });
804
+ expect(setSpy).toHaveBeenCalledWith({ status: 'completed' });
805
+ expect(events.emit).toHaveBeenCalledWith('wallet.withdrawal.completed', {
806
+ userId: 'u-1',
807
+ amount: '40',
808
+ currency: 'USD',
809
+ transactionId: 'tx-1',
810
+ });
811
+ });
812
+ it('failed: refunds and marks failed, without an admin-attributed event (system/webhook-driven)', async () => {
813
+ const events = makeEvents();
814
+ const drizzle = makeDrizzle({
815
+ select: [[PROCESSING_TX], [{ userId: 'u-1' }], []],
816
+ returning: [[{ id: 'tx-1' }]],
817
+ });
818
+ const setSpy = readPrivate(drizzle.db, 'set');
819
+ const svc = svcOf(drizzle, events, makePayment());
820
+ await svc.reconcileWithdrawalStatus({
821
+ kind: 'withdrawal',
822
+ externalId: 'ext-9',
823
+ status: 'failed',
824
+ });
825
+ expect(setSpy).toHaveBeenCalledWith(expect.objectContaining({ status: 'failed' }));
826
+ expect(setSpy).toHaveBeenCalledWith(expect.objectContaining({ balance: expect.anything() }));
827
+ expect(events.emit).not.toHaveBeenCalledWith('wallet.withdrawal.failed', expect.anything());
828
+ });
829
+ it('no-ops when the transaction is already terminal (idempotent replay)', async () => {
830
+ const events = makeEvents();
831
+ const drizzle = makeDrizzle({ select: [[{ ...PROCESSING_TX, status: 'completed' }]] });
832
+ const setSpy = readPrivate(drizzle.db, 'set');
833
+ const svc = svcOf(drizzle, events, makePayment());
834
+ await svc.reconcileWithdrawalStatus({
835
+ kind: 'withdrawal',
836
+ externalId: 'ext-9',
837
+ status: 'completed',
838
+ });
839
+ expect(setSpy).not.toHaveBeenCalled();
840
+ expect(events.emit).not.toHaveBeenCalled();
841
+ });
842
+ it('no-ops when no transaction matches the providerRefId', async () => {
843
+ const events = makeEvents();
844
+ const drizzle = makeDrizzle({ select: [[]] });
845
+ const svc = svcOf(drizzle, events, makePayment());
846
+ await svc.reconcileWithdrawalStatus({
847
+ kind: 'withdrawal',
848
+ externalId: 'unknown',
849
+ status: 'completed',
850
+ });
851
+ expect(events.emit).not.toHaveBeenCalled();
852
+ });
853
+ });
854
+ describe('WalletService.getOrCreateDepositAddress', () => {
855
+ it('returns an already-issued address without calling the adapter again', async () => {
856
+ const events = makeEvents();
857
+ const payment = makePayment();
858
+ const drizzle = makeDrizzle({
859
+ select: [
860
+ [
861
+ {
862
+ id: 'da-1',
863
+ userId: 'u-1',
864
+ currency: 'BTC',
865
+ address: 'bc1qexisting',
866
+ providerName: 'fireblocks',
867
+ createdAt: new Date('2026-01-01T00:00:00Z'),
868
+ },
869
+ ],
870
+ ],
871
+ });
872
+ const svc = svcOf(drizzle, events, payment);
873
+ const result = await svc.getOrCreateDepositAddress('u-1', 'BTC');
874
+ expect(result).toEqual({ address: 'bc1qexisting', currency: 'BTC' });
875
+ });
876
+ it('issues and persists a new address on the first call', async () => {
877
+ const events = makeEvents();
878
+ const payment = {
879
+ ...makePayment(),
880
+ issueDepositAddress: vi.fn().mockResolvedValue({ address: 'bc1qnew' }),
881
+ };
882
+ const drizzle = makeDrizzle({
883
+ select: [[]],
884
+ returning: [
885
+ [
886
+ {
887
+ id: 'da-2',
888
+ userId: 'u-1',
889
+ currency: 'BTC',
890
+ address: 'bc1qnew',
891
+ providerName: 'fireblocks',
892
+ createdAt: new Date('2026-01-01T00:00:00Z'),
893
+ },
894
+ ],
895
+ ],
896
+ });
897
+ const svc = svcOf(drizzle, events, payment);
898
+ const result = await svc.getOrCreateDepositAddress('u-1', 'BTC');
899
+ expect(result).toEqual({ address: 'bc1qnew', currency: 'BTC' });
900
+ expect(payment.issueDepositAddress).toHaveBeenCalledWith('u-1', 'BTC');
901
+ });
902
+ it('throws DepositAddressUnsupportedError when the bound adapter has no issueDepositAddress', async () => {
903
+ const events = makeEvents();
904
+ const drizzle = makeDrizzle({ select: [[]] });
905
+ const svc = svcOf(drizzle, events, makePayment());
906
+ await expect(svc.getOrCreateDepositAddress('u-1', 'BTC')).rejects.toBeInstanceOf(DepositAddressUnsupportedError);
907
+ });
908
+ });
909
+ describe('WalletService.creditDepositByAddress', () => {
910
+ const DEPOSIT_ADDRESS_ROW = {
911
+ id: 'da-1',
912
+ userId: 'u-1',
913
+ currency: 'BTC',
914
+ address: 'bc1qxyz',
915
+ providerName: 'fireblocks',
916
+ createdAt: new Date('2026-01-01T00:00:00Z'),
917
+ };
918
+ const WALLET_ROW = { id: 'w-1', userId: 'u-1', balance: '0', currency: 'BTC' };
919
+ const EVENT = {
920
+ kind: 'deposit',
921
+ address: 'bc1qxyz',
922
+ amount: '0.5',
923
+ currency: 'BTC',
924
+ txHash: '0xabc',
925
+ externalId: 'vendor-ext-1',
926
+ };
927
+ it('resolves the address, credits the wallet, and emits wallet.deposit.completed', async () => {
928
+ const events = makeEvents();
929
+ const drizzle = makeDrizzle({
930
+ select: [[DEPOSIT_ADDRESS_ROW], [WALLET_ROW], []],
931
+ returning: [[{ id: 'tx-1', walletId: 'w-1' }]],
932
+ });
933
+ const valuesSpy = readPrivate(drizzle.db, 'values');
934
+ const svc = svcOf(drizzle, events, makePayment());
935
+ await svc.creditDepositByAddress(EVENT);
936
+ expect(valuesSpy).toHaveBeenCalledWith(expect.objectContaining({
937
+ type: 'deposit',
938
+ providerRefId: 'vendor-ext-1',
939
+ destinationAddress: 'bc1qxyz',
940
+ txHash: '0xabc',
941
+ }));
942
+ expect(events.emit).toHaveBeenCalledWith('wallet.deposit.completed', {
943
+ userId: 'u-1',
944
+ amount: '0.5',
945
+ currency: 'BTC',
946
+ transactionId: 'tx-1',
947
+ });
948
+ });
949
+ it('logs and no-ops when the address is unknown', async () => {
950
+ const events = makeEvents();
951
+ const drizzle = makeDrizzle({ select: [[]] });
952
+ const svc = svcOf(drizzle, events, makePayment());
953
+ await svc.creditDepositByAddress(EVENT);
954
+ expect(events.emit).not.toHaveBeenCalled();
955
+ });
956
+ it('is idempotent on a replayed externalId: re-reads the winner instead of double-crediting', async () => {
957
+ const events = makeEvents();
958
+ const drizzle = makeDrizzle({
959
+ select: [
960
+ [DEPOSIT_ADDRESS_ROW],
961
+ [WALLET_ROW],
962
+ [{ id: 'tx-1', walletId: 'w-1', providerRefId: 'vendor-ext-1' }],
963
+ ],
964
+ returning: [[]],
965
+ });
966
+ const svc = svcOf(drizzle, events, makePayment());
967
+ await svc.creditDepositByAddress(EVENT);
968
+ expect(events.emit).not.toHaveBeenCalled();
969
+ });
970
+ });
726
971
  //# sourceMappingURL=wallet.service.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"wallet.service.test.js","sourceRoot":"","sources":["../../../src/wallet/__tests__/wallet.service.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wallet.service.test.js","sourceRoot":"","sources":["../../../src/wallet/__tests__/wallet.service.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAC9D,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAChG,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,uBAAuB,EACvB,yBAAyB,EACzB,wBAAwB,EACxB,qBAAqB,EACrB,wBAAwB,EACxB,8BAA8B,EAC9B,+BAA+B,GAChC,MAAM,8BAA8B,CAAC;AAItC,SAAS,aAAa,CAAC,YAAmB,EAAE;IAC1C,OAAO;QACL,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE;QACd,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE;QACb,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;QACZ,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE;QACf,aAAa,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC;KACpD,CAAC;AACJ,CAAC;AAED,MAAM,KAAK,GAAG,CAAC,OAAgB,EAAE,MAAe,EAAE,OAAgB,EAAE,SAAmB,EAAE,EAAE,CACzF,IAAI,aAAa,CACf,IAAI,CAAiD,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAC9F,CAAC;AAEJ,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;IAC3C,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,MAAM,GAAG,GAAG,IAAI,mBAAmB,CAAC,UAAU,CAAC,CAAC;QAChD,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAC7C,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kEAAkE,EAAE,GAAG,EAAE;QAC1E,MAAM,GAAG,GAAG,IAAI,wBAAwB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACtD,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,IAAI,MAAqC,CAAC;IAC1C,IAAI,OAAuC,CAAC;IAE5C,UAAU,CAAC,GAAG,EAAE;QACd,MAAM,GAAG,UAAU,EAAE,CAAC;QACtB,OAAO,GAAG,WAAW,EAAE,CAAC;IAC1B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;QACzD,MAAM,OAAO,GAAG,WAAW,CAAC;YAC1B,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3E,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;SAC9B,CAAC,CAAC;QACH,MAAM,SAAS,GAAG,WAAW,CAA2B,OAAO,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;QAC9E,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAE5C,MAAM,GAAG,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;QAExF,MAAM,CAAC,SAAS,CAAC,CAAC,oBAAoB,CACpC,MAAM,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAC3D,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;QAC7D,MAAM,OAAO,GAAG,WAAW,CAAC;YAC1B,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3E,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;SAC9B,CAAC,CAAC;QACH,MAAM,SAAS,GAAG,WAAW,CAA2B,OAAO,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;QAC9E,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAE5C,MAAM,GAAG,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC,CAAC;QAE3F,MAAM,CAAC,SAAS,CAAC,CAAC,oBAAoB,CACpC,MAAM,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAC7D,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACtC,IAAI,MAAqC,CAAC;IAC1C,IAAI,OAAuC,CAAC;IAE5C,UAAU,CAAC,GAAG,EAAE;QACd,MAAM,GAAG,UAAU,EAAE,CAAC;QACtB,OAAO,GAAG,WAAW,EAAE,CAAC;IAC1B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sFAAsF,EAAE,KAAK,IAAI,EAAE;QACpG,MAAM,OAAO,GAAG,WAAW,CAAC;YAC1B,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;YACzE,SAAS,EAAE;gBACT,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;gBACnF,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,yCAAyC;aAC3D;SACF,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,WAAW,CAA2B,OAAO,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QACxE,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAE5C,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QAEpF,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;QACrE,MAAM,CAAC,MAAM,CAAC,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;QAC9C,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACzD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,oBAAoB,CAAC,6BAA6B,EAAE;YACtE,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,IAAI;YACZ,QAAQ,EAAE,KAAK;YACf,aAAa,EAAE,MAAM;SACtB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;QAC7D,MAAM,OAAO,GAAG,WAAW,CAAC;YAC1B,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;YACvE,SAAS,EAAE;gBACT,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;gBAClF,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;aAChB;SACF,CAAC,CAAC;QACH,MAAM,SAAS,GAAG,WAAW,CAA2B,OAAO,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;QAC9E,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAE5C,MAAM,GAAG,CAAC,QAAQ,CAAC;YACjB,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,GAAG;YACX,QAAQ,EAAE,KAAK;YACf,kBAAkB,EAAE,UAAU;SAC/B,CAAC,CAAC;QAEH,MAAM,CAAC,SAAS,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;IACtF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gFAAgF,EAAE,KAAK,IAAI,EAAE;QAC9F,MAAM,OAAO,GAAG,WAAW,CAAC;YAC1B,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;SACxE,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAE5C,MAAM,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CACzF,+BAA+B,CAChC,CAAC;QACF,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gFAAgF,EAAE,KAAK,IAAI,EAAE;QAC9F,MAAM,OAAO,GAAG,WAAW,CAAC;YAC1B,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;SAC1E,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAE5C,MAAM,MAAM,CACV,GAAG,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAC/D,CAAC,OAAO,CAAC,cAAc,CAAC,qBAAqB,CAAC,CAAC;QAChD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yEAAyE,EAAE,KAAK,IAAI,EAAE;QACvF,MAAM,OAAO,GAAG,WAAW,CAAC;YAC1B,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;YACxE,SAAS,EAAE;gBACT,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;gBACnF,EAAE,EAAE,4DAA4D;aACjE;SACF,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAE5C,MAAM,MAAM,CACV,GAAG,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAC/D,CAAC,OAAO,CAAC,cAAc,CAAC,wBAAwB,CAAC,CAAC;QACnD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IAC7C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,qCAAqC,EAAE,GAAG,EAAE;IACnD,IAAI,MAAqC,CAAC;IAC1C,IAAI,OAAuC,CAAC;IAE5C,UAAU,CAAC,GAAG,EAAE;QACd,MAAM,GAAG,UAAU,EAAE,CAAC;QACtB,OAAO,GAAG,WAAW,EAAE,CAAC;IAC1B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wFAAwF,EAAE,KAAK,IAAI,EAAE;QACtG,MAAM,OAAO,GAAG,WAAW,CAAC;YAC1B,MAAM,EAAE;gBACN,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;gBAC/D,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;aACtF;SACF,CAAC,CAAC;QACH,MAAM,SAAS,GAAG,WAAW,CAA2B,OAAO,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;QAC9E,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAE5C,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC;YAC/B,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,IAAI;YACZ,QAAQ,EAAE,KAAK;YACf,cAAc,EAAE,OAAO;SACxB,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;QACvE,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACtD,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACzC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sFAAsF,EAAE,KAAK,IAAI,EAAE;QACpG,MAAM,OAAO,GAAG,WAAW,CAAC;YAC1B,MAAM,EAAE;gBACN,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;gBAC/D,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;aACtF;SACF,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAE5C,MAAM,MAAM,CACV,GAAG,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,CAAC,CACvF,CAAC,OAAO,CAAC,cAAc,CAAC,wBAAwB,CAAC,CAAC;QACnD,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;QACtE,MAAM,OAAO,GAAG,WAAW,CAAC;YAC1B,MAAM,EAAE;gBACN,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,sCAAsC;gBACvG,EAAE,EAAE,iDAAiD;gBACrD,EAAE,EAAE,kFAAkF;gBACtF,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,sCAAsC;gBACvG,EAAE,EAAE,iDAAiD;gBACrD,EAAE,EAAE,2DAA2D;aAChE;YACD,SAAS,EAAE;gBACT,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;gBACrF,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;aACtF;SACF,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAE5C,MAAM,EAAE,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC;YAC3B,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,IAAI;YACZ,QAAQ,EAAE,KAAK;YACf,cAAc,EAAE,OAAO;SACxB,CAAC,CAAC;QACH,MAAM,EAAE,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC;YAC3B,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,IAAI;YACZ,QAAQ,EAAE,KAAK;YACf,cAAc,EAAE,OAAO;SACxB,CAAC,CAAC;QAEH,MAAM,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACtC,MAAM,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACtC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iEAAiE,EAAE,KAAK,IAAI,EAAE;QAC/E,MAAM,OAAO,GAAG,WAAW,CAAC;YAC1B,MAAM,EAAE;gBACN,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;gBAC/D,EAAE,EAAE,gDAAgD;aACrD;YACD,SAAS,EAAE;gBACT,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;aACtF;SACF,CAAC,CAAC;QACH,MAAM,SAAS,GAAG,WAAW,CAA2B,OAAO,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;QAC9E,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAE5C,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QAEnF,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;QACvE,MAAM,CAAC,SAAS,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAC1F,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,oBAAoB,CACtC,0BAA0B,EAC1B,MAAM,CAAC,gBAAgB,CAAC,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,CACnD,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4FAA4F,EAAE,KAAK,IAAI,EAAE;QAC1G,MAAM,OAAO,GAAG,WAAW,CAAC;YAC1B,MAAM,EAAE;gBACN,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,sCAAsC;gBACvG,EAAE,EAAE,kEAAkE;gBACtE;oBACE;wBACE,EAAE,EAAE,WAAW;wBACf,QAAQ,EAAE,KAAK;wBACf,MAAM,EAAE,IAAI;wBACZ,QAAQ,EAAE,KAAK;wBACf,MAAM,EAAE,WAAW;qBACpB;iBACF,EAAE,4CAA4C;aAChD;YACD,SAAS,EAAE;gBACT,EAAE,EAAE,wFAAwF;aAC7F;SACF,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAE5C,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC;YAC/B,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,IAAI;YACZ,QAAQ,EAAE,KAAK;YACf,cAAc,EAAE,OAAO;SACxB,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;QAC5E,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wFAAwF,EAAE,KAAK,IAAI,EAAE;QACtG,MAAM,OAAO,GAAG,WAAW,CAAC;YAC1B,MAAM,EAAE;gBACN,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;gBAC/D,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;aACtF;SACF,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAE5C,MAAM,MAAM,CACV,GAAG,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,CAAC,CACvF,CAAC,OAAO,CAAC,cAAc,CAAC,wBAAwB,CAAC,CAAC;QACnD,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IACxD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,sCAAsC,EAAE,GAAG,EAAE;IACpD,IAAI,MAAqC,CAAC;IAC1C,IAAI,OAAuC,CAAC;IAE5C,UAAU,CAAC,GAAG,EAAE;QACd,MAAM,GAAG,UAAU,EAAE,CAAC;QACtB,OAAO,GAAG,WAAW,EAAE,CAAC;IAC1B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0FAA0F,EAAE,KAAK,IAAI,EAAE;QACxG,MAAM,OAAO,GAAG,WAAW,CAAC;YAC1B,MAAM,EAAE;gBACN,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;gBAC9D,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;aACpF;SACF,CAAC,CAAC;QACH,MAAM,SAAS,GAAG,WAAW,CAA2B,OAAO,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;QAC9E,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAE5C,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC;YAChC,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,IAAI;YACZ,QAAQ,EAAE,KAAK;YACf,cAAc,EAAE,OAAO;SACxB,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;QACrE,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACzC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sFAAsF,EAAE,KAAK,IAAI,EAAE;QACpG,MAAM,OAAO,GAAG,WAAW,CAAC;YAC1B,MAAM,EAAE;gBACN,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;gBAC9D,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;aACpF;SACF,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAE5C,MAAM,MAAM,CACV,GAAG,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,CAAC,CACxF,CAAC,OAAO,CAAC,cAAc,CAAC,wBAAwB,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;QACtE,MAAM,OAAO,GAAG,WAAW,CAAC;YAC1B,MAAM,EAAE;gBACN,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;gBAC/D,EAAE,EAAE,2BAA2B;gBAC/B,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;gBAC9D,EAAE,EAAE,2BAA2B;aAChC;YACD,SAAS,EAAE;gBACT,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;gBACnF,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,2BAA2B;gBAC5C,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;gBACnF,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,2BAA2B;aAC7C;SACF,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAE5C,MAAM,EAAE,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC;YAC5B,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,IAAI;YACZ,QAAQ,EAAE,KAAK;YACf,cAAc,EAAE,OAAO;SACxB,CAAC,CAAC;QACH,MAAM,EAAE,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC;YAC5B,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,IAAI;YACZ,QAAQ,EAAE,KAAK;YACf,cAAc,EAAE,OAAO;SACxB,CAAC,CAAC;QAEH,MAAM,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACtC,MAAM,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACtC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iEAAiE,EAAE,KAAK,IAAI,EAAE;QAC/E,MAAM,OAAO,GAAG,WAAW,CAAC;YAC1B,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;YACzE,SAAS,EAAE;gBACT,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;gBACnF,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;aAChB;SACF,CAAC,CAAC;QACH,MAAM,SAAS,GAAG,WAAW,CAA2B,OAAO,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;QAC9E,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAE5C,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QAEpF,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;QACrE,MAAM,CAAC,SAAS,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAC1F,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,oBAAoB,CACtC,6BAA6B,EAC7B,MAAM,CAAC,gBAAgB,CAAC,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,CACnD,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4FAA4F,EAAE,KAAK,IAAI,EAAE;QAC1G,MAAM,OAAO,GAAG,WAAW,CAAC;YAC1B,MAAM,EAAE;gBACN,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;gBAC/D,EAAE,EAAE,8DAA8D;gBAClE,CAAC,EAAE,EAAE,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;aACzF;YACD,SAAS,EAAE;gBACT,EAAE,EAAE,wFAAwF;aAC7F;SACF,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAE5C,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC;YAChC,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,IAAI;YACZ,QAAQ,EAAE,KAAK;YACf,cAAc,EAAE,OAAO;SACxB,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;QAC1E,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wFAAwF,EAAE,KAAK,IAAI,EAAE;QACtG,MAAM,OAAO,GAAG,WAAW,CAAC;YAC1B,MAAM,EAAE;gBACN,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;gBAC9D,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;aACpF;SACF,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAE5C,MAAM,MAAM,CACV,GAAG,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,CAAC,CACxF,CAAC,OAAO,CAAC,cAAc,CAAC,wBAAwB,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,0DAA0D,EAAE,GAAG,EAAE;IACxE,IAAI,MAAqC,CAAC;IAC1C,IAAI,OAAuC,CAAC;IAE5C,UAAU,CAAC,GAAG,EAAE;QACd,MAAM,GAAG,UAAU,EAAE,CAAC;QACtB,OAAO,GAAG,WAAW,EAAE,CAAC;IAC1B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mGAAmG,EAAE,KAAK,IAAI,EAAE;QACjH,MAAM,OAAO,GAAG,WAAW,CAAC;YAC1B,MAAM,EAAE;gBACN,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,iCAAiC;gBAClG,EAAE,EAAE,8DAA8D;gBAClE,EAAE,EAAE,gDAAgD;gBACpD,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,iCAAiC;gBAClG,EAAE,EAAE,yEAAyE;aAC9E;YACD,SAAS,EAAE;gBACT;oBACE;wBACE,EAAE,EAAE,YAAY;wBAChB,QAAQ,EAAE,KAAK;wBACf,MAAM,EAAE,IAAI;wBACZ,QAAQ,EAAE,KAAK;wBACf,MAAM,EAAE,WAAW;qBACpB;iBACF;gBACD;oBACE;wBACE,EAAE,EAAE,aAAa;wBACjB,QAAQ,EAAE,KAAK;wBACf,MAAM,EAAE,IAAI;wBACZ,QAAQ,EAAE,KAAK;wBACf,MAAM,EAAE,SAAS;qBAClB;iBACF;gBACD,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,yBAAyB;aAC3C;SACF,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAE5C,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC;YAChC,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,IAAI;YACZ,QAAQ,EAAE,KAAK;YACf,cAAc,EAAE,YAAY;SAC7B,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC;YAClC,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,IAAI;YACZ,QAAQ,EAAE,KAAK;YACf,cAAc,EAAE,YAAY;SAC7B,CAAC,CAAC;QAEH,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACjD,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACnD,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QAC/D,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,oBAAoB,CACtC,0BAA0B,EAC1B,MAAM,CAAC,gBAAgB,CAAC,EAAE,aAAa,EAAE,YAAY,EAAE,CAAC,CACzD,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,oBAAoB,CACtC,6BAA6B,EAC7B,MAAM,CAAC,gBAAgB,CAAC,EAAE,aAAa,EAAE,aAAa,EAAE,CAAC,CAC1D,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,iCAAiC,EAAE,GAAG,EAAE;IAC/C,IAAI,MAAqC,CAAC;IAC1C,IAAI,OAAuC,CAAC;IAE5C,UAAU,CAAC,GAAG,EAAE;QACd,MAAM,GAAG,UAAU,EAAE,CAAC;QACtB,OAAO,GAAG,WAAW,EAAE,CAAC;IAC1B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4FAA4F,EAAE,KAAK,IAAI,EAAE;QAC1G,MAAM,OAAO,GAAG,WAAW,CAAC;YAC1B,MAAM,EAAE;gBACN;oBACE;wBACE,EAAE,EAAE,MAAM;wBACV,QAAQ,EAAE,KAAK;wBACf,IAAI,EAAE,YAAY;wBAClB,MAAM,EAAE,SAAS;wBACjB,MAAM,EAAE,IAAI;wBACZ,QAAQ,EAAE,KAAK;qBAChB;iBACF;gBACD,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,kBAAkB;gBACvC,EAAE,EAAE,6CAA6C;aAClD;YACD,SAAS,EAAE;gBACT;oBACE;wBACE,EAAE,EAAE,MAAM;wBACV,QAAQ,EAAE,KAAK;wBACf,IAAI,EAAE,YAAY;wBAClB,MAAM,EAAE,YAAY;wBACpB,MAAM,EAAE,IAAI;wBACZ,QAAQ,EAAE,KAAK;wBACf,IAAI,EAAE,MAAM;qBACb;iBACF;aACF;SACF,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,WAAW,CAA2B,OAAO,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QACxE,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAE5C,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,iBAAiB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAE9D,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;QACvE,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,oBAAoB,CAAC,IAAI,EAAE,KAAK,EAAE;YAClE,aAAa,EAAE,MAAM;YACrB,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,SAAS;SACnB,CAAC,CAAC;QACH,gFAAgF;QAChF,MAAM,CAAC,MAAM,CAAC,CAAC,oBAAoB,CAAC;YAClC,MAAM,EAAE,WAAW;YACnB,YAAY,EAAE,KAAK;YACnB,aAAa,EAAE,OAAO;SACvB,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,uBAAuB,CAAC,CAAC,EAAE,4BAA4B,EAAE;YAC3E,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,IAAI;YACZ,QAAQ,EAAE,KAAK;YACf,aAAa,EAAE,MAAM;YACrB,OAAO,EAAE,SAAS;SACnB,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,uBAAuB,CAAC,CAAC,EAAE,6BAA6B,EAAE;YAC5E,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,IAAI;YACZ,QAAQ,EAAE,KAAK;YACf,aAAa,EAAE,MAAM;SACtB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kEAAkE,EAAE,KAAK,IAAI,EAAE;QAChF,MAAM,OAAO,GAAG,WAAW,CAAC;YAC1B,MAAM,EAAE;gBACN;oBACE;wBACE,EAAE,EAAE,MAAM;wBACV,QAAQ,EAAE,KAAK;wBACf,IAAI,EAAE,YAAY;wBAClB,MAAM,EAAE,SAAS;wBACjB,MAAM,EAAE,IAAI;wBACZ,QAAQ,EAAE,KAAK;qBAChB;iBACF;gBACD,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,kBAAkB;gBACvC,EAAE,EAAE,0CAA0C;aAC/C;YACD,SAAS,EAAE;gBACT;oBACE;wBACE,EAAE,EAAE,MAAM;wBACV,QAAQ,EAAE,KAAK;wBACf,IAAI,EAAE,YAAY;wBAClB,MAAM,EAAE,YAAY;wBACpB,MAAM,EAAE,IAAI;wBACZ,QAAQ,EAAE,KAAK;qBAChB;iBACF;gBACD,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC;aACjB;SACF,CAAC,CAAC;QACH,OAAO,CAAC,iBAAiB,CAAC,qBAAqB,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;QACvE,MAAM,MAAM,GAAG,WAAW,CAA2B,OAAO,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QACxE,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAE5C,MAAM,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAEnF,MAAM,CAAC,MAAM,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;QACnF,MAAM,CAAC,MAAM,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;QAC7F,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,oBAAoB,CAAC,0BAA0B,EAAE;YACnE,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,IAAI;YACZ,QAAQ,EAAE,KAAK;YACf,aAAa,EAAE,MAAM;YACrB,OAAO,EAAE,SAAS;SACnB,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,oBAAoB,CAAC,6BAA6B,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;IACjG,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6DAA6D,EAAE,KAAK,IAAI,EAAE;QAC3E,MAAM,OAAO,GAAG,WAAW,CAAC;YAC1B,MAAM,EAAE;gBACN;oBACE;wBACE,EAAE,EAAE,MAAM;wBACV,QAAQ,EAAE,KAAK;wBACf,IAAI,EAAE,YAAY;wBAClB,MAAM,EAAE,YAAY;wBACpB,MAAM,EAAE,IAAI;wBACZ,QAAQ,EAAE,KAAK;qBAChB;iBACF;aACF;SACF,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAE5C,MAAM,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAC3E,yBAAyB,CAC1B,CAAC;QACF,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACzD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;QAC3D,MAAM,OAAO,GAAG,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9C,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAC5C,MAAM,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAC9E,uBAAuB,CACxB,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,gCAAgC,EAAE,GAAG,EAAE;IAC9C,IAAI,MAAqC,CAAC;IAC1C,IAAI,OAAuC,CAAC;IAE5C,UAAU,CAAC,GAAG,EAAE;QACd,MAAM,GAAG,UAAU,EAAE,CAAC;QACtB,OAAO,GAAG,WAAW,EAAE,CAAC;IAC1B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8DAA8D,EAAE,KAAK,IAAI,EAAE;QAC5E,MAAM,OAAO,GAAG,WAAW,CAAC;YAC1B,MAAM,EAAE;gBACN;oBACE;wBACE,EAAE,EAAE,MAAM;wBACV,QAAQ,EAAE,KAAK;wBACf,IAAI,EAAE,YAAY;wBAClB,MAAM,EAAE,SAAS;wBACjB,MAAM,EAAE,IAAI;wBACZ,QAAQ,EAAE,KAAK;qBAChB;iBACF;gBACD,EAAE,EAAE,qDAAqD;gBACzD,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,kBAAkB;aACxC;YACD,SAAS,EAAE;gBACT;oBACE;wBACE,EAAE,EAAE,MAAM;wBACV,QAAQ,EAAE,KAAK;wBACf,IAAI,EAAE,YAAY;wBAClB,MAAM,EAAE,UAAU;wBAClB,MAAM,EAAE,IAAI;wBACZ,QAAQ,EAAE,KAAK;qBAChB;iBACF;aACF;SACF,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,WAAW,CAA2B,OAAO,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QACxE,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAE5C,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;QAEzE,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;QACtE,MAAM,CAAC,MAAM,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;QAC7F,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,oBAAoB,CAAC,4BAA4B,EAAE;YACrE,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,IAAI;YACZ,QAAQ,EAAE,KAAK;YACf,aAAa,EAAE,MAAM;YACrB,OAAO,EAAE,SAAS;YAClB,MAAM,EAAE,UAAU;SACnB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4DAA4D,EAAE,KAAK,IAAI,EAAE;QAC1E,MAAM,OAAO,GAAG,WAAW,CAAC;YAC1B,MAAM,EAAE;gBACN;oBACE;wBACE,EAAE,EAAE,MAAM;wBACV,QAAQ,EAAE,KAAK;wBACf,IAAI,EAAE,YAAY;wBAClB,MAAM,EAAE,UAAU;wBAClB,MAAM,EAAE,IAAI;wBACZ,QAAQ,EAAE,KAAK;qBAChB;iBACF;aACF;SACF,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAE5C,MAAM,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CACnF,yBAAyB,CAC1B,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IAC7C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,+BAA+B,EAAE,GAAG,EAAE;IAC7C,MAAM,QAAQ,GAAG,CAAC,EAAU,EAAE,MAAc,EAAE,YAAiB,EAAE,EAAE,EAAE,CAAC,CAAC;QACrE,EAAE,EAAE;YACF,EAAE;YACF,QAAQ,EAAE,KAAK;YACf,MAAM,EAAE,IAAI;YACZ,QAAQ,EAAE,KAAK;YACf,IAAI,EAAE,MAAM;YACZ,MAAM,EAAE,SAAS;YACjB,SAAS,EAAE,IAAI,IAAI,CAAC,sBAAsB,CAAC;YAC3C,GAAG,SAAS;SACb;QACD,MAAM;KACP,CAAC,CAAC;IAEH,EAAE,CAAC,gEAAgE,EAAE,KAAK,IAAI,EAAE;QAC9E,MAAM,OAAO,GAAG,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACrE,MAAM,SAAS,GAAG,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;QAC/F,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE,WAAW,EAAE,EAAE,SAAS,CAAC,CAAC;QAEnE,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,eAAe,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;QAEjE,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,oBAAoB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QAC9D,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;YACpC,aAAa,EAAE,MAAM;YACrB,QAAQ,EAAE,OAAO;YACjB,SAAS,EAAE,UAAU;YACrB,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,EAAE;YACZ,WAAW,EAAE,0BAA0B;SACxC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6EAA6E,EAAE,KAAK,IAAI,EAAE;QAC3F,MAAM,IAAI,GAAG;YACX,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC;YACvB,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC;YACvB,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC;YACvB,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC;SACxB,CAAC;QACF,MAAM,OAAO,GAAG,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChD,MAAM,SAAS,GAAG,aAAa,CAAC;YAC9B,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,UAAU,EAAE;YACvD,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE;YACtD,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,UAAU,EAAE;YACvD,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,UAAU,EAAE;SACxD,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE,WAAW,EAAE,EAAE,SAAS,CAAC,CAAC;QAEnE,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,eAAe,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,CAAC;QAEvF,+FAA+F;QAC/F,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACrC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC7E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;QACpE,MAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;QAChE,MAAM,OAAO,GAAG,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChD,MAAM,SAAS,GAAG,aAAa,CAAC;YAC9B,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,UAAU,EAAE;YACvD,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,UAAU,EAAE;SACxD,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE,WAAW,EAAE,EAAE,SAAS,CAAC,CAAC;QAEnE,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,eAAe,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,CAAC;QAEvF,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8EAA8E,EAAE,KAAK,IAAI,EAAE;QAC5F,MAAM,IAAI,GAAG;YACX,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;YAC9C,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;YAChD,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;SAChD,CAAC;QACF,MAAM,OAAO,GAAG,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChD,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE,WAAW,EAAE,EAAE,aAAa,EAAE,CAAC,CAAC;QAEzE,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,eAAe,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;QAEjE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC;IAC1F,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wEAAwE,EAAE,KAAK,IAAI,EAAE;QACtF,MAAM,GAAG,GAAG,WAAW,CAAC;YACtB,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;SAC5D,CAAC,CAAC;QACH,MAAM,KAAK,GAAG,WAAW,CAAC;YACxB,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;SAC/D,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,MAAM,KAAK,CAC3B,GAAG,EACH,UAAU,EAAE,EACZ,WAAW,EAAE,EACb,aAAa,EAAE,CAChB,CAAC,eAAe,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;QAC1C,MAAM,WAAW,GAAG,MAAM,KAAK,CAC7B,KAAK,EACL,UAAU,EAAE,EACZ,WAAW,EAAE,EACb,aAAa,EAAE,CAChB,CAAC,eAAe,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;QAE1C,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;QAC/D,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kFAAkF,EAAE,KAAK,IAAI,EAAE;QAChG,iEAAiE;QACjE,MAAM,QAAQ,GAAG,WAAW,CAAC;YAC3B,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;SACjE,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,WAAW,CAAC;YACvB,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;SACjE,CAAC,CAAC;QAEH,MAAM,cAAc,GAAG,MAAM,KAAK,CAChC,QAAQ,EACR,UAAU,EAAE,EACZ,WAAW,EAAE,EACb,aAAa,EAAE,CAChB,CAAC,eAAe,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;QAC1C,MAAM,UAAU,GAAG,MAAM,KAAK,CAC5B,IAAI,EACJ,UAAU,EAAE,EACZ,WAAW,EAAE,EACb,aAAa,EAAE,CAChB,CAAC,eAAe,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;QAE1C,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;QACtE,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,gDAAgD,EAAE,GAAG,EAAE;IAC9D,EAAE,CAAC,gGAAgG,EAAE,KAAK,IAAI,EAAE;QAC9G,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,WAAW,EAAE,CAAC;QAC9B,OAAO,CAAC,iBAAiB,CAAC,qBAAqB,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;QAC/F,MAAM,OAAO,GAAG,WAAW,CAAC;YAC1B,MAAM,EAAE;gBACN;oBACE;wBACE,EAAE,EAAE,MAAM;wBACV,QAAQ,EAAE,KAAK;wBACf,IAAI,EAAE,YAAY;wBAClB,MAAM,EAAE,SAAS;wBACjB,MAAM,EAAE,IAAI;wBACZ,QAAQ,EAAE,KAAK;qBAChB;iBACF;gBACD,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;gBACnB,EAAE;aACH;YACD,SAAS,EAAE;gBACT;oBACE;wBACE,EAAE,EAAE,MAAM;wBACV,QAAQ,EAAE,KAAK;wBACf,IAAI,EAAE,YAAY;wBAClB,MAAM,EAAE,YAAY;wBACpB,MAAM,EAAE,IAAI;wBACZ,QAAQ,EAAE,KAAK;wBACf,IAAI,EAAE,MAAM;qBACb;iBACF;aACF;SACF,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,WAAW,CAA2B,OAAO,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QACxE,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAE5C,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,iBAAiB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAE9D,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;QACxE,MAAM,CAAC,MAAM,CAAC,CAAC,oBAAoB,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC,CAAC;QACrF,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,oBAAoB,CACtC,4BAA4B,EAC5B,MAAM,CAAC,gBAAgB,CAAC,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,CACnD,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,oBAAoB,CAAC,6BAA6B,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;IACjG,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,yCAAyC,EAAE,GAAG,EAAE;IACvD,MAAM,aAAa,GAAG;QACpB,EAAE,EAAE,MAAM;QACV,QAAQ,EAAE,KAAK;QACf,IAAI,EAAE,YAAY;QAClB,MAAM,EAAE,YAAY;QACpB,MAAM,EAAE,IAAI;QACZ,QAAQ,EAAE,KAAK;KAChB,CAAC;IAEF,EAAE,CAAC,sFAAsF,EAAE,KAAK,IAAI,EAAE;QACpG,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,WAAW,CAAC;YAC1B,MAAM,EAAE,CAAC,CAAC,aAAa,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;YAC9C,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;SAC9B,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,WAAW,CAA2B,OAAO,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QACxE,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;QAElD,MAAM,GAAG,CAAC,yBAAyB,CAAC;YAClC,IAAI,EAAE,YAAY;YAClB,UAAU,EAAE,OAAO;YACnB,MAAM,EAAE,WAAW;SACpB,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,CAAC,oBAAoB,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;QAC7D,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,oBAAoB,CAAC,6BAA6B,EAAE;YACtE,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,IAAI;YACZ,QAAQ,EAAE,KAAK;YACf,aAAa,EAAE,MAAM;SACtB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6FAA6F,EAAE,KAAK,IAAI,EAAE;QAC3G,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,WAAW,CAAC;YAC1B,MAAM,EAAE,CAAC,CAAC,aAAa,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;YAClD,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;SAC9B,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,WAAW,CAA2B,OAAO,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QACxE,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;QAElD,MAAM,GAAG,CAAC,yBAAyB,CAAC;YAClC,IAAI,EAAE,YAAY;YAClB,UAAU,EAAE,OAAO;YACnB,MAAM,EAAE,QAAQ;SACjB,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;QACnF,MAAM,CAAC,MAAM,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;QAC7F,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,oBAAoB,CAAC,0BAA0B,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC9F,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qEAAqE,EAAE,KAAK,IAAI,EAAE;QACnF,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,GAAG,aAAa,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QACvF,MAAM,MAAM,GAAG,WAAW,CAA2B,OAAO,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QACxE,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;QAElD,MAAM,GAAG,CAAC,yBAAyB,CAAC;YAClC,IAAI,EAAE,YAAY;YAClB,UAAU,EAAE,OAAO;YACnB,MAAM,EAAE,WAAW;SACpB,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACtC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;QACpE,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9C,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;QAElD,MAAM,GAAG,CAAC,yBAAyB,CAAC;YAClC,IAAI,EAAE,YAAY;YAClB,UAAU,EAAE,SAAS;YACrB,MAAM,EAAE,WAAW;SACpB,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IAC7C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,yCAAyC,EAAE,GAAG,EAAE;IACvD,EAAE,CAAC,qEAAqE,EAAE,KAAK,IAAI,EAAE;QACnF,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,WAAW,EAAE,CAAC;QAC9B,MAAM,OAAO,GAAG,WAAW,CAAC;YAC1B,MAAM,EAAE;gBACN;oBACE;wBACE,EAAE,EAAE,MAAM;wBACV,MAAM,EAAE,KAAK;wBACb,QAAQ,EAAE,KAAK;wBACf,OAAO,EAAE,cAAc;wBACvB,YAAY,EAAE,YAAY;wBAC1B,SAAS,EAAE,IAAI,IAAI,CAAC,sBAAsB,CAAC;qBAC5C;iBACF;aACF;SACF,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAE5C,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,yBAAyB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAEjE,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;QACnE,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG;YACd,GAAG,WAAW,EAAE;YAChB,mBAAmB,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;SACvE,CAAC;QACF,MAAM,OAAO,GAAG,WAAW,CAAC;YAC1B,MAAM,EAAE,CAAC,EAAE,CAAC;YACZ,SAAS,EAAE;gBACT;oBACE;wBACE,EAAE,EAAE,MAAM;wBACV,MAAM,EAAE,KAAK;wBACb,QAAQ,EAAE,KAAK;wBACf,OAAO,EAAE,SAAS;wBAClB,YAAY,EAAE,YAAY;wBAC1B,SAAS,EAAE,IAAI,IAAI,CAAC,sBAAsB,CAAC;qBAC5C;iBACF;aACF;SACF,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAE5C,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,yBAAyB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAEjE,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QAChE,MAAM,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,oBAAoB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yFAAyF,EAAE,KAAK,IAAI,EAAE;QACvG,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9C,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;QAElD,MAAM,MAAM,CAAC,GAAG,CAAC,yBAAyB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAC9E,8BAA8B,CAC/B,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,sCAAsC,EAAE,GAAG,EAAE;IACpD,MAAM,mBAAmB,GAAG;QAC1B,EAAE,EAAE,MAAM;QACV,MAAM,EAAE,KAAK;QACb,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,SAAS;QAClB,YAAY,EAAE,YAAY;QAC1B,SAAS,EAAE,IAAI,IAAI,CAAC,sBAAsB,CAAC;KAC5C,CAAC;IACF,MAAM,UAAU,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IAC/E,MAAM,KAAK,GAAG;QACZ,IAAI,EAAE,SAAkB;QACxB,OAAO,EAAE,SAAS;QAClB,MAAM,EAAE,KAAK;QACb,QAAQ,EAAE,KAAK;QACf,MAAM,EAAE,OAAO;QACf,UAAU,EAAE,cAAc;KAC3B,CAAC;IAEF,EAAE,CAAC,8EAA8E,EAAE,KAAK,IAAI,EAAE;QAC5F,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,WAAW,CAAC;YAC1B,MAAM,EAAE,CAAC,CAAC,mBAAmB,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC;YACjD,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;SAC/C,CAAC,CAAC;QACH,MAAM,SAAS,GAAG,WAAW,CAA2B,OAAO,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;QAC9E,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;QAElD,MAAM,GAAG,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;QAExC,MAAM,CAAC,SAAS,CAAC,CAAC,oBAAoB,CACpC,MAAM,CAAC,gBAAgB,CAAC;YACtB,IAAI,EAAE,SAAS;YACf,aAAa,EAAE,cAAc;YAC7B,kBAAkB,EAAE,SAAS;YAC7B,MAAM,EAAE,OAAO;SAChB,CAAC,CACH,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,oBAAoB,CAAC,0BAA0B,EAAE;YACnE,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,KAAK;YACb,QAAQ,EAAE,KAAK;YACf,aAAa,EAAE,MAAM;SACtB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;QAC3D,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9C,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;QAElD,MAAM,GAAG,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;QAExC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yFAAyF,EAAE,KAAK,IAAI,EAAE;QACvG,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,WAAW,CAAC;YAC1B,MAAM,EAAE;gBACN,CAAC,mBAAmB,CAAC;gBACrB,CAAC,UAAU,CAAC;gBACZ,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,CAAC;aACjE;YACD,SAAS,EAAE,CAAC,EAAE,CAAC;SAChB,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;QAElD,MAAM,GAAG,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;QAExC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IAC7C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { PaymentWebhookVerifier } from '@openora/core/contracts';
2
+ export declare class HmacPaymentWebhookVerifier implements PaymentWebhookVerifier {
3
+ private readonly secret;
4
+ constructor(secret: string | undefined);
5
+ verify(rawBody: string, headers: Record<string, string | string[] | undefined>): boolean;
6
+ }
7
+ //# sourceMappingURL=hmac-payment-webhook-verifier.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hmac-payment-webhook-verifier.d.ts","sourceRoot":"","sources":["../../../src/wallet/adapters/hmac-payment-webhook-verifier.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAYtE,qBAAa,0BAA2B,YAAW,sBAAsB;IAC3D,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,MAAM,GAAG,SAAS;IAEvD,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,GAAG,OAAO;CAgBzF"}
@@ -0,0 +1,30 @@
1
+ import { createHmac, timingSafeEqual } from 'node:crypto';
2
+ function headerValue(headers, name) {
3
+ const lowerName = name.toLowerCase();
4
+ const match = Object.entries(headers).find(([key]) => key.toLowerCase() === lowerName);
5
+ const raw = match?.[1];
6
+ return Array.isArray(raw) ? (raw[0] ?? null) : (raw ?? null);
7
+ }
8
+ export class HmacPaymentWebhookVerifier {
9
+ secret;
10
+ constructor(secret) {
11
+ this.secret = secret;
12
+ }
13
+ verify(rawBody, headers) {
14
+ const signature = headerValue(headers, 'x-payment-signature');
15
+ if (!this.secret || !signature) {
16
+ return false;
17
+ }
18
+ const provided = signature.startsWith('sha256=')
19
+ ? signature.slice('sha256='.length)
20
+ : signature;
21
+ const expected = createHmac('sha256', this.secret).update(rawBody, 'utf8').digest('hex');
22
+ const expectedBuf = Buffer.from(expected, 'utf8');
23
+ const providedBuf = Buffer.from(provided, 'utf8');
24
+ if (expectedBuf.length !== providedBuf.length) {
25
+ return false;
26
+ }
27
+ return timingSafeEqual(expectedBuf, providedBuf);
28
+ }
29
+ }
30
+ //# sourceMappingURL=hmac-payment-webhook-verifier.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hmac-payment-webhook-verifier.js","sourceRoot":"","sources":["../../../src/wallet/adapters/hmac-payment-webhook-verifier.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAG1D,SAAS,WAAW,CAClB,OAAsD,EACtD,IAAY;IAEZ,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IACrC,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,SAAS,CAAC,CAAC;IACvF,MAAM,GAAG,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;IACvB,OAAO,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC;AAC/D,CAAC;AAED,MAAM,OAAO,0BAA0B;IACR;IAA7B,YAA6B,MAA0B;QAA1B,WAAM,GAAN,MAAM,CAAoB;IAAG,CAAC;IAE3D,MAAM,CAAC,OAAe,EAAE,OAAsD;QAC5E,MAAM,SAAS,GAAG,WAAW,CAAC,OAAO,EAAE,qBAAqB,CAAC,CAAC;QAC9D,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;YAC/B,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,QAAQ,GAAG,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC;YAC9C,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC;YACnC,CAAC,CAAC,SAAS,CAAC;QACd,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACzF,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAClD,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAClD,IAAI,WAAW,CAAC,MAAM,KAAK,WAAW,CAAC,MAAM,EAAE,CAAC;YAC9C,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,eAAe,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IACnD,CAAC;CACF"}