@pipeline-builder/pipeline-data 4.3.10 → 4.3.12

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.
@@ -481,7 +481,7 @@ export const ecosystemNotificationQueue = pgTable('ecosystem_notification_queue'
481
481
  // The dispatcher's scan: undelivered rows that are due.
482
482
  dueIdx: index('ecosystem_notification_due_idx').on(table.deliverAfter).where(sql `delivered_at IS NULL`),
483
483
  digestIdx: index('ecosystem_notification_digest_idx').on(table.digestKey).where(sql `delivered_at IS NULL`),
484
- eventCheck: check('ecosystem_notification_queue_event_check', sql `${table.event} ~ '^N([1-9]|1[0-9]|2[0-9])$'`),
484
+ eventCheck: check('ecosystem_notification_queue_event_check', sql `${table.event} ~ '^N([1-9][0-9]?)$'`),
485
485
  }));
486
486
  // ---------------------------------------------------------------------------
487
487
  // Org-scoped tables (org_id + rls_org_* policies + FORCE; in the org cascade)
@@ -507,9 +507,20 @@ export const pipelineStepManifest = pgTable('pipeline_step_manifests', {
507
507
  imageRepository: varchar('image_repository', { length: 512 }),
508
508
  /** The step's key as synth sends it in lookup `context` (joins lookups / runtime checks to the deployed row). */
509
509
  stepKey: varchar('step_key', { length: 255 }),
510
+ /**
511
+ * The BUILD-IMAGE row only (`step_key` `build-image`, api-core
512
+ * `BUILD_IMAGE_MANIFEST_*`): how synth chose the toolchain release
513
+ * (`plugin_version` is the release version), and the last release change
514
+ * between consecutive deploys — the run-history "toolchain X → Y" marker.
515
+ * NULL on every step row.
516
+ */
517
+ resolvedVia: varchar('resolved_via', { length: 20 }),
518
+ previousReleaseVersion: varchar('previous_release_version', { length: 50 }),
519
+ releaseChangedAt: timestamp('release_changed_at', { withTimezone: true }),
510
520
  updatedAt: timestamp('updated_at', { withTimezone: true }).defaultNow().notNull(),
511
521
  }, (table) => ({
512
522
  pk: primaryKey({ columns: [table.pipelineId, table.stageName, table.actionName] }),
523
+ resolvedViaCheck: check('pipeline_step_manifests_resolved_via_check', sql `${table.resolvedVia} IS NULL OR ${table.resolvedVia} IN ('pin', 'org-default', 'canary', 'default')`),
513
524
  orgIdx: index('pipeline_step_manifest_org_idx').on(table.orgId),
514
525
  // public/* GC guard: "does any manifest still reference this digest?"
515
526
  digestIdx: index('pipeline_step_manifest_digest_idx').on(table.imageDigest),
@@ -772,4 +783,4 @@ export const SEEDED_AUTO_APPROVAL_RULE_IDS = {
772
783
  verifiedUpdates: '00000000-0000-4000-8000-00000000a001',
773
784
  officialCatalog: '00000000-0000-4000-8000-00000000a002',
774
785
  };
775
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNvc3lzdGVtLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZGF0YWJhc2Uvc2NoZW1hL2Vjb3N5c3RlbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBbUR0QyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2xDLE9BQU8sRUFDTCxPQUFPLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLElBQUksRUFDL0csU0FBUyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsT0FBTyxHQUN0QyxNQUFNLHFCQUFxQixDQUFDO0FBWTdCLHVFQUF1RTtBQUN2RSxNQUFNLFFBQVEsR0FBRyxVQUFVLENBQW1CO0lBQzVDLFFBQVE7UUFDTixPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDO0NBQ0YsQ0FBQyxDQUFDO0FBRUgsOEVBQThFO0FBQzlFLDhFQUE4RTtBQUM5RSx5REFBeUQ7QUFDekQsOEVBQThFO0FBRTlFLE9BQU8sRUFDTCxlQUFlLEVBQ2YsY0FBYyxFQUNkLHFCQUFxQixFQUNyQix3QkFBd0IsRUFDeEIsNkJBQTZCLEVBQzdCLHdCQUF3QixFQUN4QixtQkFBbUIsRUFDbkIsd0JBQXdCLEVBQ3hCLG1CQUFtQixHQWtCcEIsTUFBTSw0QkFBNEIsQ0FBQztBQWlDcEMsOEVBQThFO0FBQzlFLDBCQUEwQjtBQUMxQiw4RUFBOEU7QUFFOUU7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLFlBQVksRUFBRTtJQUM3QyxFQUFFLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDLGFBQWEsRUFBRTtJQUMzQyxVQUFVLEVBQUUsT0FBTyxDQUFDLGNBQWMsRUFBRSxFQUFFLE1BQU0sRUFBRSxHQUFH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LHlCQUF5QixHQUFHLGtCQUFrQixDQUFDO0FBQzVELHFFQUFxRTtBQUNyRSxNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBRyxXQUFXLENBQUM7QUFFdEQsd0VBQXdFO0FBQ3hFLE1BQU0sQ0FBQyxNQUFNLDZCQUE2QixHQUFHO0lBQzNDLGVBQWUsRUFBRSxzQ0FBc0M7SUFDdkQsZUFBZSxFQUFFLHNDQUFzQztDQUMvQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8vXG4vLyBQbHVnaW4gZWNvc3lzdGVtIHRhYmxlcyAoZG9jcy9wbHVnaW4tcHVibGlzaGluZy5tZCkuIE1pcnJvcnMgdGhlXG4vLyBcIlBMVUdJTiBFQ09TWVNURU1cIiBzZWN0aW9uIG9mIHBvc3RncmVzLWluaXQuc3FsLCB3aGljaCBpcyBhdXRob3JpdGF0aXZlIGZvclxuLy8gdGhlIHRyaWdnZXItbWFpbnRhaW5lZCBgc2VhcmNoX3ZlY3RvcmAsIHRoZSBSTFMgcG9saWNpZXMgYW5kIHRoZSBwdWJsaWMgdmlld3MuXG4vL1xuLy8gVHdvIGtpbmRzIG9mIHRhYmxlOlxuLy8gICAqIEVDT1NZU1RFTS1HTE9CQUwg4oCUIHB1Ymxpc2hlcnMsIGxpc3RpbmdzLCBsaXN0aW5nIHZlcnNpb25zLCB0aGUgcHVibGlzaFxuLy8gICAgIHJlcXVlc3QgcXVldWUsIHJldmlld3MsIGFkdmlzb3JpZXMsIGFub255bW91cyBzdWJtaXNzaW9ucywg4oCmIFRoZVxuLy8gICAgIGRpcmVjdG9yeSBpcyBpbnN0YW5jZS13aWRlLCBzbyB0aGVzZSBjYXJyeSBOTyBgb3JnX2lkYDogdGhleSBhcmUgbm90XG4vLyAgICAgdGVuYW50IHNjb3BlZCwgd3JpdGVzIGFyZSBnYXRlZCBpbiB0aGUgc2VydmljZSBsYXllciAoc3lzdGVtLW9yZy1vbmx5XG4vLyAgICAgYXBwcm92YWwpLCBhbmQgdGhlaXIgUkxTIHBvbGljeSBhZG1pdHMgdGhlIGFwcGxpY2F0aW9uIHJvbGUgb25seS5cbi8vICAgICBgcHVibGlzaGVycy5vd25lcl9vcmdfaWRgIGlzIGRlbGliZXJhdGVseSBub3QgbmFtZWQgYG9yZ19pZGA6IGEgcHVibGlzaGVyXG4vLyAgICAgb3V0bGl2ZXMgaXRzIG9yZywgc28gaXQgbXVzdCBzdGF5IG91dCBvZiB0aGUgb3JnIGNhc2NhZGUsIHdoaWNoXG4vLyAgICAgdHJlYXRzIGV2ZXJ5IGBvcmdfaWRgIHRhYmxlIGFzIHRoZSBvcmcncyBkYXRhLlxuLy8gICAqIE9SRy1TQ09QRUQg4oCUIHBpcGVsaW5lX3N0ZXBfbWFuaWZlc3RzLCBwbHVnaW5faW5zdGFsbHMsXG4vLyAgICAgcGx1Z2luX2luc3RhbGxfcG9saWNpZXMsIHBsdWdpbl9hZHZpc29yeV9kZWxpdmVyaWVzOiBgb3JnX2lkYCArIHRoZVxuLy8gICAgIHN0YW5kYXJkIGBybHNfb3JnXypgIHBvbGljaWVzICsgRk9SQ0UsIGFuZCBwYXJ0IG9mIHRoZSBvcmcgY2FzY2FkZS5cbi8vXG4vLyBUaGUgdHdvIGBwdWJsaWNfKmAgdmlld3MgYXJlIGRlY2xhcmVkIHdpdGggYHBnVmlldyguLi4pLmV4aXN0aW5nKClgIChkcml6emxlXG4vLyBuZXZlciBjcmVhdGVzIHRoZW07IHBvc3RncmVzLWluaXQuc3FsIGRvZXMpLiBUaGV5IGFyZSB3aGF0IHRoZSBhbm9ueW1vdXNcbi8vIGRpcmVjdG9yeSBBUEkgcmVhZHMsIGNvbm5lY3RlZCBhcyBgZWNvc3lzdGVtX3B1YmxpY19yZWFkZXJgIOKAlCB0aGUgb25seVxuLy8gcmVsYXRpb25zIHRoYXQgcm9sZSBjYW4gU0VMRUNULiBUaGV5IGFyZSBleHBvcnRlZCBmb3IgdHlwZWQgcXVlcmllcyBidXQga2VwdFxuLy8gb3V0IG9mIHRoZSBhZ2dyZWdhdGUgYHNjaGVtYWAgb2JqZWN0LCB3aGljaCBsaXN0cyB0YWJsZXMgb25seS5cbi8vXG5cbmltcG9ydCB0eXBlIHtcbiAgUHVibGlzaGVyVGllcixcbiAgTGlzdGluZ1N0YXRlLFxuICBQdWJsaXNoUmVxdWVzdEtpbmQsXG4gIFB1Ymxpc2hSZXF1ZXN0U3RhdHVzLFxuICBQdWJsaXNoUmVxdWVzdExhbmUsXG4gIEluc3RhbGxWZXJzaW9uUG9saWN5LFxuICBJbnN0YWxsU3RhdHVzLFxuICBCbG9ja09uQWR2aXNvcnksXG4gIE9mZmljaWFsSW5zdGFsbHMsXG4gIFNoYWRvd2luZ01vZGUsXG4gIFJldmlld1N0YXR1cyxcbiAgUmV2aWV3SG9sZFJlYXNvbixcbiAgUmV2aWV3UmVwb3J0Q2F0ZWdvcnksXG4gIEFkdmlzb3J5U2V2ZXJpdHksXG4gIEFkdmlzb3J5U3RhdGUsXG4gIEFkdmlzb3J5U291cmNlLFxuICBTdWJtaXNzaW9uU3RhdHVzLFxuICBQbHVnaW5TY2FuRmxhZyxcbiAgUGx1Z2luU2NhblN1bW1hcnksXG4gIFBsdWdpblNlY3VyaXR5UmVjaXBpZW50TW9kZSxcbiAgUGx1Z2luU2VjdXJpdHlEaWdlc3RNb2RlLFxuICBIZWFsdGhDb21wb25lbnRTY29yZSxcbn0gZnJvbSAnQHBpcGVsaW5lLWJ1aWxkZXIvYXBpLWNvcmUnO1xuaW1wb3J0IHsgc3FsIH0gZnJvbSAnZHJpenpsZS1vcm0nO1xuaW1wb3J0IHtcbiAgYm9vbGVhbiwgY2hlY2ssIGN1c3RvbVR5cGUsIGRvdWJsZVByZWNpc2lvbiwgaW5kZXgsIGludGVnZXIsIGpzb25iLCBwZ1RhYmxlLCBwZ1ZpZXcsIHByaW1hcnlLZXksIHNtYWxsaW50LCB0ZXh0LFxuICB0aW1lc3RhbXAsIHVuaXF1ZUluZGV4LCB1dWlkLCB2YXJjaGFyLFxufSBmcm9tICdkcml6emxlLW9ybS9wZy1jb3JlJztcbmltcG9ydCB0eXBlIHsgUGx1Z2luSWNvbiwgUGx1Z2luU2VjcmV0LCBQbHVnaW5VcGxvYWRlZEljb24gfSBmcm9tICcuL3BsdWdpbi5qcyc7XG5cbi8qKlxuICogUGVyLWNvbXBvbmVudCBoZWFsdGggc2NvcmVzLCBhcyBTVE9SRUQuIFRoZSBjb21wb25lbnQgc2NvcmUgc2hhcGUgaXNcbiAqIGFwaS1jb3JlJ3MgYEhlYWx0aENvbXBvbmVudFNjb3JlYCDigJQgb25seSB0aGUga2V5IGlzIHdpZGVuZWQgdG8gYHN0cmluZ2AsXG4gKiBiZWNhdXNlIGRyaXp6bGUncyBgJHR5cGU8PigpYCBvbiBhIGpzb25iIGNvbHVtbiBtdXN0IGFjY2VwdCB3aGF0ZXZlclxuICogY29tcG9uZW50IHNldCBhIHJvdyB3YXMgd3JpdHRlbiB3aXRoIChhcGktY29yZSdzIGBIZWFsdGhCcmVha2Rvd25gIGtleXMgb25cbiAqIHRoZSBjdXJyZW50IGBIZWFsdGhDb21wb25lbnRgIHVuaW9uIGFuZCB3b3VsZCByZWplY3QgYW4gb2xkZXIgcm93KS5cbiAqL1xuZXhwb3J0IHR5cGUgSGVhbHRoQnJlYWtkb3duID0gUmVjb3JkPHN0cmluZywgSGVhbHRoQ29tcG9uZW50U2NvcmU+O1xuXG4vKiogUG9zdGdyZXMgYHRzdmVjdG9yYCwgd2hpY2ggZHJpenpsZS1vcm0gaGFzIG5vIG5hdGl2ZSBjb2x1bW4gZm9yLiAqL1xuY29uc3QgdHN2ZWN0b3IgPSBjdXN0b21UeXBlPHsgZGF0YTogc3RyaW5nIH0+KHtcbiAgZGF0YVR5cGUoKSB7XG4gICAgcmV0dXJuICd0c3ZlY3Rvcic7XG4gIH0sXG59KTtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBFbnVtZXJhdGlvbnMg4oCUIGRlZmluZWQgaW4gYXBpLWNvcmUncyB3aXJlIHZvY2FidWxhcnkgc28gdGhlIGZyb250ZW5kIHNoYXJlc1xuLy8gdGhlbTsgZWFjaCBpcyBtaXJyb3JlZCBieSBhIENIRUNLIGluIHBvc3RncmVzLWluaXQuc3FsXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuZXhwb3J0IHtcbiAgUFVCTElTSEVSX1RJRVJTLFxuICBMSVNUSU5HX1NUQVRFUyxcbiAgUFVCTElTSF9SRVFVRVNUX0tJTkRTLFxuICBQVUJMSVNIX1JFUVVFU1RfU1RBVFVTRVMsXG4gIE9QRU5fUFVCTElTSF9SRVFVRVNUX1NUQVRVU0VTLFxuICBJTlNUQUxMX1ZFUlNJT05fUE9MSUNJRVMsXG4gIFJFVklFV19IT0xEX1JFQVNPTlMsXG4gIFJFVklFV19SRVBPUlRfQ0FURUdPUklFUyxcbiAgU1VCTUlTU0lPTl9TVEFUVVNFUyxcbiAgdHlwZSBQdWJsaXNoZXJUaWVyLFxuICB0eXBlIExpc3RpbmdTdGF0ZSxcbiAgdHlwZSBQdWJsaXNoUmVxdWVzdEtpbmQsXG4gIHR5cGUgUHVibGlzaFJlcXVlc3RTdGF0dXMsXG4gIHR5cGUgUHVibGlzaFJlcXVlc3RMYW5lLFxuICB0eXBlIEluc3RhbGxWZXJzaW9uUG9saWN5LFxuICB0eXBlIEluc3RhbGxTdGF0dXMsXG4gIHR5cGUgQmxvY2tPbkFkdmlzb3J5LFxuICB0eXBlIE9mZmljaWFsSW5zdGFsbHMsXG4gIHR5cGUgU2hhZG93aW5nTW9kZSxcbiAgdHlwZSBSZXZpZXdTdGF0dXMsXG4gIHR5cGUgUmV2aWV3SG9sZFJlYXNvbixcbiAgdHlwZSBSZXZpZXdSZXBvcnRDYXRlZ29yeSxcbiAgdHlwZSBBZHZpc29yeVNldmVyaXR5LFxuICB0eXBlIEFkdmlzb3J5U3RhdGUsXG4gIHR5cGUgQWR2aXNvcnlTb3VyY2UsXG4gIHR5cGUgU3VibWlzc2lvblN0YXR1cyxcbn0gZnJvbSAnQHBpcGVsaW5lLWJ1aWxkZXIvYXBpLWNvcmUnO1xuXG4vKipcbiAqIEEgbWVtYmVyJ3MgcGVuZGluZyByZXF1ZXN0IHRvIENIQU5HRSBhbiBhY3RpdmUgaW5zdGFsbCAoaXRzIHZlcnNpb24gb3JcbiAqIHZlcnNpb24gcG9saWN5KSB0aGF0IG5lZWRzIGFuIGFwcHJvdmVyIOKAlCBjcm9zc2luZyBhIG1ham9yL2JyZWFraW5nIHZlcnNpb24sXG4gKiBvciB3aWRlbmluZyB0byBgbGF0ZXN0YCwgb24gYW4gYXBwcm92YWwtZ2F0ZWQgdGllci4gT25lIHBlciBpbnN0YWxsOyBhblxuICogYXBwcm92ZXIgKGBwbHVnaW5faW5zdGFsbHM6bWFuYWdlYCkgYXBwbGllcyBvciByZWplY3RzIGl0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEluc3RhbGxDaGFuZ2VSZXF1ZXN0IHtcbiAgLyoqIFRoZSB2ZXJzaW9uIHRoZSBpbnN0YWxsIHdvdWxkIG1vdmUgdG8uICovXG4gIHZlcnNpb246IHN0cmluZztcbiAgLyoqIFRoZSB2ZXJzaW9uIHBvbGljeSBpdCB3b3VsZCBtb3ZlIHRvLiAqL1xuICB2ZXJzaW9uUG9saWN5OiBJbnN0YWxsVmVyc2lvblBvbGljeTtcbiAgcmVxdWVzdGVkQnk6IHN0cmluZztcbiAgLyoqIElTTyB0aW1lIG9mIHRoZSByZXF1ZXN0LiAqL1xuICByZXF1ZXN0ZWRBdDogc3RyaW5nO1xuICBub3RlOiBzdHJpbmcgfCBudWxsO1xufVxuLyoqIEEgYChwdWJsaXNoZXIsIG5hbWUpYCBhbiBvcmcncyBjb25zdW1wdGlvbiBwb2xpY3kgYmxvY2tzLiAqL1xuZXhwb3J0IGludGVyZmFjZSBCbG9ja2VkTGlzdGluZ1JlZiB7XG4gIHB1Ymxpc2hlcjogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG59XG5cbi8qKiBBbiBhbm9ueW1vdXMgc3VibWlzc2lvbidzIGFjY2VwdGVkIGNhdGFsb2cgbWV0YWRhdGEgYW5kIHBlci1maWVsZCBwcm92ZW5hbmNlLiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdWJtaXNzaW9uQ2F0YWxvZyB7XG4gIHZhbHVlczogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIHNvdXJjZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG59XG5cbi8qKiBOb3RpZmljYXRpb24gZXZlbnQgbnVtYmVyIChgTjFgIOKApiBgTjI5YCkuICovXG5leHBvcnQgdHlwZSBFY29zeXN0ZW1Ob3RpZmljYXRpb25FdmVudCA9IGBOJHtudW1iZXJ9YDtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBFY29zeXN0ZW0tZ2xvYmFsIHRhYmxlc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKlxuICogQW4gb3JnJ3MgcHVibGljIGlkZW50aXR5IChvbmUgcGVyIHJvb3Qgb3JnKS4gYG93bmVyT3JnSWRgIGlzIE5VTEwgZm9yIHRoZVxuICogcGxhdGZvcm0tb3duZWQgYGNvbW11bml0eWAgcHVibGlzaGVyIGFub255bW91cyBzdWJtaXNzaW9ucyBsYW5kIHVuZGVyLlxuICpcbiAqIEB0YWJsZSBwdWJsaXNoZXJzXG4gKi9cbmV4cG9ydCBjb25zdCBwdWJsaXNoZXIgPSBwZ1RhYmxlKCdwdWJsaXNoZXJzJywge1xuICBpZDogdXVpZCgnaWQnKS5wcmltYXJ5S2V5KCkuZGVmYXVsdFJhbmRvbSgpLFxuICBvd25lck9yZ0lkOiB2YXJjaGFyKCdvd25lcl9vcmdfaWQnLCB7IGxlbmd0aDogMjU1IH0pLnVuaXF1ZSgpLFxuICBoYW5kbGU6IHZhcmNoYXIoJ2hhbmRsZScsIHsgbGVuZ3RoOiAzOSB9KS5ub3ROdWxsKCkudW5pcXVlKCksXG4gIGRpc3BsYXlOYW1lOiB2YXJjaGFyKCdkaXNwbGF5X25hbWUnLCB7IGxlbmd0aDogMjU1IH0pLm5vdE51bGwoKSxcbiAgZGVzY3JpcHRpb246IHRleHQoJ2Rlc2NyaXB0aW9uJyksXG4gIGhvbWVwYWdlVXJsOiB2YXJjaGFyKCdob21lcGFnZV91cmwnLCB7IGxlbmd0aDogMjA0OCB9KSxcbiAgdGllcjogdmFyY2hhcigndGllcicsIHsgbGVuZ3RoOiAyMCB9KS4kdHlwZTxQdWJsaXNoZXJUaWVyPigpLmRlZmF1bHQoJ2NvbW11bml0eScpLm5vdE51bGwoKSxcbiAgdmVyaWZpZWRBdDogdGltZXN0YW1wKCd2ZXJpZmllZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxuICAvLyBWZXJpZmllZCBwdWJsaXNoZXIgZG93bmdyYWRlZCBiZWxvdyBUZWFtIGtlZXBzIHRoZSB0aWVyIHVudGlsIHRoaXMgcGFzc2VzIChOMjkpLlxuICB2ZXJpZmllZEdyYWNlVW50aWw6IHRpbWVzdGFtcCgndmVyaWZpZWRfZ3JhY2VfdW50aWwnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgdGVybXNWZXJzaW9uOiB2YXJjaGFyKCd0ZXJtc192ZXJzaW9uJywgeyBsZW5ndGg6IDUwIH0pLFxuICB0ZXJtc0FjY2VwdGVkQXQ6IHRpbWVzdGFtcCgndGVybXNfYWNjZXB0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgc3VzcGVuZGVkQXQ6IHRpbWVzdGFtcCgnc3VzcGVuZGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG4gIHN1c3BlbmRSZWFzb246IHRleHQoJ3N1c3BlbmRfcmVhc29uJyksXG4gIC8vIFc3IHJvbGwtdXBzLCB3cml0dGVuIGJ5IHRoZSBzdGF0cyBzd2VlcDogcnVuLXdlaWdodGVkIDMwLWRheSBzdWNjZXNzIHJhdGVcbiAgLy8gYW5kIHRoZSBpbnN0YWxsLXdlaWdodGVkIG1lYW4gaGVhbHRoIHNjb3JlIG9mIGl0cyBsaXN0aW5ncyAoTlVMTDogbm9uZSkuXG4gIHN1Y2Nlc3NSYXRlMzBkOiBkb3VibGVQcmVjaXNpb24oJ3N1Y2Nlc3NfcmF0ZV8zMGQnKSxcbiAgaGVhbHRoU2NvcmU6IGludGVnZXIoJ2hlYWx0aF9zY29yZScpLFxuICBjcmVhdGVkQXQ6IHRpbWVzdGFtcCgnY3JlYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLmRlZmF1bHROb3coKS5ub3ROdWxsKCksXG4gIHVwZGF0ZWRBdDogdGltZXN0YW1wKCd1cGRhdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcbn0sICh0YWJsZSkgPT4gKHtcbiAgaGFuZGxlQ2hlY2s6IGNoZWNrKCdwdWJsaXNoZXJzX2hhbmRsZV9jaGVjaycsIHNxbGAke3RhYmxlLmhhbmRsZX0gfiAnXlthLXowLTldW2EtejAtOS1dKiQnYCksXG4gIHRpZXJDaGVjazogY2hlY2soJ3B1Ymxpc2hlcnNfdGllcl9jaGVjaycsXG4gICAgc3FsYCR7dGFibGUudGllcn0gSU4gKCdvZmZpY2lhbCcsICd2ZXJpZmllZCcsICdjb21tdW5pdHknLCAndW52ZXJpZmllZCcpYCksXG59KSk7XG5cbi8qKlxuICogQSBwbHVnaW4gTkFNRSBwdWJsaXNoZWQgYnkgYSBwdWJsaXNoZXIuIFJldmlld3MsIGluc3RhbGxzLCBzdGF0cyBhbmQgc2VhcmNoXG4gKiBhdHRhY2ggaGVyZTsgdGhlIHBlci12ZXJzaW9uIHJlY29yZHMgYXJlIHtAbGluayBwbHVnaW5MaXN0aW5nVmVyc2lvbn0uXG4gKiBgc2VhcmNoVmVjdG9yYCBpcyBtYWludGFpbmVkIGJ5IGEgdHJpZ2dlciBpbiBwb3N0Z3Jlcy1pbml0LnNxbCAobmFtZSBBLFxuICoga2V5d29yZHMgKyBjYXRlZ29yeSBCLCBzdW1tYXJ5IEMsIFJFQURNRSArIGRlc2NyaXB0aW9uIEQsIGNvbmZpZyBgZW5nbGlzaGApXG4gKiDigJQgbmV2ZXIgd3JpdGUgaXQgZnJvbSB0aGUgYXBwbGljYXRpb24uXG4gKlxuICogQHRhYmxlIHBsdWdpbl9saXN0aW5nc1xuICovXG5leHBvcnQgY29uc3QgcGx1Z2luTGlzdGluZyA9IHBnVGFibGUoJ3BsdWdpbl9saXN0aW5ncycsIHtcbiAgaWQ6IHV1aWQoJ2lkJykucHJpbWFyeUtleSgpLmRlZmF1bHRSYW5kb20oKSxcbiAgcHVibGlzaGVySWQ6IHV1aWQoJ3B1Ymxpc2hlcl9pZCcpLm5vdE51bGwoKS5yZWZlcmVuY2VzKCgpID0+IHB1Ymxpc2hlci5pZCksXG4gIG5hbWU6IHZhcmNoYXIoJ25hbWUnLCB7IGxlbmd0aDogMjU1IH0pLm5vdE51bGwoKSxcbiAgY2F0ZWdvcnk6IHZhcmNoYXIoJ2NhdGVnb3J5JywgeyBsZW5ndGg6IDUwIH0pLmRlZmF1bHQoJ3Vua25vd24nKS5ub3ROdWxsKCksXG4gIHN1bW1hcnk6IHZhcmNoYXIoJ3N1bW1hcnknLCB7IGxlbmd0aDogMzAwIH0pLFxuICBkZXNjcmlwdGlvbjogdGV4dCgnZGVzY3JpcHRpb24nKSxcbiAgcmVhZG1lSHRtbDogdGV4dCgncmVhZG1lX2h0bWwnKSxcbiAgbGljZW5zZTogdmFyY2hhcignbGljZW5zZScsIHsgbGVuZ3RoOiA2NCB9KSxcbiAgaG9tZXBhZ2VVcmw6IHZhcmNoYXIoJ2hvbWVwYWdlX3VybCcsIHsgbGVuZ3RoOiAyMDQ4IH0pLFxuICBzb3VyY2VVcmw6IHZhcmNoYXIoJ3NvdXJjZV91cmwnLCB7IGxlbmd0aDogMjA0OCB9KSxcbiAgaWNvbjoganNvbmIoJ2ljb24nKS4kdHlwZTxQbHVnaW5JY29uPigpLFxuICB1cGxvYWRlZEljb246IGpzb25iKCd1cGxvYWRlZF9pY29uJykuJHR5cGU8UGx1Z2luVXBsb2FkZWRJY29uPigpLFxuICBrZXl3b3JkczoganNvbmIoJ2tleXdvcmRzJykuJHR5cGU8c3RyaW5nW10+KCkuZGVmYXVsdChbXSkubm90TnVsbCgpLFxuICBzdGF0ZTogdmFyY2hhcignc3RhdGUnLCB7IGxlbmd0aDogMjAgfSkuJHR5cGU8TGlzdGluZ1N0YXRlPigpLmRlZmF1bHQoJ2xpc3RlZCcpLm5vdE51bGwoKSxcbiAgLy8gUHVibGlzaGVyIHBhdXNlOiBubyBuZXcgaW5zdGFsbHM7IGV4aXN0aW5nIGluc3RhbGxzIGtlZXAgcmVzb2x2aW5nLlxuICBwYXVzZWRBdDogdGltZXN0YW1wKCdwYXVzZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgZmVhdHVyZWQ6IGJvb2xlYW4oJ2ZlYXR1cmVkJykuZGVmYXVsdChmYWxzZSkubm90TnVsbCgpLFxuICBsYXRlc3RWZXJzaW9uOiB2YXJjaGFyKCdsYXRlc3RfdmVyc2lvbicsIHsgbGVuZ3RoOiA1MCB9KSxcbiAgc2VhcmNoVmVjdG9yOiB0c3ZlY3Rvcignc2VhcmNoX3ZlY3RvcicpLFxuICBjcmVhdGVkQXQ6IHRpbWVzdGFtcCgnY3JlYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLmRlZmF1bHROb3coKS5ub3ROdWxsKCksXG4gIHVwZGF0ZWRBdDogdGltZXN0YW1wKCd1cGRhdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcbn0sICh0YWJsZSkgPT4gKHtcbiAgcHVibGlzaGVyTmFtZVVuaXF1ZTogdW5pcXVlSW5kZXgoJ3BsdWdpbl9saXN0aW5nX3B1Ymxpc2hlcl9uYW1lX3VuaXF1ZScpLm9uKHRhYmxlLnB1Ymxpc2hlcklkLCB0YWJsZS5uYW1lKSxcbiAgc3RhdGVDYXRlZ29yeUlkeDogaW5kZXgoJ3BsdWdpbl9saXN0aW5nX3N0YXRlX2NhdGVnb3J5X2lkeCcpLm9uKHRhYmxlLnN0YXRlLCB0YWJsZS5jYXRlZ29yeSksXG4gIHVwZGF0ZWRBdElkeDogaW5kZXgoJ3BsdWdpbl9saXN0aW5nX3VwZGF0ZWRfYXRfaWR4Jykub24odGFibGUudXBkYXRlZEF0KSxcbiAgc2VhcmNoVmVjdG9ySWR4OiBpbmRleCgncGx1Z2luX2xpc3Rpbmdfc2VhcmNoX3ZlY3Rvcl9pZHgnKS51c2luZygnZ2luJywgdGFibGUuc2VhcmNoVmVjdG9yKSxcbiAgLy8gcGdfdHJnbTogdHlwby10b2xlcmFudCBuYW1lIG1hdGNoaW5nIChcInRlcmFmcm9tXCIgLT4gdGVycmFmb3JtKS5cbiAgbmFtZVRyZ21JZHg6IGluZGV4KCdwbHVnaW5fbGlzdGluZ19uYW1lX3RyZ21faWR4JykudXNpbmcoJ2dpbicsIHNxbGAke3RhYmxlLm5hbWV9IGdpbl90cmdtX29wc2ApLFxuICBzdGF0ZUNoZWNrOiBjaGVjaygncGx1Z2luX2xpc3RpbmdzX3N0YXRlX2NoZWNrJyxcbiAgICBzcWxgJHt0YWJsZS5zdGF0ZX0gSU4gKCdsaXN0ZWQnLCAndW5tYWludGFpbmVkJywgJ3N1c3BlbmRlZCcsICd0cmFuc2ZlcnJlZCcpYCksXG59KSk7XG5cbi8qKlxuICogVGhlIHB1YmxpYywgZnJvemVuIHN1YnNldCBvZiBhIHBsdWdpbiByZWNvcmQgY2FwdHVyZWQgYXQgYXBwcm92YWwsIHNvIGFcbiAqIGxpc3RlZCB2ZXJzaW9uIGtlZXBzIHN5bnRoZXNpemluZyBhZnRlciB0aGUgcHVibGlzaGVyIG9yZydzIG93biBgcGx1Z2luc2BcbiAqIHJvdyBpcyBkZWxldGVkIG9yIHB1cmdlZC4gT25seSB0aGUga2V5cyB0aGUgYHB1YmxpY19saXN0ZWRfdmVyc2lvbnNgXG4gKiB2aWV3IHByb2plY3RzIGFyZSBwdWJsaWM7IHRoZSByZXN0IGlzIHZpc2libGUgdG8gaW5zdGFsbGVycycgc3ludGggb25seS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMaXN0aW5nVmVyc2lvblNwZWNTbmFwc2hvdCB7XG4gIHBsdWdpblR5cGU/OiBzdHJpbmc7XG4gIGNvbXB1dGVUeXBlPzogc3RyaW5nO1xuICBzZWNyZXRzPzogUGx1Z2luU2VjcmV0W107XG4gIHJlcXVpcmVkTWV0YWRhdGE/OiBzdHJpbmdbXTtcbiAgcmVxdWlyZWRWYXJzPzogc3RyaW5nW107XG4gIG5ldHdvcmtFZ3Jlc3M/OiBzdHJpbmdbXTtcbiAgcnVuQXNSb290PzogYm9vbGVhbjtcbiAgbGljZW5zZT86IHN0cmluZztcbiAgcmVhZG1lSHRtbD86IHN0cmluZztcbiAgW2tleTogc3RyaW5nXTogdW5rbm93bjtcbn1cblxuLyoqXG4gKiBBIHZlcnNpb24gcHVibGlzaGVkIHRvIGEgbGlzdGluZyDigJQgdGhlIGNvcHkgaW4gdGhlIHJlYWQtb25seSBgcHVibGljLypgXG4gKiBuYW1lc3BhY2UuIEltbXV0YWJsZSBvbmNlIHdyaXR0ZW4gYXBhcnQgZnJvbSBwYXVzZSAvIHlhbmsgL1xuICogZGVwcmVjYXRpb24uIGBzb3VyY2VQbHVnaW5JZGAgaXMgcHJvdmVuYW5jZSBvbmx5IChubyBGSzogdGhlIG9yZyByb3cgaXNcbiAqIHNvZnQtZGVsZXRlZCBhbmQgcHVyZ2VkIG9uIGl0cyBvd24gc2NoZWR1bGUpLlxuICpcbiAqIEB0YWJsZSBwbHVnaW5fbGlzdGluZ192ZXJzaW9uc1xuICovXG5leHBvcnQgY29uc3QgcGx1Z2luTGlzdGluZ1ZlcnNpb24gPSBwZ1RhYmxlKCdwbHVnaW5fbGlzdGluZ192ZXJzaW9ucycsIHtcbiAgaWQ6IHV1aWQoJ2lkJykucHJpbWFyeUtleSgpLmRlZmF1bHRSYW5kb20oKSxcbiAgbGlzdGluZ0lkOiB1dWlkKCdsaXN0aW5nX2lkJykubm90TnVsbCgpLnJlZmVyZW5jZXMoKCkgPT4gcGx1Z2luTGlzdGluZy5pZCwgeyBvbkRlbGV0ZTogJ2Nhc2NhZGUnIH0pLFxuICBzb3VyY2VQbHVnaW5JZDogdXVpZCgnc291cmNlX3BsdWdpbl9pZCcpLFxuICB2ZXJzaW9uOiB2YXJjaGFyKCd2ZXJzaW9uJywgeyBsZW5ndGg6IDUwIH0pLm5vdE51bGwoKSxcbiAgaW1hZ2VEaWdlc3Q6IHZhcmNoYXIoJ2ltYWdlX2RpZ2VzdCcsIHsgbGVuZ3RoOiA3MSB9KSxcbiAgLy8gcHVibGljLzxoYW5kbGU+LzxuYW1lPlxuICBpbWFnZVJlcG9zaXRvcnk6IHZhcmNoYXIoJ2ltYWdlX3JlcG9zaXRvcnknLCB7IGxlbmd0aDogNTEyIH0pLFxuICBzcGVjU25hcHNob3Q6IGpzb25iKCdzcGVjX3NuYXBzaG90JykuJHR5cGU8TGlzdGluZ1ZlcnNpb25TcGVjU25hcHNob3Q+KCkuZGVmYXVsdCh7fSkubm90TnVsbCgpLFxuICBicmVha2luZzogYm9vbGVhbignYnJlYWtpbmcnKS5kZWZhdWx0KGZhbHNlKS5ub3ROdWxsKCksXG4gIHBhdXNlZEF0OiB0aW1lc3RhbXAoJ3BhdXNlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxuICB5YW5rZWRBdDogdGltZXN0YW1wKCd5YW5rZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgeWFua1JlYXNvbjogdGV4dCgneWFua19yZWFzb24nKSxcbiAgZGVwcmVjYXRlZEF0OiB0aW1lc3RhbXAoJ2RlcHJlY2F0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgZGVwcmVjYXRpb25NZXNzYWdlOiB0ZXh0KCdkZXByZWNhdGlvbl9tZXNzYWdlJyksXG4gIGNoYW5nZWxvZzogdGV4dCgnY2hhbmdlbG9nJyksXG4gIHZ1bG5Dcml0aWNhbDogaW50ZWdlcigndnVsbl9jcml0aWNhbCcpLFxuICB2dWxuSGlnaDogaW50ZWdlcigndnVsbl9oaWdoJyksXG4gIC8vIEZpeGFibGUgc3Vic2V0IChncnlwZSByZXBvcnRzIGEgZml4ZWQgdmVyc2lvbik7IE5VTEwgPSB1bnNjYW5uZWQuXG4gIHZ1bG5Dcml0aWNhbEZpeGFibGU6IGludGVnZXIoJ3Z1bG5fY3JpdGljYWxfZml4YWJsZScpLFxuICB2dWxuSGlnaEZpeGFibGU6IGludGVnZXIoJ3Z1bG5faGlnaF9maXhhYmxlJyksXG4gIHNjYW5uZWRBdDogdGltZXN0YW1wKCdzY2FubmVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG4gIC8vIFRoZSBuaWdodGx5IHJlc2NhbidzIGZsYWcgKGdhdGVkIGZpbmRpbmdzIG92ZXIgUExVR0lOX1ZVTE5fTUFYX0ZJTkRJTkdTKTsgTlVMTCA9IG5vdCBmbGFnZ2VkLlxuICBzY2FuRmxhZ2dlZEF0OiB0aW1lc3RhbXAoJ3NjYW5fZmxhZ2dlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxuICBzY2FuRmxhZzoganNvbmIoJ3NjYW5fZmxhZycpLiR0eXBlPFBsdWdpblNjYW5GbGFnPigpLFxuICAvKipcbiAgICogVGhlIExBU1QgcmVzY2FuJ3MgZmluZGluZ3MgZm9yIHRoaXMgdmVyc2lvbiwgd3JpdHRlbiB3aGV0aGVyIG9yIG5vdCB0aGVcbiAgICogZ2F0aW5nIGZsYWcgdHJpcHBlZC5cbiAgICpcbiAgICogYHNjYW5fZmxhZ2AgaXMgc2V0IG9ubHkgd2hpbGUgZml4YWJsZSBjcml0aWNhbHMgZXhjZWVkXG4gICAqIFBMVUdJTl9WVUxOX01BWF9GSU5ESU5HUywgc28gYSB2ZXJzaW9uIGNhcnJ5aW5nIG9ubHkgSGlnaCBmaW5kaW5ncyBzdG9yZXNcbiAgICogbm90aGluZyDigJQgYW5kIHRoZSB2dWxuZXJhYmlsaXR5IHJlcG9ydCBzZWN0aW9uLCB3aG9zZSB3aG9sZSBqb2IgaXMgdG8gc2hvd1xuICAgKiBDcml0aWNhbCBBTkQgSGlnaCBleHBvc3VyZSwgaGFkIG5vIHNvdXJjZSB0byByZWFkLiBUaGlzIGhvbGRzIHRoZSBjb3VudHMgYW5kXG4gICAqIHRoZSB0b3AgZmluZGluZ3MgZm9yIGV2ZXJ5IGluLXVzZSB2ZXJzaW9uLCBpbmRlcGVuZGVudCBvZiB0aGUgZ2F0ZTogd2hhdCBhXG4gICAqIHJlcG9ydCBzaG93cyBhbmQgd2hhdCBhIGJ1aWxkIHJlZnVzZXMgYXJlIGRpZmZlcmVudCBxdWVzdGlvbnMuXG4gICAqL1xuICBzY2FuU3VtbWFyeToganNvbmIoJ3NjYW5fc3VtbWFyeScpLiR0eXBlPFBsdWdpblNjYW5TdW1tYXJ5PigpLFxuICAvLyBUaGUgYmFzZSBpbWFnZSdzIGNvbmZpZyBgY3JlYXRlZGAgdGltZSwgcmVjb3JkZWQgYXQgcHVibGlzaDsgTlVMTCA9IHVua25vd24uXG4gIGJhc2VJbWFnZUNyZWF0ZWRBdDogdGltZXN0YW1wKCdiYXNlX2ltYWdlX2NyZWF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgLy8gV2hlbiBtYWludGVuYW5jZSBjb2xsZWN0ZWQgdGhpcyBsb25nLXlhbmtlZCwgdW5yZWZlcmVuY2VkIHZlcnNpb24ncyBwdWJsaWMvKiBpbWFnZTsgTlVMTCA9IHN0aWxsIHN0b3JlZC5cbiAgaW1hZ2VDb2xsZWN0ZWRBdDogdGltZXN0YW1wKCdpbWFnZV9jb2xsZWN0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgcHVibGlzaGVkQXQ6IHRpbWVzdGFtcCgncHVibGlzaGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcbiAgcHVibGlzaGVkQnk6IHRleHQoJ3B1Ymxpc2hlZF9ieScpLm5vdE51bGwoKSxcbn0sICh0YWJsZSkgPT4gKHtcbiAgbGlzdGluZ1ZlcnNpb25VbmlxdWU6IHVuaXF1ZUluZGV4KCdwbHVnaW5fbGlzdGluZ192ZXJzaW9uX3VuaXF1ZScpLm9uKHRhYmxlLmxpc3RpbmdJZCwgdGFibGUudmVyc2lvbiksXG4gIC8vIHB1YmxpYy8qIEdDIGd1YXJkICsgZGlnZXN0IGxvb2t1cHMuXG4gIGRpZ2VzdElkeDogaW5kZXgoJ3BsdWdpbl9saXN0aW5nX3ZlcnNpb25fZGlnZXN0X2lkeCcpLm9uKHRhYmxlLmltYWdlRGlnZXN0KSxcbiAgdmVyc2lvbkNoZWNrOiBjaGVjaygncGx1Z2luX2xpc3RpbmdfdmVyc2lvbnNfdmVyc2lvbl9jaGVjaycsXG4gICAgc3FsYCR7dGFibGUudmVyc2lvbn0gfiAnXlswLTldK1xcLlswLTldK1xcLlswLTldKygtW2EtekEtWjAtOS4tXSspPyhcXCtbYS16QS1aMC05Li1dKyk/JCdgLFxuICApLFxuICBpbWFnZURpZ2VzdENoZWNrOiBjaGVjaygncGx1Z2luX2xpc3RpbmdfdmVyc2lvbnNfaW1hZ2VfZGlnZXN0X2NoZWNrJyxcbiAgICBzcWxgJHt0YWJsZS5pbWFnZURpZ2VzdH0gSVMgTlVMTCBPUiAke3RhYmxlLmltYWdlRGlnZXN0fSB+ICdec2hhMjU2OlswLTlhLWZdezY0fSQnYCksXG59KSk7XG5cbi8qKlxuICogU2VjdXJpdHkgYWR2aXNvcnkgYWdhaW5zdCBhIGxpc3RpbmcncyB2ZXJzaW9uIHJhbmdlLlxuICpcbiAqIEB0YWJsZSBwbHVnaW5fYWR2aXNvcmllc1xuICovXG5leHBvcnQgY29uc3QgcGx1Z2luQWR2aXNvcnkgPSBwZ1RhYmxlKCdwbHVnaW5fYWR2aXNvcmllcycsIHtcbiAgaWQ6IHV1aWQoJ2lkJykucHJpbWFyeUtleSgpLmRlZmF1bHRSYW5kb20oKSxcbiAgbGlzdGluZ0lkOiB1dWlkKCdsaXN0aW5nX2lkJykubm90TnVsbCgpLnJlZmVyZW5jZXMoKCkgPT4gcGx1Z2luTGlzdGluZy5pZCksXG4gIHB1Ymxpc2hlcklkOiB1dWlkKCdwdWJsaXNoZXJfaWQnKS5ub3ROdWxsKCkucmVmZXJlbmNlcygoKSA9PiBwdWJsaXNoZXIuaWQpLFxuICAvLyBTZW12ZXIgcmFuZ2Ugb2YgYWZmZWN0ZWQgdmVyc2lvbnMuXG4gIGFmZmVjdGVkUmFuZ2U6IHZhcmNoYXIoJ2FmZmVjdGVkX3JhbmdlJywgeyBsZW5ndGg6IDI1NSB9KS5ub3ROdWxsKCksXG4gIGZpeGVkVmVyc2lvbjogdmFyY2hhcignZml4ZWRfdmVyc2lvbicsIHsgbGVuZ3RoOiA1MCB9KSxcbiAgc2V2ZXJpdHk6IHZhcmNoYXIoJ3NldmVyaXR5JywgeyBsZW5ndGg6IDEwIH0pLiR0eXBlPEFkdmlzb3J5U2V2ZXJpdHk+KCkubm90TnVsbCgpLFxuICBzdW1tYXJ5OiB2YXJjaGFyKCdzdW1tYXJ5JywgeyBsZW5ndGg6IDMwMCB9KS5ub3ROdWxsKCksXG4gIGRldGFpbHNNZDogdGV4dCgnZGV0YWlsc19tZCcpLFxuICBkZXRhaWxzSHRtbDogdGV4dCgnZGV0YWlsc19odG1sJyksXG4gIGN2ZUlkczogdGV4dCgnY3ZlX2lkcycpLmFycmF5KCkuZGVmYXVsdChbXSkubm90TnVsbCgpLFxuICBzdGF0ZTogdmFyY2hhcignc3RhdGUnLCB7IGxlbmd0aDogMjAgfSkuJHR5cGU8QWR2aXNvcnlTdGF0ZT4oKS5kZWZhdWx0KCdkcmFmdCcpLm5vdE51bGwoKSxcbiAgc291cmNlOiB2YXJjaGFyKCdzb3VyY2UnLCB7IGxlbmd0aDogMjAgfSkuJHR5cGU8QWR2aXNvcnlTb3VyY2U+KCkubm90TnVsbCgpLFxuICBjcmVhdGVkQnk6IHRleHQoJ2NyZWF0ZWRfYnknKS5ub3ROdWxsKCksXG4gIHB1Ymxpc2hlZEJ5OiB0ZXh0KCdwdWJsaXNoZWRfYnknKSxcbiAgcHVibGlzaGVkQXQ6IHRpbWVzdGFtcCgncHVibGlzaGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG4gIHdpdGhkcmF3bkF0OiB0aW1lc3RhbXAoJ3dpdGhkcmF3bl9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxuICBjcmVhdGVkQXQ6IHRpbWVzdGFtcCgnY3JlYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLmRlZmF1bHROb3coKS5ub3ROdWxsKCksXG4gIHVwZGF0ZWRBdDogdGltZXN0YW1wKCd1cGRhdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcbn0sICh0YWJsZSkgPT4gKHtcbiAgbGlzdGluZ1N0YXRlSWR4OiBpbmRleCgncGx1Z2luX2Fkdmlzb3J5X2xpc3Rpbmdfc3RhdGVfaWR4Jykub24odGFibGUubGlzdGluZ0lkLCB0YWJsZS5zdGF0ZSksXG4gIHB1Ymxpc2hlcklkeDogaW5kZXgoJ3BsdWdpbl9hZHZpc29yeV9wdWJsaXNoZXJfaWR4Jykub24odGFibGUucHVibGlzaGVySWQpLFxuICBzZXZlcml0eUNoZWNrOiBjaGVjaygncGx1Z2luX2Fkdmlzb3JpZXNfc2V2ZXJpdHlfY2hlY2snLFxuICAgIHNxbGAke3RhYmxlLnNldmVyaXR5fSBJTiAoJ2NyaXRpY2FsJywgJ2hpZ2gnLCAnbWVkaXVtJywgJ2xvdycpYCksXG4gIHN0YXRlQ2hlY2s6IGNoZWNrKCdwbHVnaW5fYWR2aXNvcmllc19zdGF0ZV9jaGVjaycsIHNxbGAke3RhYmxlLnN0YXRlfSBJTiAoJ2RyYWZ0JywgJ3B1Ymxpc2hlZCcsICd3aXRoZHJhd24nKWApLFxuICBzb3VyY2VDaGVjazogY2hlY2soJ3BsdWdpbl9hZHZpc29yaWVzX3NvdXJjZV9jaGVjaycsXG4gICAgc3FsYCR7dGFibGUuc291cmNlfSBJTiAoJ3B1Ymxpc2hlcicsICdtb2RlcmF0b3InLCAnY3ZlX3Jlc2NhbicsICdyZXZpZXcnKWApLFxufSkpO1xuXG4vKipcbiAqIEEgcHJvcG9zZWQgZW5hYmxlIG9yIHdpZGVuaW5nIG9mIGFuIGF1dG8tYXBwcm92YWwgcnVsZSwgd2FpdGluZyBmb3IgYSBTRUNPTkRcbiAqIEVjb3N5c3RlbSBNYW5hZ2VyIChuZXZlciB0aGUgcHJvcG9zZXIpLiBEaXNhYmxpbmcgb3IgZGVsZXRpbmcgYSBydWxlXG4gKiBuYXJyb3dzIGl0IGFuZCBhcHBsaWVzIGF0IG9uY2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXV0b0FwcHJvdmFsUnVsZVBlbmRpbmdDaGFuZ2Uge1xuICByZXF1ZXN0ZWRCeTogc3RyaW5nO1xuICByZXF1ZXN0ZWRBdDogc3RyaW5nO1xuICBlbmFibGVkOiBib29sZWFuO1xuICBuYW1lOiBzdHJpbmc7XG4gIGNvbmRpdGlvbnM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xufVxuXG4vKipcbiAqIFN5c3RlbS1vcmcgYXV0by1hcHByb3ZhbCBydWxlczsgZW5hYmxpbmcgb3Igd2lkZW5pbmcgb25lXG4gKiBuZWVkcyBhIHNlY29uZCBhcHByb3ZlciAoYHBlbmRpbmdDaGFuZ2VgKS5cbiAqXG4gKiBAdGFibGUgZWNvc3lzdGVtX2F1dG9fYXBwcm92YWxfcnVsZXNcbiAqL1xuZXhwb3J0IGNvbnN0IGVjb3N5c3RlbUF1dG9BcHByb3ZhbFJ1bGUgPSBwZ1RhYmxlKCdlY29zeXN0ZW1fYXV0b19hcHByb3ZhbF9ydWxlcycsIHtcbiAgaWQ6IHV1aWQoJ2lkJykucHJpbWFyeUtleSgpLmRlZmF1bHRSYW5kb20oKSxcbiAgbmFtZTogdmFyY2hhcignbmFtZScsIHsgbGVuZ3RoOiAyNTUgfSkubm90TnVsbCgpLFxuICBlbmFibGVkOiBib29sZWFuKCdlbmFibGVkJykuZGVmYXVsdChmYWxzZSkubm90TnVsbCgpLFxuICBjb25kaXRpb25zOiBqc29uYignY29uZGl0aW9ucycpLiR0eXBlPFJlY29yZDxzdHJpbmcsIHVua25vd24+PigpLmRlZmF1bHQoe30pLm5vdE51bGwoKSxcbiAgY3JlYXRlZEJ5OiB0ZXh0KCdjcmVhdGVkX2J5Jykubm90TnVsbCgpLFxuICAvLyBTZWNvbmQgYXBwcm92ZXIgKG5ldmVyIHRoZSBjcmVhdG9yKS5cbiAgYXBwcm92ZWRCeTogdGV4dCgnYXBwcm92ZWRfYnknKSxcbiAgcGVuZGluZ0NoYW5nZToganNvbmIoJ3BlbmRpbmdfY2hhbmdlJykuJHR5cGU8QXV0b0FwcHJvdmFsUnVsZVBlbmRpbmdDaGFuZ2U+KCksXG4gIGNyZWF0ZWRBdDogdGltZXN0YW1wKCdjcmVhdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcbiAgdXBkYXRlZEF0OiB0aW1lc3RhbXAoJ3VwZGF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5kZWZhdWx0Tm93KCkubm90TnVsbCgpLFxufSk7XG5cbi8qKlxuICogVGhlIHNpbmdsZSBxdWV1ZSB0aGUgRWNvc3lzdGVtIGNvbnNvbGUgd29ya3MgZnJvbS4gYGRpZ2VzdGAgaXMgcGlubmVkXG4gKiBhdCBzdWJtaXQ6IGFwcHJvdmFsIHB1Ymxpc2hlcyBleGFjdGx5IGl0LCBvciBmYWlscyBjbG9zZWQuIGBwbHVnaW5JZGBcbiAqIGhhcyBubyBGSyAodGhlIG9yZyByb3cgaXMgc29mdC1kZWxldGVkIGFuZCBwdXJnZWQgb24gaXRzIG93biBzY2hlZHVsZSkuXG4gKlxuICogQHRhYmxlIHBsdWdpbl9wdWJsaXNoX3JlcXVlc3RzXG4gKi9cbmV4cG9ydCBjb25zdCBwbHVnaW5QdWJsaXNoUmVxdWVzdCA9IHBnVGFibGUoJ3BsdWdpbl9wdWJsaXNoX3JlcXVlc3RzJywge1xuICBpZDogdXVpZCgnaWQnKS5wcmltYXJ5S2V5KCkuZGVmYXVsdFJhbmRvbSgpLFxuICBwdWJsaXNoZXJJZDogdXVpZCgncHVibGlzaGVyX2lkJykubm90TnVsbCgpLnJlZmVyZW5jZXMoKCkgPT4gcHVibGlzaGVyLmlkKSxcbiAgbGlzdGluZ0lkOiB1dWlkKCdsaXN0aW5nX2lkJykucmVmZXJlbmNlcygoKSA9PiBwbHVnaW5MaXN0aW5nLmlkKSxcbiAgcGx1Z2luSWQ6IHV1aWQoJ3BsdWdpbl9pZCcpLFxuICB2ZXJzaW9uOiB2YXJjaGFyKCd2ZXJzaW9uJywgeyBsZW5ndGg6IDUwIH0pLFxuICBkaWdlc3Q6IHZhcmNoYXIoJ2RpZ2VzdCcsIHsgbGVuZ3RoOiA3MSB9KSxcbiAga2luZDogdmFyY2hhcigna2luZCcsIHsgbGVuZ3RoOiAyMCB9KS4kdHlwZTxQdWJsaXNoUmVxdWVzdEtpbmQ+KCkubm90TnVsbCgpLFxuICBzZWN1cml0eUZpeEFkdmlzb3J5SWQ6IHV1aWQoJ3NlY3VyaXR5X2ZpeF9hZHZpc29yeV9pZCcpLnJlZmVyZW5jZXMoKCkgPT4gcGx1Z2luQWR2aXNvcnkuaWQpLFxuICBwYXlsb2FkOiBqc29uYigncGF5bG9hZCcpLiR0eXBlPFJlY29yZDxzdHJpbmcsIHVua25vd24+PigpLmRlZmF1bHQoe30pLm5vdE51bGwoKSxcbiAgc3RhdHVzOiB2YXJjaGFyKCdzdGF0dXMnLCB7IGxlbmd0aDogMzAgfSkuJHR5cGU8UHVibGlzaFJlcXVlc3RTdGF0dXM+KCkuZGVmYXVsdCgncGVuZGluZycpLm5vdE51bGwoKSxcbiAgbGFuZTogdmFyY2hhcignbGFuZScsIHsgbGVuZ3RoOiAxMCB9KS4kdHlwZTxQdWJsaXNoUmVxdWVzdExhbmU+KCkuZGVmYXVsdCgnc3RhbmRhcmQnKS5ub3ROdWxsKCksXG4gIHN1Ym1pdHRlZEJ5OiB0ZXh0KCdzdWJtaXR0ZWRfYnknKS5ub3ROdWxsKCksXG4gIHN1Ym1pdHRlZE9yZ0lkOiB2YXJjaGFyKCdzdWJtaXR0ZWRfb3JnX2lkJywgeyBsZW5ndGg6IDI1NSB9KSxcbiAgZmlyc3RBcHByb3ZlZEJ5OiB0ZXh0KCdmaXJzdF9hcHByb3ZlZF9ieScpLFxuICBkZWNpZGVkQnk6IHRleHQoJ2RlY2lkZWRfYnknKSxcbiAgc2Vjb25kQXBwcm92ZWRCeTogdGV4dCgnc2Vjb25kX2FwcHJvdmVkX2J5JyksXG4gIHJlYXNvbjogdGV4dCgncmVhc29uJyksXG4gIGF1dG9SdWxlSWQ6IHV1aWQoJ2F1dG9fcnVsZV9pZCcpLnJlZmVyZW5jZXMoKCkgPT4gZWNvc3lzdGVtQXV0b0FwcHJvdmFsUnVsZS5pZCksXG4gIGNyZWF0ZWRBdDogdGltZXN0YW1wKCdjcmVhdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcbiAgZGVjaWRlZEF0OiB0aW1lc3RhbXAoJ2RlY2lkZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbn0sICh0YWJsZSkgPT4gKHtcbiAgc3RhdHVzQ3JlYXRlZElkeDogaW5kZXgoJ3BsdWdpbl9wdWJsaXNoX3JlcXVlc3Rfc3RhdHVzX2NyZWF0ZWRfaWR4Jykub24odGFibGUuc3RhdHVzLCB0YWJsZS5jcmVhdGVkQXQpLFxuICBwdWJsaXNoZXJJZHg6IGluZGV4KCdwbHVnaW5fcHVibGlzaF9yZXF1ZXN0X3B1Ymxpc2hlcl9pZHgnKS5vbih0YWJsZS5wdWJsaXNoZXJJZCwgdGFibGUuY3JlYXRlZEF0KSxcbiAgLy8gQXQgbW9zdCBPTkUgb3BlbiByZXF1ZXN0IG9mIGEga2luZCBwZXIgKHB1Ymxpc2hlciwgbGlzdGluZywgdmVyc2lvbikuIEFcbiAgLy8gbmV3X2xpc3RpbmcgaGFzIG5vIGxpc3RpbmcgeWV0LCBzbyB0aGUgcmVxdWVzdGVkIG5hbWUgKHBheWxvYWQtPj4nbmFtZScpXG4gIC8vIHN0YW5kcyBpbjsgQ09BTEVTQ0UgYmVjYXVzZSBOVUxMcyBhcmUgRElTVElOQ1QgaW4gYSB1bmlxdWUgaW5kZXguIEFkdmlzb3J5XG4gIC8vIGRyYWZ0cyBhcmUgZXhlbXB0OiBhIGxpc3RpbmcgY2FuIGNhcnJ5IHNldmVyYWwgYXQgb25jZSAoZGlmZmVyZW50IHJhbmdlc1xuICAvLyBhbmQgQ1ZFIHNldHMpLCBlYWNoIGRlZHVwbGljYXRlZCBieSB0aGUgYWR2aXNvcnkgc2VydmljZS4gTXVzdCBtYXRjaCB0aGVcbiAgLy8gcG9zdGdyZXMtaW5pdC5zcWwgZXhwcmVzc2lvbiBpbmRleC5cbiAgb3BlblVuaXF1ZTogdW5pcXVlSW5kZXgoJ3BsdWdpbl9wdWJsaXNoX3JlcXVlc3Rfb3Blbl91bmlxdWUnKVxuICAgIC5vbihcbiAgICAgIHRhYmxlLnB1Ymxpc2hlcklkLFxuICAgICAgdGFibGUua2luZCxcbiAgICAgIHNxbGBjb2FsZXNjZSgke3RhYmxlLmxpc3RpbmdJZH06OnRleHQsICR7dGFibGUucGF5bG9hZH0tPj4nbmFtZScsICcnKWAsXG4gICAgICBzcWxgY29hbGVzY2UoJHt0YWJsZS52ZXJzaW9ufSwgJycpYCxcbiAgICApXG4gICAgLndoZXJlKHNxbGBzdGF0dXMgSU4gKCdwZW5kaW5nJywgJ3BlbmRpbmdfc2Vjb25kX2FwcHJvdmFsJykgQU5EIGtpbmQgPD4gJ2Fkdmlzb3J5J2ApLFxuICBkaWdlc3RDaGVjazogY2hlY2soJ3BsdWdpbl9wdWJsaXNoX3JlcXVlc3RzX2RpZ2VzdF9jaGVjaycsXG4gICAgc3FsYCR7dGFibGUuZGlnZXN0fSBJUyBOVUxMIE9SICR7dGFibGUuZGlnZXN0fSB+ICdec2hhMjU2OlswLTlhLWZdezY0fSQnYCksXG4gIGtpbmRDaGVjazogY2hlY2soJ3BsdWdpbl9wdWJsaXNoX3JlcXVlc3RzX2tpbmRfY2hlY2snLCBzcWxgJHt0YWJsZS5raW5kfSBJTiAoJ25ld19saXN0aW5nJywgJ25ld192ZXJzaW9uJyxcbiAgICAnbGlzdGluZ191cGRhdGUnLCAneWFuaycsICd1bnBhdXNlJywgJ3RyYW5zZmVyJywgJ2NsYWltJywgJ3Byb2ZpbGVfY2hhbmdlJywgJ2Fkdmlzb3J5JywgJ3ZlcmlmeScsICdtb2RlcmF0aW9uJyxcbiAgICAnc3VibWlzc2lvbicpYCksXG4gIHN0YXR1c0NoZWNrOiBjaGVjaygncGx1Z2luX3B1Ymxpc2hfcmVxdWVzdHNfc3RhdHVzX2NoZWNrJyxcbiAgICBzcWxgJHt0YWJsZS5zdGF0dXN9IElOICgncGVuZGluZycsICdwZW5kaW5nX3NlY29uZF9hcHByb3ZhbCcsICdhcHByb3ZlZCcsICdyZWplY3RlZCcsICd3aXRoZHJhd24nKWApLFxuICBsYW5lQ2hlY2s6IGNoZWNrKCdwbHVnaW5fcHVibGlzaF9yZXF1ZXN0c19sYW5lX2NoZWNrJywgc3FsYCR7dGFibGUubGFuZX0gSU4gKCdzdGFuZGFyZCcsICdzZWN1cml0eScpYCksXG59KSk7XG5cbi8qKlxuICogTmFtZXMgaGVsZCBiYWNrIGZyb20gaGFuZGxlcy9saXN0aW5ncyAoT2ZmaWNpYWwvVmVyaWZpZWQgcmVzZXJ2YXRpb25zLFxuICogY29uZnVzYWJsZXMpLiBgcHVibGlzaGVySWRgID0gdGhlIHB1Ymxpc2hlciB0aGUgbmFtZSBpcyByZXNlcnZlZCBGT1IsIGlmIGFueS5cbiAqXG4gKiBAdGFibGUgZWNvc3lzdGVtX3Jlc2VydmVkX25hbWVzXG4gKi9cbmV4cG9ydCBjb25zdCBlY29zeXN0ZW1SZXNlcnZlZE5hbWUgPSBwZ1RhYmxlKCdlY29zeXN0ZW1fcmVzZXJ2ZWRfbmFtZXMnLCB7XG4gIG5hbWU6IHZhcmNoYXIoJ25hbWUnLCB7IGxlbmd0aDogMjU1IH0pLnByaW1hcnlLZXkoKSxcbiAgcmVhc29uOiB0ZXh0KCdyZWFzb24nKSxcbiAgcHVibGlzaGVySWQ6IHV1aWQoJ3B1Ymxpc2hlcl9pZCcpLnJlZmVyZW5jZXMoKCkgPT4gcHVibGlzaGVyLmlkKSxcbiAgY3JlYXRlZEF0OiB0aW1lc3RhbXAoJ2NyZWF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5kZWZhdWx0Tm93KCkubm90TnVsbCgpLFxufSk7XG5cbi8qKlxuICogSW5zdGFuY2Utd2lkZSBlY29zeXN0ZW0ga25vYnMgKGZsYWdzLCBTTEEsIHRocmVzaG9sZHMpLCBrZXkvdmFsdWUuXG4gKlxuICogQHRhYmxlIGVjb3N5c3RlbV9zZXR0aW5nc1xuICovXG5leHBvcnQgY29uc3QgZWNvc3lzdGVtU2V0dGluZyA9IHBnVGFibGUoJ2Vjb3N5c3RlbV9zZXR0aW5ncycsIHtcbiAga2V5OiB2YXJjaGFyKCdrZXknLCB7IGxlbmd0aDogMTAwIH0pLnByaW1hcnlLZXkoKSxcbiAgdmFsdWU6IGpzb25iKCd2YWx1ZScpLiR0eXBlPHVua25vd24+KCkubm90TnVsbCgpLFxuICB1cGRhdGVkQnk6IHRleHQoJ3VwZGF0ZWRfYnknKSxcbiAgdXBkYXRlZEF0OiB0aW1lc3RhbXAoJ3VwZGF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5kZWZhdWx0Tm93KCkubm90TnVsbCgpLFxufSk7XG5cbi8vIGBlY29zeXN0ZW1fY29sbGVjdGlvbnNgIHdhcyBERUxFVEVEIGhlcmUuIEl0IG1vZGVsbGVkIGN1cmF0ZWQgZGlyZWN0b3J5IGNvbGxlY3Rpb25zXG4vLyAoXCJGZWF0dXJlZFwiLCBcIlNlY3VyaXR5IHNjYW5uZXJzXCIpIGFzIHNsdWcgKyB0aXRsZSArIGEgSlNPTkIgbGlzdCBvZiBsaXN0aW5nIGlkcywgYW5kXG4vLyBub3RoaW5nIGV2ZXIgd3JvdGUgb3IgcmVhZCBvbmUg4oCUIHRoZSBwdWJsaWMgZGlyZWN0b3J5IHJhbmtzIGFuZCBmYWNldHMgbGlzdGluZ3Ncbi8vIGRpcmVjdGx5LiBBIHNjaGVtYSB0ZXN0IGFzc2VydGluZyBpdHMgc2hhcGUgd2FzIHRoZSBvbmx5IHRoaW5nIGtlZXBpbmcgaXQgYWxpdmUuXG5cbi8qKlxuICogQSBsaXN0aW5nIHJldmlldy4gYGF1dGhvck9yZ0lkYCBmZWVkcyB0aGUgaW50ZWdyaXR5IHJ1bGVzIChub1xuICogc2VsZi1yZXZpZXcsIHBlci1vcmcgcmF0ZSBsaW1pdCwgdmVyaWZpZWQgdXNlKSBhbmQgaXMgTkVWRVIgZXhwb3NlZC4gR0RQUlxuICogdXNlciBkZWxldGlvbiBhbm9ueW1pemVzOiBgYXV0aG9yVXNlcklkYCBhbmQgdGhlIGJvZHkgZ28gTlVMTCwgdGhlIHJhdGluZyBzdGF5cy5cbiAqXG4gKiBAdGFibGUgcGx1Z2luX3Jldmlld3NcbiAqL1xuZXhwb3J0IGNvbnN0IHBsdWdpblJldmlldyA9IHBnVGFibGUoJ3BsdWdpbl9yZXZpZXdzJywge1xuICBpZDogdXVpZCgnaWQnKS5wcmltYXJ5S2V5KCkuZGVmYXVsdFJhbmRvbSgpLFxuICBsaXN0aW5nSWQ6IHV1aWQoJ2xpc3RpbmdfaWQnKS5ub3ROdWxsKCkucmVmZXJlbmNlcygoKSA9PiBwbHVnaW5MaXN0aW5nLmlkLCB7IG9uRGVsZXRlOiAnY2FzY2FkZScgfSksXG4gIHZlcnNpb246IHZhcmNoYXIoJ3ZlcnNpb24nLCB7IGxlbmd0aDogNTAgfSksXG4gIHJhdGluZzogc21hbGxpbnQoJ3JhdGluZycpLm5vdE51bGwoKSxcbiAgdGl0bGU6IHZhcmNoYXIoJ3RpdGxlJywgeyBsZW5ndGg6IDEyMCB9KSxcbiAgYm9keU1kOiB0ZXh0KCdib2R5X21kJyksXG4gIGJvZHlIdG1sOiB0ZXh0KCdib2R5X2h0bWwnKSxcbiAgYXV0aG9yVXNlcklkOiB0ZXh0KCdhdXRob3JfdXNlcl9pZCcpLFxuICBhdXRob3JPcmdJZDogdmFyY2hhcignYXV0aG9yX29yZ19pZCcsIHsgbGVuZ3RoOiAyNTUgfSksXG4gIC8vIFRoZSBvbmx5IGF1dGhvciBmaWVsZCBldmVyIHNob3duIChzbmFwc2hvdCBhdCB3cml0ZSB0aW1lOyBOVUxMIG9uY2UgYW5vbnltaXplZCkuXG4gIGF1dGhvckRpc3BsYXlOYW1lOiB2YXJjaGFyKCdhdXRob3JfZGlzcGxheV9uYW1lJywgeyBsZW5ndGg6IDEwMCB9KSxcbiAgdmVyaWZpZWRVc2U6IGJvb2xlYW4oJ3ZlcmlmaWVkX3VzZScpLmRlZmF1bHQoZmFsc2UpLm5vdE51bGwoKSxcbiAgc3RhdHVzOiB2YXJjaGFyKCdzdGF0dXMnLCB7IGxlbmd0aDogMTAgfSkuJHR5cGU8UmV2aWV3U3RhdHVzPigpLmRlZmF1bHQoJ3B1Ymxpc2hlZCcpLm5vdE51bGwoKSxcbiAgaG9sZFJlYXNvbjogdmFyY2hhcignaG9sZF9yZWFzb24nLCB7IGxlbmd0aDogMjAgfSkuJHR5cGU8UmV2aWV3SG9sZFJlYXNvbj4oKSxcbiAgbW9kZXJhdGlvblJlYXNvbjogdGV4dCgnbW9kZXJhdGlvbl9yZWFzb24nKSxcbiAgaGVscGZ1bENvdW50OiBpbnRlZ2VyKCdoZWxwZnVsX2NvdW50JykuZGVmYXVsdCgwKS5ub3ROdWxsKCksXG4gIGNyZWF0ZWRBdDogdGltZXN0YW1wKCdjcmVhdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcbiAgdXBkYXRlZEF0OiB0aW1lc3RhbXAoJ3VwZGF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5kZWZhdWx0Tm93KCkubm90TnVsbCgpLFxufSwgKHRhYmxlKSA9PiAoe1xuICBsaXN0aW5nQXV0aG9yVW5pcXVlOiB1bmlxdWVJbmRleCgncGx1Z2luX3Jldmlld19saXN0aW5nX2F1dGhvcl91bmlxdWUnKS5vbih0YWJsZS5saXN0aW5nSWQsIHRhYmxlLmF1dGhvclVzZXJJZCksXG4gIGxpc3RpbmdTdGF0dXNDcmVhdGVkSWR4OiBpbmRleCgncGx1Z2luX3Jldmlld19saXN0aW5nX3N0YXR1c19jcmVhdGVkX2lkeCcpXG4gICAgLm9uKHRhYmxlLmxpc3RpbmdJZCwgdGFibGUuc3RhdHVzLCB0YWJsZS5jcmVhdGVkQXQpLFxuICAvLyBQZXItb3JnIGRhaWx5IHJldmlldyBjYXAuXG4gIGF1dGhvck9yZ0NyZWF0ZWRJZHg6IGluZGV4KCdwbHVnaW5fcmV2aWV3X2F1dGhvcl9vcmdfY3JlYXRlZF9pZHgnKS5vbih0YWJsZS5hdXRob3JPcmdJZCwgdGFibGUuY3JlYXRlZEF0KSxcbiAgLy8gTW9kZXJhdGlvbiBxdWV1ZS5cbiAgc3RhdHVzVXBkYXRlZElkeDogaW5kZXgoJ3BsdWdpbl9yZXZpZXdfc3RhdHVzX3VwZGF0ZWRfaWR4Jykub24odGFibGUuc3RhdHVzLCB0YWJsZS51cGRhdGVkQXQpLFxuICByYXRpbmdDaGVjazogY2hlY2soJ3BsdWdpbl9yZXZpZXdzX3JhdGluZ19jaGVjaycsIHNxbGAke3RhYmxlLnJhdGluZ30gQkVUV0VFTiAxIEFORCA1YCksXG4gIHN0YXR1c0NoZWNrOiBjaGVjaygncGx1Z2luX3Jldmlld3Nfc3RhdHVzX2NoZWNrJywgc3FsYCR7dGFibGUuc3RhdHVzfSBJTiAoJ3B1Ymxpc2hlZCcsICdoZWxkJywgJ3JlbW92ZWQnKWApLFxuICBob2xkUmVhc29uQ2hlY2s6IGNoZWNrKCdwbHVnaW5fcmV2aWV3c19ob2xkX3JlYXNvbl9jaGVjaycsXG4gICAgc3FsYCR7dGFibGUuaG9sZFJlYXNvbn0gSU4gKCdyZXBvcnRzJywgJ2J1cnN0JywgJ2ZpbHRlcicsICdzZWN1cml0eScsICdtb2RlcmF0b3InKWApLFxufSkpO1xuXG4vKipcbiAqIFRoZSBvbmUgcHVibGljIHB1Ymxpc2hlciByZXBseSB0byBhIHJldmlldy5cbiAqXG4gKiBAdGFibGUgcGx1Z2luX3Jldmlld19yZXBsaWVzXG4gKi9cbmV4cG9ydCBjb25zdCBwbHVnaW5SZXZpZXdSZXBseSA9IHBnVGFibGUoJ3BsdWdpbl9yZXZpZXdfcmVwbGllcycsIHtcbiAgcmV2aWV3SWQ6IHV1aWQoJ3Jldmlld19pZCcpLnByaW1hcnlLZXkoKS5yZWZlcmVuY2VzKCgpID0+IHBsdWdpblJldmlldy5pZCwgeyBvbkRlbGV0ZTogJ2Nhc2NhZGUnIH0pLFxuICBwdWJsaXNoZXJJZDogdXVpZCgncHVibGlzaGVyX2lkJykubm90TnVsbCgpLnJlZmVyZW5jZXMoKCkgPT4gcHVibGlzaGVyLmlkKSxcbiAgYXV0aG9yVXNlcklkOiB0ZXh0KCdhdXRob3JfdXNlcl9pZCcpLFxuICBib2R5TWQ6IHRleHQoJ2JvZHlfbWQnKS5ub3ROdWxsKCksXG4gIGJvZHlIdG1sOiB0ZXh0KCdib2R5X2h0bWwnKS5ub3ROdWxsKCksXG4gIGNyZWF0ZWRBdDogdGltZXN0YW1wKCdjcmVhdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcbiAgdXBkYXRlZEF0OiB0aW1lc3RhbXAoJ3VwZGF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5kZWZhdWx0Tm93KCkubm90TnVsbCgpLFxufSk7XG5cbi8qKlxuICogXCJSZXBvcnQgcmV2aWV3XCIg4oCUIG9uZSBwZXIgcmVwb3J0ZXIgcGVyIHJldmlldzsgTiByZXBvcnRzIGF1dG8taG9sZCBpdC5cbiAqXG4gKiBAdGFibGUgcGx1Z2luX3Jldmlld19yZXBvcnRzXG4gKi9cbmV4cG9ydCBjb25zdCBwbHVnaW5SZXZpZXdSZXBvcnQgPSBwZ1RhYmxlKCdwbHVnaW5fcmV2aWV3X3JlcG9ydHMnLCB7XG4gIGlkOiB1dWlkKCdpZCcpLnByaW1hcnlLZXkoKS5kZWZhdWx0UmFuZG9tKCksXG4gIHJldmlld0lkOiB1dWlkKCdyZXZpZXdfaWQnKS5ub3ROdWxsKCkucmVmZXJlbmNlcygoKSA9PiBwbHVnaW5SZXZpZXcuaWQsIHsgb25EZWxldGU6ICdjYXNjYWRlJyB9KSxcbiAgcmVwb3J0ZXJVc2VySWQ6IHRleHQoJ3JlcG9ydGVyX3VzZXJfaWQnKS5ub3ROdWxsKCksXG4gIGNhdGVnb3J5OiB2YXJjaGFyKCdjYXRlZ29yeScsIHsgbGVuZ3RoOiAyMCB9KS4kdHlwZTxSZXZpZXdSZXBvcnRDYXRlZ29yeT4oKS5kZWZhdWx0KCdhYnVzZScpLm5vdE51bGwoKSxcbiAgcmVhc29uOiB0ZXh0KCdyZWFzb24nKSxcbiAgLy8gU2V0IG9uY2UgYSBtb2RlcmF0b3IgcmVsZWFzZWQgb3IgcmVtb3ZlZCB0aGUgcmV2aWV3LlxuICByZXNvbHZlZEF0OiB0aW1lc3RhbXAoJ3Jlc29sdmVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG4gIGNyZWF0ZWRBdDogdGltZXN0YW1wKCdjcmVhdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcbn0sICh0YWJsZSkgPT4gKHtcbiAgcmV2aWV3UmVwb3J0ZXJVbmlxdWU6IHVuaXF1ZUluZGV4KCdwbHVnaW5fcmV2aWV3X3JlcG9ydF91bmlxdWUnKS5vbih0YWJsZS5yZXZpZXdJZCwgdGFibGUucmVwb3J0ZXJVc2VySWQpLFxuICBvcGVuSWR4OiBpbmRleCgncGx1Z2luX3Jldmlld19yZXBvcnRfb3Blbl9pZHgnKS5vbih0YWJsZS5yZXZpZXdJZCkud2hlcmUoc3FsYCR7dGFibGUucmVzb2x2ZWRBdH0gSVMgTlVMTGApLFxuICBjYXRlZ29yeUNoZWNrOiBjaGVjaygncGx1Z2luX3Jldmlld19yZXBvcnRzX2NhdGVnb3J5X2NoZWNrJyxcbiAgICBzcWxgJHt0YWJsZS5jYXRlZ29yeX0gSU4gKCdzcGFtJywgJ2FidXNlJywgJ29mZl90b3BpYycsICdzZWN1cml0eScpYCksXG59KSk7XG5cbi8qKlxuICogT25lIFwiaGVscGZ1bFwiIHZvdGUgcGVyIHVzZXIgcGVyIHJldmlldy5cbiAqXG4gKiBAdGFibGUgcGx1Z2luX3Jldmlld192b3Rlc1xuICovXG5leHBvcnQgY29uc3QgcGx1Z2luUmV2aWV3Vm90ZSA9IHBnVGFibGUoJ3BsdWdpbl9yZXZpZXdfdm90ZXMnLCB7XG4gIHJldmlld0lkOiB1dWlkKCdyZXZpZXdfaWQnKS5ub3ROdWxsKCkucmVmZXJlbmNlcygoKSA9PiBwbHVnaW5SZXZpZXcuaWQsIHsgb25EZWxldGU6ICdjYXNjYWRlJyB9KSxcbiAgdXNlcklkOiB0ZXh0KCd1c2VyX2lkJykubm90TnVsbCgpLFxuICBjcmVhdGVkQXQ6IHRpbWVzdGFtcCgnY3JlYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLmRlZmF1bHROb3coKS5ub3ROdWxsKCksXG59LCAodGFibGUpID0+ICh7XG4gIHBrOiBwcmltYXJ5S2V5KHsgY29sdW1uczogW3RhYmxlLnJldmlld0lkLCB0YWJsZS51c2VySWRdIH0pLFxufSkpO1xuXG4vKipcbiAqIFJldmlldyBlZGl0IGhpc3Rvcnk6IHRoZSBQUklPUiBjb250ZW50LCBhcHBlbmRlZCBvbiBldmVyeSBlZGl0LlxuICpcbiAqIEB0YWJsZSBwbHVnaW5fcmV2aWV3X2hpc3RvcnlcbiAqL1xuZXhwb3J0IGNvbnN0IHBsdWdpblJldmlld0hpc3RvcnkgPSBwZ1RhYmxlKCdwbHVnaW5fcmV2aWV3X2hpc3RvcnknLCB7XG4gIGlkOiB1dWlkKCdpZCcpLnByaW1hcnlLZXkoKS5kZWZhdWx0UmFuZG9tKCksXG4gIHJldmlld0lkOiB1dWlkKCdyZXZpZXdfaWQnKS5ub3ROdWxsKCkucmVmZXJlbmNlcygoKSA9PiBwbHVnaW5SZXZpZXcuaWQsIHsgb25EZWxldGU6ICdjYXNjYWRlJyB9KSxcbiAgdmVyc2lvbjogdmFyY2hhcigndmVyc2lvbicsIHsgbGVuZ3RoOiA1MCB9KSxcbiAgcmF0aW5nOiBzbWFsbGludCgncmF0aW5nJykubm90TnVsbCgpLFxuICB0aXRsZTogdmFyY2hhcigndGl0bGUnLCB7IGxlbmd0aDogMTIwIH0pLFxuICBib2R5TWQ6IHRleHQoJ2JvZHlfbWQnKSxcbiAgZWRpdGVkQXQ6IHRpbWVzdGFtcCgnZWRpdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcbn0sICh0YWJsZSkgPT4gKHtcbiAgcmV2aWV3SWR4OiBpbmRleCgncGx1Z2luX3Jldmlld19oaXN0b3J5X3Jldmlld19pZHgnKS5vbih0YWJsZS5yZXZpZXdJZCwgdGFibGUuZWRpdGVkQXQpLFxuICByYXRpbmdDaGVjazogY2hlY2soJ3BsdWdpbl9yZXZpZXdfaGlzdG9yeV9yYXRpbmdfY2hlY2snLCBzcWxgJHt0YWJsZS5yYXRpbmd9IEJFVFdFRU4gMSBBTkQgNWApLFxufSkpO1xuXG4vKipcbiAqIERlbm9ybWFsaXplZCBwZXItbGlzdGluZyBzdGF0cywgcmVjb21wdXRlZCBieSBhIGpvYi4gYGFjdGl2ZU9yZ0NvdW50YCBpc1xuICogcHVibGljIG9ubHkgd2hlbiA+PSA1ICh0aGUgYHB1YmxpY19saXN0aW5nc2AgdmlldyBlbmZvcmNlcyBpdCkuXG4gKlxuICogQHRhYmxlIHBsdWdpbl9zdGF0c1xuICovXG5leHBvcnQgY29uc3QgcGx1Z2luU3RhdHMgPSBwZ1RhYmxlKCdwbHVnaW5fc3RhdHMnLCB7XG4gIGxpc3RpbmdJZDogdXVpZCgnbGlzdGluZ19pZCcpLnByaW1hcnlLZXkoKS5yZWZlcmVuY2VzKCgpID0+IHBsdWdpbkxpc3RpbmcuaWQsIHsgb25EZWxldGU6ICdjYXNjYWRlJyB9KSxcbiAgcmF0aW5nQmF5ZXM6IGRvdWJsZVByZWNpc2lvbigncmF0aW5nX2JheWVzJyksXG4gIHJhdGluZ0NvdW50OiBpbnRlZ2VyKCdyYXRpbmdfY291bnQnKS5kZWZhdWx0KDApLm5vdE51bGwoKSxcbiAgLy8gU3RhciBkaXN0cmlidXRpb246IHsgXCIxXCI6IG4sIOKApiwgXCI1XCI6IG4gfS5cbiAgZGlzdDoganNvbmIoJ2Rpc3QnKS4kdHlwZTxSZWNvcmQ8c3RyaW5nLCBudW1iZXI+PigpLmRlZmF1bHQoe30pLm5vdE51bGwoKSxcbiAgLy8gXCJSZWNlbnQgdmVyc2lvbnNcIiByYXRpbmcgb3ZlciB0aGUgbGFzdCB0d28gbWlub3JzLlxuICByZWNlbnRSYXRpbmc6IGRvdWJsZVByZWNpc2lvbigncmVjZW50X3JhdGluZycpLFxuICBpbnN0YWxsQ291bnQ6IGludGVnZXIoJ2luc3RhbGxfY291bnQnKS5kZWZhdWx0KDApLm5vdE51bGwoKSxcbiAgYWN0aXZlT3JnQ291bnQ6IGludGVnZXIoJ2FjdGl2ZV9vcmdfY291bnQnKS5kZWZhdWx0KDApLm5vdE51bGwoKSxcbiAgc3VjY2Vzc1JhdGUzMGQ6IGRvdWJsZVByZWNpc2lvbignc3VjY2Vzc19yYXRlXzMwZCcpLFxuICBoZWFsdGhTY29yZTogZG91YmxlUHJlY2lzaW9uKCdoZWFsdGhfc2NvcmUnKSxcbiAgLy8gUGVyLWNvbXBvbmVudCBoZWFsdGggc2NvcmVzIGFuZCB3ZWlnaHRzLCBmb3IgdGhlIGJyZWFrZG93biBwYW5lbC5cbiAgaGVhbHRoQnJlYWtkb3duOiBqc29uYignaGVhbHRoX2JyZWFrZG93bicpLiR0eXBlPEhlYWx0aEJyZWFrZG93bj4oKSxcbiAgdXBkYXRlZEF0OiB0aW1lc3RhbXAoJ3VwZGF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5kZWZhdWx0Tm93KCkubm90TnVsbCgpLFxufSk7XG5cbi8qKlxuICogQW5vbnltb3VzIHB1YmxpYyBzdWJtaXNzaW9uLiBUaGUgZW1haWwgaXMga2VwdCBoYXNoZWQgKHJhdGUgbGltaXRzLFxuICogY2xhaW0gbWF0Y2hpbmcpIGFuZCBlbmNyeXB0ZWQgKHRha2Vkb3duIG5vdGljZXMgb25seSkgYW5kIHB1cmdlZCBhdFxuICogYGVtYWlsUHVyZ2VBZnRlcmAuIE5vdGhpbmcgaGVyZSBpcyBldmVyIGxpc3RlZCBvciByZXNvbHZhYmxlLlxuICpcbiAqIEB0YWJsZSBwbHVnaW5fc3VibWlzc2lvbnNcbiAqL1xuZXhwb3J0IGNvbnN0IHBsdWdpblN1Ym1pc3Npb24gPSBwZ1RhYmxlKCdwbHVnaW5fc3VibWlzc2lvbnMnLCB7XG4gIGlkOiB1dWlkKCdpZCcpLnByaW1hcnlLZXkoKS5kZWZhdWx0UmFuZG9tKCksXG4gIHN0YXR1czogdmFyY2hhcignc3RhdHVzJywgeyBsZW5ndGg6IDMwIH0pLiR0eXBlPFN1Ym1pc3Npb25TdGF0dXM+KCkuZGVmYXVsdCgncGVuZGluZ192ZXJpZmljYXRpb24nKS5ub3ROdWxsKCksXG4gIGVtYWlsSGFzaDogdmFyY2hhcignZW1haWxfaGFzaCcsIHsgbGVuZ3RoOiA2NCB9KSxcbiAgZW1haWxFbmM6IHRleHQoJ2VtYWlsX2VuYycpLFxuICB2ZXJpZnlUb2tlbkhhc2g6IHZhcmNoYXIoJ3ZlcmlmeV90b2tlbl9oYXNoJywgeyBsZW5ndGg6IDY0IH0pLFxuICB2ZXJpZnlFeHBpcmVzQXQ6IHRpbWVzdGFtcCgndmVyaWZ5X2V4cGlyZXNfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgdmVyaWZpZWRBdDogdGltZXN0YW1wKCd2ZXJpZmllZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxuICAvLyBzaGEyNTYgb2YgdGhlIHN0YXR1cyB0b2tlbiAocmV0dXJuZWQgYnkgdmVyaWZ5IGFuZCBpbiBOMS9OMy9ONCBlbWFpbHMpIOKAlFxuICAvLyB0aGUgc3VibWl0dGVyJ3Mgb25seSByZWFkIGhhbmRsZSBvbiB0aGUgc3VibWlzc2lvbi5cbiAgc3RhdHVzVG9rZW5IYXNoOiB2YXJjaGFyKCdzdGF0dXNfdG9rZW5faGFzaCcsIHsgbGVuZ3RoOiA2NCB9KSxcbiAgbmFtZTogdmFyY2hhcignbmFtZScsIHsgbGVuZ3RoOiAyNTUgfSkubm90TnVsbCgpLFxuICB2ZXJzaW9uOiB2YXJjaGFyKCd2ZXJzaW9uJywgeyBsZW5ndGg6IDUwIH0pLm5vdE51bGwoKSxcbiAgc3BlYzoganNvbmIoJ3NwZWMnKS4kdHlwZTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4oKS5kZWZhdWx0KHt9KS5ub3ROdWxsKCksXG4gIC8vIFRoZSBhY2NlcHQtb3ItZWRpdCBjYXRhbG9nIHZhbHVlcyArIHByb3ZlbmFuY2UgYW5kIHRoZSBEb2NrZXJmaWxlLFxuICAvLyBjYXB0dXJlZCBhdCBzdWJtaXQgc28gbW9kZXJhdGlvbiByZXZpZXdzIGV4YWN0bHkgd2hhdCB3YXMgc3VibWl0dGVkLlxuICBjYXRhbG9nOiBqc29uYignY2F0YWxvZycpLiR0eXBlPFN1Ym1pc3Npb25DYXRhbG9nPigpLmRlZmF1bHQoeyB2YWx1ZXM6IHt9LCBzb3VyY2VzOiB7fSB9KS5ub3ROdWxsKCksXG4gIGRvY2tlcmZpbGU6IHRleHQoJ2RvY2tlcmZpbGUnKSxcbiAgYXJ0aWZhY3RLZXk6IHZhcmNoYXIoJ2FydGlmYWN0X2tleScsIHsgbGVuZ3RoOiAxMDI0IH0pLFxuICBxdWFyYW50aW5lSW1hZ2VSZWY6IHZhcmNoYXIoJ3F1YXJhbnRpbmVfaW1hZ2VfcmVmJywgeyBsZW5ndGg6IDEwMjQgfSksXG4gIGdhdGVSZXBvcnQ6IGpzb25iKCdnYXRlX3JlcG9ydCcpLiR0eXBlPFJlY29yZDxzdHJpbmcsIHVua25vd24+PigpLFxuICBoZXVyaXN0aWNzOiBqc29uYignaGV1cmlzdGljcycpLiR0eXBlPFJlY29yZDxzdHJpbmcsIHVua25vd24+PigpLFxuICBsaXN0aW5nSWQ6IHV1aWQoJ2xpc3RpbmdfaWQnKS5yZWZlcmVuY2VzKCgpID0+IHBsdWdpbkxpc3RpbmcuaWQpLFxuICBkZWNpZGVkQnk6IHRleHQoJ2RlY2lkZWRfYnknKSxcbiAgcmVhc29uOiB0ZXh0KCdyZWFzb24nKSxcbiAgY2xpZW50SXBIYXNoOiB2YXJjaGFyKCdjbGllbnRfaXBfaGFzaCcsIHsgbGVuZ3RoOiA2NCB9KSxcbiAgZXhwaXJlc0F0OiB0aW1lc3RhbXAoJ2V4cGlyZXNfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5ub3ROdWxsKCksXG4gIGRlY2lkZWRBdDogdGltZXN0YW1wKCdkZWNpZGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG4gIGVtYWlsUHVyZ2VBZnRlcjogdGltZXN0YW1wKCdlbWFpbF9wdXJnZV9hZnRlcicsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxuICBjcmVhdGVkQXQ6IHRpbWVzdGFtcCgnY3JlYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLmRlZmF1bHROb3coKS5ub3ROdWxsKCksXG4gIHVwZGF0ZWRBdDogdGltZXN0YW1wKCd1cGRhdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcbn0sICh0YWJsZSkgPT4gKHtcbiAgc3RhdHVzQ3JlYXRlZElkeDogaW5kZXgoJ3BsdWdpbl9zdWJtaXNzaW9uX3N0YXR1c19jcmVhdGVkX2lkeCcpLm9uKHRhYmxlLnN0YXR1cywgdGFibGUuY3JlYXRlZEF0KSxcbiAgLy8gUGVyLWVtYWlsIC8gcGVyLUlQIGRhaWx5IHJhdGUgbGltaXRzLlxuICBlbWFpbENyZWF0ZWRJZHg6IGluZGV4KCdwbHVnaW5fc3VibWlzc2lvbl9lbWFpbF9jcmVhdGVkX2lkeCcpLm9uKHRhYmxlLmVtYWlsSGFzaCwgdGFibGUuY3JlYXRlZEF0KSxcbiAgaXBDcmVhdGVkSWR4OiBpbmRleCgncGx1Z2luX3N1Ym1pc3Npb25faXBfY3JlYXRlZF9pZHgnKS5vbih0YWJsZS5jbGllbnRJcEhhc2gsIHRhYmxlLmNyZWF0ZWRBdCksXG4gIHZlcmlmeVRva2VuVW5pcXVlOiB1bmlxdWVJbmRleCgncGx1Z2luX3N1Ym1pc3Npb25fdmVyaWZ5X3Rva2VuX3VuaXF1ZScpXG4gICAgLm9uKHRhYmxlLnZlcmlmeVRva2VuSGFzaClcbiAgICAud2hlcmUoc3FsYHZlcmlmeV90b2tlbl9oYXNoIElTIE5PVCBOVUxMYCksXG4gIHN0YXR1c1Rva2VuVW5pcXVlOiB1bmlxdWVJbmRleCgncGx1Z2luX3N1Ym1pc3Npb25fc3RhdHVzX3Rva2VuX3VuaXF1ZScpXG4gICAgLm9uKHRhYmxlLnN0YXR1c1Rva2VuSGFzaClcbiAgICAud2hlcmUoc3FsYHN0YXR1c190b2tlbl9oYXNoIElTIE5PVCBOVUxMYCksXG4gIHN0YXR1c0NoZWNrOiBjaGVjaygncGx1Z2luX3N1Ym1pc3Npb25zX3N0YXR1c19jaGVjaycsIHNxbGAke3RhYmxlLnN0YXR1c30gSU4gKCdwZW5kaW5nX3ZlcmlmaWNhdGlvbicsXG4gICAgJ3BlbmRpbmdfcmV2aWV3JywgJ3B1Ymxpc2hpbmcnLCAnZ2F0ZV9mYWlsZWQnLCAnYXBwcm92ZWQnLCAncmVqZWN0ZWQnLCAnZXhwaXJlZCcsICdjbGFpbWVkJylgKSxcbn0pKTtcblxuLyoqXG4gKiBaZXJvLXJlc3VsdCBkaXJlY3Rvcnkgc2VhcmNoZXMuIE5vIHVzZXIgZGF0YS4gYHF1ZXJ5YCBpcyBzdG9yZWQgbm9ybWFsaXplZDtcbiAqIHRoZSBtYWludGVuYW5jZSBzd2VlcCBmb2xkcyByZXBlYXRzIG9mIG9uZSAocXVlcnksIGNhdGVnb3J5KSBpbnRvIGEgc2luZ2xlXG4gKiByb3cgY291bnRpbmcgYGhpdHNgLCB3aXRoIGBjcmVhdGVkX2F0YCA9IHRoZSBsYXRlc3Qgb25lLCBhbmQgcHJ1bmVzIHJvd3Mgbm90XG4gKiBzZWVuIGZvciAzMCBkYXlzLlxuICpcbiAqIEB0YWJsZSBlY29zeXN0ZW1fc2VhcmNoX21pc3Nlc1xuICovXG5leHBvcnQgY29uc3QgZWNvc3lzdGVtU2VhcmNoTWlzcyA9IHBnVGFibGUoJ2Vjb3N5c3RlbV9zZWFyY2hfbWlzc2VzJywge1xuICBpZDogdXVpZCgnaWQnKS5wcmltYXJ5S2V5KCkuZGVmYXVsdFJhbmRvbSgpLFxuICBxdWVyeTogdmFyY2hhcigncXVlcnknLCB7IGxlbmd0aDogMjAwIH0pLm5vdE51bGwoKSxcbiAgY2F0ZWdvcnk6IHZhcmNoYXIoJ2NhdGVnb3J5JywgeyBsZW5ndGg6IDUwIH0pLFxuICBoaXRzOiBpbnRlZ2VyKCdoaXRzJykuZGVmYXVsdCgxKS5ub3ROdWxsKCksXG4gIGNyZWF0ZWRBdDogdGltZXN0YW1wKCdjcmVhdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcbn0sICh0YWJsZSkgPT4gKHtcbiAgY3JlYXRlZEF0SWR4OiBpbmRleCgnZWNvc3lzdGVtX3NlYXJjaF9taXNzX2NyZWF0ZWRfaWR4Jykub24odGFibGUuY3JlYXRlZEF0KSxcbiAgaGl0c0NoZWNrOiBjaGVjaygnZWNvc3lzdGVtX3NlYXJjaF9taXNzZXNfaGl0c19jaGVjaycsIHNxbGAke3RhYmxlLmhpdHN9ID49IDFgKSxcbn0pKTtcblxuLyoqXG4gKiBOb3RpZmljYXRpb24gZGlnZXN0L2JhdGNoaW5nIHF1ZXVlLiBSb3dzIHNoYXJpbmcgYSBgZGlnZXN0S2V5YCBhcmVcbiAqIGNvYWxlc2NlZCBpbnRvIG9uZSBlbWFpbCBhdCBgZGVsaXZlckFmdGVyYC5cbiAqXG4gKiBAdGFibGUgZWNvc3lzdGVtX25vdGlmaWNhdGlvbl9xdWV1ZVxuICovXG5leHBvcnQgY29uc3QgZWNvc3lzdGVtTm90aWZpY2F0aW9uUXVldWUgPSBwZ1RhYmxlKCdlY29zeXN0ZW1fbm90aWZpY2F0aW9uX3F1ZXVlJywge1xuICBpZDogdXVpZCgnaWQnKS5wcmltYXJ5S2V5KCkuZGVmYXVsdFJhbmRvbSgpLFxuICByZWNpcGllbnRVc2VySWQ6IHRleHQoJ3JlY2lwaWVudF91c2VyX2lkJyksXG4gIHJlY2lwaWVudE9yZ0lkOiB2YXJjaGFyKCdyZWNpcGllbnRfb3JnX2lkJywgeyBsZW5ndGg6IDI1NSB9KSxcbiAgZXZlbnQ6IHZhcmNoYXIoJ2V2ZW50JywgeyBsZW5ndGg6IDggfSkuJHR5cGU8RWNvc3lzdGVtTm90aWZpY2F0aW9uRXZlbnQ+KCkubm90TnVsbCgpLFxuICBkaWdlc3RLZXk6IHZhcmNoYXIoJ2RpZ2VzdF9rZXknLCB7IGxlbmd0aDogMjU1IH0pLFxuICBwYXlsb2FkOiBqc29uYigncGF5bG9hZCcpLiR0eXBlPFJlY29yZDxzdHJpbmcsIHVua25vd24+PigpLmRlZmF1bHQoe30pLm5vdE51bGwoKSxcbiAgZGVsaXZlckFmdGVyOiB0aW1lc3RhbXAoJ2RlbGl2ZXJfYWZ0ZXInLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5kZWZhdWx0Tm93KCkubm90TnVsbCgpLFxuICBkZWxpdmVyZWRBdDogdGltZXN0YW1wKCdkZWxpdmVyZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgY3JlYXRlZEF0OiB0aW1lc3RhbXAoJ2NyZWF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5kZWZhdWx0Tm93KCkubm90TnVsbCgpLFxufSwgKHRhYmxlKSA9PiAoe1xuICAvLyBUaGUgZGlzcGF0Y2hlcidzIHNjYW46IHVuZGVsaXZlcmVkIHJvd3MgdGhhdCBhcmUgZHVlLlxuICBkdWVJZHg6IGluZGV4KCdlY29zeXN0ZW1fbm90aWZpY2F0aW9uX2R1ZV9pZHgnKS5vbih0YWJsZS5kZWxpdmVyQWZ0ZXIpLndoZXJlKHNxbGBkZWxpdmVyZWRfYXQgSVMgTlVMTGApLFxuICBkaWdlc3RJZHg6IGluZGV4KCdlY29zeXN0ZW1fbm90aWZpY2F0aW9uX2RpZ2VzdF9pZHgnKS5vbih0YWJsZS5kaWdlc3RLZXkpLndoZXJlKHNxbGBkZWxpdmVyZWRfYXQgSVMgTlVMTGApLFxuICBldmVudENoZWNrOiBjaGVjaygnZWNvc3lzdGVtX25vdGlmaWNhdGlvbl9xdWV1ZV9ldmVudF9jaGVjaycsIHNxbGAke3RhYmxlLmV2ZW50fSB+ICdeTihbMS05XXwxWzAtOV18MlswLTldKSQnYCksXG59KSk7XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gT3JnLXNjb3BlZCB0YWJsZXMgKG9yZ19pZCArIHJsc19vcmdfKiBwb2xpY2llcyArIEZPUkNFOyBpbiB0aGUgb3JnIGNhc2NhZGUpXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqXG4gKiBTdGVwIG1hbmlmZXN0OiB3aGljaCBwbHVnaW4gZWFjaCAocGlwZWxpbmUsIHN0YWdlLCBhY3Rpb24pIHJ1bnMsXG4gKiByZWNvcmRlZCBhdCBzeW50aC4gRXZlbnQgaW5nZXN0IGpvaW5zIG9uIGl0IHRvIHN0YW1wXG4gKiBgcGlwZWxpbmVfZXZlbnRzLnBsdWdpbl8qYC4gYHBsdWdpblB1Ymxpc2hlcmAgaXMgTlVMTCBmb3IgYW4gb3duLW9yZyBwbHVnaW4uXG4gKlxuICogQHRhYmxlIHBpcGVsaW5lX3N0ZXBfbWFuaWZlc3RzXG4gKi9cbmV4cG9ydCBjb25zdCBwaXBlbGluZVN0ZXBNYW5pZmVzdCA9IHBnVGFibGUoJ3BpcGVsaW5lX3N0ZXBfbWFuaWZlc3RzJywge1xuICBwaXBlbGluZUlkOiB1dWlkKCdwaXBlbGluZV9pZCcpLm5vdE51bGwoKSxcbiAgb3JnSWQ6IHZhcmNoYXIoJ29yZ19pZCcsIHsgbGVuZ3RoOiAyNTUgfSkubm90TnVsbCgpLFxuICBzdGFnZU5hbWU6IHZhcmNoYXIoJ3N0YWdlX25hbWUnLCB7IGxlbmd0aDogMjU1IH0pLm5vdE51bGwoKSxcbiAgYWN0aW9uTmFtZTogdmFyY2hhcignYWN0aW9uX25hbWUnLCB7IGxlbmd0aDogMjU1IH0pLm5vdE51bGwoKSxcbiAgcGx1Z2luUHVibGlzaGVyOiB2YXJjaGFyKCdwbHVnaW5fcHVibGlzaGVyJywgeyBsZW5ndGg6IDM5IH0pLFxuICAvKiogVGhlIGxpc3RpbmcgcHVibGlzaGVyJ3MgaWQgKE5VTEwgZm9yIGFuIG93bi1vcmcgcGx1Z2luKSDigJQgd2hhdCBjcm9zcy1vcmcgc3RhdHMgam9pbiBvbi4gKi9cbiAgcGx1Z2luUHVibGlzaGVySWQ6IHV1aWQoJ3BsdWdpbl9wdWJsaXNoZXJfaWQnKSxcbiAgcGx1Z2luTmFtZTogdmFyY2hhcigncGx1Z2luX25hbWUnLCB7IGxlbmd0aDogMjU1IH0pLm5vdE51bGwoKSxcbiAgcGx1Z2luVmVyc2lvbjogdmFyY2hhcigncGx1Z2luX3ZlcnNpb24nLCB7IGxlbmd0aDogNTAgfSkubm90TnVsbCgpLFxuICBpbWFnZURpZ2VzdDogdmFyY2hhcignaW1hZ2VfZGlnZXN0JywgeyBsZW5ndGg6IDcxIH0pLFxuICBpbWFnZVJlcG9zaXRvcnk6IHZhcmNoYXIoJ2ltYWdlX3JlcG9zaXRvcnknLCB7IGxlbmd0aDogNTEyIH0pLFxuICAvKiogVGhlIHN0ZXAncyBrZXkgYXMgc3ludGggc2VuZHMgaXQgaW4gbG9va3VwIGBjb250ZXh0YCAoam9pbnMgbG9va3VwcyAvIHJ1bnRpbWUgY2hlY2tzIHRvIHRoZSBkZXBsb3llZCByb3cpLiAqL1xuICBzdGVwS2V5OiB2YXJjaGFyKCdzdGVwX2tleScsIHsgbGVuZ3RoOiAyNTUgfSksXG4gIHVwZGF0ZWRBdDogdGltZXN0YW1wKCd1cGRhdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcbn0sICh0YWJsZSkgPT4gKHtcbiAgcGs6IHByaW1hcnlLZXkoeyBjb2x1bW5zOiBbdGFibGUucGlwZWxpbmVJZCwgdGFibGUuc3RhZ2VOYW1lLCB0YWJsZS5hY3Rpb25OYW1lXSB9KSxcbiAgb3JnSWR4OiBpbmRleCgncGlwZWxpbmVfc3RlcF9tYW5pZmVzdF9vcmdfaWR4Jykub24odGFibGUub3JnSWQpLFxuICAvLyBwdWJsaWMvKiBHQyBndWFyZDogXCJkb2VzIGFueSBtYW5pZmVzdCBzdGlsbCByZWZlcmVuY2UgdGhpcyBkaWdlc3Q/XCJcbiAgZGlnZXN0SWR4OiBpbmRleCgncGlwZWxpbmVfc3RlcF9tYW5pZmVzdF9kaWdlc3RfaWR4Jykub24odGFibGUuaW1hZ2VEaWdlc3QpLFxuICAvLyBUaGUgb3V0ZGF0ZWQtcGx1Z2luIGFuZCB2dWxuZXJhYmlsaXR5IHJlcG9ydCBzZWN0aW9ucyBqb2luIG1hbmlmZXN0cyBvblxuICAvLyAobmFtZSwgdmVyc2lvbiwgZGlnZXN0KSBhY3Jvc3MgZXZlcnkgcGlwZWxpbmUgaW4gYW4gb3JnOyB3aXRob3V0IHRoaXMgdGhleVxuICAvLyBmdWxsLXNjYW4gdGhlIHRhYmxlLCB3aGljaCBpcyB0aGUgb25lIGpvaW4gaW4gdGhvc2Ugc2VjdGlvbnMgdGhhdCBncm93cyB3aXRoXG4gIC8vIHRoZSB3aG9sZSBpbnN0YW5jZSByYXRoZXIgdGhhbiB3aXRoIHRoZSBvcmcuXG4gIGxvb2t1cElkeDogaW5kZXgoJ3BpcGVsaW5lX3N0ZXBfbWFuaWZlc3RfbG9va3VwX2lkeCcpXG4gICAgLm9uKHRhYmxlLnBsdWdpbk5hbWUsIHRhYmxlLnBsdWdpblZlcnNpb24sIHRhYmxlLmltYWdlRGlnZXN0KSxcbiAgcGx1Z2luSWR4OiBpbmRleCgncGlwZWxpbmVfc3RlcF9tYW5pZmVzdF9wbHVnaW5faWR4Jykub24odGFibGUucGx1Z2luUHVibGlzaGVyLCB0YWJsZS5wbHVnaW5OYW1lKSxcbiAgcGx1Z2luUHVibGlzaGVySWRJZHg6IGluZGV4KCdwaXBlbGluZV9zdGVwX21hbmlmZXN0X3B1Ymxpc2hlcl9pZF9pZHgnKS5vbih0YWJsZS5wbHVnaW5QdWJsaXNoZXJJZCwgdGFibGUucGx1Z2luTmFtZSksXG59KSk7XG5cbi8qKlxuICogQW4gb3JnJ3MgaW5zdGFsbCBvZiBhIGxpc3RpbmcuIE9mZmljaWFsIGxpc3RpbmdzIGFyZSBpbnN0YWxsZWRcbiAqIGltcGxpY2l0bHkgKHZpcnR1YWwg4oCUIG5vIHJvdyk7IGEgcm93IGlzIGFuIGV4cGxpY2l0IGluc3RhbGwgb3Igb3ZlcnJpZGUuXG4gKlxuICogQHRhYmxlIHBsdWdpbl9pbnN0YWxsc1xuICovXG5leHBvcnQgY29uc3QgcGx1Z2luSW5zdGFsbCA9IHBnVGFibGUoJ3BsdWdpbl9pbnN0YWxscycsIHtcbiAgaWQ6IHV1aWQoJ2lkJykucHJpbWFyeUtleSgpLmRlZmF1bHRSYW5kb20oKSxcbiAgb3JnSWQ6IHZhcmNoYXIoJ29yZ19pZCcsIHsgbGVuZ3RoOiAyNTUgfSkubm90TnVsbCgpLFxuICBsaXN0aW5nSWQ6IHV1aWQoJ2xpc3RpbmdfaWQnKS5ub3ROdWxsKCkucmVmZXJlbmNlcygoKSA9PiBwbHVnaW5MaXN0aW5nLmlkLCB7IG9uRGVsZXRlOiAnY2FzY2FkZScgfSksXG4gIHZlcnNpb25Qb2xpY3k6IHZhcmNoYXIoJ3ZlcnNpb25fcG9saWN5JywgeyBsZW5ndGg6IDEwIH0pLiR0eXBlPEluc3RhbGxWZXJzaW9uUG9saWN5PigpLmRlZmF1bHQoJ21pbm9yJykubm90TnVsbCgpLFxuICBwaW5uZWRWZXJzaW9uOiB2YXJjaGFyKCdwaW5uZWRfdmVyc2lvbicsIHsgbGVuZ3RoOiA1MCB9KSxcbiAgcmVzb2x2ZWRWZXJzaW9uOiB2YXJjaGFyKCdyZXNvbHZlZF92ZXJzaW9uJywgeyBsZW5ndGg6IDUwIH0pLFxuICBzdGF0dXM6IHZhcmNoYXIoJ3N0YXR1cycsIHsgbGVuZ3RoOiAyMCB9KS4kdHlwZTxJbnN0YWxsU3RhdHVzPigpLmRlZmF1bHQoJ2FjdGl2ZScpLm5vdE51bGwoKSxcbiAgaW5zdGFsbGVkQnk6IHRleHQoJ2luc3RhbGxlZF9ieScpLm5vdE51bGwoKSxcbiAgYXBwcm92ZWRCeTogdGV4dCgnYXBwcm92ZWRfYnknKSxcbiAgZGVjaWRlZEF0OiB0aW1lc3RhbXAoJ2RlY2lkZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgLyoqIEEgcGVuZGluZywgYXBwcm92YWwtZ2F0ZWQgY2hhbmdlIG9mIHRoaXMgaW5zdGFsbCAodXBncmFkZSAvIHBvbGljeSksIG9yIG51bGwuICovXG4gIHBlbmRpbmdDaGFuZ2U6IGpzb25iKCdwZW5kaW5nX2NoYW5nZScpLiR0eXBlPEluc3RhbGxDaGFuZ2VSZXF1ZXN0PigpLFxuICBjcmVhdGVkQXQ6IHRpbWVzdGFtcCgnY3JlYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLmRlZmF1bHROb3coKS5ub3ROdWxsKCksXG4gIHVwZGF0ZWRBdDogdGltZXN0YW1wKCd1cGRhdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcbn0sICh0YWJsZSkgPT4gKHtcbiAgb3JnTGlzdGluZ1VuaXF1ZTogdW5pcXVlSW5kZXgoJ3BsdWdpbl9pbnN0YWxsX29yZ19saXN0aW5nX3VuaXF1ZScpLm9uKHRhYmxlLm9yZ0lkLCB0YWJsZS5saXN0aW5nSWQpLFxuICAvLyBcIkluc3RhbGxpbmcgb3Jnc1wiIGZhbi1vdXQgZm9yIE44L04xMy9OMTQvTjIxL04yNi5cbiAgbGlzdGluZ1N0YXR1c0lkeDogaW5kZXgoJ3BsdWdpbl9pbnN0YWxsX2xpc3Rpbmdfc3RhdHVzX2lkeCcpLm9uKHRhYmxlLmxpc3RpbmdJZCwgdGFibGUuc3RhdHVzKSxcbiAgdmVyc2lvblBvbGljeUNoZWNrOiBjaGVjaygncGx1Z2luX2luc3RhbGxzX3ZlcnNpb25fcG9saWN5X2NoZWNrJyxcbiAgICBzcWxgJHt0YWJsZS52ZXJzaW9uUG9saWN5fSBJTiAoJ3Bpbm5lZCcsICdwYXRjaCcsICdtaW5vcicsICdsYXRlc3QnKWApLFxuICBzdGF0dXNDaGVjazogY2hlY2soJ3BsdWdpbl9pbnN0YWxsc19zdGF0dXNfY2hlY2snLCBzcWxgJHt0YWJsZS5zdGF0dXN9IElOICgnYWN0aXZlJywgJ3BlbmRpbmdfYXBwcm92YWwnLCAnZGVuaWVkJylgKSxcbiAgcGlubmVkQ2hlY2s6IGNoZWNrKCdwbHVnaW5faW5zdGFsbF9waW5uZWRfY2hlY2snLFxuICAgIHNxbGAke3RhYmxlLnZlcnNpb25Qb2xpY3l9IDw+ICdwaW5uZWQnIE9SICR7dGFibGUucGlubmVkVmVyc2lvbn0gSVMgTk9UIE5VTExgKSxcbn0pKTtcblxuLyoqXG4gKiBPcmcgY29uc3VtcHRpb24gcG9saWN5LiBPbmUgcm93IHBlciBvcmc7IGFic2VudCA9IHRoZSBjb2x1bW4gZGVmYXVsdHMuXG4gKiBOb25lIG9mIHRoZXNlIHNhZmV0eSBjb250cm9scyBpcyBwbGFuLWdhdGVkLlxuICpcbiAqIEB0YWJsZSBwbHVnaW5faW5zdGFsbF9wb2xpY2llc1xuICovXG5leHBvcnQgY29uc3QgcGx1Z2luSW5zdGFsbFBvbGljeSA9IHBnVGFibGUoJ3BsdWdpbl9pbnN0YWxsX3BvbGljaWVzJywge1xuICBvcmdJZDogdmFyY2hhcignb3JnX2lkJywgeyBsZW5ndGg6IDI1NSB9KS5wcmltYXJ5S2V5KCksXG4gIGFsbG93ZWRUaWVyczogdGV4dCgnYWxsb3dlZF90aWVycycpLmFycmF5KCkuJHR5cGU8UHVibGlzaGVyVGllcltdPigpXG4gICAgLmRlZmF1bHQoWydvZmZpY2lhbCcsICd2ZXJpZmllZCddKS5ub3ROdWxsKCksXG4gIHJlcXVpcmVBcHByb3ZhbFRpZXJzOiB0ZXh0KCdyZXF1aXJlX2FwcHJvdmFsX3RpZXJzJykuYXJyYXkoKS4kdHlwZTxQdWJsaXNoZXJUaWVyW10+KClcbiAgICAuZGVmYXVsdChbJ2NvbW11bml0eScsICd1bnZlcmlmaWVkJ10pLm5vdE51bGwoKSxcbiAgc2VjcmV0c0FsbG93ZWRUaWVyczogdGV4dCgnc2VjcmV0c19hbGxvd2VkX3RpZXJzJykuYXJyYXkoKS4kdHlwZTxQdWJsaXNoZXJUaWVyW10+KClcbiAgICAuZGVmYXVsdChbJ29mZmljaWFsJywgJ3ZlcmlmaWVkJ10pLm5vdE51bGwoKSxcbiAgYmxvY2tPbkFkdmlzb3J5OiB2YXJjaGFyKCdibG9ja19vbl9hZHZpc29yeScsIHsgbGVuZ3RoOiAxMCB9KS4kdHlwZTxCbG9ja09uQWR2aXNvcnk+KCkuZGVmYXVsdCgnY3JpdGljYWwnKS5ub3ROdWxsKCksXG4gIG9mZmljaWFsSW5zdGFsbHM6IHZhcmNoYXIoJ29mZmljaWFsX2luc3RhbGxzJywgeyBsZW5ndGg6IDEwIH0pLiR0eXBlPE9mZmljaWFsSW5zdGFsbHM+KCkuZGVmYXVsdCgnaW1wbGljaXQnKS5ub3ROdWxsKCksXG4gIC8vIFdoYXQgdG8gZG8gd2hlbiBhIG5hbWUgb3ZlcnJpZGVzIGEgbGlzdGluZywgb3IgdGhlIHBhcmVudCBvcmcncyBwbHVnaW4uXG4gIC8vIERlZmF1bHRzIHRvIGB3YXJuYDogc2hhZG93aW5nIGNhbiBiZSBkZWxpYmVyYXRlLCBzbyB0aGUgZGVmYXVsdCBzdXJmYWNlcyBpdFxuICAvLyB3aXRob3V0IGJyZWFraW5nIGEgZGVwbG95bWVudCB0aGF0IGFscmVhZHkgcmVsaWVzIG9uIG9uZS5cbiAgc2hhZG93aW5nOiB2YXJjaGFyKCdzaGFkb3dpbmcnLCB7IGxlbmd0aDogMTAgfSkuJHR5cGU8U2hhZG93aW5nTW9kZT4oKS5kZWZhdWx0KCd3YXJuJykubm90TnVsbCgpLFxuICBibG9ja2VkTGlzdGluZ3M6IGpzb25iKCdibG9ja2VkX2xpc3RpbmdzJykuJHR5cGU8QmxvY2tlZExpc3RpbmdSZWZbXT4oKS5kZWZhdWx0KFtdKS5ub3ROdWxsKCksXG4gIC8vIEZpeGFibGUgSGlnaCBmaW5kaW5ncyBhYm92ZSB0aGlzIG1hbnkgcmFpc2UgYSB2ZXJzaW9uJ3Mgd2FybmluZyBmcm9tIGBpbmZvYFxuICAvLyB0byBgd2FybmluZ2AuIFZ1bG5lcmFiaWxpdHkgc3RhdGUgbmV2ZXIgcmVmdXNlcyBhIHBpcGVsaW5lIOKAlCB0aGlzIG9ubHkgc2V0c1xuICAvLyBob3cgbG91ZCBpdCBpcy4gTlVMTCA9IG5ldmVyIGxvdWRlciB0aGFuIGluZm87IGEgdGVhbSB0YWtlcyB0aGUgbG93ZXIgb2YgaXRzXG4gIC8vIG93biBhbmQgaXRzIHJvb3Qncy5cbiAgd2FybkZpeGFibGVIaWdoOiBpbnRlZ2VyKCd3YXJuX2ZpeGFibGVfaGlnaCcpLmRlZmF1bHQoMCksXG4gIHVwZGF0ZWRCeTogdGV4dCgndXBkYXRlZF9ieScpLFxuICB1cGRhdGVkQXQ6IHRpbWVzdGFtcCgndXBkYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLmRlZmF1bHROb3coKS5ub3ROdWxsKCksXG59LCAodGFibGUpID0+ICh7XG4gIGJsb2NrT25BZHZpc29yeUNoZWNrOiBjaGVjaygncGx1Z2luX2luc3RhbGxfcG9saWNpZXNfYmxvY2tfb25fYWR2aXNvcnlfY2hlY2snLFxuICAgIHNxbGAke3RhYmxlLmJsb2NrT25BZHZpc29yeX0gSU4gKCdjcml0aWNhbCcsICdoaWdoJywgJ25ldmVyJylgKSxcbiAgb2ZmaWNpYWxJbnN0YWxsc0NoZWNrOiBjaGVjaygncGx1Z2luX2luc3RhbGxfcG9saWNpZXNfb2ZmaWNpYWxfaW5zdGFsbHNfY2hlY2snLFxuICAgIHNxbGAke3RhYmxlLm9mZmljaWFsSW5zdGFsbHN9IElOICgnaW1wbGljaXQnLCAnZXhwbGljaXQnKWApLFxuICB0aWVyc0NoZWNrOiBjaGVjaygncGx1Z2luX2luc3RhbGxfcG9saWN5X3RpZXJzX2NoZWNrJywgc3FsYFxuICAgICR7dGFibGUuYWxsb3dlZFRpZXJzfSA8QCBBUlJBWVsnb2ZmaWNpYWwnLCAndmVyaWZpZWQnLCAnY29tbXVuaXR5JywgJ3VudmVyaWZpZWQnXTo6VEVYVFtdXG4gICAgQU5EICR7dGFibGUucmVxdWlyZUFwcHJvdmFsVGllcnN9IDxAIEFSUkFZWydvZmZpY2lhbCcsICd2ZXJpZmllZCcsICdjb21tdW5pdHknLCAndW52ZXJpZmllZCddOjpURVhUW11cbiAgICBBTkQgJHt0YWJsZS5zZWNyZXRzQWxsb3dlZFRpZXJzfSA8QCBBUlJBWVsnb2ZmaWNpYWwnLCAndmVyaWZpZWQnLCAnY29tbXVuaXR5JywgJ3VudmVyaWZpZWQnXTo6VEVYVFtdYCksXG59KSk7XG5cbi8qKlxuICogUGVyLW9yZyBwbHVnaW4gc2VjdXJpdHkgbm90aWZpY2F0aW9uIHNldHRpbmdzIChkb2NzL3BsdWdpbi1wdWJsaXNoaW5nLm1kXG4gKiBcIlNjYW4gZ2F0ZXNcIik6IHdobyBoZWFycyBhYm91dCBhIGJsb2NrZWQgYnVpbGQgKE4zMCkgYW5kIGEgcmVzY2FuIGZpbmRpbmdcbiAqIChOMzEpLCBhbmQgd2hlcmUgZWxzZSB0aGV5IGdvLiBPbmUgcm93IHBlciBvcmc7IGFic2VudCA9IHRoZSBjb2x1bW5cbiAqIGRlZmF1bHRzLiBUaGUgd2ViaG9vayBzZWNyZXQgYW5kIHRoZSBleHRlcm5hbCBhZGRyZXNzIGFyZSBzdG9yZWQgRU5DUllQVEVEXG4gKiAoYXBpLWNvcmUgc2VjcmV0LWVuY3J5cHRpb24sIHRoZSBvcmcncyBrZXkpIGFuZCBuZXZlciByZXR1cm5lZDsgdGhlIGFkZHJlc3NcbiAqIGlzIHVzZWQgb25seSBvbmNlIGNvbmZpcm1lZCB0aHJvdWdoIGl0cyBlbWFpbGVkIHNpbmdsZS11c2UgbGlua1xuICogKGBleHRlcm5hbF92ZXJpZnlfdG9rZW5faGFzaGAsIHNoYTI1NiBvZiB0aGUgdG9rZW4pLlxuICpcbiAqIEB0YWJsZSBwbHVnaW5fc2VjdXJpdHlfbm90aWZpY2F0aW9uX3ByZWZzXG4gKi9cbmV4cG9ydCBjb25zdCBwbHVnaW5TZWN1cml0eU5vdGlmaWNhdGlvblByZWYgPSBwZ1RhYmxlKCdwbHVnaW5fc2VjdXJpdHlfbm90aWZpY2F0aW9uX3ByZWZzJywge1xuICBvcmdJZDogdmFyY2hhcignb3JnX2lkJywgeyBsZW5ndGg6IDI1NSB9KS5wcmltYXJ5S2V5KCksXG4gIHJlY2lwaWVudE1vZGU6IHZhcmNoYXIoJ3JlY2lwaWVudF9tb2RlJywgeyBsZW5ndGg6IDEwIH0pLiR0eXBlPFBsdWdpblNlY3VyaXR5UmVjaXBpZW50TW9kZT4oKS5kZWZhdWx0KCd3cml0ZXJzJykubm90TnVsbCgpLFxuICB0YXJnZXRVc2VyczogdGV4dCgndGFyZ2V0X3VzZXJzJykuYXJyYXkoKS4kdHlwZTxzdHJpbmdbXT4oKS5kZWZhdWx0KFtdKS5ub3ROdWxsKCksXG4gIG5vdGlmeVJlc2NhbjogYm9vbGVhbignbm90aWZ5X3Jlc2NhbicpLmRlZmF1bHQodHJ1ZSkubm90TnVsbCgpLFxuICAvLyBQaXBlbGluZS1vd25lciBub3RpY2VzOiB0aGUgb3JnJ3MgcGlwZWxpbmUgd3JpdGVycyBoZWFyIHdoZW4gYSB2ZXJzaW9uIHRoZWlyXG4gIC8vIHBpcGVsaW5lcyBydW4gZ2V0cyBmaW5kaW5ncyAoTjMxKSwgYSBsb29rdXAgLyBydW50aW1lIGNoZWNrIGJsb2NrcyBhXG4gIC8vIHBpcGVsaW5lIChOMzIpIG9yIGEgcGlwZWxpbmUncyByaXNrIGFjY2VwdGFuY2UgbGFwc2VzIChOMzMpLiBUaGUgb3JnIG9wdC1vdXQuXG4gIG5vdGlmeVBpcGVsaW5lT3duZXJzOiBib29sZWFuKCdub3RpZnlfcGlwZWxpbmVfb3duZXJzJykuZGVmYXVsdCh0cnVlKS5ub3ROdWxsKCksXG4gIGRpZ2VzdE1vZGU6IHZhcmNoYXIoJ2RpZ2VzdF9tb2RlJywgeyBsZW5ndGg6IDEwIH0pLiR0eXBlPFBsdWdpblNlY3VyaXR5RGlnZXN0TW9kZT4oKS5kZWZhdWx0KCdpbW1lZGlhdGUnKS5ub3ROdWxsKCksXG4gIHdlYmhvb2tVcmw6IHZhcmNoYXIoJ3dlYmhvb2tfdXJsJywgeyBsZW5ndGg6IDIwNDggfSksXG4gIHdlYmhvb2tTZWNyZXQ6IHRleHQoJ3dlYmhvb2tfc2VjcmV0JyksXG4gIGV4dGVybmFsRW1haWxFbmM6IHRleHQoJ2V4dGVybmFsX2VtYWlsX2VuYycpLFxuICBleHRlcm5hbEVtYWlsSGFzaDogdmFyY2hhcignZXh0ZXJuYWxfZW1haWxfaGFzaCcsIHsgbGVuZ3RoOiA2NCB9KSxcbiAgZXh0ZXJuYWxFbWFpbFZlcmlmaWVkQXQ6IHRpbWVzdGFtcCgnZXh0ZXJuYWxfZW1haWxfdmVyaWZpZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgZXh0ZXJuYWxWZXJpZnlUb2tlbkhhc2g6IHZhcmNoYXIoJ2V4dGVybmFsX3ZlcmlmeV90b2tlbl9oYXNoJywgeyBsZW5ndGg6IDY0IH0pLFxuICBleHRlcm5hbFZlcmlmeUV4cGlyZXNBdDogdGltZXN0YW1wKCdleHRlcm5hbF92ZXJpZnlfZXhwaXJlc19hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxuICB1cGRhdGVkQnk6IHRleHQoJ3VwZGF0ZWRfYnknKSxcbiAgY3JlYXRlZEF0OiB0aW1lc3RhbXAoJ2NyZWF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5kZWZhdWx0Tm93KCkubm90TnVsbCgpLFxuICB1cGRhdGVkQXQ6IHRpbWVzdGFtcCgndXBkYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLmRlZmF1bHROb3coKS5ub3ROdWxsKCksXG59LCAodGFibGUpID0+ICh7XG4gIHZlcmlmeVRva2VuSWR4OiB1bmlxdWVJbmRleCgncGx1Z2luX3NlY3VyaXR5X25vdGlmaWNhdGlvbl9wcmVmc192ZXJpZnlfdG9rZW5faWR4Jykub24odGFibGUuZXh0ZXJuYWxWZXJpZnlUb2tlbkhhc2gpLFxuICByZWNpcGllbnRNb2RlQ2hlY2s6IGNoZWNrKCdwbHVnaW5fc2VjdXJpdHlfbm90aWZpY2F0aW9uX3ByZWZzX3JlY2lwaWVudF9tb2RlX2NoZWNrJyxcbiAgICBzcWxgJHt0YWJsZS5yZWNpcGllbnRNb2RlfSBJTiAoJ3dyaXRlcnMnLCAndXNlcnMnKWApLFxuICBkaWdlc3RNb2RlQ2hlY2s6IGNoZWNrKCdwbHVnaW5fc2VjdXJpdHlfbm90aWZpY2F0aW9uX3ByZWZzX2RpZ2VzdF9tb2RlX2NoZWNrJyxcbiAgICBzcWxgJHt0YWJsZS5kaWdlc3RNb2RlfSBJTiAoJ2ltbWVkaWF0ZScsICdkYWlseScsICd3ZWVrbHknKWApLFxufSkpO1xuXG4vKipcbiAqIE4yMSBpZGVtcG90ZW5jeTogb25lIGRlbGl2ZXJ5IHBlciAoYWR2aXNvcnksIGluc3RhbGxpbmcgb3JnKSwgc28gYSByZXRyaWVkXG4gKiBmYW4tb3V0IG5ldmVyIG5vdGlmaWVzIGFuIG9yZyB0d2ljZS5cbiAqXG4gKiBAdGFibGUgcGx1Z2luX2Fkdmlzb3J5X2RlbGl2ZXJpZXNcbiAqL1xuZXhwb3J0IGNvbnN0IHBsdWdpbkFkdmlzb3J5RGVsaXZlcnkgPSBwZ1RhYmxlKCdwbHVnaW5fYWR2aXNvcnlfZGVsaXZlcmllcycsIHtcbiAgYWR2aXNvcnlJZDogdXVpZCgnYWR2aXNvcnlfaWQnKS5ub3ROdWxsKCkucmVmZXJlbmNlcygoKSA9PiBwbHVnaW5BZHZpc29yeS5pZCwgeyBvbkRlbGV0ZTogJ2Nhc2NhZGUnIH0pLFxuICBvcmdJZDogdmFyY2hhcignb3JnX2lkJywgeyBsZW5ndGg6IDI1NSB9KS5ub3ROdWxsKCksXG4gIGRlbGl2ZXJlZEF0OiB0aW1lc3RhbXAoJ2RlbGl2ZXJlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLmRlZmF1bHROb3coKS5ub3ROdWxsKCksXG59LCAodGFibGUpID0+ICh7XG4gIHBrOiBwcmltYXJ5S2V5KHsgY29sdW1uczogW3RhYmxlLmFkdmlzb3J5SWQsIHRhYmxlLm9yZ0lkXSB9KSxcbiAgb3JnSWR4OiBpbmRleCgncGx1Z2luX2Fkdmlzb3J5X2RlbGl2ZXJ5X29yZ19pZHgnKS5vbih0YWJsZS5vcmdJZCksXG59KSk7XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gUHVibGljIHJlYWQgcGF0aCDigJQgdmlld3MgY3JlYXRlZCBieSBwb3N0Z3Jlcy1pbml0LnNxbFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKlxuICogYHB1YmxpY19saXN0aW5nc2A6IGxpc3RlZCBhbmQgdW5tYWludGFpbmVkIGxpc3RpbmdzIG9mIG5vbi1zdXNwZW5kZWRcbiAqIHB1Ymxpc2hlcnMsIHB1YmxpYyBjb2x1bW5zIG9ubHksIGpvaW5lZCB3aXRoIHRoZSBwdWJsaXNoZXIncyBoYW5kbGUvbmFtZS90aWVyIGFuZCB0aGUgc3RhdHMuXG4gKiBSZWFkIGFzIGBlY29zeXN0ZW1fcHVibGljX3JlYWRlcmAgKHNlZSBwb3N0Z3Jlcy1pbml0LnNxbCkuXG4gKi9cbmV4cG9ydCBjb25zdCBwdWJsaWNMaXN0aW5ncyA9IHBnVmlldygncHVibGljX2xpc3RpbmdzJywge1xuICBpZDogdXVpZCgnaWQnKS5ub3ROdWxsKCksXG4gIHB1Ymxpc2hlckhhbmRsZTogdmFyY2hhcigncHVibGlzaGVyX2hhbmRsZScsIHsgbGVuZ3RoOiAzOSB9KS5ub3ROdWxsKCksXG4gIHB1Ymxpc2hlckRpc3BsYXlOYW1lOiB2YXJjaGFyKCdwdWJsaXNoZXJfZGlzcGxheV9uYW1lJywgeyBsZW5ndGg6IDI1NSB9KS5ub3ROdWxsKCksXG4gIHB1Ymxpc2hlclRpZXI6IHZhcmNoYXIoJ3B1Ymxpc2hlcl90aWVyJywgeyBsZW5ndGg6IDIwIH0pLiR0eXBlPFB1Ymxpc2hlclRpZXI+KCkubm90TnVsbCgpLFxuICBwdWJsaXNoZXJWZXJpZmllZEF0OiB0aW1lc3RhbXAoJ3B1Ymxpc2hlcl92ZXJpZmllZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxuICBuYW1lOiB2YXJjaGFyKCduYW1lJywgeyBsZW5ndGg6IDI1NSB9KS5ub3ROdWxsKCksXG4gIGNhdGVnb3J5OiB2YXJjaGFyKCdjYXRlZ29yeScsIHsgbGVuZ3RoOiA1MCB9KS5ub3ROdWxsKCksXG4gIHN1bW1hcnk6IHZhcmNoYXIoJ3N1bW1hcnknLCB7IGxlbmd0aDogMzAwIH0pLFxuICBkZXNjcmlwdGlvbjogdGV4dCgnZGVzY3JpcHRpb24nKSxcbiAgcmVhZG1lSHRtbDogdGV4dCgncmVhZG1lX2h0bWwnKSxcbiAgbGljZW5zZTogdmFyY2hhcignbGljZW5zZScsIHsgbGVuZ3RoOiA2NCB9KSxcbiAgaG9tZXBhZ2VVcmw6IHZhcmNoYXIoJ2hvbWVwYWdlX3VybCcsIHsgbGVuZ3RoOiAyMDQ4IH0pLFxuICBzb3VyY2VVcmw6IHZhcmNoYXIoJ3NvdXJjZV91cmwnLCB7IGxlbmd0aDogMjA0OCB9KSxcbiAgaWNvbjoganNvbmIoJ2ljb24nKS4kdHlwZTxQbHVnaW5JY29uPigpLFxuICB1cGxvYWRlZEljb246IGpzb25iKCd1cGxvYWRlZF9pY29uJykuJHR5cGU8UGx1Z2luVXBsb2FkZWRJY29uPigpLFxuICBrZXl3b3JkczoganNvbmIoJ2tleXdvcmRzJykuJHR5cGU8c3RyaW5nW10+KCkubm90TnVsbCgpLFxuICBmZWF0dXJlZDogYm9vbGVhbignZmVhdHVyZWQnKS5ub3ROdWxsKCksXG4gIGxhdGVzdFZlcnNpb246IHZhcmNoYXIoJ2xhdGVzdF92ZXJzaW9uJywgeyBsZW5ndGg6IDUwIH0pLFxuICBwYXVzZWRBdDogdGltZXN0YW1wKCdwYXVzZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgc2VhcmNoVmVjdG9yOiB0c3ZlY3Rvcignc2VhcmNoX3ZlY3RvcicpLFxuICBjcmVhdGVkQXQ6IHRpbWVzdGFtcCgnY3JlYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLm5vdE51bGwoKSxcbiAgdXBkYXRlZEF0OiB0aW1lc3RhbXAoJ3VwZGF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5ub3ROdWxsKCksXG4gIHJhdGluZ0JheWVzOiBkb3VibGVQcmVjaXNpb24oJ3JhdGluZ19iYXllcycpLFxuICByYXRpbmdDb3VudDogaW50ZWdlcigncmF0aW5nX2NvdW50Jykubm90TnVsbCgpLFxuICByYXRpbmdEaXN0OiBqc29uYigncmF0aW5nX2Rpc3QnKS4kdHlwZTxSZWNvcmQ8c3RyaW5nLCBudW1iZXI+PigpLFxuICByZWNlbnRSYXRpbmc6IGRvdWJsZVByZWNpc2lvbigncmVjZW50X3JhdGluZycpLFxuICBpbnN0YWxsQ291bnQ6IGludGVnZXIoJ2luc3RhbGxfY291bnQnKS5ub3ROdWxsKCksXG4gIC8vIE5VTEwgYmVsb3cgdGhlIDUtb3JnIGRpc3BsYXkgdGhyZXNob2xkLlxuICBhY3RpdmVPcmdDb3VudDogaW50ZWdlcignYWN0aXZlX29yZ19jb3VudCcpLFxuICBzdWNjZXNzUmF0ZTMwZDogZG91YmxlUHJlY2lzaW9uKCdzdWNjZXNzX3JhdGVfMzBkJyksXG4gIGhlYWx0aFNjb3JlOiBkb3VibGVQcmVjaXNpb24oJ2hlYWx0aF9zY29yZScpLFxuICAvLyAnbGlzdGVkJyB8ICd1bm1haW50YWluZWQnIOKAlCB1bm1haW50YWluZWQgc3RheXMgcHVibGljIHdpdGggYSBiYW5uZXIuXG4gIHN0YXRlOiB2YXJjaGFyKCdzdGF0ZScsIHsgbGVuZ3RoOiAyMCB9KS4kdHlwZTxMaXN0aW5nU3RhdGU+KCkubm90TnVsbCgpLFxuICBoZWFsdGhCcmVha2Rvd246IGpzb25iKCdoZWFsdGhfYnJlYWtkb3duJykuJHR5cGU8SGVhbHRoQnJlYWtkb3duPigpLFxufSkuZXhpc3RpbmcoKTtcblxuLyoqXG4gKiBgcHVibGljX2xpc3RlZF92ZXJzaW9uc2A6IG5vbi1wYXVzZWQgdmVyc2lvbnMgb2YgbGlzdGVkIGxpc3RpbmdzICh5YW5rZWQgb25lc1xuICogaW5jbHVkZWQsIGZsYWdnZWQpLCB3aXRoIG9ubHkgdGhlIHB1YmxpYyBzdWJzZXQgb2YgdGhlIGZyb3plbiBzcGVjLlxuICovXG5leHBvcnQgY29uc3QgcHVibGljTGlzdGVkVmVyc2lvbnMgPSBwZ1ZpZXcoJ3B1YmxpY19saXN0ZWRfdmVyc2lvbnMnLCB7XG4gIGlkOiB1dWlkKCdpZCcpLm5vdE51bGwoKSxcbiAgbGlzdGluZ0lkOiB1dWlkKCdsaXN0aW5nX2lkJykubm90TnVsbCgpLFxuICBwdWJsaXNoZXJIYW5kbGU6IHZhcmNoYXIoJ3B1Ymxpc2hlcl9oYW5kbGUnLCB7IGxlbmd0aDogMzkgfSkubm90TnVsbCgpLFxuICBuYW1lOiB2YXJjaGFyKCduYW1lJywgeyBsZW5ndGg6IDI1NSB9KS5ub3ROdWxsKCksXG4gIHZlcnNpb246IHZhcmNoYXIoJ3ZlcnNpb24nLCB7IGxlbmd0aDogNTAgfSkubm90TnVsbCgpLFxuICBpbWFnZURpZ2VzdDogdmFyY2hhcignaW1hZ2VfZGlnZXN0JywgeyBsZW5ndGg6IDcxIH0pLFxuICBpbWFnZVJlcG9zaXRvcnk6IHZhcmNoYXIoJ2ltYWdlX3JlcG9zaXRvcnknLCB7IGxlbmd0aDogNTEyIH0pLFxuICBicmVha2luZzogYm9vbGVhbignYnJlYWtpbmcnKS5ub3ROdWxsKCksXG4gIGRlcHJlY2F0ZWRBdDogdGltZXN0YW1wKCdkZXByZWNhdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG4gIGNoYW5nZWxvZzogdGV4dCgnY2hhbmdlbG9nJyksXG4gIHZ1bG5Dcml0aWNhbDogaW50ZWdlcigndnVsbl9jcml0aWNhbCcpLFxuICB2dWxuSGlnaDogaW50ZWdlcigndnVsbl9oaWdoJyksXG4gIHNjYW5uZWRBdDogdGltZXN0YW1wKCdzY2FubmVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG4gIHB1Ymxpc2hlZEF0OiB0aW1lc3RhbXAoJ3B1Ymxpc2hlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLm5vdE51bGwoKSxcbiAgcGx1Z2luVHlwZTogdGV4dCgncGx1Z2luX3R5cGUnKSxcbiAgY29tcHV0ZVR5cGU6IHRleHQoJ2NvbXB1dGVfdHlwZScpLFxuICBzZWNyZXRzOiBqc29uYignc2VjcmV0cycpLiR0eXBlPFBsdWdpblNlY3JldFtdPigpLFxuICByZXF1aXJlZE1ldGFkYXRhOiBqc29uYigncmVxdWlyZWRfbWV0YWRhdGEnKS4kdHlwZTxzdHJpbmdbXT4oKSxcbiAgcmVxdWlyZWRWYXJzOiBqc29uYigncmVxdWlyZWRfdmFycycpLiR0eXBlPHN0cmluZ1tdPigpLFxuICBuZXR3b3JrRWdyZXNzOiBqc29uYignbmV0d29ya19lZ3Jlc3MnKS4kdHlwZTxzdHJpbmdbXT4oKSxcbiAgcnVuQXNSb290OiBib29sZWFuKCdydW5fYXNfcm9vdCcpLFxuICBsaWNlbnNlOiB0ZXh0KCdsaWNlbnNlJyksXG4gIHJlYWRtZUh0bWw6IHRleHQoJ3JlYWRtZV9odG1sJyksXG4gIC8vIFlhbmtlZCB2ZXJzaW9ucyBzdGF5IGxpc3RlZCAobWFya2VkKTsgdGhlIHlhbmsgcmVhc29uIGlzbid0IHB1YmxpYy5cbiAgeWFua2VkOiBib29sZWFuKCd5YW5rZWQnKS5ub3ROdWxsKCksXG4gIGRlcHJlY2F0aW9uTWVzc2FnZTogdGV4dCgnZGVwcmVjYXRpb25fbWVzc2FnZScpLFxuICBpbWFnZVNvdXJjZTogdGV4dCgnaW1hZ2Vfc291cmNlJyksXG4gIGJhc2VJbWFnZUNyZWF0ZWRBdDogdGltZXN0YW1wKCdiYXNlX2ltYWdlX2NyZWF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgLy8gQXBwZW5kZWQgaW4gdGhlIHZpZXcgKENSRUFURSBPUiBSRVBMQUNFIFZJRVcgb25seSBhZGRzIGNvbHVtbnMgYXQgdGhlIGVuZCkuXG4gIHZ1bG5Dcml0aWNhbEZpeGFibGU6IGludGVnZXIoJ3Z1bG5fY3JpdGljYWxfZml4YWJsZScpLFxuICB2dWxuSGlnaEZpeGFibGU6IGludGVnZXIoJ3Z1bG5faGlnaF9maXhhYmxlJyksXG4gIHNjYW5GbGFnZ2VkQXQ6IHRpbWVzdGFtcCgnc2Nhbl9mbGFnZ2VkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG4gIC8qKiBUaGUgR0MgZGVsZXRlZCB0aGlzIHZlcnNpb24ncyBwdWJsaWMgaW1hZ2Ug4oCUIHNlZSB0aGUgdmlldydzIG93biBub3RlLiAqL1xuICBpbWFnZUNvbGxlY3RlZDogYm9vbGVhbignaW1hZ2VfY29sbGVjdGVkJykubm90TnVsbCgpLFxufSkuZXhpc3RpbmcoKTtcblxuLyoqXG4gKiBgcHVibGljX2Fkdmlzb3JpZXNgOiBQVUJMSVNIRUQgYWR2aXNvcmllcyBvbiBsaXN0ZWQgbGlzdGluZ3MsIHB1YmxpYyBjb2x1bW5zXG4gKiBvbmx5IChubyBwdWJsaXNoZXIvb3JnIGlkcywgbm8gYXV0aG9yLCBubyBkcmFmdHMgb3Igd2l0aGRyYXduIHJvd3MpLlxuICovXG5leHBvcnQgY29uc3QgcHVibGljQWR2aXNvcmllcyA9IHBnVmlldygncHVibGljX2Fkdmlzb3JpZXMnLCB7XG4gIGlkOiB1dWlkKCdpZCcpLm5vdE51bGwoKSxcbiAgbGlzdGluZ0lkOiB1dWlkKCdsaXN0aW5nX2lkJykubm90TnVsbCgpLFxuICBwdWJsaXNoZXJIYW5kbGU6IHZhcmNoYXIoJ3B1Ymxpc2hlcl9oYW5kbGUnLCB7IGxlbmd0aDogMzkgfSkubm90TnVsbCgpLFxuICBuYW1lOiB2YXJjaGFyKCduYW1lJywgeyBsZW5ndGg6IDI1NSB9KS5ub3ROdWxsKCksXG4gIHNldmVyaXR5OiB2YXJjaGFyKCdzZXZlcml0eScsIHsgbGVuZ3RoOiAxMCB9KS4kdHlwZTxBZHZpc29yeVNldmVyaXR5PigpLm5vdE51bGwoKSxcbiAgc3VtbWFyeTogdmFyY2hhcignc3VtbWFyeScsIHsgbGVuZ3RoOiAzMDAgfSkubm90TnVsbCgpLFxuICBkZXRhaWxzSHRtbDogdGV4dCgnZGV0YWlsc19odG1sJyksXG4gIGN2ZUlkczogdGV4dCgnY3ZlX2lkcycpLmFycmF5KCkubm90TnVsbCgpLFxuICBhZmZlY3RlZFJhbmdlOiB2YXJjaGFyKCdhZmZlY3RlZF9yYW5nZScsIHsgbGVuZ3RoOiAyNTUgfSkubm90TnVsbCgpLFxuICBmaXhlZFZlcnNpb246IHZhcmNoYXIoJ2ZpeGVkX3ZlcnNpb24nLCB7IGxlbmd0aDogNTAgfSksXG4gIHB1Ymxpc2hlZEF0OiB0aW1lc3RhbXAoJ3B1Ymxpc2hlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxufSkuZXhpc3RpbmcoKTtcblxuLyoqXG4gKiBgcHVibGljX3Jldmlld3NgOiBQVUJMSVNIRUQgcmV2aWV3cyBvZiBwdWJsaWMgKG5vbi1wYXVzZWQpIGxpc3RpbmdzLCBwdWJsaWNcbiAqIGNvbHVtbnMgb25seSDigJQgdGhlIGF1dGhvcidzIGRpc3BsYXkgbmFtZSwgbmV2ZXIgYSB1c2VyIG9yIG9yZyBpZCDigJRcbiAqIHdpdGggdGhlIHB1Ymxpc2hlcidzIHJlcGx5LlxuICovXG5leHBvcnQgY29uc3QgcHVibGljUmV2aWV3cyA9IHBnVmlldygncHVibGljX3Jldmlld3MnLCB7XG4gIGlkOiB1dWlkKCdpZCcpLm5vdE51bGwoKSxcbiAgbGlzdGluZ0lkOiB1dWlkKCdsaXN0aW5nX2lkJykubm90TnVsbCgpLFxuICBwdWJsaXNoZXJIYW5kbGU6IHZhcmNoYXIoJ3B1Ymxpc2hlcl9oYW5kbGUnLCB7IGxlbmd0aDogMzkgfSkubm90TnVsbCgpLFxuICBuYW1lOiB2YXJjaGFyKCduYW1lJywgeyBsZW5ndGg6IDI1NSB9KS5ub3ROdWxsKCksXG4gIHZlcnNpb246IHZhcmNoYXIoJ3ZlcnNpb24nLCB7IGxlbmd0aDogNTAgfSksXG4gIHJhdGluZzogc21hbGxpbnQoJ3JhdGluZycpLm5vdE51bGwoKSxcbiAgdGl0bGU6IHZhcmNoYXIoJ3RpdGxlJywgeyBsZW5ndGg6IDEyMCB9KSxcbiAgYm9keUh0bWw6IHRleHQoJ2JvZHlfaHRtbCcpLFxuICBhdXRob3JEaXNwbGF5TmFtZTogdmFyY2hhcignYXV0aG9yX2Rpc3BsYXlfbmFtZScsIHsgbGVuZ3RoOiAxMDAgfSksXG4gIHZlcmlmaWVkVXNlOiBib29sZWFuKCd2ZXJpZmllZF91c2UnKS5ub3ROdWxsKCksXG4gIGhlbHBmdWxDb3VudDogaW50ZWdlcignaGVscGZ1bF9jb3VudCcpLm5vdE51bGwoKSxcbiAgZWRpdGVkOiBib29sZWFuKCdlZGl0ZWQnKS5ub3ROdWxsKCksXG4gIGNyZWF0ZWRBdDogdGltZXN0YW1wKCdjcmVhdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkubm90TnVsbCgpLFxuICB1cGRhdGVkQXQ6IHRpbWVzdGFtcCgndXBkYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLm5vdE51bGwoKSxcbiAgcHVibGlzaGVyRGlzcGxheU5hbWU6IHZhcmNoYXIoJ3B1Ymxpc2hlcl9kaXNwbGF5X25hbWUnLCB7IGxlbmd0aDogMjU1IH0pLm5vdE51bGwoKSxcbiAgcmVwbHlCb2R5SHRtbDogdGV4dCgncmVwbHlfYm9keV9odG1sJyksXG4gIHJlcGx5Q3JlYXRlZEF0OiB0aW1lc3RhbXAoJ3JlcGx5X2NyZWF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgcmVwbHlVcGRhdGVkQXQ6IHRpbWVzdGFtcCgncmVwbHlfdXBkYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxufSkuZXhpc3RpbmcoKTtcblxuLyoqIFRoZSBvZmZpY2lhbCBwdWJsaXNoZXIncyBoYW5kbGUgKHRoZSBzeXN0ZW0gb3JnJ3MgY2F0YWxvZykuICovXG5leHBvcnQgY29uc3QgT0ZGSUNJQUxfUFVCTElTSEVSX0hBTkRMRSA9ICdwaXBlbGluZS1idWlsZGVyJztcbi8qKiBUaGUgcGxhdGZvcm0tb3duZWQgcHVibGlzaGVyIGFub255bW91cyBzdWJtaXNzaW9ucyBsYW5kIHVuZGVyLiAqL1xuZXhwb3J0IGNvbnN0IENPTU1VTklUWV9QVUJMSVNIRVJfSEFORExFID0gJ2NvbW11bml0eSc7XG5cbi8qKiBGaXhlZCBpZHMgb2YgdGhlIHR3byBhdXRvLWFwcHJvdmFsIHJ1bGVzIHBvc3RncmVzLWluaXQuc3FsIHNlZWRzLiAqL1xuZXhwb3J0IGNvbnN0IFNFRURFRF9BVVRPX0FQUFJPVkFMX1JVTEVfSURTID0ge1xuICB2ZXJpZmllZFVwZGF0ZXM6ICcwMDAwMDAwMC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGEwMDEnLFxuICBvZmZpY2lhbENhdGFsb2c6ICcwMDAwMDAwMC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGEwMDInLFxufSBhcyBjb25zdDtcblxuLyoqXG4gKiBUeXBlU2NyaXB0IHR5cGVzIHJlcHJlc2VudGluZyBkYXRhYmFzZSByb3dzXG4gKi9cbmV4cG9ydCB0eXBlIFB1Ymxpc2hlciA9IHR5cGVvZiBwdWJsaXNoZXIuJGluZmVyU2VsZWN0O1xuZXhwb3J0IHR5cGUgUHVibGlzaGVySW5zZXJ0ID0gdHlwZW9mIHB1Ymxpc2hlci4kaW5mZXJJbnNlcnQ7XG5cbmV4cG9ydCB0eXBlIFBsdWdpbkxpc3RpbmcgPSB0eXBlb2YgcGx1Z2luTGlzdGluZy4kaW5mZXJTZWxlY3Q7XG5leHBvcnQgdHlwZSBQbHVnaW5MaXN0aW5nSW5zZXJ0ID0gdHlwZW9mIHBsdWdpbkxpc3RpbmcuJGluZmVySW5zZXJ0O1xuXG5leHBvcnQgdHlwZSBQbHVnaW5MaXN0aW5nVmVyc2lvbiA9IHR5cGVvZiBwbHVnaW5MaXN0aW5nVmVyc2lvbi4kaW5mZXJTZWxlY3Q7XG5leHBvcnQgdHlwZSBQbHVnaW5MaXN0aW5nVmVyc2lvbkluc2VydCA9IHR5cGVvZiBwbHVnaW5MaXN0aW5nVmVyc2lvbi4kaW5mZXJJbnNlcnQ7XG5cbmV4cG9ydCB0eXBlIFBsdWdpbkFkdmlzb3J5ID0gdHlwZW9mIHBsdWdpbkFkdmlzb3J5LiRpbmZlclNlbGVjdDtcbmV4cG9ydCB0eXBlIFBsdWdpbkFkdmlzb3J5SW5zZXJ0ID0gdHlwZW9mIHBsdWdpbkFkdmlzb3J5LiRpbmZlckluc2VydDtcblxuZXhwb3J0IHR5cGUgRWNvc3lzdGVtQXV0b0FwcHJvdmFsUnVsZSA9IHR5cGVvZiBlY29zeXN0ZW1BdXRvQXBwcm92YWxSdWxlLiRpbmZlclNlbGVjdDtcbmV4cG9ydCB0eXBlIEVjb3N5c3RlbUF1dG9BcHByb3ZhbFJ1bGVJbnNlcnQgPSB0eXBlb2YgZWNvc3lzdGVtQXV0b0FwcHJvdmFsUnVsZS4kaW5mZXJJbnNlcnQ7XG5cbmV4cG9ydCB0eXBlIFBsdWdpblB1Ymxpc2hSZXF1ZXN0ID0gdHlwZW9mIHBsdWdpblB1Ymxpc2hSZXF1ZXN0LiRpbmZlclNlbGVjdDtcbmV4cG9ydCB0eXBlIFBsdWdpblB1Ymxpc2hSZXF1ZXN0SW5zZXJ0ID0gdHlwZW9mIHBsdWdpblB1Ymxpc2hSZXF1ZXN0LiRpbmZlckluc2VydDtcblxuZXhwb3J0IHR5cGUgRWNvc3lzdGVtUmVzZXJ2ZWROYW1lID0gdHlwZW9mIGVjb3N5c3RlbVJlc2VydmVkTmFtZS4kaW5mZXJTZWxlY3Q7XG5leHBvcnQgdHlwZSBFY29zeXN0ZW1SZXNlcnZlZE5hbWVJbnNlcnQgPSB0eXBlb2YgZWNvc3lzdGVtUmVzZXJ2ZWROYW1lLiRpbmZlckluc2VydDtcblxuZXhwb3J0IHR5cGUgRWNvc3lzdGVtU2V0dGluZyA9IHR5cGVvZiBlY29zeXN0ZW1TZXR0aW5nLiRpbmZlclNlbGVjdDtcbmV4cG9ydCB0eXBlIEVjb3N5c3RlbVNldHRpbmdJbnNlcnQgPSB0eXBlb2YgZWNvc3lzdGVtU2V0dGluZy4kaW5mZXJJbnNlcnQ7XG5cblxuZXhwb3J0IHR5cGUgUGx1Z2luUmV2aWV3ID0gdHlwZW9mIHBsdWdpblJldmlldy4kaW5mZXJTZWxlY3Q7XG5leHBvcnQgdHlwZSBQbHVnaW5SZXZpZXdJbnNlcnQgPSB0eXBlb2YgcGx1Z2luUmV2aWV3LiRpbmZlckluc2VydDtcblxuZXhwb3J0IHR5cGUgUGx1Z2luUmV2aWV3UmVwbHkgPSB0eXBlb2YgcGx1Z2luUmV2aWV3UmVwbHkuJGluZmVyU2VsZWN0O1xuZXhwb3J0IHR5cGUgUGx1Z2luUmV2aWV3UmVwbHlJbnNlcnQgPSB0eXBlb2YgcGx1Z2luUmV2aWV3UmVwbHkuJGluZmVySW5zZXJ0O1xuXG5leHBvcnQgdHlwZSBQbHVnaW5SZXZpZXdSZXBvcnQgPSB0eXBlb2YgcGx1Z2luUmV2aWV3UmVwb3J0LiRpbmZlclNlbGVjdDtcbmV4cG9ydCB0eXBlIFBsdWdpblJldmlld1JlcG9ydEluc2VydCA9IHR5cGVvZiBwbHVnaW5SZXZpZXdSZXBvcnQuJGluZmVySW5zZXJ0O1xuXG5leHBvcnQgdHlwZSBQbHVnaW5SZXZpZXdWb3RlID0gdHlwZW9mIHBsdWdpblJldmlld1ZvdGUuJGluZmVyU2VsZWN0O1xuZXhwb3J0IHR5cGUgUGx1Z2luUmV2aWV3Vm90ZUluc2VydCA9IHR5cGVvZiBwbHVnaW5SZXZpZXdWb3RlLiRpbmZlckluc2VydDtcblxuZXhwb3J0IHR5cGUgUGx1Z2luUmV2aWV3SGlzdG9yeSA9IHR5cGVvZiBwbHVnaW5SZXZpZXdIaXN0b3J5LiRpbmZlclNlbGVjdDtcbmV4cG9ydCB0eXBlIFBsdWdpblJldmlld0hpc3RvcnlJbnNlcnQgPSB0eXBlb2YgcGx1Z2luUmV2aWV3SGlzdG9yeS4kaW5mZXJJbnNlcnQ7XG5cbmV4cG9ydCB0eXBlIFBsdWdpblN0YXRzID0gdHlwZW9mIHBsdWdpblN0YXRzLiRpbmZlclNlbGVjdDtcbmV4cG9ydCB0eXBlIFBsdWdpblN0YXRzSW5zZXJ0ID0gdHlwZW9mIHBsdWdpblN0YXRzLiRpbmZlckluc2VydDtcblxuZXhwb3J0IHR5cGUgUGx1Z2luU3VibWlzc2lvbiA9IHR5cGVvZiBwbHVnaW5TdWJtaXNzaW9uLiRpbmZlclNlbGVjdDtcbmV4cG9ydCB0eXBlIFBsdWdpblN1Ym1pc3Npb25JbnNlcnQgPSB0eXBlb2YgcGx1Z2luU3VibWlzc2lvbi4kaW5mZXJJbnNlcnQ7XG5cbmV4cG9ydCB0eXBlIEVjb3N5c3RlbVNlYXJjaE1pc3MgPSB0eXBlb2YgZWNvc3lzdGVtU2VhcmNoTWlzcy4kaW5mZXJTZWxlY3Q7XG5leHBvcnQgdHlwZSBFY29zeXN0ZW1TZWFyY2hNaXNzSW5zZXJ0ID0gdHlwZW9mIGVjb3N5c3RlbVNlYXJjaE1pc3MuJGluZmVySW5zZXJ0O1xuXG5leHBvcnQgdHlwZSBFY29zeXN0ZW1Ob3RpZmljYXRpb24gPSB0eXBlb2YgZWNvc3lzdGVtTm90aWZpY2F0aW9uUXVldWUuJGluZmVyU2VsZWN0O1xuZXhwb3J0IHR5cGUgRWNvc3lzdGVtTm90aWZpY2F0aW9uSW5zZXJ0ID0gdHlwZW9mIGVjb3N5c3RlbU5vdGlmaWNhdGlvblF1ZXVlLiRpbmZlckluc2VydDtcblxuZXhwb3J0IHR5cGUgUGlwZWxpbmVTdGVwTWFuaWZlc3QgPSB0eXBlb2YgcGlwZWxpbmVTdGVwTWFuaWZlc3QuJGluZmVyU2VsZWN0O1xuZXhwb3J0IHR5cGUgUGlwZWxpbmVTdGVwTWFuaWZlc3RJbnNlcnQgPSB0eXBlb2YgcGlwZWxpbmVTdGVwTWFuaWZlc3QuJGluZmVySW5zZXJ0O1xuXG5leHBvcnQgdHlwZSBQbHVnaW5JbnN0YWxsID0gdHlwZW9mIHBsdWdpbkluc3RhbGwuJGluZmVyU2VsZWN0O1xuZXhwb3J0IHR5cGUgUGx1Z2luSW5zdGFsbEluc2VydCA9IHR5cGVvZiBwbHVnaW5JbnN0YWxsLiRpbmZlckluc2VydDtcblxuZXhwb3J0IHR5cGUgUGx1Z2luSW5zdGFsbFBvbGljeSA9IHR5cGVvZiBwbHVnaW5JbnN0YWxsUG9saWN5LiRpbmZlclNlbGVjdDtcbmV4cG9ydCB0eXBlIFBsdWdpbkluc3RhbGxQb2xpY3lJbnNlcnQgPSB0eXBlb2YgcGx1Z2luSW5zdGFsbFBvbGljeS4kaW5mZXJJbnNlcnQ7XG5cbmV4cG9ydCB0eXBlIFBsdWdpblNlY3VyaXR5Tm90aWZpY2F0aW9uUHJlZiA9IHR5cGVvZiBwbHVnaW5TZWN1cml0eU5vdGlmaWNhdGlvblByZWYuJGluZmVyU2VsZWN0O1xuXG5leHBvcnQgdHlwZSBQbHVnaW5BZHZpc29yeURlbGl2ZXJ5ID0gdHlwZW9mIHBsdWdpbkFkdmlzb3J5RGVsaXZlcnkuJGluZmVyU2VsZWN0O1xuZXhwb3J0IHR5cGUgUGx1Z2luQWR2aXNvcnlEZWxpdmVyeUluc2VydCA9IHR5cGVvZiBwbHVnaW5BZHZpc29yeURlbGl2ZXJ5LiRpbmZlckluc2VydDtcblxuZXhwb3J0IHR5cGUgUHVibGljTGlzdGluZyA9IHR5cGVvZiBwdWJsaWNMaXN0aW5ncy4kaW5mZXJTZWxlY3Q7XG5leHBvcnQgdHlwZSBQdWJsaWNMaXN0ZWRWZXJzaW9uID0gdHlwZW9mIHB1YmxpY0xpc3RlZFZlcnNpb25zLiRpbmZlclNlbGVjdDtcbmV4cG9ydCB0eXBlIFB1YmxpY0Fkdmlzb3J5ID0gdHlwZW9mIHB1YmxpY0Fkdmlzb3JpZXMuJGluZmVyU2VsZWN0O1xuZXhwb3J0IHR5cGUgUHVibGljUmV2aWV3ID0gdHlwZW9mIHB1YmxpY1Jldmlld3MuJGluZmVyU2VsZWN0O1xuIl19
786
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNvc3lzdGVtLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZGF0YWJhc2Uvc2NoZW1hL2Vjb3N5c3RlbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBbUR0QyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2xDLE9BQU8sRUFDTCxPQUFPLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLElBQUksRUFDL0csU0FBUyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsT0FBTyxHQUN0QyxNQUFNLHFCQUFxQixDQUFDO0FBWTdCLHVFQUF1RTtBQUN2RSxNQUFNLFFBQVEsR0FBRyxVQUFVLENBQW1CO0lBQzVDLFFBQVE7UUFDTixPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDO0NBQ0YsQ0FBQyxDQUFDO0FBRUgsOEVBQThFO0FBQzlFLDhFQUE4RTtBQUM5RSx5REFBeUQ7QUFDekQsOEVBQThFO0FBRTlFLE9BQU8sRUFDTCxlQUFlLEVBQ2YsY0FBYyxFQUNkLHFCQUFxQixFQUNyQix3QkFBd0IsRUFDeEIsNkJBQTZCLEVBQzdCLHdCQUF3QixFQUN4QixtQkFBbUIsRUFDbkIsd0JBQXdCLEVBQ3hCLG1CQUFtQixHQWtCcEIsTUFBTSw0QkFBNEIsQ0FBQztBQWlDcEMsOEVBQThFO0FBQzlFLDBCQUEwQjtBQUMxQiw4RUFBOEU7QUFFOUU7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLFlBQVksRUFBRTtJQUM3QyxFQUFFLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDLGFBQWEsRUFBRTtJQUMzQyxVQUFVLEVBQUUsT0FBTyxDQUFDLGNBQWMsRUFBRSxFQUFFLE1BQU0sRUFBRSxHQUFH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RTtJQUNwRSxvQkFBb0IsRUFBRSxPQUFPLENBQUMsd0JBQXdCLEVBQUUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFDbEYsYUFBYSxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztJQUN0QyxjQUFjLEVBQUUsU0FBUyxDQUFDLGtCQUFrQixFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDO0lBQ3JFLGNBQWMsRUFBRSxTQUFTLENBQUMsa0JBQWtCLEVBQUUsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQUM7Q0FDdEUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO0FBRWQsa0VBQWtFO0FBQ2xFLE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHLGtCQUFrQixDQUFDO0FBQzVELHFFQUFxRTtBQUNyRSxNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBRyxXQUFXLENBQUM7QUFFdEQsd0VBQXdFO0FBQ3hFLE1BQU0sQ0FBQyxNQUFNLDZCQUE2QixHQUFHO0lBQzNDLGVBQWUsRUFBRSxzQ0FBc0M7SUFDdkQsZUFBZSxFQUFFLHNDQUFzQztDQUMvQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8vXG4vLyBQbHVnaW4gZWNvc3lzdGVtIHRhYmxlcyAoZG9jcy9wbHVnaW4tcHVibGlzaGluZy5tZCkuIE1pcnJvcnMgdGhlXG4vLyBcIlBMVUdJTiBFQ09TWVNURU1cIiBzZWN0aW9uIG9mIHBvc3RncmVzLWluaXQuc3FsLCB3aGljaCBpcyBhdXRob3JpdGF0aXZlIGZvclxuLy8gdGhlIHRyaWdnZXItbWFpbnRhaW5lZCBgc2VhcmNoX3ZlY3RvcmAsIHRoZSBSTFMgcG9saWNpZXMgYW5kIHRoZSBwdWJsaWMgdmlld3MuXG4vL1xuLy8gVHdvIGtpbmRzIG9mIHRhYmxlOlxuLy8gICAqIEVDT1NZU1RFTS1HTE9CQUwg4oCUIHB1Ymxpc2hlcnMsIGxpc3RpbmdzLCBsaXN0aW5nIHZlcnNpb25zLCB0aGUgcHVibGlzaFxuLy8gICAgIHJlcXVlc3QgcXVldWUsIHJldmlld3MsIGFkdmlzb3JpZXMsIGFub255bW91cyBzdWJtaXNzaW9ucywg4oCmIFRoZVxuLy8gICAgIGRpcmVjdG9yeSBpcyBpbnN0YW5jZS13aWRlLCBzbyB0aGVzZSBjYXJyeSBOTyBgb3JnX2lkYDogdGhleSBhcmUgbm90XG4vLyAgICAgdGVuYW50IHNjb3BlZCwgd3JpdGVzIGFyZSBnYXRlZCBpbiB0aGUgc2VydmljZSBsYXllciAoc3lzdGVtLW9yZy1vbmx5XG4vLyAgICAgYXBwcm92YWwpLCBhbmQgdGhlaXIgUkxTIHBvbGljeSBhZG1pdHMgdGhlIGFwcGxpY2F0aW9uIHJvbGUgb25seS5cbi8vICAgICBgcHVibGlzaGVycy5vd25lcl9vcmdfaWRgIGlzIGRlbGliZXJhdGVseSBub3QgbmFtZWQgYG9yZ19pZGA6IGEgcHVibGlzaGVyXG4vLyAgICAgb3V0bGl2ZXMgaXRzIG9yZywgc28gaXQgbXVzdCBzdGF5IG91dCBvZiB0aGUgb3JnIGNhc2NhZGUsIHdoaWNoXG4vLyAgICAgdHJlYXRzIGV2ZXJ5IGBvcmdfaWRgIHRhYmxlIGFzIHRoZSBvcmcncyBkYXRhLlxuLy8gICAqIE9SRy1TQ09QRUQg4oCUIHBpcGVsaW5lX3N0ZXBfbWFuaWZlc3RzLCBwbHVnaW5faW5zdGFsbHMsXG4vLyAgICAgcGx1Z2luX2luc3RhbGxfcG9saWNpZXMsIHBsdWdpbl9hZHZpc29yeV9kZWxpdmVyaWVzOiBgb3JnX2lkYCArIHRoZVxuLy8gICAgIHN0YW5kYXJkIGBybHNfb3JnXypgIHBvbGljaWVzICsgRk9SQ0UsIGFuZCBwYXJ0IG9mIHRoZSBvcmcgY2FzY2FkZS5cbi8vXG4vLyBUaGUgdHdvIGBwdWJsaWNfKmAgdmlld3MgYXJlIGRlY2xhcmVkIHdpdGggYHBnVmlldyguLi4pLmV4aXN0aW5nKClgIChkcml6emxlXG4vLyBuZXZlciBjcmVhdGVzIHRoZW07IHBvc3RncmVzLWluaXQuc3FsIGRvZXMpLiBUaGV5IGFyZSB3aGF0IHRoZSBhbm9ueW1vdXNcbi8vIGRpcmVjdG9yeSBBUEkgcmVhZHMsIGNvbm5lY3RlZCBhcyBgZWNvc3lzdGVtX3B1YmxpY19yZWFkZXJgIOKAlCB0aGUgb25seVxuLy8gcmVsYXRpb25zIHRoYXQgcm9sZSBjYW4gU0VMRUNULiBUaGV5IGFyZSBleHBvcnRlZCBmb3IgdHlwZWQgcXVlcmllcyBidXQga2VwdFxuLy8gb3V0IG9mIHRoZSBhZ2dyZWdhdGUgYHNjaGVtYWAgb2JqZWN0LCB3aGljaCBsaXN0cyB0YWJsZXMgb25seS5cbi8vXG5cbmltcG9ydCB0eXBlIHtcbiAgUHVibGlzaGVyVGllcixcbiAgTGlzdGluZ1N0YXRlLFxuICBQdWJsaXNoUmVxdWVzdEtpbmQsXG4gIFB1Ymxpc2hSZXF1ZXN0U3RhdHVzLFxuICBQdWJsaXNoUmVxdWVzdExhbmUsXG4gIEluc3RhbGxWZXJzaW9uUG9saWN5LFxuICBJbnN0YWxsU3RhdHVzLFxuICBCbG9ja09uQWR2aXNvcnksXG4gIE9mZmljaWFsSW5zdGFsbHMsXG4gIFNoYWRvd2luZ01vZGUsXG4gIFJldmlld1N0YXR1cyxcbiAgUmV2aWV3SG9sZFJlYXNvbixcbiAgUmV2aWV3UmVwb3J0Q2F0ZWdvcnksXG4gIEFkdmlzb3J5U2V2ZXJpdHksXG4gIEFkdmlzb3J5U3RhdGUsXG4gIEFkdmlzb3J5U291cmNlLFxuICBTdWJtaXNzaW9uU3RhdHVzLFxuICBQbHVnaW5TY2FuRmxhZyxcbiAgUGx1Z2luU2NhblN1bW1hcnksXG4gIFBsdWdpblNlY3VyaXR5UmVjaXBpZW50TW9kZSxcbiAgUGx1Z2luU2VjdXJpdHlEaWdlc3RNb2RlLFxuICBIZWFsdGhDb21wb25lbnRTY29yZSxcbn0gZnJvbSAnQHBpcGVsaW5lLWJ1aWxkZXIvYXBpLWNvcmUnO1xuaW1wb3J0IHsgc3FsIH0gZnJvbSAnZHJpenpsZS1vcm0nO1xuaW1wb3J0IHtcbiAgYm9vbGVhbiwgY2hlY2ssIGN1c3RvbVR5cGUsIGRvdWJsZVByZWNpc2lvbiwgaW5kZXgsIGludGVnZXIsIGpzb25iLCBwZ1RhYmxlLCBwZ1ZpZXcsIHByaW1hcnlLZXksIHNtYWxsaW50LCB0ZXh0LFxuICB0aW1lc3RhbXAsIHVuaXF1ZUluZGV4LCB1dWlkLCB2YXJjaGFyLFxufSBmcm9tICdkcml6emxlLW9ybS9wZy1jb3JlJztcbmltcG9ydCB0eXBlIHsgUGx1Z2luSWNvbiwgUGx1Z2luU2VjcmV0LCBQbHVnaW5VcGxvYWRlZEljb24gfSBmcm9tICcuL3BsdWdpbi5qcyc7XG5cbi8qKlxuICogUGVyLWNvbXBvbmVudCBoZWFsdGggc2NvcmVzLCBhcyBTVE9SRUQuIFRoZSBjb21wb25lbnQgc2NvcmUgc2hhcGUgaXNcbiAqIGFwaS1jb3JlJ3MgYEhlYWx0aENvbXBvbmVudFNjb3JlYCDigJQgb25seSB0aGUga2V5IGlzIHdpZGVuZWQgdG8gYHN0cmluZ2AsXG4gKiBiZWNhdXNlIGRyaXp6bGUncyBgJHR5cGU8PigpYCBvbiBhIGpzb25iIGNvbHVtbiBtdXN0IGFjY2VwdCB3aGF0ZXZlclxuICogY29tcG9uZW50IHNldCBhIHJvdyB3YXMgd3JpdHRlbiB3aXRoIChhcGktY29yZSdzIGBIZWFsdGhCcmVha2Rvd25gIGtleXMgb25cbiAqIHRoZSBjdXJyZW50IGBIZWFsdGhDb21wb25lbnRgIHVuaW9uIGFuZCB3b3VsZCByZWplY3QgYW4gb2xkZXIgcm93KS5cbiAqL1xuZXhwb3J0IHR5cGUgSGVhbHRoQnJlYWtkb3duID0gUmVjb3JkPHN0cmluZywgSGVhbHRoQ29tcG9uZW50U2NvcmU+O1xuXG4vKiogUG9zdGdyZXMgYHRzdmVjdG9yYCwgd2hpY2ggZHJpenpsZS1vcm0gaGFzIG5vIG5hdGl2ZSBjb2x1bW4gZm9yLiAqL1xuY29uc3QgdHN2ZWN0b3IgPSBjdXN0b21UeXBlPHsgZGF0YTogc3RyaW5nIH0+KHtcbiAgZGF0YVR5cGUoKSB7XG4gICAgcmV0dXJuICd0c3ZlY3Rvcic7XG4gIH0sXG59KTtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBFbnVtZXJhdGlvbnMg4oCUIGRlZmluZWQgaW4gYXBpLWNvcmUncyB3aXJlIHZvY2FidWxhcnkgc28gdGhlIGZyb250ZW5kIHNoYXJlc1xuLy8gdGhlbTsgZWFjaCBpcyBtaXJyb3JlZCBieSBhIENIRUNLIGluIHBvc3RncmVzLWluaXQuc3FsXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuZXhwb3J0IHtcbiAgUFVCTElTSEVSX1RJRVJTLFxuICBMSVNUSU5HX1NUQVRFUyxcbiAgUFVCTElTSF9SRVFVRVNUX0tJTkRTLFxuICBQVUJMSVNIX1JFUVVFU1RfU1RBVFVTRVMsXG4gIE9QRU5fUFVCTElTSF9SRVFVRVNUX1NUQVRVU0VTLFxuICBJTlNUQUxMX1ZFUlNJT05fUE9MSUNJRVMsXG4gIFJFVklFV19IT0xEX1JFQVNPTlMsXG4gIFJFVklFV19SRVBPUlRfQ0FURUdPUklFUyxcbiAgU1VCTUlTU0lPTl9TVEFUVVNFUyxcbiAgdHlwZSBQdWJsaXNoZXJUaWVyLFxuICB0eXBlIExpc3RpbmdTdGF0ZSxcbiAgdHlwZSBQdWJsaXNoUmVxdWVzdEtpbmQsXG4gIHR5cGUgUHVibGlzaFJlcXVlc3RTdGF0dXMsXG4gIHR5cGUgUHVibGlzaFJlcXVlc3RMYW5lLFxuICB0eXBlIEluc3RhbGxWZXJzaW9uUG9saWN5LFxuICB0eXBlIEluc3RhbGxTdGF0dXMsXG4gIHR5cGUgQmxvY2tPbkFkdmlzb3J5LFxuICB0eXBlIE9mZmljaWFsSW5zdGFsbHMsXG4gIHR5cGUgU2hhZG93aW5nTW9kZSxcbiAgdHlwZSBSZXZpZXdTdGF0dXMsXG4gIHR5cGUgUmV2aWV3SG9sZFJlYXNvbixcbiAgdHlwZSBSZXZpZXdSZXBvcnRDYXRlZ29yeSxcbiAgdHlwZSBBZHZpc29yeVNldmVyaXR5LFxuICB0eXBlIEFkdmlzb3J5U3RhdGUsXG4gIHR5cGUgQWR2aXNvcnlTb3VyY2UsXG4gIHR5cGUgU3VibWlzc2lvblN0YXR1cyxcbn0gZnJvbSAnQHBpcGVsaW5lLWJ1aWxkZXIvYXBpLWNvcmUnO1xuXG4vKipcbiAqIEEgbWVtYmVyJ3MgcGVuZGluZyByZXF1ZXN0IHRvIENIQU5HRSBhbiBhY3RpdmUgaW5zdGFsbCAoaXRzIHZlcnNpb24gb3JcbiAqIHZlcnNpb24gcG9saWN5KSB0aGF0IG5lZWRzIGFuIGFwcHJvdmVyIOKAlCBjcm9zc2luZyBhIG1ham9yL2JyZWFraW5nIHZlcnNpb24sXG4gKiBvciB3aWRlbmluZyB0byBgbGF0ZXN0YCwgb24gYW4gYXBwcm92YWwtZ2F0ZWQgdGllci4gT25lIHBlciBpbnN0YWxsOyBhblxuICogYXBwcm92ZXIgKGBwbHVnaW5faW5zdGFsbHM6bWFuYWdlYCkgYXBwbGllcyBvciByZWplY3RzIGl0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEluc3RhbGxDaGFuZ2VSZXF1ZXN0IHtcbiAgLyoqIFRoZSB2ZXJzaW9uIHRoZSBpbnN0YWxsIHdvdWxkIG1vdmUgdG8uICovXG4gIHZlcnNpb246IHN0cmluZztcbiAgLyoqIFRoZSB2ZXJzaW9uIHBvbGljeSBpdCB3b3VsZCBtb3ZlIHRvLiAqL1xuICB2ZXJzaW9uUG9saWN5OiBJbnN0YWxsVmVyc2lvblBvbGljeTtcbiAgcmVxdWVzdGVkQnk6IHN0cmluZztcbiAgLyoqIElTTyB0aW1lIG9mIHRoZSByZXF1ZXN0LiAqL1xuICByZXF1ZXN0ZWRBdDogc3RyaW5nO1xuICBub3RlOiBzdHJpbmcgfCBudWxsO1xufVxuLyoqIEEgYChwdWJsaXNoZXIsIG5hbWUpYCBhbiBvcmcncyBjb25zdW1wdGlvbiBwb2xpY3kgYmxvY2tzLiAqL1xuZXhwb3J0IGludGVyZmFjZSBCbG9ja2VkTGlzdGluZ1JlZiB7XG4gIHB1Ymxpc2hlcjogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG59XG5cbi8qKiBBbiBhbm9ueW1vdXMgc3VibWlzc2lvbidzIGFjY2VwdGVkIGNhdGFsb2cgbWV0YWRhdGEgYW5kIHBlci1maWVsZCBwcm92ZW5hbmNlLiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdWJtaXNzaW9uQ2F0YWxvZyB7XG4gIHZhbHVlczogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIHNvdXJjZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG59XG5cbi8qKiBOb3RpZmljYXRpb24gZXZlbnQgbnVtYmVyIChgTjFgIOKApiBgTjI5YCkuICovXG5leHBvcnQgdHlwZSBFY29zeXN0ZW1Ob3RpZmljYXRpb25FdmVudCA9IGBOJHtudW1iZXJ9YDtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBFY29zeXN0ZW0tZ2xvYmFsIHRhYmxlc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKlxuICogQW4gb3JnJ3MgcHVibGljIGlkZW50aXR5IChvbmUgcGVyIHJvb3Qgb3JnKS4gYG93bmVyT3JnSWRgIGlzIE5VTEwgZm9yIHRoZVxuICogcGxhdGZvcm0tb3duZWQgYGNvbW11bml0eWAgcHVibGlzaGVyIGFub255bW91cyBzdWJtaXNzaW9ucyBsYW5kIHVuZGVyLlxuICpcbiAqIEB0YWJsZSBwdWJsaXNoZXJzXG4gKi9cbmV4cG9ydCBjb25zdCBwdWJsaXNoZXIgPSBwZ1RhYmxlKCdwdWJsaXNoZXJzJywge1xuICBpZDogdXVpZCgnaWQnKS5wcmltYXJ5S2V5KCkuZGVmYXVsdFJhbmRvbSgpLFxuICBvd25lck9yZ0lkOiB2YXJjaGFyKCdvd25lcl9vcmdfaWQnLCB7IGxlbmd0aDogMjU1IH0pLnVuaXF1ZSgpLFxuICBoYW5kbGU6IHZhcmNoYXIoJ2hhbmRsZScsIHsgbGVuZ3RoOiAzOSB9KS5ub3ROdWxsKCkudW5pcXVlKCksXG4gIGRpc3BsYXlOYW1lOiB2YXJjaGFyKCdkaXNwbGF5X25hbWUnLCB7IGxlbmd0aDogMjU1IH0pLm5vdE51bGwoKSxcbiAgZGVzY3JpcHRpb246IHRleHQoJ2Rlc2NyaXB0aW9uJyksXG4gIGhvbWVwYWdlVXJsOiB2YXJjaGFyKCdob21lcGFnZV91cmwnLCB7IGxlbmd0aDogMjA0OCB9KSxcbiAgdGllcjogdmFyY2hhcigndGllcicsIHsgbGVuZ3RoOiAyMCB9KS4kdHlwZTxQdWJsaXNoZXJUaWVyPigpLmRlZmF1bHQoJ2NvbW11bml0eScpLm5vdE51bGwoKSxcbiAgdmVyaWZpZWRBdDogdGltZXN0YW1wKCd2ZXJpZmllZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxuICAvLyBWZXJpZmllZCBwdWJsaXNoZXIgZG93bmdyYWRlZCBiZWxvdyBUZWFtIGtlZXBzIHRoZSB0aWVyIHVudGlsIHRoaXMgcGFzc2VzIChOMjkpLlxuICB2ZXJpZmllZEdyYWNlVW50aWw6IHRpbWVzdGFtcCgndmVyaWZpZWRfZ3JhY2VfdW50aWwnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgdGVybXNWZXJzaW9uOiB2YXJjaGFyKCd0ZXJtc192ZXJzaW9uJywgeyBsZW5ndGg6IDUwIH0pLFxuICB0ZXJtc0FjY2VwdGVkQXQ6IHRpbWVzdGFtcCgndGVybXNfYWNjZXB0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgc3VzcGVuZGVkQXQ6IHRpbWVzdGFtcCgnc3VzcGVuZGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG4gIHN1c3BlbmRSZWFzb246IHRleHQoJ3N1c3BlbmRfcmVhc29uJyksXG4gIC8vIFc3IHJvbGwtdXBzLCB3cml0dGVuIGJ5IHRoZSBzdGF0cyBzd2VlcDogcnVuLXdlaWdodGVkIDMwLWRheSBzdWNjZXNzIHJhdGVcbiAgLy8gYW5kIHRoZSBpbnN0YWxsLXdlaWdodGVkIG1lYW4gaGVhbHRoIHNjb3JlIG9mIGl0cyBsaXN0aW5ncyAoTlVMTDogbm9uZSkuXG4gIHN1Y2Nlc3NSYXRlMzBkOiBkb3VibGVQcmVjaXNpb24oJ3N1Y2Nlc3NfcmF0ZV8zMGQnKSxcbiAgaGVhbHRoU2NvcmU6IGludGVnZXIoJ2hlYWx0aF9zY29yZScpLFxuICBjcmVhdGVkQXQ6IHRpbWVzdGFtcCgnY3JlYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLmRlZmF1bHROb3coKS5ub3ROdWxsKCksXG4gIHVwZGF0ZWRBdDogdGltZXN0YW1wKCd1cGRhdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcbn0sICh0YWJsZSkgPT4gKHtcbiAgaGFuZGxlQ2hlY2s6IGNoZWNrKCdwdWJsaXNoZXJzX2hhbmRsZV9jaGVjaycsIHNxbGAke3RhYmxlLmhhbmRsZX0gfiAnXlthLXowLTldW2EtejAtOS1dKiQnYCksXG4gIHRpZXJDaGVjazogY2hlY2soJ3B1Ymxpc2hlcnNfdGllcl9jaGVjaycsXG4gICAgc3FsYCR7dGFibGUudGllcn0gSU4gKCdvZmZpY2lhbCcsICd2ZXJpZmllZCcsICdjb21tdW5pdHknLCAndW52ZXJpZmllZCcpYCksXG59KSk7XG5cbi8qKlxuICogQSBwbHVnaW4gTkFNRSBwdWJsaXNoZWQgYnkgYSBwdWJsaXNoZXIuIFJldmlld3MsIGluc3RhbGxzLCBzdGF0cyBhbmQgc2VhcmNoXG4gKiBhdHRhY2ggaGVyZTsgdGhlIHBlci12ZXJzaW9uIHJlY29yZHMgYXJlIHtAbGluayBwbHVnaW5MaXN0aW5nVmVyc2lvbn0uXG4gKiBgc2VhcmNoVmVjdG9yYCBpcyBtYWludGFpbmVkIGJ5IGEgdHJpZ2dlciBpbiBwb3N0Z3Jlcy1pbml0LnNxbCAobmFtZSBBLFxuICoga2V5d29yZHMgKyBjYXRlZ29yeSBCLCBzdW1tYXJ5IEMsIFJFQURNRSArIGRlc2NyaXB0aW9uIEQsIGNvbmZpZyBgZW5nbGlzaGApXG4gKiDigJQgbmV2ZXIgd3JpdGUgaXQgZnJvbSB0aGUgYXBwbGljYXRpb24uXG4gKlxuICogQHRhYmxlIHBsdWdpbl9saXN0aW5nc1xuICovXG5leHBvcnQgY29uc3QgcGx1Z2luTGlzdGluZyA9IHBnVGFibGUoJ3BsdWdpbl9saXN0aW5ncycsIHtcbiAgaWQ6IHV1aWQoJ2lkJykucHJpbWFyeUtleSgpLmRlZmF1bHRSYW5kb20oKSxcbiAgcHVibGlzaGVySWQ6IHV1aWQoJ3B1Ymxpc2hlcl9pZCcpLm5vdE51bGwoKS5yZWZlcmVuY2VzKCgpID0+IHB1Ymxpc2hlci5pZCksXG4gIG5hbWU6IHZhcmNoYXIoJ25hbWUnLCB7IGxlbmd0aDogMjU1IH0pLm5vdE51bGwoKSxcbiAgY2F0ZWdvcnk6IHZhcmNoYXIoJ2NhdGVnb3J5JywgeyBsZW5ndGg6IDUwIH0pLmRlZmF1bHQoJ3Vua25vd24nKS5ub3ROdWxsKCksXG4gIHN1bW1hcnk6IHZhcmNoYXIoJ3N1bW1hcnknLCB7IGxlbmd0aDogMzAwIH0pLFxuICBkZXNjcmlwdGlvbjogdGV4dCgnZGVzY3JpcHRpb24nKSxcbiAgcmVhZG1lSHRtbDogdGV4dCgncmVhZG1lX2h0bWwnKSxcbiAgbGljZW5zZTogdmFyY2hhcignbGljZW5zZScsIHsgbGVuZ3RoOiA2NCB9KSxcbiAgaG9tZXBhZ2VVcmw6IHZhcmNoYXIoJ2hvbWVwYWdlX3VybCcsIHsgbGVuZ3RoOiAyMDQ4IH0pLFxuICBzb3VyY2VVcmw6IHZhcmNoYXIoJ3NvdXJjZV91cmwnLCB7IGxlbmd0aDogMjA0OCB9KSxcbiAgaWNvbjoganNvbmIoJ2ljb24nKS4kdHlwZTxQbHVnaW5JY29uPigpLFxuICB1cGxvYWRlZEljb246IGpzb25iKCd1cGxvYWRlZF9pY29uJykuJHR5cGU8UGx1Z2luVXBsb2FkZWRJY29uPigpLFxuICBrZXl3b3JkczoganNvbmIoJ2tleXdvcmRzJykuJHR5cGU8c3RyaW5nW10+KCkuZGVmYXVsdChbXSkubm90TnVsbCgpLFxuICBzdGF0ZTogdmFyY2hhcignc3RhdGUnLCB7IGxlbmd0aDogMjAgfSkuJHR5cGU8TGlzdGluZ1N0YXRlPigpLmRlZmF1bHQoJ2xpc3RlZCcpLm5vdE51bGwoKSxcbiAgLy8gUHVibGlzaGVyIHBhdXNlOiBubyBuZXcgaW5zdGFsbHM7IGV4aXN0aW5nIGluc3RhbGxzIGtlZXAgcmVzb2x2aW5nLlxuICBwYXVzZWRBdDogdGltZXN0YW1wKCdwYXVzZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgZmVhdHVyZWQ6IGJvb2xlYW4oJ2ZlYXR1cmVkJykuZGVmYXVsdChmYWxzZSkubm90TnVsbCgpLFxuICBsYXRlc3RWZXJzaW9uOiB2YXJjaGFyKCdsYXRlc3RfdmVyc2lvbicsIHsgbGVuZ3RoOiA1MCB9KSxcbiAgc2VhcmNoVmVjdG9yOiB0c3ZlY3Rvcignc2VhcmNoX3ZlY3RvcicpLFxuICBjcmVhdGVkQXQ6IHRpbWVzdGFtcCgnY3JlYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLmRlZmF1bHROb3coKS5ub3ROdWxsKCksXG4gIHVwZGF0ZWRBdDogdGltZXN0YW1wKCd1cGRhdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcbn0sICh0YWJsZSkgPT4gKHtcbiAgcHVibGlzaGVyTmFtZVVuaXF1ZTogdW5pcXVlSW5kZXgoJ3BsdWdpbl9saXN0aW5nX3B1Ymxpc2hlcl9uYW1lX3VuaXF1ZScpLm9uKHRhYmxlLnB1Ymxpc2hlcklkLCB0YWJsZS5uYW1lKSxcbiAgc3RhdGVDYXRlZ29yeUlkeDogaW5kZXgoJ3BsdWdpbl9saXN0aW5nX3N0YXRlX2NhdGVnb3J5X2lkeCcpLm9uKHRhYmxlLnN0YXRlLCB0YWJsZS5jYXRlZ29yeSksXG4gIHVwZGF0ZWRBdElkeDogaW5kZXgoJ3BsdWdpbl9saXN0aW5nX3VwZGF0ZWRfYXRfaWR4Jykub24odGFibGUudXBkYXRlZEF0KSxcbiAgc2VhcmNoVmVjdG9ySWR4OiBpbmRleCgncGx1Z2luX2xpc3Rpbmdfc2VhcmNoX3ZlY3Rvcl9pZHgnKS51c2luZygnZ2luJywgdGFibGUuc2VhcmNoVmVjdG9yKSxcbiAgLy8gcGdfdHJnbTogdHlwby10b2xlcmFudCBuYW1lIG1hdGNoaW5nIChcInRlcmFmcm9tXCIgLT4gdGVycmFmb3JtKS5cbiAgbmFtZVRyZ21JZHg6IGluZGV4KCdwbHVnaW5fbGlzdGluZ19uYW1lX3RyZ21faWR4JykudXNpbmcoJ2dpbicsIHNxbGAke3RhYmxlLm5hbWV9IGdpbl90cmdtX29wc2ApLFxuICBzdGF0ZUNoZWNrOiBjaGVjaygncGx1Z2luX2xpc3RpbmdzX3N0YXRlX2NoZWNrJyxcbiAgICBzcWxgJHt0YWJsZS5zdGF0ZX0gSU4gKCdsaXN0ZWQnLCAndW5tYWludGFpbmVkJywgJ3N1c3BlbmRlZCcsICd0cmFuc2ZlcnJlZCcpYCksXG59KSk7XG5cbi8qKlxuICogVGhlIHB1YmxpYywgZnJvemVuIHN1YnNldCBvZiBhIHBsdWdpbiByZWNvcmQgY2FwdHVyZWQgYXQgYXBwcm92YWwsIHNvIGFcbiAqIGxpc3RlZCB2ZXJzaW9uIGtlZXBzIHN5bnRoZXNpemluZyBhZnRlciB0aGUgcHVibGlzaGVyIG9yZydzIG93biBgcGx1Z2luc2BcbiAqIHJvdyBpcyBkZWxldGVkIG9yIHB1cmdlZC4gT25seSB0aGUga2V5cyB0aGUgYHB1YmxpY19saXN0ZWRfdmVyc2lvbnNgXG4gKiB2aWV3IHByb2plY3RzIGFyZSBwdWJsaWM7IHRoZSByZXN0IGlzIHZpc2libGUgdG8gaW5zdGFsbGVycycgc3ludGggb25seS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMaXN0aW5nVmVyc2lvblNwZWNTbmFwc2hvdCB7XG4gIHBsdWdpblR5cGU/OiBzdHJpbmc7XG4gIGNvbXB1dGVUeXBlPzogc3RyaW5nO1xuICBzZWNyZXRzPzogUGx1Z2luU2VjcmV0W107XG4gIHJlcXVpcmVkTWV0YWRhdGE/OiBzdHJpbmdbXTtcbiAgcmVxdWlyZWRWYXJzPzogc3RyaW5nW107XG4gIG5ldHdvcmtFZ3Jlc3M/OiBzdHJpbmdbXTtcbiAgcnVuQXNSb290PzogYm9vbGVhbjtcbiAgbGljZW5zZT86IHN0cmluZztcbiAgcmVhZG1lSHRtbD86IHN0cmluZztcbiAgW2tleTogc3RyaW5nXTogdW5rbm93bjtcbn1cblxuLyoqXG4gKiBBIHZlcnNpb24gcHVibGlzaGVkIHRvIGEgbGlzdGluZyDigJQgdGhlIGNvcHkgaW4gdGhlIHJlYWQtb25seSBgcHVibGljLypgXG4gKiBuYW1lc3BhY2UuIEltbXV0YWJsZSBvbmNlIHdyaXR0ZW4gYXBhcnQgZnJvbSBwYXVzZSAvIHlhbmsgL1xuICogZGVwcmVjYXRpb24uIGBzb3VyY2VQbHVnaW5JZGAgaXMgcHJvdmVuYW5jZSBvbmx5IChubyBGSzogdGhlIG9yZyByb3cgaXNcbiAqIHNvZnQtZGVsZXRlZCBhbmQgcHVyZ2VkIG9uIGl0cyBvd24gc2NoZWR1bGUpLlxuICpcbiAqIEB0YWJsZSBwbHVnaW5fbGlzdGluZ192ZXJzaW9uc1xuICovXG5leHBvcnQgY29uc3QgcGx1Z2luTGlzdGluZ1ZlcnNpb24gPSBwZ1RhYmxlKCdwbHVnaW5fbGlzdGluZ192ZXJzaW9ucycsIHtcbiAgaWQ6IHV1aWQoJ2lkJykucHJpbWFyeUtleSgpLmRlZmF1bHRSYW5kb20oKSxcbiAgbGlzdGluZ0lkOiB1dWlkKCdsaXN0aW5nX2lkJykubm90TnVsbCgpLnJlZmVyZW5jZXMoKCkgPT4gcGx1Z2luTGlzdGluZy5pZCwgeyBvbkRlbGV0ZTogJ2Nhc2NhZGUnIH0pLFxuICBzb3VyY2VQbHVnaW5JZDogdXVpZCgnc291cmNlX3BsdWdpbl9pZCcpLFxuICB2ZXJzaW9uOiB2YXJjaGFyKCd2ZXJzaW9uJywgeyBsZW5ndGg6IDUwIH0pLm5vdE51bGwoKSxcbiAgaW1hZ2VEaWdlc3Q6IHZhcmNoYXIoJ2ltYWdlX2RpZ2VzdCcsIHsgbGVuZ3RoOiA3MSB9KSxcbiAgLy8gcHVibGljLzxoYW5kbGU+LzxuYW1lPlxuICBpbWFnZVJlcG9zaXRvcnk6IHZhcmNoYXIoJ2ltYWdlX3JlcG9zaXRvcnknLCB7IGxlbmd0aDogNTEyIH0pLFxuICBzcGVjU25hcHNob3Q6IGpzb25iKCdzcGVjX3NuYXBzaG90JykuJHR5cGU8TGlzdGluZ1ZlcnNpb25TcGVjU25hcHNob3Q+KCkuZGVmYXVsdCh7fSkubm90TnVsbCgpLFxuICBicmVha2luZzogYm9vbGVhbignYnJlYWtpbmcnKS5kZWZhdWx0KGZhbHNlKS5ub3ROdWxsKCksXG4gIHBhdXNlZEF0OiB0aW1lc3RhbXAoJ3BhdXNlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxuICB5YW5rZWRBdDogdGltZXN0YW1wKCd5YW5rZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgeWFua1JlYXNvbjogdGV4dCgneWFua19yZWFzb24nKSxcbiAgZGVwcmVjYXRlZEF0OiB0aW1lc3RhbXAoJ2RlcHJlY2F0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgZGVwcmVjYXRpb25NZXNzYWdlOiB0ZXh0KCdkZXByZWNhdGlvbl9tZXNzYWdlJyksXG4gIGNoYW5nZWxvZzogdGV4dCgnY2hhbmdlbG9nJyksXG4gIHZ1bG5Dcml0aWNhbDogaW50ZWdlcigndnVsbl9jcml0aWNhbCcpLFxuICB2dWxuSGlnaDogaW50ZWdlcigndnVsbl9oaWdoJyksXG4gIC8vIEZpeGFibGUgc3Vic2V0IChncnlwZSByZXBvcnRzIGEgZml4ZWQgdmVyc2lvbik7IE5VTEwgPSB1bnNjYW5uZWQuXG4gIHZ1bG5Dcml0aWNhbEZpeGFibGU6IGludGVnZXIoJ3Z1bG5fY3JpdGljYWxfZml4YWJsZScpLFxuICB2dWxuSGlnaEZpeGFibGU6IGludGVnZXIoJ3Z1bG5faGlnaF9maXhhYmxlJyksXG4gIHNjYW5uZWRBdDogdGltZXN0YW1wKCdzY2FubmVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG4gIC8vIFRoZSBuaWdodGx5IHJlc2NhbidzIGZsYWcgKGdhdGVkIGZpbmRpbmdzIG92ZXIgUExVR0lOX1ZVTE5fTUFYX0ZJTkRJTkdTKTsgTlVMTCA9IG5vdCBmbGFnZ2VkLlxuICBzY2FuRmxhZ2dlZEF0OiB0aW1lc3RhbXAoJ3NjYW5fZmxhZ2dlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxuICBzY2FuRmxhZzoganNvbmIoJ3NjYW5fZmxhZycpLiR0eXBlPFBsdWdpblNjYW5GbGFnPigpLFxuICAvKipcbiAgICogVGhlIExBU1QgcmVzY2FuJ3MgZmluZGluZ3MgZm9yIHRoaXMgdmVyc2lvbiwgd3JpdHRlbiB3aGV0aGVyIG9yIG5vdCB0aGVcbiAgICogZ2F0aW5nIGZsYWcgdHJpcHBlZC5cbiAgICpcbiAgICogYHNjYW5fZmxhZ2AgaXMgc2V0IG9ubHkgd2hpbGUgZml4YWJsZSBjcml0aWNhbHMgZXhjZWVkXG4gICAqIFBMVUdJTl9WVUxOX01BWF9GSU5ESU5HUywgc28gYSB2ZXJzaW9uIGNhcnJ5aW5nIG9ubHkgSGlnaCBmaW5kaW5ncyBzdG9yZXNcbiAgICogbm90aGluZyDigJQgYW5kIHRoZSB2dWxuZXJhYmlsaXR5IHJlcG9ydCBzZWN0aW9uLCB3aG9zZSB3aG9sZSBqb2IgaXMgdG8gc2hvd1xuICAgKiBDcml0aWNhbCBBTkQgSGlnaCBleHBvc3VyZSwgaGFkIG5vIHNvdXJjZSB0byByZWFkLiBUaGlzIGhvbGRzIHRoZSBjb3VudHMgYW5kXG4gICAqIHRoZSB0b3AgZmluZGluZ3MgZm9yIGV2ZXJ5IGluLXVzZSB2ZXJzaW9uLCBpbmRlcGVuZGVudCBvZiB0aGUgZ2F0ZTogd2hhdCBhXG4gICAqIHJlcG9ydCBzaG93cyBhbmQgd2hhdCBhIGJ1aWxkIHJlZnVzZXMgYXJlIGRpZmZlcmVudCBxdWVzdGlvbnMuXG4gICAqL1xuICBzY2FuU3VtbWFyeToganNvbmIoJ3NjYW5fc3VtbWFyeScpLiR0eXBlPFBsdWdpblNjYW5TdW1tYXJ5PigpLFxuICAvLyBUaGUgYmFzZSBpbWFnZSdzIGNvbmZpZyBgY3JlYXRlZGAgdGltZSwgcmVjb3JkZWQgYXQgcHVibGlzaDsgTlVMTCA9IHVua25vd24uXG4gIGJhc2VJbWFnZUNyZWF0ZWRBdDogdGltZXN0YW1wKCdiYXNlX2ltYWdlX2NyZWF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgLy8gV2hlbiBtYWludGVuYW5jZSBjb2xsZWN0ZWQgdGhpcyBsb25nLXlhbmtlZCwgdW5yZWZlcmVuY2VkIHZlcnNpb24ncyBwdWJsaWMvKiBpbWFnZTsgTlVMTCA9IHN0aWxsIHN0b3JlZC5cbiAgaW1hZ2VDb2xsZWN0ZWRBdDogdGltZXN0YW1wKCdpbWFnZV9jb2xsZWN0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgcHVibGlzaGVkQXQ6IHRpbWVzdGFtcCgncHVibGlzaGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcbiAgcHVibGlzaGVkQnk6IHRleHQoJ3B1Ymxpc2hlZF9ieScpLm5vdE51bGwoKSxcbn0sICh0YWJsZSkgPT4gKHtcbiAgbGlzdGluZ1ZlcnNpb25VbmlxdWU6IHVuaXF1ZUluZGV4KCdwbHVnaW5fbGlzdGluZ192ZXJzaW9uX3VuaXF1ZScpLm9uKHRhYmxlLmxpc3RpbmdJZCwgdGFibGUudmVyc2lvbiksXG4gIC8vIHB1YmxpYy8qIEdDIGd1YXJkICsgZGlnZXN0IGxvb2t1cHMuXG4gIGRpZ2VzdElkeDogaW5kZXgoJ3BsdWdpbl9saXN0aW5nX3ZlcnNpb25fZGlnZXN0X2lkeCcpLm9uKHRhYmxlLmltYWdlRGlnZXN0KSxcbiAgdmVyc2lvbkNoZWNrOiBjaGVjaygncGx1Z2luX2xpc3RpbmdfdmVyc2lvbnNfdmVyc2lvbl9jaGVjaycsXG4gICAgc3FsYCR7dGFibGUudmVyc2lvbn0gfiAnXlswLTldK1xcLlswLTldK1xcLlswLTldKygtW2EtekEtWjAtOS4tXSspPyhcXCtbYS16QS1aMC05Li1dKyk/JCdgLFxuICApLFxuICBpbWFnZURpZ2VzdENoZWNrOiBjaGVjaygncGx1Z2luX2xpc3RpbmdfdmVyc2lvbnNfaW1hZ2VfZGlnZXN0X2NoZWNrJyxcbiAgICBzcWxgJHt0YWJsZS5pbWFnZURpZ2VzdH0gSVMgTlVMTCBPUiAke3RhYmxlLmltYWdlRGlnZXN0fSB+ICdec2hhMjU2OlswLTlhLWZdezY0fSQnYCksXG59KSk7XG5cbi8qKlxuICogU2VjdXJpdHkgYWR2aXNvcnkgYWdhaW5zdCBhIGxpc3RpbmcncyB2ZXJzaW9uIHJhbmdlLlxuICpcbiAqIEB0YWJsZSBwbHVnaW5fYWR2aXNvcmllc1xuICovXG5leHBvcnQgY29uc3QgcGx1Z2luQWR2aXNvcnkgPSBwZ1RhYmxlKCdwbHVnaW5fYWR2aXNvcmllcycsIHtcbiAgaWQ6IHV1aWQoJ2lkJykucHJpbWFyeUtleSgpLmRlZmF1bHRSYW5kb20oKSxcbiAgbGlzdGluZ0lkOiB1dWlkKCdsaXN0aW5nX2lkJykubm90TnVsbCgpLnJlZmVyZW5jZXMoKCkgPT4gcGx1Z2luTGlzdGluZy5pZCksXG4gIHB1Ymxpc2hlcklkOiB1dWlkKCdwdWJsaXNoZXJfaWQnKS5ub3ROdWxsKCkucmVmZXJlbmNlcygoKSA9PiBwdWJsaXNoZXIuaWQpLFxuICAvLyBTZW12ZXIgcmFuZ2Ugb2YgYWZmZWN0ZWQgdmVyc2lvbnMuXG4gIGFmZmVjdGVkUmFuZ2U6IHZhcmNoYXIoJ2FmZmVjdGVkX3JhbmdlJywgeyBsZW5ndGg6IDI1NSB9KS5ub3ROdWxsKCksXG4gIGZpeGVkVmVyc2lvbjogdmFyY2hhcignZml4ZWRfdmVyc2lvbicsIHsgbGVuZ3RoOiA1MCB9KSxcbiAgc2V2ZXJpdHk6IHZhcmNoYXIoJ3NldmVyaXR5JywgeyBsZW5ndGg6IDEwIH0pLiR0eXBlPEFkdmlzb3J5U2V2ZXJpdHk+KCkubm90TnVsbCgpLFxuICBzdW1tYXJ5OiB2YXJjaGFyKCdzdW1tYXJ5JywgeyBsZW5ndGg6IDMwMCB9KS5ub3ROdWxsKCksXG4gIGRldGFpbHNNZDogdGV4dCgnZGV0YWlsc19tZCcpLFxuICBkZXRhaWxzSHRtbDogdGV4dCgnZGV0YWlsc19odG1sJyksXG4gIGN2ZUlkczogdGV4dCgnY3ZlX2lkcycpLmFycmF5KCkuZGVmYXVsdChbXSkubm90TnVsbCgpLFxuICBzdGF0ZTogdmFyY2hhcignc3RhdGUnLCB7IGxlbmd0aDogMjAgfSkuJHR5cGU8QWR2aXNvcnlTdGF0ZT4oKS5kZWZhdWx0KCdkcmFmdCcpLm5vdE51bGwoKSxcbiAgc291cmNlOiB2YXJjaGFyKCdzb3VyY2UnLCB7IGxlbmd0aDogMjAgfSkuJHR5cGU8QWR2aXNvcnlTb3VyY2U+KCkubm90TnVsbCgpLFxuICBjcmVhdGVkQnk6IHRleHQoJ2NyZWF0ZWRfYnknKS5ub3ROdWxsKCksXG4gIHB1Ymxpc2hlZEJ5OiB0ZXh0KCdwdWJsaXNoZWRfYnknKSxcbiAgcHVibGlzaGVkQXQ6IHRpbWVzdGFtcCgncHVibGlzaGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG4gIHdpdGhkcmF3bkF0OiB0aW1lc3RhbXAoJ3dpdGhkcmF3bl9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxuICBjcmVhdGVkQXQ6IHRpbWVzdGFtcCgnY3JlYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLmRlZmF1bHROb3coKS5ub3ROdWxsKCksXG4gIHVwZGF0ZWRBdDogdGltZXN0YW1wKCd1cGRhdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcbn0sICh0YWJsZSkgPT4gKHtcbiAgbGlzdGluZ1N0YXRlSWR4OiBpbmRleCgncGx1Z2luX2Fkdmlzb3J5X2xpc3Rpbmdfc3RhdGVfaWR4Jykub24odGFibGUubGlzdGluZ0lkLCB0YWJsZS5zdGF0ZSksXG4gIHB1Ymxpc2hlcklkeDogaW5kZXgoJ3BsdWdpbl9hZHZpc29yeV9wdWJsaXNoZXJfaWR4Jykub24odGFibGUucHVibGlzaGVySWQpLFxuICBzZXZlcml0eUNoZWNrOiBjaGVjaygncGx1Z2luX2Fkdmlzb3JpZXNfc2V2ZXJpdHlfY2hlY2snLFxuICAgIHNxbGAke3RhYmxlLnNldmVyaXR5fSBJTiAoJ2NyaXRpY2FsJywgJ2hpZ2gnLCAnbWVkaXVtJywgJ2xvdycpYCksXG4gIHN0YXRlQ2hlY2s6IGNoZWNrKCdwbHVnaW5fYWR2aXNvcmllc19zdGF0ZV9jaGVjaycsIHNxbGAke3RhYmxlLnN0YXRlfSBJTiAoJ2RyYWZ0JywgJ3B1Ymxpc2hlZCcsICd3aXRoZHJhd24nKWApLFxuICBzb3VyY2VDaGVjazogY2hlY2soJ3BsdWdpbl9hZHZpc29yaWVzX3NvdXJjZV9jaGVjaycsXG4gICAgc3FsYCR7dGFibGUuc291cmNlfSBJTiAoJ3B1Ymxpc2hlcicsICdtb2RlcmF0b3InLCAnY3ZlX3Jlc2NhbicsICdyZXZpZXcnKWApLFxufSkpO1xuXG4vKipcbiAqIEEgcHJvcG9zZWQgZW5hYmxlIG9yIHdpZGVuaW5nIG9mIGFuIGF1dG8tYXBwcm92YWwgcnVsZSwgd2FpdGluZyBmb3IgYSBTRUNPTkRcbiAqIEVjb3N5c3RlbSBNYW5hZ2VyIChuZXZlciB0aGUgcHJvcG9zZXIpLiBEaXNhYmxpbmcgb3IgZGVsZXRpbmcgYSBydWxlXG4gKiBuYXJyb3dzIGl0IGFuZCBhcHBsaWVzIGF0IG9uY2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXV0b0FwcHJvdmFsUnVsZVBlbmRpbmdDaGFuZ2Uge1xuICByZXF1ZXN0ZWRCeTogc3RyaW5nO1xuICByZXF1ZXN0ZWRBdDogc3RyaW5nO1xuICBlbmFibGVkOiBib29sZWFuO1xuICBuYW1lOiBzdHJpbmc7XG4gIGNvbmRpdGlvbnM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xufVxuXG4vKipcbiAqIFN5c3RlbS1vcmcgYXV0by1hcHByb3ZhbCBydWxlczsgZW5hYmxpbmcgb3Igd2lkZW5pbmcgb25lXG4gKiBuZWVkcyBhIHNlY29uZCBhcHByb3ZlciAoYHBlbmRpbmdDaGFuZ2VgKS5cbiAqXG4gKiBAdGFibGUgZWNvc3lzdGVtX2F1dG9fYXBwcm92YWxfcnVsZXNcbiAqL1xuZXhwb3J0IGNvbnN0IGVjb3N5c3RlbUF1dG9BcHByb3ZhbFJ1bGUgPSBwZ1RhYmxlKCdlY29zeXN0ZW1fYXV0b19hcHByb3ZhbF9ydWxlcycsIHtcbiAgaWQ6IHV1aWQoJ2lkJykucHJpbWFyeUtleSgpLmRlZmF1bHRSYW5kb20oKSxcbiAgbmFtZTogdmFyY2hhcignbmFtZScsIHsgbGVuZ3RoOiAyNTUgfSkubm90TnVsbCgpLFxuICBlbmFibGVkOiBib29sZWFuKCdlbmFibGVkJykuZGVmYXVsdChmYWxzZSkubm90TnVsbCgpLFxuICBjb25kaXRpb25zOiBqc29uYignY29uZGl0aW9ucycpLiR0eXBlPFJlY29yZDxzdHJpbmcsIHVua25vd24+PigpLmRlZmF1bHQoe30pLm5vdE51bGwoKSxcbiAgY3JlYXRlZEJ5OiB0ZXh0KCdjcmVhdGVkX2J5Jykubm90TnVsbCgpLFxuICAvLyBTZWNvbmQgYXBwcm92ZXIgKG5ldmVyIHRoZSBjcmVhdG9yKS5cbiAgYXBwcm92ZWRCeTogdGV4dCgnYXBwcm92ZWRfYnknKSxcbiAgcGVuZGluZ0NoYW5nZToganNvbmIoJ3BlbmRpbmdfY2hhbmdlJykuJHR5cGU8QXV0b0FwcHJvdmFsUnVsZVBlbmRpbmdDaGFuZ2U+KCksXG4gIGNyZWF0ZWRBdDogdGltZXN0YW1wKCdjcmVhdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcbiAgdXBkYXRlZEF0OiB0aW1lc3RhbXAoJ3VwZGF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5kZWZhdWx0Tm93KCkubm90TnVsbCgpLFxufSk7XG5cbi8qKlxuICogVGhlIHNpbmdsZSBxdWV1ZSB0aGUgRWNvc3lzdGVtIGNvbnNvbGUgd29ya3MgZnJvbS4gYGRpZ2VzdGAgaXMgcGlubmVkXG4gKiBhdCBzdWJtaXQ6IGFwcHJvdmFsIHB1Ymxpc2hlcyBleGFjdGx5IGl0LCBvciBmYWlscyBjbG9zZWQuIGBwbHVnaW5JZGBcbiAqIGhhcyBubyBGSyAodGhlIG9yZyByb3cgaXMgc29mdC1kZWxldGVkIGFuZCBwdXJnZWQgb24gaXRzIG93biBzY2hlZHVsZSkuXG4gKlxuICogQHRhYmxlIHBsdWdpbl9wdWJsaXNoX3JlcXVlc3RzXG4gKi9cbmV4cG9ydCBjb25zdCBwbHVnaW5QdWJsaXNoUmVxdWVzdCA9IHBnVGFibGUoJ3BsdWdpbl9wdWJsaXNoX3JlcXVlc3RzJywge1xuICBpZDogdXVpZCgnaWQnKS5wcmltYXJ5S2V5KCkuZGVmYXVsdFJhbmRvbSgpLFxuICBwdWJsaXNoZXJJZDogdXVpZCgncHVibGlzaGVyX2lkJykubm90TnVsbCgpLnJlZmVyZW5jZXMoKCkgPT4gcHVibGlzaGVyLmlkKSxcbiAgbGlzdGluZ0lkOiB1dWlkKCdsaXN0aW5nX2lkJykucmVmZXJlbmNlcygoKSA9PiBwbHVnaW5MaXN0aW5nLmlkKSxcbiAgcGx1Z2luSWQ6IHV1aWQoJ3BsdWdpbl9pZCcpLFxuICB2ZXJzaW9uOiB2YXJjaGFyKCd2ZXJzaW9uJywgeyBsZW5ndGg6IDUwIH0pLFxuICBkaWdlc3Q6IHZhcmNoYXIoJ2RpZ2VzdCcsIHsgbGVuZ3RoOiA3MSB9KSxcbiAga2luZDogdmFyY2hhcigna2luZCcsIHsgbGVuZ3RoOiAyMCB9KS4kdHlwZTxQdWJsaXNoUmVxdWVzdEtpbmQ+KCkubm90TnVsbCgpLFxuICBzZWN1cml0eUZpeEFkdmlzb3J5SWQ6IHV1aWQoJ3NlY3VyaXR5X2ZpeF9hZHZpc29yeV9pZCcpLnJlZmVyZW5jZXMoKCkgPT4gcGx1Z2luQWR2aXNvcnkuaWQpLFxuICBwYXlsb2FkOiBqc29uYigncGF5bG9hZCcpLiR0eXBlPFJlY29yZDxzdHJpbmcsIHVua25vd24+PigpLmRlZmF1bHQoe30pLm5vdE51bGwoKSxcbiAgc3RhdHVzOiB2YXJjaGFyKCdzdGF0dXMnLCB7IGxlbmd0aDogMzAgfSkuJHR5cGU8UHVibGlzaFJlcXVlc3RTdGF0dXM+KCkuZGVmYXVsdCgncGVuZGluZycpLm5vdE51bGwoKSxcbiAgbGFuZTogdmFyY2hhcignbGFuZScsIHsgbGVuZ3RoOiAxMCB9KS4kdHlwZTxQdWJsaXNoUmVxdWVzdExhbmU+KCkuZGVmYXVsdCgnc3RhbmRhcmQnKS5ub3ROdWxsKCksXG4gIHN1Ym1pdHRlZEJ5OiB0ZXh0KCdzdWJtaXR0ZWRfYnknKS5ub3ROdWxsKCksXG4gIHN1Ym1pdHRlZE9yZ0lkOiB2YXJjaGFyKCdzdWJtaXR0ZWRfb3JnX2lkJywgeyBsZW5ndGg6IDI1NSB9KSxcbiAgZmlyc3RBcHByb3ZlZEJ5OiB0ZXh0KCdmaXJzdF9hcHByb3ZlZF9ieScpLFxuICBkZWNpZGVkQnk6IHRleHQoJ2RlY2lkZWRfYnknKSxcbiAgc2Vjb25kQXBwcm92ZWRCeTogdGV4dCgnc2Vjb25kX2FwcHJvdmVkX2J5JyksXG4gIHJlYXNvbjogdGV4dCgncmVhc29uJyksXG4gIGF1dG9SdWxlSWQ6IHV1aWQoJ2F1dG9fcnVsZV9pZCcpLnJlZmVyZW5jZXMoKCkgPT4gZWNvc3lzdGVtQXV0b0FwcHJvdmFsUnVsZS5pZCksXG4gIGNyZWF0ZWRBdDogdGltZXN0YW1wKCdjcmVhdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcbiAgZGVjaWRlZEF0OiB0aW1lc3RhbXAoJ2RlY2lkZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbn0sICh0YWJsZSkgPT4gKHtcbiAgc3RhdHVzQ3JlYXRlZElkeDogaW5kZXgoJ3BsdWdpbl9wdWJsaXNoX3JlcXVlc3Rfc3RhdHVzX2NyZWF0ZWRfaWR4Jykub24odGFibGUuc3RhdHVzLCB0YWJsZS5jcmVhdGVkQXQpLFxuICBwdWJsaXNoZXJJZHg6IGluZGV4KCdwbHVnaW5fcHVibGlzaF9yZXF1ZXN0X3B1Ymxpc2hlcl9pZHgnKS5vbih0YWJsZS5wdWJsaXNoZXJJZCwgdGFibGUuY3JlYXRlZEF0KSxcbiAgLy8gQXQgbW9zdCBPTkUgb3BlbiByZXF1ZXN0IG9mIGEga2luZCBwZXIgKHB1Ymxpc2hlciwgbGlzdGluZywgdmVyc2lvbikuIEFcbiAgLy8gbmV3X2xpc3RpbmcgaGFzIG5vIGxpc3RpbmcgeWV0LCBzbyB0aGUgcmVxdWVzdGVkIG5hbWUgKHBheWxvYWQtPj4nbmFtZScpXG4gIC8vIHN0YW5kcyBpbjsgQ09BTEVTQ0UgYmVjYXVzZSBOVUxMcyBhcmUgRElTVElOQ1QgaW4gYSB1bmlxdWUgaW5kZXguIEFkdmlzb3J5XG4gIC8vIGRyYWZ0cyBhcmUgZXhlbXB0OiBhIGxpc3RpbmcgY2FuIGNhcnJ5IHNldmVyYWwgYXQgb25jZSAoZGlmZmVyZW50IHJhbmdlc1xuICAvLyBhbmQgQ1ZFIHNldHMpLCBlYWNoIGRlZHVwbGljYXRlZCBieSB0aGUgYWR2aXNvcnkgc2VydmljZS4gTXVzdCBtYXRjaCB0aGVcbiAgLy8gcG9zdGdyZXMtaW5pdC5zcWwgZXhwcmVzc2lvbiBpbmRleC5cbiAgb3BlblVuaXF1ZTogdW5pcXVlSW5kZXgoJ3BsdWdpbl9wdWJsaXNoX3JlcXVlc3Rfb3Blbl91bmlxdWUnKVxuICAgIC5vbihcbiAgICAgIHRhYmxlLnB1Ymxpc2hlcklkLFxuICAgICAgdGFibGUua2luZCxcbiAgICAgIHNxbGBjb2FsZXNjZSgke3RhYmxlLmxpc3RpbmdJZH06OnRleHQsICR7dGFibGUucGF5bG9hZH0tPj4nbmFtZScsICcnKWAsXG4gICAgICBzcWxgY29hbGVzY2UoJHt0YWJsZS52ZXJzaW9ufSwgJycpYCxcbiAgICApXG4gICAgLndoZXJlKHNxbGBzdGF0dXMgSU4gKCdwZW5kaW5nJywgJ3BlbmRpbmdfc2Vjb25kX2FwcHJvdmFsJykgQU5EIGtpbmQgPD4gJ2Fkdmlzb3J5J2ApLFxuICBkaWdlc3RDaGVjazogY2hlY2soJ3BsdWdpbl9wdWJsaXNoX3JlcXVlc3RzX2RpZ2VzdF9jaGVjaycsXG4gICAgc3FsYCR7dGFibGUuZGlnZXN0fSBJUyBOVUxMIE9SICR7dGFibGUuZGlnZXN0fSB+ICdec2hhMjU2OlswLTlhLWZdezY0fSQnYCksXG4gIGtpbmRDaGVjazogY2hlY2soJ3BsdWdpbl9wdWJsaXNoX3JlcXVlc3RzX2tpbmRfY2hlY2snLCBzcWxgJHt0YWJsZS5raW5kfSBJTiAoJ25ld19saXN0aW5nJywgJ25ld192ZXJzaW9uJyxcbiAgICAnbGlzdGluZ191cGRhdGUnLCAneWFuaycsICd1bnBhdXNlJywgJ3RyYW5zZmVyJywgJ2NsYWltJywgJ3Byb2ZpbGVfY2hhbmdlJywgJ2Fkdmlzb3J5JywgJ3ZlcmlmeScsICdtb2RlcmF0aW9uJyxcbiAgICAnc3VibWlzc2lvbicpYCksXG4gIHN0YXR1c0NoZWNrOiBjaGVjaygncGx1Z2luX3B1Ymxpc2hfcmVxdWVzdHNfc3RhdHVzX2NoZWNrJyxcbiAgICBzcWxgJHt0YWJsZS5zdGF0dXN9IElOICgncGVuZGluZycsICdwZW5kaW5nX3NlY29uZF9hcHByb3ZhbCcsICdhcHByb3ZlZCcsICdyZWplY3RlZCcsICd3aXRoZHJhd24nKWApLFxuICBsYW5lQ2hlY2s6IGNoZWNrKCdwbHVnaW5fcHVibGlzaF9yZXF1ZXN0c19sYW5lX2NoZWNrJywgc3FsYCR7dGFibGUubGFuZX0gSU4gKCdzdGFuZGFyZCcsICdzZWN1cml0eScpYCksXG59KSk7XG5cbi8qKlxuICogTmFtZXMgaGVsZCBiYWNrIGZyb20gaGFuZGxlcy9saXN0aW5ncyAoT2ZmaWNpYWwvVmVyaWZpZWQgcmVzZXJ2YXRpb25zLFxuICogY29uZnVzYWJsZXMpLiBgcHVibGlzaGVySWRgID0gdGhlIHB1Ymxpc2hlciB0aGUgbmFtZSBpcyByZXNlcnZlZCBGT1IsIGlmIGFueS5cbiAqXG4gKiBAdGFibGUgZWNvc3lzdGVtX3Jlc2VydmVkX25hbWVzXG4gKi9cbmV4cG9ydCBjb25zdCBlY29zeXN0ZW1SZXNlcnZlZE5hbWUgPSBwZ1RhYmxlKCdlY29zeXN0ZW1fcmVzZXJ2ZWRfbmFtZXMnLCB7XG4gIG5hbWU6IHZhcmNoYXIoJ25hbWUnLCB7IGxlbmd0aDogMjU1IH0pLnByaW1hcnlLZXkoKSxcbiAgcmVhc29uOiB0ZXh0KCdyZWFzb24nKSxcbiAgcHVibGlzaGVySWQ6IHV1aWQoJ3B1Ymxpc2hlcl9pZCcpLnJlZmVyZW5jZXMoKCkgPT4gcHVibGlzaGVyLmlkKSxcbiAgY3JlYXRlZEF0OiB0aW1lc3RhbXAoJ2NyZWF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5kZWZhdWx0Tm93KCkubm90TnVsbCgpLFxufSk7XG5cbi8qKlxuICogSW5zdGFuY2Utd2lkZSBlY29zeXN0ZW0ga25vYnMgKGZsYWdzLCBTTEEsIHRocmVzaG9sZHMpLCBrZXkvdmFsdWUuXG4gKlxuICogQHRhYmxlIGVjb3N5c3RlbV9zZXR0aW5nc1xuICovXG5leHBvcnQgY29uc3QgZWNvc3lzdGVtU2V0dGluZyA9IHBnVGFibGUoJ2Vjb3N5c3RlbV9zZXR0aW5ncycsIHtcbiAga2V5OiB2YXJjaGFyKCdrZXknLCB7IGxlbmd0aDogMTAwIH0pLnByaW1hcnlLZXkoKSxcbiAgdmFsdWU6IGpzb25iKCd2YWx1ZScpLiR0eXBlPHVua25vd24+KCkubm90TnVsbCgpLFxuICB1cGRhdGVkQnk6IHRleHQoJ3VwZGF0ZWRfYnknKSxcbiAgdXBkYXRlZEF0OiB0aW1lc3RhbXAoJ3VwZGF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5kZWZhdWx0Tm93KCkubm90TnVsbCgpLFxufSk7XG5cbi8vIGBlY29zeXN0ZW1fY29sbGVjdGlvbnNgIHdhcyBERUxFVEVEIGhlcmUuIEl0IG1vZGVsbGVkIGN1cmF0ZWQgZGlyZWN0b3J5IGNvbGxlY3Rpb25zXG4vLyAoXCJGZWF0dXJlZFwiLCBcIlNlY3VyaXR5IHNjYW5uZXJzXCIpIGFzIHNsdWcgKyB0aXRsZSArIGEgSlNPTkIgbGlzdCBvZiBsaXN0aW5nIGlkcywgYW5kXG4vLyBub3RoaW5nIGV2ZXIgd3JvdGUgb3IgcmVhZCBvbmUg4oCUIHRoZSBwdWJsaWMgZGlyZWN0b3J5IHJhbmtzIGFuZCBmYWNldHMgbGlzdGluZ3Ncbi8vIGRpcmVjdGx5LiBBIHNjaGVtYSB0ZXN0IGFzc2VydGluZyBpdHMgc2hhcGUgd2FzIHRoZSBvbmx5IHRoaW5nIGtlZXBpbmcgaXQgYWxpdmUuXG5cbi8qKlxuICogQSBsaXN0aW5nIHJldmlldy4gYGF1dGhvck9yZ0lkYCBmZWVkcyB0aGUgaW50ZWdyaXR5IHJ1bGVzIChub1xuICogc2VsZi1yZXZpZXcsIHBlci1vcmcgcmF0ZSBsaW1pdCwgdmVyaWZpZWQgdXNlKSBhbmQgaXMgTkVWRVIgZXhwb3NlZC4gR0RQUlxuICogdXNlciBkZWxldGlvbiBhbm9ueW1pemVzOiBgYXV0aG9yVXNlcklkYCBhbmQgdGhlIGJvZHkgZ28gTlVMTCwgdGhlIHJhdGluZyBzdGF5cy5cbiAqXG4gKiBAdGFibGUgcGx1Z2luX3Jldmlld3NcbiAqL1xuZXhwb3J0IGNvbnN0IHBsdWdpblJldmlldyA9IHBnVGFibGUoJ3BsdWdpbl9yZXZpZXdzJywge1xuICBpZDogdXVpZCgnaWQnKS5wcmltYXJ5S2V5KCkuZGVmYXVsdFJhbmRvbSgpLFxuICBsaXN0aW5nSWQ6IHV1aWQoJ2xpc3RpbmdfaWQnKS5ub3ROdWxsKCkucmVmZXJlbmNlcygoKSA9PiBwbHVnaW5MaXN0aW5nLmlkLCB7IG9uRGVsZXRlOiAnY2FzY2FkZScgfSksXG4gIHZlcnNpb246IHZhcmNoYXIoJ3ZlcnNpb24nLCB7IGxlbmd0aDogNTAgfSksXG4gIHJhdGluZzogc21hbGxpbnQoJ3JhdGluZycpLm5vdE51bGwoKSxcbiAgdGl0bGU6IHZhcmNoYXIoJ3RpdGxlJywgeyBsZW5ndGg6IDEyMCB9KSxcbiAgYm9keU1kOiB0ZXh0KCdib2R5X21kJyksXG4gIGJvZHlIdG1sOiB0ZXh0KCdib2R5X2h0bWwnKSxcbiAgYXV0aG9yVXNlcklkOiB0ZXh0KCdhdXRob3JfdXNlcl9pZCcpLFxuICBhdXRob3JPcmdJZDogdmFyY2hhcignYXV0aG9yX29yZ19pZCcsIHsgbGVuZ3RoOiAyNTUgfSksXG4gIC8vIFRoZSBvbmx5IGF1dGhvciBmaWVsZCBldmVyIHNob3duIChzbmFwc2hvdCBhdCB3cml0ZSB0aW1lOyBOVUxMIG9uY2UgYW5vbnltaXplZCkuXG4gIGF1dGhvckRpc3BsYXlOYW1lOiB2YXJjaGFyKCdhdXRob3JfZGlzcGxheV9uYW1lJywgeyBsZW5ndGg6IDEwMCB9KSxcbiAgdmVyaWZpZWRVc2U6IGJvb2xlYW4oJ3ZlcmlmaWVkX3VzZScpLmRlZmF1bHQoZmFsc2UpLm5vdE51bGwoKSxcbiAgc3RhdHVzOiB2YXJjaGFyKCdzdGF0dXMnLCB7IGxlbmd0aDogMTAgfSkuJHR5cGU8UmV2aWV3U3RhdHVzPigpLmRlZmF1bHQoJ3B1Ymxpc2hlZCcpLm5vdE51bGwoKSxcbiAgaG9sZFJlYXNvbjogdmFyY2hhcignaG9sZF9yZWFzb24nLCB7IGxlbmd0aDogMjAgfSkuJHR5cGU8UmV2aWV3SG9sZFJlYXNvbj4oKSxcbiAgbW9kZXJhdGlvblJlYXNvbjogdGV4dCgnbW9kZXJhdGlvbl9yZWFzb24nKSxcbiAgaGVscGZ1bENvdW50OiBpbnRlZ2VyKCdoZWxwZnVsX2NvdW50JykuZGVmYXVsdCgwKS5ub3ROdWxsKCksXG4gIGNyZWF0ZWRBdDogdGltZXN0YW1wKCdjcmVhdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcbiAgdXBkYXRlZEF0OiB0aW1lc3RhbXAoJ3VwZGF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5kZWZhdWx0Tm93KCkubm90TnVsbCgpLFxufSwgKHRhYmxlKSA9PiAoe1xuICBsaXN0aW5nQXV0aG9yVW5pcXVlOiB1bmlxdWVJbmRleCgncGx1Z2luX3Jldmlld19saXN0aW5nX2F1dGhvcl91bmlxdWUnKS5vbih0YWJsZS5saXN0aW5nSWQsIHRhYmxlLmF1dGhvclVzZXJJZCksXG4gIGxpc3RpbmdTdGF0dXNDcmVhdGVkSWR4OiBpbmRleCgncGx1Z2luX3Jldmlld19saXN0aW5nX3N0YXR1c19jcmVhdGVkX2lkeCcpXG4gICAgLm9uKHRhYmxlLmxpc3RpbmdJZCwgdGFibGUuc3RhdHVzLCB0YWJsZS5jcmVhdGVkQXQpLFxuICAvLyBQZXItb3JnIGRhaWx5IHJldmlldyBjYXAuXG4gIGF1dGhvck9yZ0NyZWF0ZWRJZHg6IGluZGV4KCdwbHVnaW5fcmV2aWV3X2F1dGhvcl9vcmdfY3JlYXRlZF9pZHgnKS5vbih0YWJsZS5hdXRob3JPcmdJZCwgdGFibGUuY3JlYXRlZEF0KSxcbiAgLy8gTW9kZXJhdGlvbiBxdWV1ZS5cbiAgc3RhdHVzVXBkYXRlZElkeDogaW5kZXgoJ3BsdWdpbl9yZXZpZXdfc3RhdHVzX3VwZGF0ZWRfaWR4Jykub24odGFibGUuc3RhdHVzLCB0YWJsZS51cGRhdGVkQXQpLFxuICByYXRpbmdDaGVjazogY2hlY2soJ3BsdWdpbl9yZXZpZXdzX3JhdGluZ19jaGVjaycsIHNxbGAke3RhYmxlLnJhdGluZ30gQkVUV0VFTiAxIEFORCA1YCksXG4gIHN0YXR1c0NoZWNrOiBjaGVjaygncGx1Z2luX3Jldmlld3Nfc3RhdHVzX2NoZWNrJywgc3FsYCR7dGFibGUuc3RhdHVzfSBJTiAoJ3B1Ymxpc2hlZCcsICdoZWxkJywgJ3JlbW92ZWQnKWApLFxuICBob2xkUmVhc29uQ2hlY2s6IGNoZWNrKCdwbHVnaW5fcmV2aWV3c19ob2xkX3JlYXNvbl9jaGVjaycsXG4gICAgc3FsYCR7dGFibGUuaG9sZFJlYXNvbn0gSU4gKCdyZXBvcnRzJywgJ2J1cnN0JywgJ2ZpbHRlcicsICdzZWN1cml0eScsICdtb2RlcmF0b3InKWApLFxufSkpO1xuXG4vKipcbiAqIFRoZSBvbmUgcHVibGljIHB1Ymxpc2hlciByZXBseSB0byBhIHJldmlldy5cbiAqXG4gKiBAdGFibGUgcGx1Z2luX3Jldmlld19yZXBsaWVzXG4gKi9cbmV4cG9ydCBjb25zdCBwbHVnaW5SZXZpZXdSZXBseSA9IHBnVGFibGUoJ3BsdWdpbl9yZXZpZXdfcmVwbGllcycsIHtcbiAgcmV2aWV3SWQ6IHV1aWQoJ3Jldmlld19pZCcpLnByaW1hcnlLZXkoKS5yZWZlcmVuY2VzKCgpID0+IHBsdWdpblJldmlldy5pZCwgeyBvbkRlbGV0ZTogJ2Nhc2NhZGUnIH0pLFxuICBwdWJsaXNoZXJJZDogdXVpZCgncHVibGlzaGVyX2lkJykubm90TnVsbCgpLnJlZmVyZW5jZXMoKCkgPT4gcHVibGlzaGVyLmlkKSxcbiAgYXV0aG9yVXNlcklkOiB0ZXh0KCdhdXRob3JfdXNlcl9pZCcpLFxuICBib2R5TWQ6IHRleHQoJ2JvZHlfbWQnKS5ub3ROdWxsKCksXG4gIGJvZHlIdG1sOiB0ZXh0KCdib2R5X2h0bWwnKS5ub3ROdWxsKCksXG4gIGNyZWF0ZWRBdDogdGltZXN0YW1wKCdjcmVhdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcbiAgdXBkYXRlZEF0OiB0aW1lc3RhbXAoJ3VwZGF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5kZWZhdWx0Tm93KCkubm90TnVsbCgpLFxufSk7XG5cbi8qKlxuICogXCJSZXBvcnQgcmV2aWV3XCIg4oCUIG9uZSBwZXIgcmVwb3J0ZXIgcGVyIHJldmlldzsgTiByZXBvcnRzIGF1dG8taG9sZCBpdC5cbiAqXG4gKiBAdGFibGUgcGx1Z2luX3Jldmlld19yZXBvcnRzXG4gKi9cbmV4cG9ydCBjb25zdCBwbHVnaW5SZXZpZXdSZXBvcnQgPSBwZ1RhYmxlKCdwbHVnaW5fcmV2aWV3X3JlcG9ydHMnLCB7XG4gIGlkOiB1dWlkKCdpZCcpLnByaW1hcnlLZXkoKS5kZWZhdWx0UmFuZG9tKCksXG4gIHJldmlld0lkOiB1dWlkKCdyZXZpZXdfaWQnKS5ub3ROdWxsKCkucmVmZXJlbmNlcygoKSA9PiBwbHVnaW5SZXZpZXcuaWQsIHsgb25EZWxldGU6ICdjYXNjYWRlJyB9KSxcbiAgcmVwb3J0ZXJVc2VySWQ6IHRleHQoJ3JlcG9ydGVyX3VzZXJfaWQnKS5ub3ROdWxsKCksXG4gIGNhdGVnb3J5OiB2YXJjaGFyKCdjYXRlZ29yeScsIHsgbGVuZ3RoOiAyMCB9KS4kdHlwZTxSZXZpZXdSZXBvcnRDYXRlZ29yeT4oKS5kZWZhdWx0KCdhYnVzZScpLm5vdE51bGwoKSxcbiAgcmVhc29uOiB0ZXh0KCdyZWFzb24nKSxcbiAgLy8gU2V0IG9uY2UgYSBtb2RlcmF0b3IgcmVsZWFzZWQgb3IgcmVtb3ZlZCB0aGUgcmV2aWV3LlxuICByZXNvbHZlZEF0OiB0aW1lc3RhbXAoJ3Jlc29sdmVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG4gIGNyZWF0ZWRBdDogdGltZXN0YW1wKCdjcmVhdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcbn0sICh0YWJsZSkgPT4gKHtcbiAgcmV2aWV3UmVwb3J0ZXJVbmlxdWU6IHVuaXF1ZUluZGV4KCdwbHVnaW5fcmV2aWV3X3JlcG9ydF91bmlxdWUnKS5vbih0YWJsZS5yZXZpZXdJZCwgdGFibGUucmVwb3J0ZXJVc2VySWQpLFxuICBvcGVuSWR4OiBpbmRleCgncGx1Z2luX3Jldmlld19yZXBvcnRfb3Blbl9pZHgnKS5vbih0YWJsZS5yZXZpZXdJZCkud2hlcmUoc3FsYCR7dGFibGUucmVzb2x2ZWRBdH0gSVMgTlVMTGApLFxuICBjYXRlZ29yeUNoZWNrOiBjaGVjaygncGx1Z2luX3Jldmlld19yZXBvcnRzX2NhdGVnb3J5X2NoZWNrJyxcbiAgICBzcWxgJHt0YWJsZS5jYXRlZ29yeX0gSU4gKCdzcGFtJywgJ2FidXNlJywgJ29mZl90b3BpYycsICdzZWN1cml0eScpYCksXG59KSk7XG5cbi8qKlxuICogT25lIFwiaGVscGZ1bFwiIHZvdGUgcGVyIHVzZXIgcGVyIHJldmlldy5cbiAqXG4gKiBAdGFibGUgcGx1Z2luX3Jldmlld192b3Rlc1xuICovXG5leHBvcnQgY29uc3QgcGx1Z2luUmV2aWV3Vm90ZSA9IHBnVGFibGUoJ3BsdWdpbl9yZXZpZXdfdm90ZXMnLCB7XG4gIHJldmlld0lkOiB1dWlkKCdyZXZpZXdfaWQnKS5ub3ROdWxsKCkucmVmZXJlbmNlcygoKSA9PiBwbHVnaW5SZXZpZXcuaWQsIHsgb25EZWxldGU6ICdjYXNjYWRlJyB9KSxcbiAgdXNlcklkOiB0ZXh0KCd1c2VyX2lkJykubm90TnVsbCgpLFxuICBjcmVhdGVkQXQ6IHRpbWVzdGFtcCgnY3JlYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLmRlZmF1bHROb3coKS5ub3ROdWxsKCksXG59LCAodGFibGUpID0+ICh7XG4gIHBrOiBwcmltYXJ5S2V5KHsgY29sdW1uczogW3RhYmxlLnJldmlld0lkLCB0YWJsZS51c2VySWRdIH0pLFxufSkpO1xuXG4vKipcbiAqIFJldmlldyBlZGl0IGhpc3Rvcnk6IHRoZSBQUklPUiBjb250ZW50LCBhcHBlbmRlZCBvbiBldmVyeSBlZGl0LlxuICpcbiAqIEB0YWJsZSBwbHVnaW5fcmV2aWV3X2hpc3RvcnlcbiAqL1xuZXhwb3J0IGNvbnN0IHBsdWdpblJldmlld0hpc3RvcnkgPSBwZ1RhYmxlKCdwbHVnaW5fcmV2aWV3X2hpc3RvcnknLCB7XG4gIGlkOiB1dWlkKCdpZCcpLnByaW1hcnlLZXkoKS5kZWZhdWx0UmFuZG9tKCksXG4gIHJldmlld0lkOiB1dWlkKCdyZXZpZXdfaWQnKS5ub3ROdWxsKCkucmVmZXJlbmNlcygoKSA9PiBwbHVnaW5SZXZpZXcuaWQsIHsgb25EZWxldGU6ICdjYXNjYWRlJyB9KSxcbiAgdmVyc2lvbjogdmFyY2hhcigndmVyc2lvbicsIHsgbGVuZ3RoOiA1MCB9KSxcbiAgcmF0aW5nOiBzbWFsbGludCgncmF0aW5nJykubm90TnVsbCgpLFxuICB0aXRsZTogdmFyY2hhcigndGl0bGUnLCB7IGxlbmd0aDogMTIwIH0pLFxuICBib2R5TWQ6IHRleHQoJ2JvZHlfbWQnKSxcbiAgZWRpdGVkQXQ6IHRpbWVzdGFtcCgnZWRpdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcbn0sICh0YWJsZSkgPT4gKHtcbiAgcmV2aWV3SWR4OiBpbmRleCgncGx1Z2luX3Jldmlld19oaXN0b3J5X3Jldmlld19pZHgnKS5vbih0YWJsZS5yZXZpZXdJZCwgdGFibGUuZWRpdGVkQXQpLFxuICByYXRpbmdDaGVjazogY2hlY2soJ3BsdWdpbl9yZXZpZXdfaGlzdG9yeV9yYXRpbmdfY2hlY2snLCBzcWxgJHt0YWJsZS5yYXRpbmd9IEJFVFdFRU4gMSBBTkQgNWApLFxufSkpO1xuXG4vKipcbiAqIERlbm9ybWFsaXplZCBwZXItbGlzdGluZyBzdGF0cywgcmVjb21wdXRlZCBieSBhIGpvYi4gYGFjdGl2ZU9yZ0NvdW50YCBpc1xuICogcHVibGljIG9ubHkgd2hlbiA+PSA1ICh0aGUgYHB1YmxpY19saXN0aW5nc2AgdmlldyBlbmZvcmNlcyBpdCkuXG4gKlxuICogQHRhYmxlIHBsdWdpbl9zdGF0c1xuICovXG5leHBvcnQgY29uc3QgcGx1Z2luU3RhdHMgPSBwZ1RhYmxlKCdwbHVnaW5fc3RhdHMnLCB7XG4gIGxpc3RpbmdJZDogdXVpZCgnbGlzdGluZ19pZCcpLnByaW1hcnlLZXkoKS5yZWZlcmVuY2VzKCgpID0+IHBsdWdpbkxpc3RpbmcuaWQsIHsgb25EZWxldGU6ICdjYXNjYWRlJyB9KSxcbiAgcmF0aW5nQmF5ZXM6IGRvdWJsZVByZWNpc2lvbigncmF0aW5nX2JheWVzJyksXG4gIHJhdGluZ0NvdW50OiBpbnRlZ2VyKCdyYXRpbmdfY291bnQnKS5kZWZhdWx0KDApLm5vdE51bGwoKSxcbiAgLy8gU3RhciBkaXN0cmlidXRpb246IHsgXCIxXCI6IG4sIOKApiwgXCI1XCI6IG4gfS5cbiAgZGlzdDoganNvbmIoJ2Rpc3QnKS4kdHlwZTxSZWNvcmQ8c3RyaW5nLCBudW1iZXI+PigpLmRlZmF1bHQoe30pLm5vdE51bGwoKSxcbiAgLy8gXCJSZWNlbnQgdmVyc2lvbnNcIiByYXRpbmcgb3ZlciB0aGUgbGFzdCB0d28gbWlub3JzLlxuICByZWNlbnRSYXRpbmc6IGRvdWJsZVByZWNpc2lvbigncmVjZW50X3JhdGluZycpLFxuICBpbnN0YWxsQ291bnQ6IGludGVnZXIoJ2luc3RhbGxfY291bnQnKS5kZWZhdWx0KDApLm5vdE51bGwoKSxcbiAgYWN0aXZlT3JnQ291bnQ6IGludGVnZXIoJ2FjdGl2ZV9vcmdfY291bnQnKS5kZWZhdWx0KDApLm5vdE51bGwoKSxcbiAgc3VjY2Vzc1JhdGUzMGQ6IGRvdWJsZVByZWNpc2lvbignc3VjY2Vzc19yYXRlXzMwZCcpLFxuICBoZWFsdGhTY29yZTogZG91YmxlUHJlY2lzaW9uKCdoZWFsdGhfc2NvcmUnKSxcbiAgLy8gUGVyLWNvbXBvbmVudCBoZWFsdGggc2NvcmVzIGFuZCB3ZWlnaHRzLCBmb3IgdGhlIGJyZWFrZG93biBwYW5lbC5cbiAgaGVhbHRoQnJlYWtkb3duOiBqc29uYignaGVhbHRoX2JyZWFrZG93bicpLiR0eXBlPEhlYWx0aEJyZWFrZG93bj4oKSxcbiAgdXBkYXRlZEF0OiB0aW1lc3RhbXAoJ3VwZGF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5kZWZhdWx0Tm93KCkubm90TnVsbCgpLFxufSk7XG5cbi8qKlxuICogQW5vbnltb3VzIHB1YmxpYyBzdWJtaXNzaW9uLiBUaGUgZW1haWwgaXMga2VwdCBoYXNoZWQgKHJhdGUgbGltaXRzLFxuICogY2xhaW0gbWF0Y2hpbmcpIGFuZCBlbmNyeXB0ZWQgKHRha2Vkb3duIG5vdGljZXMgb25seSkgYW5kIHB1cmdlZCBhdFxuICogYGVtYWlsUHVyZ2VBZnRlcmAuIE5vdGhpbmcgaGVyZSBpcyBldmVyIGxpc3RlZCBvciByZXNvbHZhYmxlLlxuICpcbiAqIEB0YWJsZSBwbHVnaW5fc3VibWlzc2lvbnNcbiAqL1xuZXhwb3J0IGNvbnN0IHBsdWdpblN1Ym1pc3Npb24gPSBwZ1RhYmxlKCdwbHVnaW5fc3VibWlzc2lvbnMnLCB7XG4gIGlkOiB1dWlkKCdpZCcpLnByaW1hcnlLZXkoKS5kZWZhdWx0UmFuZG9tKCksXG4gIHN0YXR1czogdmFyY2hhcignc3RhdHVzJywgeyBsZW5ndGg6IDMwIH0pLiR0eXBlPFN1Ym1pc3Npb25TdGF0dXM+KCkuZGVmYXVsdCgncGVuZGluZ192ZXJpZmljYXRpb24nKS5ub3ROdWxsKCksXG4gIGVtYWlsSGFzaDogdmFyY2hhcignZW1haWxfaGFzaCcsIHsgbGVuZ3RoOiA2NCB9KSxcbiAgZW1haWxFbmM6IHRleHQoJ2VtYWlsX2VuYycpLFxuICB2ZXJpZnlUb2tlbkhhc2g6IHZhcmNoYXIoJ3ZlcmlmeV90b2tlbl9oYXNoJywgeyBsZW5ndGg6IDY0IH0pLFxuICB2ZXJpZnlFeHBpcmVzQXQ6IHRpbWVzdGFtcCgndmVyaWZ5X2V4cGlyZXNfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgdmVyaWZpZWRBdDogdGltZXN0YW1wKCd2ZXJpZmllZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxuICAvLyBzaGEyNTYgb2YgdGhlIHN0YXR1cyB0b2tlbiAocmV0dXJuZWQgYnkgdmVyaWZ5IGFuZCBpbiBOMS9OMy9ONCBlbWFpbHMpIOKAlFxuICAvLyB0aGUgc3VibWl0dGVyJ3Mgb25seSByZWFkIGhhbmRsZSBvbiB0aGUgc3VibWlzc2lvbi5cbiAgc3RhdHVzVG9rZW5IYXNoOiB2YXJjaGFyKCdzdGF0dXNfdG9rZW5faGFzaCcsIHsgbGVuZ3RoOiA2NCB9KSxcbiAgbmFtZTogdmFyY2hhcignbmFtZScsIHsgbGVuZ3RoOiAyNTUgfSkubm90TnVsbCgpLFxuICB2ZXJzaW9uOiB2YXJjaGFyKCd2ZXJzaW9uJywgeyBsZW5ndGg6IDUwIH0pLm5vdE51bGwoKSxcbiAgc3BlYzoganNvbmIoJ3NwZWMnKS4kdHlwZTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4oKS5kZWZhdWx0KHt9KS5ub3ROdWxsKCksXG4gIC8vIFRoZSBhY2NlcHQtb3ItZWRpdCBjYXRhbG9nIHZhbHVlcyArIHByb3ZlbmFuY2UgYW5kIHRoZSBEb2NrZXJmaWxlLFxuICAvLyBjYXB0dXJlZCBhdCBzdWJtaXQgc28gbW9kZXJhdGlvbiByZXZpZXdzIGV4YWN0bHkgd2hhdCB3YXMgc3VibWl0dGVkLlxuICBjYXRhbG9nOiBqc29uYignY2F0YWxvZycpLiR0eXBlPFN1Ym1pc3Npb25DYXRhbG9nPigpLmRlZmF1bHQoeyB2YWx1ZXM6IHt9LCBzb3VyY2VzOiB7fSB9KS5ub3ROdWxsKCksXG4gIGRvY2tlcmZpbGU6IHRleHQoJ2RvY2tlcmZpbGUnKSxcbiAgYXJ0aWZhY3RLZXk6IHZhcmNoYXIoJ2FydGlmYWN0X2tleScsIHsgbGVuZ3RoOiAxMDI0IH0pLFxuICBxdWFyYW50aW5lSW1hZ2VSZWY6IHZhcmNoYXIoJ3F1YXJhbnRpbmVfaW1hZ2VfcmVmJywgeyBsZW5ndGg6IDEwMjQgfSksXG4gIGdhdGVSZXBvcnQ6IGpzb25iKCdnYXRlX3JlcG9ydCcpLiR0eXBlPFJlY29yZDxzdHJpbmcsIHVua25vd24+PigpLFxuICBoZXVyaXN0aWNzOiBqc29uYignaGV1cmlzdGljcycpLiR0eXBlPFJlY29yZDxzdHJpbmcsIHVua25vd24+PigpLFxuICBsaXN0aW5nSWQ6IHV1aWQoJ2xpc3RpbmdfaWQnKS5yZWZlcmVuY2VzKCgpID0+IHBsdWdpbkxpc3RpbmcuaWQpLFxuICBkZWNpZGVkQnk6IHRleHQoJ2RlY2lkZWRfYnknKSxcbiAgcmVhc29uOiB0ZXh0KCdyZWFzb24nKSxcbiAgY2xpZW50SXBIYXNoOiB2YXJjaGFyKCdjbGllbnRfaXBfaGFzaCcsIHsgbGVuZ3RoOiA2NCB9KSxcbiAgZXhwaXJlc0F0OiB0aW1lc3RhbXAoJ2V4cGlyZXNfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5ub3ROdWxsKCksXG4gIGRlY2lkZWRBdDogdGltZXN0YW1wKCdkZWNpZGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG4gIGVtYWlsUHVyZ2VBZnRlcjogdGltZXN0YW1wKCdlbWFpbF9wdXJnZV9hZnRlcicsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxuICBjcmVhdGVkQXQ6IHRpbWVzdGFtcCgnY3JlYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLmRlZmF1bHROb3coKS5ub3ROdWxsKCksXG4gIHVwZGF0ZWRBdDogdGltZXN0YW1wKCd1cGRhdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcbn0sICh0YWJsZSkgPT4gKHtcbiAgc3RhdHVzQ3JlYXRlZElkeDogaW5kZXgoJ3BsdWdpbl9zdWJtaXNzaW9uX3N0YXR1c19jcmVhdGVkX2lkeCcpLm9uKHRhYmxlLnN0YXR1cywgdGFibGUuY3JlYXRlZEF0KSxcbiAgLy8gUGVyLWVtYWlsIC8gcGVyLUlQIGRhaWx5IHJhdGUgbGltaXRzLlxuICBlbWFpbENyZWF0ZWRJZHg6IGluZGV4KCdwbHVnaW5fc3VibWlzc2lvbl9lbWFpbF9jcmVhdGVkX2lkeCcpLm9uKHRhYmxlLmVtYWlsSGFzaCwgdGFibGUuY3JlYXRlZEF0KSxcbiAgaXBDcmVhdGVkSWR4OiBpbmRleCgncGx1Z2luX3N1Ym1pc3Npb25faXBfY3JlYXRlZF9pZHgnKS5vbih0YWJsZS5jbGllbnRJcEhhc2gsIHRhYmxlLmNyZWF0ZWRBdCksXG4gIHZlcmlmeVRva2VuVW5pcXVlOiB1bmlxdWVJbmRleCgncGx1Z2luX3N1Ym1pc3Npb25fdmVyaWZ5X3Rva2VuX3VuaXF1ZScpXG4gICAgLm9uKHRhYmxlLnZlcmlmeVRva2VuSGFzaClcbiAgICAud2hlcmUoc3FsYHZlcmlmeV90b2tlbl9oYXNoIElTIE5PVCBOVUxMYCksXG4gIHN0YXR1c1Rva2VuVW5pcXVlOiB1bmlxdWVJbmRleCgncGx1Z2luX3N1Ym1pc3Npb25fc3RhdHVzX3Rva2VuX3VuaXF1ZScpXG4gICAgLm9uKHRhYmxlLnN0YXR1c1Rva2VuSGFzaClcbiAgICAud2hlcmUoc3FsYHN0YXR1c190b2tlbl9oYXNoIElTIE5PVCBOVUxMYCksXG4gIHN0YXR1c0NoZWNrOiBjaGVjaygncGx1Z2luX3N1Ym1pc3Npb25zX3N0YXR1c19jaGVjaycsIHNxbGAke3RhYmxlLnN0YXR1c30gSU4gKCdwZW5kaW5nX3ZlcmlmaWNhdGlvbicsXG4gICAgJ3BlbmRpbmdfcmV2aWV3JywgJ3B1Ymxpc2hpbmcnLCAnZ2F0ZV9mYWlsZWQnLCAnYXBwcm92ZWQnLCAncmVqZWN0ZWQnLCAnZXhwaXJlZCcsICdjbGFpbWVkJylgKSxcbn0pKTtcblxuLyoqXG4gKiBaZXJvLXJlc3VsdCBkaXJlY3Rvcnkgc2VhcmNoZXMuIE5vIHVzZXIgZGF0YS4gYHF1ZXJ5YCBpcyBzdG9yZWQgbm9ybWFsaXplZDtcbiAqIHRoZSBtYWludGVuYW5jZSBzd2VlcCBmb2xkcyByZXBlYXRzIG9mIG9uZSAocXVlcnksIGNhdGVnb3J5KSBpbnRvIGEgc2luZ2xlXG4gKiByb3cgY291bnRpbmcgYGhpdHNgLCB3aXRoIGBjcmVhdGVkX2F0YCA9IHRoZSBsYXRlc3Qgb25lLCBhbmQgcHJ1bmVzIHJvd3Mgbm90XG4gKiBzZWVuIGZvciAzMCBkYXlzLlxuICpcbiAqIEB0YWJsZSBlY29zeXN0ZW1fc2VhcmNoX21pc3Nlc1xuICovXG5leHBvcnQgY29uc3QgZWNvc3lzdGVtU2VhcmNoTWlzcyA9IHBnVGFibGUoJ2Vjb3N5c3RlbV9zZWFyY2hfbWlzc2VzJywge1xuICBpZDogdXVpZCgnaWQnKS5wcmltYXJ5S2V5KCkuZGVmYXVsdFJhbmRvbSgpLFxuICBxdWVyeTogdmFyY2hhcigncXVlcnknLCB7IGxlbmd0aDogMjAwIH0pLm5vdE51bGwoKSxcbiAgY2F0ZWdvcnk6IHZhcmNoYXIoJ2NhdGVnb3J5JywgeyBsZW5ndGg6IDUwIH0pLFxuICBoaXRzOiBpbnRlZ2VyKCdoaXRzJykuZGVmYXVsdCgxKS5ub3ROdWxsKCksXG4gIGNyZWF0ZWRBdDogdGltZXN0YW1wKCdjcmVhdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcbn0sICh0YWJsZSkgPT4gKHtcbiAgY3JlYXRlZEF0SWR4OiBpbmRleCgnZWNvc3lzdGVtX3NlYXJjaF9taXNzX2NyZWF0ZWRfaWR4Jykub24odGFibGUuY3JlYXRlZEF0KSxcbiAgaGl0c0NoZWNrOiBjaGVjaygnZWNvc3lzdGVtX3NlYXJjaF9taXNzZXNfaGl0c19jaGVjaycsIHNxbGAke3RhYmxlLmhpdHN9ID49IDFgKSxcbn0pKTtcblxuLyoqXG4gKiBOb3RpZmljYXRpb24gZGlnZXN0L2JhdGNoaW5nIHF1ZXVlLiBSb3dzIHNoYXJpbmcgYSBgZGlnZXN0S2V5YCBhcmVcbiAqIGNvYWxlc2NlZCBpbnRvIG9uZSBlbWFpbCBhdCBgZGVsaXZlckFmdGVyYC5cbiAqXG4gKiBAdGFibGUgZWNvc3lzdGVtX25vdGlmaWNhdGlvbl9xdWV1ZVxuICovXG5leHBvcnQgY29uc3QgZWNvc3lzdGVtTm90aWZpY2F0aW9uUXVldWUgPSBwZ1RhYmxlKCdlY29zeXN0ZW1fbm90aWZpY2F0aW9uX3F1ZXVlJywge1xuICBpZDogdXVpZCgnaWQnKS5wcmltYXJ5S2V5KCkuZGVmYXVsdFJhbmRvbSgpLFxuICByZWNpcGllbnRVc2VySWQ6IHRleHQoJ3JlY2lwaWVudF91c2VyX2lkJyksXG4gIHJlY2lwaWVudE9yZ0lkOiB2YXJjaGFyKCdyZWNpcGllbnRfb3JnX2lkJywgeyBsZW5ndGg6IDI1NSB9KSxcbiAgZXZlbnQ6IHZhcmNoYXIoJ2V2ZW50JywgeyBsZW5ndGg6IDggfSkuJHR5cGU8RWNvc3lzdGVtTm90aWZpY2F0aW9uRXZlbnQ+KCkubm90TnVsbCgpLFxuICBkaWdlc3RLZXk6IHZhcmNoYXIoJ2RpZ2VzdF9rZXknLCB7IGxlbmd0aDogMjU1IH0pLFxuICBwYXlsb2FkOiBqc29uYigncGF5bG9hZCcpLiR0eXBlPFJlY29yZDxzdHJpbmcsIHVua25vd24+PigpLmRlZmF1bHQoe30pLm5vdE51bGwoKSxcbiAgZGVsaXZlckFmdGVyOiB0aW1lc3RhbXAoJ2RlbGl2ZXJfYWZ0ZXInLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5kZWZhdWx0Tm93KCkubm90TnVsbCgpLFxuICBkZWxpdmVyZWRBdDogdGltZXN0YW1wKCdkZWxpdmVyZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgY3JlYXRlZEF0OiB0aW1lc3RhbXAoJ2NyZWF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5kZWZhdWx0Tm93KCkubm90TnVsbCgpLFxufSwgKHRhYmxlKSA9PiAoe1xuICAvLyBUaGUgZGlzcGF0Y2hlcidzIHNjYW46IHVuZGVsaXZlcmVkIHJvd3MgdGhhdCBhcmUgZHVlLlxuICBkdWVJZHg6IGluZGV4KCdlY29zeXN0ZW1fbm90aWZpY2F0aW9uX2R1ZV9pZHgnKS5vbih0YWJsZS5kZWxpdmVyQWZ0ZXIpLndoZXJlKHNxbGBkZWxpdmVyZWRfYXQgSVMgTlVMTGApLFxuICBkaWdlc3RJZHg6IGluZGV4KCdlY29zeXN0ZW1fbm90aWZpY2F0aW9uX2RpZ2VzdF9pZHgnKS5vbih0YWJsZS5kaWdlc3RLZXkpLndoZXJlKHNxbGBkZWxpdmVyZWRfYXQgSVMgTlVMTGApLFxuICBldmVudENoZWNrOiBjaGVjaygnZWNvc3lzdGVtX25vdGlmaWNhdGlvbl9xdWV1ZV9ldmVudF9jaGVjaycsIHNxbGAke3RhYmxlLmV2ZW50fSB+ICdeTihbMS05XVswLTldPykkJ2ApLFxufSkpO1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIE9yZy1zY29wZWQgdGFibGVzIChvcmdfaWQgKyBybHNfb3JnXyogcG9saWNpZXMgKyBGT1JDRTsgaW4gdGhlIG9yZyBjYXNjYWRlKVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKlxuICogU3RlcCBtYW5pZmVzdDogd2hpY2ggcGx1Z2luIGVhY2ggKHBpcGVsaW5lLCBzdGFnZSwgYWN0aW9uKSBydW5zLFxuICogcmVjb3JkZWQgYXQgc3ludGguIEV2ZW50IGluZ2VzdCBqb2lucyBvbiBpdCB0byBzdGFtcFxuICogYHBpcGVsaW5lX2V2ZW50cy5wbHVnaW5fKmAuIGBwbHVnaW5QdWJsaXNoZXJgIGlzIE5VTEwgZm9yIGFuIG93bi1vcmcgcGx1Z2luLlxuICpcbiAqIEB0YWJsZSBwaXBlbGluZV9zdGVwX21hbmlmZXN0c1xuICovXG5leHBvcnQgY29uc3QgcGlwZWxpbmVTdGVwTWFuaWZlc3QgPSBwZ1RhYmxlKCdwaXBlbGluZV9zdGVwX21hbmlmZXN0cycsIHtcbiAgcGlwZWxpbmVJZDogdXVpZCgncGlwZWxpbmVfaWQnKS5ub3ROdWxsKCksXG4gIG9yZ0lkOiB2YXJjaGFyKCdvcmdfaWQnLCB7IGxlbmd0aDogMjU1IH0pLm5vdE51bGwoKSxcbiAgc3RhZ2VOYW1lOiB2YXJjaGFyKCdzdGFnZV9uYW1lJywgeyBsZW5ndGg6IDI1NSB9KS5ub3ROdWxsKCksXG4gIGFjdGlvbk5hbWU6IHZhcmNoYXIoJ2FjdGlvbl9uYW1lJywgeyBsZW5ndGg6IDI1NSB9KS5ub3ROdWxsKCksXG4gIHBsdWdpblB1Ymxpc2hlcjogdmFyY2hhcigncGx1Z2luX3B1Ymxpc2hlcicsIHsgbGVuZ3RoOiAzOSB9KSxcbiAgLyoqIFRoZSBsaXN0aW5nIHB1Ymxpc2hlcidzIGlkIChOVUxMIGZvciBhbiBvd24tb3JnIHBsdWdpbikg4oCUIHdoYXQgY3Jvc3Mtb3JnIHN0YXRzIGpvaW4gb24uICovXG4gIHBsdWdpblB1Ymxpc2hlcklkOiB1dWlkKCdwbHVnaW5fcHVibGlzaGVyX2lkJyksXG4gIHBsdWdpbk5hbWU6IHZhcmNoYXIoJ3BsdWdpbl9uYW1lJywgeyBsZW5ndGg6IDI1NSB9KS5ub3ROdWxsKCksXG4gIHBsdWdpblZlcnNpb246IHZhcmNoYXIoJ3BsdWdpbl92ZXJzaW9uJywgeyBsZW5ndGg6IDUwIH0pLm5vdE51bGwoKSxcbiAgaW1hZ2VEaWdlc3Q6IHZhcmNoYXIoJ2ltYWdlX2RpZ2VzdCcsIHsgbGVuZ3RoOiA3MSB9KSxcbiAgaW1hZ2VSZXBvc2l0b3J5OiB2YXJjaGFyKCdpbWFnZV9yZXBvc2l0b3J5JywgeyBsZW5ndGg6IDUxMiB9KSxcbiAgLyoqIFRoZSBzdGVwJ3Mga2V5IGFzIHN5bnRoIHNlbmRzIGl0IGluIGxvb2t1cCBgY29udGV4dGAgKGpvaW5zIGxvb2t1cHMgLyBydW50aW1lIGNoZWNrcyB0byB0aGUgZGVwbG95ZWQgcm93KS4gKi9cbiAgc3RlcEtleTogdmFyY2hhcignc3RlcF9rZXknLCB7IGxlbmd0aDogMjU1IH0pLFxuICAvKipcbiAgICogVGhlIEJVSUxELUlNQUdFIHJvdyBvbmx5IChgc3RlcF9rZXlgIGBidWlsZC1pbWFnZWAsIGFwaS1jb3JlXG4gICAqIGBCVUlMRF9JTUFHRV9NQU5JRkVTVF8qYCk6IGhvdyBzeW50aCBjaG9zZSB0aGUgdG9vbGNoYWluIHJlbGVhc2VcbiAgICogKGBwbHVnaW5fdmVyc2lvbmAgaXMgdGhlIHJlbGVhc2UgdmVyc2lvbiksIGFuZCB0aGUgbGFzdCByZWxlYXNlIGNoYW5nZVxuICAgKiBiZXR3ZWVuIGNvbnNlY3V0aXZlIGRlcGxveXMg4oCUIHRoZSBydW4taGlzdG9yeSBcInRvb2xjaGFpbiBYIOKGkiBZXCIgbWFya2VyLlxuICAgKiBOVUxMIG9uIGV2ZXJ5IHN0ZXAgcm93LlxuICAgKi9cbiAgcmVzb2x2ZWRWaWE6IHZhcmNoYXIoJ3Jlc29sdmVkX3ZpYScsIHsgbGVuZ3RoOiAyMCB9KSxcbiAgcHJldmlvdXNSZWxlYXNlVmVyc2lvbjogdmFyY2hhcigncHJldmlvdXNfcmVsZWFzZV92ZXJzaW9uJywgeyBsZW5ndGg6IDUwIH0pLFxuICByZWxlYXNlQ2hhbmdlZEF0OiB0aW1lc3RhbXAoJ3JlbGVhc2VfY2hhbmdlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxuICB1cGRhdGVkQXQ6IHRpbWVzdGFtcCgndXBkYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLmRlZmF1bHROb3coKS5ub3ROdWxsKCksXG59LCAodGFibGUpID0+ICh7XG4gIHBrOiBwcmltYXJ5S2V5KHsgY29sdW1uczogW3RhYmxlLnBpcGVsaW5lSWQsIHRhYmxlLnN0YWdlTmFtZSwgdGFibGUuYWN0aW9uTmFtZV0gfSksXG4gIHJlc29sdmVkVmlhQ2hlY2s6IGNoZWNrKCdwaXBlbGluZV9zdGVwX21hbmlmZXN0c19yZXNvbHZlZF92aWFfY2hlY2snLFxuICAgIHNxbGAke3RhYmxlLnJlc29sdmVkVmlhfSBJUyBOVUxMIE9SICR7dGFibGUucmVzb2x2ZWRWaWF9IElOICgncGluJywgJ29yZy1kZWZhdWx0JywgJ2NhbmFyeScsICdkZWZhdWx0JylgKSxcbiAgb3JnSWR4OiBpbmRleCgncGlwZWxpbmVfc3RlcF9tYW5pZmVzdF9vcmdfaWR4Jykub24odGFibGUub3JnSWQpLFxuICAvLyBwdWJsaWMvKiBHQyBndWFyZDogXCJkb2VzIGFueSBtYW5pZmVzdCBzdGlsbCByZWZlcmVuY2UgdGhpcyBkaWdlc3Q/XCJcbiAgZGlnZXN0SWR4OiBpbmRleCgncGlwZWxpbmVfc3RlcF9tYW5pZmVzdF9kaWdlc3RfaWR4Jykub24odGFibGUuaW1hZ2VEaWdlc3QpLFxuICAvLyBUaGUgb3V0ZGF0ZWQtcGx1Z2luIGFuZCB2dWxuZXJhYmlsaXR5IHJlcG9ydCBzZWN0aW9ucyBqb2luIG1hbmlmZXN0cyBvblxuICAvLyAobmFtZSwgdmVyc2lvbiwgZGlnZXN0KSBhY3Jvc3MgZXZlcnkgcGlwZWxpbmUgaW4gYW4gb3JnOyB3aXRob3V0IHRoaXMgdGhleVxuICAvLyBmdWxsLXNjYW4gdGhlIHRhYmxlLCB3aGljaCBpcyB0aGUgb25lIGpvaW4gaW4gdGhvc2Ugc2VjdGlvbnMgdGhhdCBncm93cyB3aXRoXG4gIC8vIHRoZSB3aG9sZSBpbnN0YW5jZSByYXRoZXIgdGhhbiB3aXRoIHRoZSBvcmcuXG4gIGxvb2t1cElkeDogaW5kZXgoJ3BpcGVsaW5lX3N0ZXBfbWFuaWZlc3RfbG9va3VwX2lkeCcpXG4gICAgLm9uKHRhYmxlLnBsdWdpbk5hbWUsIHRhYmxlLnBsdWdpblZlcnNpb24sIHRhYmxlLmltYWdlRGlnZXN0KSxcbiAgcGx1Z2luSWR4OiBpbmRleCgncGlwZWxpbmVfc3RlcF9tYW5pZmVzdF9wbHVnaW5faWR4Jykub24odGFibGUucGx1Z2luUHVibGlzaGVyLCB0YWJsZS5wbHVnaW5OYW1lKSxcbiAgcGx1Z2luUHVibGlzaGVySWRJZHg6IGluZGV4KCdwaXBlbGluZV9zdGVwX21hbmlmZXN0X3B1Ymxpc2hlcl9pZF9pZHgnKS5vbih0YWJsZS5wbHVnaW5QdWJsaXNoZXJJZCwgdGFibGUucGx1Z2luTmFtZSksXG59KSk7XG5cbi8qKlxuICogQW4gb3JnJ3MgaW5zdGFsbCBvZiBhIGxpc3RpbmcuIE9mZmljaWFsIGxpc3RpbmdzIGFyZSBpbnN0YWxsZWRcbiAqIGltcGxpY2l0bHkgKHZpcnR1YWwg4oCUIG5vIHJvdyk7IGEgcm93IGlzIGFuIGV4cGxpY2l0IGluc3RhbGwgb3Igb3ZlcnJpZGUuXG4gKlxuICogQHRhYmxlIHBsdWdpbl9pbnN0YWxsc1xuICovXG5leHBvcnQgY29uc3QgcGx1Z2luSW5zdGFsbCA9IHBnVGFibGUoJ3BsdWdpbl9pbnN0YWxscycsIHtcbiAgaWQ6IHV1aWQoJ2lkJykucHJpbWFyeUtleSgpLmRlZmF1bHRSYW5kb20oKSxcbiAgb3JnSWQ6IHZhcmNoYXIoJ29yZ19pZCcsIHsgbGVuZ3RoOiAyNTUgfSkubm90TnVsbCgpLFxuICBsaXN0aW5nSWQ6IHV1aWQoJ2xpc3RpbmdfaWQnKS5ub3ROdWxsKCkucmVmZXJlbmNlcygoKSA9PiBwbHVnaW5MaXN0aW5nLmlkLCB7IG9uRGVsZXRlOiAnY2FzY2FkZScgfSksXG4gIHZlcnNpb25Qb2xpY3k6IHZhcmNoYXIoJ3ZlcnNpb25fcG9saWN5JywgeyBsZW5ndGg6IDEwIH0pLiR0eXBlPEluc3RhbGxWZXJzaW9uUG9saWN5PigpLmRlZmF1bHQoJ21pbm9yJykubm90TnVsbCgpLFxuICBwaW5uZWRWZXJzaW9uOiB2YXJjaGFyKCdwaW5uZWRfdmVyc2lvbicsIHsgbGVuZ3RoOiA1MCB9KSxcbiAgcmVzb2x2ZWRWZXJzaW9uOiB2YXJjaGFyKCdyZXNvbHZlZF92ZXJzaW9uJywgeyBsZW5ndGg6IDUwIH0pLFxuICBzdGF0dXM6IHZhcmNoYXIoJ3N0YXR1cycsIHsgbGVuZ3RoOiAyMCB9KS4kdHlwZTxJbnN0YWxsU3RhdHVzPigpLmRlZmF1bHQoJ2FjdGl2ZScpLm5vdE51bGwoKSxcbiAgaW5zdGFsbGVkQnk6IHRleHQoJ2luc3RhbGxlZF9ieScpLm5vdE51bGwoKSxcbiAgYXBwcm92ZWRCeTogdGV4dCgnYXBwcm92ZWRfYnknKSxcbiAgZGVjaWRlZEF0OiB0aW1lc3RhbXAoJ2RlY2lkZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgLyoqIEEgcGVuZGluZywgYXBwcm92YWwtZ2F0ZWQgY2hhbmdlIG9mIHRoaXMgaW5zdGFsbCAodXBncmFkZSAvIHBvbGljeSksIG9yIG51bGwuICovXG4gIHBlbmRpbmdDaGFuZ2U6IGpzb25iKCdwZW5kaW5nX2NoYW5nZScpLiR0eXBlPEluc3RhbGxDaGFuZ2VSZXF1ZXN0PigpLFxuICBjcmVhdGVkQXQ6IHRpbWVzdGFtcCgnY3JlYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLmRlZmF1bHROb3coKS5ub3ROdWxsKCksXG4gIHVwZGF0ZWRBdDogdGltZXN0YW1wKCd1cGRhdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcbn0sICh0YWJsZSkgPT4gKHtcbiAgb3JnTGlzdGluZ1VuaXF1ZTogdW5pcXVlSW5kZXgoJ3BsdWdpbl9pbnN0YWxsX29yZ19saXN0aW5nX3VuaXF1ZScpLm9uKHRhYmxlLm9yZ0lkLCB0YWJsZS5saXN0aW5nSWQpLFxuICAvLyBcIkluc3RhbGxpbmcgb3Jnc1wiIGZhbi1vdXQgZm9yIE44L04xMy9OMTQvTjIxL04yNi5cbiAgbGlzdGluZ1N0YXR1c0lkeDogaW5kZXgoJ3BsdWdpbl9pbnN0YWxsX2xpc3Rpbmdfc3RhdHVzX2lkeCcpLm9uKHRhYmxlLmxpc3RpbmdJZCwgdGFibGUuc3RhdHVzKSxcbiAgdmVyc2lvblBvbGljeUNoZWNrOiBjaGVjaygncGx1Z2luX2luc3RhbGxzX3ZlcnNpb25fcG9saWN5X2NoZWNrJyxcbiAgICBzcWxgJHt0YWJsZS52ZXJzaW9uUG9saWN5fSBJTiAoJ3Bpbm5lZCcsICdwYXRjaCcsICdtaW5vcicsICdsYXRlc3QnKWApLFxuICBzdGF0dXNDaGVjazogY2hlY2soJ3BsdWdpbl9pbnN0YWxsc19zdGF0dXNfY2hlY2snLCBzcWxgJHt0YWJsZS5zdGF0dXN9IElOICgnYWN0aXZlJywgJ3BlbmRpbmdfYXBwcm92YWwnLCAnZGVuaWVkJylgKSxcbiAgcGlubmVkQ2hlY2s6IGNoZWNrKCdwbHVnaW5faW5zdGFsbF9waW5uZWRfY2hlY2snLFxuICAgIHNxbGAke3RhYmxlLnZlcnNpb25Qb2xpY3l9IDw+ICdwaW5uZWQnIE9SICR7dGFibGUucGlubmVkVmVyc2lvbn0gSVMgTk9UIE5VTExgKSxcbn0pKTtcblxuLyoqXG4gKiBPcmcgY29uc3VtcHRpb24gcG9saWN5LiBPbmUgcm93IHBlciBvcmc7IGFic2VudCA9IHRoZSBjb2x1bW4gZGVmYXVsdHMuXG4gKiBOb25lIG9mIHRoZXNlIHNhZmV0eSBjb250cm9scyBpcyBwbGFuLWdhdGVkLlxuICpcbiAqIEB0YWJsZSBwbHVnaW5faW5zdGFsbF9wb2xpY2llc1xuICovXG5leHBvcnQgY29uc3QgcGx1Z2luSW5zdGFsbFBvbGljeSA9IHBnVGFibGUoJ3BsdWdpbl9pbnN0YWxsX3BvbGljaWVzJywge1xuICBvcmdJZDogdmFyY2hhcignb3JnX2lkJywgeyBsZW5ndGg6IDI1NSB9KS5wcmltYXJ5S2V5KCksXG4gIGFsbG93ZWRUaWVyczogdGV4dCgnYWxsb3dlZF90aWVycycpLmFycmF5KCkuJHR5cGU8UHVibGlzaGVyVGllcltdPigpXG4gICAgLmRlZmF1bHQoWydvZmZpY2lhbCcsICd2ZXJpZmllZCddKS5ub3ROdWxsKCksXG4gIHJlcXVpcmVBcHByb3ZhbFRpZXJzOiB0ZXh0KCdyZXF1aXJlX2FwcHJvdmFsX3RpZXJzJykuYXJyYXkoKS4kdHlwZTxQdWJsaXNoZXJUaWVyW10+KClcbiAgICAuZGVmYXVsdChbJ2NvbW11bml0eScsICd1bnZlcmlmaWVkJ10pLm5vdE51bGwoKSxcbiAgc2VjcmV0c0FsbG93ZWRUaWVyczogdGV4dCgnc2VjcmV0c19hbGxvd2VkX3RpZXJzJykuYXJyYXkoKS4kdHlwZTxQdWJsaXNoZXJUaWVyW10+KClcbiAgICAuZGVmYXVsdChbJ29mZmljaWFsJywgJ3ZlcmlmaWVkJ10pLm5vdE51bGwoKSxcbiAgYmxvY2tPbkFkdmlzb3J5OiB2YXJjaGFyKCdibG9ja19vbl9hZHZpc29yeScsIHsgbGVuZ3RoOiAxMCB9KS4kdHlwZTxCbG9ja09uQWR2aXNvcnk+KCkuZGVmYXVsdCgnY3JpdGljYWwnKS5ub3ROdWxsKCksXG4gIG9mZmljaWFsSW5zdGFsbHM6IHZhcmNoYXIoJ29mZmljaWFsX2luc3RhbGxzJywgeyBsZW5ndGg6IDEwIH0pLiR0eXBlPE9mZmljaWFsSW5zdGFsbHM+KCkuZGVmYXVsdCgnaW1wbGljaXQnKS5ub3ROdWxsKCksXG4gIC8vIFdoYXQgdG8gZG8gd2hlbiBhIG5hbWUgb3ZlcnJpZGVzIGEgbGlzdGluZywgb3IgdGhlIHBhcmVudCBvcmcncyBwbHVnaW4uXG4gIC8vIERlZmF1bHRzIHRvIGB3YXJuYDogc2hhZG93aW5nIGNhbiBiZSBkZWxpYmVyYXRlLCBzbyB0aGUgZGVmYXVsdCBzdXJmYWNlcyBpdFxuICAvLyB3aXRob3V0IGJyZWFraW5nIGEgZGVwbG95bWVudCB0aGF0IGFscmVhZHkgcmVsaWVzIG9uIG9uZS5cbiAgc2hhZG93aW5nOiB2YXJjaGFyKCdzaGFkb3dpbmcnLCB7IGxlbmd0aDogMTAgfSkuJHR5cGU8U2hhZG93aW5nTW9kZT4oKS5kZWZhdWx0KCd3YXJuJykubm90TnVsbCgpLFxuICBibG9ja2VkTGlzdGluZ3M6IGpzb25iKCdibG9ja2VkX2xpc3RpbmdzJykuJHR5cGU8QmxvY2tlZExpc3RpbmdSZWZbXT4oKS5kZWZhdWx0KFtdKS5ub3ROdWxsKCksXG4gIC8vIEZpeGFibGUgSGlnaCBmaW5kaW5ncyBhYm92ZSB0aGlzIG1hbnkgcmFpc2UgYSB2ZXJzaW9uJ3Mgd2FybmluZyBmcm9tIGBpbmZvYFxuICAvLyB0byBgd2FybmluZ2AuIFZ1bG5lcmFiaWxpdHkgc3RhdGUgbmV2ZXIgcmVmdXNlcyBhIHBpcGVsaW5lIOKAlCB0aGlzIG9ubHkgc2V0c1xuICAvLyBob3cgbG91ZCBpdCBpcy4gTlVMTCA9IG5ldmVyIGxvdWRlciB0aGFuIGluZm87IGEgdGVhbSB0YWtlcyB0aGUgbG93ZXIgb2YgaXRzXG4gIC8vIG93biBhbmQgaXRzIHJvb3Qncy5cbiAgd2FybkZpeGFibGVIaWdoOiBpbnRlZ2VyKCd3YXJuX2ZpeGFibGVfaGlnaCcpLmRlZmF1bHQoMCksXG4gIHVwZGF0ZWRCeTogdGV4dCgndXBkYXRlZF9ieScpLFxuICB1cGRhdGVkQXQ6IHRpbWVzdGFtcCgndXBkYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLmRlZmF1bHROb3coKS5ub3ROdWxsKCksXG59LCAodGFibGUpID0+ICh7XG4gIGJsb2NrT25BZHZpc29yeUNoZWNrOiBjaGVjaygncGx1Z2luX2luc3RhbGxfcG9saWNpZXNfYmxvY2tfb25fYWR2aXNvcnlfY2hlY2snLFxuICAgIHNxbGAke3RhYmxlLmJsb2NrT25BZHZpc29yeX0gSU4gKCdjcml0aWNhbCcsICdoaWdoJywgJ25ldmVyJylgKSxcbiAgb2ZmaWNpYWxJbnN0YWxsc0NoZWNrOiBjaGVjaygncGx1Z2luX2luc3RhbGxfcG9saWNpZXNfb2ZmaWNpYWxfaW5zdGFsbHNfY2hlY2snLFxuICAgIHNxbGAke3RhYmxlLm9mZmljaWFsSW5zdGFsbHN9IElOICgnaW1wbGljaXQnLCAnZXhwbGljaXQnKWApLFxuICB0aWVyc0NoZWNrOiBjaGVjaygncGx1Z2luX2luc3RhbGxfcG9saWN5X3RpZXJzX2NoZWNrJywgc3FsYFxuICAgICR7dGFibGUuYWxsb3dlZFRpZXJzfSA8QCBBUlJBWVsnb2ZmaWNpYWwnLCAndmVyaWZpZWQnLCAnY29tbXVuaXR5JywgJ3VudmVyaWZpZWQnXTo6VEVYVFtdXG4gICAgQU5EICR7dGFibGUucmVxdWlyZUFwcHJvdmFsVGllcnN9IDxAIEFSUkFZWydvZmZpY2lhbCcsICd2ZXJpZmllZCcsICdjb21tdW5pdHknLCAndW52ZXJpZmllZCddOjpURVhUW11cbiAgICBBTkQgJHt0YWJsZS5zZWNyZXRzQWxsb3dlZFRpZXJzfSA8QCBBUlJBWVsnb2ZmaWNpYWwnLCAndmVyaWZpZWQnLCAnY29tbXVuaXR5JywgJ3VudmVyaWZpZWQnXTo6VEVYVFtdYCksXG59KSk7XG5cbi8qKlxuICogUGVyLW9yZyBwbHVnaW4gc2VjdXJpdHkgbm90aWZpY2F0aW9uIHNldHRpbmdzIChkb2NzL3BsdWdpbi1wdWJsaXNoaW5nLm1kXG4gKiBcIlNjYW4gZ2F0ZXNcIik6IHdobyBoZWFycyBhYm91dCBhIGJsb2NrZWQgYnVpbGQgKE4zMCkgYW5kIGEgcmVzY2FuIGZpbmRpbmdcbiAqIChOMzEpLCBhbmQgd2hlcmUgZWxzZSB0aGV5IGdvLiBPbmUgcm93IHBlciBvcmc7IGFic2VudCA9IHRoZSBjb2x1bW5cbiAqIGRlZmF1bHRzLiBUaGUgd2ViaG9vayBzZWNyZXQgYW5kIHRoZSBleHRlcm5hbCBhZGRyZXNzIGFyZSBzdG9yZWQgRU5DUllQVEVEXG4gKiAoYXBpLWNvcmUgc2VjcmV0LWVuY3J5cHRpb24sIHRoZSBvcmcncyBrZXkpIGFuZCBuZXZlciByZXR1cm5lZDsgdGhlIGFkZHJlc3NcbiAqIGlzIHVzZWQgb25seSBvbmNlIGNvbmZpcm1lZCB0aHJvdWdoIGl0cyBlbWFpbGVkIHNpbmdsZS11c2UgbGlua1xuICogKGBleHRlcm5hbF92ZXJpZnlfdG9rZW5faGFzaGAsIHNoYTI1NiBvZiB0aGUgdG9rZW4pLlxuICpcbiAqIEB0YWJsZSBwbHVnaW5fc2VjdXJpdHlfbm90aWZpY2F0aW9uX3ByZWZzXG4gKi9cbmV4cG9ydCBjb25zdCBwbHVnaW5TZWN1cml0eU5vdGlmaWNhdGlvblByZWYgPSBwZ1RhYmxlKCdwbHVnaW5fc2VjdXJpdHlfbm90aWZpY2F0aW9uX3ByZWZzJywge1xuICBvcmdJZDogdmFyY2hhcignb3JnX2lkJywgeyBsZW5ndGg6IDI1NSB9KS5wcmltYXJ5S2V5KCksXG4gIHJlY2lwaWVudE1vZGU6IHZhcmNoYXIoJ3JlY2lwaWVudF9tb2RlJywgeyBsZW5ndGg6IDEwIH0pLiR0eXBlPFBsdWdpblNlY3VyaXR5UmVjaXBpZW50TW9kZT4oKS5kZWZhdWx0KCd3cml0ZXJzJykubm90TnVsbCgpLFxuICB0YXJnZXRVc2VyczogdGV4dCgndGFyZ2V0X3VzZXJzJykuYXJyYXkoKS4kdHlwZTxzdHJpbmdbXT4oKS5kZWZhdWx0KFtdKS5ub3ROdWxsKCksXG4gIG5vdGlmeVJlc2NhbjogYm9vbGVhbignbm90aWZ5X3Jlc2NhbicpLmRlZmF1bHQodHJ1ZSkubm90TnVsbCgpLFxuICAvLyBQaXBlbGluZS1vd25lciBub3RpY2VzOiB0aGUgb3JnJ3MgcGlwZWxpbmUgd3JpdGVycyBoZWFyIHdoZW4gYSB2ZXJzaW9uIHRoZWlyXG4gIC8vIHBpcGVsaW5lcyBydW4gZ2V0cyBmaW5kaW5ncyAoTjMxKSwgYSBsb29rdXAgLyBydW50aW1lIGNoZWNrIGJsb2NrcyBhXG4gIC8vIHBpcGVsaW5lIChOMzIpIG9yIGEgcGlwZWxpbmUncyByaXNrIGFjY2VwdGFuY2UgbGFwc2VzIChOMzMpLiBUaGUgb3JnIG9wdC1vdXQuXG4gIG5vdGlmeVBpcGVsaW5lT3duZXJzOiBib29sZWFuKCdub3RpZnlfcGlwZWxpbmVfb3duZXJzJykuZGVmYXVsdCh0cnVlKS5ub3ROdWxsKCksXG4gIGRpZ2VzdE1vZGU6IHZhcmNoYXIoJ2RpZ2VzdF9tb2RlJywgeyBsZW5ndGg6IDEwIH0pLiR0eXBlPFBsdWdpblNlY3VyaXR5RGlnZXN0TW9kZT4oKS5kZWZhdWx0KCdpbW1lZGlhdGUnKS5ub3ROdWxsKCksXG4gIHdlYmhvb2tVcmw6IHZhcmNoYXIoJ3dlYmhvb2tfdXJsJywgeyBsZW5ndGg6IDIwNDggfSksXG4gIHdlYmhvb2tTZWNyZXQ6IHRleHQoJ3dlYmhvb2tfc2VjcmV0JyksXG4gIGV4dGVybmFsRW1haWxFbmM6IHRleHQoJ2V4dGVybmFsX2VtYWlsX2VuYycpLFxuICBleHRlcm5hbEVtYWlsSGFzaDogdmFyY2hhcignZXh0ZXJuYWxfZW1haWxfaGFzaCcsIHsgbGVuZ3RoOiA2NCB9KSxcbiAgZXh0ZXJuYWxFbWFpbFZlcmlmaWVkQXQ6IHRpbWVzdGFtcCgnZXh0ZXJuYWxfZW1haWxfdmVyaWZpZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgZXh0ZXJuYWxWZXJpZnlUb2tlbkhhc2g6IHZhcmNoYXIoJ2V4dGVybmFsX3ZlcmlmeV90b2tlbl9oYXNoJywgeyBsZW5ndGg6IDY0IH0pLFxuICBleHRlcm5hbFZlcmlmeUV4cGlyZXNBdDogdGltZXN0YW1wKCdleHRlcm5hbF92ZXJpZnlfZXhwaXJlc19hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxuICB1cGRhdGVkQnk6IHRleHQoJ3VwZGF0ZWRfYnknKSxcbiAgY3JlYXRlZEF0OiB0aW1lc3RhbXAoJ2NyZWF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5kZWZhdWx0Tm93KCkubm90TnVsbCgpLFxuICB1cGRhdGVkQXQ6IHRpbWVzdGFtcCgndXBkYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLmRlZmF1bHROb3coKS5ub3ROdWxsKCksXG59LCAodGFibGUpID0+ICh7XG4gIHZlcmlmeVRva2VuSWR4OiB1bmlxdWVJbmRleCgncGx1Z2luX3NlY3VyaXR5X25vdGlmaWNhdGlvbl9wcmVmc192ZXJpZnlfdG9rZW5faWR4Jykub24odGFibGUuZXh0ZXJuYWxWZXJpZnlUb2tlbkhhc2gpLFxuICByZWNpcGllbnRNb2RlQ2hlY2s6IGNoZWNrKCdwbHVnaW5fc2VjdXJpdHlfbm90aWZpY2F0aW9uX3ByZWZzX3JlY2lwaWVudF9tb2RlX2NoZWNrJyxcbiAgICBzcWxgJHt0YWJsZS5yZWNpcGllbnRNb2RlfSBJTiAoJ3dyaXRlcnMnLCAndXNlcnMnKWApLFxuICBkaWdlc3RNb2RlQ2hlY2s6IGNoZWNrKCdwbHVnaW5fc2VjdXJpdHlfbm90aWZpY2F0aW9uX3ByZWZzX2RpZ2VzdF9tb2RlX2NoZWNrJyxcbiAgICBzcWxgJHt0YWJsZS5kaWdlc3RNb2RlfSBJTiAoJ2ltbWVkaWF0ZScsICdkYWlseScsICd3ZWVrbHknKWApLFxufSkpO1xuXG4vKipcbiAqIE4yMSBpZGVtcG90ZW5jeTogb25lIGRlbGl2ZXJ5IHBlciAoYWR2aXNvcnksIGluc3RhbGxpbmcgb3JnKSwgc28gYSByZXRyaWVkXG4gKiBmYW4tb3V0IG5ldmVyIG5vdGlmaWVzIGFuIG9yZyB0d2ljZS5cbiAqXG4gKiBAdGFibGUgcGx1Z2luX2Fkdmlzb3J5X2RlbGl2ZXJpZXNcbiAqL1xuZXhwb3J0IGNvbnN0IHBsdWdpbkFkdmlzb3J5RGVsaXZlcnkgPSBwZ1RhYmxlKCdwbHVnaW5fYWR2aXNvcnlfZGVsaXZlcmllcycsIHtcbiAgYWR2aXNvcnlJZDogdXVpZCgnYWR2aXNvcnlfaWQnKS5ub3ROdWxsKCkucmVmZXJlbmNlcygoKSA9PiBwbHVnaW5BZHZpc29yeS5pZCwgeyBvbkRlbGV0ZTogJ2Nhc2NhZGUnIH0pLFxuICBvcmdJZDogdmFyY2hhcignb3JnX2lkJywgeyBsZW5ndGg6IDI1NSB9KS5ub3ROdWxsKCksXG4gIGRlbGl2ZXJlZEF0OiB0aW1lc3RhbXAoJ2RlbGl2ZXJlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLmRlZmF1bHROb3coKS5ub3ROdWxsKCksXG59LCAodGFibGUpID0+ICh7XG4gIHBrOiBwcmltYXJ5S2V5KHsgY29sdW1uczogW3RhYmxlLmFkdmlzb3J5SWQsIHRhYmxlLm9yZ0lkXSB9KSxcbiAgb3JnSWR4OiBpbmRleCgncGx1Z2luX2Fkdmlzb3J5X2RlbGl2ZXJ5X29yZ19pZHgnKS5vbih0YWJsZS5vcmdJZCksXG59KSk7XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gUHVibGljIHJlYWQgcGF0aCDigJQgdmlld3MgY3JlYXRlZCBieSBwb3N0Z3Jlcy1pbml0LnNxbFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKlxuICogYHB1YmxpY19saXN0aW5nc2A6IGxpc3RlZCBhbmQgdW5tYWludGFpbmVkIGxpc3RpbmdzIG9mIG5vbi1zdXNwZW5kZWRcbiAqIHB1Ymxpc2hlcnMsIHB1YmxpYyBjb2x1bW5zIG9ubHksIGpvaW5lZCB3aXRoIHRoZSBwdWJsaXNoZXIncyBoYW5kbGUvbmFtZS90aWVyIGFuZCB0aGUgc3RhdHMuXG4gKiBSZWFkIGFzIGBlY29zeXN0ZW1fcHVibGljX3JlYWRlcmAgKHNlZSBwb3N0Z3Jlcy1pbml0LnNxbCkuXG4gKi9cbmV4cG9ydCBjb25zdCBwdWJsaWNMaXN0aW5ncyA9IHBnVmlldygncHVibGljX2xpc3RpbmdzJywge1xuICBpZDogdXVpZCgnaWQnKS5ub3ROdWxsKCksXG4gIHB1Ymxpc2hlckhhbmRsZTogdmFyY2hhcigncHVibGlzaGVyX2hhbmRsZScsIHsgbGVuZ3RoOiAzOSB9KS5ub3ROdWxsKCksXG4gIHB1Ymxpc2hlckRpc3BsYXlOYW1lOiB2YXJjaGFyKCdwdWJsaXNoZXJfZGlzcGxheV9uYW1lJywgeyBsZW5ndGg6IDI1NSB9KS5ub3ROdWxsKCksXG4gIHB1Ymxpc2hlclRpZXI6IHZhcmNoYXIoJ3B1Ymxpc2hlcl90aWVyJywgeyBsZW5ndGg6IDIwIH0pLiR0eXBlPFB1Ymxpc2hlclRpZXI+KCkubm90TnVsbCgpLFxuICBwdWJsaXNoZXJWZXJpZmllZEF0OiB0aW1lc3RhbXAoJ3B1Ymxpc2hlcl92ZXJpZmllZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxuICBuYW1lOiB2YXJjaGFyKCduYW1lJywgeyBsZW5ndGg6IDI1NSB9KS5ub3ROdWxsKCksXG4gIGNhdGVnb3J5OiB2YXJjaGFyKCdjYXRlZ29yeScsIHsgbGVuZ3RoOiA1MCB9KS5ub3ROdWxsKCksXG4gIHN1bW1hcnk6IHZhcmNoYXIoJ3N1bW1hcnknLCB7IGxlbmd0aDogMzAwIH0pLFxuICBkZXNjcmlwdGlvbjogdGV4dCgnZGVzY3JpcHRpb24nKSxcbiAgcmVhZG1lSHRtbDogdGV4dCgncmVhZG1lX2h0bWwnKSxcbiAgbGljZW5zZTogdmFyY2hhcignbGljZW5zZScsIHsgbGVuZ3RoOiA2NCB9KSxcbiAgaG9tZXBhZ2VVcmw6IHZhcmNoYXIoJ2hvbWVwYWdlX3VybCcsIHsgbGVuZ3RoOiAyMDQ4IH0pLFxuICBzb3VyY2VVcmw6IHZhcmNoYXIoJ3NvdXJjZV91cmwnLCB7IGxlbmd0aDogMjA0OCB9KSxcbiAgaWNvbjoganNvbmIoJ2ljb24nKS4kdHlwZTxQbHVnaW5JY29uPigpLFxuICB1cGxvYWRlZEljb246IGpzb25iKCd1cGxvYWRlZF9pY29uJykuJHR5cGU8UGx1Z2luVXBsb2FkZWRJY29uPigpLFxuICBrZXl3b3JkczoganNvbmIoJ2tleXdvcmRzJykuJHR5cGU8c3RyaW5nW10+KCkubm90TnVsbCgpLFxuICBmZWF0dXJlZDogYm9vbGVhbignZmVhdHVyZWQnKS5ub3ROdWxsKCksXG4gIGxhdGVzdFZlcnNpb246IHZhcmNoYXIoJ2xhdGVzdF92ZXJzaW9uJywgeyBsZW5ndGg6IDUwIH0pLFxuICBwYXVzZWRBdDogdGltZXN0YW1wKCdwYXVzZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgc2VhcmNoVmVjdG9yOiB0c3ZlY3Rvcignc2VhcmNoX3ZlY3RvcicpLFxuICBjcmVhdGVkQXQ6IHRpbWVzdGFtcCgnY3JlYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLm5vdE51bGwoKSxcbiAgdXBkYXRlZEF0OiB0aW1lc3RhbXAoJ3VwZGF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5ub3ROdWxsKCksXG4gIHJhdGluZ0JheWVzOiBkb3VibGVQcmVjaXNpb24oJ3JhdGluZ19iYXllcycpLFxuICByYXRpbmdDb3VudDogaW50ZWdlcigncmF0aW5nX2NvdW50Jykubm90TnVsbCgpLFxuICByYXRpbmdEaXN0OiBqc29uYigncmF0aW5nX2Rpc3QnKS4kdHlwZTxSZWNvcmQ8c3RyaW5nLCBudW1iZXI+PigpLFxuICByZWNlbnRSYXRpbmc6IGRvdWJsZVByZWNpc2lvbigncmVjZW50X3JhdGluZycpLFxuICBpbnN0YWxsQ291bnQ6IGludGVnZXIoJ2luc3RhbGxfY291bnQnKS5ub3ROdWxsKCksXG4gIC8vIE5VTEwgYmVsb3cgdGhlIDUtb3JnIGRpc3BsYXkgdGhyZXNob2xkLlxuICBhY3RpdmVPcmdDb3VudDogaW50ZWdlcignYWN0aXZlX29yZ19jb3VudCcpLFxuICBzdWNjZXNzUmF0ZTMwZDogZG91YmxlUHJlY2lzaW9uKCdzdWNjZXNzX3JhdGVfMzBkJyksXG4gIGhlYWx0aFNjb3JlOiBkb3VibGVQcmVjaXNpb24oJ2hlYWx0aF9zY29yZScpLFxuICAvLyAnbGlzdGVkJyB8ICd1bm1haW50YWluZWQnIOKAlCB1bm1haW50YWluZWQgc3RheXMgcHVibGljIHdpdGggYSBiYW5uZXIuXG4gIHN0YXRlOiB2YXJjaGFyKCdzdGF0ZScsIHsgbGVuZ3RoOiAyMCB9KS4kdHlwZTxMaXN0aW5nU3RhdGU+KCkubm90TnVsbCgpLFxuICBoZWFsdGhCcmVha2Rvd246IGpzb25iKCdoZWFsdGhfYnJlYWtkb3duJykuJHR5cGU8SGVhbHRoQnJlYWtkb3duPigpLFxufSkuZXhpc3RpbmcoKTtcblxuLyoqXG4gKiBgcHVibGljX2xpc3RlZF92ZXJzaW9uc2A6IG5vbi1wYXVzZWQgdmVyc2lvbnMgb2YgbGlzdGVkIGxpc3RpbmdzICh5YW5rZWQgb25lc1xuICogaW5jbHVkZWQsIGZsYWdnZWQpLCB3aXRoIG9ubHkgdGhlIHB1YmxpYyBzdWJzZXQgb2YgdGhlIGZyb3plbiBzcGVjLlxuICovXG5leHBvcnQgY29uc3QgcHVibGljTGlzdGVkVmVyc2lvbnMgPSBwZ1ZpZXcoJ3B1YmxpY19saXN0ZWRfdmVyc2lvbnMnLCB7XG4gIGlkOiB1dWlkKCdpZCcpLm5vdE51bGwoKSxcbiAgbGlzdGluZ0lkOiB1dWlkKCdsaXN0aW5nX2lkJykubm90TnVsbCgpLFxuICBwdWJsaXNoZXJIYW5kbGU6IHZhcmNoYXIoJ3B1Ymxpc2hlcl9oYW5kbGUnLCB7IGxlbmd0aDogMzkgfSkubm90TnVsbCgpLFxuICBuYW1lOiB2YXJjaGFyKCduYW1lJywgeyBsZW5ndGg6IDI1NSB9KS5ub3ROdWxsKCksXG4gIHZlcnNpb246IHZhcmNoYXIoJ3ZlcnNpb24nLCB7IGxlbmd0aDogNTAgfSkubm90TnVsbCgpLFxuICBpbWFnZURpZ2VzdDogdmFyY2hhcignaW1hZ2VfZGlnZXN0JywgeyBsZW5ndGg6IDcxIH0pLFxuICBpbWFnZVJlcG9zaXRvcnk6IHZhcmNoYXIoJ2ltYWdlX3JlcG9zaXRvcnknLCB7IGxlbmd0aDogNTEyIH0pLFxuICBicmVha2luZzogYm9vbGVhbignYnJlYWtpbmcnKS5ub3ROdWxsKCksXG4gIGRlcHJlY2F0ZWRBdDogdGltZXN0YW1wKCdkZXByZWNhdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG4gIGNoYW5nZWxvZzogdGV4dCgnY2hhbmdlbG9nJyksXG4gIHZ1bG5Dcml0aWNhbDogaW50ZWdlcigndnVsbl9jcml0aWNhbCcpLFxuICB2dWxuSGlnaDogaW50ZWdlcigndnVsbl9oaWdoJyksXG4gIHNjYW5uZWRBdDogdGltZXN0YW1wKCdzY2FubmVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG4gIHB1Ymxpc2hlZEF0OiB0aW1lc3RhbXAoJ3B1Ymxpc2hlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLm5vdE51bGwoKSxcbiAgcGx1Z2luVHlwZTogdGV4dCgncGx1Z2luX3R5cGUnKSxcbiAgY29tcHV0ZVR5cGU6IHRleHQoJ2NvbXB1dGVfdHlwZScpLFxuICBzZWNyZXRzOiBqc29uYignc2VjcmV0cycpLiR0eXBlPFBsdWdpblNlY3JldFtdPigpLFxuICByZXF1aXJlZE1ldGFkYXRhOiBqc29uYigncmVxdWlyZWRfbWV0YWRhdGEnKS4kdHlwZTxzdHJpbmdbXT4oKSxcbiAgcmVxdWlyZWRWYXJzOiBqc29uYigncmVxdWlyZWRfdmFycycpLiR0eXBlPHN0cmluZ1tdPigpLFxuICBuZXR3b3JrRWdyZXNzOiBqc29uYignbmV0d29ya19lZ3Jlc3MnKS4kdHlwZTxzdHJpbmdbXT4oKSxcbiAgcnVuQXNSb290OiBib29sZWFuKCdydW5fYXNfcm9vdCcpLFxuICBsaWNlbnNlOiB0ZXh0KCdsaWNlbnNlJyksXG4gIHJlYWRtZUh0bWw6IHRleHQoJ3JlYWRtZV9odG1sJyksXG4gIC8vIFlhbmtlZCB2ZXJzaW9ucyBzdGF5IGxpc3RlZCAobWFya2VkKTsgdGhlIHlhbmsgcmVhc29uIGlzbid0IHB1YmxpYy5cbiAgeWFua2VkOiBib29sZWFuKCd5YW5rZWQnKS5ub3ROdWxsKCksXG4gIGRlcHJlY2F0aW9uTWVzc2FnZTogdGV4dCgnZGVwcmVjYXRpb25fbWVzc2FnZScpLFxuICBpbWFnZVNvdXJjZTogdGV4dCgnaW1hZ2Vfc291cmNlJyksXG4gIGJhc2VJbWFnZUNyZWF0ZWRBdDogdGltZXN0YW1wKCdiYXNlX2ltYWdlX2NyZWF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgLy8gQXBwZW5kZWQgaW4gdGhlIHZpZXcgKENSRUFURSBPUiBSRVBMQUNFIFZJRVcgb25seSBhZGRzIGNvbHVtbnMgYXQgdGhlIGVuZCkuXG4gIHZ1bG5Dcml0aWNhbEZpeGFibGU6IGludGVnZXIoJ3Z1bG5fY3JpdGljYWxfZml4YWJsZScpLFxuICB2dWxuSGlnaEZpeGFibGU6IGludGVnZXIoJ3Z1bG5faGlnaF9maXhhYmxlJyksXG4gIHNjYW5GbGFnZ2VkQXQ6IHRpbWVzdGFtcCgnc2Nhbl9mbGFnZ2VkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG4gIC8qKiBUaGUgR0MgZGVsZXRlZCB0aGlzIHZlcnNpb24ncyBwdWJsaWMgaW1hZ2Ug4oCUIHNlZSB0aGUgdmlldydzIG93biBub3RlLiAqL1xuICBpbWFnZUNvbGxlY3RlZDogYm9vbGVhbignaW1hZ2VfY29sbGVjdGVkJykubm90TnVsbCgpLFxufSkuZXhpc3RpbmcoKTtcblxuLyoqXG4gKiBgcHVibGljX2Fkdmlzb3JpZXNgOiBQVUJMSVNIRUQgYWR2aXNvcmllcyBvbiBsaXN0ZWQgbGlzdGluZ3MsIHB1YmxpYyBjb2x1bW5zXG4gKiBvbmx5IChubyBwdWJsaXNoZXIvb3JnIGlkcywgbm8gYXV0aG9yLCBubyBkcmFmdHMgb3Igd2l0aGRyYXduIHJvd3MpLlxuICovXG5leHBvcnQgY29uc3QgcHVibGljQWR2aXNvcmllcyA9IHBnVmlldygncHVibGljX2Fkdmlzb3JpZXMnLCB7XG4gIGlkOiB1dWlkKCdpZCcpLm5vdE51bGwoKSxcbiAgbGlzdGluZ0lkOiB1dWlkKCdsaXN0aW5nX2lkJykubm90TnVsbCgpLFxuICBwdWJsaXNoZXJIYW5kbGU6IHZhcmNoYXIoJ3B1Ymxpc2hlcl9oYW5kbGUnLCB7IGxlbmd0aDogMzkgfSkubm90TnVsbCgpLFxuICBuYW1lOiB2YXJjaGFyKCduYW1lJywgeyBsZW5ndGg6IDI1NSB9KS5ub3ROdWxsKCksXG4gIHNldmVyaXR5OiB2YXJjaGFyKCdzZXZlcml0eScsIHsgbGVuZ3RoOiAxMCB9KS4kdHlwZTxBZHZpc29yeVNldmVyaXR5PigpLm5vdE51bGwoKSxcbiAgc3VtbWFyeTogdmFyY2hhcignc3VtbWFyeScsIHsgbGVuZ3RoOiAzMDAgfSkubm90TnVsbCgpLFxuICBkZXRhaWxzSHRtbDogdGV4dCgnZGV0YWlsc19odG1sJyksXG4gIGN2ZUlkczogdGV4dCgnY3ZlX2lkcycpLmFycmF5KCkubm90TnVsbCgpLFxuICBhZmZlY3RlZFJhbmdlOiB2YXJjaGFyKCdhZmZlY3RlZF9yYW5nZScsIHsgbGVuZ3RoOiAyNTUgfSkubm90TnVsbCgpLFxuICBmaXhlZFZlcnNpb246IHZhcmNoYXIoJ2ZpeGVkX3ZlcnNpb24nLCB7IGxlbmd0aDogNTAgfSksXG4gIHB1Ymxpc2hlZEF0OiB0aW1lc3RhbXAoJ3B1Ymxpc2hlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxufSkuZXhpc3RpbmcoKTtcblxuLyoqXG4gKiBgcHVibGljX3Jldmlld3NgOiBQVUJMSVNIRUQgcmV2aWV3cyBvZiBwdWJsaWMgKG5vbi1wYXVzZWQpIGxpc3RpbmdzLCBwdWJsaWNcbiAqIGNvbHVtbnMgb25seSDigJQgdGhlIGF1dGhvcidzIGRpc3BsYXkgbmFtZSwgbmV2ZXIgYSB1c2VyIG9yIG9yZyBpZCDigJRcbiAqIHdpdGggdGhlIHB1Ymxpc2hlcidzIHJlcGx5LlxuICovXG5leHBvcnQgY29uc3QgcHVibGljUmV2aWV3cyA9IHBnVmlldygncHVibGljX3Jldmlld3MnLCB7XG4gIGlkOiB1dWlkKCdpZCcpLm5vdE51bGwoKSxcbiAgbGlzdGluZ0lkOiB1dWlkKCdsaXN0aW5nX2lkJykubm90TnVsbCgpLFxuICBwdWJsaXNoZXJIYW5kbGU6IHZhcmNoYXIoJ3B1Ymxpc2hlcl9oYW5kbGUnLCB7IGxlbmd0aDogMzkgfSkubm90TnVsbCgpLFxuICBuYW1lOiB2YXJjaGFyKCduYW1lJywgeyBsZW5ndGg6IDI1NSB9KS5ub3ROdWxsKCksXG4gIHZlcnNpb246IHZhcmNoYXIoJ3ZlcnNpb24nLCB7IGxlbmd0aDogNTAgfSksXG4gIHJhdGluZzogc21hbGxpbnQoJ3JhdGluZycpLm5vdE51bGwoKSxcbiAgdGl0bGU6IHZhcmNoYXIoJ3RpdGxlJywgeyBsZW5ndGg6IDEyMCB9KSxcbiAgYm9keUh0bWw6IHRleHQoJ2JvZHlfaHRtbCcpLFxuICBhdXRob3JEaXNwbGF5TmFtZTogdmFyY2hhcignYXV0aG9yX2Rpc3BsYXlfbmFtZScsIHsgbGVuZ3RoOiAxMDAgfSksXG4gIHZlcmlmaWVkVXNlOiBib29sZWFuKCd2ZXJpZmllZF91c2UnKS5ub3ROdWxsKCksXG4gIGhlbHBmdWxDb3VudDogaW50ZWdlcignaGVscGZ1bF9jb3VudCcpLm5vdE51bGwoKSxcbiAgZWRpdGVkOiBib29sZWFuKCdlZGl0ZWQnKS5ub3ROdWxsKCksXG4gIGNyZWF0ZWRBdDogdGltZXN0YW1wKCdjcmVhdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkubm90TnVsbCgpLFxuICB1cGRhdGVkQXQ6IHRpbWVzdGFtcCgndXBkYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLm5vdE51bGwoKSxcbiAgcHVibGlzaGVyRGlzcGxheU5hbWU6IHZhcmNoYXIoJ3B1Ymxpc2hlcl9kaXNwbGF5X25hbWUnLCB7IGxlbmd0aDogMjU1IH0pLm5vdE51bGwoKSxcbiAgcmVwbHlCb2R5SHRtbDogdGV4dCgncmVwbHlfYm9keV9odG1sJyksXG4gIHJlcGx5Q3JlYXRlZEF0OiB0aW1lc3RhbXAoJ3JlcGx5X2NyZWF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgcmVwbHlVcGRhdGVkQXQ6IHRpbWVzdGFtcCgncmVwbHlfdXBkYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxufSkuZXhpc3RpbmcoKTtcblxuLyoqIFRoZSBvZmZpY2lhbCBwdWJsaXNoZXIncyBoYW5kbGUgKHRoZSBzeXN0ZW0gb3JnJ3MgY2F0YWxvZykuICovXG5leHBvcnQgY29uc3QgT0ZGSUNJQUxfUFVCTElTSEVSX0hBTkRMRSA9ICdwaXBlbGluZS1idWlsZGVyJztcbi8qKiBUaGUgcGxhdGZvcm0tb3duZWQgcHVibGlzaGVyIGFub255bW91cyBzdWJtaXNzaW9ucyBsYW5kIHVuZGVyLiAqL1xuZXhwb3J0IGNvbnN0IENPTU1VTklUWV9QVUJMSVNIRVJfSEFORExFID0gJ2NvbW11bml0eSc7XG5cbi8qKiBGaXhlZCBpZHMgb2YgdGhlIHR3byBhdXRvLWFwcHJvdmFsIHJ1bGVzIHBvc3RncmVzLWluaXQuc3FsIHNlZWRzLiAqL1xuZXhwb3J0IGNvbnN0IFNFRURFRF9BVVRPX0FQUFJPVkFMX1JVTEVfSURTID0ge1xuICB2ZXJpZmllZFVwZGF0ZXM6ICcwMDAwMDAwMC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGEwMDEnLFxuICBvZmZpY2lhbENhdGFsb2c6ICcwMDAwMDAwMC0wMDAwLTQwMDAtODAwMC0wMDAwMDAwMGEwMDInLFxufSBhcyBjb25zdDtcblxuLyoqXG4gKiBUeXBlU2NyaXB0IHR5cGVzIHJlcHJlc2VudGluZyBkYXRhYmFzZSByb3dzXG4gKi9cbmV4cG9ydCB0eXBlIFB1Ymxpc2hlciA9IHR5cGVvZiBwdWJsaXNoZXIuJGluZmVyU2VsZWN0O1xuZXhwb3J0IHR5cGUgUHVibGlzaGVySW5zZXJ0ID0gdHlwZW9mIHB1Ymxpc2hlci4kaW5mZXJJbnNlcnQ7XG5cbmV4cG9ydCB0eXBlIFBsdWdpbkxpc3RpbmcgPSB0eXBlb2YgcGx1Z2luTGlzdGluZy4kaW5mZXJTZWxlY3Q7XG5leHBvcnQgdHlwZSBQbHVnaW5MaXN0aW5nSW5zZXJ0ID0gdHlwZW9mIHBsdWdpbkxpc3RpbmcuJGluZmVySW5zZXJ0O1xuXG5leHBvcnQgdHlwZSBQbHVnaW5MaXN0aW5nVmVyc2lvbiA9IHR5cGVvZiBwbHVnaW5MaXN0aW5nVmVyc2lvbi4kaW5mZXJTZWxlY3Q7XG5leHBvcnQgdHlwZSBQbHVnaW5MaXN0aW5nVmVyc2lvbkluc2VydCA9IHR5cGVvZiBwbHVnaW5MaXN0aW5nVmVyc2lvbi4kaW5mZXJJbnNlcnQ7XG5cbmV4cG9ydCB0eXBlIFBsdWdpbkFkdmlzb3J5ID0gdHlwZW9mIHBsdWdpbkFkdmlzb3J5LiRpbmZlclNlbGVjdDtcbmV4cG9ydCB0eXBlIFBsdWdpbkFkdmlzb3J5SW5zZXJ0ID0gdHlwZW9mIHBsdWdpbkFkdmlzb3J5LiRpbmZlckluc2VydDtcblxuZXhwb3J0IHR5cGUgRWNvc3lzdGVtQXV0b0FwcHJvdmFsUnVsZSA9IHR5cGVvZiBlY29zeXN0ZW1BdXRvQXBwcm92YWxSdWxlLiRpbmZlclNlbGVjdDtcbmV4cG9ydCB0eXBlIEVjb3N5c3RlbUF1dG9BcHByb3ZhbFJ1bGVJbnNlcnQgPSB0eXBlb2YgZWNvc3lzdGVtQXV0b0FwcHJvdmFsUnVsZS4kaW5mZXJJbnNlcnQ7XG5cbmV4cG9ydCB0eXBlIFBsdWdpblB1Ymxpc2hSZXF1ZXN0ID0gdHlwZW9mIHBsdWdpblB1Ymxpc2hSZXF1ZXN0LiRpbmZlclNlbGVjdDtcbmV4cG9ydCB0eXBlIFBsdWdpblB1Ymxpc2hSZXF1ZXN0SW5zZXJ0ID0gdHlwZW9mIHBsdWdpblB1Ymxpc2hSZXF1ZXN0LiRpbmZlckluc2VydDtcblxuZXhwb3J0IHR5cGUgRWNvc3lzdGVtUmVzZXJ2ZWROYW1lID0gdHlwZW9mIGVjb3N5c3RlbVJlc2VydmVkTmFtZS4kaW5mZXJTZWxlY3Q7XG5leHBvcnQgdHlwZSBFY29zeXN0ZW1SZXNlcnZlZE5hbWVJbnNlcnQgPSB0eXBlb2YgZWNvc3lzdGVtUmVzZXJ2ZWROYW1lLiRpbmZlckluc2VydDtcblxuZXhwb3J0IHR5cGUgRWNvc3lzdGVtU2V0dGluZyA9IHR5cGVvZiBlY29zeXN0ZW1TZXR0aW5nLiRpbmZlclNlbGVjdDtcbmV4cG9ydCB0eXBlIEVjb3N5c3RlbVNldHRpbmdJbnNlcnQgPSB0eXBlb2YgZWNvc3lzdGVtU2V0dGluZy4kaW5mZXJJbnNlcnQ7XG5cblxuZXhwb3J0IHR5cGUgUGx1Z2luUmV2aWV3ID0gdHlwZW9mIHBsdWdpblJldmlldy4kaW5mZXJTZWxlY3Q7XG5leHBvcnQgdHlwZSBQbHVnaW5SZXZpZXdJbnNlcnQgPSB0eXBlb2YgcGx1Z2luUmV2aWV3LiRpbmZlckluc2VydDtcblxuZXhwb3J0IHR5cGUgUGx1Z2luUmV2aWV3UmVwbHkgPSB0eXBlb2YgcGx1Z2luUmV2aWV3UmVwbHkuJGluZmVyU2VsZWN0O1xuZXhwb3J0IHR5cGUgUGx1Z2luUmV2aWV3UmVwbHlJbnNlcnQgPSB0eXBlb2YgcGx1Z2luUmV2aWV3UmVwbHkuJGluZmVySW5zZXJ0O1xuXG5leHBvcnQgdHlwZSBQbHVnaW5SZXZpZXdSZXBvcnQgPSB0eXBlb2YgcGx1Z2luUmV2aWV3UmVwb3J0LiRpbmZlclNlbGVjdDtcbmV4cG9ydCB0eXBlIFBsdWdpblJldmlld1JlcG9ydEluc2VydCA9IHR5cGVvZiBwbHVnaW5SZXZpZXdSZXBvcnQuJGluZmVySW5zZXJ0O1xuXG5leHBvcnQgdHlwZSBQbHVnaW5SZXZpZXdWb3RlID0gdHlwZW9mIHBsdWdpblJldmlld1ZvdGUuJGluZmVyU2VsZWN0O1xuZXhwb3J0IHR5cGUgUGx1Z2luUmV2aWV3Vm90ZUluc2VydCA9IHR5cGVvZiBwbHVnaW5SZXZpZXdWb3RlLiRpbmZlckluc2VydDtcblxuZXhwb3J0IHR5cGUgUGx1Z2luUmV2aWV3SGlzdG9yeSA9IHR5cGVvZiBwbHVnaW5SZXZpZXdIaXN0b3J5LiRpbmZlclNlbGVjdDtcbmV4cG9ydCB0eXBlIFBsdWdpblJldmlld0hpc3RvcnlJbnNlcnQgPSB0eXBlb2YgcGx1Z2luUmV2aWV3SGlzdG9yeS4kaW5mZXJJbnNlcnQ7XG5cbmV4cG9ydCB0eXBlIFBsdWdpblN0YXRzID0gdHlwZW9mIHBsdWdpblN0YXRzLiRpbmZlclNlbGVjdDtcbmV4cG9ydCB0eXBlIFBsdWdpblN0YXRzSW5zZXJ0ID0gdHlwZW9mIHBsdWdpblN0YXRzLiRpbmZlckluc2VydDtcblxuZXhwb3J0IHR5cGUgUGx1Z2luU3VibWlzc2lvbiA9IHR5cGVvZiBwbHVnaW5TdWJtaXNzaW9uLiRpbmZlclNlbGVjdDtcbmV4cG9ydCB0eXBlIFBsdWdpblN1Ym1pc3Npb25JbnNlcnQgPSB0eXBlb2YgcGx1Z2luU3VibWlzc2lvbi4kaW5mZXJJbnNlcnQ7XG5cbmV4cG9ydCB0eXBlIEVjb3N5c3RlbVNlYXJjaE1pc3MgPSB0eXBlb2YgZWNvc3lzdGVtU2VhcmNoTWlzcy4kaW5mZXJTZWxlY3Q7XG5leHBvcnQgdHlwZSBFY29zeXN0ZW1TZWFyY2hNaXNzSW5zZXJ0ID0gdHlwZW9mIGVjb3N5c3RlbVNlYXJjaE1pc3MuJGluZmVySW5zZXJ0O1xuXG5leHBvcnQgdHlwZSBFY29zeXN0ZW1Ob3RpZmljYXRpb24gPSB0eXBlb2YgZWNvc3lzdGVtTm90aWZpY2F0aW9uUXVldWUuJGluZmVyU2VsZWN0O1xuZXhwb3J0IHR5cGUgRWNvc3lzdGVtTm90aWZpY2F0aW9uSW5zZXJ0ID0gdHlwZW9mIGVjb3N5c3RlbU5vdGlmaWNhdGlvblF1ZXVlLiRpbmZlckluc2VydDtcblxuZXhwb3J0IHR5cGUgUGlwZWxpbmVTdGVwTWFuaWZlc3QgPSB0eXBlb2YgcGlwZWxpbmVTdGVwTWFuaWZlc3QuJGluZmVyU2VsZWN0O1xuZXhwb3J0IHR5cGUgUGlwZWxpbmVTdGVwTWFuaWZlc3RJbnNlcnQgPSB0eXBlb2YgcGlwZWxpbmVTdGVwTWFuaWZlc3QuJGluZmVySW5zZXJ0O1xuXG5leHBvcnQgdHlwZSBQbHVnaW5JbnN0YWxsID0gdHlwZW9mIHBsdWdpbkluc3RhbGwuJGluZmVyU2VsZWN0O1xuZXhwb3J0IHR5cGUgUGx1Z2luSW5zdGFsbEluc2VydCA9IHR5cGVvZiBwbHVnaW5JbnN0YWxsLiRpbmZlckluc2VydDtcblxuZXhwb3J0IHR5cGUgUGx1Z2luSW5zdGFsbFBvbGljeSA9IHR5cGVvZiBwbHVnaW5JbnN0YWxsUG9saWN5LiRpbmZlclNlbGVjdDtcbmV4cG9ydCB0eXBlIFBsdWdpbkluc3RhbGxQb2xpY3lJbnNlcnQgPSB0eXBlb2YgcGx1Z2luSW5zdGFsbFBvbGljeS4kaW5mZXJJbnNlcnQ7XG5cbmV4cG9ydCB0eXBlIFBsdWdpblNlY3VyaXR5Tm90aWZpY2F0aW9uUHJlZiA9IHR5cGVvZiBwbHVnaW5TZWN1cml0eU5vdGlmaWNhdGlvblByZWYuJGluZmVyU2VsZWN0O1xuXG5leHBvcnQgdHlwZSBQbHVnaW5BZHZpc29yeURlbGl2ZXJ5ID0gdHlwZW9mIHBsdWdpbkFkdmlzb3J5RGVsaXZlcnkuJGluZmVyU2VsZWN0O1xuZXhwb3J0IHR5cGUgUGx1Z2luQWR2aXNvcnlEZWxpdmVyeUluc2VydCA9IHR5cGVvZiBwbHVnaW5BZHZpc29yeURlbGl2ZXJ5LiRpbmZlckluc2VydDtcblxuZXhwb3J0IHR5cGUgUHVibGljTGlzdGluZyA9IHR5cGVvZiBwdWJsaWNMaXN0aW5ncy4kaW5mZXJTZWxlY3Q7XG5leHBvcnQgdHlwZSBQdWJsaWNMaXN0ZWRWZXJzaW9uID0gdHlwZW9mIHB1YmxpY0xpc3RlZFZlcnNpb25zLiRpbmZlclNlbGVjdDtcbmV4cG9ydCB0eXBlIFB1YmxpY0Fkdmlzb3J5ID0gdHlwZW9mIHB1YmxpY0Fkdmlzb3JpZXMuJGluZmVyU2VsZWN0O1xuZXhwb3J0IHR5cGUgUHVibGljUmV2aWV3ID0gdHlwZW9mIHB1YmxpY1Jldmlld3MuJGluZmVyU2VsZWN0O1xuIl19