@pipeline-builder/pipeline-data 4.3.3 → 4.3.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/lib/api/crud-service.d.ts +7 -0
  2. package/lib/api/crud-service.js +14 -3
  3. package/lib/api/pipeline-step-resolution.d.ts +111 -0
  4. package/lib/api/pipeline-step-resolution.js +163 -0
  5. package/lib/api/plugin-consumption-policy.d.ts +8 -2
  6. package/lib/api/plugin-consumption-policy.js +20 -3
  7. package/lib/api/plugin-resolution.d.ts +26 -9
  8. package/lib/api/plugin-resolution.js +51 -33
  9. package/lib/api/reporting/analytics-queries.d.ts +6 -4
  10. package/lib/api/reporting/analytics-queries.js +11 -11
  11. package/lib/api/reporting/deploy-rollup.d.ts +2 -0
  12. package/lib/api/reporting/deploy-rollup.js +5 -1
  13. package/lib/api/reporting/failure-classifier.d.ts +2 -6
  14. package/lib/api/reporting/failure-classifier.js +22 -1
  15. package/lib/api/reporting/ingest.js +73 -16
  16. package/lib/api/reporting/plugin-exposure.d.ts +261 -15
  17. package/lib/api/reporting/plugin-exposure.js +423 -38
  18. package/lib/api/reporting/stakeholder/compose.d.ts +1 -1
  19. package/lib/api/reporting/stakeholder/compose.js +30 -1
  20. package/lib/api/reporting/stakeholder/store.d.ts +16 -2
  21. package/lib/api/reporting/stakeholder/store.js +17 -6
  22. package/lib/api/reporting/types.d.ts +80 -1
  23. package/lib/api/reporting/types.js +1 -1
  24. package/lib/api/reporting-service.d.ts +11 -4
  25. package/lib/api/reporting-service.js +106 -43
  26. package/lib/api/soft-delete-sweep.d.ts +8 -18
  27. package/lib/api/soft-delete-sweep.js +35 -5
  28. package/lib/api/version-references.d.ts +80 -0
  29. package/lib/api/version-references.js +135 -0
  30. package/lib/core/query-filters.d.ts +3 -3
  31. package/lib/core/query-filters.js +1 -1
  32. package/lib/database/drizzle-schema.d.ts +1238 -143
  33. package/lib/database/drizzle-schema.js +6 -3
  34. package/lib/database/index.d.ts +1 -1
  35. package/lib/database/index.js +2 -2
  36. package/lib/database/schema/ecosystem.d.ts +53 -0
  37. package/lib/database/schema/ecosystem.js +14 -3
  38. package/lib/database/schema/pipeline.d.ts +38 -0
  39. package/lib/database/schema/pipeline.js +20 -2
  40. package/lib/database/schema/plugin.d.ts +265 -0
  41. package/lib/database/schema/plugin.js +34 -3
  42. package/lib/database/schema/reporting-analytics.d.ts +786 -4
  43. package/lib/database/schema/reporting-analytics.js +111 -5
  44. package/lib/index.d.ts +5 -3
  45. package/lib/index.js +5 -3
  46. package/lib/testing/exports.json +24 -0
  47. package/package.json +4 -3
@@ -44,6 +44,8 @@ export interface PipelineExecution {
44
44
  /** First failing stage/action for the execution (null when it didn't fail). */
45
45
  failingStage: string | null;
46
46
  failingAction: string | null;
47
+ /** The first failure detail an event of the execution carried (`detail.failure`), or null. */
48
+ failure: unknown | null;
47
49
  }
