@dharma-ai-labs/agent-fabric 0.2.107 → 0.2.108

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 (40) hide show
  1. package/README.md +15 -0
  2. package/dist/codexBoundSession.d.ts +42 -0
  3. package/dist/codexBoundSession.d.ts.map +1 -0
  4. package/dist/codexBoundSession.js +106 -0
  5. package/dist/codexBoundSession.js.map +1 -0
  6. package/dist/codexBoundSession.test.d.ts +2 -0
  7. package/dist/codexBoundSession.test.d.ts.map +1 -0
  8. package/dist/codexBoundSession.test.js +619 -0
  9. package/dist/codexBoundSession.test.js.map +1 -0
  10. package/dist/codexInboxSession.d.ts +75 -0
  11. package/dist/codexInboxSession.d.ts.map +1 -0
  12. package/dist/codexInboxSession.js +157 -0
  13. package/dist/codexInboxSession.js.map +1 -0
  14. package/dist/cooperativeInboxSession.d.ts +89 -0
  15. package/dist/cooperativeInboxSession.d.ts.map +1 -0
  16. package/dist/cooperativeInboxSession.js +195 -0
  17. package/dist/cooperativeInboxSession.js.map +1 -0
  18. package/dist/cooperativeInboxSession.test.d.ts +2 -0
  19. package/dist/cooperativeInboxSession.test.d.ts.map +1 -0
  20. package/dist/cooperativeInboxSession.test.js +354 -0
  21. package/dist/cooperativeInboxSession.test.js.map +1 -0
  22. package/dist/index.d.ts +1 -1
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/index.js +2 -1
  25. package/dist/index.js.map +1 -1
  26. package/dist/index.test.js +2 -2
  27. package/dist/providerSessionChannel.d.ts +129 -0
  28. package/dist/providerSessionChannel.d.ts.map +1 -0
  29. package/dist/providerSessionChannel.js +249 -0
  30. package/dist/providerSessionChannel.js.map +1 -0
  31. package/dist/providerSessionChannel.test.d.ts +2 -0
  32. package/dist/providerSessionChannel.test.d.ts.map +1 -0
  33. package/dist/providerSessionChannel.test.js +246 -0
  34. package/dist/providerSessionChannel.test.js.map +1 -0
  35. package/dist/providerSessionReplyRecovery.d.ts +33 -0
  36. package/dist/providerSessionReplyRecovery.d.ts.map +1 -0
  37. package/dist/providerSessionReplyRecovery.js +58 -0
  38. package/dist/providerSessionReplyRecovery.js.map +1 -0
  39. package/dist/schemas/provider-session-completion.schema.json +22 -0
  40. package/package.json +7 -7
@@ -1878,13 +1878,13 @@ test('relay probe opens an authenticated session without polling or leasing work
1878
1878
  },
1879
1879
  openSession: async (version) => {
1880
1880
  sessions += 1;
1881
- assert.equal(version, '0.2.107');
1881
+ assert.equal(version, '0.2.108');
1882
1882
  return { ok: true };
1883
1883
  },
1884
1884
  }));
1885
1885
  assert.equal(sessions, 1);
1886
1886
  assert.deepEqual(result, {
1887
- ok: true, connected: true, organizationId: 'org_test', deviceId: 'device_test', relayVersion: '0.2.107',
1887
+ ok: true, connected: true, organizationId: 'org_test', deviceId: 'device_test', relayVersion: '0.2.108',
1888
1888
  });
1889
1889
  });
