@pipeline-builder/api-core 4.1.16 → 4.1.18

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.
@@ -41,6 +41,12 @@ export const ECOSYSTEM_NOTIFICATION_EVENTS = {
41
41
  N27: { description: 'Installed listing auto-updated within its range', channels: ['in_app', 'email'], preference: 'ecosystem.upgrades.email', digest: 'weekly' },
42
42
  N28: { description: 'A request needs a second approval', channels: ['in_app', 'email'], preference: null },
43
43
  N29: { description: 'Plan change affects publishing', channels: ['in_app', 'email'], preference: null },
44
+ // Per-org plugin security notices (docs/plugin-publishing.md "Scan gates").
45
+ // Recipients follow the org's plugin security notification settings; the org's
46
+ // webhook (if any) is sent by the plugin service itself. N31's email honors
47
+ // the org's digest setting (the sender batches it), N30 is always immediate.
48
+ N30: { description: 'Plugin version blocked (unscanned or fixable Critical)', channels: ['in_app', 'email'], preference: null, allowsAddress: true },
49
+ N31: { description: 'Rescan found new Critical/High in a plugin version', channels: ['in_app', 'email'], preference: null, allowsAddress: true },
44
50
  };
45
51
  /** Whether `value` is a notification event number. */
46
52
  export function isEcosystemNotificationEvent(value) {
@@ -50,7 +56,9 @@ export function isEcosystemNotificationEvent(value) {
50
56
  export const ECOSYSTEM_NOTIFY_SUBJECT_MAX = 500;
51
57
  export const ECOSYSTEM_NOTIFY_TEXT_MAX = 10000;
52
58
  const MAX_RECIPIENT_RULES = 50;
53
- const ORG_PERMISSIONS = ['publishers:manage', 'plugin_installs:manage'];
59
+ const ORG_PERMISSIONS = ['publishers:manage', 'plugin_installs:manage', 'plugins:write'];
60
+ /** At most this many users in one `org_members` rule. */
61
+ export const ECOSYSTEM_ORG_MEMBERS_MAX = 100;
54
62
  const MODERATOR_PERMISSIONS = ['plugins:moderate', 'publishers:verify'];
55
63
  const EMAIL_SHAPE = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
56
64
  function nonEmptyString(v, max = 255) {
@@ -78,6 +86,16 @@ function parseRecipient(raw, spec) {
78
86
  permission: r.permission,
79
87
  ...(r.inheritFromRoot === true ? { inheritFromRoot: true } : {}),
80
88
  };
89
+ case 'org_members': {
90
+ if (!nonEmptyString(r.orgId))
91
+ return 'org_members recipient needs orgId';
92
+ const users = r.userIds;
93
+ if (!Array.isArray(users) || users.length === 0 || !users.every((u) => nonEmptyString(u)))
94
+ return 'org_members recipient needs a non-empty userIds array';
95
+ if (users.length > ECOSYSTEM_ORG_MEMBERS_MAX)
96
+ return `org_members recipient names at most ${ECOSYSTEM_ORG_MEMBERS_MAX} users`;
97
+ return { kind: 'org_members', orgId: r.orgId, userIds: [...new Set(users)] };
98
+ }
81
99
  case 'moderators': {
82
100
  if (typeof r.permission !== 'string' || !MODERATOR_PERMISSIONS.includes(r.permission))
83
101
  return 'moderators recipient names an unsupported permission';
@@ -97,7 +115,7 @@ function parseRecipient(raw, spec) {
97
115
  return { kind: 'superadmins' };
98
116
  case 'address':
99
117
  if (!spec.allowsAddress)
100
- return 'address recipients are only allowed for anonymous-submission notices';
118
+ return 'address recipients are only allowed for anonymous-submission and plugin security notices';
101
119
  if (!nonEmptyString(r.email, 320) || !EMAIL_SHAPE.test(r.email))
102
120
  return 'address recipient needs a valid email';
103
121
  return { kind: 'address', email: r.email.trim().toLowerCase() };
@@ -115,7 +133,7 @@ export function parseEcosystemNotifyRequest(body) {
115
133
  return 'body must be an object';
116
134
  const b = body;
117
135
  if (!isEcosystemNotificationEvent(b.event))
118
- return 'event must be one of N1..N29';
136
+ return 'event must be one of N1..N31';
119
137
  const spec = ECOSYSTEM_NOTIFICATION_EVENTS[b.event];
120
138
  if (!nonEmptyString(b.subject, ECOSYSTEM_NOTIFY_SUBJECT_MAX))
121
139
  return `subject is required (max ${ECOSYSTEM_NOTIFY_SUBJECT_MAX})`;
@@ -207,4 +225,4 @@ export function renderEcosystemDigest(event, items) {
207
225
  text: items.map((i) => `• ${i.subject}`).join('\n').slice(0, ECOSYSTEM_NOTIFY_TEXT_MAX),
208
226
  };
209
227
  }
210
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNvc3lzdGVtLW5vdGlmaWNhdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvZWNvc3lzdGVtLW5vdGlmaWNhdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQStCdEM7MEVBQzBFO0FBQzFFLE1BQU0sQ0FBQyxNQUFNLGlDQUFpQyxHQUE4RTtJQUMxSCx5QkFBeUIsRUFBRSxjQUFjO0lBQ3pDLDBCQUEwQixFQUFFLGVBQWU7SUFDM0MsMEJBQTBCLEVBQUUsZUFBZTtJQUMzQyxrQ0FBa0MsRUFBRSx1QkFBdUI7Q0FDNUQsQ0FBQztBQUtGLHFEQUFxRDtBQUNyRCxNQUFNLENBQUMsTUFBTSxzQ0FBc0MsR0FDakQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO0FBdUJuRCw2Q0FBNkM7QUFDN0MsTUFBTSxDQUFDLE1BQU0sNkJBQTZCLEdBQXVFO0lBQy9HLEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRSw0Q0FBNEMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUU7SUFDN0gsRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLG1EQUFtRCxFQUFFLFFBQVEsRUFBRSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsRUFBRSxVQUFVLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRTtJQUN4SyxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUUsbUNBQW1DLEVBQUUsUUFBUSxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFO0lBQ3BILEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRSxpQ0FBaUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLGFB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QTRCLENBQUM7UUFDMUcsSUFBSSxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUseUJBQXlCLENBQUM7S0FDeEYsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuLyoqXG4gKiBUaGUgcGx1Z2luLWVjb3N5c3RlbSBub3RpZmljYXRpb24gY29udHJhY3QgKGRvY3MvcGx1Z2luLXB1Ymxpc2hpbmcubWQpLFxuICogc2hhcmVkIGJ5IHRoZSBzZW5kZXIgKHRoZSBwbHVnaW4gc2VydmljZSdzIGVucXVldWUgQVBJIGFuZCBkaWdlc3RcbiAqIGRpc3BhdGNoZXIpIGFuZCB0aGUgcmVsYXkgKHBsYXRmb3JtIGBQT1NUIC9pbnRlcm5hbC9ub3RpZnktZW1haWxgKS5cbiAqXG4gKiBSZWNpcGllbnRzIHRyYXZlbCBhcyBSVUxFUywgbmV2ZXIgYXMgbGlzdHM6IHBsYXRmb3JtIHJlc29sdmVzIGVhY2hcbiAqIHtAbGluayBFY29zeXN0ZW1SZWNpcGllbnRTcGVjfSBhZ2FpbnN0IGl0cyB1c2VyL1JvbGUgZGlyZWN0b3J5IEFUIFNFTkQgVElNRSxcbiAqIHNvIGEgZGlnZXN0IHRoYXQgZmx1c2hlcyB0b21vcnJvdyByZWFjaGVzIHRvbW9ycm93J3MgbW9kZXJhdG9ycywgdGhlIHBsdWdpblxuICogc2VydmljZSBuZXZlciBoYW5kbGVzIGFuIGVtYWlsIGFkZHJlc3Mgb3IgYSBtZW1iZXJzaGlwIGxpc3QsIGFuZCBhIHB1Ymxpc2hlclxuICogY2FuIG5ldmVyIGxlYXJuIHdobyBpbnN0YWxsZWQgdGhlaXIgcGx1Z2luICh0aGUgcmVsYXkgbWFpbHMgZWFjaCByZWNpcGllbnRcbiAqIGluZGl2aWR1YWxseSDigJQgbm8gc2hhcmVkIFRvOiBsaW5lKS5cbiAqL1xuXG4vKiogQSBub3RpZmljYXRpb24gZXZlbnQgbnVtYmVyLiAqL1xuZXhwb3J0IHR5cGUgRWNvc3lzdGVtTm90aWZpY2F0aW9uRXZlbnRJZCA9XG4gIHwgJ04xJyB8ICdOMicgfCAnTjMnIHwgJ040JyB8ICdONScgfCAnTjYnIHwgJ043JyB8ICdOOCcgfCAnTjknIHwgJ04xMCdcbiAgfCAnTjExJyB8ICdOMTInIHwgJ04xMycgfCAnTjE0JyB8ICdOMTUnIHwgJ04xNicgfCAnTjE3JyB8ICdOMTgnIHwgJ04xOScgfCAnTjIwJ1xuICB8ICdOMjEnIHwgJ04yMicgfCAnTjIzJyB8ICdOMjQnIHwgJ04yNScgfCAnTjI2JyB8ICdOMjcnIHwgJ04yOCcgfCAnTjI5JztcblxuLyoqIEEgZGVsaXZlcnkgY2hhbm5lbC4gSW4tYXBwIGlzIHRoZSBzb3VyY2Ugb2YgdHJ1dGg7IGVtYWlsIGlzIHRoZSBjb3VydGVzeSBjb3B5LiAqL1xuZXhwb3J0IHR5cGUgRWNvc3lzdGVtTm90aWZpY2F0aW9uQ2hhbm5lbCA9ICdpbl9hcHAnIHwgJ2VtYWlsJztcblxuLyoqIEEgcGVyLXVzZXIgRU1BSUwgb3B0LW91dCBrZXkuIEluLWFwcCBpcyBuZXZlciBvcHRpb25hbC4gKi9cbmV4cG9ydCB0eXBlIEVjb3N5c3RlbUVtYWlsUHJlZmVyZW5jZSA9XG4gIHwgJ2Vjb3N5c3RlbS5yZXZpZXdzLmVtYWlsJ1xuICB8ICdlY29zeXN0ZW0udXBncmFkZXMuZW1haWwnXG4gIHwgJ2Vjb3N5c3RlbS5pbnN0YWxscy5lbWFpbCdcbiAgfCAnZWNvc3lzdGVtLm1vZGVyYXRpb25EaWdlc3QuZW1haWwnO1xuXG4vKiogVGhlIGZpZWxkIGVhY2ggcHJlZmVyZW5jZSBrZXkgaXMgc3RvcmVkIHVuZGVyIGluIHRoZSB1c2VyJ3MgcGVyLW9yZ1xuICogIGBub3RpZmljYXRpb25zLmVjb3N5c3RlbWAgcHJlZmVyZW5jZXMgKHBsYXRmb3JtIGBVc2VyUHJlZmVyZW5jZXNgKS4gKi9cbmV4cG9ydCBjb25zdCBFQ09TWVNURU1fRU1BSUxfUFJFRkVSRU5DRV9GSUVMRFM6IFJlYWRvbmx5PFJlY29yZDxFY29zeXN0ZW1FbWFpbFByZWZlcmVuY2UsIEVjb3N5c3RlbUVtYWlsUHJlZmVyZW5jZUZpZWxkPj4gPSB7XG4gICdlY29zeXN0ZW0ucmV2aWV3cy5lbWFpbCc6ICdyZXZpZXdzRW1haWwnLFxuICAnZWNvc3lzdGVtLnVwZ3JhZGVzLmVtYWlsJzogJ3VwZ3JhZGVzRW1haWwnLFxuICAnZWNvc3lzdGVtLmluc3RhbGxzLmVtYWlsJzogJ2luc3RhbGxzRW1haWwnLFxuICAnZWNvc3lzdGVtLm1vZGVyYXRpb25EaWdlc3QuZW1haWwnOiAnbW9kZXJhdGlvbkRpZ2VzdEVtYWlsJyxcbn07XG5cbi8qKiBTdG9yZWQgZmllbGQgbmFtZXMgb2YgdGhlIGVjb3N5c3RlbSBlbWFpbCBwcmVmZXJlbmNlcyAoYWxsIGRlZmF1bHQgYHRydWVgKS4gKi9cbmV4cG9ydCB0eXBlIEVjb3N5c3RlbUVtYWlsUHJlZmVyZW5jZUZpZWxkID0gJ3Jldmlld3NFbWFpbCcgfCAndXBncmFkZXNFbWFpbCcgfCAnaW5zdGFsbHNFbWFpbCcgfCAnbW9kZXJhdGlvbkRpZ2VzdEVtYWlsJztcblxuLyoqIEV2ZXJ5IHN0b3JlZCBlY29zeXN0ZW0gZW1haWwtcHJlZmVyZW5jZSBmaWVsZC4gKi9cbmV4cG9ydCBjb25zdCBFQ09TWVNURU1fRU1BSUxfUFJFRkVSRU5DRV9GSUVMRF9OQU1FUzogcmVhZG9ubHkgRWNvc3lzdGVtRW1haWxQcmVmZXJlbmNlRmllbGRbXSA9XG4gIE9iamVjdC52YWx1ZXMoRUNPU1lTVEVNX0VNQUlMX1BSRUZFUkVOQ0VfRklFTERTKTtcblxuLyoqIEhvdyBvZnRlbiBhIGJhdGNoZWQgZW1haWwgaXMgZmx1c2hlZC4gKi9cbmV4cG9ydCB0eXBlIEVjb3N5c3RlbURpZ2VzdENhZGVuY2UgPSAnaG91cmx5JyB8ICdkYWlseScgfCAnd2Vla2x5JztcblxuLyoqIE9uZSBldmVudCdzIGRlbGl2ZXJ5IHJ1bGVzLiAqL1xuZXhwb3J0IGludGVyZmFjZSBFY29zeXN0ZW1FdmVudFNwZWMge1xuICAvKiogT25lLWxpbmUgZGVzY3JpcHRpb24gKGRvY3MsIGxvZ3MpLiAqL1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICAvKiogQ2hhbm5lbHMgdGhlIGV2ZW50IGlzIGRlbGl2ZXJlZCBvbi4gKi9cbiAgY2hhbm5lbHM6IHJlYWRvbmx5IEVjb3N5c3RlbU5vdGlmaWNhdGlvbkNoYW5uZWxbXTtcbiAgLyoqXG4gICAqIEVtYWlsIG9wdC1vdXQga2V5LCBvciBgbnVsbGAgd2hlbiB0aGUgZW1haWwgaXMgVFJBTlNBQ1RJT05BTCAvIHNlY3VyaXR5XG4gICAqIChOMSwgTjPigJNONSwgTjfigJNOMTAsIE4xOOKAk04yMywgTjI1LCBOMjgsIE4yOSBjYW4ndCBiZSB0dXJuZWQgb2ZmKS5cbiAgICovXG4gIHByZWZlcmVuY2U6IEVjb3N5c3RlbUVtYWlsUHJlZmVyZW5jZSB8IG51bGw7XG4gIC8qKiBXaGVuIHRoZSBlbWFpbCBpcyBiYXRjaGVkIHJhdGhlciB0aGFuIGltbWVkaWF0ZSwgaXRzIGNhZGVuY2UuICovXG4gIGRpZ2VzdD86IEVjb3N5c3RlbURpZ2VzdENhZGVuY2U7XG4gIC8qKiBBbGxvd2VkIHRvIGFkZHJlc3MgYSByYXcgZW1haWwgKHRoZSBhbm9ueW1vdXMgU1VCTUlUVEVSKSDigJQgb25seSB0aGVcbiAgICogIHRyYW5zYWN0aW9uYWwgc3VibWlzc2lvbiBub3RpY2VzLiAqL1xuICBhbGxvd3NBZGRyZXNzPzogYm9vbGVhbjtcbn1cblxuLyoqIFRoZSBub3RpZmljYXRpb24gZXZlbnQgdGFibGUsIGFzIGRhdGEuICovXG5leHBvcnQgY29uc3QgRUNPU1lTVEVNX05PVElGSUNBVElPTl9FVkVOVFM6IFJlYWRvbmx5PFJlY29yZDxFY29zeXN0ZW1Ob3RpZmljYXRpb25FdmVudElkLCBFY29zeXN0ZW1FdmVudFNwZWM+PiA9IHtcbiAgTjE6IHsgZGVzY3JpcHRpb246ICdBbm9ueW1vdXMgc3VibWlzc2lvbiByZWNlaXZlZCAobWFnaWMgbGluayknLCBjaGFubmVsczogWydlbWFpbCddLCBwcmVmZXJlbmNlOiBudWxsLCBhbGxvd3NBZGRyZXNzOiB0cnVlIH0sXG4gIE4yOiB7IGRlc2NyaXB0aW9uOiAnU3VibWlzc2lvbiB2ZXJpZmllZCwgZW50ZXJlZCB0aGUgbW9kZXJhdGlvbiBxdWV1ZScsIGNoYW5uZWxzOiBbJ2luX2FwcCcsICdlbWFpbCddLCBwcmVmZXJlbmNlOiAnZWNvc3lzdGVtLm1vZGVyYXRpb25EaWdlc3QuZW1haWwnLCBkaWdlc3Q6ICdkYWlseScgfSxcbiAgTjM6IHsgZGVzY3JpcHRpb246ICdTdWJtaXNzaW9uIGZhaWxlZCBhdXRvbWF0ZWQgZ2F0ZXMnLCBjaGFubmVsczogWydlbWFpbCddLCBwcmVmZXJlbmNlOiBudWxsLCBhbGxvd3NBZGRyZXNzOiB0cnVlIH0sXG4gIE40OiB7IGRlc2NyaXB0aW9uOiAnU3VibWlzc2lvbiBhcHByb3ZlZCBvciByZWplY3RlZCcsIGNoYW5uZWxzOiBbJ2VtYWlsJ10sIHByZWZlcmVuY2U6IG51bGwsIGFsbG93c0FkZHJlc3M6IHRydWUgfSxcbiAgTjU6IHsgZGVzY3JpcHRpb246ICdTdWJtaXNzaW9uIGNsYWltZWQgYnkgYW4gYWNjb3VudCcsIGNoYW5uZWxzOiBbJ2luX2FwcCcsICdlbWFpbCddLCBwcmVmZXJlbmNlOiBudWxsIH0sXG4gIE42OiB7IGRlc2NyaXB0aW9uOiAnVmVyaWZpZWQtcHVibGlzaGVyIGFwcGxpY2F0aW9uIHN1Ym1pdHRlZCcsIGNoYW5uZWxzOiBbJ2luX2FwcCcsICdlbWFpbCddLCBwcmVmZXJlbmNlOiAnZWNvc3lzdGVtLm1vZGVyYXRpb25EaWdlc3QuZW1haWwnLCBkaWdlc3Q6ICdkYWlseScgfSxcbiAgTjc6IHsgZGVzY3JpcHRpb246ICdWZXJpZmllZCBhcHBsaWNhdGlvbiBhcHByb3ZlZCBvciByZWplY3RlZCcsIGNoYW5uZWxzOiBbJ2luX2FwcCcsICdlbWFpbCddLCBwcmVmZXJlbmNlOiBudWxsIH0sXG4gIE44OiB7IGRlc2NyaXB0aW9uOiAnTW9kZXJhdGlvbiBhY3Rpb24gb24gYSBsaXN0aW5nIChzdXNwZW5kLCB5YW5rLCB0YWtlZG93biknLCBjaGFubmVsczogWydpbl9hcHAnLCAnZW1haWwnXSwgcHJlZmVyZW5jZTogbnVsbCB9LFxuICBOOTogeyBkZXNjcmlwdGlvbjogJ093bmVyc2hpcCB0cmFuc2ZlciByZXF1ZXN0ZWQnLCBjaGFubmVsczogWydpbl9hcHAnLCAnZW1haWwnXSwgcHJlZmVyZW5jZTogbnVsbCB9LFxuICBOMTA6IHsgZGVzY3JpcHRpb246ICdPd25lcnNoaXAgdHJhbnNmZXIgYWNjZXB0ZWQsIGRlY2xpbmVkLCBhcHByb3ZlZCBvciByZWplY3RlZCcsIGNoYW5uZWxzOiBbJ2luX2FwcCcsICdlbWFpbCddLCBwcmVmZXJlbmNlOiBudWxsIH0sXG4gIE4xMTogeyBkZXNjcmlwdGlvbjogJ0luc3RhbGwgcmVxdWVzdGVkIChwb2xpY3kgcmVxdWlyZXMgYXBwcm92YWwpJywgY2hhbm5lbHM6IFsnaW5fYXBwJywgJ2VtYWlsJ10sIHByZWZlcmVuY2U6ICdlY29zeXN0ZW0uaW5zdGFsbHMuZW1haWwnIH0sXG4gIE4xMjogeyBkZXNjcmlwdGlvbjogJ0luc3RhbGwgYXBwcm92ZWQgb3IgZGVuaWVkJywgY2hhbm5lbHM6IFsnaW5fYXBwJywgJ2VtYWlsJ10sIHByZWZlcmVuY2U6ICdlY29zeXN0ZW0uaW5zdGFsbHMuZW1haWwnIH0sXG4gIE4xMzogeyBkZXNjcmlwdGlvbjogJ05ldyB2ZXJzaW9uIGF2YWlsYWJsZSB3aXRoaW4gYW4gaW5zdGFsbFxcJ3MgcG9saWN5JywgY2hhbm5lbHM6IFsnaW5fYXBwJywgJ2VtYWlsJ10sIHByZWZlcmVuY2U6ICdlY29zeXN0ZW0udXBncmFkZXMuZW1haWwnLCBkaWdlc3Q6ICd3ZWVrbHknIH0sXG4gIE4xNDogeyBkZXNjcmlwdGlvbjogJ0xpc3RpbmcgZGVwcmVjYXRlZCBvciB1bm1haW50YWluZWQnLCBjaGFubmVsczogWydpbl9hcHAnLCAnZW1haWwnXSwgcHJlZmVyZW5jZTogJ2Vjb3N5c3RlbS51cGdyYWRlcy5lbWFpbCcgfSxcbiAgTjE1OiB7IGRlc2NyaXB0aW9uOiAnTmV3IG9yIGVkaXRlZCByZXZpZXcgb24gYSBsaXN0aW5nJywgY2hhbm5lbHM6IFsnaW5fYXBwJywgJ2VtYWlsJ10sIHByZWZlcmVuY2U6ICdlY29zeXN0ZW0ucmV2aWV3cy5lbWFpbCcsIGRpZ2VzdDogJ2hvdXJseScgfSxcbiAgTjE2OiB7IGRlc2NyaXB0aW9uOiAnUHVibGlzaGVyIHJlcGxpZWQgdG8geW91ciByZXZpZXcnLCBjaGFubmVsczogWydpbl9hcHAnLCAnZW1haWwnXSwgcHJlZmVyZW5jZTogJ2Vjb3N5c3RlbS5yZXZpZXdzLmVtYWlsJyB9LFxuICBOMTc6IHsgZGVzY3JpcHRpb246ICdSZXZpZXcgaGVsZCAocmVwb3J0cywgYnVyc3QsIGZpbHRlciknLCBjaGFubmVsczogWydpbl9hcHAnLCAnZW1haWwnXSwgcHJlZmVyZW5jZTogJ2Vjb3N5c3RlbS5tb2RlcmF0aW9uRGlnZXN0LmVtYWlsJywgZGlnZXN0OiAnZGFpbHknIH0sXG4gIE4xODogeyBkZXNjcmlwdGlvbjogJ1lvdXIgcmV2aWV3IHdhcyByZW1vdmVkJywgY2hhbm5lbHM6IFsnaW5fYXBwJywgJ2VtYWlsJ10sIHByZWZlcmVuY2U6IG51bGwgfSxcbiAgTjE5OiB7IGRlc2NyaXB0aW9uOiAnUmV2aWV3IGZsYWdnZWQgYXMgYSBzZWN1cml0eSBpc3N1ZScsIGNoYW5uZWxzOiBbJ2luX2FwcCcsICdlbWFpbCddLCBwcmVmZXJlbmNlOiBudWxsIH0sXG4gIE4yMDogeyBkZXNjcmlwdGlvbjogJ0Fkdmlzb3J5IGRyYWZ0IGF1dG8tY3JlYXRlZCAoQ1ZFIHJlc2NhbiknLCBjaGFubmVsczogWydpbl9hcHAnLCAnZW1haWwnXSwgcHJlZmVyZW5jZTogbnVsbCB9LFxuICBOMjE6IHsgZGVzY3JpcHRpb246ICdBZHZpc29yeSBwdWJsaXNoZWQgb3Igd2l0aGRyYXduJywgY2hhbm5lbHM6IFsnaW5fYXBwJywgJ2VtYWlsJ10sIHByZWZlcmVuY2U6IG51bGwgfSxcbiAgTjIyOiB7IGRlc2NyaXB0aW9uOiAnTW9kZXJhdGlvbiBTTEEgYnJlYWNoJywgY2hhbm5lbHM6IFsnZW1haWwnXSwgcHJlZmVyZW5jZTogbnVsbCB9LFxuICBOMjM6IHsgZGVzY3JpcHRpb246ICdBZGRlZCB0byBvciByZW1vdmVkIGZyb20gdGhlIEVjb3N5c3RlbSBNYW5hZ2VyIHJvbGUnLCBjaGFubmVsczogWydpbl9hcHAnLCAnZW1haWwnXSwgcHJlZmVyZW5jZTogbnVsbCB9LFxuICBOMjQ6IHsgZGVzY3JpcHRpb246ICdQdWJsaXNoIHJlcXVlc3Qgc3VibWl0dGVkJywgY2hhbm5lbHM6IFsnaW5fYXBwJywgJ2VtYWlsJ10sIHByZWZlcmVuY2U6ICdlY29zeXN0ZW0ubW9kZXJhdGlvbkRpZ2VzdC5lbWFpbCcsIGRpZ2VzdDogJ2RhaWx5JyB9LFxuICBOMjU6IHsgZGVzY3JpcHRpb246ICdQdWJsaXNoIHJlcXVlc3QgYXBwcm92ZWQgb3IgcmVqZWN0ZWQnLCBjaGFubmVsczogWydpbl9hcHAnLCAnZW1haWwnXSwgcHJlZmVyZW5jZTogbnVsbCB9LFxuICBOMjY6IHsgZGVzY3JpcHRpb246ICdMaXN0aW5nIG9yIHZlcnNpb24gcGF1c2VkIGJ5IGl0cyBwdWJsaXNoZXInLCBjaGFubmVsczogWydpbl9hcHAnXSwgcHJlZmVyZW5jZTogJ2Vjb3N5c3RlbS51cGdyYWRlcy5lbWFpbCcgfSxcbiAgTjI3OiB7IGRlc2NyaXB0aW9uOiAnSW5zdGFsbGVkIGxpc3RpbmcgYXV0by11cGRhdGVkIHdpdGhpbiBpdHMgcmFuZ2UnLCBjaGFubmVsczogWydpbl9hcHAnLCAnZW1haWwnXSwgcHJlZmVyZW5jZTogJ2Vjb3N5c3RlbS51cGdyYWRlcy5lbWFpbCcsIGRpZ2VzdDogJ3dlZWtseScgfSxcbiAgTjI4OiB7IGRlc2NyaXB0aW9uOiAnQSByZXF1ZXN0IG5lZWRzIGEgc2Vjb25kIGFwcHJvdmFsJywgY2hhbm5lbHM6IFsnaW5fYXBwJywgJ2VtYWlsJ10sIHByZWZlcmVuY2U6IG51bGwgfSxcbiAgTjI5OiB7IGRlc2NyaXB0aW9uOiAnUGxhbiBjaGFuZ2UgYWZmZWN0cyBwdWJsaXNoaW5nJywgY2hhbm5lbHM6IFsnaW5fYXBwJywgJ2VtYWlsJ10sIHByZWZlcmVuY2U6IG51bGwgfSxcbn07XG5cbi8qKiBXaGV0aGVyIGB2YWx1ZWAgaXMgYSBub3RpZmljYXRpb24gZXZlbnQgbnVtYmVyLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRWNvc3lzdGVtTm90aWZpY2F0aW9uRXZlbnQodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBFY29zeXN0ZW1Ob3RpZmljYXRpb25FdmVudElkIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKEVDT1NZU1RFTV9OT1RJRklDQVRJT05fRVZFTlRTLCB2YWx1ZSk7XG59XG5cbi8qKiBPcmctbG9jYWwgcGVybWlzc2lvbnMgYW4ge0BsaW5rIEVjb3N5c3RlbVJlY2lwaWVudFNwZWN9IGBvcmdfcGVybWlzc2lvbmAgcnVsZSBtYXkgbmFtZS4gKi9cbmV4cG9ydCB0eXBlIEVjb3N5c3RlbU9yZ1JlY2lwaWVudFBlcm1pc3Npb24gPSAncHVibGlzaGVyczptYW5hZ2UnIHwgJ3BsdWdpbl9pbnN0YWxsczptYW5hZ2UnO1xuLyoqIFN5c3RlbS1vcmcgcGVybWlzc2lvbnMgYSBgbW9kZXJhdG9yc2AgcnVsZSBtYXkgbmFtZS4gKi9cbmV4cG9ydCB0eXBlIEVjb3N5c3RlbU1vZGVyYXRvclBlcm1pc3Npb24gPSAncGx1Z2luczptb2RlcmF0ZScgfCAncHVibGlzaGVyczp2ZXJpZnknO1xuXG4vKipcbiAqIEEgcmVjaXBpZW50IFJVTEUsIHJlc29sdmVkIGJ5IHBsYXRmb3JtIGF0IHNlbmQgdGltZTpcbiAqXG4gKiAgLSBgdXNlcmAg4oCUIG9uZSB1c2VyIChSZXF1ZXN0ZXIsIFJldmlldyBhdXRob3IsIHRoZSBhZmZlY3RlZCB1c2VyIG9mIE4yMykuXG4gKiAgICBgb3JnSWRgIHBpY2tzIHRoZSBpbmJveDsgZGVmYXVsdHMgdG8gdGhlIHVzZXIncyBsYXN0IGFjdGl2ZSBvcmcuXG4gKiAgLSBgb3JnX3Blcm1pc3Npb25gIOKAlCBhY3RpdmUgbWVtYmVycyBvZiBgb3JnSWRgIGhvbGRpbmcgYHBlcm1pc3Npb25gXG4gKiAgICAoUHVibGlzaGVyIG1hbmFnZXJzID0gYHB1Ymxpc2hlcnM6bWFuYWdlYCwgT3JnIGFwcHJvdmVycyA9XG4gKiAgICBgcGx1Z2luX2luc3RhbGxzOm1hbmFnZWApLiBXaXRoIGBpbmhlcml0RnJvbVJvb3RgLCBhIHRlYW0gd2l0aCBubyBob2xkZXJzXG4gKiAgICBmYWxscyBiYWNrIHRvIGl0cyByb290IG9yZydzIGhvbGRlcnM7IHdpdGggbm9uZSBhbnl3aGVyZSwgdGhlIG9yZydzIG93bmVycy5cbiAqICAtIGBtb2RlcmF0b3JzYCDigJQgdGhlIHN5c3RlbSBvcmcncyBob2xkZXJzIG9mIGBwZXJtaXNzaW9uYCAodGhlIEVjb3N5c3RlbVxuICogICAgTWFuYWdlciByb2xlKSwgbWludXMgYW55b25lIHdpdGggYSBjb25mbGljdCBvZiBpbnRlcmVzdCAobWVtYmVycyBvZlxuICogICAgYGV4Y2x1ZGVNZW1iZXJzT2ZPcmdJZGAsIG9yIHRoZSBsaXN0ZWQgdXNlcnMpOyBzdXBlcmFkbWlucyB3aGVuIGVtcHR5LlxuICogIC0gYHN1cGVyYWRtaW5zYCDigJQgZXZlcnkgcGxhdGZvcm0gc3VwZXJhZG1pbi5cbiAqICAtIGBhZGRyZXNzYCDigJQgYSByYXcgYWRkcmVzczsgb25seSB0aGUgYW5vbnltb3VzIFNVQk1JVFRFUiBub3RpY2VzIChOMSwgTjMsXG4gKiAgICBONCksIHdob3NlIHJlY2lwaWVudCBoYXMgbm8gYWNjb3VudC5cbiAqL1xuZXhwb3J0IHR5cGUgRWNvc3lzdGVtUmVjaXBpZW50U3BlYyA9XG4gIHwgeyBraW5kOiAndXNlcic7IHVzZXJJZDogc3RyaW5nOyBvcmdJZD86IHN0cmluZyB9XG4gIHwgeyBraW5kOiAnb3JnX3Blcm1pc3Npb24nOyBvcmdJZDogc3RyaW5nOyBwZXJtaXNzaW9uOiBFY29zeXN0ZW1PcmdSZWNpcGllbnRQZXJtaXNzaW9uOyBpbmhlcml0RnJvbVJvb3Q/OiBib29sZWFuIH1cbiAgfCB7IGtpbmQ6ICdtb2RlcmF0b3JzJzsgcGVybWlzc2lvbjogRWNvc3lzdGVtTW9kZXJhdG9yUGVybWlzc2lvbjsgZXhjbHVkZU1lbWJlcnNPZk9yZ0lkPzogc3RyaW5nOyBleGNsdWRlVXNlcklkcz86IHN0cmluZ1tdIH1cbiAgfCB7IGtpbmQ6ICdzdXBlcmFkbWlucycgfVxuICB8IHsga2luZDogJ2FkZHJlc3MnOyBlbWFpbDogc3RyaW5nIH07XG5cbi8qKiBUaGUgYm9keSBvZiBhbiBlY29zeXN0ZW0gc2VuZCB0aHJvdWdoIHBsYXRmb3JtJ3Mgbm90aWZ5IHJlbGF5LiAqL1xuZXhwb3J0IGludGVyZmFjZSBFY29zeXN0ZW1Ob3RpZnlSZXF1ZXN0IHtcbiAgZXZlbnQ6IEVjb3N5c3RlbU5vdGlmaWNhdGlvbkV2ZW50SWQ7XG4gIHJlY2lwaWVudHM6IEVjb3N5c3RlbVJlY2lwaWVudFNwZWNbXTtcbiAgc3ViamVjdDogc3RyaW5nO1xuICAvKiogUGxhaW4tdGV4dCBib2R5IChlbWFpbCBib2R5IGFuZCBpbi1hcHAgY29udGVudCkuICovXG4gIHRleHQ6IHN0cmluZztcbiAgLyoqIFN1YnNldCBvZiB0aGUgZXZlbnQncyBjaGFubmVscyB0byBkZWxpdmVyIG9uIChkZWZhdWx0OiBhbGwgb2YgdGhlbSkuIFRoZVxuICAgKiAgZGlnZXN0IGRpc3BhdGNoZXIgc2VuZHMgYFsnZW1haWwnXWAgYmVjYXVzZSBpbi1hcHAgd2VudCBvdXQgYXQgZW5xdWV1ZS4gKi9cbiAgY2hhbm5lbHM/OiBFY29zeXN0ZW1Ob3RpZmljYXRpb25DaGFubmVsW107XG4gIC8qKiBEZWxpdmVyIHRoZSBlbWFpbCBldmVuIHRvIHVzZXJzIHdobyBvcHRlZCBvdXQg4oCUIGZvciBhbiBldmVudCB3aG9zZVxuICAgKiAgbm9ybWFsbHktb3B0aW9uYWwgZW1haWwgaXMgbWFuZGF0b3J5IGluIHRoaXMgaW5zdGFuY2UgKE4yNCB5YW5rLCBhZHZpc29yeVxuICAgKiAgYW5kIHNlY3VyaXR5LWZpeCByZXF1ZXN0cykuICovXG4gIG1hbmRhdG9yeT86IGJvb2xlYW47XG59XG5cbi8qKiBIYXJkIGNhcHMsIG1hdGNoaW5nIHRoZSBtZXNzYWdlIHNlcnZpY2UncyBvd24gbGltaXRzLiAqL1xuZXhwb3J0IGNvbnN0IEVDT1NZU1RFTV9OT1RJRllfU1VCSkVDVF9NQVggPSA1MDA7XG5leHBvcnQgY29uc3QgRUNPU1lTVEVNX05PVElGWV9URVhUX01BWCA9IDEwMDAwO1xuY29uc3QgTUFYX1JFQ0lQSUVOVF9SVUxFUyA9IDUwO1xuXG5jb25zdCBPUkdfUEVSTUlTU0lPTlM6IHJlYWRvbmx5IHN0cmluZ1tdID0gWydwdWJsaXNoZXJzOm1hbmFnZScsICdwbHVnaW5faW5zdGFsbHM6bWFuYWdlJ107XG5jb25zdCBNT0RFUkFUT1JfUEVSTUlTU0lPTlM6IHJlYWRvbmx5IHN0cmluZ1tdID0gWydwbHVnaW5zOm1vZGVyYXRlJywgJ3B1Ymxpc2hlcnM6dmVyaWZ5J107XG5jb25zdCBFTUFJTF9TSEFQRSA9IC9eW15cXHNAXStAW15cXHNAXStcXC5bXlxcc0BdKyQvO1xuXG5mdW5jdGlvbiBub25FbXB0eVN0cmluZyh2OiB1bmtub3duLCBtYXggPSAyNTUpOiB2IGlzIHN0cmluZyB7XG4gIHJldHVybiB0eXBlb2YgdiA9PT0gJ3N0cmluZycgJiYgdi50cmltKCkubGVuZ3RoID4gMCAmJiB2Lmxlbmd0aCA8PSBtYXg7XG59XG5cbmZ1bmN0aW9uIHBhcnNlUmVjaXBpZW50KHJhdzogdW5rbm93biwgc3BlYzogRWNvc3lzdGVtRXZlbnRTcGVjKTogRWNvc3lzdGVtUmVjaXBpZW50U3BlYyB8IHN0cmluZyB7XG4gIGlmICghcmF3IHx8IHR5cGVvZiByYXcgIT09ICdvYmplY3QnKSByZXR1cm4gJ2VhY2ggcmVjaXBpZW50IG11c3QgYmUgYW4gb2JqZWN0JztcbiAgY29uc3QgciA9IHJhdyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgc3dpdGNoIChyLmtpbmQpIHtcbiAgICBjYXNlICd1c2VyJzpcbiAgICAgIGlmICghbm9uRW1wdHlTdHJpbmcoci51c2VySWQpKSByZXR1cm4gJ3VzZXIgcmVjaXBpZW50IG5lZWRzIHVzZXJJZCc7XG4gICAgICBpZiAoci5vcmdJZCAhPT0gdW5kZWZpbmVkICYmICFub25FbXB0eVN0cmluZyhyLm9yZ0lkKSkgcmV0dXJuICd1c2VyIHJlY2lwaWVudCBvcmdJZCBtdXN0IGJlIGEgc3RyaW5nJztcbiAgICAgIHJldHVybiB7IGtpbmQ6ICd1c2VyJywgdXNlcklkOiByLnVzZXJJZCwgLi4uKHIub3JnSWQgPyB7IG9yZ0lkOiByLm9yZ0lkIGFzIHN0cmluZyB9IDoge30pIH07XG4gICAgY2FzZSAnb3JnX3Blcm1pc3Npb24nOlxuICAgICAgaWYgKCFub25FbXB0eVN0cmluZyhyLm9yZ0lkKSkgcmV0dXJuICdvcmdfcGVybWlzc2lvbiByZWNpcGllbnQgbmVlZHMgb3JnSWQnO1xuICAgICAgaWYgKHR5cGVvZiByLnBlcm1pc3Npb24gIT09ICdzdHJpbmcnIHx8ICFPUkdfUEVSTUlTU0lPTlMuaW5jbHVkZXMoci5wZXJtaXNzaW9uKSkgcmV0dXJuICdvcmdfcGVybWlzc2lvbiByZWNpcGllbnQgbmFtZXMgYW4gdW5zdXBwb3J0ZWQgcGVybWlzc2lvbic7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBraW5kOiAnb3JnX3Blcm1pc3Npb24nLFxuICAgICAgICBvcmdJZDogci5vcmdJZCxcbiAgICAgICAgcGVybWlzc2lvbjogci5wZXJtaXNzaW9uIGFzIEVjb3N5c3RlbU9yZ1JlY2lwaWVudFBlcm1pc3Npb24sXG4gICAgICAgIC4uLihyLmluaGVyaXRGcm9tUm9vdCA9PT0gdHJ1ZSA/IHsgaW5oZXJpdEZyb21Sb290OiB0cnVlIH0gOiB7fSksXG4gICAgICB9O1xuICAgIGNhc2UgJ21vZGVyYXRvcnMnOiB7XG4gICAgICBpZiAodHlwZW9mIHIucGVybWlzc2lvbiAhPT0gJ3N0cmluZycgfHwgIU1PREVSQVRPUl9QRVJNSVNTSU9OUy5pbmNsdWRlcyhyLnBlcm1pc3Npb24pKSByZXR1cm4gJ21vZGVyYXRvcnMgcmVjaXBpZW50IG5hbWVzIGFuIHVuc3VwcG9ydGVkIHBlcm1pc3Npb24nO1xuICAgICAgaWYgKHIuZXhjbHVkZU1lbWJlcnNPZk9yZ0lkICE9PSB1bmRlZmluZWQgJiYgIW5vbkVtcHR5U3RyaW5nKHIuZXhjbHVkZU1lbWJlcnNPZk9yZ0lkKSkgcmV0dXJuICdleGNsdWRlTWVtYmVyc09mT3JnSWQgbXVzdCBiZSBhIHN0cmluZyc7XG4gICAgICBjb25zdCBleGNsdWRlID0gci5leGNsdWRlVXNlcklkcztcbiAgICAgIGlmIChleGNsdWRlICE9PSB1bmRlZmluZWQgJiYgKCFBcnJheS5pc0FycmF5KGV4Y2x1ZGUpIHx8ICFleGNsdWRlLmV2ZXJ5KCh1KSA9PiBub25FbXB0eVN0cmluZyh1KSkpKSByZXR1cm4gJ2V4Y2x1ZGVVc2VySWRzIG11c3QgYmUgYW4gYXJyYXkgb2YgaWRzJztcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGtpbmQ6ICdtb2RlcmF0b3JzJyxcbiAgICAgICAgcGVybWlzc2lvbjogci5wZXJtaXNzaW9uIGFzIEVjb3N5c3RlbU1vZGVyYXRvclBlcm1pc3Npb24sXG4gICAgICAgIC4uLihyLmV4Y2x1ZGVNZW1iZXJzT2ZPcmdJZCA/IHsgZXhjbHVkZU1lbWJlcnNPZk9yZ0lkOiByLmV4Y2x1ZGVNZW1iZXJzT2ZPcmdJZCBhcyBzdHJpbmcgfSA6IHt9KSxcbiAgICAgICAgLi4uKGV4Y2x1ZGUgPyB7IGV4Y2x1ZGVVc2VySWRzOiBleGNsdWRlIGFzIHN0cmluZ1tdIH0gOiB7fSksXG4gICAgICB9O1xuICAgIH1cbiAgICBjYXNlICdzdXBlcmFkbWlucyc6XG4gICAgICByZXR1cm4geyBraW5kOiAnc3VwZXJhZG1pbnMnIH07XG4gICAgY2FzZSAnYWRkcmVzcyc6XG4gICAgICBpZiAoIXNwZWMuYWxsb3dzQWRkcmVzcykgcmV0dXJuICdhZGRyZXNzIHJlY2lwaWVudHMgYXJlIG9ubHkgYWxsb3dlZCBmb3IgYW5vbnltb3VzLXN1Ym1pc3Npb24gbm90aWNlcyc7XG4gICAgICBpZiAoIW5vbkVtcHR5U3RyaW5nKHIuZW1haWwsIDMyMCkgfHwgIUVNQUlMX1NIQVBFLnRlc3Qoci5lbWFpbCkpIHJldHVybiAnYWRkcmVzcyByZWNpcGllbnQgbmVlZHMgYSB2YWxpZCBlbWFpbCc7XG4gICAgICByZXR1cm4geyBraW5kOiAnYWRkcmVzcycsIGVtYWlsOiByLmVtYWlsLnRyaW0oKS50b0xvd2VyQ2FzZSgpIH07XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiAndW5rbm93biByZWNpcGllbnQga2luZCc7XG4gIH1cbn1cblxuLyoqXG4gKiBWYWxpZGF0ZSBhbiB7QGxpbmsgRWNvc3lzdGVtTm90aWZ5UmVxdWVzdH0uIFJldHVybnMgdGhlIG5vcm1hbGl6ZWQgcmVxdWVzdCxcbiAqIG9yIGFuIGVycm9yIHN0cmluZyAodGhlIHJlbGF5J3MgNDAwKS4gUHVyZSwgc28gYm90aCB0aGUgc2VuZGVyIChmYWlsIGF0XG4gKiBlbnF1ZXVlLCBub3QgYXQgMDk6MDAgdG9tb3Jyb3cpIGFuZCB0aGUgcmVsYXkgdXNlIHRoZSBzYW1lIHJ1bGVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VFY29zeXN0ZW1Ob3RpZnlSZXF1ZXN0KGJvZHk6IHVua25vd24pOiBFY29zeXN0ZW1Ob3RpZnlSZXF1ZXN0IHwgc3RyaW5nIHtcbiAgaWYgKCFib2R5IHx8IHR5cGVvZiBib2R5ICE9PSAnb2JqZWN0JykgcmV0dXJuICdib2R5IG11c3QgYmUgYW4gb2JqZWN0JztcbiAgY29uc3QgYiA9IGJvZHkgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIGlmICghaXNFY29zeXN0ZW1Ob3RpZmljYXRpb25FdmVudChiLmV2ZW50KSkgcmV0dXJuICdldmVudCBtdXN0IGJlIG9uZSBvZiBOMS4uTjI5JztcbiAgY29uc3Qgc3BlYyA9IEVDT1NZU1RFTV9OT1RJRklDQVRJT05fRVZFTlRTW2IuZXZlbnRdO1xuICBpZiAoIW5vbkVtcHR5U3RyaW5nKGIuc3ViamVjdCwgRUNPU1lTVEVNX05PVElGWV9TVUJKRUNUX01BWCkpIHJldHVybiBgc3ViamVjdCBpcyByZXF1aXJlZCAobWF4ICR7RUNPU1lTVEVNX05PVElGWV9TVUJKRUNUX01BWH0pYDtcbiAgaWYgKCFub25FbXB0eVN0cmluZyhiLnRleHQsIEVDT1NZU1RFTV9OT1RJRllfVEVYVF9NQVgpKSByZXR1cm4gYHRleHQgaXMgcmVxdWlyZWQgKG1heCAke0VDT1NZU1RFTV9OT1RJRllfVEVYVF9NQVh9KWA7XG4gIGlmICghQXJyYXkuaXNBcnJheShiLnJlY2lwaWVudHMpIHx8IGIucmVjaXBpZW50cy5sZW5ndGggPT09IDApIHJldHVybiAncmVjaXBpZW50cyBtdXN0IGJlIGEgbm9uLWVtcHR5IGFycmF5JztcbiAgaWYgKGIucmVjaXBpZW50cy5sZW5ndGggPiBNQVhfUkVDSVBJRU5UX1JVTEVTKSByZXR1cm4gYGF0IG1vc3QgJHtNQVhfUkVDSVBJRU5UX1JVTEVTfSByZWNpcGllbnQgcnVsZXNgO1xuICBjb25zdCByZWNpcGllbnRzOiBFY29zeXN0ZW1SZWNpcGllbnRTcGVjW10gPSBbXTtcbiAgZm9yIChjb25zdCByYXcgb2YgYi5yZWNpcGllbnRzKSB7XG4gICAgY29uc3QgcGFyc2VkID0gcGFyc2VSZWNpcGllbnQocmF3LCBzcGVjKTtcbiAgICBpZiAodHlwZW9mIHBhcnNlZCA9PT0gJ3N0cmluZycpIHJldHVybiBwYXJzZWQ7XG4gICAgcmVjaXBpZW50cy5wdXNoKHBhcnNlZCk7XG4gIH1cbiAgbGV0IGNoYW5uZWxzOiBFY29zeXN0ZW1Ob3RpZmljYXRpb25DaGFubmVsW10gfCB1bmRlZmluZWQ7XG4gIGlmIChiLmNoYW5uZWxzICE9PSB1bmRlZmluZWQpIHtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoYi5jaGFubmVscykgfHwgYi5jaGFubmVscy5sZW5ndGggPT09IDApIHJldHVybiAnY2hhbm5lbHMgbXVzdCBiZSBhIG5vbi1lbXB0eSBhcnJheSc7XG4gICAgY29uc3QgYmFkID0gYi5jaGFubmVscy5maWx0ZXIoKGMpID0+ICFzcGVjLmNoYW5uZWxzLmluY2x1ZGVzKGMgYXMgRWNvc3lzdGVtTm90aWZpY2F0aW9uQ2hhbm5lbCkpO1xuICAgIGlmIChiYWQubGVuZ3RoID4gMCkgcmV0dXJuIGBldmVudCAke2IuZXZlbnR9IGlzIG5vdCBkZWxpdmVyZWQgb246ICR7YmFkLmpvaW4oJywgJyl9YDtcbiAgICBjaGFubmVscyA9IFsuLi5uZXcgU2V0KGIuY2hhbm5lbHMgYXMgRWNvc3lzdGVtTm90aWZpY2F0aW9uQ2hhbm5lbFtdKV07XG4gIH1cbiAgaWYgKGIubWFuZGF0b3J5ICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mIGIubWFuZGF0b3J5ICE9PSAnYm9vbGVhbicpIHJldHVybiAnbWFuZGF0b3J5IG11c3QgYmUgYSBib29sZWFuJztcbiAgcmV0dXJuIHtcbiAgICBldmVudDogYi5ldmVudCxcbiAgICByZWNpcGllbnRzLFxuICAgIHN1YmplY3Q6IGIuc3ViamVjdC50cmltKCksXG4gICAgdGV4dDogYi50ZXh0LnRyaW0oKSxcbiAgICAuLi4oY2hhbm5lbHMgPyB7IGNoYW5uZWxzIH0gOiB7fSksXG4gICAgLi4uKGIubWFuZGF0b3J5ID09PSB0cnVlID8geyBtYW5kYXRvcnk6IHRydWUgfSA6IHt9KSxcbiAgfTtcbn1cblxuLyoqIFRoZSBVVEMgaG91ciBkaWdlc3RzIGZsdXNoIGF0IChcImRhaWx5IGRpZ2VzdCBlbWFpbCAoMDk6MDAgVVRDKVwiKS4gKi9cbmV4cG9ydCBjb25zdCBFQ09TWVNURU1fRElHRVNUX0hPVVJfVVRDID0gOTtcblxuLyoqXG4gKiBUaGUgbmV4dCBmbHVzaCB0aW1lIGZvciBhIGRpZ2VzdCBjYWRlbmNlLCBzdHJpY3RseSBhZnRlciBgbm93YDpcbiAqIGBob3VybHlgIOKGkiB0aGUgbmV4dCB0b3Agb2YgdGhlIGhvdXI7IGBkYWlseWAg4oaSIHRoZSBuZXh0IDA5OjAwIFVUQztcbiAqIGB3ZWVrbHlgIOKGkiB0aGUgbmV4dCBNb25kYXkgMDk6MDAgVVRDLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbmV4dEVjb3N5c3RlbURpZ2VzdFRpbWUoY2FkZW5jZTogRWNvc3lzdGVtRGlnZXN0Q2FkZW5jZSwgbm93OiBEYXRlID0gbmV3IERhdGUoKSk6IERhdGUge1xuICBjb25zdCB0ID0gbmV3IERhdGUobm93LmdldFRpbWUoKSk7XG4gIGlmIChjYWRlbmNlID09PSAnaG91cmx5Jykge1xuICAgIHQuc2V0VVRDTWludXRlcygwLCAwLCAwKTtcbiAgICB0LnNldFVUQ0hvdXJzKHQuZ2V0VVRDSG91cnMoKSArIDEpO1xuICAgIHJldHVybiB0O1xuICB9XG4gIHQuc2V0VVRDSG91cnMoRUNPU1lTVEVNX0RJR0VTVF9IT1VSX1VUQywgMCwgMCwgMCk7XG4gIGlmICh0LmdldFRpbWUoKSA8PSBub3cuZ2V0VGltZSgpKSB0LnNldFVUQ0RhdGUodC5nZXRVVENEYXRlKCkgKyAxKTtcbiAgaWYgKGNhZGVuY2UgPT09ICd3ZWVrbHknKSB7XG4gICAgLy8gZ2V0VVRDRGF5OiAwID0gU3VuZGF5IOKApiAxID0gTW9uZGF5LlxuICAgIHdoaWxlICh0LmdldFVUQ0RheSgpICE9PSAxKSB0LnNldFVUQ0RhdGUodC5nZXRVVENEYXRlKCkgKyAxKTtcbiAgfVxuICByZXR1cm4gdDtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBUZW1wbGF0ZXNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vKiogQSByZW5kZXJlZCBub3RpY2UuICovXG5leHBvcnQgaW50ZXJmYWNlIEVjb3N5c3RlbU5vdGlmaWNhdGlvbkNvbnRlbnQge1xuICBzdWJqZWN0OiBzdHJpbmc7XG4gIHRleHQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBOMjMg4oCUIHNvbWVvbmUgd2FzIGFkZGVkIHRvIG9yIHJlbW92ZWQgZnJvbSB0aGUgc3lzdGVtIG9yZydzIEVjb3N5c3RlbVxuICogTWFuYWdlciByb2xlLiBTZW50IHRvIGV2ZXJ5IHN1cGVyYWRtaW4gYW5kIHRvIHRoZSBhZmZlY3RlZCB1c2VyO1xuICogdHJhbnNhY3Rpb25hbCAobm8gb3B0LW91dCkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJFY29zeXN0ZW1NYW5hZ2VyQ2hhbmdlKGlucHV0OiB7XG4gIC8qKiBUaGUgYWZmZWN0ZWQgdXNlcidzIGRpc3BsYXkgbmFtZSBvciBlbWFpbC4gKi9cbiAgdXNlcjogc3RyaW5nO1xuICBhZGRlZDogYm9vbGVhbjtcbiAgLyoqIFdobyBtYWRlIHRoZSBjaGFuZ2UgKHN1cGVyYWRtaW5zIG9ubHkgY2FuKSwgd2hlbiBrbm93bi4gKi9cbiAgYWN0b3I/OiBzdHJpbmc7XG59KTogRWNvc3lzdGVtTm90aWZpY2F0aW9uQ29udGVudCB7XG4gIGNvbnN0IHZlcmIgPSBpbnB1dC5hZGRlZCA/ICdhZGRlZCB0bycgOiAncmVtb3ZlZCBmcm9tJztcbiAgY29uc3QgYnkgPSBpbnB1dC5hY3RvciA/IGAgYnkgJHtpbnB1dC5hY3Rvcn1gIDogJyc7XG4gIHJldHVybiB7XG4gICAgc3ViamVjdDogYCR7aW5wdXQudXNlcn0gd2FzICR7dmVyYn0gdGhlIEVjb3N5c3RlbSBNYW5hZ2VyIHJvbGVgLFxuICAgIHRleHQ6IGlucHV0LmFkZGVkXG4gICAgICA/IGAke2lucHV0LnVzZXJ9IHdhcyAke3ZlcmJ9IHRoZSBFY29zeXN0ZW0gTWFuYWdlciByb2xlJHtieX0uIEVjb3N5c3RlbSBNYW5hZ2VycyBkZWNpZGUgcHVibGlzaCByZXF1ZXN0cywgYFxuICAgICAgICArICdtb2RlcmF0ZSBzdWJtaXNzaW9ucyBhbmQgcmV2aWV3cywgdmVyaWZ5IHB1Ymxpc2hlcnMgYW5kIHB1Ymxpc2ggYWR2aXNvcmllcyBmb3IgdGhlIHdob2xlIHBsdWdpbiBlY29zeXN0ZW0uICdcbiAgICAgICAgKyAnVGhlIHJvbGUgd29ya3Mgb25seSBmcm9tIHRoZSBzeXN0ZW0gb3JnYW5pemF0aW9uIGFuZCByZXF1aXJlcyBhIHR3by1mYWN0b3Igc2lnbi1pbi4nXG4gICAgICA6IGAke2lucHV0LnVzZXJ9IHdhcyAke3ZlcmJ9IHRoZSBFY29zeXN0ZW0gTWFuYWdlciByb2xlJHtieX0gYW5kIGNhbiBubyBsb25nZXIgbWFuYWdlIG9yIGFwcHJvdmUgYW55dGhpbmcgaW4gdGhlIHBsdWdpbiBlY29zeXN0ZW0uYCxcbiAgfTtcbn1cblxuLyoqXG4gKiBDb2FsZXNjZSBzZXZlcmFsIHF1ZXVlZCBub3RpY2VzIGludG8gb25lIGRpZ2VzdCBlbWFpbDogYSBjb3VudC1iZWFyaW5nXG4gKiBzdWJqZWN0IGFuZCBvbmUgbGluZSBwZXIgaXRlbSAoZWFjaCBpdGVtJ3Mgc3ViamVjdCksIG9sZGVzdCBmaXJzdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbmRlckVjb3N5c3RlbURpZ2VzdChcbiAgZXZlbnQ6IEVjb3N5c3RlbU5vdGlmaWNhdGlvbkV2ZW50SWQsXG4gIGl0ZW1zOiByZWFkb25seSBFY29zeXN0ZW1Ob3RpZmljYXRpb25Db250ZW50W10sXG4pOiBFY29zeXN0ZW1Ob3RpZmljYXRpb25Db250ZW50IHtcbiAgaWYgKGl0ZW1zLmxlbmd0aCA9PT0gMSkgcmV0dXJuIGl0ZW1zWzBdITtcbiAgY29uc3Qgc3BlYyA9IEVDT1NZU1RFTV9OT1RJRklDQVRJT05fRVZFTlRTW2V2ZW50XTtcbiAgY29uc3QgY2FkZW5jZSA9IHNwZWMuZGlnZXN0ID09PSAnaG91cmx5JyA/ICdIb3VybHknIDogc3BlYy5kaWdlc3QgPT09ICd3ZWVrbHknID8gJ1dlZWtseScgOiAnRGFpbHknO1xuICByZXR1cm4ge1xuICAgIHN1YmplY3Q6IGAke2NhZGVuY2V9IGRpZ2VzdDogJHtpdGVtcy5sZW5ndGh9IMOXICR7c3BlYy5kZXNjcmlwdGlvbn1gLnNsaWNlKDAsIEVDT1NZU1RFTV9OT1RJRllfU1VCSkVDVF9NQVgpLFxuICAgIHRleHQ6IGl0ZW1zLm1hcCgoaSkgPT4gYOKAoiAke2kuc3ViamVjdH1gKS5qb2luKCdcXG4nKS5zbGljZSgwLCBFQ09TWVNURU1fTk9USUZZX1RFWFRfTUFYKSxcbiAgfTtcbn1cbiJdfQ==
228
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNvc3lzdGVtLW5vdGlmaWNhdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvZWNvc3lzdGVtLW5vdGlmaWNhdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQWdDdEM7MEVBQzBFO0FBQzFFLE1BQU0sQ0FBQyxNQUFNLGlDQUFpQyxHQUE4RTtJQUMxSCx5QkFBeUIsRUFBRSxjQUFjO0lBQ3pDLDBCQUEwQixFQUFFLGVBQWU7SUFDM0MsMEJBQTBCLEVBQUUsZUFBZTtJQUMzQyxrQ0FBa0MsRUFBRSx1QkFBdUI7Q0FDNUQsQ0FBQztBQUtGLHFEQUFxRDtBQUNyRCxNQUFNLENBQUMsTUFBTSxzQ0FBc0MsR0FDakQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO0FBd0JuRCw2Q0FBNkM7QUFDN0MsTUFBTSxDQUFDLE1BQU0sNkJBQTZCLEdBQXVFO0lBQy9HLEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRSw0Q0FBNEMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUU7SUFDN0gsRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLG1EQUFtRCxFQUFFLFFBQVEsRUFBRSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsRUFBRSxVQUFVLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRTtJQUN4SyxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUUsbUNBQW1DLEVBQUUsUUFBUSxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFO0lBQ3BILEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRSxpQ0FBaUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLGFB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QzFHLElBQUksRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLHlCQUF5QixDQUFDO0tBQ3hGLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8qKlxuICogVGhlIHBsdWdpbi1lY29zeXN0ZW0gbm90aWZpY2F0aW9uIGNvbnRyYWN0IChkb2NzL3BsdWdpbi1wdWJsaXNoaW5nLm1kKSxcbiAqIHNoYXJlZCBieSB0aGUgc2VuZGVyICh0aGUgcGx1Z2luIHNlcnZpY2UncyBlbnF1ZXVlIEFQSSBhbmQgZGlnZXN0XG4gKiBkaXNwYXRjaGVyKSBhbmQgdGhlIHJlbGF5IChwbGF0Zm9ybSBgUE9TVCAvaW50ZXJuYWwvbm90aWZ5LWVtYWlsYCkuXG4gKlxuICogUmVjaXBpZW50cyB0cmF2ZWwgYXMgUlVMRVMsIG5ldmVyIGFzIGxpc3RzOiBwbGF0Zm9ybSByZXNvbHZlcyBlYWNoXG4gKiB7QGxpbmsgRWNvc3lzdGVtUmVjaXBpZW50U3BlY30gYWdhaW5zdCBpdHMgdXNlci9Sb2xlIGRpcmVjdG9yeSBBVCBTRU5EIFRJTUUsXG4gKiBzbyBhIGRpZ2VzdCB0aGF0IGZsdXNoZXMgdG9tb3Jyb3cgcmVhY2hlcyB0b21vcnJvdydzIG1vZGVyYXRvcnMsIHRoZSBwbHVnaW5cbiAqIHNlcnZpY2UgbmV2ZXIgaGFuZGxlcyBhbiBlbWFpbCBhZGRyZXNzIG9yIGEgbWVtYmVyc2hpcCBsaXN0LCBhbmQgYSBwdWJsaXNoZXJcbiAqIGNhbiBuZXZlciBsZWFybiB3aG8gaW5zdGFsbGVkIHRoZWlyIHBsdWdpbiAodGhlIHJlbGF5IG1haWxzIGVhY2ggcmVjaXBpZW50XG4gKiBpbmRpdmlkdWFsbHkg4oCUIG5vIHNoYXJlZCBUbzogbGluZSkuXG4gKi9cblxuLyoqIEEgbm90aWZpY2F0aW9uIGV2ZW50IG51bWJlci4gKi9cbmV4cG9ydCB0eXBlIEVjb3N5c3RlbU5vdGlmaWNhdGlvbkV2ZW50SWQgPVxuICB8ICdOMScgfCAnTjInIHwgJ04zJyB8ICdONCcgfCAnTjUnIHwgJ042JyB8ICdONycgfCAnTjgnIHwgJ045JyB8ICdOMTAnXG4gIHwgJ04xMScgfCAnTjEyJyB8ICdOMTMnIHwgJ04xNCcgfCAnTjE1JyB8ICdOMTYnIHwgJ04xNycgfCAnTjE4JyB8ICdOMTknIHwgJ04yMCdcbiAgfCAnTjIxJyB8ICdOMjInIHwgJ04yMycgfCAnTjI0JyB8ICdOMjUnIHwgJ04yNicgfCAnTjI3JyB8ICdOMjgnIHwgJ04yOSdcbiAgfCAnTjMwJyB8ICdOMzEnO1xuXG4vKiogQSBkZWxpdmVyeSBjaGFubmVsLiBJbi1hcHAgaXMgdGhlIHNvdXJjZSBvZiB0cnV0aDsgZW1haWwgaXMgdGhlIGNvdXJ0ZXN5IGNvcHkuICovXG5leHBvcnQgdHlwZSBFY29zeXN0ZW1Ob3RpZmljYXRpb25DaGFubmVsID0gJ2luX2FwcCcgfCAnZW1haWwnO1xuXG4vKiogQSBwZXItdXNlciBFTUFJTCBvcHQtb3V0IGtleS4gSW4tYXBwIGlzIG5ldmVyIG9wdGlvbmFsLiAqL1xuZXhwb3J0IHR5cGUgRWNvc3lzdGVtRW1haWxQcmVmZXJlbmNlID1cbiAgfCAnZWNvc3lzdGVtLnJldmlld3MuZW1haWwnXG4gIHwgJ2Vjb3N5c3RlbS51cGdyYWRlcy5lbWFpbCdcbiAgfCAnZWNvc3lzdGVtLmluc3RhbGxzLmVtYWlsJ1xuICB8ICdlY29zeXN0ZW0ubW9kZXJhdGlvbkRpZ2VzdC5lbWFpbCc7XG5cbi8qKiBUaGUgZmllbGQgZWFjaCBwcmVmZXJlbmNlIGtleSBpcyBzdG9yZWQgdW5kZXIgaW4gdGhlIHVzZXIncyBwZXItb3JnXG4gKiAgYG5vdGlmaWNhdGlvbnMuZWNvc3lzdGVtYCBwcmVmZXJlbmNlcyAocGxhdGZvcm0gYFVzZXJQcmVmZXJlbmNlc2ApLiAqL1xuZXhwb3J0IGNvbnN0IEVDT1NZU1RFTV9FTUFJTF9QUkVGRVJFTkNFX0ZJRUxEUzogUmVhZG9ubHk8UmVjb3JkPEVjb3N5c3RlbUVtYWlsUHJlZmVyZW5jZSwgRWNvc3lzdGVtRW1haWxQcmVmZXJlbmNlRmllbGQ+PiA9IHtcbiAgJ2Vjb3N5c3RlbS5yZXZpZXdzLmVtYWlsJzogJ3Jldmlld3NFbWFpbCcsXG4gICdlY29zeXN0ZW0udXBncmFkZXMuZW1haWwnOiAndXBncmFkZXNFbWFpbCcsXG4gICdlY29zeXN0ZW0uaW5zdGFsbHMuZW1haWwnOiAnaW5zdGFsbHNFbWFpbCcsXG4gICdlY29zeXN0ZW0ubW9kZXJhdGlvbkRpZ2VzdC5lbWFpbCc6ICdtb2RlcmF0aW9uRGlnZXN0RW1haWwnLFxufTtcblxuLyoqIFN0b3JlZCBmaWVsZCBuYW1lcyBvZiB0aGUgZWNvc3lzdGVtIGVtYWlsIHByZWZlcmVuY2VzIChhbGwgZGVmYXVsdCBgdHJ1ZWApLiAqL1xuZXhwb3J0IHR5cGUgRWNvc3lzdGVtRW1haWxQcmVmZXJlbmNlRmllbGQgPSAncmV2aWV3c0VtYWlsJyB8ICd1cGdyYWRlc0VtYWlsJyB8ICdpbnN0YWxsc0VtYWlsJyB8ICdtb2RlcmF0aW9uRGlnZXN0RW1haWwnO1xuXG4vKiogRXZlcnkgc3RvcmVkIGVjb3N5c3RlbSBlbWFpbC1wcmVmZXJlbmNlIGZpZWxkLiAqL1xuZXhwb3J0IGNvbnN0IEVDT1NZU1RFTV9FTUFJTF9QUkVGRVJFTkNFX0ZJRUxEX05BTUVTOiByZWFkb25seSBFY29zeXN0ZW1FbWFpbFByZWZlcmVuY2VGaWVsZFtdID1cbiAgT2JqZWN0LnZhbHVlcyhFQ09TWVNURU1fRU1BSUxfUFJFRkVSRU5DRV9GSUVMRFMpO1xuXG4vKiogSG93IG9mdGVuIGEgYmF0Y2hlZCBlbWFpbCBpcyBmbHVzaGVkLiAqL1xuZXhwb3J0IHR5cGUgRWNvc3lzdGVtRGlnZXN0Q2FkZW5jZSA9ICdob3VybHknIHwgJ2RhaWx5JyB8ICd3ZWVrbHknO1xuXG4vKiogT25lIGV2ZW50J3MgZGVsaXZlcnkgcnVsZXMuICovXG5leHBvcnQgaW50ZXJmYWNlIEVjb3N5c3RlbUV2ZW50U3BlYyB7XG4gIC8qKiBPbmUtbGluZSBkZXNjcmlwdGlvbiAoZG9jcywgbG9ncykuICovXG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIC8qKiBDaGFubmVscyB0aGUgZXZlbnQgaXMgZGVsaXZlcmVkIG9uLiAqL1xuICBjaGFubmVsczogcmVhZG9ubHkgRWNvc3lzdGVtTm90aWZpY2F0aW9uQ2hhbm5lbFtdO1xuICAvKipcbiAgICogRW1haWwgb3B0LW91dCBrZXksIG9yIGBudWxsYCB3aGVuIHRoZSBlbWFpbCBpcyBUUkFOU0FDVElPTkFMIC8gc2VjdXJpdHlcbiAgICogKE4xLCBOM+KAk041LCBON+KAk04xMCwgTjE44oCTTjIzLCBOMjUsIE4yOOKAk04zMSBjYW4ndCBiZSB0dXJuZWQgb2ZmKS5cbiAgICovXG4gIHByZWZlcmVuY2U6IEVjb3N5c3RlbUVtYWlsUHJlZmVyZW5jZSB8IG51bGw7XG4gIC8qKiBXaGVuIHRoZSBlbWFpbCBpcyBiYXRjaGVkIHJhdGhlciB0aGFuIGltbWVkaWF0ZSwgaXRzIGNhZGVuY2UuICovXG4gIGRpZ2VzdD86IEVjb3N5c3RlbURpZ2VzdENhZGVuY2U7XG4gIC8qKiBBbGxvd2VkIHRvIGFkZHJlc3MgYSByYXcgZW1haWw6IHRoZSBhbm9ueW1vdXMgU1VCTUlUVEVSICh0aGVcbiAgICogIHRyYW5zYWN0aW9uYWwgc3VibWlzc2lvbiBub3RpY2VzKSBhbmQgYW4gb3JnJ3MgVkVSSUZJRUQgZXh0ZXJuYWxcbiAgICogIHNlY3VyaXR5IGFkZHJlc3MgKHRoZSBwbHVnaW4gc2VjdXJpdHkgbm90aWNlcyBOMzAvTjMxKS4gKi9cbiAgYWxsb3dzQWRkcmVzcz86IGJvb2xlYW47XG59XG5cbi8qKiBUaGUgbm90aWZpY2F0aW9uIGV2ZW50IHRhYmxlLCBhcyBkYXRhLiAqL1xuZXhwb3J0IGNvbnN0IEVDT1NZU1RFTV9OT1RJRklDQVRJT05fRVZFTlRTOiBSZWFkb25seTxSZWNvcmQ8RWNvc3lzdGVtTm90aWZpY2F0aW9uRXZlbnRJZCwgRWNvc3lzdGVtRXZlbnRTcGVjPj4gPSB7XG4gIE4xOiB7IGRlc2NyaXB0aW9uOiAnQW5vbnltb3VzIHN1Ym1pc3Npb24gcmVjZWl2ZWQgKG1hZ2ljIGxpbmspJywgY2hhbm5lbHM6IFsnZW1haWwnXSwgcHJlZmVyZW5jZTogbnVsbCwgYWxsb3dzQWRkcmVzczogdHJ1ZSB9LFxuICBOMjogeyBkZXNjcmlwdGlvbjogJ1N1Ym1pc3Npb24gdmVyaWZpZWQsIGVudGVyZWQgdGhlIG1vZGVyYXRpb24gcXVldWUnLCBjaGFubmVsczogWydpbl9hcHAnLCAnZW1haWwnXSwgcHJlZmVyZW5jZTogJ2Vjb3N5c3RlbS5tb2RlcmF0aW9uRGlnZXN0LmVtYWlsJywgZGlnZXN0OiAnZGFpbHknIH0sXG4gIE4zOiB7IGRlc2NyaXB0aW9uOiAnU3VibWlzc2lvbiBmYWlsZWQgYXV0b21hdGVkIGdhdGVzJywgY2hhbm5lbHM6IFsnZW1haWwnXSwgcHJlZmVyZW5jZTogbnVsbCwgYWxsb3dzQWRkcmVzczogdHJ1ZSB9LFxuICBONDogeyBkZXNjcmlwdGlvbjogJ1N1Ym1pc3Npb24gYXBwcm92ZWQgb3IgcmVqZWN0ZWQnLCBjaGFubmVsczogWydlbWFpbCddLCBwcmVmZXJlbmNlOiBudWxsLCBhbGxvd3NBZGRyZXNzOiB0cnVlIH0sXG4gIE41OiB7IGRlc2NyaXB0aW9uOiAnU3VibWlzc2lvbiBjbGFpbWVkIGJ5IGFuIGFjY291bnQnLCBjaGFubmVsczogWydpbl9hcHAnLCAnZW1haWwnXSwgcHJlZmVyZW5jZTogbnVsbCB9LFxuICBONjogeyBkZXNjcmlwdGlvbjogJ1ZlcmlmaWVkLXB1Ymxpc2hlciBhcHBsaWNhdGlvbiBzdWJtaXR0ZWQnLCBjaGFubmVsczogWydpbl9hcHAnLCAnZW1haWwnXSwgcHJlZmVyZW5jZTogJ2Vjb3N5c3RlbS5tb2RlcmF0aW9uRGlnZXN0LmVtYWlsJywgZGlnZXN0OiAnZGFpbHknIH0sXG4gIE43OiB7IGRlc2NyaXB0aW9uOiAnVmVyaWZpZWQgYXBwbGljYXRpb24gYXBwcm92ZWQgb3IgcmVqZWN0ZWQnLCBjaGFubmVsczogWydpbl9hcHAnLCAnZW1haWwnXSwgcHJlZmVyZW5jZTogbnVsbCB9LFxuICBOODogeyBkZXNjcmlwdGlvbjogJ01vZGVyYXRpb24gYWN0aW9uIG9uIGEgbGlzdGluZyAoc3VzcGVuZCwgeWFuaywgdGFrZWRvd24pJywgY2hhbm5lbHM6IFsnaW5fYXBwJywgJ2VtYWlsJ10sIHByZWZlcmVuY2U6IG51bGwgfSxcbiAgTjk6IHsgZGVzY3JpcHRpb246ICdPd25lcnNoaXAgdHJhbnNmZXIgcmVxdWVzdGVkJywgY2hhbm5lbHM6IFsnaW5fYXBwJywgJ2VtYWlsJ10sIHByZWZlcmVuY2U6IG51bGwgfSxcbiAgTjEwOiB7IGRlc2NyaXB0aW9uOiAnT3duZXJzaGlwIHRyYW5zZmVyIGFjY2VwdGVkLCBkZWNsaW5lZCwgYXBwcm92ZWQgb3IgcmVqZWN0ZWQnLCBjaGFubmVsczogWydpbl9hcHAnLCAnZW1haWwnXSwgcHJlZmVyZW5jZTogbnVsbCB9LFxuICBOMTE6IHsgZGVzY3JpcHRpb246ICdJbnN0YWxsIHJlcXVlc3RlZCAocG9saWN5IHJlcXVpcmVzIGFwcHJvdmFsKScsIGNoYW5uZWxzOiBbJ2luX2FwcCcsICdlbWFpbCddLCBwcmVmZXJlbmNlOiAnZWNvc3lzdGVtLmluc3RhbGxzLmVtYWlsJyB9LFxuICBOMTI6IHsgZGVzY3JpcHRpb246ICdJbnN0YWxsIGFwcHJvdmVkIG9yIGRlbmllZCcsIGNoYW5uZWxzOiBbJ2luX2FwcCcsICdlbWFpbCddLCBwcmVmZXJlbmNlOiAnZWNvc3lzdGVtLmluc3RhbGxzLmVtYWlsJyB9LFxuICBOMTM6IHsgZGVzY3JpcHRpb246ICdOZXcgdmVyc2lvbiBhdmFpbGFibGUgd2l0aGluIGFuIGluc3RhbGxcXCdzIHBvbGljeScsIGNoYW5uZWxzOiBbJ2luX2FwcCcsICdlbWFpbCddLCBwcmVmZXJlbmNlOiAnZWNvc3lzdGVtLnVwZ3JhZGVzLmVtYWlsJywgZGlnZXN0OiAnd2Vla2x5JyB9LFxuICBOMTQ6IHsgZGVzY3JpcHRpb246ICdMaXN0aW5nIGRlcHJlY2F0ZWQgb3IgdW5tYWludGFpbmVkJywgY2hhbm5lbHM6IFsnaW5fYXBwJywgJ2VtYWlsJ10sIHByZWZlcmVuY2U6ICdlY29zeXN0ZW0udXBncmFkZXMuZW1haWwnIH0sXG4gIE4xNTogeyBkZXNjcmlwdGlvbjogJ05ldyBvciBlZGl0ZWQgcmV2aWV3IG9uIGEgbGlzdGluZycsIGNoYW5uZWxzOiBbJ2luX2FwcCcsICdlbWFpbCddLCBwcmVmZXJlbmNlOiAnZWNvc3lzdGVtLnJldmlld3MuZW1haWwnLCBkaWdlc3Q6ICdob3VybHknIH0sXG4gIE4xNjogeyBkZXNjcmlwdGlvbjogJ1B1Ymxpc2hlciByZXBsaWVkIHRvIHlvdXIgcmV2aWV3JywgY2hhbm5lbHM6IFsnaW5fYXBwJywgJ2VtYWlsJ10sIHByZWZlcmVuY2U6ICdlY29zeXN0ZW0ucmV2aWV3cy5lbWFpbCcgfSxcbiAgTjE3OiB7IGRlc2NyaXB0aW9uOiAnUmV2aWV3IGhlbGQgKHJlcG9ydHMsIGJ1cnN0LCBmaWx0ZXIpJywgY2hhbm5lbHM6IFsnaW5fYXBwJywgJ2VtYWlsJ10sIHByZWZlcmVuY2U6ICdlY29zeXN0ZW0ubW9kZXJhdGlvbkRpZ2VzdC5lbWFpbCcsIGRpZ2VzdDogJ2RhaWx5JyB9LFxuICBOMTg6IHsgZGVzY3JpcHRpb246ICdZb3VyIHJldmlldyB3YXMgcmVtb3ZlZCcsIGNoYW5uZWxzOiBbJ2luX2FwcCcsICdlbWFpbCddLCBwcmVmZXJlbmNlOiBudWxsIH0sXG4gIE4xOTogeyBkZXNjcmlwdGlvbjogJ1JldmlldyBmbGFnZ2VkIGFzIGEgc2VjdXJpdHkgaXNzdWUnLCBjaGFubmVsczogWydpbl9hcHAnLCAnZW1haWwnXSwgcHJlZmVyZW5jZTogbnVsbCB9LFxuICBOMjA6IHsgZGVzY3JpcHRpb246ICdBZHZpc29yeSBkcmFmdCBhdXRvLWNyZWF0ZWQgKENWRSByZXNjYW4pJywgY2hhbm5lbHM6IFsnaW5fYXBwJywgJ2VtYWlsJ10sIHByZWZlcmVuY2U6IG51bGwgfSxcbiAgTjIxOiB7IGRlc2NyaXB0aW9uOiAnQWR2aXNvcnkgcHVibGlzaGVkIG9yIHdpdGhkcmF3bicsIGNoYW5uZWxzOiBbJ2luX2FwcCcsICdlbWFpbCddLCBwcmVmZXJlbmNlOiBudWxsIH0sXG4gIE4yMjogeyBkZXNjcmlwdGlvbjogJ01vZGVyYXRpb24gU0xBIGJyZWFjaCcsIGNoYW5uZWxzOiBbJ2VtYWlsJ10sIHByZWZlcmVuY2U6IG51bGwgfSxcbiAgTjIzOiB7IGRlc2NyaXB0aW9uOiAnQWRkZWQgdG8gb3IgcmVtb3ZlZCBmcm9tIHRoZSBFY29zeXN0ZW0gTWFuYWdlciByb2xlJywgY2hhbm5lbHM6IFsnaW5fYXBwJywgJ2VtYWlsJ10sIHByZWZlcmVuY2U6IG51bGwgfSxcbiAgTjI0OiB7IGRlc2NyaXB0aW9uOiAnUHVibGlzaCByZXF1ZXN0IHN1Ym1pdHRlZCcsIGNoYW5uZWxzOiBbJ2luX2FwcCcsICdlbWFpbCddLCBwcmVmZXJlbmNlOiAnZWNvc3lzdGVtLm1vZGVyYXRpb25EaWdlc3QuZW1haWwnLCBkaWdlc3Q6ICdkYWlseScgfSxcbiAgTjI1OiB7IGRlc2NyaXB0aW9uOiAnUHVibGlzaCByZXF1ZXN0IGFwcHJvdmVkIG9yIHJlamVjdGVkJywgY2hhbm5lbHM6IFsnaW5fYXBwJywgJ2VtYWlsJ10sIHByZWZlcmVuY2U6IG51bGwgfSxcbiAgTjI2OiB7IGRlc2NyaXB0aW9uOiAnTGlzdGluZyBvciB2ZXJzaW9uIHBhdXNlZCBieSBpdHMgcHVibGlzaGVyJywgY2hhbm5lbHM6IFsnaW5fYXBwJ10sIHByZWZlcmVuY2U6ICdlY29zeXN0ZW0udXBncmFkZXMuZW1haWwnIH0sXG4gIE4yNzogeyBkZXNjcmlwdGlvbjogJ0luc3RhbGxlZCBsaXN0aW5nIGF1dG8tdXBkYXRlZCB3aXRoaW4gaXRzIHJhbmdlJywgY2hhbm5lbHM6IFsnaW5fYXBwJywgJ2VtYWlsJ10sIHByZWZlcmVuY2U6ICdlY29zeXN0ZW0udXBncmFkZXMuZW1haWwnLCBkaWdlc3Q6ICd3ZWVrbHknIH0sXG4gIE4yODogeyBkZXNjcmlwdGlvbjogJ0EgcmVxdWVzdCBuZWVkcyBhIHNlY29uZCBhcHByb3ZhbCcsIGNoYW5uZWxzOiBbJ2luX2FwcCcsICdlbWFpbCddLCBwcmVmZXJlbmNlOiBudWxsIH0sXG4gIE4yOTogeyBkZXNjcmlwdGlvbjogJ1BsYW4gY2hhbmdlIGFmZmVjdHMgcHVibGlzaGluZycsIGNoYW5uZWxzOiBbJ2luX2FwcCcsICdlbWFpbCddLCBwcmVmZXJlbmNlOiBudWxsIH0sXG4gIC8vIFBlci1vcmcgcGx1Z2luIHNlY3VyaXR5IG5vdGljZXMgKGRvY3MvcGx1Z2luLXB1Ymxpc2hpbmcubWQgXCJTY2FuIGdhdGVzXCIpLlxuICAvLyBSZWNpcGllbnRzIGZvbGxvdyB0aGUgb3JnJ3MgcGx1Z2luIHNlY3VyaXR5IG5vdGlmaWNhdGlvbiBzZXR0aW5nczsgdGhlIG9yZydzXG4gIC8vIHdlYmhvb2sgKGlmIGFueSkgaXMgc2VudCBieSB0aGUgcGx1Z2luIHNlcnZpY2UgaXRzZWxmLiBOMzEncyBlbWFpbCBob25vcnNcbiAgLy8gdGhlIG9yZydzIGRpZ2VzdCBzZXR0aW5nICh0aGUgc2VuZGVyIGJhdGNoZXMgaXQpLCBOMzAgaXMgYWx3YXlzIGltbWVkaWF0ZS5cbiAgTjMwOiB7IGRlc2NyaXB0aW9uOiAnUGx1Z2luIHZlcnNpb24gYmxvY2tlZCAodW5zY2FubmVkIG9yIGZpeGFibGUgQ3JpdGljYWwpJywgY2hhbm5lbHM6IFsnaW5fYXBwJywgJ2VtYWlsJ10sIHByZWZlcmVuY2U6IG51bGwsIGFsbG93c0FkZHJlc3M6IHRydWUgfSxcbiAgTjMxOiB7IGRlc2NyaXB0aW9uOiAnUmVzY2FuIGZvdW5kIG5ldyBDcml0aWNhbC9IaWdoIGluIGEgcGx1Z2luIHZlcnNpb24nLCBjaGFubmVsczogWydpbl9hcHAnLCAnZW1haWwnXSwgcHJlZmVyZW5jZTogbnVsbCwgYWxsb3dzQWRkcmVzczogdHJ1ZSB9LFxufTtcblxuLyoqIFdoZXRoZXIgYHZhbHVlYCBpcyBhIG5vdGlmaWNhdGlvbiBldmVudCBudW1iZXIuICovXG5leHBvcnQgZnVuY3Rpb24gaXNFY29zeXN0ZW1Ob3RpZmljYXRpb25FdmVudCh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIEVjb3N5c3RlbU5vdGlmaWNhdGlvbkV2ZW50SWQge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoRUNPU1lTVEVNX05PVElGSUNBVElPTl9FVkVOVFMsIHZhbHVlKTtcbn1cblxuLyoqIE9yZy1sb2NhbCBwZXJtaXNzaW9ucyBhbiB7QGxpbmsgRWNvc3lzdGVtUmVjaXBpZW50U3BlY30gYG9yZ19wZXJtaXNzaW9uYCBydWxlIG1heSBuYW1lLiAqL1xuZXhwb3J0IHR5cGUgRWNvc3lzdGVtT3JnUmVjaXBpZW50UGVybWlzc2lvbiA9ICdwdWJsaXNoZXJzOm1hbmFnZScgfCAncGx1Z2luX2luc3RhbGxzOm1hbmFnZScgfCAncGx1Z2luczp3cml0ZSc7XG4vKiogU3lzdGVtLW9yZyBwZXJtaXNzaW9ucyBhIGBtb2RlcmF0b3JzYCBydWxlIG1heSBuYW1lLiAqL1xuZXhwb3J0IHR5cGUgRWNvc3lzdGVtTW9kZXJhdG9yUGVybWlzc2lvbiA9ICdwbHVnaW5zOm1vZGVyYXRlJyB8ICdwdWJsaXNoZXJzOnZlcmlmeSc7XG5cbi8qKlxuICogQSByZWNpcGllbnQgUlVMRSwgcmVzb2x2ZWQgYnkgcGxhdGZvcm0gYXQgc2VuZCB0aW1lOlxuICpcbiAqICAtIGB1c2VyYCDigJQgb25lIHVzZXIgKFJlcXVlc3RlciwgUmV2aWV3IGF1dGhvciwgdGhlIGFmZmVjdGVkIHVzZXIgb2YgTjIzKS5cbiAqICAgIGBvcmdJZGAgcGlja3MgdGhlIGluYm94OyBkZWZhdWx0cyB0byB0aGUgdXNlcidzIGxhc3QgYWN0aXZlIG9yZy5cbiAqICAtIGBvcmdfcGVybWlzc2lvbmAg4oCUIGFjdGl2ZSBtZW1iZXJzIG9mIGBvcmdJZGAgaG9sZGluZyBgcGVybWlzc2lvbmBcbiAqICAgIChQdWJsaXNoZXIgbWFuYWdlcnMgPSBgcHVibGlzaGVyczptYW5hZ2VgLCBPcmcgYXBwcm92ZXJzID1cbiAqICAgIGBwbHVnaW5faW5zdGFsbHM6bWFuYWdlYCwgcGx1Z2luIHdyaXRlcnMgPSBgcGx1Z2luczp3cml0ZWApLiBXaXRoXG4gKiAgICBgaW5oZXJpdEZyb21Sb290YCwgYSB0ZWFtIHdpdGggbm8gaG9sZGVycyBmYWxscyBiYWNrIHRvIGl0cyByb290IG9yZydzXG4gKiAgICBob2xkZXJzOyB3aXRoIG5vbmUgYW55d2hlcmUsIHRoZSBvcmcncyBvd25lcnMuXG4gKiAgLSBgb3JnX21lbWJlcnNgIOKAlCB0aGUgbmFtZWQgdXNlcnMsIGJ1dCBvbmx5IHRob3NlIHdobyBhcmUgQUNUSVZFIG1lbWJlcnMgb2ZcbiAqICAgIGBvcmdJZGAgYXQgc2VuZCB0aW1lIChhbiBvcmcncyBjaG9zZW4gc2VjdXJpdHkgcmVjaXBpZW50czogYSBzdGFsZSBpZCwgb3JcbiAqICAgIHNvbWVvbmUgd2hvIGxlZnQsIHJlY2VpdmVzIG5vdGhpbmcpLlxuICogIC0gYG1vZGVyYXRvcnNgIOKAlCB0aGUgc3lzdGVtIG9yZydzIGhvbGRlcnMgb2YgYHBlcm1pc3Npb25gICh0aGUgRWNvc3lzdGVtXG4gKiAgICBNYW5hZ2VyIHJvbGUpLCBtaW51cyBhbnlvbmUgd2l0aCBhIGNvbmZsaWN0IG9mIGludGVyZXN0IChtZW1iZXJzIG9mXG4gKiAgICBgZXhjbHVkZU1lbWJlcnNPZk9yZ0lkYCwgb3IgdGhlIGxpc3RlZCB1c2Vycyk7IHN1cGVyYWRtaW5zIHdoZW4gZW1wdHkuXG4gKiAgLSBgc3VwZXJhZG1pbnNgIOKAlCBldmVyeSBwbGF0Zm9ybSBzdXBlcmFkbWluLlxuICogIC0gYGFkZHJlc3NgIOKAlCBhIHJhdyBhZGRyZXNzOyBvbmx5IHRoZSBhbm9ueW1vdXMgU1VCTUlUVEVSIG5vdGljZXMgKE4xLCBOMyxcbiAqICAgIE40KSwgd2hvc2UgcmVjaXBpZW50IGhhcyBubyBhY2NvdW50LCBhbmQgYW4gb3JnJ3MgVkVSSUZJRUQgZXh0ZXJuYWxcbiAqICAgIHNlY3VyaXR5IGFkZHJlc3Mgb24gdGhlIHBsdWdpbiBzZWN1cml0eSBub3RpY2VzIChOMzAsIE4zMSkuXG4gKi9cbmV4cG9ydCB0eXBlIEVjb3N5c3RlbVJlY2lwaWVudFNwZWMgPVxuICB8IHsga2luZDogJ3VzZXInOyB1c2VySWQ6IHN0cmluZzsgb3JnSWQ/OiBzdHJpbmcgfVxuICB8IHsga2luZDogJ29yZ19wZXJtaXNzaW9uJzsgb3JnSWQ6IHN0cmluZzsgcGVybWlzc2lvbjogRWNvc3lzdGVtT3JnUmVjaXBpZW50UGVybWlzc2lvbjsgaW5oZXJpdEZyb21Sb290PzogYm9vbGVhbiB9XG4gIHwgeyBraW5kOiAnb3JnX21lbWJlcnMnOyBvcmdJZDogc3RyaW5nOyB1c2VySWRzOiBzdHJpbmdbXSB9XG4gIHwgeyBraW5kOiAnbW9kZXJhdG9ycyc7IHBlcm1pc3Npb246IEVjb3N5c3RlbU1vZGVyYXRvclBlcm1pc3Npb247IGV4Y2x1ZGVNZW1iZXJzT2ZPcmdJZD86IHN0cmluZzsgZXhjbHVkZVVzZXJJZHM/OiBzdHJpbmdbXSB9XG4gIHwgeyBraW5kOiAnc3VwZXJhZG1pbnMnIH1cbiAgfCB7IGtpbmQ6ICdhZGRyZXNzJzsgZW1haWw6IHN0cmluZyB9O1xuXG4vKiogVGhlIGJvZHkgb2YgYW4gZWNvc3lzdGVtIHNlbmQgdGhyb3VnaCBwbGF0Zm9ybSdzIG5vdGlmeSByZWxheS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRWNvc3lzdGVtTm90aWZ5UmVxdWVzdCB7XG4gIGV2ZW50OiBFY29zeXN0ZW1Ob3RpZmljYXRpb25FdmVudElkO1xuICByZWNpcGllbnRzOiBFY29zeXN0ZW1SZWNpcGllbnRTcGVjW107XG4gIHN1YmplY3Q6IHN0cmluZztcbiAgLyoqIFBsYWluLXRleHQgYm9keSAoZW1haWwgYm9keSBhbmQgaW4tYXBwIGNvbnRlbnQpLiAqL1xuICB0ZXh0OiBzdHJpbmc7XG4gIC8qKiBTdWJzZXQgb2YgdGhlIGV2ZW50J3MgY2hhbm5lbHMgdG8gZGVsaXZlciBvbiAoZGVmYXVsdDogYWxsIG9mIHRoZW0pLiBUaGVcbiAgICogIGRpZ2VzdCBkaXNwYXRjaGVyIHNlbmRzIGBbJ2VtYWlsJ11gIGJlY2F1c2UgaW4tYXBwIHdlbnQgb3V0IGF0IGVucXVldWUuICovXG4gIGNoYW5uZWxzPzogRWNvc3lzdGVtTm90aWZpY2F0aW9uQ2hhbm5lbFtdO1xuICAvKiogRGVsaXZlciB0aGUgZW1haWwgZXZlbiB0byB1c2VycyB3aG8gb3B0ZWQgb3V0IOKAlCBmb3IgYW4gZXZlbnQgd2hvc2VcbiAgICogIG5vcm1hbGx5LW9wdGlvbmFsIGVtYWlsIGlzIG1hbmRhdG9yeSBpbiB0aGlzIGluc3RhbmNlIChOMjQgeWFuaywgYWR2aXNvcnlcbiAgICogIGFuZCBzZWN1cml0eS1maXggcmVxdWVzdHMpLiAqL1xuICBtYW5kYXRvcnk/OiBib29sZWFuO1xufVxuXG4vKiogSGFyZCBjYXBzLCBtYXRjaGluZyB0aGUgbWVzc2FnZSBzZXJ2aWNlJ3Mgb3duIGxpbWl0cy4gKi9cbmV4cG9ydCBjb25zdCBFQ09TWVNURU1fTk9USUZZX1NVQkpFQ1RfTUFYID0gNTAwO1xuZXhwb3J0IGNvbnN0IEVDT1NZU1RFTV9OT1RJRllfVEVYVF9NQVggPSAxMDAwMDtcbmNvbnN0IE1BWF9SRUNJUElFTlRfUlVMRVMgPSA1MDtcblxuY29uc3QgT1JHX1BFUk1JU1NJT05TOiByZWFkb25seSBzdHJpbmdbXSA9IFsncHVibGlzaGVyczptYW5hZ2UnLCAncGx1Z2luX2luc3RhbGxzOm1hbmFnZScsICdwbHVnaW5zOndyaXRlJ107XG4vKiogQXQgbW9zdCB0aGlzIG1hbnkgdXNlcnMgaW4gb25lIGBvcmdfbWVtYmVyc2AgcnVsZS4gKi9cbmV4cG9ydCBjb25zdCBFQ09TWVNURU1fT1JHX01FTUJFUlNfTUFYID0gMTAwO1xuY29uc3QgTU9ERVJBVE9SX1BFUk1JU1NJT05TOiByZWFkb25seSBzdHJpbmdbXSA9IFsncGx1Z2luczptb2RlcmF0ZScsICdwdWJsaXNoZXJzOnZlcmlmeSddO1xuY29uc3QgRU1BSUxfU0hBUEUgPSAvXlteXFxzQF0rQFteXFxzQF0rXFwuW15cXHNAXSskLztcblxuZnVuY3Rpb24gbm9uRW1wdHlTdHJpbmcodjogdW5rbm93biwgbWF4ID0gMjU1KTogdiBpcyBzdHJpbmcge1xuICByZXR1cm4gdHlwZW9mIHYgPT09ICdzdHJpbmcnICYmIHYudHJpbSgpLmxlbmd0aCA+IDAgJiYgdi5sZW5ndGggPD0gbWF4O1xufVxuXG5mdW5jdGlvbiBwYXJzZVJlY2lwaWVudChyYXc6IHVua25vd24sIHNwZWM6IEVjb3N5c3RlbUV2ZW50U3BlYyk6IEVjb3N5c3RlbVJlY2lwaWVudFNwZWMgfCBzdHJpbmcge1xuICBpZiAoIXJhdyB8fCB0eXBlb2YgcmF3ICE9PSAnb2JqZWN0JykgcmV0dXJuICdlYWNoIHJlY2lwaWVudCBtdXN0IGJlIGFuIG9iamVjdCc7XG4gIGNvbnN0IHIgPSByYXcgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIHN3aXRjaCAoci5raW5kKSB7XG4gICAgY2FzZSAndXNlcic6XG4gICAgICBpZiAoIW5vbkVtcHR5U3RyaW5nKHIudXNlcklkKSkgcmV0dXJuICd1c2VyIHJlY2lwaWVudCBuZWVkcyB1c2VySWQnO1xuICAgICAgaWYgKHIub3JnSWQgIT09IHVuZGVmaW5lZCAmJiAhbm9uRW1wdHlTdHJpbmcoci5vcmdJZCkpIHJldHVybiAndXNlciByZWNpcGllbnQgb3JnSWQgbXVzdCBiZSBhIHN0cmluZyc7XG4gICAgICByZXR1cm4geyBraW5kOiAndXNlcicsIHVzZXJJZDogci51c2VySWQsIC4uLihyLm9yZ0lkID8geyBvcmdJZDogci5vcmdJZCBhcyBzdHJpbmcgfSA6IHt9KSB9O1xuICAgIGNhc2UgJ29yZ19wZXJtaXNzaW9uJzpcbiAgICAgIGlmICghbm9uRW1wdHlTdHJpbmcoci5vcmdJZCkpIHJldHVybiAnb3JnX3Blcm1pc3Npb24gcmVjaXBpZW50IG5lZWRzIG9yZ0lkJztcbiAgICAgIGlmICh0eXBlb2Ygci5wZXJtaXNzaW9uICE9PSAnc3RyaW5nJyB8fCAhT1JHX1BFUk1JU1NJT05TLmluY2x1ZGVzKHIucGVybWlzc2lvbikpIHJldHVybiAnb3JnX3Blcm1pc3Npb24gcmVjaXBpZW50IG5hbWVzIGFuIHVuc3VwcG9ydGVkIHBlcm1pc3Npb24nO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAga2luZDogJ29yZ19wZXJtaXNzaW9uJyxcbiAgICAgICAgb3JnSWQ6IHIub3JnSWQsXG4gICAgICAgIHBlcm1pc3Npb246IHIucGVybWlzc2lvbiBhcyBFY29zeXN0ZW1PcmdSZWNpcGllbnRQZXJtaXNzaW9uLFxuICAgICAgICAuLi4oci5pbmhlcml0RnJvbVJvb3QgPT09IHRydWUgPyB7IGluaGVyaXRGcm9tUm9vdDogdHJ1ZSB9IDoge30pLFxuICAgICAgfTtcbiAgICBjYXNlICdvcmdfbWVtYmVycyc6IHtcbiAgICAgIGlmICghbm9uRW1wdHlTdHJpbmcoci5vcmdJZCkpIHJldHVybiAnb3JnX21lbWJlcnMgcmVjaXBpZW50IG5lZWRzIG9yZ0lkJztcbiAgICAgIGNvbnN0IHVzZXJzID0gci51c2VySWRzO1xuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHVzZXJzKSB8fCB1c2Vycy5sZW5ndGggPT09IDAgfHwgIXVzZXJzLmV2ZXJ5KCh1KSA9PiBub25FbXB0eVN0cmluZyh1KSkpIHJldHVybiAnb3JnX21lbWJlcnMgcmVjaXBpZW50IG5lZWRzIGEgbm9uLWVtcHR5IHVzZXJJZHMgYXJyYXknO1xuICAgICAgaWYgKHVzZXJzLmxlbmd0aCA+IEVDT1NZU1RFTV9PUkdfTUVNQkVSU19NQVgpIHJldHVybiBgb3JnX21lbWJlcnMgcmVjaXBpZW50IG5hbWVzIGF0IG1vc3QgJHtFQ09TWVNURU1fT1JHX01FTUJFUlNfTUFYfSB1c2Vyc2A7XG4gICAgICByZXR1cm4geyBraW5kOiAnb3JnX21lbWJlcnMnLCBvcmdJZDogci5vcmdJZCwgdXNlcklkczogWy4uLm5ldyBTZXQodXNlcnMgYXMgc3RyaW5nW10pXSB9O1xuICAgIH1cbiAgICBjYXNlICdtb2RlcmF0b3JzJzoge1xuICAgICAgaWYgKHR5cGVvZiByLnBlcm1pc3Npb24gIT09ICdzdHJpbmcnIHx8ICFNT0RFUkFUT1JfUEVSTUlTU0lPTlMuaW5jbHVkZXMoci5wZXJtaXNzaW9uKSkgcmV0dXJuICdtb2RlcmF0b3JzIHJlY2lwaWVudCBuYW1lcyBhbiB1bnN1cHBvcnRlZCBwZXJtaXNzaW9uJztcbiAgICAgIGlmIChyLmV4Y2x1ZGVNZW1iZXJzT2ZPcmdJZCAhPT0gdW5kZWZpbmVkICYmICFub25FbXB0eVN0cmluZyhyLmV4Y2x1ZGVNZW1iZXJzT2ZPcmdJZCkpIHJldHVybiAnZXhjbHVkZU1lbWJlcnNPZk9yZ0lkIG11c3QgYmUgYSBzdHJpbmcnO1xuICAgICAgY29uc3QgZXhjbHVkZSA9IHIuZXhjbHVkZVVzZXJJZHM7XG4gICAgICBpZiAoZXhjbHVkZSAhPT0gdW5kZWZpbmVkICYmICghQXJyYXkuaXNBcnJheShleGNsdWRlKSB8fCAhZXhjbHVkZS5ldmVyeSgodSkgPT4gbm9uRW1wdHlTdHJpbmcodSkpKSkgcmV0dXJuICdleGNsdWRlVXNlcklkcyBtdXN0IGJlIGFuIGFycmF5IG9mIGlkcyc7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBraW5kOiAnbW9kZXJhdG9ycycsXG4gICAgICAgIHBlcm1pc3Npb246IHIucGVybWlzc2lvbiBhcyBFY29zeXN0ZW1Nb2RlcmF0b3JQZXJtaXNzaW9uLFxuICAgICAgICAuLi4oci5leGNsdWRlTWVtYmVyc09mT3JnSWQgPyB7IGV4Y2x1ZGVNZW1iZXJzT2ZPcmdJZDogci5leGNsdWRlTWVtYmVyc09mT3JnSWQgYXMgc3RyaW5nIH0gOiB7fSksXG4gICAgICAgIC4uLihleGNsdWRlID8geyBleGNsdWRlVXNlcklkczogZXhjbHVkZSBhcyBzdHJpbmdbXSB9IDoge30pLFxuICAgICAgfTtcbiAgICB9XG4gICAgY2FzZSAnc3VwZXJhZG1pbnMnOlxuICAgICAgcmV0dXJuIHsga2luZDogJ3N1cGVyYWRtaW5zJyB9O1xuICAgIGNhc2UgJ2FkZHJlc3MnOlxuICAgICAgaWYgKCFzcGVjLmFsbG93c0FkZHJlc3MpIHJldHVybiAnYWRkcmVzcyByZWNpcGllbnRzIGFyZSBvbmx5IGFsbG93ZWQgZm9yIGFub255bW91cy1zdWJtaXNzaW9uIGFuZCBwbHVnaW4gc2VjdXJpdHkgbm90aWNlcyc7XG4gICAgICBpZiAoIW5vbkVtcHR5U3RyaW5nKHIuZW1haWwsIDMyMCkgfHwgIUVNQUlMX1NIQVBFLnRlc3Qoci5lbWFpbCkpIHJldHVybiAnYWRkcmVzcyByZWNpcGllbnQgbmVlZHMgYSB2YWxpZCBlbWFpbCc7XG4gICAgICByZXR1cm4geyBraW5kOiAnYWRkcmVzcycsIGVtYWlsOiByLmVtYWlsLnRyaW0oKS50b0xvd2VyQ2FzZSgpIH07XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiAndW5rbm93biByZWNpcGllbnQga2luZCc7XG4gIH1cbn1cblxuLyoqXG4gKiBWYWxpZGF0ZSBhbiB7QGxpbmsgRWNvc3lzdGVtTm90aWZ5UmVxdWVzdH0uIFJldHVybnMgdGhlIG5vcm1hbGl6ZWQgcmVxdWVzdCxcbiAqIG9yIGFuIGVycm9yIHN0cmluZyAodGhlIHJlbGF5J3MgNDAwKS4gUHVyZSwgc28gYm90aCB0aGUgc2VuZGVyIChmYWlsIGF0XG4gKiBlbnF1ZXVlLCBub3QgYXQgMDk6MDAgdG9tb3Jyb3cpIGFuZCB0aGUgcmVsYXkgdXNlIHRoZSBzYW1lIHJ1bGVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VFY29zeXN0ZW1Ob3RpZnlSZXF1ZXN0KGJvZHk6IHVua25vd24pOiBFY29zeXN0ZW1Ob3RpZnlSZXF1ZXN0IHwgc3RyaW5nIHtcbiAgaWYgKCFib2R5IHx8IHR5cGVvZiBib2R5ICE9PSAnb2JqZWN0JykgcmV0dXJuICdib2R5IG11c3QgYmUgYW4gb2JqZWN0JztcbiAgY29uc3QgYiA9IGJvZHkgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIGlmICghaXNFY29zeXN0ZW1Ob3RpZmljYXRpb25FdmVudChiLmV2ZW50KSkgcmV0dXJuICdldmVudCBtdXN0IGJlIG9uZSBvZiBOMS4uTjMxJztcbiAgY29uc3Qgc3BlYyA9IEVDT1NZU1RFTV9OT1RJRklDQVRJT05fRVZFTlRTW2IuZXZlbnRdO1xuICBpZiAoIW5vbkVtcHR5U3RyaW5nKGIuc3ViamVjdCwgRUNPU1lTVEVNX05PVElGWV9TVUJKRUNUX01BWCkpIHJldHVybiBgc3ViamVjdCBpcyByZXF1aXJlZCAobWF4ICR7RUNPU1lTVEVNX05PVElGWV9TVUJKRUNUX01BWH0pYDtcbiAgaWYgKCFub25FbXB0eVN0cmluZyhiLnRleHQsIEVDT1NZU1RFTV9OT1RJRllfVEVYVF9NQVgpKSByZXR1cm4gYHRleHQgaXMgcmVxdWlyZWQgKG1heCAke0VDT1NZU1RFTV9OT1RJRllfVEVYVF9NQVh9KWA7XG4gIGlmICghQXJyYXkuaXNBcnJheShiLnJlY2lwaWVudHMpIHx8IGIucmVjaXBpZW50cy5sZW5ndGggPT09IDApIHJldHVybiAncmVjaXBpZW50cyBtdXN0IGJlIGEgbm9uLWVtcHR5IGFycmF5JztcbiAgaWYgKGIucmVjaXBpZW50cy5sZW5ndGggPiBNQVhfUkVDSVBJRU5UX1JVTEVTKSByZXR1cm4gYGF0IG1vc3QgJHtNQVhfUkVDSVBJRU5UX1JVTEVTfSByZWNpcGllbnQgcnVsZXNgO1xuICBjb25zdCByZWNpcGllbnRzOiBFY29zeXN0ZW1SZWNpcGllbnRTcGVjW10gPSBbXTtcbiAgZm9yIChjb25zdCByYXcgb2YgYi5yZWNpcGllbnRzKSB7XG4gICAgY29uc3QgcGFyc2VkID0gcGFyc2VSZWNpcGllbnQocmF3LCBzcGVjKTtcbiAgICBpZiAodHlwZW9mIHBhcnNlZCA9PT0gJ3N0cmluZycpIHJldHVybiBwYXJzZWQ7XG4gICAgcmVjaXBpZW50cy5wdXNoKHBhcnNlZCk7XG4gIH1cbiAgbGV0IGNoYW5uZWxzOiBFY29zeXN0ZW1Ob3RpZmljYXRpb25DaGFubmVsW10gfCB1bmRlZmluZWQ7XG4gIGlmIChiLmNoYW5uZWxzICE9PSB1bmRlZmluZWQpIHtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoYi5jaGFubmVscykgfHwgYi5jaGFubmVscy5sZW5ndGggPT09IDApIHJldHVybiAnY2hhbm5lbHMgbXVzdCBiZSBhIG5vbi1lbXB0eSBhcnJheSc7XG4gICAgY29uc3QgYmFkID0gYi5jaGFubmVscy5maWx0ZXIoKGMpID0+ICFzcGVjLmNoYW5uZWxzLmluY2x1ZGVzKGMgYXMgRWNvc3lzdGVtTm90aWZpY2F0aW9uQ2hhbm5lbCkpO1xuICAgIGlmIChiYWQubGVuZ3RoID4gMCkgcmV0dXJuIGBldmVudCAke2IuZXZlbnR9IGlzIG5vdCBkZWxpdmVyZWQgb246ICR7YmFkLmpvaW4oJywgJyl9YDtcbiAgICBjaGFubmVscyA9IFsuLi5uZXcgU2V0KGIuY2hhbm5lbHMgYXMgRWNvc3lzdGVtTm90aWZpY2F0aW9uQ2hhbm5lbFtdKV07XG4gIH1cbiAgaWYgKGIubWFuZGF0b3J5ICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mIGIubWFuZGF0b3J5ICE9PSAnYm9vbGVhbicpIHJldHVybiAnbWFuZGF0b3J5IG11c3QgYmUgYSBib29sZWFuJztcbiAgcmV0dXJuIHtcbiAgICBldmVudDogYi5ldmVudCxcbiAgICByZWNpcGllbnRzLFxuICAgIHN1YmplY3Q6IGIuc3ViamVjdC50cmltKCksXG4gICAgdGV4dDogYi50ZXh0LnRyaW0oKSxcbiAgICAuLi4oY2hhbm5lbHMgPyB7IGNoYW5uZWxzIH0gOiB7fSksXG4gICAgLi4uKGIubWFuZGF0b3J5ID09PSB0cnVlID8geyBtYW5kYXRvcnk6IHRydWUgfSA6IHt9KSxcbiAgfTtcbn1cblxuLyoqIFRoZSBVVEMgaG91ciBkaWdlc3RzIGZsdXNoIGF0IChcImRhaWx5IGRpZ2VzdCBlbWFpbCAoMDk6MDAgVVRDKVwiKS4gKi9cbmV4cG9ydCBjb25zdCBFQ09TWVNURU1fRElHRVNUX0hPVVJfVVRDID0gOTtcblxuLyoqXG4gKiBUaGUgbmV4dCBmbHVzaCB0aW1lIGZvciBhIGRpZ2VzdCBjYWRlbmNlLCBzdHJpY3RseSBhZnRlciBgbm93YDpcbiAqIGBob3VybHlgIOKGkiB0aGUgbmV4dCB0b3Agb2YgdGhlIGhvdXI7IGBkYWlseWAg4oaSIHRoZSBuZXh0IDA5OjAwIFVUQztcbiAqIGB3ZWVrbHlgIOKGkiB0aGUgbmV4dCBNb25kYXkgMDk6MDAgVVRDLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbmV4dEVjb3N5c3RlbURpZ2VzdFRpbWUoY2FkZW5jZTogRWNvc3lzdGVtRGlnZXN0Q2FkZW5jZSwgbm93OiBEYXRlID0gbmV3IERhdGUoKSk6IERhdGUge1xuICBjb25zdCB0ID0gbmV3IERhdGUobm93LmdldFRpbWUoKSk7XG4gIGlmIChjYWRlbmNlID09PSAnaG91cmx5Jykge1xuICAgIHQuc2V0VVRDTWludXRlcygwLCAwLCAwKTtcbiAgICB0LnNldFVUQ0hvdXJzKHQuZ2V0VVRDSG91cnMoKSArIDEpO1xuICAgIHJldHVybiB0O1xuICB9XG4gIHQuc2V0VVRDSG91cnMoRUNPU1lTVEVNX0RJR0VTVF9IT1VSX1VUQywgMCwgMCwgMCk7XG4gIGlmICh0LmdldFRpbWUoKSA8PSBub3cuZ2V0VGltZSgpKSB0LnNldFVUQ0RhdGUodC5nZXRVVENEYXRlKCkgKyAxKTtcbiAgaWYgKGNhZGVuY2UgPT09ICd3ZWVrbHknKSB7XG4gICAgLy8gZ2V0VVRDRGF5OiAwID0gU3VuZGF5IOKApiAxID0gTW9uZGF5LlxuICAgIHdoaWxlICh0LmdldFVUQ0RheSgpICE9PSAxKSB0LnNldFVUQ0RhdGUodC5nZXRVVENEYXRlKCkgKyAxKTtcbiAgfVxuICByZXR1cm4gdDtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBUZW1wbGF0ZXNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vKiogQSByZW5kZXJlZCBub3RpY2UuICovXG5leHBvcnQgaW50ZXJmYWNlIEVjb3N5c3RlbU5vdGlmaWNhdGlvbkNvbnRlbnQge1xuICBzdWJqZWN0OiBzdHJpbmc7XG4gIHRleHQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBOMjMg4oCUIHNvbWVvbmUgd2FzIGFkZGVkIHRvIG9yIHJlbW92ZWQgZnJvbSB0aGUgc3lzdGVtIG9yZydzIEVjb3N5c3RlbVxuICogTWFuYWdlciByb2xlLiBTZW50IHRvIGV2ZXJ5IHN1cGVyYWRtaW4gYW5kIHRvIHRoZSBhZmZlY3RlZCB1c2VyO1xuICogdHJhbnNhY3Rpb25hbCAobm8gb3B0LW91dCkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJFY29zeXN0ZW1NYW5hZ2VyQ2hhbmdlKGlucHV0OiB7XG4gIC8qKiBUaGUgYWZmZWN0ZWQgdXNlcidzIGRpc3BsYXkgbmFtZSBvciBlbWFpbC4gKi9cbiAgdXNlcjogc3RyaW5nO1xuICBhZGRlZDogYm9vbGVhbjtcbiAgLyoqIFdobyBtYWRlIHRoZSBjaGFuZ2UgKHN1cGVyYWRtaW5zIG9ubHkgY2FuKSwgd2hlbiBrbm93bi4gKi9cbiAgYWN0b3I/OiBzdHJpbmc7XG59KTogRWNvc3lzdGVtTm90aWZpY2F0aW9uQ29udGVudCB7XG4gIGNvbnN0IHZlcmIgPSBpbnB1dC5hZGRlZCA/ICdhZGRlZCB0bycgOiAncmVtb3ZlZCBmcm9tJztcbiAgY29uc3QgYnkgPSBpbnB1dC5hY3RvciA/IGAgYnkgJHtpbnB1dC5hY3Rvcn1gIDogJyc7XG4gIHJldHVybiB7XG4gICAgc3ViamVjdDogYCR7aW5wdXQudXNlcn0gd2FzICR7dmVyYn0gdGhlIEVjb3N5c3RlbSBNYW5hZ2VyIHJvbGVgLFxuICAgIHRleHQ6IGlucHV0LmFkZGVkXG4gICAgICA/IGAke2lucHV0LnVzZXJ9IHdhcyAke3ZlcmJ9IHRoZSBFY29zeXN0ZW0gTWFuYWdlciByb2xlJHtieX0uIEVjb3N5c3RlbSBNYW5hZ2VycyBkZWNpZGUgcHVibGlzaCByZXF1ZXN0cywgYFxuICAgICAgICArICdtb2RlcmF0ZSBzdWJtaXNzaW9ucyBhbmQgcmV2aWV3cywgdmVyaWZ5IHB1Ymxpc2hlcnMgYW5kIHB1Ymxpc2ggYWR2aXNvcmllcyBmb3IgdGhlIHdob2xlIHBsdWdpbiBlY29zeXN0ZW0uICdcbiAgICAgICAgKyAnVGhlIHJvbGUgd29ya3Mgb25seSBmcm9tIHRoZSBzeXN0ZW0gb3JnYW5pemF0aW9uIGFuZCByZXF1aXJlcyBhIHR3by1mYWN0b3Igc2lnbi1pbi4nXG4gICAgICA6IGAke2lucHV0LnVzZXJ9IHdhcyAke3ZlcmJ9IHRoZSBFY29zeXN0ZW0gTWFuYWdlciByb2xlJHtieX0gYW5kIGNhbiBubyBsb25nZXIgbWFuYWdlIG9yIGFwcHJvdmUgYW55dGhpbmcgaW4gdGhlIHBsdWdpbiBlY29zeXN0ZW0uYCxcbiAgfTtcbn1cblxuLyoqXG4gKiBDb2FsZXNjZSBzZXZlcmFsIHF1ZXVlZCBub3RpY2VzIGludG8gb25lIGRpZ2VzdCBlbWFpbDogYSBjb3VudC1iZWFyaW5nXG4gKiBzdWJqZWN0IGFuZCBvbmUgbGluZSBwZXIgaXRlbSAoZWFjaCBpdGVtJ3Mgc3ViamVjdCksIG9sZGVzdCBmaXJzdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbmRlckVjb3N5c3RlbURpZ2VzdChcbiAgZXZlbnQ6IEVjb3N5c3RlbU5vdGlmaWNhdGlvbkV2ZW50SWQsXG4gIGl0ZW1zOiByZWFkb25seSBFY29zeXN0ZW1Ob3RpZmljYXRpb25Db250ZW50W10sXG4pOiBFY29zeXN0ZW1Ob3RpZmljYXRpb25Db250ZW50IHtcbiAgaWYgKGl0ZW1zLmxlbmd0aCA9PT0gMSkgcmV0dXJuIGl0ZW1zWzBdITtcbiAgY29uc3Qgc3BlYyA9IEVDT1NZU1RFTV9OT1RJRklDQVRJT05fRVZFTlRTW2V2ZW50XTtcbiAgY29uc3QgY2FkZW5jZSA9IHNwZWMuZGlnZXN0ID09PSAnaG91cmx5JyA/ICdIb3VybHknIDogc3BlYy5kaWdlc3QgPT09ICd3ZWVrbHknID8gJ1dlZWtseScgOiAnRGFpbHknO1xuICByZXR1cm4ge1xuICAgIHN1YmplY3Q6IGAke2NhZGVuY2V9IGRpZ2VzdDogJHtpdGVtcy5sZW5ndGh9IMOXICR7c3BlYy5kZXNjcmlwdGlvbn1gLnNsaWNlKDAsIEVDT1NZU1RFTV9OT1RJRllfU1VCSkVDVF9NQVgpLFxuICAgIHRleHQ6IGl0ZW1zLm1hcCgoaSkgPT4gYOKAoiAke2kuc3ViamVjdH1gKS5qb2luKCdcXG4nKS5zbGljZSgwLCBFQ09TWVNURU1fTk9USUZZX1RFWFRfTUFYKSxcbiAgfTtcbn1cbiJdfQ==
@@ -132,6 +132,17 @@ export declare enum ErrorCode {
132
132
  * a reserved name, an Official/Verified listing's name, or one confusable
133
133
  * with a top listing; `details.reason` says which. */
134
134
  NAME_TAKEN = "NAME_TAKEN",
135
+ /** A flagged plugin version (a rescan found fixable Critical findings above
136
+ * `PLUGIN_VULN_MAX_CRITICAL`) was pinned exactly while
137
+ * `PLUGIN_BLOCK_ON_NEW_CRITICAL` is on; the message names the fix. Ranges
138
+ * and the default skip flagged versions instead (docs/plugin-installing.md). */
139
+ PLUGIN_VERSION_VULN_BLOCKED = "PLUGIN_VERSION_VULN_BLOCKED",
140
+ /** The built image could not be vulnerability-scanned after every retry, so
141
+ * nothing was persisted (docs/plugin-publishing.md). */
142
+ IMAGE_SCAN_UNAVAILABLE = "IMAGE_SCAN_UNAVAILABLE",
143
+ /** The built image has more fixable Critical findings than the platform
144
+ * floor `PLUGIN_VULN_MAX_CRITICAL`; the message lists them with their fixes. */
145
+ PLUGIN_VULN_GATE = "PLUGIN_VULN_GATE",
135
146
  PAYMENT_METHOD_REQUIRED = "PAYMENT_METHOD_REQUIRED",// 402
136
147
  DISCOUNT_CEILING_EXCEEDED = "DISCOUNT_CEILING_EXCEEDED",// 400
137
148
  DISCOUNT_NOT_FOUND = "DISCOUNT_NOT_FOUND",// 404
@@ -142,6 +142,19 @@ export var ErrorCode;
142
142
  * a reserved name, an Official/Verified listing's name, or one confusable
143
143
  * with a top listing; `details.reason` says which. */
144
144
  ErrorCode["NAME_TAKEN"] = "NAME_TAKEN";
145
+ /** A flagged plugin version (a rescan found fixable Critical findings above
146
+ * `PLUGIN_VULN_MAX_CRITICAL`) was pinned exactly while
147
+ * `PLUGIN_BLOCK_ON_NEW_CRITICAL` is on; the message names the fix. Ranges
148
+ * and the default skip flagged versions instead (docs/plugin-installing.md). */
149
+ ErrorCode["PLUGIN_VERSION_VULN_BLOCKED"] = "PLUGIN_VERSION_VULN_BLOCKED";
150
+ // Plugin build outcomes (422) — terminal build failures, reported on the build
151
+ // stream and in the build's failure record, never answered on a request.
152
+ /** The built image could not be vulnerability-scanned after every retry, so
153
+ * nothing was persisted (docs/plugin-publishing.md). */
154
+ ErrorCode["IMAGE_SCAN_UNAVAILABLE"] = "IMAGE_SCAN_UNAVAILABLE";
155
+ /** The built image has more fixable Critical findings than the platform
156
+ * floor `PLUGIN_VULN_MAX_CRITICAL`; the message lists them with their fixes. */
157
+ ErrorCode["PLUGIN_VULN_GATE"] = "PLUGIN_VULN_GATE";
145
158
  // Billing errors
146
159
  ErrorCode["PAYMENT_METHOD_REQUIRED"] = "PAYMENT_METHOD_REQUIRED";
147
160
  ErrorCode["DISCOUNT_CEILING_EXCEEDED"] = "DISCOUNT_CEILING_EXCEEDED";
@@ -219,6 +232,9 @@ export const ErrorCodeStatus = {
219
232
  [ErrorCode.PLUGIN_UNAVAILABLE]: 409,
220
233
  [ErrorCode.PLUGIN_NAME_LISTED]: 409,
221
234
  [ErrorCode.NAME_TAKEN]: 409,
235
+ [ErrorCode.PLUGIN_VERSION_VULN_BLOCKED]: 409,
236
+ [ErrorCode.IMAGE_SCAN_UNAVAILABLE]: 422,
237
+ [ErrorCode.PLUGIN_VULN_GATE]: 422,
222
238
  [ErrorCode.PAYMENT_METHOD_REQUIRED]: 402,
223
239
  [ErrorCode.DISCOUNT_CEILING_EXCEEDED]: 400,
224
240
  [ErrorCode.DISCOUNT_NOT_FOUND]: 404,
@@ -237,4 +253,4 @@ export const ErrorCodeStatus = {
237
253
  export function getStatusForErrorCode(code) {
238
254
  return ErrorCodeStatus[code] ?? 500;
239
255
  }
240
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3ItY29kZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvZXJyb3ItY29kZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0Qzs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxDQUFOLElBQVksU0E4Slg7QUE5SkQsV0FBWSxTQUFTO0lBQ25CLDhCQUE4QjtJQUM5QiwwQ0FBNkIsQ0FBQTtJQUM3Qiw0Q0FBK0IsQ0FBQTtJQUMvQiw0Q0FBK0IsQ0FBQTtJQUMvQiw0Q0FBK0IsQ0FBQTtJQUMvQiw0Q0FBK0IsQ0FBQTtJQUMvQjs7O3VEQUdtRDtJQUNuRCwwQ0FBNkIsQ0FBQTtJQUM3Qjs4RUFDMEU7SUFDMUUsZ0RBQW1DLENBQUE7SUFFbkMsNkJBQTZCO0lBQzdCLGtFQUFxRCxDQUFBO0lBQ3JEO3dFQUNvRTtJQUNwRSw4REFBaUQsQ0FBQTtJQUNqRDtvRUFDZ0U7SUFDaEUsZ0VBQW1ELENBQUE7SUFDbkQ7a0VBQzhEO0lBQzlELGdFQUFtRCxDQUFBO0lBQ25EOztvRkFFZ0Y7SUFDaEYsd0RBQTJDLENBQUE7SUFDM0M7d0VBQ29FO0lBQ3BFLGtFQUFxRCxDQUFBO0lBQ3JEOzJCQUN1QjtJQUN2Qix3RUFBMkQsQ0FBQTtJQUMzRCxvREFBb0Q7SUFDcEQsd0RBQTJDLENBQUE7SUFDM0Msd0ZBQXdGO0lBQ3hGLHNFQUF5RCxDQUFBO0lBQ3pEO3lEQUNxRDtJQUNyRCxnRUFBbUQsQ0FBQTtJQUNuRDsyREFDdUQ7SUFDdkQsNERBQStDLENBQUE7SUFDL0M7OzJDQUV1QztJQUN2QywwREFBNkMsQ0FBQTtJQUM3QywwQ0FBNkIsQ0FBQTtJQUM3QiwwREFBNkMsQ0FBQTtJQUU3Qyx5QkFBeUI7SUFDekIsb0NBQXVCLENBQUE7SUFDdkIsNENBQStCLENBQUE7SUFDL0I7OytEQUUyRDtJQUMzRCwwREFBNkMsQ0FBQTtJQUU3QywwQkFBMEI7SUFDMUIsa0RBQXFDLENBQUE7SUFDckMs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Q0FBQyx1QkFBdUIsQ0FBQyxFQUFFLEdBQUc7SUFDeEMsQ0FBQyxTQUFTLENBQUMseUJBQXlCLENBQUMsRUFBRSxHQUFHO0lBQzFDLENBQUMsU0FBUyxDQUFDLGtCQUFrQixDQUFDLEVBQUUsR0FBRztJQUNuQyxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEdBQUc7SUFDbEMsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEVBQUUsR0FBRztJQUM5QixDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsRUFBRSxHQUFHO0lBQy9CLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxFQUFFLEdBQUc7SUFDL0IsQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLEVBQUUsR0FBRztJQUMvQixDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsRUFBRSxHQUFHO0lBQ2hDLENBQUMsU0FBUyxDQUFDLG1CQUFtQixDQUFDLEVBQUUsR0FBRztJQUNwQyxDQUFDLFNBQVMsQ0FBQyw4QkFBOEIsQ0FBQyxFQUFFLEdBQUc7Q0FDaEQsQ0FBQztBQUVGOztHQUVHO0FBQ0gsTUFBTSxVQUFVLHFCQUFxQixDQUFDLElBQWU7SUFDbkQsT0FBTyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDO0FBQ3RDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuLyoqXG4gKiBTdGFuZGFyZGl6ZWQgZXJyb3IgY29kZXMgdXNlZCBhY3Jvc3MgYWxsIEFQSSBtaWNyb3NlcnZpY2VzLlxuICogVXNlIHRoZXNlIGNvZGVzIGluIGVycm9yIHJlc3BvbnNlcyBmb3IgY29uc2lzdGVudCBjbGllbnQgaGFuZGxpbmcuXG4gKlxuICogRWFjaCBIVFRQIHN0YXR1cyBjYXRlZ29yeSBoYXMgb25lIHByaW1hcnkgY29kZS4gVXNlIHRoZSBgZGV0YWlsc2BcbiAqIGZpZWxkIGluIGVycm9yIHJlc3BvbnNlcyBmb3Igc3ViLXR5cGUgaW5mb3JtYXRpb24gKGUuZy4gd2hpY2ggcXVvdGFcbiAqIHdhcyBleGNlZWRlZCwgd2hpY2ggZmllbGQgZmFpbGVkIHZhbGlkYXRpb24pLlxuICovXG5leHBvcnQgZW51bSBFcnJvckNvZGUge1xuICAvLyBBdXRoZW50aWNhdGlvbiBlcnJvcnMgKDQwMSlcbiAgVU5BVVRIT1JJWkVEID0gJ1VOQVVUSE9SSVpFRCcsXG4gIFRPS0VOX0VYUElSRUQgPSAnVE9LRU5fRVhQSVJFRCcsXG4gIFRPS0VOX0lOVkFMSUQgPSAnVE9LRU5fSU5WQUxJRCcsXG4gIFRPS0VOX01JU1NJTkcgPSAnVE9LRU5fTUlTU0lORycsXG4gIFRPS0VOX1JFVk9LRUQgPSAnVE9LRU5fUkVWT0tFRCcsXG4gIC8qKiBUaGUgc2Vzc2lvbiBpcyBub3QgTUZBLWdyYWRlIChgYWFsYCBiZWxvdyB0aGUgcm91dGUncyBgbWluQXNzdXJhbmNlYCkuXG4gICAqICBUaGUgY2xpZW50IHNlbmRzIHRoZSBwZXJzb24gdG8gZW5yb2wgLyBzaWduIGluIGFnYWluIHdpdGggYSBzZWNvbmRcbiAgICogIGZhY3RvciDigJQgaXQgbXVzdCBOT1Qgc2lnbiB0aGVtIG91dCBvciByZXRyeSBhIHRva2VuIHJlZnJlc2gsIHNpbmNlIGFcbiAgICogIHJlZnJlc2ggY2FuIG5ldmVyIHJhaXNlIHRoZSBhc3N1cmFuY2UgbGV2ZWwuICovXG4gIE1GQV9SRVFVSVJFRCA9ICdNRkFfUkVRVUlSRUQnLFxuICAvKiogVGhlIHNlc3Npb24gaXMgTUZBLWdyYWRlIGJ1dCBpdHMgYGF1dGhfdGltZWAgaXMgb2xkZXIgdGhhbiB0aGUgcm91dGUnc1xuICAgKiAgYG1heEFnZWAg4oCUIHRoZSBwZXJzb24gbXVzdCBhdXRoZW50aWNhdGUgYWdhaW4gKG5vdCBtZXJlbHkgcmVmcmVzaCkuICovXG4gIFJFQVVUSF9SRVFVSVJFRCA9ICdSRUFVVEhfUkVRVUlSRUQnLFxuXG4gIC8vIEF1dGhvcml6YXRpb24gZXJyb3JzICg0MDMpXG4gIElOU1VGRklDSUVOVF9QRVJNSVNTSU9OUyA9ICdJTlNVRkZJQ0lFTlRfUEVSTUlTU0lPTlMnLFxuICAvKiogQSBtYWNoaW5lIGNyZWRlbnRpYWwgKHNlcnZpY2UgcHJpbmNpcGFsLCBvcmcgc2VydmljZSBhY2NvdW50LCBvciBhblxuICAgKiAgZXhjaGFuZ2VkIGFjY2VzcyBrZXkpIHJlYWNoZWQgYSByb3V0ZSB0aGF0IHJlcXVpcmVzIGEgcGVyc29uLiAqL1xuICBIVU1BTl9TRVNTSU9OX1JFUVVJUkVEID0gJ0hVTUFOX1NFU1NJT05fUkVRVUlSRUQnLFxuICAvKiogQSBib290c3RyYXAtYWRtaW4gZW5yb2xtZW50IHNlc3Npb24gKGBtZmFFbnJvbGxtZW50UGVuZGluZ2ApIHJlYWNoZWQgYVxuICAgKiAgcm91dGUgb3V0c2lkZSB0aGUgZW5yb2xtZW50IC8gc2lnbi1vdXQgLyBzZXR1cCBhbGxvd2xpc3QuICovXG4gIE1GQV9FTlJPTExNRU5UX1JFUVVJUkVEID0gJ01GQV9FTlJPTExNRU5UX1JFUVVJUkVEJyxcbiAgLyoqIEEgcmVhZC1vbmx5IGltcGVyc29uYXRpb24gdG9rZW4gKGBpbXBlcnNvbmF0aW9uUmVhZE9ubHlgKSBhdHRlbXB0ZWQgYVxuICAgKiAgc3RhdGUtY2hhbmdpbmcgcmVxdWVzdCAoYW55dGhpbmcgYnV0IEdFVC9IRUFEL09QVElPTlMpLiAqL1xuICBJTVBFUlNPTkFUSU9OX1JFQURfT05MWSA9ICdJTVBFUlNPTkFUSU9OX1JFQURfT05MWScsXG4gIC8qKiBBIHBsdWdpbi1lY29zeXN0ZW0gZ292ZXJuYW5jZSByb3V0ZSAoZG9jcy9ydW5ib29rcy9lY29zeXN0ZW0tbW9kZXJhdGlvbi5tZClcbiAgICogIHdhcyBjYWxsZWQgZnJvbSBhbiBhY3RpdmUgb3JnIG90aGVyIHRoYW4gdGhlIHN5c3RlbSBvcmcg4oCUIGEgdG9rZW4gbWludGVkIGluXG4gICAqICBhIHRlbmFudCBvcmcgaXMgcmVmdXNlZCBldmVuIGZvciB0aGUgc2FtZSB1c2VyLiBTd2l0Y2ggdG8gdGhlIHN5c3RlbSBvcmcuICovXG4gIFNZU1RFTV9PUkdfUkVRVUlSRUQgPSAnU1lTVEVNX09SR19SRVFVSVJFRCcsXG4gIC8qKiBUaGUgcHVibGlzaGVyIGhhc24ndCBhY2NlcHRlZCB0aGUgQ1VSUkVOVCBwdWJsaXNoZXIgdGVybXMgdmVyc2lvbiwgc28gaXRcbiAgICogIGNhbid0IHN1Ym1pdCBuZXcgcmVxdWVzdHMgKGV4aXN0aW5nIGxpc3RpbmdzIGFyZSB1bmFmZmVjdGVkKS4gKi9cbiAgUFVCTElTSEVSX1RFUk1TX1JFUVVJUkVEID0gJ1BVQkxJU0hFUl9URVJNU19SRVFVSVJFRCcsXG4gIC8qKiBQdWJsaXNoaW5nIGlzIGRvbmUgZnJvbSB0aGUgUk9PVCBvcmc7IGEgdGVhbSBvcmcgY2FuJ3Qgb3duIGEgcHVibGlzaGVyIG9yXG4gICAqICBzdWJtaXQgcmVxdWVzdHMuICovXG4gIFBVQkxJU0hFUl9ST09UX09SR19SRVFVSVJFRCA9ICdQVUJMSVNIRVJfUk9PVF9PUkdfUkVRVUlSRUQnLFxuICAvKiogVGhlIHB1Ymxpc2hlciBpcyBzdXNwZW5kZWQgYnkgdGhlIHN5c3RlbSBvcmcuICovXG4gIFBVQkxJU0hFUl9TVVNQRU5ERUQgPSAnUFVCTElTSEVSX1NVU1BFTkRFRCcsXG4gIC8qKiBUZW5hbnQgcHVibGlzaGluZyBpcyBzd2l0Y2hlZCBvZmYgb24gdGhpcyBpbnN0YW5jZSAoYFBMVUdJTl9QVUJMSVNISU5HX0VOQUJMRURgKS4gKi9cbiAgUExVR0lOX1BVQkxJU0hJTkdfRElTQUJMRUQgPSAnUExVR0lOX1BVQkxJU0hJTkdfRElTQUJMRUQnLFxuICAvKiogUmV2aWV3IHdyaXRlcyBhcmUgc3dpdGNoZWQgb2ZmIG9uIHRoaXMgaW5zdGFuY2UgKGBQTFVHSU5fUkVWSUVXU19FTkFCTEVEYCk6XG4gICAqICByZXZpZXdzIHN0YXkgcmVhZGFibGUsIG5vdGhpbmcgbmV3IGlzIHdyaXR0ZW4uICovXG4gIFBMVUdJTl9SRVZJRVdTX0RJU0FCTEVEID0gJ1BMVUdJTl9SRVZJRVdTX0RJU0FCTEVEJyxcbiAgLyoqIEEgbWVtYmVyIG9mIHRoZSBwdWJsaXNoZXIncyBvd24gb3JnYW5pemF0aW9uIHRyaWVkIHRvIHJldmlldyAob3Igdm90ZSBvbiBhXG4gICAqICByZXZpZXcgb2YpIG9uZSBvZiBpdHMgbGlzdGluZ3MgKHNlbGYtcHJvbW90aW9uKS4gKi9cbiAgUkVWSUVXX1NFTEZfUFJPTU9USU9OID0gJ1JFVklFV19TRUxGX1BST01PVElPTicsXG4gIC8qKiBTZXBhcmF0aW9uIG9mIGR1dGllczogdGhlIGNhbGxlciBtYXkgbm90IGRlY2lkZSB0aGlzIHJlcXVlc3Qg4oCUXG4gICAqICBpdCBjYW1lIGZyb20gYW4gb3JnIHRoZXkgYmVsb25nIHRvLCB0aGV5IHVwbG9hZGVkIHRoZSB2ZXJzaW9uLCBvciB0aGV5XG4gICAqICBnYXZlIHRoZSBmaXJzdCBvZiB0d28gYXBwcm92YWxzLiAqL1xuICBTRVBBUkFUSU9OX09GX0RVVElFUyA9ICdTRVBBUkFUSU9OX09GX0RVVElFUycsXG4gIE9SR19NSVNNQVRDSCA9ICdPUkdfTUlTTUFUQ0gnLFxuICBDT01QTElBTkNFX1ZJT0xBVElPTiA9ICdDT01QTElBTkNFX1ZJT0xBVElPTicsXG5cbiAgLy8gTm90IGZvdW5kIGVycm9ycyAoNDA0KVxuICBOT1RfRk9VTkQgPSAnTk9UX0ZPVU5EJyxcbiAgT1JHX05PVF9GT1VORCA9ICdPUkdfTk9UX0ZPVU5EJyxcbiAgLyoqIFRoZSBhbm9ueW1vdXMgcGx1Z2luIHN1Ym1pc3Npb24gQVBJIGlzIG9mZiBvbiB0aGlzIGluc3RhbmNlXG4gICAqICAoYEFOT05ZTU9VU19TVUJNSVNTSU9OU19FTkFCTEVEYCwgb3Igb3V0Ym91bmQgZW1haWwgaXNuJ3QgY29uZmlndXJlZCkg4oCUXG4gICAqICBhbnN3ZXJlZCBhcyBhIHBsYWluIDQwNCAoZG9jcy9wbHVnaW4tcHVibGlzaGluZy5tZCkuICovXG4gIFNVQk1JU1NJT05TX0RJU0FCTEVEID0gJ1NVQk1JU1NJT05TX0RJU0FCTEVEJyxcblxuICAvLyBWYWxpZGF0aW9uIGVycm9ycyAoNDAwKVxuICBWQUxJREFUSU9OX0VSUk9SID0gJ1ZBTElEQVRJT05fRVJST1InLFxuICBNSVNTSU5HX1JFUVVJUkVEX0ZJRUxEID0gJ01JU1NJTkdfUkVRVUlSRURfRklFTEQnLFxuICAvKiogQSBwcm9vZi1vZi13b3JrIGFuc3dlciBpcyBtaXNzaW5nLCBtYWxmb3JtZWQsIGV4cGlyZWQsIHRvbyBlYXN5LCB3cm9uZyxcbiAgICogIG9yIHdhcyBhbHJlYWR5IHVzZWQgKGFub255bW91cyBzdWJtaXNzaW9ucykuICovXG4gIFBST09GX09GX1dPUktfSU5WQUxJRCA9ICdQUk9PRl9PRl9XT1JLX0lOVkFMSUQnLFxuICBURU1QTEFURV9VTktOT1dOX1BBVEggPSAnVEVNUExBVEVfVU5LTk9XTl9QQVRIJyxcbiAgVEVNUExBVEVfQ1lDTEUgPSAnVEVNUExBVEVfQ1lDTEUnLFxuICBURU1QTEFURV9QQVJTRV9FUlJPUiA9ICdURU1QTEFURV9QQVJTRV9FUlJPUicsXG4gIFRFTVBMQVRFX1RZUEVfTUlTTUFUQ0ggPSAnVEVNUExBVEVfVFlQRV9NSVNNQVRDSCcsXG4gIFRFTVBMQVRFX1NFQ1JFVFNfUkVTRVJWRUQgPSAnVEVNUExBVEVfU0VDUkVUU19SRVNFUlZFRCcsXG4gIFRFTVBMQVRFX0NPTlRSQUNUX1ZJT0xBVElPTiA9ICdURU1QTEFURV9DT05UUkFDVF9WSU9MQVRJT04nLFxuICBURU1QTEFURV9TSVpFX0VYQ0VFREVEID0gJ1RFTVBMQVRFX1NJWkVfRVhDRUVERUQnLFxuICBURU1QTEFURV9WQUxJREFUSU9OX0ZBSUxFRCA9ICdURU1QTEFURV9WQUxJREFUSU9OX0ZBSUxFRCcsXG5cbiAgLy8gUXVvdGEvUmF0ZSBsaW1pdCBlcnJvcnMgKDQyOSlcbiAgUVVPVEFfRVhDRUVERUQgPSAnUVVPVEFfRVhDRUVERUQnLFxuICBSQVRFX0xJTUlUX0VYQ0VFREVEID0gJ1JBVEVfTElNSVRfRVhDRUVERUQnLFxuICAvKiogQW4gYW5vbnltb3VzIHN1Ym1pdHRlciAocGVyIHZlcmlmaWVkIGVtYWlsLCBvciBwZXIgY2xpZW50IElQKSBpcyBhdCB0aGVcbiAgICogIHJvbGxpbmcgMjQtaG91ciBzdWJtaXNzaW9uIGNhcC4gKi9cbiAgU1VCTUlTU0lPTl9MSU1JVCA9ICdTVUJNSVNTSU9OX0xJTUlUJyxcblxuICAvLyBQYXlsb2FkIGVycm9ycyAoNDEzKVxuICBQQVlMT0FEX1RPT19MQVJHRSA9ICdQQVlMT0FEX1RPT19MQVJHRScsXG5cbiAgLy8gQ29uZmxpY3QgZXJyb3JzICg0MDkpXG4gIENPTkZMSUNUID0gJ0NPTkZMSUNUJyxcbiAgRFVQTElDQVRFX0VOVFJZID0gJ0RVUExJQ0FURV9FTlRSWScsXG4gIFNDQU5fQ09ORkxJQ1QgPSAnU0NBTl9DT05GTElDVCcsXG4gIC8qKiBBIHBsdWdpbiBpbWFnZSdzIGNvc2lnbiBzaWduYXR1cmUgKG9yIGl0cyBzaWduZWQgU0JPTSBhdHRlc3RhdGlvbikgZGlkXG4gICAqICBub3QgdmVyaWZ5IGFnYWluc3QgdGhlIHBsYXRmb3JtJ3MgcGx1Z2luLXNpZ25pbmcga2V5IOKAlCB0aGUgcmVnaXN0cnlcbiAgICogIGNvbnRlbnQgbm8gbG9uZ2VyIG1hdGNoZXMgd2hhdCB0aGUgcGxhdGZvcm0gYnVpbHQgYW5kIHNpZ25lZC4gKi9cbiAgSU1BR0VfVkVSSUZJQ0FUSU9OX0ZBSUxFRCA9ICdJTUFHRV9WRVJJRklDQVRJT05fRkFJTEVEJyxcbiAgLyoqIFRoZSBwbHVnaW4gdmVyc2lvbiBpcyBpbW11dGFibGUg4oCUIGEgcHVibGlzaCByZXF1ZXN0IHJlZmVyZW5jZXMgaXRcbiAgICogIChgZnJvemVuX2F0YCBzZXQpIG9yIGl0IGlzIHB1Ymxpc2hlZCB0byBhIGxpc3Rpbmcg4oCUIHNvIGl0IGNhbiBiZSBuZWl0aGVyXG4gICAqICByZS11cGxvYWRlZCwgZWRpdGVkIG5vciBkZWxldGVkIChkb2NzL3BsdWdpbi1wdWJsaXNoaW5nLm1kKS4gKi9cbiAgUExVR0lOX1ZFUlNJT05fRlJPWkVOID0gJ1BMVUdJTl9WRVJTSU9OX0ZST1pFTicsXG4gIC8qKiBUaGUgcGx1Z2luIHZlcnNpb24gaXMgcmVmZXJlbmNlZCBieSBvbmUgb2YgdGhlIG9yZydzIHBpcGVsaW5lcywgb3IgcHVibGlzaGVkXG4gICAqICB0byBhbiBlY29zeXN0ZW0gbGlzdGluZzsgZGVsZXRpbmcgaXQgbmVlZHMgYD9mb3JjZT10cnVlYCBwbHVzIGEgc3RlcC11cC4gKi9cbiAgUExVR0lOX1ZFUlNJT05fSU5fVVNFID0gJ1BMVUdJTl9WRVJTSU9OX0lOX1VTRScsXG4gIC8qKiBBIGZyZWV6ZSBuYW1lZCBhbiBpbWFnZSBkaWdlc3QgdGhhdCBpcyBub3QgdGhlIHZlcnNpb24ncyBzdG9yZWQgZGlnZXN0XG4gICAqICAoZmFpbCBjbG9zZWQ6IHdoYXQgd2FzIHJlcXVlc3RlZCBpcyBub3Qgd2hhdCB3b3VsZCBiZSBwdWJsaXNoZWQpLiAqL1xuICBQTFVHSU5fRElHRVNUX01JU01BVENIID0gJ1BMVUdJTl9ESUdFU1RfTUlTTUFUQ0gnLFxuICAvKiogQSBwdWJsaXNoIHJlcXVlc3QgbmVlZHMgdGhlIG9yZydzIHB1Ymxpc2hlciBwcm9maWxlLCB3aGljaCBkb2Vzbid0IGV4aXN0XG4gICAqICB5ZXQgKGRvY3MvcGx1Z2luLXB1Ymxpc2hpbmcubWQpLiBDbGFpbSBhIGhhbmRsZSBmaXJzdC4gKi9cbiAgUFVCTElTSEVSX1JFUVVJUkVEID0gJ1BVQkxJU0hFUl9SRVFVSVJFRCcsXG4gIC8qKiBUaGUgcmVxdWVzdGVkIHB1Ymxpc2hlciBoYW5kbGUgaXMgcmVzZXJ2ZWQgKE9mZmljaWFsL1ZlcmlmaWVkXG4gICAqICByZXNlcnZhdGlvbnMsIGNvbmZ1c2FibGVzKS4gU3VibWl0IGEgYGNsYWltYCByZXF1ZXN0IGluc3RlYWQuICovXG4gIFBVQkxJU0hFUl9IQU5ETEVfUkVTRVJWRUQgPSAnUFVCTElTSEVSX0hBTkRMRV9SRVNFUlZFRCcsXG4gIC8qKiBBIHB1Ymxpc2ggcmVxdWVzdCBmYWlsZWQgYSBzdWJtaXQgZ2F0ZSAocHVibGljIHZpc2liaWxpdHksIFNQRFggbGljZW5zZSxcbiAgICogIFJFQURNRSwgc2lnbmF0dXJlLCBzY2FuLCB2dWxuZXJhYmlsaXR5IGdhdGUg4oCmKTsgYGRldGFpbHMuZ2F0ZXNgIGxpc3RzIHRoZW0uICovXG4gIFBVQkxJU0hfR0FURV9GQUlMRUQgPSAnUFVCTElTSF9HQVRFX0ZBSUxFRCcsXG4gIC8qKiBBIFZlcmlmaWVkLXB1Ymxpc2hlciBhcHBsaWNhdGlvbiAob3IgaXRzIGRlY2lzaW9uKSBmcm9tIGFuIG9yZyB3aG9zZSBwbGFuXG4gICAqICBsYWNrcyB0aGUgYHZlcmlmaWVkX3B1Ymxpc2hlcmAgZmVhdHVyZSAoVGVhbSssIGRvY3MvcGx1Z2luLXB1Ymxpc2hpbmcubWQpLiAqL1xuICBWRVJJRklFRF9QTEFOX1JFUVVJUkVEID0gJ1ZFUklGSUVEX1BMQU5fUkVRVUlSRUQnLFxuICAvKiogQSBWZXJpZmllZC1wdWJsaXNoZXIgYXBwbGljYXRpb24gZnJvbSBhbiBvcmcgd2l0aCBubyBETlMtdmVyaWZpZWQgZG9tYWluLiAqL1xuICBWRVJJRklFRF9ET01BSU5fUkVRVUlSRUQgPSAnVkVSSUZJRURfRE9NQUlOX1JFUVVJUkVEJyxcbiAgLyoqIEEgVmVyaWZpZWQtcHVibGlzaGVyIGFwcGxpY2F0aW9uIGZyb20gYW4gb3JnIHdob3NlIG93bmVyIGhhcyBubyBzZWNvbmRcbiAgICogIGZhY3RvciAocGFzc2tleSBvciBhdXRoZW50aWNhdG9yIGFwcCkuICovXG4gIFZFUklGSUVEX09XTkVSX01GQV9SRVFVSVJFRCA9ICdWRVJJRklFRF9PV05FUl9NRkFfUkVRVUlSRUQnLFxuICAvKiogQSBwbHVnaW4gcmVmZXJlbmNlIG5hbWVzIGFuIGVjb3N5c3RlbSBsaXN0aW5nIHRoZSBvcmcgaGFzbid0IGluc3RhbGxlZCAob3JcbiAgICogIHdob3NlIGluc3RhbGwgaXMgcGVuZGluZywgZGVuaWVkLCBvciBkb2Vzbid0IGNvdmVyIHRoZSB2ZXJzaW9uIGFza2VkIGZvcjtcbiAgICogIGBkZXRhaWxzLnJlYXNvbmApIOKAlCBkb2NzL3BsdWdpbi1wdWJsaXNoaW5nLm1kICovXG4gIFBMVUdJTl9OT1RfSU5TVEFMTEVEID0gJ1BMVUdJTl9OT1RfSU5TVEFMTEVEJyxcbiAgLyoqIFRoZSBvcmcncyBjb25zdW1wdGlvbiBwb2xpY3kgcmVmdXNlcyB0aGUgbGlzdGluZzogaXRzIHRpZXIgaXNuJ3QgYWxsb3dlZCxcbiAgICogIHRoZSBsaXN0aW5nIGlzIGJsb2NrZWQsIG9yIGFuIGFkdmlzb3J5IGJsb2NrcyB0aGUgdmVyc2lvbiAoYGRldGFpbHMucmVhc29uYCkuICovXG4gIFBMVUdJTl9CTE9DS0VEX0JZX1BPTElDWSA9ICdQTFVHSU5fQkxPQ0tFRF9CWV9QT0xJQ1knLFxuICAvKiogVGhlIGxpc3Rpbmcgb3IgdmVyc2lvbiBjYW4ndCBiZSB1c2VkOiB5YW5rZWQsIHN1c3BlbmRlZCwgb3IgcGF1c2VkIGZvciBuZXdcbiAgICogIGluc3RhbGxzIChgZGV0YWlscy5yZWFzb25gKS4gKi9cbiAgUExVR0lOX1VOQVZBSUxBQkxFID0gJ1BMVUdJTl9VTkFWQUlMQUJMRScsXG4gIC8qKiBBbiBhdXRvLWNyZWF0ZWQgcGxhY2Vob2xkZXIgcGx1Z2luIGNhbid0IHRha2UgdGhlIG5hbWUgb2YgYSBsaXN0ZWQgcGx1Z2luXG4gICAqIOKAlCBpbnN0YWxsIHRoZSBsaXN0aW5nIGluc3RlYWQuICovXG4gIFBMVUdJTl9OQU1FX0xJU1RFRCA9ICdQTFVHSU5fTkFNRV9MSVNURUQnLFxuICAvKiogQW4gYW5vbnltb3VzIHN1Ym1pc3Npb24gbmFtZXMgYSBjb21tdW5pdHkgbGlzdGluZyBhbm90aGVyIHN1Ym1pdHRlciBvd25zLFxuICAgKiAgYSByZXNlcnZlZCBuYW1lLCBhbiBPZmZpY2lhbC9WZXJpZmllZCBsaXN0aW5nJ3MgbmFtZSwgb3Igb25lIGNvbmZ1c2FibGVcbiAgICogIHdpdGggYSB0b3AgbGlzdGluZzsgYGRldGFpbHMucmVhc29uYCBzYXlzIHdoaWNoLiAqL1xuICBOQU1FX1RBS0VOID0gJ05BTUVfVEFLRU4nLFxuXG4gIC8vIEJpbGxpbmcgZXJyb3JzXG4gIFBBWU1FTlRfTUVUSE9EX1JFUVVJUkVEID0gJ1BBWU1FTlRfTUVUSE9EX1JFUVVJUkVEJywgLy8gNDAyXG4gIERJU0NPVU5UX0NFSUxJTkdfRVhDRUVERUQgPSAnRElTQ09VTlRfQ0VJTElOR19FWENFRURFRCcsIC8vIDQwMFxuICBESVNDT1VOVF9OT1RfRk9VTkQgPSAnRElTQ09VTlRfTk9UX0ZPVU5EJywgLy8gNDA0XG4gIERJU0NPVU5UX0lOQUNUSVZFID0gJ0RJU0NPVU5UX0lOQUNUSVZFJywgLy8gNDA5XG4gIFBMQU5fT1ZFUl9DQVAgPSAnUExBTl9PVkVSX0NBUCcsIC8vIDQwOVxuICBBRERPTl9PVkVSX0NBUCA9ICdBRERPTl9PVkVSX0NBUCcsIC8vIDQwOVxuXG4gIC8vIFNlcnZlciBlcnJvcnMgKDUwMClcbiAgSU5URVJOQUxfRVJST1IgPSAnSU5URVJOQUxfRVJST1InLFxuICBEQVRBQkFTRV9FUlJPUiA9ICdEQVRBQkFTRV9FUlJPUicsXG5cbiAgLy8gTm90IGltcGxlbWVudGVkICg1MDEpIOKAlCB0aGUgY29uZmlndXJlZCBwcm92aWRlciBoYXMgbm8gc3VjaCBjYXBhYmlsaXR5XG4gIE5PVF9JTVBMRU1FTlRFRCA9ICdOT1RfSU1QTEVNRU5URUQnLFxuXG4gIC8vIFNlcnZpY2UgdW5hdmFpbGFibGUgKDUwMylcbiAgU0VSVklDRV9VTkFWQUlMQUJMRSA9ICdTRVJWSUNFX1VOQVZBSUxBQkxFJyxcbiAgQ09NUExJQU5DRV9TRVJWSUNFX1VOQVZBSUxBQkxFID0gJ0NPTVBMSUFOQ0VfU0VSVklDRV9VTkFWQUlMQUJMRScsXG59XG5cbi8qKlxuICogTWFwcyBlcnJvciBjb2RlcyB0byB0aGVpciBkZWZhdWx0IEhUVFAgc3RhdHVzIGNvZGVzLlxuICovXG5leHBvcnQgY29uc3QgRXJyb3JDb2RlU3RhdHVzOiBSZWNvcmQ8RXJyb3JDb2RlLCBudW1iZXI+ID0ge1xuICBbRXJyb3JDb2RlLlVOQVVUSE9SSVpFRF06IDQwMSxcbiAgW0Vycm9yQ29kZS5UT0tFTl9FWFBJUkVEXTogNDAxLFxuICBbRXJyb3JDb2RlLlRPS0VOX0lOVkFMSURdOiA0MDEsXG4gIFtFcnJvckNvZGUuVE9LRU5fTUlTU0lOR106IDQwMSxcbiAgW0Vycm9yQ29kZS5UT0tFTl9SRVZPS0VEXTogNDAxLFxuICBbRXJyb3JDb2RlLk1GQV9SRVFVSVJFRF06IDQwMSxcbiAgW0Vycm9yQ29kZS5SRUFVVEhfUkVRVUlSRURdOiA0MDEsXG4gIFtFcnJvckNvZGUuSU5TVUZGSUNJRU5UX1BFUk1JU1NJT05TXTogNDAzLFxuICBbRXJyb3JDb2RlLlNZU1RFTV9PUkdfUkVRVUlSRURdOiA0MDMsXG4gIFtFcnJvckNvZGUuUFVCTElTSEVSX1RFUk1TX1JFUVVJUkVEXTogNDAzLFxuICBbRXJyb3JDb2RlLlBVQkxJU0hFUl9ST09UX09SR19SRVFVSVJFRF06IDQwMyxcbiAgW0Vycm9yQ29kZS5QVUJMSVNIRVJfU1VTUEVOREVEXTogNDAzLFxuICBbRXJyb3JDb2RlLlBMVUdJTl9QVUJMSVNISU5HX0RJU0FCTEVEXTogNDAzLFxuICBbRXJyb3JDb2RlLlBMVUdJTl9SRVZJRVdTX0RJU0FCTEVEXTogNDAzLFxuICBbRXJyb3JDb2RlLlJFVklFV19TRUxGX1BST01PVElPTl06IDQwMyxcbiAgW0Vycm9yQ29kZS5TRVBBUkFUSU9OX09GX0RVVElFU106IDQwMyxcbiAgW0Vycm9yQ29kZS5IVU1BTl9TRVNTSU9OX1JFUVVJUkVEXTogNDAzLFxuICBbRXJyb3JDb2RlLk1GQV9FTlJPTExNRU5UX1JFUVVJUkVEXTogNDAzLFxuICBbRXJyb3JDb2RlLklNUEVSU09OQVRJT05fUkVBRF9PTkxZXTogNDAzLFxuICBbRXJyb3JDb2RlLk9SR19NSVNNQVRDSF06IDQwMyxcbiAgW0Vycm9yQ29kZS5DT01QTElBTkNFX1ZJT0xBVElPTl06IDQwMyxcbiAgW0Vycm9yQ29kZS5OT1RfRk9VTkRdOiA0MDQsXG4gIFtFcnJvckNvZGUuT1JHX05PVF9GT1VORF06IDQwNCxcbiAgW0Vycm9yQ29kZS5TVUJNSVNTSU9OU19ESVNBQkxFRF06IDQwNCxcbiAgW0Vycm9yQ29kZS5WQUxJREFUSU9OX0VSUk9SXTogNDAwLFxuICBbRXJyb3JDb2RlLk1JU1NJTkdfUkVRVUlSRURfRklFTERdOiA0MDAsXG4gIFtFcnJvckNvZGUuUFJPT0ZfT0ZfV09SS19JTlZBTElEXTogNDAwLFxuICBbRXJyb3JDb2RlLlRFTVBMQVRFX1VOS05PV05fUEFUSF06IDQwMCxcbiAgW0Vycm9yQ29kZS5URU1QTEFURV9DWUNMRV06IDQwMCxcbiAgW0Vycm9yQ29kZS5URU1QTEFURV9QQVJTRV9FUlJPUl06IDQwMCxcbiAgW0Vycm9yQ29kZS5URU1QTEFURV9UWVBFX01JU01BVENIXTogNDAwLFxuICBbRXJyb3JDb2RlLlRFTVBMQVRFX1NFQ1JFVFNfUkVTRVJWRURdOiA0MDAsXG4gIFtFcnJvckNvZGUuVEVNUExBVEVfQ09OVFJBQ1RfVklPTEFUSU9OXTogNDAwLFxuICBbRXJyb3JDb2RlLlRFTVBMQVRFX1NJWkVfRVhDRUVERURdOiA0MDAsXG4gIFtFcnJvckNvZGUuVEVNUExBVEVfVkFMSURBVElPTl9GQUlMRURdOiA0MDAsXG4gIFtFcnJvckNvZGUuUVVPVEFfRVhDRUVERURdOiA0MjksXG4gIFtFcnJvckNvZGUuUkFURV9MSU1JVF9FWENFRURFRF06IDQyOSxcbiAgW0Vycm9yQ29kZS5TVUJNSVNTSU9OX0xJTUlUXTogNDI5LFxuICBbRXJyb3JDb2RlLlBBWUxPQURfVE9PX0xBUkdFXTogNDEzLFxuICBbRXJyb3JDb2RlLkNPTkZMSUNUXTogNDA5LFxuICBbRXJyb3JDb2RlLkRVUExJQ0FURV9FTlRSWV06IDQwOSxcbiAgW0Vycm9yQ29kZS5TQ0FOX0NPTkZMSUNUXTogNDA5LFxuICBbRXJyb3JDb2RlLklNQUdFX1ZFUklGSUNBVElPTl9GQUlMRURdOiA0MDksXG4gIFtFcnJvckNvZGUuUExVR0lOX1ZFUlNJT05fRlJPWkVOXTogNDA5LFxuICBbRXJyb3JDb2RlLlBMVUdJTl9WRVJTSU9OX0lOX1VTRV06IDQwOSxcbiAgW0Vycm9yQ29kZS5QTFVHSU5fRElHRVNUX01JU01BVENIXTogNDA5LFxuICBbRXJyb3JDb2RlLlBVQkxJU0hFUl9SRVFVSVJFRF06IDQwOSxcbiAgW0Vycm9yQ29kZS5QVUJMSVNIRVJfSEFORExFX1JFU0VSVkVEXTogNDA5LFxuICBbRXJyb3JDb2RlLlBVQkxJU0hfR0FURV9GQUlMRURdOiA0MDksXG4gIFtFcnJvckNvZGUuVkVSSUZJRURfUExBTl9SRVFVSVJFRF06IDQwMyxcbiAgW0Vycm9yQ29kZS5WRVJJRklFRF9ET01BSU5fUkVRVUlSRURdOiA0MDksXG4gIFtFcnJvckNvZGUuVkVSSUZJRURfT1dORVJfTUZBX1JFUVVJUkVEXTogNDA5LFxuICBbRXJyb3JDb2RlLlBMVUdJTl9OT1RfSU5TVEFMTEVEXTogNDAzLFxuICBbRXJyb3JDb2RlLlBMVUdJTl9CTE9DS0VEX0JZX1BPTElDWV06IDQwMyxcbiAgW0Vycm9yQ29kZS5QTFVHSU5fVU5BVkFJTEFCTEVdOiA0MDksXG4gIFtFcnJvckNvZGUuUExVR0lOX05BTUVfTElTVEVEXTogNDA5LFxuICBbRXJyb3JDb2RlLk5BTUVfVEFLRU5dOiA0MDksXG4gIFtFcnJvckNvZGUuUEFZTUVOVF9NRVRIT0RfUkVRVUlSRURdOiA0MDIsXG4gIFtFcnJvckNvZGUuRElTQ09VTlRfQ0VJTElOR19FWENFRURFRF06IDQwMCxcbiAgW0Vycm9yQ29kZS5ESVNDT1VOVF9OT1RfRk9VTkRdOiA0MDQsXG4gIFtFcnJvckNvZGUuRElTQ09VTlRfSU5BQ1RJVkVdOiA0MDksXG4gIFtFcnJvckNvZGUuUExBTl9PVkVSX0NBUF06IDQwOSxcbiAgW0Vycm9yQ29kZS5BRERPTl9PVkVSX0NBUF06IDQwOSxcbiAgW0Vycm9yQ29kZS5JTlRFUk5BTF9FUlJPUl06IDUwMCxcbiAgW0Vycm9yQ29kZS5EQVRBQkFTRV9FUlJPUl06IDUwMCxcbiAgW0Vycm9yQ29kZS5OT1RfSU1QTEVNRU5URURdOiA1MDEsXG4gIFtFcnJvckNvZGUuU0VSVklDRV9VTkFWQUlMQUJMRV06IDUwMyxcbiAgW0Vycm9yQ29kZS5DT01QTElBTkNFX1NFUlZJQ0VfVU5BVkFJTEFCTEVdOiA1MDMsXG59O1xuXG4vKipcbiAqIEdldCB0aGUgSFRUUCBzdGF0dXMgY29kZSBmb3IgYW4gZXJyb3IgY29kZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFN0YXR1c0ZvckVycm9yQ29kZShjb2RlOiBFcnJvckNvZGUpOiBudW1iZXIge1xuICByZXR1cm4gRXJyb3JDb2RlU3RhdHVzW2NvZGVdID8/IDUwMDtcbn1cbiJdfQ==
256
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3ItY29kZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvZXJyb3ItY29kZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0Qzs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxDQUFOLElBQVksU0E0S1g7QUE1S0QsV0FBWSxTQUFTO0lBQ25CLDhCQUE4QjtJQUM5QiwwQ0FBNkIsQ0FBQTtJQUM3Qiw0Q0FBK0IsQ0FBQTtJQUMvQiw0Q0FBK0IsQ0FBQTtJQUMvQiw0Q0FBK0IsQ0FBQTtJQUMvQiw0Q0FBK0IsQ0FBQTtJQUMvQjs7O3VEQUdtRDtJQUNuRCwwQ0FBNkIsQ0FBQTtJQUM3Qjs4RUFDMEU7SUFDMUUsZ0RBQW1DLENBQUE7SUFFbkMsNkJBQTZCO0lBQzdCLGtFQUFxRCxDQUFBO0lBQ3JEO3dFQUNvRTtJQUNwRSw4REFBaUQsQ0FBQTtJQUNqRDtvRUFDZ0U7SUFDaEUsZ0VBQW1ELENBQUE7SUFDbkQ7a0VBQzhEO0lBQzlELGdFQUFtRCxDQUFBO0lBQ25EOztvRkFFZ0Y7SUFDaEYsd0RBQTJDLENBQUE7SUFDM0M7d0VBQ29FO0lBQ3BFLGtFQUFxRCxDQUFBO0lBQ3JEOzJCQUN1QjtJQUN2Qix3RUFBMkQsQ0FBQTtJQUMzRCxvREFBb0Q7SUFDcEQsd0RBQTJDLENBQUE7SUFDM0Msd0ZBQXdGO0lBQ3hGLHNFQUF5RCxDQUFBO0lBQ3pEO3lEQUNxRDtJQUNyRCxnRUFBbUQsQ0FBQTtJQUNuRDsyREFDdUQ7SUFDdkQsNERBQStDLENBQUE7SUFDL0M7OzJDQUV1QztJQUN2QywwREFBNkMsQ0FBQTtJQUM3QywwQ0FBNkIsQ0FBQTtJQUM3QiwwREFBNkMsQ0FBQTtJQUU3Qyx5QkFBeUI7SUFDekIsb0NBQXVCLENBQUE7SUFDdkIsNENBQStCLENBQUE7SUFDL0I7OytEQUUyRDtJQUMzRCwwREFBNkMsQ0FBQTtJQUU3QywwQkFBMEI7SUFDMUIsa0RBQXFDLENBQUE7SUFDckMs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QkFBa0IsQ0FBQyxFQUFFLEdBQUc7SUFDbkMsQ0FBQyxTQUFTLENBQUMsa0JBQWtCLENBQUMsRUFBRSxHQUFHO0lBQ25DLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxFQUFFLEdBQUc7SUFDM0IsQ0FBQyxTQUFTLENBQUMsMkJBQTJCLENBQUMsRUFBRSxHQUFHO0lBQzVDLENBQUMsU0FBUyxDQUFDLHNCQUFzQixDQUFDLEVBQUUsR0FBRztJQUN2QyxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLEdBQUc7SUFDakMsQ0FBQyxTQUFTLENBQUMsdUJBQXVCLENBQUMsRUFBRSxHQUFHO0lBQ3hDLENBQUMsU0FBUyxDQUFDLHlCQUF5QixDQUFDLEVBQUUsR0FBRztJQUMxQyxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLEdBQUc7SUFDbkMsQ0FBQyxTQUFTLENBQUMsaUJBQWlCLENBQUMsRUFBRSxHQUFHO0lBQ2xDLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxFQUFFLEdBQUc7SUFDOUIsQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLEVBQUUsR0FBRztJQUMvQixDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsRUFBRSxHQUFHO0lBQy9CLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxFQUFFLEdBQUc7SUFDL0IsQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLEVBQUUsR0FBRztJQUNoQyxDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLEdBQUc7SUFDcEMsQ0FBQyxTQUFTLENBQUMsOEJBQThCLENBQUMsRUFBRSxHQUFHO0NBQ2hELENBQUM7QUFFRjs7R0FFRztBQUNILE1BQU0sVUFBVSxxQkFBcUIsQ0FBQyxJQUFlO0lBQ25ELE9BQU8sZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQztBQUN0QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8qKlxuICogU3RhbmRhcmRpemVkIGVycm9yIGNvZGVzIHVzZWQgYWNyb3NzIGFsbCBBUEkgbWljcm9zZXJ2aWNlcy5cbiAqIFVzZSB0aGVzZSBjb2RlcyBpbiBlcnJvciByZXNwb25zZXMgZm9yIGNvbnNpc3RlbnQgY2xpZW50IGhhbmRsaW5nLlxuICpcbiAqIEVhY2ggSFRUUCBzdGF0dXMgY2F0ZWdvcnkgaGFzIG9uZSBwcmltYXJ5IGNvZGUuIFVzZSB0aGUgYGRldGFpbHNgXG4gKiBmaWVsZCBpbiBlcnJvciByZXNwb25zZXMgZm9yIHN1Yi10eXBlIGluZm9ybWF0aW9uIChlLmcuIHdoaWNoIHF1b3RhXG4gKiB3YXMgZXhjZWVkZWQsIHdoaWNoIGZpZWxkIGZhaWxlZCB2YWxpZGF0aW9uKS5cbiAqL1xuZXhwb3J0IGVudW0gRXJyb3JDb2RlIHtcbiAgLy8gQXV0aGVudGljYXRpb24gZXJyb3JzICg0MDEpXG4gIFVOQVVUSE9SSVpFRCA9ICdVTkFVVEhPUklaRUQnLFxuICBUT0tFTl9FWFBJUkVEID0gJ1RPS0VOX0VYUElSRUQnLFxuICBUT0tFTl9JTlZBTElEID0gJ1RPS0VOX0lOVkFMSUQnLFxuICBUT0tFTl9NSVNTSU5HID0gJ1RPS0VOX01JU1NJTkcnLFxuICBUT0tFTl9SRVZPS0VEID0gJ1RPS0VOX1JFVk9LRUQnLFxuICAvKiogVGhlIHNlc3Npb24gaXMgbm90IE1GQS1ncmFkZSAoYGFhbGAgYmVsb3cgdGhlIHJvdXRlJ3MgYG1pbkFzc3VyYW5jZWApLlxuICAgKiAgVGhlIGNsaWVudCBzZW5kcyB0aGUgcGVyc29uIHRvIGVucm9sIC8gc2lnbiBpbiBhZ2FpbiB3aXRoIGEgc2Vjb25kXG4gICAqICBmYWN0b3Ig4oCUIGl0IG11c3QgTk9UIHNpZ24gdGhlbSBvdXQgb3IgcmV0cnkgYSB0b2tlbiByZWZyZXNoLCBzaW5jZSBhXG4gICAqICByZWZyZXNoIGNhbiBuZXZlciByYWlzZSB0aGUgYXNzdXJhbmNlIGxldmVsLiAqL1xuICBNRkFfUkVRVUlSRUQgPSAnTUZBX1JFUVVJUkVEJyxcbiAgLyoqIFRoZSBzZXNzaW9uIGlzIE1GQS1ncmFkZSBidXQgaXRzIGBhdXRoX3RpbWVgIGlzIG9sZGVyIHRoYW4gdGhlIHJvdXRlJ3NcbiAgICogIGBtYXhBZ2VgIOKAlCB0aGUgcGVyc29uIG11c3QgYXV0aGVudGljYXRlIGFnYWluIChub3QgbWVyZWx5IHJlZnJlc2gpLiAqL1xuICBSRUFVVEhfUkVRVUlSRUQgPSAnUkVBVVRIX1JFUVVJUkVEJyxcblxuICAvLyBBdXRob3JpemF0aW9uIGVycm9ycyAoNDAzKVxuICBJTlNVRkZJQ0lFTlRfUEVSTUlTU0lPTlMgPSAnSU5TVUZGSUNJRU5UX1BFUk1JU1NJT05TJyxcbiAgLyoqIEEgbWFjaGluZSBjcmVkZW50aWFsIChzZXJ2aWNlIHByaW5jaXBhbCwgb3JnIHNlcnZpY2UgYWNjb3VudCwgb3IgYW5cbiAgICogIGV4Y2hhbmdlZCBhY2Nlc3Mga2V5KSByZWFjaGVkIGEgcm91dGUgdGhhdCByZXF1aXJlcyBhIHBlcnNvbi4gKi9cbiAgSFVNQU5fU0VTU0lPTl9SRVFVSVJFRCA9ICdIVU1BTl9TRVNTSU9OX1JFUVVJUkVEJyxcbiAgLyoqIEEgYm9vdHN0cmFwLWFkbWluIGVucm9sbWVudCBzZXNzaW9uIChgbWZhRW5yb2xsbWVudFBlbmRpbmdgKSByZWFjaGVkIGFcbiAgICogIHJvdXRlIG91dHNpZGUgdGhlIGVucm9sbWVudCAvIHNpZ24tb3V0IC8gc2V0dXAgYWxsb3dsaXN0LiAqL1xuICBNRkFfRU5ST0xMTUVOVF9SRVFVSVJFRCA9ICdNRkFfRU5ST0xMTUVOVF9SRVFVSVJFRCcsXG4gIC8qKiBBIHJlYWQtb25seSBpbXBlcnNvbmF0aW9uIHRva2VuIChgaW1wZXJzb25hdGlvblJlYWRPbmx5YCkgYXR0ZW1wdGVkIGFcbiAgICogIHN0YXRlLWNoYW5naW5nIHJlcXVlc3QgKGFueXRoaW5nIGJ1dCBHRVQvSEVBRC9PUFRJT05TKS4gKi9cbiAgSU1QRVJTT05BVElPTl9SRUFEX09OTFkgPSAnSU1QRVJTT05BVElPTl9SRUFEX09OTFknLFxuICAvKiogQSBwbHVnaW4tZWNvc3lzdGVtIGdvdmVybmFuY2Ugcm91dGUgKGRvY3MvcnVuYm9va3MvZWNvc3lzdGVtLW1vZGVyYXRpb24ubWQpXG4gICAqICB3YXMgY2FsbGVkIGZyb20gYW4gYWN0aXZlIG9yZyBvdGhlciB0aGFuIHRoZSBzeXN0ZW0gb3JnIOKAlCBhIHRva2VuIG1pbnRlZCBpblxuICAgKiAgYSB0ZW5hbnQgb3JnIGlzIHJlZnVzZWQgZXZlbiBmb3IgdGhlIHNhbWUgdXNlci4gU3dpdGNoIHRvIHRoZSBzeXN0ZW0gb3JnLiAqL1xuICBTWVNURU1fT1JHX1JFUVVJUkVEID0gJ1NZU1RFTV9PUkdfUkVRVUlSRUQnLFxuICAvKiogVGhlIHB1Ymxpc2hlciBoYXNuJ3QgYWNjZXB0ZWQgdGhlIENVUlJFTlQgcHVibGlzaGVyIHRlcm1zIHZlcnNpb24sIHNvIGl0XG4gICAqICBjYW4ndCBzdWJtaXQgbmV3IHJlcXVlc3RzIChleGlzdGluZyBsaXN0aW5ncyBhcmUgdW5hZmZlY3RlZCkuICovXG4gIFBVQkxJU0hFUl9URVJNU19SRVFVSVJFRCA9ICdQVUJMSVNIRVJfVEVSTVNfUkVRVUlSRUQnLFxuICAvKiogUHVibGlzaGluZyBpcyBkb25lIGZyb20gdGhlIFJPT1Qgb3JnOyBhIHRlYW0gb3JnIGNhbid0IG93biBhIHB1Ymxpc2hlciBvclxuICAgKiAgc3VibWl0IHJlcXVlc3RzLiAqL1xuICBQVUJMSVNIRVJfUk9PVF9PUkdfUkVRVUlSRUQgPSAnUFVCTElTSEVSX1JPT1RfT1JHX1JFUVVJUkVEJyxcbiAgLyoqIFRoZSBwdWJsaXNoZXIgaXMgc3VzcGVuZGVkIGJ5IHRoZSBzeXN0ZW0gb3JnLiAqL1xuICBQVUJMSVNIRVJfU1VTUEVOREVEID0gJ1BVQkxJU0hFUl9TVVNQRU5ERUQnLFxuICAvKiogVGVuYW50IHB1Ymxpc2hpbmcgaXMgc3dpdGNoZWQgb2ZmIG9uIHRoaXMgaW5zdGFuY2UgKGBQTFVHSU5fUFVCTElTSElOR19FTkFCTEVEYCkuICovXG4gIFBMVUdJTl9QVUJMSVNISU5HX0RJU0FCTEVEID0gJ1BMVUdJTl9QVUJMSVNISU5HX0RJU0FCTEVEJyxcbiAgLyoqIFJldmlldyB3cml0ZXMgYXJlIHN3aXRjaGVkIG9mZiBvbiB0aGlzIGluc3RhbmNlIChgUExVR0lOX1JFVklFV1NfRU5BQkxFRGApOlxuICAgKiAgcmV2aWV3cyBzdGF5IHJlYWRhYmxlLCBub3RoaW5nIG5ldyBpcyB3cml0dGVuLiAqL1xuICBQTFVHSU5fUkVWSUVXU19ESVNBQkxFRCA9ICdQTFVHSU5fUkVWSUVXU19ESVNBQkxFRCcsXG4gIC8qKiBBIG1lbWJlciBvZiB0aGUgcHVibGlzaGVyJ3Mgb3duIG9yZ2FuaXphdGlvbiB0cmllZCB0byByZXZpZXcgKG9yIHZvdGUgb24gYVxuICAgKiAgcmV2aWV3IG9mKSBvbmUgb2YgaXRzIGxpc3RpbmdzIChzZWxmLXByb21vdGlvbikuICovXG4gIFJFVklFV19TRUxGX1BST01PVElPTiA9ICdSRVZJRVdfU0VMRl9QUk9NT1RJT04nLFxuICAvKiogU2VwYXJhdGlvbiBvZiBkdXRpZXM6IHRoZSBjYWxsZXIgbWF5IG5vdCBkZWNpZGUgdGhpcyByZXF1ZXN0IOKAlFxuICAgKiAgaXQgY2FtZSBmcm9tIGFuIG9yZyB0aGV5IGJlbG9uZyB0bywgdGhleSB1cGxvYWRlZCB0aGUgdmVyc2lvbiwgb3IgdGhleVxuICAgKiAgZ2F2ZSB0aGUgZmlyc3Qgb2YgdHdvIGFwcHJvdmFscy4gKi9cbiAgU0VQQVJBVElPTl9PRl9EVVRJRVMgPSAnU0VQQVJBVElPTl9PRl9EVVRJRVMnLFxuICBPUkdfTUlTTUFUQ0ggPSAnT1JHX01JU01BVENIJyxcbiAgQ09NUExJQU5DRV9WSU9MQVRJT04gPSAnQ09NUExJQU5DRV9WSU9MQVRJT04nLFxuXG4gIC8vIE5vdCBmb3VuZCBlcnJvcnMgKDQwNClcbiAgTk9UX0ZPVU5EID0gJ05PVF9GT1VORCcsXG4gIE9SR19OT1RfRk9VTkQgPSAnT1JHX05PVF9GT1VORCcsXG4gIC8qKiBUaGUgYW5vbnltb3VzIHBsdWdpbiBzdWJtaXNzaW9uIEFQSSBpcyBvZmYgb24gdGhpcyBpbnN0YW5jZVxuICAgKiAgKGBBTk9OWU1PVVNfU1VCTUlTU0lPTlNfRU5BQkxFRGAsIG9yIG91dGJvdW5kIGVtYWlsIGlzbid0IGNvbmZpZ3VyZWQpIOKAlFxuICAgKiAgYW5zd2VyZWQgYXMgYSBwbGFpbiA0MDQgKGRvY3MvcGx1Z2luLXB1Ymxpc2hpbmcubWQpLiAqL1xuICBTVUJNSVNTSU9OU19ESVNBQkxFRCA9ICdTVUJNSVNTSU9OU19ESVNBQkxFRCcsXG5cbiAgLy8gVmFsaWRhdGlvbiBlcnJvcnMgKDQwMClcbiAgVkFMSURBVElPTl9FUlJPUiA9ICdWQUxJREFUSU9OX0VSUk9SJyxcbiAgTUlTU0lOR19SRVFVSVJFRF9GSUVMRCA9ICdNSVNTSU5HX1JFUVVJUkVEX0ZJRUxEJyxcbiAgLyoqIEEgcHJvb2Ytb2Ytd29yayBhbnN3ZXIgaXMgbWlzc2luZywgbWFsZm9ybWVkLCBleHBpcmVkLCB0b28gZWFzeSwgd3JvbmcsXG4gICAqICBvciB3YXMgYWxyZWFkeSB1c2VkIChhbm9ueW1vdXMgc3VibWlzc2lvbnMpLiAqL1xuICBQUk9PRl9PRl9XT1JLX0lOVkFMSUQgPSAnUFJPT0ZfT0ZfV09SS19JTlZBTElEJyxcbiAgVEVNUExBVEVfVU5LTk9XTl9QQVRIID0gJ1RFTVBMQVRFX1VOS05PV05fUEFUSCcsXG4gIFRFTVBMQVRFX0NZQ0xFID0gJ1RFTVBMQVRFX0NZQ0xFJyxcbiAgVEVNUExBVEVfUEFSU0VfRVJST1IgPSAnVEVNUExBVEVfUEFSU0VfRVJST1InLFxuICBURU1QTEFURV9UWVBFX01JU01BVENIID0gJ1RFTVBMQVRFX1RZUEVfTUlTTUFUQ0gnLFxuICBURU1QTEFURV9TRUNSRVRTX1JFU0VSVkVEID0gJ1RFTVBMQVRFX1NFQ1JFVFNfUkVTRVJWRUQnLFxuICBURU1QTEFURV9DT05UUkFDVF9WSU9MQVRJT04gPSAnVEVNUExBVEVfQ09OVFJBQ1RfVklPTEFUSU9OJyxcbiAgVEVNUExBVEVfU0laRV9FWENFRURFRCA9ICdURU1QTEFURV9TSVpFX0VYQ0VFREVEJyxcbiAgVEVNUExBVEVfVkFMSURBVElPTl9GQUlMRUQgPSAnVEVNUExBVEVfVkFMSURBVElPTl9GQUlMRUQnLFxuXG4gIC8vIFF1b3RhL1JhdGUgbGltaXQgZXJyb3JzICg0MjkpXG4gIFFVT1RBX0VYQ0VFREVEID0gJ1FVT1RBX0VYQ0VFREVEJyxcbiAgUkFURV9MSU1JVF9FWENFRURFRCA9ICdSQVRFX0xJTUlUX0VYQ0VFREVEJyxcbiAgLyoqIEFuIGFub255bW91cyBzdWJtaXR0ZXIgKHBlciB2ZXJpZmllZCBlbWFpbCwgb3IgcGVyIGNsaWVudCBJUCkgaXMgYXQgdGhlXG4gICAqICByb2xsaW5nIDI0LWhvdXIgc3VibWlzc2lvbiBjYXAuICovXG4gIFNVQk1JU1NJT05fTElNSVQgPSAnU1VCTUlTU0lPTl9MSU1JVCcsXG5cbiAgLy8gUGF5bG9hZCBlcnJvcnMgKDQxMylcbiAgUEFZTE9BRF9UT09fTEFSR0UgPSAnUEFZTE9BRF9UT09fTEFSR0UnLFxuXG4gIC8vIENvbmZsaWN0IGVycm9ycyAoNDA5KVxuICBDT05GTElDVCA9ICdDT05GTElDVCcsXG4gIERVUExJQ0FURV9FTlRSWSA9ICdEVVBMSUNBVEVfRU5UUlknLFxuICBTQ0FOX0NPTkZMSUNUID0gJ1NDQU5fQ09ORkxJQ1QnLFxuICAvKiogQSBwbHVnaW4gaW1hZ2UncyBjb3NpZ24gc2lnbmF0dXJlIChvciBpdHMgc2lnbmVkIFNCT00gYXR0ZXN0YXRpb24pIGRpZFxuICAgKiAgbm90IHZlcmlmeSBhZ2FpbnN0IHRoZSBwbGF0Zm9ybSdzIHBsdWdpbi1zaWduaW5nIGtleSDigJQgdGhlIHJlZ2lzdHJ5XG4gICAqICBjb250ZW50IG5vIGxvbmdlciBtYXRjaGVzIHdoYXQgdGhlIHBsYXRmb3JtIGJ1aWx0IGFuZCBzaWduZWQuICovXG4gIElNQUdFX1ZFUklGSUNBVElPTl9GQUlMRUQgPSAnSU1BR0VfVkVSSUZJQ0FUSU9OX0ZBSUxFRCcsXG4gIC8qKiBUaGUgcGx1Z2luIHZlcnNpb24gaXMgaW1tdXRhYmxlIOKAlCBhIHB1Ymxpc2ggcmVxdWVzdCByZWZlcmVuY2VzIGl0XG4gICAqICAoYGZyb3plbl9hdGAgc2V0KSBvciBpdCBpcyBwdWJsaXNoZWQgdG8gYSBsaXN0aW5nIOKAlCBzbyBpdCBjYW4gYmUgbmVpdGhlclxuICAgKiAgcmUtdXBsb2FkZWQsIGVkaXRlZCBub3IgZGVsZXRlZCAoZG9jcy9wbHVnaW4tcHVibGlzaGluZy5tZCkuICovXG4gIFBMVUdJTl9WRVJTSU9OX0ZST1pFTiA9ICdQTFVHSU5fVkVSU0lPTl9GUk9aRU4nLFxuICAvKiogVGhlIHBsdWdpbiB2ZXJzaW9uIGlzIHJlZmVyZW5jZWQgYnkgb25lIG9mIHRoZSBvcmcncyBwaXBlbGluZXMsIG9yIHB1Ymxpc2hlZFxuICAgKiAgdG8gYW4gZWNvc3lzdGVtIGxpc3Rpbmc7IGRlbGV0aW5nIGl0IG5lZWRzIGA/Zm9yY2U9dHJ1ZWAgcGx1cyBhIHN0ZXAtdXAuICovXG4gIFBMVUdJTl9WRVJTSU9OX0lOX1VTRSA9ICdQTFVHSU5fVkVSU0lPTl9JTl9VU0UnLFxuICAvKiogQSBmcmVlemUgbmFtZWQgYW4gaW1hZ2UgZGlnZXN0IHRoYXQgaXMgbm90IHRoZSB2ZXJzaW9uJ3Mgc3RvcmVkIGRpZ2VzdFxuICAgKiAgKGZhaWwgY2xvc2VkOiB3aGF0IHdhcyByZXF1ZXN0ZWQgaXMgbm90IHdoYXQgd291bGQgYmUgcHVibGlzaGVkKS4gKi9cbiAgUExVR0lOX0RJR0VTVF9NSVNNQVRDSCA9ICdQTFVHSU5fRElHRVNUX01JU01BVENIJyxcbiAgLyoqIEEgcHVibGlzaCByZXF1ZXN0IG5lZWRzIHRoZSBvcmcncyBwdWJsaXNoZXIgcHJvZmlsZSwgd2hpY2ggZG9lc24ndCBleGlzdFxuICAgKiAgeWV0IChkb2NzL3BsdWdpbi1wdWJsaXNoaW5nLm1kKS4gQ2xhaW0gYSBoYW5kbGUgZmlyc3QuICovXG4gIFBVQkxJU0hFUl9SRVFVSVJFRCA9ICdQVUJMSVNIRVJfUkVRVUlSRUQnLFxuICAvKiogVGhlIHJlcXVlc3RlZCBwdWJsaXNoZXIgaGFuZGxlIGlzIHJlc2VydmVkIChPZmZpY2lhbC9WZXJpZmllZFxuICAgKiAgcmVzZXJ2YXRpb25zLCBjb25mdXNhYmxlcykuIFN1Ym1pdCBhIGBjbGFpbWAgcmVxdWVzdCBpbnN0ZWFkLiAqL1xuICBQVUJMSVNIRVJfSEFORExFX1JFU0VSVkVEID0gJ1BVQkxJU0hFUl9IQU5ETEVfUkVTRVJWRUQnLFxuICAvKiogQSBwdWJsaXNoIHJlcXVlc3QgZmFpbGVkIGEgc3VibWl0IGdhdGUgKHB1YmxpYyB2aXNpYmlsaXR5LCBTUERYIGxpY2Vuc2UsXG4gICAqICBSRUFETUUsIHNpZ25hdHVyZSwgc2NhbiwgdnVsbmVyYWJpbGl0eSBnYXRlIOKApik7IGBkZXRhaWxzLmdhdGVzYCBsaXN0cyB0aGVtLiAqL1xuICBQVUJMSVNIX0dBVEVfRkFJTEVEID0gJ1BVQkxJU0hfR0FURV9GQUlMRUQnLFxuICAvKiogQSBWZXJpZmllZC1wdWJsaXNoZXIgYXBwbGljYXRpb24gKG9yIGl0cyBkZWNpc2lvbikgZnJvbSBhbiBvcmcgd2hvc2UgcGxhblxuICAgKiAgbGFja3MgdGhlIGB2ZXJpZmllZF9wdWJsaXNoZXJgIGZlYXR1cmUgKFRlYW0rLCBkb2NzL3BsdWdpbi1wdWJsaXNoaW5nLm1kKS4gKi9cbiAgVkVSSUZJRURfUExBTl9SRVFVSVJFRCA9ICdWRVJJRklFRF9QTEFOX1JFUVVJUkVEJyxcbiAgLyoqIEEgVmVyaWZpZWQtcHVibGlzaGVyIGFwcGxpY2F0aW9uIGZyb20gYW4gb3JnIHdpdGggbm8gRE5TLXZlcmlmaWVkIGRvbWFpbi4gKi9cbiAgVkVSSUZJRURfRE9NQUlOX1JFUVVJUkVEID0gJ1ZFUklGSUVEX0RPTUFJTl9SRVFVSVJFRCcsXG4gIC8qKiBBIFZlcmlmaWVkLXB1Ymxpc2hlciBhcHBsaWNhdGlvbiBmcm9tIGFuIG9yZyB3aG9zZSBvd25lciBoYXMgbm8gc2Vjb25kXG4gICAqICBmYWN0b3IgKHBhc3NrZXkgb3IgYXV0aGVudGljYXRvciBhcHApLiAqL1xuICBWRVJJRklFRF9PV05FUl9NRkFfUkVRVUlSRUQgPSAnVkVSSUZJRURfT1dORVJfTUZBX1JFUVVJUkVEJyxcbiAgLyoqIEEgcGx1Z2luIHJlZmVyZW5jZSBuYW1lcyBhbiBlY29zeXN0ZW0gbGlzdGluZyB0aGUgb3JnIGhhc24ndCBpbnN0YWxsZWQgKG9yXG4gICAqICB3aG9zZSBpbnN0YWxsIGlzIHBlbmRpbmcsIGRlbmllZCwgb3IgZG9lc24ndCBjb3ZlciB0aGUgdmVyc2lvbiBhc2tlZCBmb3I7XG4gICAqICBgZGV0YWlscy5yZWFzb25gKSDigJQgZG9jcy9wbHVnaW4tcHVibGlzaGluZy5tZCAqL1xuICBQTFVHSU5fTk9UX0lOU1RBTExFRCA9ICdQTFVHSU5fTk9UX0lOU1RBTExFRCcsXG4gIC8qKiBUaGUgb3JnJ3MgY29uc3VtcHRpb24gcG9saWN5IHJlZnVzZXMgdGhlIGxpc3Rpbmc6IGl0cyB0aWVyIGlzbid0IGFsbG93ZWQsXG4gICAqICB0aGUgbGlzdGluZyBpcyBibG9ja2VkLCBvciBhbiBhZHZpc29yeSBibG9ja3MgdGhlIHZlcnNpb24gKGBkZXRhaWxzLnJlYXNvbmApLiAqL1xuICBQTFVHSU5fQkxPQ0tFRF9CWV9QT0xJQ1kgPSAnUExVR0lOX0JMT0NLRURfQllfUE9MSUNZJyxcbiAgLyoqIFRoZSBsaXN0aW5nIG9yIHZlcnNpb24gY2FuJ3QgYmUgdXNlZDogeWFua2VkLCBzdXNwZW5kZWQsIG9yIHBhdXNlZCBmb3IgbmV3XG4gICAqICBpbnN0YWxscyAoYGRldGFpbHMucmVhc29uYCkuICovXG4gIFBMVUdJTl9VTkFWQUlMQUJMRSA9ICdQTFVHSU5fVU5BVkFJTEFCTEUnLFxuICAvKiogQW4gYXV0by1jcmVhdGVkIHBsYWNlaG9sZGVyIHBsdWdpbiBjYW4ndCB0YWtlIHRoZSBuYW1lIG9mIGEgbGlzdGVkIHBsdWdpblxuICAgKiDigJQgaW5zdGFsbCB0aGUgbGlzdGluZyBpbnN0ZWFkLiAqL1xuICBQTFVHSU5fTkFNRV9MSVNURUQgPSAnUExVR0lOX05BTUVfTElTVEVEJyxcbiAgLyoqIEFuIGFub255bW91cyBzdWJtaXNzaW9uIG5hbWVzIGEgY29tbXVuaXR5IGxpc3RpbmcgYW5vdGhlciBzdWJtaXR0ZXIgb3ducyxcbiAgICogIGEgcmVzZXJ2ZWQgbmFtZSwgYW4gT2ZmaWNpYWwvVmVyaWZpZWQgbGlzdGluZydzIG5hbWUsIG9yIG9uZSBjb25mdXNhYmxlXG4gICAqICB3aXRoIGEgdG9wIGxpc3Rpbmc7IGBkZXRhaWxzLnJlYXNvbmAgc2F5cyB3aGljaC4gKi9cbiAgTkFNRV9UQUtFTiA9ICdOQU1FX1RBS0VOJyxcbiAgLyoqIEEgZmxhZ2dlZCBwbHVnaW4gdmVyc2lvbiAoYSByZXNjYW4gZm91bmQgZml4YWJsZSBDcml0aWNhbCBmaW5kaW5ncyBhYm92ZVxuICAgKiAgYFBMVUdJTl9WVUxOX01BWF9DUklUSUNBTGApIHdhcyBwaW5uZWQgZXhhY3RseSB3aGlsZVxuICAgKiAgYFBMVUdJTl9CTE9DS19PTl9ORVdfQ1JJVElDQUxgIGlzIG9uOyB0aGUgbWVzc2FnZSBuYW1lcyB0aGUgZml4LiBSYW5nZXNcbiAgICogIGFuZCB0aGUgZGVmYXVsdCBza2lwIGZsYWdnZWQgdmVyc2lvbnMgaW5zdGVhZCAoZG9jcy9wbHVnaW4taW5zdGFsbGluZy5tZCkuICovXG4gIFBMVUdJTl9WRVJTSU9OX1ZVTE5fQkxPQ0tFRCA9ICdQTFVHSU5fVkVSU0lPTl9WVUxOX0JMT0NLRUQnLFxuXG4gIC8vIFBsdWdpbiBidWlsZCBvdXRjb21lcyAoNDIyKSDigJQgdGVybWluYWwgYnVpbGQgZmFpbHVyZXMsIHJlcG9ydGVkIG9uIHRoZSBidWlsZFxuICAvLyBzdHJlYW0gYW5kIGluIHRoZSBidWlsZCdzIGZhaWx1cmUgcmVjb3JkLCBuZXZlciBhbnN3ZXJlZCBvbiBhIHJlcXVlc3QuXG4gIC8qKiBUaGUgYnVpbHQgaW1hZ2UgY291bGQgbm90IGJlIHZ1bG5lcmFiaWxpdHktc2Nhbm5lZCBhZnRlciBldmVyeSByZXRyeSwgc29cbiAgICogIG5vdGhpbmcgd2FzIHBlcnNpc3RlZCAoZG9jcy9wbHVnaW4tcHVibGlzaGluZy5tZCkuICovXG4gIElNQUdFX1NDQU5fVU5BVkFJTEFCTEUgPSAnSU1BR0VfU0NBTl9VTkFWQUlMQUJMRScsXG4gIC8qKiBUaGUgYnVpbHQgaW1hZ2UgaGFzIG1vcmUgZml4YWJsZSBDcml0aWNhbCBmaW5kaW5ncyB0aGFuIHRoZSBwbGF0Zm9ybVxuICAgKiAgZmxvb3IgYFBMVUdJTl9WVUxOX01BWF9DUklUSUNBTGA7IHRoZSBtZXNzYWdlIGxpc3RzIHRoZW0gd2l0aCB0aGVpciBmaXhlcy4gKi9cbiAgUExVR0lOX1ZVTE5fR0FURSA9ICdQTFVHSU5fVlVMTl9HQVRFJyxcblxuICAvLyBCaWxsaW5nIGVycm9yc1xuICBQQVlNRU5UX01FVEhPRF9SRVFVSVJFRCA9ICdQQVlNRU5UX01FVEhPRF9SRVFVSVJFRCcsIC8vIDQwMlxuICBESVNDT1VOVF9DRUlMSU5HX0VYQ0VFREVEID0gJ0RJU0NPVU5UX0NFSUxJTkdfRVhDRUVERUQnLCAvLyA0MDBcbiAgRElTQ09VTlRfTk9UX0ZPVU5EID0gJ0RJU0NPVU5UX05PVF9GT1VORCcsIC8vIDQwNFxuICBESVNDT1VOVF9JTkFDVElWRSA9ICdESVNDT1VOVF9JTkFDVElWRScsIC8vIDQwOVxuICBQTEFOX09WRVJfQ0FQID0gJ1BMQU5fT1ZFUl9DQVAnLCAvLyA0MDlcbiAgQURET05fT1ZFUl9DQVAgPSAnQURET05fT1ZFUl9DQVAnLCAvLyA0MDlcblxuICAvLyBTZXJ2ZXIgZXJyb3JzICg1MDApXG4gIElOVEVSTkFMX0VSUk9SID0gJ0lOVEVSTkFMX0VSUk9SJyxcbiAgREFUQUJBU0VfRVJST1IgPSAnREFUQUJBU0VfRVJST1InLFxuXG4gIC8vIE5vdCBpbXBsZW1lbnRlZCAoNTAxKSDigJQgdGhlIGNvbmZpZ3VyZWQgcHJvdmlkZXIgaGFzIG5vIHN1Y2ggY2FwYWJpbGl0eVxuICBOT1RfSU1QTEVNRU5URUQgPSAnTk9UX0lNUExFTUVOVEVEJyxcblxuICAvLyBTZXJ2aWNlIHVuYXZhaWxhYmxlICg1MDMpXG4gIFNFUlZJQ0VfVU5BVkFJTEFCTEUgPSAnU0VSVklDRV9VTkFWQUlMQUJMRScsXG4gIENPTVBMSUFOQ0VfU0VSVklDRV9VTkFWQUlMQUJMRSA9ICdDT01QTElBTkNFX1NFUlZJQ0VfVU5BVkFJTEFCTEUnLFxufVxuXG4vKipcbiAqIE1hcHMgZXJyb3IgY29kZXMgdG8gdGhlaXIgZGVmYXVsdCBIVFRQIHN0YXR1cyBjb2Rlcy5cbiAqL1xuZXhwb3J0IGNvbnN0IEVycm9yQ29kZVN0YXR1czogUmVjb3JkPEVycm9yQ29kZSwgbnVtYmVyPiA9IHtcbiAgW0Vycm9yQ29kZS5VTkFVVEhPUklaRURdOiA0MDEsXG4gIFtFcnJvckNvZGUuVE9LRU5fRVhQSVJFRF06IDQwMSxcbiAgW0Vycm9yQ29kZS5UT0tFTl9JTlZBTElEXTogNDAxLFxuICBbRXJyb3JDb2RlLlRPS0VOX01JU1NJTkddOiA0MDEsXG4gIFtFcnJvckNvZGUuVE9LRU5fUkVWT0tFRF06IDQwMSxcbiAgW0Vycm9yQ29kZS5NRkFfUkVRVUlSRURdOiA0MDEsXG4gIFtFcnJvckNvZGUuUkVBVVRIX1JFUVVJUkVEXTogNDAxLFxuICBbRXJyb3JDb2RlLklOU1VGRklDSUVOVF9QRVJNSVNTSU9OU106IDQwMyxcbiAgW0Vycm9yQ29kZS5TWVNURU1fT1JHX1JFUVVJUkVEXTogNDAzLFxuICBbRXJyb3JDb2RlLlBVQkxJU0hFUl9URVJNU19SRVFVSVJFRF06IDQwMyxcbiAgW0Vycm9yQ29kZS5QVUJMSVNIRVJfUk9PVF9PUkdfUkVRVUlSRURdOiA0MDMsXG4gIFtFcnJvckNvZGUuUFVCTElTSEVSX1NVU1BFTkRFRF06IDQwMyxcbiAgW0Vycm9yQ29kZS5QTFVHSU5fUFVCTElTSElOR19ESVNBQkxFRF06IDQwMyxcbiAgW0Vycm9yQ29kZS5QTFVHSU5fUkVWSUVXU19ESVNBQkxFRF06IDQwMyxcbiAgW0Vycm9yQ29kZS5SRVZJRVdfU0VMRl9QUk9NT1RJT05dOiA0MDMsXG4gIFtFcnJvckNvZGUuU0VQQVJBVElPTl9PRl9EVVRJRVNdOiA0MDMsXG4gIFtFcnJvckNvZGUuSFVNQU5fU0VTU0lPTl9SRVFVSVJFRF06IDQwMyxcbiAgW0Vycm9yQ29kZS5NRkFfRU5ST0xMTUVOVF9SRVFVSVJFRF06IDQwMyxcbiAgW0Vycm9yQ29kZS5JTVBFUlNPTkFUSU9OX1JFQURfT05MWV06IDQwMyxcbiAgW0Vycm9yQ29kZS5PUkdfTUlTTUFUQ0hdOiA0MDMsXG4gIFtFcnJvckNvZGUuQ09NUExJQU5DRV9WSU9MQVRJT05dOiA0MDMsXG4gIFtFcnJvckNvZGUuTk9UX0ZPVU5EXTogNDA0LFxuICBbRXJyb3JDb2RlLk9SR19OT1RfRk9VTkRdOiA0MDQsXG4gIFtFcnJvckNvZGUuU1VCTUlTU0lPTlNfRElTQUJMRURdOiA0MDQsXG4gIFtFcnJvckNvZGUuVkFMSURBVElPTl9FUlJPUl06IDQwMCxcbiAgW0Vycm9yQ29kZS5NSVNTSU5HX1JFUVVJUkVEX0ZJRUxEXTogNDAwLFxuICBbRXJyb3JDb2RlLlBST09GX09GX1dPUktfSU5WQUxJRF06IDQwMCxcbiAgW0Vycm9yQ29kZS5URU1QTEFURV9VTktOT1dOX1BBVEhdOiA0MDAsXG4gIFtFcnJvckNvZGUuVEVNUExBVEVfQ1lDTEVdOiA0MDAsXG4gIFtFcnJvckNvZGUuVEVNUExBVEVfUEFSU0VfRVJST1JdOiA0MDAsXG4gIFtFcnJvckNvZGUuVEVNUExBVEVfVFlQRV9NSVNNQVRDSF06IDQwMCxcbiAgW0Vycm9yQ29kZS5URU1QTEFURV9TRUNSRVRTX1JFU0VSVkVEXTogNDAwLFxuICBbRXJyb3JDb2RlLlRFTVBMQVRFX0NPTlRSQUNUX1ZJT0xBVElPTl06IDQwMCxcbiAgW0Vycm9yQ29kZS5URU1QTEFURV9TSVpFX0VYQ0VFREVEXTogNDAwLFxuICBbRXJyb3JDb2RlLlRFTVBMQVRFX1ZBTElEQVRJT05fRkFJTEVEXTogNDAwLFxuICBbRXJyb3JDb2RlLlFVT1RBX0VYQ0VFREVEXTogNDI5LFxuICBbRXJyb3JDb2RlLlJBVEVfTElNSVRfRVhDRUVERURdOiA0MjksXG4gIFtFcnJvckNvZGUuU1VCTUlTU0lPTl9MSU1JVF06IDQyOSxcbiAgW0Vycm9yQ29kZS5QQVlMT0FEX1RPT19MQVJHRV06IDQxMyxcbiAgW0Vycm9yQ29kZS5DT05GTElDVF06IDQwOSxcbiAgW0Vycm9yQ29kZS5EVVBMSUNBVEVfRU5UUlldOiA0MDksXG4gIFtFcnJvckNvZGUuU0NBTl9DT05GTElDVF06IDQwOSxcbiAgW0Vycm9yQ29kZS5JTUFHRV9WRVJJRklDQVRJT05fRkFJTEVEXTogNDA5LFxuICBbRXJyb3JDb2RlLlBMVUdJTl9WRVJTSU9OX0ZST1pFTl06IDQwOSxcbiAgW0Vycm9yQ29kZS5QTFVHSU5fVkVSU0lPTl9JTl9VU0VdOiA0MDksXG4gIFtFcnJvckNvZGUuUExVR0lOX0RJR0VTVF9NSVNNQVRDSF06IDQwOSxcbiAgW0Vycm9yQ29kZS5QVUJMSVNIRVJfUkVRVUlSRURdOiA0MDksXG4gIFtFcnJvckNvZGUuUFVCTElTSEVSX0hBTkRMRV9SRVNFUlZFRF06IDQwOSxcbiAgW0Vycm9yQ29kZS5QVUJMSVNIX0dBVEVfRkFJTEVEXTogNDA5LFxuICBbRXJyb3JDb2RlLlZFUklGSUVEX1BMQU5fUkVRVUlSRURdOiA0MDMsXG4gIFtFcnJvckNvZGUuVkVSSUZJRURfRE9NQUlOX1JFUVVJUkVEXTogNDA5LFxuICBbRXJyb3JDb2RlLlZFUklGSUVEX09XTkVSX01GQV9SRVFVSVJFRF06IDQwOSxcbiAgW0Vycm9yQ29kZS5QTFVHSU5fTk9UX0lOU1RBTExFRF06IDQwMyxcbiAgW0Vycm9yQ29kZS5QTFVHSU5fQkxPQ0tFRF9CWV9QT0xJQ1ldOiA0MDMsXG4gIFtFcnJvckNvZGUuUExVR0lOX1VOQVZBSUxBQkxFXTogNDA5LFxuICBbRXJyb3JDb2RlLlBMVUdJTl9OQU1FX0xJU1RFRF06IDQwOSxcbiAgW0Vycm9yQ29kZS5OQU1FX1RBS0VOXTogNDA5LFxuICBbRXJyb3JDb2RlLlBMVUdJTl9WRVJTSU9OX1ZVTE5fQkxPQ0tFRF06IDQwOSxcbiAgW0Vycm9yQ29kZS5JTUFHRV9TQ0FOX1VOQVZBSUxBQkxFXTogNDIyLFxuICBbRXJyb3JDb2RlLlBMVUdJTl9WVUxOX0dBVEVdOiA0MjIsXG4gIFtFcnJvckNvZGUuUEFZTUVOVF9NRVRIT0RfUkVRVUlSRURdOiA0MDIsXG4gIFtFcnJvckNvZGUuRElTQ09VTlRfQ0VJTElOR19FWENFRURFRF06IDQwMCxcbiAgW0Vycm9yQ29kZS5ESVNDT1VOVF9OT1RfRk9VTkRdOiA0MDQsXG4gIFtFcnJvckNvZGUuRElTQ09VTlRfSU5BQ1RJVkVdOiA0MDksXG4gIFtFcnJvckNvZGUuUExBTl9PVkVSX0NBUF06IDQwOSxcbiAgW0Vycm9yQ29kZS5BRERPTl9PVkVSX0NBUF06IDQwOSxcbiAgW0Vycm9yQ29kZS5JTlRFUk5BTF9FUlJPUl06IDUwMCxcbiAgW0Vycm9yQ29kZS5EQVRBQkFTRV9FUlJPUl06IDUwMCxcbiAgW0Vycm9yQ29kZS5OT1RfSU1QTEVNRU5URURdOiA1MDEsXG4gIFtFcnJvckNvZGUuU0VSVklDRV9VTkFWQUlMQUJMRV06IDUwMyxcbiAgW0Vycm9yQ29kZS5DT01QTElBTkNFX1NFUlZJQ0VfVU5BVkFJTEFCTEVdOiA1MDMsXG59O1xuXG4vKipcbiAqIEdldCB0aGUgSFRUUCBzdGF0dXMgY29kZSBmb3IgYW4gZXJyb3IgY29kZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFN0YXR1c0ZvckVycm9yQ29kZShjb2RlOiBFcnJvckNvZGUpOiBudW1iZXIge1xuICByZXR1cm4gRXJyb3JDb2RlU3RhdHVzW2NvZGVdID8/IDUwMDtcbn1cbiJdfQ==
@@ -15,3 +15,4 @@ export { type AuditEvent, } from './audit-events.js';
15
15
  export { isEcosystemNotificationEvent, parseEcosystemNotifyRequest, nextEcosystemDigestTime, renderEcosystemManagerChange, renderEcosystemDigest, type EcosystemNotificationEventId, type EcosystemNotificationChannel, ECOSYSTEM_EMAIL_PREFERENCE_FIELDS, type EcosystemEmailPreferenceField, ECOSYSTEM_EMAIL_PREFERENCE_FIELD_NAMES, ECOSYSTEM_NOTIFICATION_EVENTS, type EcosystemRecipientSpec, type EcosystemNotifyRequest, } from './ecosystem-notifications.js';
16
16
  export { publisherTermsVersion, publisherHandleProblem, isOfficialAutoApprovalEnabled, isPluginPublishingEnabled, isAnonymousSubmissionsEnabled, isPluginReviewsEnabled, OFFICIAL_CATALOG_LOADER_ACCOUNT, DEFAULT_PUBLISHER_TERMS_VERSION, BUILTIN_RESERVED_HANDLES, TENANT_REQUEST_KINDS, PUBLISH_PERMISSION_REQUEST_KINDS, VERIFY_REQUEST_KINDS, STEP_UP_REQUEST_KINDS, REQUEST_SLA_HOURS, } from './ecosystem.js';
17
17
  export { ageScore, vulnScore, computeHealthScore, publisherHealthScore, publisherSuccessRate, healthBand, HEALTH_COMPONENTS, HEALTH_WEIGHTS, type HealthBreakdown, type HealthResult, type HealthInputs, type HealthBand, } from './plugin-health.js';
18
+ export { asScanFlag, blockOnNewCritical, describeFindings, describeFix, exceedsVulnFloor, pluginVulnMaxCritical, SCAN_FLAG_TOP_FINDINGS, VULN_FLAGGED_WARNING, vulnBlockedMessage, vulnFlaggedMessage, vulnFlaggedWarning, type PluginScanFinding, type PluginScanFlag, type VulnFlaggedWarning, } from './plugin-scan.js';
@@ -17,4 +17,5 @@ export {} from './audit-events.js';
17
17
  export { isEcosystemNotificationEvent, parseEcosystemNotifyRequest, nextEcosystemDigestTime, renderEcosystemManagerChange, renderEcosystemDigest, ECOSYSTEM_EMAIL_PREFERENCE_FIELDS, ECOSYSTEM_EMAIL_PREFERENCE_FIELD_NAMES, ECOSYSTEM_NOTIFICATION_EVENTS, } from './ecosystem-notifications.js';
18
18
  export { publisherTermsVersion, publisherHandleProblem, isOfficialAutoApprovalEnabled, isPluginPublishingEnabled, isAnonymousSubmissionsEnabled, isPluginReviewsEnabled, OFFICIAL_CATALOG_LOADER_ACCOUNT, DEFAULT_PUBLISHER_TERMS_VERSION, BUILTIN_RESERVED_HANDLES, TENANT_REQUEST_KINDS, PUBLISH_PERMISSION_REQUEST_KINDS, VERIFY_REQUEST_KINDS, STEP_UP_REQUEST_KINDS, REQUEST_SLA_HOURS, } from './ecosystem.js';
19
19
  export { ageScore, vulnScore, computeHealthScore, publisherHealthScore, publisherSuccessRate, healthBand, HEALTH_COMPONENTS, HEALTH_WEIGHTS, } from './plugin-health.js';
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLEVBQUUsU0FBUyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDcEUsT0FBTyxFQUNMLGdCQUFnQixFQUVoQixZQUFZLEVBTVosaUJBQWlCLEdBTWxCLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLGNBQWMsZUFBZSxDQUFDO0FBQzlCLE9BQU8sRUFNTixNQUFNLHVCQUF1QixDQUFDO0FBQy9CLE9BQU8sRUFFTixNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxPQUFPLEVBQ0wsa0JBQWtCLEVBQ2xCLHVCQUF1QixFQUN2QiwwQkFBMEIsRUFDMUIsaUJBQWlCLEVBRWpCLHFCQUFxQixFQUVyQiwwQkFBMEIsRUFDMUIsZ0JBQWdCLEdBR2pCLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUVOLE1BQU0sV0FBVyxDQUFDO0FBQ25CLE9BQU8sRUFDTCxlQUFlLEVBQ2YsZ0JBQWdCLEVBQ2hCLFdBQVcsRUFDWCxhQUFhLEVBR2IsV0FBVyxFQUNYLFdBQVcsRUFDWCxjQUFjLEVBQ2Qsa0JBQWtCLEVBQ2xCLFlBQVksRUFDWixnQkFBZ0IsRUFDaEIsa0JBQWtCLEdBQ25CLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxPQUFPLEVBQ0wsZUFBZSxFQUNmLGlCQUFpQixFQUNqQix5QkFBeUIsRUFDekIseUJBQXlCLEVBQ3pCLHlCQUF5QixFQUN6QixvQkFBb0IsRUFDcEIsc0JBQXNCLEVBQ3RCLHVCQUF1QixFQUN2QixhQUFhLEVBRWIsZUFBZSxFQUNmLGdCQUFnQixFQUNoQixrQkFBa0IsRUFDbEIsMkJBQTJCLEVBQzNCLDJCQUEyQixFQUMzQiwwQkFBMEIsRUFDMUIseUJBQXlCLEVBQ3pCLHFCQUFxQixFQUNyQixnQkFBZ0IsRUFDaEIsNkJBQTZCLEdBQzlCLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixZQUFZLEVBR1osbUJBQW1CLEdBQ3BCLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUVOLE1BQU0sbUJBQW1CLENBQUM7QUFDM0IsT0FBTyxFQUNMLDRCQUE0QixFQUM1QiwyQkFBMkIsRUFDM0IsdUJBQXVCLEVBQ3ZCLDRCQUE0QixFQUM1QixxQkFBcUIsRUFHckIsaUNBQWlDLEVBRWpDLHNDQUFzQyxFQUN0Qyw2QkFBNkIsR0FHOUIsTUFBTSw4QkFBOEIsQ0FBQztBQUN0QyxPQUFPLEVBQ0wscUJBQXFCLEVBQ3JCLHNCQUFzQixFQUN0Qiw2QkFBNkIsRUFDN0IseUJBQXlCLEVBQ3pCLDZCQUE2QixFQUM3QixzQkFBc0IsRUFDdEIsK0JBQStCLEVBQy9CLCtCQUErQixFQUMvQix3QkFBd0IsRUFDeEIsb0JBQW9CLEVBQ3BCLGdDQUFnQyxFQUNoQyxvQkFBb0IsRUFDcEIscUJBQXFCLEVBQ3JCLGlCQUFpQixHQUNsQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFDTCxRQUFRLEVBQ1IsU0FBUyxFQUNULGtCQUFrQixFQUNsQixvQkFBb0IsRUFDcEIsb0JBQW9CLEVBQ3BCLFVBQVUsRUFDVixpQkFBaUIsRUFDakIsY0FBYyxHQUtmLE1BQU0sb0JBQW9CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuZXhwb3J0IHsgRXJyb3JDb2RlLCBnZXRTdGF0dXNGb3JFcnJvckNvZGUgfSBmcm9tICcuL2Vycm9yLWNvZGVzLmpzJztcbmV4cG9ydCB7XG4gIGlzVmFsaWRRdW90YVR5cGUsXG4gIHR5cGUgVG9rZW5TY29wZSxcbiAgVE9LRU5fU0NPUEVTLFxuICB0eXBlIFByaW5jaXBhbFR5cGUsXG4gIHR5cGUgVG9rZW5Vc2UsXG4gIHR5cGUgQXV0aE1ldGhvZCxcbiAgdHlwZSBBc3N1cmFuY2VMZXZlbCxcbiAgdHlwZSBRdW90YVR5cGUsXG4gIFZBTElEX1FVT1RBX1RZUEVTLFxuICB0eXBlIFF1b3RhQ2hlY2tSZXN1bHQsXG4gIHR5cGUgUXVvdGFJbmZvLFxuICB0eXBlIEFwaVJlc3BvbnNlLFxuICB0eXBlIEp3dFBheWxvYWQsXG4gIHR5cGUgSGVhbHRoQ2hlY2tSZXNwb25zZSxcbn0gZnJvbSAnLi9jb21tb24uanMnO1xuZXhwb3J0ICogZnJvbSAnLi9waXBlbGluZS5qcyc7XG5leHBvcnQge1xuICB0eXBlIExpZmVjeWNsZSxcbiAgdHlwZSBDcml0aWNhbGl0eSxcbiAgdHlwZSBPd25lclR5cGUsXG4gIHR5cGUgRW50aXR5TGluayxcbiAgdHlwZSBFbnRpdHlMYWJlbHMsXG59IGZyb20gJy4vY2F0YWxvZy1tZXRhZGF0YS5qcyc7XG5leHBvcnQge1xuICB0eXBlIFRlbXBsYXRlSW5wdXQsXG59IGZyb20gJy4vcGlwZWxpbmUtdGVtcGxhdGUuanMnO1xuZXhwb3J0ICogZnJvbSAnLi92aXNpYmlsaXR5LmpzJztcbmV4cG9ydCAqIGZyb20gJy4vd2lyZS12b2NhYnVsYXJ5LmpzJztcbmV4cG9ydCB7XG4gIFBMVUdJTl9TVU1NQVJZX01BWCxcbiAgUExVR0lOX1JFQURNRV9NQVhfQllURVMsXG4gIFBMVUdJTl9DSEFOR0VMT0dfTUFYX0JZVEVTLFxuICBQTFVHSU5fQ0FURUdPUklFUyxcbiAgdHlwZSBQbHVnaW5DYXRhbG9nQ2F0ZWdvcnksXG4gIFBMVUdJTl9DQVRBTE9HX0ZJRUxEUyxcbiAgdHlwZSBQbHVnaW5DYXRhbG9nRmllbGQsXG4gIFBMVUdJTl9DQVRBTE9HX0xJTktfRklFTERTLFxuICBNRVRBREFUQV9TT1VSQ0VTLFxuICB0eXBlIE1ldGFkYXRhU291cmNlLFxuICB0eXBlIE1ldGFkYXRhU291cmNlcyxcbn0gZnJvbSAnLi9wbHVnaW4tY2F0YWxvZy5qcyc7XG5leHBvcnQge1xuICB0eXBlIEh0dHBSZXF1ZXN0LFxufSBmcm9tICcuL2h0dHAuanMnO1xuZXhwb3J0IHtcbiAgdGllckFsbG93c1RlYW1zLFxuICBpc0JpbGxpbmdFbmFibGVkLFxuICBpc1ZhbGlkVGllcixcbiAgZ2V0VGllckxpbWl0cyxcbiAgdHlwZSBRdW90YVRpZXIsXG4gIHR5cGUgUXVvdGFUaWVyTGltaXRzLFxuICBRVU9UQV9USUVSUyxcbiAgVkFMSURfVElFUlMsXG4gIFNUQU5EQVJEX1RJRVJTLFxuICBURUFNX0NBUEFCTEVfVElFUlMsXG4gIERFRkFVTFRfVElFUixcbiAgUVVPVEFfUkVTRVRfREFZUyxcbiAgbmV4dFF1b3RhUmVzZXREYXRlLFxufSBmcm9tICcuL3F1b3RhLXRpZXJzLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vZmVhdHVyZS1mbGFncy5qcyc7XG5leHBvcnQge1xuICBwZXJtaXNzaW9uTGFiZWwsXG4gIGlzVmFsaWRQZXJtaXNzaW9uLFxuICBpc1N5c3RlbU9yZ09ubHlQZXJtaXNzaW9uLFxuICBpc09yZ0Fzc2lnbmFibGVQZXJtaXNzaW9uLFxuICBub3JtYWxpemVQZXJtaXNzaW9uU3Vic2V0LFxuICBpbnRlcnNlY3RQZXJtaXNzaW9ucyxcbiAgcmVzb2x2ZVVzZXJQZXJtaXNzaW9ucyxcbiAgY29uZmluZVBlcm1pc3Npb25zVG9PcmcsXG4gIGhhc1Blcm1pc3Npb24sXG4gIHR5cGUgUGVybWlzc2lvbixcbiAgQUxMX1BFUk1JU1NJT05TLFxuICBQRVJNSVNTSU9OX0dBVEVTLFxuICBQRVJNSVNTSU9OX0NBVEFMT0csXG4gIFNVUEVSQURNSU5fT05MWV9QRVJNSVNTSU9OUyxcbiAgU1lTVEVNX09SR19PTkxZX1BFUk1JU1NJT05TLFxuICBPUkdfQVNTSUdOQUJMRV9QRVJNSVNTSU9OUyxcbiAgT1JHX0FTU0lHTkFCTEVfQ0FURUdPUklFUyxcbiAgUkVBRF9PTkxZX1BFUk1JU1NJT05TLFxuICBST0xFX1BFUk1JU1NJT05TLFxuICBFQ09TWVNURU1fTUFOQUdFUl9QRVJNSVNTSU9OUyxcbn0gZnJvbSAnLi9wZXJtaXNzaW9ucy5qcyc7XG5leHBvcnQge1xuICBNRVRBREFUQV9LRVlfQ0FUQUxPRyxcbiAgTWV0YWRhdGFLZXlzLFxuICB0eXBlIE1ldGFkYXRhS2V5LFxuICB0eXBlIE1ldGFkYXRhS2V5T3B0aW9uLFxuICBNRVRBREFUQV9LRVlfR1JPVVBTLFxufSBmcm9tICcuL21ldGFkYXRhLWtleXMuanMnO1xuZXhwb3J0IHtcbiAgdHlwZSBBdWRpdEV2ZW50LFxufSBmcm9tICcuL2F1ZGl0LWV2ZW50cy5qcyc7XG5leHBvcnQge1xuICBpc0Vjb3N5c3RlbU5vdGlmaWNhdGlvbkV2ZW50LFxuICBwYXJzZUVjb3N5c3RlbU5vdGlmeVJlcXVlc3QsXG4gIG5leHRFY29zeXN0ZW1EaWdlc3RUaW1lLFxuICByZW5kZXJFY29zeXN0ZW1NYW5hZ2VyQ2hhbmdlLFxuICByZW5kZXJFY29zeXN0ZW1EaWdlc3QsXG4gIHR5cGUgRWNvc3lzdGVtTm90aWZpY2F0aW9uRXZlbnRJZCxcbiAgdHlwZSBFY29zeXN0ZW1Ob3RpZmljYXRpb25DaGFubmVsLFxuICBFQ09TWVNURU1fRU1BSUxfUFJFRkVSRU5DRV9GSUVMRFMsXG4gIHR5cGUgRWNvc3lzdGVtRW1haWxQcmVmZXJlbmNlRmllbGQsXG4gIEVDT1NZU1RFTV9FTUFJTF9QUkVGRVJFTkNFX0ZJRUxEX05BTUVTLFxuICBFQ09TWVNURU1fTk9USUZJQ0FUSU9OX0VWRU5UUyxcbiAgdHlwZSBFY29zeXN0ZW1SZWNpcGllbnRTcGVjLFxuICB0eXBlIEVjb3N5c3RlbU5vdGlmeVJlcXVlc3QsXG59IGZyb20gJy4vZWNvc3lzdGVtLW5vdGlmaWNhdGlvbnMuanMnO1xuZXhwb3J0IHtcbiAgcHVibGlzaGVyVGVybXNWZXJzaW9uLFxuICBwdWJsaXNoZXJIYW5kbGVQcm9ibGVtLFxuICBpc09mZmljaWFsQXV0b0FwcHJvdmFsRW5hYmxlZCxcbiAgaXNQbHVnaW5QdWJsaXNoaW5nRW5hYmxlZCxcbiAgaXNBbm9ueW1vdXNTdWJtaXNzaW9uc0VuYWJsZWQsXG4gIGlzUGx1Z2luUmV2aWV3c0VuYWJsZWQsXG4gIE9GRklDSUFMX0NBVEFMT0dfTE9BREVSX0FDQ09VTlQsXG4gIERFRkFVTFRfUFVCTElTSEVSX1RFUk1TX1ZFUlNJT04sXG4gIEJVSUxUSU5fUkVTRVJWRURfSEFORExFUyxcbiAgVEVOQU5UX1JFUVVFU1RfS0lORFMsXG4gIFBVQkxJU0hfUEVSTUlTU0lPTl9SRVFVRVNUX0tJTkRTLFxuICBWRVJJRllfUkVRVUVTVF9LSU5EUyxcbiAgU1RFUF9VUF9SRVFVRVNUX0tJTkRTLFxuICBSRVFVRVNUX1NMQV9IT1VSUyxcbn0gZnJvbSAnLi9lY29zeXN0ZW0uanMnO1xuZXhwb3J0IHtcbiAgYWdlU2NvcmUsXG4gIHZ1bG5TY29yZSxcbiAgY29tcHV0ZUhlYWx0aFNjb3JlLFxuICBwdWJsaXNoZXJIZWFsdGhTY29yZSxcbiAgcHVibGlzaGVyU3VjY2Vzc1JhdGUsXG4gIGhlYWx0aEJhbmQsXG4gIEhFQUxUSF9DT01QT05FTlRTLFxuICBIRUFMVEhfV0VJR0hUUyxcbiAgdHlwZSBIZWFsdGhCcmVha2Rvd24sXG4gIHR5cGUgSGVhbHRoUmVzdWx0LFxuICB0eXBlIEhlYWx0aElucHV0cyxcbiAgdHlwZSBIZWFsdGhCYW5kLFxufSBmcm9tICcuL3BsdWdpbi1oZWFsdGguanMnO1xuIl19
20
+ export { asScanFlag, blockOnNewCritical, describeFindings, describeFix, exceedsVulnFloor, pluginVulnMaxCritical, SCAN_FLAG_TOP_FINDINGS, VULN_FLAGGED_WARNING, vulnBlockedMessage, vulnFlaggedMessage, vulnFlaggedWarning, } from './plugin-scan.js';
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLEVBQUUsU0FBUyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDcEUsT0FBTyxFQUNMLGdCQUFnQixFQUVoQixZQUFZLEVBTVosaUJBQWlCLEdBTWxCLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLGNBQWMsZUFBZSxDQUFDO0FBQzlCLE9BQU8sRUFNTixNQUFNLHVCQUF1QixDQUFDO0FBQy9CLE9BQU8sRUFFTixNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxPQUFPLEVBQ0wsa0JBQWtCLEVBQ2xCLHVCQUF1QixFQUN2QiwwQkFBMEIsRUFDMUIsaUJBQWlCLEVBRWpCLHFCQUFxQixFQUVyQiwwQkFBMEIsRUFDMUIsZ0JBQWdCLEdBR2pCLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUVOLE1BQU0sV0FBVyxDQUFDO0FBQ25CLE9BQU8sRUFDTCxlQUFlLEVBQ2YsZ0JBQWdCLEVBQ2hCLFdBQVcsRUFDWCxhQUFhLEVBR2IsV0FBVyxFQUNYLFdBQVcsRUFDWCxjQUFjLEVBQ2Qsa0JBQWtCLEVBQ2xCLFlBQVksRUFDWixnQkFBZ0IsRUFDaEIsa0JBQWtCLEdBQ25CLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxPQUFPLEVBQ0wsZUFBZSxFQUNmLGlCQUFpQixFQUNqQix5QkFBeUIsRUFDekIseUJBQXlCLEVBQ3pCLHlCQUF5QixFQUN6QixvQkFBb0IsRUFDcEIsc0JBQXNCLEVBQ3RCLHVCQUF1QixFQUN2QixhQUFhLEVBRWIsZUFBZSxFQUNmLGdCQUFnQixFQUNoQixrQkFBa0IsRUFDbEIsMkJBQTJCLEVBQzNCLDJCQUEyQixFQUMzQiwwQkFBMEIsRUFDMUIseUJBQXlCLEVBQ3pCLHFCQUFxQixFQUNyQixnQkFBZ0IsRUFDaEIsNkJBQTZCLEdBQzlCLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixZQUFZLEVBR1osbUJBQW1CLEdBQ3BCLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUVOLE1BQU0sbUJBQW1CLENBQUM7QUFDM0IsT0FBTyxFQUNMLDRCQUE0QixFQUM1QiwyQkFBMkIsRUFDM0IsdUJBQXVCLEVBQ3ZCLDRCQUE0QixFQUM1QixxQkFBcUIsRUFHckIsaUNBQWlDLEVBRWpDLHNDQUFzQyxFQUN0Qyw2QkFBNkIsR0FHOUIsTUFBTSw4QkFBOEIsQ0FBQztBQUN0QyxPQUFPLEVBQ0wscUJBQXFCLEVBQ3JCLHNCQUFzQixFQUN0Qiw2QkFBNkIsRUFDN0IseUJBQXlCLEVBQ3pCLDZCQUE2QixFQUM3QixzQkFBc0IsRUFDdEIsK0JBQStCLEVBQy9CLCtCQUErQixFQUMvQix3QkFBd0IsRUFDeEIsb0JBQW9CLEVBQ3BCLGdDQUFnQyxFQUNoQyxvQkFBb0IsRUFDcEIscUJBQXFCLEVBQ3JCLGlCQUFpQixHQUNsQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFDTCxRQUFRLEVBQ1IsU0FBUyxFQUNULGtCQUFrQixFQUNsQixvQkFBb0IsRUFDcEIsb0JBQW9CLEVBQ3BCLFVBQVUsRUFDVixpQkFBaUIsRUFDakIsY0FBYyxHQUtmLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUNMLFVBQVUsRUFDVixrQkFBa0IsRUFDbEIsZ0JBQWdCLEVBQ2hCLFdBQVcsRUFDWCxnQkFBZ0IsRUFDaEIscUJBQXFCLEVBQ3JCLHNCQUFzQixFQUN0QixvQkFBb0IsRUFDcEIsa0JBQWtCLEVBQ2xCLGtCQUFrQixFQUNsQixrQkFBa0IsR0FJbkIsTUFBTSxrQkFBa0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5leHBvcnQgeyBFcnJvckNvZGUsIGdldFN0YXR1c0ZvckVycm9yQ29kZSB9IGZyb20gJy4vZXJyb3ItY29kZXMuanMnO1xuZXhwb3J0IHtcbiAgaXNWYWxpZFF1b3RhVHlwZSxcbiAgdHlwZSBUb2tlblNjb3BlLFxuICBUT0tFTl9TQ09QRVMsXG4gIHR5cGUgUHJpbmNpcGFsVHlwZSxcbiAgdHlwZSBUb2tlblVzZSxcbiAgdHlwZSBBdXRoTWV0aG9kLFxuICB0eXBlIEFzc3VyYW5jZUxldmVsLFxuICB0eXBlIFF1b3RhVHlwZSxcbiAgVkFMSURfUVVPVEFfVFlQRVMsXG4gIHR5cGUgUXVvdGFDaGVja1Jlc3VsdCxcbiAgdHlwZSBRdW90YUluZm8sXG4gIHR5cGUgQXBpUmVzcG9uc2UsXG4gIHR5cGUgSnd0UGF5bG9hZCxcbiAgdHlwZSBIZWFsdGhDaGVja1Jlc3BvbnNlLFxufSBmcm9tICcuL2NvbW1vbi5qcyc7XG5leHBvcnQgKiBmcm9tICcuL3BpcGVsaW5lLmpzJztcbmV4cG9ydCB7XG4gIHR5cGUgTGlmZWN5Y2xlLFxuICB0eXBlIENyaXRpY2FsaXR5LFxuICB0eXBlIE93bmVyVHlwZSxcbiAgdHlwZSBFbnRpdHlMaW5rLFxuICB0eXBlIEVudGl0eUxhYmVscyxcbn0gZnJvbSAnLi9jYXRhbG9nLW1ldGFkYXRhLmpzJztcbmV4cG9ydCB7XG4gIHR5cGUgVGVtcGxhdGVJbnB1dCxcbn0gZnJvbSAnLi9waXBlbGluZS10ZW1wbGF0ZS5qcyc7XG5leHBvcnQgKiBmcm9tICcuL3Zpc2liaWxpdHkuanMnO1xuZXhwb3J0ICogZnJvbSAnLi93aXJlLXZvY2FidWxhcnkuanMnO1xuZXhwb3J0IHtcbiAgUExVR0lOX1NVTU1BUllfTUFYLFxuICBQTFVHSU5fUkVBRE1FX01BWF9CWVRFUyxcbiAgUExVR0lOX0NIQU5HRUxPR19NQVhfQllURVMsXG4gIFBMVUdJTl9DQVRFR09SSUVTLFxuICB0eXBlIFBsdWdpbkNhdGFsb2dDYXRlZ29yeSxcbiAgUExVR0lOX0NBVEFMT0dfRklFTERTLFxuICB0eXBlIFBsdWdpbkNhdGFsb2dGaWVsZCxcbiAgUExVR0lOX0NBVEFMT0dfTElOS19GSUVMRFMsXG4gIE1FVEFEQVRBX1NPVVJDRVMsXG4gIHR5cGUgTWV0YWRhdGFTb3VyY2UsXG4gIHR5cGUgTWV0YWRhdGFTb3VyY2VzLFxufSBmcm9tICcuL3BsdWdpbi1jYXRhbG9nLmpzJztcbmV4cG9ydCB7XG4gIHR5cGUgSHR0cFJlcXVlc3QsXG59IGZyb20gJy4vaHR0cC5qcyc7XG5leHBvcnQge1xuICB0aWVyQWxsb3dzVGVhbXMsXG4gIGlzQmlsbGluZ0VuYWJsZWQsXG4gIGlzVmFsaWRUaWVyLFxuICBnZXRUaWVyTGltaXRzLFxuICB0eXBlIFF1b3RhVGllcixcbiAgdHlwZSBRdW90YVRpZXJMaW1pdHMsXG4gIFFVT1RBX1RJRVJTLFxuICBWQUxJRF9USUVSUyxcbiAgU1RBTkRBUkRfVElFUlMsXG4gIFRFQU1fQ0FQQUJMRV9USUVSUyxcbiAgREVGQVVMVF9USUVSLFxuICBRVU9UQV9SRVNFVF9EQVlTLFxuICBuZXh0UXVvdGFSZXNldERhdGUsXG59IGZyb20gJy4vcXVvdGEtdGllcnMuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9mZWF0dXJlLWZsYWdzLmpzJztcbmV4cG9ydCB7XG4gIHBlcm1pc3Npb25MYWJlbCxcbiAgaXNWYWxpZFBlcm1pc3Npb24sXG4gIGlzU3lzdGVtT3JnT25seVBlcm1pc3Npb24sXG4gIGlzT3JnQXNzaWduYWJsZVBlcm1pc3Npb24sXG4gIG5vcm1hbGl6ZVBlcm1pc3Npb25TdWJzZXQsXG4gIGludGVyc2VjdFBlcm1pc3Npb25zLFxuICByZXNvbHZlVXNlclBlcm1pc3Npb25zLFxuICBjb25maW5lUGVybWlzc2lvbnNUb09yZyxcbiAgaGFzUGVybWlzc2lvbixcbiAgdHlwZSBQZXJtaXNzaW9uLFxuICBBTExfUEVSTUlTU0lPTlMsXG4gIFBFUk1JU1NJT05fR0FURVMsXG4gIFBFUk1JU1NJT05fQ0FUQUxPRyxcbiAgU1VQRVJBRE1JTl9PTkxZX1BFUk1JU1NJT05TLFxuICBTWVNURU1fT1JHX09OTFlfUEVSTUlTU0lPTlMsXG4gIE9SR19BU1NJR05BQkxFX1BFUk1JU1NJT05TLFxuICBPUkdfQVNTSUdOQUJMRV9DQVRFR09SSUVTLFxuICBSRUFEX09OTFlfUEVSTUlTU0lPTlMsXG4gIFJPTEVfUEVSTUlTU0lPTlMsXG4gIEVDT1NZU1RFTV9NQU5BR0VSX1BFUk1JU1NJT05TLFxufSBmcm9tICcuL3Blcm1pc3Npb25zLmpzJztcbmV4cG9ydCB7XG4gIE1FVEFEQVRBX0tFWV9DQVRBTE9HLFxuICBNZXRhZGF0YUtleXMsXG4gIHR5cGUgTWV0YWRhdGFLZXksXG4gIHR5cGUgTWV0YWRhdGFLZXlPcHRpb24sXG4gIE1FVEFEQVRBX0tFWV9HUk9VUFMsXG59IGZyb20gJy4vbWV0YWRhdGEta2V5cy5qcyc7XG5leHBvcnQge1xuICB0eXBlIEF1ZGl0RXZlbnQsXG59IGZyb20gJy4vYXVkaXQtZXZlbnRzLmpzJztcbmV4cG9ydCB7XG4gIGlzRWNvc3lzdGVtTm90aWZpY2F0aW9uRXZlbnQsXG4gIHBhcnNlRWNvc3lzdGVtTm90aWZ5UmVxdWVzdCxcbiAgbmV4dEVjb3N5c3RlbURpZ2VzdFRpbWUsXG4gIHJlbmRlckVjb3N5c3RlbU1hbmFnZXJDaGFuZ2UsXG4gIHJlbmRlckVjb3N5c3RlbURpZ2VzdCxcbiAgdHlwZSBFY29zeXN0ZW1Ob3RpZmljYXRpb25FdmVudElkLFxuICB0eXBlIEVjb3N5c3RlbU5vdGlmaWNhdGlvbkNoYW5uZWwsXG4gIEVDT1NZU1RFTV9FTUFJTF9QUkVGRVJFTkNFX0ZJRUxEUyxcbiAgdHlwZSBFY29zeXN0ZW1FbWFpbFByZWZlcmVuY2VGaWVsZCxcbiAgRUNPU1lTVEVNX0VNQUlMX1BSRUZFUkVOQ0VfRklFTERfTkFNRVMsXG4gIEVDT1NZU1RFTV9OT1RJRklDQVRJT05fRVZFTlRTLFxuICB0eXBlIEVjb3N5c3RlbVJlY2lwaWVudFNwZWMsXG4gIHR5cGUgRWNvc3lzdGVtTm90aWZ5UmVxdWVzdCxcbn0gZnJvbSAnLi9lY29zeXN0ZW0tbm90aWZpY2F0aW9ucy5qcyc7XG5leHBvcnQge1xuICBwdWJsaXNoZXJUZXJtc1ZlcnNpb24sXG4gIHB1Ymxpc2hlckhhbmRsZVByb2JsZW0sXG4gIGlzT2ZmaWNpYWxBdXRvQXBwcm92YWxFbmFibGVkLFxuICBpc1BsdWdpblB1Ymxpc2hpbmdFbmFibGVkLFxuICBpc0Fub255bW91c1N1Ym1pc3Npb25zRW5hYmxlZCxcbiAgaXNQbHVnaW5SZXZpZXdzRW5hYmxlZCxcbiAgT0ZGSUNJQUxfQ0FUQUxPR19MT0FERVJfQUNDT1VOVCxcbiAgREVGQVVMVF9QVUJMSVNIRVJfVEVSTVNfVkVSU0lPTixcbiAgQlVJTFRJTl9SRVNFUlZFRF9IQU5ETEVTLFxuICBURU5BTlRfUkVRVUVTVF9LSU5EUyxcbiAgUFVCTElTSF9QRVJNSVNTSU9OX1JFUVVFU1RfS0lORFMsXG4gIFZFUklGWV9SRVFVRVNUX0tJTkRTLFxuICBTVEVQX1VQX1JFUVVFU1RfS0lORFMsXG4gIFJFUVVFU1RfU0xBX0hPVVJTLFxufSBmcm9tICcuL2Vjb3N5c3RlbS5qcyc7XG5leHBvcnQge1xuICBhZ2VTY29yZSxcbiAgdnVsblNjb3JlLFxuICBjb21wdXRlSGVhbHRoU2NvcmUsXG4gIHB1Ymxpc2hlckhlYWx0aFNjb3JlLFxuICBwdWJsaXNoZXJTdWNjZXNzUmF0ZSxcbiAgaGVhbHRoQmFuZCxcbiAgSEVBTFRIX0NPTVBPTkVOVFMsXG4gIEhFQUxUSF9XRUlHSFRTLFxuICB0eXBlIEhlYWx0aEJyZWFrZG93bixcbiAgdHlwZSBIZWFsdGhSZXN1bHQsXG4gIHR5cGUgSGVhbHRoSW5wdXRzLFxuICB0eXBlIEhlYWx0aEJhbmQsXG59IGZyb20gJy4vcGx1Z2luLWhlYWx0aC5qcyc7XG5leHBvcnQge1xuICBhc1NjYW5GbGFnLFxuICBibG9ja09uTmV3Q3JpdGljYWwsXG4gIGRlc2NyaWJlRmluZGluZ3MsXG4gIGRlc2NyaWJlRml4LFxuICBleGNlZWRzVnVsbkZsb29yLFxuICBwbHVnaW5WdWxuTWF4Q3JpdGljYWwsXG4gIFNDQU5fRkxBR19UT1BfRklORElOR1MsXG4gIFZVTE5fRkxBR0dFRF9XQVJOSU5HLFxuICB2dWxuQmxvY2tlZE1lc3NhZ2UsXG4gIHZ1bG5GbGFnZ2VkTWVzc2FnZSxcbiAgdnVsbkZsYWdnZWRXYXJuaW5nLFxuICB0eXBlIFBsdWdpblNjYW5GaW5kaW5nLFxuICB0eXBlIFBsdWdpblNjYW5GbGFnLFxuICB0eXBlIFZ1bG5GbGFnZ2VkV2FybmluZyxcbn0gZnJvbSAnLi9wbHVnaW4tc2Nhbi5qcyc7XG4iXX0=
@@ -0,0 +1,69 @@
1
+ /** One Critical/High finding as the flag and the gate messages carry it. */
2
+ export interface PluginScanFinding {
3
+ /** The vulnerability id (CVE-…, GHSA-…). */
4
+ id: string;
5
+ severity: 'critical' | 'high';
6
+ packageName: string;
7
+ packageVersion: string;
8
+ /** Versions that fix it; empty = no fix available (not fixable). */
9
+ fixedIn: string[];
10
+ }
11
+ /**
12
+ * `scan_flag` on a version the nightly rescan flagged: its fixable
13
+ * Critical/High counts at that rescan and the top fixable findings. Set while
14
+ * fixable Criticals exceed `PLUGIN_VULN_MAX_CRITICAL`, cleared when a rescan
15
+ * finds them resolved.
16
+ */
17
+ export interface PluginScanFlag {
18
+ /** Fixable Critical findings. */
19
+ critical: number;
20
+ /** Fixable High findings. */
21
+ high: number;
22
+ /** The floor it was compared against (`PLUGIN_VULN_MAX_CRITICAL`). */
23
+ maxCritical: number;
24
+ /** At most {@link SCAN_FLAG_TOP_FINDINGS} fixable findings, Criticals first. */
25
+ findings: PluginScanFinding[];
26
+ }
27
+ /** Findings a flag / gate message carries. */
28
+ export declare const SCAN_FLAG_TOP_FINDINGS = 10;
29
+ /** Lookup / resolution warning code for a flagged version. */
30
+ export declare const VULN_FLAGGED_WARNING = "VULN_FLAGGED";
31
+ /**
32
+ * `PLUGIN_VULN_MAX_CRITICAL`: the platform floor — a version with MORE fixable
33
+ * Critical findings than this fails its build (`PLUGIN_VULN_GATE`) and is
34
+ * flagged by the rescan. Default `0`; `-1` disables the floor (and the flag).
35
+ */
36
+ export declare function pluginVulnMaxCritical(): number;
37
+ /** Whether `fixableCritical` breaks the platform floor (never, when disabled). */
38
+ export declare function exceedsVulnFloor(fixableCritical: number | null | undefined, max?: number): boolean;
39
+ /**
40
+ * `PLUGIN_BLOCK_ON_NEW_CRITICAL` (default false): resolution SKIPS flagged
41
+ * versions for ranges and the default (falling back to the newest unflagged
42
+ * one), and an exact pin to a flagged version is refused 409
43
+ * `PLUGIN_VERSION_VULN_BLOCKED`. Off: flagged versions resolve with a
44
+ * `VULN_FLAGGED` warning.
45
+ */
46
+ export declare function blockOnNewCritical(): boolean;
47
+ /** `pkg@1.2.3 → 1.2.4` / `pkg@1.2.3 (no fix)`. */
48
+ export declare function describeFix(f: Pick<PluginScanFinding, 'packageName' | 'packageVersion' | 'fixedIn'>): string;
49
+ /** `CVE-1 (openssl@3.0.1 → 3.0.2); CVE-2 (…)` for the first `limit` findings. */
50
+ export declare function describeFindings(findings: readonly PluginScanFinding[], limit?: number): string;
51
+ /** The warning text for a flagged version: `x@v has N fixable Critical findings — rebuild or upgrade`. */
52
+ export declare function vulnFlaggedMessage(ref: string, flag: Pick<PluginScanFlag, 'critical'>): string;
53
+ /** A `VULN_FLAGGED` lookup warning (the lookup envelope's `warnings[]` entry). */
54
+ export interface VulnFlaggedWarning {
55
+ code: typeof VULN_FLAGGED_WARNING;
56
+ plugin: string;
57
+ version: string;
58
+ critical: number;
59
+ high: number;
60
+ message: string;
61
+ /** Top fixable findings with their fixed versions. */
62
+ findings: PluginScanFinding[];
63
+ }
64
+ /** Build the `VULN_FLAGGED` warning for `plugin@version`. */
65
+ export declare function vulnFlaggedWarning(plugin: string, version: string, flag: PluginScanFlag): VulnFlaggedWarning;
66
+ /** The 409 message for an exact pin to a flagged version while blocking. */
67
+ export declare function vulnBlockedMessage(plugin: string, version: string, flag: PluginScanFlag): string;
68
+ /** Narrow an unknown `scan_flag` jsonb value. */
69
+ export declare function asScanFlag(value: unknown): PluginScanFlag | null;