48
50
  export interface StageFailure {
49
51
  stageName: string;
@@ -437,6 +439,35 @@ export interface IncidentInput {
437
439
  resolvedAt?: string;
438
440
  severity: string;
439
441
  }
442
+ /** The persisted incident state as an audit row records it (scrubbed values, ISO instants). */
443
+ export interface IncidentState {
444
+ environment: string;
445
+ openedAt: string | null;
446
+ resolvedAt: string | null;
447
+ severity: string;
448
+ }
449
+ /**
450
+ * What `ReportingService.recordIncident` did. `changed` is false for a sender's
451
+ * repeat-interval re-post of an unchanged alert, so the route records an audit
452
+ * row only for an incident that is new or actually moved (opened, re-opened,
453
+ * resolved, re-ranked) — a webhook re-firing every few hours must not bury the
454
+ * trail.
455
+ */
456
+ export interface IncidentWrite {
457
+ /** The stored (scrubbed) incident id. */
458
+ incidentId: string;
459
+ created: boolean;
460
+ changed: boolean;
461
+ before: IncidentState | null;
462
+ after: IncidentState;
463
+ }
464
+ /** What `ReportingService.recordDeploymentOutcome` replaced: the prior marker of the same outcome, if any. */
465
+ export interface DeploymentOutcomeWrite {
466
+ previous: {
467
+ at: string | null;
468
+ environment: string | null;
469
+ } | null;
470
+ }
440
471
  /** Event payload accepted by `ReportingService.ingestEvents`. Mirrors the route's Zod shape. */
441
472
  export interface IngestEvent {
442
473
  /** Stable pipeline id the events Lambda read from the `pb.pipeline-id`
@@ -464,6 +495,16 @@ export interface IngestEvent {
464
495
  commitTimestamp?: string;
465
496
  /** Number of commits shipped in this change (≥1). */
466
497
  commitCount?: number;
498
+ /**
499
+ * The EventBridge event `id` the forwarder received this state change as.
500
+ * AWS-assigned and unique per delivery source event, so it is the strongest
501
+ * dedup key there is (`event_source_event_idx`) and the thread an audit or
502
+ * DORA row follows back to the exact AWS event. Absent for plugin-build
503
+ * events, which have no EventBridge origin.
504
+ */
505
+ sourceEventId?: string;
506
+ /** The SQS message id it arrived in (folded into `detail.sourceMessageId`; not a column). */
507
+ sourceMessageId?: string;
467
508
  detail?: Record<string, unknown>;
468
509
  }
469
510
  /**
@@ -473,13 +514,35 @@ export interface IngestEvent {
473
514
  * api-server's metrics registry. `result` is the terminal outcome; `environment`
474
515
  * is non-null only for a deploy-stage event.
475
516
  */
476
- export interface IngestMetric {
517
+ export interface StageIngestMetric {
518
+ kind: 'stage';
477
519
  pipelineId: string;
478
520
  orgId: string;
479
521
  stage: string;
480
522
  environment: string | null;
481
523
  result: 'succeeded' | 'failed';
482
524
  }
525
+ /**
526
+ * One terminal CodeBuild ACTION's compute consumption (Phase 4, measurement
527
+ * half).
528
+ *
529
+ * `credits` is NULL rather than 0 when the action could not be measured — no
530
+ * declared start time, or a compute size the forwarder could not read. The
531
+ * distinction is the whole value of this metric: zero would make a coverage gap
532
+ * look like idleness, and a tier ladder re-derived against an unknown
533
+ * denominator is a repricing nobody can defend.
534
+ */
535
+ export interface ComputeIngestMetric {
536
+ kind: 'compute';
537
+ pipelineId: string;
538
+ orgId: string;
539
+ computeType: string | null;
540
+ durationMs: number | null;
541
+ credits: number | null;
542
+ }
543
+ /** What the ingest fans out to its caller's metric registry. Discriminated, so
544
+ * a new kind cannot be silently counted as a stage outcome. */
545
+ export type IngestMetric = StageIngestMetric | ComputeIngestMetric;
483
546
  /** Counts + the (possibly truncated) list of unregistered pipeline ids the caller can log. */
484
547
  export interface IngestResult {
485
548
  inserted: number;
@@ -509,6 +572,16 @@ export interface IngestResult {
509
572
  * to 0 makes a bad clock look like an instant deploy.
510
573
  */
511
574
  droppedInvalidTime: number;
575
+ /**
576
+ * The registered pipeline ids whose events were dropped as FOREIGN-ORG — the
577
+ * tenancy refusal the route audits as a failure. Ids only (never the org they
578
+ * resolved to: that would tell a prober which tenant owns the pipeline).
579
+ */
580
+ foreignPipelineIds: string[];
581
+ /** Distinct execution ids of the rows that actually landed (the audit's correlation set). */
582
+ insertedExecutionIds: string[];
583
+ /** Distinct pipeline ids of the rows that actually landed. */
584
+ insertedPipelineIds: string[];
512
585
  }
513
586
  /**
514
587
  * Who is writing, for the ingest tenancy check.
@@ -532,6 +605,12 @@ export interface IngestCaller {
532
605
  * cross-tenant. Never set this from anything a request body can influence.
533
606
  */
534
607
  crossTenant?: boolean;
608
+ /**
609
+ * The access key (service-account / PAT key id) the ingest token was exchanged
610
+ * from, stamped on every row as `ingest_key_id` so a forged or misrouted row
611
+ * names the credential that wrote it. A key ID, never the secret.
612
+ */
613
+ keyId?: string;
535
614
  }
536
615
  /**
537
616
  * One org's ingestion-health row as READ back by the Reports UI. The
@@ -1,4 +1,4 @@
1
1
  // Copyright 2026 Pipeline Builder Contributors
2
2
  // SPDX-License-Identifier: Apache-2.0
3
3
  export {};
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBpL3JlcG9ydGluZy90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8qKlxuICogUHVibGljIHJlc3VsdCBzaGFwZXMgZm9yIHRoZSByZXBvcnRpbmcgc2VydmljZS5cbiAqXG4gKiBTcGxpdCBvdXQgb2YgcmVwb3J0aW5nLXNlcnZpY2UudHMgcHVyZWx5IGZvciBzaXplOiB0aGVzZSBhcmUgZGF0YSBjb250cmFjdHNcbiAqIHdpdGggbm8gYmVoYXZpb3VyLiByZXBvcnRpbmctc2VydmljZS50cyByZS1leHBvcnRzIHRoZW0sIHNvIHRoZVxuICogYEBwaXBlbGluZS1idWlsZGVyL3BpcGVsaW5lLWRhdGFgIHB1YmxpYyBzdXJmYWNlIGlzIHVuY2hhbmdlZC5cbiAqL1xuXG5leHBvcnQgaW50ZXJmYWNlIEV4ZWN1dGlvbkNvdW50IHtcbiAgaWQ6IHN0cmluZztcbiAgcHJvamVjdDogc3RyaW5nO1xuICBvcmdhbml6YXRpb246IHN0cmluZztcbiAgcGlwZWxpbmVOYW1lOiBzdHJpbmcgfCBudWxsO1xuICB0b3RhbDogbnVtYmVyO1xuICBzdWNjZWVkZWQ6IG51bWJlcjtcbiAgZmFpbGVkOiBudW1iZXI7XG4gIGNhbmNlbGVkOiBudW1iZXI7XG4gIGZpcnN0RXhlY3V0aW9uOiBzdHJpbmcgfCBudWxsO1xuICBsYXN0RXhlY3V0aW9uOiBzdHJpbmcgfCBudWxsO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRpbWVTZXJpZXNFbnRyeSB7XG4gIHBlcmlvZDogc3RyaW5nO1xuICBzdWNjZWVkZWQ6IG51bWJlcjtcbiAgZmFpbGVkOiBudW1iZXI7XG4gIGNhbmNlbGVkOiBudW1iZXI7XG4gIHN1Y2Nlc3NQY3Q6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEdXJhdGlvblN0YXRzIHtcbiAgaWQ6IHN0cmluZztcbiAgcHJvamVjdDogc3RyaW5nO1xuICBwaXBlbGluZU5hbWU6IHN0cmluZyB8IG51bGw7XG4gIGF2Z01zOiBudW1iZXI7XG4gIG1pbk1zOiBudW1iZXI7XG4gIG1heE1zOiBudW1iZXI7XG4gIHA5NU1zOiBudW1iZXI7XG4gIGV4ZWN1dGlvbnM6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQaXBlbGluZUV4ZWN1dGlvbiB7XG4gIGV4ZWN1dGlvbklkOiBzdHJpbmc7XG4gIC8qKiBSb2xsZWQtdXAgdGVybWluYWwgc3RhdHVzOiBzdWNjZWVkZWQgfCBmYWlsZWQgfCBjYW5jZWxlZCB8IGluLXByb2dyZXNzLiAqL1xuICBzdGF0dXM6IHN0cmluZztcbiAgc3RhcnRlZEF0OiBzdHJpbmcgfCBudWxsO1xuICBlbmRlZEF0OiBzdHJpbmcgfCBudWxsO1xuICBkdXJhdGlvbk1zOiBudW1iZXIgfCBudWxsO1xuICAvKiogRmlyc3QgZmFpbGluZyBzdGFnZS9hY3Rpb24gZm9yIHRoZSBleGVjdXRpb24gKG51bGwgd2hlbiBpdCBkaWRuJ3QgZmFpbCkuICovXG4gIGZhaWxpbmdTdGFnZTogc3RyaW5nIHwgbnVsbDtcbiAgZmFpbGluZ0FjdGlvbjogc3RyaW5nIHwgbnVsbDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdGFnZUZhaWx1cmUge1xuICBzdGFnZU5hbWU6IHN0cmluZztcbiAgZmFpbHVyZXM6IG51bWJlcjtcbiAgdG90YWw6IG51bWJlcjtcbiAgZmFpbHVyZVBjdDogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN0YWdlQm90dGxlbmVjayB7XG4gIGlkOiBzdHJpbmc7XG4gIHBpcGVsaW5lTmFtZTogc3RyaW5nIHwgbnVsbDtcbiAgc3RhZ2VOYW1lOiBzdHJpbmc7XG4gIGF2Z01zOiBudW1iZXI7XG4gIG1heE1zOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWN0aW9uRmFpbHVyZSB7XG4gIGFjdGlvbk5hbWU6IHN0cmluZztcbiAgZmFpbHVyZXM6IG51bWJlcjtcbiAgdG90YWw6IG51bWJlcjtcbiAgZmFpbHVyZVBjdDogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVycm9yRW50cnkge1xuICBlcnJvclBhdHRlcm46IHN0cmluZztcbiAgb2NjdXJyZW5jZXM6IG51bWJlcjtcbiAgYWZmZWN0ZWRQaXBlbGluZXM6IG51bWJlcjtcbiAgbGFzdFNlZW46IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQbHVnaW5TdW1tYXJ5IHtcbiAgdG90YWw6IG51bWJlcjtcbiAgYWN0aXZlOiBudW1iZXI7XG4gIGluYWN0aXZlOiBudW1iZXI7XG4gIC8qKiBDb3VudHMgcGVyIHNoYXJpbmcgcnVuZyDigJQgb25lIGJ1Y2tldCBwZXIgYHZpc2liaWxpdHlgIHZhbHVlLiAqL1xuICBwdWJsaWM6IG51bWJlcjtcbiAgb3JnOiBudW1iZXI7XG4gIHByaXZhdGU6IG51bWJlcjtcbiAgdW5pcXVlTmFtZXM6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUeXBlQ29tcHV0ZURpc3RyaWJ1dGlvbiB7XG4gIHBsdWdpblR5cGU6IHN0cmluZztcbiAgY29tcHV0ZVR5cGU6IHN0cmluZztcbiAgY291bnQ6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBWZXJzaW9uQ291bnQge1xuICBuYW1lOiBzdHJpbmc7XG4gIHZlcnNpb25Db3VudDogbnVtYmVyO1xuICBsYXRlc3RWZXJzaW9uOiBzdHJpbmc7XG4gIGhhc0RlZmF1bHQ6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnVpbGRUaW1lU2VyaWVzRW50cnkge1xuICBwZXJpb2Q6IHN0cmluZztcbiAgc3VjY2VlZGVkOiBudW1iZXI7XG4gIGZhaWxlZDogbnVtYmVyO1xuICBzdWNjZXNzUGN0OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnVpbGREdXJhdGlvbiB7XG4gIHBsdWdpbk5hbWU6IHN0cmluZztcbiAgYXZnTXM6IG51bWJlcjtcbiAgbWF4TXM6IG51bWJlcjtcbiAgYnVpbGRzOiBudW1iZXI7XG59XG5cbi8qKlxuICogUGx1Z2luIHJ1bnRpbWUgcmVwb3J0IGZpbHRlcnMuIGBwdWJsaXNoZXI6IG51bGxgIHNlbGVjdHMgb3duLW9yZ1xuICogKHB1Ymxpc2hlci1sZXNzKSBwbHVnaW5zOyBhbiBvbWl0dGVkIGZpZWxkIGRvZXNuJ3QgZmlsdGVyLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBsdWdpblJ1bnRpbWVGaWx0ZXIge1xuICBuYW1lPzogc3RyaW5nO1xuICBwdWJsaXNoZXI/OiBzdHJpbmcgfCBudWxsO1xuICB2ZXJzaW9uPzogc3RyaW5nO1xufVxuXG4vKiogUGVyIHBsdWdpbiB2ZXJzaW9uIHJ1bnRpbWUgc3RhdHMgb3ZlciBhIHdpbmRvdyAodGVybWluYWwgQUNUSU9OIHJ1bnMpLiAqL1xuZXhwb3J0IGludGVyZmFjZSBQbHVnaW5SdW50aW1lU3RhdHMge1xuICBwbHVnaW5QdWJsaXNoZXI6IHN0cmluZyB8IG51bGw7XG4gIHBsdWdpbk5hbWU6IHN0cmluZztcbiAgcGx1Z2luVmVyc2lvbjogc3RyaW5nO1xuICBydW5zOiBudW1iZXI7XG4gIHN1Y2NlZWRlZDogbnVtYmVyO1xuICBmYWlsZWQ6IG51bWJlcjtcbiAgLyoqIDDigJMxMDAsIG9uZSBkZWNpbWFsLiAqL1xuICBzdWNjZXNzUGN0OiBudW1iZXI7XG4gIC8qKiBOdWxsIHdoZW4gbm8gcnVuIGluIHRoZSBncm91cCBjYXJyaWVkIGEgZHVyYXRpb24uICovXG4gIHA1ME1zOiBudW1iZXIgfCBudWxsO1xuICBwOTVNczogbnVtYmVyIHwgbnVsbDtcbiAgbGFzdFJ1bjogc3RyaW5nO1xufVxuXG4vKiogQ3Jvc3Mtb3JnIDMwLWRheSBhZ2dyZWdhdGUgZm9yIG9uZSBgKHB1Ymxpc2hlciwgbmFtZSlgIGxpc3RpbmcuICovXG5leHBvcnQgaW50ZXJmYWNlIFBsdWdpblJ1bnRpbWVBZ2dyZWdhdGUge1xuICBydW5zMzBkOiBudW1iZXI7XG4gIC8qKiAw4oCTMTsgbnVsbCB3aGVuIHRoZXJlIHdlcmUgbm8gcnVucy4gKi9cbiAgc3VjY2Vzc1JhdGUzMGQ6IG51bWJlciB8IG51bGw7XG4gIGFjdGl2ZU9yZ0NvdW50MzBkOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnVpbGRGYWlsdXJlIHtcbiAgcGx1Z2luTmFtZTogc3RyaW5nO1xuICBlcnJvck1lc3NhZ2U6IHN0cmluZztcbiAgb2NjdXJyZW5jZXM6IG51bWJlcjtcbiAgbGFzdFNlZW46IHN0cmluZztcbn1cblxuLyoqXG4gKiBUaGUgRE9SQSBoZWFkbGluZSBlbnZpcm9ubWVudC4gRGVwbG95bWVudCB0byB0aGlzIGxpdGVyYWwgZW52IG5hbWUgaXMgdGhlXG4gKiBpbmR1c3RyeS1zdGFuZGFyZCBET1JBIHNpZ25hbDsgTVRUUiBpcyBtZWFzdXJlZCBwcm9kdWN0aW9uLW9ubHksIGFuZCB0aGlzXG4gKiBlbnZpcm9ubWVudCdzIGNhcmQgaXMgdGhlIHN1bW1hcnkgc2hvd24gYXQgdGhlIHRvcCBvZiB0aGUgcGFuZWwuXG4gKi9cblxuLyoqIFBlci1vcmcgcmV0ZW50aW9uIG92ZXJyaWRlIHJvdy4gQm90aCBudWxsYWJsZSDih5IgZ2xvYmFsIGRlZmF1bHRzLiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRpbmdSZXRlbnRpb25TZXR0aW5ncyB7XG4gIGV2ZW50UmV0ZW50aW9uRGF5czogbnVtYmVyIHwgbnVsbDtcbiAgZG9yYVJldGVudGlvbkRheXM6IG51bWJlciB8IG51bGw7XG4gIGRlZmF1bHRFdmVudFJldGVudGlvbkRheXM6IG51bWJlcjtcbiAgZGVmYXVsdERvcmFSZXRlbnRpb25EYXlzOiBudW1iZXI7XG59XG5cbi8qKiBPcHRpb25zIGZvciB0aGUgcmVwb3J0aW5nIHJldGVudGlvbiBzd2VlcC4gKi9cbi8qKlxuICogSG93IGEgdGltZS1idWNrZXRlZCByZXBvcnQgc2xpY2VzIGl0cyBwZXJpb2RzLiBBYnNlbnQgbWVhbnMgVVRDICsgTW9uZGF5LCB3aGljaFxuICogaXMgd2hhdCBldmVyeSBwcmUtdGltZXpvbmUgY2FsbGVyIGdvdCDigJQgc28gYW4gb21pdHRlZCB2YWx1ZSBjYW4gbmV2ZXIgc2lsZW50bHlcbiAqIGNoYW5nZSBhbiBleGlzdGluZyByZXBvcnQncyBib3VuZGFyaWVzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJ1Y2tldE9wdGlvbnMge1xuICAvKiogSUFOQSB0aW1lem9uZSB0aGUgYnVja2V0cyBhcmUgY3V0IGluICh2YWxpZGF0ZWQgYXQgdGhlIHJvdXRlKS4gKi9cbiAgdHo/OiBzdHJpbmc7XG4gIC8qKiBXaGVyZSB0aGUgd2VlayBzdGFydHMuIFBvc3RncmVzIERBVEVfVFJVTkMgaXMgTW9uZGF5LW9ubHksIHNvIGBzdW5kYXlgXG4gICAqICBzaGlmdHMgdGhlIGJvdW5kYXJ5IGV4cGxpY2l0bHkuICovXG4gIHdlZWtTdGFydD86ICdtb25kYXknIHwgJ3N1bmRheSc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0aW5nUmV0ZW50aW9uT3B0aW9ucyB7XG4gIC8qKiBSb3dzIGRlbGV0ZWQgcGVyIHN0YXRlbWVudCAoZGVmYXVsdCAxMDAwKS4gKi9cbiAgYmF0Y2hTaXplPzogbnVtYmVyO1xuICAvKipcbiAgICogVGhlIGxlYWRlci1sb2NrZWQgcnVuIHRoaXMgc3dlZXAgYmVsb25ncyB0by4gQ2hlY2tlZCBCRVRXRUVOIE9SR1M6IGFib3J0ZWRcbiAgICogbWVhbnMgdGhlIGxvY2sgd2FzIGxvc3QgKGFub3RoZXIgcG9kIGlzIHRha2luZyBvdmVyKSBvciB0aGUgcHJvY2VzcyBpc1xuICAgKiBzaHV0dGluZyBkb3duLCBhbmQgdGhlIHJlbWFpbmluZyBvcmdzIGFyZSBwaWNrZWQgdXAgbmV4dCB0aWNrLiBXaXRob3V0IGl0IGFcbiAgICogbG9uZyBzd2VlcCBrZXB0IGRlbGV0aW5nIGFmdGVyIGFub3RoZXIgcG9kIGhhZCBhbHJlYWR5IHRha2VuIHRoZSBsb2NrLlxuICAgKi9cbiAgcnVuPzogeyBzaWduYWw6IEFib3J0U2lnbmFsIH07XG4gIC8qKiBNYXggYmF0Y2hlcyBwZXIgdGFibGUgcGVyIG9yZyBwZXIgdGljayAoZGVmYXVsdCA1MCk7IHRoZSByZXN0IGRlZmVycyB0b1xuICAgKiAgdGhlIG5leHQgdGljayBzbyBhIGh1Z2UgYmFja2xvZyBjYW4ndCBob2xkIGxvY2tzIHRvbyBsb25nLiAqL1xuICBtYXhCYXRjaGVzUGVyVGFibGU/OiBudW1iZXI7XG4gIC8qKiBGaXhlZCBcIm5vd1wiIGZvciB0aGUgd2hvbGUgc3dlZXAgKGRlZmF1bHQgYG5ldyBEYXRlKClgKS4gKi9cbiAgbm93PzogRGF0ZTtcbiAgLyoqXG4gICAqIFJlc29sdmUgdGhlIG9yZyB3aG9zZSBgZG9yYV9zZXR0aW5nc2AgcmV0ZW50aW9uIGdvdmVybnMgYG9yZ0lkYCdzIHJvd3Mg4oCUIGl0c1xuICAgKiBhY2NvdW50IFJPT1QuIFJldGVudGlvbiBpcyBhIGJpbGxpbmcgZW50aXRsZW1lbnQgc3luY2VkIG9udG8gdGhlIHJvb3Qgb25seSxcbiAgICogc28gYSB0ZWFtJ3Mgcm93cyBtdXN0IGZvbGxvdyB0aGUgcm9vdCdzIChwdXJjaGFzZWQpIHdpbmRvdywgbm90IHRoZSBlbnZcbiAgICogZGVmYXVsdC4gUmV0dXJuIGBudWxsYCB3aGVuIHRoZSByb290IGNhbid0IGJlIHJlc29sdmVkOiB0aGF0IG9yZyBpcyBTS0lQUEVEXG4gICAqIHRoaXMgdGljayAobmV2ZXIgcHVyZ2VkIG9uIGEgcG9zc2libHktc2hvcnRlciB3aW5kb3cpLiBEZWZhdWx0OiBpZGVudGl0eVxuICAgKiAoZXZlcnkgb3JnIGlzIGl0cyBvd24gcm9vdCDigJQgYSBmbGF0IGRlcGxveW1lbnQpLlxuICAgKi9cbiAgcmVzb2x2ZVJldGVudGlvbk9yZ0lkPzogKG9yZ0lkOiBzdHJpbmcpID0+IFByb21pc2U8c3RyaW5nIHwgbnVsbD47XG59XG5cbi8qKiBQZXItcnVuIHB1cmdlIHRhbGxpZXMgKGFsc28gbG9nZ2VkKS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0aW5nUmV0ZW50aW9uQ291bnRzIHtcbiAgLyoqIE9yZ3Mgc3dlcHQgdGhpcyBydW4uICovXG4gIG9yZ3M6IG51bWJlcjtcbiAgLyoqIFN0YW5kYXJkIGBwaXBlbGluZV9ldmVudHNgIChlbnZpcm9ubWVudCBJUyBOVUxMKSByb3dzIHB1cmdlZC4gKi9cbiAgc3RhbmRhcmRFdmVudHM6IG51bWJlcjtcbiAgLyoqIERPUkEtc291cmNlIGBwaXBlbGluZV9ldmVudHNgIChlbnZpcm9ubWVudCBJUyBOT1QgTlVMTCkgcm93cyBwdXJnZWQuICovXG4gIGRvcmFFdmVudHM6IG51bWJlcjtcbiAgLyoqIGBkZXBsb3ltZW50X291dGNvbWVzYCByb3dzIHB1cmdlZC4gKi9cbiAgZGVwbG95bWVudE91dGNvbWVzOiBudW1iZXI7XG4gIC8qKiBgaW5jaWRlbnRzYCByb3dzIHB1cmdlZC4gKi9cbiAgaW5jaWRlbnRzOiBudW1iZXI7XG59XG5cbi8qKlxuICogRE9SQSBwZXJmb3JtYW5jZSBiYW5kLiBgbnVsbGAgPSBpbnN1ZmZpY2llbnQgZGF0YSB0byBjbGFzc2lmeSAobm9cbiAqIGRlcGxveW1lbnRzL2ZhaWx1cmVzL2xlYWQtdGltZSBzYW1wbGUgaW4gdGhlIHdpbmRvdyksIHNvIHRoZSBVSSBzaG93cyBhXG4gKiBuZXV0cmFsIHN0YXRlIHJhdGhlciB0aGFuIG1pc2xhYmVsaW5nIGFuIGVtcHR5IHdpbmRvdyBhcyBcImxvd1wiLlxuICovXG5leHBvcnQgdHlwZSBEb3JhTGV2ZWwgPSAnZWxpdGUnIHwgJ2hpZ2gnIHwgJ21lZGl1bScgfCAnbG93JyB8IG51bGw7XG5cbi8qKiBPcHRpb25hbCBzY29waW5nIGZvciB7QGxpbmsgUmVwb3J0aW5nU2VydmljZS5nZXREb3JhTWV0cmljc30uICovXG5leHBvcnQgaW50ZXJmYWNlIERvcmFPcHRpb25zIHtcbiAgLyoqIFJlc3RyaWN0IHRvIGEgc2luZ2xlIHBpcGVsaW5lIChwZXItcGlwZWxpbmUgRE9SQSkuICovXG4gIHBpcGVsaW5lSWQ/OiBzdHJpbmc7XG4gIC8qKiBSZXN0cmljdCB0byBhIHNpbmdsZSBkZXBsb3kgZW52aXJvbm1lbnQgKGVsc2UgYWxsIGRlcGxveSBlbnZpcm9ubWVudHMpLiAqL1xuICBlbnZpcm9ubWVudD86IHN0cmluZztcbiAgLyoqXG4gICAqIFBlci1vcmcgaW5jaWRlbnTihpJkZXBsb3kgY29ycmVsYXRpb24gd2luZG93IG92ZXJyaWRlIChob3VycykuIFdoZW4gc2V0IChhXG4gICAqIHBvc2l0aXZlIGZpbml0ZSBudW1iZXIpLCB0aGUgaW5jaWRlbnQgY29ycmVsYXRpb24gdXNlcyBpdCBpbnN0ZWFkIG9mIHRoZVxuICAgKiBnbG9iYWwgYERPUkFfSU5DSURFTlRfV0lORE9XX0hPVVJTYC4gVGhlIHJvdXRlIHJlc29sdmVzIHRoaXMgZnJvbSB0aGUgb3JnJ3NcbiAgICogYGRvcmFfc2V0dGluZ3NgIHJvdyAoc2VlIHtAbGluayBSZXBvcnRpbmdTZXJ2aWNlLmdldFJlcG9ydGluZ1NldHRpbmdzfSkgYW5kXG4gICAqIHBhc3NlcyBpdCBpbjsgdW5zZXQgZmFsbHMgYmFjayB0byB0aGUgZW52IGRlZmF1bHQuXG4gICAqL1xuICBpbmNpZGVudFdpbmRvd0hvdXJzPzogbnVtYmVyO1xuICAvKiogSUFOQSB0aW1lem9uZSBmb3IgdGhlIHRyZW5kJ3MgYnVja2V0cyAoc2VlIHtAbGluayBCdWNrZXRPcHRpb25zfSkuICovXG4gIHR6Pzogc3RyaW5nO1xuICAvKiogV2VlayBzdGFydCBmb3IgdGhlIHRyZW5kJ3MgYnVja2V0cy4gKi9cbiAgd2Vla1N0YXJ0PzogJ21vbmRheScgfCAnc3VuZGF5Jztcbn1cblxuLyoqXG4gKiBQZXItb3JnIHJlcG9ydGluZyBzZXR0aW5ncyBzdXJmYWNlZCB0byB0aGUgb3JnLWFkbWluIHBhbmVsLiBgaW5jaWRlbnRXaW5kb3dIb3Vyc2BcbiAqIGlzIHRoZSBpbmNpZGVudOKGkmRlcGxveSBjb3JyZWxhdGlvbiB3aW5kb3c7IGBldmVudFJldGVudGlvbkRheXNgIC9cbiAqIGBkb3JhUmV0ZW50aW9uRGF5c2AgYXJlIHRoZSB0d28gcmV0ZW50aW9uLXN3ZWVwIHdpbmRvd3MuIEVhY2ggb3ZlcnJpZGVcbiAqIGlzIGBudWxsYCB3aGVuIHVuc2V0ICh0aGUgcGFpcmVkIGBkZWZhdWx0KmAgZmllbGQgc2hvd3MgdGhlIGVudiBmYWxsYmFjayBhcHBsaWVkKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRpbmdTZXR0aW5ncyB7XG4gIC8qKiBUaGUgb3JnJ3Mgc3RvcmVkIGNvcnJlbGF0aW9uLXdpbmRvdyBvdmVycmlkZSBpbiBob3Vycywgb3IgYG51bGxgIHdoZW4gdW5zZXQuICovXG4gIGluY2lkZW50V2luZG93SG91cnM6IG51bWJlciB8IG51bGw7XG4gIC8qKiBUaGUgZ2xvYmFsIGVudiBkZWZhdWx0IGFwcGxpZWQgd2hlbiBubyBvdmVycmlkZSBpcyBzdG9yZWQuICovXG4gIGRlZmF1bHRXaW5kb3dIb3VyczogbnVtYmVyO1xuICAvKiogU3RhbmRhcmQtZXZlbnQgcmV0ZW50aW9uIG92ZXJyaWRlIGluIGRheXMsIG9yIGBudWxsYCB3aGVuIHVuc2V0LiAqL1xuICBldmVudFJldGVudGlvbkRheXM6IG51bWJlciB8IG51bGw7XG4gIC8qKiBET1JBLXNvdXJjZSByZXRlbnRpb24gb3ZlcnJpZGUgaW4gZGF5cywgb3IgYG51bGxgIHdoZW4gdW5zZXQuICovXG4gIGRvcmFSZXRlbnRpb25EYXlzOiBudW1iZXIgfCBudWxsO1xuICAvKiogR2xvYmFsIHN0YW5kYXJkLWV2ZW50IHJldGVudGlvbiBkZWZhdWx0IGFwcGxpZWQgd2hlbiB1bnNldCAoZGF5cykuICovXG4gIGRlZmF1bHRFdmVudFJldGVudGlvbkRheXM6IG51bWJlcjtcbiAgLyoqIEdsb2JhbCBET1JBLXNvdXJjZSByZXRlbnRpb24gZGVmYXVsdCBhcHBsaWVkIHdoZW4gdW5zZXQgKGRheXMpLiAqL1xuICBkZWZhdWx0RG9yYVJldGVudGlvbkRheXM6IG51bWJlcjtcbn1cblxuLyoqIEEgcGFydGlhbCByZXBvcnRpbmctc2V0dGluZ3Mgd3JpdGUgKDcpLiBPbmx5IHByb3ZpZGVkIGZpZWxkcyBhcmVcbiAqICB1cHNlcnRlZDsgb21pdHRlZCBmaWVsZHMgYXJlIGxlZnQgdW5jaGFuZ2VkIChhbiBvbWl0dGVkIHJldGVudGlvbiBmaWVsZCBrZWVwc1xuICogIGl0cyBzdG9yZWQgb3ZlcnJpZGUgLyB0aGUgZ2xvYmFsIGRlZmF1bHQpLiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRpbmdTZXR0aW5nc1BhdGNoIHtcbiAgaW5jaWRlbnRXaW5kb3dIb3Vycz86IG51bWJlcjtcbiAgZXZlbnRSZXRlbnRpb25EYXlzPzogbnVtYmVyO1xuICBkb3JhUmV0ZW50aW9uRGF5cz86IG51bWJlcjtcbn1cblxuLyoqIE9uZSByb3cgb2YgdGhlIG9yZy1hZG1pbiBpbmNpZGVudHMgbGlzdCAocmVjZW50IGluY2lkZW50cyArIGRlcGxveSBjb3JyZWxhdGlvbikuICovXG5leHBvcnQgaW50ZXJmYWNlIEluY2lkZW50TGlzdEl0ZW0ge1xuICBpbmNpZGVudElkOiBzdHJpbmc7XG4gIGVudmlyb25tZW50OiBzdHJpbmc7XG4gIHNldmVyaXR5OiBzdHJpbmc7XG4gIG9wZW5lZEF0OiBzdHJpbmcgfCBudWxsO1xuICByZXNvbHZlZEF0OiBzdHJpbmcgfCBudWxsO1xuICBjcmVhdGVkQXQ6IHN0cmluZyB8IG51bGw7XG4gIC8qKiBUcnVlIG9uY2UgdGhlIGluY2lkZW50IGhhcyBhIGByZXNvbHZlZF9hdGAuICovXG4gIHJlc29sdmVkOiBib29sZWFuO1xuICAvKiogVGhlIGNvcnJlbGF0ZWQgZGVwbG95IGV4ZWN1dGlvbiBpZCAobW9zdCByZWNlbnQgc3VjY2Vzc2Z1bCBkZXBsb3kgaW4td2luZG93KSwgb3IgbnVsbC4gKi9cbiAgY29ycmVsYXRlZEV4ZWN1dGlvbklkOiBzdHJpbmcgfCBudWxsO1xuICAvKiogVGhhdCBkZXBsb3kncyBjb21wbGV0aW9uIGluc3RhbnQsIG9yIG51bGwgd2hlbiB1bmNvcnJlbGF0ZWQuICovXG4gIGRlcGxveUNvbXBsZXRlZEF0OiBzdHJpbmcgfCBudWxsO1xufVxuXG4vKiogUmVzdWx0IG9mIHRoZSB3aXJpbmctdGVzdCBkcnktcnVuIGNvcnJlbGF0aW9uICh7QGxpbmsgUmVwb3J0aW5nU2VydmljZS50ZXN0SW5jaWRlbnRDb3JyZWxhdGlvbn0pLiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbmNpZGVudFRlc3RSZXN1bHQge1xuICBlbnZpcm9ubWVudDogc3RyaW5nO1xuICAvKiogVGhlIHN5bnRoZXRpYyBpbmNpZGVudCdzIG9wZW5lZEF0IChub3csIElTTykuICovXG4gIG9wZW5lZEF0OiBzdHJpbmc7XG4gIC8qKiBUaGUgZWZmZWN0aXZlIGNvcnJlbGF0aW9uIHdpbmRvdyB1c2VkLiAqL1xuICB3aW5kb3dIb3VyczogbnVtYmVyO1xuICAvKiogV2hldGhlciBhIHJlY2VudCBzdWNjZXNzZnVsIGRlcGxveSB0byBgZW52aXJvbm1lbnRgIGNvcnJlbGF0ZWQuICovXG4gIGNvcnJlbGF0ZWQ6IGJvb2xlYW47XG4gIC8qKiBUaGUgY29ycmVsYXRlZCBkZXBsb3kgZXhlY3V0aW9uIGlkLCBvciBudWxsLiAqL1xuICBleGVjdXRpb25JZDogc3RyaW5nIHwgbnVsbDtcbiAgLyoqIFRoYXQgZGVwbG95J3MgY29tcGxldGlvbiBpbnN0YW50LCBvciBudWxsLiAqL1xuICBkZXBsb3lDb21wbGV0ZWRBdDogc3RyaW5nIHwgbnVsbDtcbn1cblxuLy8gRE9SQSBwZXJmb3JtYW5jZSBiYW5kcyAodGhyZXNob2xkcyBmcm9tIHRoZSBET1JBL0FjY2VsZXJhdGUgcmVwb3J0cykuIEVhY2hcbi8vIGhlbHBlciByZXR1cm5zIGBudWxsYCB3aGVuIHRoZXJlJ3Mgbm8gc2FtcGxlIHRvIGNsYXNzaWZ5LlxuLyoqIERlcGxveW1lbnQgZnJlcXVlbmN5IGJ5IGRlcGxveXMvZGF5OiBlbGl0ZSDiiaUxL2RheSwgaGlnaCDiiaUxL3dlZWssIG1lZGl1bSDiiaUxL21vbnRoLiAqL1xuXG4vKipcbiAqIERPUkEgbWV0cmljcyBvdmVyIGEgW2Zyb20sdG9dIHdpbmRvdywgb3JnLXNjb3BlZCAoc2luZ2xlLW9yZyBvciByb2xsdXAgc3VidHJlZSkuXG4gKlxuICogREVQTE9ZLUJBU0lTIOKAlCBldmVyeSBtZXRyaWMgZGVyaXZlcyBmcm9tIHJlYWwgREVQTE9ZLVNUQUdFIGV4ZWN1dGlvbnMsIGkuZS5cbiAqIGBwaXBlbGluZV9ldmVudHNgIHJvd3Mgd2l0aCBgZXZlbnRfdHlwZT0nU1RBR0UnYCBhbmQgYSBub24tbnVsbCBgZW52aXJvbm1lbnRgXG4gKiAodGhlIGZvcndhcmRlciBzZXRzIGBlbnZpcm9ubWVudGAgb25seSBmb3IgdGhlIHN0YWdlcyBhIHVzZXIgZGVjbGFyZWQgaW5cbiAqIGBwYi5kZXBsb3lzYCkuIEEgQ0ktb25seSBidWlsZC90ZXN0IHBpcGVsaW5lIHdpdGggbm8gZGVwbG95IHN0YWdlIHByb2R1Y2VzIE5PXG4gKiBET1JBIGRhdGEg4oCUIHRoZXJlIGlzIG5vIHJ1bi1iYXNlZCBmYWxsYmFjay4gVGhlIHBhbmVsIGlzIGVtcHR5IHVudGlsIGRlcGxveWVkXG4gKiBwaXBlbGluZXMgcmUtc3ludGggd2l0aCB0aGUgbmV3IGRlcGxveSB0YWdzIGFuZCBzdGFydCBlbWl0dGluZyBkZXBsb3kgZXZlbnRzLlxuICpcbiAqIGBwcm9kdWN0aW9uYCBpcyB0aGUgaGVhZGxpbmUgZW52aXJvbm1lbnQ7IE1UVFIgaXMgbWVhc3VyZWQgcHJvZHVjdGlvbi1vbmx5LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERvcmFNZXRyaWNzIHtcbiAgLyoqIFRoZSBbZnJvbSx0b10gd2luZG93IGVjaG9lZCBiYWNrIChkZXBsb3kgYGNvbXBsZXRlZF9hdGAgcmFuZ2UpLiAqL1xuICB3aW5kb3c6IHsgZnJvbTogc3RyaW5nOyB0bzogc3RyaW5nIH07XG4gIC8qKiBUaGUgc2NvcGluZyBhcHBsaWVkIChlY2hvZWQgZm9yIHRoZSBVSSk7IGBudWxsYCB3aGVuIHVuc2NvcGVkLiAqL1xuICBmaWx0ZXJzOiB7IHBpcGVsaW5lSWQ6IHN0cmluZyB8IG51bGw7IGVudmlyb25tZW50OiBzdHJpbmcgfCBudWxsIH07XG4gIC8qKiBUaGUgaGVhZGxpbmUgZW52aXJvbm1lbnQgbmFtZSAoYHByb2R1Y3Rpb25gKS4gKi9cbiAgaGVhZGxpbmU6IHN0cmluZztcbiAgLyoqIFBlci1lbnZpcm9ubWVudCBERiAvIENGUiAvIGxlYWQgdGltZS4gU29ydGVkIGhlYWRsaW5lLWZpcnN0LCB0aGVuIEHihpJaLiAqL1xuICBlbnZpcm9ubWVudHM6IERvcmFFbnZNZXRyaWNzW107XG4gIC8qKlxuICAgKiBNZWFuIFRpbWUgVG8gUmVzdG9yZSDigJQgUFJPRFVDVElPTi1PTkxZLCBmcm9tIGBkZXBsb3ltZW50X291dGNvbWVzYC5cbiAgICogYG1lZGlhbihyZXN0b3JlZC5hdCDiiJIgZGVwbG95ZWQuY29tcGxldGVkX2F0KWAgb3ZlciByZXN0b3JlZCBwcm9kdWN0aW9uXG4gICAqIGluY2lkZW50cyAoZGVsdGFzIGNsYW1wZWQg4omlMCkuIGBpbmNpZGVudHNgIGNvdW50cyBwcm9kdWN0aW9uIGRlcGxveXMgbWFya2VkXG4gICAqIGZhaWxlZDsgYHJlc3RvcmVkYCBjb3VudHMgdGhvc2UgdGhhdCByZWNvdmVyZWQ7IGBtZWRpYW5TZWNvbmRzYCBpcyBudWxsIHdoZW5cbiAgICogbm8gcmVzdG9yZWQgaW5jaWRlbnQgaGFzIGEgcmVzb2x2YWJsZSBkZXBsb3kgdGltZS5cbiAgICovXG4gIG1lYW5UaW1lVG9SZXN0b3JlOiB7XG4gICAgaW5jaWRlbnRzOiBudW1iZXI7XG4gICAgcmVzdG9yZWQ6IG51bWJlcjtcbiAgICBtZWRpYW5TZWNvbmRzOiBudW1iZXIgfCBudWxsO1xuICAgIC8qKiA5MHRoLzk1dGggcGVyY2VudGlsZSByZWNvdmVyeSwgb3ZlciB0aGUgc2FtZSBzYW1wbGUgYXMgdGhlIG1lZGlhbi4gVGhlXG4gICAgICogIG1lZGlhbiBhbG9uZSBoaWRlcyB0aGUgbG9uZyB0YWlsIHRoYXQgYWN0dWFsbHkgZGVmaW5lcyBhbiBvdXRhZ2UncyBjb3N0O1xuICAgICAqICBgbnVsbGAgd2hlbiBubyByZWNvdmVyeSBnYXAgd2FzIG9ic2VydmVkLiAqL1xuICAgIHA5MFNlY29uZHM6IG51bWJlciB8IG51bGw7XG4gICAgcDk1U2Vjb25kczogbnVtYmVyIHwgbnVsbDtcbiAgICBsZXZlbDogRG9yYUxldmVsO1xuICB9O1xuICAvKipcbiAgICogQ292ZXJhZ2UgcmVjb25jaWxpYXRpb24g4oCUIHJlZ2lzdGVyZWQgcGlwZWxpbmVzIHdpdGggbm8gb2JzZXJ2ZWQgZGVwbG95IGluXG4gICAqIHRoZSB3aW5kb3cuIEEgaGlnaCBgd2l0aG91dERlcGxveXNgIGNvdW50IG1lYW5zIERPUkEgaXMgYmxpbmQgdG8gbW9zdCBvZiB0aGVcbiAgICogZmxlZXQgKHBpcGVsaW5lcyB0aGF0IGhhdmVuJ3QgcmUtc3ludGhlZCB3aXRoIGRlcGxveSB0YWdzLCBvciBkb24ndCBkZXBsb3kpLlxuICAgKi9cbiAgY292ZXJhZ2U6IHtcbiAgICAvKiogUGlwZWxpbmVzIGluIHRoZSByZWdpc3RyeSAob3JnLXNjb3BlZCkuICovXG4gICAgcmVnaXN0ZXJlZDogbnVtYmVyO1xuICAgIC8qKiBSZWdpc3RlcmVkIHBpcGVsaW5lcyB3aXRoIOKJpTEgZGVwbG95LXN0YWdlIGV4ZWN1dGlvbiBpbiB0aGUgd2luZG93LiAqL1xuICAgIGRlcGxveWluZzogbnVtYmVyO1xuICAgIC8qKiByZWdpc3RlcmVkIOKIkiBkZXBsb3lpbmcgKGNsYW1wZWQg4omlMCkuICovXG4gICAgd2l0aG91dERlcGxveXM6IG51bWJlcjtcbiAgfTtcbn1cblxuLyoqIFBlci1lbnZpcm9ubWVudCBET1JBIG1ldHJpY3MgKGRlcGxveW1lbnQgZnJlcXVlbmN5LCBDRlIsIGxlYWQgdGltZSkuICovXG5leHBvcnQgaW50ZXJmYWNlIERvcmFFbnZNZXRyaWNzIHtcbiAgZW52aXJvbm1lbnQ6IHN0cmluZztcbiAgLyoqIERlcGxveW1lbnQgRnJlcXVlbmN5IOKAlCBzdWNjZXNzZnVsIGRlcGxveS1zdGFnZSBleGVjdXRpb25zIGZvciB0aGlzIGVudi4gKi9cbiAgZGVwbG95bWVudEZyZXF1ZW5jeToge1xuICAgIGRlcGxveW1lbnRzOiBudW1iZXI7XG4gICAgcGVyRGF5OiBudW1iZXI7XG4gICAgbGV2ZWw6IERvcmFMZXZlbDtcbiAgfTtcbiAgLyoqXG4gICAqIENoYW5nZSBGYWlsdXJlIFJhdGUg4oCUIHR3by1jbGFzczpcbiAgICogYChkZXBsb3lUaW1lRmFpbHVyZXMgKyBwb3N0RGVwbG95RmFpbHVyZXMpIC8gYXR0ZW1wdHNgLlxuICAgKiAtIGBkZXBsb3lUaW1lRmFpbHVyZXNgIOKAlCBkZXBsb3kgc3RhZ2UgYHJlc3VsdD1mYWlsZWRgIChmcm9tIGV2ZW50cykuXG4gICAqIC0gYHBvc3REZXBsb3lGYWlsdXJlc2Ag4oCUIGEgc3VjY2Vzc2Z1bCBkZXBsb3kgbGF0ZXIgbWFya2VkIGZhaWxlZCBpbiBwcm9kXG4gICAqICAgKGZyb20gYGRlcGxveW1lbnRfb3V0Y29tZXNgKS5cbiAgICogLSBgYXR0ZW1wdHNgIOKAlCBhbGwgdGVybWluYWwgZGVwbG95LXN0YWdlIGF0dGVtcHRzIChzdWNjZWVkZWQgKyBmYWlsZWQpLlxuICAgKi9cbiAgY2hhbmdlRmFpbHVyZVJhdGU6IHtcbiAgICByYXRlOiBudW1iZXI7XG4gICAgZGVwbG95VGltZUZhaWx1cmVzOiBudW1iZXI7XG4gICAgcG9zdERlcGxveUZhaWx1cmVzOiBudW1iZXI7XG4gICAgYXR0ZW1wdHM6IG51bWJlcjtcbiAgICBsZXZlbDogRG9yYUxldmVsO1xuICB9O1xuICAvKipcbiAgICogTGVhZCBUaW1lIOKAlCBNRUFTVVJFRDogYG1lZGlhbihkZXBsb3lfY29tcGxldGVkIOKIkiBvbGRlc3RfY29tbWl0X3RpbWUpYCBvdmVyXG4gICAqIHN1Y2Nlc3NmdWwgZGVwbG95cyB3aXRoIGEgcmVzb2x2YWJsZSBjb21taXQgdGltZXN0YW1wIChkZWx0YXMgY2xhbXBlZCDiiaUwKS5cbiAgICogYG1lZGlhblNlY29uZHNgIGlzIGBudWxsYCAoPSB1bmtub3duKSB3aGVuIG5vIHN1Y2Nlc3NmdWwgZGVwbG95IGluIHRoaXMgZW52XG4gICAqIGNhcnJpZWQgYSBgY29tbWl0X3RpbWVzdGFtcGAuIFRoZSBvbGQgbWVkaWFuLXJ1bi1kdXJhdGlvbiBwcm94eSBpcyByZW1vdmVkLlxuICAgKlxuICAgKiBgcDkwU2Vjb25kc2AvYHA5NVNlY29uZHNgIGNvbWUgZnJvbSB0aGUgc2FtZSBzYW1wbGUuIFRoZSBsZXZlbCBpcyBzY29yZWQgb2ZmXG4gICAqIHRoZSBNRURJQU4gb25seSwgc28gYWRkaW5nIHRoZSB0YWlscyBjYW5ub3QgbW92ZSBhIHRlYW0ncyBET1JBIGJhbmQuXG4gICAqL1xuICBsZWFkVGltZToge1xuICAgIC8qKiBTdWNjZXNzZnVsIGRlcGxveXMgd2l0aCBhIHJlc29sdmFibGUgY29tbWl0IHRpbWUgKHRoZSBtZWRpYW4gc2FtcGxlKS4gKi9cbiAgICBkZXBsb3ltZW50czogbnVtYmVyO1xuICAgIG1lZGlhblNlY29uZHM6IG51bWJlciB8IG51bGw7XG4gICAgcDkwU2Vjb25kczogbnVtYmVyIHwgbnVsbDtcbiAgICBwOTVTZWNvbmRzOiBudW1iZXIgfCBudWxsO1xuICAgIGxldmVsOiBEb3JhTGV2ZWw7XG4gIH07XG59XG5cbi8qKiBPbmUgaW50ZXJ2YWwgYnVja2V0IG9mIHRoZSBET1JBIHRyZW5kIChkZXBsb3kgZnJlcXVlbmN5ICsgY2hhbmdlIGZhaWx1cmUpLiAqL1xuZXhwb3J0IGludGVyZmFjZSBEb3JhVHJlbmRQb2ludCB7XG4gIC8qKiBCdWNrZXQgc3RhcnQgKERBVEVfVFJVTkMgb2YgdGhlIGRlcGxveSBgY29tcGxldGVkX2F0YCksIElTTyB0ZXh0LiAqL1xuICBwZXJpb2Q6IHN0cmluZztcbiAgLyoqIFN1Y2Nlc3NmdWwgZGVwbG95LXN0YWdlIGV4ZWN1dGlvbnMgaW4gdGhlIGJ1Y2tldC4gKi9cbiAgZGVwbG95bWVudHM6IG51bWJlcjtcbiAgLyoqIEZhaWxlZCBkZXBsb3ktc3RhZ2UgZXhlY3V0aW9ucyBpbiB0aGUgYnVja2V0LiAqL1xuICBmYWlsZWQ6IG51bWJlcjtcbiAgLyoqIHN1Y2NlZWRlZCArIGZhaWxlZCBpbiB0aGUgYnVja2V0IChkZXBsb3kgYXR0ZW1wdHMpLiAqL1xuICB0b3RhbDogbnVtYmVyO1xuICAvKiogZmFpbGVkL3RvdGFsIGFzIGEgcGVyY2VudCAoMCB3aGVuIHRvdGFsIGlzIDApLiBEZXBsb3ktdGltZSBDRlIgb25seS4gKi9cbiAgY2hhbmdlRmFpbHVyZVBjdDogbnVtYmVyO1xufVxuXG4vKiogUGVyLXN0YWdlIGJ1aWxkLWhlYWx0aCBtZXRyaWNzIGZvciBvbmUgcGlwZWxpbmUgb3ZlciBhIHdpbmRvdy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQnVpbGRIZWFsdGhTdGFnZSB7XG4gIHN0YWdlOiBzdHJpbmc7XG4gIC8qKiBUZXJtaW5hbCBzdGFnZSBydW5zIChzdWNjZWVkZWQgKyBmYWlsZWQpIGluIHRoZSB3aW5kb3cuICovXG4gIHJ1bnM6IG51bWJlcjtcbiAgc3VjY2Vzc2VzOiBudW1iZXI7XG4gIGZhaWx1cmVzOiBudW1iZXI7XG4gIC8qKiBzdWNjZXNzZXMgLyBydW5zIGFzIGEgcGVyY2VudCAoMCB3aGVuIHJ1bnMgaXMgMCkuICovXG4gIHN1Y2Nlc3NSYXRlOiBudW1iZXI7XG4gIC8qKiBEdXJhdGlvbiBwZXJjZW50aWxlcyBvdmVyIHRoZSBzdGFnZSdzIHRlcm1pbmFsIHJ1bnM7IG51bGwgd2hlbiBubyBkdXJhdGlvbnMuICovXG4gIHA1ME1zOiBudW1iZXIgfCBudWxsO1xuICBwOTBNczogbnVtYmVyIHwgbnVsbDtcbiAgcDk5TXM6IG51bWJlciB8IG51bGw7XG59XG5cbi8qKlxuICogUGVyLXBpcGVsaW5lIGJ1aWxkLWhlYWx0aCBicmVha2Rvd24uIFN0YW5kYXJkIHJlcG9ydGluZyAoTk9UXG4gKiBgYWR2YW5jZWRfcmVwb3J0aW5nYC1nYXRlZCkg4oCUIHBlci1zdGFnZSBzdWNjZXNzIHJhdGUgKyB0aW1pbmcgcGVyY2VudGlsZXMsIHdpdGhcbiAqIHRvdGFscyBzdW1tZWQgYWNyb3NzIHN0YWdlcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCdWlsZEhlYWx0aCB7XG4gIHN0YWdlczogQnVpbGRIZWFsdGhTdGFnZVtdO1xuICB0b3RhbHM6IHsgcnVuczogbnVtYmVyOyBmYWlsdXJlczogbnVtYmVyOyBmYWlsdXJlUmF0ZTogbnVtYmVyIH07XG59XG5cbi8qKiBQb3N0LWRlcGxveSBpbmNpZGVudCBtYXJrZXIgYWNjZXB0ZWQgYnkgYFJlcG9ydGluZ1NlcnZpY2UucmVjb3JkSW5jaWRlbnRgLiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbmNpZGVudElucHV0IHtcbiAgaW5jaWRlbnRJZDogc3RyaW5nO1xuICBlbnZpcm9ubWVudDogc3RyaW5nO1xuICBvcGVuZWRBdDogc3RyaW5nO1xuICByZXNvbHZlZEF0Pzogc3RyaW5nO1xuICBzZXZlcml0eTogc3RyaW5nO1xufVxuXG4vKiogRXZlbnQgcGF5bG9hZCBhY2NlcHRlZCBieSBgUmVwb3J0aW5nU2VydmljZS5pbmdlc3RFdmVudHNgLiBNaXJyb3JzIHRoZSByb3V0ZSdzIFpvZCBzaGFwZS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW5nZXN0RXZlbnQge1xuICAvKiogU3RhYmxlIHBpcGVsaW5lIGlkIHRoZSBldmVudHMgTGFtYmRhIHJlYWQgZnJvbSB0aGUgYHBiLnBpcGVsaW5lLWlkYFxuICAgKiAgdGFnICg9IHRoZSBwbGF0Zm9ybSBwaXBlbGluZUlkKS4gVGhlIHJlZ2lzdHJ5IGpvaW4ga2V5LiAqL1xuICBwaXBlbGluZUlkOiBzdHJpbmc7XG4gIGV2ZW50U291cmNlOiAnY29kZXBpcGVsaW5lJyB8ICdjb2RlYnVpbGQnIHwgJ3BsdWdpbi1idWlsZCc7XG4gIGV2ZW50VHlwZTogJ1BJUEVMSU5FJyB8ICdTVEFHRScgfCAnQUNUSU9OJyB8ICdCVUlMRCc7XG4gIHN0YXR1czogc3RyaW5nO1xuICBleGVjdXRpb25JZD86IHN0cmluZztcbiAgc3RhZ2VOYW1lPzogc3RyaW5nO1xuICBhY3Rpb25OYW1lPzogc3RyaW5nO1xuICAvKiogSHVtYW4tcmVhZGFibGUgZmFpbHVyZSByZWFzb24gKEFjdGlvbiBldmVudHMpLiAqL1xuICBlcnJvck1lc3NhZ2U/OiBzdHJpbmc7XG4gIHN0YXJ0ZWRBdD86IHN0cmluZztcbiAgY29tcGxldGVkQXQ/OiBzdHJpbmc7XG4gIGR1cmF0aW9uTXM/OiBudW1iZXI7XG4gIC8qKiBTb3VyY2UgY29tbWl0IGlkIG9mIHRoZSBjaGFuZ2UgYmVpbmcgc2hpcHBlZCAoRE9SQSBkZXBsb3kgYXR0cmlidXRpb24pLiAqL1xuICBjb21taXRTaGE/OiBzdHJpbmc7XG4gIC8qKiBTb3VyY2UgcmVmL2JyYW5jaCAoRE9SQSBkZXBsb3kgYXR0cmlidXRpb24pLiAqL1xuICBjb21taXRSZWY/OiBzdHJpbmc7XG4gIC8qKiBEZXBsb3kgdGFyZ2V0IChlLmcuIFwicHJvZHVjdGlvblwiKS4gSXRzIHByZXNlbmNlIG9uIGEgU1RBR0UvQUNUSU9OIGV2ZW50XG4gICAqICBtYXJrcyBhIHJlYWwgZGVwbG95bWVudCAoZGVyaXZlZCBzZXJ2ZXItc2lkZSDigJQgdGhlcmUgaXMgbm8gYGlzRGVwbG95YCkuICovXG4gIGVudmlyb25tZW50Pzogc3RyaW5nO1xuICAvKiogT2xkZXN0IHVuc2hpcHBlZCBjb21taXQgdGltZXN0YW1wIChJU08gODYwMSkgZm9yIG1lYXN1cmVkIGxlYWQgdGltZS4gKi9cbiAgY29tbWl0VGltZXN0YW1wPzogc3RyaW5nO1xuICAvKiogTnVtYmVyIG9mIGNvbW1pdHMgc2hpcHBlZCBpbiB0aGlzIGNoYW5nZSAo4omlMSkuICovXG4gIGNvbW1pdENvdW50PzogbnVtYmVyO1xuICBkZXRhaWw/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbn1cblxuLyoqXG4gKiBQZXItZXZlbnQgbWV0cmljIGRlc2NyaXB0b3IgZW1pdHRlZCAodmlhIHRoZSB7QGxpbmsgUmVwb3J0aW5nU2VydmljZS5pbmdlc3RFdmVudHN9XG4gKiBgb25NZXRyaWNgIGhvb2spIGZvciBlYWNoIFJFR0lTVEVSRUQgdGVybWluYWwgZGVwbG95L3N0YWdlIGV2ZW50LCBzbyB0aGUgcm91dGVcbiAqIGxheWVyIGNhbiBmYW4gdGhlbSBpbnRvIFByb21ldGhldXMgY291bnRlcnMgd2l0aG91dCBwaXBlbGluZS1kYXRhIGltcG9ydGluZ1xuICogYXBpLXNlcnZlcidzIG1ldHJpY3MgcmVnaXN0cnkuIGByZXN1bHRgIGlzIHRoZSB0ZXJtaW5hbCBvdXRjb21lOyBgZW52aXJvbm1lbnRgXG4gKiBpcyBub24tbnVsbCBvbmx5IGZvciBhIGRlcGxveS1zdGFnZSBldmVudC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbmdlc3RNZXRyaWMge1xuICBwaXBlbGluZUlkOiBzdHJpbmc7XG4gIG9yZ0lkOiBzdHJpbmc7XG4gIHN0YWdlOiBzdHJpbmc7XG4gIGVudmlyb25tZW50OiBzdHJpbmcgfCBudWxsO1xuICByZXN1bHQ6ICdzdWNjZWVkZWQnIHwgJ2ZhaWxlZCc7XG59XG5cbi8qKiBDb3VudHMgKyB0aGUgKHBvc3NpYmx5IHRydW5jYXRlZCkgbGlzdCBvZiB1bnJlZ2lzdGVyZWQgcGlwZWxpbmUgaWRzIHRoZSBjYWxsZXIgY2FuIGxvZy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW5nZXN0UmVzdWx0IHtcbiAgaW5zZXJ0ZWQ6IG51bWJlcjtcbiAgc2tpcHBlZDogbnVtYmVyO1xuICB1bnJlZ2lzdGVyZWRQaXBlbGluZUlkczogc3RyaW5nW107XG4gIC8qKlxuICAgKiBFdmVyeSBvcmcgd2l0aCBhdCBsZWFzdCBvbmUgcm93IGluIHRoaXMgYmF0Y2gsIGRlZHVwZWQuXG4gICAqXG4gICAqIEFscmVhZHkgY29tcHV0ZWQgZm9yIHBvc3QtY29tbWl0IGNhY2hlIGludmFsaWRhdGlvbjsgc3VyZmFjZWQgYmVjYXVzZSB0aGVcbiAgICogaW5nZXN0IHJvdXRlIG5lZWRzIHRoZSBzYW1lIHNldCB0byBwdXNoIGl0cyBsaXZlIFNTRSBmcmFtZS4gVGhlIHN0YWdlLW1ldHJpY1xuICAgKiBob29rIGNhbid0IGRyaXZlIHRoYXQgZmFuLW91dDogaXQgb25seSBmaXJlcyBmb3IgU1RBR0UgZXZlbnRzLCBzbyBhIGJhdGNoIG9mXG4gICAqIFBJUEVMSU5FIG9yIEJVSUxEIGV2ZW50cyB3b3VsZCBsYW5kIHJvd3MgYW5kIHB1c2ggbm8gZnJhbWUgYXQgYWxsLlxuICAgKi9cbiAgYWZmZWN0ZWRPcmdzOiBzdHJpbmdbXTtcbiAgLyoqXG4gICAqIEV2ZW50cyBkcm9wcGVkIGJlY2F1c2UgdGhlIHBpcGVsaW5lIHRoZXkgbmFtZSBiZWxvbmdzIHRvIGFuIG9yZyB0aGUgY2FsbGVyXG4gICAqIG1heSBub3Qgd3JpdGUgZm9yLiBTdXJmYWNlZCBzbyB0aGUgcm91dGUgY2FuIGxvZyBhbmQgY291bnQgdGhlbTogYSBub24temVyb1xuICAgKiB2YWx1ZSBpcyBlaXRoZXIgYSBtaXNyb3V0ZWQgcHJvZHVjZXIgb3IgYW4gYXR0ZW1wdCB0byBpbmplY3QgZXZlbnRzIGludG9cbiAgICogYW5vdGhlciB0ZW5hbnQncyByZXBvcnRzLCBhbmQgYm90aCBuZWVkIHRvIGJlIHZpc2libGUuXG4gICAqL1xuICBkcm9wcGVkRm9yZWlnbk9yZzogbnVtYmVyO1xuICAvKipcbiAgICogRXZlbnRzIGRyb3BwZWQgYmVjYXVzZSB0aGVpciB0aW1lc3RhbXBzIGFyZSBpbXBvc3NpYmxlIOKAlCBkYXRlZCBpbiB0aGUgZnV0dXJlLFxuICAgKiBvciBjb21wbGV0aW5nIGJlZm9yZSB0aGV5IHN0YXJ0ZWQuIFJlamVjdGVkIGhlcmUgcmF0aGVyIHRoYW4gY2xhbXBlZCBsYXRlcjpcbiAgICogYSBkZXBsb3kgd2hvc2UgZHVyYXRpb24gb3IgbGVhZCB0aW1lIGlzIG5lZ2F0aXZlIHNpbGVudGx5IHNrZXdzIGRlcGxveW1lbnRcbiAgICogZnJlcXVlbmN5LCBjaGFuZ2UtZmFpbHVyZSByYXRlIGFuZCBsZWFkIHRpbWUgZm9yIHRoZSB3aG9sZSBvcmcsIGFuZCBhIGNsYW1wXG4gICAqIHRvIDAgbWFrZXMgYSBiYWQgY2xvY2sgbG9vayBsaWtlIGFuIGluc3RhbnQgZGVwbG95LlxuICAgKi9cbiAgZHJvcHBlZEludmFsaWRUaW1lOiBudW1iZXI7XG59XG5cbi8qKlxuICogV2hvIGlzIHdyaXRpbmcsIGZvciB0aGUgaW5nZXN0IHRlbmFuY3kgY2hlY2suXG4gKlxuICogYC9yZXBvcnRzL2V2ZW50c2AgcmVzb2x2ZXMgYW4gZXZlbnQncyBvcmcgZnJvbSB0aGUgcGlwZWxpbmUgcmVnaXN0cnksIHNvXG4gKiB3aXRob3V0IHRoaXMgYSB0b2tlbiBob2xkaW5nIGByZXBvcnRpbmc6aW5nZXN0YCBjb3VsZCBwb3N0IGV2ZW50cyBmb3IgQU5ZXG4gKiBwaXBlbGluZSBpZCBhbmQgaGF2ZSB0aGVtIGF0dHJpYnV0ZWQgdG8gdGhhdCBwaXBlbGluZSdzIG9yZyDigJQgb25lIG9yZ1xuICogaW5qZWN0aW5nIHJvd3MgaW50byBhbm90aGVyJ3MgcmVwb3J0cy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbmdlc3RDYWxsZXIge1xuICAvKipcbiAgICogT3JnIGlkcyB0aGlzIGNhbGxlciBtYXkgd3JpdGUgZXZlbnRzIGZvcjogaXRzIG93biwgcGx1cyBkZXNjZW5kYW50IHRlYW1zLlxuICAgKiBSZXNvbHZlZCBieSB0aGUgcm91dGUuIEFuIGV2ZW50IHdob3NlIHBpcGVsaW5lIGJlbG9uZ3MgdG8gYW55dGhpbmcgZWxzZSBpc1xuICAgKiBkcm9wcGVkLlxuICAgKi9cbiAgYWxsb3dlZE9yZ0lkczogcmVhZG9ubHkgc3RyaW5nW107XG4gIC8qKlxuICAgKiBBIHZlcmlmaWVkIElOVEVSTkFMIHNlcnZpY2UgcHJpbmNpcGFsICh0aGUgcGx1Z2luIHNlcnZpY2UgcG9zdHMgcGx1Z2luLWJ1aWxkXG4gICAqIGV2ZW50cyBmb3IgZXZlcnkgdGVuYW50KS4gU3VjaCBjYWxsZXJzIGFyZSBleGVtcHQ6IHRoZXkgaG9sZCBhIHNpZ25lZFxuICAgKiBzZXJ2aWNlIGtleSBubyBleHRlcm5hbCBjbGllbnQgY2FuIG1pbnQsIGFuZCB0aGV5IGxlZ2l0aW1hdGVseSB3cml0ZVxuICAgKiBjcm9zcy10ZW5hbnQuIE5ldmVyIHNldCB0aGlzIGZyb20gYW55dGhpbmcgYSByZXF1ZXN0IGJvZHkgY2FuIGluZmx1ZW5jZS5cbiAgICovXG4gIGNyb3NzVGVuYW50PzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBPbmUgb3JnJ3MgaW5nZXN0aW9uLWhlYWx0aCByb3cgYXMgUkVBRCBiYWNrIGJ5IHRoZSBSZXBvcnRzIFVJLiBUaGVcbiAqIEFXUyBldmVudHMgTGFtYmRhIHdyaXRlcyBpdDsgdGhpcyBpcyB0aGUgc2hhcGUgdGhhdCBsZXRzIHRoZSBVSSB0ZWxsXG4gKiBcImluZ2VzdGlvbiBpcyBoZWFsdGh5LCB0aGVyZSB3ZXJlIHNpbXBseSBubyBkZXBsb3lzIGluIHRoZSByYW5nZVwiIGFwYXJ0IGZyb21cbiAqIFwid2UgaGF2ZW4ndCBoZWFyZCBmcm9tIHRoZSBpbmdlc3QgcGlwZWxpbmUgc2luY2UgWFwiLlxuICpcbiAqIGBudWxsYCBmcm9tIHtAbGluayBSZXBvcnRpbmdTZXJ2aWNlLmdldEluZ2VzdEhlYWx0aH0gbWVhbnMgdGhlIGRlcGxveW1lbnQgaGFzXG4gKiBORVZFUiByZXBvcnRlZCDigJQgbm90IFwic3RhbGVcIi4gVGhlIHR3byBtdXN0IG5vdCBiZSBjb25mbGF0ZWQ6IGEgZnJlc2ggaW5zdGFsbFxuICogKG9yIG9uZSB3aG9zZSBmb3J3YXJkZXIgd2FzIG5ldmVyIHdpcmVkIHVwKSBoYXMgbm8gaGVhcnRiZWF0IGF0IGFsbCwgYW5kXG4gKiBjYWxsaW5nIHRoYXQgXCJzdGFsZVwiIHdvdWxkIGludmVudCBhIHJlZ3Jlc3Npb24gdGhhdCBuZXZlciBoYXBwZW5lZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbmdlc3RIZWFsdGhTdGF0dXMge1xuICAvKiogV2hlbiB0aGUgZm9yd2FyZGVyIGxhc3QgcG9zdGVkIGEgaGVhcnRiZWF0IChpdHMgb3duIGNsb2NrLCBJU08gODYwMSkuICovXG4gIHVwZGF0ZWRBdDogc3RyaW5nO1xuICAvKiogVGltZXN0YW1wIG9mIHRoZSBuZXdlc3QgZXZlbnQgaXQgaGFkIGZvcndhcmRlZCwgb3IgbnVsbCBpZiBpdCBoYXMgc2VlbiBub25lLiAqL1xuICBsYXN0RXZlbnRBdDogc3RyaW5nIHwgbnVsbDtcbiAgLyoqIEN1bXVsYXRpdmUgZXZlbnRzIGZvcndhcmRlZCwgb3IgbnVsbCB3aGVuIHRoZSBmb3J3YXJkZXIgZG9lc24ndCByZXBvcnQgaXQuICovXG4gIGZvcndhcmRlZDogbnVtYmVyIHwgbnVsbDtcbiAgLyoqIEN1bXVsYXRpdmUgZXZlbnRzIERST1BQRUQgKG5vbi16ZXJvIOKHkiBkYXRhIGxvc3MgdXBzdHJlYW0gb2YgdGhlIHJlcG9ydHMpLiAqL1xuICBkcm9wcGVkOiBudW1iZXIgfCBudWxsO1xufVxuXG5cbi8qKlxuICogUmVhZC1vbmx5IHJlcG9ydGluZyBzZXJ2aWNlIGZvciBwaXBlbGluZSBleGVjdXRpb24gYW5kIHBsdWdpbiBpbnZlbnRvcnkgYWdncmVnYXRpb25zLlxuICogRG9lcyBub3QgZXh0ZW5kIENydWRTZXJ2aWNlIOKAlCByZXBvcnRzIGFyZSBhZ2dyZWdhdGUgcXVlcmllcywgbm90IGVudGl0eSBDUlVELlxuICpcbiAqIEFsbCBxdWVyaWVzIGFyZSBjYWNoZWQgaW4tbWVtb3J5IHRvIGF2b2lkIHJlcGVhdGVkIGV4cGVuc2l2ZSBTUUwgYWdncmVnYXRpb25zOlxuICogLSBJbnZlbnRvcnkgcXVlcmllcyAocGx1Z2luIHN1bW1hcnkvZGlzdHJpYnV0aW9uL3ZlcnNpb25zKTogNSBtaW4gVFRMXG4gKiAtIFRpbWVzZXJpZXMgcXVlcmllcyAoZXhlY3V0aW9uL2J1aWxkIG1ldHJpY3Mgd2l0aCBkYXRlIHJhbmdlcyk6IDIgbWluIFRUTFxuICovXG5cbi8qKlxuICogSW50ZXJuYWwgcm93IHNoYXBlcyBmb3IgdGhlIERPUkEgcXVlcmllcy4gRXhwb3J0ZWQgYmVjYXVzZSAuL2RvcmEudHMgY29uc3VtZXNcbiAqIHRoZW07IG5vdCBwYXJ0IG9mIHRoZSBwYWNrYWdlJ3MgcHVibGljIHN1cmZhY2UgKHJlcG9ydGluZy1zZXJ2aWNlLnRzXG4gKiByZS1leHBvcnRzIHRoaXMgbW9kdWxlIHdob2xlc2FsZSwgd2hpY2ggaXMgYSBkZWxpYmVyYXRlIHNpbXBsaWZpY2F0aW9uIOKAlCB0aGVzZVxuICogZGVzY3JpYmUgcXVlcnkgcmVzdWx0cywgbm90IEFQSSBjb250cmFjdHMpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERlcGxveVJvdyB7XG4gIGVudmlyb25tZW50OiBzdHJpbmc7XG4gIHN0YXR1czogJ1NVQ0NFRURFRCcgfCAnRkFJTEVEJyB8IHN0cmluZztcbiAgLyoqIERlcGxveSBleGVjdXRpb24gaWQg4oCUIHRoZSBhdHRyaWJ1dGlvbiBrZXkgZm9yIGRlZHVwIGFnYWluc3Qgb3V0Y29tZXMvaW5jaWRlbnRzLiAqL1xuICBleGVjdXRpb25faWQ6IHN0cmluZyB8IG51bGw7XG4gIGNvbXBsZXRlZF9hdDogc3RyaW5nIHwgbnVsbDtcbiAgY29tbWl0X3RzOiBzdHJpbmcgfCBudWxsO1xuICAvKipcbiAgICogV2hldGhlciB0aGUgZGVwbG95IGNvbXBsZXRlZCBpbnNpZGUgW2Zyb20sdG9dLiBBYnNlbnQgKHVuZGVmaW5lZCkgaW4gdW5pdFxuICAgKiBmaXh0dXJlcyDih5IgdHJlYXRlZCBhcyBpbi13aW5kb3cuIGB0YC9gZmAgdG9sZXJhdGVkIChwZyBib29sZWFuIHRleHQgZm9ybSkuXG4gICAqL1xuICBpbl93aW5kb3c/OiBib29sZWFuIHwgc3RyaW5nIHwgbnVsbDtcbn1cblxuLyoqIFJhdyBwb3N0LWRlcGxveSBvdXRjb21lIG1hcmtlciByb3cgKGZyb20gYGRlcGxveW1lbnRfb3V0Y29tZXNgLCBpbi13aW5kb3cpLiAqL1xuZXhwb3J0IGludGVyZmFjZSBPdXRjb21lUm93IHtcbiAgZW52aXJvbm1lbnQ6IHN0cmluZyB8IG51bGw7XG4gIG91dGNvbWU6ICdmYWlsZWQnIHwgJ3Jlc3RvcmVkJyB8IHN0cmluZztcbiAgLyoqIEV4ZWN1dGlvbiB0aGUgdXNlciBtYXJrZWQg4oCUIGRlZHVwIGtleSBhZ2FpbnN0IGluY2lkZW50LWNvcnJlbGF0ZWQgZGVwbG95cy4gKi9cbiAgZXhlY3V0aW9uX2lkOiBzdHJpbmcgfCBudWxsO1xufVxuXG4vKiogUHJvZHVjdGlvbiByZXN0b3JlZC1pbmNpZGVudCBwYWlyOiByZWNvdmVyeSB0aW1lICsgdGhlIGRlcGxveSdzIGNvbXBsZXRpb24uICovXG5leHBvcnQgaW50ZXJmYWNlIE10dHJQYWlyUm93IHtcbiAgcmVzdG9yZWRfYXQ6IHN0cmluZyB8IG51bGw7XG4gIGRlcGxveWVkX2F0OiBzdHJpbmcgfCBudWxsO1xuICAvKiogRXhlY3V0aW9uIGlkIOKAlCBsZXRzIGluY2lkZW50IHByZWNlZGVuY2Ugb3ZlcnJpZGUgdGhlIG1hbnVhbCBvdXRjb21lIHBlciBkZXBsb3kuICovXG4gIGV4ZWN1dGlvbl9pZDogc3RyaW5nIHwgbnVsbDtcbn1cblxuLyoqXG4gKiBSYXcgaW5jaWRlbnQgcm93IChmcm9tIGBpbmNpZGVudHNgLCBvcGVuZWQgaW4td2luZG93KS4gQ29ycmVsYXRlZCBpbiBKUyB0byB0aGVcbiAqIG1vc3QgcmVjZW50IHN1Y2Nlc3NmdWwgZGVwbG95IHRvIGBlbnZpcm9ubWVudGAgd2l0aGluIERPUkFfSU5DSURFTlRfV0lORE9XX0hPVVJTXG4gKiDihpIgYW4gYXV0b21hdGVkIHBvc3QtZGVwbG95IGZhaWx1cmUgKENGUikgKyByZWFsIHJlY292ZXJ5IHRpbWUgKE1UVFIpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEluY2lkZW50Um93IHtcbiAgZW52aXJvbm1lbnQ6IHN0cmluZztcbiAgb3BlbmVkX2F0OiBzdHJpbmcgfCBudWxsO1xuICByZXNvbHZlZF9hdDogc3RyaW5nIHwgbnVsbDtcbn1cblxuLyoqIENvdmVyYWdlIGNvdW50czogcmVnaXN0ZXJlZCBwaXBlbGluZXMgdnMgdGhvc2UgdGhhdCBhY3R1YWxseSBkZXBsb3llZC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ292ZXJhZ2VSb3cge1xuICByZWdpc3RlcmVkOiBudW1iZXIgfCBzdHJpbmcgfCBudWxsO1xuICBkZXBsb3lpbmc6IG51bWJlciB8IHN0cmluZyB8IG51bGw7XG59XG4iXX0=
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBpL3JlcG9ydGluZy90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8qKlxuICogUHVibGljIHJlc3VsdCBzaGFwZXMgZm9yIHRoZSByZXBvcnRpbmcgc2VydmljZS5cbiAqXG4gKiBTcGxpdCBvdXQgb2YgcmVwb3J0aW5nLXNlcnZpY2UudHMgcHVyZWx5IGZvciBzaXplOiB0aGVzZSBhcmUgZGF0YSBjb250cmFjdHNcbiAqIHdpdGggbm8gYmVoYXZpb3VyLiByZXBvcnRpbmctc2VydmljZS50cyByZS1leHBvcnRzIHRoZW0sIHNvIHRoZVxuICogYEBwaXBlbGluZS1idWlsZGVyL3BpcGVsaW5lLWRhdGFgIHB1YmxpYyBzdXJmYWNlIGlzIHVuY2hhbmdlZC5cbiAqL1xuXG5leHBvcnQgaW50ZXJmYWNlIEV4ZWN1dGlvbkNvdW50IHtcbiAgaWQ6IHN0cmluZztcbiAgcHJvamVjdDogc3RyaW5nO1xuICBvcmdhbml6YXRpb246IHN0cmluZztcbiAgcGlwZWxpbmVOYW1lOiBzdHJpbmcgfCBudWxsO1xuICB0b3RhbDogbnVtYmVyO1xuICBzdWNjZWVkZWQ6IG51bWJlcjtcbiAgZmFpbGVkOiBudW1iZXI7XG4gIGNhbmNlbGVkOiBudW1iZXI7XG4gIGZpcnN0RXhlY3V0aW9uOiBzdHJpbmcgfCBudWxsO1xuICBsYXN0RXhlY3V0aW9uOiBzdHJpbmcgfCBudWxsO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRpbWVTZXJpZXNFbnRyeSB7XG4gIHBlcmlvZDogc3RyaW5nO1xuICBzdWNjZWVkZWQ6IG51bWJlcjtcbiAgZmFpbGVkOiBudW1iZXI7XG4gIGNhbmNlbGVkOiBudW1iZXI7XG4gIHN1Y2Nlc3NQY3Q6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEdXJhdGlvblN0YXRzIHtcbiAgaWQ6IHN0cmluZztcbiAgcHJvamVjdDogc3RyaW5nO1xuICBwaXBlbGluZU5hbWU6IHN0cmluZyB8IG51bGw7XG4gIGF2Z01zOiBudW1iZXI7XG4gIG1pbk1zOiBudW1iZXI7XG4gIG1heE1zOiBudW1iZXI7XG4gIHA5NU1zOiBudW1iZXI7XG4gIGV4ZWN1dGlvbnM6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQaXBlbGluZUV4ZWN1dGlvbiB7XG4gIGV4ZWN1dGlvbklkOiBzdHJpbmc7XG4gIC8qKiBSb2xsZWQtdXAgdGVybWluYWwgc3RhdHVzOiBzdWNjZWVkZWQgfCBmYWlsZWQgfCBjYW5jZWxlZCB8IGluLXByb2dyZXNzLiAqL1xuICBzdGF0dXM6IHN0cmluZztcbiAgc3RhcnRlZEF0OiBzdHJpbmcgfCBudWxsO1xuICBlbmRlZEF0OiBzdHJpbmcgfCBudWxsO1xuICBkdXJhdGlvbk1zOiBudW1iZXIgfCBudWxsO1xuICAvKiogRmlyc3QgZmFpbGluZyBzdGFnZS9hY3Rpb24gZm9yIHRoZSBleGVjdXRpb24gKG51bGwgd2hlbiBpdCBkaWRuJ3QgZmFpbCkuICovXG4gIGZhaWxpbmdTdGFnZTogc3RyaW5nIHwgbnVsbDtcbiAgZmFpbGluZ0FjdGlvbjogc3RyaW5nIHwgbnVsbDtcbiAgLyoqIFRoZSBmaXJzdCBmYWlsdXJlIGRldGFpbCBhbiBldmVudCBvZiB0aGUgZXhlY3V0aW9uIGNhcnJpZWQgKGBkZXRhaWwuZmFpbHVyZWApLCBvciBudWxsLiAqL1xuICBmYWlsdXJlOiB1bmtub3duIHwgbnVsbDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdGFnZUZhaWx1cmUge1xuICBzdGFnZU5hbWU6IHN0cmluZztcbiAgZmFpbHVyZXM6IG51bWJlcjtcbiAgdG90YWw6IG51bWJlcjtcbiAgZmFpbHVyZVBjdDogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN0YWdlQm90dGxlbmVjayB7XG4gIGlkOiBzdHJpbmc7XG4gIHBpcGVsaW5lTmFtZTogc3RyaW5nIHwgbnVsbDtcbiAgc3RhZ2VOYW1lOiBzdHJpbmc7XG4gIGF2Z01zOiBudW1iZXI7XG4gIG1heE1zOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWN0aW9uRmFpbHVyZSB7XG4gIGFjdGlvbk5hbWU6IHN0cmluZztcbiAgZmFpbHVyZXM6IG51bWJlcjtcbiAgdG90YWw6IG51bWJlcjtcbiAgZmFpbHVyZVBjdDogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVycm9yRW50cnkge1xuICBlcnJvclBhdHRlcm46IHN0cmluZztcbiAgb2NjdXJyZW5jZXM6IG51bWJlcjtcbiAgYWZmZWN0ZWRQaXBlbGluZXM6IG51bWJlcjtcbiAgbGFzdFNlZW46IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQbHVnaW5TdW1tYXJ5IHtcbiAgdG90YWw6IG51bWJlcjtcbiAgYWN0aXZlOiBudW1iZXI7XG4gIGluYWN0aXZlOiBudW1iZXI7XG4gIC8qKiBDb3VudHMgcGVyIHNoYXJpbmcgcnVuZyDigJQgb25lIGJ1Y2tldCBwZXIgYHZpc2liaWxpdHlgIHZhbHVlLiAqL1xuICBwdWJsaWM6IG51bWJlcjtcbiAgb3JnOiBudW1iZXI7XG4gIHByaXZhdGU6IG51bWJlcjtcbiAgdW5pcXVlTmFtZXM6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUeXBlQ29tcHV0ZURpc3RyaWJ1dGlvbiB7XG4gIHBsdWdpblR5cGU6IHN0cmluZztcbiAgY29tcHV0ZVR5cGU6IHN0cmluZztcbiAgY291bnQ6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBWZXJzaW9uQ291bnQge1xuICBuYW1lOiBzdHJpbmc7XG4gIHZlcnNpb25Db3VudDogbnVtYmVyO1xuICBsYXRlc3RWZXJzaW9uOiBzdHJpbmc7XG4gIGhhc0RlZmF1bHQ6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnVpbGRUaW1lU2VyaWVzRW50cnkge1xuICBwZXJpb2Q6IHN0cmluZztcbiAgc3VjY2VlZGVkOiBudW1iZXI7XG4gIGZhaWxlZDogbnVtYmVyO1xuICBzdWNjZXNzUGN0OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnVpbGREdXJhdGlvbiB7XG4gIHBsdWdpbk5hbWU6IHN0cmluZztcbiAgYXZnTXM6IG51bWJlcjtcbiAgbWF4TXM6IG51bWJlcjtcbiAgYnVpbGRzOiBudW1iZXI7XG59XG5cbi8qKlxuICogUGx1Z2luIHJ1bnRpbWUgcmVwb3J0IGZpbHRlcnMuIGBwdWJsaXNoZXI6IG51bGxgIHNlbGVjdHMgb3duLW9yZ1xuICogKHB1Ymxpc2hlci1sZXNzKSBwbHVnaW5zOyBhbiBvbWl0dGVkIGZpZWxkIGRvZXNuJ3QgZmlsdGVyLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBsdWdpblJ1bnRpbWVGaWx0ZXIge1xuICBuYW1lPzogc3RyaW5nO1xuICBwdWJsaXNoZXI/OiBzdHJpbmcgfCBudWxsO1xuICB2ZXJzaW9uPzogc3RyaW5nO1xufVxuXG4vKiogUGVyIHBsdWdpbiB2ZXJzaW9uIHJ1bnRpbWUgc3RhdHMgb3ZlciBhIHdpbmRvdyAodGVybWluYWwgQUNUSU9OIHJ1bnMpLiAqL1xuZXhwb3J0IGludGVyZmFjZSBQbHVnaW5SdW50aW1lU3RhdHMge1xuICBwbHVnaW5QdWJsaXNoZXI6IHN0cmluZyB8IG51bGw7XG4gIHBsdWdpbk5hbWU6IHN0cmluZztcbiAgcGx1Z2luVmVyc2lvbjogc3RyaW5nO1xuICBydW5zOiBudW1iZXI7XG4gIHN1Y2NlZWRlZDogbnVtYmVyO1xuICBmYWlsZWQ6IG51bWJlcjtcbiAgLyoqIDDigJMxMDAsIG9uZSBkZWNpbWFsLiAqL1xuICBzdWNjZXNzUGN0OiBudW1iZXI7XG4gIC8qKiBOdWxsIHdoZW4gbm8gcnVuIGluIHRoZSBncm91cCBjYXJyaWVkIGEgZHVyYXRpb24uICovXG4gIHA1ME1zOiBudW1iZXIgfCBudWxsO1xuICBwOTVNczogbnVtYmVyIHwgbnVsbDtcbiAgbGFzdFJ1bjogc3RyaW5nO1xufVxuXG4vKiogQ3Jvc3Mtb3JnIDMwLWRheSBhZ2dyZWdhdGUgZm9yIG9uZSBgKHB1Ymxpc2hlciwgbmFtZSlgIGxpc3RpbmcuICovXG5leHBvcnQgaW50ZXJmYWNlIFBsdWdpblJ1bnRpbWVBZ2dyZWdhdGUge1xuICBydW5zMzBkOiBudW1iZXI7XG4gIC8qKiAw4oCTMTsgbnVsbCB3aGVuIHRoZXJlIHdlcmUgbm8gcnVucy4gKi9cbiAgc3VjY2Vzc1JhdGUzMGQ6IG51bWJlciB8IG51bGw7XG4gIGFjdGl2ZU9yZ0NvdW50MzBkOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnVpbGRGYWlsdXJlIHtcbiAgcGx1Z2luTmFtZTogc3RyaW5nO1xuICBlcnJvck1lc3NhZ2U6IHN0cmluZztcbiAgb2NjdXJyZW5jZXM6IG51bWJlcjtcbiAgbGFzdFNlZW46IHN0cmluZztcbn1cblxuLyoqXG4gKiBUaGUgRE9SQSBoZWFkbGluZSBlbnZpcm9ubWVudC4gRGVwbG95bWVudCB0byB0aGlzIGxpdGVyYWwgZW52IG5hbWUgaXMgdGhlXG4gKiBpbmR1c3RyeS1zdGFuZGFyZCBET1JBIHNpZ25hbDsgTVRUUiBpcyBtZWFzdXJlZCBwcm9kdWN0aW9uLW9ubHksIGFuZCB0aGlzXG4gKiBlbnZpcm9ubWVudCdzIGNhcmQgaXMgdGhlIHN1bW1hcnkgc2hvd24gYXQgdGhlIHRvcCBvZiB0aGUgcGFuZWwuXG4gKi9cblxuLyoqIFBlci1vcmcgcmV0ZW50aW9uIG92ZXJyaWRlIHJvdy4gQm90aCBudWxsYWJsZSDih5IgZ2xvYmFsIGRlZmF1bHRzLiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRpbmdSZXRlbnRpb25TZXR0aW5ncyB7XG4gIGV2ZW50UmV0ZW50aW9uRGF5czogbnVtYmVyIHwgbnVsbDtcbiAgZG9yYVJldGVudGlvbkRheXM6IG51bWJlciB8IG51bGw7XG4gIGRlZmF1bHRFdmVudFJldGVudGlvbkRheXM6IG51bWJlcjtcbiAgZGVmYXVsdERvcmFSZXRlbnRpb25EYXlzOiBudW1iZXI7XG59XG5cbi8qKiBPcHRpb25zIGZvciB0aGUgcmVwb3J0aW5nIHJldGVudGlvbiBzd2VlcC4gKi9cbi8qKlxuICogSG93IGEgdGltZS1idWNrZXRlZCByZXBvcnQgc2xpY2VzIGl0cyBwZXJpb2RzLiBBYnNlbnQgbWVhbnMgVVRDICsgTW9uZGF5LCB3aGljaFxuICogaXMgd2hhdCBldmVyeSBwcmUtdGltZXpvbmUgY2FsbGVyIGdvdCDigJQgc28gYW4gb21pdHRlZCB2YWx1ZSBjYW4gbmV2ZXIgc2lsZW50bHlcbiAqIGNoYW5nZSBhbiBleGlzdGluZyByZXBvcnQncyBib3VuZGFyaWVzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJ1Y2tldE9wdGlvbnMge1xuICAvKiogSUFOQSB0aW1lem9uZSB0aGUgYnVja2V0cyBhcmUgY3V0IGluICh2YWxpZGF0ZWQgYXQgdGhlIHJvdXRlKS4gKi9cbiAgdHo/OiBzdHJpbmc7XG4gIC8qKiBXaGVyZSB0aGUgd2VlayBzdGFydHMuIFBvc3RncmVzIERBVEVfVFJVTkMgaXMgTW9uZGF5LW9ubHksIHNvIGBzdW5kYXlgXG4gICAqICBzaGlmdHMgdGhlIGJvdW5kYXJ5IGV4cGxpY2l0bHkuICovXG4gIHdlZWtTdGFydD86ICdtb25kYXknIHwgJ3N1bmRheSc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0aW5nUmV0ZW50aW9uT3B0aW9ucyB7XG4gIC8qKiBSb3dzIGRlbGV0ZWQgcGVyIHN0YXRlbWVudCAoZGVmYXVsdCAxMDAwKS4gKi9cbiAgYmF0Y2hTaXplPzogbnVtYmVyO1xuICAvKipcbiAgICogVGhlIGxlYWRlci1sb2NrZWQgcnVuIHRoaXMgc3dlZXAgYmVsb25ncyB0by4gQ2hlY2tlZCBCRVRXRUVOIE9SR1M6IGFib3J0ZWRcbiAgICogbWVhbnMgdGhlIGxvY2sgd2FzIGxvc3QgKGFub3RoZXIgcG9kIGlzIHRha2luZyBvdmVyKSBvciB0aGUgcHJvY2VzcyBpc1xuICAgKiBzaHV0dGluZyBkb3duLCBhbmQgdGhlIHJlbWFpbmluZyBvcmdzIGFyZSBwaWNrZWQgdXAgbmV4dCB0aWNrLiBXaXRob3V0IGl0IGFcbiAgICogbG9uZyBzd2VlcCBrZXB0IGRlbGV0aW5nIGFmdGVyIGFub3RoZXIgcG9kIGhhZCBhbHJlYWR5IHRha2VuIHRoZSBsb2NrLlxuICAgKi9cbiAgcnVuPzogeyBzaWduYWw6IEFib3J0U2lnbmFsIH07XG4gIC8qKiBNYXggYmF0Y2hlcyBwZXIgdGFibGUgcGVyIG9yZyBwZXIgdGljayAoZGVmYXVsdCA1MCk7IHRoZSByZXN0IGRlZmVycyB0b1xuICAgKiAgdGhlIG5leHQgdGljayBzbyBhIGh1Z2UgYmFja2xvZyBjYW4ndCBob2xkIGxvY2tzIHRvbyBsb25nLiAqL1xuICBtYXhCYXRjaGVzUGVyVGFibGU/OiBudW1iZXI7XG4gIC8qKiBGaXhlZCBcIm5vd1wiIGZvciB0aGUgd2hvbGUgc3dlZXAgKGRlZmF1bHQgYG5ldyBEYXRlKClgKS4gKi9cbiAgbm93PzogRGF0ZTtcbiAgLyoqXG4gICAqIFJlc29sdmUgdGhlIG9yZyB3aG9zZSBgZG9yYV9zZXR0aW5nc2AgcmV0ZW50aW9uIGdvdmVybnMgYG9yZ0lkYCdzIHJvd3Mg4oCUIGl0c1xuICAgKiBhY2NvdW50IFJPT1QuIFJldGVudGlvbiBpcyBhIGJpbGxpbmcgZW50aXRsZW1lbnQgc3luY2VkIG9udG8gdGhlIHJvb3Qgb25seSxcbiAgICogc28gYSB0ZWFtJ3Mgcm93cyBtdXN0IGZvbGxvdyB0aGUgcm9vdCdzIChwdXJjaGFzZWQpIHdpbmRvdywgbm90IHRoZSBlbnZcbiAgICogZGVmYXVsdC4gUmV0dXJuIGBudWxsYCB3aGVuIHRoZSByb290IGNhbid0IGJlIHJlc29sdmVkOiB0aGF0IG9yZyBpcyBTS0lQUEVEXG4gICAqIHRoaXMgdGljayAobmV2ZXIgcHVyZ2VkIG9uIGEgcG9zc2libHktc2hvcnRlciB3aW5kb3cpLiBEZWZhdWx0OiBpZGVudGl0eVxuICAgKiAoZXZlcnkgb3JnIGlzIGl0cyBvd24gcm9vdCDigJQgYSBmbGF0IGRlcGxveW1lbnQpLlxuICAgKi9cbiAgcmVzb2x2ZVJldGVudGlvbk9yZ0lkPzogKG9yZ0lkOiBzdHJpbmcpID0+IFByb21pc2U8c3RyaW5nIHwgbnVsbD47XG59XG5cbi8qKiBQZXItcnVuIHB1cmdlIHRhbGxpZXMgKGFsc28gbG9nZ2VkKS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0aW5nUmV0ZW50aW9uQ291bnRzIHtcbiAgLyoqIE9yZ3Mgc3dlcHQgdGhpcyBydW4uICovXG4gIG9yZ3M6IG51bWJlcjtcbiAgLyoqIFN0YW5kYXJkIGBwaXBlbGluZV9ldmVudHNgIChlbnZpcm9ubWVudCBJUyBOVUxMKSByb3dzIHB1cmdlZC4gKi9cbiAgc3RhbmRhcmRFdmVudHM6IG51bWJlcjtcbiAgLyoqIERPUkEtc291cmNlIGBwaXBlbGluZV9ldmVudHNgIChlbnZpcm9ubWVudCBJUyBOT1QgTlVMTCkgcm93cyBwdXJnZWQuICovXG4gIGRvcmFFdmVudHM6IG51bWJlcjtcbiAgLyoqIGBkZXBsb3ltZW50X291dGNvbWVzYCByb3dzIHB1cmdlZC4gKi9cbiAgZGVwbG95bWVudE91dGNvbWVzOiBudW1iZXI7XG4gIC8qKiBgaW5jaWRlbnRzYCByb3dzIHB1cmdlZC4gKi9cbiAgaW5jaWRlbnRzOiBudW1iZXI7XG59XG5cbi8qKlxuICogRE9SQSBwZXJmb3JtYW5jZSBiYW5kLiBgbnVsbGAgPSBpbnN1ZmZpY2llbnQgZGF0YSB0byBjbGFzc2lmeSAobm9cbiAqIGRlcGxveW1lbnRzL2ZhaWx1cmVzL2xlYWQtdGltZSBzYW1wbGUgaW4gdGhlIHdpbmRvdyksIHNvIHRoZSBVSSBzaG93cyBhXG4gKiBuZXV0cmFsIHN0YXRlIHJhdGhlciB0aGFuIG1pc2xhYmVsaW5nIGFuIGVtcHR5IHdpbmRvdyBhcyBcImxvd1wiLlxuICovXG5leHBvcnQgdHlwZSBEb3JhTGV2ZWwgPSAnZWxpdGUnIHwgJ2hpZ2gnIHwgJ21lZGl1bScgfCAnbG93JyB8IG51bGw7XG5cbi8qKiBPcHRpb25hbCBzY29waW5nIGZvciB7QGxpbmsgUmVwb3J0aW5nU2VydmljZS5nZXREb3JhTWV0cmljc30uICovXG5leHBvcnQgaW50ZXJmYWNlIERvcmFPcHRpb25zIHtcbiAgLyoqIFJlc3RyaWN0IHRvIGEgc2luZ2xlIHBpcGVsaW5lIChwZXItcGlwZWxpbmUgRE9SQSkuICovXG4gIHBpcGVsaW5lSWQ/OiBzdHJpbmc7XG4gIC8qKiBSZXN0cmljdCB0byBhIHNpbmdsZSBkZXBsb3kgZW52aXJvbm1lbnQgKGVsc2UgYWxsIGRlcGxveSBlbnZpcm9ubWVudHMpLiAqL1xuICBlbnZpcm9ubWVudD86IHN0cmluZztcbiAgLyoqXG4gICAqIFBlci1vcmcgaW5jaWRlbnTihpJkZXBsb3kgY29ycmVsYXRpb24gd2luZG93IG92ZXJyaWRlIChob3VycykuIFdoZW4gc2V0IChhXG4gICAqIHBvc2l0aXZlIGZpbml0ZSBudW1iZXIpLCB0aGUgaW5jaWRlbnQgY29ycmVsYXRpb24gdXNlcyBpdCBpbnN0ZWFkIG9mIHRoZVxuICAgKiBnbG9iYWwgYERPUkFfSU5DSURFTlRfV0lORE9XX0hPVVJTYC4gVGhlIHJvdXRlIHJlc29sdmVzIHRoaXMgZnJvbSB0aGUgb3JnJ3NcbiAgICogYGRvcmFfc2V0dGluZ3NgIHJvdyAoc2VlIHtAbGluayBSZXBvcnRpbmdTZXJ2aWNlLmdldFJlcG9ydGluZ1NldHRpbmdzfSkgYW5kXG4gICAqIHBhc3NlcyBpdCBpbjsgdW5zZXQgZmFsbHMgYmFjayB0byB0aGUgZW52IGRlZmF1bHQuXG4gICAqL1xuICBpbmNpZGVudFdpbmRvd0hvdXJzPzogbnVtYmVyO1xuICAvKiogSUFOQSB0aW1lem9uZSBmb3IgdGhlIHRyZW5kJ3MgYnVja2V0cyAoc2VlIHtAbGluayBCdWNrZXRPcHRpb25zfSkuICovXG4gIHR6Pzogc3RyaW5nO1xuICAvKiogV2VlayBzdGFydCBmb3IgdGhlIHRyZW5kJ3MgYnVja2V0cy4gKi9cbiAgd2Vla1N0YXJ0PzogJ21vbmRheScgfCAnc3VuZGF5Jztcbn1cblxuLyoqXG4gKiBQZXItb3JnIHJlcG9ydGluZyBzZXR0aW5ncyBzdXJmYWNlZCB0byB0aGUgb3JnLWFkbWluIHBhbmVsLiBgaW5jaWRlbnRXaW5kb3dIb3Vyc2BcbiAqIGlzIHRoZSBpbmNpZGVudOKGkmRlcGxveSBjb3JyZWxhdGlvbiB3aW5kb3c7IGBldmVudFJldGVudGlvbkRheXNgIC9cbiAqIGBkb3JhUmV0ZW50aW9uRGF5c2AgYXJlIHRoZSB0d28gcmV0ZW50aW9uLXN3ZWVwIHdpbmRvd3MuIEVhY2ggb3ZlcnJpZGVcbiAqIGlzIGBudWxsYCB3aGVuIHVuc2V0ICh0aGUgcGFpcmVkIGBkZWZhdWx0KmAgZmllbGQgc2hvd3MgdGhlIGVudiBmYWxsYmFjayBhcHBsaWVkKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRpbmdTZXR0aW5ncyB7XG4gIC8qKiBUaGUgb3JnJ3Mgc3RvcmVkIGNvcnJlbGF0aW9uLXdpbmRvdyBvdmVycmlkZSBpbiBob3Vycywgb3IgYG51bGxgIHdoZW4gdW5zZXQuICovXG4gIGluY2lkZW50V2luZG93SG91cnM6IG51bWJlciB8IG51bGw7XG4gIC8qKiBUaGUgZ2xvYmFsIGVudiBkZWZhdWx0IGFwcGxpZWQgd2hlbiBubyBvdmVycmlkZSBpcyBzdG9yZWQuICovXG4gIGRlZmF1bHRXaW5kb3dIb3VyczogbnVtYmVyO1xuICAvKiogU3RhbmRhcmQtZXZlbnQgcmV0ZW50aW9uIG92ZXJyaWRlIGluIGRheXMsIG9yIGBudWxsYCB3aGVuIHVuc2V0LiAqL1xuICBldmVudFJldGVudGlvbkRheXM6IG51bWJlciB8IG51bGw7XG4gIC8qKiBET1JBLXNvdXJjZSByZXRlbnRpb24gb3ZlcnJpZGUgaW4gZGF5cywgb3IgYG51bGxgIHdoZW4gdW5zZXQuICovXG4gIGRvcmFSZXRlbnRpb25EYXlzOiBudW1iZXIgfCBudWxsO1xuICAvKiogR2xvYmFsIHN0YW5kYXJkLWV2ZW50IHJldGVudGlvbiBkZWZhdWx0IGFwcGxpZWQgd2hlbiB1bnNldCAoZGF5cykuICovXG4gIGRlZmF1bHRFdmVudFJldGVudGlvbkRheXM6IG51bWJlcjtcbiAgLyoqIEdsb2JhbCBET1JBLXNvdXJjZSByZXRlbnRpb24gZGVmYXVsdCBhcHBsaWVkIHdoZW4gdW5zZXQgKGRheXMpLiAqL1xuICBkZWZhdWx0RG9yYVJldGVudGlvbkRheXM6IG51bWJlcjtcbn1cblxuLyoqIEEgcGFydGlhbCByZXBvcnRpbmctc2V0dGluZ3Mgd3JpdGUgKDcpLiBPbmx5IHByb3ZpZGVkIGZpZWxkcyBhcmVcbiAqICB1cHNlcnRlZDsgb21pdHRlZCBmaWVsZHMgYXJlIGxlZnQgdW5jaGFuZ2VkIChhbiBvbWl0dGVkIHJldGVudGlvbiBmaWVsZCBrZWVwc1xuICogIGl0cyBzdG9yZWQgb3ZlcnJpZGUgLyB0aGUgZ2xvYmFsIGRlZmF1bHQpLiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRpbmdTZXR0aW5nc1BhdGNoIHtcbiAgaW5jaWRlbnRXaW5kb3dIb3Vycz86IG51bWJlcjtcbiAgZXZlbnRSZXRlbnRpb25EYXlzPzogbnVtYmVyO1xuICBkb3JhUmV0ZW50aW9uRGF5cz86IG51bWJlcjtcbn1cblxuLyoqIE9uZSByb3cgb2YgdGhlIG9yZy1hZG1pbiBpbmNpZGVudHMgbGlzdCAocmVjZW50IGluY2lkZW50cyArIGRlcGxveSBjb3JyZWxhdGlvbikuICovXG5leHBvcnQgaW50ZXJmYWNlIEluY2lkZW50TGlzdEl0ZW0ge1xuICBpbmNpZGVudElkOiBzdHJpbmc7XG4gIGVudmlyb25tZW50OiBzdHJpbmc7XG4gIHNldmVyaXR5OiBzdHJpbmc7XG4gIG9wZW5lZEF0OiBzdHJpbmcgfCBudWxsO1xuICByZXNvbHZlZEF0OiBzdHJpbmcgfCBudWxsO1xuICBjcmVhdGVkQXQ6IHN0cmluZyB8IG51bGw7XG4gIC8qKiBUcnVlIG9uY2UgdGhlIGluY2lkZW50IGhhcyBhIGByZXNvbHZlZF9hdGAuICovXG4gIHJlc29sdmVkOiBib29sZWFuO1xuICAvKiogVGhlIGNvcnJlbGF0ZWQgZGVwbG95IGV4ZWN1dGlvbiBpZCAobW9zdCByZWNlbnQgc3VjY2Vzc2Z1bCBkZXBsb3kgaW4td2luZG93KSwgb3IgbnVsbC4gKi9cbiAgY29ycmVsYXRlZEV4ZWN1dGlvbklkOiBzdHJpbmcgfCBudWxsO1xuICAvKiogVGhhdCBkZXBsb3kncyBjb21wbGV0aW9uIGluc3RhbnQsIG9yIG51bGwgd2hlbiB1bmNvcnJlbGF0ZWQuICovXG4gIGRlcGxveUNvbXBsZXRlZEF0OiBzdHJpbmcgfCBudWxsO1xufVxuXG4vKiogUmVzdWx0IG9mIHRoZSB3aXJpbmctdGVzdCBkcnktcnVuIGNvcnJlbGF0aW9uICh7QGxpbmsgUmVwb3J0aW5nU2VydmljZS50ZXN0SW5jaWRlbnRDb3JyZWxhdGlvbn0pLiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbmNpZGVudFRlc3RSZXN1bHQge1xuICBlbnZpcm9ubWVudDogc3RyaW5nO1xuICAvKiogVGhlIHN5bnRoZXRpYyBpbmNpZGVudCdzIG9wZW5lZEF0IChub3csIElTTykuICovXG4gIG9wZW5lZEF0OiBzdHJpbmc7XG4gIC8qKiBUaGUgZWZmZWN0aXZlIGNvcnJlbGF0aW9uIHdpbmRvdyB1c2VkLiAqL1xuICB3aW5kb3dIb3VyczogbnVtYmVyO1xuICAvKiogV2hldGhlciBhIHJlY2VudCBzdWNjZXNzZnVsIGRlcGxveSB0byBgZW52aXJvbm1lbnRgIGNvcnJlbGF0ZWQuICovXG4gIGNvcnJlbGF0ZWQ6IGJvb2xlYW47XG4gIC8qKiBUaGUgY29ycmVsYXRlZCBkZXBsb3kgZXhlY3V0aW9uIGlkLCBvciBudWxsLiAqL1xuICBleGVjdXRpb25JZDogc3RyaW5nIHwgbnVsbDtcbiAgLyoqIFRoYXQgZGVwbG95J3MgY29tcGxldGlvbiBpbnN0YW50LCBvciBudWxsLiAqL1xuICBkZXBsb3lDb21wbGV0ZWRBdDogc3RyaW5nIHwgbnVsbDtcbn1cblxuLy8gRE9SQSBwZXJmb3JtYW5jZSBiYW5kcyAodGhyZXNob2xkcyBmcm9tIHRoZSBET1JBL0FjY2VsZXJhdGUgcmVwb3J0cykuIEVhY2hcbi8vIGhlbHBlciByZXR1cm5zIGBudWxsYCB3aGVuIHRoZXJlJ3Mgbm8gc2FtcGxlIHRvIGNsYXNzaWZ5LlxuLyoqIERlcGxveW1lbnQgZnJlcXVlbmN5IGJ5IGRlcGxveXMvZGF5OiBlbGl0ZSDiiaUxL2RheSwgaGlnaCDiiaUxL3dlZWssIG1lZGl1bSDiiaUxL21vbnRoLiAqL1xuXG4vKipcbiAqIERPUkEgbWV0cmljcyBvdmVyIGEgW2Zyb20sdG9dIHdpbmRvdywgb3JnLXNjb3BlZCAoc2luZ2xlLW9yZyBvciByb2xsdXAgc3VidHJlZSkuXG4gKlxuICogREVQTE9ZLUJBU0lTIOKAlCBldmVyeSBtZXRyaWMgZGVyaXZlcyBmcm9tIHJlYWwgREVQTE9ZLVNUQUdFIGV4ZWN1dGlvbnMsIGkuZS5cbiAqIGBwaXBlbGluZV9ldmVudHNgIHJvd3Mgd2l0aCBgZXZlbnRfdHlwZT0nU1RBR0UnYCBhbmQgYSBub24tbnVsbCBgZW52aXJvbm1lbnRgXG4gKiAodGhlIGZvcndhcmRlciBzZXRzIGBlbnZpcm9ubWVudGAgb25seSBmb3IgdGhlIHN0YWdlcyBhIHVzZXIgZGVjbGFyZWQgaW5cbiAqIGBwYi5kZXBsb3lzYCkuIEEgQ0ktb25seSBidWlsZC90ZXN0IHBpcGVsaW5lIHdpdGggbm8gZGVwbG95IHN0YWdlIHByb2R1Y2VzIE5PXG4gKiBET1JBIGRhdGEg4oCUIHRoZXJlIGlzIG5vIHJ1bi1iYXNlZCBmYWxsYmFjay4gVGhlIHBhbmVsIGlzIGVtcHR5IHVudGlsIGRlcGxveWVkXG4gKiBwaXBlbGluZXMgcmUtc3ludGggd2l0aCB0aGUgbmV3IGRlcGxveSB0YWdzIGFuZCBzdGFydCBlbWl0dGluZyBkZXBsb3kgZXZlbnRzLlxuICpcbiAqIGBwcm9kdWN0aW9uYCBpcyB0aGUgaGVhZGxpbmUgZW52aXJvbm1lbnQ7IE1UVFIgaXMgbWVhc3VyZWQgcHJvZHVjdGlvbi1vbmx5LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERvcmFNZXRyaWNzIHtcbiAgLyoqIFRoZSBbZnJvbSx0b10gd2luZG93IGVjaG9lZCBiYWNrIChkZXBsb3kgYGNvbXBsZXRlZF9hdGAgcmFuZ2UpLiAqL1xuICB3aW5kb3c6IHsgZnJvbTogc3RyaW5nOyB0bzogc3RyaW5nIH07XG4gIC8qKiBUaGUgc2NvcGluZyBhcHBsaWVkIChlY2hvZWQgZm9yIHRoZSBVSSk7IGBudWxsYCB3aGVuIHVuc2NvcGVkLiAqL1xuICBmaWx0ZXJzOiB7IHBpcGVsaW5lSWQ6IHN0cmluZyB8IG51bGw7IGVudmlyb25tZW50OiBzdHJpbmcgfCBudWxsIH07XG4gIC8qKiBUaGUgaGVhZGxpbmUgZW52aXJvbm1lbnQgbmFtZSAoYHByb2R1Y3Rpb25gKS4gKi9cbiAgaGVhZGxpbmU6IHN0cmluZztcbiAgLyoqIFBlci1lbnZpcm9ubWVudCBERiAvIENGUiAvIGxlYWQgdGltZS4gU29ydGVkIGhlYWRsaW5lLWZpcnN0LCB0aGVuIEHihpJaLiAqL1xuICBlbnZpcm9ubWVudHM6IERvcmFFbnZNZXRyaWNzW107XG4gIC8qKlxuICAgKiBNZWFuIFRpbWUgVG8gUmVzdG9yZSDigJQgUFJPRFVDVElPTi1PTkxZLCBmcm9tIGBkZXBsb3ltZW50X291dGNvbWVzYC5cbiAgICogYG1lZGlhbihyZXN0b3JlZC5hdCDiiJIgZGVwbG95ZWQuY29tcGxldGVkX2F0KWAgb3ZlciByZXN0b3JlZCBwcm9kdWN0aW9uXG4gICAqIGluY2lkZW50cyAoZGVsdGFzIGNsYW1wZWQg4omlMCkuIGBpbmNpZGVudHNgIGNvdW50cyBwcm9kdWN0aW9uIGRlcGxveXMgbWFya2VkXG4gICAqIGZhaWxlZDsgYHJlc3RvcmVkYCBjb3VudHMgdGhvc2UgdGhhdCByZWNvdmVyZWQ7IGBtZWRpYW5TZWNvbmRzYCBpcyBudWxsIHdoZW5cbiAgICogbm8gcmVzdG9yZWQgaW5jaWRlbnQgaGFzIGEgcmVzb2x2YWJsZSBkZXBsb3kgdGltZS5cbiAgICovXG4gIG1lYW5UaW1lVG9SZXN0b3JlOiB7XG4gICAgaW5jaWRlbnRzOiBudW1iZXI7XG4gICAgcmVzdG9yZWQ6IG51bWJlcjtcbiAgICBtZWRpYW5TZWNvbmRzOiBudW1iZXIgfCBudWxsO1xuICAgIC8qKiA5MHRoLzk1dGggcGVyY2VudGlsZSByZWNvdmVyeSwgb3ZlciB0aGUgc2FtZSBzYW1wbGUgYXMgdGhlIG1lZGlhbi4gVGhlXG4gICAgICogIG1lZGlhbiBhbG9uZSBoaWRlcyB0aGUgbG9uZyB0YWlsIHRoYXQgYWN0dWFsbHkgZGVmaW5lcyBhbiBvdXRhZ2UncyBjb3N0O1xuICAgICAqICBgbnVsbGAgd2hlbiBubyByZWNvdmVyeSBnYXAgd2FzIG9ic2VydmVkLiAqL1xuICAgIHA5MFNlY29uZHM6IG51bWJlciB8IG51bGw7XG4gICAgcDk1U2Vjb25kczogbnVtYmVyIHwgbnVsbDtcbiAgICBsZXZlbDogRG9yYUxldmVsO1xuICB9O1xuICAvKipcbiAgICogQ292ZXJhZ2UgcmVjb25jaWxpYXRpb24g4oCUIHJlZ2lzdGVyZWQgcGlwZWxpbmVzIHdpdGggbm8gb2JzZXJ2ZWQgZGVwbG95IGluXG4gICAqIHRoZSB3aW5kb3cuIEEgaGlnaCBgd2l0aG91dERlcGxveXNgIGNvdW50IG1lYW5zIERPUkEgaXMgYmxpbmQgdG8gbW9zdCBvZiB0aGVcbiAgICogZmxlZXQgKHBpcGVsaW5lcyB0aGF0IGhhdmVuJ3QgcmUtc3ludGhlZCB3aXRoIGRlcGxveSB0YWdzLCBvciBkb24ndCBkZXBsb3kpLlxuICAgKi9cbiAgY292ZXJhZ2U6IHtcbiAgICAvKiogUGlwZWxpbmVzIGluIHRoZSByZWdpc3RyeSAob3JnLXNjb3BlZCkuICovXG4gICAgcmVnaXN0ZXJlZDogbnVtYmVyO1xuICAgIC8qKiBSZWdpc3RlcmVkIHBpcGVsaW5lcyB3aXRoIOKJpTEgZGVwbG95LXN0YWdlIGV4ZWN1dGlvbiBpbiB0aGUgd2luZG93LiAqL1xuICAgIGRlcGxveWluZzogbnVtYmVyO1xuICAgIC8qKiByZWdpc3RlcmVkIOKIkiBkZXBsb3lpbmcgKGNsYW1wZWQg4omlMCkuICovXG4gICAgd2l0aG91dERlcGxveXM6IG51bWJlcjtcbiAgfTtcbn1cblxuLyoqIFBlci1lbnZpcm9ubWVudCBET1JBIG1ldHJpY3MgKGRlcGxveW1lbnQgZnJlcXVlbmN5LCBDRlIsIGxlYWQgdGltZSkuICovXG5leHBvcnQgaW50ZXJmYWNlIERvcmFFbnZNZXRyaWNzIHtcbiAgZW52aXJvbm1lbnQ6IHN0cmluZztcbiAgLyoqIERlcGxveW1lbnQgRnJlcXVlbmN5IOKAlCBzdWNjZXNzZnVsIGRlcGxveS1zdGFnZSBleGVjdXRpb25zIGZvciB0aGlzIGVudi4gKi9cbiAgZGVwbG95bWVudEZyZXF1ZW5jeToge1xuICAgIGRlcGxveW1lbnRzOiBudW1iZXI7XG4gICAgcGVyRGF5OiBudW1iZXI7XG4gICAgbGV2ZWw6IERvcmFMZXZlbDtcbiAgfTtcbiAgLyoqXG4gICAqIENoYW5nZSBGYWlsdXJlIFJhdGUg4oCUIHR3by1jbGFzczpcbiAgICogYChkZXBsb3lUaW1lRmFpbHVyZXMgKyBwb3N0RGVwbG95RmFpbHVyZXMpIC8gYXR0ZW1wdHNgLlxuICAgKiAtIGBkZXBsb3lUaW1lRmFpbHVyZXNgIOKAlCBkZXBsb3kgc3RhZ2UgYHJlc3VsdD1mYWlsZWRgIChmcm9tIGV2ZW50cykuXG4gICAqIC0gYHBvc3REZXBsb3lGYWlsdXJlc2Ag4oCUIGEgc3VjY2Vzc2Z1bCBkZXBsb3kgbGF0ZXIgbWFya2VkIGZhaWxlZCBpbiBwcm9kXG4gICAqICAgKGZyb20gYGRlcGxveW1lbnRfb3V0Y29tZXNgKS5cbiAgICogLSBgYXR0ZW1wdHNgIOKAlCBhbGwgdGVybWluYWwgZGVwbG95LXN0YWdlIGF0dGVtcHRzIChzdWNjZWVkZWQgKyBmYWlsZWQpLlxuICAgKi9cbiAgY2hhbmdlRmFpbHVyZVJhdGU6IHtcbiAgICByYXRlOiBudW1iZXI7XG4gICAgZGVwbG95VGltZUZhaWx1cmVzOiBudW1iZXI7XG4gICAgcG9zdERlcGxveUZhaWx1cmVzOiBudW1iZXI7XG4gICAgYXR0ZW1wdHM6IG51bWJlcjtcbiAgICBsZXZlbDogRG9yYUxldmVsO1xuICB9O1xuICAvKipcbiAgICogTGVhZCBUaW1lIOKAlCBNRUFTVVJFRDogYG1lZGlhbihkZXBsb3lfY29tcGxldGVkIOKIkiBvbGRlc3RfY29tbWl0X3RpbWUpYCBvdmVyXG4gICAqIHN1Y2Nlc3NmdWwgZGVwbG95cyB3aXRoIGEgcmVzb2x2YWJsZSBjb21taXQgdGltZXN0YW1wIChkZWx0YXMgY2xhbXBlZCDiiaUwKS5cbiAgICogYG1lZGlhblNlY29uZHNgIGlzIGBudWxsYCAoPSB1bmtub3duKSB3aGVuIG5vIHN1Y2Nlc3NmdWwgZGVwbG95IGluIHRoaXMgZW52XG4gICAqIGNhcnJpZWQgYSBgY29tbWl0X3RpbWVzdGFtcGAuIFRoZSBvbGQgbWVkaWFuLXJ1bi1kdXJhdGlvbiBwcm94eSBpcyByZW1vdmVkLlxuICAgKlxuICAgKiBgcDkwU2Vjb25kc2AvYHA5NVNlY29uZHNgIGNvbWUgZnJvbSB0aGUgc2FtZSBzYW1wbGUuIFRoZSBsZXZlbCBpcyBzY29yZWQgb2ZmXG4gICAqIHRoZSBNRURJQU4gb25seSwgc28gYWRkaW5nIHRoZSB0YWlscyBjYW5ub3QgbW92ZSBhIHRlYW0ncyBET1JBIGJhbmQuXG4gICAqL1xuICBsZWFkVGltZToge1xuICAgIC8qKiBTdWNjZXNzZnVsIGRlcGxveXMgd2l0aCBhIHJlc29sdmFibGUgY29tbWl0IHRpbWUgKHRoZSBtZWRpYW4gc2FtcGxlKS4gKi9cbiAgICBkZXBsb3ltZW50czogbnVtYmVyO1xuICAgIG1lZGlhblNlY29uZHM6IG51bWJlciB8IG51bGw7XG4gICAgcDkwU2Vjb25kczogbnVtYmVyIHwgbnVsbDtcbiAgICBwOTVTZWNvbmRzOiBudW1iZXIgfCBudWxsO1xuICAgIGxldmVsOiBEb3JhTGV2ZWw7XG4gIH07XG59XG5cbi8qKiBPbmUgaW50ZXJ2YWwgYnVja2V0IG9mIHRoZSBET1JBIHRyZW5kIChkZXBsb3kgZnJlcXVlbmN5ICsgY2hhbmdlIGZhaWx1cmUpLiAqL1xuZXhwb3J0IGludGVyZmFjZSBEb3JhVHJlbmRQb2ludCB7XG4gIC8qKiBCdWNrZXQgc3RhcnQgKERBVEVfVFJVTkMgb2YgdGhlIGRlcGxveSBgY29tcGxldGVkX2F0YCksIElTTyB0ZXh0LiAqL1xuICBwZXJpb2Q6IHN0cmluZztcbiAgLyoqIFN1Y2Nlc3NmdWwgZGVwbG95LXN0YWdlIGV4ZWN1dGlvbnMgaW4gdGhlIGJ1Y2tldC4gKi9cbiAgZGVwbG95bWVudHM6IG51bWJlcjtcbiAgLyoqIEZhaWxlZCBkZXBsb3ktc3RhZ2UgZXhlY3V0aW9ucyBpbiB0aGUgYnVja2V0LiAqL1xuICBmYWlsZWQ6IG51bWJlcjtcbiAgLyoqIHN1Y2NlZWRlZCArIGZhaWxlZCBpbiB0aGUgYnVja2V0IChkZXBsb3kgYXR0ZW1wdHMpLiAqL1xuICB0b3RhbDogbnVtYmVyO1xuICAvKiogZmFpbGVkL3RvdGFsIGFzIGEgcGVyY2VudCAoMCB3aGVuIHRvdGFsIGlzIDApLiBEZXBsb3ktdGltZSBDRlIgb25seS4gKi9cbiAgY2hhbmdlRmFpbHVyZVBjdDogbnVtYmVyO1xufVxuXG4vKiogUGVyLXN0YWdlIGJ1aWxkLWhlYWx0aCBtZXRyaWNzIGZvciBvbmUgcGlwZWxpbmUgb3ZlciBhIHdpbmRvdy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQnVpbGRIZWFsdGhTdGFnZSB7XG4gIHN0YWdlOiBzdHJpbmc7XG4gIC8qKiBUZXJtaW5hbCBzdGFnZSBydW5zIChzdWNjZWVkZWQgKyBmYWlsZWQpIGluIHRoZSB3aW5kb3cuICovXG4gIHJ1bnM6IG51bWJlcjtcbiAgc3VjY2Vzc2VzOiBudW1iZXI7XG4gIGZhaWx1cmVzOiBudW1iZXI7XG4gIC8qKiBzdWNjZXNzZXMgLyBydW5zIGFzIGEgcGVyY2VudCAoMCB3aGVuIHJ1bnMgaXMgMCkuICovXG4gIHN1Y2Nlc3NSYXRlOiBudW1iZXI7XG4gIC8qKiBEdXJhdGlvbiBwZXJjZW50aWxlcyBvdmVyIHRoZSBzdGFnZSdzIHRlcm1pbmFsIHJ1bnM7IG51bGwgd2hlbiBubyBkdXJhdGlvbnMuICovXG4gIHA1ME1zOiBudW1iZXIgfCBudWxsO1xuICBwOTBNczogbnVtYmVyIHwgbnVsbDtcbiAgcDk5TXM6IG51bWJlciB8IG51bGw7XG59XG5cbi8qKlxuICogUGVyLXBpcGVsaW5lIGJ1aWxkLWhlYWx0aCBicmVha2Rvd24uIFN0YW5kYXJkIHJlcG9ydGluZyAoTk9UXG4gKiBgYWR2YW5jZWRfcmVwb3J0aW5nYC1nYXRlZCkg4oCUIHBlci1zdGFnZSBzdWNjZXNzIHJhdGUgKyB0aW1pbmcgcGVyY2VudGlsZXMsIHdpdGhcbiAqIHRvdGFscyBzdW1tZWQgYWNyb3NzIHN0YWdlcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCdWlsZEhlYWx0aCB7XG4gIHN0YWdlczogQnVpbGRIZWFsdGhTdGFnZVtdO1xuICB0b3RhbHM6IHsgcnVuczogbnVtYmVyOyBmYWlsdXJlczogbnVtYmVyOyBmYWlsdXJlUmF0ZTogbnVtYmVyIH07XG59XG5cbi8qKiBQb3N0LWRlcGxveSBpbmNpZGVudCBtYXJrZXIgYWNjZXB0ZWQgYnkgYFJlcG9ydGluZ1NlcnZpY2UucmVjb3JkSW5jaWRlbnRgLiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbmNpZGVudElucHV0IHtcbiAgaW5jaWRlbnRJZDogc3RyaW5nO1xuICBlbnZpcm9ubWVudDogc3RyaW5nO1xuICBvcGVuZWRBdDogc3RyaW5nO1xuICByZXNvbHZlZEF0Pzogc3RyaW5nO1xuICBzZXZlcml0eTogc3RyaW5nO1xufVxuXG4vKiogVGhlIHBlcnNpc3RlZCBpbmNpZGVudCBzdGF0ZSBhcyBhbiBhdWRpdCByb3cgcmVjb3JkcyBpdCAoc2NydWJiZWQgdmFsdWVzLCBJU08gaW5zdGFudHMpLiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbmNpZGVudFN0YXRlIHtcbiAgZW52aXJvbm1lbnQ6IHN0cmluZztcbiAgb3BlbmVkQXQ6IHN0cmluZyB8IG51bGw7XG4gIHJlc29sdmVkQXQ6IHN0cmluZyB8IG51bGw7XG4gIHNldmVyaXR5OiBzdHJpbmc7XG59XG5cbi8qKlxuICogV2hhdCBgUmVwb3J0aW5nU2VydmljZS5yZWNvcmRJbmNpZGVudGAgZGlkLiBgY2hhbmdlZGAgaXMgZmFsc2UgZm9yIGEgc2VuZGVyJ3NcbiAqIHJlcGVhdC1pbnRlcnZhbCByZS1wb3N0IG9mIGFuIHVuY2hhbmdlZCBhbGVydCwgc28gdGhlIHJvdXRlIHJlY29yZHMgYW4gYXVkaXRcbiAqIHJvdyBvbmx5IGZvciBhbiBpbmNpZGVudCB0aGF0IGlzIG5ldyBvciBhY3R1YWxseSBtb3ZlZCAob3BlbmVkLCByZS1vcGVuZWQsXG4gKiByZXNvbHZlZCwgcmUtcmFua2VkKSDigJQgYSB3ZWJob29rIHJlLWZpcmluZyBldmVyeSBmZXcgaG91cnMgbXVzdCBub3QgYnVyeSB0aGVcbiAqIHRyYWlsLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEluY2lkZW50V3JpdGUge1xuICAvKiogVGhlIHN0b3JlZCAoc2NydWJiZWQpIGluY2lkZW50IGlkLiAqL1xuICBpbmNpZGVudElkOiBzdHJpbmc7XG4gIGNyZWF0ZWQ6IGJvb2xlYW47XG4gIGNoYW5nZWQ6IGJvb2xlYW47XG4gIGJlZm9yZTogSW5jaWRlbnRTdGF0ZSB8IG51bGw7XG4gIGFmdGVyOiBJbmNpZGVudFN0YXRlO1xufVxuXG4vKiogV2hhdCBgUmVwb3J0aW5nU2VydmljZS5yZWNvcmREZXBsb3ltZW50T3V0Y29tZWAgcmVwbGFjZWQ6IHRoZSBwcmlvciBtYXJrZXIgb2YgdGhlIHNhbWUgb3V0Y29tZSwgaWYgYW55LiAqL1xuZXhwb3J0IGludGVyZmFjZSBEZXBsb3ltZW50T3V0Y29tZVdyaXRlIHtcbiAgcHJldmlvdXM6IHsgYXQ6IHN0cmluZyB8IG51bGw7IGVudmlyb25tZW50OiBzdHJpbmcgfCBudWxsIH0gfCBudWxsO1xufVxuXG4vKiogRXZlbnQgcGF5bG9hZCBhY2NlcHRlZCBieSBgUmVwb3J0aW5nU2VydmljZS5pbmdlc3RFdmVudHNgLiBNaXJyb3JzIHRoZSByb3V0ZSdzIFpvZCBzaGFwZS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW5nZXN0RXZlbnQge1xuICAvKiogU3RhYmxlIHBpcGVsaW5lIGlkIHRoZSBldmVudHMgTGFtYmRhIHJlYWQgZnJvbSB0aGUgYHBiLnBpcGVsaW5lLWlkYFxuICAgKiAgdGFnICg9IHRoZSBwbGF0Zm9ybSBwaXBlbGluZUlkKS4gVGhlIHJlZ2lzdHJ5IGpvaW4ga2V5LiAqL1xuICBwaXBlbGluZUlkOiBzdHJpbmc7XG4gIGV2ZW50U291cmNlOiAnY29kZXBpcGVsaW5lJyB8ICdjb2RlYnVpbGQnIHwgJ3BsdWdpbi1idWlsZCc7XG4gIGV2ZW50VHlwZTogJ1BJUEVMSU5FJyB8ICdTVEFHRScgfCAnQUNUSU9OJyB8ICdCVUlMRCc7XG4gIHN0YXR1czogc3RyaW5nO1xuICBleGVjdXRpb25JZD86IHN0cmluZztcbiAgc3RhZ2VOYW1lPzogc3RyaW5nO1xuICBhY3Rpb25OYW1lPzogc3RyaW5nO1xuICAvKiogSHVtYW4tcmVhZGFibGUgZmFpbHVyZSByZWFzb24gKEFjdGlvbiBldmVudHMpLiAqL1xuICBlcnJvck1lc3NhZ2U/OiBzdHJpbmc7XG4gIHN0YXJ0ZWRBdD86IHN0cmluZztcbiAgY29tcGxldGVkQXQ/OiBzdHJpbmc7XG4gIGR1cmF0aW9uTXM/OiBudW1iZXI7XG4gIC8qKiBTb3VyY2UgY29tbWl0IGlkIG9mIHRoZSBjaGFuZ2UgYmVpbmcgc2hpcHBlZCAoRE9SQSBkZXBsb3kgYXR0cmlidXRpb24pLiAqL1xuICBjb21taXRTaGE/OiBzdHJpbmc7XG4gIC8qKiBTb3VyY2UgcmVmL2JyYW5jaCAoRE9SQSBkZXBsb3kgYXR0cmlidXRpb24pLiAqL1xuICBjb21taXRSZWY/OiBzdHJpbmc7XG4gIC8qKiBEZXBsb3kgdGFyZ2V0IChlLmcuIFwicHJvZHVjdGlvblwiKS4gSXRzIHByZXNlbmNlIG9uIGEgU1RBR0UvQUNUSU9OIGV2ZW50XG4gICAqICBtYXJrcyBhIHJlYWwgZGVwbG95bWVudCAoZGVyaXZlZCBzZXJ2ZXItc2lkZSDigJQgdGhlcmUgaXMgbm8gYGlzRGVwbG95YCkuICovXG4gIGVudmlyb25tZW50Pzogc3RyaW5nO1xuICAvKiogT2xkZXN0IHVuc2hpcHBlZCBjb21taXQgdGltZXN0YW1wIChJU08gODYwMSkgZm9yIG1lYXN1cmVkIGxlYWQgdGltZS4gKi9cbiAgY29tbWl0VGltZXN0YW1wPzogc3RyaW5nO1xuICAvKiogTnVtYmVyIG9mIGNvbW1pdHMgc2hpcHBlZCBpbiB0aGlzIGNoYW5nZSAo4omlMSkuICovXG4gIGNvbW1pdENvdW50PzogbnVtYmVyO1xuICAvKipcbiAgICogVGhlIEV2ZW50QnJpZGdlIGV2ZW50IGBpZGAgdGhlIGZvcndhcmRlciByZWNlaXZlZCB0aGlzIHN0YXRlIGNoYW5nZSBhcy5cbiAgICogQVdTLWFzc2lnbmVkIGFuZCB1bmlxdWUgcGVyIGRlbGl2ZXJ5IHNvdXJjZSBldmVudCwgc28gaXQgaXMgdGhlIHN0cm9uZ2VzdFxuICAgKiBkZWR1cCBrZXkgdGhlcmUgaXMgKGBldmVudF9zb3VyY2VfZXZlbnRfaWR4YCkgYW5kIHRoZSB0aHJlYWQgYW4gYXVkaXQgb3JcbiAgICogRE9SQSByb3cgZm9sbG93cyBiYWNrIHRvIHRoZSBleGFjdCBBV1MgZXZlbnQuIEFic2VudCBmb3IgcGx1Z2luLWJ1aWxkXG4gICAqIGV2ZW50cywgd2hpY2ggaGF2ZSBubyBFdmVudEJyaWRnZSBvcmlnaW4uXG4gICAqL1xuICBzb3VyY2VFdmVudElkPzogc3RyaW5nO1xuICAvKiogVGhlIFNRUyBtZXNzYWdlIGlkIGl0IGFycml2ZWQgaW4gKGZvbGRlZCBpbnRvIGBkZXRhaWwuc291cmNlTWVzc2FnZUlkYDsgbm90IGEgY29sdW1uKS4gKi9cbiAgc291cmNlTWVzc2FnZUlkPzogc3RyaW5nO1xuICBkZXRhaWw/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbn1cblxuLyoqXG4gKiBQZXItZXZlbnQgbWV0cmljIGRlc2NyaXB0b3IgZW1pdHRlZCAodmlhIHRoZSB7QGxpbmsgUmVwb3J0aW5nU2VydmljZS5pbmdlc3RFdmVudHN9XG4gKiBgb25NZXRyaWNgIGhvb2spIGZvciBlYWNoIFJFR0lTVEVSRUQgdGVybWluYWwgZGVwbG95L3N0YWdlIGV2ZW50LCBzbyB0aGUgcm91dGVcbiAqIGxheWVyIGNhbiBmYW4gdGhlbSBpbnRvIFByb21ldGhldXMgY291bnRlcnMgd2l0aG91dCBwaXBlbGluZS1kYXRhIGltcG9ydGluZ1xuICogYXBpLXNlcnZlcidzIG1ldHJpY3MgcmVnaXN0cnkuIGByZXN1bHRgIGlzIHRoZSB0ZXJtaW5hbCBvdXRjb21lOyBgZW52aXJvbm1lbnRgXG4gKiBpcyBub24tbnVsbCBvbmx5IGZvciBhIGRlcGxveS1zdGFnZSBldmVudC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdGFnZUluZ2VzdE1ldHJpYyB7XG4gIGtpbmQ6ICdzdGFnZSc7XG4gIHBpcGVsaW5lSWQ6IHN0cmluZztcbiAgb3JnSWQ6IHN0cmluZztcbiAgc3RhZ2U6IHN0cmluZztcbiAgZW52aXJvbm1lbnQ6IHN0cmluZyB8IG51bGw7XG4gIHJlc3VsdDogJ3N1Y2NlZWRlZCcgfCAnZmFpbGVkJztcbn1cblxuLyoqXG4gKiBPbmUgdGVybWluYWwgQ29kZUJ1aWxkIEFDVElPTidzIGNvbXB1dGUgY29uc3VtcHRpb24gKFBoYXNlIDQsIG1lYXN1cmVtZW50XG4gKiBoYWxmKS5cbiAqXG4gKiBgY3JlZGl0c2AgaXMgTlVMTCByYXRoZXIgdGhhbiAwIHdoZW4gdGhlIGFjdGlvbiBjb3VsZCBub3QgYmUgbWVhc3VyZWQg4oCUIG5vXG4gKiBkZWNsYXJlZCBzdGFydCB0aW1lLCBvciBhIGNvbXB1dGUgc2l6ZSB0aGUgZm9yd2FyZGVyIGNvdWxkIG5vdCByZWFkLiBUaGVcbiAqIGRpc3RpbmN0aW9uIGlzIHRoZSB3aG9sZSB2YWx1ZSBvZiB0aGlzIG1ldHJpYzogemVybyB3b3VsZCBtYWtlIGEgY292ZXJhZ2UgZ2FwXG4gKiBsb29rIGxpa2UgaWRsZW5lc3MsIGFuZCBhIHRpZXIgbGFkZGVyIHJlLWRlcml2ZWQgYWdhaW5zdCBhbiB1bmtub3duXG4gKiBkZW5vbWluYXRvciBpcyBhIHJlcHJpY2luZyBub2JvZHkgY2FuIGRlZmVuZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb21wdXRlSW5nZXN0TWV0cmljIHtcbiAga2luZDogJ2NvbXB1dGUnO1xuICBwaXBlbGluZUlkOiBzdHJpbmc7XG4gIG9yZ0lkOiBzdHJpbmc7XG4gIGNvbXB1dGVUeXBlOiBzdHJpbmcgfCBudWxsO1xuICBkdXJhdGlvbk1zOiBudW1iZXIgfCBudWxsO1xuICBjcmVkaXRzOiBudW1iZXIgfCBudWxsO1xufVxuXG4vKiogV2hhdCB0aGUgaW5nZXN0IGZhbnMgb3V0IHRvIGl0cyBjYWxsZXIncyBtZXRyaWMgcmVnaXN0cnkuIERpc2NyaW1pbmF0ZWQsIHNvXG4gKiAgYSBuZXcga2luZCBjYW5ub3QgYmUgc2lsZW50bHkgY291bnRlZCBhcyBhIHN0YWdlIG91dGNvbWUuICovXG5leHBvcnQgdHlwZSBJbmdlc3RNZXRyaWMgPSBTdGFnZUluZ2VzdE1ldHJpYyB8IENvbXB1dGVJbmdlc3RNZXRyaWM7XG5cbi8qKiBDb3VudHMgKyB0aGUgKHBvc3NpYmx5IHRydW5jYXRlZCkgbGlzdCBvZiB1bnJlZ2lzdGVyZWQgcGlwZWxpbmUgaWRzIHRoZSBjYWxsZXIgY2FuIGxvZy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW5nZXN0UmVzdWx0IHtcbiAgaW5zZXJ0ZWQ6IG51bWJlcjtcbiAgc2tpcHBlZDogbnVtYmVyO1xuICB1bnJlZ2lzdGVyZWRQaXBlbGluZUlkczogc3RyaW5nW107XG4gIC8qKlxuICAgKiBFdmVyeSBvcmcgd2l0aCBhdCBsZWFzdCBvbmUgcm93IGluIHRoaXMgYmF0Y2gsIGRlZHVwZWQuXG4gICAqXG4gICAqIEFscmVhZHkgY29tcHV0ZWQgZm9yIHBvc3QtY29tbWl0IGNhY2hlIGludmFsaWRhdGlvbjsgc3VyZmFjZWQgYmVjYXVzZSB0aGVcbiAgICogaW5nZXN0IHJvdXRlIG5lZWRzIHRoZSBzYW1lIHNldCB0byBwdXNoIGl0cyBsaXZlIFNTRSBmcmFtZS4gVGhlIHN0YWdlLW1ldHJpY1xuICAgKiBob29rIGNhbid0IGRyaXZlIHRoYXQgZmFuLW91dDogaXQgb25seSBmaXJlcyBmb3IgU1RBR0UgZXZlbnRzLCBzbyBhIGJhdGNoIG9mXG4gICAqIFBJUEVMSU5FIG9yIEJVSUxEIGV2ZW50cyB3b3VsZCBsYW5kIHJvd3MgYW5kIHB1c2ggbm8gZnJhbWUgYXQgYWxsLlxuICAgKi9cbiAgYWZmZWN0ZWRPcmdzOiBzdHJpbmdbXTtcbiAgLyoqXG4gICAqIEV2ZW50cyBkcm9wcGVkIGJlY2F1c2UgdGhlIHBpcGVsaW5lIHRoZXkgbmFtZSBiZWxvbmdzIHRvIGFuIG9yZyB0aGUgY2FsbGVyXG4gICAqIG1heSBub3Qgd3JpdGUgZm9yLiBTdXJmYWNlZCBzbyB0aGUgcm91dGUgY2FuIGxvZyBhbmQgY291bnQgdGhlbTogYSBub24temVyb1xuICAgKiB2YWx1ZSBpcyBlaXRoZXIgYSBtaXNyb3V0ZWQgcHJvZHVjZXIgb3IgYW4gYXR0ZW1wdCB0byBpbmplY3QgZXZlbnRzIGludG9cbiAgICogYW5vdGhlciB0ZW5hbnQncyByZXBvcnRzLCBhbmQgYm90aCBuZWVkIHRvIGJlIHZpc2libGUuXG4gICAqL1xuICBkcm9wcGVkRm9yZWlnbk9yZzogbnVtYmVyO1xuICAvKipcbiAgICogRXZlbnRzIGRyb3BwZWQgYmVjYXVzZSB0aGVpciB0aW1lc3RhbXBzIGFyZSBpbXBvc3NpYmxlIOKAlCBkYXRlZCBpbiB0aGUgZnV0dXJlLFxuICAgKiBvciBjb21wbGV0aW5nIGJlZm9yZSB0aGV5IHN0YXJ0ZWQuIFJlamVjdGVkIGhlcmUgcmF0aGVyIHRoYW4gY2xhbXBlZCBsYXRlcjpcbiAgICogYSBkZXBsb3kgd2hvc2UgZHVyYXRpb24gb3IgbGVhZCB0aW1lIGlzIG5lZ2F0aXZlIHNpbGVudGx5IHNrZXdzIGRlcGxveW1lbnRcbiAgICogZnJlcXVlbmN5LCBjaGFuZ2UtZmFpbHVyZSByYXRlIGFuZCBsZWFkIHRpbWUgZm9yIHRoZSB3aG9sZSBvcmcsIGFuZCBhIGNsYW1wXG4gICAqIHRvIDAgbWFrZXMgYSBiYWQgY2xvY2sgbG9vayBsaWtlIGFuIGluc3RhbnQgZGVwbG95LlxuICAgKi9cbiAgZHJvcHBlZEludmFsaWRUaW1lOiBudW1iZXI7XG4gIC8qKlxuICAgKiBUaGUgcmVnaXN0ZXJlZCBwaXBlbGluZSBpZHMgd2hvc2UgZXZlbnRzIHdlcmUgZHJvcHBlZCBhcyBGT1JFSUdOLU9SRyDigJQgdGhlXG4gICAqIHRlbmFuY3kgcmVmdXNhbCB0aGUgcm91dGUgYXVkaXRzIGFzIGEgZmFpbHVyZS4gSWRzIG9ubHkgKG5ldmVyIHRoZSBvcmcgdGhleVxuICAgKiByZXNvbHZlZCB0bzogdGhhdCB3b3VsZCB0ZWxsIGEgcHJvYmVyIHdoaWNoIHRlbmFudCBvd25zIHRoZSBwaXBlbGluZSkuXG4gICAqL1xuICBmb3JlaWduUGlwZWxpbmVJZHM6IHN0cmluZ1tdO1xuICAvKiogRGlzdGluY3QgZXhlY3V0aW9uIGlkcyBvZiB0aGUgcm93cyB0aGF0IGFjdHVhbGx5IGxhbmRlZCAodGhlIGF1ZGl0J3MgY29ycmVsYXRpb24gc2V0KS4gKi9cbiAgaW5zZXJ0ZWRFeGVjdXRpb25JZHM6IHN0cmluZ1tdO1xuICAvKiogRGlzdGluY3QgcGlwZWxpbmUgaWRzIG9mIHRoZSByb3dzIHRoYXQgYWN0dWFsbHkgbGFuZGVkLiAqL1xuICBpbnNlcnRlZFBpcGVsaW5lSWRzOiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBXaG8gaXMgd3JpdGluZywgZm9yIHRoZSBpbmdlc3QgdGVuYW5jeSBjaGVjay5cbiAqXG4gKiBgL3JlcG9ydHMvZXZlbnRzYCByZXNvbHZlcyBhbiBldmVudCdzIG9yZyBmcm9tIHRoZSBwaXBlbGluZSByZWdpc3RyeSwgc29cbiAqIHdpdGhvdXQgdGhpcyBhIHRva2VuIGhvbGRpbmcgYHJlcG9ydGluZzppbmdlc3RgIGNvdWxkIHBvc3QgZXZlbnRzIGZvciBBTllcbiAqIHBpcGVsaW5lIGlkIGFuZCBoYXZlIHRoZW0gYXR0cmlidXRlZCB0byB0aGF0IHBpcGVsaW5lJ3Mgb3JnIOKAlCBvbmUgb3JnXG4gKiBpbmplY3Rpbmcgcm93cyBpbnRvIGFub3RoZXIncyByZXBvcnRzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEluZ2VzdENhbGxlciB7XG4gIC8qKlxuICAgKiBPcmcgaWRzIHRoaXMgY2FsbGVyIG1heSB3cml0ZSBldmVudHMgZm9yOiBpdHMgb3duLCBwbHVzIGRlc2NlbmRhbnQgdGVhbXMuXG4gICAqIFJlc29sdmVkIGJ5IHRoZSByb3V0ZS4gQW4gZXZlbnQgd2hvc2UgcGlwZWxpbmUgYmVsb25ncyB0byBhbnl0aGluZyBlbHNlIGlzXG4gICAqIGRyb3BwZWQuXG4gICAqL1xuICBhbGxvd2VkT3JnSWRzOiByZWFkb25seSBzdHJpbmdbXTtcbiAgLyoqXG4gICAqIEEgdmVyaWZpZWQgSU5URVJOQUwgc2VydmljZSBwcmluY2lwYWwgKHRoZSBwbHVnaW4gc2VydmljZSBwb3N0cyBwbHVnaW4tYnVpbGRcbiAgICogZXZlbnRzIGZvciBldmVyeSB0ZW5hbnQpLiBTdWNoIGNhbGxlcnMgYXJlIGV4ZW1wdDogdGhleSBob2xkIGEgc2lnbmVkXG4gICAqIHNlcnZpY2Uga2V5IG5vIGV4dGVybmFsIGNsaWVudCBjYW4gbWludCwgYW5kIHRoZXkgbGVnaXRpbWF0ZWx5IHdyaXRlXG4gICAqIGNyb3NzLXRlbmFudC4gTmV2ZXIgc2V0IHRoaXMgZnJvbSBhbnl0aGluZyBhIHJlcXVlc3QgYm9keSBjYW4gaW5mbHVlbmNlLlxuICAgKi9cbiAgY3Jvc3NUZW5hbnQ/OiBib29sZWFuO1xuICAvKipcbiAgICogVGhlIGFjY2VzcyBrZXkgKHNlcnZpY2UtYWNjb3VudCAvIFBBVCBrZXkgaWQpIHRoZSBpbmdlc3QgdG9rZW4gd2FzIGV4Y2hhbmdlZFxuICAgKiBmcm9tLCBzdGFtcGVkIG9uIGV2ZXJ5IHJvdyBhcyBgaW5nZXN0X2tleV9pZGAgc28gYSBmb3JnZWQgb3IgbWlzcm91dGVkIHJvd1xuICAgKiBuYW1lcyB0aGUgY3JlZGVudGlhbCB0aGF0IHdyb3RlIGl0LiBBIGtleSBJRCwgbmV2ZXIgdGhlIHNlY3JldC5cbiAgICovXG4gIGtleUlkPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIE9uZSBvcmcncyBpbmdlc3Rpb24taGVhbHRoIHJvdyBhcyBSRUFEIGJhY2sgYnkgdGhlIFJlcG9ydHMgVUkuIFRoZVxuICogQVdTIGV2ZW50cyBMYW1iZGEgd3JpdGVzIGl0OyB0aGlzIGlzIHRoZSBzaGFwZSB0aGF0IGxldHMgdGhlIFVJIHRlbGxcbiAqIFwiaW5nZXN0aW9uIGlzIGhlYWx0aHksIHRoZXJlIHdlcmUgc2ltcGx5IG5vIGRlcGxveXMgaW4gdGhlIHJhbmdlXCIgYXBhcnQgZnJvbVxuICogXCJ3ZSBoYXZlbid0IGhlYXJkIGZyb20gdGhlIGluZ2VzdCBwaXBlbGluZSBzaW5jZSBYXCIuXG4gKlxuICogYG51bGxgIGZyb20ge0BsaW5rIFJlcG9ydGluZ1NlcnZpY2UuZ2V0SW5nZXN0SGVhbHRofSBtZWFucyB0aGUgZGVwbG95bWVudCBoYXNcbiAqIE5FVkVSIHJlcG9ydGVkIOKAlCBub3QgXCJzdGFsZVwiLiBUaGUgdHdvIG11c3Qgbm90IGJlIGNvbmZsYXRlZDogYSBmcmVzaCBpbnN0YWxsXG4gKiAob3Igb25lIHdob3NlIGZvcndhcmRlciB3YXMgbmV2ZXIgd2lyZWQgdXApIGhhcyBubyBoZWFydGJlYXQgYXQgYWxsLCBhbmRcbiAqIGNhbGxpbmcgdGhhdCBcInN0YWxlXCIgd291bGQgaW52ZW50IGEgcmVncmVzc2lvbiB0aGF0IG5ldmVyIGhhcHBlbmVkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEluZ2VzdEhlYWx0aFN0YXR1cyB7XG4gIC8qKiBXaGVuIHRoZSBmb3J3YXJkZXIgbGFzdCBwb3N0ZWQgYSBoZWFydGJlYXQgKGl0cyBvd24gY2xvY2ssIElTTyA4NjAxKS4gKi9cbiAgdXBkYXRlZEF0OiBzdHJpbmc7XG4gIC8qKiBUaW1lc3RhbXAgb2YgdGhlIG5ld2VzdCBldmVudCBpdCBoYWQgZm9yd2FyZGVkLCBvciBudWxsIGlmIGl0IGhhcyBzZWVuIG5vbmUuICovXG4gIGxhc3RFdmVudEF0OiBzdHJpbmcgfCBudWxsO1xuICAvKiogQ3VtdWxhdGl2ZSBldmVudHMgZm9yd2FyZGVkLCBvciBudWxsIHdoZW4gdGhlIGZvcndhcmRlciBkb2Vzbid0IHJlcG9ydCBpdC4gKi9cbiAgZm9yd2FyZGVkOiBudW1iZXIgfCBudWxsO1xuICAvKiogQ3VtdWxhdGl2ZSBldmVudHMgRFJPUFBFRCAobm9uLXplcm8g4oeSIGRhdGEgbG9zcyB1cHN0cmVhbSBvZiB0aGUgcmVwb3J0cykuICovXG4gIGRyb3BwZWQ6IG51bWJlciB8IG51bGw7XG59XG5cblxuLyoqXG4gKiBSZWFkLW9ubHkgcmVwb3J0aW5nIHNlcnZpY2UgZm9yIHBpcGVsaW5lIGV4ZWN1dGlvbiBhbmQgcGx1Z2luIGludmVudG9yeSBhZ2dyZWdhdGlvbnMuXG4gKiBEb2VzIG5vdCBleHRlbmQgQ3J1ZFNlcnZpY2Ug4oCUIHJlcG9ydHMgYXJlIGFnZ3JlZ2F0ZSBxdWVyaWVzLCBub3QgZW50aXR5IENSVUQuXG4gKlxuICogQWxsIHF1ZXJpZXMgYXJlIGNhY2hlZCBpbi1tZW1vcnkgdG8gYXZvaWQgcmVwZWF0ZWQgZXhwZW5zaXZlIFNRTCBhZ2dyZWdhdGlvbnM6XG4gKiAtIEludmVudG9yeSBxdWVyaWVzIChwbHVnaW4gc3VtbWFyeS9kaXN0cmlidXRpb24vdmVyc2lvbnMpOiA1IG1pbiBUVExcbiAqIC0gVGltZXNlcmllcyBxdWVyaWVzIChleGVjdXRpb24vYnVpbGQgbWV0cmljcyB3aXRoIGRhdGUgcmFuZ2VzKTogMiBtaW4gVFRMXG4gKi9cblxuLyoqXG4gKiBJbnRlcm5hbCByb3cgc2hhcGVzIGZvciB0aGUgRE9SQSBxdWVyaWVzLiBFeHBvcnRlZCBiZWNhdXNlIC4vZG9yYS50cyBjb25zdW1lc1xuICogdGhlbTsgbm90IHBhcnQgb2YgdGhlIHBhY2thZ2UncyBwdWJsaWMgc3VyZmFjZSAocmVwb3J0aW5nLXNlcnZpY2UudHNcbiAqIHJlLWV4cG9ydHMgdGhpcyBtb2R1bGUgd2hvbGVzYWxlLCB3aGljaCBpcyBhIGRlbGliZXJhdGUgc2ltcGxpZmljYXRpb24g4oCUIHRoZXNlXG4gKiBkZXNjcmliZSBxdWVyeSByZXN1bHRzLCBub3QgQVBJIGNvbnRyYWN0cykuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGVwbG95Um93IHtcbiAgZW52aXJvbm1lbnQ6IHN0cmluZztcbiAgc3RhdHVzOiAnU1VDQ0VFREVEJyB8ICdGQUlMRUQnIHwgc3RyaW5nO1xuICAvKiogRGVwbG95IGV4ZWN1dGlvbiBpZCDigJQgdGhlIGF0dHJpYnV0aW9uIGtleSBmb3IgZGVkdXAgYWdhaW5zdCBvdXRjb21lcy9pbmNpZGVudHMuICovXG4gIGV4ZWN1dGlvbl9pZDogc3RyaW5nIHwgbnVsbDtcbiAgY29tcGxldGVkX2F0OiBzdHJpbmcgfCBudWxsO1xuICBjb21taXRfdHM6IHN0cmluZyB8IG51bGw7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBkZXBsb3kgY29tcGxldGVkIGluc2lkZSBbZnJvbSx0b10uIEFic2VudCAodW5kZWZpbmVkKSBpbiB1bml0XG4gICAqIGZpeHR1cmVzIOKHkiB0cmVhdGVkIGFzIGluLXdpbmRvdy4gYHRgL2BmYCB0b2xlcmF0ZWQgKHBnIGJvb2xlYW4gdGV4dCBmb3JtKS5cbiAgICovXG4gIGluX3dpbmRvdz86IGJvb2xlYW4gfCBzdHJpbmcgfCBudWxsO1xufVxuXG4vKiogUmF3IHBvc3QtZGVwbG95IG91dGNvbWUgbWFya2VyIHJvdyAoZnJvbSBgZGVwbG95bWVudF9vdXRjb21lc2AsIGluLXdpbmRvdykuICovXG5leHBvcnQgaW50ZXJmYWNlIE91dGNvbWVSb3cge1xuICBlbnZpcm9ubWVudDogc3RyaW5nIHwgbnVsbDtcbiAgb3V0Y29tZTogJ2ZhaWxlZCcgfCAncmVzdG9yZWQnIHwgc3RyaW5nO1xuICAvKiogRXhlY3V0aW9uIHRoZSB1c2VyIG1hcmtlZCDigJQgZGVkdXAga2V5IGFnYWluc3QgaW5jaWRlbnQtY29ycmVsYXRlZCBkZXBsb3lzLiAqL1xuICBleGVjdXRpb25faWQ6IHN0cmluZyB8IG51bGw7XG59XG5cbi8qKiBQcm9kdWN0aW9uIHJlc3RvcmVkLWluY2lkZW50IHBhaXI6IHJlY292ZXJ5IHRpbWUgKyB0aGUgZGVwbG95J3MgY29tcGxldGlvbi4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTXR0clBhaXJSb3cge1xuICByZXN0b3JlZF9hdDogc3RyaW5nIHwgbnVsbDtcbiAgZGVwbG95ZWRfYXQ6IHN0cmluZyB8IG51bGw7XG4gIC8qKiBFeGVjdXRpb24gaWQg4oCUIGxldHMgaW5jaWRlbnQgcHJlY2VkZW5jZSBvdmVycmlkZSB0aGUgbWFudWFsIG91dGNvbWUgcGVyIGRlcGxveS4gKi9cbiAgZXhlY3V0aW9uX2lkOiBzdHJpbmcgfCBudWxsO1xufVxuXG4vKipcbiAqIFJhdyBpbmNpZGVudCByb3cgKGZyb20gYGluY2lkZW50c2AsIG9wZW5lZCBpbi13aW5kb3cpLiBDb3JyZWxhdGVkIGluIEpTIHRvIHRoZVxuICogbW9zdCByZWNlbnQgc3VjY2Vzc2Z1bCBkZXBsb3kgdG8gYGVudmlyb25tZW50YCB3aXRoaW4gRE9SQV9JTkNJREVOVF9XSU5ET1dfSE9VUlNcbiAqIOKGkiBhbiBhdXRvbWF0ZWQgcG9zdC1kZXBsb3kgZmFpbHVyZSAoQ0ZSKSArIHJlYWwgcmVjb3ZlcnkgdGltZSAoTVRUUikuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW5jaWRlbnRSb3cge1xuICBlbnZpcm9ubWVudDogc3RyaW5nO1xuICBvcGVuZWRfYXQ6IHN0cmluZyB8IG51bGw7XG4gIHJlc29sdmVkX2F0OiBzdHJpbmcgfCBudWxsO1xufVxuXG4vKiogQ292ZXJhZ2UgY291bnRzOiByZWdpc3RlcmVkIHBpcGVsaW5lcyB2cyB0aG9zZSB0aGF0IGFjdHVhbGx5IGRlcGxveWVkLiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb3ZlcmFnZVJvdyB7XG4gIHJlZ2lzdGVyZWQ6IG51bWJlciB8IHN0cmluZyB8IG51bGw7XG4gIGRlcGxveWluZzogbnVtYmVyIHwgc3RyaW5nIHwgbnVsbDtcbn1cbiJdfQ==
@@ -1,8 +1,9 @@
1
1
  import { type AnalyticsScope } from './reporting/analytics-queries.js';
2
2
  import type { LastDeployedCommit } from './reporting/last-deploy.js';
3
- import type { ExecutionCount, TimeSeriesEntry, DurationStats, PipelineExecution, StageFailure, StageBottleneck, ActionFailure, ErrorEntry, PluginSummary, TypeComputeDistribution, VersionCount, BuildTimeSeriesEntry, BuildDuration, BuildFailure, PluginRuntimeAggregate, PluginRuntimeFilter, PluginRuntimeStats, ReportingRetentionOptions, ReportingRetentionCounts, DoraOptions, ReportingSettings, ReportingSettingsPatch, IncidentListItem, IncidentTestResult, DoraMetrics, DoraTrendPoint, BuildHealth, IncidentInput, IngestCaller, IngestEvent, IngestMetric, IngestResult, IngestHealthStatus, BucketOptions } from './reporting/types.js';
3
+ import { type AttentionRuleId } from './reporting/needs-attention.js';
4
+ import type { ExecutionCount, TimeSeriesEntry, DurationStats, PipelineExecution, StageFailure, StageBottleneck, ActionFailure, ErrorEntry, PluginSummary, TypeComputeDistribution, VersionCount, BuildTimeSeriesEntry, BuildDuration, BuildFailure, PluginRuntimeAggregate, PluginRuntimeFilter, PluginRuntimeStats, ReportingRetentionOptions, ReportingRetentionCounts, DoraOptions, ReportingSettings, ReportingSettingsPatch, IncidentListItem, IncidentTestResult, DoraMetrics, DoraTrendPoint, BuildHealth, IncidentInput, IncidentWrite, DeploymentOutcomeWrite, IngestCaller, IngestEvent, IngestMetric, IngestResult, IngestHealthStatus, BucketOptions } from './reporting/types.js';
4
5
  export type { LastDeployedCommit } from './reporting/last-deploy.js';
5
- export type { BucketOptions, BuildHealth, BuildHealthStage, DoraEnvMetrics, DoraLevel, DoraMetrics, DoraOptions, DoraTrendPoint, IncidentInput, IncidentListItem, ReportingSettings, IncidentTestResult, IngestCaller, IngestEvent, IngestHealthStatus, IngestMetric, IngestResult, PluginRuntimeAggregate, PluginRuntimeFilter, PluginRuntimeStats, ReportingRetentionCounts, ReportingRetentionOptions, ReportingRetentionSettings, ReportingSettingsPatch, } from './reporting/types.js';
6
+ export type { BucketOptions, BuildHealth, BuildHealthStage, DoraEnvMetrics, DoraLevel, DoraMetrics, DoraOptions, DoraTrendPoint, DeploymentOutcomeWrite, IncidentInput, IncidentListItem, IncidentState, IncidentWrite, ReportingSettings, IncidentTestResult, IngestCaller, IngestEvent, IngestHealthStatus, IngestMetric, IngestResult, PluginRuntimeAggregate, PluginRuntimeFilter, PluginRuntimeStats, ReportingRetentionCounts, ReportingRetentionOptions, ReportingRetentionSettings, ReportingSettingsPatch, } from './reporting/types.js';
6
7
  export declare class ReportingService {
7
8
  #private;
8
9
  /** Invalidate all cached reports for an org (call after event ingest). */
@@ -128,7 +129,7 @@ export declare class ReportingService {
128
129
  outcome: 'failed' | 'restored';
129
130
  at: string;
130
131
  environment?: string;
131
- }): Promise<void>;
132
+ }): Promise<DeploymentOutcomeWrite>;
132
133
  /**
133
134
  * Ingest a production incident from the org's incident tooling
134
135
  * (PagerDuty / Datadog / Alertmanager webhook). Idempotent — keyed on
@@ -139,7 +140,7 @@ export declare class ReportingService {
139
140
  * Runs under the caller's org context (RLS WITH CHECK); free-form fields are
140
141
  * AWS-id scrubbed at this persistence boundary like the other ingest paths.
141
142
  */
