@ibgib/core-gib 0.1.8 → 0.1.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agent-helpers.d.mts +45 -0
- package/dist/agent-helpers.d.mts.map +1 -0
- package/dist/agent-helpers.mjs +36 -0
- package/dist/agent-helpers.mjs.map +1 -0
- package/dist/keystone/keystone-config-builder.respec.d.mts +2 -0
- package/dist/keystone/keystone-config-builder.respec.d.mts.map +1 -0
- package/dist/keystone/keystone-config-builder.respec.mjs +34 -0
- package/dist/keystone/keystone-config-builder.respec.mjs.map +1 -0
- package/dist/keystone/keystone-constants.d.mts +2 -0
- package/dist/keystone/keystone-constants.d.mts.map +1 -1
- package/dist/keystone/keystone-constants.mjs +2 -0
- package/dist/keystone/keystone-constants.mjs.map +1 -1
- package/dist/keystone/keystone-helpers.d.mts +54 -1
- package/dist/keystone/keystone-helpers.d.mts.map +1 -1
- package/dist/keystone/keystone-helpers.mjs +185 -1
- package/dist/keystone/keystone-helpers.mjs.map +1 -1
- package/dist/keystone/keystone-service-v1.d.mts +49 -16
- package/dist/keystone/keystone-service-v1.d.mts.map +1 -1
- package/dist/keystone/keystone-service-v1.mjs +151 -328
- package/dist/keystone/keystone-service-v1.mjs.map +1 -1
- package/dist/keystone/keystone-service-v1.respec.mjs +401 -20
- package/dist/keystone/keystone-service-v1.respec.mjs.map +1 -1
- package/dist/keystone/keystone-types.d.mts +22 -0
- package/dist/keystone/keystone-types.d.mts.map +1 -1
- package/dist/sync/sync-constants.d.mts +17 -0
- package/dist/sync/sync-constants.d.mts.map +1 -0
- package/dist/sync/sync-constants.mjs +16 -0
- package/dist/sync/sync-constants.mjs.map +1 -0
- package/dist/sync/sync-helpers.d.mts +15 -0
- package/dist/sync/sync-helpers.d.mts.map +1 -0
- package/dist/sync/sync-helpers.mjs +46 -0
- package/dist/sync/sync-helpers.mjs.map +1 -0
- package/dist/sync/sync-local-spaces.respec.d.mts +2 -0
- package/dist/sync/sync-local-spaces.respec.d.mts.map +1 -0
- package/dist/sync/sync-local-spaces.respec.mjs +159 -0
- package/dist/sync/sync-local-spaces.respec.mjs.map +1 -0
- package/dist/sync/sync-saga-coordinator.d.mts +118 -0
- package/dist/sync/sync-saga-coordinator.d.mts.map +1 -0
- package/dist/sync/sync-saga-coordinator.mjs +399 -0
- package/dist/sync/sync-saga-coordinator.mjs.map +1 -0
- package/dist/sync/sync-saga-coordinator.respec.d.mts +2 -0
- package/dist/sync/sync-saga-coordinator.respec.d.mts.map +1 -0
- package/dist/sync/sync-saga-coordinator.respec.mjs +40 -0
- package/dist/sync/sync-saga-coordinator.respec.mjs.map +1 -0
- package/dist/sync/sync-types.d.mts +103 -0
- package/dist/sync/sync-types.d.mts.map +1 -0
- package/dist/sync/sync-types.mjs +2 -0
- package/dist/sync/sync-types.mjs.map +1 -0
- package/dist/test/mock-space.d.mts +39 -0
- package/dist/test/mock-space.d.mts.map +1 -0
- package/dist/test/mock-space.mjs +79 -0
- package/dist/test/mock-space.mjs.map +1 -0
- package/dist/witness/space/inner-space/inner-space-v1.respec.mjs +163 -201
- package/dist/witness/space/inner-space/inner-space-v1.respec.mjs.map +1 -1
- package/dist/witness/space/space-helper.d.mts.map +1 -1
- package/dist/witness/space/space-helper.mjs +43 -4
- package/dist/witness/space/space-helper.mjs.map +1 -1
- package/dist/witness/space/space-helper.respec.d.mts +2 -0
- package/dist/witness/space/space-helper.respec.d.mts.map +1 -0
- package/dist/witness/space/space-helper.respec.mjs +30 -0
- package/dist/witness/space/space-helper.respec.mjs.map +1 -0
- package/package.json +2 -2
- package/src/agent-helpers.mts +58 -0
- package/src/keystone/keystone-config-builder.respec.mts +49 -0
- package/src/keystone/keystone-constants.mts +2 -0
- package/src/keystone/keystone-helpers.mts +211 -2
- package/src/keystone/keystone-service-v1.mts +183 -367
- package/src/keystone/keystone-service-v1.respec.mts +484 -21
- package/src/keystone/keystone-types.mts +24 -0
- package/src/sync/sync-constants.mts +24 -0
- package/src/sync/sync-helpers.mts +59 -0
- package/src/sync/sync-local-spaces.respec.mts +200 -0
- package/src/sync/sync-saga-coordinator.mts +477 -0
- package/src/sync/sync-saga-coordinator.respec.mts +52 -0
- package/src/sync/sync-types.mts +120 -0
- package/src/test/mock-space.mts +85 -0
- package/src/witness/space/inner-space/inner-space-v1.respec.mts +181 -228
- package/src/witness/space/space-helper.mts +42 -4
- package/src/witness/space/space-helper.respec.mts +42 -0
- package/tmp.md +11 -0
|
@@ -1,14 +1,13 @@
|
|
|
1
|
-
import { respecfully, iReckon,
|
|
1
|
+
import { respecfully, iReckon, ifWe, firstOfAll } from '@ibgib/helper-gib/dist/respec-gib/respec-gib.mjs';
|
|
2
2
|
const maam = `[${import.meta.url}]`, sir = maam;
|
|
3
|
+
import { clone, hash } from '@ibgib/helper-gib/dist/helpers/utils-helper.mjs';
|
|
3
4
|
import { getIbGibAddr } from '@ibgib/ts-gib/dist/helper.mjs';
|
|
4
|
-
// import { MetaspaceService, } from '@ibgib/core-gib/dist/witness/space/metaspace/metaspace-types.mjs';
|
|
5
|
-
// import { Metaspace_Innerspace } from '@ibgib/core-gib/dist/witness/space/metaspace/metaspace-innerspace/metaspace-innerspace.mjs';
|
|
6
|
-
// import { IbGibSpaceAny } from '@ibgib/core-gib/dist/witness/space/space-base-v1.mjs';
|
|
7
5
|
import { GLOBAL_LOG_A_LOT } from '../core-constants.mjs';
|
|
8
6
|
import { KeystoneStrategyFactory } from './strategy/keystone-strategy-factory.mjs';
|
|
9
7
|
import { createRevocationPoolConfig, createStandardPoolConfig } from './keystone-config-builder.mjs';
|
|
10
|
-
import { POOL_ID_DEFAULT, POOL_ID_REVOKE, KEYSTONE_VERB_REVOKE } from './keystone-constants.mjs';
|
|
8
|
+
import { POOL_ID_DEFAULT, POOL_ID_REVOKE, KEYSTONE_VERB_REVOKE, KEYSTONE_VERB_MANAGE } from './keystone-constants.mjs';
|
|
11
9
|
import { KeystoneService_V1 } from './keystone-service-v1.mjs';
|
|
10
|
+
import { addToBindingMap } from './keystone-helpers.mjs';
|
|
12
11
|
const logalot = GLOBAL_LOG_A_LOT;
|
|
13
12
|
// /**
|
|
14
13
|
// * not sure where to put this, but we probably will want to reuse this in the
|
|
@@ -175,20 +174,20 @@ await respecfully(sir, 'Suite A: Strategy Vectors (HashRevealV1)', async () => {
|
|
|
175
174
|
config = createStandardPoolConfig(salt);
|
|
176
175
|
});
|
|
177
176
|
await respecfully(sir, 'Derivation Logic', async () => {
|
|
178
|
-
await
|
|
177
|
+
await ifWe(sir, 'derivePoolSecret with same inputs returns same output', async () => {
|
|
179
178
|
const strategy = KeystoneStrategyFactory.create({ config });
|
|
180
179
|
const secretA = await strategy.derivePoolSecret({ masterSecret });
|
|
181
180
|
const secretB = await strategy.derivePoolSecret({ masterSecret });
|
|
182
181
|
iReckon(sir, secretA).asTo('secret consistency').willEqual(secretB);
|
|
183
182
|
iReckon(sir, secretA).asTo('secret length').isGonnaBeTruthy();
|
|
184
183
|
});
|
|
185
|
-
await
|
|
184
|
+
await ifWe(sir, 'derivePoolSecret with different master secret returns different output', async () => {
|
|
186
185
|
const strategy = KeystoneStrategyFactory.create({ config });
|
|
187
186
|
const secretA = await strategy.derivePoolSecret({ masterSecret });
|
|
188
187
|
const secretB = await strategy.derivePoolSecret({ masterSecret: masterSecret + "_diff" });
|
|
189
188
|
iReckon(sir, secretA).asTo('secrets differ').not.willEqual(secretB);
|
|
190
189
|
});
|
|
191
|
-
await
|
|
190
|
+
await ifWe(sir, 'derivePoolSecret with different salt returns different output', async () => {
|
|
192
191
|
// Modify salt in a copy of config
|
|
193
192
|
const configB = { ...config, salt: "OtherPool" };
|
|
194
193
|
const strategyA = KeystoneStrategyFactory.create({ config });
|
|
@@ -199,7 +198,7 @@ await respecfully(sir, 'Suite A: Strategy Vectors (HashRevealV1)', async () => {
|
|
|
199
198
|
});
|
|
200
199
|
});
|
|
201
200
|
await respecfully(sir, 'Challenge/Solution Logic', async () => {
|
|
202
|
-
await
|
|
201
|
+
await ifWe(sir, 'generateSolution -> generateChallenge -> validateSolution loop works', async () => {
|
|
203
202
|
const strategy = KeystoneStrategyFactory.create({ config });
|
|
204
203
|
const poolSecret = await strategy.derivePoolSecret({ masterSecret });
|
|
205
204
|
const challengeId = "a3ff7843552870fc28bef2b"; // arbitrary random challengeId
|
|
@@ -214,7 +213,7 @@ await respecfully(sir, 'Suite A: Strategy Vectors (HashRevealV1)', async () => {
|
|
|
214
213
|
const isValid = await strategy.validateSolution({ solution, challenge });
|
|
215
214
|
iReckon(sir, isValid).asTo('valid pair should pass').isGonnaBeTrue();
|
|
216
215
|
});
|
|
217
|
-
await
|
|
216
|
+
await ifWe(sir, 'validateSolution fails for mismatched values', async () => {
|
|
218
217
|
const strategy = KeystoneStrategyFactory.create({ config });
|
|
219
218
|
const poolSecret = await strategy.derivePoolSecret({ masterSecret });
|
|
220
219
|
const challengeId = "8c994f3ed598f150e25513"; // arbitrary random challengeId
|
|
@@ -226,7 +225,7 @@ await respecfully(sir, 'Suite A: Strategy Vectors (HashRevealV1)', async () => {
|
|
|
226
225
|
const isValid = await strategy.validateSolution({ solution: badSolution, challenge });
|
|
227
226
|
iReckon(sir, isValid).asTo('tampered solution should fail').isGonnaBeFalse();
|
|
228
227
|
});
|
|
229
|
-
await
|
|
228
|
+
await ifWe(sir, 'validateSolution fails for mismatched challenge hashes', async () => {
|
|
230
229
|
const strategy = KeystoneStrategyFactory.create({ config });
|
|
231
230
|
const poolSecret = await strategy.derivePoolSecret({ masterSecret });
|
|
232
231
|
// Generate pair A
|
|
@@ -257,7 +256,7 @@ await respecfully(sir, 'Suite B: Service Lifecycle', async () => {
|
|
|
257
256
|
mockMetaspace = new MockMetaspaceService(mockSpace);
|
|
258
257
|
});
|
|
259
258
|
await respecfully(sir, 'Genesis', async () => {
|
|
260
|
-
await
|
|
259
|
+
await ifWe(sir, 'creates a valid genesis frame and persists it', async () => {
|
|
261
260
|
const config = createStandardPoolConfig(POOL_ID_DEFAULT);
|
|
262
261
|
genesisKeystone = await service.genesis({
|
|
263
262
|
masterSecret,
|
|
@@ -279,7 +278,7 @@ await respecfully(sir, 'Suite B: Service Lifecycle', async () => {
|
|
|
279
278
|
});
|
|
280
279
|
});
|
|
281
280
|
await respecfully(sir, 'Signing (Evolution)', async () => {
|
|
282
|
-
await
|
|
281
|
+
await ifWe(sir, 'evolves the keystone with a valid proof', async () => {
|
|
283
282
|
const claim = {
|
|
284
283
|
target: "comment 123^gib",
|
|
285
284
|
verb: "post"
|
|
@@ -304,7 +303,7 @@ await respecfully(sir, 'Suite B: Service Lifecycle', async () => {
|
|
|
304
303
|
});
|
|
305
304
|
});
|
|
306
305
|
await respecfully(sir, 'Validation', async () => {
|
|
307
|
-
await
|
|
306
|
+
await ifWe(sir, 'validates the genesis->signed transition', async () => {
|
|
308
307
|
const errors = await service.validate({
|
|
309
308
|
prevIbGib: genesisKeystone,
|
|
310
309
|
currentIbGib: signedKeystone,
|
|
@@ -339,7 +338,7 @@ await respecfully(sir, 'Suite C: Security Vectors', async () => {
|
|
|
339
338
|
});
|
|
340
339
|
});
|
|
341
340
|
await respecfully(sir, 'Wrong Secret (Forgery)', async () => {
|
|
342
|
-
await
|
|
341
|
+
await ifWe(sir, 'prevents creation of forged frames', async () => {
|
|
343
342
|
const claim = { target: "comment 123^gib", verb: "post" };
|
|
344
343
|
let errorCaught = false;
|
|
345
344
|
let errorMsg = "";
|
|
@@ -365,7 +364,7 @@ await respecfully(sir, 'Suite C: Security Vectors', async () => {
|
|
|
365
364
|
});
|
|
366
365
|
});
|
|
367
366
|
await respecfully(sir, 'Policy Violation (Restricted Verbs)', async () => {
|
|
368
|
-
await
|
|
367
|
+
await ifWe(sir, 'throws error if signing forbidden verb with restricted pool', async () => {
|
|
369
368
|
// Create a specific restricted pool config manually
|
|
370
369
|
const restrictedPoolId = "read_only_pool";
|
|
371
370
|
const restrictedConfig = createStandardPoolConfig(restrictedPoolId);
|
|
@@ -401,7 +400,7 @@ await respecfully(sir, 'Suite C: Security Vectors', async () => {
|
|
|
401
400
|
// ===========================================================================
|
|
402
401
|
// SUITE D: REVOCATION
|
|
403
402
|
// ===========================================================================
|
|
404
|
-
await
|
|
403
|
+
await respecfully(sir, 'Suite D: Revocation', async () => {
|
|
405
404
|
const service = new KeystoneService_V1();
|
|
406
405
|
const masterSecret = "AliceSecret_RevokeTest";
|
|
407
406
|
let mockSpace;
|
|
@@ -422,7 +421,7 @@ await respecfullyDear(sir, 'Suite D: Revocation', async () => {
|
|
|
422
421
|
});
|
|
423
422
|
await respecfully(sir, 'Revoke Lifecycle', async () => {
|
|
424
423
|
let revokedKeystone;
|
|
425
|
-
await
|
|
424
|
+
await ifWe(sir, 'successfully creates a revocation frame', async () => {
|
|
426
425
|
revokedKeystone = await service.revoke({
|
|
427
426
|
latestKeystone: genesisKeystone,
|
|
428
427
|
masterSecret,
|
|
@@ -437,7 +436,7 @@ await respecfullyDear(sir, 'Suite D: Revocation', async () => {
|
|
|
437
436
|
iReckon(sir, data.revocationInfo.reason).willEqual("Key compromised");
|
|
438
437
|
iReckon(sir, data.revocationInfo.proof.claim.verb).willEqual(KEYSTONE_VERB_REVOKE);
|
|
439
438
|
});
|
|
440
|
-
await
|
|
439
|
+
await ifWe(sir, 'validates the revocation frame', async () => {
|
|
441
440
|
const errors = await service.validate({
|
|
442
441
|
prevIbGib: genesisKeystone,
|
|
443
442
|
currentIbGib: revokedKeystone,
|
|
@@ -446,7 +445,7 @@ await respecfullyDear(sir, 'Suite D: Revocation', async () => {
|
|
|
446
445
|
});
|
|
447
446
|
iReckon(sir, errors.length).asTo('no validation errors').willEqual(0);
|
|
448
447
|
});
|
|
449
|
-
await
|
|
448
|
+
await ifWe(sir, 'consumed the revocation pool (Scorched Earth)', async () => {
|
|
450
449
|
const data = revokedKeystone.data;
|
|
451
450
|
const revokePool = data.challengePools.find(p => p.id === POOL_ID_REVOKE);
|
|
452
451
|
// The pool should exist...
|
|
@@ -457,4 +456,386 @@ await respecfullyDear(sir, 'Suite D: Revocation', async () => {
|
|
|
457
456
|
});
|
|
458
457
|
});
|
|
459
458
|
});
|
|
459
|
+
// ===========================================================================
|
|
460
|
+
// SUITE E: STRUCTURAL EVOLUTION (addPools)
|
|
461
|
+
// ===========================================================================
|
|
462
|
+
await respecfully(sir, 'Suite E: Structural Evolution (addPools)', async () => {
|
|
463
|
+
const service = new KeystoneService_V1();
|
|
464
|
+
const aliceSecret = "Alice_Master_Key";
|
|
465
|
+
const bobSecret = "Bob_Foreign_Key";
|
|
466
|
+
let mockSpace;
|
|
467
|
+
let mockMetaspace;
|
|
468
|
+
let aliceKeystone;
|
|
469
|
+
// Helper to generate a "Foreign" pool (e.g. from Bob)
|
|
470
|
+
const createForeignPool = async (id, verbs = []) => {
|
|
471
|
+
const config = createStandardPoolConfig(id);
|
|
472
|
+
config.allowedVerbs = verbs;
|
|
473
|
+
// We use the factory manually here to simulate Bob doing this offline
|
|
474
|
+
const strategy = KeystoneStrategyFactory.create({ config });
|
|
475
|
+
const poolSecret = await strategy.derivePoolSecret({ masterSecret: bobSecret });
|
|
476
|
+
const challenges = {};
|
|
477
|
+
const bindingMap = {};
|
|
478
|
+
for (let i = 0; i < 10; i++) {
|
|
479
|
+
// Manually replicate ID gen for test
|
|
480
|
+
const raw = await hash({ s: `${config.salt}${Date.now()}${i}` });
|
|
481
|
+
const challengeId = raw.substring(0, 16);
|
|
482
|
+
const solution = await strategy.generateSolution({
|
|
483
|
+
poolSecret, poolId: config.salt, challengeId,
|
|
484
|
+
});
|
|
485
|
+
const challenge = await strategy.generateChallenge({ solution });
|
|
486
|
+
challenges[challengeId] = challenge;
|
|
487
|
+
addToBindingMap(bindingMap, challengeId);
|
|
488
|
+
}
|
|
489
|
+
return {
|
|
490
|
+
id,
|
|
491
|
+
config,
|
|
492
|
+
challenges,
|
|
493
|
+
bindingMap,
|
|
494
|
+
isForeign: true,
|
|
495
|
+
metadata: { owner: 'Bob' }
|
|
496
|
+
};
|
|
497
|
+
};
|
|
498
|
+
firstOfAll(sir, async () => {
|
|
499
|
+
mockSpace = new MockIbGibSpace();
|
|
500
|
+
mockMetaspace = new MockMetaspaceService(mockSpace);
|
|
501
|
+
// Alice Genesis: Standard pool (allows all verbs, including 'manage')
|
|
502
|
+
const config = createStandardPoolConfig(POOL_ID_DEFAULT);
|
|
503
|
+
aliceKeystone = await service.genesis({
|
|
504
|
+
masterSecret: aliceSecret,
|
|
505
|
+
configs: [config],
|
|
506
|
+
metaspace: mockMetaspace,
|
|
507
|
+
space: mockSpace,
|
|
508
|
+
});
|
|
509
|
+
});
|
|
510
|
+
await respecfully(sir, 'Happy Path', async () => {
|
|
511
|
+
await ifWe(sir, 'authorizes and adds a foreign pool', async () => {
|
|
512
|
+
const bobPool = await createForeignPool("pool_bob", ["post"]);
|
|
513
|
+
const updatedKeystone = await service.addPools({
|
|
514
|
+
latestKeystone: aliceKeystone,
|
|
515
|
+
masterSecret: aliceSecret,
|
|
516
|
+
newPools: [bobPool],
|
|
517
|
+
metaspace: mockMetaspace,
|
|
518
|
+
space: mockSpace,
|
|
519
|
+
});
|
|
520
|
+
// 1. Verify new state
|
|
521
|
+
iReckon(sir, updatedKeystone).isGonnaBeTruthy();
|
|
522
|
+
const pools = updatedKeystone.data.challengePools;
|
|
523
|
+
iReckon(sir, pools.length).asTo('pool count increased').willEqual(2);
|
|
524
|
+
const foundBob = pools.find(p => p.id === "pool_bob");
|
|
525
|
+
iReckon(sir, foundBob).asTo('bob pool exists').isGonnaBeTruthy();
|
|
526
|
+
iReckon(sir, foundBob.isForeign).asTo('isForeign flag').isGonnaBeTrue();
|
|
527
|
+
// 2. Verify Proof
|
|
528
|
+
const proof = updatedKeystone.data.proofs[0];
|
|
529
|
+
iReckon(sir, proof.claim.verb).asTo('proof verb').willEqual("manage");
|
|
530
|
+
// Alice signed this using HER pool (default), not Bob's
|
|
531
|
+
iReckon(sir, proof.solutions[0].poolId).willEqual(POOL_ID_DEFAULT);
|
|
532
|
+
// 3. Verify Validity
|
|
533
|
+
const errors = await service.validate({
|
|
534
|
+
prevIbGib: aliceKeystone,
|
|
535
|
+
currentIbGib: updatedKeystone,
|
|
536
|
+
});
|
|
537
|
+
iReckon(sir, errors.length).asTo('validation passed').willEqual(0);
|
|
538
|
+
// Update local ref for next tests
|
|
539
|
+
aliceKeystone = updatedKeystone;
|
|
540
|
+
});
|
|
541
|
+
});
|
|
542
|
+
await respecfully(sir, 'Permissions & Logic', async () => {
|
|
543
|
+
await ifWe(sir, 'fails if no pool allows "manage" verb', async () => {
|
|
544
|
+
// 1. Create a restricted keystone
|
|
545
|
+
const restrictedConfig = createStandardPoolConfig("read_only");
|
|
546
|
+
restrictedConfig.allowedVerbs = ['read']; // No 'manage'
|
|
547
|
+
const restrictedKeystone = await service.genesis({
|
|
548
|
+
masterSecret: aliceSecret,
|
|
549
|
+
configs: [restrictedConfig],
|
|
550
|
+
metaspace: mockMetaspace,
|
|
551
|
+
space: mockSpace,
|
|
552
|
+
});
|
|
553
|
+
const newPool = await createForeignPool("pool_test");
|
|
554
|
+
let errorCaught = false;
|
|
555
|
+
try {
|
|
556
|
+
await service.addPools({
|
|
557
|
+
latestKeystone: restrictedKeystone,
|
|
558
|
+
masterSecret: aliceSecret,
|
|
559
|
+
newPools: [newPool],
|
|
560
|
+
metaspace: mockMetaspace,
|
|
561
|
+
space: mockSpace,
|
|
562
|
+
});
|
|
563
|
+
}
|
|
564
|
+
catch (e) {
|
|
565
|
+
errorCaught = true;
|
|
566
|
+
// Should fail in resolveTargetPool or addPools logic
|
|
567
|
+
// console.log("Caught expected error:", e.message);
|
|
568
|
+
}
|
|
569
|
+
iReckon(sir, errorCaught).asTo('permission denied').isGonnaBeTrue();
|
|
570
|
+
});
|
|
571
|
+
await ifWe(sir, 'fails on ID collision', async () => {
|
|
572
|
+
// Try to add "pool_bob" again (it was added in Happy Path)
|
|
573
|
+
const duplicatePool = await createForeignPool("pool_bob");
|
|
574
|
+
let errorCaught = false;
|
|
575
|
+
try {
|
|
576
|
+
await service.addPools({
|
|
577
|
+
latestKeystone: aliceKeystone, // This already has pool_bob
|
|
578
|
+
masterSecret: aliceSecret,
|
|
579
|
+
newPools: [duplicatePool],
|
|
580
|
+
metaspace: mockMetaspace,
|
|
581
|
+
space: mockSpace,
|
|
582
|
+
});
|
|
583
|
+
}
|
|
584
|
+
catch (e) {
|
|
585
|
+
errorCaught = true;
|
|
586
|
+
iReckon(sir, e.message).includes("ID collision");
|
|
587
|
+
}
|
|
588
|
+
iReckon(sir, errorCaught).asTo('collision detected').isGonnaBeTrue();
|
|
589
|
+
});
|
|
590
|
+
});
|
|
591
|
+
});
|
|
592
|
+
// ===========================================================================
|
|
593
|
+
// SUITE E: STRUCTURAL EVOLUTION (addPools)
|
|
594
|
+
// ===========================================================================
|
|
595
|
+
await respecfully(sir, 'Suite E: Structural Evolution (addPools)', async () => {
|
|
596
|
+
const service = new KeystoneService_V1();
|
|
597
|
+
const aliceSecret = "Alice_Master_Key";
|
|
598
|
+
const bobSecret = "Bob_Foreign_Key";
|
|
599
|
+
let mockSpace;
|
|
600
|
+
let mockMetaspace;
|
|
601
|
+
let aliceKeystone;
|
|
602
|
+
// Helper to simulate Bob creating a pool "offline" to give to Alice
|
|
603
|
+
const createForeignPool = async (id, verbs = []) => {
|
|
604
|
+
const config = createStandardPoolConfig(id);
|
|
605
|
+
config.allowedVerbs = verbs;
|
|
606
|
+
// We use the factory manually here to simulate Bob doing this on his own machine
|
|
607
|
+
const strategy = KeystoneStrategyFactory.create({ config });
|
|
608
|
+
const poolSecret = await strategy.derivePoolSecret({ masterSecret: bobSecret });
|
|
609
|
+
const challenges = {};
|
|
610
|
+
const bindingMap = {};
|
|
611
|
+
// Generate a small set of challenges
|
|
612
|
+
for (let i = 0; i < 10; i++) {
|
|
613
|
+
const raw = await hash({ s: `${config.salt}${Date.now()}${i}` });
|
|
614
|
+
const challengeId = raw.substring(0, 16);
|
|
615
|
+
const solution = await strategy.generateSolution({
|
|
616
|
+
poolSecret, poolId: config.salt, challengeId,
|
|
617
|
+
});
|
|
618
|
+
const challenge = await strategy.generateChallenge({ solution });
|
|
619
|
+
challenges[challengeId] = challenge;
|
|
620
|
+
addToBindingMap(bindingMap, challengeId);
|
|
621
|
+
}
|
|
622
|
+
return {
|
|
623
|
+
id,
|
|
624
|
+
config,
|
|
625
|
+
challenges,
|
|
626
|
+
bindingMap,
|
|
627
|
+
isForeign: true,
|
|
628
|
+
metadata: { owner: 'Bob', role: 'Delegate' }
|
|
629
|
+
};
|
|
630
|
+
};
|
|
631
|
+
firstOfAll(sir, async () => {
|
|
632
|
+
mockSpace = new MockIbGibSpace();
|
|
633
|
+
mockMetaspace = new MockMetaspaceService(mockSpace);
|
|
634
|
+
// Alice Genesis: Standard pool (allows all verbs, including 'manage')
|
|
635
|
+
const config = createStandardPoolConfig(POOL_ID_DEFAULT);
|
|
636
|
+
aliceKeystone = await service.genesis({
|
|
637
|
+
masterSecret: aliceSecret,
|
|
638
|
+
configs: [config],
|
|
639
|
+
metaspace: mockMetaspace,
|
|
640
|
+
space: mockSpace,
|
|
641
|
+
});
|
|
642
|
+
});
|
|
643
|
+
await respecfully(sir, 'Happy Path', async () => {
|
|
644
|
+
await ifWe(sir, 'authorizes and adds a foreign pool', async () => {
|
|
645
|
+
const bobPool = await createForeignPool("pool_bob", ["post"]);
|
|
646
|
+
const updatedKeystone = await service.addPools({
|
|
647
|
+
latestKeystone: aliceKeystone,
|
|
648
|
+
masterSecret: aliceSecret,
|
|
649
|
+
newPools: [bobPool],
|
|
650
|
+
metaspace: mockMetaspace,
|
|
651
|
+
space: mockSpace,
|
|
652
|
+
});
|
|
653
|
+
// 1. Verify new state
|
|
654
|
+
iReckon(sir, updatedKeystone).isGonnaBeTruthy();
|
|
655
|
+
const pools = updatedKeystone.data.challengePools;
|
|
656
|
+
iReckon(sir, pools.length).asTo('pool count increased').willEqual(2);
|
|
657
|
+
const foundBob = pools.find(p => p.id === "pool_bob");
|
|
658
|
+
iReckon(sir, foundBob).asTo('bob pool exists').isGonnaBeTruthy();
|
|
659
|
+
iReckon(sir, foundBob.isForeign).asTo('isForeign flag').isGonnaBeTrue();
|
|
660
|
+
// 2. Verify Proof
|
|
661
|
+
const proof = updatedKeystone.data.proofs[0];
|
|
662
|
+
iReckon(sir, proof.claim.verb).asTo('proof verb').willEqual(KEYSTONE_VERB_MANAGE);
|
|
663
|
+
// Alice signed this using HER pool (default), not Bob's
|
|
664
|
+
iReckon(sir, proof.solutions[0].poolId).willEqual(POOL_ID_DEFAULT);
|
|
665
|
+
// 3. Verify Validity
|
|
666
|
+
const errors = await service.validate({
|
|
667
|
+
prevIbGib: aliceKeystone,
|
|
668
|
+
currentIbGib: updatedKeystone,
|
|
669
|
+
});
|
|
670
|
+
iReckon(sir, errors.length).asTo('validation passed').willEqual(0);
|
|
671
|
+
// Update local ref for next tests
|
|
672
|
+
aliceKeystone = updatedKeystone;
|
|
673
|
+
});
|
|
674
|
+
});
|
|
675
|
+
await respecfully(sir, 'Permissions & Logic', async () => {
|
|
676
|
+
await ifWe(sir, 'fails if no pool allows "manage" verb', async () => {
|
|
677
|
+
// 1. Create a restricted keystone (read-only)
|
|
678
|
+
const restrictedConfig = createStandardPoolConfig("read_only");
|
|
679
|
+
restrictedConfig.allowedVerbs = ['read']; // No 'manage'
|
|
680
|
+
const restrictedKeystone = await service.genesis({
|
|
681
|
+
masterSecret: aliceSecret,
|
|
682
|
+
configs: [restrictedConfig],
|
|
683
|
+
metaspace: mockMetaspace,
|
|
684
|
+
space: mockSpace,
|
|
685
|
+
});
|
|
686
|
+
const newPool = await createForeignPool("pool_test");
|
|
687
|
+
let errorCaught = false;
|
|
688
|
+
try {
|
|
689
|
+
await service.addPools({
|
|
690
|
+
latestKeystone: restrictedKeystone,
|
|
691
|
+
masterSecret: aliceSecret,
|
|
692
|
+
newPools: [newPool],
|
|
693
|
+
metaspace: mockMetaspace,
|
|
694
|
+
space: mockSpace,
|
|
695
|
+
});
|
|
696
|
+
}
|
|
697
|
+
catch (e) {
|
|
698
|
+
errorCaught = true;
|
|
699
|
+
// Optional: Check error message
|
|
700
|
+
// iReckon(sir, e.message).includes("No local pool found with 'manage'");
|
|
701
|
+
}
|
|
702
|
+
iReckon(sir, errorCaught).asTo('permission denied').isGonnaBeTrue();
|
|
703
|
+
});
|
|
704
|
+
await ifWe(sir, 'fails on ID collision', async () => {
|
|
705
|
+
// Try to add "pool_bob" again (it was added in Happy Path)
|
|
706
|
+
const duplicatePool = await createForeignPool("pool_bob");
|
|
707
|
+
let errorCaught = false;
|
|
708
|
+
try {
|
|
709
|
+
await service.addPools({
|
|
710
|
+
latestKeystone: aliceKeystone, // This already has pool_bob
|
|
711
|
+
masterSecret: aliceSecret,
|
|
712
|
+
newPools: [duplicatePool],
|
|
713
|
+
metaspace: mockMetaspace,
|
|
714
|
+
space: mockSpace,
|
|
715
|
+
});
|
|
716
|
+
}
|
|
717
|
+
catch (e) {
|
|
718
|
+
errorCaught = true;
|
|
719
|
+
iReckon(sir, e.message).includes("collision");
|
|
720
|
+
}
|
|
721
|
+
iReckon(sir, errorCaught).asTo('collision detected').isGonnaBeTrue();
|
|
722
|
+
});
|
|
723
|
+
});
|
|
724
|
+
});
|
|
725
|
+
// ===========================================================================
|
|
726
|
+
// SUITE F: DEEP INSPECTION (Granularity & Serialization)
|
|
727
|
+
// ===========================================================================
|
|
728
|
+
await respecfully(sir, 'Suite F: Deep Inspection', async () => {
|
|
729
|
+
const service = new KeystoneService_V1();
|
|
730
|
+
const aliceSecret = "Alice_Deep_Inspect";
|
|
731
|
+
const salt = "granularity_pool";
|
|
732
|
+
let mockSpace;
|
|
733
|
+
let mockMetaspace;
|
|
734
|
+
let genesisKeystone;
|
|
735
|
+
let signedKeystone;
|
|
736
|
+
// We use a specific hybrid config to test exact selection logic
|
|
737
|
+
const hybridConfig = createStandardPoolConfig(salt);
|
|
738
|
+
// 2 FIFO + 2 Random = 4 Total per sign
|
|
739
|
+
hybridConfig.behavior.selectSequentially = 2;
|
|
740
|
+
hybridConfig.behavior.selectRandomly = 2;
|
|
741
|
+
hybridConfig.behavior.size = 20; // Small enough to track, large enough to be random
|
|
742
|
+
firstOfAll(sir, async () => {
|
|
743
|
+
mockSpace = new MockIbGibSpace();
|
|
744
|
+
mockMetaspace = new MockMetaspaceService(mockSpace);
|
|
745
|
+
genesisKeystone = await service.genesis({
|
|
746
|
+
masterSecret: aliceSecret,
|
|
747
|
+
configs: [hybridConfig],
|
|
748
|
+
metaspace: mockMetaspace,
|
|
749
|
+
space: mockSpace,
|
|
750
|
+
});
|
|
751
|
+
});
|
|
752
|
+
await respecfully(sir, 'Proof Granularity & Math', async () => {
|
|
753
|
+
await ifWe(sir, 'generates exactly the expected number of solutions', async () => {
|
|
754
|
+
signedKeystone = await service.sign({
|
|
755
|
+
latestKeystone: genesisKeystone,
|
|
756
|
+
masterSecret: aliceSecret,
|
|
757
|
+
claim: { verb: "post", target: "data^gib" },
|
|
758
|
+
metaspace: mockMetaspace,
|
|
759
|
+
space: mockSpace,
|
|
760
|
+
});
|
|
761
|
+
const proofs = signedKeystone.data.proofs;
|
|
762
|
+
iReckon(sir, proofs.length).asTo('proof count').willEqual(1);
|
|
763
|
+
const solutions = proofs[0].solutions;
|
|
764
|
+
// 2 Sequential + 2 Random = 4
|
|
765
|
+
iReckon(sir, solutions.length).asTo('solution count').willEqual(4);
|
|
766
|
+
});
|
|
767
|
+
await ifWe(sir, 'verifies the math manually (White-box Crypto Check)', async () => {
|
|
768
|
+
const proof = signedKeystone.data.proofs[0];
|
|
769
|
+
const poolSnapshot = genesisKeystone.data.challengePools.find(p => p.id === salt);
|
|
770
|
+
// We iterate every solution in the proof and MANUALLY verify the hash relationship
|
|
771
|
+
// bypassing the Service's validation logic to ensure the raw math holds up.
|
|
772
|
+
for (const solution of proof.solutions) {
|
|
773
|
+
// 1. Find the challenge in the *Previous* frame (Genesis)
|
|
774
|
+
const challenge = poolSnapshot.challenges[solution.challengeId];
|
|
775
|
+
if (!challenge) {
|
|
776
|
+
throw new Error(`Test Failure: Solution references ID ${solution.challengeId} which was not in Genesis pool.`);
|
|
777
|
+
}
|
|
778
|
+
// 2. Re-implement HashReveal V1 verification logic locally in the test
|
|
779
|
+
// Hash(Salt + Value + Salt)
|
|
780
|
+
// Note: rounds=1 in standard config
|
|
781
|
+
const indexSalt = solution.challengeId;
|
|
782
|
+
const calculatedHash = await hash({
|
|
783
|
+
s: `${indexSalt}${solution.value}${indexSalt}`,
|
|
784
|
+
algorithm: 'SHA-256'
|
|
785
|
+
});
|
|
786
|
+
// 3. Assert
|
|
787
|
+
iReckon(sir, calculatedHash).asTo(`Manual hash verification for ${solution.challengeId}`).willEqual(challenge.hash);
|
|
788
|
+
}
|
|
789
|
+
});
|
|
790
|
+
await ifWe(sir, 'verifies FIFO logic (Deterministic Selection)', async () => {
|
|
791
|
+
const proof = signedKeystone.data.proofs[0];
|
|
792
|
+
const poolSnapshot = genesisKeystone.data.challengePools.find(p => p.id === salt);
|
|
793
|
+
// The first N keys in the pool should be the FIFO targets.
|
|
794
|
+
// Assumption: Object.keys returns insertion order (Standard in modern JS engines)
|
|
795
|
+
const allIds = Object.keys(poolSnapshot.challenges);
|
|
796
|
+
const expectedFifoIds = allIds.slice(0, 2);
|
|
797
|
+
const solvedIds = proof.solutions.map(s => s.challengeId);
|
|
798
|
+
// Check that our solution list *includes* the expected FIFO IDs
|
|
799
|
+
const hasFirst = solvedIds.includes(expectedFifoIds[0]);
|
|
800
|
+
const hasSecond = solvedIds.includes(expectedFifoIds[1]);
|
|
801
|
+
iReckon(sir, hasFirst).asTo(`Solution includes 1st FIFO ID (${expectedFifoIds[0]})`).isGonnaBeTrue();
|
|
802
|
+
iReckon(sir, hasSecond).asTo(`Solution includes 2nd FIFO ID (${expectedFifoIds[1]})`).isGonnaBeTrue();
|
|
803
|
+
});
|
|
804
|
+
});
|
|
805
|
+
await respecfully(sir, 'DTO & Serialization', async () => {
|
|
806
|
+
await ifWe(sir, 'survives a clone/JSON-cycle without corruption', async () => {
|
|
807
|
+
// 1. Create a DTO (simulate network transmission/storage)
|
|
808
|
+
// 'clone' does a JSON stringify/parse under the hood (usually) or structured clone.
|
|
809
|
+
const dto = clone(signedKeystone);
|
|
810
|
+
// 2. Structural checks
|
|
811
|
+
iReckon(sir, dto).asTo('dto exists').isGonnaBeTruthy();
|
|
812
|
+
iReckon(sir, dto.data).asTo('dto data').isGonnaBeTruthy();
|
|
813
|
+
iReckon(sir, dto.data.proofs).asTo('dto proofs').isGonnaBeTruthy();
|
|
814
|
+
// 3. Functional check: Can the service validate this DTO?
|
|
815
|
+
// This ensures no prototypes or hidden properties were lost that the service depends on.
|
|
816
|
+
const errors = await service.validate({
|
|
817
|
+
prevIbGib: genesisKeystone,
|
|
818
|
+
currentIbGib: dto, // Passing the DTO, not the original object
|
|
819
|
+
});
|
|
820
|
+
iReckon(sir, errors.length).asTo('DTO validation errors').willEqual(0);
|
|
821
|
+
});
|
|
822
|
+
await ifWe(sir, 'ensures data contains no functions or circular refs', async () => {
|
|
823
|
+
// A crude but effective test: ensure JSON.stringify doesn't throw
|
|
824
|
+
// and the result is equal to the object (if we parsed it back).
|
|
825
|
+
const jsonStr = JSON.stringify(signedKeystone);
|
|
826
|
+
const parsed = JSON.parse(jsonStr);
|
|
827
|
+
// Compare specific deep fields
|
|
828
|
+
const originalSolution = signedKeystone.data.proofs[0].solutions[0].value;
|
|
829
|
+
const parsedSolution = parsed.data.proofs[0].solutions[0].value;
|
|
830
|
+
iReckon(sir, parsedSolution).asTo('deep property survives stringify').willEqual(originalSolution);
|
|
831
|
+
// Ensure no extra properties were lost
|
|
832
|
+
// FIX: JSON.stringify removes keys with 'undefined' values.
|
|
833
|
+
// We must filter the original keys to match this behavior for a fair comparison.
|
|
834
|
+
const origKeys = Object.keys(signedKeystone.data)
|
|
835
|
+
.filter(k => signedKeystone.data[k] !== undefined);
|
|
836
|
+
const parsedKeys = Object.keys(parsed.data);
|
|
837
|
+
iReckon(sir, parsedKeys.length).asTo('key count matches').willEqual(origKeys.length);
|
|
838
|
+
});
|
|
839
|
+
});
|
|
840
|
+
});
|
|
460
841
|
//# sourceMappingURL=keystone-service-v1.respec.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keystone-service-v1.respec.mjs","sourceRoot":"","sources":["../../src/keystone/keystone-service-v1.respec.mts"],"names":[],"mappings":"AAAA,OAAO,EACH,WAAW,EAAE,OAAO,EAAQ,UAAU,EAAsC,eAAe,EAAE,SAAS,EACzG,MAAM,kDAAkD,CAAC;AAC1D,MAAM,IAAI,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,EAAE,GAAG,GAAG,IAAI,CAAC;AAGhD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,wGAAwG;AACxG,qIAAqI;AACrI,wFAAwF;AAExF,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,0CAA0C,CAAC;AAEnF,OAAO,EAAE,0BAA0B,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACrG,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AACjG,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAE/D,MAAM,OAAO,GAAG,gBAAgB,CAAC;AAGjC,MAAM;AACN,gFAAgF;AAChF,gCAAgC;AAChC,0CAA0C;AAC1C,MAAM;AACN,gEAAgE;AAChE,wBAAwB;AACxB,OAAO;AACP,gCAAgC;AAChC,kCAAkC;AAClC,2EAA2E;AAC3E,YAAY;AACZ,mGAAmG;AAEnG,2EAA2E;AAC3E,oIAAoI;AACpI,uBAAuB;AAEvB,uCAAuC;AACvC,2CAA2C;AAC3C,kBAAkB;AAClB,mFAAmF;AACnF,mFAAmF;AACnF,6BAA6B;AAC7B,kBAAkB;AAClB,kCAAkC;AAClC,8CAA8C;AAC9C,kFAAkF;AAClF,2CAA2C;AAC3C,qBAAqB;AACrB,8CAA8C;AAC9C,0FAA0F;AAC1F,+CAA+C;AAC/C,qBAAqB;AACrB,4DAA4D;AAC5D,kFAAkF;AAClF,2CAA2C;AAC3C,qBAAqB;AAErB,sGAAsG;AACtG,iFAAiF;AACjF,oIAAoI;AACpI,iBAAiB;AACjB,8FAA8F;AAC9F,mCAAmC;AACnC,qDAAqD;AACrD,iFAAiF;AACjF,4FAA4F;AAC5F,4DAA4D;AAC5D,gGAAgG;AAChG,wEAAwE;AACxE,oBAAoB;AACpB,iBAAiB;AACjB,2CAA2C;AAC3C,uCAAuC;AACvC,0EAA0E;AAC1E,mFAAmF;AACnF,mFAAmF;AACnF,4DAA4D;AAC5D,yCAAyC;AACzC,4DAA4D;AAC5D,oBAAoB;AACpB,iBAAiB;AACjB,cAAc;AACd,4BAA4B;AAC5B,wBAAwB;AACxB,4DAA4D;AAC5D,uBAAuB;AACvB,kBAAkB;AAClB,2DAA2D;AAC3D,QAAQ;AACR,IAAI;AAEJ;;;GAGG;AACH,MAAM,cAAc;IAGG;IAFnB,KAAK,GAAG,IAAI,GAAG,EAAoB,CAAC;IAEpC,YAAmB,OAAe,YAAY;QAA3B,SAAI,GAAJ,IAAI,CAAuB;IAAI,CAAC;IAEnD,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK,EAAuB;QACpC,MAAM,IAAI,GAAG,YAAY,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QACrC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY;IACzE,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,EAAoB;QAChC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClC,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC1D,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,GAAQ;QAClB,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC;QAC1B,IAAI,GAAG,KAAK,KAAK,EAAE,CAAC;YAChB,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC;YACxC,MAAM,MAAM,GAAe,EAAE,CAAC;YAC9B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACvB,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;gBACpC,IAAI,EAAE;oBAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC5B,CAAC;YACD,OAAO,EAAE,MAAM,EAAE,CAAC;QACtB,CAAC;QACD,OAAO,SAAS,CAAC;IACrB,CAAC;CACJ;AAGD;;;;;;GAMG;AACH,MAAM,oBAAoB;IAOH;IALnB;;OAEG;IACH,aAAa,GAAG,IAAI,GAAG,EAAkB,CAAC;IAE1C,YAAmB,KAAqB;QAArB,UAAK,GAAL,KAAK,CAAgB;IAAI,CAAC;IAE7C,KAAK,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAqB;QAC/C,OAAO,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,GAAG,CAAC,IAAS;QACf,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC;QACxC,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB,CAAC,IAAsC;QACzD,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;QACvB,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC;QAE7C,yBAAyB;QACzB,MAAM,WAAW,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QAEjC,uCAAuC;QACvC,wCAAwC;QACxC,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,EAAE,CAAC;QAC5B,IAAI,MAAM,GAAG,GAAG,CAAC;QAEjB,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACpB,uDAAuD;YACvD,yBAAyB;YACzB,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC7B,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACtC,CAAC;QACD,oDAAoD;QACpD,kDAAkD;QAElD,MAAM,IAAI,GAAG,YAAY,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QACrC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACzC,CAAC;CACJ;AAED,8EAA8E;AAC9E,uCAAuC;AACvC,8EAA8E;AAE9E,MAAM,WAAW,CAAC,GAAG,EAAE,0CAA0C,EAAE,KAAK,IAAI,EAAE;IAE1E,0BAA0B;IAC1B,MAAM,YAAY,GAAG,kBAAkB,CAAC;IACxC,MAAM,IAAI,GAAG,UAAU,CAAC;IACxB,IAAI,MAAiC,CAAC;IAEtC,UAAU,CAAC,GAAG,EAAE,KAAK,IAAI,EAAE;QACvB,wDAAwD;QACxD,MAAM,GAAG,wBAAwB,CAAC,IAAI,CAA8B,CAAC;IACzE,CAAC,CAAC,CAAC;IAEH,MAAM,WAAW,CAAC,GAAG,EAAE,kBAAkB,EAAE,KAAK,IAAI,EAAE;QAElD,MAAM,SAAS,CAAC,GAAG,EAAE,uDAAuD,EAAE,KAAK,IAAI,EAAE;YACrF,MAAM,QAAQ,GAAG,uBAAuB,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;YAE5D,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,gBAAgB,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC;YAClE,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,gBAAgB,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC;YAElE,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YACpE,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,eAAe,EAAE,CAAC;QAClE,CAAC,CAAC,CAAC;QAEH,MAAM,SAAS,CAAC,GAAG,EAAE,wEAAwE,EAAE,KAAK,IAAI,EAAE;YACtG,MAAM,QAAQ,GAAG,uBAAuB,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;YAE5D,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,gBAAgB,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC;YAClE,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,gBAAgB,CAAC,EAAE,YAAY,EAAE,YAAY,GAAG,OAAO,EAAE,CAAC,CAAC;YAE1F,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACxE,CAAC,CAAC,CAAC;QAEH,MAAM,SAAS,CAAC,GAAG,EAAE,+DAA+D,EAAE,KAAK,IAAI,EAAE;YAC7F,kCAAkC;YAClC,MAAM,OAAO,GAAG,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;YACjD,MAAM,SAAS,GAAG,uBAAuB,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;YAC7D,MAAM,SAAS,GAAG,uBAAuB,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;YAEtE,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,gBAAgB,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC;YACnE,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,gBAAgB,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC;YAEnE,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAC7E,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,MAAM,WAAW,CAAC,GAAG,EAAE,0BAA0B,EAAE,KAAK,IAAI,EAAE;QAE1D,MAAM,SAAS,CAAC,GAAG,EAAE,sEAAsE,EAAE,KAAK,IAAI,EAAE;YACpG,MAAM,QAAQ,GAAG,uBAAuB,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;YAC5D,MAAM,UAAU,GAAG,MAAM,QAAQ,CAAC,gBAAgB,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC;YACrE,MAAM,WAAW,GAAG,yBAAyB,CAAC,CAAC,+BAA+B;YAE9E,uBAAuB;YACvB,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,gBAAgB,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;YAC5F,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,eAAe,EAAE,CAAC;YAC7E,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;YAE7E,6CAA6C;YAC7C,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,iBAAiB,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;YACjE,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,eAAe,EAAE,CAAC;YAE7E,cAAc;YACd,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,gBAAgB,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC;YACzE,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,aAAa,EAAE,CAAC;QACzE,CAAC,CAAC,CAAC;QAEH,MAAM,SAAS,CAAC,GAAG,EAAE,8CAA8C,EAAE,KAAK,IAAI,EAAE;YAC5E,MAAM,QAAQ,GAAG,uBAAuB,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;YAC5D,MAAM,UAAU,GAAG,MAAM,QAAQ,CAAC,gBAAgB,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC;YACrE,MAAM,WAAW,GAAG,wBAAwB,CAAC,CAAC,+BAA+B;YAE7E,qBAAqB;YACrB,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,gBAAgB,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;YAC5F,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,iBAAiB,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;YAEjE,6BAA6B;YAC7B,MAAM,WAAW,GAAG,EAAE,GAAG,QAAQ,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC;YAE3D,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,gBAAgB,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,CAAC;YACtF,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC,cAAc,EAAE,CAAC;QACjF,CAAC,CAAC,CAAC;QAEH,MAAM,SAAS,CAAC,GAAG,EAAE,wDAAwD,EAAE,KAAK,IAAI,EAAE;YACtF,MAAM,QAAQ,GAAG,uBAAuB,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;YAC5D,MAAM,UAAU,GAAG,MAAM,QAAQ,CAAC,gBAAgB,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC;YAErE,kBAAkB;YAClB,MAAM,aAAa,GAAG,4BAA4B,CAAC,CAAC,+BAA+B;YACnF,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,gBAAgB,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC,CAAC;YAE5G,kBAAkB;YAClB,MAAM,aAAa,GAAG,sBAAsB,CAAC,CAAC,+BAA+B;YAC7E,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,gBAAgB,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC,CAAC;YAC5G,MAAM,UAAU,GAAG,MAAM,QAAQ,CAAC,iBAAiB,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC;YAE7E,oBAAoB;YACpB,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,gBAAgB,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,CAAC;YAChG,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC,cAAc,EAAE,CAAC;QAC/E,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC;AAEH,8EAA8E;AAC9E,2DAA2D;AAC3D,8EAA8E;AAE9E,MAAM,WAAW,CAAC,GAAG,EAAE,4BAA4B,EAAE,KAAK,IAAI,EAAE;IAE5D,MAAM,OAAO,GAAG,IAAI,kBAAkB,EAAE,CAAC;IACzC,MAAM,YAAY,GAAG,0BAA0B,CAAC;IAEhD,IAAI,SAAyB,CAAC;IAC9B,IAAI,aAAkB,CAAC;IAEvB,IAAI,eAAiC,CAAC;IACtC,IAAI,cAAgC,CAAC;IAErC,UAAU,CAAC,GAAG,EAAE,KAAK,IAAI,EAAE;QACvB,SAAS,GAAG,IAAI,cAAc,EAAE,CAAC;QACjC,aAAa,GAAG,IAAI,oBAAoB,CAAC,SAAS,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,MAAM,WAAW,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,IAAI,EAAE;QACzC,MAAM,SAAS,CAAC,GAAG,EAAE,+CAA+C,EAAE,KAAK,IAAI,EAAE;YAC7E,MAAM,MAAM,GAAG,wBAAwB,CAAC,eAAe,CAAC,CAAC;YAEzD,eAAe,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC;gBACpC,YAAY;gBACZ,OAAO,EAAE,CAAC,MAAM,CAAC;gBACjB,SAAS,EAAE,aAAa;gBACxB,KAAK,EAAE,SAAgB;aAC1B,CAAC,CAAC;YAEH,gBAAgB;YAChB,OAAO,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,eAAe,EAAE,CAAC;YACvE,OAAO,CAAC,GAAG,EAAE,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,aAAa,EAAE,CAAC;YAExE,qBAAqB;YACrB,MAAM,IAAI,GAAG,YAAY,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC;YACtD,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;YAE5C,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,eAAe,EAAE,CAAC;YAEjE,0CAA0C;YAC1C,sDAAsD;YACtD,MAAM,IAAI,GAAG,aAAa,CAAC,aAAa,CAAC,GAAG,CAAC,eAAe,CAAC,GAAI,CAAC,CAAC;YACnE,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACnF,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,MAAM,WAAW,CAAC,GAAG,EAAE,qBAAqB,EAAE,KAAK,IAAI,EAAE;QACrD,MAAM,SAAS,CAAC,GAAG,EAAE,yCAAyC,EAAE,KAAK,IAAI,EAAE;YACvE,MAAM,KAAK,GAA2B;gBAClC,MAAM,EAAE,iBAAiB;gBACzB,IAAI,EAAE,MAAM;aACf,CAAC;YAEF,MAAM,OAAO,GAAG,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;YAExC,cAAc,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC;gBAChC,cAAc,EAAE,eAAe;gBAC/B,YAAY;gBACZ,KAAK;gBACL,MAAM,EAAE,eAAe;gBACvB,YAAY,EAAE,OAAO;gBACrB,SAAS,EAAE,aAAa;gBACxB,KAAK,EAAE,SAAgB;aAC1B,CAAC,CAAC;YAEH,OAAO,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,eAAe,EAAE,CAAC;YACzE,OAAO,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;YAEvF,6EAA6E;YAC7E,oGAAoG;YACpG,MAAM,IAAI,GAAG,YAAY,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC;YACrD,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;YAC5C,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,eAAe,EAAE,CAAC;QACrE,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,MAAM,WAAW,CAAC,GAAG,EAAE,YAAY,EAAE,KAAK,IAAI,EAAE;QAC5C,MAAM,SAAS,CAAC,GAAG,EAAE,0CAA0C,EAAE,KAAK,IAAI,EAAE;YACxE,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC;gBAClC,SAAS,EAAE,eAAe;gBAC1B,YAAY,EAAE,cAAc;gBAC5B,4BAA4B;gBAC5B,2BAA2B;aAC9B,CAAC,CAAC;YAEH,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QACxF,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC;AAEH,8EAA8E;AAC9E,gCAAgC;AAChC,8EAA8E;AAE9E,MAAM,WAAW,CAAC,GAAG,EAAE,2BAA2B,EAAE,KAAK,IAAI,EAAE;IAE3D,MAAM,OAAO,GAAG,IAAI,kBAAkB,EAAE,CAAC;IACzC,MAAM,WAAW,GAAG,iBAAiB,CAAC;IACtC,MAAM,SAAS,GAAG,eAAe,CAAC;IAElC,IAAI,SAAyB,CAAC;IAC9B,IAAI,aAAkB,CAAC;IACvB,IAAI,eAAiC,CAAC;IAEtC,UAAU,CAAC,GAAG,EAAE,KAAK,IAAI,EAAE;QACvB,SAAS,GAAG,IAAI,cAAc,EAAE,CAAC;QACjC,aAAa,GAAG,IAAI,oBAAoB,CAAC,SAAS,CAAC,CAAC;QAEpD,yBAAyB;QACzB,MAAM,MAAM,GAAG,wBAAwB,CAAC,eAAe,CAAC,CAAC;QACzD,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,EAAE,CAAC;QAC1B,eAAe,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC;YACpC,YAAY,EAAE,WAAW;YACzB,OAAO,EAAE,CAAC,MAAM,CAAC;YACjB,SAAS,EAAE,aAAa;YACxB,KAAK,EAAE,SAAgB;SAC1B,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,MAAM,WAAW,CAAC,GAAG,EAAE,wBAAwB,EAAE,KAAK,IAAI,EAAE;QACxD,MAAM,SAAS,CAAC,GAAG,EAAE,oCAAoC,EAAE,KAAK,IAAI,EAAE;YAClE,MAAM,KAAK,GAA2B,EAAE,MAAM,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;YAElF,IAAI,WAAW,GAAG,KAAK,CAAC;YACxB,IAAI,QAAQ,GAAG,EAAE,CAAC;YAElB,IAAI,CAAC;gBACD,sCAAsC;gBACtC,wEAAwE;gBACxE,MAAM,OAAO,CAAC,IAAI,CAAC;oBACf,cAAc,EAAE,eAAe;oBAC/B,YAAY,EAAE,SAAS;oBACvB,KAAK;oBACL,MAAM,EAAE,eAAe;oBACvB,SAAS,EAAE,aAAa;oBACxB,KAAK,EAAE,SAAgB;iBAC1B,CAAC,CAAC;YACP,CAAC;YAAC,OAAO,CAAM,EAAE,CAAC;gBACd,WAAW,GAAG,IAAI,CAAC;gBACnB,QAAQ,GAAG,CAAC,CAAC,OAAO,CAAC;YACzB,CAAC;YAED,OAAO,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,aAAa,EAAE,CAAC;YAC3E,mDAAmD;YACnD,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;QAChG,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,MAAM,WAAW,CAAC,GAAG,EAAE,qCAAqC,EAAE,KAAK,IAAI,EAAE;QACrE,MAAM,SAAS,CAAC,GAAG,EAAE,6DAA6D,EAAE,KAAK,IAAI,EAAE;YAC3F,oDAAoD;YACpD,MAAM,gBAAgB,GAAG,gBAAgB,CAAC;YAC1C,MAAM,gBAAgB,GAAG,wBAAwB,CAAC,gBAAgB,CAAC,CAAC;YACpE,uEAAuE;YACvE,gBAAgB,CAAC,YAAY,GAAG,CAAC,MAAM,CAAC,CAAC;YAEzC,MAAM,iBAAiB,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC;gBAC5C,YAAY,EAAE,WAAW;gBACzB,OAAO,EAAE,CAAC,gBAAgB,CAAC;gBAC3B,SAAS,EAAE,aAAa;gBACxB,KAAK,EAAE,SAAgB;aAC1B,CAAC,CAAC;YAEH,6CAA6C;YAC7C,MAAM,KAAK,GAA2B,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;YAE5E,IAAI,WAAW,GAAG,KAAK,CAAC;YACxB,IAAI,CAAC;gBACD,MAAM,OAAO,CAAC,IAAI,CAAC;oBACf,cAAc,EAAE,iBAAiB;oBACjC,YAAY,EAAE,WAAW;oBACzB,KAAK;oBACL,MAAM,EAAE,gBAAgB,EAAE,+BAA+B;oBACzD,SAAS,EAAE,aAAa;oBACxB,KAAK,EAAE,SAAgB;iBAC1B,CAAC,CAAC;YACP,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACT,WAAW,GAAG,IAAI,CAAC;gBACnB,0DAA0D;YAC9D,CAAC;YAED,OAAO,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,aAAa,EAAE,CAAC;QACtE,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC;AAEH,8EAA8E;AAC9E,sBAAsB;AACtB,8EAA8E;AAE9E,MAAM,eAAe,CAAC,GAAG,EAAE,qBAAqB,EAAE,KAAK,IAAI,EAAE;IAEzD,MAAM,OAAO,GAAG,IAAI,kBAAkB,EAAE,CAAC;IACzC,MAAM,YAAY,GAAG,wBAAwB,CAAC;IAE9C,IAAI,SAAyB,CAAC;IAC9B,IAAI,aAAkB,CAAC;IACvB,IAAI,eAAiC,CAAC;IAEtC,UAAU,CAAC,GAAG,EAAE,KAAK,IAAI,EAAE;QACvB,SAAS,GAAG,IAAI,cAAc,EAAE,CAAC;QACjC,aAAa,GAAG,IAAI,oBAAoB,CAAC,SAAS,CAAC,CAAC;QAEpD,wCAAwC;QACxC,MAAM,SAAS,GAAG,wBAAwB,CAAC,eAAe,CAAC,CAAC;QAC5D,MAAM,YAAY,GAAG,0BAA0B,CAAC,cAAc,CAAC,CAAC,CAAC,iBAAiB;QAElF,eAAe,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC;YACpC,YAAY;YACZ,OAAO,EAAE,CAAC,SAAS,EAAE,YAAY,CAAC;YAClC,SAAS,EAAE,aAAa;YACxB,KAAK,EAAE,SAAgB;SAC1B,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,MAAM,WAAW,CAAC,GAAG,EAAE,kBAAkB,EAAE,KAAK,IAAI,EAAE;QAClD,IAAI,eAAiC,CAAC;QAEtC,MAAM,SAAS,CAAC,GAAG,EAAE,yCAAyC,EAAE,KAAK,IAAI,EAAE;YACvE,eAAe,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC;gBACnC,cAAc,EAAE,eAAe;gBAC/B,YAAY;gBACZ,MAAM,EAAE,iBAAiB;gBACzB,SAAS,EAAE,aAAa;gBACxB,KAAK,EAAE,SAAgB;aAC1B,CAAC,CAAC;YAEH,OAAO,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC,eAAe,EAAE,CAAC;YAEhD,aAAa;YACb,MAAM,IAAI,GAAG,eAAe,CAAC,IAAK,CAAC;YACnC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,eAAe,EAAE,CAAC;YACpF,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,cAAe,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;YACvE,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,cAAe,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;QACxF,CAAC,CAAC,CAAC;QAEH,MAAM,SAAS,CAAC,GAAG,EAAE,gCAAgC,EAAE,KAAK,IAAI,EAAE;YAC9D,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC;gBAClC,SAAS,EAAE,eAAe;gBAC1B,YAAY,EAAE,eAAgB;gBAC9B,4BAA4B;gBAC5B,2BAA2B;aAC9B,CAAC,CAAC;YAEH,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAC1E,CAAC,CAAC,CAAC;QAEH,MAAM,SAAS,CAAC,GAAG,EAAE,+CAA+C,EAAE,KAAK,IAAI,EAAE;YAC7E,MAAM,IAAI,GAAG,eAAgB,CAAC,IAAK,CAAC;YACpC,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,cAAc,CAAC,CAAC;YAE1E,2BAA2B;YAC3B,OAAO,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,eAAe,EAAE,CAAC;YAE3C,iCAAiC;YACjC,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,UAAW,CAAC,UAAU,CAAC,CAAC;YACtD,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"keystone-service-v1.respec.mjs","sourceRoot":"","sources":["../../src/keystone/keystone-service-v1.respec.mts"],"names":[],"mappings":"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"}
|