1890
1890
  test('relay probe fails closed when the server does not acknowledge the session', async () => {
@@ -0,0 +1,129 @@
1
+ import { type SessionBindingScope, type SessionQuestion, type SessionQuestionVerifier } from '@dharma-ai-labs/agent-fabric-contracts';
2
+ type Mode = 'bridge_owned' | 'cooperative';
3
+ type FailureCode = 'provider_unavailable' | 'budget_denied' | 'validation_failed' | 'execution_failed';
4
+ type Registration = {
5
+ bindingId: string;
6
+ workspaceId: string;
7
+ endpointId: string;
8
+ repositoryBindingId: string;
9
+ membershipId: string;
10
+ deviceId: string;
11
+ provider: 'codex';
12
+ mode: Mode;
13
+ revision: number;
14
+ state: 'attached' | 'detached';
15
+ leaseUntil: string;
16
+ replay: boolean;
17
+ };
18
+ type Acknowledgement = {
19
+ questionId: string;
20
+ taskId: string;
21
+ targetBindingId: string;
22
+ state: 'queued' | 'accepted' | 'answered' | 'failed';
23
+ replay: boolean;
24
+ correlationId: string;
25
+ };
26
+ type Reply = {
27
+ questionId: string;
28
+ taskId: string;
29
+ outcome: 'answered' | 'failed';
30
+ answer: string;
31
+ failureCode: FailureCode | null;
32
+ };
33
+ type Observation = {
34
+ questionId: string;
35
+ taskId: string;
36
+ targetBindingId: string;
37
+ state: 'preparing' | 'queued' | 'accepted' | 'answered' | 'failed' | 'expired' | 'unavailable';
38
+ answer: string | null;
39
+ failureCode: FailureCode | null;
40
+ replyReceiptHash: string | null;
41
+ correlationId: string;
42
+ };
43
+ export declare function createProviderSessionChannel(input: {
44
+ transport: {
45
+ signedPost(route: string, body: unknown): Promise<Record<string, unknown>>;
46
+ };
47
+ scope: SessionBindingScope;
48
+ mode: Mode;
49
+ expectedRevision: number;
50
+ assertOwner(): Promise<boolean>;
51
+ verifier: Pick<SessionQuestionVerifier, 'resolvePublicKey'>;
52
+ authorizeContent(content: string, kind: 'question' | 'answer'): Promise<boolean>;
53
+ now?: () => Date;
54
+ }): {
55
+ inspect: () => Promise<Registration | null>;
56
+ reconnect: () => Promise<{
57
+ correlationId: string | null;
58
+ bindingId: string;
59
+ workspaceId: string;
60
+ endpointId: string;
61
+ repositoryBindingId: string;
62
+ membershipId: string;
63
+ deviceId: string;
64
+ provider: "codex";
65
+ mode: Mode;
66
+ revision: number;
67
+ state: "attached" | "detached";
68
+ leaseUntil: string;
69
+ replay: boolean;
70
+ }>;
71
+ attach: () => Promise<{
72
+ correlationId: string | null;
73
+ bindingId: string;
74
+ workspaceId: string;
75
+ endpointId: string;
76
+ repositoryBindingId: string;
77
+ membershipId: string;
78
+ deviceId: string;
79
+ provider: "codex";
80
+ mode: Mode;
81
+ revision: number;
82
+ state: "attached" | "detached";
83
+ leaseUntil: string;
84
+ replay: boolean;
85
+ }>;
86
+ heartbeat: () => Promise<{
87
+ correlationId: string | null;
88
+ bindingId: string;
89
+ workspaceId: string;
90
+ endpointId: string;
91
+ repositoryBindingId: string;
92
+ membershipId: string;
93
+ deviceId: string;
94
+ provider: "codex";
95
+ mode: Mode;
96
+ revision: number;
97
+ state: "attached" | "detached";
98
+ leaseUntil: string;
99
+ replay: boolean;
100
+ }>;
101
+ detach: () => Promise<{
102
+ correlationId: string | null;
103
+ bindingId: string;
104
+ workspaceId: string;
105
+ endpointId: string;
106
+ repositoryBindingId: string;
107
+ membershipId: string;
108
+ deviceId: string;
109
+ provider: "codex";
110
+ mode: Mode;
111
+ revision: number;
112
+ state: "attached" | "detached";
113
+ leaseUntil: string;
114
+ replay: boolean;
115
+ }>;
116
+ inbox: () => Promise<SessionQuestion[]>;
117
+ ask: (request: {
118
+ targetBindingId: string;
119
+ taskId: string;
120
+ category: string;
121
+ question: string;
122
+ maximumProviderCostCents: number;
123
+ }) => Promise<Acknowledgement>;
124
+ accept: (questionId: string, taskId: string) => Promise<Acknowledgement>;
125
+ reply: (request: Reply) => Promise<Acknowledgement>;
126
+ read: (questionId: string, taskId: string, targetBindingId: string) => Promise<Observation>;
127
+ };
128
+ export {};
129
+ //# sourceMappingURL=providerSessionChannel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"providerSessionChannel.d.ts","sourceRoot":"","sources":["../src/providerSessionChannel.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,249 @@
1
+ import { types } from 'node:util';
2
+ import { inspectSessionQuestionForBinding } from '@dharma-ai-labs/agent-fabric-contracts';
3
+ const UUID = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$(?![\s\S])/i;
4
+ const CATEGORY = /^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$(?![\s\S])/;
5
+ const CONTROL = /[\u0000-\u001f\u007f]/;
6
+ const REPLY_CONTROL = /[\u0000-\u0008\u000b\u000c\u000e-\u001f\u007f]/;
7
+ const SECRET = /-----BEGIN[^\r\n]*PRIVATE KEY-----|\b(?:gh[pousr]_|github_pat_|sk_live_|sk_test_)[A-Za-z0-9_]{12,}|\bBearer\s+[A-Za-z0-9_.+-]{8,}|\b(?:password|api[_-]?key|access[_-]?token|client[_-]?secret)\s*[:=]\s*\S{8,}/i;
8
+ const FAILURE = ['provider_unavailable', 'budget_denied', 'validation_failed', 'execution_failed'];
9
+ function identifier(value) { return typeof value === 'string' && UUID.test(value); }
10
+ function fact(condition, kind) {
11
+ if (!condition)
12
+ throw new Error(`provider_session_channel_${kind}`);
13
+ }
14
+ function record(value, fields, kind) {
15
+ fact(value && typeof value === 'object' && !Array.isArray(value) && !types.isProxy(value)
16
+ && Object.getPrototypeOf(value) === Object.prototype, kind);
17
+ const descriptors = Object.getOwnPropertyDescriptors(value);
18
+ fact(Reflect.ownKeys(value).every(key => typeof key === 'string')
19
+ && Object.keys(descriptors).sort().join(',') === [...fields].sort().join(',')
20
+ && Object.values(descriptors).every(item => Object.hasOwn(item, 'value') && item.enumerable), kind);
21
+ return Object.fromEntries(Object.entries(descriptors).map(([key, descriptor]) => [key, descriptor.value]));
22
+ }
23
+ function safeWire(value, depth = 0, seen = new Set(), budget = { nodes: 0 }) {
24
+ fact(depth <= 8 && ++budget.nodes <= 1000, 'response');
25
+ if (value === null || typeof value === 'boolean' || typeof value === 'number')
26
+ return;
27
+ if (typeof value === 'string') {
28
+ fact(value.length <= 4096, 'response');
29
+ return;
30
+ }
31
+ fact(value && typeof value === 'object' && !types.isProxy(value) && !seen.has(value), 'response');
32
+ const array = Array.isArray(value), descriptors = Object.getOwnPropertyDescriptors(value);
33
+ fact(Object.getPrototypeOf(value) === (array ? Array.prototype : Object.prototype)
34
+ && Reflect.ownKeys(value).length <= 100 && Reflect.ownKeys(value).every(key => typeof key === 'string')
35
+ && Object.values(descriptors).every(item => Object.hasOwn(item, 'value')), 'response');
36
+ seen.add(value);
37
+ try {
38
+ for (const descriptor of Object.values(descriptors))
39
+ safeWire(descriptor.value, depth + 1, seen, budget);
40
+ }
41
+ finally {
42
+ seen.delete(value);
43
+ }
44
+ }
45
+ function text(value, kind, multiline = false) {
46
+ fact(typeof value === 'string' && value.length <= 2000 && value.trim().length > 0
47
+ && !(multiline ? REPLY_CONTROL : CONTROL).test(value) && !SECRET.test(value)
48
+ && (multiline || value.trim() === value), kind);
49
+ return value;
50
+ }
51
+ // This channel carries messages only. A caller must retain its real session owner;
52
+ // neither registration nor acceptance authorizes spawning a replacement worker.
53
+ export function createProviderSessionChannel(input) {
54
+ const raw = record(input.scope, ['organizationId', 'repositoryBindingId', 'workspaceId', 'endpointId',
55
+ 'membershipId', 'deviceId', 'bindingId', 'provider', 'expiresAt', 'maximumProviderCostCents'], 'input');
56
+ fact(typeof raw.organizationId === 'string' && /^[A-Za-z0-9][A-Za-z0-9_-]{0,199}$(?![\s\S])/.test(raw.organizationId)
57
+ && ['repositoryBindingId', 'workspaceId', 'endpointId', 'membershipId', 'deviceId', 'bindingId']
58
+ .every(key => identifier(raw[key]))
59
+ && raw.provider === 'codex' && typeof raw.expiresAt === 'string' && Number.isFinite(Date.parse(raw.expiresAt))
60
+ && Number.isInteger(raw.maximumProviderCostCents) && raw.maximumProviderCostCents >= 0 && raw.maximumProviderCostCents <= 10000
61
+ && ['bridge_owned', 'cooperative'].includes(input.mode) && Number.isInteger(input.expectedRevision)
62
+ && input.expectedRevision >= 0 && input.expectedRevision <= 2147483646, 'input');
63
+ const scope = raw, mode = input.mode, now = input.now || (() => new Date());
64
+ const base = { schema: 'dharma.provider-session-question-request/v1', bindingId: scope.bindingId,
65
+ workspaceId: scope.workspaceId, endpointId: scope.endpointId, repositoryBindingId: scope.repositoryBindingId };
66
+ let revision = input.expectedRevision, registration = null, closed = false;
67
+ let correlationId = null;
68
+ let serial = Promise.resolve();
69
+ function operation(run) {
70
+ const result = serial.then(run).catch(error => {
71
+ if (error instanceof Error && error.message === 'provider_session_channel_response')
72
+ closed = true;
73
+ throw error;
74
+ });
75
+ serial = result.then(() => undefined, () => undefined);
76
+ return result;
77
+ }
78
+ async function owner(live = false) {
79
+ if (closed)
80
+ throw new Error('provider_session_channel_closed');
81
+ let held = false;
82
+ try {
83
+ held = await input.assertOwner();
84
+ }
85
+ catch { /* Unconfirmed ownership cannot authorize another send. */ }
86
+ if (!held || !Number.isFinite(now().getTime()) || now().getTime() >= Date.parse(scope.expiresAt)) {
87
+ closed = true;
88
+ throw new Error('provider_session_channel_owner_lost');
89
+ }
90
+ if (live && (!registration || registration.state !== 'attached' || now().getTime() >= Date.parse(registration.leaseUntil))) {
91
+ throw new Error('provider_session_channel_unavailable');
92
+ }
93
+ }
94
+ async function post(route, body, field) {
95
+ fact(Buffer.byteLength(JSON.stringify(body), 'utf8') <= 3500, 'input');
96
+ await owner();
97
+ let response;
98
+ try {
99
+ response = await input.transport.signedPost(route, body);
100
+ }
101
+ catch {
102
+ closed = true;
103
+ throw new Error('provider_session_channel_uncertain');
104
+ }
105
+ await owner();
106
+ try {
107
+ safeWire(response);
108
+ const envelope = record(response, ['ok', 'organizationId', field, 'correlationId'], 'response');
109
+ fact(envelope.ok === true && envelope.organizationId === scope.organizationId
110
+ && identifier(envelope.correlationId), 'response');
111
+ correlationId = envelope.correlationId;
112
+ return envelope[field];
113
+ }
114
+ catch (error) {
115
+ closed = true;
116
+ throw error;
117
+ }
118
+ }
119
+ async function register(action) {
120
+ await owner(action === 'heartbeat');
121
+ fact(action === 'attach' || revision > 0, 'input');
122
+ const value = record(await post('/agent-fabric/provider-sessions', { ...base,
123
+ schema: 'dharma.provider-session-registration/v1', action, provider: 'codex', mode,
124
+ expectedRevision: revision, leaseSeconds: 60 }, 'registration'), ['bindingId', 'workspaceId', 'endpointId',
125
+ 'repositoryBindingId', 'membershipId', 'deviceId', 'provider', 'mode', 'revision', 'state', 'leaseUntil', 'replay'], 'response');
126
+ fact(['bindingId', 'workspaceId', 'endpointId', 'repositoryBindingId', 'membershipId', 'deviceId', 'provider']
127
+ .every(key => value[key] === scope[key]) && value.mode === mode
128
+ && value.revision === revision + 1 && value.state === (action === 'detach' ? 'detached' : 'attached')
129
+ && typeof value.leaseUntil === 'string' && Number.isFinite(Date.parse(value.leaseUntil))
130
+ && (action === 'detach' || Date.parse(value.leaseUntil) > now().getTime())
131
+ && Date.parse(value.leaseUntil) <= now().getTime() + 120000 && typeof value.replay === 'boolean', 'response');
132
+ registration = value;
133
+ revision = registration.revision;
134
+ if (action === 'detach')
135
+ closed = true;
136
+ return { ...registration, correlationId };
137
+ }
138
+ async function inspect() {
139
+ const result = await post('/agent-fabric/provider-sessions', { ...base,
140
+ schema: 'dharma.provider-session-registration/v1', action: 'inspect', provider: 'codex', mode,
141
+ expectedRevision: 0, leaseSeconds: 60 }, 'registration');
142
+ if (result === null)
143
+ return null;
144
+ const value = record(result, ['bindingId', 'workspaceId', 'endpointId', 'repositoryBindingId',
145
+ 'membershipId', 'deviceId', 'provider', 'mode', 'revision', 'state', 'leaseUntil', 'replay'], 'response');
146
+ fact(['bindingId', 'workspaceId', 'endpointId', 'repositoryBindingId', 'membershipId', 'deviceId', 'provider']
147
+ .every(key => value[key] === scope[key]) && value.mode === mode
148
+ && Number.isInteger(value.revision) && Number(value.revision) >= 1 && Number(value.revision) <= 2147483647
149
+ && ['attached', 'detached'].includes(value.state) && value.replay === false
150
+ && typeof value.leaseUntil === 'string' && Number.isFinite(Date.parse(value.leaseUntil))
151
+ && Date.parse(value.leaseUntil) <= now().getTime() + 120000, 'response');
152
+ return value;
153
+ }
154
+ function acknowledgement(value, expected) {
155
+ const result = record(value, ['questionId', 'taskId', 'targetBindingId', 'state', 'replay'], 'response');
156
+ fact(identifier(result.questionId)
157
+ && (!expected.questionId || result.questionId === expected.questionId) && result.taskId === expected.taskId
158
+ && result.targetBindingId === expected.targetBindingId && result.state === expected.state
159
+ && typeof result.replay === 'boolean', 'response');
160
+ return { ...result, correlationId };
161
+ }
162
+ async function question(action, additional = {}) {
163
+ await owner(true);
164
+ const result = await post('/agent-fabric/provider-session-questions', { ...base, action, ...additional }, 'result');
165
+ await owner(true);
166
+ return result;
167
+ }
168
+ async function content(value, kind) {
169
+ fact(await input.authorizeContent(value, kind), 'input');
170
+ await owner(true);
171
+ }
172
+ return {
173
+ inspect: () => operation(inspect),
174
+ reconnect: () => operation(async () => {
175
+ const observed = await inspect();
176
+ if (observed?.state === 'detached') {
177
+ closed = true;
178
+ throw new Error('provider_session_channel_revoked');
179
+ }
180
+ // Observation does not grant presence. Attachment still uses the server CAS
181
+ // and the same local owner fence; a competing update must fail, not retarget.
182
+ revision = observed?.revision || 0;
183
+ fact(revision <= 2147483646, 'response');
184
+ return register('attach');
185
+ }),
186
+ attach: () => operation(() => register('attach')),
187
+ heartbeat: () => operation(() => register('heartbeat')),
188
+ detach: () => operation(() => register('detach')),
189
+ inbox: () => operation(async () => {
190
+ const result = record(await question('inbox'), ['offers'], 'response');
191
+ fact(Array.isArray(result.offers) && result.offers.length <= 5, 'response');
192
+ const offers = [], seen = new Set();
193
+ for (const candidate of result.offers) {
194
+ const inspected = inspectSessionQuestionForBinding(candidate, scope, input.verifier, now());
195
+ fact(inspected.ok, 'response');
196
+ const offer = candidate;
197
+ text(offer.question, 'response');
198
+ fact(!seen.has(offer.questionId), 'response');
199
+ seen.add(offer.questionId);
200
+ offers.push(offer);
201
+ }
202
+ return offers;
203
+ }),
204
+ ask: (request) => operation(async () => {
205
+ const value = record(request, ['targetBindingId', 'taskId', 'category', 'question', 'maximumProviderCostCents'], 'input');
206
+ fact(identifier(value.targetBindingId) && identifier(value.taskId) && value.targetBindingId !== scope.bindingId
207
+ && typeof value.category === 'string' && value.category.length <= 64 && CATEGORY.test(value.category)
208
+ && Number.isInteger(value.maximumProviderCostCents) && value.maximumProviderCostCents >= 0
209
+ && value.maximumProviderCostCents <= scope.maximumProviderCostCents, 'input');
210
+ await content(text(value.question, 'input'), 'question');
211
+ return acknowledgement(await question('ask', value), { taskId: request.taskId, targetBindingId: request.targetBindingId, state: 'queued' });
212
+ }),
213
+ accept: (questionId, taskId) => operation(async () => {
214
+ fact(identifier(questionId) && identifier(taskId), 'input');
215
+ return acknowledgement(await question('accept', { questionId }), { questionId, taskId, targetBindingId: scope.bindingId, state: 'accepted' });
216
+ }),
217
+ reply: (request) => operation(async () => {
218
+ const value = record(request, ['questionId', 'taskId', 'outcome', 'answer', 'failureCode'], 'input');
219
+ fact(identifier(value.questionId) && identifier(value.taskId), 'input');
220
+ if (value.outcome === 'answered') {
221
+ fact(value.failureCode === null, 'input');
222
+ await content(text(value.answer, 'input', true), 'answer');
223
+ }
224
+ else
225
+ fact(value.outcome === 'failed' && value.answer === '' && FAILURE.includes(value.failureCode), 'input');
226
+ const { taskId, ...payload } = value;
227
+ return acknowledgement(await question('reply', payload), { questionId: request.questionId, taskId: String(taskId),
228
+ targetBindingId: scope.bindingId, state: request.outcome });
229
+ }),
230
+ read: (questionId, taskId, targetBindingId) => operation(async () => {
231
+ fact([questionId, taskId, targetBindingId].every(identifier), 'input');
232
+ const value = record(await question('read', { questionId }), ['questionId', 'taskId', 'targetBindingId',
233
+ 'state', 'answer', 'failureCode', 'replyReceiptHash'], 'response');
234
+ fact(value.questionId === questionId && value.taskId === taskId && value.targetBindingId === targetBindingId
235
+ && ['preparing', 'queued', 'accepted', 'answered', 'failed', 'expired', 'unavailable'].includes(value.state), 'response');
236
+ if (value.state === 'answered') {
237
+ text(value.answer, 'response', true);
238
+ fact(value.failureCode === null, 'response');
239
+ }
240
+ else
241
+ fact(value.answer === null && (value.state === 'failed' ? FAILURE.includes(value.failureCode) : value.failureCode === null), 'response');
242
+ fact(['answered', 'failed'].includes(value.state)
243
+ ? typeof value.replyReceiptHash === 'string' && /^sha256:[0-9a-f]{64}$(?![\s\S])/.test(value.replyReceiptHash)
244
+ : value.replyReceiptHash === null, 'response');
245
+ return { ...value, correlationId };
246
+ }),
247
+ };
248
+ }
249
+ //# sourceMappingURL=providerSessionChannel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"providerSessionChannel.js","sourceRoot":"","sources":["../src/providerSessionChannel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,gCAAgC,EACT,MAAM,wCAAwC,CAAC;AAa/E,MAAM,IAAI,GAAG,sFAAsF,CAAC;AACpG,MAAM,QAAQ,GAAG,2CAA2C,CAAC;AAC7D,MAAM,OAAO,GAAG,uBAAuB,CAAC;AACxC,MAAM,aAAa,GAAG,gDAAgD,CAAC;AACvE,MAAM,MAAM,GAAG,kNAAkN,CAAC;AAClO,MAAM,OAAO,GAAG,CAAC,sBAAsB,EAAE,eAAe,EAAE,mBAAmB,EAAE,kBAAkB,CAAC,CAAC;AACnG,SAAS,UAAU,CAAC,KAAc,IAAqB,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC9G,SAAS,IAAI,CAAC,SAAkB,EAAE,IAA0B;IAC1D,IAAI,CAAC,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,IAAI,EAAE,CAAC,CAAC;AACtE,CAAC;AACD,SAAS,MAAM,CAAC,KAAc,EAAE,MAAgB,EAAE,IAA0B;IAC1E,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;WACpF,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAC9D,MAAM,WAAW,GAAG,MAAM,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC;IAC5D,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC;WAC5D,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC;WAC1E,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,CAAC;IACtG,OAAO,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC7G,CAAC;AACD,SAAS,QAAQ,CAAC,KAAc,EAAE,KAAK,GAAG,CAAC,EAAE,OAAO,IAAI,GAAG,EAAU,EAAE,MAAM,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE;IAC1F,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,IAAI,IAAI,EAAE,UAAU,CAAC,CAAC;IACvD,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,SAAS,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO;IACtF,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAAC,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,EAAE,UAAU,CAAC,CAAC;QAAC,OAAO;IAAC,CAAC;IAClF,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,CAAC;IAClG,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,WAAW,GAAG,MAAM,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC;IAC1F,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC;WAC7E,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,IAAI,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC;WACpG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;IACzF,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAChB,IAAI,CAAC;QAAC,KAAK,MAAM,UAAU,IAAI,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC;YAAE,QAAQ,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAAC,CAAC;YACzG,CAAC;QAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAAC,CAAC;AACjC,CAAC;AACD,SAAS,IAAI,CAAC,KAAc,EAAE,IAA0B,EAAE,SAAS,GAAG,KAAK;IACzE,IAAI,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;WAC5E,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;WACzE,CAAC,SAAS,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC;IAClD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,mFAAmF;AACnF,gFAAgF;AAChF,MAAM,UAAU,4BAA4B,CAAC,KAO5C;IACC,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,gBAAgB,EAAE,qBAAqB,EAAE,aAAa,EAAE,YAAY;QACnG,cAAc,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,0BAA0B,CAAC,EAAE,OAAO,CAAC,CAAC;IAC1G,IAAI,CAAC,OAAO,GAAG,CAAC,cAAc,KAAK,QAAQ,IAAI,6CAA6C,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC;WAChH,CAAC,qBAAqB,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,WAAW,CAAC;aAC7F,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;WAClC,GAAG,CAAC,QAAQ,KAAK,OAAO,IAAI,OAAO,GAAG,CAAC,SAAS,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;WAC3G,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,wBAAwB,CAAC,IAAI,GAAG,CAAC,wBAAwB,IAAI,CAAC,IAAI,GAAG,CAAC,wBAAwB,IAAI,KAAK;WAC5H,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,gBAAgB,CAAC;WAChG,KAAK,CAAC,gBAAgB,IAAI,CAAC,IAAI,KAAK,CAAC,gBAAgB,IAAI,UAAU,EAAE,OAAO,CAAC,CAAC;IACnF,MAAM,KAAK,GAAG,GAA0B,EAAE,IAAI,GAAG,KAAK,CAAC,IAAI,EAAE,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IACnG,MAAM,IAAI,GAAG,EAAE,MAAM,EAAE,6CAA6C,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS;QAC9F,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,mBAAmB,EAAE,KAAK,CAAC,mBAAmB,EAAE,CAAC;IACjH,IAAI,QAAQ,GAAG,KAAK,CAAC,gBAAgB,EAAE,YAAY,GAAwB,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC;IAChG,IAAI,aAAa,GAAkB,IAAI,CAAC;IACxC,IAAI,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAC/B,SAAS,SAAS,CAAI,GAAqB;QACzC,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;YAC5C,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,OAAO,KAAK,mCAAmC;gBAAE,MAAM,GAAG,IAAI,CAAC;YACnG,MAAM,KAAK,CAAC;QACd,CAAC,CAAC,CAAC;QACH,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QAAC,OAAO,MAAM,CAAC;IACxE,CAAC;IACD,KAAK,UAAU,KAAK,CAAC,IAAI,GAAG,KAAK;QAC/B,IAAI,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;QAC/D,IAAI,IAAI,GAAG,KAAK,CAAC;QACjB,IAAI,CAAC;YAAC,IAAI,GAAG,MAAM,KAAK,CAAC,WAAW,EAAE,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,0DAA0D,CAAC,CAAC;QAC9G,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;YACjG,MAAM,GAAG,IAAI,CAAC;YAAC,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACxE,CAAC;QACD,IAAI,IAAI,IAAI,CAAC,CAAC,YAAY,IAAI,YAAY,CAAC,KAAK,KAAK,UAAU,IAAI,GAAG,EAAE,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;YAC3H,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;IACD,KAAK,UAAU,IAAI,CAAC,KAAa,EAAE,IAA6B,EAAE,KAAgC;QAChG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,IAAI,IAAI,EAAE,OAAO,CAAC,CAAC;QACvE,MAAM,KAAK,EAAE,CAAC;QACd,IAAI,QAAiB,CAAC;QACtB,IAAI,CAAC;YAAC,QAAQ,GAAG,MAAM,KAAK,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAAC,CAAC;QACjE,MAAM,CAAC;YAAC,MAAM,GAAG,IAAI,CAAC;YAAC,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;QAAC,CAAC;QAC/E,MAAM,KAAK,EAAE,CAAC;QACd,IAAI,CAAC;YACH,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACnB,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,eAAe,CAAC,EAAE,UAAU,CAAC,CAAC;YAChG,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,IAAI,IAAI,QAAQ,CAAC,cAAc,KAAK,KAAK,CAAC,cAAc;mBACxE,UAAU,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,UAAU,CAAC,CAAC;YACrD,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC;YACvC,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAAC,MAAM,GAAG,IAAI,CAAC;YAAC,MAAM,KAAK,CAAC;QAAC,CAAC;IACjD,CAAC;IACD,KAAK,UAAU,QAAQ,CAAC,MAAyC;QAC/D,MAAM,KAAK,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC;QACpC,IAAI,CAAC,MAAM,KAAK,QAAQ,IAAI,QAAQ,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;QACnD,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC,iCAAiC,EAAE,EAAE,GAAG,IAAI;YAC1E,MAAM,EAAE,yCAAyC,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI;YAClF,gBAAgB,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE,cAAc,CAAC,EAAE,CAAC,WAAW,EAAE,aAAa,EAAE,YAAY;YAC1G,qBAAqB,EAAE,cAAc,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,CAAC,EAAE,UAAU,CAAC,CAAC;QACnI,IAAI,CAAC,CAAC,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,qBAAqB,EAAE,cAAc,EAAE,UAAU,EAAE,UAAU,CAAC;aAC3G,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,GAAgC,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI;eACzF,KAAK,CAAC,QAAQ,KAAK,QAAQ,GAAG,CAAC,IAAI,KAAK,CAAC,KAAK,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC;eAClG,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;eACrF,CAAC,MAAM,KAAK,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;eACvE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,GAAG,EAAE,CAAC,OAAO,EAAE,GAAG,MAAM,IAAI,OAAO,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,UAAU,CAAC,CAAC;QAChH,YAAY,GAAG,KAAqB,CAAC;QAAC,QAAQ,GAAG,YAAY,CAAC,QAAQ,CAAC;QACvE,IAAI,MAAM,KAAK,QAAQ;YAAE,MAAM,GAAG,IAAI,CAAC;QACvC,OAAO,EAAE,GAAG,YAAY,EAAE,aAAa,EAAE,CAAC;IAC5C,CAAC;IACD,KAAK,UAAU,OAAO;QACpB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,iCAAiC,EAAE,EAAE,GAAG,IAAI;YACpE,MAAM,EAAE,yCAAyC,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI;YAC7F,gBAAgB,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE,cAAc,CAAC,CAAC;QAC3D,IAAI,MAAM,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QACjC,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,qBAAqB;YAC3F,cAAc,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,CAAC,EAAE,UAAU,CAAC,CAAC;QAC5G,IAAI,CAAC,CAAC,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,qBAAqB,EAAE,cAAc,EAAE,UAAU,EAAE,UAAU,CAAC;aAC3G,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,GAAgC,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI;eACzF,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,UAAU;eACvG,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK;eACxE,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;eACrF,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,GAAG,EAAE,CAAC,OAAO,EAAE,GAAG,MAAM,EAAE,UAAU,CAAC,CAAC;QAC3E,OAAO,KAAqB,CAAC;IAC/B,CAAC;IACD,SAAS,eAAe,CAAC,KAAc,EAAE,QAAyF;QAChI,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,YAAY,EAAE,QAAQ,EAAE,iBAAiB,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,UAAU,CAAC,CAAC;QACzG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC;eAC7B,CAAC,CAAC,QAAQ,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,KAAK,QAAQ,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM;eACxG,MAAM,CAAC,eAAe,KAAK,QAAQ,CAAC,eAAe,IAAI,MAAM,CAAC,KAAK,KAAK,QAAQ,CAAC,KAAK;eACtF,OAAO,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,UAAU,CAAC,CAAC;QACrD,OAAO,EAAE,GAAG,MAAM,EAAE,aAAa,EAAqB,CAAC;IACzD,CAAC;IACD,KAAK,UAAU,QAAQ,CAAC,MAAc,EAAE,aAAsC,EAAE;QAC9E,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;QAClB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,0CAA0C,EAAE,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,EAAE,EAAE,QAAQ,CAAC,CAAC;QACpH,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;QAAC,OAAO,MAAM,CAAC;IACnC,CAAC;IACD,KAAK,UAAU,OAAO,CAAC,KAAa,EAAE,IAA2B;QAC/D,IAAI,CAAC,MAAM,KAAK,CAAC,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;QAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;IAC9E,CAAC;IACD,OAAO;QACL,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC;QACjC,SAAS,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE;YACpC,MAAM,QAAQ,GAAG,MAAM,OAAO,EAAE,CAAC;YACjC,IAAI,QAAQ,EAAE,KAAK,KAAK,UAAU,EAAE,CAAC;gBAAC,MAAM,GAAG,IAAI,CAAC;gBAAC,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;YAAC,CAAC;YAC3G,4EAA4E;YAC5E,8EAA8E;YAC9E,QAAQ,GAAG,QAAQ,EAAE,QAAQ,IAAI,CAAC,CAAC;YACnC,IAAI,CAAC,QAAQ,IAAI,UAAU,EAAE,UAAU,CAAC,CAAC;YACzC,OAAO,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAC5B,CAAC,CAAC;QACF,MAAM,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACjD,SAAS,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QACvD,MAAM,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACjD,KAAK,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE;YAChC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,UAAU,CAAC,CAAC;YACvE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE,UAAU,CAAC,CAAC;YAC5E,MAAM,MAAM,GAAsB,EAAE,EAAE,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;YAC/D,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBACtC,MAAM,SAAS,GAAG,gCAAgC,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;gBAC5F,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;gBAAC,MAAM,KAAK,GAAG,SAA4B,CAAC;gBAC3E,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;gBACjC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC,CAAC;gBAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;gBAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAChG,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC;QACF,GAAG,EAAE,CAAC,OAA0H,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE;YACxJ,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC,iBAAiB,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,0BAA0B,CAAC,EAAE,OAAO,CAAC,CAAC;YAC1H,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,eAAe,KAAK,KAAK,CAAC,SAAS;mBAC1G,OAAO,KAAK,CAAC,QAAQ,KAAK,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,IAAI,EAAE,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;mBAClG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,wBAAwB,CAAC,IAAI,KAAK,CAAC,wBAAwB,IAAI,CAAC;mBACvF,KAAK,CAAC,wBAAwB,IAAI,KAAK,CAAC,wBAAwB,EAAE,OAAO,CAAC,CAAC;YAChF,MAAM,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,UAAU,CAAC,CAAC;YACzD,OAAO,eAAe,CAAC,MAAM,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,eAAe,EAAE,OAAO,CAAC,eAAe,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC9I,CAAC,CAAC;QACF,MAAM,EAAE,CAAC,UAAkB,EAAE,MAAc,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE;YACnE,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC;YAC5D,OAAO,eAAe,CAAC,MAAM,QAAQ,CAAC,QAAQ,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,eAAe,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;QAChJ,CAAC,CAAC;QACF,KAAK,EAAE,CAAC,OAAc,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE;YAC9C,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,aAAa,CAAC,EAAE,OAAO,CAAC,CAAC;YACrG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC;YACxE,IAAI,KAAK,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;gBACjC,IAAI,CAAC,KAAK,CAAC,WAAW,KAAK,IAAI,EAAE,OAAO,CAAC,CAAC;gBAAC,MAAM,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,QAAQ,CAAC,CAAC;YACxG,CAAC;;gBAAM,IAAI,CAAC,KAAK,CAAC,OAAO,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,EAAE,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC,CAAC;YAC/G,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,EAAE,GAAG,KAAK,CAAC;YACrC,OAAO,eAAe,CAAC,MAAM,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;gBAC/G,eAAe,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;QAChE,CAAC,CAAC;QACF,IAAI,EAAE,CAAC,UAAkB,EAAE,MAAc,EAAE,eAAuB,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE;YAC1F,IAAI,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,eAAe,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC,CAAC;YACvE,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,QAAQ,CAAC,MAAM,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,YAAY,EAAE,QAAQ,EAAE,iBAAiB;gBACrG,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,kBAAkB,CAAC,EAAE,UAAU,CAAC,CAAC;YACrE,IAAI,CAAC,KAAK,CAAC,UAAU,KAAK,UAAU,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,IAAI,KAAK,CAAC,eAAe,KAAK,eAAe;mBACvG,CAAC,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,CAAC;YAC5H,IAAI,KAAK,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;gBAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;gBAAC,IAAI,CAAC,KAAK,CAAC,WAAW,KAAK,IAAI,EAAE,UAAU,CAAC,CAAC;YAAC,CAAC;;gBAClH,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,KAAK,IAAI,CAAC,EAAE,UAAU,CAAC,CAAC;YAC9I,IAAI,CAAC,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC;gBAC/C,CAAC,CAAC,OAAO,KAAK,CAAC,gBAAgB,KAAK,QAAQ,IAAI,iCAAiC,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC;gBAC9G,CAAC,CAAC,KAAK,CAAC,gBAAgB,KAAK,IAAI,EAAE,UAAU,CAAC,CAAC;YACjD,OAAO,EAAE,GAAG,KAAK,EAAE,aAAa,EAAiB,CAAC;QACpD,CAAC,CAAC;KACH,CAAC;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=providerSessionChannel.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"providerSessionChannel.test.d.ts","sourceRoot":"","sources":["../src/providerSessionChannel.test.ts"],"names":[],"mappings":""}