@pipeline-builder/pipeline-data 4.1.23 → 4.1.25

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/lib/api/alert-destinations.d.ts +17 -0
  2. package/lib/api/alert-destinations.js +36 -0
  3. package/lib/api/reporting/analytics-queries.d.ts +274 -0
  4. package/lib/api/reporting/analytics-queries.js +598 -0
  5. package/lib/api/reporting/daily-rollup.d.ts +41 -0
  6. package/lib/api/reporting/daily-rollup.js +173 -0
  7. package/lib/api/reporting/deploy-rollup.d.ts +78 -0
  8. package/lib/api/reporting/deploy-rollup.js +203 -0
  9. package/lib/api/reporting/dora-scoring.d.ts +14 -0
  10. package/lib/api/reporting/dora-scoring.js +25 -1
  11. package/lib/api/reporting/dora.js +30 -6
  12. package/lib/api/reporting/failure-classifier.d.ts +54 -0
  13. package/lib/api/reporting/failure-classifier.js +179 -0
  14. package/lib/api/reporting/ingest.d.ts +2 -2
  15. package/lib/api/reporting/ingest.js +129 -4
  16. package/lib/api/reporting/last-deploy.d.ts +31 -0
  17. package/lib/api/reporting/last-deploy.js +93 -0
  18. package/lib/api/reporting/needs-attention.d.ts +93 -0
  19. package/lib/api/reporting/needs-attention.js +152 -0
  20. package/lib/api/reporting/plugin-exposure.d.ts +129 -0
  21. package/lib/api/reporting/plugin-exposure.js +312 -0
  22. package/lib/api/reporting/retention-sweep.js +9 -1
  23. package/lib/api/reporting/sql-helpers.d.ts +35 -2
  24. package/lib/api/reporting/sql-helpers.js +39 -1
  25. package/lib/api/reporting/stakeholder/compose.d.ts +115 -0
  26. package/lib/api/reporting/stakeholder/compose.js +234 -0
  27. package/lib/api/reporting/stakeholder/index.d.ts +14 -0
  28. package/lib/api/reporting/stakeholder/index.js +17 -0
  29. package/lib/api/reporting/stakeholder/period.d.ts +102 -0
  30. package/lib/api/reporting/stakeholder/period.js +273 -0
  31. package/lib/api/reporting/stakeholder/report-html.d.ts +93 -0
  32. package/lib/api/reporting/stakeholder/report-html.js +208 -0
  33. package/lib/api/reporting/stakeholder/sections.d.ts +117 -0
  34. package/lib/api/reporting/stakeholder/sections.js +249 -0
  35. package/lib/api/reporting/stakeholder/store.d.ts +450 -0
  36. package/lib/api/reporting/stakeholder/store.js +981 -0
  37. package/lib/api/reporting/stakeholder/templates.d.ts +21 -0
  38. package/lib/api/reporting/stakeholder/templates.js +104 -0
  39. package/lib/api/reporting/types.d.ts +73 -0
  40. package/lib/api/reporting/types.js +1 -1
  41. package/lib/api/reporting-service.d.ts +94 -5
  42. package/lib/api/reporting-service.js +169 -10
  43. package/lib/api/soft-delete-sweep.d.ts +11 -2
  44. package/lib/api/soft-delete-sweep.js +17 -6
  45. package/lib/database/drizzle-schema.d.ts +2263 -385
  46. package/lib/database/drizzle-schema.js +18 -7
  47. package/lib/database/index.d.ts +1 -1
  48. package/lib/database/index.js +4 -2
  49. package/lib/database/schema/compliance.d.ts +0 -682
  50. package/lib/database/schema/compliance.js +6 -66
  51. package/lib/database/schema/ecosystem.d.ts +20 -157
  52. package/lib/database/schema/ecosystem.js +23 -16
  53. package/lib/database/schema/pipeline.d.ts +200 -0
  54. package/lib/database/schema/pipeline.js +100 -1
  55. package/lib/database/schema/plugin.d.ts +20 -1
  56. package/lib/database/schema/plugin.js +13 -1
  57. package/lib/database/schema/reporting-analytics.d.ts +1212 -0
  58. package/lib/database/schema/reporting-analytics.js +250 -0
  59. package/lib/database/schema/reporting-stakeholder.d.ts +1405 -0
  60. package/lib/database/schema/reporting-stakeholder.js +251 -0
  61. package/lib/index.d.ts +10 -1
  62. package/lib/index.js +15 -1
  63. package/lib/testing/exports.json +67 -4
  64. package/package.json +4 -3
