@serve.zone/interfaces 32.13.0 → 32.14.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.
package/changelog.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # Changelog
2
2
 
3
+ ## 2026-09-20 - 32.14.0
4
+
5
+ ### Features
6
+
7
+ - Add the pre-assignment fleet-cutover ingress preparation CAS and value-free accepted designation.
8
+ Cloudly can atomically designate one server-created live service, create or rotate its managed
9
+ launcher-environment credential privately, and return the still-held resulting runtime spec
10
+ without exposing bearer, hash, or private-key material. Exact mutation replay returns historical
11
+ recorded output without renewing authority; current authorization still dereferences the current
12
+ designation, spec, runtime, scope, and target set. Structural validation remains separate from
13
+ Cloudly's admin, ownership, liveness, held-spec, zero-port, and conflict policy.
14
+
3
15
  ## 2026-09-20 - 32.13.0
4
16
 
5
17
  ### Features
@@ -3,7 +3,7 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@serve.zone/interfaces',
6
- version: '32.13.0',
6
+ version: '32.14.0',
7
7
  description: 'Shared TypeScript interfaces and TypedRequest contracts for the serve.zone ecosystem.'
8
8
  };
9
9
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSx3QkFBd0I7SUFDOUIsT0FBTyxFQUFFLFNBQVM7SUFDbEIsV0FBVyxFQUFFLHVGQUF1RjtDQUNyRyxDQUFBIn0=
@@ -2,6 +2,7 @@ import type { TSha256Digest } from './immutableimage.js';
2
2
  import type { IClusterRuntimeReference, TClusterRuntimePhase } from './clusterruntime.js';
3
3
  import type { IRuntimeAssignmentReference, IRuntimeAuthorityReference } from './runtimeassignment.js';
4
4
  import type { IRuntimeSessionBinding } from './runtimesession.js';
