@pipeline-builder/pipeline-data 4.3.6 → 4.3.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/api/access-control-builder.js +1 -1
- package/lib/api/alert-destinations.js +1 -1
- package/lib/api/crud-service.js +1 -1
- package/lib/api/ecosystem-privacy.js +1 -1
- package/lib/api/keyset-cursor.js +1 -1
- package/lib/api/pipeline-step-resolution.js +1 -1
- package/lib/api/plugin-advisories.js +1 -1
- package/lib/api/plugin-consumption-policy.js +1 -1
- package/lib/api/plugin-resolution.js +6 -1
- package/lib/api/public-directory.d.ts +71 -3
- package/lib/api/public-directory.js +68 -22
- package/lib/api/query-builders.js +47 -2
- package/lib/api/reporting/analytics-queries.js +1 -1
- package/lib/api/reporting/caches.js +1 -1
- package/lib/api/reporting/daily-rollup.js +1 -1
- package/lib/api/reporting/deploy-rollup.js +1 -1
- package/lib/api/reporting/dora-scoring.js +1 -1
- package/lib/api/reporting/dora.js +1 -1
- package/lib/api/reporting/failure-classifier.js +1 -1
- package/lib/api/reporting/ingest.js +1 -1
- package/lib/api/reporting/last-deploy.js +1 -1
- package/lib/api/reporting/needs-attention.js +1 -1
- package/lib/api/reporting/plugin-exposure.js +1 -1
- package/lib/api/reporting/plugin-runtime.js +1 -1
- package/lib/api/reporting/query-scope.js +1 -1
- package/lib/api/reporting/retention-sweep.js +1 -1
- package/lib/api/reporting/retention.js +1 -1
- package/lib/api/reporting/sql-helpers.js +1 -1
- package/lib/api/reporting/stakeholder/compose.js +1 -1
- package/lib/api/reporting/stakeholder/index.js +1 -1
- package/lib/api/reporting/stakeholder/period.js +1 -1
- package/lib/api/reporting/stakeholder/report-html.js +1 -1
- package/lib/api/reporting/stakeholder/sections.js +1 -1
- package/lib/api/reporting/stakeholder/store.js +1 -1
- package/lib/api/reporting/stakeholder/templates.js +1 -1
- package/lib/api/reporting/types.js +1 -1
- package/lib/api/reporting-service.js +1 -1
- package/lib/api/semver-range.js +1 -1
- package/lib/api/soft-delete-sweep.js +1 -1
- package/lib/api/support-cases.js +1 -1
- package/lib/api/version-references.js +1 -1
- package/lib/api/viewer-context.js +1 -1
- package/lib/core/query-filters.d.ts +25 -0
- package/lib/core/query-filters.js +1 -1
- package/lib/database/drizzle-schema.d.ts +19 -0
- package/lib/database/drizzle-schema.js +1 -1
- package/lib/database/index.js +1 -1
- package/lib/database/pg-result.js +1 -1
- package/lib/database/postgres-connection.js +1 -1
- package/lib/database/public-reader.js +1 -1
- package/lib/database/read-connection.js +1 -1
- package/lib/database/read-lag.js +1 -1
- package/lib/database/retry-strategy.js +1 -1
- package/lib/database/schema/alert.js +1 -1
- package/lib/database/schema/compliance.js +1 -1
- package/lib/database/schema/dashboard.js +1 -1
- package/lib/database/schema/ecosystem.d.ts +17 -0
- package/lib/database/schema/ecosystem.js +3 -1
- package/lib/database/schema/message-attachment.js +1 -1
- package/lib/database/schema/message.d.ts +19 -0
- package/lib/database/schema/message.js +18 -1
- package/lib/database/schema/pipeline-template.js +1 -1
- package/lib/database/schema/pipeline.js +1 -1
- package/lib/database/schema/plugin.js +1 -1
- package/lib/database/schema/reporting-analytics.js +1 -1
- package/lib/database/schema/reporting-stakeholder.js +1 -1
- package/lib/database/schema/support.js +1 -1
- package/lib/database/tenancy.js +1 -1
- package/lib/index.js +1 -1
- package/package.json +8 -8
|
@@ -149,4 +149,4 @@ export function percentile(values, p) {
|
|
|
149
149
|
* trend, and build health — so the precedence can't drift between them. Assumes the
|
|
150
150
|
* grouped event alias is `e`.
|
|
151
151
|
*/
|
|
152
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9yYS1zY29yaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwaS9yZXBvcnRpbmcvZG9yYS1zY29yaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFJdEM7Ozs7R0FJRztBQUVIOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsWUFBWSxDQUFDO0FBRXpDOzs7OztHQUtHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcsQ0FBQyxHQUFHLEVBQUU7SUFDOUMsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsMEJBQTBCLENBQUMsQ0FBQztJQUMzRCxPQUFPLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDcEQsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUVMOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLFVBQVUsMEJBQTBCLENBQUMsUUFBd0I7SUFDakUsT0FBTyxRQUFRLElBQUksSUFBSSxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksUUFBUSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQywwQkFBMEIsQ0FBQztBQUMvRyxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFFSCx3RkFBd0Y7QUFDeEYsTUFBTSxVQUFVLHFCQUFxQixDQUFDLE1BQWMsRUFBRSxXQUFtQjtJQUN2RSxJQUFJLFdBQVcsSUFBSSxDQUFDO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFDbEMsSUFBSSxNQUFNLElBQUksQ0FBQztRQUFFLE9BQU8sT0FBTyxDQUFDO0lBQ2hDLElBQUksTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDO1FBQUUsT0FBTyxNQUFN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LE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN4QyxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzVCLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDM0IsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQztBQUNuRSxDQUFDO0FBRUQ7Ozs7OztHQU1HIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCB0eXBlIHsgRG9yYUxldmVsIH0gZnJvbSAnLi90eXBlcy5qcyc7XG5cbi8qKlxuICogRE9SQSBwZXJmb3JtYW5jZSBiYW5kaW5nIHBsdXMgdGhlIHNtYWxsIHN0YXRpc3RpY3MgaGVscGVycyBpdCBuZWVkcy5cbiAqIFB1cmUgZnVuY3Rpb25zIOKAlCBubyBkYXRhYmFzZSBhY2Nlc3MsIG5vIEkvTyDigJQgd2hpY2ggaXMgd2hhdCBsZXRzIHRoZVxuICogdGhyZXNob2xkcyBiZSB1bml0LXRlc3RlZCBpbmRlcGVuZGVudGx5IG9mIHRoZSBxdWVyaWVzIHRoYXQgZmVlZCB0aGVtLlxuICovXG5cbi8qKlxuICogVGhlIERPUkEgaGVhZGxpbmUgZW52aXJvbm1lbnQuIERlcGxveW1lbnQgdG8gdGhpcyBsaXRlcmFsIGVudiBuYW1lIGlzIHRoZVxuICogaW5kdXN0cnktc3RhbmRhcmQgRE9SQSBzaWduYWw7IE1UVFIgaXMgbWVhc3VyZWQgcHJvZHVjdGlvbi1vbmx5LCBhbmQgdGhpc1xuICogZW52aXJvbm1lbnQncyBjYXJkIGlzIHRoZSBzdW1tYXJ5IHNob3duIGF0IHRoZSB0b3Agb2YgdGhlIHBhbmVsLlxuICovXG5leHBvcnQgY29uc3QgSEVBRExJTkVfRU5WID0gJ3Byb2R1Y3Rpb24nO1xuXG4vKipcbiAqIEluY2lkZW504oaSZGVwbG95IGNvcnJlbGF0aW9uIHdpbmRvdy4gQW4gaW5jaWRlbnQgaXMgYXR0cmlidXRlZCB0byB0aGVcbiAqIG1vc3QgcmVjZW50IFNVQ0NFU1NGVUwgZGVwbG95IHRvIGl0cyBlbnZpcm9ubWVudCB3aG9zZSBgY29tcGxldGVkX2F0YCBpcyB3aXRoaW5cbiAqIHRoaXMgbWFueSBob3VycyBiZWZvcmUgdGhlIGluY2lkZW50J3MgYG9wZW5lZF9hdGAuIERlZmF1bHQgMjRoOyBvdmVycmlkZSB2aWFcbiAqIGBET1JBX0lOQ0lERU5UX1dJTkRPV19IT1VSU2AuIEd1YXJkZWQgdG8gYSBwb3NpdGl2ZSBmaW5pdGUgbnVtYmVyLlxuICovXG5leHBvcnQgY29uc3QgRE9SQV9JTkNJREVOVF9XSU5ET1dfSE9VUlMgPSAoKCkgPT4ge1xuICBjb25zdCByYXcgPSBOdW1iZXIocHJvY2Vzcy5lbnYuRE9SQV9JTkNJREVOVF9XSU5ET1dfSE9VUlMpO1xuICByZXR1cm4gTnVtYmVyLmlzRmluaXRlKHJhdykgJiYgcmF3ID4gMCA/IHJhdyA6IDI0O1xufSkoKTtcblxuLyoqXG4gKiBSZXNvbHZlIHRoZSBlZmZlY3RpdmUgaW5jaWRlbnTihpJkZXBsb3kgY29ycmVsYXRpb24gd2luZG93LiBBIHBlci1vcmdcbiAqIG92ZXJyaWRlIChmcm9tIGBkb3JhX3NldHRpbmdzLmluY2lkZW50X3dpbmRvd19ob3Vyc2AsIHN1cmZhY2VkIHRocm91Z2ggdGhlXG4gKiBzZXR0aW5ncyBlbmRwb2ludCBhbmQgdGhyZWFkZWQgaW50byB7QGxpbmsgRG9yYU9wdGlvbnMuaW5jaWRlbnRXaW5kb3dIb3Vyc30pXG4gKiB3aW5zIHdoZW4gaXQgaXMgYSBwb3NpdGl2ZSBmaW5pdGUgbnVtYmVyOyBvdGhlcndpc2UgdGhlIGdsb2JhbCBlbnYgZGVmYXVsdFxuICogYERPUkFfSU5DSURFTlRfV0lORE9XX0hPVVJTYCBhcHBsaWVzLiBDZW50cmFsaXplZCBzbyB0aGUgRE9SQSBjb3JyZWxhdGlvbiwgdGhlXG4gKiBpbmNpZGVudHMgbGlzdCwgYW5kIHRoZSB3aXJpbmctdGVzdCBkcnktcnVuIGFsbCBhZ3JlZSBvbiB0aGUgc2FtZSBydWxlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZUluY2lkZW50V2luZG93SG91cnMob3ZlcnJpZGU/OiBudW1iZXIgfCBudWxsKTogbnVtYmVyIHtcbiAgcmV0dXJuIG92ZXJyaWRlICE9IG51bGwgJiYgTnVtYmVyLmlzRmluaXRlKG92ZXJyaWRlKSAmJiBvdmVycmlkZSA+IDAgPyBvdmVycmlkZSA6IERPUkFfSU5DSURFTlRfV0lORE9XX0hPVVJTO1xufVxuXG4vKipcbiAqIFJlcG9ydGluZyByZXRlbnRpb24gd2luZG93cy4gUmVjb3JkcyBpbiBgcGlwZWxpbmVfZXZlbnRzYCxcbiAqIGBkZXBsb3ltZW50X291dGNvbWVzYCwgYW5kIGBpbmNpZGVudHNgIGdyb3cgdW5ib3VuZGVkIHdpdGhvdXQgYSBzd2VlcCwgc28gYVxuICogc3BsaXQsIHBlci1vcmcgcmV0ZW50aW9uIHB1cmdlIChzZWUgYHB1cmdlRXhwaXJlZFJlcG9ydGluZ0RhdGFgIGluIC4vcmV0ZW50aW9uLXN3ZWVwLnRzKVxuICogaGFyZC1kZWxldGVzIHJvd3Mgb2xkZXIgdGhhbiB0aGVzZSB3aW5kb3dzLCBieSBgY3JlYXRlZF9hdGA6XG4gKiAgLSAqKlN0YW5kYXJkIGV2ZW50cyoqIOKAlCBgcGlwZWxpbmVfZXZlbnRzYCB3aXRoIGBlbnZpcm9ubWVudCBJUyBOVUxMYCBhbmQgbm9cbiAqICAgIGBjb21taXRfdGltZXN0YW1wYCAobm9uLWRlcGxveSBTVEFHRS9BQ1RJT04vYnVpbGQpLiBIaWdoIHZvbHVtZSDihpIgc2hvcnRcbiAqICAgIGRlZmF1bHQgKDMwIGRheXMpLiBBIHJvdyB0aGF0IERPRVMgY2FycnkgYSBjb21taXQgdGltZXN0YW1wIGlzIERPUkEgc291cmNlXG4gKiAgICBkYXRhIOKAlCBsZWFkIHRpbWUgam9pbnMgb24gaXQg4oCUIHNvIGl0IGZvbGxvd3MgdGhlIERPUkEgd2luZG93IGluc3RlYWQuXG4gKiAgLSAqKkRPUkEgc291cmNlKiog4oCUIGBwaXBlbGluZV9ldmVudHNgIHdpdGggYGVudmlyb25tZW50IElTIE5PVCBOVUxMYCAoZGVwbG95XG4gKiAgICBzdGFnZXMpIHBsdXMgYWxsIG9mIGBkZXBsb3ltZW50X291dGNvbWVzYCBhbmQgYGluY2lkZW50c2AuIExvdyB2b2x1bWUg4oaSXG4gKiAgICBsb25nZXIgZGVmYXVsdCAoMTgwIGRheXMpLiBET1JBIGhpc3RvcnkgaXMgdGhlcmVmb3JlIGJvdW5kZWQgYnkgdGhpcyB3aW5kb3c7XG4gKiAgICB0aGUgcmVwb3J0IHF1ZXJ5IHN0aWxsIGhhcmQtY2FwcyBhdCAzNjUgZGF5cyAoYSBsb25nZXIgcGVyLW9yZyBvdmVycmlkZSBvbmx5XG4gKiAgICByZXRhaW5zIHJhdyBzb3VyY2Ugcm93cywgbmV2ZXIgd2lkZW5zIGEgcmVwb3J0KS5cbiAqIGBpbmdlc3RfaGVhbHRoYCBhbmQgYGRvcmFfc2V0dGluZ3NgIGFyZSBuZXZlciBwdXJnZWQuIEVudi1vdmVycmlkYWJsZSBnbG9iYWxzO1xuICogYSBwZXItb3JnIG92ZXJyaWRlIGluIGBkb3JhX3NldHRpbmdzYCB3aW5zIChzZWUge0BsaW5rIHJlc29sdmVFdmVudFJldGVudGlvbkRheXN9KS5cbiAqL1xuXG4vKiogRGVwbG95bWVudCBmcmVxdWVuY3kgYnkgZGVwbG95cy9kYXk6IGVsaXRlIOKJpTEvZGF5LCBoaWdoIOKJpTEvd2VlaywgbWVkaXVtIOKJpTEvbW9udGguICovXG5leHBvcnQgZnVuY3Rpb24gZG9yYUxldmVsRm9yRnJlcXVlbmN5KHBlckRheTogbnVtYmVyLCBkZXBsb3ltZW50czogbnVtYmVyKTogRG9yYUxldmVsIHtcbiAgaWYgKGRlcGxveW1lbnRzIDw9IDApIHJldHVybiBudWxsO1xuICBpZiAocGVyRGF5ID49IDEpIHJldHVybiAnZWxpdGUnO1xuICBpZiAocGVyRGF5ID49IDEgLyA3KSByZXR1cm4gJ2hpZ2gnO1xuICBpZiAocGVyRGF5ID49IDEgLyAzMCkgcmV0dXJuICdtZWRpdW0nO1xuICByZXR1cm4gJ2xvdyc7XG59XG4vKiogQ2hhbmdlIGZhaWx1cmUgcmF0ZSBieSBwZXJjZW50OiBlbGl0ZSDiiaQ1JSwgaGlnaCDiiaQxMCUsIG1lZGl1bSDiiaQxNSUuICovXG5leHBvcnQgZnVuY3Rpb24gZG9yYUxldmVsRm9yQ2hhbmdlRmFpbHVyZShwY3Q6IG51bWJlciwgdG90YWw6IG51bWJlcik6IERvcmFMZXZlbCB7XG4gIGlmICh0b3RhbCA8PSAwKSByZXR1cm4gbnVsbDtcbiAgaWYgKHBjdCA8PSA1KSByZXR1cm4gJ2VsaXRlJztcbiAgaWYgKHBjdCA8PSAxMCkgcmV0dXJuICdoaWdoJztcbiAgaWYgKHBjdCA8PSAxNSkgcmV0dXJuICdtZWRpdW0nO1xuICByZXR1cm4gJ2xvdyc7XG59XG4vKiogVGltZSB0byByZXN0b3JlIGJ5IHNlY29uZHM6IGVsaXRlIDwxaCwgaGlnaCA8MSBkYXksIG1lZGl1bSA8MSB3ZWVrLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRvcmFMZXZlbEZvclJlc3RvcmUoYXZnU2Vjb25kczogbnVtYmVyIHwgbnVsbCk6IERvcmFMZXZlbCB7XG4gIGlmIChhdmdTZWNvbmRzID09IG51bGwpIHJldHVybiBudWxsO1xuICBpZiAoYXZnU2Vjb25kcyA8IDM2MDApIHJldHVybiAnZWxpdGUnO1xuICBpZiAoYXZnU2Vjb25kcyA8IDg2NDAwKSByZXR1cm4gJ2hpZ2gnO1xuICBpZiAoYXZnU2Vjb25kcyA8IDYwNDgwMCkgcmV0dXJuICdtZWRpdW0nO1xuICByZXR1cm4gJ2xvdyc7XG59XG4vKiogTGVhZCB0aW1lIGJ5IHNlY29uZHM6IGVsaXRlIDwxIGRheSwgaGlnaCA8MSB3ZWVrLCBtZWRpdW0gPDEgbW9udGguICovXG5leHBvcnQgZnVuY3Rpb24gZG9yYUxldmVsRm9yTGVhZFRpbWUobWVkaWFuU2Vjb25kczogbnVtYmVyIHwgbnVsbCk6IERvcmFMZXZlbCB7XG4gIGlmIChtZWRpYW5TZWNvbmRzID09IG51bGwpIHJldHVybiBudWxsO1xuICBpZiAobWVkaWFuU2Vjb25kcyA8IDg2NDAwKSByZXR1cm4gJ2VsaXRlJztcbiAgaWYgKG1lZGlhblNlY29uZHMgPCA2MDQ4MDApIHJldHVybiAnaGlnaCc7XG4gIGlmIChtZWRpYW5TZWNvbmRzIDwgMjU5MjAwMCkgcmV0dXJuICdtZWRpdW0nO1xuICByZXR1cm4gJ2xvdyc7XG59XG5cbi8qKlxuICogUm91bmQgYHZhbHVlYCB0byBgZGlnaXRzYCBkZWNpbWFsIHBsYWNlcywgcmV0dXJuaW5nIGEgcmVhbCBudW1iZXIuIFNtYWxsXG4gKiBtb2R1bGUtcHJpdmF0ZSBoZWxwZXIgc28gdGhlIERPUkEgc2hhcGluZyBkb2Vzbid0IHJlcGVhdCB0aGVcbiAqIGBOdW1iZXIoTnVtYmVyKHgpLnRvRml4ZWQobikpYCBwYXR0ZXJuICh0b0ZpeGVkIGFsb25lIHlpZWxkcyBhIHN0cmluZykuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByb3VuZCh2YWx1ZTogbnVtYmVyLCBkaWdpdHM6IG51bWJlcik6IG51bWJlciB7XG4gIHJldHVybiBOdW1iZXIodmFsdWUudG9GaXhlZChkaWdpdHMpKTtcbn1cblxuLyoqXG4gKiBNZWRpYW4gb2YgYSBudW1lcmljIHNhbXBsZSwgb3IgYG51bGxgIHdoZW4gZW1wdHkuIFVzZWQgZm9yIG1lYXN1cmVkIGxlYWQgdGltZVxuICogYW5kIE1UVFIg4oCUIGJvdGggYXJlIGNyb3NzLXNvdXJjZSBnYXBzIGNvbXB1dGVkIGluIEpTIGZyb20gY2xhbXBlZCBkZWx0YXMsIHNvXG4gKiB0aGUgbWVkaWFuIGxpdmVzIGhlcmUgcmF0aGVyIHRoYW4gaW4gU1FMIFBFUkNFTlRJTEVfQ09OVCAoa2VlcHMgdGhlIGdvbGRlblxuICogZml4dHVyZSB0ZXN0cyBhYmxlIHRvIHByb3ZlIHRoZSBtZXRyaWMgbWF0aCB3aXRob3V0IGEgbGl2ZSBQb3N0Z3JlcykuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtZWRpYW4odmFsdWVzOiBudW1iZXJbXSk6IG51bWJlciB8IG51bGwge1xuICBpZiAodmFsdWVzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIG51bGw7XG4gIGNvbnN0IHMgPSBbLi4udmFsdWVzXS5zb3J0KChhLCBiKSA9PiBhIC0gYik7XG4gIGNvbnN0IG1pZCA9IE1hdGguZmxvb3Iocy5sZW5ndGggLyAyKTtcbiAgcmV0dXJuIHMubGVuZ3RoICUgMiA9PT0gMSA/IHNbbWlkXSA6IChzW21pZCAtIDFdICsgc1ttaWRdKSAvIDI7XG59XG5cbi8qKlxuICogVGhlIGBwYC10aCBwZXJjZW50aWxlIG9mIGEgc2FtcGxlICgwIDwgcCA8IDEwMCksIG9yIGBudWxsYCB3aGVuIGVtcHR5LlxuICpcbiAqIExpbmVhciBpbnRlcnBvbGF0aW9uIGJldHdlZW4gb3JkZXIgc3RhdGlzdGljcyDigJQgdGhlIHNhbWUgZGVmaW5pdGlvbiBhc1xuICogUG9zdGdyZXMncyBgUEVSQ0VOVElMRV9DT05UYCwgc28gYSByZWFkZXIgY29tcGFyaW5nIHRoaXMgdG8gYSBoYW5kLXdyaXR0ZW4gU1FMXG4gKiBxdWVyeSBnZXRzIHRoZSBzYW1lIG51bWJlci4ge0BsaW5rIG1lZGlhbn0gaXMgcDUwIGJ5IHRoaXMgZGVmaW5pdGlvbiB0b287IGl0XG4gKiBzdGF5cyBhIHNlcGFyYXRlIGZ1bmN0aW9uIGJlY2F1c2UgaXQgaXMgdGhlIGxldmVsLXNjb3JpbmcgaW5wdXQgYW5kIGlzIHJlYWQgaW5cbiAqIGZhciBtb3JlIHBsYWNlcy5cbiAqXG4gKiBUYWlscyBtYXR0ZXIgaGVyZTogYSBtZWRpYW4gbGVhZCB0aW1lIG9mIDIgaG91cnMgd2l0aCBhIHA5NSBvZiAzIHdlZWtzIGlzIGFcbiAqIHRlYW0gd2l0aCBhIGZhc3QgcGF0aCBhbmQgYSBzdHVjayBxdWV1ZSwgYW5kIHRoZSBtZWRpYW4gYWxvbmUgaGlkZXMgdGhhdFxuICogZW50aXJlbHkuIFRoYXQgaXMgd2h5IHRoZSBwbGFuIGFza3MgZm9yIHA5MC9wOTUgcmF0aGVyIHRoYW4gbW9yZSBsZXZlbHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwZXJjZW50aWxlKHZhbHVlczogbnVtYmVyW10sIHA6IG51bWJlcik6IG51bWJlciB8IG51bGwge1xuICBpZiAodmFsdWVzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIG51bGw7XG4gIGNvbnN0IHMgPSBbLi4udmFsdWVzXS5zb3J0KChhLCBiKSA9PiBhIC0gYik7XG4gIGlmIChzLmxlbmd0aCA9PT0gMSkgcmV0dXJuIHNbMF07XG4gIGNvbnN0IHJhbmsgPSAocCAvIDEwMCkgKiAocy5sZW5ndGggLSAxKTtcbiAgY29uc3QgbG8gPSBNYXRoLmZsb29yKHJhbmspO1xuICBjb25zdCBoaSA9IE1hdGguY2VpbChyYW5rKTtcbiAgcmV0dXJuIGxvID09PSBoaSA/IHNbbG9dIDogc1tsb10gKyAoc1toaV0gLSBzW2xvXSkgKiAocmFuayAtIGxvKTtcbn1cblxuLyoqXG4gKiBSb2xsIGEgZ3JvdXAgb2YgZGVwbG95L3N0YWdlIGV2ZW50cyAoZ3JvdXBlZCBwZXIgZXhlY3V0aW9uKSB1cCB0byBvbmUgdGVybWluYWxcbiAqIHN0YXR1czogRkFJTEVEIHdpbnMsIHRoZW4gU1VDQ0VFREVELCBlbHNlIE9USEVSIChzdGlsbC1ydW5uaW5nIC8gbm9uLXRlcm1pbmFsKS5cbiAqIFNoYXJlZCBieSB0aGUgdGhyZWUgcGVyLShlbnZ8c3RhZ2UsIGV4ZWN1dGlvbikgcm9sbHVwIENURXMg4oCUIERPUkEgbWV0cmljcywgRE9SQVxuICogdHJlbmQsIGFuZCBidWlsZCBoZWFsdGgg4oCUIHNvIHRoZSBwcmVjZWRlbmNlIGNhbid0IGRyaWZ0IGJldHdlZW4gdGhlbS4gQXNzdW1lcyB0aGVcbiAqIGdyb3VwZWQgZXZlbnQgYWxpYXMgaXMgYGVgLlxuICovXG4iXX0=
|
|
152
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9yYS1zY29yaW5nLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBpL3JlcG9ydGluZy9kb3JhLXNjb3JpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUl0Qzs7OztHQUlHO0FBRUg7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxZQUFZLENBQUM7QUFFekM7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBRyxDQUFDLEdBQUcsRUFBRTtJQUM5QyxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO0lBQzNELE9BQU8sTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUNwRCxDQUFDLENBQUMsRUFBRSxDQUFDO0FBRUw7Ozs7Ozs7R0FPRztBQUNILE1BQU0sVUFBVSwwQkFBMEIsQ0FBQyxRQUF3QjtJQUNqRSxPQUFPLFFBQVEsSUFBSSxJQUFJLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxRQUFRLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLDBCQUEwQixDQUFDO0FBQy9HLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7Ozs7OztHQWdCRztBQUVILHdGQUF3RjtBQUN4RixNQUFNLFVBQVUscUJBQXFCLENBQUMsTUFBYyxFQUFFLFdBQW1CO0lBQ3ZFLElBQUksV0FBVyxJQUFJLENBQUM7UUFBRSxPQUFPLElBQUksQ0FBQztJQUNsQyxJQUFJLE1BQU0sSUFBSSxDQUFDO1FBQUUsT0FBTyxPQUFPLENBQUM7SUFDaEMsSUFBSSxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUM7UUFBRSxPQUFPLE1BQU0sQ0FBQztJQUNuQyxJQUFJ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Q0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3hDLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUIsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMzQixPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0FBQ25FLENBQUM7QUFFRDs7Ozs7O0dBTUciLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHR5cGUgeyBEb3JhTGV2ZWwgfSBmcm9tICcuL3R5cGVzLmpzJztcblxuLyoqXG4gKiBET1JBIHBlcmZvcm1hbmNlIGJhbmRpbmcgcGx1cyB0aGUgc21hbGwgc3RhdGlzdGljcyBoZWxwZXJzIGl0IG5lZWRzLlxuICogUHVyZSBmdW5jdGlvbnMg4oCUIG5vIGRhdGFiYXNlIGFjY2Vzcywgbm8gSS9PIOKAlCB3aGljaCBpcyB3aGF0IGxldHMgdGhlXG4gKiB0aHJlc2hvbGRzIGJlIHVuaXQtdGVzdGVkIGluZGVwZW5kZW50bHkgb2YgdGhlIHF1ZXJpZXMgdGhhdCBmZWVkIHRoZW0uXG4gKi9cblxuLyoqXG4gKiBUaGUgRE9SQSBoZWFkbGluZSBlbnZpcm9ubWVudC4gRGVwbG95bWVudCB0byB0aGlzIGxpdGVyYWwgZW52IG5hbWUgaXMgdGhlXG4gKiBpbmR1c3RyeS1zdGFuZGFyZCBET1JBIHNpZ25hbDsgTVRUUiBpcyBtZWFzdXJlZCBwcm9kdWN0aW9uLW9ubHksIGFuZCB0aGlzXG4gKiBlbnZpcm9ubWVudCdzIGNhcmQgaXMgdGhlIHN1bW1hcnkgc2hvd24gYXQgdGhlIHRvcCBvZiB0aGUgcGFuZWwuXG4gKi9cbmV4cG9ydCBjb25zdCBIRUFETElORV9FTlYgPSAncHJvZHVjdGlvbic7XG5cbi8qKlxuICogSW5jaWRlbnTihpJkZXBsb3kgY29ycmVsYXRpb24gd2luZG93LiBBbiBpbmNpZGVudCBpcyBhdHRyaWJ1dGVkIHRvIHRoZVxuICogbW9zdCByZWNlbnQgU1VDQ0VTU0ZVTCBkZXBsb3kgdG8gaXRzIGVudmlyb25tZW50IHdob3NlIGBjb21wbGV0ZWRfYXRgIGlzIHdpdGhpblxuICogdGhpcyBtYW55IGhvdXJzIGJlZm9yZSB0aGUgaW5jaWRlbnQncyBgb3BlbmVkX2F0YC4gRGVmYXVsdCAyNGg7IG92ZXJyaWRlIHZpYVxuICogYERPUkFfSU5DSURFTlRfV0lORE9XX0hPVVJTYC4gR3VhcmRlZCB0byBhIHBvc2l0aXZlIGZpbml0ZSBudW1iZXIuXG4gKi9cbmV4cG9ydCBjb25zdCBET1JBX0lOQ0lERU5UX1dJTkRPV19IT1VSUyA9ICgoKSA9PiB7XG4gIGNvbnN0IHJhdyA9IE51bWJlcihwcm9jZXNzLmVudi5ET1JBX0lOQ0lERU5UX1dJTkRPV19IT1VSUyk7XG4gIHJldHVybiBOdW1iZXIuaXNGaW5pdGUocmF3KSAmJiByYXcgPiAwID8gcmF3IDogMjQ7XG59KSgpO1xuXG4vKipcbiAqIFJlc29sdmUgdGhlIGVmZmVjdGl2ZSBpbmNpZGVudOKGkmRlcGxveSBjb3JyZWxhdGlvbiB3aW5kb3cuIEEgcGVyLW9yZ1xuICogb3ZlcnJpZGUgKGZyb20gYGRvcmFfc2V0dGluZ3MuaW5jaWRlbnRfd2luZG93X2hvdXJzYCwgc3VyZmFjZWQgdGhyb3VnaCB0aGVcbiAqIHNldHRpbmdzIGVuZHBvaW50IGFuZCB0aHJlYWRlZCBpbnRvIHtAbGluayBEb3JhT3B0aW9ucy5pbmNpZGVudFdpbmRvd0hvdXJzfSlcbiAqIHdpbnMgd2hlbiBpdCBpcyBhIHBvc2l0aXZlIGZpbml0ZSBudW1iZXI7IG90aGVyd2lzZSB0aGUgZ2xvYmFsIGVudiBkZWZhdWx0XG4gKiBgRE9SQV9JTkNJREVOVF9XSU5ET1dfSE9VUlNgIGFwcGxpZXMuIENlbnRyYWxpemVkIHNvIHRoZSBET1JBIGNvcnJlbGF0aW9uLCB0aGVcbiAqIGluY2lkZW50cyBsaXN0LCBhbmQgdGhlIHdpcmluZy10ZXN0IGRyeS1ydW4gYWxsIGFncmVlIG9uIHRoZSBzYW1lIHJ1bGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlSW5jaWRlbnRXaW5kb3dIb3VycyhvdmVycmlkZT86IG51bWJlciB8IG51bGwpOiBudW1iZXIge1xuICByZXR1cm4gb3ZlcnJpZGUgIT0gbnVsbCAmJiBOdW1iZXIuaXNGaW5pdGUob3ZlcnJpZGUpICYmIG92ZXJyaWRlID4gMCA/IG92ZXJyaWRlIDogRE9SQV9JTkNJREVOVF9XSU5ET1dfSE9VUlM7XG59XG5cbi8qKlxuICogUmVwb3J0aW5nIHJldGVudGlvbiB3aW5kb3dzLiBSZWNvcmRzIGluIGBwaXBlbGluZV9ldmVudHNgLFxuICogYGRlcGxveW1lbnRfb3V0Y29tZXNgLCBhbmQgYGluY2lkZW50c2AgZ3JvdyB1bmJvdW5kZWQgd2l0aG91dCBhIHN3ZWVwLCBzbyBhXG4gKiBzcGxpdCwgcGVyLW9yZyByZXRlbnRpb24gcHVyZ2UgKHNlZSBgcHVyZ2VFeHBpcmVkUmVwb3J0aW5nRGF0YWAgaW4gLi9yZXRlbnRpb24tc3dlZXAudHMpXG4gKiBoYXJkLWRlbGV0ZXMgcm93cyBvbGRlciB0aGFuIHRoZXNlIHdpbmRvd3MsIGJ5IGBjcmVhdGVkX2F0YDpcbiAqICAtICoqU3RhbmRhcmQgZXZlbnRzKiog4oCUIGBwaXBlbGluZV9ldmVudHNgIHdpdGggYGVudmlyb25tZW50IElTIE5VTExgIGFuZCBub1xuICogICAgYGNvbW1pdF90aW1lc3RhbXBgIChub24tZGVwbG95IFNUQUdFL0FDVElPTi9idWlsZCkuIEhpZ2ggdm9sdW1lIOKGkiBzaG9ydFxuICogICAgZGVmYXVsdCAoMzAgZGF5cykuIEEgcm93IHRoYXQgRE9FUyBjYXJyeSBhIGNvbW1pdCB0aW1lc3RhbXAgaXMgRE9SQSBzb3VyY2VcbiAqICAgIGRhdGEg4oCUIGxlYWQgdGltZSBqb2lucyBvbiBpdCDigJQgc28gaXQgZm9sbG93cyB0aGUgRE9SQSB3aW5kb3cgaW5zdGVhZC5cbiAqICAtICoqRE9SQSBzb3VyY2UqKiDigJQgYHBpcGVsaW5lX2V2ZW50c2Agd2l0aCBgZW52aXJvbm1lbnQgSVMgTk9UIE5VTExgIChkZXBsb3lcbiAqICAgIHN0YWdlcykgcGx1cyBhbGwgb2YgYGRlcGxveW1lbnRfb3V0Y29tZXNgIGFuZCBgaW5jaWRlbnRzYC4gTG93IHZvbHVtZSDihpJcbiAqICAgIGxvbmdlciBkZWZhdWx0ICgxODAgZGF5cykuIERPUkEgaGlzdG9yeSBpcyB0aGVyZWZvcmUgYm91bmRlZCBieSB0aGlzIHdpbmRvdztcbiAqICAgIHRoZSByZXBvcnQgcXVlcnkgc3RpbGwgaGFyZC1jYXBzIGF0IDM2NSBkYXlzIChhIGxvbmdlciBwZXItb3JnIG92ZXJyaWRlIG9ubHlcbiAqICAgIHJldGFpbnMgcmF3IHNvdXJjZSByb3dzLCBuZXZlciB3aWRlbnMgYSByZXBvcnQpLlxuICogYGluZ2VzdF9oZWFsdGhgIGFuZCBgZG9yYV9zZXR0aW5nc2AgYXJlIG5ldmVyIHB1cmdlZC4gRW52LW92ZXJyaWRhYmxlIGdsb2JhbHM7XG4gKiBhIHBlci1vcmcgb3ZlcnJpZGUgaW4gYGRvcmFfc2V0dGluZ3NgIHdpbnMgKHNlZSB7QGxpbmsgcmVzb2x2ZUV2ZW50UmV0ZW50aW9uRGF5c30pLlxuICovXG5cbi8qKiBEZXBsb3ltZW50IGZyZXF1ZW5jeSBieSBkZXBsb3lzL2RheTogZWxpdGUg4omlMS9kYXksIGhpZ2gg4omlMS93ZWVrLCBtZWRpdW0g4omlMS9tb250aC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkb3JhTGV2ZWxGb3JGcmVxdWVuY3kocGVyRGF5OiBudW1iZXIsIGRlcGxveW1lbnRzOiBudW1iZXIpOiBEb3JhTGV2ZWwge1xuICBpZiAoZGVwbG95bWVudHMgPD0gMCkgcmV0dXJuIG51bGw7XG4gIGlmIChwZXJEYXkgPj0gMSkgcmV0dXJuICdlbGl0ZSc7XG4gIGlmIChwZXJEYXkgPj0gMSAvIDcpIHJldHVybiAnaGlnaCc7XG4gIGlmIChwZXJEYXkgPj0gMSAvIDMwKSByZXR1cm4gJ21lZGl1bSc7XG4gIHJldHVybiAnbG93Jztcbn1cbi8qKiBDaGFuZ2UgZmFpbHVyZSByYXRlIGJ5IHBlcmNlbnQ6IGVsaXRlIOKJpDUlLCBoaWdoIOKJpDEwJSwgbWVkaXVtIOKJpDE1JS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkb3JhTGV2ZWxGb3JDaGFuZ2VGYWlsdXJlKHBjdDogbnVtYmVyLCB0b3RhbDogbnVtYmVyKTogRG9yYUxldmVsIHtcbiAgaWYgKHRvdGFsIDw9IDApIHJldHVybiBudWxsO1xuICBpZiAocGN0IDw9IDUpIHJldHVybiAnZWxpdGUnO1xuICBpZiAocGN0IDw9IDEwKSByZXR1cm4gJ2hpZ2gnO1xuICBpZiAocGN0IDw9IDE1KSByZXR1cm4gJ21lZGl1bSc7XG4gIHJldHVybiAnbG93Jztcbn1cbi8qKiBUaW1lIHRvIHJlc3RvcmUgYnkgc2Vjb25kczogZWxpdGUgPDFoLCBoaWdoIDwxIGRheSwgbWVkaXVtIDwxIHdlZWsuICovXG5leHBvcnQgZnVuY3Rpb24gZG9yYUxldmVsRm9yUmVzdG9yZShhdmdTZWNvbmRzOiBudW1iZXIgfCBudWxsKTogRG9yYUxldmVsIHtcbiAgaWYgKGF2Z1NlY29uZHMgPT0gbnVsbCkgcmV0dXJuIG51bGw7XG4gIGlmIChhdmdTZWNvbmRzIDwgMzYwMCkgcmV0dXJuICdlbGl0ZSc7XG4gIGlmIChhdmdTZWNvbmRzIDwgODY0MDApIHJldHVybiAnaGlnaCc7XG4gIGlmIChhdmdTZWNvbmRzIDwgNjA0ODAwKSByZXR1cm4gJ21lZGl1bSc7XG4gIHJldHVybiAnbG93Jztcbn1cbi8qKiBMZWFkIHRpbWUgYnkgc2Vjb25kczogZWxpdGUgPDEgZGF5LCBoaWdoIDwxIHdlZWssIG1lZGl1bSA8MSBtb250aC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkb3JhTGV2ZWxGb3JMZWFkVGltZShtZWRpYW5TZWNvbmRzOiBudW1iZXIgfCBudWxsKTogRG9yYUxldmVsIHtcbiAgaWYgKG1lZGlhblNlY29uZHMgPT0gbnVsbCkgcmV0dXJuIG51bGw7XG4gIGlmIChtZWRpYW5TZWNvbmRzIDwgODY0MDApIHJldHVybiAnZWxpdGUnO1xuICBpZiAobWVkaWFuU2Vjb25kcyA8IDYwNDgwMCkgcmV0dXJuICdoaWdoJztcbiAgaWYgKG1lZGlhblNlY29uZHMgPCAyNTkyMDAwKSByZXR1cm4gJ21lZGl1bSc7XG4gIHJldHVybiAnbG93Jztcbn1cblxuLyoqXG4gKiBSb3VuZCBgdmFsdWVgIHRvIGBkaWdpdHNgIGRlY2ltYWwgcGxhY2VzLCByZXR1cm5pbmcgYSByZWFsIG51bWJlci4gU21hbGxcbiAqIG1vZHVsZS1wcml2YXRlIGhlbHBlciBzbyB0aGUgRE9SQSBzaGFwaW5nIGRvZXNuJ3QgcmVwZWF0IHRoZVxuICogYE51bWJlcihOdW1iZXIoeCkudG9GaXhlZChuKSlgIHBhdHRlcm4gKHRvRml4ZWQgYWxvbmUgeWllbGRzIGEgc3RyaW5nKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJvdW5kKHZhbHVlOiBudW1iZXIsIGRpZ2l0czogbnVtYmVyKTogbnVtYmVyIHtcbiAgcmV0dXJuIE51bWJlcih2YWx1ZS50b0ZpeGVkKGRpZ2l0cykpO1xufVxuXG4vKipcbiAqIE1lZGlhbiBvZiBhIG51bWVyaWMgc2FtcGxlLCBvciBgbnVsbGAgd2hlbiBlbXB0eS4gVXNlZCBmb3IgbWVhc3VyZWQgbGVhZCB0aW1lXG4gKiBhbmQgTVRUUiDigJQgYm90aCBhcmUgY3Jvc3Mtc291cmNlIGdhcHMgY29tcHV0ZWQgaW4gSlMgZnJvbSBjbGFtcGVkIGRlbHRhcywgc29cbiAqIHRoZSBtZWRpYW4gbGl2ZXMgaGVyZSByYXRoZXIgdGhhbiBpbiBTUUwgUEVSQ0VOVElMRV9DT05UIChrZWVwcyB0aGUgZ29sZGVuXG4gKiBmaXh0dXJlIHRlc3RzIGFibGUgdG8gcHJvdmUgdGhlIG1ldHJpYyBtYXRoIHdpdGhvdXQgYSBsaXZlIFBvc3RncmVzKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1lZGlhbih2YWx1ZXM6IG51bWJlcltdKTogbnVtYmVyIHwgbnVsbCB7XG4gIGlmICh2YWx1ZXMubGVuZ3RoID09PSAwKSByZXR1cm4gbnVsbDtcbiAgY29uc3QgcyA9IFsuLi52YWx1ZXNdLnNvcnQoKGEsIGIpID0+IGEgLSBiKTtcbiAgY29uc3QgbWlkID0gTWF0aC5mbG9vcihzLmxlbmd0aCAvIDIpO1xuICByZXR1cm4gcy5sZW5ndGggJSAyID09PSAxID8gc1ttaWRdIDogKHNbbWlkIC0gMV0gKyBzW21pZF0pIC8gMjtcbn1cblxuLyoqXG4gKiBUaGUgYHBgLXRoIHBlcmNlbnRpbGUgb2YgYSBzYW1wbGUgKDAgPCBwIDwgMTAwKSwgb3IgYG51bGxgIHdoZW4gZW1wdHkuXG4gKlxuICogTGluZWFyIGludGVycG9sYXRpb24gYmV0d2VlbiBvcmRlciBzdGF0aXN0aWNzIOKAlCB0aGUgc2FtZSBkZWZpbml0aW9uIGFzXG4gKiBQb3N0Z3JlcydzIGBQRVJDRU5USUxFX0NPTlRgLCBzbyBhIHJlYWRlciBjb21wYXJpbmcgdGhpcyB0byBhIGhhbmQtd3JpdHRlbiBTUUxcbiAqIHF1ZXJ5IGdldHMgdGhlIHNhbWUgbnVtYmVyLiB7QGxpbmsgbWVkaWFufSBpcyBwNTAgYnkgdGhpcyBkZWZpbml0aW9uIHRvbzsgaXRcbiAqIHN0YXlzIGEgc2VwYXJhdGUgZnVuY3Rpb24gYmVjYXVzZSBpdCBpcyB0aGUgbGV2ZWwtc2NvcmluZyBpbnB1dCBhbmQgaXMgcmVhZCBpblxuICogZmFyIG1vcmUgcGxhY2VzLlxuICpcbiAqIFRhaWxzIG1hdHRlciBoZXJlOiBhIG1lZGlhbiBsZWFkIHRpbWUgb2YgMiBob3VycyB3aXRoIGEgcDk1IG9mIDMgd2Vla3MgaXMgYVxuICogdGVhbSB3aXRoIGEgZmFzdCBwYXRoIGFuZCBhIHN0dWNrIHF1ZXVlLCBhbmQgdGhlIG1lZGlhbiBhbG9uZSBoaWRlcyB0aGF0XG4gKiBlbnRpcmVseS4gVGhhdCBpcyB3aHkgdGhlIHBsYW4gYXNrcyBmb3IgcDkwL3A5NSByYXRoZXIgdGhhbiBtb3JlIGxldmVscy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBlcmNlbnRpbGUodmFsdWVzOiBudW1iZXJbXSwgcDogbnVtYmVyKTogbnVtYmVyIHwgbnVsbCB7XG4gIGlmICh2YWx1ZXMubGVuZ3RoID09PSAwKSByZXR1cm4gbnVsbDtcbiAgY29uc3QgcyA9IFsuLi52YWx1ZXNdLnNvcnQoKGEsIGIpID0+IGEgLSBiKTtcbiAgaWYgKHMubGVuZ3RoID09PSAxKSByZXR1cm4gc1swXTtcbiAgY29uc3QgcmFuayA9IChwIC8gMTAwKSAqIChzLmxlbmd0aCAtIDEpO1xuICBjb25zdCBsbyA9IE1hdGguZmxvb3IocmFuayk7XG4gIGNvbnN0IGhpID0gTWF0aC5jZWlsKHJhbmspO1xuICByZXR1cm4gbG8gPT09IGhpID8gc1tsb10gOiBzW2xvXSArIChzW2hpXSAtIHNbbG9dKSAqIChyYW5rIC0gbG8pO1xufVxuXG4vKipcbiAqIFJvbGwgYSBncm91cCBvZiBkZXBsb3kvc3RhZ2UgZXZlbnRzIChncm91cGVkIHBlciBleGVjdXRpb24pIHVwIHRvIG9uZSB0ZXJtaW5hbFxuICogc3RhdHVzOiBGQUlMRUQgd2lucywgdGhlbiBTVUNDRUVERUQsIGVsc2UgT1RIRVIgKHN0aWxsLXJ1bm5pbmcgLyBub24tdGVybWluYWwpLlxuICogU2hhcmVkIGJ5IHRoZSB0aHJlZSBwZXItKGVudnxzdGFnZSwgZXhlY3V0aW9uKSByb2xsdXAgQ1RFcyDigJQgRE9SQSBtZXRyaWNzLCBET1JBXG4gKiB0cmVuZCwgYW5kIGJ1aWxkIGhlYWx0aCDigJQgc28gdGhlIHByZWNlZGVuY2UgY2FuJ3QgZHJpZnQgYmV0d2VlbiB0aGVtLiBBc3N1bWVzIHRoZVxuICogZ3JvdXBlZCBldmVudCBhbGlhcyBpcyBgZWAuXG4gKi9cbiJdfQ==
|
|
@@ -570,4 +570,4 @@ export async function getBuildHealth(orgId, pipelineId, from, to, orgIds) {
|
|
|
570
570
|
* INTENTIONALLY SINGLE-ORG (no rollup): plugin inventory is an org-owned
|
|
571
571
|
* asset count, not an execution/build activity report, so a parent's view is
|
|
572
572
|
* its own plugins — teams manage their own inventory. Single `= $org` scope. */
|
|
573
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9yYS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcGkvcmVwb3J0aW5nL2RvcmEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0Qzs7Ozs7Ozs7R0FRRztBQUVILE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDbEMsT0FBTyxFQUNMLFlBQVksRUFBRSwwQkFBMEIsRUFBRSwwQkFBMEIsRUFDcEUscUJBQXFCLEVBQUUseUJBQXlCLEVBQUUsbUJBQW1CLEVBQUUsb0JBQW9CLEVBQzNGLEtBQUssRUFBRSxNQUFNLEVBQUUsVUFBVSxHQUMxQixNQUFNLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDdkQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUt2RyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDMUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVqRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUJHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxjQUFjLENBQ2xDLEtBQWEsRUFDYixJQUFZLEVBQ1osRUFBVSxFQUNWLE1BQWlCLEVBQ2pCLElBQUksR0FBZ0IsRUFBRTtJQUV0QixNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLFFBQVEsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDaEQsTUFBTSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsR0FBRyxJQUFJLENBQUM7SUFDekMsTUFBTSxjQUFjLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FB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cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuLyoqXG4gKiBET1JBIG1ldHJpY3M6IHRoZSBmb3VyIGhlYWRsaW5lIG1lYXN1cmVzLCB0aGVpciBwZXItZW52aXJvbm1lbnQgYnJlYWtkb3duLFxuICogdGhlIHRyZW5kIHNlcmllcywgYW5kIHBlci1waXBlbGluZSBidWlsZCBoZWFsdGguXG4gKlxuICogQnkgZmFyIHRoZSBsYXJnZXN0IGRvbWFpbiBpbiB0aGUgcmVwb3J0aW5nIHNlcnZpY2UgKH40OTAgbGluZXMgb2YgcXVlcnkgK1xuICogc2hhcGluZyBhZ2FpbnN0IHNpeCByb3cgc2hhcGVzKSwgd2hpY2ggaXMgd2h5IGl0IGxpdmVzIGluIGl0cyBvd24gbW9kdWxlLlxuICogUmVwb3J0aW5nU2VydmljZSBkZWxlZ2F0ZXMgdG8gdGhlc2U7IHRoZSBiYW5kaW5nIHRocmVzaG9sZHMgdGhleSBhcHBseSBhcmUgaW5cbiAqIC4vZG9yYS1zY29yaW5nLnRzLCBkZWxpYmVyYXRlbHkgc2VwYXJhdGUgc28gdGhleSBjYW4gYmUgdGVzdGVkIHdpdGhvdXQgYSBEQi5cbiAqL1xuXG5pbXBvcnQgeyBzcWwgfSBmcm9tICdkcml6emxlLW9ybSc7XG5pbXBvcnQge1xuICBIRUFETElORV9FTlYsIERPUkFfSU5DSURFTlRfV0lORE9XX0hPVVJTLCByZXNvbHZlSW5jaWRlbnRXaW5kb3dIb3VycyxcbiAgZG9yYUxldmVsRm9yRnJlcXVlbmN5LCBkb3JhTGV2ZWxGb3JDaGFuZ2VGYWlsdXJlLCBkb3JhTGV2ZWxGb3JSZXN0b3JlLCBkb3JhTGV2ZWxGb3JMZWFkVGltZSxcbiAgcm91bmQsIG1lZGlhbiwgcGVyY2VudGlsZSxcbn0gZnJvbSAnLi9kb3JhLXNjb3JpbmcuanMnO1xuaW1wb3J0IHsgb3JnU2NvcGUsIHJ1blJlcG9ydCB9IGZyb20gJy4vcXVlcnktc2NvcGUuanMnO1xuaW1wb3J0IHsgYXNzZXJ0UmVwb3J0SW50ZXJ2YWwsIGJ1Y2tldEtleSwgcGVyaW9kQnVja2V0LCB0ZXJtaW5hbFN0YXR1c1JvbGx1cCB9IGZyb20gJy4vc3FsLWhlbHBlcnMuanMnO1xuaW1wb3J0IHR5cGUge1xuICBEb3JhT3B0aW9ucywgRG9yYU1ldHJpY3MsIERvcmFFbnZNZXRyaWNzLCBEb3JhVHJlbmRQb2ludCwgQnVpbGRIZWFsdGgsIEJ1aWxkSGVhbHRoU3RhZ2UsXG4gIERlcGxveVJvdywgT3V0Y29tZVJvdywgTXR0clBhaXJSb3csIEluY2lkZW50Um93LCBDb3ZlcmFnZVJvdyxcbn0gZnJvbSAnLi90eXBlcy5qcyc7XG5pbXBvcnQgeyBzY2hlbWEgfSBmcm9tICcuLi8uLi9kYXRhYmFzZS9kcml6emxlLXNjaGVtYS5qcyc7XG5pbXBvcnQgeyB3aXRoVGVuYW50VHggfSBmcm9tICcuLi8uLi9kYXRhYmFzZS90ZW5hbmN5LmpzJztcbmltcG9ydCB7IGRyaXp6bGVSb3dzIH0gZnJvbSAnLi4vY3J1ZC1zZXJ2aWNlLmpzJztcblxuLyoqXG4gKiBET1JBIG1ldHJpY3Mgb3ZlciBhIFtmcm9tLHRvXSBkZXBsb3ktY29tcGxldGlvbiB3aW5kb3csIG9yZy1zY29wZWQgK1xuICogcm9sbHVwLWF3YXJlLiBERVBMT1ktQkFTSVMgT05MWSDigJQgZXZlcnkgbWV0cmljIGRlcml2ZXMgZnJvbSByZWFsIGRlcGxveS1zdGFnZVxuICogZXhlY3V0aW9ucyAoYGV2ZW50X3R5cGU9J1NUQUdFJ2Agd2l0aCBhIG5vbi1udWxsIGBlbnZpcm9ubWVudGAsIHNldCBieSB0aGVcbiAqIGZvcndhcmRlciBmb3IgdGhlIHN0YWdlcyBhIHVzZXIgZGVjbGFyZWQgaW4gYHBiLmRlcGxveXNgKS4gTm8gcnVuLWJhc2VkXG4gKiBmYWxsYmFjazogYSBwaXBlbGluZSB3aXRoIG5vIGRlcGxveSBzdGFnZSBwcm9kdWNlcyBubyBET1JBIGRhdGEuXG4gKlxuICogRm91ciBzY29wZWQgU1FMIHNjYW5zIHJ1biBpbnNpZGUgb25lIHR4IChlYWNoIG9yZy1nYXRlZCBieSBgcC5vcmdfaWQgJHtwcmVkfWBcbiAqIC8gYG8ub3JnX2lkICR7cHJlZH1gIHNvIGEgcm9sbHVwIHBhc3NlcyB0aGUgb3Jn4oaSdGVhbSBzdWJ0cmVlIGFuZCBhIGZvcmVpZ25cbiAqIG9yZydzIHJvd3MgbmV2ZXIgZW50ZXIpOiAoMSkgdGVybWluYWwgZGVwbG95IHJvd3MgUEVSIChleGVjdXRpb24sIGVudikg4oCUIG9uZVxuICogXCJkZXBsb3ltZW50XCIgPSBvbmUgZXhlY3V0aW9uIHJlYWNoaW5nIGFuIGVudiDigJQg4oaSIERGIC8gZGVwbG95LXRpbWUgQ0ZSIC9cbiAqIG1lYXN1cmVkIGxlYWQgdGltZSAobGVhZCB0aW1lIGpvaW5zIHRoZSBleGVjdXRpb24ncyBlYXJsaWVzdCBjb21taXQpO1xuICogdGhlIHNjYW4gYWxzbyByZWFjaGVzIGJhY2sgYHdpbmRvd0hvdXJzYCBiZWZvcmUgYGZyb21gIHNvIGluY2lkZW50cyBvcGVuZWRcbiAqIG5lYXIgdGhlIHdpbmRvdyBzdGFydCBjYW4gY29ycmVsYXRlIHRvIGEganVzdC1wcmlvciBkZXBsb3k7ICgyKSBgZGVwbG95bWVudF9vdXRjb21lc2BcbiAqIGluLXdpbmRvdyDihpIgcG9zdC1kZXBsb3kgQ0ZSIGNvbXBvbmVudDsgKDMpIHByb2R1Y3Rpb24gcmVzdG9yZWQvZmFpbGVkXG4gKiBvdXRjb21lcyBqb2luZWQgdG8gdGhlaXIgZGVwbG95IOKGkiBNVFRSOyAoNCkgcmVnaXN0cnkgdnMgZGVwbG95aW5nIOKGkiBjb3ZlcmFnZS5cbiAqIFRoZSBjcm9zcy1zb3VyY2UgbWVkaWFucyAobGVhZCB0aW1lLCBNVFRSKSBhcmUgY29tcHV0ZWQgaW4gSlMgZnJvbSBjbGFtcGVkXG4gKiAo4omlMCkgZGVsdGFzLlxuICpcbiAqIEBwYXJhbSBvcHRzLnBpcGVsaW5lSWQgICAgcmVzdHJpY3QgdG8gb25lIHBpcGVsaW5lIChwZXItcGlwZWxpbmUgRE9SQSlcbiAqIEBwYXJhbSBvcHRzLmVudmlyb25tZW50ICAgcmVzdHJpY3QgdG8gb25lIGRlcGxveSBlbnZpcm9ubWVudFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0RG9yYU1ldHJpY3MoXG4gIG9yZ0lkOiBzdHJpbmcsXG4gIGZyb206IHN0cmluZyxcbiAgdG86IHN0cmluZyxcbiAgb3JnSWRzPzogc3RyaW5nW10sXG4gIG9wdHM6IERvcmFPcHRpb25zID0ge30sXG4pOiBQcm9taXNlPERvcmFNZXRyaWNzPiB7XG4gIGNvbnN0IHsgcHJlZCwgbXVsdGkgfSA9IG9yZ1Njb3BlKG9yZ0lkLCBvcmdJZHMpO1xuICBjb25zdCB7IHBpcGVsaW5lSWQsIGVudmlyb25tZW50IH0gPSBvcHRzO1xuICBjb25zdCBwaXBlbGluZUNsYXVzZSA9IHBpcGVsaW5lSWQgPyBzcWxgQU5EIGUucGlwZWxpbmVfaWQgPSAke3BpcGVsaW5lSWR9YCA6IHNxbGBgO1xuICBjb25zdCBwaXBlbGluZUNsYXVzZVIgPSBwaXBlbGluZUlkID8gc3FsYEFORCByLnBpcGVsaW5lX2lkID0gJHtwaXBlbGluZUlkfWAgOiBzcWxgYDtcbiAgLy8gUG9zdC1kZXBsb3kgb3V0Y29tZXMgY2Fycnkgbm8gcGlwZWxpbmUgaWQsIG9ubHkgdGhlIGV4ZWN1dGlvbiB0aGF0XG4gIC8vIHByb2R1Y2VkIHRoZW0sIHNvIGEgcGVyLXBpcGVsaW5lIHZpZXcgaGFzIHRvIHNjb3BlIHRoZW0gVEhST1VHSCB0aGVcbiAgLy8gZXhlY3V0aW9uLiBXaXRob3V0IGl0IHRoZSBvdXRjb21lIGFuZCBNVFRSIHNjYW5zIHJlYWQgZXZlcnkgcGlwZWxpbmUgaW4gdGhlXG4gIC8vIG9yZzogYW5vdGhlciBwaXBlbGluZSdzIGBmYWlsZWRgIG1hcmtlciBjb3VudGVkIGFnYWluc3QgdGhpcyBvbmUncyBjaGFuZ2VcbiAgLy8gZmFpbHVyZSByYXRlICh0ZW4gY2xlYW4gZGVwbG95cyBjb3VsZCBkcm9wIGZyb20gZWxpdGUgdG8gaGlnaCkgYW5kIGl0c1xuICAvLyByZWNvdmVyaWVzIGZlZCB0aGlzIG9uZSdzIE1UVFIuXG4gIGNvbnN0IG91dGNvbWVQaXBlbGluZUNsYXVzZSA9IHBpcGVsaW5lSWRcbiAgICA/IHNxbGBBTkQgby5leGVjdXRpb25faWQgSU4gKFNFTEVDVCBwZS5leGVjdXRpb25faWQgRlJPTSAke3NjaGVtYS5waXBlbGluZUV2ZW50fSBwZSBXSEVSRSBwZS5waXBlbGluZV9pZCA9ICR7cGlwZWxpbmVJZH0pYFxuICAgIDogc3FsYGA7XG4gIC8vIGBlbnZDbGF1c2VgIGlzIHRoZSBTVFJJQ1QgZmlsdGVyIChjb3ZlcmFnZSwgYW5kIHRoZSBvdXRwdXQpLiBUaGUgZGVwbG95IGFuZFxuICAvLyBpbmNpZGVudCBTQ0FOUyB1c2UgdGhlIHdpZGVuZWQgYHNjYW5FbnZDbGF1c2VgL2BzY2FuSW5jaWRlbnRFbnZDbGF1c2VgXG4gIC8vIGluc3RlYWQsIHdoaWNoIGFsd2F5cyBhZG1pdCBwcm9kdWN0aW9uOiBNVFRSIGlzIHByb2R1Y3Rpb24tb25seSBhbmRcbiAgLy8gZG9jdW1lbnRlZCBhcyBpbmRlcGVuZGVudCBvZiB0aGUgZW52aXJvbm1lbnQgZmlsdGVyLCBidXQgaW5jaWRlbnQtc291cmNlZFxuICAvLyBNVFRSIGNvcnJlbGF0ZXMgZWFjaCBwcm9kdWN0aW9uIGluY2lkZW50IGFnYWluc3QgcHJvZHVjdGlvbiBERVBMT1kgcm93cy5cbiAgLy8gRmlsdGVyaW5nIGJvdGggc2NhbnMgdG8gYD9lbnZpcm9ubWVudD1zdGFnaW5nYCByZW1vdmVkIGV2ZXJ5IHByb2R1Y3Rpb25cbiAgLy8gaW5jaWRlbnQgYW5kIGV2ZXJ5IHByb2R1Y3Rpb24gZGVwbG95LCBzbyBpbmNpZGVudCByZWNvdmVyeSBzaWxlbnRseSBkcm9wcGVkXG4gIC8vIG91dCBvZiBNVFRSIHRoZSBtb21lbnQgYW55b25lIGxvb2tlZCBhdCBhIG5vbi1wcm9kdWN0aW9uIGVudmlyb25tZW50LlxuICAvLyBgc2hhcGVEb3JhYCBuYXJyb3dzIHRoZSByZXBvcnRlZCBlbnZpcm9ubWVudHMgYmFjayB0byB0aGUgcmVxdWVzdGVkIG9uZS5cbiAgY29uc3QgZW52Q2xhdXNlID0gZW52aXJvbm1lbnQgPyBzcWxgQU5EIGUuZW52aXJvbm1lbnQgPSAke2Vudmlyb25tZW50fWAgOiBzcWxgYDtcbiAgY29uc3Qgc2NhbkVudkNsYXVzZSA9IGVudmlyb25tZW50ID8gc3FsYEFORCBlLmVudmlyb25tZW50IElOICgke2Vudmlyb25tZW50fSwgJHtIRUFETElORV9FTlZ9KWAgOiBzcWxgYDtcbiAgY29uc3Qgb3V0Y29tZUVudkNsYXVzZSA9IGVudmlyb25tZW50ID8gc3FsYEFORCBvLmVudmlyb25tZW50ID0gJHtlbnZpcm9ubWVudH1gIDogc3FsYGA7XG4gIGNvbnN0IHNjYW5JbmNpZGVudEVudkNsYXVzZSA9IGVudmlyb25tZW50ID8gc3FsYEFORCBpLmVudmlyb25tZW50IElOICgke2Vudmlyb25tZW50fSwgJHtIRUFETElORV9FTlZ9KWAgOiBzcWxgYDtcblxuICAvLyBFZmZlY3RpdmUgaW5jaWRlbnQtY29ycmVsYXRpb24gd2luZG93IChwZXItb3JnIG92ZXJyaWRlIG9yIHRoZSBnbG9iYWxcbiAgLy8gZGVmYXVsdCkuIENvbXB1dGVkIGhlcmUgKG5vdCBqdXN0IGluIHNoYXBlRG9yYSkgYmVjYXVzZSB0aGUgZGVwbG95IHNjYW5cbiAgLy8gbmVlZHMgaXQgZm9yIEJPVEggdGhlIGNvcnJlbGF0aW9uIGxvb2stYmFjayBsb3dlciBib3VuZCBBTkQgdGhlIGNhY2hlIGtleS5cbiAgY29uc3QgZWZmZWN0aXZlV2luZG93SG91cnMgPSByZXNvbHZlSW5jaWRlbnRXaW5kb3dIb3VycyhvcHRzLmluY2lkZW50V2luZG93SG91cnMpO1xuICAvLyBDb3JyZWxhdGlvbiBsb29rLWJhY2s6IGluY2lkZW50cyBvcGVuZWQganVzdCBpbnNpZGUgYGZyb21gIGNhbiBhdHRyaWJ1dGUgdG9cbiAgLy8gYSBkZXBsb3kgdGhhdCBjb21wbGV0ZWQgdXAgdG8gYHdpbmRvd0hvdXJzYCBCRUZPUkUgYGZyb21gIChtaXJyb3JzIHRoZVxuICAvLyBMQVRFUkFMIGxvb2stYmFjayBpbiBsaXN0SW5jaWRlbnRzKS4gV2lkZW4gdGhlIGRlcGxveSBzY2FuJ3MgbG93ZXIgYm91bmQgdG9cbiAgLy8gYGZyb20g4oiSIHdpbmRvd0hvdXJzYDsgREYvQ0ZSL2xlYWQgc3RpbGwgY291bnQgb25seSB0aGUgaW4tYGZyb21gLi5gdG9gXG4gIC8vIHN1YnNldCAoZmxhZ2dlZCBieSBgaW5fd2luZG93YCksIHdoaWxlIGNvcnJlbGF0aW9uIHNlZXMgdGhlIHdpZGVyIHNldC5cbiAgY29uc3QgZnJvbU1zID0gRGF0ZS5wYXJzZShmcm9tKTtcbiAgY29uc3QgbG9va2JhY2tGcm9tID0gTnVtYmVyLmlzRmluaXRlKGZyb21NcylcbiAgICA/IG5ldyBEYXRlKGZyb21NcyAtIGVmZmVjdGl2ZVdpbmRvd0hvdXJzICogMzYwMCAqIDEwMDApLnRvSVNPU3RyaW5nKClcbiAgICA6IGZyb207XG5cbiAgLy8gKDEpIFRlcm1pbmFsIGRlcGxveSByb3dzOiBQRVItRVhFQ1VUSU9OLCBvbmUgcm93IHBlciAoZW52aXJvbm1lbnQsXG4gIC8vIGV4ZWN1dGlvbikg4oCUIGV2ZXJ5IGRlcGxveSBTVEFHRSB0YXJnZXRpbmcgdGhhdCBlbnYgd2l0aGluIHRoZSBleGVjdXRpb24gaXNcbiAgLy8gcm9sbGVkIHVwIHRvIGEgdGVybWluYWwgc3RhdHVzIChGQUlMRUQgd2lucywgdGhlbiBTVUNDRUVERUQpLiBBIHNpbmdsZVxuICAvLyBleGVjdXRpb24gd2l0aCB0d28gZGVwbG95IHN0YWdlcyB0byB0aGUgc2FtZSBlbnYgaXMgT05FIGRlcGxveW1lbnQsIG5vdCB0d28uXG4gIC8vIGNvbXBsZXRlZF9hdCA9IHRoZSBkZXBsb3kncyBjb21wbGV0aW9uIChNQVggb3ZlciBpdHMgc3RhZ2VzKS4gYGNvbW1pdF90c2BcbiAgLy8gaXMgdGhlIGV4ZWN1dGlvbidzIEVBUkxJRVNUIGNvbW1pdCB0aW1lIGFjcm9zcyBBTEwgaXRzIGV2ZW50cyAoY29tbWl0XG4gIC8vIGVucmljaG1lbnQgcmlkZXMgdGhlIFBJUEVMSU5FL3NvdXJjZSBldmVudCB3aGVyZSBlbnZpcm9ubWVudCBJUyBOVUxMLCBuZXZlclxuICAvLyB0aGUgZGVwbG95IFNUQUdFIHJvdyksIGpvaW5lZCBieSBleGVjdXRpb25faWQuIGBpbl93aW5kb3dgIG1hcmtzIHdoZXRoZXIgdGhlXG4gIC8vIGRlcGxveSBjb21wbGV0ZWQgaW5zaWRlIFtmcm9tLHRvXSAodnMuIGEgbG9vay1iYWNrLW9ubHkgcm93IGtlcHQgc29sZWx5IGZvclxuICAvLyBpbmNpZGVudCBjb3JyZWxhdGlvbikuIGV4ZWN1dGlvbl9pZCBpcyBwcm9qZWN0ZWQgc28gcG9zdC1kZXBsb3kgZmFpbHVyZXNcbiAgLy8gKG1hbnVhbCBvdXRjb21lcyArIGNvcnJlbGF0ZWQgaW5jaWRlbnRzKSBjYW4gZGVkdXAgYWdhaW5zdCB0aGVpciBkZXBsb3kuXG4gIGNvbnN0IGRlcGxveVNxbCA9IHNxbGBcbiAgICAgIFdJVEggZGVwbG95X3N0YWdlcyBBUyAoXG4gICAgICAgIFNFTEVDVFxuICAgICAgICAgIGUuZW52aXJvbm1lbnQgQVMgZW52aXJvbm1lbnQsXG4gICAgICAgICAgZS5leGVjdXRpb25faWQgQVMgZXhlY3V0aW9uX2lkLFxuICAgICAgICAgICR7dGVybWluYWxTdGF0dXNSb2xsdXB9IEFTIHN0YXR1cyxcbiAgICAgICAgICBNQVgoZS5jb21wbGV0ZWRfYXQpIEFTIGNvbXBsZXRlZF9hdFxuICAgICAgICBGUk9NICR7c2NoZW1hLnBpcGVsaW5lRXZlbnR9IGVcbiAgICAgICAgSk9JTiAke3NjaGVtYS5waXBlbGluZX0gcCBPTiBwLmlkID0gZS5waXBlbGluZV9pZFxuICAgICAgICBXSEVSRSBwLm9yZ19pZCAke3ByZWR9IEFORCBlLmV2ZW50X3R5cGUgPSAnU1RBR0UnIEFORCBlLmVudmlyb25tZW50IElTIE5PVCBOVUxMXG4gICAgICAgICAgJHtwaXBlbGluZUNsYXVzZX0gJHtzY2FuRW52Q2xhdXNlfVxuICAgICAgICAgIEFORCBlLmNvbXBsZXRlZF9hdCA+PSAke2xvb2tiYWNrRnJvbX06OnRpbWVzdGFtcHR6IEFORCBlLmNvbXBsZXRlZF9hdCA8PSAke3RvfTo6dGltZXN0YW1wdHpcbiAgICAgICAgR1JPVVAgQlkgZS5lbnZpcm9ubWVudCwgZS5leGVjdXRpb25faWRcbiAgICAgICksXG4gICAgICBleGVjX2NvbW1pdHMgQVMgKFxuICAgICAgICBTRUxFQ1QgYy5leGVjdXRpb25faWQgQVMgZXhlY3V0aW9uX2lkLCBNSU4oYy5jb21taXRfdGltZXN0YW1wKSBBUyBjb21taXRfdHNcbiAgICAgICAgRlJPTSAke3NjaGVtYS5waXBlbGluZUV2ZW50fSBjXG4gICAgICAgIEpPSU4gJHtzY2hlbWEucGlwZWxpbmV9IHAgT04gcC5pZCA9IGMucGlwZWxpbmVfaWRcbiAgICAgICAgV0hFUkUgcC5vcmdfaWQgJHtwcmVkfSBBTkQgYy5jb21taXRfdGltZXN0YW1wIElTIE5PVCBOVUxMXG4gICAgICAgICAgQU5EIGMuZXhlY3V0aW9uX2lkIElOIChTRUxFQ1QgZXhlY3V0aW9uX2lkIEZST00gZGVwbG95X3N0YWdlcylcbiAgICAgICAgR1JPVVAgQlkgYy5leGVjdXRpb25faWRcbiAgICAgIClcbiAgICAgIFNFTEVDVFxuICAgICAgICBkcy5lbnZpcm9ubWVudCBBUyBlbnZpcm9ubWVudCxcbiAgICAgICAgZHMuZXhlY3V0aW9uX2lkIEFTIGV4ZWN1dGlvbl9pZCxcbiAgICAgICAgZHMuc3RhdHVzIEFTIHN0YXR1cyxcbiAgICAgICAgZHMuY29tcGxldGVkX2F0Ojp0ZXh0IEFTIGNvbXBsZXRlZF9hdCxcbiAgICAgICAgKGRzLmNvbXBsZXRlZF9hdCA+PSAke2Zyb219Ojp0aW1lc3RhbXB0eikgQVMgaW5fd2luZG93LFxuICAgICAgICBlYy5jb21taXRfdHM6OnRleHQgQVMgY29tbWl0X3RzXG4gICAgICBGUk9NIGRlcGxveV9zdGFnZXMgZHNcbiAgICAgIExFRlQgSk9JTiBleGVjX2NvbW1pdHMgZWMgT04gZWMuZXhlY3V0aW9uX2lkID0gZHMuZXhlY3V0aW9uX2lkYDtcblxuICAvLyAoMikgUG9zdC1kZXBsb3kgb3V0Y29tZSBtYXJrZXJzIGluLXdpbmRvdyAocGVyIGVudikuIFBvc3QtZGVwbG95IGZhaWx1cmVzXG4gIC8vIChvdXRjb21lPSdmYWlsZWQnKSBhZGQgdG8gdGhlIENGUiBudW1lcmF0b3Igd2l0aG91dCBjaGFuZ2luZyBhdHRlbXB0cy5cbiAgLy8gZXhlY3V0aW9uX2lkIGxldHMgdGhlIENGUiBkZWR1cCBhIG1hbnVhbCBmYWlsdXJlIGFnYWluc3QgYW4gaW5jaWRlbnQgdGhhdFxuICAvLyBjb3JyZWxhdGVzIHRvIHRoZSBzYW1lIGRlcGxveSAobm8gZG91YmxlLWNvdW50KS5cbiAgY29uc3Qgb3V0Y29tZVNxbCA9IHNxbGBcbiAgICAgIFNFTEVDVCBvLmVudmlyb25tZW50IEFTIGVudmlyb25tZW50LCBvLm91dGNvbWUgQVMgb3V0Y29tZSwgby5leGVjdXRpb25faWQgQVMgZXhlY3V0aW9uX2lkXG4gICAgICBGUk9NICR7c2NoZW1hLmRlcGxveW1lbnRPdXRjb21lfSBvXG4gICAgICBXSEVSRSBvLm9yZ19pZCAke3ByZWR9ICR7b3V0Y29tZUVudkNsYXVzZX0gJHtvdXRjb21lUGlwZWxpbmVDbGF1c2V9XG4gICAgICAgIEFORCBvLmF0ID49ICR7ZnJvbX06OnRpbWVzdGFtcHR6IEFORCBvLmF0IDw9ICR7dG99Ojp0aW1lc3RhbXB0emA7XG5cbiAgLy8gKDMpIE1UVFIg4oCUIFBST0RVQ1RJT04tT05MWSwgaW5kZXBlbmRlbnQgb2YgdGhlIGVudiBmaWx0ZXIuIEV2ZXJ5IHByb2R1Y3Rpb25cbiAgLy8gb3V0Y29tZSBpbi13aW5kb3c7IGZvciBhICdyZXN0b3JlZCcgb25lLCBjb3JyZWxhdGUgdG8gaXRzIGRlcGxveSdzXG4gIC8vIGNvbXBsZXRpb24gdmlhIGV4ZWN1dGlvbl9pZCB0byBtZWFzdXJlIHJlc3RvcmVkLmF0IOKIkiBkZXBsb3llZC5jb21wbGV0ZWRfYXQuXG4gIC8vIGV4ZWN1dGlvbl9pZCBpcyBwcm9qZWN0ZWQgc28gYW4gaW5jaWRlbnQtc291cmNlZCByZWNvdmVyeSBmb3IgdGhlIHNhbWVcbiAgLy8gZGVwbG95IHRha2VzIHByZWNlZGVuY2Ugb3ZlciB0aGUgbWFudWFsIHJlc3RvcmVkIGdhcC5cbiAgY29uc3QgbXR0clNxbCA9IHNxbGBcbiAgICAgIFNFTEVDVFxuICAgICAgICBvLm91dGNvbWUgQVMgb3V0Y29tZSxcbiAgICAgICAgby5leGVjdXRpb25faWQgQVMgZXhlY3V0aW9uX2lkLFxuICAgICAgICBvLmF0Ojp0ZXh0IEFTIHJlc3RvcmVkX2F0LFxuICAgICAgICAoU0VMRUNUIE1BWChkLmNvbXBsZXRlZF9hdCkgRlJPTSAke3NjaGVtYS5waXBlbGluZUV2ZW50fSBkXG4gICAgICAgICAgIEpPSU4gJHtzY2hlbWEucGlwZWxpbmV9IHAyIE9OIHAyLmlkID0gZC5waXBlbGluZV9pZFxuICAgICAgICAgICBXSEVSRSBwMi5vcmdfaWQgJHtwcmVkfSBBTkQgZC5leGVjdXRpb25faWQgPSBvLmV4ZWN1dGlvbl9pZFxuICAgICAgICAgICAgIEFORCBkLmV2ZW50X3R5cGUgPSAnU1RBR0UnIEFORCBkLmVudmlyb25tZW50ID0gJHtIRUFETElORV9FTlZ9KTo6dGV4dCBBUyBkZXBsb3llZF9hdFxuICAgICAgRlJPTSAke3NjaGVtYS5kZXBsb3ltZW50T3V0Y29tZX0gb1xuICAgICAgV0hFUkUgby5vcmdfaWQgJHtwcmVkfSBBTkQgby5lbnZpcm9ubWVudCA9ICR7SEVBRExJTkVfRU5WfSAke291dGNvbWVQaXBlbGluZUNsYXVzZX1cbiAgICAgICAgQU5EIG8uYXQgPj0gJHtmcm9tfTo6dGltZXN0YW1wdHogQU5EIG8uYXQgPD0gJHt0b306OnRpbWVzdGFtcHR6YDtcblxuICAvLyAoNSkgSW5jaWRlbnRzIG9wZW5lZCBpbi13aW5kb3cgKHBlciBlbnYpLiBDb3JyZWxhdGVkIGluIEpTIHRvIHRoZSBtb3N0XG4gIC8vIHJlY2VudCBzdWNjZXNzZnVsIGRlcGxveSDihpIgYXV0b21hdGVkIHBvc3QtZGVwbG95IGZhaWx1cmUgKENGUikgKyByZWFsXG4gIC8vIHJlY292ZXJ5IHRpbWUgKHJlc29sdmVkX2F0IOKIkiBvcGVuZWRfYXQpIGZvciBNVFRSIChwcm9kdWN0aW9uKS5cbiAgY29uc3QgaW5jaWRlbnRTcWwgPSBzcWxgXG4gICAgICBTRUxFQ1QgaS5lbnZpcm9ubWVudCBBUyBlbnZpcm9ubWVudCwgaS5vcGVuZWRfYXQ6OnRleHQgQVMgb3BlbmVkX2F0LCBpLnJlc29sdmVkX2F0Ojp0ZXh0IEFTIHJlc29sdmVkX2F0XG4gICAgICBGUk9NICR7c2NoZW1hLmluY2lkZW50fSBpXG4gICAgICBXSEVSRSBpLm9yZ19pZCAke3ByZWR9ICR7c2NhbkluY2lkZW50RW52Q2xhdXNlfVxuICAgICAgICBBTkQgaS5vcGVuZWRfYXQgPj0gJHtmcm9tfTo6dGltZXN0YW1wdHogQU5EIGkub3BlbmVkX2F0IDw9ICR7dG99Ojp0aW1lc3RhbXB0emA7XG5cbiAgLy8gKDQpIENvdmVyYWdlOiByZWdpc3RlcmVkIHBpcGVsaW5lcyB2cyB0aG9zZSB0aGF0IGFjdHVhbGx5IGRlcGxveWVkIGluLXdpbmRvdy5cbiAgY29uc3QgY292ZXJhZ2VTcWwgPSBzcWxgXG4gICAgICBTRUxFQ1RcbiAgICAgICAgKFNFTEVDVCBDT1VOVCgqKTo6aW50IEZST00gJHtzY2hlbWEucGlwZWxpbmVSZWdpc3RyeX0gclxuICAgICAgICAgICBXSEVSRSByLm9yZ19pZCAke3ByZWR9ICR7cGlwZWxpbmVDbGF1c2VSfSkgQVMgcmVnaXN0ZXJlZCxcbiAgICAgICAgKFNFTEVDVCBDT1VOVChESVNUSU5DVCBlLnBpcGVsaW5lX2lkKTo6aW50IEZST00gJHtzY2hlbWEucGlwZWxpbmVFdmVudH0gZVxuICAgICAgICAgICBKT0lOICR7c2NoZW1hLnBpcGVsaW5lfSBwIE9OIHAuaWQgPSBlLnBpcGVsaW5lX2lkXG4gICAgICAgICAgIFdIRVJFIHAub3JnX2lkICR7cHJlZH0gQU5EIGUuZXZlbnRfdHlwZSA9ICdTVEFHRScgQU5EIGUuZW52aXJvbm1lbnQgSVMgTk9UIE5VTExcbiAgICAgICAgICAgICAke3BpcGVsaW5lQ2xhdXNlfSAke2VudkNsYXVzZX1cbiAgICAgICAgICAgICBBTkQgZS5jb21wbGV0ZWRfYXQgPj0gJHtmcm9tfTo6dGltZXN0YW1wdHogQU5EIGUuY29tcGxldGVkX2F0IDw9ICR7dG99Ojp0aW1lc3RhbXB0eikgQVMgZGVwbG95aW5nYDtcblxuICBjb25zdCBleGVjID0gKCkgPT4gd2l0aFRlbmFudFR4KGFzeW5jICh0eCkgPT4ge1xuICAgIC8vIFNjYW4gb3JkZXIgaXMgbG9hZC1iZWFyaW5nIGZvciB0aGUgZ2VuZXJhdGVkLVNRTCB0ZXN0czogMD1kZXBsb3ksXG4gICAgLy8gMT1vdXRjb21lcywgMj1tdHRyLCAzPWNvdmVyYWdlLCA0PWluY2lkZW50cyAoYXBwZW5kZWQgbGFzdCBzbyB0aGVcbiAgICAvLyBlYXJsaWVyIGluZGljZXMgc3RheSBzdGFibGUpLlxuICAgIGNvbnN0IGRlcGxveVJvd3MgPSBkcml6emxlUm93czxEZXBsb3lSb3c+KChhd2FpdCB0eC5leGVjdXRlKGRlcGxveVNxbCkpLnJvd3MpO1xuICAgIGNvbnN0IG91dGNvbWVSb3dzID0gZHJpenpsZVJvd3M8T3V0Y29tZVJvdz4oKGF3YWl0IHR4LmV4ZWN1dGUob3V0Y29tZVNxbCkpLnJvd3MpO1xuICAgIGNvbnN0IG10dHJSb3dzID0gZHJpenpsZVJvd3M8TXR0clBhaXJSb3cgJiB7IG91dGNvbWU6IHN0cmluZyB9PigoYXdhaXQgdHguZXhlY3V0ZShtdHRyU3FsKSkucm93cyk7XG4gICAgY29uc3QgY292ZXJhZ2VSb3cgPSBkcml6emxlUm93czxDb3ZlcmFnZVJvdz4oKGF3YWl0IHR4LmV4ZWN1dGUoY292ZXJhZ2VTcWwpKS5yb3dzKVswXTtcbiAgICBjb25zdCBpbmNpZGVudFJvd3MgPSBkcml6emxlUm93czxJbmNpZGVudFJvdz4oKGF3YWl0IHR4LmV4ZWN1dGUoaW5jaWRlbnRTcWwpKS5yb3dzKTtcbiAgICByZXR1cm4gc2hhcGVEb3JhKGRlcGxveVJvd3MsIG91dGNvbWVSb3dzLCBtdHRyUm93cywgY292ZXJhZ2VSb3csIGluY2lkZW50Um93cywgZnJvbSwgdG8sIHtcbiAgICAgIHBpcGVsaW5lSWQsIGVudmlyb25tZW50LFxuICAgIH0sIGVmZmVjdGl2ZVdpbmRvd0hvdXJzKTtcbiAgfSk7XG4gIC8vIENhY2hlIGtleSBNVVNUIGluY2x1ZGUgdGhlIGVmZmVjdGl2ZSBpbmNpZGVudCB3aW5kb3c6IHRoZSBzY29yZWNhcmQgcmVhZHNcbiAgLy8gL2RvcmEgd2l0aCB0aGUgb3JnJ3MgZGVmYXVsdCB3aW5kb3cgd2hpbGUgYW4gZXhwbGljaXQgL2RvcmEgY2FsbCBtYXkgcGFzcyBhblxuICAvLyBvdmVycmlkZSDigJQgZGlmZmVyZW50IHdpbmRvd3MgeWllbGQgZGlmZmVyZW50IENGUi9NVFRSLCBzbyB0aGV5IG11c3Qgbm90XG4gIC8vIGNvbGxpZGUgb24gdGhlIHNhbWUga2V5LlxuICBjb25zdCBrZXkgPSBgJHtvcmdJZH06ZG9yYToke2Zyb219OiR7dG99OiR7cGlwZWxpbmVJZCA/PyAnJ306JHtlbnZpcm9ubWVudCA/PyAnJ306JHtlZmZlY3RpdmVXaW5kb3dIb3Vyc31gO1xuICByZXR1cm4gcnVuUmVwb3J0KGtleSwgbXVsdGksIGV4ZWMpO1xufVxuXG4vKiogUGVyLWVudmlyb25tZW50IGRlcGxveSBhY2N1bXVsYXRvci4gKi9cbmludGVyZmFjZSBFbnZBY2Mge1xuICBkZXBsb3ltZW50czogbnVtYmVyO1xuICBkZXBsb3lUaW1lRmFpbHVyZXM6IG51bWJlcjtcbiAgYXR0ZW1wdHM6IG51bWJlcjtcbiAgbGVhZEdhcHM6IG51bWJlcltdO1xufVxuXG4vKiogQSBwcm9kdWN0aW9uLW9yLW90aGVyIGluY2lkZW50IGF0dHJpYnV0ZWQgdG8gdGhlIGRlcGxveSBleGVjdXRpb24gaXQgZm9sbG93ZWQuICovXG5pbnRlcmZhY2UgQ29ycmVsYXRlZEluY2lkZW50IHsgZW52aXJvbm1lbnQ6IHN0cmluZzsgZXhlYzogc3RyaW5nOyByZXNvbHZlZEdhcDogbnVtYmVyIHwgbnVsbCB9XG5cbi8qKiBHZXQtb3ItY3JlYXRlIHRoZSBhY2N1bXVsYXRvciBmb3IgYGVudmAuICovXG5mdW5jdGlvbiBhY2NGb3IoZW52czogTWFwPHN0cmluZywgRW52QWNjPiwgZW52OiBzdHJpbmcpOiBFbnZBY2Mge1xuICBsZXQgYSA9IGVudnMuZ2V0KGVudik7XG4gIGlmICghYSkgeyBhID0geyBkZXBsb3ltZW50czogMCwgZGVwbG95VGltZUZhaWx1cmVzOiAwLCBhdHRlbXB0czogMCwgbGVhZEdhcHM6IFtdIH07IGVudnMuc2V0KGVudiwgYSk7IH1cbiAgcmV0dXJuIGE7XG59XG5cbi8qKlxuICogQSBkZXBsb3kgcm93IGNvdW50cyB0b3dhcmQgREYvQ0ZSL2xlYWQgb25seSBpZiBpdCBjb21wbGV0ZWQgaW5zaWRlIFtmcm9tLHRvXS5cbiAqIExvb2stYmFjay1vbmx5IHJvd3MgKGluX3dpbmRvdz1mYWxzZSwga2VwdCBmb3IgaW5jaWRlbnQgY29ycmVsYXRpb24pIGFyZVxuICogc2tpcHBlZC4gQWJzZW50IGluIGEgZml4dHVyZSDih5IgaW4td2luZG93ICh1bml0IHRlc3RzIG9taXQgdGhlIGZsYWcpLlxuICovXG5mdW5jdGlvbiBpc0luV2luZG93KHJvdzogRGVwbG95Um93KTogYm9vbGVhbiB7XG4gIHJldHVybiByb3cuaW5fd2luZG93ID09IG51bGwgPyB0cnVlIDogKHJvdy5pbl93aW5kb3cgPT09IHRydWUgfHwgcm93LmluX3dpbmRvdyA9PT0gJ3QnKTtcbn1cblxuLyoqIEJ1Y2tldCB0aGUgaW4td2luZG93IHRlcm1pbmFsIGRlcGxveSByb3dzIGJ5IGVudmlyb25tZW50IChERiAvIGRlcGxveS10aW1lIENGUiAvIG1lYXN1cmVkIGxlYWQpLiAqL1xuZnVuY3Rpb24gYWNjdW11bGF0ZURlcGxveXMoZGVwbG95Um93czogRGVwbG95Um93W10pOiBNYXA8c3RyaW5nLCBFbnZBY2M+IHtcbiAgY29uc3QgZW52cyA9IG5ldyBNYXA8c3RyaW5nLCBFbnZBY2M+KCk7XG4gIGZvciAoY29uc3Qgcm93IG9mIGRlcGxveVJvd3MpIHtcbiAgICBjb25zdCBlbnYgPSByb3cuZW52aXJvbm1lbnQ7XG4gICAgaWYgKCFlbnYpIGNvbnRpbnVlO1xuICAgIGlmICghaXNJbldpbmRvdyhyb3cpKSBjb250aW51ZTsgLy8gbG9vay1iYWNrLW9ubHkgcm93IOKGkiBjb3JyZWxhdGlvbiwgbm90IERGL0NGUlxuICAgIGNvbnN0IGEgPSBhY2NGb3IoZW52cywgZW52KTtcbiAgICBpZiAocm93LnN0YXR1cyA9PT0gJ1NVQ0NFRURFRCcpIHtcbiAgICAgIGEuZGVwbG95bWVudHMrKztcbiAgICAgIGEuYXR0ZW1wdHMrKztcbiAgICAgIC8vIE1lYXN1cmVkIGxlYWQgdGltZTogZGVwbG95IGNvbXBsZXRpb24g4oiSIGV4ZWN1dGlvbidzIGVhcmxpZXN0IGNvbW1pdCB0aW1lLlxuICAgICAgLy9cbiAgICAgIC8vIFN0aWxsIGNsYW1wZWQg4omlMCwgdW5saWtlIHRoZSBzaW5nbGUtZXZlbnQgdGltZXN0YW1wIGNoZWNrcyB0aGF0IG5vdyBydW4gYXRcbiAgICAgIC8vIElOR0VTVC4gVGhlIHR3byBpbnN0YW50cyBjb21lIGZyb20gRElGRkVSRU5UIHJvd3Mg4oCUIGBjb21taXRfdGltZXN0YW1wYCBvZmZcbiAgICAgIC8vIHRoZSBQSVBFTElORS9zb3VyY2UgZXZlbnQsIGBjb21wbGV0ZWRfYXRgIG9mZiB0aGUgZGVwbG95IFNUQUdFIGV2ZW50IOKAlFxuICAgICAgLy8gam9pbmVkIG9ubHkgaGVyZSBieSBleGVjdXRpb25faWQsIHNvIG5vIGluZ2VzdC10aW1lIGNoZWNrIGNhbiBzZWUgdGhlXG4gICAgICAvLyBwYWlyLiBBIGNvbW1pdCBkYXRlZCBhZnRlciBpdHMgb3duIGRlcGxveSBtZWFucyBhIHJld3JpdHRlbiBoaXN0b3J5IG9yIGFcbiAgICAgIC8vIHNrZXdlZCBTQ00gY2xvY2ssIGFuZCAwIGlzIHRoZSBob25lc3QgZmxvb3IgZm9yIFwic2hpcHBlZCBpbW1lZGlhdGVseVwiLlxuICAgICAgaWYgKHJvdy5jb21taXRfdHMgIT0gbnVsbCAmJiByb3cuY29tcGxldGVkX2F0ICE9IG51bGwpIHtcbiAgICAgICAgY29uc3QgZ2FwID0gKERhdGUucGFyc2Uocm93LmNvbXBsZXRlZF9hdCkgLSBEYXRlLnBhcnNlKHJvdy5jb21taXRfdHMpKSAvIDEwMDA7XG4gICAgICAgIGlmIChOdW1iZXIuaXNGaW5pdGUoZ2FwKSkgYS5sZWFkR2Fwcy5wdXNoKE1hdGgubWF4KGdhcCwgMCkpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAocm93LnN0YXR1cyA9PT0gJ0ZBSUxFRCcpIHtcbiAgICAgIGEuZGVwbG95VGltZUZhaWx1cmVzKys7XG4gICAgICBhLmF0dGVtcHRzKys7XG4gICAgfVxuICB9XG4gIHJldHVybiBlbnZzO1xufVxuXG4vKipcbiAqIEluY2lkZW504oaSZGVwbG95IGNvcnJlbGF0aW9uLiBFYWNoIGluY2lkZW50IGlzIGF0dHJpYnV0ZWQgdG8gdGhlIG1vc3QgcmVjZW50XG4gKiBTVUNDRVNTRlVMIGRlcGxveSB0byBpdHMgZW52aXJvbm1lbnQgd2l0aCBgY29tcGxldGVkX2F0IOKJpCBvcGVuZWRfYXRgIHdpdGhpblxuICogYHdpbmRvd0hvdXJzYDsgYW4gdW5jb3JyZWxhdGVkIGluY2lkZW50IGlzIGRyb3BwZWQuIEEgcmVzb2x1dGlvbiBhZnRlciB0aGVcbiAqIHdpbmRvdyBlbmQgKGB0b01zYCkgaXMgcmlnaHQtY2Vuc29yZWQ6IHRoZSBpbmNpZGVudCBzdGlsbCBjb3VudHMsIHVucmVzb2x2ZWQuXG4gKi9cbmZ1bmN0aW9uIGNvcnJlbGF0ZUluY2lkZW50cyhcbiAgZGVwbG95Um93czogRGVwbG95Um93W10sXG4gIGluY2lkZW50Um93czogSW5jaWRlbnRSb3dbXSxcbiAgd2luZG93SG91cnM6IG51bWJlcixcbiAgdG9NczogbnVtYmVyLFxuKTogQ29ycmVsYXRlZEluY2lkZW50W10ge1xuICAvLyBJbmRleCB0aGUgU1VDQ0VTU0ZVTCBkZXBsb3lzIHBlciBlbnYgKGV4ZWN1dGlvbiBpZCArIGNvbXBsZXRpb24gaW5zdGFudCksXG4gIC8vIG5ld2VzdCBmaXJzdC5cbiAgY29uc3Qgd2luZG93TXMgPSB3aW5kb3dIb3VycyAqIDM2MDAgKiAxMDAwO1xuICBjb25zdCBzdWNjZXNzZnVsQnlFbnYgPSBuZXcgTWFwPHN0cmluZywgQXJyYXk8eyBleGVjOiBzdHJpbmc7IGNvbXBsZXRlZE1zOiBudW1iZXIgfT4+KCk7XG4gIGZvciAoY29uc3Qgcm93IG9mIGRlcGxveVJvd3MpIHtcbiAgICBpZiAocm93LnN0YXR1cyAhPT0gJ1NVQ0NFRURFRCcgfHwgIXJvdy5lbnZpcm9ubWVudCB8fCByb3cuZXhlY3V0aW9uX2lkID09IG51bGwgfHwgcm93LmNvbXBsZXRlZF9hdCA9PSBudWxsKSBjb250aW51ZTtcbiAgICBjb25zdCBtcyA9IERhdGUucGFyc2Uocm93LmNvbXBsZXRlZF9hdCk7XG4gICAgaWYgKCFOdW1iZXIuaXNGaW5pdGUobXMpKSBjb250aW51ZTtcbiAgICBjb25zdCBsaXN0ID0gc3VjY2Vzc2Z1bEJ5RW52LmdldChyb3cuZW52aXJvbm1lbnQpID8/IFtdO1xuICAgIGxpc3QucHVzaCh7IGV4ZWM6IHJvdy5leGVjdXRpb25faWQsIGNvbXBsZXRlZE1zOiBtcyB9KTtcbiAgICBzdWNjZXNzZnVsQnlFbnYuc2V0KHJvdy5lbnZpcm9ubWVudCwgbGlzdCk7XG4gIH1cbiAgZm9yIChjb25zdCBsaXN0IG9mIHN1Y2Nlc3NmdWxCeUVudi52YWx1ZXMoKSkgbGlzdC5zb3J0KChhLCBiKSA9PiBiLmNvbXBsZXRlZE1zIC0gYS5jb21wbGV0ZWRNcyk7XG5cbiAgY29uc3QgY29ycmVsYXRlID0gKGVudjogc3RyaW5nLCBvcGVuZWRNczogbnVtYmVyKTogc3RyaW5nIHwgbnVsbCA9PiB7XG4gICAgY29uc3QgbGlzdCA9IHN1Y2Nlc3NmdWxCeUVudi5nZXQoZW52KTtcbiAgICBpZiAoIWxpc3QpIHJldHVybiBudWxsO1xuICAgIGZvciAoY29uc3QgZCBvZiBsaXN0KSB7XG4gICAgICBpZiAoZC5jb21wbGV0ZWRNcyA8PSBvcGVuZWRNcyAmJiBvcGVuZWRNcyAtIGQuY29tcGxldGVkTXMgPD0gd2luZG93TXMpIHJldHVybiBkLmV4ZWM7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9O1xuXG4gIGNvbnN0IGNvcnJlbGF0ZWQ6IENvcnJlbGF0ZWRJbmNpZGVudFtdID0gW107XG4gIGZvciAoY29uc3QgaW5jIG9mIGluY2lkZW50Um93cykge1xuICAgIGlmICghaW5jLmVudmlyb25tZW50IHx8IGluYy5vcGVuZWRfYXQgPT0gbnVsbCkgY29udGludWU7XG4gICAgY29uc3Qgb3BlbmVkTXMgPSBEYXRlLnBhcnNlKGluYy5vcGVuZWRfYXQpO1xuICAgIGlmICghTnVtYmVyLmlzRmluaXRlKG9wZW5lZE1zKSkgY29udGludWU7XG4gICAgY29uc3QgZXhlYyA9IGNvcnJlbGF0ZShpbmMuZW52aXJvbm1lbnQsIG9wZW5lZE1zKTtcbiAgICBpZiAoZXhlYyA9PSBudWxsKSBjb250aW51ZTsgLy8gdW5jb3JyZWxhdGVkIOKGkiBub3QgYXR0cmlidXRhYmxlIHRvIGEgZGVwbG95XG4gICAgbGV0IHJlc29sdmVkR2FwOiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgICBpZiAoaW5jLnJlc29sdmVkX2F0ICE9IG51bGwpIHtcbiAgICAgIGNvbnN0IHJlc29sdmVkTXMgPSBEYXRlLnBhcnNlKGluYy5yZXNvbHZlZF9hdCk7XG4gICAgICAvLyBSaWdodC1jZW5zb3Jpbmc6IGEgcmVzb2x1dGlvbiBBRlRFUiB0aGUgd2luZG93IGVuZCAoYHRvYCkgaXMgbm90IG9ic2VydmVkXG4gICAgICAvLyB3aXRoaW4gdGhlIHdpbmRvdyDigJQgdHJlYXQgdGhlIGluY2lkZW50IGFzIHN0aWxsIG9wZW4gKGdhcCBzdGF5cyBudWxsKSBzb1xuICAgICAgLy8gTVRUUiBuZXZlciByZWFkcyB1bmJvdW5kZWQgcGFzdCBgdG9gLiBUaGUgaW5jaWRlbnQgc3RpbGwgY291bnRzIHRvd2FyZCB0aGVcbiAgICAgIC8vIGluY2lkZW50IHRvdGFsICh1bnJlc29sdmVkKSwgaXQganVzdCBjb250cmlidXRlcyBubyByZWNvdmVyeSB0aW1lLlxuICAgICAgaWYgKE51bWJlci5pc0Zpbml0ZShyZXNvbHZlZE1zKSAmJiByZXNvbHZlZE1zIDw9IHRvTXMpIHtcbiAgICAgICAgY29uc3QgZyA9IChyZXNvbHZlZE1zIC0gb3BlbmVkTXMpIC8gMTAwMDtcbiAgICAgICAgaWYgKE51bWJlci5pc0Zpbml0ZShnKSkgcmVzb2x2ZWRHYXAgPSBNYXRoLm1heChnLCAwKTtcbiAgICAgIH1cbiAgICB9XG4gICAgY29ycmVsYXRlZC5wdXNoKHsgZW52aXJvbm1lbnQ6IGluYy5lbnZpcm9ubWVudCwgZXhlYywgcmVzb2x2ZWRHYXAgfSk7XG4gIH1cbiAgcmV0dXJuIGNvcnJlbGF0ZWQ7XG59XG5cbi8qKlxuICogUG9zdC1kZXBsb3kgZmFpbHVyZXMgcGVyIGVudiDigJQgdGhlIERJU1RJTkNUIHNldCBvZiBkZXBsb3kgZXhlY3V0aW9ucyBmbGFnZ2VkXG4gKiBieSBhIG1hbnVhbCBgZmFpbGVkYCBvdXRjb21lIE9SIGEgY29ycmVsYXRlZCBpbmNpZGVudCAoZGVkdXBlZCBieSBleGVjdXRpb24sXG4gKiBzbyBhIGRlcGxveSBmbGFnZ2VkIGJ5IGJvdGggY291bnRzIG9uY2UpLiBBIG1hbnVhbCBvdXRjb21lIHdpdGhvdXQgYW5cbiAqIGV4ZWN1dGlvbiBpZCBzdGlsbCBjb3VudHMgdmlhIGEgcGVyLXJvdyBzZW50aW5lbC4gRXZlcnkgZmxhZ2dlZCBlbnYgaXMgYWRkZWRcbiAqIHRvIGBlbnZzYCBzbyBpdCBhcHBlYXJzIGV2ZW4gd2l0aCBubyBpbi13aW5kb3cgZGVwbG95IGV2ZW50cy5cbiAqL1xuZnVuY3Rpb24gY291bnRQb3N0RGVwbG95RmFpbHVyZXMoXG4gIGVudnM6IE1hcDxzdHJpbmcsIEVudkFjYz4sXG4gIG91dGNvbWVSb3dzOiBPdXRjb21lUm93W10sXG4gIGNvcnJlbGF0ZWQ6IENvcnJlbGF0ZWRJbmNpZGVudFtdLFxuKTogTWFwPHN0cmluZywgbnVtYmVyPiB7XG4gIGNvbnN0IHBvc3REZXBsb3lFeGVjc0J5RW52ID0gbmV3IE1hcDxzdHJpbmcsIFNldDxzdHJpbmc+PigpO1xuICBsZXQgc2VudGluZWwgPSAwO1xuICBjb25zdCBmbGFnRm9yID0gKGVudjogc3RyaW5nKTogU2V0PHN0cmluZz4gPT4ge1xuICAgIGxldCBzID0gcG9zdERlcGxveUV4ZWNzQnlFbnYuZ2V0KGVudik7XG4gICAgaWYgKCFzKSB7IHMgPSBuZXcgU2V0PHN0cmluZz4oKTsgcG9zdERlcGxveUV4ZWNzQnlFbnYuc2V0KGVudiwgcyk7IH1cbiAgICByZXR1cm4gcztcbiAgfTtcbiAgZm9yIChjb25zdCBvIG9mIG91dGNvbWVSb3dzKSB7XG4gICAgaWYgKG8ub3V0Y29tZSAhPT0gJ2ZhaWxlZCcgfHwgIW8uZW52aXJvbm1lbnQpIGNvbnRpbnVlO1xuICAgIGZsYWdGb3Ioby5lbnZpcm9ubWVudCkuYWRkKG8uZXhlY3V0aW9uX2lkID8/IGBtYW51YWwtJHtzZW50aW5lbCsrfWApO1xuICAgIGFjY0ZvcihlbnZzLCBvLmVudmlyb25tZW50KTtcbiAgfVxuICBmb3IgKGNvbnN0IGNpIG9mIGNvcnJlbGF0ZWQpIHtcbiAgICBmbGFnRm9yKGNpLmVudmlyb25tZW50KS5hZGQoY2kuZXhlYyk7XG4gICAgYWNjRm9yKGVudnMsIGNpLmVudmlyb25tZW50KTtcbiAgfVxuICBjb25zdCBwb3N0RGVwbG95QnlFbnYgPSBuZXcgTWFwPHN0cmluZywgbnVtYmVyPigpO1xuICBmb3IgKGNvbnN0IFtlbnYsIHNldF0gb2YgcG9zdERlcGxveUV4ZWNzQnlFbnYpIHBvc3REZXBsb3lCeUVudi5zZXQoZW52LCBzZXQuc2l6ZSk7XG4gIHJldHVybiBwb3N0RGVwbG95QnlFbnY7XG59XG5cbi8qKiBQZXItZW52aXJvbm1lbnQgREYgLyBDRlIgLyBsZWFkLXRpbWUgcm93cywgcHJvZHVjdGlvbiBmaXJzdC4gKi9cbmZ1bmN0aW9uIGJ1aWxkRW52TWV0cmljcyhcbiAgZW52czogTWFwPHN0cmluZywgRW52QWNjPixcbiAgcG9zdERlcGxveUJ5RW52OiBNYXA8c3RyaW5nLCBudW1iZXI+LFxuICBkYXlzOiBudW1iZXIsXG4gIHJlcXVlc3RlZEVudjogc3RyaW5nIHwgdW5kZWZpbmVkLFxuKTogRG9yYUVudk1ldHJpY3NbXSB7XG4gIHJldHVybiBbLi4uZW52cy5lbnRyaWVzKCldXG4gICAgLy8gVGhlIGRlcGxveSBhbmQgaW5jaWRlbnQgc2NhbnMgYWRtaXQgUFJPRFVDVElPTiBhbG9uZ3NpZGUgYSByZXF1ZXN0ZWRcbiAgICAvLyBlbnZpcm9ubWVudCBzbyBNVFRSIGNhbiBjb3JyZWxhdGUgcHJvZHVjdGlvbiBpbmNpZGVudHMgKHNlZVxuICAgIC8vIGBzY2FuRW52Q2xhdXNlYCkuIFRoYXQgcHJvZHVjdGlvbiByb3cgaXMgcGx1bWJpbmcgZm9yIE1UVFIsIG5vdCBzb21ldGhpbmdcbiAgICAvLyB0aGUgY2FsbGVyIGFza2VkIHRvIHNlZSDigJQgcmVwb3J0IG9ubHkgdGhlIGVudmlyb25tZW50IHRoYXQgd2FzIHJlcXVlc3RlZC5cbiAgICAuZmlsdGVyKChbZW52aXJvbm1lbnRdKSA9PiAhcmVxdWVzdGVkRW52IHx8IGVudmlyb25tZW50ID09PSByZXF1ZXN0ZWRFbnYpXG4gICAgLm1hcCgoW2Vudmlyb25tZW50LCBhXSkgPT4ge1xuICAgICAgY29uc3QgcG9zdERlcGxveUZhaWx1cmVzID0gcG9zdERlcGxveUJ5RW52LmdldChlbnZpcm9ubWVudCkgPz8gMDtcbiAgICAgIGNvbnN0IHJhd1BlckRheSA9IGEuZGVwbG95bWVudHMgLyBkYXlzO1xuICAgICAgY29uc3QgbnVtZXJhdG9yID0gYS5kZXBsb3lUaW1lRmFpbHVyZXMgKyBwb3N0RGVwbG95RmFpbHVyZXM7XG4gICAgICAvLyBDbGFtcCB0byBbMCwxMDBdOiBwb3N0LWRlcGxveSBmYWlsdXJlcyBjYW4gY29ycmVsYXRlIHRvIGEgZGVwbG95IHRoYXRcbiAgICAgIC8vIGNvbXBsZXRlZCBqdXN0IGJlZm9yZSB0aGUgd2luZG93IChrZXB0IGZvciBjb3JyZWxhdGlvbiksIHNvIHRoZSBudW1lcmF0b3JcbiAgICAgIC8vIGNhbiB0cmFuc2llbnRseSBleGNlZWQgaW4td2luZG93IGF0dGVtcHRzIOKAlCBhIENGUiA+IDEwMCUgaXMgbmV2ZXIgdmFsaWQuXG4gICAgICBjb25zdCByYXdSYXRlID0gYS5hdHRlbXB0cyA+IDAgPyBNYXRoLm1pbigxMDAsIChudW1lcmF0b3IgLyBhLmF0dGVtcHRzKSAqIDEwMCkgOiAwO1xuICAgICAgY29uc3QgbHRNZWRpYW4gPSBtZWRpYW4oYS5sZWFkR2Fwcyk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBlbnZpcm9ubWVudCxcbiAgICAgICAgZGVwbG95bWVudEZyZXF1ZW5jeToge1xuICAgICAgICAgIGRlcGxveW1lbnRzOiBhLmRlcGxveW1lbnRzLFxuICAgICAgICAgIHBlckRheTogcm91bmQocmF3UGVyRGF5LCAyKSxcbiAgICAgICAgICBsZXZlbDogZG9yYUxldmVsRm9yRnJlcXVlbmN5KHJhd1BlckRheSwgYS5kZXBsb3ltZW50cyksXG4gICAgICAgIH0sXG4gICAgICAgIGNoYW5nZUZhaWx1cmVSYXRlOiB7XG4gICAgICAgICAgcmF0ZTogcm91bmQocmF3UmF0ZSwgMSksXG4gICAgICAgICAgZGVwbG95VGltZUZhaWx1cmVzOiBhLmRlcGxveVRpbWVGYWlsdXJlcyxcbiAgICAgICAgICBwb3N0RGVwbG95RmFpbHVyZXMsXG4gICAgICAgICAgYXR0ZW1wdHM6IGEuYXR0ZW1wdHMsXG4gICAgICAgICAgbGV2ZWw6IGRvcmFMZXZlbEZvckNoYW5nZUZhaWx1cmUocmF3UmF0ZSwgYS5hdHRlbXB0cyksXG4gICAgICAgIH0sXG4gICAgICAgIGxlYWRUaW1lOiB7XG4gICAgICAgICAgZGVwbG95bWVudHM6IGEubGVhZEdhcHMubGVuZ3RoLFxuICAgICAgICAgIG1lZGlhblNlY29uZHM6IGx0TWVkaWFuICE9IG51bGwgPyByb3VuZChsdE1lZGlhbiwgMSkgOiBudWxsLFxuICAgICAgICAgIC4uLnRhaWxzKGEubGVhZEdhcHMpLFxuICAgICAgICAgIC8vIFNjb3JlZCBvZmYgdGhlIE1FRElBTiBvbmx5IOKAlCB0aGUgdGFpbHMgYXJlIHJlcG9ydGVkLCBub3QgYmFuZGVkLlxuICAgICAgICAgIGxldmVsOiBkb3JhTGV2ZWxGb3JMZWFkVGltZShsdE1lZGlhbiksXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH0pXG4gICAgLnNvcnQoKHgsIHkpID0+IHtcbiAgICAgIGlmICh4LmVudmlyb25tZW50ID09PSBIRUFETElORV9FTlYpIHJldHVybiAtMTtcbiAgICAgIGlmICh5LmVudmlyb25tZW50ID09PSBIRUFETElORV9FTlYpIHJldHVybiAxO1xuICAgICAgcmV0dXJuIHguZW52aXJvbm1lbnQubG9jYWxlQ29tcGFyZSh5LmVudmlyb25tZW50KTtcbiAgICB9KTtcbn1cblxuLyoqXG4gKiBwOTAvcDk1IG9mIGEgZ2FwIHNhbXBsZSwgcm91bmRlZCBsaWtlIHRoZSBtZWRpYW4gYmVzaWRlIHRoZW0uIE9uZSBoZWxwZXIgc29cbiAqIGxlYWQgdGltZSBhbmQgTVRUUiBjYW5ub3QgZHJpZnQgaW4gaG93IHRoZXkgcmVwb3J0IHRoZWlyIHRhaWxzLlxuICovXG5mdW5jdGlvbiB0YWlscyhnYXBzOiBudW1iZXJbXSk6IHsgcDkwU2Vjb25kczogbnVtYmVyIHwgbnVsbDsgcDk1U2Vjb25kczogbnVtYmVyIHwgbnVsbCB9IHtcbiAgY29uc3QgcDkwID0gcGVyY2VudGlsZShnYXBzLCA5MCk7XG4gIGNvbnN0IHA5NSA9IHBlcmNlbnRpbGUoZ2FwcywgOTUpO1xuICByZXR1cm4ge1xuICAgIHA5MFNlY29uZHM6IHA5MCAhPSBudWxsID8gcm91bmQocDkwLCAxKSA6IG51bGwsXG4gICAgcDk1U2Vjb25kczogcDk1ICE9IG51bGwgPyByb3VuZChwOTUsIDEpIDogbnVsbCxcbiAgfTtcbn1cblxuLyoqXG4gKiBNVFRSIOKAlCBQUk9EVUNUSU9OLU9OTFksIGZyb20gQk9USCBzb3VyY2VzLiBJbmNpZGVudHMgdGFrZSBwcmVjZWRlbmNlOiBhXG4gKiBwcm9kdWN0aW9uIGluY2lkZW50IGNvcnJlbGF0ZWQgdG8gYSBkZXBsb3kgY29udHJpYnV0ZXMgdGhlIHJlYWwgcmVjb3ZlcnlcbiAqIChgcmVzb2x2ZWRfYXQg4oiSIG9wZW5lZF9hdGApLCBhbmQgYW55IG1hbnVhbCBvdXRjb21lIG9uIHRoZSBTQU1FIGRlcGxveSBpc1xuICogc2tpcHBlZC4gTWFudWFsIG91dGNvbWVzIG9uIG90aGVyIGRlcGxveXMgY291bnQgYXMgcmVjb3JkZWQgKGBmYWlsZWRgIOKGkiBhblxuICogaW5jaWRlbnQ7IGByZXN0b3JlZGAg4oaSIGEgcmVjb3ZlcnkgZ2FwIG9mIGByZXN0b3JlZCDiiJIgZGVwbG95ZWRgKS5cbiAqL1xuZnVuY3Rpb24gY29tcHV0ZU10dHIoXG4gIGNvcnJlbGF0ZWQ6IENvcnJlbGF0ZWRJbmNpZGVudFtdLFxuICBtdHRyUm93czogQXJyYXk8TXR0clBhaXJSb3cgJiB7IG91dGNvbWU6IHN0cmluZyB9Pixcbik6IERvcmFNZXRyaWNzWydtZWFuVGltZVRvUmVzdG9yZSddIHtcbiAgbGV0IGluY2lkZW50cyA9IDAsIHJlc3RvcmVkID0gMDtcbiAgY29uc3QgbXR0ckdhcHM6IG51bWJlcltdID0gW107XG4gIC8vIEV4ZWN1dGlvbnMgYWxyZWFkeSBhdHRyaWJ1dGVkIHRvIGEgcHJvZHVjdGlvbiBpbmNpZGVudCAocHJlY2VkZW5jZSBndWFyZCkuXG4gIGNvbnN0IGluY2lkZW50RXhlY3MgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgZm9yIChjb25zdCBjaSBvZiBjb3JyZWxhdGVkKSB7XG4gICAgaWYgKGNpLmVudmlyb25tZW50ICE9PSBIRUFETElORV9FTlYpIGNvbnRpbnVlOyAvLyBNVFRSIGlzIHByb2R1Y3Rpb24tb25seVxuICAgIGluY2lkZW50cysrO1xuICAgIGluY2lkZW50RXhlY3MuYWRkKGNpLmV4ZWMpO1xuICAgIGlmIChjaS5yZXNvbHZlZEdhcCAhPSBudWxsKSB7IHJlc3RvcmVkKys7IG10dHJHYXBzLnB1c2goY2kucmVzb2x2ZWRHYXApOyB9XG4gIH1cbiAgZm9yIChjb25zdCBtIG9mIG10dHJSb3dzKSB7XG4gICAgLy8gSW5jaWRlbnQgcHJlY2VkZW5jZTogZG9uJ3QgZG91YmxlLWNvdW50IGEgZGVwbG95IGFscmVhZHkgZmxhZ2dlZCBieSBhbiBpbmNpZGVudC5cbiAgICBpZiAobS5leGVjdXRpb25faWQgIT0gbnVsbCAmJiBpbmNpZGVudEV4ZWNzLmhhcyhtLmV4ZWN1dGlvbl9pZCkpIGNvbnRpbnVlO1xuICAgIGlmIChtLm91dGNvbWUgPT09ICdmYWlsZWQnKSB7IGluY2lkZW50cysrOyBjb250aW51ZTsgfVxuICAgIGlmIChtLm91dGNvbWUgPT09ICdyZXN0b3JlZCcpIHtcbiAgICAgIHJlc3RvcmVkKys7XG4gICAgICBpZiAobS5yZXN0b3JlZF9hdCAhPSBudWxsICYmIG0uZGVwbG95ZWRfYXQgIT0gbnVsbCkge1xuICAgICAgICBjb25zdCBnYXAgPSAoRGF0ZS5wYXJzZShtLnJlc3RvcmVkX2F0KSAtIERhdGUucGFyc2UobS5kZXBsb3llZF9hdCkpIC8gMTAwMDtcbiAgICAgICAgaWYgKE51bWJlci5pc0Zpbml0ZShnYXApKSBtdHRyR2Fwcy5wdXNoKE1hdGgubWF4KGdhcCwgMCkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBjb25zdCBtdHRyTWVkaWFuID0gbWVkaWFuKG10dHJHYXBzKTtcbiAgcmV0dXJuIHtcbiAgICBpbmNpZGVudHMsXG4gICAgcmVzdG9yZWQsXG4gICAgbWVkaWFuU2Vjb25kczogbXR0ck1lZGlhbiAhPSBudWxsID8gcm91bmQobXR0ck1lZGlhbiwgMSkgOiBudWxsLFxuICAgIC4uLnRhaWxzKG10dHJHYXBzKSxcbiAgICBsZXZlbDogZG9yYUxldmVsRm9yUmVzdG9yZShtdHRyTWVkaWFuKSxcbiAgfTtcbn1cblxuLyoqXG4gKiBTaGFwZSB0aGUgcmF3IERPUkEgc2NhbiByb3dzIGludG8gdGhlIHB1YmxpYyB7QGxpbmsgRG9yYU1ldHJpY3N9OiBwZXItZW52XG4gKiBERiAvIENGUiAvIGxlYWQgdGltZSAocG9zdC1kZXBsb3kgZmFpbHVyZXMgZm9sZGVkIGluKSwgcHJvZHVjdGlvbiBNVFRSIGZyb21cbiAqIGluY2lkZW50cyArIG1hbnVhbCBvdXRjb21lcywgYW5kIGRlcGxveSBjb3ZlcmFnZSDigJQgYWxsIGNyb3NzLXNvdXJjZSBtZWRpYW5zXG4gKiBvdmVyIGRlbHRhcyBjbGFtcGVkIOKJpTAuXG4gKi9cbmZ1bmN0aW9uIHNoYXBlRG9yYShcbiAgZGVwbG95Um93czogRGVwbG95Um93W10sXG4gIG91dGNvbWVSb3dzOiBPdXRjb21lUm93W10sXG4gIG10dHJSb3dzOiBBcnJheTxNdHRyUGFpclJvdyAmIHsgb3V0Y29tZTogc3RyaW5nIH0+LFxuICBjb3ZlcmFnZVJvdzogQ292ZXJhZ2VSb3cgfCB1bmRlZmluZWQsXG4gIGluY2lkZW50Um93czogSW5jaWRlbnRSb3dbXSxcbiAgZnJvbTogc3RyaW5nLFxuICB0bzogc3RyaW5nLFxuICBmaWx0ZXJzOiB7IHBpcGVsaW5lSWQ/OiBzdHJpbmc7IGVudmlyb25tZW50Pzogc3RyaW5nIH0sXG4gIHdpbmRvd0hvdXJzOiBudW1iZXIgPSBET1JBX0lOQ0lERU5UX1dJTkRPV19IT1VSUyxcbik6IERvcmFNZXRyaWNzIHtcbiAgLy8gV2luZG93IGxlbmd0aCBpbiBkYXlzIChmbG9vcmVkIGF0IDEgc28gYSBzdWItZGF5IHdpbmRvdyB5aWVsZHMgdGhlIGNvdW50IGFzXG4gIC8vIHRoZSByYXRlLCBuZXZlciAvMCBvciBhbiBleHRyYXBvbGF0aW9uKS4gR3VhcmQgdW5wYXJzZWFibGUgZGF0ZXMg4oaSIDEgZGF5LlxuICBjb25zdCBzcGFuRGF5cyA9IChEYXRlLnBhcnNlKHRvKSAtIERhdGUucGFyc2UoZnJvbSkpIC8gODY0MDAwMDA7XG4gIGNvbnN0IGRheXMgPSBOdW1iZXIuaXNGaW5pdGUoc3BhbkRheXMpID8gTWF0aC5tYXgoc3BhbkRheXMsIDEpIDogMTtcbiAgLy8gV2luZG93IGVuZCBpbnN0YW50IGZvciBNVFRSIHJpZ2h0LWNlbnNvcmluZyAoYSByZXNvbHV0aW9uIGFmdGVyIGB0b2AgaXNcbiAgLy8gdW5vYnNlcnZlZCkuICtJbmZpbml0eSB3aGVuIGB0b2AgaXMgdW5wYXJzZWFibGUg4oeSIG5vIGNlbnNvcmluZyAoZmFpbC1vcGVuKS5cbiAgY29uc3QgdG9QYXJzZWQgPSBEYXRlLnBhcnNlKHRvKTtcbiAgY29uc3QgdG9NcyA9IE51bWJlci5pc0Zpbml0ZSh0b1BhcnNlZCkgPyB0b1BhcnNlZCA6IE51bWJlci5QT1NJVElWRV9JTkZJTklUWTtcblxuICBjb25zdCBlbnZzID0gYWNjdW11bGF0ZURlcGxveXMoZGVwbG95Um93cyk7XG4gIGNvbnN0IGNvcnJlbGF0ZWQgPSBjb3JyZWxhdGVJbmNpZGVudHMoZGVwbG95Um93cywgaW5jaWRlbnRSb3dzLCB3aW5kb3dIb3VycywgdG9Ncyk7XG4gIGNvbnN0IHBvc3REZXBsb3lCeUVudiA9IGNvdW50UG9zdERlcGxveUZhaWx1cmVzKGVudnMsIG91dGNvbWVSb3dzLCBjb3JyZWxhdGVkKTtcblxuICBjb25zdCByZWdpc3RlcmVkID0gTnVtYmVyKGNvdmVyYWdlUm93Py5yZWdpc3RlcmVkKSB8fCAwO1xuICBjb25zdCBkZXBsb3lpbmcgPSBOdW1iZXIoY292ZXJhZ2VSb3c/LmRlcGxveWluZykgfHwgMDtcblxuICByZXR1cm4ge1xuICAgIHdpbmRvdzogeyBmcm9tLCB0byB9LFxuICAgIGZpbHRlcnM6IHsgcGlwZWxpbmVJZDogZmlsdGVycy5waXBlbGluZUlkID8/IG51bGwsIGVudmlyb25tZW50OiBmaWx0ZXJzLmVudmlyb25tZW50ID8/IG51bGwgfSxcbiAgICBoZWFkbGluZTogSEVBRExJTkVfRU5WLFxuICAgIGVudmlyb25tZW50czogYnVpbGRFbnZNZXRyaWNzKGVudnMsIHBvc3REZXBsb3lCeUVudiwgZGF5cywgZmlsdGVycy5lbnZpcm9ubWVudCksXG4gICAgbWVhblRpbWVUb1Jlc3RvcmU6IGNvbXB1dGVNdHRyKGNvcnJlbGF0ZWQsIG10dHJSb3dzKSxcbiAgICBjb3ZlcmFnZToge1xuICAgICAgcmVnaXN0ZXJlZCxcbiAgICAgIGRlcGxveWluZyxcbiAgICAgIHdpdGhvdXREZXBsb3lzOiBNYXRoLm1heChyZWdpc3RlcmVkIC0gZGVwbG95aW5nLCAwKSxcbiAgICB9LFxuICB9O1xufVxuXG4vKipcbiAqIERPUkEgdHJlbmQg4oCUIGRlcGxveW1lbnQgZnJlcXVlbmN5ICsgZGVwbG95LXRpbWUgY2hhbmdlLWZhaWx1cmUgcmF0ZVxuICogYnVja2V0ZWQgYnkgYGludGVydmFsYCAoZGF5L3dlZWsvbW9udGgpIGZvciBhIHNwYXJrbGluZS4gRGVwbG95LWJhc2lzIGxpa2VcbiAqIGdldERvcmFNZXRyaWNzOiBidWNrZXRzIHRlcm1pbmFsIGRlcGxveS1zdGFnZSBleGVjdXRpb25zIG9uIHRoZWlyXG4gKiBgY29tcGxldGVkX2F0YC4gU2hhcmVzIHRoZSBvcmcvcm9sbHVwICsgcGlwZWxpbmVJZC9lbnZpcm9ubWVudCBzY29waW5nLiBNVFRSLFxuICogbGVhZCB0aW1lLCBhbmQgcG9zdC1kZXBsb3kgQ0ZSIGFyZSBpbnRlbnRpb25hbGx5IG9taXR0ZWQgKHRvbyBoZWF2eSB0byBidWNrZXQpLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0RG9yYVRyZW5kKFxuICBvcmdJZDogc3RyaW5nLFxuICBpbnRlcnZhbDogc3RyaW5nLFxuICBmcm9tOiBzdHJpbmcsXG4gIHRvOiBzdHJpbmcsXG4gIG9yZ0lkcz86IHN0cmluZ1tdLFxuICBvcHRzOiBEb3JhT3B0aW9ucyA9IHt9LFxuKTogUHJvbWlzZTxEb3JhVHJlbmRQb2ludFtdPiB7XG4gIGFzc2VydFJlcG9ydEludGVydmFsKGludGVydmFsKTtcbiAgY29uc3QgeyBwcmVkLCBtdWx0aSB9ID0gb3JnU2NvcGUob3JnSWQsIG9yZ0lkcyk7XG4gIGNvbnN0IHsgcGlwZWxpbmVJZCwgZW52aXJvbm1lbnQsIHR6ID0gJ1VUQycsIHdlZWtTdGFydCA9ICdtb25kYXknIH0gPSBvcHRzO1xuICBjb25zdCBwaXBlbGluZUNsYXVzZSA9IHBpcGVsaW5lSWQgPyBzcWxgQU5EIGUucGlwZWxpbmVfaWQgPSAke3BpcGVsaW5lSWR9YCA6IHNxbGBgO1xuICBjb25zdCBlbnZDbGF1c2UgPSBlbnZpcm9ubWVudCA/IHNxbGBBTkQgZS5lbnZpcm9ubWVudCA9ICR7ZW52aXJvbm1lbnR9YCA6IHNxbGBgO1xuICBjb25zdCBleGVjID0gKCkgPT4gd2l0aFRlbmFudFR4KCh0eCkgPT4gdHguZXhlY3V0ZShzcWxgXG4gICAgICBXSVRIIGRlcGxveXMgQVMgKFxuICAgICAgICAtLSBQRVItRVhFQ1VUSU9OIGRlcGxveSB1bml0OiBvbmUgcm93IHBlciAoZW52aXJvbm1lbnQsIGV4ZWN1dGlvbiksXG4gICAgICAgIC0tIGV2ZXJ5IGRlcGxveSBTVEFHRSB0byB0aGF0IGVudiB3aXRoaW4gdGhlIGV4ZWN1dGlvbiByb2xsZWQgdXAgdG8gYVxuICAgICAgICAtLSBzaW5nbGUgdGVybWluYWwgc3RhdHVzIOKAlCBOT1Qgb25lIHJvdyBwZXIgc3RhZ2UuXG4gICAgICAgIFNFTEVDVFxuICAgICAgICAgICR7dGVybWluYWxTdGF0dXNSb2xsdXB9IEFTIHN0YXR1cyxcbiAgICAgICAgICBNQVgoZS5jb21wbGV0ZWRfYXQpIEFTIGNvbXBsZXRlZF9hdFxuICAgICAgICBGUk9NICR7c2NoZW1hLnBpcGVsaW5lRXZlbnR9IGVcbiAgICAgICAgSk9JTiAke3NjaGVtYS5waXBlbGluZX0gcCBPTiBwLmlkID0gZS5waXBlbGluZV9pZFxuICAgICAgICBXSEVSRSBwLm9yZ19pZCAke3ByZWR9IEFORCBlLmV2ZW50X3R5cGUgPSAnU1RBR0UnIEFORCBlLmVudmlyb25tZW50IElTIE5PVCBOVUxMXG4gICAgICAgICAgJHtwaXBlbGluZUNsYXVzZX0gJHtlbnZDbGF1c2V9XG4gICAgICAgICAgQU5EIGUuY29tcGxldGVkX2F0ID49ICR7ZnJvbX06OnRpbWVzdGFtcHR6IEFORCBlLmNvbXBsZXRlZF9hdCA8PSAke3RvfTo6dGltZXN0YW1wdHpcbiAgICAgICAgR1JPVVAgQlkgZS5lbnZpcm9ubWVudCwgZS5leGVjdXRpb25faWRcbiAgICAgIClcbiAgICAgIFNFTEVDVFxuICAgICAgICAke3BlcmlvZEJ1Y2tldChpbnRlcnZhbCwgc3FsYGNvbXBsZXRlZF9hdGAsIHR6LCB3ZWVrU3RhcnQpfTo6dGV4dCBBUyBwZXJpb2QsXG4gICAgICAgIENPVU5UKCopIEZJTFRFUiAoV0hFUkUgc3RhdHVzID0gJ1NVQ0NFRURFRCcpOjppbnQgQVMgZGVwbG95bWVudHMsXG4gICAgICAgIENPVU5UKCopIEZJTFRFUiAoV0hFUkUgc3RhdHVzID0gJ0ZBSUxFRCcpOjppbnQgQVMgZmFpbGVkLFxuICAgICAgICBDT1VOVCgqKSBGSUxURVIgKFdIRVJFIHN0YXR1cyBJTiAoJ1NVQ0NFRURFRCcsICdGQUlMRUQnKSk6OmludCBBUyB0b3RhbCxcbiAgICAgICAgLS0gcXVvdGVkIGFsaWFzIHNvIHRoZSByYXcgcm93IGtleSBpcyBleGFjdGx5IHRoZSBEb3JhVHJlbmRQb2ludCBmaWVsZFxuICAgICAgICBDT0FMRVNDRShST1VORChDT1VOVCgqKSBGSUxURVIgKFdIRVJFIHN0YXR1cyA9ICdGQUlMRUQnKTo6bnVtZXJpY1xuICAgICAgICAgIC8gTlVMTElGKENPVU5UKCopIEZJTFRFUiAoV0hFUkUgc3RhdHVzIElOICgnU1VDQ0VFREVEJywgJ0ZBSUxFRCcpKSwgMCkgKiAxMDAsIDEpLCAwKTo6ZmxvYXQgQVMgXCJjaGFuZ2VGYWlsdXJlUGN0XCJcbiAgICAgIEZST00gZGVwbG95c1xuICAgICAgR1JPVVAgQlkgcGVyaW9kIE9SREVSIEJZIHBlcmlvZFxuICAgIGApLnRoZW4ociA9PiBkcml6emxlUm93czxEb3JhVHJlbmRQb2ludD4oci5yb3dzKSkpO1xuICAvLyBUaGUgYnVja2V0aW5nIHNldHRpbmdzIGJlbG9uZyBpbiB0aGUga2V5OiB0aGV5IGNoYW5nZSB3aGljaCBkYXlzIGxhbmQgaW4gd2hpY2hcbiAgLy8gcGVyaW9kLCBzbyBhIENoaWNhZ28gYW5zd2VyIG11c3QgbmV2ZXIgYmUgc2VydmVkIHRvIGEgVVRDIHJlcXVlc3QuXG4gIGNvbnN0IGtleSA9IGAke29yZ0lkfTpkb3JhLXRyZW5kOiR7aW50ZXJ2YWx9OiR7ZnJvbX06JHt0b306JHtwaXBlbGluZUlkID8/ICcnfToke2Vudmlyb25tZW50ID8/ICcnfToke2J1Y2tldEtleSh0eiwgd2Vla1N0YXJ0KX1gO1xuICByZXR1cm4gcnVuUmVwb3J0KGtleSwgbXVsdGksIGV4ZWMpO1xufVxuXG4vKipcbiAqIFBlci1waXBlbGluZSBCVUlMRCBIRUFMVEgg4oCUIGEgc3RhbmRhcmQgKE5PVCBgYWR2YW5jZWRfcmVwb3J0aW5nYClcbiAqIHBlci1zdGFnZSBicmVha2Rvd24gZm9yIG9uZSBwaXBlbGluZSBvdmVyIGEgW2Zyb20sdG9dIHdpbmRvdy4gQWdncmVnYXRlcyB0aGVcbiAqIGV4aXN0aW5nIGBwaXBlbGluZV9ldmVudHNgIFNUQUdFIHJvd3M6IGVhY2ggc3RhZ2UgaXMgcm9sbGVkIHVwIHBlciBleGVjdXRpb25cbiAqIHRvIGEgdGVybWluYWwgc3RhdHVzIChGQUlMRUQgd2lucywgdGhlbiBTVUNDRUVERUQpICsgaXRzIG1heCBkdXJhdGlvbiwgdGhlblxuICogZ3JvdXBlZCBwZXIgc3RhZ2UgaW50byBydW4vc3VjY2Vzcy9mYWlsdXJlIGNvdW50cywgYSBzdWNjZXNzIHJhdGUsIGFuZFxuICogZHVyYXRpb24gcGVyY2VudGlsZXMgKHA1MC9wOTAvcDk5KS4gVG90YWxzIHN1bSBhY3Jvc3Mgc3RhZ2VzLiBPcmctc2NvcGVkIHZpYVxuICogdGhlIHBpcGVsaW5lIGpvaW4gKGBwLm9yZ19pZCAke3ByZWR9YCkgKyByb2xsdXAtYXdhcmUgbGlrZSB0aGUgc2libGluZyByZXBvcnRzO1xuICogYSBwaXBlbGluZUlkIG93bmVkIGJ5IGFub3RoZXIgb3JnIHJldHVybnMgYW4gZW1wdHkgYnJlYWtkb3duLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0QnVpbGRIZWFsdGgoXG4gIG9yZ0lkOiBzdHJpbmcsXG4gIHBpcGVsaW5lSWQ6IHN0cmluZyxcbiAgZnJvbTogc3RyaW5nLFxuICB0bzogc3RyaW5nLFxuICBvcmdJZHM/OiBzdHJpbmdbXSxcbik6IFByb21pc2U8QnVpbGRIZWFsdGg+IHtcbiAgY29uc3QgeyBwcmVkLCBtdWx0aSB9ID0gb3JnU2NvcGUob3JnSWQsIG9yZ0lkcyk7XG4gIGNvbnN0IGV4ZWMgPSAoKSA9PiB3aXRoVGVuYW50VHgoYXN5bmMgKHR4KSA9PiB7XG4gICAgY29uc3Qgcm93cyA9IGRyaXp6bGVSb3dzPEJ1aWxkSGVhbHRoU3RhZ2U+KChhd2FpdCB0eC5leGVjdXRlKHNxbGBcbiAgICAgIFdJVEggc3RhZ2VfcnVucyBBUyAoXG4gICAgICAgIFNFTEVDVFxuICAgICAgICAgIGUuc3RhZ2VfbmFtZSBBUyBzdGFnZSxcbiAgICAgICAgICAke3Rlcm1pbmFsU3RhdHVzUm9sbHVwfSBBUyBzdGF0dXMsXG4gICAgICAgICAgTUFYKGUuZHVyYXRpb25fbXMpIEFTIGR1cmF0aW9uX21zXG4gICAgICAgIEZST00gJHtzY2hlbWEucGlwZWxpbmVFdmVudH0gZVxuICAgICAgICBKT0lOICR7c2NoZW1hLnBpcGVsaW5lfSBwIE9OIHAuaWQgPSBlLnBpcGVsaW5lX2lkXG4gICAgICAgIFdIRVJFIHAub3JnX2lkICR7cHJlZH0gQU5EIGUucGlwZWxpbmVfaWQgPSAke3BpcGVsaW5lSWR9XG4gICAgICAgICAgQU5EIGUuZXZlbnRfdHlwZSA9ICdTVEFHRScgQU5EIGUuc3RhZ2VfbmFtZSBJUyBOT1QgTlVMTFxuICAgICAgICAgIEFORCBlLnN0YXJ0ZWRfYXQgPj0gJHtmcm9tfTo6dGltZXN0YW1wdHogQU5EIGUuc3RhcnRlZF9hdCA8PSAke3RvfTo6dGltZXN0YW1wdHpcbiAgICAgICAgR1JPVVAgQlkgZS5zdGFnZV9uYW1lLCBlLmV4ZWN1dGlvbl9pZFxuICAgICAgKVxuICAgICAgU0VMRUNUXG4gICAgICAgIHN0YWdlLFxuICAgICAgICBDT1VOVCgqKTo6aW50IEFTIHJ1bnMsXG4gICAgICAgIENPVU5UKCopIEZJTFRFUiAoV0hFUkUgc3RhdHVzID0gJ1NVQ0NFRURFRCcpOjppbnQgQVMgc3VjY2Vzc2VzLFxuICAgICAgICBDT1VOVCgqKSBGSUxURVIgKFdIRVJFIHN0YXR1cyA9ICdGQUlMRUQnKTo6aW50IEFTIGZhaWx1cmVzLFxuICAgICAgICBDT0FMRVNDRShST1VORChDT1VOVCgqKSBGSUxURVIgKFdIRVJFIHN0YXR1cyA9ICdTVUNDRUVERUQnKTo6bnVtZXJpY1xuICAgICAgICAgIC8gTlVMTElGKENPVU5UKCopLCAwKSAqIDEwMCwgMSksIDApOjpmbG9hdCBBUyBcInN1Y2Nlc3NSYXRlXCIsXG4gICAgICAgIFBFUkNFTlRJTEVfQ09OVCgwLjUpIFdJVEhJTiBHUk9VUCAoT1JERVIgQlkgZHVyYXRpb25fbXMpOjppbnQgQVMgXCJwNTBNc1wiLFxuICAgICAgICBQRVJDRU5USUxFX0NPTlQoMC45KSBXSVRISU4gR1JPVVAgKE9SREVSIEJZIGR1cmF0aW9uX21zKTo6aW50IEFTIFwicDkwTXNcIixcbiAgICAgICAgUEVSQ0VOVElMRV9DT05UKDAuOTkpIFdJVEhJTiBHUk9VUCAoT1JERVIgQlkgZHVyYXRpb25fbXMpOjppbnQgQVMgXCJwOTlNc1wiXG4gICAgICBGUk9NIHN0YWdlX3J1bnNcbiAgICAgIFdIRVJFIHN0YXR1cyBJTiAoJ1NVQ0NFRURFRCcsICdGQUlMRUQnKVxuICAgICAgR1JPVVAgQlkgc3RhZ2VcbiAgICAgIE9SREVSIEJZIHJ1bnMgREVTQywgc3RhZ2VcbiAgICBgKSkucm93cyk7XG5cbiAgICAvLyBUb3RhbHMgc3VtIGFjcm9zcyBzdGFnZXMgKHRvdGFsIHN0YWdlLXJ1bnMgLyBzdGFnZS1mYWlsdXJlcyBpbiB0aGUgd2luZG93KS5cbiAgICBsZXQgcnVucyA9IDAsIGZhaWx1cmVzID0gMDtcbiAgICBmb3IgKGNvbnN0IHMgb2Ygcm93cykgeyBydW5zICs9IHMucnVuczsgZmFpbHVyZXMgKz0gcy5mYWlsdXJlczsgfVxuICAgIGNvbnN0IGZhaWx1cmVSYXRlID0gcnVucyA+IDAgPyByb3VuZCgoZmFpbHVyZXMgLyBydW5zKSAqIDEwMCwgMSkgOiAwO1xuICAgIHJldHVybiB7IHN0YWdlczogcm93cywgdG90YWxzOiB7IHJ1bnMsIGZhaWx1cmVzLCBmYWlsdXJlUmF0ZSB9IH07XG4gIH0pO1xuICByZXR1cm4gcnVuUmVwb3J0KGAke29yZ0lkfTpidWlsZC1oZWFsdGg6JHtwaXBlbGluZUlkfToke2Zyb219OiR7dG99YCwgbXVsdGksIGV4ZWMpO1xufVxuXG4vLyDilIDilIAgQ2F0ZWdvcnkgMjogUGx1Z2luIEludmVudG9yeSAmIEJ1aWxkcyDilIDilIBcblxuLyoqIFBsdWdpbiBzdW1tYXJ5IOKAlCBjb3VudHMgYW5kIGJyZWFrZG93bnMuXG4gKiAgSU5URU5USU9OQUxMWSBTSU5HTEUtT1JHIChubyByb2xsdXApOiBwbHVnaW4gaW52ZW50b3J5IGlzIGFuIG9yZy1vd25lZFxuICogIGFzc2V0IGNvdW50LCBub3QgYW4gZXhlY3V0aW9uL2J1aWxkIGFjdGl2aXR5IHJlcG9ydCwgc28gYSBwYXJlbnQncyB2aWV3IGlzXG4gKiAgaXRzIG93biBwbHVnaW5zIOKAlCB0ZWFtcyBtYW5hZ2UgdGhlaXIgb3duIGludmVudG9yeS4gU2luZ2xlIGA9ICRvcmdgIHNjb3BlLiAqL1xuIl19
|
|
573
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9yYS5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwaS9yZXBvcnRpbmcvZG9yYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDOzs7Ozs7OztHQVFHO0FBRUgsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNsQyxPQUFPLEVBQ0wsWUFBWSxFQUFFLDBCQUEwQixFQUFFLDBCQUEwQixFQUNwRSxxQkFBcUIsRUFBRSx5QkFBeUIsRUFBRSxtQkFBbUIsRUFBRSxvQkFBb0IsRUFDM0YsS0FBSyxFQUFFLE1BQU0sRUFBRSxVQUFVLEdBQzFCLE1BQU0sbUJBQW1CLENBQUM7QUFDM0IsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBS3ZHLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMxRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRWpEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQkc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLGNBQWMsQ0FDbEMsS0FBYSxFQUNiLElBQVksRUFDWixFQUFVLEVBQ1YsTUFBaUIsRUFDakIsSUFBSSxHQUFnQixFQUFFO0lBRXRCLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsUUFBUSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNoRCxNQUFNLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxHQUFHLElBQUksQ0FBQztJQUN6QyxNQUFNLGNBQWMsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQSx1QkFB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aW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG4vKipcbiAqIERPUkEgbWV0cmljczogdGhlIGZvdXIgaGVhZGxpbmUgbWVhc3VyZXMsIHRoZWlyIHBlci1lbnZpcm9ubWVudCBicmVha2Rvd24sXG4gKiB0aGUgdHJlbmQgc2VyaWVzLCBhbmQgcGVyLXBpcGVsaW5lIGJ1aWxkIGhlYWx0aC5cbiAqXG4gKiBCeSBmYXIgdGhlIGxhcmdlc3QgZG9tYWluIGluIHRoZSByZXBvcnRpbmcgc2VydmljZSAofjQ5MCBsaW5lcyBvZiBxdWVyeSArXG4gKiBzaGFwaW5nIGFnYWluc3Qgc2l4IHJvdyBzaGFwZXMpLCB3aGljaCBpcyB3aHkgaXQgbGl2ZXMgaW4gaXRzIG93biBtb2R1bGUuXG4gKiBSZXBvcnRpbmdTZXJ2aWNlIGRlbGVnYXRlcyB0byB0aGVzZTsgdGhlIGJhbmRpbmcgdGhyZXNob2xkcyB0aGV5IGFwcGx5IGFyZSBpblxuICogLi9kb3JhLXNjb3JpbmcudHMsIGRlbGliZXJhdGVseSBzZXBhcmF0ZSBzbyB0aGV5IGNhbiBiZSB0ZXN0ZWQgd2l0aG91dCBhIERCLlxuICovXG5cbmltcG9ydCB7IHNxbCB9IGZyb20gJ2RyaXp6bGUtb3JtJztcbmltcG9ydCB7XG4gIEhFQURMSU5FX0VOViwgRE9SQV9JTkNJREVOVF9XSU5ET1dfSE9VUlMsIHJlc29sdmVJbmNpZGVudFdpbmRvd0hvdXJzLFxuICBkb3JhTGV2ZWxGb3JGcmVxdWVuY3ksIGRvcmFMZXZlbEZvckNoYW5nZUZhaWx1cmUsIGRvcmFMZXZlbEZvclJlc3RvcmUsIGRvcmFMZXZlbEZvckxlYWRUaW1lLFxuICByb3VuZCwgbWVkaWFuLCBwZXJjZW50aWxlLFxufSBmcm9tICcuL2RvcmEtc2NvcmluZy5qcyc7XG5pbXBvcnQgeyBvcmdTY29wZSwgcnVuUmVwb3J0IH0gZnJvbSAnLi9xdWVyeS1zY29wZS5qcyc7XG5pbXBvcnQgeyBhc3NlcnRSZXBvcnRJbnRlcnZhbCwgYnVja2V0S2V5LCBwZXJpb2RCdWNrZXQsIHRlcm1pbmFsU3RhdHVzUm9sbHVwIH0gZnJvbSAnLi9zcWwtaGVscGVycy5qcyc7XG5pbXBvcnQgdHlwZSB7XG4gIERvcmFPcHRpb25zLCBEb3JhTWV0cmljcywgRG9yYUVudk1ldHJpY3MsIERvcmFUcmVuZFBvaW50LCBCdWlsZEhlYWx0aCwgQnVpbGRIZWFsdGhTdGFnZSxcbiAgRGVwbG95Um93LCBPdXRjb21lUm93LCBNdHRyUGFpclJvdywgSW5jaWRlbnRSb3csIENvdmVyYWdlUm93LFxufSBmcm9tICcuL3R5cGVzLmpzJztcbmltcG9ydCB7IHNjaGVtYSB9IGZyb20gJy4uLy4uL2RhdGFiYXNlL2RyaXp6bGUtc2NoZW1hLmpzJztcbmltcG9ydCB7IHdpdGhUZW5hbnRUeCB9IGZyb20gJy4uLy4uL2RhdGFiYXNlL3RlbmFuY3kuanMnO1xuaW1wb3J0IHsgZHJpenpsZVJvd3MgfSBmcm9tICcuLi9jcnVkLXNlcnZpY2UuanMnO1xuXG4vKipcbiAqIERPUkEgbWV0cmljcyBvdmVyIGEgW2Zyb20sdG9dIGRlcGxveS1jb21wbGV0aW9uIHdpbmRvdywgb3JnLXNjb3BlZCArXG4gKiByb2xsdXAtYXdhcmUuIERFUExPWS1CQVNJUyBPTkxZIOKAlCBldmVyeSBtZXRyaWMgZGVyaXZlcyBmcm9tIHJlYWwgZGVwbG95LXN0YWdlXG4gKiBleGVjdXRpb25zIChgZXZlbnRfdHlwZT0nU1RBR0UnYCB3aXRoIGEgbm9uLW51bGwgYGVudmlyb25tZW50YCwgc2V0IGJ5IHRoZVxuICogZm9yd2FyZGVyIGZvciB0aGUgc3RhZ2VzIGEgdXNlciBkZWNsYXJlZCBpbiBgcGIuZGVwbG95c2ApLiBObyBydW4tYmFzZWRcbiAqIGZhbGxiYWNrOiBhIHBpcGVsaW5lIHdpdGggbm8gZGVwbG95IHN0YWdlIHByb2R1Y2VzIG5vIERPUkEgZGF0YS5cbiAqXG4gKiBGb3VyIHNjb3BlZCBTUUwgc2NhbnMgcnVuIGluc2lkZSBvbmUgdHggKGVhY2ggb3JnLWdhdGVkIGJ5IGBwLm9yZ19pZCAke3ByZWR9YFxuICogLyBgby5vcmdfaWQgJHtwcmVkfWAgc28gYSByb2xsdXAgcGFzc2VzIHRoZSBvcmfihpJ0ZWFtIHN1YnRyZWUgYW5kIGEgZm9yZWlnblxuICogb3JnJ3Mgcm93cyBuZXZlciBlbnRlcik6ICgxKSB0ZXJtaW5hbCBkZXBsb3kgcm93cyBQRVIgKGV4ZWN1dGlvbiwgZW52KSDigJQgb25lXG4gKiBcImRlcGxveW1lbnRcIiA9IG9uZSBleGVjdXRpb24gcmVhY2hpbmcgYW4gZW52IOKAlCDihpIgREYgLyBkZXBsb3ktdGltZSBDRlIgL1xuICogbWVhc3VyZWQgbGVhZCB0aW1lIChsZWFkIHRpbWUgam9pbnMgdGhlIGV4ZWN1dGlvbidzIGVhcmxpZXN0IGNvbW1pdCk7XG4gKiB0aGUgc2NhbiBhbHNvIHJlYWNoZXMgYmFjayBgd2luZG93SG91cnNgIGJlZm9yZSBgZnJvbWAgc28gaW5jaWRlbnRzIG9wZW5lZFxuICogbmVhciB0aGUgd2luZG93IHN0YXJ0IGNhbiBjb3JyZWxhdGUgdG8gYSBqdXN0LXByaW9yIGRlcGxveTsgKDIpIGBkZXBsb3ltZW50X291dGNvbWVzYFxuICogaW4td2luZG93IOKGkiBwb3N0LWRlcGxveSBDRlIgY29tcG9uZW50OyAoMykgcHJvZHVjdGlvbiByZXN0b3JlZC9mYWlsZWRcbiAqIG91dGNvbWVzIGpvaW5lZCB0byB0aGVpciBkZXBsb3kg4oaSIE1UVFI7ICg0KSByZWdpc3RyeSB2cyBkZXBsb3lpbmcg4oaSIGNvdmVyYWdlLlxuICogVGhlIGNyb3NzLXNvdXJjZSBtZWRpYW5zIChsZWFkIHRpbWUsIE1UVFIpIGFyZSBjb21wdXRlZCBpbiBKUyBmcm9tIGNsYW1wZWRcbiAqICjiiaUwKSBkZWx0YXMuXG4gKlxuICogQHBhcmFtIG9wdHMucGlwZWxpbmVJZCAgICByZXN0cmljdCB0byBvbmUgcGlwZWxpbmUgKHBlci1waXBlbGluZSBET1JBKVxuICogQHBhcmFtIG9wdHMuZW52aXJvbm1lbnQgICByZXN0cmljdCB0byBvbmUgZGVwbG95IGVudmlyb25tZW50XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXREb3JhTWV0cmljcyhcbiAgb3JnSWQ6IHN0cmluZyxcbiAgZnJvbTogc3RyaW5nLFxuICB0bzogc3RyaW5nLFxuICBvcmdJZHM/OiBzdHJpbmdbXSxcbiAgb3B0czogRG9yYU9wdGlvbnMgPSB7fSxcbik6IFByb21pc2U8RG9yYU1ldHJpY3M+IHtcbiAgY29uc3QgeyBwcmVkLCBtdWx0aSB9ID0gb3JnU2NvcGUob3JnSWQsIG9yZ0lkcyk7XG4gIGNvbnN0IHsgcGlwZWxpbmVJZCwgZW52aXJvbm1lbnQgfSA9IG9wdHM7XG4gIGNvbnN0IHBpcGVsaW5lQ2xhdXNlID0gcGlwZWxpbmVJZCA/IHNxbGBBTkQgZS5waXBlbGluZV9pZCA9ICR7cGlwZWxpbmVJZH1gIDogc3FsYGA7XG4gIGNvbnN0IHBpcGVsaW5lQ2xhdXNlUiA9IHBpcGVsaW5lSWQgPyBzcWxgQU5EIHIucGlwZWxpbmVfaWQgPSAke3BpcGVsaW5lSWR9YCA6IHNxbGBgO1xuICAvLyBQb3N0LWRlcGxveSBvdXRjb21lcyBjYXJyeSBubyBwaXBlbGluZSBpZCwgb25seSB0aGUgZXhlY3V0aW9uIHRoYXRcbiAgLy8gcHJvZHVjZWQgdGhlbSwgc28gYSBwZXItcGlwZWxpbmUgdmlldyBoYXMgdG8gc2NvcGUgdGhlbSBUSFJPVUdIIHRoZVxuICAvLyBleGVjdXRpb24uIFdpdGhvdXQgaXQgdGhlIG91dGNvbWUgYW5kIE1UVFIgc2NhbnMgcmVhZCBldmVyeSBwaXBlbGluZSBpbiB0aGVcbiAgLy8gb3JnOiBhbm90aGVyIHBpcGVsaW5lJ3MgYGZhaWxlZGAgbWFya2VyIGNvdW50ZWQgYWdhaW5zdCB0aGlzIG9uZSdzIGNoYW5nZVxuICAvLyBmYWlsdXJlIHJhdGUgKHRlbiBjbGVhbiBkZXBsb3lzIGNvdWxkIGRyb3AgZnJvbSBlbGl0ZSB0byBoaWdoKSBhbmQgaXRzXG4gIC8vIHJlY292ZXJpZXMgZmVkIHRoaXMgb25lJ3MgTVRUUi5cbiAgY29uc3Qgb3V0Y29tZVBpcGVsaW5lQ2xhdXNlID0gcGlwZWxpbmVJZFxuICAgID8gc3FsYEFORCBvLmV4ZWN1dGlvbl9pZCBJTiAoU0VMRUNUIHBlLmV4ZWN1dGlvbl9pZCBGUk9NICR7c2NoZW1hLnBpcGVsaW5lRXZlbnR9IHBlIFdIRVJFIHBlLnBpcGVsaW5lX2lkID0gJHtwaXBlbGluZUlkfSlgXG4gICAgOiBzcWxgYDtcbiAgLy8gYGVudkNsYXVzZWAgaXMgdGhlIFNUUklDVCBmaWx0ZXIgKGNvdmVyYWdlLCBhbmQgdGhlIG91dHB1dCkuIFRoZSBkZXBsb3kgYW5kXG4gIC8vIGluY2lkZW50IFNDQU5TIHVzZSB0aGUgd2lkZW5lZCBgc2NhbkVudkNsYXVzZWAvYHNjYW5JbmNpZGVudEVudkNsYXVzZWBcbiAgLy8gaW5zdGVhZCwgd2hpY2ggYWx3YXlzIGFkbWl0IHByb2R1Y3Rpb246IE1UVFIgaXMgcHJvZHVjdGlvbi1vbmx5IGFuZFxuICAvLyBkb2N1bWVudGVkIGFzIGluZGVwZW5kZW50IG9mIHRoZSBlbnZpcm9ubWVudCBmaWx0ZXIsIGJ1dCBpbmNpZGVudC1zb3VyY2VkXG4gIC8vIE1UVFIgY29ycmVsYXRlcyBlYWNoIHByb2R1Y3Rpb24gaW5jaWRlbnQgYWdhaW5zdCBwcm9kdWN0aW9uIERFUExPWSByb3dzLlxuICAvLyBGaWx0ZXJpbmcgYm90aCBzY2FucyB0byBgP2Vudmlyb25tZW50PXN0YWdpbmdgIHJlbW92ZWQgZXZlcnkgcHJvZHVjdGlvblxuICAvLyBpbmNpZGVudCBhbmQgZXZlcnkgcHJvZHVjdGlvbiBkZXBsb3ksIHNvIGluY2lkZW50IHJlY292ZXJ5IHNpbGVudGx5IGRyb3BwZWRcbiAgLy8gb3V0IG9mIE1UVFIgdGhlIG1vbWVudCBhbnlvbmUgbG9va2VkIGF0IGEgbm9uLXByb2R1Y3Rpb24gZW52aXJvbm1lbnQuXG4gIC8vIGBzaGFwZURvcmFgIG5hcnJvd3MgdGhlIHJlcG9ydGVkIGVudmlyb25tZW50cyBiYWNrIHRvIHRoZSByZXF1ZXN0ZWQgb25lLlxuICBjb25zdCBlbnZDbGF1c2UgPSBlbnZpcm9ubWVudCA/IHNxbGBBTkQgZS5lbnZpcm9ubWVudCA9ICR7ZW52aXJvbm1lbnR9YCA6IHNxbGBgO1xuICBjb25zdCBzY2FuRW52Q2xhdXNlID0gZW52aXJvbm1lbnQgPyBzcWxgQU5EIGUuZW52aXJvbm1lbnQgSU4gKCR7ZW52aXJvbm1lbnR9LCAke0hFQURMSU5FX0VOVn0pYCA6IHNxbGBgO1xuICBjb25zdCBvdXRjb21lRW52Q2xhdXNlID0gZW52aXJvbm1lbnQgPyBzcWxgQU5EIG8uZW52aXJvbm1lbnQgPSAke2Vudmlyb25tZW50fWAgOiBzcWxgYDtcbiAgY29uc3Qgc2NhbkluY2lkZW50RW52Q2xhdXNlID0gZW52aXJvbm1lbnQgPyBzcWxgQU5EIGkuZW52aXJvbm1lbnQgSU4gKCR7ZW52aXJvbm1lbnR9LCAke0hFQURMSU5FX0VOVn0pYCA6IHNxbGBgO1xuXG4gIC8vIEVmZmVjdGl2ZSBpbmNpZGVudC1jb3JyZWxhdGlvbiB3aW5kb3cgKHBlci1vcmcgb3ZlcnJpZGUgb3IgdGhlIGdsb2JhbFxuICAvLyBkZWZhdWx0KS4gQ29tcHV0ZWQgaGVyZSAobm90IGp1c3QgaW4gc2hhcGVEb3JhKSBiZWNhdXNlIHRoZSBkZXBsb3kgc2NhblxuICAvLyBuZWVkcyBpdCBmb3IgQk9USCB0aGUgY29ycmVsYXRpb24gbG9vay1iYWNrIGxvd2VyIGJvdW5kIEFORCB0aGUgY2FjaGUga2V5LlxuICBjb25zdCBlZmZlY3RpdmVXaW5kb3dIb3VycyA9IHJlc29sdmVJbmNpZGVudFdpbmRvd0hvdXJzKG9wdHMuaW5jaWRlbnRXaW5kb3dIb3Vycyk7XG4gIC8vIENvcnJlbGF0aW9uIGxvb2stYmFjazogaW5jaWRlbnRzIG9wZW5lZCBqdXN0IGluc2lkZSBgZnJvbWAgY2FuIGF0dHJpYnV0ZSB0b1xuICAvLyBhIGRlcGxveSB0aGF0IGNvbXBsZXRlZCB1cCB0byBgd2luZG93SG91cnNgIEJFRk9SRSBgZnJvbWAgKG1pcnJvcnMgdGhlXG4gIC8vIExBVEVSQUwgbG9vay1iYWNrIGluIGxpc3RJbmNpZGVudHMpLiBXaWRlbiB0aGUgZGVwbG95IHNjYW4ncyBsb3dlciBib3VuZCB0b1xuICAvLyBgZnJvbSDiiJIgd2luZG93SG91cnNgOyBERi9DRlIvbGVhZCBzdGlsbCBjb3VudCBvbmx5IHRoZSBpbi1gZnJvbWAuLmB0b2BcbiAgLy8gc3Vic2V0IChmbGFnZ2VkIGJ5IGBpbl93aW5kb3dgKSwgd2hpbGUgY29ycmVsYXRpb24gc2VlcyB0aGUgd2lkZXIgc2V0LlxuICBjb25zdCBmcm9tTXMgPSBEYXRlLnBhcnNlKGZyb20pO1xuICBjb25zdCBsb29rYmFja0Zyb20gPSBOdW1iZXIuaXNGaW5pdGUoZnJvbU1zKVxuICAgID8gbmV3IERhdGUoZnJvbU1zIC0gZWZmZWN0aXZlV2luZG93SG91cnMgKiAzNjAwICogMTAwMCkudG9JU09TdHJpbmcoKVxuICAgIDogZnJvbTtcblxuICAvLyAoMSkgVGVybWluYWwgZGVwbG95IHJvd3M6IFBFUi1FWEVDVVRJT04sIG9uZSByb3cgcGVyIChlbnZpcm9ubWVudCxcbiAgLy8gZXhlY3V0aW9uKSDigJQgZXZlcnkgZGVwbG95IFNUQUdFIHRhcmdldGluZyB0aGF0IGVudiB3aXRoaW4gdGhlIGV4ZWN1dGlvbiBpc1xuICAvLyByb2xsZWQgdXAgdG8gYSB0ZXJtaW5hbCBzdGF0dXMgKEZBSUxFRCB3aW5zLCB0aGVuIFNVQ0NFRURFRCkuIEEgc2luZ2xlXG4gIC8vIGV4ZWN1dGlvbiB3aXRoIHR3byBkZXBsb3kgc3RhZ2VzIHRvIHRoZSBzYW1lIGVudiBpcyBPTkUgZGVwbG95bWVudCwgbm90IHR3by5cbiAgLy8gY29tcGxldGVkX2F0ID0gdGhlIGRlcGxveSdzIGNvbXBsZXRpb24gKE1BWCBvdmVyIGl0cyBzdGFnZXMpLiBgY29tbWl0X3RzYFxuICAvLyBpcyB0aGUgZXhlY3V0aW9uJ3MgRUFSTElFU1QgY29tbWl0IHRpbWUgYWNyb3NzIEFMTCBpdHMgZXZlbnRzIChjb21taXRcbiAgLy8gZW5yaWNobWVudCByaWRlcyB0aGUgUElQRUxJTkUvc291cmNlIGV2ZW50IHdoZXJlIGVudmlyb25tZW50IElTIE5VTEwsIG5ldmVyXG4gIC8vIHRoZSBkZXBsb3kgU1RBR0Ugcm93KSwgam9pbmVkIGJ5IGV4ZWN1dGlvbl9pZC4gYGluX3dpbmRvd2AgbWFya3Mgd2hldGhlciB0aGVcbiAgLy8gZGVwbG95IGNvbXBsZXRlZCBpbnNpZGUgW2Zyb20sdG9dICh2cy4gYSBsb29rLWJhY2stb25seSByb3cga2VwdCBzb2xlbHkgZm9yXG4gIC8vIGluY2lkZW50IGNvcnJlbGF0aW9uKS4gZXhlY3V0aW9uX2lkIGlzIHByb2plY3RlZCBzbyBwb3N0LWRlcGxveSBmYWlsdXJlc1xuICAvLyAobWFudWFsIG91dGNvbWVzICsgY29ycmVsYXRlZCBpbmNpZGVudHMpIGNhbiBkZWR1cCBhZ2FpbnN0IHRoZWlyIGRlcGxveS5cbiAgY29uc3QgZGVwbG95U3FsID0gc3FsYFxuICAgICAgV0lUSCBkZXBsb3lfc3RhZ2VzIEFTIChcbiAgICAgICAgU0VMRUNUXG4gICAgICAgICAgZS5lbnZpcm9ubWVudCBBUyBlbnZpcm9ubWVudCxcbiAgICAgICAgICBlLmV4ZWN1dGlvbl9pZCBBUyBleGVjdXRpb25faWQsXG4gICAgICAgICAgJHt0ZXJtaW5hbFN0YXR1c1JvbGx1cH0gQVMgc3RhdHVzLFxuICAgICAgICAgIE1BWChlLmNvbXBsZXRlZF9hdCkgQVMgY29tcGxldGVkX2F0XG4gICAgICAgIEZST00gJHtzY2hlbWEucGlwZWxpbmVFdmVudH0gZVxuICAgICAgICBKT0lOICR7c2NoZW1hLnBpcGVsaW5lfSBwIE9OIHAuaWQgPSBlLnBpcGVsaW5lX2lkXG4gICAgICAgIFdIRVJFIHAub3JnX2lkICR7cHJlZH0gQU5EIGUuZXZlbnRfdHlwZSA9ICdTVEFHRScgQU5EIGUuZW52aXJvbm1lbnQgSVMgTk9UIE5VTExcbiAgICAgICAgICAke3BpcGVsaW5lQ2xhdXNlfSAke3NjYW5FbnZDbGF1c2V9XG4gICAgICAgICAgQU5EIGUuY29tcGxldGVkX2F0ID49ICR7bG9va2JhY2tGcm9tfTo6dGltZXN0YW1wdHogQU5EIGUuY29tcGxldGVkX2F0IDw9ICR7dG99Ojp0aW1lc3RhbXB0elxuICAgICAgICBHUk9VUCBCWSBlLmVudmlyb25tZW50LCBlLmV4ZWN1dGlvbl9pZFxuICAgICAgKSxcbiAgICAgIGV4ZWNfY29tbWl0cyBBUyAoXG4gICAgICAgIFNFTEVDVCBjLmV4ZWN1dGlvbl9pZCBBUyBleGVjdXRpb25faWQsIE1JTihjLmNvbW1pdF90aW1lc3RhbXApIEFTIGNvbW1pdF90c1xuICAgICAgICBGUk9NICR7c2NoZW1hLnBpcGVsaW5lRXZlbnR9IGNcbiAgICAgICAgSk9JTiAke3NjaGVtYS5waXBlbGluZX0gcCBPTiBwLmlkID0gYy5waXBlbGluZV9pZFxuICAgICAgICBXSEVSRSBwLm9yZ19pZCAke3ByZWR9IEFORCBjLmNvbW1pdF90aW1lc3RhbXAgSVMgTk9UIE5VTExcbiAgICAgICAgICBBTkQgYy5leGVjdXRpb25faWQgSU4gKFNFTEVDVCBleGVjdXRpb25faWQgRlJPTSBkZXBsb3lfc3RhZ2VzKVxuICAgICAgICBHUk9VUCBCWSBjLmV4ZWN1dGlvbl9pZFxuICAgICAgKVxuICAgICAgU0VMRUNUXG4gICAgICAgIGRzLmVudmlyb25tZW50IEFTIGVudmlyb25tZW50LFxuICAgICAgICBkcy5leGVjdXRpb25faWQgQVMgZXhlY3V0aW9uX2lkLFxuICAgICAgICBkcy5zdGF0dXMgQVMgc3RhdHVzLFxuICAgICAgICBkcy5jb21wbGV0ZWRfYXQ6OnRleHQgQVMgY29tcGxldGVkX2F0LFxuICAgICAgICAoZHMuY29tcGxldGVkX2F0ID49ICR7ZnJvbX06OnRpbWVzdGFtcHR6KSBBUyBpbl93aW5kb3csXG4gICAgICAgIGVjLmNvbW1pdF90czo6dGV4dCBBUyBjb21taXRfdHNcbiAgICAgIEZST00gZGVwbG95X3N0YWdlcyBkc1xuICAgICAgTEVGVCBKT0lOIGV4ZWNfY29tbWl0cyBlYyBPTiBlYy5leGVjdXRpb25faWQgPSBkcy5leGVjdXRpb25faWRgO1xuXG4gIC8vICgyKSBQb3N0LWRlcGxveSBvdXRjb21lIG1hcmtlcnMgaW4td2luZG93IChwZXIgZW52KS4gUG9zdC1kZXBsb3kgZmFpbHVyZXNcbiAgLy8gKG91dGNvbWU9J2ZhaWxlZCcpIGFkZCB0byB0aGUgQ0ZSIG51bWVyYXRvciB3aXRob3V0IGNoYW5naW5nIGF0dGVtcHRzLlxuICAvLyBleGVjdXRpb25faWQgbGV0cyB0aGUgQ0ZSIGRlZHVwIGEgbWFudWFsIGZhaWx1cmUgYWdhaW5zdCBhbiBpbmNpZGVudCB0aGF0XG4gIC8vIGNvcnJlbGF0ZXMgdG8gdGhlIHNhbWUgZGVwbG95IChubyBkb3VibGUtY291bnQpLlxuICBjb25zdCBvdXRjb21lU3FsID0gc3FsYFxuICAgICAgU0VMRUNUIG8uZW52aXJvbm1lbnQgQVMgZW52aXJvbm1lbnQsIG8ub3V0Y29tZSBBUyBvdXRjb21lLCBvLmV4ZWN1dGlvbl9pZCBBUyBleGVjdXRpb25faWRcbiAgICAgIEZST00gJHtzY2hlbWEuZGVwbG95bWVudE91dGNvbWV9IG9cbiAgICAgIFdIRVJFIG8ub3JnX2lkICR7cHJlZH0gJHtvdXRjb21lRW52Q2xhdXNlfSAke291dGNvbWVQaXBlbGluZUNsYXVzZX1cbiAgICAgICAgQU5EIG8uYXQgPj0gJHtmcm9tfTo6dGltZXN0YW1wdHogQU5EIG8uYXQgPD0gJHt0b306OnRpbWVzdGFtcHR6YDtcblxuICAvLyAoMykgTVRUUiDigJQgUFJPRFVDVElPTi1PTkxZLCBpbmRlcGVuZGVudCBvZiB0aGUgZW52IGZpbHRlci4gRXZlcnkgcHJvZHVjdGlvblxuICAvLyBvdXRjb21lIGluLXdpbmRvdzsgZm9yIGEgJ3Jlc3RvcmVkJyBvbmUsIGNvcnJlbGF0ZSB0byBpdHMgZGVwbG95J3NcbiAgLy8gY29tcGxldGlvbiB2aWEgZXhlY3V0aW9uX2lkIHRvIG1lYXN1cmUgcmVzdG9yZWQuYXQg4oiSIGRlcGxveWVkLmNvbXBsZXRlZF9hdC5cbiAgLy8gZXhlY3V0aW9uX2lkIGlzIHByb2plY3RlZCBzbyBhbiBpbmNpZGVudC1zb3VyY2VkIHJlY292ZXJ5IGZvciB0aGUgc2FtZVxuICAvLyBkZXBsb3kgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIHRoZSBtYW51YWwgcmVzdG9yZWQgZ2FwLlxuICBjb25zdCBtdHRyU3FsID0gc3FsYFxuICAgICAgU0VMRUNUXG4gICAgICAgIG8ub3V0Y29tZSBBUyBvdXRjb21lLFxuICAgICAgICBvLmV4ZWN1dGlvbl9pZCBBUyBleGVjdXRpb25faWQsXG4gICAgICAgIG8uYXQ6OnRleHQgQVMgcmVzdG9yZWRfYXQsXG4gICAgICAgIChTRUxFQ1QgTUFYKGQuY29tcGxldGVkX2F0KSBGUk9NICR7c2NoZW1hLnBpcGVsaW5lRXZlbnR9IGRcbiAgICAgICAgICAgSk9JTiAke3NjaGVtYS5waXBlbGluZX0gcDIgT04gcDIuaWQgPSBkLnBpcGVsaW5lX2lkXG4gICAgICAgICAgIFdIRVJFIHAyLm9yZ19pZCAke3ByZWR9IEFORCBkLmV4ZWN1dGlvbl9pZCA9IG8uZXhlY3V0aW9uX2lkXG4gICAgICAgICAgICAgQU5EIGQuZXZlbnRfdHlwZSA9ICdTVEFHRScgQU5EIGQuZW52aXJvbm1lbnQgPSAke0hFQURMSU5FX0VOVn0pOjp0ZXh0IEFTIGRlcGxveWVkX2F0XG4gICAgICBGUk9NICR7c2NoZW1hLmRlcGxveW1lbnRPdXRjb21lfSBvXG4gICAgICBXSEVSRSBvLm9yZ19pZCAke3ByZWR9IEFORCBvLmVudmlyb25tZW50ID0gJHtIRUFETElORV9FTlZ9ICR7b3V0Y29tZVBpcGVsaW5lQ2xhdXNlfVxuICAgICAgICBBTkQgby5hdCA+PSAke2Zyb219Ojp0aW1lc3RhbXB0eiBBTkQgby5hdCA8PSAke3RvfTo6dGltZXN0YW1wdHpgO1xuXG4gIC8vICg1KSBJbmNpZGVudHMgb3BlbmVkIGluLXdpbmRvdyAocGVyIGVudikuIENvcnJlbGF0ZWQgaW4gSlMgdG8gdGhlIG1vc3RcbiAgLy8gcmVjZW50IHN1Y2Nlc3NmdWwgZGVwbG95IOKGkiBhdXRvbWF0ZWQgcG9zdC1kZXBsb3kgZmFpbHVyZSAoQ0ZSKSArIHJlYWxcbiAgLy8gcmVjb3ZlcnkgdGltZSAocmVzb2x2ZWRfYXQg4oiSIG9wZW5lZF9hdCkgZm9yIE1UVFIgKHByb2R1Y3Rpb24pLlxuICBjb25zdCBpbmNpZGVudFNxbCA9IHNxbGBcbiAgICAgIFNFTEVDVCBpLmVudmlyb25tZW50IEFTIGVudmlyb25tZW50LCBpLm9wZW5lZF9hdDo6dGV4dCBBUyBvcGVuZWRfYXQsIGkucmVzb2x2ZWRfYXQ6OnRleHQgQVMgcmVzb2x2ZWRfYXRcbiAgICAgIEZST00gJHtzY2hlbWEuaW5jaWRlbnR9IGlcbiAgICAgIFdIRVJFIGkub3JnX2lkICR7cHJlZH0gJHtzY2FuSW5jaWRlbnRFbnZDbGF1c2V9XG4gICAgICAgIEFORCBpLm9wZW5lZF9hdCA+PSAke2Zyb219Ojp0aW1lc3RhbXB0eiBBTkQgaS5vcGVuZWRfYXQgPD0gJHt0b306OnRpbWVzdGFtcHR6YDtcblxuICAvLyAoNCkgQ292ZXJhZ2U6IHJlZ2lzdGVyZWQgcGlwZWxpbmVzIHZzIHRob3NlIHRoYXQgYWN0dWFsbHkgZGVwbG95ZWQgaW4td2luZG93LlxuICBjb25zdCBjb3ZlcmFnZVNxbCA9IHNxbGBcbiAgICAgIFNFTEVDVFxuICAgICAgICAoU0VMRUNUIENPVU5UKCopOjppbnQgRlJPTSAke3NjaGVtYS5waXBlbGluZVJlZ2lzdHJ5fSByXG4gICAgICAgICAgIFdIRVJFIHIub3JnX2lkICR7cHJlZH0gJHtwaXBlbGluZUNsYXVzZVJ9KSBBUyByZWdpc3RlcmVkLFxuICAgICAgICAoU0VMRUNUIENPVU5UKERJU1RJTkNUIGUucGlwZWxpbmVfaWQpOjppbnQgRlJPTSAke3NjaGVtYS5waXBlbGluZUV2ZW50fSBlXG4gICAgICAgICAgIEpPSU4gJHtzY2hlbWEucGlwZWxpbmV9IHAgT04gcC5pZCA9IGUucGlwZWxpbmVfaWRcbiAgICAgICAgICAgV0hFUkUgcC5vcmdfaWQgJHtwcmVkfSBBTkQgZS5ldmVudF90eXBlID0gJ1NUQUdFJyBBTkQgZS5lbnZpcm9ubWVudCBJUyBOT1QgTlVMTFxuICAgICAgICAgICAgICR7cGlwZWxpbmVDbGF1c2V9ICR7ZW52Q2xhdXNlfVxuICAgICAgICAgICAgIEFORCBlLmNvbXBsZXRlZF9hdCA+PSAke2Zyb219Ojp0aW1lc3RhbXB0eiBBTkQgZS5jb21wbGV0ZWRfYXQgPD0gJHt0b306OnRpbWVzdGFtcHR6KSBBUyBkZXBsb3lpbmdgO1xuXG4gIGNvbnN0IGV4ZWMgPSAoKSA9PiB3aXRoVGVuYW50VHgoYXN5bmMgKHR4KSA9PiB7XG4gICAgLy8gU2NhbiBvcmRlciBpcyBsb2FkLWJlYXJpbmcgZm9yIHRoZSBnZW5lcmF0ZWQtU1FMIHRlc3RzOiAwPWRlcGxveSxcbiAgICAvLyAxPW91dGNvbWVzLCAyPW10dHIsIDM9Y292ZXJhZ2UsIDQ9aW5jaWRlbnRzIChhcHBlbmRlZCBsYXN0IHNvIHRoZVxuICAgIC8vIGVhcmxpZXIgaW5kaWNlcyBzdGF5IHN0YWJsZSkuXG4gICAgY29uc3QgZGVwbG95Um93cyA9IGRyaXp6bGVSb3dzPERlcGxveVJvdz4oKGF3YWl0IHR4LmV4ZWN1dGUoZGVwbG95U3FsKSkucm93cyk7XG4gICAgY29uc3Qgb3V0Y29tZVJvd3MgPSBkcml6emxlUm93czxPdXRjb21lUm93PigoYXdhaXQgdHguZXhlY3V0ZShvdXRjb21lU3FsKSkucm93cyk7XG4gICAgY29uc3QgbXR0clJvd3MgPSBkcml6emxlUm93czxNdHRyUGFpclJvdyAmIHsgb3V0Y29tZTogc3RyaW5nIH0+KChhd2FpdCB0eC5leGVjdXRlKG10dHJTcWwpKS5yb3dzKTtcbiAgICBjb25zdCBjb3ZlcmFnZVJvdyA9IGRyaXp6bGVSb3dzPENvdmVyYWdlUm93PigoYXdhaXQgdHguZXhlY3V0ZShjb3ZlcmFnZVNxbCkpLnJvd3MpWzBdO1xuICAgIGNvbnN0IGluY2lkZW50Um93cyA9IGRyaXp6bGVSb3dzPEluY2lkZW50Um93PigoYXdhaXQgdHguZXhlY3V0ZShpbmNpZGVudFNxbCkpLnJvd3MpO1xuICAgIHJldHVybiBzaGFwZURvcmEoZGVwbG95Um93cywgb3V0Y29tZVJvd3MsIG10dHJSb3dzLCBjb3ZlcmFnZVJvdywgaW5jaWRlbnRSb3dzLCBmcm9tLCB0bywge1xuICAgICAgcGlwZWxpbmVJZCwgZW52aXJvbm1lbnQsXG4gICAgfSwgZWZmZWN0aXZlV2luZG93SG91cnMpO1xuICB9KTtcbiAgLy8gQ2FjaGUga2V5IE1VU1QgaW5jbHVkZSB0aGUgZWZmZWN0aXZlIGluY2lkZW50IHdpbmRvdzogdGhlIHNjb3JlY2FyZCByZWFkc1xuICAvLyAvZG9yYSB3aXRoIHRoZSBvcmcncyBkZWZhdWx0IHdpbmRvdyB3aGlsZSBhbiBleHBsaWNpdCAvZG9yYSBjYWxsIG1heSBwYXNzIGFuXG4gIC8vIG92ZXJyaWRlIOKAlCBkaWZmZXJlbnQgd2luZG93cyB5aWVsZCBkaWZmZXJlbnQgQ0ZSL01UVFIsIHNvIHRoZXkgbXVzdCBub3RcbiAgLy8gY29sbGlkZSBvbiB0aGUgc2FtZSBrZXkuXG4gIGNvbnN0IGtleSA9IGAke29yZ0lkfTpkb3JhOiR7ZnJvbX06JHt0b306JHtwaXBlbGluZUlkID8/ICcnfToke2Vudmlyb25tZW50ID8/ICcnfToke2VmZmVjdGl2ZVdpbmRvd0hvdXJzfWA7XG4gIHJldHVybiBydW5SZXBvcnQoa2V5LCBtdWx0aSwgZXhlYyk7XG59XG5cbi8qKiBQZXItZW52aXJvbm1lbnQgZGVwbG95IGFjY3VtdWxhdG9yLiAqL1xuaW50ZXJmYWNlIEVudkFjYyB7XG4gIGRlcGxveW1lbnRzOiBudW1iZXI7XG4gIGRlcGxveVRpbWVGYWlsdXJlczogbnVtYmVyO1xuICBhdHRlbXB0czogbnVtYmVyO1xuICBsZWFkR2FwczogbnVtYmVyW107XG59XG5cbi8qKiBBIHByb2R1Y3Rpb24tb3Itb3RoZXIgaW5jaWRlbnQgYXR0cmlidXRlZCB0byB0aGUgZGVwbG95IGV4ZWN1dGlvbiBpdCBmb2xsb3dlZC4gKi9cbmludGVyZmFjZSBDb3JyZWxhdGVkSW5jaWRlbnQgeyBlbnZpcm9ubWVudDogc3RyaW5nOyBleGVjOiBzdHJpbmc7IHJlc29sdmVkR2FwOiBudW1iZXIgfCBudWxsIH1cblxuLyoqIEdldC1vci1jcmVhdGUgdGhlIGFjY3VtdWxhdG9yIGZvciBgZW52YC4gKi9cbmZ1bmN0aW9uIGFjY0ZvcihlbnZzOiBNYXA8c3RyaW5nLCBFbnZBY2M+LCBlbnY6IHN0cmluZyk6IEVudkFjYyB7XG4gIGxldCBhID0gZW52cy5nZXQoZW52KTtcbiAgaWYgKCFhKSB7IGEgPSB7IGRlcGxveW1lbnRzOiAwLCBkZXBsb3lUaW1lRmFpbHVyZXM6IDAsIGF0dGVtcHRzOiAwLCBsZWFkR2FwczogW10gfTsgZW52cy5zZXQoZW52LCBhKTsgfVxuICByZXR1cm4gYTtcbn1cblxuLyoqXG4gKiBBIGRlcGxveSByb3cgY291bnRzIHRvd2FyZCBERi9DRlIvbGVhZCBvbmx5IGlmIGl0IGNvbXBsZXRlZCBpbnNpZGUgW2Zyb20sdG9dLlxuICogTG9vay1iYWNrLW9ubHkgcm93cyAoaW5fd2luZG93PWZhbHNlLCBrZXB0IGZvciBpbmNpZGVudCBjb3JyZWxhdGlvbikgYXJlXG4gKiBza2lwcGVkLiBBYnNlbnQgaW4gYSBmaXh0dXJlIOKHkiBpbi13aW5kb3cgKHVuaXQgdGVzdHMgb21pdCB0aGUgZmxhZykuXG4gKi9cbmZ1bmN0aW9uIGlzSW5XaW5kb3cocm93OiBEZXBsb3lSb3cpOiBib29sZWFuIHtcbiAgcmV0dXJuIHJvdy5pbl93aW5kb3cgPT0gbnVsbCA/IHRydWUgOiAocm93LmluX3dpbmRvdyA9PT0gdHJ1ZSB8fCByb3cuaW5fd2luZG93ID09PSAndCcpO1xufVxuXG4vKiogQnVja2V0IHRoZSBpbi13aW5kb3cgdGVybWluYWwgZGVwbG95IHJvd3MgYnkgZW52aXJvbm1lbnQgKERGIC8gZGVwbG95LXRpbWUgQ0ZSIC8gbWVhc3VyZWQgbGVhZCkuICovXG5mdW5jdGlvbiBhY2N1bXVsYXRlRGVwbG95cyhkZXBsb3lSb3dzOiBEZXBsb3lSb3dbXSk6IE1hcDxzdHJpbmcsIEVudkFjYz4ge1xuICBjb25zdCBlbnZzID0gbmV3IE1hcDxzdHJpbmcsIEVudkFjYz4oKTtcbiAgZm9yIChjb25zdCByb3cgb2YgZGVwbG95Um93cykge1xuICAgIGNvbnN0IGVudiA9IHJvdy5lbnZpcm9ubWVudDtcbiAgICBpZiAoIWVudikgY29udGludWU7XG4gICAgaWYgKCFpc0luV2luZG93KHJvdykpIGNvbnRpbnVlOyAvLyBsb29rLWJhY2stb25seSByb3cg4oaSIGNvcnJlbGF0aW9uLCBub3QgREYvQ0ZSXG4gICAgY29uc3QgYSA9IGFjY0ZvcihlbnZzLCBlbnYpO1xuICAgIGlmIChyb3cuc3RhdHVzID09PSAnU1VDQ0VFREVEJykge1xuICAgICAgYS5kZXBsb3ltZW50cysrO1xuICAgICAgYS5hdHRlbXB0cysrO1xuICAgICAgLy8gTWVhc3VyZWQgbGVhZCB0aW1lOiBkZXBsb3kgY29tcGxldGlvbiDiiJIgZXhlY3V0aW9uJ3MgZWFybGllc3QgY29tbWl0IHRpbWUuXG4gICAgICAvL1xuICAgICAgLy8gU3RpbGwgY2xhbXBlZCDiiaUwLCB1bmxpa2UgdGhlIHNpbmdsZS1ldmVudCB0aW1lc3RhbXAgY2hlY2tzIHRoYXQgbm93IHJ1biBhdFxuICAgICAgLy8gSU5HRVNULiBUaGUgdHdvIGluc3RhbnRzIGNvbWUgZnJvbSBESUZGRVJFTlQgcm93cyDigJQgYGNvbW1pdF90aW1lc3RhbXBgIG9mZlxuICAgICAgLy8gdGhlIFBJUEVMSU5FL3NvdXJjZSBldmVudCwgYGNvbXBsZXRlZF9hdGAgb2ZmIHRoZSBkZXBsb3kgU1RBR0UgZXZlbnQg4oCUXG4gICAgICAvLyBqb2luZWQgb25seSBoZXJlIGJ5IGV4ZWN1dGlvbl9pZCwgc28gbm8gaW5nZXN0LXRpbWUgY2hlY2sgY2FuIHNlZSB0aGVcbiAgICAgIC8vIHBhaXIuIEEgY29tbWl0IGRhdGVkIGFmdGVyIGl0cyBvd24gZGVwbG95IG1lYW5zIGEgcmV3cml0dGVuIGhpc3Rvcnkgb3IgYVxuICAgICAgLy8gc2tld2VkIFNDTSBjbG9jaywgYW5kIDAgaXMgdGhlIGhvbmVzdCBmbG9vciBmb3IgXCJzaGlwcGVkIGltbWVkaWF0ZWx5XCIuXG4gICAgICBpZiAocm93LmNvbW1pdF90cyAhPSBudWxsICYmIHJvdy5jb21wbGV0ZWRfYXQgIT0gbnVsbCkge1xuICAgICAgICBjb25zdCBnYXAgPSAoRGF0ZS5wYXJzZShyb3cuY29tcGxldGVkX2F0KSAtIERhdGUucGFyc2Uocm93LmNvbW1pdF90cykpIC8gMTAwMDtcbiAgICAgICAgaWYgKE51bWJlci5pc0Zpbml0ZShnYXApKSBhLmxlYWRHYXBzLnB1c2goTWF0aC5tYXgoZ2FwLCAwKSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChyb3cuc3RhdHVzID09PSAnRkFJTEVEJykge1xuICAgICAgYS5kZXBsb3lUaW1lRmFpbHVyZXMrKztcbiAgICAgIGEuYXR0ZW1wdHMrKztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGVudnM7XG59XG5cbi8qKlxuICogSW5jaWRlbnTihpJkZXBsb3kgY29ycmVsYXRpb24uIEVhY2ggaW5jaWRlbnQgaXMgYXR0cmlidXRlZCB0byB0aGUgbW9zdCByZWNlbnRcbiAqIFNVQ0NFU1NGVUwgZGVwbG95IHRvIGl0cyBlbnZpcm9ubWVudCB3aXRoIGBjb21wbGV0ZWRfYXQg4omkIG9wZW5lZF9hdGAgd2l0aGluXG4gKiBgd2luZG93SG91cnNgOyBhbiB1bmNvcnJlbGF0ZWQgaW5jaWRlbnQgaXMgZHJvcHBlZC4gQSByZXNvbHV0aW9uIGFmdGVyIHRoZVxuICogd2luZG93IGVuZCAoYHRvTXNgKSBpcyByaWdodC1jZW5zb3JlZDogdGhlIGluY2lkZW50IHN0aWxsIGNvdW50cywgdW5yZXNvbHZlZC5cbiAqL1xuZnVuY3Rpb24gY29ycmVsYXRlSW5jaWRlbnRzKFxuICBkZXBsb3lSb3dzOiBEZXBsb3lSb3dbXSxcbiAgaW5jaWRlbnRSb3dzOiBJbmNpZGVudFJvd1tdLFxuICB3aW5kb3dIb3VyczogbnVtYmVyLFxuICB0b01zOiBudW1iZXIsXG4pOiBDb3JyZWxhdGVkSW5jaWRlbnRbXSB7XG4gIC8vIEluZGV4IHRoZSBTVUNDRVNTRlVMIGRlcGxveXMgcGVyIGVudiAoZXhlY3V0aW9uIGlkICsgY29tcGxldGlvbiBpbnN0YW50KSxcbiAgLy8gbmV3ZXN0IGZpcnN0LlxuICBjb25zdCB3aW5kb3dNcyA9IHdpbmRvd0hvdXJzICogMzYwMCAqIDEwMDA7XG4gIGNvbnN0IHN1Y2Nlc3NmdWxCeUVudiA9IG5ldyBNYXA8c3RyaW5nLCBBcnJheTx7IGV4ZWM6IHN0cmluZzsgY29tcGxldGVkTXM6IG51bWJlciB9Pj4oKTtcbiAgZm9yIChjb25zdCByb3cgb2YgZGVwbG95Um93cykge1xuICAgIGlmIChyb3cuc3RhdHVzICE9PSAnU1VDQ0VFREVEJyB8fCAhcm93LmVudmlyb25tZW50IHx8IHJvdy5leGVjdXRpb25faWQgPT0gbnVsbCB8fCByb3cuY29tcGxldGVkX2F0ID09IG51bGwpIGNvbnRpbnVlO1xuICAgIGNvbnN0IG1zID0gRGF0ZS5wYXJzZShyb3cuY29tcGxldGVkX2F0KTtcbiAgICBpZiAoIU51bWJlci5pc0Zpbml0ZShtcykpIGNvbnRpbnVlO1xuICAgIGNvbnN0IGxpc3QgPSBzdWNjZXNzZnVsQnlFbnYuZ2V0KHJvdy5lbnZpcm9ubWVudCkgPz8gW107XG4gICAgbGlzdC5wdXNoKHsgZXhlYzogcm93LmV4ZWN1dGlvbl9pZCwgY29tcGxldGVkTXM6IG1zIH0pO1xuICAgIHN1Y2Nlc3NmdWxCeUVudi5zZXQocm93LmVudmlyb25tZW50LCBsaXN0KTtcbiAgfVxuICBmb3IgKGNvbnN0IGxpc3Qgb2Ygc3VjY2Vzc2Z1bEJ5RW52LnZhbHVlcygpKSBsaXN0LnNvcnQoKGEsIGIpID0+IGIuY29tcGxldGVkTXMgLSBhLmNvbXBsZXRlZE1zKTtcblxuICBjb25zdCBjb3JyZWxhdGUgPSAoZW52OiBzdHJpbmcsIG9wZW5lZE1zOiBudW1iZXIpOiBzdHJpbmcgfCBudWxsID0+IHtcbiAgICBjb25zdCBsaXN0ID0gc3VjY2Vzc2Z1bEJ5RW52LmdldChlbnYpO1xuICAgIGlmICghbGlzdCkgcmV0dXJuIG51bGw7XG4gICAgZm9yIChjb25zdCBkIG9mIGxpc3QpIHtcbiAgICAgIGlmIChkLmNvbXBsZXRlZE1zIDw9IG9wZW5lZE1zICYmIG9wZW5lZE1zIC0gZC5jb21wbGV0ZWRNcyA8PSB3aW5kb3dNcykgcmV0dXJuIGQuZXhlYztcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH07XG5cbiAgY29uc3QgY29ycmVsYXRlZDogQ29ycmVsYXRlZEluY2lkZW50W10gPSBbXTtcbiAgZm9yIChjb25zdCBpbmMgb2YgaW5jaWRlbnRSb3dzKSB7XG4gICAgaWYgKCFpbmMuZW52aXJvbm1lbnQgfHwgaW5jLm9wZW5lZF9hdCA9PSBudWxsKSBjb250aW51ZTtcbiAgICBjb25zdCBvcGVuZWRNcyA9IERhdGUucGFyc2UoaW5jLm9wZW5lZF9hdCk7XG4gICAgaWYgKCFOdW1iZXIuaXNGaW5pdGUob3BlbmVkTXMpKSBjb250aW51ZTtcbiAgICBjb25zdCBleGVjID0gY29ycmVsYXRlKGluYy5lbnZpcm9ubWVudCwgb3BlbmVkTXMpO1xuICAgIGlmIChleGVjID09IG51bGwpIGNvbnRpbnVlOyAvLyB1bmNvcnJlbGF0ZWQg4oaSIG5vdCBhdHRyaWJ1dGFibGUgdG8gYSBkZXBsb3lcbiAgICBsZXQgcmVzb2x2ZWRHYXA6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICAgIGlmIChpbmMucmVzb2x2ZWRfYXQgIT0gbnVsbCkge1xuICAgICAgY29uc3QgcmVzb2x2ZWRNcyA9IERhdGUucGFyc2UoaW5jLnJlc29sdmVkX2F0KTtcbiAgICAgIC8vIFJpZ2h0LWNlbnNvcmluZzogYSByZXNvbHV0aW9uIEFGVEVSIHRoZSB3aW5kb3cgZW5kIChgdG9gKSBpcyBub3Qgb2JzZXJ2ZWRcbiAgICAgIC8vIHdpdGhpbiB0aGUgd2luZG93IOKAlCB0cmVhdCB0aGUgaW5jaWRlbnQgYXMgc3RpbGwgb3BlbiAoZ2FwIHN0YXlzIG51bGwpIHNvXG4gICAgICAvLyBNVFRSIG5ldmVyIHJlYWRzIHVuYm91bmRlZCBwYXN0IGB0b2AuIFRoZSBpbmNpZGVudCBzdGlsbCBjb3VudHMgdG93YXJkIHRoZVxuICAgICAgLy8gaW5jaWRlbnQgdG90YWwgKHVucmVzb2x2ZWQpLCBpdCBqdXN0IGNvbnRyaWJ1dGVzIG5vIHJlY292ZXJ5IHRpbWUuXG4gICAgICBpZiAoTnVtYmVyLmlzRmluaXRlKHJlc29sdmVkTXMpICYmIHJlc29sdmVkTXMgPD0gdG9Ncykge1xuICAgICAgICBjb25zdCBnID0gKHJlc29sdmVkTXMgLSBvcGVuZWRNcykgLyAxMDAwO1xuICAgICAgICBpZiAoTnVtYmVyLmlzRmluaXRlKGcpKSByZXNvbHZlZEdhcCA9IE1hdGgubWF4KGcsIDApO1xuICAgICAgfVxuICAgIH1cbiAgICBjb3JyZWxhdGVkLnB1c2goeyBlbnZpcm9ubWVudDogaW5jLmVudmlyb25tZW50LCBleGVjLCByZXNvbHZlZEdhcCB9KTtcbiAgfVxuICByZXR1cm4gY29ycmVsYXRlZDtcbn1cblxuLyoqXG4gKiBQb3N0LWRlcGxveSBmYWlsdXJlcyBwZXIgZW52IOKAlCB0aGUgRElTVElOQ1Qgc2V0IG9mIGRlcGxveSBleGVjdXRpb25zIGZsYWdnZWRcbiAqIGJ5IGEgbWFudWFsIGBmYWlsZWRgIG91dGNvbWUgT1IgYSBjb3JyZWxhdGVkIGluY2lkZW50IChkZWR1cGVkIGJ5IGV4ZWN1dGlvbixcbiAqIHNvIGEgZGVwbG95IGZsYWdnZWQgYnkgYm90aCBjb3VudHMgb25jZSkuIEEgbWFudWFsIG91dGNvbWUgd2l0aG91dCBhblxuICogZXhlY3V0aW9uIGlkIHN0aWxsIGNvdW50cyB2aWEgYSBwZXItcm93IHNlbnRpbmVsLiBFdmVyeSBmbGFnZ2VkIGVudiBpcyBhZGRlZFxuICogdG8gYGVudnNgIHNvIGl0IGFwcGVhcnMgZXZlbiB3aXRoIG5vIGluLXdpbmRvdyBkZXBsb3kgZXZlbnRzLlxuICovXG5mdW5jdGlvbiBjb3VudFBvc3REZXBsb3lGYWlsdXJlcyhcbiAgZW52czogTWFwPHN0cmluZywgRW52QWNjPixcbiAgb3V0Y29tZVJvd3M6IE91dGNvbWVSb3dbXSxcbiAgY29ycmVsYXRlZDogQ29ycmVsYXRlZEluY2lkZW50W10sXG4pOiBNYXA8c3RyaW5nLCBudW1iZXI+IHtcbiAgY29uc3QgcG9zdERlcGxveUV4ZWNzQnlFbnYgPSBuZXcgTWFwPHN0cmluZywgU2V0PHN0cmluZz4+KCk7XG4gIGxldCBzZW50aW5lbCA9IDA7XG4gIGNvbnN0IGZsYWdGb3IgPSAoZW52OiBzdHJpbmcpOiBTZXQ8c3RyaW5nPiA9PiB7XG4gICAgbGV0IHMgPSBwb3N0RGVwbG95RXhlY3NCeUVudi5nZXQoZW52KTtcbiAgICBpZiAoIXMpIHsgcyA9IG5ldyBTZXQ8c3RyaW5nPigpOyBwb3N0RGVwbG95RXhlY3NCeUVudi5zZXQoZW52LCBzKTsgfVxuICAgIHJldHVybiBzO1xuICB9O1xuICBmb3IgKGNvbnN0IG8gb2Ygb3V0Y29tZVJvd3MpIHtcbiAgICBpZiAoby5vdXRjb21lICE9PSAnZmFpbGVkJyB8fCAhby5lbnZpcm9ubWVudCkgY29udGludWU7XG4gICAgZmxhZ0ZvcihvLmVudmlyb25tZW50KS5hZGQoby5leGVjdXRpb25faWQgPz8gYG1hbnVhbC0ke3NlbnRpbmVsKyt9YCk7XG4gICAgYWNjRm9yKGVudnMsIG8uZW52aXJvbm1lbnQpO1xuICB9XG4gIGZvciAoY29uc3QgY2kgb2YgY29ycmVsYXRlZCkge1xuICAgIGZsYWdGb3IoY2kuZW52aXJvbm1lbnQpLmFkZChjaS5leGVjKTtcbiAgICBhY2NGb3IoZW52cywgY2kuZW52aXJvbm1lbnQpO1xuICB9XG4gIGNvbnN0IHBvc3REZXBsb3lCeUVudiA9IG5ldyBNYXA8c3RyaW5nLCBudW1iZXI+KCk7XG4gIGZvciAoY29uc3QgW2Vudiwgc2V0XSBvZiBwb3N0RGVwbG95RXhlY3NCeUVudikgcG9zdERlcGxveUJ5RW52LnNldChlbnYsIHNldC5zaXplKTtcbiAgcmV0dXJuIHBvc3REZXBsb3lCeUVudjtcbn1cblxuLyoqIFBlci1lbnZpcm9ubWVudCBERiAvIENGUiAvIGxlYWQtdGltZSByb3dzLCBwcm9kdWN0aW9uIGZpcnN0LiAqL1xuZnVuY3Rpb24gYnVpbGRFbnZNZXRyaWNzKFxuICBlbnZzOiBNYXA8c3RyaW5nLCBFbnZBY2M+LFxuICBwb3N0RGVwbG95QnlFbnY6IE1hcDxzdHJpbmcsIG51bWJlcj4sXG4gIGRheXM6IG51bWJlcixcbiAgcmVxdWVzdGVkRW52OiBzdHJpbmcgfCB1bmRlZmluZWQsXG4pOiBEb3JhRW52TWV0cmljc1tdIHtcbiAgcmV0dXJuIFsuLi5lbnZzLmVudHJpZXMoKV1cbiAgICAvLyBUaGUgZGVwbG95IGFuZCBpbmNpZGVudCBzY2FucyBhZG1pdCBQUk9EVUNUSU9OIGFsb25nc2lkZSBhIHJlcXVlc3RlZFxuICAgIC8vIGVudmlyb25tZW50IHNvIE1UVFIgY2FuIGNvcnJlbGF0ZSBwcm9kdWN0aW9uIGluY2lkZW50cyAoc2VlXG4gICAgLy8gYHNjYW5FbnZDbGF1c2VgKS4gVGhhdCBwcm9kdWN0aW9uIHJvdyBpcyBwbHVtYmluZyBmb3IgTVRUUiwgbm90IHNvbWV0aGluZ1xuICAgIC8vIHRoZSBjYWxsZXIgYXNrZWQgdG8gc2VlIOKAlCByZXBvcnQgb25seSB0aGUgZW52aXJvbm1lbnQgdGhhdCB3YXMgcmVxdWVzdGVkLlxuICAgIC5maWx0ZXIoKFtlbnZpcm9ubWVudF0pID0+ICFyZXF1ZXN0ZWRFbnYgfHwgZW52aXJvbm1lbnQgPT09IHJlcXVlc3RlZEVudilcbiAgICAubWFwKChbZW52aXJvbm1lbnQsIGFdKSA9PiB7XG4gICAgICBjb25zdCBwb3N0RGVwbG95RmFpbHVyZXMgPSBwb3N0RGVwbG95QnlFbnYuZ2V0KGVudmlyb25tZW50KSA/PyAwO1xuICAgICAgY29uc3QgcmF3UGVyRGF5ID0gYS5kZXBsb3ltZW50cyAvIGRheXM7XG4gICAgICBjb25zdCBudW1lcmF0b3IgPSBhLmRlcGxveVRpbWVGYWlsdXJlcyArIHBvc3REZXBsb3lGYWlsdXJlcztcbiAgICAgIC8vIENsYW1wIHRvIFswLDEwMF06IHBvc3QtZGVwbG95IGZhaWx1cmVzIGNhbiBjb3JyZWxhdGUgdG8gYSBkZXBsb3kgdGhhdFxuICAgICAgLy8gY29tcGxldGVkIGp1c3QgYmVmb3JlIHRoZSB3aW5kb3cgKGtlcHQgZm9yIGNvcnJlbGF0aW9uKSwgc28gdGhlIG51bWVyYXRvclxuICAgICAgLy8gY2FuIHRyYW5zaWVudGx5IGV4Y2VlZCBpbi13aW5kb3cgYXR0ZW1wdHMg4oCUIGEgQ0ZSID4gMTAwJSBpcyBuZXZlciB2YWxpZC5cbiAgICAgIGNvbnN0IHJhd1JhdGUgPSBhLmF0dGVtcHRzID4gMCA/IE1hdGgubWluKDEwMCwgKG51bWVyYXRvciAvIGEuYXR0ZW1wdHMpICogMTAwKSA6IDA7XG4gICAgICBjb25zdCBsdE1lZGlhbiA9IG1lZGlhbihhLmxlYWRHYXBzKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGVudmlyb25tZW50LFxuICAgICAgICBkZXBsb3ltZW50RnJlcXVlbmN5OiB7XG4gICAgICAgICAgZGVwbG95bWVudHM6IGEuZGVwbG95bWVudHMsXG4gICAgICAgICAgcGVyRGF5OiByb3VuZChyYXdQZXJEYXksIDIpLFxuICAgICAgICAgIGxldmVsOiBkb3JhTGV2ZWxGb3JGcmVxdWVuY3kocmF3UGVyRGF5LCBhLmRlcGxveW1lbnRzKSxcbiAgICAgICAgfSxcbiAgICAgICAgY2hhbmdlRmFpbHVyZVJhdGU6IHtcbiAgICAgICAgICByYXRlOiByb3VuZChyYXdSYXRlLCAxKSxcbiAgICAgICAgICBkZXBsb3lUaW1lRmFpbHVyZXM6IGEuZGVwbG95VGltZUZhaWx1cmVzLFxuICAgICAgICAgIHBvc3REZXBsb3lGYWlsdXJlcyxcbiAgICAgICAgICBhdHRlbXB0czogYS5hdHRlbXB0cyxcbiAgICAgICAgICBsZXZlbDogZG9yYUxldmVsRm9yQ2hhbmdlRmFpbHVyZShyYXdSYXRlLCBhLmF0dGVtcHRzKSxcbiAgICAgICAgfSxcbiAgICAgICAgbGVhZFRpbWU6IHtcbiAgICAgICAgICBkZXBsb3ltZW50czogYS5sZWFkR2Fwcy5sZW5ndGgsXG4gICAgICAgICAgbWVkaWFuU2Vjb25kczogbHRNZWRpYW4gIT0gbnVsbCA/IHJvdW5kKGx0TWVkaWFuLCAxKSA6IG51bGwsXG4gICAgICAgICAgLi4udGFpbHMoYS5sZWFkR2FwcyksXG4gICAgICAgICAgLy8gU2NvcmVkIG9mZiB0aGUgTUVESUFOIG9ubHkg4oCUIHRoZSB0YWlscyBhcmUgcmVwb3J0ZWQsIG5vdCBiYW5kZWQuXG4gICAgICAgICAgbGV2ZWw6IGRvcmFMZXZlbEZvckxlYWRUaW1lKGx0TWVkaWFuKSxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfSlcbiAgICAuc29ydCgoeCwgeSkgPT4ge1xuICAgICAgaWYgKHguZW52aXJvbm1lbnQgPT09IEhFQURMSU5FX0VOVikgcmV0dXJuIC0xO1xuICAgICAgaWYgKHkuZW52aXJvbm1lbnQgPT09IEhFQURMSU5FX0VOVikgcmV0dXJuIDE7XG4gICAgICByZXR1cm4geC5lbnZpcm9ubWVudC5sb2NhbGVDb21wYXJlKHkuZW52aXJvbm1lbnQpO1xuICAgIH0pO1xufVxuXG4vKipcbiAqIHA5MC9wOTUgb2YgYSBnYXAgc2FtcGxlLCByb3VuZGVkIGxpa2UgdGhlIG1lZGlhbiBiZXNpZGUgdGhlbS4gT25lIGhlbHBlciBzb1xuICogbGVhZCB0aW1lIGFuZCBNVFRSIGNhbm5vdCBkcmlmdCBpbiBob3cgdGhleSByZXBvcnQgdGhlaXIgdGFpbHMuXG4gKi9cbmZ1bmN0aW9uIHRhaWxzKGdhcHM6IG51bWJlcltdKTogeyBwOTBTZWNvbmRzOiBudW1iZXIgfCBudWxsOyBwOTVTZWNvbmRzOiBudW1iZXIgfCBudWxsIH0ge1xuICBjb25zdCBwOTAgPSBwZXJjZW50aWxlKGdhcHMsIDkwKTtcbiAgY29uc3QgcDk1ID0gcGVyY2VudGlsZShnYXBzLCA5NSk7XG4gIHJldHVybiB7XG4gICAgcDkwU2Vjb25kczogcDkwICE9IG51bGwgPyByb3VuZChwOTAsIDEpIDogbnVsbCxcbiAgICBwOTVTZWNvbmRzOiBwOTUgIT0gbnVsbCA/IHJvdW5kKHA5NSwgMSkgOiBudWxsLFxuICB9O1xufVxuXG4vKipcbiAqIE1UVFIg4oCUIFBST0RVQ1RJT04tT05MWSwgZnJvbSBCT1RIIHNvdXJjZXMuIEluY2lkZW50cyB0YWtlIHByZWNlZGVuY2U6IGFcbiAqIHByb2R1Y3Rpb24gaW5jaWRlbnQgY29ycmVsYXRlZCB0byBhIGRlcGxveSBjb250cmlidXRlcyB0aGUgcmVhbCByZWNvdmVyeVxuICogKGByZXNvbHZlZF9hdCDiiJIgb3BlbmVkX2F0YCksIGFuZCBhbnkgbWFudWFsIG91dGNvbWUgb24gdGhlIFNBTUUgZGVwbG95IGlzXG4gKiBza2lwcGVkLiBNYW51YWwgb3V0Y29tZXMgb24gb3RoZXIgZGVwbG95cyBjb3VudCBhcyByZWNvcmRlZCAoYGZhaWxlZGAg4oaSIGFuXG4gKiBpbmNpZGVudDsgYHJlc3RvcmVkYCDihpIgYSByZWNvdmVyeSBnYXAgb2YgYHJlc3RvcmVkIOKIkiBkZXBsb3llZGApLlxuICovXG5mdW5jdGlvbiBjb21wdXRlTXR0cihcbiAgY29ycmVsYXRlZDogQ29ycmVsYXRlZEluY2lkZW50W10sXG4gIG10dHJSb3dzOiBBcnJheTxNdHRyUGFpclJvdyAmIHsgb3V0Y29tZTogc3RyaW5nIH0+LFxuKTogRG9yYU1ldHJpY3NbJ21lYW5UaW1lVG9SZXN0b3JlJ10ge1xuICBsZXQgaW5jaWRlbnRzID0gMCwgcmVzdG9yZWQgPSAwO1xuICBjb25zdCBtdHRyR2FwczogbnVtYmVyW10gPSBbXTtcbiAgLy8gRXhlY3V0aW9ucyBhbHJlYWR5IGF0dHJpYnV0ZWQgdG8gYSBwcm9kdWN0aW9uIGluY2lkZW50IChwcmVjZWRlbmNlIGd1YXJkKS5cbiAgY29uc3QgaW5jaWRlbnRFeGVjcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICBmb3IgKGNvbnN0IGNpIG9mIGNvcnJlbGF0ZWQpIHtcbiAgICBpZiAoY2kuZW52aXJvbm1lbnQgIT09IEhFQURMSU5FX0VOVikgY29udGludWU7IC8vIE1UVFIgaXMgcHJvZHVjdGlvbi1vbmx5XG4gICAgaW5jaWRlbnRzKys7XG4gICAgaW5jaWRlbnRFeGVjcy5hZGQoY2kuZXhlYyk7XG4gICAgaWYgKGNpLnJlc29sdmVkR2FwICE9IG51bGwpIHsgcmVzdG9yZWQrKzsgbXR0ckdhcHMucHVzaChjaS5yZXNvbHZlZEdhcCk7IH1cbiAgfVxuICBmb3IgKGNvbnN0IG0gb2YgbXR0clJvd3MpIHtcbiAgICAvLyBJbmNpZGVudCBwcmVjZWRlbmNlOiBkb24ndCBkb3VibGUtY291bnQgYSBkZXBsb3kgYWxyZWFkeSBmbGFnZ2VkIGJ5IGFuIGluY2lkZW50LlxuICAgIGlmIChtLmV4ZWN1dGlvbl9pZCAhPSBudWxsICYmIGluY2lkZW50RXhlY3MuaGFzKG0uZXhlY3V0aW9uX2lkKSkgY29udGludWU7XG4gICAgaWYgKG0ub3V0Y29tZSA9PT0gJ2ZhaWxlZCcpIHsgaW5jaWRlbnRzKys7IGNvbnRpbnVlOyB9XG4gICAgaWYgKG0ub3V0Y29tZSA9PT0gJ3Jlc3RvcmVkJykge1xuICAgICAgcmVzdG9yZWQrKztcbiAgICAgIGlmIChtLnJlc3RvcmVkX2F0ICE9IG51bGwgJiYgbS5kZXBsb3llZF9hdCAhPSBudWxsKSB7XG4gICAgICAgIGNvbnN0IGdhcCA9IChEYXRlLnBhcnNlKG0ucmVzdG9yZWRfYXQpIC0gRGF0ZS5wYXJzZShtLmRlcGxveWVkX2F0KSkgLyAxMDAwO1xuICAgICAgICBpZiAoTnVtYmVyLmlzRmluaXRlKGdhcCkpIG10dHJHYXBzLnB1c2goTWF0aC5tYXgoZ2FwLCAwKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGNvbnN0IG10dHJNZWRpYW4gPSBtZWRpYW4obXR0ckdhcHMpO1xuICByZXR1cm4ge1xuICAgIGluY2lkZW50cyxcbiAgICByZXN0b3JlZCxcbiAgICBtZWRpYW5TZWNvbmRzOiBtdHRyTWVkaWFuICE9IG51bGwgPyByb3VuZChtdHRyTWVkaWFuLCAxKSA6IG51bGwsXG4gICAgLi4udGFpbHMobXR0ckdhcHMpLFxuICAgIGxldmVsOiBkb3JhTGV2ZWxGb3JSZXN0b3JlKG10dHJNZWRpYW4pLFxuICB9O1xufVxuXG4vKipcbiAqIFNoYXBlIHRoZSByYXcgRE9SQSBzY2FuIHJvd3MgaW50byB0aGUgcHVibGljIHtAbGluayBEb3JhTWV0cmljc306IHBlci1lbnZcbiAqIERGIC8gQ0ZSIC8gbGVhZCB0aW1lIChwb3N0LWRlcGxveSBmYWlsdXJlcyBmb2xkZWQgaW4pLCBwcm9kdWN0aW9uIE1UVFIgZnJvbVxuICogaW5jaWRlbnRzICsgbWFudWFsIG91dGNvbWVzLCBhbmQgZGVwbG95IGNvdmVyYWdlIOKAlCBhbGwgY3Jvc3Mtc291cmNlIG1lZGlhbnNcbiAqIG92ZXIgZGVsdGFzIGNsYW1wZWQg4omlMC5cbiAqL1xuZnVuY3Rpb24gc2hhcGVEb3JhKFxuICBkZXBsb3lSb3dzOiBEZXBsb3lSb3dbXSxcbiAgb3V0Y29tZVJvd3M6IE91dGNvbWVSb3dbXSxcbiAgbXR0clJvd3M6IEFycmF5PE10dHJQYWlyUm93ICYgeyBvdXRjb21lOiBzdHJpbmcgfT4sXG4gIGNvdmVyYWdlUm93OiBDb3ZlcmFnZVJvdyB8IHVuZGVmaW5lZCxcbiAgaW5jaWRlbnRSb3dzOiBJbmNpZGVudFJvd1tdLFxuICBmcm9tOiBzdHJpbmcsXG4gIHRvOiBzdHJpbmcsXG4gIGZpbHRlcnM6IHsgcGlwZWxpbmVJZD86IHN0cmluZzsgZW52aXJvbm1lbnQ/OiBzdHJpbmcgfSxcbiAgd2luZG93SG91cnM6IG51bWJlciA9IERPUkFfSU5DSURFTlRfV0lORE9XX0hPVVJTLFxuKTogRG9yYU1ldHJpY3Mge1xuICAvLyBXaW5kb3cgbGVuZ3RoIGluIGRheXMgKGZsb29yZWQgYXQgMSBzbyBhIHN1Yi1kYXkgd2luZG93IHlpZWxkcyB0aGUgY291bnQgYXNcbiAgLy8gdGhlIHJhdGUsIG5ldmVyIC8wIG9yIGFuIGV4dHJhcG9sYXRpb24pLiBHdWFyZCB1bnBhcnNlYWJsZSBkYXRlcyDihpIgMSBkYXkuXG4gIGNvbnN0IHNwYW5EYXlzID0gKERhdGUucGFyc2UodG8pIC0gRGF0ZS5wYXJzZShmcm9tKSkgLyA4NjQwMDAwMDtcbiAgY29uc3QgZGF5cyA9IE51bWJlci5pc0Zpbml0ZShzcGFuRGF5cykgPyBNYXRoLm1heChzcGFuRGF5cywgMSkgOiAxO1xuICAvLyBXaW5kb3cgZW5kIGluc3RhbnQgZm9yIE1UVFIgcmlnaHQtY2Vuc29yaW5nIChhIHJlc29sdXRpb24gYWZ0ZXIgYHRvYCBpc1xuICAvLyB1bm9ic2VydmVkKS4gK0luZmluaXR5IHdoZW4gYHRvYCBpcyB1bnBhcnNlYWJsZSDih5Igbm8gY2Vuc29yaW5nIChmYWlsLW9wZW4pLlxuICBjb25zdCB0b1BhcnNlZCA9IERhdGUucGFyc2UodG8pO1xuICBjb25zdCB0b01zID0gTnVtYmVyLmlzRmluaXRlKHRvUGFyc2VkKSA/IHRvUGFyc2VkIDogTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZO1xuXG4gIGNvbnN0IGVudnMgPSBhY2N1bXVsYXRlRGVwbG95cyhkZXBsb3lSb3dzKTtcbiAgY29uc3QgY29ycmVsYXRlZCA9IGNvcnJlbGF0ZUluY2lkZW50cyhkZXBsb3lSb3dzLCBpbmNpZGVudFJvd3MsIHdpbmRvd0hvdXJzLCB0b01zKTtcbiAgY29uc3QgcG9zdERlcGxveUJ5RW52ID0gY291bnRQb3N0RGVwbG95RmFpbHVyZXMoZW52cywgb3V0Y29tZVJvd3MsIGNvcnJlbGF0ZWQpO1xuXG4gIGNvbnN0IHJlZ2lzdGVyZWQgPSBOdW1iZXIoY292ZXJhZ2VSb3c/LnJlZ2lzdGVyZWQpIHx8IDA7XG4gIGNvbnN0IGRlcGxveWluZyA9IE51bWJlcihjb3ZlcmFnZVJvdz8uZGVwbG95aW5nKSB8fCAwO1xuXG4gIHJldHVybiB7XG4gICAgd2luZG93OiB7IGZyb20sIHRvIH0sXG4gICAgZmlsdGVyczogeyBwaXBlbGluZUlkOiBmaWx0ZXJzLnBpcGVsaW5lSWQgPz8gbnVsbCwgZW52aXJvbm1lbnQ6IGZpbHRlcnMuZW52aXJvbm1lbnQgPz8gbnVsbCB9LFxuICAgIGhlYWRsaW5lOiBIRUFETElORV9FTlYsXG4gICAgZW52aXJvbm1lbnRzOiBidWlsZEVudk1ldHJpY3MoZW52cywgcG9zdERlcGxveUJ5RW52LCBkYXlzLCBmaWx0ZXJzLmVudmlyb25tZW50KSxcbiAgICBtZWFuVGltZVRvUmVzdG9yZTogY29tcHV0ZU10dHIoY29ycmVsYXRlZCwgbXR0clJvd3MpLFxuICAgIGNvdmVyYWdlOiB7XG4gICAgICByZWdpc3RlcmVkLFxuICAgICAgZGVwbG95aW5nLFxuICAgICAgd2l0aG91dERlcGxveXM6IE1hdGgubWF4KHJlZ2lzdGVyZWQgLSBkZXBsb3lpbmcsIDApLFxuICAgIH0sXG4gIH07XG59XG5cbi8qKlxuICogRE9SQSB0cmVuZCDigJQgZGVwbG95bWVudCBmcmVxdWVuY3kgKyBkZXBsb3ktdGltZSBjaGFuZ2UtZmFpbHVyZSByYXRlXG4gKiBidWNrZXRlZCBieSBgaW50ZXJ2YWxgIChkYXkvd2Vlay9tb250aCkgZm9yIGEgc3BhcmtsaW5lLiBEZXBsb3ktYmFzaXMgbGlrZVxuICogZ2V0RG9yYU1ldHJpY3M6IGJ1Y2tldHMgdGVybWluYWwgZGVwbG95LXN0YWdlIGV4ZWN1dGlvbnMgb24gdGhlaXJcbiAqIGBjb21wbGV0ZWRfYXRgLiBTaGFyZXMgdGhlIG9yZy9yb2xsdXAgKyBwaXBlbGluZUlkL2Vudmlyb25tZW50IHNjb3BpbmcuIE1UVFIsXG4gKiBsZWFkIHRpbWUsIGFuZCBwb3N0LWRlcGxveSBDRlIgYXJlIGludGVudGlvbmFsbHkgb21pdHRlZCAodG9vIGhlYXZ5IHRvIGJ1Y2tldCkuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXREb3JhVHJlbmQoXG4gIG9yZ0lkOiBzdHJpbmcsXG4gIGludGVydmFsOiBzdHJpbmcsXG4gIGZyb206IHN0cmluZyxcbiAgdG86IHN0cmluZyxcbiAgb3JnSWRzPzogc3RyaW5nW10sXG4gIG9wdHM6IERvcmFPcHRpb25zID0ge30sXG4pOiBQcm9taXNlPERvcmFUcmVuZFBvaW50W10+IHtcbiAgYXNzZXJ0UmVwb3J0SW50ZXJ2YWwoaW50ZXJ2YWwpO1xuICBjb25zdCB7IHByZWQsIG11bHRpIH0gPSBvcmdTY29wZShvcmdJZCwgb3JnSWRzKTtcbiAgY29uc3QgeyBwaXBlbGluZUlkLCBlbnZpcm9ubWVudCwgdHogPSAnVVRDJywgd2Vla1N0YXJ0ID0gJ21vbmRheScgfSA9IG9wdHM7XG4gIGNvbnN0IHBpcGVsaW5lQ2xhdXNlID0gcGlwZWxpbmVJZCA/IHNxbGBBTkQgZS5waXBlbGluZV9pZCA9ICR7cGlwZWxpbmVJZH1gIDogc3FsYGA7XG4gIGNvbnN0IGVudkNsYXVzZSA9IGVudmlyb25tZW50ID8gc3FsYEFORCBlLmVudmlyb25tZW50ID0gJHtlbnZpcm9ubWVudH1gIDogc3FsYGA7XG4gIGNvbnN0IGV4ZWMgPSAoKSA9PiB3aXRoVGVuYW50VHgoKHR4KSA9PiB0eC5leGVjdXRlKHNxbGBcbiAgICAgIFdJVEggZGVwbG95cyBBUyAoXG4gICAgICAgIC0tIFBFUi1FWEVDVVRJT04gZGVwbG95IHVuaXQ6IG9uZSByb3cgcGVyIChlbnZpcm9ubWVudCwgZXhlY3V0aW9uKSxcbiAgICAgICAgLS0gZXZlcnkgZGVwbG95IFNUQUdFIHRvIHRoYXQgZW52IHdpdGhpbiB0aGUgZXhlY3V0aW9uIHJvbGxlZCB1cCB0byBhXG4gICAgICAgIC0tIHNpbmdsZSB0ZXJtaW5hbCBzdGF0dXMg4oCUIE5PVCBvbmUgcm93IHBlciBzdGFnZS5cbiAgICAgICAgU0VMRUNUXG4gICAgICAgICAgJHt0ZXJtaW5hbFN0YXR1c1JvbGx1cH0gQVMgc3RhdHVzLFxuICAgICAgICAgIE1BWChlLmNvbXBsZXRlZF9hdCkgQVMgY29tcGxldGVkX2F0XG4gICAgICAgIEZST00gJHtzY2hlbWEucGlwZWxpbmVFdmVudH0gZVxuICAgICAgICBKT0lOICR7c2NoZW1hLnBpcGVsaW5lfSBwIE9OIHAuaWQgPSBlLnBpcGVsaW5lX2lkXG4gICAgICAgIFdIRVJFIHAub3JnX2lkICR7cHJlZH0gQU5EIGUuZXZlbnRfdHlwZSA9ICdTVEFHRScgQU5EIGUuZW52aXJvbm1lbnQgSVMgTk9UIE5VTExcbiAgICAgICAgICAke3BpcGVsaW5lQ2xhdXNlfSAke2VudkNsYXVzZX1cbiAgICAgICAgICBBTkQgZS5jb21wbGV0ZWRfYXQgPj0gJHtmcm9tfTo6dGltZXN0YW1wdHogQU5EIGUuY29tcGxldGVkX2F0IDw9ICR7dG99Ojp0aW1lc3RhbXB0elxuICAgICAgICBHUk9VUCBCWSBlLmVudmlyb25tZW50LCBlLmV4ZWN1dGlvbl9pZFxuICAgICAgKVxuICAgICAgU0VMRUNUXG4gICAgICAgICR7cGVyaW9kQnVja2V0KGludGVydmFsLCBzcWxgY29tcGxldGVkX2F0YCwgdHosIHdlZWtTdGFydCl9Ojp0ZXh0IEFTIHBlcmlvZCxcbiAgICAgICAgQ09VTlQoKikgRklMVEVSIChXSEVSRSBzdGF0dXMgPSAnU1VDQ0VFREVEJyk6OmludCBBUyBkZXBsb3ltZW50cyxcbiAgICAgICAgQ09VTlQoKikgRklMVEVSIChXSEVSRSBzdGF0dXMgPSAnRkFJTEVEJyk6OmludCBBUyBmYWlsZWQsXG4gICAgICAgIENPVU5UKCopIEZJTFRFUiAoV0hFUkUgc3RhdHVzIElOICgnU1VDQ0VFREVEJywgJ0ZBSUxFRCcpKTo6aW50IEFTIHRvdGFsLFxuICAgICAgICAtLSBxdW90ZWQgYWxpYXMgc28gdGhlIHJhdyByb3cga2V5IGlzIGV4YWN0bHkgdGhlIERvcmFUcmVuZFBvaW50IGZpZWxkXG4gICAgICAgIENPQUxFU0NFKFJPVU5EKENPVU5UKCopIEZJTFRFUiAoV0hFUkUgc3RhdHVzID0gJ0ZBSUxFRCcpOjpudW1lcmljXG4gICAgICAgICAgLyBOVUxMSUYoQ09VTlQoKikgRklMVEVSIChXSEVSRSBzdGF0dXMgSU4gKCdTVUNDRUVERUQnLCAnRkFJTEVEJykpLCAwKSAqIDEwMCwgMSksIDApOjpmbG9hdCBBUyBcImNoYW5nZUZhaWx1cmVQY3RcIlxuICAgICAgRlJPTSBkZXBsb3lzXG4gICAgICBHUk9VUCBCWSBwZXJpb2QgT1JERVIgQlkgcGVyaW9kXG4gICAgYCkudGhlbihyID0+IGRyaXp6bGVSb3dzPERvcmFUcmVuZFBvaW50PihyLnJvd3MpKSk7XG4gIC8vIFRoZSBidWNrZXRpbmcgc2V0dGluZ3MgYmVsb25nIGluIHRoZSBrZXk6IHRoZXkgY2hhbmdlIHdoaWNoIGRheXMgbGFuZCBpbiB3aGljaFxuICAvLyBwZXJpb2QsIHNvIGEgQ2hpY2FnbyBhbnN3ZXIgbXVzdCBuZXZlciBiZSBzZXJ2ZWQgdG8gYSBVVEMgcmVxdWVzdC5cbiAgY29uc3Qga2V5ID0gYCR7b3JnSWR9OmRvcmEtdHJlbmQ6JHtpbnRlcnZhbH06JHtmcm9tfToke3RvfToke3BpcGVsaW5lSWQgPz8gJyd9OiR7ZW52aXJvbm1lbnQgPz8gJyd9OiR7YnVja2V0S2V5KHR6LCB3ZWVrU3RhcnQpfWA7XG4gIHJldHVybiBydW5SZXBvcnQoa2V5LCBtdWx0aSwgZXhlYyk7XG59XG5cbi8qKlxuICogUGVyLXBpcGVsaW5lIEJVSUxEIEhFQUxUSCDigJQgYSBzdGFuZGFyZCAoTk9UIGBhZHZhbmNlZF9yZXBvcnRpbmdgKVxuICogcGVyLXN0YWdlIGJyZWFrZG93biBmb3Igb25lIHBpcGVsaW5lIG92ZXIgYSBbZnJvbSx0b10gd2luZG93LiBBZ2dyZWdhdGVzIHRoZVxuICogZXhpc3RpbmcgYHBpcGVsaW5lX2V2ZW50c2AgU1RBR0Ugcm93czogZWFjaCBzdGFnZSBpcyByb2xsZWQgdXAgcGVyIGV4ZWN1dGlvblxuICogdG8gYSB0ZXJtaW5hbCBzdGF0dXMgKEZBSUxFRCB3aW5zLCB0aGVuIFNVQ0NFRURFRCkgKyBpdHMgbWF4IGR1cmF0aW9uLCB0aGVuXG4gKiBncm91cGVkIHBlciBzdGFnZSBpbnRvIHJ1bi9zdWNjZXNzL2ZhaWx1cmUgY291bnRzLCBhIHN1Y2Nlc3MgcmF0ZSwgYW5kXG4gKiBkdXJhdGlvbiBwZXJjZW50aWxlcyAocDUwL3A5MC9wOTkpLiBUb3RhbHMgc3VtIGFjcm9zcyBzdGFnZXMuIE9yZy1zY29wZWQgdmlhXG4gKiB0aGUgcGlwZWxpbmUgam9pbiAoYHAub3JnX2lkICR7cHJlZH1gKSArIHJvbGx1cC1hd2FyZSBsaWtlIHRoZSBzaWJsaW5nIHJlcG9ydHM7XG4gKiBhIHBpcGVsaW5lSWQgb3duZWQgYnkgYW5vdGhlciBvcmcgcmV0dXJucyBhbiBlbXB0eSBicmVha2Rvd24uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRCdWlsZEhlYWx0aChcbiAgb3JnSWQ6IHN0cmluZyxcbiAgcGlwZWxpbmVJZDogc3RyaW5nLFxuICBmcm9tOiBzdHJpbmcsXG4gIHRvOiBzdHJpbmcsXG4gIG9yZ0lkcz86IHN0cmluZ1tdLFxuKTogUHJvbWlzZTxCdWlsZEhlYWx0aD4ge1xuICBjb25zdCB7IHByZWQsIG11bHRpIH0gPSBvcmdTY29wZShvcmdJZCwgb3JnSWRzKTtcbiAgY29uc3QgZXhlYyA9ICgpID0+IHdpdGhUZW5hbnRUeChhc3luYyAodHgpID0+IHtcbiAgICBjb25zdCByb3dzID0gZHJpenpsZVJvd3M8QnVpbGRIZWFsdGhTdGFnZT4oKGF3YWl0IHR4LmV4ZWN1dGUoc3FsYFxuICAgICAgV0lUSCBzdGFnZV9ydW5zIEFTIChcbiAgICAgICAgU0VMRUNUXG4gICAgICAgICAgZS5zdGFnZV9uYW1lIEFTIHN0YWdlLFxuICAgICAgICAgICR7dGVybWluYWxTdGF0dXNSb2xsdXB9IEFTIHN0YXR1cyxcbiAgICAgICAgICBNQVgoZS5kdXJhdGlvbl9tcykgQVMgZHVyYXRpb25fbXNcbiAgICAgICAgRlJPTSAke3NjaGVtYS5waXBlbGluZUV2ZW50fSBlXG4gICAgICAgIEpPSU4gJHtzY2hlbWEucGlwZWxpbmV9IHAgT04gcC5pZCA9IGUucGlwZWxpbmVfaWRcbiAgICAgICAgV0hFUkUgcC5vcmdfaWQgJHtwcmVkfSBBTkQgZS5waXBlbGluZV9pZCA9ICR7cGlwZWxpbmVJZH1cbiAgICAgICAgICBBTkQgZS5ldmVudF90eXBlID0gJ1NUQUdFJyBBTkQgZS5zdGFnZV9uYW1lIElTIE5PVCBOVUxMXG4gICAgICAgICAgQU5EIGUuc3RhcnRlZF9hdCA+PSAke2Zyb219Ojp0aW1lc3RhbXB0eiBBTkQgZS5zdGFydGVkX2F0IDw9ICR7dG99Ojp0aW1lc3RhbXB0elxuICAgICAgICBHUk9VUCBCWSBlLnN0YWdlX25hbWUsIGUuZXhlY3V0aW9uX2lkXG4gICAgICApXG4gICAgICBTRUxFQ1RcbiAgICAgICAgc3RhZ2UsXG4gICAgICAgIENPVU5UKCopOjppbnQgQVMgcnVucyxcbiAgICAgICAgQ09VTlQoKikgRklMVEVSIChXSEVSRSBzdGF0dXMgPSAnU1VDQ0VFREVEJyk6OmludCBBUyBzdWNjZXNzZXMsXG4gICAgICAgIENPVU5UKCopIEZJTFRFUiAoV0hFUkUgc3RhdHVzID0gJ0ZBSUxFRCcpOjppbnQgQVMgZmFpbHVyZXMsXG4gICAgICAgIENPQUxFU0NFKFJPVU5EKENPVU5UKCopIEZJTFRFUiAoV0hFUkUgc3RhdHVzID0gJ1NVQ0NFRURFRCcpOjpudW1lcmljXG4gICAgICAgICAgLyBOVUxMSUYoQ09VTlQoKiksIDApICogMTAwLCAxKSwgMCk6OmZsb2F0IEFTIFwic3VjY2Vzc1JhdGVcIixcbiAgICAgICAgUEVSQ0VOVElMRV9DT05UKDAuNSkgV0lUSElOIEdST1VQIChPUkRFUiBCWSBkdXJhdGlvbl9tcyk6OmludCBBUyBcInA1ME1zXCIsXG4gICAgICAgIFBFUkNFTlRJTEVfQ09OVCgwLjkpIFdJVEhJTiBHUk9VUCAoT1JERVIgQlkgZHVyYXRpb25fbXMpOjppbnQgQVMgXCJwOTBNc1wiLFxuICAgICAgICBQRVJDRU5USUxFX0NPTlQoMC45OSkgV0lUSElOIEdST1VQIChPUkRFUiBCWSBkdXJhdGlvbl9tcyk6OmludCBBUyBcInA5OU1zXCJcbiAgICAgIEZST00gc3RhZ2VfcnVuc1xuICAgICAgV0hFUkUgc3RhdHVzIElOICgnU1VDQ0VFREVEJywgJ0ZBSUxFRCcpXG4gICAgICBHUk9VUCBCWSBzdGFnZVxuICAgICAgT1JERVIgQlkgcnVucyBERVNDLCBzdGFnZVxuICAgIGApKS5yb3dzKTtcblxuICAgIC8vIFRvdGFscyBzdW0gYWNyb3NzIHN0YWdlcyAodG90YWwgc3RhZ2UtcnVucyAvIHN0YWdlLWZhaWx1cmVzIGluIHRoZSB3aW5kb3cpLlxuICAgIGxldCBydW5zID0gMCwgZmFpbHVyZXMgPSAwO1xuICAgIGZvciAoY29uc3QgcyBvZiByb3dzKSB7IHJ1bnMgKz0gcy5ydW5zOyBmYWlsdXJlcyArPSBzLmZhaWx1cmVzOyB9XG4gICAgY29uc3QgZmFpbHVyZVJhdGUgPSBydW5zID4gMCA/IHJvdW5kKChmYWlsdXJlcyAvIHJ1bnMpICogMTAwLCAxKSA6IDA7XG4gICAgcmV0dXJuIHsgc3RhZ2VzOiByb3dzLCB0b3RhbHM6IHsgcnVucywgZmFpbHVyZXMsIGZhaWx1cmVSYXRlIH0gfTtcbiAgfSk7XG4gIHJldHVybiBydW5SZXBvcnQoYCR7b3JnSWR9OmJ1aWxkLWhlYWx0aDoke3BpcGVsaW5lSWR9OiR7ZnJvbX06JHt0b31gLCBtdWx0aSwgZXhlYyk7XG59XG5cbi8vIOKUgOKUgCBDYXRlZ29yeSAyOiBQbHVnaW4gSW52ZW50b3J5ICYgQnVpbGRzIOKUgOKUgFxuXG4vKiogUGx1Z2luIHN1bW1hcnkg4oCUIGNvdW50cyBhbmQgYnJlYWtkb3ducy5cbiAqICBJTlRFTlRJT05BTExZIFNJTkdMRS1PUkcgKG5vIHJvbGx1cCk6IHBsdWdpbiBpbnZlbnRvcnkgaXMgYW4gb3JnLW93bmVkXG4gKiAgYXNzZXQgY291bnQsIG5vdCBhbiBleGVjdXRpb24vYnVpbGQgYWN0aXZpdHkgcmVwb3J0LCBzbyBhIHBhcmVudCdzIHZpZXcgaXNcbiAqICBpdHMgb3duIHBsdWdpbnMg4oCUIHRlYW1zIG1hbmFnZSB0aGVpciBvd24gaW52ZW50b3J5LiBTaW5nbGUgYD0gJG9yZ2Agc2NvcGUuICovXG4iXX0=
|
|
@@ -197,4 +197,4 @@ export const FAILURE_CATEGORY_LABELS = {
|
|
|
197
197
|
export function isTeamActionable(category) {
|
|
198
198
|
return !['infrastructure', 'external_service'].includes(category);
|
|
199
199
|
}
|
|
200
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFpbHVyZS1jbGFzc2lmaWVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwaS9yZXBvcnRpbmcvZmFpbHVyZS1jbGFzc2lmaWVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUEwQ3RDOzs7Ozs7R0FNRztBQUNILE1BQU0sS0FBSyxHQUFXO0lBQ3BCLDZFQUE2RTtJQUM3RSwrREFBK0Q7SUFDL0Q7UUFDRSxRQUFRLEVBQUUsYUFBYTtRQUN2QixRQUFRLEVBQUU7WUFDUixjQUFjLEVBQUUsZUFBZSxFQUFFLDJCQUEyQixFQUFFLFdBQVc7WUFDekUsZUFBZSxFQUFFLG9CQUFvQixFQUFFLGlCQUFpQixFQUFFLHlCQUF5QjtTQUNwRjtLQUNGO0lBQ0Q7UUFDRSxRQUFRLEVBQUUsZ0JBQWdCO1FBQzFCLFFBQVEsRUFBRTtZQUNSLGNBQWMsRUFBRSxLQUFLLEVBQUUsdUJBQXVCLEVBQUUscUJBQXFCO1lBQ3JFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQUUsaUJBQWlCO1lBQ3JFLDRCQUE0QjtTQUM3QjtLQUNGO0lBQ0Q7UUFDRSxRQUFRLEVBQUUsaUJBQWlCO1FBQzNCLFFBQVEsRUFBRTtZQUNSLGdDQUFnQyxFQUFFLHNCQUFzQixFQUFFLHVCQUF1QjtZQUNqRixtQkFBbUIsRUFBRSx5QkFBeUIsRUFBRSx5QkFBeUI7WUFDekUsMEJBQTBCLEVBQUUsdUJBQXVCO1NBQ3BEO0tBQ0Y7SUFDRDtRQUNFLFFBQVEsRUFBRSxZQUFZO1FBQ3RCLFFBQVEsRUFBRTtZQUNSLHFDQUFxQyxFQUFFLDhCQUE4QjtZQUNyRSwyQkFBMkIsRUFBRSxtQ0FBbUM7WUFDaEUseUNBQXlDLEVBQUUscUJBQXFCO1lBQ2hFLDBCQUEwQixFQUFFLHVDQUF1QztZQUNuRSx5QkFBeUIsRUFBRSxtQ0FBbUM7WUFDOUQsVUFBVSxFQUFFLHVCQUF1QjtTQUNwQztLQUNGO0lBQ0Q7UUFDRSxRQUFRLEVB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QUN0QyxVQUFVLEVBQUUsWUFBWTtJQUN4QixjQUFjLEVBQUUsZ0JBQWdCO0lBQ2hDLFdBQVcsRUFBRSxhQUFhO0lBQzFCLGFBQWEsRUFBRSxlQUFlO0lBQzlCLE9BQU8sRUFBRSxTQUFTO0lBQ2xCLG1CQUFtQixFQUFFLGtCQUFrQjtJQUN2QyxnQkFBZ0IsRUFBRSxrQkFBa0I7SUFDcEMsS0FBSyxFQUFFLGNBQWM7Q0FDdEIsQ0FBQztBQUVGOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxVQUFVLGdCQUFnQixDQUFDLFFBQXlCO0lBQ3hELE9BQU8sQ0FBQyxDQUFDLGdCQUFnQixFQUFFLGtCQUFrQixDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3BFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuLyoqXG4gKiBXaGF0IEtJTkQgb2YgdGhpbmcgYnJva2UuXG4gKlxuICogXCIzNCBmYWlsdXJlcyB0aGlzIHdlZWtcIiBpcyBub3QgYWN0aW9uYWJsZS4gXCIxOCBvZiB0aGVtIHdlcmUgZGVwZW5kZW5jeVxuICogcmVzb2x1dGlvbiwgYW5kIHRoZXkgYXJlIGFsbCBpbiBvbmUgcGlwZWxpbmVcIiBpcy4gVGhhdCBpcyB0aGUgd2hvbGUgcmVhc29uIHRoaXNcbiAqIGV4aXN0cyDigJQgYW5kIGl0IGlzIGFsc28gd2h5IHRoZSBjbGFzc2lmaWNhdGlvbiBoYXBwZW5zIGF0IElOR0VTVCByYXRoZXIgdGhhbiBhdFxuICogcmVhZCB0aW1lOiBlcnJvciB0ZXh0IGlzIHNjcnViYmVkIG9mIEFXUyBpZGVudGlmaWVycyBhdCB0aGUgcGVyc2lzdGVuY2UgYm91bmRhcnlcbiAqIGFuZCBldmVudHVhbGx5IHN3ZXB0IGJ5IHJldGVudGlvbiwgc28gYSBjYXRlZ29yeSBkZXJpdmVkIGxhdGVyIHdvdWxkIGhhdmVcbiAqIG5vdGhpbmcgbGVmdCB0byByZWFkLlxuICpcbiAqIFRIRSBSVUxFUyBBUkUgREFUQS4gQSBjYXRlZ29yeSBpcyBhIHByb3ZpZGVyL2FjdGlvbiBtYXRjaCBwbHVzIGFuIG9yZGVyZWQgbGlzdFxuICogb2YgcGF0dGVybnMgb3ZlciB0aGUgZXJyb3IgdGV4dCwgaW4gb25lIHRhYmxlIGJlbG93LCBzbyB0aGUgdGF4b25vbXkgY2FuIGdyb3dcbiAqIGZyb20gcmVhbCBtaXNzZXMgd2l0aG91dCB0b3VjaGluZyB0aGUgY2xhc3NpZmllci4gQW55dGhpbmcgdW5tYXRjaGVkIGxhbmRzIGluXG4gKiBgb3RoZXJgIGFuZCBpcyBjb3VudGVkLCBzbyB0aGUgc2l6ZSBvZiBgb3RoZXJgIGlzIHRoZSBtZWFzdXJlIG9mIGhvdyBnb29kIHRoZVxuICogcnVsZXMgYXJlLlxuICpcbiAqIFRIRSBDQVRFR09SSUVTIE9WRVJMQVAgVEhFIFBMVUdJTi1CVUlMRCBUQVhPTk9NWSBPTiBQVVJQT1NFLiBBIGRlcGVuZGVuY3lcbiAqIGZhaWx1cmUgaXMgYSBkZXBlbmRlbmN5IGZhaWx1cmUgd2hldGhlciBpdCBoYXBwZW5lZCBidWlsZGluZyBhIHBsdWdpbiBvciBydW5uaW5nXG4gKiBvbmU7IHR3byB2b2NhYnVsYXJpZXMgZm9yIHRoZSBzYW1lIHRoaW5nIHdvdWxkIG1ha2UgdGhlIHJlcG9ydCBhbmQgdGhlIGJ1aWxkXG4gKiBxdWV1ZSBkaXNhZ3JlZSBhYm91dCB0aGUgc2FtZSBpbmNpZGVudC5cbiAqXG4gKiBXSEFUIFRIRSBBSSBFVkVSIFNFRVMgaXMgdGhlIGNhdGVnb3J5LCBuZXZlciB0aGUgcmF3IGVycm9yLiBFcnJvciB0ZXh0IGZyb20gYVxuICogY3VzdG9tZXIncyBidWlsZCBpcyB0aGUgbGFzdCB0aGluZyB0aGF0IHNob3VsZCByZWFjaCBhIG1vZGVsLlxuICovXG5cbmltcG9ydCB0eXBlIHsgRmFpbHVyZUNhdGVnb3J5IH0gZnJvbSAnLi4vLi4vZGF0YWJhc2Uvc2NoZW1hL3JlcG9ydGluZy1hbmFseXRpY3MuanMnO1xuXG4vKiogT25lIGNsYXNzaWZpY2F0aW9uIHJ1bGU6IHRoZSBjYXRlZ29yeSwgYW5kIGhvdyB0byByZWNvZ25pc2UgaXQuICovXG5pbnRlcmZhY2UgUnVsZSB7XG4gIGNhdGVnb3J5OiBGYWlsdXJlQ2F0ZWdvcnk7XG4gIC8qKlxuICAgKiBPcmRlcmVkIHBhdHRlcm5zIG92ZXIgdGhlIGxvd2VyY2FzZWQgZXJyb3IgdGV4dC4gRmlyc3QgcnVsZSB3aXRoIGFueSBtYXRjaFxuICAgKiB3aW5zLCBzbyB0aGUgdGFibGUncyBPUkRFUiBpcyBwYXJ0IG9mIGl0cyBtZWFuaW5nOiB0aGUgc3BlY2lmaWMgY2FzZXMgY29tZVxuICAgKiBiZWZvcmUgdGhlIGdlbmVyYWwgb25lcy5cbiAgICovXG4gIHBhdHRlcm5zOiBSZWdFeHBbXTtcbiAgLyoqIFdoZW4gc2V0LCB0aGUgcnVsZSBvbmx5IGFwcGxpZXMgdG8gYW4gYWN0aW9uL3N0YWdlIG5hbWUgbWF0Y2hpbmcgdGhpcy4gKi9cbiAgYWN0aW9uPzogUmVnRXhwO1xufVxuXG4vKipcbiAqIFRoZSBydWxlcywgbW9zdCBzcGVjaWZpYyBmaXJzdC5cbiAqXG4gKiBSZWFkIHRoaXMgYXMgdGhlIHRheG9ub215IGl0c2VsZi4gRWFjaCBlbnRyeSBhbnN3ZXJzIFwid2hhdCB3b3VsZCBzb21lYm9keSBET1xuICogYWJvdXQgdGhpc1wiLCB3aGljaCBpcyB3aHkgZS5nLiBgcGVybWlzc2lvbnNgIGFuZCBgYXV0aGVudGljYXRpb25gIGFyZSBzZXBhcmF0ZTpcbiAqIG9uZSBpcyBhIHBvbGljeSBjaGFuZ2UsIHRoZSBvdGhlciBpcyBhIGNyZWRlbnRpYWwuXG4gKi9cbmNvbnN0IFJVTEVTOiBSdWxlW10gPSBbXG4gIC8vIENyZWRlbnRpYWxzIGFuZCBwb2xpY3kgZmlyc3Q6IHRoZWlyIG1lc3NhZ2VzIG9mdGVuIGFsc28gY29udGFpbiB3b3JkcyB0aGF0XG4gIC8vIHdvdWxkIG90aGVyd2lzZSBtYXRjaCBgZXh0ZXJuYWxfc2VydmljZWAgb3IgYGNvbmZpZ3VyYXRpb25gLlxuICB7XG4gICAgY2F0ZWdvcnk6ICdwZXJtaXNzaW9ucycsXG4gICAgcGF0dGVybnM6IFtcbiAgICAgIC9hY2Nlc3NkZW5pZWQvLCAvYWNjZXNzIGRlbmllZC8sIC9ub3QgYXV0aG9yaXplZCB0byBwZXJmb3JtLywgL2ZvcmJpZGRlbi8sXG4gICAgICAvZXhwbGljaXQgZGVueS8sIC9hc3N1bWVyb2xlLipkZW5pZWQvLCAvaWFtLipwZXJtaXNzaW9uLywgL2luc3VmZmljaWVudCBwcml2aWxlZ2VzLyxcbiAgICBdLFxuICB9LFxuICB7XG4gICAgY2F0ZWdvcnk6ICdhdXRoZW50aWNhdGlvbicsXG4gICAgcGF0dGVybnM6IFtcbiAgICAgIC91bmF1dGhvcml6ZWQvLCAvNDAxLywgL2F1dGhlbnRpY2F0aW9uIGZhaWxlZC8sIC9pbnZhbGlkIGNyZWRlbnRpYWxzLyxcbiAgICAgIC9leHBpcmVkIHRva2VuLywgL3Rva2VuLipleHBpcmVkLywgL25vIGJhc2ljIGF1dGgvLCAvYmFkIGNyZWRlbnRpYWxzLyxcbiAgICAgIC9jb3VsZCBub3QgYmUgYXV0aGVudGljYXRlZC8sXG4gICAgXSxcbiAgfSxcbiAge1xuICAgIGNhdGVnb3J5OiAnc291cmNlX2NoZWNrb3V0JyxcbiAgICBwYXR0ZXJuczogW1xuICAgICAgL2NvdWxkIG5vdCByZXNvbHZlIGhvc3Q6IGdpdGh1Yi8sIC9yZXBvc2l0b3J5IG5vdCBmb3VuZC8sIC9mYXRhbDogY291bGQgbm90IHJlYWQvLFxuICAgICAgL2dpdCBjbG9uZS4qZmFpbGVkLywgL3JlZmVyZW5jZSBpcyBub3QgYSB0cmVlLywgL3VuYWJsZSB0byBhY2Nlc3MuKlxcLmdpdC8sXG4gICAgICAvc291cmNlLipjaGVja291dC4qZmFpbGVkLywgL2NvZGVjb21taXQuKm5vdCBmb3VuZC8sXG4gICAgXSxcbiAgfSxcbiAge1xuICAgIGNhdGVnb3J5OiAnZGVwZW5kZW5jeScsXG4gICAgcGF0dGVybnM6IFtcbiAgICAgIC9ucG0gZXJyIS4qKD86ZTQwNHxldGFyZ2V0fGVyZXNvbHZlKS8sIC9jb3VsZCBub3QgcmVzb2x2ZSBkZXBlbmRlbmN5LyxcbiAgICAgIC9ubyBtYXRjaGluZyB2ZXJzaW9uIGZvdW5kLywgL3VuYWJsZSB0byByZXNvbHZlIGRlcGVuZGVuY3kgdHJlZS8sXG4gICAgICAvY291bGQgbm90IGZpbmQgYSB2ZXJzaW9uIHRoYXQgc2F0aXNmaWVzLywgL3BpcC4qY291bGQgbm90IGZpbmQvLFxuICAgICAgL2dvOiAuKjogdW5rbm93biByZXZpc2lvbi8sIC9tYXZlbi4qY291bGQgbm90IHJlc29sdmUgZGVwZW5kZW5jaWVzLyxcbiAgICAgIC9idW5kbGVyLipjb3VsZCBub3QgZmluZC8sIC9jYXJnby4qZmFpbGVkIHRvIHNlbGVjdCBhIHZlcnNpb24vLFxuICAgICAgL3BlZXIgZGVwLywgL2xvY2tmaWxlLipvdXQgb2Ygc3luYy8sXG4gICAgXSxcbiAgfSxcbiAge1xuICAgIGNhdGVnb3J5OiAndW5pdF90ZXN0JyxcbiAgICBwYXR0ZXJuczogWy90ZXN0cz8gZmFpbGVkLywgL2Fzc2VydGlvbig/OmVycm9yKT8gZmFpbGVkLywgL1xcZCsgKD86dGVzdHM/fHNwZWNzPykgZmFpbGVkLywgL2plc3QuKmZhaWwvLCAvcHl0ZXN0LipmYWlsZWQvXSxcbiAgICBhY3Rpb246IC90ZXN0fHNwZWN8amVzdHxweXRlc3R8anVuaXQvaSxcbiAgfSxcbiAge1xuICAgIGNhdGVnb3J5OiAnaW50ZWdyYXRpb25fdGVzdCcsXG4gICAgcGF0dGVybnM6IFsvdGVzdHM/IGZhaWxlZC8sIC9hc3NlcnRpb24oPzplcnJvcik/IGZhaWxlZC8sIC9jb25uZWN0aW9uIHJlZnVzZWQvXSxcbiAgICBhY3Rpb246IC9pbnRlZ3JhdGlvbnxlMmV8c21va2V8YWNjZXB0YW5jZXxjb250cmFjdC9pLFxuICB9LFxuICB7XG4gICAgY2F0ZWdvcnk6ICdzZWN1cml0eV9zY2FuJyxcbiAgICBwYXR0ZXJuczogW1xuICAgICAgL3Z1bG5lcmFiaWxpdC8sIC9jdmUtXFxkezR9LywgL2dyeXBlLywgL3RyaXZ5LywgL3Nhc3QvLCAvZGVwZW5kZW5jeSBjaGVjayBmYWlsZWQvLFxuICAgICAgL3NlY3JldCBkZXRlY3RlZC8sIC9saWNlbnNlIHZpb2xhdGlvbi8sIC9wb2xpY3kgdmlvbGF0aW9uLipzY2FuLyxcbiAgICBdLFxuICB9LFxuICB7XG4gICAgY2F0ZWdvcnk6ICd0aW1lb3V0JyxcbiAgICBwYXR0ZXJuczogW1xuICAgICAgL3RpbWVkPyA/b3V0LywgL2V0aW1lZG91dC8sIC9kZWFkbGluZSBleGNlZWRlZC8sIC9leGNlZWRlZCB0aGUuKnRpbWVvdXQvLFxuICAgICAgL2J1aWxkLipleGNlZWRlZC4qbWludXRlcy8sIC9jb250ZXh0IGRlYWRsaW5lLyxcbiAgICBdLFxuICB9LFxuICB7XG4gICAgY2F0ZWdvcnk6ICdyZXNvdXJjZV9leGhhdXN0aW9uJyxcbiAgICBwYXR0ZXJuczogW1xuICAgICAgL291dCBvZiBtZW1vcnkvLCAvb29ta2lsbGVkLywgL2Nhbm5vdCBhbGxvY2F0ZSBtZW1vcnkvLCAvbm8gc3BhY2UgbGVmdCBvbiBkZXZpY2UvLFxuICAgICAgL2Rpc2sgcXVvdGEgZXhjZWVkZWQvLCAvZW5vc3BjLywgL3RvbyBtYW55IG9wZW4gZmlsZXMvLCAva2lsbGVkLipzaWduYWwgOS8sXG4gICAgICAvamF2YXNjcmlwdCBoZWFwIG91dCBvZiBtZW1vcnkvLFxuICAgIF0sXG4gIH0sXG4gIHtcbiAgICBjYXRlZ29yeTogJ2RlcGxveW1lbnQnLFxuICAgIHBhdHRlcm5zOiBbXG4gICAgICAvY2xvdWRmb3JtYXRpb24uKnJvbGxiYWNrLywgL3N0YWNrLipyb2xsYmFja19jb21wbGV0ZS8sIC9jcmVhdGVfZmFpbGVkLywgL3VwZGF0ZV9yb2xsYmFjay8sXG4gICAgICAvY2RrIGRlcGxveS4qZmFpbGVkLywgL2Vjcy4qZGVwbG95bWVudC4qZmFpbGVkLywgL2RlcGxveW1lbnQuKmNpcmN1aXQgYnJlYWtlci8sXG4gICAgICAvaGVhbHRoIGNoZWNrLipmYWlsZWQuKnRhcmdldCBncm91cC8sXG4gICAgXSxcbiAgfSxcbiAge1xuICAgIGNhdGVnb3J5OiAnaW5mcmFzdHJ1Y3R1cmUnLFxuICAgIHBhdHRlcm5zOiBbXG4gICAgICAvdGhyb3R0bC8sIC9yYXRlIGV4Y2VlZGVkLywgL2xpbWl0ZXhjZWVkZWQvLCAvc2VydmljZXF1b3RhZXhjZWVkZWQvLFxuICAgICAgL2NhcGFjaXR5LywgL2luc3VmZmljaWVudGluc3RhbmNlY2FwYWNpdHkvLCAvaG9zdC4qdW5yZWFjaGFibGUvLFxuICAgICAgL2ludGVybmFsIHNlcnZpY2UgZXJyb3IvLCAvNVxcZFxcZC4qYXdzLyxcbiAgICBdLFxuICB9LFxuICB7XG4gICAgY2F0ZWdvcnk6ICdleHRlcm5hbF9zZXJ2aWNlJyxcbiAgICBwYXR0ZXJuczogW1xuICAgICAgL2NvdWxkIG5vdCByZXNvbHZlIGhvc3QvLCAvZW5vdGZvdW5kLywgL2Vjb25ucmVmdXNlZC8sIC9lY29ubnJlc2V0LyxcbiAgICAgIC9nZXRhZGRyaW5mby8sIC9zb2NrZXQgaGFuZyB1cC8sIC9iYWQgZ2F0ZXdheS8sIC81MDJ8NTAzfDUwNC8sXG4gICAgICAvdXBzdHJlYW0uKnVuYXZhaWxhYmxlLywgL3JlZ2lzdHJ5Lip1bnJlYWNoYWJsZS8sXG4gICAgXSxcbiAgfSxcbiAge1xuICAgIGNhdGVnb3J5OiAnY29uZmlndXJhdGlvbicsXG4gICAgcGF0dGVybnM6IFtcbiAgICAgIC9pcyBub3QgZGVmaW5lZC8sIC9ubyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5LywgL2Vub2VudC8sIC9pbnZhbGlkLipjb25maWd1cmF0aW9uLyxcbiAgICAgIC9taXNzaW5nIHJlcXVpcmVkLiooPzp2YXJpYWJsZXxwYXJhbWV0ZXJ8aW5wdXQpLyxcbiAgICAgIC8vIEJvdGggb3JkZXJzOiBcInlhbWwgcGFyc2UgZXJyb3JcIiBhbmQgXCJlcnJvciBwYXJzaW5nIFlBTUxcIi5cbiAgICAgIC95YW1sLiooPzpwYXJzZXxwYXJzaW5nfHN5bnRheCkvLCAvKD86cGFyc2V8cGFyc2luZ3xzeW50YXgpLip5YW1sLyxcbiAgICAgIC91bmV4cGVjdGVkIHRva2VuLipqc29uLywgL2J1aWxkc3BlYy8sIC9jb21tYW5kIG5vdCBmb3VuZC8sXG4gICAgXSxcbiAgfSxcbiAge1xuICAgIGNhdGVnb3J5OiAnYnVpbGQnLFxuICAgIHBhdHRlcm5zOiBbXG4gICAgICAvY29tcGlsYXRpb24gKD86ZmFpbGVkfGVycm9yKS8sIC9lcnJvciB0c1xcZCsvLCAvc3ludGF4IGVycm9yLywgL2Nhbm5vdCBmaW5kIG1vZHVsZS8sXG4gICAgICAvdW5kZWZpbmVkIHJlZmVyZW5jZS8sIC9idWlsZCBmYWlsZWQvLCAvd2VicGFjay4qZXJyb3IvLCAvdHNjLiplcnJvci8sXG4gICAgICAvZG9ja2VyIGJ1aWxkLipmYWlsZWQvLCAvZmFpbGVkIHRvIHNvbHZlLyxcbiAgICBdLFxuICB9LFxuXTtcblxuLyoqXG4gKiBUaGUgY2F0ZWdvcnkgZm9yIGEgZmFpbGVkIGFjdGlvbi5cbiAqXG4gKiBgbnVsbGAgZm9yIGFueXRoaW5nIHRoYXQgaXMgbm90IGEgZmFpbHVyZSDigJQgdGhlIGNhbGxlciBzdG9yZXMgbm90aGluZyByYXRoZXJcbiAqIHRoYW4gbGFiZWxsaW5nIGEgc3VjY2Vzcywgc28gYSBjYXRlZ29yeSdzIHByZXNlbmNlIGFsd2F5cyBtZWFucyBcInRoaXMgYnJva2VcIi5cbiAqL1xuLyoqXG4gKiBUaGUgc3ludGgncyBzdHJ1Y3R1cmVkIHJlZnVzYWwgY29kZXMgKGBQQl9TWU5USF9GQUlMVVJFYCwgbGlmdGVkIGJ5IHRoZSBldmVudHNcbiAqIExhbWJkYSBpbnRvIGBkZXRhaWwucGJGYWlsdXJlLmNvZGVgKSBhbmQgd2hhdCBlYWNoIG1lYW5zLiBBIHBsdWdpbiB0aGUgb3JnXG4gKiBjYW4ndCByZXNvbHZlIOKAlCBub3QgaW5zdGFsbGVkLCBibG9ja2VkIGJ5IHBvbGljeSwgdW5hdmFpbGFibGUsIGRlbGV0ZWQsIGFuXG4gKiBleGFjdCBwaW4gdGhhdCBkb2Vzbid0IGV4aXN0LCBhIGNvbnRyYWN0IHRoZSBwaXBlbGluZSBkb2Vzbid0IG1lZXQg4oCUIGlzIHRoZVxuICogcGlwZWxpbmUncyBjb25maWd1cmF0aW9uIHRvIGZpeDsgYW4gaW1hZ2Ugd2hvc2Ugc2lnbmF0dXJlIGRvZXNuJ3QgdmVyaWZ5IGlzIGFcbiAqIHN1cHBseS1jaGFpbiAoc2VjdXJpdHkpIGZhaWx1cmUuIEFuIHVua25vd24gY29kZSBmYWxscyB0aHJvdWdoIHRvIHRoZSB0ZXh0IHJ1bGVzLlxuICovXG5jb25zdCBGQUlMVVJFX0NPREVfQ0FURUdPUklFUzogUmVhZG9ubHk8UmVjb3JkPHN0cmluZywgRmFpbHVyZUNhdGVnb3J5Pj4gPSB7XG4gIElNQUdFX1ZFUklGSUNBVElPTl9GQUlMRUQ6ICdzZWN1cml0eV9zY2FuJyxcbiAgUExVR0lOX05PVF9JTlNUQUxMRUQ6ICdjb25maWd1cmF0aW9uJyxcbiAgUExVR0lOX0JMT0NLRURfQllfUE9MSUNZOiAnY29uZmlndXJhdGlvbicsXG4gIFBMVUdJTl9VTkFWQUlMQUJMRTogJ2NvbmZpZ3VyYXRpb24nLFxuICBQTFVHSU5fREVMRVRFRDogJ2NvbmZpZ3VyYXRpb24nLFxuICBQTFVHSU5fVkVSU0lPTl9OT1RfRk9VTkQ6ICdjb25maWd1cmF0aW9uJyxcbiAgVEVNUExBVEVfQ09OVFJBQ1RfVklPTEFUSU9OOiAnY29uZmlndXJhdGlvbicsXG59O1xuXG5leHBvcnQgZnVuY3Rpb24gY2xhc3NpZnlGYWlsdXJlKGlucHV0OiB7XG4gIHN0YXR1czogc3RyaW5nO1xuICBlcnJvck1lc3NhZ2U/OiBzdHJpbmcgfCBudWxsO1xuICBhY3Rpb25OYW1lPzogc3RyaW5nIHwgbnVsbDtcbiAgc3RhZ2VOYW1lPzogc3RyaW5nIHwgbnVsbDtcbiAgLyoqIFRoZSBzdHJ1Y3R1cmVkIHN5bnRoIHJlZnVzYWwgY29kZSAoYGRldGFpbC5wYkZhaWx1cmUuY29kZWApLCB3aGVuIHRoZSBidWlsZCBwcmludGVkIG9uZS4gKi9cbiAgZmFpbHVyZUNvZGU/OiBzdHJpbmcgfCBudWxsO1xufSk6IEZhaWx1cmVDYXRlZ29yeSB8IG51bGwge1xuICBjb25zdCBmYWlsZWQgPSAvXihGQUlMRUR8RkFJTFVSRXxFUlJPUnxUSU1FRF9PVVQpJC9pLnRlc3QoaW5wdXQuc3RhdHVzKTtcbiAgaWYgKCFmYWlsZWQpIHJldHVybiBudWxsO1xuXG4gIC8vIEEgY29kZSB0aGUgc3ludGggcHJpbnRlZCBuYW1lcyB0aGUgZmFpbHVyZSBleGFjdGx5OyB0aGUgdGV4dCBydWxlcyBvbmx5IGd1ZXNzLlxuICBjb25zdCBjb2RlZCA9IGlucHV0LmZhaWx1cmVDb2RlID8gRkFJTFVSRV9DT0RFX0NBVEVHT1JJRVNbaW5wdXQuZmFpbHVyZUNvZGVdIDogdW5kZWZpbmVkO1xuICBpZiAoY29kZWQpIHJldHVybiBjb2RlZDtcblxuICBjb25zdCB0ZXh0ID0gKGlucHV0LmVycm9yTWVzc2FnZSA/PyAnJykudG9Mb3dlckNhc2UoKTtcbiAgY29uc3Qgd2hlcmUgPSBgJHtpbnB1dC5hY3Rpb25OYW1lID8/ICcnfSAke2lucHV0LnN0YWdlTmFtZSA/PyAnJ31gO1xuXG4gIGZvciAoY29uc3QgcnVsZSBvZiBSVUxFUykge1xuICAgIGlmIChydWxlLmFjdGlvbiAmJiAhcnVsZS5hY3Rpb24udGVzdCh3aGVyZSkpIGNvbnRpbnVlO1xuICAgIGlmIChydWxlLnBhdHRlcm5zLnNvbWUoKHApID0+IHAudGVzdCh0ZXh0KSkpIHJldHVybiBydWxlLmNhdGVnb3J5O1xuICB9XG5cbiAgLy8gTm90aGluZyBtYXRjaGVkLiBgb3RoZXJgIHJhdGhlciB0aGFuIGEgZ3Vlc3MsIGFuZCBjb3VudGVkLCBzbyB0aGUgc2hhcmUgb2ZcbiAgLy8gYG90aGVyYCBtZWFzdXJlcyBob3cgZ29vZCB0aGUgcnVsZXMgYXJlIGFuZCBuYW1lcyB0aGUgZ2FwIHRvIGNsb3NlLlxuICByZXR1cm4gJ290aGVyJztcbn1cblxuLyoqXG4gKiBBIGh1bWFuIGxhYmVsIGZvciBhIGNhdGVnb3J5LCBmb3IgdGhlIHJlcG9ydCBhbmQgdGhlIFVJLlxuICpcbiAqIFBocmFzZWQgYXMgd2hhdCBicm9rZSByYXRoZXIgdGhhbiBhcyBhbiBlbnVtOiBhIG1hbmFnZXIgcmVhZGluZ1xuICogXCJEZXBlbmRlbmN5IHJlc29sdXRpb25cIiB1bmRlcnN0YW5kcyBpdCwgYW5kIGBpbnRlZ3JhdGlvbl90ZXN0YCBkb2VzIG5vdC5cbiAqL1xuZXhwb3J0IGNvbnN0IEZBSUxVUkVfQ0FURUdPUllfTEFCRUxTOiBSZWNvcmQ8RmFpbHVyZUNhdGVnb3J5LCBzdHJpbmc+ID0ge1xuICBzb3VyY2VfY2hlY2tvdXQ6ICdTb3VyY2UgY2hlY2tvdXQnLFxuICBkZXBlbmRlbmN5OiAnRGVwZW5kZW5jeSByZXNvbHV0aW9uJyxcbiAgYnVpbGQ6ICdCdWlsZCAvIGNvbXBpbGUnLFxuICB1bml0X3Rlc3Q6ICdVbml0IHRlc3RzJyxcbiAgaW50ZWdyYXRpb25fdGVzdDogJ0ludGVncmF0aW9uIHRlc3RzJyxcbiAgc2VjdXJpdHlfc2NhbjogJ1NlY3VyaXR5IHNjYW4nLFxuICBpbmZyYXN0cnVjdHVyZTogJ0Nsb3VkIGluZnJhc3RydWN0dXJlJyxcbiAgZGVwbG95bWVudDogJ0RlcGxveW1lbnQnLFxuICBhdXRoZW50aWNhdGlvbjogJ0F1dGhlbnRpY2F0aW9uJyxcbiAgcGVybWlzc2lvbnM6ICdQZXJtaXNzaW9ucycsXG4gIGNvbmZpZ3VyYXRpb246ICdDb25maWd1cmF0aW9uJyxcbiAgdGltZW91dDogJ1RpbWVvdXQnLFxuICByZXNvdXJjZV9leGhhdXN0aW9uOiAnT3V0IG9mIHJlc291cmNlcycsXG4gIGV4dGVybmFsX3NlcnZpY2U6ICdFeHRlcm5hbCBzZXJ2aWNlJyxcbiAgb3RoZXI6ICdVbmNsYXNzaWZpZWQnLFxufTtcblxuLyoqXG4gKiBXaGV0aGVyIGEgY2F0ZWdvcnkgaXMgc29tZXRoaW5nIHRoZSBURUFNIGNhbiBhY3Qgb24sIGFzIG9wcG9zZWQgdG8gc29tZXRoaW5nXG4gKiB0aGF0IGhhcHBlbmVkIHRvIHRoZW0uXG4gKlxuICogVXNlZCBieSB0aGUgZmFpbHVyZS1hbmFseXNpcyBzZWN0aW9uIHRvIHNlcGFyYXRlIHRoZSB0d28sIGJlY2F1c2UgYSB3ZWVrIHdob3NlXG4gKiBmYWlsdXJlcyB3ZXJlIGFsbCBjbG91ZCB0aHJvdHRsaW5nIGlzIGEgZGlmZmVyZW50IGNvbnZlcnNhdGlvbiBmcm9tIG9uZSB3aG9zZVxuICogZmFpbHVyZXMgd2VyZSBhbGwgYnJva2VuIHRlc3RzIOKAlCBhbmQgcHJlc2VudGluZyB0aGVtIGluIG9uZSByYW5rZWQgbGlzdCBpbnZpdGVzXG4gKiBleGFjdGx5IHRoZSB3cm9uZyBjb25jbHVzaW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNUZWFtQWN0aW9uYWJsZShjYXRlZ29yeTogRmFpbHVyZUNhdGVnb3J5KTogYm9vbGVhbiB7XG4gIHJldHVybiAhWydpbmZyYXN0cnVjdHVyZScsICdleHRlcm5hbF9zZXJ2aWNlJ10uaW5jbHVkZXMoY2F0ZWdvcnkpO1xufVxuIl19
|
|
200
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFpbHVyZS1jbGFzc2lmaWVyLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBpL3JlcG9ydGluZy9mYWlsdXJlLWNsYXNzaWZpZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQTBDdEM7Ozs7OztHQU1HO0FBQ0gsTUFBTSxLQUFLLEdBQVc7SUFDcEIsNkVBQTZFO0lBQzdFLCtEQUErRDtJQUMvRDtRQUNFLFFBQVEsRUFBRSxhQUFhO1FBQ3ZCLFFBQVEsRUFBRTtZQUNSLGNBQWMsRUFBRSxlQUFlLEVBQUUsMkJBQTJCLEVBQUUsV0FBVztZQUN6RSxlQUFlLEVBQUUsb0JBQW9CLEVBQUUsaUJBQWlCLEVBQUUseUJBQXlCO1NBQ3BGO0tBQ0Y7SUFDRDtRQUNFLFFBQVEsRUFBRSxnQkFBZ0I7UUFDMUIsUUFBUSxFQUFFO1lBQ1IsY0FBYyxFQUFFLEtBQUssRUFBRSx1QkFBdUIsRUFBRSxxQkFBcUI7WUFDckUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLGVBQWUsRUFBRSxpQkFBaUI7WUFDckUsNEJBQTRCO1NBQzdCO0tBQ0Y7SUFDRDtRQUNFLFFBQVEsRUFBRSxpQkFBaUI7UUFDM0IsUUFBUSxFQUFFO1lBQ1IsZ0NBQWdDLEVBQUUsc0JBQXNCLEVBQUUsdUJBQXVCO1lBQ2pGLG1CQUFtQixFQUFFLHlCQUF5QixFQUFFLHlCQUF5QjtZQUN6RSwwQkFBMEIsRUFBRSx1QkFBdUI7U0FDcEQ7S0FDRjtJQUNEO1FBQ0UsUUFBUSxFQUFFLFlBQVk7UUFDdEIsUUFBUSxFQUFFO1lBQ1IscUNBQXFDLEVBQUUsOEJBQThCO1lBQ3JFLDJCQUEyQixFQUFFLG1DQUFtQztZQUNoRSx5Q0FBeUMsRUFBRSxxQkFBcUI7WUFDaEUsMEJBQTBCLEVBQUUsdUNBQXVDO1lBQ25FLHlCQUF5QixFQUFFLG1DQUFtQztZQUM5RCxVQUFVLEVBQUUsdUJBQXVCO1NBQ3BDO0tBQ0Y7SUFDRDtRQUNFLFFBQVEsRUFBRSxXQUFXO1FBQ3JCLFFB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QUFZO0lBQ3hCLGNBQWMsRUFBRSxnQkFBZ0I7SUFDaEMsV0FBVyxFQUFFLGFBQWE7SUFDMUIsYUFBYSxFQUFFLGVBQWU7SUFDOUIsT0FBTyxFQUFFLFNBQVM7SUFDbEIsbUJBQW1CLEVBQUUsa0JBQWtCO0lBQ3ZDLGdCQUFnQixFQUFFLGtCQUFrQjtJQUNwQyxLQUFLLEVBQUUsY0FBYztDQUN0QixDQUFDO0FBRUY7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsUUFBeUI7SUFDeEQsT0FBTyxDQUFDLENBQUMsZ0JBQWdCLEVBQUUsa0JBQWtCLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDcEUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG4vKipcbiAqIFdoYXQgS0lORCBvZiB0aGluZyBicm9rZS5cbiAqXG4gKiBcIjM0IGZhaWx1cmVzIHRoaXMgd2Vla1wiIGlzIG5vdCBhY3Rpb25hYmxlLiBcIjE4IG9mIHRoZW0gd2VyZSBkZXBlbmRlbmN5XG4gKiByZXNvbHV0aW9uLCBhbmQgdGhleSBhcmUgYWxsIGluIG9uZSBwaXBlbGluZVwiIGlzLiBUaGF0IGlzIHRoZSB3aG9sZSByZWFzb24gdGhpc1xuICogZXhpc3RzIOKAlCBhbmQgaXQgaXMgYWxzbyB3aHkgdGhlIGNsYXNzaWZpY2F0aW9uIGhhcHBlbnMgYXQgSU5HRVNUIHJhdGhlciB0aGFuIGF0XG4gKiByZWFkIHRpbWU6IGVycm9yIHRleHQgaXMgc2NydWJiZWQgb2YgQVdTIGlkZW50aWZpZXJzIGF0IHRoZSBwZXJzaXN0ZW5jZSBib3VuZGFyeVxuICogYW5kIGV2ZW50dWFsbHkgc3dlcHQgYnkgcmV0ZW50aW9uLCBzbyBhIGNhdGVnb3J5IGRlcml2ZWQgbGF0ZXIgd291bGQgaGF2ZVxuICogbm90aGluZyBsZWZ0IHRvIHJlYWQuXG4gKlxuICogVEhFIFJVTEVTIEFSRSBEQVRBLiBBIGNhdGVnb3J5IGlzIGEgcHJvdmlkZXIvYWN0aW9uIG1hdGNoIHBsdXMgYW4gb3JkZXJlZCBsaXN0XG4gKiBvZiBwYXR0ZXJucyBvdmVyIHRoZSBlcnJvciB0ZXh0LCBpbiBvbmUgdGFibGUgYmVsb3csIHNvIHRoZSB0YXhvbm9teSBjYW4gZ3Jvd1xuICogZnJvbSByZWFsIG1pc3NlcyB3aXRob3V0IHRvdWNoaW5nIHRoZSBjbGFzc2lmaWVyLiBBbnl0aGluZyB1bm1hdGNoZWQgbGFuZHMgaW5cbiAqIGBvdGhlcmAgYW5kIGlzIGNvdW50ZWQsIHNvIHRoZSBzaXplIG9mIGBvdGhlcmAgaXMgdGhlIG1lYXN1cmUgb2YgaG93IGdvb2QgdGhlXG4gKiBydWxlcyBhcmUuXG4gKlxuICogVEhFIENBVEVHT1JJRVMgT1ZFUkxBUCBUSEUgUExVR0lOLUJVSUxEIFRBWE9OT01ZIE9OIFBVUlBPU0UuIEEgZGVwZW5kZW5jeVxuICogZmFpbHVyZSBpcyBhIGRlcGVuZGVuY3kgZmFpbHVyZSB3aGV0aGVyIGl0IGhhcHBlbmVkIGJ1aWxkaW5nIGEgcGx1Z2luIG9yIHJ1bm5pbmdcbiAqIG9uZTsgdHdvIHZvY2FidWxhcmllcyBmb3IgdGhlIHNhbWUgdGhpbmcgd291bGQgbWFrZSB0aGUgcmVwb3J0IGFuZCB0aGUgYnVpbGRcbiAqIHF1ZXVlIGRpc2FncmVlIGFib3V0IHRoZSBzYW1lIGluY2lkZW50LlxuICpcbiAqIFdIQVQgVEhFIEFJIEVWRVIgU0VFUyBpcyB0aGUgY2F0ZWdvcnksIG5ldmVyIHRoZSByYXcgZXJyb3IuIEVycm9yIHRleHQgZnJvbSBhXG4gKiBjdXN0b21lcidzIGJ1aWxkIGlzIHRoZSBsYXN0IHRoaW5nIHRoYXQgc2hvdWxkIHJlYWNoIGEgbW9kZWwuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBGYWlsdXJlQ2F0ZWdvcnkgfSBmcm9tICcuLi8uLi9kYXRhYmFzZS9zY2hlbWEvcmVwb3J0aW5nLWFuYWx5dGljcy5qcyc7XG5cbi8qKiBPbmUgY2xhc3NpZmljYXRpb24gcnVsZTogdGhlIGNhdGVnb3J5LCBhbmQgaG93IHRvIHJlY29nbmlzZSBpdC4gKi9cbmludGVyZmFjZSBSdWxlIHtcbiAgY2F0ZWdvcnk6IEZhaWx1cmVDYXRlZ29yeTtcbiAgLyoqXG4gICAqIE9yZGVyZWQgcGF0dGVybnMgb3ZlciB0aGUgbG93ZXJjYXNlZCBlcnJvciB0ZXh0LiBGaXJzdCBydWxlIHdpdGggYW55IG1hdGNoXG4gICAqIHdpbnMsIHNvIHRoZSB0YWJsZSdzIE9SREVSIGlzIHBhcnQgb2YgaXRzIG1lYW5pbmc6IHRoZSBzcGVjaWZpYyBjYXNlcyBjb21lXG4gICAqIGJlZm9yZSB0aGUgZ2VuZXJhbCBvbmVzLlxuICAgKi9cbiAgcGF0dGVybnM6IFJlZ0V4cFtdO1xuICAvKiogV2hlbiBzZXQsIHRoZSBydWxlIG9ubHkgYXBwbGllcyB0byBhbiBhY3Rpb24vc3RhZ2UgbmFtZSBtYXRjaGluZyB0aGlzLiAqL1xuICBhY3Rpb24/OiBSZWdFeHA7XG59XG5cbi8qKlxuICogVGhlIHJ1bGVzLCBtb3N0IHNwZWNpZmljIGZpcnN0LlxuICpcbiAqIFJlYWQgdGhpcyBhcyB0aGUgdGF4b25vbXkgaXRzZWxmLiBFYWNoIGVudHJ5IGFuc3dlcnMgXCJ3aGF0IHdvdWxkIHNvbWVib2R5IERPXG4gKiBhYm91dCB0aGlzXCIsIHdoaWNoIGlzIHdoeSBlLmcuIGBwZXJtaXNzaW9uc2AgYW5kIGBhdXRoZW50aWNhdGlvbmAgYXJlIHNlcGFyYXRlOlxuICogb25lIGlzIGEgcG9saWN5IGNoYW5nZSwgdGhlIG90aGVyIGlzIGEgY3JlZGVudGlhbC5cbiAqL1xuY29uc3QgUlVMRVM6IFJ1bGVbXSA9IFtcbiAgLy8gQ3JlZGVudGlhbHMgYW5kIHBvbGljeSBmaXJzdDogdGhlaXIgbWVzc2FnZXMgb2Z0ZW4gYWxzbyBjb250YWluIHdvcmRzIHRoYXRcbiAgLy8gd291bGQgb3RoZXJ3aXNlIG1hdGNoIGBleHRlcm5hbF9zZXJ2aWNlYCBvciBgY29uZmlndXJhdGlvbmAuXG4gIHtcbiAgICBjYXRlZ29yeTogJ3Blcm1pc3Npb25zJyxcbiAgICBwYXR0ZXJuczogW1xuICAgICAgL2FjY2Vzc2RlbmllZC8sIC9hY2Nlc3MgZGVuaWVkLywgL25vdCBhdXRob3JpemVkIHRvIHBlcmZvcm0vLCAvZm9yYmlkZGVuLyxcbiAgICAgIC9leHBsaWNpdCBkZW55LywgL2Fzc3VtZXJvbGUuKmRlbmllZC8sIC9pYW0uKnBlcm1pc3Npb24vLCAvaW5zdWZmaWNpZW50IHByaXZpbGVnZXMvLFxuICAgIF0sXG4gIH0sXG4gIHtcbiAgICBjYXRlZ29yeTogJ2F1dGhlbnRpY2F0aW9uJyxcbiAgICBwYXR0ZXJuczogW1xuICAgICAgL3VuYXV0aG9yaXplZC8sIC80MDEvLCAvYXV0aGVudGljYXRpb24gZmFpbGVkLywgL2ludmFsaWQgY3JlZGVudGlhbHMvLFxuICAgICAgL2V4cGlyZWQgdG9rZW4vLCAvdG9rZW4uKmV4cGlyZWQvLCAvbm8gYmFzaWMgYXV0aC8sIC9iYWQgY3JlZGVudGlhbHMvLFxuICAgICAgL2NvdWxkIG5vdCBiZSBhdXRoZW50aWNhdGVkLyxcbiAgICBdLFxuICB9LFxuICB7XG4gICAgY2F0ZWdvcnk6ICdzb3VyY2VfY2hlY2tvdXQnLFxuICAgIHBhdHRlcm5zOiBbXG4gICAgICAvY291bGQgbm90IHJlc29sdmUgaG9zdDogZ2l0aHViLywgL3JlcG9zaXRvcnkgbm90IGZvdW5kLywgL2ZhdGFsOiBjb3VsZCBub3QgcmVhZC8sXG4gICAgICAvZ2l0IGNsb25lLipmYWlsZWQvLCAvcmVmZXJlbmNlIGlzIG5vdCBhIHRyZWUvLCAvdW5hYmxlIHRvIGFjY2Vzcy4qXFwuZ2l0LyxcbiAgICAgIC9zb3VyY2UuKmNoZWNrb3V0LipmYWlsZWQvLCAvY29kZWNvbW1pdC4qbm90IGZvdW5kLyxcbiAgICBdLFxuICB9LFxuICB7XG4gICAgY2F0ZWdvcnk6ICdkZXBlbmRlbmN5JyxcbiAgICBwYXR0ZXJuczogW1xuICAgICAgL25wbSBlcnIhLiooPzplNDA0fGV0YXJnZXR8ZXJlc29sdmUpLywgL2NvdWxkIG5vdCByZXNvbHZlIGRlcGVuZGVuY3kvLFxuICAgICAgL25vIG1hdGNoaW5nIHZlcnNpb24gZm91bmQvLCAvdW5hYmxlIHRvIHJlc29sdmUgZGVwZW5kZW5jeSB0cmVlLyxcbiAgICAgIC9jb3VsZCBub3QgZmluZCBhIHZlcnNpb24gdGhhdCBzYXRpc2ZpZXMvLCAvcGlwLipjb3VsZCBub3QgZmluZC8sXG4gICAgICAvZ286IC4qOiB1bmtub3duIHJldmlzaW9uLywgL21hdmVuLipjb3VsZCBub3QgcmVzb2x2ZSBkZXBlbmRlbmNpZXMvLFxuICAgICAgL2J1bmRsZXIuKmNvdWxkIG5vdCBmaW5kLywgL2NhcmdvLipmYWlsZWQgdG8gc2VsZWN0IGEgdmVyc2lvbi8sXG4gICAgICAvcGVlciBkZXAvLCAvbG9ja2ZpbGUuKm91dCBvZiBzeW5jLyxcbiAgICBdLFxuICB9LFxuICB7XG4gICAgY2F0ZWdvcnk6ICd1bml0X3Rlc3QnLFxuICAgIHBhdHRlcm5zOiBbL3Rlc3RzPyBmYWlsZWQvLCAvYXNzZXJ0aW9uKD86ZXJyb3IpPyBmYWlsZWQvLCAvXFxkKyAoPzp0ZXN0cz98c3BlY3M/KSBmYWlsZWQvLCAvamVzdC4qZmFpbC8sIC9weXRlc3QuKmZhaWxlZC9dLFxuICAgIGFjdGlvbjogL3Rlc3R8c3BlY3xqZXN0fHB5dGVzdHxqdW5pdC9pLFxuICB9LFxuICB7XG4gICAgY2F0ZWdvcnk6ICdpbnRlZ3JhdGlvbl90ZXN0JyxcbiAgICBwYXR0ZXJuczogWy90ZXN0cz8gZmFpbGVkLywgL2Fzc2VydGlvbig/OmVycm9yKT8gZmFpbGVkLywgL2Nvbm5lY3Rpb24gcmVmdXNlZC9dLFxuICAgIGFjdGlvbjogL2ludGVncmF0aW9ufGUyZXxzbW9rZXxhY2NlcHRhbmNlfGNvbnRyYWN0L2ksXG4gIH0sXG4gIHtcbiAgICBjYXRlZ29yeTogJ3NlY3VyaXR5X3NjYW4nLFxuICAgIHBhdHRlcm5zOiBbXG4gICAgICAvdnVsbmVyYWJpbGl0LywgL2N2ZS1cXGR7NH0vLCAvZ3J5cGUvLCAvdHJpdnkvLCAvc2FzdC8sIC9kZXBlbmRlbmN5IGNoZWNrIGZhaWxlZC8sXG4gICAgICAvc2VjcmV0IGRldGVjdGVkLywgL2xpY2Vuc2UgdmlvbGF0aW9uLywgL3BvbGljeSB2aW9sYXRpb24uKnNjYW4vLFxuICAgIF0sXG4gIH0sXG4gIHtcbiAgICBjYXRlZ29yeTogJ3RpbWVvdXQnLFxuICAgIHBhdHRlcm5zOiBbXG4gICAgICAvdGltZWQ/ID9vdXQvLCAvZXRpbWVkb3V0LywgL2RlYWRsaW5lIGV4Y2VlZGVkLywgL2V4Y2VlZGVkIHRoZS4qdGltZW91dC8sXG4gICAgICAvYnVpbGQuKmV4Y2VlZGVkLiptaW51dGVzLywgL2NvbnRleHQgZGVhZGxpbmUvLFxuICAgIF0sXG4gIH0sXG4gIHtcbiAgICBjYXRlZ29yeTogJ3Jlc291cmNlX2V4aGF1c3Rpb24nLFxuICAgIHBhdHRlcm5zOiBbXG4gICAgICAvb3V0IG9mIG1lbW9yeS8sIC9vb21raWxsZWQvLCAvY2Fubm90IGFsbG9jYXRlIG1lbW9yeS8sIC9ubyBzcGFjZSBsZWZ0IG9uIGRldmljZS8sXG4gICAgICAvZGlzayBxdW90YSBleGNlZWRlZC8sIC9lbm9zcGMvLCAvdG9vIG1hbnkgb3BlbiBmaWxlcy8sIC9raWxsZWQuKnNpZ25hbCA5LyxcbiAgICAgIC9qYXZhc2NyaXB0IGhlYXAgb3V0IG9mIG1lbW9yeS8sXG4gICAgXSxcbiAgfSxcbiAge1xuICAgIGNhdGVnb3J5OiAnZGVwbG95bWVudCcsXG4gICAgcGF0dGVybnM6IFtcbiAgICAgIC9jbG91ZGZvcm1hdGlvbi4qcm9sbGJhY2svLCAvc3RhY2suKnJvbGxiYWNrX2NvbXBsZXRlLywgL2NyZWF0ZV9mYWlsZWQvLCAvdXBkYXRlX3JvbGxiYWNrLyxcbiAgICAgIC9jZGsgZGVwbG95LipmYWlsZWQvLCAvZWNzLipkZXBsb3ltZW50LipmYWlsZWQvLCAvZGVwbG95bWVudC4qY2lyY3VpdCBicmVha2VyLyxcbiAgICAgIC9oZWFsdGggY2hlY2suKmZhaWxlZC4qdGFyZ2V0IGdyb3VwLyxcbiAgICBdLFxuICB9LFxuICB7XG4gICAgY2F0ZWdvcnk6ICdpbmZyYXN0cnVjdHVyZScsXG4gICAgcGF0dGVybnM6IFtcbiAgICAgIC90aHJvdHRsLywgL3JhdGUgZXhjZWVkZWQvLCAvbGltaXRleGNlZWRlZC8sIC9zZXJ2aWNlcXVvdGFleGNlZWRlZC8sXG4gICAgICAvY2FwYWNpdHkvLCAvaW5zdWZmaWNpZW50aW5zdGFuY2VjYXBhY2l0eS8sIC9ob3N0Lip1bnJlYWNoYWJsZS8sXG4gICAgICAvaW50ZXJuYWwgc2VydmljZSBlcnJvci8sIC81XFxkXFxkLiphd3MvLFxuICAgIF0sXG4gIH0sXG4gIHtcbiAgICBjYXRlZ29yeTogJ2V4dGVybmFsX3NlcnZpY2UnLFxuICAgIHBhdHRlcm5zOiBbXG4gICAgICAvY291bGQgbm90IHJlc29sdmUgaG9zdC8sIC9lbm90Zm91bmQvLCAvZWNvbm5yZWZ1c2VkLywgL2Vjb25ucmVzZXQvLFxuICAgICAgL2dldGFkZHJpbmZvLywgL3NvY2tldCBoYW5nIHVwLywgL2JhZCBnYXRld2F5LywgLzUwMnw1MDN8NTA0LyxcbiAgICAgIC91cHN0cmVhbS4qdW5hdmFpbGFibGUvLCAvcmVnaXN0cnkuKnVucmVhY2hhYmxlLyxcbiAgICBdLFxuICB9LFxuICB7XG4gICAgY2F0ZWdvcnk6ICdjb25maWd1cmF0aW9uJyxcbiAgICBwYXR0ZXJuczogW1xuICAgICAgL2lzIG5vdCBkZWZpbmVkLywgL25vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkvLCAvZW5vZW50LywgL2ludmFsaWQuKmNvbmZpZ3VyYXRpb24vLFxuICAgICAgL21pc3NpbmcgcmVxdWlyZWQuKig/OnZhcmlhYmxlfHBhcmFtZXRlcnxpbnB1dCkvLFxuICAgICAgLy8gQm90aCBvcmRlcnM6IFwieWFtbCBwYXJzZSBlcnJvclwiIGFuZCBcImVycm9yIHBhcnNpbmcgWUFNTFwiLlxuICAgICAgL3lhbWwuKig/OnBhcnNlfHBhcnNpbmd8c3ludGF4KS8sIC8oPzpwYXJzZXxwYXJzaW5nfHN5bnRheCkuKnlhbWwvLFxuICAgICAgL3VuZXhwZWN0ZWQgdG9rZW4uKmpzb24vLCAvYnVpbGRzcGVjLywgL2NvbW1hbmQgbm90IGZvdW5kLyxcbiAgICBdLFxuICB9LFxuICB7XG4gICAgY2F0ZWdvcnk6ICdidWlsZCcsXG4gICAgcGF0dGVybnM6IFtcbiAgICAgIC9jb21waWxhdGlvbiAoPzpmYWlsZWR8ZXJyb3IpLywgL2Vycm9yIHRzXFxkKy8sIC9zeW50YXggZXJyb3IvLCAvY2Fubm90IGZpbmQgbW9kdWxlLyxcbiAgICAgIC91bmRlZmluZWQgcmVmZXJlbmNlLywgL2J1aWxkIGZhaWxlZC8sIC93ZWJwYWNrLiplcnJvci8sIC90c2MuKmVycm9yLyxcbiAgICAgIC9kb2NrZXIgYnVpbGQuKmZhaWxlZC8sIC9mYWlsZWQgdG8gc29sdmUvLFxuICAgIF0sXG4gIH0sXG5dO1xuXG4vKipcbiAqIFRoZSBjYXRlZ29yeSBmb3IgYSBmYWlsZWQgYWN0aW9uLlxuICpcbiAqIGBudWxsYCBmb3IgYW55dGhpbmcgdGhhdCBpcyBub3QgYSBmYWlsdXJlIOKAlCB0aGUgY2FsbGVyIHN0b3JlcyBub3RoaW5nIHJhdGhlclxuICogdGhhbiBsYWJlbGxpbmcgYSBzdWNjZXNzLCBzbyBhIGNhdGVnb3J5J3MgcHJlc2VuY2UgYWx3YXlzIG1lYW5zIFwidGhpcyBicm9rZVwiLlxuICovXG4vKipcbiAqIFRoZSBzeW50aCdzIHN0cnVjdHVyZWQgcmVmdXNhbCBjb2RlcyAoYFBCX1NZTlRIX0ZBSUxVUkVgLCBsaWZ0ZWQgYnkgdGhlIGV2ZW50c1xuICogTGFtYmRhIGludG8gYGRldGFpbC5wYkZhaWx1cmUuY29kZWApIGFuZCB3aGF0IGVhY2ggbWVhbnMuIEEgcGx1Z2luIHRoZSBvcmdcbiAqIGNhbid0IHJlc29sdmUg4oCUIG5vdCBpbnN0YWxsZWQsIGJsb2NrZWQgYnkgcG9saWN5LCB1bmF2YWlsYWJsZSwgZGVsZXRlZCwgYW5cbiAqIGV4YWN0IHBpbiB0aGF0IGRvZXNuJ3QgZXhpc3QsIGEgY29udHJhY3QgdGhlIHBpcGVsaW5lIGRvZXNuJ3QgbWVldCDigJQgaXMgdGhlXG4gKiBwaXBlbGluZSdzIGNvbmZpZ3VyYXRpb24gdG8gZml4OyBhbiBpbWFnZSB3aG9zZSBzaWduYXR1cmUgZG9lc24ndCB2ZXJpZnkgaXMgYVxuICogc3VwcGx5LWNoYWluIChzZWN1cml0eSkgZmFpbHVyZS4gQW4gdW5rbm93biBjb2RlIGZhbGxzIHRocm91Z2ggdG8gdGhlIHRleHQgcnVsZXMuXG4gKi9cbmNvbnN0IEZBSUxVUkVfQ09ERV9DQVRFR09SSUVTOiBSZWFkb25seTxSZWNvcmQ8c3RyaW5nLCBGYWlsdXJlQ2F0ZWdvcnk+PiA9IHtcbiAgSU1BR0VfVkVSSUZJQ0FUSU9OX0ZBSUxFRDogJ3NlY3VyaXR5X3NjYW4nLFxuICBQTFVHSU5fTk9UX0lOU1RBTExFRDogJ2NvbmZpZ3VyYXRpb24nLFxuICBQTFVHSU5fQkxPQ0tFRF9CWV9QT0xJQ1k6ICdjb25maWd1cmF0aW9uJyxcbiAgUExVR0lOX1VOQVZBSUxBQkxFOiAnY29uZmlndXJhdGlvbicsXG4gIFBMVUdJTl9ERUxFVEVEOiAnY29uZmlndXJhdGlvbicsXG4gIFBMVUdJTl9WRVJTSU9OX05PVF9GT1VORDogJ2NvbmZpZ3VyYXRpb24nLFxuICBURU1QTEFURV9DT05UUkFDVF9WSU9MQVRJT046ICdjb25maWd1cmF0aW9uJyxcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBjbGFzc2lmeUZhaWx1cmUoaW5wdXQ6IHtcbiAgc3RhdHVzOiBzdHJpbmc7XG4gIGVycm9yTWVzc2FnZT86IHN0cmluZyB8IG51bGw7XG4gIGFjdGlvbk5hbWU/OiBzdHJpbmcgfCBudWxsO1xuICBzdGFnZU5hbWU/OiBzdHJpbmcgfCBudWxsO1xuICAvKiogVGhlIHN0cnVjdHVyZWQgc3ludGggcmVmdXNhbCBjb2RlIChgZGV0YWlsLnBiRmFpbHVyZS5jb2RlYCksIHdoZW4gdGhlIGJ1aWxkIHByaW50ZWQgb25lLiAqL1xuICBmYWlsdXJlQ29kZT86IHN0cmluZyB8IG51bGw7XG59KTogRmFpbHVyZUNhdGVnb3J5IHwgbnVsbCB7XG4gIGNvbnN0IGZhaWxlZCA9IC9eKEZBSUxFRHxGQUlMVVJFfEVSUk9SfFRJTUVEX09VVCkkL2kudGVzdChpbnB1dC5zdGF0dXMpO1xuICBpZiAoIWZhaWxlZCkgcmV0dXJuIG51bGw7XG5cbiAgLy8gQSBjb2RlIHRoZSBzeW50aCBwcmludGVkIG5hbWVzIHRoZSBmYWlsdXJlIGV4YWN0bHk7IHRoZSB0ZXh0IHJ1bGVzIG9ubHkgZ3Vlc3MuXG4gIGNvbnN0IGNvZGVkID0gaW5wdXQuZmFpbHVyZUNvZGUgPyBGQUlMVVJFX0NPREVfQ0FURUdPUklFU1tpbnB1dC5mYWlsdXJlQ29kZV0gOiB1bmRlZmluZWQ7XG4gIGlmIChjb2RlZCkgcmV0dXJuIGNvZGVkO1xuXG4gIGNvbnN0IHRleHQgPSAoaW5wdXQuZXJyb3JNZXNzYWdlID8/ICcnKS50b0xvd2VyQ2FzZSgpO1xuICBjb25zdCB3aGVyZSA9IGAke2lucHV0LmFjdGlvbk5hbWUgPz8gJyd9ICR7aW5wdXQuc3RhZ2VOYW1lID8/ICcnfWA7XG5cbiAgZm9yIChjb25zdCBydWxlIG9mIFJVTEVTKSB7XG4gICAgaWYgKHJ1bGUuYWN0aW9uICYmICFydWxlLmFjdGlvbi50ZXN0KHdoZXJlKSkgY29udGludWU7XG4gICAgaWYgKHJ1bGUucGF0dGVybnMuc29tZSgocCkgPT4gcC50ZXN0KHRleHQpKSkgcmV0dXJuIHJ1bGUuY2F0ZWdvcnk7XG4gIH1cblxuICAvLyBOb3RoaW5nIG1hdGNoZWQuIGBvdGhlcmAgcmF0aGVyIHRoYW4gYSBndWVzcywgYW5kIGNvdW50ZWQsIHNvIHRoZSBzaGFyZSBvZlxuICAvLyBgb3RoZXJgIG1lYXN1cmVzIGhvdyBnb29kIHRoZSBydWxlcyBhcmUgYW5kIG5hbWVzIHRoZSBnYXAgdG8gY2xvc2UuXG4gIHJldHVybiAnb3RoZXInO1xufVxuXG4vKipcbiAqIEEgaHVtYW4gbGFiZWwgZm9yIGEgY2F0ZWdvcnksIGZvciB0aGUgcmVwb3J0IGFuZCB0aGUgVUkuXG4gKlxuICogUGhyYXNlZCBhcyB3aGF0IGJyb2tlIHJhdGhlciB0aGFuIGFzIGFuIGVudW06IGEgbWFuYWdlciByZWFkaW5nXG4gKiBcIkRlcGVuZGVuY3kgcmVzb2x1dGlvblwiIHVuZGVyc3RhbmRzIGl0LCBhbmQgYGludGVncmF0aW9uX3Rlc3RgIGRvZXMgbm90LlxuICovXG5leHBvcnQgY29uc3QgRkFJTFVSRV9DQVRFR09SWV9MQUJFTFM6IFJlY29yZDxGYWlsdXJlQ2F0ZWdvcnksIHN0cmluZz4gPSB7XG4gIHNvdXJjZV9jaGVja291dDogJ1NvdXJjZSBjaGVja291dCcsXG4gIGRlcGVuZGVuY3k6ICdEZXBlbmRlbmN5IHJlc29sdXRpb24nLFxuICBidWlsZDogJ0J1aWxkIC8gY29tcGlsZScsXG4gIHVuaXRfdGVzdDogJ1VuaXQgdGVzdHMnLFxuICBpbnRlZ3JhdGlvbl90ZXN0OiAnSW50ZWdyYXRpb24gdGVzdHMnLFxuICBzZWN1cml0eV9zY2FuOiAnU2VjdXJpdHkgc2NhbicsXG4gIGluZnJhc3RydWN0dXJlOiAnQ2xvdWQgaW5mcmFzdHJ1Y3R1cmUnLFxuICBkZXBsb3ltZW50OiAnRGVwbG95bWVudCcsXG4gIGF1dGhlbnRpY2F0aW9uOiAnQXV0aGVudGljYXRpb24nLFxuICBwZXJtaXNzaW9uczogJ1Blcm1pc3Npb25zJyxcbiAgY29uZmlndXJhdGlvbjogJ0NvbmZpZ3VyYXRpb24nLFxuICB0aW1lb3V0OiAnVGltZW91dCcsXG4gIHJlc291cmNlX2V4aGF1c3Rpb246ICdPdXQgb2YgcmVzb3VyY2VzJyxcbiAgZXh0ZXJuYWxfc2VydmljZTogJ0V4dGVybmFsIHNlcnZpY2UnLFxuICBvdGhlcjogJ1VuY2xhc3NpZmllZCcsXG59O1xuXG4vKipcbiAqIFdoZXRoZXIgYSBjYXRlZ29yeSBpcyBzb21ldGhpbmcgdGhlIFRFQU0gY2FuIGFjdCBvbiwgYXMgb3Bwb3NlZCB0byBzb21ldGhpbmdcbiAqIHRoYXQgaGFwcGVuZWQgdG8gdGhlbS5cbiAqXG4gKiBVc2VkIGJ5IHRoZSBmYWlsdXJlLWFuYWx5c2lzIHNlY3Rpb24gdG8gc2VwYXJhdGUgdGhlIHR3bywgYmVjYXVzZSBhIHdlZWsgd2hvc2VcbiAqIGZhaWx1cmVzIHdlcmUgYWxsIGNsb3VkIHRocm90dGxpbmcgaXMgYSBkaWZmZXJlbnQgY29udmVyc2F0aW9uIGZyb20gb25lIHdob3NlXG4gKiBmYWlsdXJlcyB3ZXJlIGFsbCBicm9rZW4gdGVzdHMg4oCUIGFuZCBwcmVzZW50aW5nIHRoZW0gaW4gb25lIHJhbmtlZCBsaXN0IGludml0ZXNcbiAqIGV4YWN0bHkgdGhlIHdyb25nIGNvbmNsdXNpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1RlYW1BY3Rpb25hYmxlKGNhdGVnb3J5OiBGYWlsdXJlQ2F0ZWdvcnkpOiBib29sZWFuIHtcbiAgcmV0dXJuICFbJ2luZnJhc3RydWN0dXJlJywgJ2V4dGVybmFsX3NlcnZpY2UnXS5pbmNsdWRlcyhjYXRlZ29yeSk7XG59XG4iXX0=
|