@serve.zone/interfaces 23.1.0 → 24.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,9 @@
1
1
  import * as plugins from './plugins.js';
2
2
  import { createResolvedSecretMaterialEnvelopeContext, createSecretRecipientEnrollmentChallengeContext, resolvedSecretManifestReferencesEqual, validateResolvedSecretManifest, validateResolvedSecretManifestReference, validateSecretRecipientMetadata, validateSecretRecipientSet, verifySecretEnvelopeContext, verifyResolvedSecretManifestDigest, } from './data/secret.js';
3
+ import { isClusterRuntimeTargetSetFresh, validateClusterRuntimeTargetSet, } from './data/clusternode.js';
3
4
  import { isSha256Digest } from './data/immutableimage.js';
5
+ import { validateWorkloadInitActiveApprovalAuthority, validateWorkloadInitApprovalAuthorityReference, } from './runtime.workloadinit.js';
6
+ export * from './runtime.workloadinit.js';
4
7
  /**
5
8
  * Parses every envelope with SmartCrypto, verifies its bound context digest,
6
9
  * and checks sorted exact version coverage. It never receives a private key
@@ -250,6 +253,92 @@ const computeRuntimeSha256 = async (inputArg) => {
250
253
  .map((byteArg) => byteArg.toString(16).padStart(2, '0'))
251
254
  .join('')}`;
252
255
  };
256
+ const computeRuntimeSha256Bytes = async (inputArg) => {
257
+ const digest = new Uint8Array(await globalThis.crypto.subtle.digest('SHA-256', new Uint8Array(inputArg)));
258
+ return `sha256:${[...digest]
259
+ .map((byteArg) => byteArg.toString(16).padStart(2, '0'))
260
+ .join('')}`;
261
+ };
262
+ export const createSecretEnvelopeDigestInput = (envelopeArg) => {
263
+ const envelope = plugins.smartcrypto.parseX25519Envelope(envelopeArg);
264
+ return JSON.stringify({
265
+ schemaVersion: envelope.schemaVersion,
266
+ profile: envelope.profile,
267
+ recipientKeyId: envelope.recipientKeyId,
268
+ ephemeralPublicKey: envelope.ephemeralPublicKey,
269
+ nonce: envelope.nonce,
270
+ ciphertext: envelope.ciphertext,
271
+ tag: envelope.tag,
272
+ contextDigest: envelope.contextDigest,
273
+ });
274
+ };
275
+ export const computeSecretEnvelopeDigest = async (envelopeArg) => computeRuntimeSha256(createSecretEnvelopeDigestInput(envelopeArg));
276
+ export const computeSecretRequestContextDigest = async (contextArg) => {
277
+ if (!(contextArg instanceof Uint8Array)) {
278
+ throw new Error('secret request context must be bytes');
279
+ }
280
+ return computeRuntimeSha256Bytes(contextArg);
281
+ };
282
+ export const validateSecretEnvelopeAdmissionBinding = (bindingArg) => {
283
+ if (!isRuntimeRecord(bindingArg)
284
+ || !hasExactRuntimeKeys(bindingArg, [
285
+ 'schemaVersion',
286
+ 'recipientKeyId',
287
+ 'recipientGeneration',
288
+ 'envelopeDigest',
289
+ 'requestContextDigest',
290
+ ])) {
291
+ return ['secret envelope admission binding must use its exact schema'];
292
+ }
293
+ const errors = [];
294
+ if (bindingArg.schemaVersion !== 1) {
295
+ errors.push('secret envelope admission binding schemaVersion must be 1');
296
+ }
297
+ if (!isRuntimeIdentifier(bindingArg.recipientKeyId)
298
+ || !isPositiveSafeInteger(bindingArg.recipientGeneration)) {
299
+ errors.push('secret envelope admission binding recipient must be canonical');
300
+ }
301
+ if (typeof bindingArg.envelopeDigest !== 'string'
302
+ || !isSha256Digest(bindingArg.envelopeDigest)
303
+ || typeof bindingArg.requestContextDigest !== 'string'
304
+ || !isSha256Digest(bindingArg.requestContextDigest)) {
305
+ errors.push('secret envelope admission binding digests must be canonical');
306
+ }
307
+ return errors;
308
+ };
309
+ export const createSecretEnvelopeAdmissionBinding = async (recipientArg, envelopeArg, requestContextArg) => {
310
+ if (validateSecretRecipientMetadata(recipientArg).length > 0
311
+ || recipientArg.lifecycleState !== 'active') {
312
+ throw new Error('secret envelope admission requires the active recipient');
313
+ }
314
+ const envelope = plugins.smartcrypto.parseX25519Envelope(envelopeArg);
315
+ if (envelope.recipientKeyId !== recipientArg.recipientKeyId
316
+ || !await verifySecretEnvelopeContext(envelope, requestContextArg)) {
317
+ throw new Error('secret envelope admission binding does not match recipient and context');
318
+ }
319
+ return {
320
+ schemaVersion: 1,
321
+ recipientKeyId: recipientArg.recipientKeyId,
322
+ recipientGeneration: recipientArg.generation,
323
+ envelopeDigest: await computeSecretEnvelopeDigest(envelope),
324
+ requestContextDigest: await computeSecretRequestContextDigest(requestContextArg),
325
+ };
326
+ };
327
+ export const verifySecretEnvelopeAdmissionBinding = async (bindingArg, envelopeArg, requestContextArg) => {
328
+ try {
329
+ if (validateSecretEnvelopeAdmissionBinding(bindingArg).length > 0)
330
+ return false;
331
+ const binding = bindingArg;
332
+ const envelope = plugins.smartcrypto.parseX25519Envelope(envelopeArg);
333
+ return envelope.recipientKeyId === binding.recipientKeyId
334
+ && await verifySecretEnvelopeContext(envelope, requestContextArg)
335
+ && binding.envelopeDigest === await computeSecretEnvelopeDigest(envelope)
336
+ && binding.requestContextDigest === await computeSecretRequestContextDigest(requestContextArg);
337
+ }
338
+ catch {
339
+ return false;
340
+ }
341
+ };
253
342
  export const validateGetSecretRecipientEnrollmentStateRequest = (requestArg) => {
254
343
  try {
255
344
  if (!isRuntimeRecord(requestArg)
@@ -300,9 +389,29 @@ export const validateSecretRecipientEnrollmentState = (stateArg) => {
300
389
  return ['secret recipient enrollment state must be safely inspectable'];
301
390
  }
302
391
  };
392
+ /** Dedicated TypedSocket tag carrying ICoreflowSecretRuntimeRegistrationV2. */
393
+ export const coreflowSecretRuntimeRegistrationTagId = 'coreflowSecretRuntimeRegistration';
394
+ export const validateGetCoreflowSecretRuntimeRegistrationExpectationRequest = (requestArg) => {
395
+ try {
396
+ if (!isRuntimeRecord(requestArg)
397
+ || !hasExactRuntimeKeys(requestArg, ['identity'])
398
+ || !isRuntimeRecord(requestArg.identity)
399
+ || !hasExactRuntimeKeys(requestArg.identity, ['jwt'])
400
+ || typeof requestArg.identity.jwt !== 'string'
401
+ || requestArg.identity.jwt.length === 0) {
402
+ return ['secret runtime registration expectation request must contain only a JWT identity'];
403
+ }
404
+ return [];
405
+ }
406
+ catch {
407
+ return ['secret runtime registration expectation request must be safely inspectable'];
408
+ }
409
+ };
303
410
  const compareRuntimeTargets = (leftArg, rightArg) => {
304
411
  for (const [left, right] of [
305
- [leftArg.nodeId, rightArg.nodeId],
412
+ [leftArg.cloudlyNodeId, rightArg.cloudlyNodeId],
413
+ [leftArg.swarmClusterId, rightArg.swarmClusterId],
414
+ [leftArg.swarmNodeId, rightArg.swarmNodeId],
306
415
  [leftArg.nodeName, rightArg.nodeName],
307
416
  [leftArg.platform, rightArg.platform],
308
417
  ]) {
@@ -314,15 +423,38 @@ const compareRuntimeTargets = (leftArg, rightArg) => {
314
423
  return 0;
315
424
  };
316
425
  const canonicalRuntimeTarget = (targetArg) => ({
317
- nodeId: targetArg.nodeId,
426
+ cloudlyNodeId: targetArg.cloudlyNodeId,
427
+ swarmClusterId: targetArg.swarmClusterId,
428
+ swarmNodeId: targetArg.swarmNodeId,
318
429
  nodeName: targetArg.nodeName,
319
430
  platform: targetArg.platform,
320
431
  });
321
- export const createCoreflowSecretRuntimeNodeSetDigestInput = (targetsArg) => JSON.stringify({
322
- schemaVersion: 1,
323
- targets: targetsArg.map(canonicalRuntimeTarget),
432
+ const canonicalActiveRecipient = (recipientArg) => ({
433
+ schemaVersion: recipientArg.schemaVersion,
434
+ recipientKeyId: recipientArg.recipientKeyId,
435
+ publicKey: recipientArg.publicKey,
436
+ generation: recipientArg.generation,
437
+ activatedAt: recipientArg.activatedAt,
438
+ lifecycleState: recipientArg.lifecycleState,
439
+ });
440
+ export const createCoreflowSecretRuntimeRegistrationExpectationDigestInput = (expectationArg) => JSON.stringify({
441
+ schemaVersion: 2,
442
+ purpose: 'serve.zone/coreflow-secret-runtime-expectation',
443
+ reporterSessionId: expectationArg.reporterSessionId,
444
+ targetAuthority: {
445
+ cloudlyClusterId: expectationArg.targetAuthority.cloudlyClusterId,
446
+ swarmClusterId: expectationArg.targetAuthority.swarmClusterId,
447
+ generation: expectationArg.targetAuthority.generation,
448
+ targetSetDigest: expectationArg.targetAuthority.targetSetDigest,
449
+ },
450
+ workloadInitAuthority: {
451
+ authorityVersion: expectationArg.workloadInitAuthority.authorityVersion,
452
+ authorityGeneration: expectationArg.workloadInitAuthority.authorityGeneration,
453
+ approvalDigest: expectationArg.workloadInitAuthority.approvalDigest,
454
+ },
455
+ activeRecipient: canonicalActiveRecipient(expectationArg.activeRecipient),
324
456
  });
325
- export const computeCoreflowSecretRuntimeNodeSetDigest = async (targetsArg) => computeRuntimeSha256(createCoreflowSecretRuntimeNodeSetDigestInput(targetsArg));
457
+ export const computeCoreflowSecretRuntimeRegistrationExpectationDigest = async (expectationArg) => computeRuntimeSha256(createCoreflowSecretRuntimeRegistrationExpectationDigestInput(expectationArg));
326
458
  const validateRuntimeTargets = (targetsArg, pathArg) => {
327
459
  if (!Array.isArray(targetsArg)
328
460
  || targetsArg.length === 0
@@ -331,136 +463,155 @@ const validateRuntimeTargets = (targetsArg, pathArg) => {
331
463
  }
332
464
  const errors = [];
333
465
  let previous;
334
- const nodeIds = new Set();
466
+ const cloudlyNodeIds = new Set();
467
+ const swarmNodeScopes = new Set();
335
468
  const nodeNames = new Set();
336
469
  for (const [index, targetArg] of targetsArg.entries()) {
337
470
  if (!isRuntimeRecord(targetArg)
338
- || !hasExactRuntimeKeys(targetArg, ['nodeId', 'nodeName', 'platform'])) {
471
+ || !hasExactRuntimeKeys(targetArg, [
472
+ 'cloudlyNodeId',
473
+ 'swarmClusterId',
474
+ 'swarmNodeId',
475
+ 'nodeName',
476
+ 'platform',
477
+ ])) {
339
478
  errors.push(`${pathArg}[${index}] must use its exact schema`);
340
479
  continue;
341
480
  }
342
- if (!isRuntimeIdentifier(targetArg.nodeId) || !isRuntimeIdentifier(targetArg.nodeName)) {
481
+ if (!isRuntimeIdentifier(targetArg.cloudlyNodeId)
482
+ || !isRuntimeIdentifier(targetArg.swarmClusterId)
483
+ || !isRuntimeIdentifier(targetArg.swarmNodeId)
484
+ || !isRuntimeIdentifier(targetArg.nodeName)) {
343
485
  errors.push(`${pathArg}[${index}] node identity must be canonical`);
344
486
  }
345
487
  if (!runtimePlatforms.has(targetArg.platform)) {
346
488
  errors.push(`${pathArg}[${index}].platform must be supported`);
347
489
  }
348
- if (isRuntimeIdentifier(targetArg.nodeId)
490
+ if (isRuntimeIdentifier(targetArg.cloudlyNodeId)
491
+ && isRuntimeIdentifier(targetArg.swarmClusterId)
492
+ && isRuntimeIdentifier(targetArg.swarmNodeId)
349
493
  && isRuntimeIdentifier(targetArg.nodeName)
350
494
  && runtimePlatforms.has(targetArg.platform)) {
351
495
  const target = targetArg;
352
496
  if (previous && compareRuntimeTargets(previous, target) >= 0) {
353
- errors.push(`${pathArg} must be uniquely sorted by nodeId, nodeName, and platform`);
497
+ errors.push(`${pathArg} must be uniquely sorted by runtime identity`);
354
498
  }
355
499
  previous = target;
356
- if (nodeIds.has(target.nodeId))
357
- errors.push(`${pathArg} nodeIds must be unique`);
500
+ const swarmNodeScope = `${target.swarmClusterId}\0${target.swarmNodeId}`;
501
+ if (cloudlyNodeIds.has(target.cloudlyNodeId)) {
502
+ errors.push(`${pathArg} cloudlyNodeIds must be unique`);
503
+ }
504
+ if (swarmNodeScopes.has(swarmNodeScope)) {
505
+ errors.push(`${pathArg} scoped swarmNodeIds must be unique`);
506
+ }
358
507
  if (nodeNames.has(target.nodeName))
359
508
  errors.push(`${pathArg} nodeNames must be unique`);
360
- nodeIds.add(target.nodeId);
509
+ cloudlyNodeIds.add(target.cloudlyNodeId);
510
+ swarmNodeScopes.add(swarmNodeScope);
361
511
  nodeNames.add(target.nodeName);
362
512
  }
363
513
  }
364
514
  return errors;
365
515
  };
366
- const validateRuntimeArtifacts = (artifactsArg, pathArg) => {
367
- if (!Array.isArray(artifactsArg)
368
- || artifactsArg.length === 0
369
- || artifactsArg.length > runtimePlatforms.size) {
370
- return [`${pathArg} must be a non-empty bounded array`];
371
- }
372
- const errors = [];
373
- const platforms = [];
374
- for (const [index, artifactArg] of artifactsArg.entries()) {
375
- if (!isRuntimeRecord(artifactArg)
376
- || !hasExactRuntimeKeys(artifactArg, [
377
- 'platform',
378
- 'workloadInitPlatformManifestDigest',
379
- 'workloadInitExecutableDigest',
380
- ])) {
381
- errors.push(`${pathArg}[${index}] must use its exact schema`);
382
- continue;
383
- }
384
- platforms.push(artifactArg.platform);
385
- if (!runtimePlatforms.has(artifactArg.platform)) {
386
- errors.push(`${pathArg}[${index}].platform must be supported`);
387
- }
388
- if (typeof artifactArg.workloadInitPlatformManifestDigest !== 'string'
389
- || !isSha256Digest(artifactArg.workloadInitPlatformManifestDigest)
390
- || typeof artifactArg.workloadInitExecutableDigest !== 'string'
391
- || !isSha256Digest(artifactArg.workloadInitExecutableDigest)) {
392
- errors.push(`${pathArg}[${index}] digests must be canonical`);
393
- }
394
- }
395
- if (new Set(platforms).size !== platforms.length
396
- || JSON.stringify(platforms) !== JSON.stringify([...platforms].sort())) {
397
- errors.push(`${pathArg} must be uniquely sorted by platform`);
398
- }
399
- return errors;
400
- };
401
- const activeRecipientFingerprint = (recipientArg) => (JSON.stringify({
402
- schemaVersion: recipientArg.schemaVersion,
403
- recipientKeyId: recipientArg.recipientKeyId,
404
- publicKey: recipientArg.publicKey,
405
- generation: recipientArg.generation,
406
- activatedAt: recipientArg.activatedAt,
407
- lifecycleState: recipientArg.lifecycleState,
408
- }));
516
+ const activeRecipientFingerprint = (recipientArg) => (JSON.stringify(canonicalActiveRecipient(recipientArg)));
409
517
  /**
410
- * Consumers discard this registration on transport disconnect, tag
411
- * removal/replacement, reporter-session change, or any expectation change.
518
+ * Validates only a Cloudly-created expectation. It does not establish the
519
+ * private DSSE trust decision or Spark manager consensus that produced it.
412
520
  */
413
- export const validateCoreflowSecretRuntimeRegistration = async (registrationArg, expectationArg) => {
521
+ export const validateCoreflowSecretRuntimeRegistrationExpectation = async (expectationArg, trustedNowArg) => {
414
522
  try {
415
523
  const errors = [];
416
524
  if (!isRuntimeRecord(expectationArg)
417
525
  || !hasExactRuntimeKeys(expectationArg, [
418
526
  'expectationVersion',
527
+ 'expectationDigest',
419
528
  'reporterSessionId',
420
- 'targets',
421
- 'workloadInitImageIndexDigest',
422
- 'workloadInitArtifacts',
529
+ 'targetAuthority',
530
+ 'workloadInitAuthority',
423
531
  'activeRecipient',
424
532
  ])) {
425
533
  return ['secret runtime registration expectation must use its exact schema'];
426
534
  }
427
- if (expectationArg.expectationVersion !== 1) {
428
- errors.push('secret runtime registration expectationVersion must be 1');
535
+ if (expectationArg.expectationVersion !== 2) {
536
+ errors.push('secret runtime registration expectationVersion must be 2');
429
537
  }
430
538
  if (!isRuntimeIdentifier(expectationArg.reporterSessionId)) {
431
539
  errors.push('expected secret runtime reporterSessionId must be canonical');
432
540
  }
433
- const expectedTargetErrors = validateRuntimeTargets(expectationArg.targets, 'expected targets');
434
- errors.push(...expectedTargetErrors);
435
- errors.push(...validateRuntimeArtifacts(expectationArg.workloadInitArtifacts, 'expected WorkloadInit artifacts'));
436
- if (typeof expectationArg.workloadInitImageIndexDigest !== 'string'
437
- || !isSha256Digest(expectationArg.workloadInitImageIndexDigest)) {
438
- errors.push('expected WorkloadInit image index digest must be canonical');
541
+ const targetAuthorityErrors = await validateClusterRuntimeTargetSet(expectationArg.targetAuthority);
542
+ errors.push(...targetAuthorityErrors.map((errorArg) => `expected ${errorArg}`));
543
+ if (targetAuthorityErrors.length === 0
544
+ && !isClusterRuntimeTargetSetFresh(expectationArg.targetAuthority, trustedNowArg)) {
545
+ errors.push('expected cluster runtime target authority must be fresh');
546
+ }
547
+ if (isRuntimeRecord(expectationArg.targetAuthority)
548
+ && expectationArg.targetAuthority.state === 'ready') {
549
+ errors.push(...validateRuntimeTargets(expectationArg.targetAuthority.targets, 'expected targets'));
439
550
  }
551
+ errors.push(...await validateWorkloadInitActiveApprovalAuthority(expectationArg.workloadInitAuthority));
440
552
  const expectedRecipientErrors = validateSecretRecipientMetadata(expectationArg.activeRecipient);
441
553
  if (expectedRecipientErrors.length > 0
442
554
  || !isRuntimeRecord(expectationArg.activeRecipient)
443
555
  || expectationArg.activeRecipient.lifecycleState !== 'active') {
444
556
  errors.push('expected secret recipient must be canonical and active');
445
557
  }
558
+ if (isRuntimeRecord(expectationArg.workloadInitAuthority)
559
+ && isRuntimeRecord(expectationArg.workloadInitAuthority.approval)
560
+ && Array.isArray(expectationArg.workloadInitAuthority.approval.artifacts)
561
+ && isRuntimeRecord(expectationArg.targetAuthority)
562
+ && Array.isArray(expectationArg.targetAuthority.targets)) {
563
+ const approvedPlatforms = new Set(expectationArg.workloadInitAuthority.approval.artifacts.map((artifactArg) => (isRuntimeRecord(artifactArg) ? artifactArg.platform : undefined)));
564
+ if (expectationArg.targetAuthority.targets.some((targetArg) => (!isRuntimeRecord(targetArg) || !approvedPlatforms.has(targetArg.platform)))) {
565
+ errors.push('expected target platforms must all have approved WorkloadInit artifacts');
566
+ }
567
+ }
568
+ if (typeof expectationArg.expectationDigest !== 'string'
569
+ || !isSha256Digest(expectationArg.expectationDigest)) {
570
+ errors.push('secret runtime expectationDigest must be canonical');
571
+ }
572
+ else if (errors.length === 0
573
+ && expectationArg.expectationDigest
574
+ !== await computeCoreflowSecretRuntimeRegistrationExpectationDigest(expectationArg)) {
575
+ errors.push('secret runtime expectationDigest does not match');
576
+ }
577
+ return errors;
578
+ }
579
+ catch {
580
+ return ['secret runtime registration expectation must be safely inspectable'];
581
+ }
582
+ };
583
+ /**
584
+ * Consumers discard this registration on transport disconnect, tag
585
+ * removal/replacement, reporter-session change, or any expectation change.
586
+ */
587
+ export const validateCoreflowSecretRuntimeRegistration = async (registrationArg, expectationArg, trustedNowArg) => {
588
+ try {
589
+ const errors = await validateCoreflowSecretRuntimeRegistrationExpectation(expectationArg, trustedNowArg);
590
+ if (errors.length > 0 || !isRuntimeRecord(expectationArg))
591
+ return errors;
446
592
  if (!isRuntimeRecord(registrationArg)
447
593
  || !hasExactRuntimeKeys(registrationArg, [
448
594
  'registrationVersion',
595
+ 'expectationDigest',
449
596
  'reporterSessionId',
450
597
  'registeredAt',
598
+ 'targetGeneration',
599
+ 'targetSetDigest',
451
600
  'targets',
452
- 'nodeSetDigest',
453
601
  'nodeEvidence',
454
602
  'capabilities',
455
603
  'activeRecipient',
604
+ 'workloadInitAuthority',
456
605
  'workloadInitImageIndexDigest',
457
- 'workloadInitApprovedAt',
458
606
  ])) {
459
607
  errors.push('secret runtime registration must use its exact schema');
460
608
  return errors;
461
609
  }
462
- if (registrationArg.registrationVersion !== 1) {
463
- errors.push('secret runtime registrationVersion must be 1');
610
+ if (registrationArg.registrationVersion !== 2) {
611
+ errors.push('secret runtime registrationVersion must be 2');
612
+ }
613
+ if (registrationArg.expectationDigest !== expectationArg.expectationDigest) {
614
+ errors.push('secret runtime registration expectationDigest does not match');
464
615
  }
465
616
  if (!isRuntimeIdentifier(registrationArg.reporterSessionId)) {
466
617
  errors.push('secret runtime reporterSessionId must be canonical');
@@ -468,26 +619,29 @@ export const validateCoreflowSecretRuntimeRegistration = async (registrationArg,
468
619
  else if (registrationArg.reporterSessionId !== expectationArg.reporterSessionId) {
469
620
  errors.push('secret runtime reporterSessionId does not match the live session');
470
621
  }
471
- if (!isPositiveSafeInteger(registrationArg.registeredAt)
472
- || !isPositiveSafeInteger(registrationArg.workloadInitApprovedAt)) {
473
- errors.push('secret runtime registration timestamps must be positive integers');
622
+ if (!isPositiveSafeInteger(registrationArg.registeredAt)) {
623
+ errors.push('secret runtime registration timestamp must be positive');
474
624
  }
475
625
  const registrationTargetErrors = validateRuntimeTargets(registrationArg.targets, 'registration targets');
476
626
  errors.push(...registrationTargetErrors);
477
- if (typeof registrationArg.nodeSetDigest !== 'string'
478
- || !isSha256Digest(registrationArg.nodeSetDigest)) {
479
- errors.push('secret runtime nodeSetDigest must be canonical');
627
+ const targetAuthority = expectationArg.targetAuthority;
628
+ if (registrationArg.targetGeneration !== targetAuthority.generation
629
+ || registrationArg.targetSetDigest !== targetAuthority.targetSetDigest) {
630
+ errors.push('secret runtime registration target authority does not match');
480
631
  }
481
632
  if (typeof registrationArg.workloadInitImageIndexDigest !== 'string'
482
633
  || !isSha256Digest(registrationArg.workloadInitImageIndexDigest)) {
483
634
  errors.push('secret runtime WorkloadInit image index digest must be canonical');
484
635
  }
485
636
  const registrationRecipientErrors = validateSecretRecipientMetadata(registrationArg.activeRecipient);
637
+ const expectedRecipientErrors = validateSecretRecipientMetadata(expectationArg.activeRecipient);
486
638
  if (registrationRecipientErrors.length > 0
487
639
  || !isRuntimeRecord(registrationArg.activeRecipient)
488
640
  || registrationArg.activeRecipient.lifecycleState !== 'active') {
489
641
  errors.push('secret runtime registration recipient must be canonical and active');
490
642
  }
643
+ const registrationAuthorityErrors = validateWorkloadInitApprovalAuthorityReference(registrationArg.workloadInitAuthority);
644
+ errors.push(...registrationAuthorityErrors);
491
645
  if (!isRuntimeRecord(registrationArg.capabilities)
492
646
  || !hasOnlyRuntimeKeys(registrationArg.capabilities, [
493
647
  'immutableImageDeploymentVersion',
@@ -519,7 +673,9 @@ export const validateCoreflowSecretRuntimeRegistration = async (registrationArg,
519
673
  for (const [index, evidenceArg] of registrationArg.nodeEvidence.entries()) {
520
674
  if (!isRuntimeRecord(evidenceArg)
521
675
  || !hasExactRuntimeKeys(evidenceArg, [
522
- 'nodeId',
676
+ 'cloudlyNodeId',
677
+ 'swarmClusterId',
678
+ 'swarmNodeId',
523
679
  'nodeName',
524
680
  'platform',
525
681
  'workloadInitPlatformManifestDigest',
@@ -529,7 +685,9 @@ export const validateCoreflowSecretRuntimeRegistration = async (registrationArg,
529
685
  continue;
530
686
  }
531
687
  evidenceTargets.push({
532
- nodeId: evidenceArg.nodeId,
688
+ cloudlyNodeId: evidenceArg.cloudlyNodeId,
689
+ swarmClusterId: evidenceArg.swarmClusterId,
690
+ swarmNodeId: evidenceArg.swarmNodeId,
533
691
  nodeName: evidenceArg.nodeName,
534
692
  platform: evidenceArg.platform,
535
693
  });
@@ -549,7 +707,8 @@ export const validateCoreflowSecretRuntimeRegistration = async (registrationArg,
549
707
  if (JSON.stringify(evidenceTargets) !== JSON.stringify(registrationArg.targets)) {
550
708
  errors.push('secret runtime node evidence must exactly cover registration targets in order');
551
709
  }
552
- const expectedArtifacts = new Map(expectationArg.workloadInitArtifacts
710
+ const expectedArtifacts = new Map((expectationArg.workloadInitAuthority
711
+ .approval.artifacts)
553
712
  .map((artifactArg) => [artifactArg.platform, artifactArg]));
554
713
  for (const [index, artifactArg] of evidenceArtifacts.entries()) {
555
714
  const expectedArtifact = expectedArtifacts.get(artifactArg.platform);
@@ -562,19 +721,23 @@ export const validateCoreflowSecretRuntimeRegistration = async (registrationArg,
562
721
  }
563
722
  }
564
723
  }
565
- if (JSON.stringify(registrationArg.targets) !== JSON.stringify(expectationArg.targets)) {
724
+ if (JSON.stringify(registrationArg.targets) !== JSON.stringify(targetAuthority.targets)) {
566
725
  errors.push('secret runtime registration must exactly cover authoritative target nodes');
567
726
  }
568
- if (expectedTargetErrors.length === 0 && registrationTargetErrors.length === 0) {
569
- const expectedNodeSetDigest = await computeCoreflowSecretRuntimeNodeSetDigest(expectationArg.targets);
570
- if (registrationArg.nodeSetDigest !== expectedNodeSetDigest) {
571
- errors.push('secret runtime nodeSetDigest does not match authoritative target nodes');
572
- }
573
- }
727
+ const workloadInitAuthority = expectationArg.workloadInitAuthority;
574
728
  if (registrationArg.workloadInitImageIndexDigest
575
- !== expectationArg.workloadInitImageIndexDigest) {
729
+ !== workloadInitAuthority.approval.workloadInitImageIndexDigest) {
576
730
  errors.push('secret runtime WorkloadInit image index is not approved');
577
731
  }
732
+ if (isRuntimeRecord(registrationArg.workloadInitAuthority)
733
+ && (registrationArg.workloadInitAuthority.authorityVersion
734
+ !== workloadInitAuthority.authorityVersion
735
+ || registrationArg.workloadInitAuthority.authorityGeneration
736
+ !== workloadInitAuthority.authorityGeneration
737
+ || registrationArg.workloadInitAuthority.approvalDigest
738
+ !== workloadInitAuthority.approvalDigest)) {
739
+ errors.push('secret runtime WorkloadInit authority does not match');
740
+ }
578
741
  if (registrationRecipientErrors.length === 0 && expectedRecipientErrors.length === 0
579
742
  && activeRecipientFingerprint(registrationArg.activeRecipient) !== activeRecipientFingerprint(expectationArg.activeRecipient)) {
580
743
  errors.push('secret runtime registration recipient does not match the active recipient');
@@ -735,4 +898,4 @@ export const validateSecretDeploymentReportRequest = async (requestArg, expected
735
898
  return ['secret deployment report request must be safely inspectable'];
736
899
  }
737
900
  };
738
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3J1bnRpbWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxjQUFjLENBQUM7QUFZeEMsT0FBTyxFQUNMLDJDQUEyQyxFQUMzQywrQ0FBK0MsRUFDL0MscUNBQXFDLEVBQ3JDLDhCQUE4QixFQUM5Qix1Q0FBdUMsRUFDdkMsK0JBQStCLEVBQy9CLDBCQUEwQixFQUMxQiwyQkFBMkIsRUFDM0Isa0NBQWtDLEdBQ25DLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBbUMxRDs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sa0NBQWtDLEdBQUcsS0FBSyxFQUNyRCxXQUFvQixFQUNwQixXQUF1QyxFQUNyQixFQUFFO0lBQ3BCLElBQUksQ0FBQyxXQUFXLElBQUksT0FBTyxXQUFXLEtBQUssUUFBUSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDO1FBQUUsT0FBTyxLQUFLLENBQUM7SUFDaEcsTUFBTSxRQUFRLEdBQUcsV0FBcUQsQ0FBQztJQUN2RSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDbEUsU0FBUztRQUNULFVBQVU7UUFDVixlQUFlO0tBQ2hCLENBQUMsRUFBRSxDQUFDO1FBQ0gsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBQ0QsSUFBSSxRQUFRLENBQUMsYUFBYSxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQzNGLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUNELElBQUksOEJBQThCLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDO1dBQzNELENBQUMsTUFBTSxrQ0FBa0MsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztRQUNsRSxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFDRCxJQUFJLFFBQVEsQ0FBQyxRQUFRLENBQUMsY0FBYyxLQUFLLFdBQVcsQ0FBQyxjQUFjO1dBQzlELFFBQVEsQ0FBQyxRQUFRLENBQUMsU0FBUyxLQUFLLFdBQVcsQ0FBQyxTQUFTO1dBQ3JELFFBQVEsQ0FBQyxRQUFRLENBQUMsU0FBUyxLQUFLLFdBQVcsQ0FBQyxTQUFTO1dBQ3JELFFBQVEsQ0FBQyxRQUFRLENBQUMsY0FBYyxLQUFLLFdBQVcsQ0FBQyxjQUFjO1dBQy9ELFFBQVEsQ0FBQyxRQUFRLENBQUMsc0JBQXNCLEtBQUssV0FBVyxDQUFDLHNCQUFzQjtXQUMvRSxRQUFRLENBQUMsUUFBUSxDQUFDLG9CQUFvQixLQUFLLFdBQVcsQ0FBQyxvQkFBb0I7V0FDM0UsUUFBUSxDQUFDLFFBQVEsQ0FBQyxlQUFlLEtBQUssV0FBVyxDQUFDLGVBQWU7V0FDakUsUUFBUSxDQUFDLFFBQVEsQ0FBQyx1QkFBdUIsS0FBSyxXQUFXLENBQUMsdUJBQXVCO1dBQ2pGLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRSxLQUFLLFdBQVcsQ0FBQyxVQUFVO1dBQy9DLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxLQUFLLFdBQVcsQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUM3RCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFDRCxJQUFJLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLEdBQUc7V0FDNUIsUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEtBQUssUUFBUSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDbEUsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBQ0QsTUFBTSxrQkFBa0IsR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLE9BQU87U0FDakQsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDO1NBQzNDLElBQUksRUFBRSxDQUFDO0lBQ1YsTUFBTSxnQkFBZ0IsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ3RGLElBQUksSUFBSSxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxJQUFJLEtBQUssZ0JBQWdCLENBQUMsTUFBTTtXQUN6RCxJQUFJLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLEtBQUssSUFBSSxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQUM7UUFDN0UsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBQ0QsTUFBTSx3QkFBd0IsR0FBRyxJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO1FBQ25GLFFBQVEsQ0FBQyxlQUFlO1FBQ3hCLFFBQVE7S0FDVCxDQUFDLENBQUMsQ0FBQztJQUNKLEtBQUssTUFBTSxLQUFLLElBQUksUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3JDLElBQUksQ0FBQyxLQUFLLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLE9BQU8sS0FBSyxDQUFDLGVBQWUsS0FBSyxRQUFRO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFDbkcsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQy9ELFVBQVU7WUFDVixpQkFBaUI7U0FDbEIsQ0FBQyxFQUFFLENBQUM7WUFDSCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFDRCxNQUFNLGFBQWEsR0FBRyx3QkFBd0IsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzFFLElBQUksQ0FBQyxhQUFhO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFDakMsSUFBSSxRQUErQyxDQUFDO1FBQ3BELElBQUksQ0FBQztZQUNILFFBQVEsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNyRSxDQUFDO1FBQUMsTUFBTSxDQUFDO1lBQ1AsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBQ0QsSUFBSSxRQUFRLENBQUMsY0FBYyxLQUFLLFdBQVcsQ0FBQyxzQkFBc0I7WUFBRSxPQUFPLEtBQUssQ0FBQztRQUNqRixNQUFNLE9BQU8sR0FBRywyQ0FBMkMsQ0FBQztZQUMxRCxjQUFjLEVBQUUsV0FBVyxDQUFDLHNCQUFzQjtZQUNsRCxjQUFjLEVBQUUsUUFBUSxDQUFDLFFBQVEsQ0FBQyxjQUFjO1lBQ2hELFNBQVMsRUFBRSxRQUFRLENBQUMsUUFBUSxDQUFDLFNBQVM7WUFDdEMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxRQUFRLENBQUMsU0FBUztZQUN0QyxjQUFjLEVBQUUsUUFBUSxDQUFDLFFBQVEsQ0FBQyxjQUFjO1lBQ2hELHNCQUFzQixFQUFFLFFBQVEsQ0FBQyxRQUFRLENBQUMsc0JBQXNCO1lBQ2hFLG9CQUFvQixFQUFFLFFBQVEsQ0FBQyxRQUFRLENBQUMsb0JBQW9CO1lBQzVELGVBQWUsRUFBRSxRQUFRLENBQUMsUUFBUSxDQUFDLGVBQWU7WUFDbEQsdUJBQXVCLEVBQUUsUUFBUSxDQUFDLFFBQVEsQ0FBQyx1QkFBdUI7WUFDbEUsVUFBVSxFQUFFLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUNoQyxjQUFjLEVBQUUsUUFBUSxDQUFDLFFBQVEsQ0FBQyxNQUFNO1lBQ3hDLFFBQVEsRUFBRSxhQUFhLENBQUMsUUFBUTtZQUNoQyxlQUFlLEVBQUUsYUFBYSxDQUFDLGVBQWU7U0FDL0MsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLE1BQU0sMkJBQTJCLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQztZQUFFLE9BQU8sS0FBSyxDQUFDO0lBQzFFLENBQUM7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUMsQ0FBQztBQXNFRixNQUFNLHdCQUF3QixHQUFHLHFDQUFxQyxDQUFDO0FBQ3ZFLE1BQU0sdUJBQXVCLEdBQUcsdUNBQXVDLENBQUM7QUFFeEUsTUFBTSxDQUFDLE1BQU0sNkNBQTZDLEdBQUcsQ0FDM0QsVUFBbUIsRUFDVCxFQUFFO0lBQ1osSUFBSSxDQUFDLFVBQVUsSUFBSSxPQUFPLFVBQVUsS0FBSyxRQUFRLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1FBQy9FLE9BQU8sQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFDRCxNQUFNLE9BQU8sR0FBRyxVQUFxQyxDQUFDO0lBQ3RELE1BQU0sTUFBTSxHQUFhLEVBQUUsQ0FBQztJQUM1QixJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDakUsb0JBQW9CO1FBQ3BCLFVBQVU7UUFDVixtQkFBbUI7UUFDbkIsd0JBQXdCO0tBQ3pCLENBQUMsRUFBRSxDQUFDO1FBQ0gsTUFBTSxDQUFDLElBQUksQ0FBQyw4Q0FBOEMsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFDRCxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsSUFBSSxPQUFPLE9BQU8sQ0FBQyxRQUFRLEtBQUssUUFBUTtXQUN4RCxPQUFRLE9BQU8sQ0FBQyxRQUFvQyxDQUFDLEdBQUcsS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUMzRSxNQUFNLENBQUMsSUFBSSxDQUFDLDhDQUE4QyxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUNELElBQUksT0FBTyxPQUFPLENBQUMsc0JBQXNCLEtBQUssUUFBUTtXQUNqRCxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsc0JBQXNCLENBQUMsRUFBRSxDQUFDO1FBQ3BFLE1BQU0sQ0FBQyxJQUFJLENBQUMsNkNBQTZDLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBQ0QsSUFBSSxPQUFPLE9BQU8sQ0FBQyxpQkFBaUIsS0FBSyxRQUFRO1dBQzVDLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUM7UUFDOUQsTUFBTSxDQUFDLElBQUksQ0FBQyxxRUFBcUUsQ0FBQyxDQUFDO0lBQ3JGLENBQUM7SUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUM7V0FDL0MsT0FBTyxDQUFDLGtCQUE2QixHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ2hELE1BQU0sQ0FBQyxJQUFJLENBQUMsb0RBQW9ELENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBQ0QsSUFBSSxXQUFXLElBQUksT0FBTyxJQUFJLGdCQUFnQixJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQzFELE1BQU0sQ0FBQyxJQUFJLENBQUMsa0VBQWtFLENBQUMsQ0FBQztJQUNsRixDQUFDO0lBQ0QsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sMENBQTBDLEdBQUcsS0FBSyxFQUM3RCxZQUFxQixFQUNGLEVBQUU7SUFDckIsSUFBSSxDQUFDLFlBQVksSUFBSSxPQUFPLFlBQVksS0FBSyxRQUFRLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO1FBQ3JGLE9BQU8sQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFDRCxNQUFNLFNBQVMsR0FBRyxZQUF1QyxDQUFDO0lBQzFELE1BQU0sTUFBTSxHQUFhLEVBQUUsQ0FBQztJQUM1QixJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDbkUsV0FBVztRQUNYLGNBQWM7UUFDZCxVQUFVO1FBQ1YsV0FBVztRQUNYLFlBQVk7UUFDWixXQUFXO1FBQ1gsZ0JBQWdCO1FBQ2hCLGVBQWU7S0FDaEIsQ0FBQyxFQUFFLENBQUM7UUFDSCxNQUFNLENBQUMsSUFBSSxDQUFDLGdEQUFnRCxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUNELEtBQUssTUFBTSxLQUFLLElBQUksQ0FBQyxjQUFjLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixDQUFVLEVBQUUsQ0FBQztRQUM3RSxJQUFJLE9BQU8sU0FBUyxDQUFDLEtBQUssQ0FBQyxLQUFLLFFBQVE7ZUFDbkMsQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBVyxDQUFDLEVBQUUsQ0FBQztZQUNoRSxNQUFNLENBQUMsSUFBSSxDQUFDLHdCQUF3QixLQUFLLG9CQUFvQixDQUFDLENBQUM7UUFDakUsQ0FBQztJQUNILENBQUM7SUFDRCxJQUFJLFNBQVMsQ0FBQyxhQUFhLEtBQUssQ0FBQztRQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsOENBQThDLENBQUMsQ0FBQztJQUMvRixJQUFJLE9BQU8sU0FBUyxDQUFDLFNBQVMsS0FBSyxRQUFRO1dBQ3RDLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1FBQ3hELE1BQU0sQ0FBQyxJQUFJLENBQUMsbURBQW1ELENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxJQUFLLFNBQVMsQ0FBQyxVQUFxQixHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ3hGLE1BQU0sQ0FBQyxJQUFJLENBQUMsa0RBQWtELENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxJQUFLLFNBQVMsQ0FBQyxTQUFvQixHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ3RGLE1BQU0sQ0FBQyxJQUFJLENBQUMsOENBQThDLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBQ0QsSUFBSSxRQUEyRCxDQUFDO0lBQ2hFLElBQUksQ0FBQztRQUNILFFBQVEsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsTUFBTSxDQUFDLElBQUksQ0FBQyw4Q0FBOEMsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFDRCxJQUFJLFFBQVEsRUFBRSxDQUFDO1FBQ2IsSUFBSSxRQUFRLENBQUMsY0FBYyxLQUFLLFNBQVMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN6RCxNQUFNLENBQUMsSUFBSSxDQUFDLCtDQUErQyxDQUFDLENBQUM7UUFDL0QsQ0FBQztRQUNELElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDdkQsTUFBTSxDQUFDLElBQUksQ0FBQywrREFBK0QsQ0FBQyxDQUFDO1FBQy9FLENBQUM7UUFDRCxJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDeEIsTUFBTSxPQUFPLEdBQUcsK0NBQStDLENBQUM7Z0JBQzlELFlBQVksRUFBRSxTQUFTLENBQUMsWUFBc0I7Z0JBQzlDLFNBQVMsRUFBRSxTQUFTLENBQUMsU0FBbUI7Z0JBQ3hDLGNBQWMsRUFBRSxTQUFTLENBQUMsY0FBd0I7Z0JBQ2xELFNBQVMsRUFBRSxTQUFTLENBQUMsU0FBbUI7Z0JBQ3hDLFVBQVUsRUFBRSxTQUFTLENBQUMsVUFBb0I7Z0JBQzFDLFNBQVMsRUFBRSxTQUFTLENBQUMsU0FBbUI7YUFDekMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLE1BQU0sMkJBQTJCLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUM7Z0JBQzFELE1BQU0sQ0FBQyxJQUFJLENBQUMsNkNBQTZDLENBQUMsQ0FBQztZQUM3RCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxnREFBZ0QsR0FBRyxDQUM5RCxVQUFtQixFQUNULEVBQUU7SUFDWixJQUFJLENBQUMsVUFBVSxJQUFJLE9BQU8sVUFBVSxLQUFLLFFBQVEsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7UUFDL0UsT0FBTyxDQUFDLHlDQUF5QyxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUNELE1BQU0sT0FBTyxHQUFHLFVBQXFDLENBQUM7SUFDdEQsTUFBTSxNQUFNLEdBQWEsRUFBRSxDQUFDO0lBQzVCLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUssSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUNqRSxjQUFjO1FBQ2Qsb0JBQW9CO1FBQ3BCLFVBQVU7UUFDVixVQUFVO0tBQ1gsQ0FBQyxFQUFFLENBQUM7UUFDSCxNQUFNLENBQUMsSUFBSSxDQUFDLGlEQUFpRCxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUNELElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxJQUFJLE9BQU8sT0FBTyxDQUFDLFFBQVEsS0FBSyxRQUFRO1dBQ3hELE9BQVEsT0FBTyxDQUFDLFFBQW9DLENBQUMsR0FBRyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzNFLE1BQU0sQ0FBQyxJQUFJLENBQUMsOENBQThDLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBQ0QsSUFBSSxPQUFPLE9BQU8sQ0FBQyxZQUFZLEtBQUssUUFBUTtXQUN2QyxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQztRQUMxRCxNQUFNLENBQUMsSUFBSSxDQUFDLGlDQUFpQyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUNELElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQztXQUMvQyxPQUFPLENBQUMsa0JBQTZCLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDaEQsTUFBTSxDQUFDLElBQUksQ0FBQyxvREFBb0QsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFDRCxJQUFJLE9BQU8sT0FBTyxDQUFDLFFBQVEsS0FBSyxRQUFRLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7UUFDNUYsTUFBTSxDQUFDLElBQUksQ0FBQyw2RUFBNkUsQ0FBQyxDQUFDO0lBQzdGLENBQUM7SUFDRCxJQUFJLFdBQVcsSUFBSSxPQUFPLElBQUksZ0JBQWdCLElBQUksT0FBTyxFQUFFLENBQUM7UUFDMUQsTUFBTSxDQUFDLElBQUksQ0FBQyxxRUFBcUUsQ0FBQyxDQUFDO0lBQ3JGLENBQUM7SUFDRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDLENBQUM7QUFFRixPQUFPLEVBQUUsK0JBQStCLEVBQUUsQ0FBQztBQUUzQyxNQUFNLHNCQUFzQixHQUFHLHFDQUFxQyxDQUFDO0FBQ3JFLE1BQU0sdUJBQXVCLEdBQUcseUJBQXlCLENBQUM7QUFDMUQsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLEdBQUcsQ0FBOEI7SUFDNUQsYUFBYTtJQUNiLGFBQWE7Q0FDZCxDQUFDLENBQUM7QUFDSCxNQUFNLG1CQUFtQixHQUFHLElBQUksQ0FBQztBQUVqQyxNQUFNLGVBQWUsR0FBRyxDQUFDLFFBQWlCLEVBQXVDLEVBQUUsQ0FBQyxDQUNsRixPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksT0FBTyxRQUFRLEtBQUssUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FDOUUsQ0FBQztBQUVGLE1BQU0sbUJBQW1CLEdBQUcsQ0FDMUIsUUFBaUMsRUFDakMsT0FBaUIsRUFDUixFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUssSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUVuRyxNQUFNLGtCQUFrQixHQUFHLENBQ3pCLFFBQWlDLEVBQ2pDLE9BQWlCLEVBQ1IsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFFaEYsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLFFBQWlCLEVBQXNCLEVBQUUsQ0FBQyxDQUNyRSxPQUFPLFFBQVEsS0FBSyxRQUFRLElBQUksc0JBQXNCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUN0RSxDQUFDO0FBRUYsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLFFBQWlCLEVBQXNCLEVBQUUsQ0FBQyxDQUN2RSxNQUFNLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxJQUFLLFFBQW1CLEdBQUcsQ0FBQyxDQUMzRCxDQUFDO0FBRUYsTUFBTSxvQkFBb0IsR0FBRyxLQUFLLEVBQUUsUUFBZ0IsRUFBMEIsRUFBRTtJQUM5RSxNQUFNLEtBQUssR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNqRCxNQUFNLE1BQU0sR0FBRyxJQUFJLFVBQVUsQ0FBQyxNQUFNLFVBQVUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FDakUsU0FBUyxFQUNULEtBQUssQ0FBQyxNQUFxQixDQUM1QixDQUFDLENBQUM7SUFDSCxPQUFPLFVBQVUsQ0FBQyxHQUFHLE1BQU0sQ0FBQztTQUN6QixHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztTQUN2RCxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQW1CLENBQUM7QUFDakMsQ0FBQyxDQUFDO0FBMkJGLE1BQU0sQ0FBQyxNQUFNLGdEQUFnRCxHQUFHLENBQzlELFVBQW1CLEVBQ1QsRUFBRTtJQUNaLElBQUksQ0FBQztRQUNILElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDO2VBQzNCLENBQUMsbUJBQW1CLENBQUMsVUFBVSxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUM7ZUFDOUMsQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQztlQUNyQyxDQUFDLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztlQUNsRCxPQUFPLFVBQVUsQ0FBQyxRQUFRLENBQUMsR0FBRyxLQUFLLFFBQVE7ZUFDM0MsVUFBVSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzFDLE9BQU8sQ0FBQyw0RUFBNEUsQ0FBQyxDQUFDO1FBQ3hGLENBQUM7UUFDRCxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxPQUFPLENBQUMsc0VBQXNFLENBQUMsQ0FBQztJQUNsRixDQUFDO0FBQ0gsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sc0NBQXNDLEdBQUcsQ0FDcEQsUUFBaUIsRUFDUCxFQUFFO0lBQ1osSUFBSSxDQUFDO1FBQ0gsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUM7ZUFDekIsQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxlQUFlLEVBQUUsWUFBWSxFQUFFLFlBQVksQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNuRixPQUFPLENBQUMsNkRBQTZELENBQUMsQ0FBQztRQUN6RSxDQUFDO1FBQ0QsTUFBTSxNQUFNLEdBQWEsRUFBRSxDQUFDO1FBQzVCLElBQUksUUFBUSxDQUFDLGFBQWEsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNqQyxNQUFNLENBQUMsSUFBSSxDQUFDLDJEQUEyRCxDQUFDLENBQUM7UUFDM0UsQ0FBQztRQUNELElBQUksUUFBUSxDQUFDLFVBQVUsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUM5QixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksUUFBUSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQzVFLE1BQU0sQ0FBQyxJQUFJLENBQUMsMERBQTBELENBQUMsQ0FBQztZQUMxRSxDQUFDO1lBQ0QsT0FBTyxNQUFNLENBQUM7UUFDaEIsQ0FBQztRQUNELElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUNoRCxNQUFNLENBQUMsSUFBSSxDQUFDLHVFQUF1RSxDQUFDLENBQUM7UUFDdkYsQ0FBQztRQUNELE1BQU0sZUFBZSxHQUFHLDBCQUEwQixDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN4RSxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsb0JBQW9CLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNsRixJQUFJLGVBQWUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDakMsTUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFDLFVBQXdDLENBQUM7WUFDckUsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7WUFDbEcsSUFBSSxRQUFRLENBQUMsVUFBVSxLQUFLLGtCQUFrQixFQUFFLENBQUM7Z0JBQy9DLE1BQU0sQ0FBQyxJQUFJLENBQUMsK0VBQStFLENBQUMsQ0FBQztZQUMvRixDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxPQUFPLENBQUMsOERBQThELENBQUMsQ0FBQztJQUMxRSxDQUFDO0FBQ0gsQ0FBQyxDQUFDO0FBMENGLE1BQU0scUJBQXFCLEdBQUcsQ0FDNUIsT0FBMkMsRUFDM0MsUUFBNEMsRUFDcEMsRUFBRTtJQUNWLEtBQUssTUFBTSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtRQUMxQixDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQztRQUNqQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLFFBQVEsQ0FBQztRQUNyQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLFFBQVEsQ0FBQztLQUN0QyxFQUFFLENBQUM7UUFDRixJQUFJLElBQUksR0FBRyxLQUFLO1lBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUM1QixJQUFJLElBQUksR0FBRyxLQUFLO1lBQUUsT0FBTyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUNELE9BQU8sQ0FBQyxDQUFDO0FBQ1gsQ0FBQyxDQUFDO0FBRUYsTUFBTSxzQkFBc0IsR0FBRyxDQUM3QixTQUE2QyxFQUNULEVBQUUsQ0FBQyxDQUFDO0lBQ3hDLE1BQU0sRUFBRSxTQUFTLENBQUMsTUFBTTtJQUN4QixRQUFRLEVBQUUsU0FBUyxDQUFDLFFBQVE7SUFDNUIsUUFBUSxFQUFFLFNBQVMsQ0FBQyxRQUFRO0NBQzdCLENBQUMsQ0FBQztBQUVILE1BQU0sQ0FBQyxNQUFNLDZDQUE2QyxHQUFHLENBQzNELFVBQWdELEVBQ3hDLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQzFCLGFBQWEsRUFBRSxDQUFDO0lBQ2hCLE9BQU8sRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDLHNCQUFzQixDQUFDO0NBQ2hELENBQUMsQ0FBQztBQUVILE1BQU0sQ0FBQyxNQUFNLHlDQUF5QyxHQUFHLEtBQUssRUFDNUQsVUFBZ0QsRUFDeEIsRUFBRSxDQUFDLG9CQUFvQixDQUMvQyw2Q0FBNkMsQ0FBQyxVQUFVLENBQUMsQ0FDMUQsQ0FBQztBQUVGLE1BQU0sc0JBQXNCLEdBQUcsQ0FDN0IsVUFBbUIsRUFDbkIsT0FBZSxFQUNMLEVBQUU7SUFDWixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUM7V0FDekIsVUFBVSxDQUFDLE1BQU0sS0FBSyxDQUFDO1dBQ3ZCLFVBQVUsQ0FBQyxNQUFNLEdBQUcsbUJBQW1CLEVBQUUsQ0FBQztRQUM3QyxPQUFPLENBQUMsR0FBRyxPQUFPLG9DQUFvQyxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUNELE1BQU0sTUFBTSxHQUFhLEVBQUUsQ0FBQztJQUM1QixJQUFJLFFBQXdELENBQUM7SUFDN0QsTUFBTSxPQUFPLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztJQUNsQyxNQUFNLFNBQVMsR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDO0lBQ3BDLEtBQUssTUFBTSxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsSUFBSSxVQUFVLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztRQUN0RCxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQztlQUMxQixDQUFDLG1CQUFtQixDQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsRUFBRSxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3pFLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxPQUFPLElBQUksS0FBSyw2QkFBNkIsQ0FBQyxDQUFDO1lBQzlELFNBQVM7UUFDWCxDQUFDO1FBQ0QsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQ3ZGLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxPQUFPLElBQUksS0FBSyxtQ0FBbUMsQ0FBQyxDQUFDO1FBQ3RFLENBQUM7UUFDRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxRQUF1QyxDQUFDLEVBQUUsQ0FBQztZQUM3RSxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsT0FBTyxJQUFJLEtBQUssOEJBQThCLENBQUMsQ0FBQztRQUNqRSxDQUFDO1FBQ0QsSUFBSSxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDO2VBQ3BDLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUM7ZUFDdkMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxRQUF1QyxDQUFDLEVBQUUsQ0FBQztZQUM3RSxNQUFNLE1BQU0sR0FBRyxTQUEwRCxDQUFDO1lBQzFFLElBQUksUUFBUSxJQUFJLHFCQUFxQixDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDN0QsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLE9BQU8sNERBQTRELENBQUMsQ0FBQztZQUN0RixDQUFDO1lBQ0QsUUFBUSxHQUFHLE1BQU0sQ0FBQztZQUNsQixJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztnQkFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsT0FBTyx5QkFBeUIsQ0FBQyxDQUFDO1lBQ2pGLElBQUksU0FBUyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDO2dCQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxPQUFPLDJCQUEyQixDQUFDLENBQUM7WUFDdkYsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDM0IsU0FBUyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDakMsQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDLENBQUM7QUFFRixNQUFNLHdCQUF3QixHQUFHLENBQy9CLFlBQXFCLEVBQ3JCLE9BQWUsRUFDTCxFQUFFO0lBQ1osSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDO1dBQzNCLFlBQVksQ0FBQyxNQUFNLEtBQUssQ0FBQztXQUN6QixZQUFZLENBQUMsTUFBTSxHQUFHLGdCQUFnQixDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2pELE9BQU8sQ0FBQyxHQUFHLE9BQU8sb0NBQW9DLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBQ0QsTUFBTSxNQUFNLEdBQWEsRUFBRSxDQUFDO0lBQzVCLE1BQU0sU0FBUyxHQUFhLEVBQUUsQ0FBQztJQUMvQixLQUFLLE1BQU0sQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLElBQUksWUFBWSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7UUFDMUQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUM7ZUFDNUIsQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLEVBQUU7Z0JBQ25DLFVBQVU7Z0JBQ1Ysb0NBQW9DO2dCQUNwQyw4QkFBOEI7YUFDL0IsQ0FBQyxFQUFFLENBQUM7WUFDTCxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsT0FBTyxJQUFJLEtBQUssNkJBQTZCLENBQUMsQ0FBQztZQUM5RCxTQUFTO1FBQ1gsQ0FBQztRQUNELFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQWtCLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxRQUF1QyxDQUFDLEVBQUUsQ0FBQztZQUMvRSxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsT0FBTyxJQUFJLEtBQUssOEJBQThCLENBQUMsQ0FBQztRQUNqRSxDQUFDO1FBQ0QsSUFBSSxPQUFPLFdBQVcsQ0FBQyxrQ0FBa0MsS0FBSyxRQUFRO2VBQ2pFLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxrQ0FBa0MsQ0FBQztlQUMvRCxPQUFPLFdBQVcsQ0FBQyw0QkFBNEIsS0FBSyxRQUFRO2VBQzVELENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyw0QkFBNEIsQ0FBQyxFQUFFLENBQUM7WUFDL0QsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLE9BQU8sSUFBSSxLQUFLLDZCQUE2QixDQUFDLENBQUM7UUFDaEUsQ0FBQztJQUNILENBQUM7SUFDRCxJQUFJLElBQUksR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksS0FBSyxTQUFTLENBQUMsTUFBTTtXQUMzQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxLQUFLLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUN6RSxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsT0FBTyxzQ0FBc0MsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFDRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDLENBQUM7QUFFRixNQUFNLDBCQUEwQixHQUFHLENBQUMsWUFBNEMsRUFBVSxFQUFFLENBQUMsQ0FDM0YsSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUNiLGFBQWEsRUFBRSxZQUFZLENBQUMsYUFBYTtJQUN6QyxjQUFjLEVBQUUsWUFBWSxDQUFDLGNBQWM7SUFDM0MsU0FBUyxFQUFFLFlBQVksQ0FBQyxTQUFTO0lBQ2pDLFVBQVUsRUFBRSxZQUFZLENBQUMsVUFBVTtJQUNuQyxXQUFXLEVBQUUsWUFBWSxDQUFDLFdBQVc7SUFDckMsY0FBYyxFQUFFLFlBQVksQ0FBQyxjQUFjO0NBQzVDLENBQUMsQ0FDSCxDQUFDO0FBRUY7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0seUNBQXlDLEdBQUcsS0FBSyxFQUM1RCxlQUF3QixFQUN4QixjQUF1QixFQUNKLEVBQUU7SUFDckIsSUFBSSxDQUFDO1FBQ0gsTUFBTSxNQUFNLEdBQWEsRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxlQUFlLENBQUMsY0FBYyxDQUFDO2VBQy9CLENBQUMsbUJBQW1CLENBQUMsY0FBYyxFQUFFO2dCQUN0QyxvQkFBb0I7Z0JBQ3BCLG1CQUFtQjtnQkFDbkIsU0FBUztnQkFDVCw4QkFBOEI7Z0JBQzlCLHVCQUF1QjtnQkFDdkIsaUJBQWlCO2FBQ2xCLENBQUMsRUFBRSxDQUFDO1lBQ0wsT0FBTyxDQUFDLG1FQUFtRSxDQUFDLENBQUM7UUFDL0UsQ0FBQztRQUNELElBQUksY0FBYyxDQUFDLGtCQUFrQixLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzVDLE1BQU0sQ0FBQyxJQUFJLENBQUMsMERBQTBELENBQUMsQ0FBQztRQUMxRSxDQUFDO1FBQ0QsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUM7WUFDM0QsTUFBTSxDQUFDLElBQUksQ0FBQyw2REFBNkQsQ0FBQyxDQUFDO1FBQzdFLENBQUM7UUFDRCxNQUFNLG9CQUFvQixHQUFHLHNCQUFzQixDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztRQUNoRyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsb0JBQW9CLENBQUMsQ0FBQztRQUNyQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsd0JBQXdCLENBQ3JDLGNBQWMsQ0FBQyxxQkFBcUIsRUFDcEMsaUNBQWlDLENBQ2xDLENBQUMsQ0FBQztRQUNILElBQUksT0FBTyxjQUFjLENBQUMsNEJBQTRCLEtBQUssUUFBUTtlQUM5RCxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsNEJBQTRCLENBQUMsRUFBRSxDQUFDO1lBQ2xFLE1BQU0sQ0FBQyxJQUFJLENBQUMsNERBQTRELENBQUMsQ0FBQztRQUM1RSxDQUFDO1FBQ0QsTUFBTSx1QkFBdUIsR0FBRywrQkFBK0IsQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDaEcsSUFBSSx1QkFBdUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQztlQUNqQyxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDO2VBQ2hELGNBQWMsQ0FBQyxlQUFlLENBQUMsY0FBYyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ2hFLE1BQU0sQ0FBQyxJQUFJLENBQUMsd0RBQXdELENBQUMsQ0FBQztRQUN4RSxDQUFDO1FBQ0QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxlQUFlLENBQUM7ZUFDaEMsQ0FBQyxtQkFBbUIsQ0FBQyxlQUFlLEVBQUU7Z0JBQ3ZDLHFCQUFxQjtnQkFDckIsbUJBQW1CO2dCQUNuQixjQUFjO2dCQUNkLFNBQVM7Z0JBQ1QsZUFBZTtnQkFDZixjQUFjO2dCQUNkLGNBQWM7Z0JBQ2QsaUJBQWlCO2dCQUNqQiw4QkFBOEI7Z0JBQzlCLHdCQUF3QjthQUN6QixDQUFDLEVBQUUsQ0FBQztZQUNMLE1BQU0sQ0FBQyxJQUFJLENBQUMsdURBQXVELENBQUMsQ0FBQztZQUNyRSxPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDO1FBQ0QsSUFBSSxlQUFlLENBQUMsbUJBQW1CLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDOUMsTUFBTSxDQUFDLElBQUksQ0FBQyw4Q0FBOEMsQ0FBQyxDQUFDO1FBQzlELENBQUM7UUFDRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsZUFBZSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQztZQUM1RCxNQUFNLENBQUMsSUFBSSxDQUFDLG9EQUFvRCxDQUFDLENBQUM7UUFDcEUsQ0FBQzthQUFNLElBQUksZUFBZSxDQUFDLGlCQUFpQixLQUFLLGNBQWMsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ2xGLE1BQU0sQ0FBQyxJQUFJLENBQUMsa0VBQWtFLENBQUMsQ0FBQztRQUNsRixDQUFDO1FBQ0QsSUFBSSxDQUFDLHFCQUFxQixDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUM7ZUFDbkQsQ0FBQyxxQkFBcUIsQ0FBQyxlQUFlLENBQUMsc0JBQXNCLENBQUMsRUFBRSxDQUFDO1lBQ3BFLE1BQU0sQ0FBQyxJQUFJLENBQUMsa0VBQWtFLENBQUMsQ0FBQztRQUNsRixDQUFDO1FBQ0QsTUFBTSx3QkFBd0IsR0FBRyxzQkFBc0IsQ0FDckQsZUFBZSxDQUFDLE9BQU8sRUFDdkIsc0JBQXNCLENBQ3ZCLENBQUM7UUFDRixNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsd0JBQXdCLENBQUMsQ0FBQztRQUN6QyxJQUFJLE9BQU8sZUFBZSxDQUFDLGFBQWEsS0FBSyxRQUFRO2VBQ2hELENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDO1lBQ3BELE1BQU0sQ0FBQyxJQUFJLENBQUMsZ0RBQWdELENBQUMsQ0FBQztRQUNoRSxDQUFDO1FBQ0QsSUFBSSxPQUFPLGVBQWUsQ0FBQyw0QkFBNEIsS0FBSyxRQUFRO2VBQy9ELENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FBQyw0QkFBNEIsQ0FBQyxFQUFFLENBQUM7WUFDbkUsTUFBTSxDQUFDLElBQUksQ0FBQyxrRUFBa0UsQ0FBQyxDQUFDO1FBQ2xGLENBQUM7UUFDRCxNQUFNLDJCQUEyQixHQUFHLCtCQUErQixDQUFDLGVBQWUsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNyRyxJQUFJLDJCQUEyQixDQUFDLE1BQU0sR0FBRyxDQUFDO2VBQ3JDLENBQUMsZUFBZSxDQUFDLGVBQWUsQ0FBQyxlQUFlLENBQUM7ZUFDakQsZUFBZSxDQUFDLGVBQWUsQ0FBQyxjQUFjLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDakUsTUFBTSxDQUFDLElBQUksQ0FBQyxvRUFBb0UsQ0FBQyxDQUFDO1FBQ3BGLENBQUM7UUFDRCxJQUFJLENBQUMsZUFBZSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUM7ZUFDN0MsQ0FBQyxrQkFBa0IsQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFO2dCQUNuRCxpQ0FBaUM7Z0JBQ2pDLDJCQUEyQjtnQkFDM0IsdUJBQXVCO2dCQUN2Qiw2QkFBNkI7Z0JBQzdCLGtDQUFrQztnQkFDbEMsZ0NBQWdDO2dCQUNoQywrQkFBK0I7YUFDaEMsQ0FBQztlQUNDLGVBQWUsQ0FBQyxZQUFZLENBQUMsK0JBQStCLEtBQUssQ0FBQztlQUNsRSxlQUFlLENBQUMsWUFBWSxDQUFDLHFCQUFxQixLQUFLLENBQUM7ZUFDeEQsZUFBZSxDQUFDLFlBQVksQ0FBQywyQkFBMkIsS0FBSyxDQUFDO2VBQzlELGVBQWUsQ0FBQyxZQUFZLENBQUMsZ0NBQWdDLEtBQUssQ0FBQztlQUNuRSxlQUFlLENBQUMsWUFBWSxDQUFDLDhCQUE4QixLQUFLLENBQUM7ZUFDakUsZUFBZSxDQUFDLFlBQVksQ0FBQyw2QkFBNkIsS0FBSyxDQUFDO2VBQ2hFLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyx5QkFBeUIsS0FBSyxTQUFTO21CQUNuRSxlQUFlLENBQUMsWUFBWSxDQUFDLHlCQUF5QixLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDckUsTUFBTSxDQUFDLElBQUksQ0FBQyx3RUFBd0UsQ0FBQyxDQUFDO1FBQ3hGLENBQUM7UUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDO2VBQzNDLGVBQWUsQ0FBQyxZQUFZLENBQUMsTUFBTSxLQUFLLENBQUM7ZUFDekMsZUFBZSxDQUFDLFlBQVksQ0FBQyxNQUFNLEdBQUcsbUJBQW1CLEVBQUUsQ0FBQztZQUMvRCxNQUFNLENBQUMsSUFBSSxDQUFDLGdFQUFnRSxDQUFDLENBQUM7UUFDaEYsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLGVBQWUsR0FBeUMsRUFBRSxDQUFDO1lBQ2pFLE1BQU0saUJBQWlCLEdBQXVDLEVBQUUsQ0FBQztZQUNqRSxLQUFLLE1BQU0sQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLElBQUksZUFBZSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO2dCQUMxRSxJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQzt1QkFDNUIsQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLEVBQUU7d0JBQ25DLFFBQVE7d0JBQ1IsVUFBVTt3QkFDVixVQUFVO3dCQUNWLG9DQUFvQzt3QkFDcEMsOEJBQThCO3FCQUMvQixDQUFDLEVBQUUsQ0FBQztvQkFDTCxNQUFNLENBQUMsSUFBSSxDQUFDLCtCQUErQixLQUFLLDZCQUE2QixDQUFDLENBQUM7b0JBQy9FLFNBQVM7Z0JBQ1gsQ0FBQztnQkFDRCxlQUFlLENBQUMsSUFBSSxDQUFDO29CQUNuQixNQUFNLEVBQUUsV0FBVyxDQUFDLE1BQWdCO29CQUNwQyxRQUFRLEVBQUUsV0FBVyxDQUFDLFFBQWtCO29CQUN4QyxRQUFRLEVBQUUsV0FBVyxDQUFDLFFBQXVDO2lCQUM5RCxDQUFDLENBQUM7Z0JBQ0gsaUJBQWlCLENBQUMsSUFBSSxDQUFDO29CQUNyQixRQUFRLEVBQUUsV0FBVyxDQUFDLFFBQXVDO29CQUM3RCxrQ0FBa0MsRUFDaEMsV0FBVyxDQUFDLGtDQUFtRDtvQkFDakUsNEJBQTRCLEVBQUUsV0FBVyxDQUFDLDRCQUE2QztpQkFDeEYsQ0FBQyxDQUFDO2dCQUNILElBQUksT0FBTyxXQUFXLENBQUMsa0NBQWtDLEtBQUssUUFBUTt1QkFDakUsQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLGtDQUFrQyxDQUFDO3VCQUMvRCxPQUFPLFdBQVcsQ0FBQyw0QkFBNEIsS0FBSyxRQUFRO3VCQUM1RCxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsNEJBQTRCLENBQUMsRUFBRSxDQUFDO29CQUMvRCxNQUFNLENBQUMsSUFBSSxDQUFDLCtCQUErQixLQUFLLDZCQUE2QixDQUFDLENBQUM7Z0JBQ2pGLENBQUM7WUFDSCxDQUFDO1lBQ0QsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLHNCQUFzQixDQUFDLGVBQWUsRUFBRSxpQ0FBaUMsQ0FBQyxDQUFDLENBQUM7WUFDM0YsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxLQUFLLElBQUksQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7Z0JBQ2hGLE1BQU0sQ0FBQyxJQUFJLENBQUMsK0VBQStFLENBQUMsQ0FBQztZQUMvRixDQUFDO1lBQ0QsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLEdBQUcsQ0FHOUIsY0FBYyxDQUFDLHFCQUE0RDtpQkFDM0UsR0FBRyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzlELEtBQUssTUFBTSxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsSUFBSSxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO2dCQUMvRCxNQUFNLGdCQUFnQixHQUFHLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ3JFLElBQUksQ0FBQyxnQkFBZ0I7dUJBQ2hCLGdCQUFnQixDQUFDLGtDQUFrQzs0QkFDaEQsV0FBVyxDQUFDLGtDQUFrQzt1QkFDakQsZ0JBQWdCLENBQUMsNEJBQTRCOzRCQUMxQyxXQUFXLENBQUMsNEJBQTRCLEVBQUUsQ0FBQztvQkFDakQsTUFBTSxDQUFDLElBQUksQ0FBQywrQkFBK0IsS0FBSyx3Q0FBd0MsQ0FBQyxDQUFDO2dCQUM1RixDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxLQUFLLElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDdkYsTUFBTSxDQUFDLElBQUksQ0FBQywyRUFBMkUsQ0FBQyxDQUFDO1FBQzNGLENBQUM7UUFDRCxJQUFJLG9CQUFvQixDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksd0JBQXdCLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQy9FLE1BQU0scUJBQXFCLEdBQUcsTUFBTSx5Q0FBeUMsQ0FDM0UsY0FBYyxDQUFDLE9BQStDLENBQy9ELENBQUM7WUFDRixJQUFJLGVBQWUsQ0FBQyxhQUFhLEtBQUsscUJBQXFCLEVBQUUsQ0FBQztnQkFDNUQsTUFBTSxDQUFDLElBQUksQ0FBQyx3RUFBd0UsQ0FBQyxDQUFDO1lBQ3hGLENBQUM7UUFDSCxDQUFDO1FBQ0QsSUFBSSxlQUFlLENBQUMsNEJBQTRCO2dCQUMxQyxjQUFjLENBQUMsNEJBQTRCLEVBQUUsQ0FBQztZQUNsRCxNQUFNLENBQUMsSUFBSSxDQUFDLHlEQUF5RCxDQUFDLENBQUM7UUFDekUsQ0FBQztRQUNELElBQUksMkJBQTJCLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSx1QkFBdUIsQ0FBQyxNQUFNLEtBQUssQ0FBQztlQUMvRSwwQkFBMEIsQ0FDM0IsZUFBZSxDQUFDLGVBQTRELENBQzdFLEtBQUssMEJBQTBCLENBQzlCLGNBQWMsQ0FBQyxlQUE0RCxDQUM1RSxFQUFFLENBQUM7WUFDSixNQUFNLENBQUMsSUFBSSxDQUFDLDJFQUEyRSxDQUFDLENBQUM7UUFDM0YsQ0FBQztRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxPQUFPLENBQUMsd0VBQXdFLENBQUMsQ0FBQztJQUNwRixDQUFDO0FBQ0gsQ0FBQyxDQUFDO0FBZ0VGLE1BQU0sMEJBQTBCLEdBQUcsQ0FDakMsWUFBOEMsRUFDWixFQUFFLENBQUMsQ0FBQztJQUN0QyxVQUFVLEVBQUUsWUFBWSxDQUFDLFVBQVU7SUFDbkMsY0FBYyxFQUFFLFlBQVksQ0FBQyxjQUFjO0lBQzNDLFNBQVMsRUFBRSxZQUFZLENBQUMsU0FBUztJQUNqQyxjQUFjLEVBQUUsWUFBWSxDQUFDLGNBQWM7SUFDM0Msc0JBQXNCLEVBQUUsWUFBWSxDQUFDLHNCQUFzQjtJQUMzRCxvQkFBb0IsRUFBRSxZQUFZLENBQUMsb0JBQW9CO0lBQ3ZELGdCQUFnQixFQUFFLFlBQVksQ0FBQyxnQkFBZ0I7SUFDL0MsZUFBZSxFQUFFLFlBQVksQ0FBQyxlQUFlO0lBQzdDLHVCQUF1QixFQUFFLFlBQVksQ0FBQyx1QkFBdUI7Q0FDOUQsQ0FBQyxDQUFDO0FBRUgsTUFBTSxDQUFDLE1BQU0sdUNBQXVDLEdBQUcsQ0FDckQsU0FBNkUsRUFDckUsRUFBRTtJQUNWLE1BQU0sTUFBTSxHQUFHO1FBQ2IsYUFBYSxFQUFFLFNBQVMsQ0FBQyxhQUFhO1FBQ3RDLGlCQUFpQixFQUFFLFNBQVMsQ0FBQyxpQkFBaUI7UUFDOUMsY0FBYyxFQUFFLFNBQVMsQ0FBQyxjQUFjO1FBQ3hDLFNBQVMsRUFBRSxTQUFTLENBQUMsU0FBUztRQUM5QixvQkFBb0IsRUFBRSxTQUFTLENBQUMsb0JBQW9CO1FBQ3BELGVBQWUsRUFBRSwwQkFBMEIsQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDO1FBQ3RFLE1BQU0sRUFBRSxTQUFTLENBQUMsTUFBTTtLQUN6QixDQUFDO0lBQ0YsSUFBSSxTQUFTLENBQUMsTUFBTSxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQ25DLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUNwQixHQUFHLE1BQU07WUFDVCxlQUFlLEVBQUUsMEJBQTBCLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQztZQUN0RSxVQUFVLEVBQUUsU0FBUyxDQUFDLFVBQVU7U0FDakMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNELElBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUNuQyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDcEIsR0FBRyxNQUFNO1lBQ1QsR0FBRyxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0I7Z0JBQzVCLENBQUMsQ0FBQyxFQUFFLGdCQUFnQixFQUFFLDBCQUEwQixDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFO2dCQUM5RSxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ1AsV0FBVyxFQUFFLFNBQVMsQ0FBQyxXQUFXO1lBQ2xDLFVBQVUsRUFBRSxTQUFTLENBQUMsVUFBVTtTQUNqQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsSUFBSSxTQUFTLENBQUMsTUFBTSxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUNwQixHQUFHLE1BQU07WUFDVCxXQUFXLEVBQUUsU0FBUyxDQUFDLFdBQVc7WUFDbEMsVUFBVSxFQUFFLFNBQVMsQ0FBQyxVQUFVO1NBQ2pDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxHQUFHLE1BQU0sRUFBRSxVQUFVLEVBQUUsU0FBUyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7QUFDekUsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sbUNBQW1DLEdBQUcsS0FBSyxFQUN0RCxTQUE2RSxFQUNyRCxFQUFFLENBQUMsb0JBQW9CLENBQy9DLHVDQUF1QyxDQUFDLFNBQVMsQ0FBQyxDQUNuRCxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sa0NBQWtDLEdBQUcsS0FBSyxFQUNyRCxTQUFrQixFQUNBLEVBQUU7SUFDcEIsSUFBSSxDQUFDO1FBQ0gsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUM7ZUFDMUIsT0FBTyxTQUFTLENBQUMsWUFBWSxLQUFLLFFBQVE7ZUFDMUMsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7WUFDN0MsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBQ0QsT0FBTyxTQUFTLENBQUMsWUFBWSxLQUFLLE1BQU0sbUNBQW1DLENBQ3pFLFNBQWlELENBQ2xELENBQUM7SUFDSixDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0FBQ0gsQ0FBQyxDQUFDO0FBRUY7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0scUNBQXFDLEdBQUcsS0FBSyxFQUN4RCxVQUFtQixFQUNuQixvQkFBNEIsRUFDNUIsNEJBQW9DLEVBQ2pCLEVBQUU7SUFDckIsSUFBSSxDQUFDO1FBQ0gsSUFBSSxDQUFDLG1CQUFtQixDQUFDLG9CQUFvQixDQUFDLEVBQUUsQ0FBQztZQUMvQyxPQUFPLENBQUMsK0NBQStDLENBQUMsQ0FBQztRQUMzRCxDQUFDO1FBQ0QsSUFBSSxDQUFDLG1CQUFtQixDQUFDLDRCQUE0QixDQUFDLEVBQUUsQ0FBQztZQUN2RCxPQUFPLENBQUMsd0RBQXdELENBQUMsQ0FBQztRQUNwRSxDQUFDO1FBQ0QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQ2pDLE9BQU8sQ0FBQyxvREFBb0QsQ0FBQyxDQUFDO1FBQ2hFLENBQUM7UUFDRCxNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDO1FBQ2pDLE1BQU0sVUFBVSxHQUFHO1lBQ2pCLFVBQVU7WUFDVixlQUFlO1lBQ2YsbUJBQW1CO1lBQ25CLGdCQUFnQjtZQUNoQixXQUFXO1lBQ1gsc0JBQXNCO1lBQ3RCLGlCQUFpQjtZQUNqQixRQUFRO1lBQ1IsWUFBWTtZQUNaLGNBQWM7U0FDZixDQUFDO1FBQ0YsTUFBTSxZQUFZLEdBQUcsTUFBTSxLQUFLLFNBQVM7WUFDdkMsQ0FBQyxDQUFDLENBQUMsR0FBRyxVQUFVLEVBQUUsaUJBQWlCLENBQUM7WUFDcEMsQ0FBQyxDQUFDLE1BQU0sS0FBSyxTQUFTO2dCQUNwQixDQUFDLENBQUMsQ0FBQyxHQUFHLFVBQVUsRUFBRSxhQUFhLEVBQUUsR0FBRyxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsS0FBSyxTQUFTO3dCQUM1RSxDQUFDLENBQUMsRUFBRTt3QkFDSixDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUM7Z0JBQzFCLENBQUMsQ0FBQyxNQUFNLEtBQUssUUFBUTtvQkFDbkIsQ0FBQyxDQUFDLENBQUMsR0FBRyxVQUFVLEVBQUUsYUFBYSxDQUFDO29CQUNoQyxDQUFDLENBQUMsVUFBVSxDQUFDO1FBQ25CLE1BQU0sTUFBTSxHQUFhLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsQ0FBQyxVQUFVLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBZ0IsQ0FBQztlQUN2RSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsRUFBRSxZQUFZLENBQUMsRUFBRSxDQUFDO1lBQ3BELE1BQU0sQ0FBQyxJQUFJLENBQUMsMkRBQTJELENBQUMsQ0FBQztRQUMzRSxDQUFDO1FBQ0QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDO2VBQ3BDLENBQUMsbUJBQW1CLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO2VBQ2xELE9BQU8sVUFBVSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEtBQUssUUFBUTtlQUMzQyxVQUFVLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDMUMsTUFBTSxDQUFDLElBQUksQ0FBQyxrREFBa0QsQ0FBQyxDQUFDO1FBQ2xFLENBQUM7UUFDRCxJQUFJLFVBQVUsQ0FBQyxhQUFhLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDbkMsTUFBTSxDQUFDLElBQUksQ0FBQyxrREFBa0QsQ0FBQyxDQUFDO1FBQ2xFLENBQUM7UUFDRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDO2VBQ2pELENBQUMsbUJBQW1CLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7WUFDaEQsTUFBTSxDQUFDLElBQUksQ0FBQyw0REFBNEQsQ0FBQyxDQUFDO1FBQzVFLENBQUM7YUFBTSxJQUFJLFVBQVUsQ0FBQyxpQkFBaUIsS0FBSyw0QkFBNEIsRUFBRSxDQUFDO1lBQ3pFLE1BQU0sQ0FBQyxJQUFJLENBQUMsNEVBQTRFLENBQUMsQ0FBQztRQUM1RixDQUFDO1FBQ0QsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUM7ZUFDaEQsQ0FBQyxxQkFBcUIsQ0FBQyxVQUFVLENBQUMsb0JBQW9CLENBQUM7ZUFDdkQsQ0FBQyxxQkFBcUIsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUNuRCxNQUFNLENBQUMsSUFBSSxDQUFDLHVGQUF1RixDQUFDLENBQUM7UUFDdkcsQ0FBQztRQUNELE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyx1Q0FBdUMsQ0FDcEQsVUFBVSxDQUFDLGVBQWUsRUFDMUIsb0JBQW9CLENBQ3JCLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxvQkFBb0IsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3JELElBQUksTUFBTSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3pCLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyx1Q0FBdUMsQ0FDcEQsVUFBVSxDQUFDLGVBQWUsRUFDMUIsb0JBQW9CLENBQ3JCLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxvQkFBb0IsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3JELElBQUksQ0FBQyxxQ0FBcUMsQ0FDeEMsVUFBVSxDQUFDLGVBQW1ELEVBQzlELFVBQVUsQ0FBQyxlQUFtRCxDQUMvRCxFQUFFLENBQUM7Z0JBQ0YsTUFBTSxDQUFDLElBQUksQ0FBQyxrRUFBa0UsQ0FBQyxDQUFDO1lBQ2xGLENBQUM7UUFDSCxDQUFDO1FBQ0QsSUFBSSxNQUFNLEtBQUssU0FBUyxJQUFJLFVBQVUsQ0FBQyxnQkFBZ0IsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUN0RSxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsdUNBQXVDLENBQ3BELFVBQVUsQ0FBQyxnQkFBZ0IsRUFDM0Isb0JBQW9CLENBQ3JCLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxxQkFBcUIsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3hELENBQUM7UUFDRCxJQUFJLENBQUMsTUFBTSxLQUFLLFNBQVMsSUFBSSxNQUFNLEtBQUssUUFBUSxDQUFDO2VBQzVDLENBQUMsT0FBTyxVQUFVLENBQUMsV0FBVyxLQUFLLFFBQVE7bUJBQ3pDLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDOUQsTUFBTSxDQUFDLElBQUksQ0FBQyx3REFBd0QsQ0FBQyxDQUFDO1FBQ3hFLENBQUM7UUFDRCxJQUFJLE9BQU8sVUFBVSxDQUFDLFlBQVksS0FBSyxRQUFRO2VBQzFDLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUM7ZUFDeEMsQ0FBQyxNQUFNLGtDQUFrQyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDM0QsTUFBTSxDQUFDLElBQUksQ0FBQyxzRUFBc0UsQ0FBQyxDQUFDO1FBQ3RGLENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxDQUFDLDZEQUE2RCxDQUFDLENBQUM7SUFDekUsQ0FBQztBQUNILENBQUMsQ0FBQyJ9
901
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3J1bnRpbWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxjQUFjLENBQUM7QUFjeEMsT0FBTyxFQUNMLDJDQUEyQyxFQUMzQywrQ0FBK0MsRUFDL0MscUNBQXFDLEVBQ3JDLDhCQUE4QixFQUM5Qix1Q0FBdUMsRUFDdkMsK0JBQStCLEVBQy9CLDBCQUEwQixFQUMxQiwyQkFBMkIsRUFDM0Isa0NBQWtDLEdBQ25DLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUNMLDhCQUE4QixFQUM5QiwrQkFBK0IsR0FDaEMsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFNMUQsT0FBTyxFQUNMLDJDQUEyQyxFQUMzQyw4Q0FBOEMsR0FDL0MsTUFBTSwyQkFBMkIsQ0FBQztBQUVuQyxjQUFjLDJCQUEyQixDQUFDO0FBbUMxQzs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sa0NBQWtDLEdBQUcsS0FBSyxFQUNyRCxXQUFvQixFQUNwQixXQUF1QyxFQUNyQixFQUFFO0lBQ3BCLElBQUksQ0FBQyxXQUFXLElBQUksT0FBTyxXQUFXLEtBQUssUUFBUSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDO1FBQUUsT0FBTyxLQUFLLENBQUM7SUFDaEcsTUFBTSxRQUFRLEdBQUcsV0FBcUQsQ0FBQztJQUN2RSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDbEUsU0FBUztRQUNULFVBQVU7UUFDVixlQUFlO0tBQ2hCLENBQUMsRUFBRSxDQUFDO1FBQ0gsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBQ0QsSUFBSSxRQUFRLENBQUMs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