5
+ import type { ISecretVersionReference } from './secret.js';
5
6
  /**
6
7
  * A server-owned accepted record reference. It contains no bearer, secret, or proof boolean.
7
8
  * Consumers dereference it against the current owner record before applying policy.
@@ -302,6 +303,50 @@ export interface IFleetCutoverCoreflowRetirementEvidence {
302
303
  acceptedAt: number;
303
304
  digest: TSha256Digest;
304
305
  }
306
+ /**
307
+ * Administrator intent to prepare the one explicitly designated ingress service. The caller
308
+ * supplies only compare-and-swap inputs; Cloudly owns credential generation and acceptance.
309
+ */
310
+ export interface IFleetCutoverIngressPreparationRequest {
311
+ mutationId: string;
312
+ clusterId: string;
313
+ ingressServiceId: string;
314
+ currentRuntime: IClusterRuntimeReference & {
315
+ phase: 'pallet';
316
+ };
317
+ scope: IFleetCutoverAcceptedEvidenceReference;
318
+ targetSet: IFleetCutoverTargetSetReference;
319
+ expectedSpecRevision: number;
320
+ /** Null for creation; the exact current designation for same-service credential rotation. */
321
+ expectedDesignation: IFleetCutoverAcceptedEvidenceReference | null;
322
+ }
323
+ /** Public identity of the active ingress credential generation; it contains no credential value. */
324
+ export interface IFleetCutoverIngressCredentialReference {
325
+ credentialId: string;
326
+ generation: number;
327
+ secretVersion: ISecretVersionReference;
328
+ }
329
+ /**
330
+ * Cloudly's accepted pre-assignment designation. This grants no assignment, session,
331
+ * registration, publication, port-transfer, or post-registration ingress authority.
332
+ */
333
+ export interface IFleetCutoverIngressDesignation {
334
+ id: string;
335
+ generation: number;
336
+ previous: IFleetCutoverAcceptedEvidenceReference | null;
337
+ clusterId: string;
338
+ runtime: IClusterRuntimeReference & {
339
+ phase: 'pallet';
340
+ };
341
+ scope: IFleetCutoverAcceptedEvidenceReference;
342
+ targetSet: IFleetCutoverTargetSetReference;
343
+ ingressServiceId: string;
344
+ preparedSpecRevision: number;
345
+ credential: IFleetCutoverIngressCredentialReference;
346
+ actorId: string;
347
+ acceptedAt: number;
348
+ digest: TSha256Digest;
349
+ }
305
350
  export interface IFleetCutoverIngressAuthority {
306
351
  id: string;
307
352
  generation: number;
@@ -393,6 +438,7 @@ export declare const fleetCutoverContract: Readonly<{
393
438
  readonly volumeFenceDigestDomain: "serve.zone/fleet-cutover-volume-fence";
394
439
  readonly corestoreAdoptionDigestDomain: "serve.zone/fleet-cutover-corestore-adoption";
395
440
  readonly coreflowRetirementDigestDomain: "serve.zone/fleet-cutover-coreflow-retirement";
441
+ readonly ingressDesignationDigestDomain: "serve.zone/fleet-cutover-ingress-designation";
396
442
  readonly ingressAuthorityDigestDomain: "serve.zone/fleet-cutover-ingress-authority";
397
443
  readonly legalPhaseTransitions: Readonly<{
398
444
  swarm: "draining";
@@ -444,6 +490,10 @@ export declare const validateFleetCutoverCorestoreAdoptionReceipt: (valueArg: un
444
490
  export declare const snapshotFleetCutoverCoreflowRetirementEvidence: (valueArg: unknown) => IFleetCutoverCoreflowRetirementEvidence;
445
491
  export declare const computeFleetCutoverCoreflowRetirementDigest: (valueArg: unknown) => Promise<TSha256Digest>;
446
492
  export declare const validateFleetCutoverCoreflowRetirementEvidence: (valueArg: unknown) => Promise<string[]>;
493
+ export declare const snapshotFleetCutoverIngressPreparationRequest: (valueArg: unknown) => IFleetCutoverIngressPreparationRequest;
494
+ export declare const snapshotFleetCutoverIngressDesignation: (valueArg: unknown) => IFleetCutoverIngressDesignation;
495
+ export declare const computeFleetCutoverIngressDesignationDigest: (valueArg: unknown) => Promise<TSha256Digest>;
496
+ export declare const validateFleetCutoverIngressDesignation: (valueArg: unknown) => Promise<string[]>;
447
497
  export declare const snapshotFleetCutoverIngressAuthority: (valueArg: unknown) => IFleetCutoverIngressAuthority;
448
498
  export declare const computeFleetCutoverIngressAuthorityDigest: (valueArg: unknown) => Promise<TSha256Digest>;
449
499
  export declare const validateFleetCutoverIngressAuthority: (valueArg: unknown) => Promise<string[]>;
@@ -21,6 +21,7 @@ export const fleetCutoverContract = Object.freeze({
21
21
  volumeFenceDigestDomain: 'serve.zone/fleet-cutover-volume-fence',
22
22
  corestoreAdoptionDigestDomain: 'serve.zone/fleet-cutover-corestore-adoption',
23
23
  coreflowRetirementDigestDomain: 'serve.zone/fleet-cutover-coreflow-retirement',
24
+ ingressDesignationDigestDomain: 'serve.zone/fleet-cutover-ingress-designation',
24
25
  ingressAuthorityDigestDomain: 'serve.zone/fleet-cutover-ingress-authority',
25
26
  legalPhaseTransitions: Object.freeze({
26
27
  swarm: 'draining',
@@ -74,6 +75,18 @@ const assignmentReference = (valueArg) => {
74
75
  digest: networkDigest(value.digest),
75
76
  };
76
77
  };
78
+ const ingressCredentialReference = (valueArg) => {
79
+ const value = networkRecord(valueArg, ['credentialId', 'generation', 'secretVersion']);
80
+ const secretVersion = networkRecord(value.secretVersion, ['secretId', 'secretVersionId']);
81
+ return {
82
+ credentialId: networkId(value.credentialId),
83
+ generation: networkCounter(value.generation),
84
+ secretVersion: {
85
+ secretId: networkId(secretVersion.secretId),
86
+ secretVersionId: networkId(secretVersion.secretVersionId),
87
+ },
88
+ };
89
+ };
77
90
  const mountTypeAndClassification = (typeArg, classificationArg) => {
78
91
  const type = literal(['volume', 'bind', 'tmpfs', 'unknown'], typeArg);
79
92
  const classification = literal([
@@ -817,6 +830,71 @@ export const validateFleetCutoverCoreflowRetirementEvidence = async (valueArg) =
817
830
  return ['fleet cutover Coreflow retirement evidence must use its exact canonical schema'];
818
831
  }
819
832
  };
833
+ export const snapshotFleetCutoverIngressPreparationRequest = (valueArg) => safe(() => {
834
+ const value = networkRecord(captureNetwork(valueArg), [
835
+ 'mutationId', 'clusterId', 'ingressServiceId', 'currentRuntime', 'scope', 'targetSet',
836
+ 'expectedSpecRevision', 'expectedDesignation',
837
+ ]);
838
+ const clusterId = networkId(value.clusterId);
839
+ const currentRuntime = runtimeReference(value.currentRuntime);
840
+ const targetSet = targetSetReference(value.targetSet);
841
+ requireNetwork(currentRuntime.id === clusterId && currentRuntime.phase === 'pallet'
842
+ && targetSet.cloudlyClusterId === clusterId);
843
+ return {
844
+ mutationId: networkId(value.mutationId),
845
+ clusterId,
846
+ ingressServiceId: networkId(value.ingressServiceId),
847
+ currentRuntime: currentRuntime,
848
+ scope: reference(value.scope),
849
+ targetSet,
850
+ expectedSpecRevision: networkCounter(value.expectedSpecRevision),
851
+ expectedDesignation: value.expectedDesignation === null
852
+ ? null : reference(value.expectedDesignation),
853
+ };
854
+ });
855
+ export const snapshotFleetCutoverIngressDesignation = (valueArg) => safe(() => {
856
+ const value = networkRecord(captureNetwork(valueArg), [
857
+ 'id', 'generation', 'previous', 'clusterId', 'runtime', 'scope', 'targetSet',
858
+ 'ingressServiceId', 'preparedSpecRevision', 'credential', 'actorId', 'acceptedAt', 'digest',
859
+ ]);
860
+ const id = networkId(value.id);
861
+ const generation = networkCounter(value.generation);
862
+ const previous = value.previous === null ? null : reference(value.previous);
863
+ const clusterId = networkId(value.clusterId);
864
+ const runtime = runtimeReference(value.runtime);
865
+ const targetSet = targetSetReference(value.targetSet);
866
+ requireNetwork(runtime.id === clusterId && runtime.phase === 'pallet'
867
+ && targetSet.cloudlyClusterId === clusterId
868
+ && (generation === 1
869
+ ? previous === null
870
+ : previous?.id === id && previous.generation === generation - 1));
871
+ return {
872
+ id,
873
+ generation,
874
+ previous,
875
+ clusterId,
876
+ runtime: runtime,
877
+ scope: reference(value.scope),
878
+ targetSet,
879
+ ingressServiceId: networkId(value.ingressServiceId),
880
+ preparedSpecRevision: networkCounter(value.preparedSpecRevision),
881
+ credential: ingressCredentialReference(value.credential),
882
+ actorId: networkId(value.actorId),
883
+ acceptedAt: networkCounter(value.acceptedAt),
884
+ digest: networkDigest(value.digest),
885
+ };
886
+ });
887
+ export const computeFleetCutoverIngressDesignationDigest = async (valueArg) => canonicalDigest(fleetCutoverContract.ingressDesignationDigestDomain, snapshotFleetCutoverIngressDesignation(valueArg));
888
+ export const validateFleetCutoverIngressDesignation = async (valueArg) => {
889
+ try {
890
+ const value = snapshotFleetCutoverIngressDesignation(valueArg);
891
+ return value.digest === await computeFleetCutoverIngressDesignationDigest(value)
892
+ ? [] : ['fleet cutover ingress designation digest does not match'];
893
+ }
894
+ catch {
895
+ return ['fleet cutover ingress designation must use its exact canonical schema'];
896
+ }
897
+ };
820
898
  export const snapshotFleetCutoverIngressAuthority = (valueArg) => safe(() => {
821
899
  const value = networkRecord(captureNetwork(valueArg), [
822
900
  'id', 'generation', 'clusterId', 'runtime', 'scope', 'targetSet', 'ingressServiceId',
@@ -940,4 +1018,4 @@ export const snapshotFleetCutoverRuntimeSpecRelease = (valueArg) => safe(() => {
940
1018
  ? { ...base, kind, emptyPublishedPortsPolicy: reference(value.emptyPublishedPortsPolicy) }
941
1019
  : { ...base, kind, ingressAuthority: reference(value.ingressAuthority) };
942
1020
  });
943
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxlZXRjdXRvdmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdHMvZGF0YS9mbGVldGN1dG92ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFNdEUsT0FBTyxFQUNMLHNCQUFzQixFQUN0Qiw0QkFBNEIsR0FDN0IsTUFBTSw2QkFBNkIsQ0FBQztBQUNyQyxPQUFPLEVBQ0wsY0FBYyxFQUNkLGNBQWMsRUFDZCxhQUFhLEVBQ2IsU0FBUyxFQUNULFdBQVcsRUFDWCxhQUFhLEVBQ2IsYUFBYSxFQUNiLGdCQUFnQixFQUNoQixhQUFhLEVBQ2IsY0FBYyxHQUNmLE1BQU0sK0JBQStCLENBQUM7QUEwYXZDLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDaEQsZUFBZSxFQUFFLEdBQUc7SUFDcEIsWUFBWSxFQUFFLElBQUk7SUFDbEIsWUFBWSxFQUFFLElBQUk7SUFDbEIsd0JBQXdCLEVBQUUsR0FBRztJQUM3QixxQkFBcUIsRUFBRSxFQUFFO0lBQ3pCLHNCQUFzQixFQUFFLEdBQUc7SUFDM0Isc0JBQXNCLEVBQUUsT0FBTztJQUMvQiwrQkFBK0IsRUFBRSxnREFBZ0Q7SUFDakYsK0JBQStCLEVBQUUsZ0RBQWdEO0lBQ2pGLHlCQUF5QixFQUFFLHlDQUF5QztJQUNwRSxnQ0FBZ0MsRUFBRSxpREFBaUQ7SUFDbkYsNkJBQTZCLEVBQUUsOENBQThDO0lBQzdFLDJCQUEyQixFQUFFLDJDQUEyQztJQUN4RSxrQkFBa0IsRUFBRSxpQ0FBaUM7SUFDckQsaUJBQWlCLEVBQUUsZ0NBQWdDO0lBQ25ELHlCQUF5QixFQUFFLHlDQUF5QztJQUNwRSx1QkFBdUIsRUFBRSx1Q0FBdUM7SUFDaEUsNkJBQTZCLEVBQUUsNkNBQTZDO0lBQzVFLDhCQUE4QixFQUFFLDhDQUE4QztJQUM5RSw0QkFBNEIsRUFBRSw0Q0FBNEM7SUFDMUUscUJBQXFCLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQztRQUNuQyxLQUFLLEVBQUUsVUFBVTtRQUNqQixRQUFRLEVBQUUsV0FBVztRQUNyQixTQUFTLEVBQUUsUUFBUTtRQUNuQixNQUFNLEVBQUUsSUFBSTtLQUN1RCxDQUFDO0NBQzlELENBQUMsQ0FBQztBQUVaLE1BQU0sSUFBSSxHQUFHLEdBQVUsRUFBRSxHQUFHLE1BQU0sSUFBSSxLQUFLLENBQUMsa0NBQWtDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNuRixNQUFNLElBQUksR0FBRyxDQUFJLFlBQXFCLEVBQUssRUFBRTtJQUMzQyxJQUFJLENBQUM7UUFBQyxPQUFPLFlBQVksRUFBRSxDQUFDO0lBQUMsQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7SUFBQyxDQUFDO0FBQ3pELENBQUMsQ0FBQztBQUNGLE1BQU0sV0FBVyxHQUFHLENBQUMsUUFBaUIsRUFBVSxFQUFFO0lBQ2hELGNBQWMsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxJQUFLLFFBQW1CLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDNUUsT0FBTyxRQUFrQixDQUFDO0FBQzVCLENBQUMsQ0FBQztBQUNGLE1BQU0sT0FBTyxHQUFHLENBQW1CLFNBQXVCLEVBQUUsUUFBaUIsRUFBSyxFQUFFO0lBQ2xGLGNBQWMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFFBQWEsQ0FBQyxDQUFDLENBQUM7SUFDbEQsT0FBTyxRQUFhLENBQUM7QUFDdkIsQ0FBQyxDQUFDO0FBQ0YsTUFBTSxTQUFTLEdBQUcsQ0FBQyxRQUFpQixFQUFVLEVBQUU7SUFDOUMsY0FBYyxDQUFDLE9BQU8sUUFBUSxLQUFLLFFBQVEsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUNoRixPQUFPLFFBQVEsQ0FBQztBQUNsQixDQUFDLENBQUM7QUFDRixNQUFNLGNBQWMsR0FBRyxDQUFDLFFBQWlCLEVBQVUsRUFBRTtJQUNuRCxjQUFjLENBQUMsT0FBTyxRQUFRLEtBQUssUUFBUTtXQUN0QywyREFBMkQsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1dBQzFFLFFBQVEsQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDLENBQUM7SUFDNUIsT0FBTyxRQUFRLENBQUM7QUFDbEIsQ0FBQyxDQUFDO0FBQ0YsTUFBTSxTQUFTLEdBQUcsQ0FBQyxRQUFpQixFQUEwQyxFQUFFLENBQzlFLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQzdCLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxRQUFpQixFQUFtQyxFQUFFO0lBQ2hGLE1BQU0sS0FBSyxHQUFHLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxrQkFBa0IsRUFBRSxZQUFZLEVBQUUsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO0lBQzdGLE9BQU87UUFDTCxnQkFBZ0IsRUFBRSxTQUFTLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDO1FBQ25ELFVBQVUsRUFBRSxjQUFjLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQztRQUM1QyxlQUFlLEVBQUUsYUFBYSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUM7S0FDdEQsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUNGLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxRQUFpQixFQUE0QixFQUFFLENBQ3ZFLCtCQUErQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQzVDLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxRQUFpQixFQUErQixFQUFFO0lBQzdFLE1BQU0sS0FBSyxHQUFHLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxjQUFjLEVBQUUsWUFBWSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDaEYsT0FBTztRQUNMLFlBQVksRUFBRSxTQUFTLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQztRQUMzQyxVQUFVLEVBQUUsY0FBYyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUM7UUFDNUMsTUFBTSxFQUFFLGFBQWEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO0tBQ3BDLENBQUM7QUFDSixDQUFDLENBQUM7QUFDRixNQUFNLDBCQUEwQixHQUFHLENBQ2pDLE9BQWdCLEVBQ2hCLGlCQUEwQixFQUNxQyxFQUFFO0lBQ2pFLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLFNBQVMsQ0FBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQy9FLE1BQU0sY0FBYyxHQUFHLE9BQU8sQ0FBQztRQUM3QixlQUFlLEVBQUUsUUFBUSxFQUFFLG1CQUFtQixFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVM7S0FDM0UsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO0lBQy9CLGNBQWMsQ0FDWixDQUFDLElBQUksS0FBSyxRQUFRLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1dBQ3RGLENBQUMsSUFBSSxLQUFLLE1BQU0sSUFBSSxDQUFDLGVBQWUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUM7V0FDckcsQ0FBQyxJQUFJLEtBQUssT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUM7V0FDNUUsQ0FBQyxJQUFJLEtBQUssU0FBUyxJQUFJLGNBQWMsS0FBSyxTQUFTLENBQUMsQ0FDeEQsQ0FBQztJQUNGLE9BQU8sRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFLENBQUM7QUFDbEMsQ0FBQyxDQUFDO0FBQ0YsTUFBTSxlQUFlLEdBQUcsQ0FBQyxRQUFpQixFQUFnQyxFQUFFO0lBQzFFLE1BQU0sS0FBSyxHQUFHLGFBQWEsQ0FBQyxRQUFRLEVBQUU7UUFDcEMsTUFBTSxFQUFFLGdCQUFnQixFQUFFLHNCQUFzQixFQUFFLHNCQUFzQixFQUFFLFVBQVU7UUFDcEYscUJBQXFCO0tBQ3RCLENBQUMsQ0FBQztJQUNILGNBQWMsQ0FBQyxPQUFPLEtBQUssQ0FBQyxRQUFRLEtBQUssU0FBUyxDQUFDLENBQUM7SUFDcEQsTUFBTSxLQUFLLEdBQUcsMEJBQTBCLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDM0UsT0FBTztRQUNMLEdBQUcsS0FBSztRQUNSLG9CQUFvQixFQUFFLGFBQWEsQ0FBQyxLQUFLLENBQUMsb0JBQW9CLENBQUM7UUFDL0Qsb0JBQW9CLEVBQUUsYUFBYSxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQztRQUMvRCxRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVE7UUFDeEIsbUJBQW1CLEVBQUUsYUFBYSxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQztLQUM5RCxDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBQ0YsTUFBTSxzQkFBc0IsR0FBRyxDQUFDLFFBQWlCLEVBQWtDLEVBQUUsQ0FBQyxhQUFhLENBQ2pHLFdBQVcsQ0FBQyxRQUFRLEVBQUUsb0JBQW9CLENBQUMscUJBQXFCLEVBQUUsZUFBZSxDQUFDLEVBQ2xGLE9BQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUN2QyxDQUFDO0FBQ0YsTUFBTSxVQUFVLEdBQUcsQ0FBQyxRQUFpQixFQUFrQyxFQUFFO0lBQ3ZFLGNBQWMsQ0FBQyxRQUFRLEtBQUssSUFBSSxJQUFJLE9BQU8sUUFBUSxLQUFLLFFBQVEsQ0FBQyxDQUFDO0lBQ2xFLE1BQU0sSUFBSSxHQUFJLFFBQW9DLENBQUMsSUFBSSxDQUFDO0lBQ3hELElBQUksSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQ3RCLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQ2xDLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBQ0QsTUFBTSxLQUFLLEdBQUcsYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU0sRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDO0lBQzVELGNBQWMsQ0FBQyxJQUFJLEtBQUssWUFBWSxDQUFDLENBQUM7SUFDdEMsT0FBTyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsV0FBVyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO0FBQ3pELENBQUMsQ0FBQztBQUNGLE1BQU0sZUFBZSxHQUFHLENBQUMsUUFBaUIsRUFBc0MsRUFBRTtJQUNoRixNQUFNLEtBQUssR0FBRyxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUMsV0FBVyxFQUFFLGVBQWUsQ0FBQyxDQUFDLENBQUM7SUFDdEUsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLFNBQVMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMvRSxNQUFNLGFBQWEsR0FBRyxLQUFLLENBQUMsYUFBYSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7UUFDbEUsVUFBVSxFQUFFLFdBQVcsRUFBRSxhQUFhO0tBQzlCLEVBQUUsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ2pDLE9BQU8sRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLENBQUM7QUFDdEMsQ0FBQyxDQUFDO0FBQ0YsTUFBTSxhQUFhLEdBQUcsQ0FBQyxRQUFpQixFQUE4QixFQUFFO0lBQ3RFLE1BQU0sS0FBSyxHQUFHLGFBQWEsQ0FBQyxRQUFRLEVBQUU7UUFDcEMsaUJBQWlCLEVBQUUsbUJBQW1CLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsTUFBTTtRQUMxRixrQkFBa0IsRUFBRSxpQkFBaUIsRUFBRSxxQkFBcUIsRUFBRSxRQUFRLEVBQUUsaUJBQWlCO0tBQzFGLENBQUMsQ0FBQztJQUNILE9BQU87UUFDTCxlQUFlLEVBQUUsU0FBUyxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUM7UUFDakQsaUJBQWlCLEVBQUUsU0FBUyxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQztRQUNyRCxXQUFXLEVBQUUsY0FBYyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUM7UUFDOUMsVUFBVSxFQUFFLGFBQWEsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDO1FBQzNDLFdBQVcsRUFBRSxhQUFhLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQztRQUM3QyxJQUFJLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7UUFDNUIsZ0JBQWdCLEVBQUUsV0FBVyxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQztRQUNyRCxlQUFlLEVBQUUsV0FBVyxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUM7UUFDbkQsbUJBQW1CLEVBQUUsYUFBYSxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQztRQUM3RCxNQUFNLEVBQUUsc0JBQXNCLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztRQUM1QyxlQUFlLEVBQUUsZUFBZSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUM7S0FDeEQsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUNGLE1BQU0sVUFBVSxHQUFHLENBQUMsUUFBaUIsRUFBMkIsRUFBRTtJQUNoRSxNQUFNLEtBQUssR0FBRyxhQUFhLENBQUMsUUFBUSxFQUFFO1FBQ3BDLGNBQWMsRUFBRSxpQkFBaUIsRUFBRSxhQUFhLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxPQUFPLEVBQUUsV0FBVztLQUNuRyxDQUFDLENBQUM7SUFDSCxJQUFJLFNBQVMsR0FBeUMsSUFBSSxDQUFDO0lBQzNELElBQUksS0FBSyxDQUFDLFNBQVMsS0FBSyxJQUFJLEVBQUUsQ0FBQztRQUM3QixNQUFNLGNBQWMsR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQztRQUM3RSxTQUFTLEdBQUc7WUFDVixpQkFBaUIsRUFBRSxTQUFTLENBQUMsY0FBYyxDQUFDLGlCQUFpQixDQUFDO1NBQy9ELENBQUM7SUFDSixDQUFDO0lBQ0QsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLFdBQVcsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNyRixNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzVFLGNBQWMsQ0FBQyxDQUFDLFdBQVcsS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQy9ELE1BQU0sVUFBVSxHQUFHO1FBQ2pCLEtBQUssRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxVQUFVO1FBQ3ZGLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFVBQVU7S0FDckUsQ0FBQztJQUNYLE9BQU87UUFDTCxZQUFZLEVBQUUsU0FBUyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUM7UUFDM0MsZUFBZSxFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDO1FBQ2pELFdBQVc7UUFDWCxRQUFRO1FBQ1IsWUFBWSxFQUFFLE9BQU8sQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLFlBQVksQ0FBQztRQUNyRCxLQUFLLEVBQUUsT0FBTyxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQ3ZDLFNBQVM7S0FDVixDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBQ0YsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLFFBQWlCLEVBQWtDLEVBQUU7SUFDOUUsTUFBTSxLQUFLLEdBQUcsYUFBYSxDQUFDLFFBQVEsRUFBRTtRQUNwQyxtQkFBbUIsRUFBRSxpQkFBaUIsRUFBRSxjQUFjLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLFFBQVE7S0FDOUYsQ0FBQyxDQUFDO0lBQ0gsT0FBTztRQUNMLGlCQUFpQixFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUM7UUFDckQsZUFBZSxFQUFFLEtBQUssQ0FBQyxlQUFlLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDO1FBQ3pGLFlBQVksRUFBRSxLQUFLLENBQUMsWUFBWSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQztRQUNoRixPQUFPLEVBQUUsYUFBYSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUM7UUFDckMsY0FBYyxFQUFFLEtBQUssQ0FBQyxjQUFjLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDO1FBQ3RGLE1BQU0sRUFBRSxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO0tBQzdDLENBQUM7QUFDSixDQUFDLENBQUM7QUFDRixNQUFNLFNBQVMsR0FBRyxDQUFDLFFBQWlCLEVBQWdDLEVBQUU7SUFDcEUsTUFBTSxLQUFLLEdBQUcsYUFBYSxDQUFDLFFBQVEsRUFBRTtRQUNwQyxnQkFBZ0IsRUFBRSxvQkFBb0IsRUFBRSxVQUFVLEVBQUUsT0FBTztLQUM1RCxDQUFDLENBQUM7SUFDSCxNQUFNLFFBQVEsR0FBRyxhQUFhLENBQUMsV0FBVyxDQUN4QyxLQUFLLENBQUMsUUFBUSxFQUNkLG9CQUFvQixDQUFDLGVBQWUsRUFDcEMsYUFBYSxDQUNkLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDdkMsTUFBTSxVQUFVLEdBQUcsSUFBSSxHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDO0lBQzdFLE1BQU0sS0FBSyxHQUFHLGFBQWEsQ0FBQyxXQUFXLENBQ3JDLEtBQUssQ0FBQyxLQUFLLEVBQ1gsb0JBQW9CLENBQUMsWUFBWSxFQUNqQyxVQUFVLENBQ1gsRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLGVBQWUsS0FBSyxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztJQUNyRSxjQUFjLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoRixPQUFPO1FBQ0wsY0FBYyxFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDO1FBQy9DLGtCQUFrQixFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUM7UUFDdkQsUUFBUTtRQUNSLEtBQUs7S0FDTixDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBQ0YsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLFFBQWlCLEVBQTBDLEVBQUU7SUFDekYsTUFBTSxLQUFLLEdBQUcsYUFBYSxDQUFDLFFBQVEsRUFBRTtRQUNwQyxhQUFhLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSxzQkFBc0IsRUFBRSxtQkFBbUI7UUFDbkYscUJBQXFCLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsbUJBQW1CO1FBQ3BGLGdCQUFnQjtLQUNqQixDQUFDLENBQUM7SUFDSCxNQUFNLE1BQU0sR0FBMkM7UUFDckQsV0FBVyxFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDO1FBQ3pDLE1BQU0sRUFBRSxhQUFhLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztRQUNuQyxXQUFXLEVBQUUsU0FBUyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUM7UUFDekMsb0JBQW9CLEVBQUUsY0FBYyxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQztRQUNoRSxpQkFBaUIsRUFBRSxTQUFTLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDO1FBQ3JELG1CQUFtQixFQUFFLGNBQWMsQ0FBQyxLQUFLLENBQUMsbUJBQW1CLENBQUM7UUFDOUQsVUFBVSxFQUFFLGNBQWMsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDO1FBQzVDLFVBQVUsRUFBRSxjQUFjLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQztRQUM1QyxVQUFVLEVBQUUsY0FBYyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUM7UUFDNUMsaUJBQWlCLEVBQUUsYUFBYSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQztRQUN6RCxjQUFjLEVBQUUsYUFBYSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUM7S0FDcEQsQ0FBQztJQUNGLGNBQWMsQ0FBQyxNQUFNLENBQUMsVUFBVSxJQUFJLE1BQU0sQ0FBQyxVQUFVO1dBQ2hELE1BQU0sQ0FBQyxVQUFVLElBQUksTUFBTSxDQUFDLFVBQVU7V0FDdEMsTUFBTSxDQUFDLFVBQVUsS0FBSyxNQUFNLENBQUMsVUFBVSxHQUFHLG9CQUFvQixDQUFDLHNCQUFzQixDQUFDLENBQUM7SUFDNUYsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyxDQUFDO0FBQ0YsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLFFBQWlCLEVBQWtDLEVBQUU7SUFDOUUsTUFBTSxLQUFLLEdBQUcsYUFBYSxDQUFDLFFBQVEsRUFBRTtRQUNwQyxhQUFhLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSxzQkFBc0IsRUFBRSxtQkFBbUI7UUFDbkYscUJBQXFCLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsbUJBQW1CO1FBQ3BGLGdCQUFnQixFQUFFLHFCQUFxQixFQUFFLGlCQUFpQjtLQUMzRCxDQUFDLENBQUM7SUFDSCxPQUFPO1FBQ0wsR0FBRyxvQkFBb0IsQ0FBQztZQUN0QixXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVc7WUFDOUIsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNO1lBQ3BCLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVztZQUM5QixvQkFBb0IsRUFBRSxLQUFLLENBQUMsb0JBQW9CO1lBQ2hELGlCQUFpQixFQUFFLEtBQUssQ0FBQyxpQkFBaUI7WUFDMUMsbUJBQW1CLEVBQUUsS0FBSyxDQUFDLG1CQUFtQjtZQUM5QyxVQUFVLEVBQUUsS0FBSyxDQUFDLFVBQVU7WUFDNUIsVUFBVSxFQUFFLEtBQUssQ0FBQyxVQUFVO1lBQzVCLFVBQVUsRUFBRSxLQUFLLENBQUMsVUFBVTtZQUM1QixpQkFBaUIsRUFBRSxLQUFLLENBQUMsaUJBQWlCO1lBQzFDLGNBQWMsRUFBRSxLQUFLLENBQUMsY0FBYztTQUNyQyxDQUFDO1FBQ0YsbUJBQW1CLEVBQUUsYUFBYSxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQztRQUM3RCxlQUFlLEVBQUUsYUFBYSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUM7S0FDdEQsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGLE1BQU0sZUFBZSxHQUFHLEtBQUssRUFBRSxTQUFpQixFQUFFLFFBQWdCLEVBQTBCLEVBQUU7SUFDNUYsTUFBTSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsR0FBRyxRQUFnQyxDQUFDO0lBQ3pFLE9BQU8sVUFBVSxNQUFNLDRCQUE0QixDQUFDLHNCQUFzQixDQUFDO1FBQ3pFLE1BQU0sRUFBRSxTQUFTO1FBQ2pCLE9BQU87S0FDUixFQUFFLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUM7QUFDcEIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxlQUFlLEdBQUcsQ0FBQyxRQUFpQixFQUFFLGFBQXNCLEVBQVUsRUFBRTtJQUM1RSxjQUFjLENBQUMsT0FBTyxRQUFRLEtBQUssUUFBUTtXQUN0QyxJQUFJLFdBQVcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLElBQUksSUFBSTtXQUNqRCxDQUFDLGFBQWEsSUFBSSxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0MsT0FBTyxRQUFRLENBQUM7QUFDbEIsQ0FBQyxDQUFDO0FBRUYsTUFBTSwwQkFBMEIsR0FBRyxLQUFLLEVBQ3RDLFNBQWlCLEVBQ2pCLFFBQWdCLEVBQ1EsRUFBRSxDQUFDLFVBQVUsTUFBTSw0QkFBNEIsQ0FBQyxzQkFBc0IsQ0FBQztJQUMvRixNQUFNLEVBQUUsU0FBUztJQUNqQixLQUFLLEVBQUUsUUFBUTtDQUNoQixFQUFFLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUM7QUFFbEIsTUFBTSxDQUFDLE1BQU0sNENBQTRDLEdBQUcsS0FBSyxFQUMvRCxRQUErQyxFQUN2QixFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxFQUFFO0lBQzNDLE1BQU0sS0FBSyxHQUFHLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUMxRCxPQUFPLDBCQUEwQixDQUFDLG9CQUFvQixDQUFDLCtCQUErQixFQUFFO1FBQ3RGLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxTQUFTLENBQVUsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDO1FBQzFFLE1BQU0sRUFBRSxlQUFlLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUM7S0FDNUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSw0Q0FBNEMsR0FBRyxLQUFLLEVBQy9ELFFBQStDLEVBQ3ZCLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUU7SUFDM0MsTUFBTSxLQUFLLEdBQUcsYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDbEQsT0FBTywwQkFBMEIsQ0FBQyxvQkFBb0IsQ0FBQywrQkFBK0IsRUFBRTtRQUN0RixNQUFNLEVBQUUsZUFBZSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDO0tBQzdDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDO0FBRUgsTUFBTSxDQUFDLE1BQU0sc0NBQXNDLEdBQUcsS0FBSyxFQUN6RCxRQUFtRSxFQUMzQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxFQUFFO0lBQzNDLE1BQU0sS0FBSyxHQUFHLGFBQWEsQ0FBQyxRQUFRLEVBQUU7UUFDcEMsTUFBTSxFQUFFLGdCQUFnQixFQUFFLHNCQUFzQixFQUFFLHNCQUFzQixFQUFFLFVBQVU7S0FDckYsQ0FBQyxDQUFDO0lBQ0gsY0FBYyxDQUFDLE9BQU8sS0FBSyxDQUFDLFFBQVEsS0FBSyxTQUFTLENBQUMsQ0FBQztJQUNwRCxNQUFNLEtBQUssR0FBRywwQkFBMEIsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUMzRSxPQUFPLDBCQUEwQixDQUFDLG9CQUFvQixDQUFDLHlCQUF5QixFQUFFO1FBQ2hGLEdBQUcsS0FBSztRQUNSLG9CQUFvQixFQUFFLGFBQWEsQ0FBQyxLQUFLLENBQUMsb0JBQW9CLENBQUM7UUFDL0Qsb0JBQW9CLEVBQUUsYUFBYSxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQztRQUMvRCxRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVE7S0FDekIsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUM7QUFFSCxNQUFNLHdCQUF3QixHQUFHLEtBQUssRUFDcEMsU0FBeUMsRUFDMUIsRUFBRTtJQUNqQixLQUFLLE1BQU0sS0FBSyxJQUFJLFNBQVMsRUFBRSxDQUFDO1FBQzlCLE1BQU0sRUFBRSxtQkFBbUIsRUFBRSxHQUFHLEtBQUssRUFBRSxHQUFHLEtBQUssQ0FBQztRQUNoRCxjQUFjLENBQUMsbUJBQW1CLEtBQUssTUFBTSxzQ0FBc0MsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzlGLENBQUM7QUFDSCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSw2Q0FBNkMsR0FBRyxLQUFLLEVBQ2hFLGVBQXlCLEVBQ0QsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksRUFBRTtJQUMzQyxNQUFNLFlBQVksR0FBRyxhQUFhLENBQUMsV0FBVyxDQUM1QyxlQUFlLEVBQ2Ysb0JBQW9CLENBQUMsd0JBQXdCLEVBQzdDLFNBQVMsQ0FDVixFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdkIsT0FBTywwQkFBMEIsQ0FBQyxvQkFBb0IsQ0FBQyxnQ0FBZ0MsRUFBRTtRQUN2RixZQUFZO0tBQ2IsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUM7QUFFSCxNQUFNLG9CQUFvQixHQUFHLENBQUMsUUFBaUIsRUFBcUMsRUFBRTtJQUNwRixNQUFNLEtBQUssR0FBRyxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUMsZ0JBQWdCLEVBQUUsb0JBQW9CLENBQUMsQ0FBQyxDQUFDO0lBQ2hGLE9BQU87UUFDTCxjQUFjLEVBQUUsV0FBVyxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUM7UUFDakQsa0JBQWtCLEVBQUUsYUFBYSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQztLQUM1RCxDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0scUNBQXFDLEdBQUcsQ0FDbkQsUUFBaUIsRUFDZSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtJQUM3QyxNQUFNLEtBQUssR0FBRyxhQUFhLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxFQUFFO1FBQ3BELGFBQWEsRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxnQkFBZ0I7S0FDakUsQ0FBQyxDQUFDO0lBQ0gsTUFBTSxVQUFVLEdBQUcsYUFBYSxDQUFDLFdBQVcsQ0FDMUMsS0FBSyxDQUFDLFVBQVUsRUFDaEIsb0JBQW9CLENBQUMsd0JBQXdCLEVBQzdDLGlCQUFpQixDQUNsQixFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDekMsTUFBTSxNQUFNLEdBQUcsb0JBQW9CLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2xELE1BQU0sS0FBSyxHQUFHLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoRCxjQUFjLENBQUMsTUFBTSxDQUFDLGNBQWMsS0FBSyxVQUFVLENBQUMsTUFBTTtXQUNyRCxLQUFLLENBQUMsY0FBYyxLQUFLLFVBQVUsQ0FBQyxNQUFNO1dBQzFDLE1BQU0sQ0FBQyxrQkFBa0IsS0FBSyxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUM3RCxPQUFPO1FBQ0wsV0FBVyxFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDO1FBQ3pDLE1BQU07UUFDTixVQUFVO1FBQ1YsS0FBSztRQUNMLGNBQWMsRUFBRSxhQUFhLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQztLQUNwRCxDQUFDO0FBQ0osQ0FBQyxDQUFDLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSwwQ0FBMEMsR0FBRyxLQUFLLEVBQzdELFFBQWlCLEVBQ08sRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksRUFBRTtJQUMzQyxNQUFNLEtBQUssR0FBRyxxQ0FBcUMsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM5RCxNQUFNLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxHQUFHLEtBQUssRUFBRSxHQUFHLEtBQUssQ0FBQztJQUNyRCxPQUFPLDBCQUEwQixDQUFDLG9CQUFvQixDQUFDLDZCQUE2QixFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQy9GLENBQUMsQ0FBQyxDQUFDO0FBRUgsTUFBTSxDQUFDLE1BQU0scUNBQXFDLEdBQUcsS0FBSyxFQUN4RCxRQUFpQixFQUNFLEVBQUU7SUFDckIsSUFBSSxDQUFDO1FBQ0gsTUFBTSxLQUFLLEdBQUcscUNBQXFDLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDOUQsTUFBTSxrQkFBa0IsR0FBRyxNQUFNLDZDQUE2QyxDQUM1RSxLQUFLLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUMzRCxDQUFDO1FBQ0YsY0FBYyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsa0JBQWtCLEtBQUssa0JBQWtCO2VBQ2hFLEtBQUssQ0FBQyxLQUFLLENBQUMsa0JBQWtCLEtBQUssa0JBQWtCLENBQUMsQ0FBQztRQUM1RCxLQUFLLE1BQU0sU0FBUyxJQUFJLEtBQUssQ0FBQyxVQUFVO1lBQUUsTUFBTSx3QkFBd0IsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDM0YsT0FBTyxLQUFLLENBQUMsY0FBYyxLQUFLLE1BQU0sMENBQTBDLENBQUMsS0FBSyxDQUFDO1lBQ3JGLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMseURBQXlELENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxDQUFDLHVFQUF1RSxDQUFDLENBQUM7SUFDbkYsQ0FBQztBQUNILENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGtDQUFrQyxHQUFHLEtBQUssRUFDckQsUUFBaUIsRUFDTyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxFQUFFO0lBQzNDLE1BQU0sR0FBRyxHQUFHLE1BQU0sNEJBQTRCLENBQzVDLHNCQUFzQixDQUFDO1FBQ3JCLE1BQU0sRUFBRSxvQ0FBb0M7UUFDNUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUM7S0FDL0MsRUFBRSxJQUFJLENBQUMsRUFDUixJQUFJLENBQ0wsQ0FBQztJQUNGLE9BQU8sVUFBVSxHQUFHLEVBQW1CLENBQUM7QUFDMUMsQ0FBQyxDQUFDLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSxtQ0FBbUMsR0FBRyxLQUFLLEVBQ3RELFFBQWlCLEVBQ3NCLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUU7SUFDMUQsTUFBTSxLQUFLLEdBQUcsYUFBYSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLFdBQVcsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7SUFDeEYsTUFBTSxjQUFjLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNsRCxNQUFNLGVBQWUsR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQzdELGNBQWMsQ0FBQyxlQUFlLEtBQUssTUFBTSxrQ0FBa0MsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO0lBQzdGLEtBQUssTUFBTSxPQUFPLElBQUksY0FBYyxDQUFDLFFBQVE7UUFBRSxNQUFNLHdCQUF3QixDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM5RixPQUFPLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRSxlQUFlLEVBQUUsQ0FBQztBQUN4RCxDQUFDLENBQUMsQ0FBQztBQUVILE1BQU0sQ0FBQyxNQUFNLHdDQUF3QyxHQUFHLEtBQUssRUFDM0QsUUFBaUIsRUFDTyxFQUFFLENBQUMsMEJBQTBCLENBQ3JELG9CQUFvQixDQUFDLDJCQUEyQixFQUNoRCxNQUFNLG1DQUFtQyxDQUFDLFFBQVEsQ0FBQyxDQUNwRCxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sbUNBQW1DLEdBQUcsS0FBSyxFQUN0RCxRQUFpQixFQUNFLEVBQUU7SUFDckIsSUFBSSxDQUFDO1FBQ0gsTUFBTSxtQ0FBbUMsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNwRCxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxPQUFPLENBQUMsb0VBQW9FLENBQUMsQ0FBQztJQUNoRixDQUFDO0FBQ0gsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sbUNBQW1DLEdBQUcsS0FBSyxFQUN0RCxRQUFpQixFQUNzQixFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxFQUFFO0lBQzFELE1BQU0sS0FBSyxHQUFHLGFBQWEsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLEVBQUU7UUFDcEQsV0FBVyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxrQkFBa0I7UUFDcEYsWUFBWTtLQUNiLENBQUMsQ0FBQztJQUNILE1BQU0sU0FBUyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDN0MsTUFBTSxPQUFPLEdBQUcsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2hELE1BQU0sU0FBUyxHQUFHLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN0RCxNQUFNLGNBQWMsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2xELEtBQUssTUFBTSxPQUFPLElBQUksY0FBYyxDQUFDLFFBQVE7UUFBRSxNQUFNLHdCQUF3QixDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM5RixNQUFNLFlBQVksR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxDQUFDLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztJQUMzRSxNQUFNLGdCQUFnQixHQUFHLGFBQWEsQ0FBQyxXQUFXLENBQ2hELEtBQUssQ0FBQyxnQkFBZ0IsRUFDdEIsb0JBQW9CLENBQUMsWUFBWSxFQUNqQyxvQkFBb0IsQ0FDckIsRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLE1BQU0sS0FBSyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUMzRCxjQUFjLENBQUMsWUFBWSxDQUFDLE1BQU0sS0FBSyxDQUFDO1dBQ25DLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUssWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU07V0FDakQsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsS0FBSyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVztXQUMzRCxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLEtBQUssWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLG9CQUFvQjtXQUM3RSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLEtBQUssWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQjtXQUN2RSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLEtBQUssWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixHQUFHLENBQUM7V0FDL0UsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVTtXQUN2RCxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLEtBQUssWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLG1CQUFtQjtXQUMzRSxZQUFZLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLFdBQVcsS0FBSyxjQUFjLENBQUMsa0JBQWtCLENBQUM7V0FDeEYsZ0JBQWdCLENBQUMsTUFBTSxHQUFHLENBQUM7V0FDM0IsSUFBSSxHQUFHLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLGdCQUFnQixDQUFDLE1BQU07V0FDekYsSUFBSSxHQUFHLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLGdCQUFnQixDQUFDLE1BQU07V0FDOUYsT0FBTyxDQUFDLEVBQUUsS0FBSyxTQUFTO1dBQ3hCLFNBQVMsQ0FBQyxnQkFBZ0IsS0FBSyxTQUFTLENBQUMsQ0FBQztJQUMvQyxNQUFNLGVBQWUsR0FBRyxNQUFNLGtDQUFrQyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ2pGLE1BQU0scUJBQXFCLEdBQUcsTUFBTSx3Q0FBd0MsQ0FBQztRQUMzRSxTQUFTLEVBQUUsY0FBYztRQUN6QixlQUFlO0tBQ2hCLENBQUMsQ0FBQztJQUNILGNBQWMsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLGVBQWUsS0FBSyxlQUFlO1dBQ25GLE9BQU8sQ0FBQyxjQUFjLEtBQUsscUJBQXFCLENBQUMsQ0FBQyxDQUFDO0lBQ3hELE1BQU0sVUFBVSxHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDcEQsY0FBYyxDQUFDLFVBQVUsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUNwQyxHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQ2xELEdBQUcsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUN2RCxDQUFDLENBQUM7SUFDSCxPQUFPO1FBQ0wsU0FBUztRQUNULE9BQU87UUFDUCxTQUFTO1FBQ1QsU0FBUyxFQUFFLGNBQWM7UUFDekIsWUFBWSxFQUFFLFlBQWdGO1FBQzlGLGdCQUFnQjtRQUNoQixVQUFVO0tBQ1gsQ0FBQztBQUNKLENBQUMsQ0FBQyxDQUFDO0FBRUgsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcsS0FBSyxFQUM3QyxRQUFpQixFQUNhLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUU7SUFDakQsTUFBTSxLQUFLLEdBQUcsYUFBYSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsRUFBRTtRQUNwRCxJQUFJLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxXQUFXO1FBQy9FLFdBQVcsRUFBRSxjQUFjLEVBQUUsa0JBQWtCLEVBQUUsWUFBWTtLQUM5RCxDQUFDLENBQUM7SUFDSCxNQUFNLFNBQVMsR0FBRyxNQUFNLG1DQUFtQyxDQUFDO1FBQzFELFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUztRQUMxQixPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87UUFDdEIsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTO1FBQzFCLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUztRQUMxQixZQUFZLEVBQUUsS0FBSyxDQUFDLFlBQVk7UUFDaEMsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLGdCQUFnQjtRQUN4QyxVQUFVLEVBQUUsS0FBSyxDQUFDLFVBQVU7S0FDN0IsQ0FBQyxDQUFDO0lBQ0gsTUFBTSxVQUFVLEdBQUcsY0FBYyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNwRCxjQUFjLENBQUMsVUFBVSxJQUFJLFNBQVMsQ0FBQyxVQUFVO1dBQzVDLFNBQVMsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsVUFBVSxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUM7V0FDekUsU0FBUyxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLFVBQVUsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUNwRixPQUFPO1FBQ0wsRUFBRSxFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3ZCLFVBQVUsRUFBRSxjQUFjLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQztRQUM1QyxVQUFVO1FBQ1YsTUFBTSxFQUFFLGFBQWEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO1FBQ25DLEdBQUcsU0FBUztLQUNiLENBQUM7QUFDSixDQUFDLENBQUMsQ0FBQztBQUVILE1BQU0sQ0FBQyxNQUFNLCtCQUErQixHQUFHLEtBQUssRUFDbEQsUUFBaUIsRUFDTyxFQUFFLENBQUMsZUFBZSxDQUMxQyxvQkFBb0IsQ0FBQyxrQkFBa0IsRUFDdkMsTUFBTSwwQkFBMEIsQ0FBQyxRQUFRLENBQUMsQ0FDM0MsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUFHLEtBQUssRUFBRSxRQUFpQixFQUFxQixFQUFFO0lBQ3ZGLElBQUksQ0FBQztRQUNILE1BQU0sS0FBSyxHQUFHLE1BQU0sMEJBQTBCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDekQsT0FBTyxLQUFLLENBQUMsTUFBTSxLQUFLLE1BQU0sK0JBQStCLENBQUMsS0FBSyxDQUFDO1lBQ2xFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsNENBQTRDLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxDQUFDLDBEQUEwRCxDQUFDLENBQUM7SUFDdEUsQ0FBQztBQUNILENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLCtCQUErQixHQUFHLENBQzdDLFFBQW1FLEVBQzNCLEVBQUUsQ0FBQyxTQUFTLENBQUM7SUFDckQsRUFBRSxFQUFFLFFBQVEsQ0FBQyxFQUFFO0lBQ2YsVUFBVSxFQUFFLFFBQVEsQ0FBQyxVQUFVO0lBQy9CLE1BQU0sRUFBRSxRQUFRLENBQUMsTUFBTTtDQUN4QixDQUFDLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSw2Q0FBNkMsR0FBRyxDQUMzRCxRQUFpQixFQUN1QixFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBRTdGLE1BQU0sVUFBVSxHQUFHLENBQUMsUUFBaUIsRUFBMkIsRUFBRTtJQUNoRSxNQUFNLEtBQUssR0FBRyxhQUFhLENBQUMsUUFBUSxFQUFFO1FBQ3BDLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUseUJBQXlCO0tBQ3ZGLENBQUMsQ0FBQztJQUNILE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQztRQUNwQixhQUFhLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsU0FBUztLQUN4RCxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN6QixNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsU0FBUyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQy9FLE1BQU0sZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLGdCQUFnQixLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDcEcsTUFBTSx1QkFBdUIsR0FBRyxLQUFLLENBQUMsdUJBQXVCLEtBQUssSUFBSTtRQUNwRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLHVCQUF1QixDQUFDLENBQUM7SUFDcEQsY0FBYyxDQUFDLEtBQUssS0FBSyxTQUFTO1FBQ2hDLENBQUMsQ0FBQyxTQUFTLEtBQUssSUFBSSxJQUFJLGdCQUFnQixLQUFLLElBQUksSUFBSSx1QkFBdUIsS0FBSyxJQUFJO1FBQ3JGLENBQUMsQ0FBQyxTQUFTLEtBQUssSUFBSSxJQUFJLGdCQUFnQixLQUFLLElBQUksSUFBSSx1QkFBdUIsS0FBSyxJQUFJLENBQUMsQ0FBQztJQUN6RixPQUFPO1FBQ0wsZUFBZSxFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDO1FBQ2pELFNBQVM7UUFDVCxLQUFLO1FBQ0wsZ0JBQWdCO1FBQ2hCLHVCQUF1QjtLQUN4QixDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQUcsQ0FBQyxRQUFpQixFQUFzQixFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtJQUM1RixNQUFNLEtBQUssR0FBRyxhQUFhLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxFQUFFO1FBQ3BELElBQUksRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsU0FBUztRQUNqRyxTQUFTLEVBQUUsWUFBWSxFQUFFLFFBQVE7S0FDbEMsQ0FBQyxDQUFDO0lBQ0gsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLENBQUMsWUFBWSxFQUFFLFVBQVUsQ0FBVSxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4RSxNQUFNLEVBQUUsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQy9CLE1BQU0sVUFBVSxHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDcEQsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM1RSxNQUFNLFNBQVMsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzdDLE1BQU0sT0FBTyxHQUFHLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNoRCxNQUFNLFNBQVMsR0FBRyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDdEQsTUFBTSxPQUFPLEdBQUcsYUFBYSxDQUFDLFdBQVcsQ0FDdkMsS0FBSyxDQUFDLE9BQU8sRUFDYixvQkFBb0IsQ0FBQyxlQUFlLEVBQ3BDLFVBQVUsQ0FDWCxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ3ZDLGNBQWMsQ0FBQyxPQUFPLENBQUMsRUFBRSxLQUFLLFNBQVM7V0FDbEMsU0FBUyxDQUFDLGdCQUFnQixLQUFLLFNBQVM7V0FDeEMsQ0FBQyxVQUFVLEtBQUssQ0FBQztZQUNsQixDQUFDLENBQUMsUUFBUSxLQUFLLElBQUksSUFBSSxLQUFLLEtBQUssWUFBWTtZQUM3QyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksUUFBUSxDQUFDLFVBQVUsS0FBSyxVQUFVLEdBQUcsQ0FBQyxDQUFDO1dBQy9ELENBQUMsS0FBSyxLQUFLLFlBQVksSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEYsT0FBTztRQUNMLEVBQUU7UUFDRixVQUFVO1FBQ1YsUUFBUTtRQUNSLEtBQUs7UUFDTCxTQUFTO1FBQ1QsTUFBTSxFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO1FBQy9CLE9BQU87UUFDUCxTQUFTO1FBQ1QsT0FBTztRQUNQLE9BQU8sRUFBRSxTQUFTLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQztRQUNqQyxVQUFVLEVBQUUsY0FBYyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUM7UUFDNUMsTUFBTSxFQUFFLGFBQWEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO0tBQ3BDLENBQUM7QUFDSixDQUFDLENBQUMsQ0FBQztBQUVILE1BQU0sQ0FBQyxNQUFNLDhCQUE4QixHQUFHLEtBQUssRUFDakQsUUFBaUIsRUFDTyxFQUFFLENBQUMsZUFBZSxDQUMxQyxvQkFBb0IsQ0FBQyxpQkFBaUIsRUFDdEMseUJBQXlCLENBQUMsUUFBUSxDQUFDLENBQ3BDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxLQUFLLEVBQUUsUUFBaUIsRUFBcUIsRUFBRTtJQUN0RixJQUFJLENBQUM7UUFDSCxNQUFNLEtBQUssR0FBRyx5QkFBeUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNsRCxPQUFPLEtBQUssQ0FBQyxNQUFNLEtBQUssTUFBTSw4QkFBOEIsQ0FBQyxLQUFLLENBQUM7WUFDakUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxPQUFPLENBQUMseURBQXlELENBQUMsQ0FBQztJQUNyRSxDQUFDO0FBQ0gsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sOENBQThDLEdBQUcsQ0FDNUQsUUFBaUIsRUFDd0IsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7SUFDdEQsTUFBTSxLQUFLLEdBQUcsYUFBYSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsRUFBRTtRQUNwRCxZQUFZLEVBQUUsV0FBVyxFQUFFLHlCQUF5QixFQUFFLFFBQVEsRUFBRSxpQkFBaUI7S0FDbEYsQ0FBQyxDQUFDO0lBQ0gsTUFBTSxlQUFlLEdBQUcsYUFBYSxDQUFDLFdBQVcsQ0FDL0MsS0FBSyxDQUFDLGVBQWUsRUFDckIsb0JBQW9CLENBQUMsc0JBQXNCLEVBQzNDLE9BQU8sQ0FBQyxFQUFFO1FBQ1IsTUFBTSxJQUFJLEdBQUcsYUFBYSxDQUFDLE9BQU8sRUFBRSxDQUFDLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQy9FLE9BQU87WUFDTCxlQUFlLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUM7WUFDaEQsU0FBUyxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQ3BDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQyxhQUFhLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxhQUFhLENBQVUsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDO1NBQzdGLENBQUM7SUFDSixDQUFDLENBQ0YsRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUN2QyxPQUFPO1FBQ0wsVUFBVSxFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDO1FBQ3ZDLFNBQVMsRUFBRSxTQUFTLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQztRQUNyQyx1QkFBdUIsRUFBRSxjQUFjLENBQUMsS0FBSyxDQUFDLHVCQUF1QixDQUFDO1FBQ3RFLE1BQU0sRUFBRSxTQUFTLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztRQUMvQixlQUFlO0tBQ2hCLENBQUM7QUFDSixDQUFDLENBQUMsQ0FBQztBQUVILE1BQU0sQ0FBQyxNQUFNLHNDQUFzQyxHQUFHLENBQ3BELFFBQWlCLEVBQ2dCLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsa0JBQWtCLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUUvRixNQUFNLGFBQWEsR0FBRyxDQUFDLFFBQWlCLEVBQW9DLEVBQUU7SUFDNUUsTUFBTSxLQUFLLEdBQUcsYUFBYSxDQUFDLFFBQVEsRUFBRTtRQUNwQyxJQUFJLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLFVBQVU7UUFDbEUscUJBQXFCLEVBQUUscUJBQXFCLEVBQUUsc0JBQXNCLEVBQUUsU0FBUyxFQUFFLE9BQU87UUFDeEYsV0FBVyxFQUFFLHVCQUF1QixFQUFFLHVCQUF1QixFQUFFLFlBQVksRUFBRSxRQUFRO0tBQ3RGLENBQUMsQ0FBQztJQUNILE1BQU0sU0FBUyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDN0MsTUFBTSxPQUFPLEdBQUcsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2hELE1BQU0sU0FBUyxHQUFHLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN0RCxjQUFjLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSyxTQUFTLElBQUksT0FBTyxDQUFDLEtBQUssS0FBSyxVQUFVO1dBQ2xFLFNBQVMsQ0FBQyxnQkFBZ0IsS0FBSyxTQUFTLENBQUMsQ0FBQztJQUMvQyxPQUFPO1FBQ0wsRUFBRSxFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3ZCLFVBQVUsRUFBRSxjQUFjLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQztRQUM1QyxTQUFTO1FBQ1QsTUFBTSxFQUFFLGFBQWEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO1FBQ25DLFNBQVMsRUFBRSxTQUFTLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQztRQUNyQyxRQUFRLEVBQUUsU0FBUyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUM7UUFDbkMsbUJBQW1CLEVBQUUsYUFBYSxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQztRQUM3RCxtQkFBbUIsRUFBRSxhQUFhLENBQUMsS0FBSyxDQUFDLG1CQUFtQixDQUFDO1FBQzdELG9CQUFvQixFQUFFLGFBQWEsQ0FBQyxLQUFLLENBQUMsb0JBQW9CLENBQUM7UUFDL0QsT0FBTyxFQUFFLE9BQXNEO1FBQy9ELEtBQUssRUFBRSxTQUFTLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQztRQUM3QixTQUFTO1FBQ1QscUJBQXFCLEVBQUUsU0FBUyxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQztRQUM3RCxxQkFBcUIsRUFBRSxTQUFTLENBQUMsS0FBSyxDQUFDLHFCQUFxQixDQUFDO1FBQzdELFVBQVUsRUFBRSxjQUFjLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQztRQUM1QyxNQUFNLEVBQUUsYUFBYSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7S0FDcEMsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHVDQUF1QyxHQUFHLENBQ3JELFFBQWlCLEVBQ2lCLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFFM0YsTUFBTSxDQUFDLE1BQU0sc0NBQXNDLEdBQUcsS0FBSyxFQUN6RCxRQUFpQixFQUNPLEVBQUUsQ0FBQyxlQUFlLENBQzFDLG9CQUFvQixDQUFDLHlCQUF5QixFQUM5Qyx1Q0FBdUMsQ0FBQyxRQUFRLENBQUMsQ0FDbEQsQ0FBQztBQUVGLE1BQU0sV0FBVyxHQUFHLENBQUMsUUFBaUIsRUFBNEIsRUFBRTtJQUNsRSxjQUFjLENBQUMsUUFBUSxLQUFLLElBQUksSUFBSSxPQUFPLFFBQVEsS0FBSyxRQUFRLENBQUMsQ0FBQztJQUNsRSxNQUFNLEtBQUssR0FBSSxRQUFvQyxDQUFDLEtBQUssQ0FBQztJQUMxRCxNQUFNLFlBQVksR0FBRyxLQUFLLEtBQUssVUFBVTtRQUN2QyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsRUFBRSxpQkFBaUIsRUFBRSxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUN2RSxNQUFNLEtBQUssR0FBRyxhQUFhLENBQUMsUUFBUSxFQUFFO1FBQ3BDLElBQUksRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLFVBQVU7UUFDOUUscUJBQXFCLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLEdBQUcsWUFBWTtRQUN6RixRQUFRO0tBQ1QsQ0FBQyxDQUFDO0lBQ0gsY0FBYyxDQUFDLEtBQUssS0FBSyxNQUFNLElBQUksS0FBSyxLQUFLLFVBQVUsQ0FBQyxDQUFDO0lBQ3pELE1BQU0sRUFBRSxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0IsTUFBTSxVQUFVLEdBQUcsY0FBYyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNwRCxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzVFLGNBQWMsQ0FBQyxVQUFVLEtBQUssQ0FBQztRQUM3QixDQUFDLENBQUMsUUFBUSxLQUFLLElBQUk7UUFDbkIsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLFFBQVEsQ0FBQyxVQUFVLEtBQUssVUFBVSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ25FLE1BQU0sV0FBVyxHQUFHLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN4RCxjQUFjLENBQUMsV0FBVyxDQUFDLEtBQUssS0FBSyxVQUFVLENBQUMsQ0FBQztJQUNqRCxNQUFNLElBQUksR0FBaUM7UUFDekMsRUFBRTtRQUNGLFVBQVU7UUFDVixRQUFRO1FBQ1IsU0FBUyxFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDO1FBQ3JDLE1BQU0sRUFBRSxhQUFhLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztRQUNuQyxTQUFTLEVBQUUsU0FBUyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUM7UUFDckMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDO1FBQ25DLG1CQUFtQixFQUFFLGFBQWEsQ0FBQyxLQUFLLENBQUMsbUJBQW1CLENBQUM7UUFDN0QsYUFBYSxFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDO1FBQzdDLFdBQVcsRUFBRSxXQUEwRDtRQUN2RSxNQUFNLEVBQUUsY0FBYyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFDcEMsTUFBTSxFQUFFLGFBQWEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO0tBQ3BDLENBQUM7SUFDRixJQUFJLEtBQUssS0FBSyxNQUFNO1FBQUUsT0FBTyxFQUFFLEdBQUcsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDO0lBQ2hELE1BQU0sZUFBZSxHQUFHLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUNoRSxjQUFjLENBQUMsZUFBZSxDQUFDLEtBQUssS0FBSyxRQUFRLENBQUMsQ0FBQztJQUNuRCxPQUFPO1FBQ0wsR0FBRyxJQUFJO1FBQ1AsS0FBSztRQUNMLGVBQWUsRUFBRSxlQUE4RjtRQUMvRyxlQUFlLEVBQUUsU0FBUyxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUM7UUFDakQsS0FBSyxFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQzdCLFVBQVUsRUFBRSxjQUFjLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQztLQUM3QyxDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sK0JBQStCLEdBQUcsQ0FDN0MsUUFBaUIsRUFDUyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBRWpGLE1BQU0sQ0FBQyxNQUFNLG9DQUFvQyxHQUFHLEtBQUssRUFDdkQsUUFBaUIsRUFDTyxFQUFFLENBQUMsZUFBZSxDQUMxQyxvQkFBb0IsQ0FBQyx1QkFBdUIsRUFDNUMsK0JBQStCLENBQUMsUUFBUSxDQUFDLENBQzFDLENBQUM7QUFFRixNQUFNLGlCQUFpQixHQUFHLENBQUMsUUFBaUIsRUFBeUMsRUFBRTtJQUNyRixNQUFNLEtBQUssR0FBRyxhQUFhLENBQUMsUUFBUSxFQUFFO1FBQ3BDLElBQUksRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsVUFBVTtRQUNsRSxxQkFBcUIsRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLHFCQUFxQixFQUFFLE9BQU87UUFDckYsWUFBWSxFQUFFLFlBQVksRUFBRSxRQUFRO0tBQ3JDLENBQUMsQ0FBQztJQUNILGNBQWMsQ0FBQyxLQUFLLENBQUMsVUFBVSxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsVUFBVSxLQUFLLGVBQWUsQ0FBQyxDQUFDO0lBQy9FLE9BQU87UUFDTCxFQUFFLEVBQUUsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDdkIsVUFBVSxFQUFFLENBQUM7UUFDYixTQUFTLEVBQUUsU0FBUyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUM7UUFDckMsTUFBTSxFQUFFLGFBQWEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO1FBQ25DLFNBQVMsRUFBRSxTQUFTLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQztRQUNyQyxRQUFRLEVBQUUsU0FBUyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUM7UUFDbkMsbUJBQW1CLEVBQUUsYUFBYSxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQztRQUM3RCxhQUFhLEVBQUUsU0FBUyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUM7UUFDN0MsV0FBVyxFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDO1FBQ3pDLG1CQUFtQixFQUFFLGFBQWEsQ0FBQyxLQUFLLENBQUMsbUJBQW1CLENBQUM7UUFDN0QsS0FBSyxFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQzdCLFVBQVUsRUFBRSxlQUFlO1FBQzNCLFVBQVUsRUFBRSxjQUFjLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQztRQUM1QyxNQUFNLEVBQUUsYUFBYSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7S0FDcEMsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLDRDQUE0QyxHQUFHLENBQzFELFFBQWlCLEVBQ3NCLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsaUJBQWlCLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUVwRyxNQUFNLENBQUMsTUFBTSwwQ0FBMEMsR0FBRyxLQUFLLEVBQzdELFFBQWlCLEVBQ08sRUFBRSxDQUFDLGVBQWUsQ0FDMUMsb0JBQW9CLENBQUMsNkJBQTZCLEVBQ2xELDRDQUE0QyxDQUFDLFFBQVEsQ0FBQyxDQUN2RCxDQUFDO0FBRUYsd0dBQXdHO0FBQ3hHLE1BQU0sQ0FBQyxNQUFNLHFDQUFxQyxHQUFHLENBQ25ELFdBQW9CLEVBQ3BCLFFBQWlCLEVBQ3FFLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO0lBQ25HLE1BQU0sUUFBUSxHQUFHLDRDQUE0QyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzNFLE1BQU0sS0FBSyxHQUFHLCtCQUErQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3hELGNBQWMsQ0FBQyxLQUFLLENBQUMsS0FBSyxLQUFLLE1BQU07V0FDaEMsUUFBUSxDQUFDLFNBQVMsS0FBSyxLQUFLLENBQUMsU0FBUztXQUN0QyxRQUFRLENBQUMsTUFBTSxLQUFLLEtBQUssQ0FBQyxNQUFNO1dBQ2hDLFFBQVEsQ0FBQyxTQUFTLEtBQUssS0FBSyxDQUFDLFNBQVM7V0FDdEMsUUFBUSxDQUFDLFFBQVEsS0FBSyxLQUFLLENBQUMsUUFBUTtXQUNwQyxRQUFRLENBQUMsbUJBQW1CLEtBQUssS0FBSyxDQUFDLG1CQUFtQjtXQUMxRCxRQUFRLENBQUMsYUFBYSxDQUFDLEVBQUUsS0FBSyxLQUFLLENBQUMsYUFBYSxDQUFDLEVBQUU7V0FDcEQsUUFBUSxDQUFDLGFBQWEsQ0FBQyxVQUFVLEtBQUssS0FBSyxDQUFDLGFBQWEsQ0FBQyxVQUFVO1dBQ3BFLFFBQVEsQ0FBQyxhQUFhLENBQUMsTUFBTSxLQUFLLEtBQUssQ0FBQyxhQUFhLENBQUMsTUFBTTtXQUM1RCxRQUFRLENBQUMsV0FBVyxDQUFDLEVBQUUsS0FBSyxLQUFLLENBQUMsRUFBRTtXQUNwQyxRQUFRLENBQUMsV0FBVyxDQUFDLFVBQVUsS0FBSyxLQUFLLENBQUMsVUFBVTtXQUNwRCxRQUFRLENBQUMsV0FBVyxDQUFDLE1BQU0sS0FBSyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbkQsT0FBTyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FBQztBQUM3QixDQUFDLENBQUMsQ0FBQztBQUVILE1BQU0sQ0FBQyxNQUFNLHVDQUF1QyxHQUFHLEtBQUssRUFBRSxRQUFpQixFQUFxQixFQUFFO0lBQ3BHLElBQUksQ0FBQztRQUNILE1BQU0sS0FBSyxHQUFHLHVDQUF1QyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2hFLE9BQU8sS0FBSyxDQUFDLE1BQU0sS0FBSyxNQUFNLHNDQUFzQyxDQUFDLEtBQUssQ0FBQztZQUN6RSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLG9EQUFvRCxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUFDLE9BQU8sQ0FBQyxrRUFBa0UsQ0FBQyxDQUFDO0lBQUMsQ0FBQztBQUMxRixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSwrQkFBK0IsR0FBRyxLQUFLLEVBQUUsUUFBaUIsRUFBcUIsRUFBRTtJQUM1RixJQUFJLENBQUM7UUFDSCxNQUFNLEtBQUssR0FBRywrQkFBK0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN4RCxPQUFPLEtBQUssQ0FBQyxNQUFNLEtBQUssTUFBTSxvQ0FBb0MsQ0FBQyxLQUFLLENBQUM7WUFDdkUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxrREFBa0QsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFBQyxNQUFNLENBQUM7UUFBQyxPQUFPLENBQUMsZ0VBQWdFLENBQUMsQ0FBQztJQUFDLENBQUM7QUFDeEYsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sNENBQTRDLEdBQUcsS0FBSyxFQUMvRCxRQUFpQixFQUNFLEVBQUU7SUFDckIsSUFBSSxDQUFDO1FBQ0gsTUFBTSxLQUFLLEdBQUcsNENBQTRDLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDckUsT0FBTyxLQUFLLENBQUMsTUFBTSxLQUFLLE1BQU0sMENBQTBDLENBQUMsS0FBSyxDQUFDO1lBQzdFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsd0RBQXdELENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQUMsT0FBTyxDQUFDLDhFQUE4RSxDQUFDLENBQUM7SUFBQyxDQUFDO0FBQ3RHLENBQUMsQ0FBQztBQUVGLE1BQU0sY0FBYyxHQUFHLENBQUMsUUFBaUIsRUFBMEIsRUFBRTtJQUNuRSxNQUFNLEtBQUssR0FBRyxhQUFhLENBQUMsUUFBUSxFQUFFO1FBQ3BDLG1CQUFtQixFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsc0JBQXNCLEVBQUUsY0FBYztRQUNsRixzQkFBc0IsRUFBRSxZQUFZLEVBQUUsa0JBQWtCO0tBQ3pELENBQUMsQ0FBQztJQUNILE1BQU0sVUFBVSxHQUFHLGFBQWEsQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQzVFLGNBQWMsQ0FBQyxVQUFVLENBQUMsSUFBSSxLQUFLLFNBQVMsSUFBSSxVQUFVLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQyxDQUFDO0lBQzlFLE9BQU87UUFDTCxpQkFBaUIsRUFBRSxTQUFTLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDO1FBQ3JELE1BQU0sRUFBRSxhQUFhLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztRQUNuQyxTQUFTLEVBQUUsU0FBUyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUM7UUFDckMsb0JBQW9CLEVBQUUsY0FBYyxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQztRQUNoRSxZQUFZLEVBQUUsY0FBYyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUM7UUFDaEQsb0JBQW9CLEVBQUUsU0FBUyxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQztRQUMzRCxVQUFVLEVBQUU7WUFDVixJQUFJLEVBQUUsVUFBVSxDQUFDLElBQUk7WUFDckIsRUFBRSxFQUFFLFNBQVMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQzVCLEtBQUssRUFBRSxTQUFTLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQztTQUNuQztRQUNELGdCQUFnQixFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUM7S0FDcEQsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLDhDQUE4QyxHQUFHLENBQzVELFFBQWlCLEVBQ3dCLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO0lBQ3RELE1BQU0sS0FBSyxHQUFHLGFBQWEsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLEVBQUU7UUFDcEQsSUFBSSxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE9BQU87UUFDbEYsUUFBUSxFQUFFLFlBQVksRUFBRSxRQUFRO0tBQ2pDLENBQUMsQ0FBQztJQUNILE1BQU0sS0FBSyxHQUFHLGFBQWEsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFO1FBQ3ZDLFdBQVcsRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsbUJBQW1CLEVBQUUsYUFBYSxFQUFFLFlBQVk7UUFDMUYsYUFBYSxFQUFFLG9CQUFvQixFQUFFLGlCQUFpQixFQUFFLFlBQVk7UUFDcEUsc0JBQXNCLEVBQUUsU0FBUztLQUNsQyxDQUFDLENBQUM7SUFDSCxNQUFNLEtBQUssR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRTtRQUN2QyxRQUFRLEVBQUUsc0JBQXNCLEVBQUUsbUJBQW1CLEVBQUUscUJBQXFCO1FBQzVFLGFBQWEsRUFBRSxlQUFlLEVBQUUsb0JBQW9CO1FBQ3BELHNCQUFzQixFQUFFLFVBQVUsRUFBRSxZQUFZO0tBQ2pELENBQUMsQ0FBQztJQUNILE1BQU0sTUFBTSxHQUFHLGFBQWEsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFO1FBQ3pDLFlBQVksRUFBRSxjQUFjLEVBQUUsZ0JBQWdCLEVBQUUsa0JBQWtCO1FBQ2xFLHVCQUF1QixFQUFFLGNBQWMsRUFBRSxtQkFBbUI7S0FDN0QsQ0FBQyxDQUFDO0lBQ0gsTUFBTSxTQUFTLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM3QyxNQUFNLE9BQU8sR0FBRyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDaEQsTUFBTSxTQUFTLEdBQUcsa0JBQWtCLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3RELGNBQWMsQ0FBQyxPQUFPLENBQUMsRUFBRSxLQUFLLFNBQVMsSUFBSSxPQUFPLENBQUMsS0FBSyxLQUFLLE9BQU87V0FDL0QsU0FBUyxDQUFDLGdCQUFnQixLQUFLLFNBQVMsQ0FBQyxDQUFDO0lBQy9DLE1BQU0sV0FBVyxHQUFHLGFBQWEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDaEQsTUFBTSxXQUFXLEdBQUcsYUFBYSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNoRCxjQUFjLENBQUMsV0FBVyxLQUFLLFdBQVcsQ0FBQyxDQUFDO0lBQzVDLE1BQU0sb0JBQW9CLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUM5RCxNQUFNLGdCQUFnQixHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDdEQsY0FBYyxDQUFDLG9CQUFvQixDQUFDLEVBQUUsS0FBSyxnQkFBZ0IsQ0FBQyxFQUFFO1dBQ3pELG9CQUFvQixDQUFDLFVBQVUsS0FBSyxnQkFBZ0IsQ0FBQyxVQUFVO1dBQy9ELG9CQUFvQixDQUFDLE1BQU0sS0FBSyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM5RCxNQUFNLFlBQVksR0FBRyxjQUFjLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ25ELGNBQWMsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDL0MsT0FBTztRQUNMLEVBQUUsRUFBRSxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN2QixVQUFVLEVBQUUsY0FBYyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUM7UUFDNUMsU0FBUztRQUNULEtBQUssRUFBRSxTQUFTLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQztRQUM3QixTQUFTO1FBQ1QsT0FBTztRQUNQLEtBQUssRUFBRTtZQUNMLFNBQVMsRUFBRSxTQUFTLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQztZQUNyQyxNQUFNLEVBQUUsV0FBVztZQUNuQixlQUFlLEVBQUUsU0FBUyxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUM7WUFDakQsaUJBQWlCLEVBQUUsU0FBUyxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQztZQUNyRCxXQUFXLEVBQUUsY0FBYyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUM7WUFDOUMsVUFBVSxFQUFFLGFBQWEsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDO1lBQzNDLFdBQVcsRUFBRSxhQUFhLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQztZQUM3QyxrQkFBa0IsRUFBRSxTQUFTLENBQUMsS0FBSyxDQUFDLGtCQUFrQixDQUFDO1lBQ3ZELGVBQWUsRUFBRSxvQkFBb0I7WUFDckMsVUFBVSxFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDO1lBQ3ZDLG9CQUFvQixFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUMsb0JBQW9CLENBQUM7WUFDM0QsT0FBTyxFQUFFLFlBQVk7U0FDdEI7UUFDRCxLQUFLLEVBQUU7WUFDTCxNQUFNLEVBQUUsV0FBVztZQUNuQixvQkFBb0IsRUFBRSxjQUFjLENBQUMsS0FBSyxDQUFDLG9CQUFvQixDQUFDO1lBQ2hFLGlCQUFpQixFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUM7WUFDckQsbUJBQW1CLEVBQUUsY0FBYyxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQztZQUM5RCxXQUFXLEVBQUUsZ0JBQWdCO1lBQzdCLGFBQWEsRUFBRSxjQUFjLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQztZQUNsRCxrQkFBa0IsRUFBRSxDQUFDLEdBQUcsRUFBRTtnQkFDeEIsY0FBYyxDQUFDLE9BQU8sS0FBSyxDQUFDLGtCQUFrQixLQUFLLFFBQVE7dUJBQ3RELGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDO2dCQUN0RCxPQUFPLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQztZQUNsQyxDQUFDLENBQUMsRUFBRTtZQUNKLG9CQUFvQixFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUMsb0JBQW9CLENBQUM7WUFDM0QsUUFBUSxFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDO1lBQ25DLFVBQVUsRUFBRSxhQUFhLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQztTQUM1QztRQUNELE1BQU0sRUFBRTtZQUNOLFVBQVUsRUFBRSxTQUFTLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQztZQUN4QyxZQUFZLEVBQUUsU0FBUyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUM7WUFDNUMsY0FBYyxFQUFFLFNBQVMsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDO1lBQ2hELGdCQUFnQixFQUFFLFNBQVMsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUM7WUFDcEQscUJBQXFCLEVBQUUsY0FBYyxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQztZQUNuRSxZQUFZLEVBQUUsU0FBUyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUM7WUFDNUMsaUJBQWlCLEVBQUUsT0FBTyxDQUFDLENBQUMsZ0JBQWdCLEVBQUUsU0FBUyxDQUFVLEVBQUUsTUFBTSxDQUFDLGlCQUFpQixDQUFDO1NBQzdGO1FBQ0QsVUFBVSxFQUFFLGNBQWMsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDO1FBQzVDLE1BQU0sRUFBRSxhQUFhLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztLQUNwQyxDQUFDO0FBQ0osQ0FBQyxDQUFDLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSwyQ0FBMkMsR0FBRyxLQUFLLEVBQzlELFFBQWlCLEVBQ08sRUFBRSxDQUFDLGVBQWUsQ0FDMUMsb0JBQW9CLENBQUMsOEJBQThCLEVBQ25ELDhDQUE4QyxDQUFDLFFBQVEsQ0FBQyxDQUN6RCxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sOENBQThDLEdBQUcsS0FBSyxFQUNqRSxRQUFpQixFQUNFLEVBQUU7SUFDckIsSUFBSSxDQUFDO1FBQ0gsTUFBTSxLQUFLLEdBQUcsOENBQThDLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdkUsT0FBTyxLQUFLLENBQUMsTUFBTSxLQUFLLE1BQU0sMkNBQTJDLENBQUMsS0FBSyxDQUFDO1lBQzlFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMseURBQXlELENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQUMsT0FBTyxDQUFDLGdGQUFnRixDQUFDLENBQUM7SUFBQyxDQUFDO0FBQ3hHLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLG9DQUFvQyxHQUFHLENBQ2xELFFBQWlCLEVBQ2MsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7SUFDNUMsTUFBTSxLQUFLLEdBQUcsYUFBYSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsRUFBRTtRQUNwRCxJQUFJLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxrQkFBa0I7UUFDcEYsWUFBWSxFQUFFLFNBQVMsRUFBRSxxQkFBcUIsRUFBRSwyQkFBMkI7UUFDM0Usc0JBQXNCLEVBQUUsbUJBQW1CLEVBQUUsbUJBQW1CLEVBQUUsY0FBYztRQUNoRixvQkFBb0IsRUFBRSxvQkFBb0IsRUFBRSxZQUFZLEVBQUUsUUFBUTtLQUNuRSxDQUFDLENBQUM7SUFDSCxNQUFNLFNBQVMsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzdDLE1BQU0sT0FBTyxHQUFHLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNoRCxNQUFNLFNBQVMsR0FBRyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDdEQsTUFBTSxPQUFPLEdBQUcsY0FBYyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM5QyxjQUFjLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSyxTQUFTLElBQUksT0FBTyxDQUFDLEtBQUssS0FBSyxRQUFRO1dBQ2hFLFNBQVMsQ0FBQyxnQkFBZ0IsS0FBSyxTQUFTLElBQUksT0FBTyxDQUFDLFNBQVMsS0FBSyxTQUFTLENBQUMsQ0FBQztJQUNsRixPQUFPO1FBQ0wsRUFBRSxFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3ZCLFVBQVUsRUFBRSxjQUFjLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQztRQUM1QyxTQUFTO1FBQ1QsT0FBTyxFQUFFLE9BQW1EO1FBQzVELEtBQUssRUFBRSxTQUFTLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQztRQUM3QixTQUFTO1FBQ1QsZ0JBQWdCLEVBQUUsU0FBUyxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQztRQUNuRCxVQUFVLEVBQUUsbUJBQW1CLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQztRQUNqRCxPQUFPO1FBQ1AsbUJBQW1CLEVBQUUsU0FBUyxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQztRQUN6RCx5QkFBeUIsRUFBRSxLQUFLLENBQUMseUJBQXlCLEtBQUssSUFBSTtZQUNqRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLHlCQUF5QixDQUFDO1FBQ3ZELG9CQUFvQixFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUMsb0JBQW9CLENBQUM7UUFDM0QsaUJBQWlCLEVBQUUsU0FBUyxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQztRQUNyRCxpQkFBaUIsRUFBRSxTQUFTLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDO1FBQ3JELFlBQVksRUFBRSxTQUFTLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQztRQUMzQyxrQkFBa0IsRUFBRSxXQUFXLENBQUMsS0FBSyxDQUFDLGtCQUFrQixDQUFDO1FBQ3pELGtCQUFrQixFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUM7UUFDdkQsVUFBVSxFQUFFLGNBQWMsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDO1FBQzVDLE1BQU0sRUFBRSxhQUFhLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztLQUNwQyxDQUFDO0FBQ0osQ0FBQyxDQUFDLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSx5Q0FBeUMsR0FBRyxLQUFLLEVBQzVELFFBQWlCLEVBQ08sRUFBRSxDQUFDLGVBQWUsQ0FDMUMsb0JBQW9CLENBQUMsNEJBQTRCLEVBQ2pELG9DQUFvQyxDQUFDLFFBQVEsQ0FBQyxDQUMvQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sb0NBQW9DLEdBQUcsS0FBSyxFQUFFLFFBQWlCLEVBQXFCLEVBQUU7SUFDakcsSUFBSSxDQUFDO1FBQ0gsTUFBTSxLQUFLLEdBQUcsb0NBQW9DLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDN0QsT0FBTyxLQUFLLENBQUMsTUFBTSxLQUFLLE1BQU0seUNBQXlDLENBQUMsS0FBSyxDQUFDO1lBQzVFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsdURBQXVELENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQUMsT0FBTyxDQUFDLHFFQUFxRSxDQUFDLENBQUM7SUFBQyxDQUFDO0FBQzdGLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGtDQUFrQyxHQUFHLENBQ2hELE9BQTZCLEVBQzdCLEtBQTJCLEVBQ2xCLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsS0FBSyxLQUFLLENBQUM7QUFFNUUsTUFBTSxDQUFDLE1BQU0sZ0NBQWdDLEdBQUcsQ0FDOUMsUUFBaUIsRUFDVSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtJQUN4QyxjQUFjLENBQUMsUUFBUSxLQUFLLElBQUksSUFBSSxPQUFPLFFBQVEsS0FBSyxRQUFRLENBQUMsQ0FBQztJQUNsRSxNQUFNLFNBQVMsR0FBRyxRQUFtQyxDQUFDO0lBQ3RELE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsV0FBVyxDQUFVLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xGLE1BQU0sVUFBVSxHQUFHLG9CQUFvQixDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BFLGNBQWMsQ0FBQyxTQUFTLENBQUMsRUFBRSxLQUFLLFVBQVUsQ0FBQyxDQUFDO0lBQzVDLE1BQU0sU0FBUyxHQUFHLElBQUksS0FBSyxPQUFPO1FBQ2hDLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDO1FBQ3hCLENBQUMsQ0FBQyxJQUFJLEtBQUssVUFBVTtZQUNuQixDQUFDLENBQUMsQ0FBQyxpQkFBaUIsRUFBRSxrQkFBa0IsRUFBRSxrQkFBa0IsQ0FBQztZQUM3RCxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsRUFBRSxrQkFBa0IsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO0lBQ3BFLE1BQU0sS0FBSyxHQUFHLGFBQWEsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLEVBQUU7UUFDcEQsWUFBWSxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxTQUFTO0tBQzlGLENBQUMsQ0FBQztJQUNILE1BQU0sY0FBYyxHQUFHLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUM5RCxNQUFNLFNBQVMsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzdDLE1BQU0sU0FBUyxHQUFHLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN0RCxjQUFjLENBQUMsY0FBYyxDQUFDLEVBQUUsS0FBSyxTQUFTLElBQUksY0FBYyxDQUFDLEtBQUssS0FBSyxJQUFJO1dBQzFFLFNBQVMsQ0FBQyxnQkFBZ0IsS0FBSyxTQUFTLENBQUMsQ0FBQztJQUMvQyxNQUFNLElBQUksR0FBa0M7UUFDMUMsVUFBVSxFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDO1FBQ3ZDLFNBQVM7UUFDVCxjQUFjO1FBQ2QsS0FBSyxFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQzdCLFNBQVM7S0FDVixDQUFDO0lBQ0YsSUFBSSxJQUFJLEtBQUssT0FBTztRQUFFLE9BQU87WUFDM0IsR0FBRyxJQUFJO1lBQ1AsSUFBSTtZQUNKLEVBQUUsRUFBRSxVQUFVO1lBQ2Qsa0JBQWtCLEVBQUUsU0FBUyxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQztTQUN4RCxDQUFDO0lBQ0YsSUFBSSxJQUFJLEtBQUssVUFBVTtRQUFFLE9BQU87WUFDOUIsR0FBRyxJQUFJO1lBQ1AsSUFBSTtZQUNKLEVBQUUsRUFBRSxXQUFXO1lBQ2YsZUFBZSxFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDO1lBQ2pELGdCQUFnQixFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUM7WUFDbkQsZ0JBQWdCLEVBQUUsU0FBUyxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQztTQUNwRCxDQUFDO0lBQ0YsT0FBTztRQUNMLEdBQUcsSUFBSTtRQUNQLElBQUk7UUFDSixFQUFFLEVBQUUsUUFBUTtRQUNaLGdCQUFnQixFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUM7UUFDbkQsZ0JBQWdCLEVBQUUsU0FBUyxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQztRQUNuRCxpQkFBaUIsRUFBRSxTQUFTLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDO0tBQ3RELENBQUM7QUFDSixDQUFDLENBQUMsQ0FBQztBQUVILE1BQU0sQ0FBQyxNQUFNLHNDQUFzQyxHQUFHLENBQ3BELFFBQWlCLEVBQ2dCLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO0lBQzlDLGNBQWMsQ0FBQyxRQUFRLEtBQUssSUFBSSxJQUFJLE9BQU8sUUFBUSxLQUFLLFFBQVEsQ0FBQyxDQUFDO0lBQ2xFLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxDQUFDLFNBQVMsRUFBRSxhQUFhLENBQVUsRUFBRyxRQUFvQyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RHLE1BQU0sV0FBVyxHQUFHLElBQUksS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLDJCQUEyQixDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQztJQUMxRixNQUFNLEtBQUssR0FBRyxhQUFhLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxFQUFFO1FBQ3BELE1BQU0sRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxzQkFBc0IsRUFBRSxTQUFTLEVBQUUsT0FBTztRQUMxRixXQUFXO0tBQ1osQ0FBQyxDQUFDO0lBQ0gsTUFBTSxPQUFPLEdBQUcsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2hELE1BQU0sU0FBUyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDN0MsY0FBYyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEtBQUssU0FBUyxJQUFJLE9BQU8sQ0FBQyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUM7SUFDdkUsTUFBTSxJQUFJLEdBQUc7UUFDWCxJQUFJO1FBQ0osVUFBVSxFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDO1FBQ3ZDLFNBQVM7UUFDVCxTQUFTLEVBQUUsU0FBUyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUM7UUFDckMsb0JBQW9CLEVBQUUsY0FBYyxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQztRQUNoRSxPQUFPLEVBQUUsT0FBcUQ7UUFDOUQsS0FBSyxFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDO0tBQzlCLENBQUM7SUFDRixPQUFPLElBQUksS0FBSyxTQUFTO1FBQ3ZCLENBQUMsQ0FBQyxFQUFFLEdBQUcsSUFBSSxFQUFFLElBQUksRUFBRSx5QkFBeUIsRUFBRSxTQUFTLENBQUMsS0FBSyxDQUFDLHlCQUF5QixDQUFDLEVBQUU7UUFDMUYsQ0FBQyxDQUFDLEVBQUUsR0FBRyxJQUFJLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDO0FBQzdFLENBQUMsQ0FBQyxDQUFDIn0=
1021
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxlZXRjdXRvdmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdHMvZGF0YS9mbGVldGN1dG92ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFPdEUsT0FBTyxFQUNMLHNCQUFzQixFQUN0Qiw0QkFBNEIsR0FDN0IsTUFBTSw2QkFBNkIsQ0FBQztBQUNyQyxPQUFPLEVBQ0wsY0FBYyxFQUNkLGNBQWMsRUFDZCxhQUFhLEVBQ2IsU0FBUyxFQUNULFdBQVcsRUFDWCxhQUFhLEVBQ2IsYUFBYSxFQUNiLGdCQUFnQixFQUNoQixhQUFhLEVBQ2IsY0FBYyxHQUNmLE1BQU0sK0JBQStCLENBQUM7QUFxZHZDLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDaEQsZUFBZSxFQUFFLEdBQUc7SUFDcEIsWUFBWSxFQUFFLElBQUk7SUFDbEIsWUFBWSxFQUFFLElBQUk7SUFDbEIsd0JBQXdCLEVBQUUsR0FBRztJQUM3QixxQkFBcUIsRUFBRSxFQUFFO0lBQ3pCLHNCQUFzQixFQUFFLEdBQUc7SUFDM0Isc0JBQXNCLEVBQUUsT0FBTztJQUMvQiwrQkFBK0IsRUFBRSxnREFBZ0Q7SUFDakYsK0JBQStCLEVBQUUsZ0RBQWdEO0lBQ2pGLHlCQUF5QixFQUFFLHlDQUF5QztJQUNwRSxnQ0FBZ0MsRUFBRSxpREFBaUQ7SUFDbkYsNkJBQTZCLEVBQUUsOENBQThDO0lBQzdFLDJCQUEyQixFQUFFLDJDQUEyQztJQUN4RSxrQkFBa0IsRUFBRSxpQ0FBaUM7SUFDckQsaUJBQWlCLEVBQUUsZ0NBQWdDO0lBQ25ELHlCQUF5QixFQUFFLHlDQUF5QztJQUNwRSx1QkFBdUIsRUFBRSx1Q0FBdUM7SUFDaEUsNkJBQTZCLEVBQUUsNkNBQTZDO0lBQzVFLDhCQUE4QixFQUFFLDhDQUE4QztJQUM5RSw4QkFBOEIsRUFBRSw4Q0FBOEM7SUFDOUUs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
@@ -2,7 +2,7 @@ import * as plugins from '../plugins.js';
2
2
  import type { IIdentityCredential } from '../data/user.js';
3
3
  import type { IClusterRuntime } from '../data/clusterruntime.js';
4
4
  import type { IServiceRuntimeSpec } from '../data/serviceruntime.js';
5
- import type { IFleetCutoverAcceptedEvidenceReference, IFleetCutoverCorestoreAdoptionReceipt, IFleetCutoverIngressAuthority, IFleetCutoverScope, IFleetCutoverScopeClassificationRequest, IFleetCutoverVolumeHandoffIntent, TFleetCutoverPhaseAdvance, TFleetCutoverRuntimeSpecRelease, TFleetCutoverVolumeFence } from '../data/fleetcutover.js';
5
+ import type { IFleetCutoverAcceptedEvidenceReference, IFleetCutoverCorestoreAdoptionReceipt, IFleetCutoverIngressDesignation, IFleetCutoverIngressPreparationRequest, IFleetCutoverIngressAuthority, IFleetCutoverScope, IFleetCutoverScopeClassificationRequest, IFleetCutoverVolumeHandoffIntent, TFleetCutoverPhaseAdvance, TFleetCutoverRuntimeSpecRelease, TFleetCutoverVolumeFence } from '../data/fleetcutover.js';
6
6
  export interface IReq_Any_Cloudly_GetFleetCutoverScope extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IReq_Any_Cloudly_GetFleetCutoverScope> {
7
7
  method: 'getFleetCutoverScope';
8
8
  request: {
@@ -43,6 +43,23 @@ export interface IReq_Admin_Cloudly_AdvanceFleetCutoverPhase extends plugins.typ
43
43
  replayed: boolean;
44
44
  };
45
45
  }
46
+ /**
47
+ * Cloudly designates one existing live service as the new ingress before assignment. It accepts
48
+ * only current owner state and creates the managed launcher bearer and designation atomically.
49
+ */
50
+ export interface IReq_Admin_Cloudly_PrepareFleetCutoverIngress extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IReq_Admin_Cloudly_PrepareFleetCutoverIngress> {
51
+ method: 'prepareFleetCutoverIngress';
52
+ request: {
53
+ identity: IIdentityCredential;
54
+ preparation: IFleetCutoverIngressPreparationRequest;
55
+ };
56
+ response: {
57
+ designation: IFleetCutoverIngressDesignation;
58
+ /** The resulting exact-cluster spec, still held after preparation. */
59
+ spec: IServiceRuntimeSpec;
60
+ replayed: boolean;
61
+ };
62
+ }
46
63
  /**
47
64
  * The only cutover-specific hold release. Ingress releases first under an accepted empty public
48
65
  * port policy; applications require the accepted ingress/port/route authority assembled later.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@serve.zone/interfaces",
3
- "version": "32.13.0",
3
+ "version": "32.14.0",
4
4
  "private": false,
5
5
  "description": "Shared TypeScript interfaces and TypedRequest contracts for the serve.zone ecosystem.",
6
6
  "exports": {
package/readme.md CHANGED
@@ -1119,8 +1119,34 @@ erasure are not cutover requirements. Its exact owner generation is retained wit
1119
1119
  Retained recovery evidence is valid only while the released
1120
1120
  owner cannot consume it into live mode and the old credential remains revoked.
1121
1121
 
1122
- The post-pallet order is represented without a second route or publication model. First Cloudly
1123
- releases only the new ingress spec under an accepted empty published-port policy. It then accepts
1122
+ Before any post-pallet assignment exists, an administrator calls
1123
+ `requests.fleetcutover.prepareFleetCutoverIngress` with the exact server-created service ID,
1124
+ current `pallet` runtime, complete accepted scope and target set, held exact-cluster spec revision,
1125
+ and `expectedDesignation`. Null creates the first designation; an exact current designation
1126
+ reference permits only same-service credential rotation. Replacing the designated service is a
1127
+ different owner flow and is refused here. Cloudly's one owning transaction verifies the admin,
1128
+ same-organization live service, current references, held exact-cluster spec, zero configured and
1129
+ actual published/public ports, and absence of a conflicting designation. It generates the managed
1130
+ launcher-environment bearer privately, stores its active version and hash authority, advances the
1131
+ held spec if its secret input changed, and accepts `IFleetCutoverIngressDesignation`. The public
1132
+ designation exposes only credential ID/generation and the active `ISecretVersionReference`; neither
1133
+ it nor the response exposes the bearer, hash, private key, or any other secret value. Preparation
1134
+ requires no assignment, runtime session, ingress registration, legacy absence, publication,
1135
+ port-transfer, readback, or `IFleetCutoverIngressAuthority`.
1136
+
1137
+ The preparation request is a closed compare-and-swap body. A replay requires the same mutation ID
1138
+ and exactly the original normalized request payload and returns the recorded designation/spec
1139
+ result; it does not renew generation, acceptance time, freshness, or authority. Every downstream
1140
+ authorization must dereference the current designation, held spec, runtime, scope, and target set.
1141
+ A historical replay response never grants current authority. `snapshotFleetCutoverIngressPreparationRequest`
1142
+ and `snapshotFleetCutoverIngressDesignation` check exact structure, reference relationships and the
1143
+ designation's canonical digest. They cannot establish admin identity, currentness, organization,
1144
+ service liveness, held state, zero ports, or absence of a conflicting designation; Cloudly owns all
1145
+ of those acceptance checks.
1146
+
1147
+ The remaining post-pallet order is represented without a second route or publication model. First
1148
+ Cloudly releases only the designated new ingress spec under an accepted empty published-port
1149
+ policy. It then accepts
1124
1150
  the existing cluster-ingress registration and route-table revision, exact Spark evidence that the
1125
1151
  old ingress is absent, the current source and target publication records and owning port-transfer
1126
1152
  receipt, and a readback of the current route revision as `IFleetCutoverIngressAuthority`. Only an
@@ -1128,8 +1154,8 @@ application release may cite that authority. The legacy Docker Coretraffic insta
1128
1154
  remains through `switching`; the new ingress runs without public ports before exact port ownership
1129
1155
  moves, and applications remain held until the new authoritative route is read back.
1130
1156
 
1131
- The owner methods live under `requests.fleetcutover`: administrator scope classification and
1132
- forward phase CAS, root-local Pallet volume-fence hold/read/
1157
+ The owner methods live under `requests.fleetcutover`: administrator scope classification, ingress
1158
+ preparation and forward phase CAS, root-local Pallet volume-fence hold/read/
1133
1159
  consume, one-shot Corestore adoption, ingress-authority read, and ingress/application spec release.
1134
1160
  Spark transports local and manager evidence through its existing authenticated Swarm-observation
1135
1161
  route, and Cloudly assembles census and Coreflow-retirement records from accepted owner state; there
@@ -3,6 +3,6 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@serve.zone/interfaces',
6
- version: '32.13.0',
6
+ version: '32.14.0',
7
7
  description: 'Shared TypeScript interfaces and TypedRequest contracts for the serve.zone ecosystem.'
8
8
  }
@@ -6,6 +6,7 @@ import type {
6
6
  IRuntimeAuthorityReference,
7
7
  } from './runtimeassignment.js';
8
8
  import type { IRuntimeSessionBinding } from './runtimesession.js';
9
+ import type { ISecretVersionReference } from './secret.js';
9
10
  import {
10
11
  canonicalizeStrictJson,
11
12
  createCanonicalJsonSha256Hex,
@@ -373,6 +374,49 @@ export interface IFleetCutoverCoreflowRetirementEvidence {
373
374
  digest: TSha256Digest;
374
375
  }
375
376
 
377
+ /**
378
+ * Administrator intent to prepare the one explicitly designated ingress service. The caller
379
+ * supplies only compare-and-swap inputs; Cloudly owns credential generation and acceptance.
380
+ */
381
+ export interface IFleetCutoverIngressPreparationRequest {
382
+ mutationId: string;
383
+ clusterId: string;
384
+ ingressServiceId: string;
385
+ currentRuntime: IClusterRuntimeReference & { phase: 'pallet' };
386
+ scope: IFleetCutoverAcceptedEvidenceReference;
387
+ targetSet: IFleetCutoverTargetSetReference;
388
+ expectedSpecRevision: number;
389
+ /** Null for creation; the exact current designation for same-service credential rotation. */
390
+ expectedDesignation: IFleetCutoverAcceptedEvidenceReference | null;
391
+ }
392
+
393
+ /** Public identity of the active ingress credential generation; it contains no credential value. */
394
+ export interface IFleetCutoverIngressCredentialReference {
395
+ credentialId: string;
396
+ generation: number;
397
+ secretVersion: ISecretVersionReference;
398
+ }
399
+
400
+ /**
401
+ * Cloudly's accepted pre-assignment designation. This grants no assignment, session,
402
+ * registration, publication, port-transfer, or post-registration ingress authority.
403
+ */
404
+ export interface IFleetCutoverIngressDesignation {
405
+ id: string;
406
+ generation: number;
407
+ previous: IFleetCutoverAcceptedEvidenceReference | null;
408
+ clusterId: string;
409
+ runtime: IClusterRuntimeReference & { phase: 'pallet' };
410
+ scope: IFleetCutoverAcceptedEvidenceReference;
411
+ targetSet: IFleetCutoverTargetSetReference;
412
+ ingressServiceId: string;
413
+ preparedSpecRevision: number;
414
+ credential: IFleetCutoverIngressCredentialReference;
415
+ actorId: string;
416
+ acceptedAt: number;
417
+ digest: TSha256Digest;
418
+ }
419
+
376
420
  export interface IFleetCutoverIngressAuthority {
377
421
  id: string;
378
422
  generation: number;
@@ -467,6 +511,7 @@ export const fleetCutoverContract = Object.freeze({
467
511
  volumeFenceDigestDomain: 'serve.zone/fleet-cutover-volume-fence',
468
512
  corestoreAdoptionDigestDomain: 'serve.zone/fleet-cutover-corestore-adoption',
469
513
  coreflowRetirementDigestDomain: 'serve.zone/fleet-cutover-coreflow-retirement',
514
+ ingressDesignationDigestDomain: 'serve.zone/fleet-cutover-ingress-designation',
470
515
  ingressAuthorityDigestDomain: 'serve.zone/fleet-cutover-ingress-authority',
471
516
  legalPhaseTransitions: Object.freeze({
472
517
  swarm: 'draining',
@@ -518,6 +563,20 @@ const assignmentReference = (valueArg: unknown): IRuntimeAssignmentReference =>
518
563
  digest: networkDigest(value.digest),
519
564
  };
520
565
  };
566
+ const ingressCredentialReference = (
567
+ valueArg: unknown,
568
+ ): IFleetCutoverIngressCredentialReference => {
569
+ const value = networkRecord(valueArg, ['credentialId', 'generation', 'secretVersion']);
570
+ const secretVersion = networkRecord(value.secretVersion, ['secretId', 'secretVersionId']);
571
+ return {
572
+ credentialId: networkId(value.credentialId),
573
+ generation: networkCounter(value.generation),
574
+ secretVersion: {
575
+ secretId: networkId(secretVersion.secretId),
576
+ secretVersionId: networkId(secretVersion.secretVersionId),
577
+ },
578
+ };
579
+ };
521
580
  const mountTypeAndClassification = (
522
581
  typeArg: unknown,
523
582
  classificationArg: unknown,
@@ -1418,6 +1477,83 @@ export const validateFleetCutoverCoreflowRetirementEvidence = async (
1418
1477
  } catch { return ['fleet cutover Coreflow retirement evidence must use its exact canonical schema']; }
1419
1478
  };
1420
1479
 
1480
+ export const snapshotFleetCutoverIngressPreparationRequest = (
1481
+ valueArg: unknown,
1482
+ ): IFleetCutoverIngressPreparationRequest => safe(() => {
1483
+ const value = networkRecord(captureNetwork(valueArg), [
1484
+ 'mutationId', 'clusterId', 'ingressServiceId', 'currentRuntime', 'scope', 'targetSet',
1485
+ 'expectedSpecRevision', 'expectedDesignation',
1486
+ ]);
1487
+ const clusterId = networkId(value.clusterId);
1488
+ const currentRuntime = runtimeReference(value.currentRuntime);
1489
+ const targetSet = targetSetReference(value.targetSet);
1490
+ requireNetwork(currentRuntime.id === clusterId && currentRuntime.phase === 'pallet'
1491
+ && targetSet.cloudlyClusterId === clusterId);
1492
+ return {
1493
+ mutationId: networkId(value.mutationId),
1494
+ clusterId,
1495
+ ingressServiceId: networkId(value.ingressServiceId),
1496
+ currentRuntime: currentRuntime as IFleetCutoverIngressPreparationRequest['currentRuntime'],
1497
+ scope: reference(value.scope),
1498
+ targetSet,
1499
+ expectedSpecRevision: networkCounter(value.expectedSpecRevision),
1500
+ expectedDesignation: value.expectedDesignation === null
1501
+ ? null : reference(value.expectedDesignation),
1502
+ };
1503
+ });
1504
+
1505
+ export const snapshotFleetCutoverIngressDesignation = (
1506
+ valueArg: unknown,
1507
+ ): IFleetCutoverIngressDesignation => safe(() => {
1508
+ const value = networkRecord(captureNetwork(valueArg), [
1509
+ 'id', 'generation', 'previous', 'clusterId', 'runtime', 'scope', 'targetSet',
1510
+ 'ingressServiceId', 'preparedSpecRevision', 'credential', 'actorId', 'acceptedAt', 'digest',
1511
+ ]);
1512
+ const id = networkId(value.id);
1513
+ const generation = networkCounter(value.generation);
1514
+ const previous = value.previous === null ? null : reference(value.previous);
1515
+ const clusterId = networkId(value.clusterId);
1516
+ const runtime = runtimeReference(value.runtime);
1517
+ const targetSet = targetSetReference(value.targetSet);
1518
+ requireNetwork(runtime.id === clusterId && runtime.phase === 'pallet'
1519
+ && targetSet.cloudlyClusterId === clusterId
1520
+ && (generation === 1
1521
+ ? previous === null
1522
+ : previous?.id === id && previous.generation === generation - 1));
1523
+ return {
1524
+ id,
1525
+ generation,
1526
+ previous,
1527
+ clusterId,
1528
+ runtime: runtime as IFleetCutoverIngressDesignation['runtime'],
1529
+ scope: reference(value.scope),
1530
+ targetSet,
1531
+ ingressServiceId: networkId(value.ingressServiceId),
1532
+ preparedSpecRevision: networkCounter(value.preparedSpecRevision),
1533
+ credential: ingressCredentialReference(value.credential),
1534
+ actorId: networkId(value.actorId),
1535
+ acceptedAt: networkCounter(value.acceptedAt),
1536
+ digest: networkDigest(value.digest),
1537
+ };
1538
+ });
1539
+
1540
+ export const computeFleetCutoverIngressDesignationDigest = async (
1541
+ valueArg: unknown,
1542
+ ): Promise<TSha256Digest> => canonicalDigest(
1543
+ fleetCutoverContract.ingressDesignationDigestDomain,
1544
+ snapshotFleetCutoverIngressDesignation(valueArg),
1545
+ );
1546
+
1547
+ export const validateFleetCutoverIngressDesignation = async (
1548
+ valueArg: unknown,
1549
+ ): Promise<string[]> => {
1550
+ try {
1551
+ const value = snapshotFleetCutoverIngressDesignation(valueArg);
1552
+ return value.digest === await computeFleetCutoverIngressDesignationDigest(value)
1553
+ ? [] : ['fleet cutover ingress designation digest does not match'];
1554
+ } catch { return ['fleet cutover ingress designation must use its exact canonical schema']; }
1555
+ };
1556
+
1421
1557
  export const snapshotFleetCutoverIngressAuthority = (
1422
1558
  valueArg: unknown,
1423
1559
  ): IFleetCutoverIngressAuthority => safe(() => {
@@ -5,6 +5,8 @@ import type { IServiceRuntimeSpec } from '../data/serviceruntime.js';
5
5
  import type {
6
6
  IFleetCutoverAcceptedEvidenceReference,
7
7
  IFleetCutoverCorestoreAdoptionReceipt,
8
+ IFleetCutoverIngressDesignation,
9
+ IFleetCutoverIngressPreparationRequest,
8
10
  IFleetCutoverIngressAuthority,
9
11
  IFleetCutoverScope,
10
12
  IFleetCutoverScopeClassificationRequest,
@@ -56,6 +58,28 @@ extends plugins.typedrequestInterfaces.implementsTR<
56
58
  response: { runtime: IClusterRuntime; replayed: boolean };
57
59
  }
58
60
 
61
+ /**
62
+ * Cloudly designates one existing live service as the new ingress before assignment. It accepts
63
+ * only current owner state and creates the managed launcher bearer and designation atomically.
64
+ */
65
+ export interface IReq_Admin_Cloudly_PrepareFleetCutoverIngress
66
+ extends plugins.typedrequestInterfaces.implementsTR<
67
+ plugins.typedrequestInterfaces.ITypedRequest,
68
+ IReq_Admin_Cloudly_PrepareFleetCutoverIngress
69
+ > {
70
+ method: 'prepareFleetCutoverIngress';
71
+ request: {
72
+ identity: IIdentityCredential;
73
+ preparation: IFleetCutoverIngressPreparationRequest;
74
+ };
75
+ response: {
76
+ designation: IFleetCutoverIngressDesignation;
77
+ /** The resulting exact-cluster spec, still held after preparation. */
78
+ spec: IServiceRuntimeSpec;
79
+ replayed: boolean;
80
+ };
81
+ }
82
+
59
83
  /**
60
84
  * The only cutover-specific hold release. Ingress releases first under an accepted empty public
61
85
  * port policy; applications require the accepted ingress/port/route authority assembled later.