@@ -167,6 +167,18 @@ export const plugin = pgTable('plugins', {
167
167
  // floor (cleared when resolved): the counts and top findings at that rescan.
168
168
  scanFlaggedAt: timestamp('scan_flagged_at', { withTimezone: true }),
169
169
  scanFlag: jsonb('scan_flag').$type(),
170
+ /**
171
+ * The LAST rescan's findings for this version, written whether or not the
172
+ * gating flag tripped.
173
+ *
174
+ * `scan_flag` is set only while fixable criticals exceed
175
+ * PLUGIN_VULN_MAX_CRITICAL, so a version carrying only High findings stores
176
+ * nothing — and the vulnerability report section, whose whole job is to show
177
+ * Critical AND High exposure, had no source to read. This holds the counts and
178
+ * the top findings for every in-use version, independent of the gate: what a
179
+ * report shows and what a build refuses are different questions.
180
+ */
181
+ scanSummary: jsonb('scan_summary').$type(),
170
182
  runAsRoot: boolean('run_as_root'),
171
183
  // Version lifecycle. `breaking`: a publisher-marked major that `latest`
172
184
  // installs never cross without re-approval. `frozenAt`: set the moment a
@@ -253,4 +265,4 @@ export const plugin = pgTable('plugins', {
253
265
  imageDigestCheck: check('plugin_image_digest_check', sql `${table.imageDigest} IS NULL OR ${table.imageDigest} ~ '^sha256:[0-9a-f]{64}$'`),
254
266
  imageSourceCheck: check('plugin_image_source_check', sql `${table.imageSource} IS NULL OR ${table.imageSource} IN ('built', 'uploaded')`),
255
267
  }));
256
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2RhdGFiYXNlL3NjaGVtYS9wbHVnaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLEVBQ0wsV0FBVyxFQUFFLFVBQVUsRUFBRSxhQUFhLEdBRXZDLE1BQU0sNEJBQTRCLENBQUM7QUFDcEMsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNsQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBbURsSTs7Ozs7Ozs7Ozs7R0FXRztBQUNILE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsU0FBUyxFQUFFO0lBQ3ZDLGNBQWM7SUFDZCxFQUFFLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDLGFBQWEsRUFBRTtJQUUzQyxrQ0FBa0M7SUFDbEMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUM7U0FDdEMsT0FBTyxDQUFDLGFBQWEsQ0FBQztTQUN0QixPQUFPLEVBQUU7SUFFWixlQUFlO0lBQ2YsU0FBUyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUM7U0FDMUIsT0FBTyxDQUFDLGFBQWEsQ0FBQztTQUN0QixPQUFPLEVBQUU7SUFDWixTQUFTLEVBQUUsU0FBUyxDQUFDLFlBQVksRUFBRSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQztTQUN2RCxVQUFVLEVBQUU7U0FDWixPQUFPLEVBQUU7SUFDWixTQUFTLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQztTQUMxQixPQUFPLENBQUMs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RSxLQUFLLENBQUMsU0FBUyxDQUFDO0lBRTdFLDhDQUE4QztJQUM5QyxvQkFBb0IsRUFBRSxXQUFXLENBQUMsZ0NBQWdDLENBQUM7U0FDaEUsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDO0lBRTdDLG9CQUFvQjtJQUNwQixZQUFZLEVBQUUsS0FBSyxDQUFFLHNCQUFzQixFQUN6QyxHQUFHLENBQUEsR0FBRyxLQUFLLENBQUMsT0FBTyxvRUFBb0UsQ0FDeEY7SUFDRCxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsMkJBQTJCLEVBQ2pELEdBQUcsQ0FBQSxHQUFHLEtBQUssQ0FBQyxXQUFXLGVBQWUsS0FBSyxDQUFDLFdBQVcsNEJBQTRCLENBQ3BGO0lBQ0QsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLDJCQUEyQixFQUNqRCxHQUFHLENBQUEsR0FBRyxLQUFLLENBQUMsV0FBVyxlQUFlLEtBQUssQ0FBQyxXQUFXLDJCQUEyQixDQUNuRjtDQUNGLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCB7XG4gIENvbXB1dGVUeXBlLCBQbHVnaW5UeXBlLCBTWVNURU1fT1JHX0lELCB0eXBlIENyaXRpY2FsaXR5LCB0eXBlIEVudGl0eUxhYmVscywgdHlwZSBFbnRpdHlMaW5rLCB0eXBlIExpZmVjeWNsZSxcbiAgdHlwZSBNZXRhZGF0YVNvdXJjZXMsIHR5cGUgT3duZXJUeXBlLCB0eXBlIFBsdWdpblNjYW5GbGFnLCB0eXBlIFZpc2liaWxpdHksXG59IGZyb20gJ0BwaXBlbGluZS1idWlsZGVyL2FwaS1jb3JlJztcbmltcG9ydCB7IHNxbCB9IGZyb20gJ2RyaXp6bGUtb3JtJztcbmltcG9ydCB7IGJvb2xlYW4sIGludGVnZXIsIHZhcmNoYXIsIHBnVGFibGUsIHRleHQsIHRpbWVzdGFtcCwgdXVpZCwganNvbmIsIGluZGV4LCB1bmlxdWVJbmRleCwgY2hlY2sgfSBmcm9tICdkcml6emxlLW9ybS9wZy1jb3JlJztcblxuLyoqXG4gKiBTZWNyZXQgcmVxdWlyZW1lbnQgZm9yIGEgcGx1Z2luLlxuICogRGVjbGFyZXMgbmFtZWQgc2VjcmV0cyB0aGUgcGx1Z2luIGV4cGVjdHMgYXQgYnVpbGQgdGltZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQbHVnaW5TZWNyZXQge1xuICBuYW1lOiBzdHJpbmc7XG4gIHJlcXVpcmVkOiBib29sZWFuO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBXaGVyZSBhIHBsdWdpbidzIGltYWdlIGNhbWUgZnJvbTogYGJ1aWx0YCBieSB0aGUgcGxhdGZvcm0ncyBCdWlsZEtpdCAoY2Fycmllc1xuICogU0xTQSBwcm92ZW5hbmNlKSBvciBgdXBsb2FkZWRgIGFzIGEgcHJlYnVpbHQgYGltYWdlLnRhcmAgKFNCT00gKyBzaWduYXR1cmVcbiAqIG9ubHkg4oCUIHRoZSBwbGF0Zm9ybSBuZXZlciBzYXcgdGhlIGJ1aWxkKS5cbiAqL1xuZXhwb3J0IHR5cGUgSW1hZ2VTb3VyY2UgPSAnYnVpbHQnIHwgJ3VwbG9hZGVkJztcblxuLyoqXG4gKiBQbHVnaW4gbGlmZWN5Y2xlOiB0aGUgc2hhcmVkIGNhdGFsb2cge0BsaW5rIExpZmVjeWNsZX0gcGx1cyBgeWFua2VkYCwgd2hpY2hcbiAqIG9ubHkgcGx1Z2luIHZlcnNpb25zIGNhbiByZWFjaCAoYSB5YW5rZWQgdmVyc2lvbiBzdG9wcyByZXNvbHZpbmcgZm9yIG5ld1xuICogc3ludGhzKS4gYHlhbmtlZEF0YCAvIGBkZXByZWNhdGVkQXRgIGFyZSB0aGUgYXV0aG9yaXRhdGl2ZSB0aW1lc3RhbXBzOyB0aGVcbiAqIGxpZmVjeWNsZSB2YWx1ZSBtaXJyb3JzIHRoZW0gZm9yIGNhdGFsb2cgZmlsdGVyaW5nLlxuICovXG5leHBvcnQgdHlwZSBQbHVnaW5MaWZlY3ljbGUgPSBMaWZlY3ljbGUgfCAneWFua2VkJztcblxuLyoqIENvZXJjaW9uIHR5cGUgYSBgcmVxdWlyZWRNZXRhZGF0YWAgLyBgcmVxdWlyZWRWYXJzYCBrZXkgaXMgZGVjbGFyZWQgYXMuICovXG5leHBvcnQgdHlwZSBQbHVnaW5Db250cmFjdFZhbHVlVHlwZSA9ICdzdHJpbmcnIHwgJ251bWJlcicgfCAnYm9vbCcgfCAnanNvbic7XG5cbi8qKlxuICogVGhlIHNwZWMncyBzbW9rZS10ZXN0IGRlY2xhcmF0aW9uLiBUb2RheSBhIGJhcmUgY29tbWFuZCBzdHJpbmc7IHN0b3JlZCBhc1xuICogSlNPTkIgc28gYSBzdHJ1Y3R1cmVkIGZvcm0gY2FuIGZvbGxvdyB3aXRob3V0IGFub3RoZXIgY29sdW1uLlxuICovXG5leHBvcnQgdHlwZSBQbHVnaW5TbW9rZVRlc3QgPSBzdHJpbmcgfCBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblxuLyoqIEEgY3VyYXRlZCBpY29uOiBhIGtleSBpbnRvIHRoZSBjdXJhdGVkIHNldCwgcGx1cyBhbiBvcHRpb25hbCBiYWRnZS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGx1Z2luSWNvbiB7XG4gIGtleTogc3RyaW5nO1xuICBiYWRnZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBTdG9yYWdlIGtleXMgb2YgYW4gdXBsb2FkZWQgaWNvbidzIHJlLWVuY29kZWQgV2ViUCByZW5kaXRpb25zIChpbWFnZS1yZWdpc3RyeVxuICogZGVjb2RlcyArIHJlLWVuY29kZXMgZXZlcnkgdXBsb2FkOyB0aGUgcmF3IGZpbGUgYW5kIFNWRyBhcmUgbmV2ZXIgc3RvcmVkKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQbHVnaW5VcGxvYWRlZEljb24ge1xuICBrZXkyNTY6IHN0cmluZztcbiAga2V5NjQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBUYWJsZSBmb3Igc3RvcmluZyByZXVzYWJsZSBwbHVnaW4gY29uZmlndXJhdGlvbnMuXG4gKiBQbHVnaW5zIGRlZmluZSB0aGUgYmVoYXZpb3Igb2Ygc3ludGgvYnVpbGQgc3RlcHMgaW4gQ0RLIHBpcGVsaW5lcy5cbiAqXG4gKiBGZWF0dXJlcyAqIC0gVmVyc2lvbmluZyBzdXBwb3J0IHdpdGggc2VtYW50aWMgdmVyc2lvbmluZ1xuICogLSBBY2Nlc3MgY29udHJvbCB2aWEgb3JnSWQgYW5kIHRoZSB0aHJlZS1ydW5nIGB2aXNpYmlsaXR5YCBsYWRkZXJcbiAqIC0gRnVsbCBhdWRpdCB0cmFpbCAoY3JlYXRlZC91cGRhdGVkIGJ5L2F0KVxuICogLSBGbGV4aWJsZSBtZXRhZGF0YSBzdG9yYWdlIHZpYSBKU09OQlxuICogLSBTdXBwb3J0IGZvciBib3RoIFNoZWxsU3RlcCBhbmQgQ29kZUJ1aWxkU3RlcCB0eXBlc1xuICpcbiAqIEB0YWJsZSBwbHVnaW5zXG4gKi9cbmV4cG9ydCBjb25zdCBwbHVnaW4gPSBwZ1RhYmxlKCdwbHVnaW5zJywge1xuICAvLyBQcmltYXJ5IGtleVxuICBpZDogdXVpZCgnaWQnKS5wcmltYXJ5S2V5KCkuZGVmYXVsdFJhbmRvbSgpLFxuXG4gIC8vIE9yZ2FuaXphdGlvbiBhbmQgYWNjZXNzIGNvbnRyb2xcbiAgb3JnSWQ6IHZhcmNoYXIoJ29yZ19pZCcsIHsgbGVuZ3RoOiAyNTUgfSlcbiAgICAuZGVmYXVsdChTWVNURU1fT1JHX0lEKVxuICAgIC5ub3ROdWxsKCksXG5cbiAgLy8gQXVkaXQgZmllbGRzXG4gIGNyZWF0ZWRCeTogdGV4dCgnY3JlYXRlZF9ieScpXG4gICAgLmRlZmF1bHQoU1lTVEVNX09SR19JRClcbiAgICAubm90TnVsbCgpLFxuICBjcmVhdGVkQXQ6IHRpbWVzdGFtcCgnY3JlYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pXG4gICAgLmRlZmF1bHROb3coKVxuICAgIC5ub3ROdWxsKCksXG4gIHVwZGF0ZWRCeTogdGV4dCgndXBkYXRlZF9ieScpXG4gICAgLmRlZmF1bHQoU1lTVEVNX09SR19JRClcbiAgICAubm90TnVsbCgpLFxuICB1cGRhdGVkQXQ6IHRpbWVzdGFtcCgndXBkYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pXG4gICAgLmRlZmF1bHROb3coKVxuICAgIC5ub3ROdWxsKCksXG5cbiAgLy8gQ29yZSBwbHVnaW4gaW5mb3JtYXRpb25cbiAgbmFtZTogdmFyY2hhcignbmFtZScsIHsgbGVuZ3RoOiAyNTUgfSlcbiAgICAubm90TnVsbCgpLFxuICBkZXNjcmlwdGlvbjogdGV4dCgnZGVzY3JpcHRpb24nKSxcbiAga2V5d29yZHM6IGpzb25iKCdrZXl3b3JkcycpXG4gICAgLiR0eXBlPHN0cmluZ1tdPigpXG4gICAgLmRlZmF1bHQoW10pXG4gICAgLm5vdE51bGwoKSxcbiAgdmVyc2lvbjogdmFyY2hhcigndmVyc2lvbicsIHsgbGVuZ3RoOiA1MCB9KVxuICAgIC5kZWZhdWx0KCcxLjAuMCcpXG4gICAgLm5vdE51bGwoKSxcblxuICAvLyBQbHVnaW4gY2xhc3NpZmljYXRpb25cbiAgY2F0ZWdvcnk6IHZhcmNoYXIoJ2NhdGVnb3J5JywgeyBsZW5ndGg6IDUwIH0pXG4gICAgLmRlZmF1bHQoJ3Vua25vd24nKVxuICAgIC5ub3ROdWxsKCksXG5cbiAgLy8gUGx1Z2luIGNvbmZpZ3VyYXRpb25cbiAgbWV0YWRhdGE6IGpzb25iKCdtZXRhZGF0YScpXG4gICAgLiR0eXBlPFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4+PigpXG4gICAgLmRlZmF1bHQoe30pXG4gICAgLm5vdE51bGwoKSxcbiAgcGx1Z2luVHlwZTogdmFyY2hhcigncGx1Z2luX3R5cGUnLCB7IGxlbmd0aDogNTAgfSlcbiAgICAuJHR5cGU8UGx1Z2luVHlwZT4oKVxuICAgIC5kZWZhdWx0KCdDb2RlQnVpbGRTdGVwJyBhcyBQbHVnaW5UeXBlKVxuICAgIC5ub3ROdWxsKCksXG4gIGNvbXB1dGVUeXBlOiB2YXJjaGFyKCdjb21wdXRlX3R5cGUnLCB7IGxlbmd0aDogNTAgfSlcbiAgICAuJHR5cGU8Q29tcHV0ZVR5cGU+KClcbiAgICAuZGVmYXVsdCgnU01BTEwnIGFzIENvbXB1dGVUeXBlKVxuICAgIC5ub3ROdWxsKCksXG4gIHRpbWVvdXQ6IGludGVnZXIoJ3RpbWVvdXQnKSxcbiAgZmFpbHVyZUJlaGF2aW9yOiB2YXJjaGFyKCdmYWlsdXJlX2JlaGF2aW9yJywgeyBsZW5ndGg6IDEwIH0pXG4gICAgLiR0eXBlPCdmYWlsJyB8ICd3YXJuJyB8ICdpZ25vcmUnPigpXG4gICAgLmRlZmF1bHQoJ2ZhaWwnKVxuICAgIC5ub3ROdWxsKCksXG4gIHNlY3JldHM6IGpzb25iKCdzZWNyZXRzJylcbiAgICAuJHR5cGU8UGx1Z2luU2VjcmV0W10+KClcbiAgICAuZGVmYXVsdChbXSlcbiAgICAubm90TnVsbCgpLFxuICBwcmltYXJ5T3V0cHV0RGlyZWN0b3J5OiB2YXJjaGFyKCdwcmltYXJ5X291dHB1dF9kaXJlY3RvcnknLCB7IGxlbmd0aDogMjggfSksXG5cbiAgLy8gQnVpbGQgY29uZmlndXJhdGlvblxuICBlbnY6IGpzb25iKCdlbnYnKVxuICAgIC4kdHlwZTxSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PigpXG4gICAgLmRlZmF1bHQoe30pXG4gICAgLm5vdE51bGwoKSxcbiAgYnVpbGRBcmdzOiBqc29uYignYnVpbGRfYXJncycpXG4gICAgLiR0eXBlPFJlY29yZDxzdHJpbmcsIHN0cmluZz4+KClcbiAgICAuZGVmYXVsdCh7fSlcbiAgICAubm90TnVsbCgpLFxuICBpbnN0YWxsQ29tbWFuZHM6IHRleHQoJ2luc3RhbGxfY29tbWFuZHMnKVxuICAgIC5hcnJheSgpXG4gICAgLmRlZmF1bHQoW10pXG4gICAgLm5vdE51bGwoKSxcbiAgY29tbWFuZHM6IHRleHQoJ2NvbW1hbmRzJylcbiAgICAuYXJyYXkoKVxuICAgIC5kZWZhdWx0KFtdKVxuICAgIC5ub3ROdWxsKCksXG5cbiAgLy8gU3BlYyBjb250cmFjdCwgcGVyc2lzdGVkIChub3QganVzdCB2YWxpZGF0ZWQgYXQgdXBsb2FkKTogdGhlXG4gIC8vIGB7eyBwaXBlbGluZS5tZXRhZGF0YS5YIH19YCAvIGB7eyBwaXBlbGluZS52YXJzLlggfX1gIGtleXMgYSBwaXBlbGluZSBtdXN0XG4gIC8vIHN1cHBseSwgdGhlaXIgZGVjbGFyZWQgY29lcmNpb24gdHlwZXMsIHRoZSBzbW9rZSB0ZXN0LCBhbmQgdGhlIGRlY2xhcmVkXG4gIC8vIG91dGJvdW5kIGhvc3RuYW1lcyAoc3BlYyBgbmV0d29yay5lZ3Jlc3NgKSBzaG93biB0byBjb25zdW1lcnMuXG4gIHJlcXVpcmVkTWV0YWRhdGE6IGpzb25iKCdyZXF1aXJlZF9tZXRhZGF0YScpXG4gICAgLiR0eXBlPHN0cmluZ1tdPigpXG4gICAgLmRlZmF1bHQoW10pXG4gICAgLm5vdE51bGwoKSxcbiAgcmVxdWlyZWRWYXJzOiBqc29uYigncmVxdWlyZWRfdmFycycpXG4gICAgLiR0eXBlPHN0cmluZ1tdPigpXG4gICAgLmRlZmF1bHQoW10pXG4gICAgLm5vdE51bGwoKSxcbiAgbWV0YWRhdGFUeXBlczoganNvbmIoJ21ldGFkYXRhX3R5cGVzJylcbiAgICAuJHR5cGU8UmVjb3JkPHN0cmluZywgUGx1Z2luQ29udHJhY3RWYWx1ZVR5cGU+PigpXG4gICAgLmRlZmF1bHQoe30pXG4gICAgLm5vdE51bGwoKSxcbiAgdmFyc1R5cGVzOiBqc29uYigndmFyc190eXBlcycpXG4gICAgLiR0eXBlPFJlY29yZDxzdHJpbmcsIFBsdWdpbkNvbnRyYWN0VmFsdWVUeXBlPj4oKVxuICAgIC5kZWZhdWx0KHt9KVxuICAgIC5ub3ROdWxsKCksXG4gIHNtb2tlVGVzdDoganNvbmIoJ3Ntb2tlX3Rlc3QnKS4kdHlwZTxQbHVnaW5TbW9rZVRlc3Q+KCksXG4gIG5ldHdvcmtFZ3Jlc3M6IGpzb25iKCduZXR3b3JrX2VncmVzcycpXG4gICAgLiR0eXBlPHN0cmluZ1tdPigpXG4gICAgLmRlZmF1bHQoW10pXG4gICAgLm5vdE51bGwoKSxcblxuICAvLyBEb2N1bWVudGF0aW9uLiBUaGUgUkVBRE1FIGlzIGtlcHQgYXMgc291cmNlIG1hcmtkb3duIEFORCBwcmUtc2FuaXRpemVkXG4gIC8vIEhUTUwgKHJlbmRlcmVkIG9uY2UgYXQgdXBsb2FkKSwgc28gbm8gcmVhZCBwYXRoIHJlbmRlcnMgdW50cnVzdGVkIG1hcmtkb3duLlxuICByZWFkbWVNZDogdGV4dCgncmVhZG1lX21kJyksXG4gIHJlYWRtZUh0bWw6IHRleHQoJ3JlYWRtZV9odG1sJyksXG4gIC8vIFNQRFggbGljZW5zZSBpZGVudGlmaWVyLlxuICBsaWNlbnNlOiB2YXJjaGFyKCdsaWNlbnNlJywgeyBsZW5ndGg6IDY0IH0pLFxuICBjaGFuZ2Vsb2c6IHRleHQoJ2NoYW5nZWxvZycpLFxuICBob21lcGFnZVVybDogdmFyY2hhcignaG9tZXBhZ2VfdXJsJywgeyBsZW5ndGg6IDIwNDggfSksXG4gIHNvdXJjZVVybDogdmFyY2hhcignc291cmNlX3VybCcsIHsgbGVuZ3RoOiAyMDQ4IH0pLFxuICBpY29uOiBqc29uYignaWNvbicpLiR0eXBlPFBsdWdpbkljb24+KCksXG4gIHVwbG9hZGVkSWNvbjoganNvbmIoJ3VwbG9hZGVkX2ljb24nKS4kdHlwZTxQbHVnaW5VcGxvYWRlZEljb24+KCksXG5cbiAgLy8gQ2F0YWxvZyBtZXRhZGF0YTogZGV0ZWN0ZWQgZnJvbSB0aGUgcGFja2FnZSAoc3BlYywgUkVBRE1FLFxuICAvLyB0aGUgcGx1Z2luJ3Mgb3duIERvY2tlcmZpbGUgT0NJIGxhYmVscyksIHRoZW4gYWNjZXB0ZWQgb3IgZWRpdGVkIGJ5IHRoZVxuICAvLyB1c2VyLiBgc3VtbWFyeWAgaXMgdGhlIGNhcmQgb25lLWxpbmVyOyBgZGlzcGxheU5hbWVgIGZhbGxzIGJhY2sgdG9cbiAgLy8gYG5hbWVgIHdoZW4gdW5zZXQuIGBtZXRhZGF0YVNvdXJjZXNgIHJlY29yZHMsIHBlciBkZXNjcmlwdGl2ZSBmaWVsZCwgd2hlcmVcbiAgLy8gaXRzIHZhbHVlIGNhbWUgZnJvbSAoYHNwZWMgfCByZWFkbWUgfCBkb2NrZXJmaWxlIHwgZGVyaXZlZCB8IHVzZXJgKSBzbyBhXG4gIC8vIHJldmlld2VyIGNhbiBzZWUgd2hhdCB3YXMgdHlwZWQgcmF0aGVyIHRoYW4gc2hpcHBlZCBpbiB0aGUgcGFja2FnZS5cbiAgc3VtbWFyeTogdmFyY2hhcignc3VtbWFyeScsIHsgbGVuZ3RoOiAxNjAgfSksXG4gIGRpc3BsYXlOYW1lOiB2YXJjaGFyKCdkaXNwbGF5X25hbWUnLCB7IGxlbmd0aDogMTAwIH0pLFxuICBkb2N1bWVudGF0aW9uVXJsOiB2YXJjaGFyKCdkb2N1bWVudGF0aW9uX3VybCcsIHsgbGVuZ3RoOiAyMDQ4IH0pLFxuICBtZXRhZGF0YVNvdXJjZXM6IGpzb25iKCdtZXRhZGF0YV9zb3VyY2VzJylcbiAgICAuJHR5cGU8TWV0YWRhdGFTb3VyY2VzPigpXG4gICAgLmRlZmF1bHQoe30pXG4gICAgLm5vdE51bGwoKSxcblxuICAvLyBEb2NrZXIgY29uZmlndXJhdGlvblxuICBkb2NrZXJmaWxlOiB0ZXh0KCdkb2NrZXJmaWxlJyksXG4gIGJ1aWxkVHlwZTogdmFyY2hhcignYnVpbGRfdHlwZScsIHsgbGVuZ3RoOiAyMCB9KVxuICAgIC5kZWZhdWx0KCdidWlsZF9pbWFnZScpXG4gICAgLm5vdE51bGwoKSxcblxuICAvLyBTdXBwbHkgY2hhaW4uIFNldCBieSB0aGUgYnVpbGQgd29ya2VyIG9uY2UgdGhlIGltYWdlIGlzIHB1c2hlZCwgc2lnbmVkIGFuZFxuICAvLyBjYXJyaWVzIGl0cyBTQk9NIGF0dGVzdGF0aW9uOyBOVUxMIGZvciBwbHVnaW5zIHRoYXQgcHJvZHVjZSBubyBpbWFnZVxuICAvLyAobWV0YWRhdGFfb25seSwgYXBwcm92YWwgc3RlcHMpLiBgaW1hZ2VEaWdlc3RgIGlzIHdoYXQgc3ludGggcGlucyBDb2RlQnVpbGRcbiAgLy8gdG8gKGA8cmVwbz5Ac2hhMjU2OuKApmApIOKAlCBuZXZlciB0aGUgbXV0YWJsZSBgbmFtZTp2ZXJzaW9uYCB0YWcuXG4gIC8vIGBpbWFnZVNvdXJjZWAgc2VwYXJhdGVzIGFuIGltYWdlIHRoaXMgcGxhdGZvcm0gQlVJTFQgKEJ1aWxkS2l0IHByb3ZlbmFuY2VcbiAgLy8gYXR0YWNoZWQpIGZyb20gYW4gVVBMT0FERUQgYGltYWdlLnRhcmAgd2hvc2UgYnVpbGQgaXQgbmV2ZXIgc2F3LlxuICBpbWFnZURpZ2VzdDogdmFyY2hhcignaW1hZ2VfZGlnZXN0JywgeyBsZW5ndGg6IDcxIH0pLFxuICBpbWFnZVNvdXJjZTogdmFyY2hhcignaW1hZ2Vfc291cmNlJywgeyBsZW5ndGg6IDEwIH0pLiR0eXBlPEltYWdlU291cmNlPigpLFxuXG4gIC8vIFZ1bG5lcmFiaWxpdHkgc2NhbiAoZ3J5cGUgb3ZlciB0aGUgU0JPTSBhdCBidWlsZDsgbmlnaHRseSByZXNjYW4pIGFuZCB0aGVcbiAgLy8gaW1hZ2UncyBlZmZlY3RpdmUgVVNFUi4gTlVMTCA9IG5vdCBzY2FubmVkIC8gcHJvZHVjZXMgbm8gaW1hZ2UuXG4gIHZ1bG5Dcml0aWNhbDogaW50ZWdlcigndnVsbl9jcml0aWNhbCcpLFxuICB2dWxuSGlnaDogaW50ZWdlcigndnVsbl9oaWdoJyksXG4gIHZ1bG5NZWRpdW06IGludGVnZXIoJ3Z1bG5fbWVkaXVtJyksXG4gIHZ1bG5Mb3c6IGludGVnZXIoJ3Z1bG5fbG93JyksXG4gIC8vIE9mIHRoZSBjcml0aWNhbC9oaWdoIGZpbmRpbmdzLCB0aG9zZSBncnlwZSByZXBvcnRzIGEgZml4ZWQgdmVyc2lvbiBmb3Ig4oCUXG4gIC8vIHdoYXQgdGhlIHBsYXRmb3JtIGZsb29yIChQTFVHSU5fVlVMTl9NQVhfQ1JJVElDQUwpIGdhdGVzIG9uLiBOVUxMID0gdW5zY2FubmVkLlxuICB2dWxuQ3JpdGljYWxGaXhhYmxlOiBpbnRlZ2VyKCd2dWxuX2NyaXRpY2FsX2ZpeGFibGUnKSxcbiAgdnVsbkhpZ2hGaXhhYmxlOiBpbnRlZ2VyKCd2dWxuX2hpZ2hfZml4YWJsZScpLFxuICBzY2FubmVkQXQ6IHRpbWVzdGFtcCgnc2Nhbm5lZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxuICAvLyBTZXQgYnkgdGhlIG5pZ2h0bHkgcmVzY2FuIHdoaWxlIHRoaXMgdmVyc2lvbidzIGZpeGFibGUgY3JpdGljYWxzIGV4Y2VlZCB0aGVcbiAgLy8gZmxvb3IgKGNsZWFyZWQgd2hlbiByZXNvbHZlZCk6IHRoZSBjb3VudHMgYW5kIHRvcCBmaW5kaW5ncyBhdCB0aGF0IHJlc2Nhbi5cbiAgc2NhbkZsYWdnZWRBdDogdGltZXN0YW1wKCdzY2FuX2ZsYWdnZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgc2NhbkZsYWc6IGpzb25iKCdzY2FuX2ZsYWcnKS4kdHlwZTxQbHVnaW5TY2FuRmxhZz4oKSxcbiAgcnVuQXNSb290OiBib29sZWFuKCdydW5fYXNfcm9vdCcpLFxuXG4gIC8vIFZlcnNpb24gbGlmZWN5Y2xlLiBgYnJlYWtpbmdgOiBhIHB1Ymxpc2hlci1tYXJrZWQgbWFqb3IgdGhhdCBgbGF0ZXN0YFxuICAvLyBpbnN0YWxscyBuZXZlciBjcm9zcyB3aXRob3V0IHJlLWFwcHJvdmFsLiBgZnJvemVuQXRgOiBzZXQgdGhlIG1vbWVudCBhXG4gIC8vIHB1Ymxpc2ggcmVxdWVzdCByZWZlcmVuY2VzIHRoaXMgdmVyc2lvbiDigJQgcmUtdXBsb2FkaW5nIGl0IGlzIHRoZW4gcmVmdXNlZFxuICAvLyAoNDA5KS4gWWFuayAvIGRlcHJlY2F0aW9uIGNhcnJ5IHRoZWlyIHJlYXNvbiBhbG9uZ3NpZGUgdGhlIHRpbWVzdGFtcC5cbiAgYnJlYWtpbmc6IGJvb2xlYW4oJ2JyZWFraW5nJylcbiAgICAuZGVmYXVsdChmYWxzZSlcbiAgICAubm90TnVsbCgpLFxuICBmcm96ZW5BdDogdGltZXN0YW1wKCdmcm96ZW5fYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgeWFua2VkQXQ6IHRpbWVzdGFtcCgneWFua2VkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG4gIHlhbmtSZWFzb246IHRleHQoJ3lhbmtfcmVhc29uJyksXG4gIGRlcHJlY2F0ZWRBdDogdGltZXN0YW1wKCdkZXByZWNhdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG4gIGRlcHJlY2F0aW9uTWVzc2FnZTogdGV4dCgnZGVwcmVjYXRpb25fbWVzc2FnZScpLFxuXG4gIC8vIERldmVsb3Blci1wb3J0YWwgY2F0YWxvZyBtZXRhZGF0YSAob3duZXJzaGlwIC8gbGlmZWN5Y2xlIC8gY2xhc3NpZmljYXRpb24pLlxuICAvLyBvd25lcklkIGRlZmF1bHRzIHRvIHRoZSBjcmVhdGluZyB1c2VyIChzZXQgYXQgaW5zZXJ0KSwgc28gZXZlcnkgcGx1Z2luIGhhc1xuICAvLyBhbiBvd25lciBmb3IgXCJteSBzZXJ2aWNlc1wiIHZpZXdzOyBvd25lclR5cGUgZGlzdGluZ3Vpc2hlcyB1c2VyIHZzIHRlYW0uXG4gIG93bmVySWQ6IHRleHQoJ293bmVyX2lkJyksXG4gIG93bmVyVHlwZTogdmFyY2hhcignb3duZXJfdHlwZScsIHsgbGVuZ3RoOiAxMCB9KS4kdHlwZTxPd25lclR5cGU+KCksXG4gIGxpZmVjeWNsZTogdmFyY2hhcignbGlmZWN5Y2xlJywgeyBsZW5ndGg6IDIwIH0pXG4gICAgLiR0eXBlPFBsdWdpbkxpZmVjeWNsZT4oKVxuICAgIC5kZWZhdWx0KCdwcm9kdWN0aW9uJyBhcyBQbHVnaW5MaWZlY3ljbGUpXG4gICAgLm5vdE51bGwoKSxcbiAgY3JpdGljYWxpdHk6IHZhcmNoYXIoJ2NyaXRpY2FsaXR5JywgeyBsZW5ndGg6IDEwIH0pLiR0eXBlPENyaXRpY2FsaXR5PigpLFxuICBsYWJlbHM6IGpzb25iKCdsYWJlbHMnKVxuICAgIC4kdHlwZTxFbnRpdHlMYWJlbHM+KClcbiAgICAuZGVmYXVsdCh7fSlcbiAgICAubm90TnVsbCgpLFxuICBsaW5rczoganNvbmIoJ2xpbmtzJylcbiAgICAuJHR5cGU8RW50aXR5TGlua1tdPigpXG4gICAgLmRlZmF1bHQoW10pXG4gICAgLm5vdE51bGwoKSxcblxuICAvLyBBY2Nlc3MgYW5kIHZpc2liaWxpdHkg4oCUIHRoZSBzaGFyZWQgdGhyZWUtcnVuZyBsYWRkZXIgKHNlZSBhcGktY29yZSdzXG4gIC8vIGBWaXNpYmlsaXR5YCk6IGBwcml2YXRlYCBpcyBhdXRob3Itb25seSAoYGNyZWF0ZWRfYnlgKSwgYG9yZ2AgaXMgdGhlIHdob2xlXG4gIC8vIG93bmluZyBvcmcsIGBwdWJsaWNgIHJlYWNoZXMgdGhlIG9yZydzIHRlYW1zIGFuZCDigJQgZnJvbSB0aGUgc3lzdGVtIG9yZyDigJRcbiAgLy8gZXZlcnkgb3JnLiBDb25zdHJhaW5lZCBhdCB0aGUgU1FMIGxheWVyIHRvbyB2aWEgYSBDSEVDSyBpbiBwb3N0Z3Jlcy1pbml0LnNxbFxuICAvLyBzbyBhIHR5cG8gY2FuJ3Qgc25lYWsgcGFzdCB0aGUgYXBwbGljYXRpb24gbGF5ZXIuXG4gIHZpc2liaWxpdHk6IHZhcmNoYXIoJ3Zpc2liaWxpdHknLCB7IGxlbmd0aDogMTAgfSlcbiAgICAuJHR5cGU8VmlzaWJpbGl0eT4oKVxuICAgIC5kZWZhdWx0KCdwcml2YXRlJylcbiAgICAubm90TnVsbCgpLFxuICBpc0RlZmF1bHQ6IGJvb2xlYW4oJ2lzX2RlZmF1bHQnKVxuICAgIC5kZWZhdWx0KGZhbHNlKVxuICAgIC5ub3ROdWxsKCksXG4gIGlzQWN0aXZlOiBib29sZWFuKCdpc19hY3RpdmUnKVxuICAgIC5kZWZhdWx0KHRydWUpXG4gICAgLm5vdE51bGwoKSxcblxuICAvLyBEZWxldGlvbiB0cmFja2luZyAoc29mdCBkZWxldGUpXG4gIGRlbGV0ZWRBdDogdGltZXN0YW1wKCdkZWxldGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG4gIGRlbGV0ZWRCeTogdGV4dCgnZGVsZXRlZF9ieScpLFxuICAvLyBTb2Z0LWRlbGV0ZSBwdXJnZSBkZWFkbGluZTogdGhlIHJldGVudGlvbiBzd2VlcCBoYXJkLWRlbGV0ZXMgdG9tYnN0b25lZFxuICAvLyByb3dzIG9uY2UgYHB1cmdlX2FmdGVyYCBoYXMgcGFzc2VkIChzZXQgb24gZGVsZXRlIGFsb25nc2lkZSBkZWxldGVkX2F0KS5cbiAgcHVyZ2VBZnRlcjogdGltZXN0YW1wKCdwdXJnZV9hZnRlcicsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxuXG4gIC8vIFRoZSBxdW90YSBwZXJpb2QgKGByZXNldEF0YCkgdGhpcyB2ZXJzaW9uJ3MgYHBsdWdpbnNgIHNsb3Qgd2FzIGNoYXJnZWQgdG9cbiAgLy8gYXQgdXBsb2FkOyBOVUxMIHdoZW4gbm8gc2xvdCB3YXMgY2hhcmdlZCAoc3lzdGVtIGNhdGFsb2cgbG9hZHMpIG9yIGl0IHdhc1xuICAvLyBhbHJlYWR5IHJlZnVuZGVkLiBBIGRlbGV0ZS9wdXJnZSByZWZ1bmRzIENPTkRJVElPTkFMTFkgb24gaXQgKHRoZSBxdW90YVxuICAvLyBzZXJ2aWNlIGlnbm9yZXMgdGhlIHJlZnVuZCBvbmNlIHRoYXQgcGVyaW9kIGhhcyByb2xsZWQgb3ZlciksIHRoZW4gY2xlYXJzIGl0LlxuICBxdW90YVJlc2V0QXQ6IHRpbWVzdGFtcCgncXVvdGFfcmVzZXRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbn0sICh0YWJsZSkgPT4gKHtcbiAgLy8gUGFydGlhbCBpbmRleCBvdmVyIGp1c3QgdGhlIHRvbWJzdG9uZXMg4oCUIGRyaXZlcyB0aGUgcmV0ZW50aW9uIHB1cmdlIHN3ZWVwLlxuICBwdXJnZUlkeDogaW5kZXgoJ3BsdWdpbl9wdXJnZV9pZHgnKS5vbih0YWJsZS5wdXJnZUFmdGVyKS53aGVyZShzcWxgZGVsZXRlZF9hdCBJUyBOT1QgTlVMTGApLFxuICAvLyBNaXJyb3JzIHRoZSBpbmRleGVzIHBvc3RncmVzLWluaXQuc3FsIGNyZWF0ZXMsIG5hbWUgZm9yIG5hbWUgKHRoZSBTUUwgZmlsZSBpc1xuICAvLyB3aGF0IGRlcGxveXM7IHNjaGVtYS1yZWZsZWN0aW9uLnRlc3QudHMga2VlcHMgdGhlIHR3byBpbiBsb2NrLXN0ZXApLlxuICBvcmdJZElkeDogaW5kZXgoJ2lkeF9wbHVnaW5zX29yZ19pZCcpLm9uKHRhYmxlLm9yZ0lkKS53aGVyZShzcWxgZGVsZXRlZF9hdCBJUyBOVUxMYCksXG4gIG5hbWVJZHg6IGluZGV4KCdpZHhfcGx1Z2luc19uYW1lJykub24odGFibGUubmFtZSkud2hlcmUoc3FsYGRlbGV0ZWRfYXQgSVMgTlVMTGApLFxuICBuYW1lVmVyc2lvbklkeDogaW5kZXgoJ2lkeF9wbHVnaW5zX25hbWVfdmVyc2lvbicpLm9uKHRhYmxlLm5hbWUsIHRhYmxlLnZlcnNpb24pLndoZXJlKHNxbGBkZWxldGVkX2F0IElTIE5VTExgKSxcbiAgdmlzaWJpbGl0eUlkeDogaW5kZXgoJ2lkeF9wbHVnaW5zX3Zpc2liaWxpdHknKS5vbih0YWJsZS52aXNpYmlsaXR5KS53aGVyZShzcWxgZGVsZXRlZF9hdCBJUyBOVUxMYCksXG4gIGlzRGVmYXVsdElkeDogaW5kZXgoJ2lkeF9wbHVnaW5zX2lzX2RlZmF1bHQnKS5vbih0YWJsZS5uYW1lLCB0YWJsZS5pc0RlZmF1bHQpLndoZXJlKHNxbGBpc19kZWZhdWx0ID0gdHJ1ZSBBTkQgZGVsZXRlZF9hdCBJUyBOVUxMYCksXG4gIGNhdGVnb3J5SWR4OiBpbmRleCgnaWR4X3BsdWdpbnNfY2F0ZWdvcnknKS5vbih0YWJsZS5jYXRlZ29yeSksXG4gIGFjdGl2ZUlkeDogaW5kZXgoJ2lkeF9wbHVnaW5zX2lzX2FjdGl2ZScpLm9uKHRhYmxlLmlzQWN0aXZlKS53aGVyZShzcWxgZGVsZXRlZF9hdCBJUyBOVUxMYCksXG4gIG9yZ0NyZWF0ZWRJZHg6IGluZGV4KCdpZHhfcGx1Z2luc19vcmdfY3JlYXRlZCcpLm9uKHRhYmxlLm9yZ0lkLCBzcWxgJHt0YWJsZS5jcmVhdGVkQXR9IERFU0NgKS53aGVyZShzcWxgZGVsZXRlZF9hdCBJUyBOVUxMYCksXG4gIG9yZ05hbWVJZHg6IGluZGV4KCdpZHhfcGx1Z2luc19vcmdfbmFtZScpLm9uKHRhYmxlLm9yZ0lkLCB0YWJsZS5uYW1lKS53aGVyZShzcWxgZGVsZXRlZF9hdCBJUyBOVUxMYCksXG5cbiAgLy8gRGV2ZWxvcGVyLXBvcnRhbCBjYXRhbG9nIGluZGV4ZXM6IFwibXkgc2VydmljZXNcIiAob3duZXIpICsgbGlmZWN5Y2xlIGZpbHRlci5cbiAgb3duZXJJZHg6IGluZGV4KCdwbHVnaW5fb3duZXJfaWR4Jykub24odGFibGUub3JnSWQsIHRhYmxlLm93bmVySWQpLFxuICBsaWZlY3ljbGVJZHg6IGluZGV4KCdwbHVnaW5fbGlmZWN5Y2xlX2lkeCcpLm9uKHRhYmxlLm9yZ0lkLCB0YWJsZS5saWZlY3ljbGUpLFxuXG4gIC8vIENvbXBvc2l0ZSBpbmRleCBmb3IgZmlsdGVyZWQgcXVlcmllcyAob3JnSWQgKyB2aXNpYmlsaXR5ICsgaXNBY3RpdmUpXG4gIG9yZ1Zpc2liaWxpdHlBY3RpdmVJZHg6IGluZGV4KCdwbHVnaW5fb3JnX3Zpc2liaWxpdHlfYWN0aXZlX2lkeCcpLm9uKHRhYmxlLm9yZ0lkLCB0YWJsZS52aXNpYmlsaXR5LCB0YWJsZS5pc0FjdGl2ZSksXG4gIC8vIERyaXZlcyB0aGUgXCJteSBwcml2YXRlIGRyYWZ0c1wiIGxlZyBvZiB0aGUgdmlzaWJpbGl0eSBwcmVkaWNhdGUuXG4gIGNyZWF0ZWRCeUlkeDogaW5kZXgoJ3BsdWdpbl9jcmVhdGVkX2J5X2lkeCcpLm9uKHRhYmxlLm9yZ0lkLCB0YWJsZS5jcmVhdGVkQnkpLFxuXG4gIC8vIFVuaXF1ZSBjb25zdHJhaW50IG9uIG5hbWUgKyB2ZXJzaW9uICsgb3JnSWRcbiAgbmFtZVZlcnNpb25PcmdVbmlxdWU6IHVuaXF1ZUluZGV4KCdwbHVnaW5fbmFtZV92ZXJzaW9uX29yZ191bmlxdWUnKVxuICAgIC5vbih0YWJsZS5uYW1lLCB0YWJsZS52ZXJzaW9uLCB0YWJsZS5vcmdJZCksXG5cbiAgLy8gQ2hlY2sgY29uc3RyYWludHNcbiAgdmVyc2lvbkNoZWNrOiBjaGVjayggJ3BsdWdpbl92ZXJzaW9uX2NoZWNrJyxcbiAgICBzcWxgJHt0YWJsZS52ZXJzaW9ufSB+ICdeWzAtOV0rXFwuWzAtOV0rXFwuWzAtOV0rKC1bYS16QS1aMC05Li1dKyk/KFxcK1thLXpBLVowLTkuLV0rKT8kJ2AsXG4gICksXG4gIGltYWdlRGlnZXN0Q2hlY2s6IGNoZWNrKCdwbHVnaW5faW1hZ2VfZGlnZXN0X2NoZWNrJyxcbiAgICBzcWxgJHt0YWJsZS5pbWFnZURpZ2VzdH0gSVMgTlVMTCBPUiAke3RhYmxlLmltYWdlRGlnZXN0fSB+ICdec2hhMjU2OlswLTlhLWZdezY0fSQnYCxcbiAgKSxcbiAgaW1hZ2VTb3VyY2VDaGVjazogY2hlY2soJ3BsdWdpbl9pbWFnZV9zb3VyY2VfY2hlY2snLFxuICAgIHNxbGAke3RhYmxlLmltYWdlU291cmNlfSBJUyBOVUxMIE9SICR7dGFibGUuaW1hZ2VTb3VyY2V9IElOICgnYnVpbHQnLCAndXBsb2FkZWQnKWAsXG4gICksXG59KSk7XG5cbi8qKlxuICogVHlwZVNjcmlwdCB0eXBlcyByZXByZXNlbnRpbmcgZGF0YWJhc2Ugcm93c1xuICovXG5leHBvcnQgdHlwZSBQbHVnaW4gPSB0eXBlb2YgcGx1Z2luLiRpbmZlclNlbGVjdDtcbmV4cG9ydCB0eXBlIFBsdWdpbkluc2VydCA9IHR5cGVvZiBwbHVnaW4uJGluZmVySW5zZXJ0O1xuXG4vKipcbiAqIEhlbHBlciB0eXBlcyBmb3Igd29ya2luZyB3aXRoIHBhcnRpYWwgdXBkYXRlc1xuICovXG5leHBvcnQgdHlwZSBQbHVnaW5VcGRhdGUgPSBQYXJ0aWFsPE9taXQ8UGx1Z2luSW5zZXJ0LCAnaWQnIHwgJ2NyZWF0ZWRBdCcgfCAnY3JlYXRlZEJ5Jz4+O1xuIl19
268
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2RhdGFiYXNlL3NjaGVtYS9wbHVnaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLEVBQ0wsV0FBVyxFQUFFLFVBQVUsRUFBRSxhQUFhLEdBRXZDLE1BQU0sNEJBQTRCLENBQUM7QUFDcEMsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNsQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBbURsSTs7Ozs7Ozs7Ozs7R0FXRztBQUNILE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsU0FBUyxFQUFFO0lBQ3ZDLGNBQWM7SUFDZCxFQUFFLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDLGFBQWEsRUFBRTtJQUUzQyxrQ0FBa0M7SUFDbEMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUM7U0FDdEMsT0FBTyxDQUFDLGFBQWEsQ0FBQztTQUN0QixPQUFPLEVBQUU7SUFFWixlQUFlO0lBQ2YsU0FBUyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUM7U0FDMUIsT0FBTyxDQUFDLGFBQWEsQ0FBQztTQUN0QixPQUFPLEVBQUU7SUFDWixTQUFTLEVBQUUsU0FBUyxDQUFDLFlBQVksRUFBRSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQztTQUN2RCxVQUFVLEVBQUU7U0FDWixPQUFPLEVBQUU7SUFDWixTQUFTLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQztTQUMxQixPQUFPLENBQUMs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SUFDbEUsWUFBWSxFQUFFLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUM7SUFFN0UsOENBQThDO0lBQzlDLG9CQUFvQixFQUFFLFdBQVcsQ0FBQyxnQ0FBZ0MsQ0FBQztTQUNoRSxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUM7SUFFN0Msb0JBQW9CO0lBQ3BCLFlBQVksRUFBRSxLQUFLLENBQUUsc0JBQXNCLEVBQ3pDLEdBQUcsQ0FBQSxHQUFHLEtBQUssQ0FBQyxPQUFPLG9FQUFvRSxDQUN4RjtJQUNELGdCQUFnQixFQUFFLEtBQUssQ0FBQywyQkFBMkIsRUFDakQsR0FBRyxDQUFBLEdBQUcsS0FBSyxDQUFDLFdBQVcsZUFBZSxLQUFLLENBQUMsV0FBVyw0QkFBNEIsQ0FDcEY7SUFDRCxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsMkJBQTJCLEVBQ2pELEdBQUcsQ0FBQSxHQUFHLEtBQUssQ0FBQyxXQUFXLGVBQWUsS0FBSyxDQUFDLFdBQVcsMkJBQTJCLENBQ25GO0NBQ0YsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHtcbiAgQ29tcHV0ZVR5cGUsIFBsdWdpblR5cGUsIFNZU1RFTV9PUkdfSUQsIHR5cGUgQ3JpdGljYWxpdHksIHR5cGUgRW50aXR5TGFiZWxzLCB0eXBlIEVudGl0eUxpbmssIHR5cGUgTGlmZWN5Y2xlLFxuICB0eXBlIE1ldGFkYXRhU291cmNlcywgdHlwZSBPd25lclR5cGUsIHR5cGUgUGx1Z2luU2NhbkZsYWcsIHR5cGUgUGx1Z2luU2NhblN1bW1hcnksIHR5cGUgVmlzaWJpbGl0eSxcbn0gZnJvbSAnQHBpcGVsaW5lLWJ1aWxkZXIvYXBpLWNvcmUnO1xuaW1wb3J0IHsgc3FsIH0gZnJvbSAnZHJpenpsZS1vcm0nO1xuaW1wb3J0IHsgYm9vbGVhbiwgaW50ZWdlciwgdmFyY2hhciwgcGdUYWJsZSwgdGV4dCwgdGltZXN0YW1wLCB1dWlkLCBqc29uYiwgaW5kZXgsIHVuaXF1ZUluZGV4LCBjaGVjayB9IGZyb20gJ2RyaXp6bGUtb3JtL3BnLWNvcmUnO1xuXG4vKipcbiAqIFNlY3JldCByZXF1aXJlbWVudCBmb3IgYSBwbHVnaW4uXG4gKiBEZWNsYXJlcyBuYW1lZCBzZWNyZXRzIHRoZSBwbHVnaW4gZXhwZWN0cyBhdCBidWlsZCB0aW1lLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBsdWdpblNlY3JldCB7XG4gIG5hbWU6IHN0cmluZztcbiAgcmVxdWlyZWQ6IGJvb2xlYW47XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFdoZXJlIGEgcGx1Z2luJ3MgaW1hZ2UgY2FtZSBmcm9tOiBgYnVpbHRgIGJ5IHRoZSBwbGF0Zm9ybSdzIEJ1aWxkS2l0IChjYXJyaWVzXG4gKiBTTFNBIHByb3ZlbmFuY2UpIG9yIGB1cGxvYWRlZGAgYXMgYSBwcmVidWlsdCBgaW1hZ2UudGFyYCAoU0JPTSArIHNpZ25hdHVyZVxuICogb25seSDigJQgdGhlIHBsYXRmb3JtIG5ldmVyIHNhdyB0aGUgYnVpbGQpLlxuICovXG5leHBvcnQgdHlwZSBJbWFnZVNvdXJjZSA9ICdidWlsdCcgfCAndXBsb2FkZWQnO1xuXG4vKipcbiAqIFBsdWdpbiBsaWZlY3ljbGU6IHRoZSBzaGFyZWQgY2F0YWxvZyB7QGxpbmsgTGlmZWN5Y2xlfSBwbHVzIGB5YW5rZWRgLCB3aGljaFxuICogb25seSBwbHVnaW4gdmVyc2lvbnMgY2FuIHJlYWNoIChhIHlhbmtlZCB2ZXJzaW9uIHN0b3BzIHJlc29sdmluZyBmb3IgbmV3XG4gKiBzeW50aHMpLiBgeWFua2VkQXRgIC8gYGRlcHJlY2F0ZWRBdGAgYXJlIHRoZSBhdXRob3JpdGF0aXZlIHRpbWVzdGFtcHM7IHRoZVxuICogbGlmZWN5Y2xlIHZhbHVlIG1pcnJvcnMgdGhlbSBmb3IgY2F0YWxvZyBmaWx0ZXJpbmcuXG4gKi9cbmV4cG9ydCB0eXBlIFBsdWdpbkxpZmVjeWNsZSA9IExpZmVjeWNsZSB8ICd5YW5rZWQnO1xuXG4vKiogQ29lcmNpb24gdHlwZSBhIGByZXF1aXJlZE1ldGFkYXRhYCAvIGByZXF1aXJlZFZhcnNgIGtleSBpcyBkZWNsYXJlZCBhcy4gKi9cbmV4cG9ydCB0eXBlIFBsdWdpbkNvbnRyYWN0VmFsdWVUeXBlID0gJ3N0cmluZycgfCAnbnVtYmVyJyB8ICdib29sJyB8ICdqc29uJztcblxuLyoqXG4gKiBUaGUgc3BlYydzIHNtb2tlLXRlc3QgZGVjbGFyYXRpb24uIFRvZGF5IGEgYmFyZSBjb21tYW5kIHN0cmluZzsgc3RvcmVkIGFzXG4gKiBKU09OQiBzbyBhIHN0cnVjdHVyZWQgZm9ybSBjYW4gZm9sbG93IHdpdGhvdXQgYW5vdGhlciBjb2x1bW4uXG4gKi9cbmV4cG9ydCB0eXBlIFBsdWdpblNtb2tlVGVzdCA9IHN0cmluZyB8IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXG4vKiogQSBjdXJhdGVkIGljb246IGEga2V5IGludG8gdGhlIGN1cmF0ZWQgc2V0LCBwbHVzIGFuIG9wdGlvbmFsIGJhZGdlLiAqL1xuZXhwb3J0IGludGVyZmFjZSBQbHVnaW5JY29uIHtcbiAga2V5OiBzdHJpbmc7XG4gIGJhZGdlPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFN0b3JhZ2Uga2V5cyBvZiBhbiB1cGxvYWRlZCBpY29uJ3MgcmUtZW5jb2RlZCBXZWJQIHJlbmRpdGlvbnMgKGltYWdlLXJlZ2lzdHJ5XG4gKiBkZWNvZGVzICsgcmUtZW5jb2RlcyBldmVyeSB1cGxvYWQ7IHRoZSByYXcgZmlsZSBhbmQgU1ZHIGFyZSBuZXZlciBzdG9yZWQpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBsdWdpblVwbG9hZGVkSWNvbiB7XG4gIGtleTI1Njogc3RyaW5nO1xuICBrZXk2NDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFRhYmxlIGZvciBzdG9yaW5nIHJldXNhYmxlIHBsdWdpbiBjb25maWd1cmF0aW9ucy5cbiAqIFBsdWdpbnMgZGVmaW5lIHRoZSBiZWhhdmlvciBvZiBzeW50aC9idWlsZCBzdGVwcyBpbiBDREsgcGlwZWxpbmVzLlxuICpcbiAqIEZlYXR1cmVzICogLSBWZXJzaW9uaW5nIHN1cHBvcnQgd2l0aCBzZW1hbnRpYyB2ZXJzaW9uaW5nXG4gKiAtIEFjY2VzcyBjb250cm9sIHZpYSBvcmdJZCBhbmQgdGhlIHRocmVlLXJ1bmcgYHZpc2liaWxpdHlgIGxhZGRlclxuICogLSBGdWxsIGF1ZGl0IHRyYWlsIChjcmVhdGVkL3VwZGF0ZWQgYnkvYXQpXG4gKiAtIEZsZXhpYmxlIG1ldGFkYXRhIHN0b3JhZ2UgdmlhIEpTT05CXG4gKiAtIFN1cHBvcnQgZm9yIGJvdGggU2hlbGxTdGVwIGFuZCBDb2RlQnVpbGRTdGVwIHR5cGVzXG4gKlxuICogQHRhYmxlIHBsdWdpbnNcbiAqL1xuZXhwb3J0IGNvbnN0IHBsdWdpbiA9IHBnVGFibGUoJ3BsdWdpbnMnLCB7XG4gIC8vIFByaW1hcnkga2V5XG4gIGlkOiB1dWlkKCdpZCcpLnByaW1hcnlLZXkoKS5kZWZhdWx0UmFuZG9tKCksXG5cbiAgLy8gT3JnYW5pemF0aW9uIGFuZCBhY2Nlc3MgY29udHJvbFxuICBvcmdJZDogdmFyY2hhcignb3JnX2lkJywgeyBsZW5ndGg6IDI1NSB9KVxuICAgIC5kZWZhdWx0KFNZU1RFTV9PUkdfSUQpXG4gICAgLm5vdE51bGwoKSxcblxuICAvLyBBdWRpdCBmaWVsZHNcbiAgY3JlYXRlZEJ5OiB0ZXh0KCdjcmVhdGVkX2J5JylcbiAgICAuZGVmYXVsdChTWVNURU1fT1JHX0lEKVxuICAgIC5ub3ROdWxsKCksXG4gIGNyZWF0ZWRBdDogdGltZXN0YW1wKCdjcmVhdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSlcbiAgICAuZGVmYXVsdE5vdygpXG4gICAgLm5vdE51bGwoKSxcbiAgdXBkYXRlZEJ5OiB0ZXh0KCd1cGRhdGVkX2J5JylcbiAgICAuZGVmYXVsdChTWVNURU1fT1JHX0lEKVxuICAgIC5ub3ROdWxsKCksXG4gIHVwZGF0ZWRBdDogdGltZXN0YW1wKCd1cGRhdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSlcbiAgICAuZGVmYXVsdE5vdygpXG4gICAgLm5vdE51bGwoKSxcblxuICAvLyBDb3JlIHBsdWdpbiBpbmZvcm1hdGlvblxuICBuYW1lOiB2YXJjaGFyKCduYW1lJywgeyBsZW5ndGg6IDI1NSB9KVxuICAgIC5ub3ROdWxsKCksXG4gIGRlc2NyaXB0aW9uOiB0ZXh0KCdkZXNjcmlwdGlvbicpLFxuICBrZXl3b3JkczoganNvbmIoJ2tleXdvcmRzJylcbiAgICAuJHR5cGU8c3RyaW5nW10+KClcbiAgICAuZGVmYXVsdChbXSlcbiAgICAubm90TnVsbCgpLFxuICB2ZXJzaW9uOiB2YXJjaGFyKCd2ZXJzaW9uJywgeyBsZW5ndGg6IDUwIH0pXG4gICAgLmRlZmF1bHQoJzEuMC4wJylcbiAgICAubm90TnVsbCgpLFxuXG4gIC8vIFBsdWdpbiBjbGFzc2lmaWNhdGlvblxuICBjYXRlZ29yeTogdmFyY2hhcignY2F0ZWdvcnknLCB7IGxlbmd0aDogNTAgfSlcbiAgICAuZGVmYXVsdCgndW5rbm93bicpXG4gICAgLm5vdE51bGwoKSxcblxuICAvLyBQbHVnaW4gY29uZmlndXJhdGlvblxuICBtZXRhZGF0YToganNvbmIoJ21ldGFkYXRhJylcbiAgICAuJHR5cGU8UmVjb3JkPHN0cmluZywgc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbj4+KClcbiAgICAuZGVmYXVsdCh7fSlcbiAgICAubm90TnVsbCgpLFxuICBwbHVnaW5UeXBlOiB2YXJjaGFyKCdwbHVnaW5fdHlwZScsIHsgbGVuZ3RoOiA1MCB9KVxuICAgIC4kdHlwZTxQbHVnaW5UeXBlPigpXG4gICAgLmRlZmF1bHQoJ0NvZGVCdWlsZFN0ZXAnIGFzIFBsdWdpblR5cGUpXG4gICAgLm5vdE51bGwoKSxcbiAgY29tcHV0ZVR5cGU6IHZhcmNoYXIoJ2NvbXB1dGVfdHlwZScsIHsgbGVuZ3RoOiA1MCB9KVxuICAgIC4kdHlwZTxDb21wdXRlVHlwZT4oKVxuICAgIC5kZWZhdWx0KCdTTUFMTCcgYXMgQ29tcHV0ZVR5cGUpXG4gICAgLm5vdE51bGwoKSxcbiAgdGltZW91dDogaW50ZWdlcigndGltZW91dCcpLFxuICBmYWlsdXJlQmVoYXZpb3I6IHZhcmNoYXIoJ2ZhaWx1cmVfYmVoYXZpb3InLCB7IGxlbmd0aDogMTAgfSlcbiAgICAuJHR5cGU8J2ZhaWwnIHwgJ3dhcm4nIHwgJ2lnbm9yZSc+KClcbiAgICAuZGVmYXVsdCgnZmFpbCcpXG4gICAgLm5vdE51bGwoKSxcbiAgc2VjcmV0czoganNvbmIoJ3NlY3JldHMnKVxuICAgIC4kdHlwZTxQbHVnaW5TZWNyZXRbXT4oKVxuICAgIC5kZWZhdWx0KFtdKVxuICAgIC5ub3ROdWxsKCksXG4gIHByaW1hcnlPdXRwdXREaXJlY3Rvcnk6IHZhcmNoYXIoJ3ByaW1hcnlfb3V0cHV0X2RpcmVjdG9yeScsIHsgbGVuZ3RoOiAyOCB9KSxcblxuICAvLyBCdWlsZCBjb25maWd1cmF0aW9uXG4gIGVudjoganNvbmIoJ2VudicpXG4gICAgLiR0eXBlPFJlY29yZDxzdHJpbmcsIHN0cmluZz4+KClcbiAgICAuZGVmYXVsdCh7fSlcbiAgICAubm90TnVsbCgpLFxuICBidWlsZEFyZ3M6IGpzb25iKCdidWlsZF9hcmdzJylcbiAgICAuJHR5cGU8UmVjb3JkPHN0cmluZywgc3RyaW5nPj4oKVxuICAgIC5kZWZhdWx0KHt9KVxuICAgIC5ub3ROdWxsKCksXG4gIGluc3RhbGxDb21tYW5kczogdGV4dCgnaW5zdGFsbF9jb21tYW5kcycpXG4gICAgLmFycmF5KClcbiAgICAuZGVmYXVsdChbXSlcbiAgICAubm90TnVsbCgpLFxuICBjb21tYW5kczogdGV4dCgnY29tbWFuZHMnKVxuICAgIC5hcnJheSgpXG4gICAgLmRlZmF1bHQoW10pXG4gICAgLm5vdE51bGwoKSxcblxuICAvLyBTcGVjIGNvbnRyYWN0LCBwZXJzaXN0ZWQgKG5vdCBqdXN0IHZhbGlkYXRlZCBhdCB1cGxvYWQpOiB0aGVcbiAgLy8gYHt7IHBpcGVsaW5lLm1ldGFkYXRhLlggfX1gIC8gYHt7IHBpcGVsaW5lLnZhcnMuWCB9fWAga2V5cyBhIHBpcGVsaW5lIG11c3RcbiAgLy8gc3VwcGx5LCB0aGVpciBkZWNsYXJlZCBjb2VyY2lvbiB0eXBlcywgdGhlIHNtb2tlIHRlc3QsIGFuZCB0aGUgZGVjbGFyZWRcbiAgLy8gb3V0Ym91bmQgaG9zdG5hbWVzIChzcGVjIGBuZXR3b3JrLmVncmVzc2ApIHNob3duIHRvIGNvbnN1bWVycy5cbiAgcmVxdWlyZWRNZXRhZGF0YToganNvbmIoJ3JlcXVpcmVkX21ldGFkYXRhJylcbiAgICAuJHR5cGU8c3RyaW5nW10+KClcbiAgICAuZGVmYXVsdChbXSlcbiAgICAubm90TnVsbCgpLFxuICByZXF1aXJlZFZhcnM6IGpzb25iKCdyZXF1aXJlZF92YXJzJylcbiAgICAuJHR5cGU8c3RyaW5nW10+KClcbiAgICAuZGVmYXVsdChbXSlcbiAgICAubm90TnVsbCgpLFxuICBtZXRhZGF0YVR5cGVzOiBqc29uYignbWV0YWRhdGFfdHlwZXMnKVxuICAgIC4kdHlwZTxSZWNvcmQ8c3RyaW5nLCBQbHVnaW5Db250cmFjdFZhbHVlVHlwZT4+KClcbiAgICAuZGVmYXVsdCh7fSlcbiAgICAubm90TnVsbCgpLFxuICB2YXJzVHlwZXM6IGpzb25iKCd2YXJzX3R5cGVzJylcbiAgICAuJHR5cGU8UmVjb3JkPHN0cmluZywgUGx1Z2luQ29udHJhY3RWYWx1ZVR5cGU+PigpXG4gICAgLmRlZmF1bHQoe30pXG4gICAgLm5vdE51bGwoKSxcbiAgc21va2VUZXN0OiBqc29uYignc21va2VfdGVzdCcpLiR0eXBlPFBsdWdpblNtb2tlVGVzdD4oKSxcbiAgbmV0d29ya0VncmVzczoganNvbmIoJ25ldHdvcmtfZWdyZXNzJylcbiAgICAuJHR5cGU8c3RyaW5nW10+KClcbiAgICAuZGVmYXVsdChbXSlcbiAgICAubm90TnVsbCgpLFxuXG4gIC8vIERvY3VtZW50YXRpb24uIFRoZSBSRUFETUUgaXMga2VwdCBhcyBzb3VyY2UgbWFya2Rvd24gQU5EIHByZS1zYW5pdGl6ZWRcbiAgLy8gSFRNTCAocmVuZGVyZWQgb25jZSBhdCB1cGxvYWQpLCBzbyBubyByZWFkIHBhdGggcmVuZGVycyB1bnRydXN0ZWQgbWFya2Rvd24uXG4gIHJlYWRtZU1kOiB0ZXh0KCdyZWFkbWVfbWQnKSxcbiAgcmVhZG1lSHRtbDogdGV4dCgncmVhZG1lX2h0bWwnKSxcbiAgLy8gU1BEWCBsaWNlbnNlIGlkZW50aWZpZXIuXG4gIGxpY2Vuc2U6IHZhcmNoYXIoJ2xpY2Vuc2UnLCB7IGxlbmd0aDogNjQgfSksXG4gIGNoYW5nZWxvZzogdGV4dCgnY2hhbmdlbG9nJyksXG4gIGhvbWVwYWdlVXJsOiB2YXJjaGFyKCdob21lcGFnZV91cmwnLCB7IGxlbmd0aDogMjA0OCB9KSxcbiAgc291cmNlVXJsOiB2YXJjaGFyKCdzb3VyY2VfdXJsJywgeyBsZW5ndGg6IDIwNDggfSksXG4gIGljb246IGpzb25iKCdpY29uJykuJHR5cGU8UGx1Z2luSWNvbj4oKSxcbiAgdXBsb2FkZWRJY29uOiBqc29uYigndXBsb2FkZWRfaWNvbicpLiR0eXBlPFBsdWdpblVwbG9hZGVkSWNvbj4oKSxcblxuICAvLyBDYXRhbG9nIG1ldGFkYXRhOiBkZXRlY3RlZCBmcm9tIHRoZSBwYWNrYWdlIChzcGVjLCBSRUFETUUsXG4gIC8vIHRoZSBwbHVnaW4ncyBvd24gRG9ja2VyZmlsZSBPQ0kgbGFiZWxzKSwgdGhlbiBhY2NlcHRlZCBvciBlZGl0ZWQgYnkgdGhlXG4gIC8vIHVzZXIuIGBzdW1tYXJ5YCBpcyB0aGUgY2FyZCBvbmUtbGluZXI7IGBkaXNwbGF5TmFtZWAgZmFsbHMgYmFjayB0b1xuICAvLyBgbmFtZWAgd2hlbiB1bnNldC4gYG1ldGFkYXRhU291cmNlc2AgcmVjb3JkcywgcGVyIGRlc2NyaXB0aXZlIGZpZWxkLCB3aGVyZVxuICAvLyBpdHMgdmFsdWUgY2FtZSBmcm9tIChgc3BlYyB8IHJlYWRtZSB8IGRvY2tlcmZpbGUgfCBkZXJpdmVkIHwgdXNlcmApIHNvIGFcbiAgLy8gcmV2aWV3ZXIgY2FuIHNlZSB3aGF0IHdhcyB0eXBlZCByYXRoZXIgdGhhbiBzaGlwcGVkIGluIHRoZSBwYWNrYWdlLlxuICBzdW1tYXJ5OiB2YXJjaGFyKCdzdW1tYXJ5JywgeyBsZW5ndGg6IDE2MCB9KSxcbiAgZGlzcGxheU5hbWU6IHZhcmNoYXIoJ2Rpc3BsYXlfbmFtZScsIHsgbGVuZ3RoOiAxMDAgfSksXG4gIGRvY3VtZW50YXRpb25Vcmw6IHZhcmNoYXIoJ2RvY3VtZW50YXRpb25fdXJsJywgeyBsZW5ndGg6IDIwNDggfSksXG4gIG1ldGFkYXRhU291cmNlczoganNvbmIoJ21ldGFkYXRhX3NvdXJjZXMnKVxuICAgIC4kdHlwZTxNZXRhZGF0YVNvdXJjZXM+KClcbiAgICAuZGVmYXVsdCh7fSlcbiAgICAubm90TnVsbCgpLFxuXG4gIC8vIERvY2tlciBjb25maWd1cmF0aW9uXG4gIGRvY2tlcmZpbGU6IHRleHQoJ2RvY2tlcmZpbGUnKSxcbiAgYnVpbGRUeXBlOiB2YXJjaGFyKCdidWlsZF90eXBlJywgeyBsZW5ndGg6IDIwIH0pXG4gICAgLmRlZmF1bHQoJ2J1aWxkX2ltYWdlJylcbiAgICAubm90TnVsbCgpLFxuXG4gIC8vIFN1cHBseSBjaGFpbi4gU2V0IGJ5IHRoZSBidWlsZCB3b3JrZXIgb25jZSB0aGUgaW1hZ2UgaXMgcHVzaGVkLCBzaWduZWQgYW5kXG4gIC8vIGNhcnJpZXMgaXRzIFNCT00gYXR0ZXN0YXRpb247IE5VTEwgZm9yIHBsdWdpbnMgdGhhdCBwcm9kdWNlIG5vIGltYWdlXG4gIC8vIChtZXRhZGF0YV9vbmx5LCBhcHByb3ZhbCBzdGVwcykuIGBpbWFnZURpZ2VzdGAgaXMgd2hhdCBzeW50aCBwaW5zIENvZGVCdWlsZFxuICAvLyB0byAoYDxyZXBvPkBzaGEyNTY64oCmYCkg4oCUIG5ldmVyIHRoZSBtdXRhYmxlIGBuYW1lOnZlcnNpb25gIHRhZy5cbiAgLy8gYGltYWdlU291cmNlYCBzZXBhcmF0ZXMgYW4gaW1hZ2UgdGhpcyBwbGF0Zm9ybSBCVUlMVCAoQnVpbGRLaXQgcHJvdmVuYW5jZVxuICAvLyBhdHRhY2hlZCkgZnJvbSBhbiBVUExPQURFRCBgaW1hZ2UudGFyYCB3aG9zZSBidWlsZCBpdCBuZXZlciBzYXcuXG4gIGltYWdlRGlnZXN0OiB2YXJjaGFyKCdpbWFnZV9kaWdlc3QnLCB7IGxlbmd0aDogNzEgfSksXG4gIGltYWdlU291cmNlOiB2YXJjaGFyKCdpbWFnZV9zb3VyY2UnLCB7IGxlbmd0aDogMTAgfSkuJHR5cGU8SW1hZ2VTb3VyY2U+KCksXG5cbiAgLy8gVnVsbmVyYWJpbGl0eSBzY2FuIChncnlwZSBvdmVyIHRoZSBTQk9NIGF0IGJ1aWxkOyBuaWdodGx5IHJlc2NhbikgYW5kIHRoZVxuICAvLyBpbWFnZSdzIGVmZmVjdGl2ZSBVU0VSLiBOVUxMID0gbm90IHNjYW5uZWQgLyBwcm9kdWNlcyBubyBpbWFnZS5cbiAgdnVsbkNyaXRpY2FsOiBpbnRlZ2VyKCd2dWxuX2NyaXRpY2FsJyksXG4gIHZ1bG5IaWdoOiBpbnRlZ2VyKCd2dWxuX2hpZ2gnKSxcbiAgdnVsbk1lZGl1bTogaW50ZWdlcigndnVsbl9tZWRpdW0nKSxcbiAgdnVsbkxvdzogaW50ZWdlcigndnVsbl9sb3cnKSxcbiAgLy8gT2YgdGhlIGNyaXRpY2FsL2hpZ2ggZmluZGluZ3MsIHRob3NlIGdyeXBlIHJlcG9ydHMgYSBmaXhlZCB2ZXJzaW9uIGZvciDigJRcbiAgLy8gd2hhdCB0aGUgcGxhdGZvcm0gZmxvb3IgKFBMVUdJTl9WVUxOX01BWF9DUklUSUNBTCkgZ2F0ZXMgb24uIE5VTEwgPSB1bnNjYW5uZWQuXG4gIHZ1bG5Dcml0aWNhbEZpeGFibGU6IGludGVnZXIoJ3Z1bG5fY3JpdGljYWxfZml4YWJsZScpLFxuICB2dWxuSGlnaEZpeGFibGU6IGludGVnZXIoJ3Z1bG5faGlnaF9maXhhYmxlJyksXG4gIHNjYW5uZWRBdDogdGltZXN0YW1wKCdzY2FubmVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG4gIC8vIFNldCBieSB0aGUgbmlnaHRseSByZXNjYW4gd2hpbGUgdGhpcyB2ZXJzaW9uJ3MgZml4YWJsZSBjcml0aWNhbHMgZXhjZWVkIHRoZVxuICAvLyBmbG9vciAoY2xlYXJlZCB3aGVuIHJlc29sdmVkKTogdGhlIGNvdW50cyBhbmQgdG9wIGZpbmRpbmdzIGF0IHRoYXQgcmVzY2FuLlxuICBzY2FuRmxhZ2dlZEF0OiB0aW1lc3RhbXAoJ3NjYW5fZmxhZ2dlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxuICBzY2FuRmxhZzoganNvbmIoJ3NjYW5fZmxhZycpLiR0eXBlPFBsdWdpblNjYW5GbGFnPigpLFxuICAvKipcbiAgICogVGhlIExBU1QgcmVzY2FuJ3MgZmluZGluZ3MgZm9yIHRoaXMgdmVyc2lvbiwgd3JpdHRlbiB3aGV0aGVyIG9yIG5vdCB0aGVcbiAgICogZ2F0aW5nIGZsYWcgdHJpcHBlZC5cbiAgICpcbiAgICogYHNjYW5fZmxhZ2AgaXMgc2V0IG9ubHkgd2hpbGUgZml4YWJsZSBjcml0aWNhbHMgZXhjZWVkXG4gICAqIFBMVUdJTl9WVUxOX01BWF9DUklUSUNBTCwgc28gYSB2ZXJzaW9uIGNhcnJ5aW5nIG9ubHkgSGlnaCBmaW5kaW5ncyBzdG9yZXNcbiAgICogbm90aGluZyDigJQgYW5kIHRoZSB2dWxuZXJhYmlsaXR5IHJlcG9ydCBzZWN0aW9uLCB3aG9zZSB3aG9sZSBqb2IgaXMgdG8gc2hvd1xuICAgKiBDcml0aWNhbCBBTkQgSGlnaCBleHBvc3VyZSwgaGFkIG5vIHNvdXJjZSB0byByZWFkLiBUaGlzIGhvbGRzIHRoZSBjb3VudHMgYW5kXG4gICAqIHRoZSB0b3AgZmluZGluZ3MgZm9yIGV2ZXJ5IGluLXVzZSB2ZXJzaW9uLCBpbmRlcGVuZGVudCBvZiB0aGUgZ2F0ZTogd2hhdCBhXG4gICAqIHJlcG9ydCBzaG93cyBhbmQgd2hhdCBhIGJ1aWxkIHJlZnVzZXMgYXJlIGRpZmZlcmVudCBxdWVzdGlvbnMuXG4gICAqL1xuICBzY2FuU3VtbWFyeToganNvbmIoJ3NjYW5fc3VtbWFyeScpLiR0eXBlPFBsdWdpblNjYW5TdW1tYXJ5PigpLFxuICBydW5Bc1Jvb3Q6IGJvb2xlYW4oJ3J1bl9hc19yb290JyksXG5cbiAgLy8gVmVyc2lvbiBsaWZlY3ljbGUuIGBicmVha2luZ2A6IGEgcHVibGlzaGVyLW1hcmtlZCBtYWpvciB0aGF0IGBsYXRlc3RgXG4gIC8vIGluc3RhbGxzIG5ldmVyIGNyb3NzIHdpdGhvdXQgcmUtYXBwcm92YWwuIGBmcm96ZW5BdGA6IHNldCB0aGUgbW9tZW50IGFcbiAgLy8gcHVibGlzaCByZXF1ZXN0IHJlZmVyZW5jZXMgdGhpcyB2ZXJzaW9uIOKAlCByZS11cGxvYWRpbmcgaXQgaXMgdGhlbiByZWZ1c2VkXG4gIC8vICg0MDkpLiBZYW5rIC8gZGVwcmVjYXRpb24gY2FycnkgdGhlaXIgcmVhc29uIGFsb25nc2lkZSB0aGUgdGltZXN0YW1wLlxuICBicmVha2luZzogYm9vbGVhbignYnJlYWtpbmcnKVxuICAgIC5kZWZhdWx0KGZhbHNlKVxuICAgIC5ub3ROdWxsKCksXG4gIGZyb3plbkF0OiB0aW1lc3RhbXAoJ2Zyb3plbl9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxuICB5YW5rZWRBdDogdGltZXN0YW1wKCd5YW5rZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgeWFua1JlYXNvbjogdGV4dCgneWFua19yZWFzb24nKSxcbiAgZGVwcmVjYXRlZEF0OiB0aW1lc3RhbXAoJ2RlcHJlY2F0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgZGVwcmVjYXRpb25NZXNzYWdlOiB0ZXh0KCdkZXByZWNhdGlvbl9tZXNzYWdlJyksXG5cbiAgLy8gRGV2ZWxvcGVyLXBvcnRhbCBjYXRhbG9nIG1ldGFkYXRhIChvd25lcnNoaXAgLyBsaWZlY3ljbGUgLyBjbGFzc2lmaWNhdGlvbikuXG4gIC8vIG93bmVySWQgZGVmYXVsdHMgdG8gdGhlIGNyZWF0aW5nIHVzZXIgKHNldCBhdCBpbnNlcnQpLCBzbyBldmVyeSBwbHVnaW4gaGFzXG4gIC8vIGFuIG93bmVyIGZvciBcIm15IHNlcnZpY2VzXCIgdmlld3M7IG93bmVyVHlwZSBkaXN0aW5ndWlzaGVzIHVzZXIgdnMgdGVhbS5cbiAgb3duZXJJZDogdGV4dCgnb3duZXJfaWQnKSxcbiAgb3duZXJUeXBlOiB2YXJjaGFyKCdvd25lcl90eXBlJywgeyBsZW5ndGg6IDEwIH0pLiR0eXBlPE93bmVyVHlwZT4oKSxcbiAgbGlmZWN5Y2xlOiB2YXJjaGFyKCdsaWZlY3ljbGUnLCB7IGxlbmd0aDogMjAgfSlcbiAgICAuJHR5cGU8UGx1Z2luTGlmZWN5Y2xlPigpXG4gICAgLmRlZmF1bHQoJ3Byb2R1Y3Rpb24nIGFzIFBsdWdpbkxpZmVjeWNsZSlcbiAgICAubm90TnVsbCgpLFxuICBjcml0aWNhbGl0eTogdmFyY2hhcignY3JpdGljYWxpdHknLCB7IGxlbmd0aDogMTAgfSkuJHR5cGU8Q3JpdGljYWxpdHk+KCksXG4gIGxhYmVsczoganNvbmIoJ2xhYmVscycpXG4gICAgLiR0eXBlPEVudGl0eUxhYmVscz4oKVxuICAgIC5kZWZhdWx0KHt9KVxuICAgIC5ub3ROdWxsKCksXG4gIGxpbmtzOiBqc29uYignbGlua3MnKVxuICAgIC4kdHlwZTxFbnRpdHlMaW5rW10+KClcbiAgICAuZGVmYXVsdChbXSlcbiAgICAubm90TnVsbCgpLFxuXG4gIC8vIEFjY2VzcyBhbmQgdmlzaWJpbGl0eSDigJQgdGhlIHNoYXJlZCB0aHJlZS1ydW5nIGxhZGRlciAoc2VlIGFwaS1jb3JlJ3NcbiAgLy8gYFZpc2liaWxpdHlgKTogYHByaXZhdGVgIGlzIGF1dGhvci1vbmx5IChgY3JlYXRlZF9ieWApLCBgb3JnYCBpcyB0aGUgd2hvbGVcbiAgLy8gb3duaW5nIG9yZywgYHB1YmxpY2AgcmVhY2hlcyB0aGUgb3JnJ3MgdGVhbXMgYW5kIOKAlCBmcm9tIHRoZSBzeXN0ZW0gb3JnIOKAlFxuICAvLyBldmVyeSBvcmcuIENvbnN0cmFpbmVkIGF0IHRoZSBTUUwgbGF5ZXIgdG9vIHZpYSBhIENIRUNLIGluIHBvc3RncmVzLWluaXQuc3FsXG4gIC8vIHNvIGEgdHlwbyBjYW4ndCBzbmVhayBwYXN0IHRoZSBhcHBsaWNhdGlvbiBsYXllci5cbiAgdmlzaWJpbGl0eTogdmFyY2hhcigndmlzaWJpbGl0eScsIHsgbGVuZ3RoOiAxMCB9KVxuICAgIC4kdHlwZTxWaXNpYmlsaXR5PigpXG4gICAgLmRlZmF1bHQoJ3ByaXZhdGUnKVxuICAgIC5ub3ROdWxsKCksXG4gIGlzRGVmYXVsdDogYm9vbGVhbignaXNfZGVmYXVsdCcpXG4gICAgLmRlZmF1bHQoZmFsc2UpXG4gICAgLm5vdE51bGwoKSxcbiAgaXNBY3RpdmU6IGJvb2xlYW4oJ2lzX2FjdGl2ZScpXG4gICAgLmRlZmF1bHQodHJ1ZSlcbiAgICAubm90TnVsbCgpLFxuXG4gIC8vIERlbGV0aW9uIHRyYWNraW5nIChzb2Z0IGRlbGV0ZSlcbiAgZGVsZXRlZEF0OiB0aW1lc3RhbXAoJ2RlbGV0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgZGVsZXRlZEJ5OiB0ZXh0KCdkZWxldGVkX2J5JyksXG4gIC8vIFNvZnQtZGVsZXRlIHB1cmdlIGRlYWRsaW5lOiB0aGUgcmV0ZW50aW9uIHN3ZWVwIGhhcmQtZGVsZXRlcyB0b21ic3RvbmVkXG4gIC8vIHJvd3Mgb25jZSBgcHVyZ2VfYWZ0ZXJgIGhhcyBwYXNzZWQgKHNldCBvbiBkZWxldGUgYWxvbmdzaWRlIGRlbGV0ZWRfYXQpLlxuICBwdXJnZUFmdGVyOiB0aW1lc3RhbXAoJ3B1cmdlX2FmdGVyJywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG5cbiAgLy8gVGhlIHF1b3RhIHBlcmlvZCAoYHJlc2V0QXRgKSB0aGlzIHZlcnNpb24ncyBgcGx1Z2luc2Agc2xvdCB3YXMgY2hhcmdlZCB0b1xuICAvLyBhdCB1cGxvYWQ7IE5VTEwgd2hlbiBubyBzbG90IHdhcyBjaGFyZ2VkIChzeXN0ZW0gY2F0YWxvZyBsb2Fkcykgb3IgaXQgd2FzXG4gIC8vIGFscmVhZHkgcmVmdW5kZWQuIEEgZGVsZXRlL3B1cmdlIHJlZnVuZHMgQ09ORElUSU9OQUxMWSBvbiBpdCAodGhlIHF1b3RhXG4gIC8vIHNlcnZpY2UgaWdub3JlcyB0aGUgcmVmdW5kIG9uY2UgdGhhdCBwZXJpb2QgaGFzIHJvbGxlZCBvdmVyKSwgdGhlbiBjbGVhcnMgaXQuXG4gIHF1b3RhUmVzZXRBdDogdGltZXN0YW1wKCdxdW90YV9yZXNldF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxufSwgKHRhYmxlKSA9PiAoe1xuICAvLyBQYXJ0aWFsIGluZGV4IG92ZXIganVzdCB0aGUgdG9tYnN0b25lcyDigJQgZHJpdmVzIHRoZSByZXRlbnRpb24gcHVyZ2Ugc3dlZXAuXG4gIHB1cmdlSWR4OiBpbmRleCgncGx1Z2luX3B1cmdlX2lkeCcpLm9uKHRhYmxlLnB1cmdlQWZ0ZXIpLndoZXJlKHNxbGBkZWxldGVkX2F0IElTIE5PVCBOVUxMYCksXG4gIC8vIE1pcnJvcnMgdGhlIGluZGV4ZXMgcG9zdGdyZXMtaW5pdC5zcWwgY3JlYXRlcywgbmFtZSBmb3IgbmFtZSAodGhlIFNRTCBmaWxlIGlzXG4gIC8vIHdoYXQgZGVwbG95czsgc2NoZW1hLXJlZmxlY3Rpb24udGVzdC50cyBrZWVwcyB0aGUgdHdvIGluIGxvY2stc3RlcCkuXG4gIG9yZ0lkSWR4OiBpbmRleCgnaWR4X3BsdWdpbnNfb3JnX2lkJykub24odGFibGUub3JnSWQpLndoZXJlKHNxbGBkZWxldGVkX2F0IElTIE5VTExgKSxcbiAgbmFtZUlkeDogaW5kZXgoJ2lkeF9wbHVnaW5zX25hbWUnKS5vbih0YWJsZS5uYW1lKS53aGVyZShzcWxgZGVsZXRlZF9hdCBJUyBOVUxMYCksXG4gIG5hbWVWZXJzaW9uSWR4OiBpbmRleCgnaWR4X3BsdWdpbnNfbmFtZV92ZXJzaW9uJykub24odGFibGUubmFtZSwgdGFibGUudmVyc2lvbikud2hlcmUoc3FsYGRlbGV0ZWRfYXQgSVMgTlVMTGApLFxuICB2aXNpYmlsaXR5SWR4OiBpbmRleCgnaWR4X3BsdWdpbnNfdmlzaWJpbGl0eScpLm9uKHRhYmxlLnZpc2liaWxpdHkpLndoZXJlKHNxbGBkZWxldGVkX2F0IElTIE5VTExgKSxcbiAgaXNEZWZhdWx0SWR4OiBpbmRleCgnaWR4X3BsdWdpbnNfaXNfZGVmYXVsdCcpLm9uKHRhYmxlLm5hbWUsIHRhYmxlLmlzRGVmYXVsdCkud2hlcmUoc3FsYGlzX2RlZmF1bHQgPSB0cnVlIEFORCBkZWxldGVkX2F0IElTIE5VTExgKSxcbiAgY2F0ZWdvcnlJZHg6IGluZGV4KCdpZHhfcGx1Z2luc19jYXRlZ29yeScpLm9uKHRhYmxlLmNhdGVnb3J5KSxcbiAgYWN0aXZlSWR4OiBpbmRleCgnaWR4X3BsdWdpbnNfaXNfYWN0aXZlJykub24odGFibGUuaXNBY3RpdmUpLndoZXJlKHNxbGBkZWxldGVkX2F0IElTIE5VTExgKSxcbiAgb3JnQ3JlYXRlZElkeDogaW5kZXgoJ2lkeF9wbHVnaW5zX29yZ19jcmVhdGVkJykub24odGFibGUub3JnSWQsIHNxbGAke3RhYmxlLmNyZWF0ZWRBdH0gREVTQ2ApLndoZXJlKHNxbGBkZWxldGVkX2F0IElTIE5VTExgKSxcbiAgb3JnTmFtZUlkeDogaW5kZXgoJ2lkeF9wbHVnaW5zX29yZ19uYW1lJykub24odGFibGUub3JnSWQsIHRhYmxlLm5hbWUpLndoZXJlKHNxbGBkZWxldGVkX2F0IElTIE5VTExgKSxcblxuICAvLyBEZXZlbG9wZXItcG9ydGFsIGNhdGFsb2cgaW5kZXhlczogXCJteSBzZXJ2aWNlc1wiIChvd25lcikgKyBsaWZlY3ljbGUgZmlsdGVyLlxuICBvd25lcklkeDogaW5kZXgoJ3BsdWdpbl9vd25lcl9pZHgnKS5vbih0YWJsZS5vcmdJZCwgdGFibGUub3duZXJJZCksXG4gIGxpZmVjeWNsZUlkeDogaW5kZXgoJ3BsdWdpbl9saWZlY3ljbGVfaWR4Jykub24odGFibGUub3JnSWQsIHRhYmxlLmxpZmVjeWNsZSksXG5cbiAgLy8gQ29tcG9zaXRlIGluZGV4IGZvciBmaWx0ZXJlZCBxdWVyaWVzIChvcmdJZCArIHZpc2liaWxpdHkgKyBpc0FjdGl2ZSlcbiAgb3JnVmlzaWJpbGl0eUFjdGl2ZUlkeDogaW5kZXgoJ3BsdWdpbl9vcmdfdmlzaWJpbGl0eV9hY3RpdmVfaWR4Jykub24odGFibGUub3JnSWQsIHRhYmxlLnZpc2liaWxpdHksIHRhYmxlLmlzQWN0aXZlKSxcbiAgLy8gRHJpdmVzIHRoZSBcIm15IHByaXZhdGUgZHJhZnRzXCIgbGVnIG9mIHRoZSB2aXNpYmlsaXR5IHByZWRpY2F0ZS5cbiAgY3JlYXRlZEJ5SWR4OiBpbmRleCgncGx1Z2luX2NyZWF0ZWRfYnlfaWR4Jykub24odGFibGUub3JnSWQsIHRhYmxlLmNyZWF0ZWRCeSksXG5cbiAgLy8gVW5pcXVlIGNvbnN0cmFpbnQgb24gbmFtZSArIHZlcnNpb24gKyBvcmdJZFxuICBuYW1lVmVyc2lvbk9yZ1VuaXF1ZTogdW5pcXVlSW5kZXgoJ3BsdWdpbl9uYW1lX3ZlcnNpb25fb3JnX3VuaXF1ZScpXG4gICAgLm9uKHRhYmxlLm5hbWUsIHRhYmxlLnZlcnNpb24sIHRhYmxlLm9yZ0lkKSxcblxuICAvLyBDaGVjayBjb25zdHJhaW50c1xuICB2ZXJzaW9uQ2hlY2s6IGNoZWNrKCAncGx1Z2luX3ZlcnNpb25fY2hlY2snLFxuICAgIHNxbGAke3RhYmxlLnZlcnNpb259IH4gJ15bMC05XStcXC5bMC05XStcXC5bMC05XSsoLVthLXpBLVowLTkuLV0rKT8oXFwrW2EtekEtWjAtOS4tXSspPyQnYCxcbiAgKSxcbiAgaW1hZ2VEaWdlc3RDaGVjazogY2hlY2soJ3BsdWdpbl9pbWFnZV9kaWdlc3RfY2hlY2snLFxuICAgIHNxbGAke3RhYmxlLmltYWdlRGlnZXN0fSBJUyBOVUxMIE9SICR7dGFibGUuaW1hZ2VEaWdlc3R9IH4gJ15zaGEyNTY6WzAtOWEtZl17NjR9JCdgLFxuICApLFxuICBpbWFnZVNvdXJjZUNoZWNrOiBjaGVjaygncGx1Z2luX2ltYWdlX3NvdXJjZV9jaGVjaycsXG4gICAgc3FsYCR7dGFibGUuaW1hZ2VTb3VyY2V9IElTIE5VTEwgT1IgJHt0YWJsZS5pbWFnZVNvdXJjZX0gSU4gKCdidWlsdCcsICd1cGxvYWRlZCcpYCxcbiAgKSxcbn0pKTtcblxuLyoqXG4gKiBUeXBlU2NyaXB0IHR5cGVzIHJlcHJlc2VudGluZyBkYXRhYmFzZSByb3dzXG4gKi9cbmV4cG9ydCB0eXBlIFBsdWdpbiA9IHR5cGVvZiBwbHVnaW4uJGluZmVyU2VsZWN0O1xuZXhwb3J0IHR5cGUgUGx1Z2luSW5zZXJ0ID0gdHlwZW9mIHBsdWdpbi4kaW5mZXJJbnNlcnQ7XG5cbi8qKlxuICogSGVscGVyIHR5cGVzIGZvciB3b3JraW5nIHdpdGggcGFydGlhbCB1cGRhdGVzXG4gKi9cbmV4cG9ydCB0eXBlIFBsdWdpblVwZGF0ZSA9IFBhcnRpYWw8T21pdDxQbHVnaW5JbnNlcnQsICdpZCcgfCAnY3JlYXRlZEF0JyB8ICdjcmVhdGVkQnknPj47XG4iXX0=