142
- recordIncident(orgId: string, input: IncidentInput): Promise<void>;
143
+ recordIncident(orgId: string, input: IncidentInput): Promise<IncidentWrite>;
143
144
  /**
144
145
  * Read the per-org DORA settings. Returns the stored
145
146
  * `incidentWindowHours` override (or `null` when unset) plus the global env
@@ -255,6 +256,11 @@ export declare class ReportingService {
255
256
  * why one unavailable read costs one finding rather than the whole section. The
256
257
  * alternative — a section that fails because the streak query timed out — replaces
257
258
  * six findings with none.
259
+ *
260
+ * A skipped rule is SAID, in `unavailableRules`. Absorbed silently, a failed
261
+ * vulnerable-pipelines read became an empty set — indistinguishable from "no
262
+ * pipeline runs a vulnerable plugin", which is the one false negative a security
263
+ * reader must never be handed. The composer turns it into a data-quality note.
258
264
  */
259
265
  getNeedsAttention(scope: AnalyticsScope, previous?: {
260
266
  from: string;
@@ -263,6 +269,7 @@ export declare class ReportingService {
263
269
  items: import("./reporting/needs-attention.js").AttentionItem[];
264
270
  thresholds: import("./reporting/needs-attention.js").NeedsAttentionThresholds;
265
271
  pipelinesEvaluated: number;
272
+ unavailableRules: AttentionRuleId[];
266
273
  }>;
267
274
  /**
268
275
  * The org's stored needs-attention thresholds, or `{}`.