@pipeline-builder/api-server 4.4.6 → 4.4.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/ai-call-reservation.js +1 -1
- package/lib/api/app-factory.js +2 -2
- package/lib/api/check-quota.js +1 -1
- package/lib/api/context-middleware.js +1 -1
- package/lib/api/etag-middleware.js +1 -1
- package/lib/api/get-context.js +1 -1
- package/lib/api/health-checks.js +1 -1
- package/lib/api/idempotency-middleware.js +1 -1
- package/lib/api/index.js +1 -1
- package/lib/api/meter-quota.js +1 -1
- package/lib/api/metrics.js +1 -1
- package/lib/api/middleware-factory.js +1 -1
- package/lib/api/mongo-connect.js +1 -1
- package/lib/api/quota-reservation.js +1 -1
- package/lib/api/rate-limit-by-org.js +1 -1
- package/lib/api/rate-limit-store.js +1 -1
- package/lib/api/readiness.js +1 -1
- package/lib/api/request-types.js +1 -1
- package/lib/api/require-org-id.js +1 -1
- package/lib/api/route-wrapper.js +1 -1
- package/lib/api/server.js +1 -1
- package/lib/api/tenant-context.js +1 -1
- package/lib/api/tracing.js +1 -1
- package/lib/api/write-pin.js +1 -1
- package/lib/http/index.js +1 -1
- package/lib/http/sse-connection-manager.js +1 -1
- package/lib/http/sse-relay.js +1 -1
- package/lib/http/sse-ticket-broker.js +1 -1
- package/lib/http/sse-ticket-channel.js +1 -1
- package/lib/index.js +1 -1
- package/lib/markdown.js +2 -2
- package/lib/otel-bootstrap.js +1 -1
- package/package.json +12 -12
|
@@ -397,4 +397,4 @@ export function idempotencyMiddleware(options = {}) {
|
|
|
397
397
|
});
|
|
398
398
|
};
|
|
399
399
|
}
|
|
400
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRlbXBvdGVuY3ktbWlkZGxld2FyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcGkvaWRlbXBvdGVuY3ktbWlkZGxld2FyZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDcEMsT0FBTyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLG9CQUFvQixFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNySSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFHaEUsTUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0FBRTNDOzs7OztHQUtHO0FBQ0gsU0FBUyxlQUFlLENBQUMsSUFBYTtJQUNwQyxJQUFJLElBQUksS0FBSyxTQUFTLElBQUksSUFBSSxLQUFLLElBQUk7UUFBRSxPQUFPLEdBQUcsQ0FBQztJQUNwRCxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQWMsQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDO1FBQUUsT0FBTyxHQUFHLENBQUM7SUFDckYsSUFBSSxDQUFDO1FBQ0gsT0FBTyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZGLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCwwRUFBMEU7UUFDMUUsdUVBQXVFO1FBQ3ZFLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztBQUNILENBQUM7QUFpQ0QsMEVBQTBFO0FBQzFFLE1BQU0sVUFBVSxpQkFBaUI7SUFDL0IsTUFBTSxHQUFHLEdB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WUFDdkUsd0VBQXdFO1lBQ3hFLHlFQUF5RTtZQUN6RSxzRUFBc0U7WUFDdEUsMEVBQTBFO1lBQzFFLHVFQUF1RTtZQUN2RSxJQUFJLE9BQU8sT0FBTyxDQUFDLEVBQUUsS0FBSyxVQUFVLEVBQUUsQ0FBQztnQkFDckMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztnQkFDdkMscUVBQXFFO2dCQUNyRSxxRUFBcUU7Z0JBQ3JFLHlFQUF5RTtnQkFDekUsb0VBQW9FO2dCQUNwRSxxRUFBcUU7Z0JBQ3JFLG1FQUFtRTtnQkFDbkUsbUNBQW1DO1lBQ3JDLENBQUM7WUFFRCxJQUFJLEVBQUUsQ0FBQztRQUNULENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ2YsMEVBQTBFO1lBQzFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsd0RBQXdELEVBQUUsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxZQUFZLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ2xILElBQUksRUFBRSxDQUFDO1FBQ1QsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCB7IGNyZWF0ZUhhc2ggfSBmcm9tICdjcnlwdG8nO1xuaW1wb3J0IHsgY3JlYXRlTG9nZ2VyLCBzZW5kRXJyb3IsIEVycm9yQ29kZSwgY3JlYXRlRW52UmVkaXNDbGllbnQsIGVycm9yTWVzc2FnZSwgc3RhYmxlU3RyaW5naWZ5IH0gZnJvbSAnQHBpcGVsaW5lLWJ1aWxkZXIvYXBpLWNvcmUnO1xuaW1wb3J0IHsgQ29yZUNvbnN0YW50cyB9IGZyb20gJ0BwaXBlbGluZS1idWlsZGVyL3BpcGVsaW5lLWNvcmUnO1xuaW1wb3J0IHR5cGUgeyBSZXF1ZXN0LCBSZXNwb25zZSwgTmV4dEZ1bmN0aW9uIH0gZnJvbSAnZXhwcmVzcyc7XG5cbmNvbnN0IGxvZ2dlciA9IGNyZWF0ZUxvZ2dlcignaWRlbXBvdGVuY3knKTtcblxuLyoqXG4gKiBTaG9ydCwgc3RhYmxlIGZpbmdlcnByaW50IG9mIGEgcmVxdWVzdCBib2R5LiBGb2xkcyB0aGUgcGF5bG9hZCBpbnRvIHRoZVxuICogaWRlbXBvdGVuY3kga2V5IHNvIHJlcGxheWluZyB0aGUgU0FNRSBrZXkgd2l0aCBhIERJRkZFUkVOVCBib2R5IGlzIHRyZWF0ZWQgYXNcbiAqIGEgZGlzdGluY3Qgb3BlcmF0aW9uIChmcmVzaCBleGVjdXRpb24pIHJhdGhlciB0aGFuIHJlcGxheWluZyB0aGUgb2xkIHJlc3BvbnNlLlxuICogRW1wdHkvYWJzZW50IGJvZGllcyBjb2xsYXBzZSB0byAnLScgc28gYm9keS1sZXNzIG11dGF0aW9ucyBzdGF5IHVuYWZmZWN0ZWQuXG4gKi9cbmZ1bmN0aW9uIGJvZHlGaW5nZXJwcmludChib2R5OiB1bmtub3duKTogc3RyaW5nIHtcbiAgaWYgKGJvZHkgPT09IHVuZGVmaW5lZCB8fCBib2R5ID09PSBudWxsKSByZXR1cm4gJy0nO1xuICBpZiAodHlwZW9mIGJvZHkgPT09ICdvYmplY3QnICYmIE9iamVjdC5rZXlzKGJvZHkgYXMgb2JqZWN0KS5sZW5ndGggPT09IDApIHJldHVybiAnLSc7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGNyZWF0ZUhhc2goJ3NoYTI1NicpLnVwZGF0ZShzdGFibGVTdHJpbmdpZnkoYm9keSkpLmRpZ2VzdCgnaGV4Jykuc2xpY2UoMCwgMTYpO1xuICB9IGNhdGNoIHtcbiAgICAvLyBOb24tc2VyaWFsaXphYmxlIGJvZHkgKGUuZy4gYSBzdHJlYW0vY2lyY3VsYXIgcmVmKTogc2tpcCBmaW5nZXJwcmludGluZ1xuICAgIC8vIHJhdGhlciB0aGFuIGZhaWwgdGhlIHJlcXVlc3Qg4oCUIGtleSBzdGF5cyBzY29wZWQgYnkgbWV0aG9kK3JvdXRlK29yZy5cbiAgICByZXR1cm4gJy0nO1xuICB9XG59XG5cbmludGVyZmFjZSBDYWNoZWRFbnRyeSB7XG4gIHN0YXR1c0NvZGU6IG51bWJlcjtcbiAgYm9keTogdW5rbm93bjtcbiAgZXhwaXJlc0F0OiBudW1iZXI7XG4gIC8qKiBSZXNlcnZhdGlvbiBwbGFjZWhvbGRlcjogdGhlIHJlcXVlc3QgaXMgaW4tZmxpZ2h0LCBubyByZWFsIHJlc3BvbnNlIHlldC5cbiAgICogIEEgZHVwbGljYXRlIHRoYXQgc2VlcyBhIHBlbmRpbmcgZW50cnkgaXMgcmVqZWN0ZWQgd2l0aCA0MDksIG5vdCByZXBsYXllZC4gKi9cbiAgcGVuZGluZz86IGJvb2xlYW47XG59XG5cbi8qKlxuICogUGx1Z2dhYmxlIGJhY2tlbmQgZm9yIGlkZW1wb3RlbmN5LWtleSByZXBsYXkgY2FjaGUuIFRoZSBkZWZhdWx0IGluLW1lbW9yeVxuICogaW1wbGVtZW50YXRpb24gd29ya3MgZmluZSBzaW5nbGUtcmVwbGljYTsgYSBSZWRpcy1iYWNrZWQgaW1wbGVtZW50YXRpb25cbiAqIGlzIHJlcXVpcmVkIGZvciBjb3JyZWN0IGRlZHVwbGljYXRpb24gYWNyb3NzIGhvcml6b250YWxseS1zY2FsZWQgcmVwbGljYXNcbiAqIChvdGhlcndpc2UgdHdvIHJlcGxpY2FzIGJlaGluZCBhIGxvYWQtYmFsYW5jZXIgY2FjaGUgaW5kZXBlbmRlbnRseSBhbmQgYVxuICogcmV0cnkgaGl0dGluZyBhIGRpZmZlcmVudCBwb2Qgd29uJ3QgcmVwbGF5KS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJZGVtcG90ZW5jeVN0b3JlIHtcbiAgZ2V0KGtleTogc3RyaW5nKTogUHJvbWlzZTxDYWNoZWRFbnRyeSB8IG51bGw+O1xuICBzZXQoa2V5OiBzdHJpbmcsIGVudHJ5OiBDYWNoZWRFbnRyeSwgdHRsU2Vjb25kczogbnVtYmVyKTogUHJvbWlzZTx2b2lkPjtcbiAgLyoqXG4gICAqIEF0b21pY2FsbHkgY2xhaW0gYGtleWAgSUZGIGl0IGlzIGN1cnJlbnRseSBhYnNlbnQuIFJldHVybnMgYHRydWVgIHdoZW4gVEhJU1xuICAgKiBjYWxsZXIgc2V0IHRoZSBlbnRyeSAod29uIHRoZSByYWNlKSwgYGZhbHNlYCB3aGVuIGFuIGVudHJ5IGFscmVhZHkgZXhpc3RzLlxuICAgKiBUaGlzIGlzIHdoYXQgc2VyaWFsaXplcyBjb25jdXJyZW50IGZpcnN0LXRpbWUgcmVxdWVzdHMgdGhhdCBzaGFyZSBhblxuICAgKiBJZGVtcG90ZW5jeS1LZXkg4oCUIGEgcGxhaW4gZ2V0LXRoZW4tc2V0IGxlYXZlcyBhIHdpbmRvdyB3aGVyZSB0d28gcmVxdWVzdHNcbiAgICogYm90aCBzZWUgXCJub3QgY2FjaGVkXCIgYW5kIGJvdGggZXhlY3V0ZSB0aGUgbXV0YXRpb24uXG4gICAqL1xuICByZXNlcnZlKGtleTogc3RyaW5nLCBlbnRyeTogQ2FjaGVkRW50cnksIHR0bFNlY29uZHM6IG51bWJlcik6IFByb21pc2U8Ym9vbGVhbj47XG4gIC8qKiBSZW1vdmUgYSBrZXkg4oCUIHJlbGVhc2VzIGEgcmVzZXJ2YXRpb24gYWZ0ZXIgYSBub24tY2FjaGVhYmxlIChub24tMnh4KSByZXNwb25zZS4gKi9cbiAgZGVsZXRlKGtleTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPjtcbn1cblxuLyoqIERlZmF1bHQgaW4tbWVtb3J5IHN0b3JlLiBTaW5nbGUtcmVwbGljYSBvbmx5LiBFeHBvcnRlZCBmb3IgdGVzdGluZy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVNZW1vcnlTdG9yZSgpOiBJZGVtcG90ZW5jeVN0b3JlIHtcbiAgY29uc3QgbWFwID0gbmV3IE1hcDxzdHJpbmcsIENhY2hlZEVudHJ5PigpO1xuICBjb25zdCBjbGVhbnVwVGltZXIgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICBmb3IgKGNvbnN0IFtrLCB2XSBvZiBtYXApIHtcbiAgICAgIGlmIChub3cgPiB2LmV4cGlyZXNBdCkgbWFwLmRlbGV0ZShrKTtcbiAgICB9XG4gIH0sIENvcmVDb25zdGFudHMuSURFTVBPVEVOQ1lfQ0xFQU5VUF9JTlRFUlZBTF9NUyk7XG4gIGNsZWFudXBUaW1lci51bnJlZigpO1xuXG4gIC8qKiBSZXR1cm4gdGhlIGxpdmUgKG5vbi1leHBpcmVkKSBlbnRyeSwgZXZpY3RpbmcgaXQgbGF6aWx5IGlmIGV4cGlyZWQuICovXG4gIGNvbnN0IGxpdmUgPSAoa2V5OiBzdHJpbmcpOiBDYWNoZWRFbnRyeSB8IG51bGwgPT4ge1xuICAgIGNvbnN0IGVudHJ5ID0gbWFwLmdldChrZXkpO1xuICAgIGlmICghZW50cnkpIHJldHVybiBudWxsO1xuICAgIGlmIChEYXRlLm5vdygpID4gZW50cnkuZXhwaXJlc0F0KSB7XG4gICAgICBtYXAuZGVsZXRlKGtleSk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIGVudHJ5O1xuICB9O1xuICAvKipcbiAgICogQXQgY2FwYWNpdHksIGV2aWN0IHRoZSBPTERFU1QgZW50cnkgKE1hcCBwcmVzZXJ2ZXMgaW5zZXJ0aW9uIG9yZGVyKSByYXRoZXJcbiAgICogdGhhbiBzaWxlbnRseSBkcm9wcGluZyB0aGUgTkVXIGtleSDigJQgb3RoZXJ3aXNlLCBvbmNlIGZ1bGwsIHRoZSBzdG9yZSBzdG9wc1xuICAgKiBkZWR1cGxpY2F0aW5nIGZyZXNoIHJlcXVlc3RzIHVudGlsIHRoZSBUVEwgc3dlZXAgcnVucy4gU3RheXMgYm91bmRlZDsgZmF2b3JzXG4gICAqIHJlY2VudCBrZXlzIChtb3N0IGxpa2VseSB0byBiZSByZXRyaWVkKS5cbiAgICovXG4gIGNvbnN0IGV2aWN0SWZGdWxsID0gKGtleTogc3RyaW5nKTogdm9pZCA9PiB7XG4gICAgaWYgKCFtYXAuaGFzKGtleSkgJiYgbWFwLnNpemUgPj0gQ29yZUNvbnN0YW50cy5JREVNUE9URU5DWV9NQVhfU1RPUkVfU0laRSkge1xuICAgICAgY29uc3Qgb2xkZXN0ID0gbWFwLmtleXMoKS5uZXh0KCkudmFsdWU7XG4gICAgICBpZiAob2xkZXN0ICE9PSB1bmRlZmluZWQpIG1hcC5kZWxldGUob2xkZXN0KTtcbiAgICB9XG4gIH07XG4gIHJldHVybiB7XG4gICAgYXN5bmMgZ2V0KGtleSkge1xuICAgICAgcmV0dXJuIGxpdmUoa2V5KTtcbiAgICB9LFxuICAgIGFzeW5jIHNldChrZXksIGVudHJ5KSB7XG4gICAgICBldmljdElmRnVsbChrZXkpO1xuICAgICAgbWFwLnNldChrZXksIGVudHJ5KTtcbiAgICB9LFxuICAgIGFzeW5jIHJlc2VydmUoa2V5LCBlbnRyeSkge1xuICAgICAgLy8gQXRvbWljIGluIGEgc2luZ2xlLXRocmVhZGVkIHJ1bnRpbWU6IG5vIGF3YWl0IGJldHdlZW4gdGhlIGxpdmVuZXNzIGNoZWNrXG4gICAgICAvLyBhbmQgdGhlIHNldCwgc28gdHdvIGNvbmN1cnJlbnQgY2FsbGVycyBjYW4ndCBib3RoIG9ic2VydmUgXCJhYnNlbnRcIi5cbiAgICAgIGlmIChsaXZlKGtleSkpIHJldHVybiBmYWxzZTtcbiAgICAgIGV2aWN0SWZGdWxsKGtleSk7XG4gICAgICBtYXAuc2V0KGtleSwgZW50cnkpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSxcbiAgICBhc3luYyBkZWxldGUoa2V5KSB7XG4gICAgICBtYXAuZGVsZXRlKGtleSk7XG4gICAgfSxcbiAgfTtcbn1cblxuLyoqXG4gKiBNaW5pbWFsIFJlZGlzIHN1cmZhY2UgdGhlIGlkZW1wb3RlbmN5IHN0b3JlIG5lZWRzIChhbiBpb3JlZGlzIHN1YnNldCkuXG4gKiBgc2V0YCBzdXBwb3J0cyB0aGUgdmFyaWFkaWMgb3B0aW9uIHRhaWw6IGBTRVQga2V5IHZhbCBFWCA8dHRsPiBbTlhdYCwgd2hpY2hcbiAqIHJldHVybnMgYCdPSydgIG9uIHN1Y2Nlc3MgYW5kIGBudWxsYCB3aGVuIGFuIGBOWGAgc2V0IHdhcyByZWZ1c2VkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlZGlzSWRlbXBvdGVuY3lDbGllbnQge1xuICBnZXQoa2V5OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZyB8IG51bGw+O1xuICBzZXQoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcsIC4uLmFyZ3M6IChzdHJpbmcgfCBudW1iZXIpW10pOiBQcm9taXNlPHN0cmluZyB8IG51bGw+O1xuICBkZWwoa2V5OiBzdHJpbmcpOiBQcm9taXNlPG51bWJlcj47XG59XG5cbmNvbnN0IFJFRElTX0tFWV9QUkVGSVggPSAnaWRlbTonO1xuXG4vKipcbiAqIFJlZGlzLWJhY2tlZCB7QGxpbmsgSWRlbXBvdGVuY3lTdG9yZX0gZm9yIGNvcnJlY3QgZGVkdXBsaWNhdGlvbiBhY3Jvc3NcbiAqIGhvcml6b250YWxseS1zY2FsZWQgcmVwbGljYXMuIGByZXNlcnZlYCBtYXBzIHRvIGFuIGF0b21pYyBgU0VUIOKApiBOWGAgc28gdHdvXG4gKiBwb2RzIGJlaGluZCBhIGxvYWQtYmFsYW5jZXIgY2FuJ3QgYm90aCB3aW4gYSBmaXJzdC10aW1lIHJlcXVlc3Qgc2hhcmluZyBhblxuICogSWRlbXBvdGVuY3ktS2V5OyBhIHJldHJ5IGxhbmRpbmcgb24gQU5ZIHBvZCBzZWVzIHRoZSBzYW1lIGNvbW1pdHRlZCByZXNwb25zZS5cbiAqIFJlZGlzIFRUTCBvd25zIGV4cGlyeSAodGhlIGBDYWNoZWRFbnRyeS5leHBpcmVzQXRgIGZpZWxkIGlzIGNhcnJpZWQgb25seSBmb3JcbiAqIEFQSS1zaGFwZSBwYXJpdHkgd2l0aCB0aGUgbWVtb3J5IHN0b3JlKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVJlZGlzSWRlbXBvdGVuY3lTdG9yZShyZWRpczogUmVkaXNJZGVtcG90ZW5jeUNsaWVudCk6IElkZW1wb3RlbmN5U3RvcmUge1xuICBjb25zdCBrID0gKGtleTogc3RyaW5nKTogc3RyaW5nID0+IGAke1JFRElTX0tFWV9QUkVGSVh9JHtrZXl9YDtcbiAgcmV0dXJuIHtcbiAgICBhc3luYyBnZXQoa2V5KSB7XG4gICAgICBjb25zdCByYXcgPSBhd2FpdCByZWRpcy5nZXQoayhrZXkpKTtcbiAgICAgIGlmICghcmF3KSByZXR1cm4gbnVsbDtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBKU09OLnBhcnNlKHJhdykgYXMgQ2FjaGVkRW50cnk7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgLy8gQ29ycnVwdCBlbnRyeSDihpIgdHJlYXQgYXMgYWJzZW50IHNvIHRoZSByZXF1ZXN0IHByb2NlZWRzIGZyZXNoLlxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICB9LFxuICAgIGFzeW5jIHNldChrZXksIGVudHJ5LCB0dGxTZWNvbmRzKSB7XG4gICAgICBhd2FpdCByZWRpcy5zZXQoayhrZXkpLCBKU09OLnN0cmluZ2lmeShlbnRyeSksICdFWCcsIE1hdGgubWF4KDEsIHR0bFNlY29uZHMpKTtcbiAgICB9LFxuICAgIGFzeW5jIHJlc2VydmUoa2V5LCBlbnRyeSwgdHRsU2Vjb25kcykge1xuICAgICAgLy8gQXRvbWljIGNsYWltOiBTRVQga2V5IHZhbCBFWCB0dGwgTlgg4oaSICdPSycgb25seSBpZiB0aGUga2V5IHdhcyBhYnNlbnQuXG4gICAgICBjb25zdCByZXMgPSBhd2FpdCByZWRpcy5zZXQoayhrZXkpLCBKU09OLnN0cmluZ2lmeShlbnRyeSksICdFWCcsIE1hdGgubWF4KDEsIHR0bFNlY29uZHMpLCAnTlgnKTtcbiAgICAgIHJldHVybiByZXMgPT09ICdPSyc7XG4gICAgfSxcbiAgICBhc3luYyBkZWxldGUoa2V5KSB7XG4gICAgICBhd2FpdCByZWRpcy5kZWwoayhrZXkpKTtcbiAgICB9LFxuICB9O1xufVxuXG4vKipcbiAqIEJ1aWxkIGEgUmVkaXMtYmFja2VkIGlkZW1wb3RlbmN5IHN0b3JlIGZyb20gdGhlIHNoYXJlZCBlbnYgUmVkaXMgKHRoZSBzYW1lXG4gKiBgUkVESVNfVVJMYCAvIGBSRURJU19TRU5USU5FTFNgIHdpcmluZyB0aGUgcmF0ZS1saW1pdGVyIGFuZCBhdWRpdC1zcG9vbCB1c2UpLlxuICogUmV0dXJucyBgbnVsbGAgd2hlbiBSZWRpcyBpc24ndCBjb25maWd1cmVkL2F2YWlsYWJsZSBzbyB0aGUgY2FsbGVyIGtlZXBzIHRoZVxuICogaW4tbWVtb3J5IGRlZmF1bHQgKHNpbmdsZS1yZXBsaWNhIGNvcnJlY3RuZXNzKS4gTmV2ZXIgdGhyb3dzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRW52UmVkaXNJZGVtcG90ZW5jeVN0b3JlKCk6IElkZW1wb3RlbmN5U3RvcmUgfCBudWxsIHtcbiAgY29uc3QgY2xpZW50ID0gY3JlYXRlRW52UmVkaXNDbGllbnQ8UmVkaXNJZGVtcG90ZW5jeUNsaWVudD4oJ2lkZW1wb3RlbmN5Jyk7XG4gIGlmICghY2xpZW50KSByZXR1cm4gbnVsbDtcbiAgbG9nZ2VyLmluZm8oJ1JlZGlzIGlkZW1wb3RlbmN5IHN0b3JlIGluaXRpYWxpemVkJyk7XG4gIHJldHVybiBjcmVhdGVSZWRpc0lkZW1wb3RlbmN5U3RvcmUoY2xpZW50KTtcbn1cblxuY29uc3QgbWVtb3J5U3RvcmUgPSBjcmVhdGVNZW1vcnlTdG9yZSgpO1xuXG4vKipcbiAqIFByb2Nlc3Mtd2lkZSBkZWZhdWx0IHN0b3JlIHVzZWQgYnkgYGlkZW1wb3RlbmN5TWlkZGxld2FyZSgpYCB3aGVuIG5vIGV4cGxpY2l0XG4gKiBgc3RvcmVgIGlzIHBhc3NlZC4gRGVmYXVsdHMgdG8gdGhlIGluLW1lbW9yeSBzdG9yZTsgYGNyZWF0ZUFwcGAgcHJvbW90ZXMgaXQgdG9cbiAqIHRoZSBzaGFyZWQgZW52LVJlZGlzIHN0b3JlIChtdWx0aS1yZXBsaWNhIGRlZHVwKSBhdCBzdGFydHVwIHZpYVxuICoge0BsaW5rIHNldElkZW1wb3RlbmN5U3RvcmV9LiBUaGUgcm91dGUgZmFjdG9yaWVzIGtlZXAgY2FsbGluZ1xuICogYGlkZW1wb3RlbmN5TWlkZGxld2FyZSgpYCB3aXRoIG5vIGFyZ3MgYW5kIHRyYW5zcGFyZW50bHkgcGljayB0aGlzIHVwLlxuICovXG5sZXQgZGVmYXVsdFN0b3JlOiBJZGVtcG90ZW5jeVN0b3JlID0gbWVtb3J5U3RvcmU7XG5cbi8qKiBJbmplY3QgdGhlIHByb2Nlc3Mtd2lkZSBpZGVtcG90ZW5jeSBzdG9yZSAoZS5nLiBhIFJlZGlzLWJhY2tlZCBvbmUpLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldElkZW1wb3RlbmN5U3RvcmUoc3RvcmU6IElkZW1wb3RlbmN5U3RvcmUpOiB2b2lkIHtcbiAgZGVmYXVsdFN0b3JlID0gc3RvcmU7XG59XG5cbi8qKiBUaGUgY3VycmVudCBwcm9jZXNzLXdpZGUgZGVmYXVsdCBzdG9yZSAoaW4tbWVtb3J5IHVubGVzcyBvdmVycmlkZGVuKS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRJZGVtcG90ZW5jeVN0b3JlKCk6IElkZW1wb3RlbmN5U3RvcmUge1xuICByZXR1cm4gZGVmYXVsdFN0b3JlO1xufVxuXG4vKipcbiAqIE1hcmtzIGEgcmVxdWVzdCBpZGVtcG90ZW5jeSBoYXMgYWxyZWFkeSBoYW5kbGVkLiBSb3V0ZSBjaGFpbnMgYXJlIHN0YWNrZWQg4oCUXG4gKiBzZXZlcmFsIGBhcHAudXNlKHByZWZpeCwgLi4uY3JlYXRlQXV0aGVudGljYXRlZFdpdGhPcmdSb3V0ZSgpLCByb3V0ZXIpYCBtb3VudHNcbiAqIHNoYXJlIGEgcHJlZml4LCBhbmQgYSByZXF1ZXN0IHRoYXQgZmFsbHMgdGhyb3VnaCB0aGUgZmlyc3Qgcm91dGVyIHJ1bnMgdGhlXG4gKiBuZXh0IGNoYWluJ3MgaWRlbXBvdGVuY3kgbWlkZGxld2FyZSBhZ2Fpbi4gVGhhdCBzZWNvbmQgcGFzcyBmb3VuZCBpdHMgT1dOXG4gKiBwZW5kaW5nIHJlc2VydmF0aW9uIGFuZCBhbnN3ZXJlZCA0MDkuXG4gKi9cbmNvbnN0IElERU1QT1RFTkNZX0hBTkRMRUQgPSBTeW1ib2woJ3BpcGVsaW5lLWJ1aWxkZXIuaWRlbXBvdGVuY3kuaGFuZGxlZCcpO1xuXG4vKipcbiAqIGByZXMubG9jYWxzYCBrZXkgc2V0IHRvIGB0cnVlYCB3aGVuIHRoZSByZXNwb25zZSB3YXMgUkVQTEFZRUQgZnJvbSB0aGVcbiAqIGlkZW1wb3RlbmN5IGNhY2hlIGluc3RlYWQgb2YgcnVubmluZyB0aGUgaGFuZGxlci4gQSByZXBsYXkgZGlkIG5vIHdvcmssIHNvXG4gKiBhbnl0aGluZyB0aGF0IGJpbGxzIHBlciBzdWNjZXNzZnVsIHJlc3BvbnNlIChgbWV0ZXJRdW90YU9uU3VjY2Vzc2ApIG11c3Qgc2tpcFxuICogaXQg4oCUIHRoZSBvcmlnaW5hbCByZXF1ZXN0IGFscmVhZHkgcGFpZC4gVXNlIHtAbGluayBpc0lkZW1wb3RlbnRSZXBsYXl9LlxuICovXG5leHBvcnQgY29uc3QgSURFTVBPVEVOVF9SRVBMQVlfTE9DQUwgPSAnaWRlbXBvdGVudFJlcGxheSc7XG5cbi8qKiBUcnVlIHdoZW4gYHJlc2AgaXMgYSByZXBsYXkgb2YgYSBjYWNoZWQgaWRlbXBvdGVudCByZXNwb25zZS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0lkZW1wb3RlbnRSZXBsYXkocmVzOiBSZXNwb25zZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gcmVzLmxvY2Fscz8uW0lERU1QT1RFTlRfUkVQTEFZX0xPQ0FMXSA9PT0gdHJ1ZTtcbn1cblxuLyoqXG4gKiBUaGUgc3RvcmUga2V5IGEgcmVxdWVzdCdzIGBJZGVtcG90ZW5jeS1LZXlgIGlzIHJlY29yZGVkIHVuZGVyLCBvciBgdW5kZWZpbmVkYFxuICogd2hlbiB0aGUgcmVxdWVzdCBoYXMgbm8gb3JnIHRvIG5hbWVzcGFjZSBpdCBieSAodW5hdXRoZW50aWNhdGVkIOKAlCBza2lwcGVkKS5cbiAqXG4gKiBOYW1lc3BhY2UgYnkgb3JnSWQgdG8gcHJldmVudCBjcm9zcy1vcmcgY2FjaGUgY29sbGlzaW9ucy4gUHJlZmVyIHRoZSBWRVJJRklFRFxuICogYXV0aCBvcmcgKGByZXEudXNlcmAsIHBvcHVsYXRlZCBieSByZXF1aXJlQXV0aCBhZnRlciBzaWduYXR1cmUgdmVyaWZpY2F0aW9uKVxuICogb3ZlciBgcmVxLmNvbnRleHQuaWRlbnRpdHlgLCB3aGljaCBzb21lIHNlcnZpY2VzIHBvcHVsYXRlIHByZS1hdXRoIGZyb20gYW5cbiAqIFVOVkVSSUZJRUQgdG9rZW4gcGVlayDigJQgbmFtZXNwYWNpbmcgYSBtdXRhdGlvbidzIHJlcGxheSBjYWNoZSBvbiBhblxuICogdW52ZXJpZmllZCwgY2FsbGVyLWluZmx1ZW5jZWQgb3JnIGlkIHdvdWxkIGJlIHVuc2FmZS5cbiAqXG4gKiBOYW1lc3BhY2UgdGhlIHN0b3JlZCBrZXkgYnkgKG1ldGhvZCwgcm91dGUsIG9yZywgYm9keSkgc28gYW4gSWRlbXBvdGVuY3ktS2V5XG4gKiBpcyBzY29wZWQgdG8gT05FIHNwZWNpZmljIGVuZHBvaW50K3BheWxvYWQuIFJldXNpbmcgYSBzaW5nbGUga2V5IGFjcm9zcyB0d29cbiAqIHJvdXRlcyAoZS5nLiBQT1NUIC9waXBlbGluZXMgdGhlbiBQT1NUIC9wbHVnaW5zKSBtdXN0IG5vdCByZXBsYXkgdGhlIGZpcnN0XG4gKiBlbmRwb2ludCdzIDJ4eCBmb3IgdGhlIHNlY29uZCDigJQgdGhlIHN0b3JlIGlzIGEgbW9kdWxlLWxldmVsIHNpbmdsZXRvbiBzaGFyZWRcbiAqIGJ5IGV2ZXJ5IHJvdXRlLiBGb2xkaW5nIGluIG1ldGhvZCArIHJvdXRlIHBhdGggKyBhIGJvZHkgZmluZ2VycHJpbnQgb25seSBtYWtlc1xuICoga2V5cyBNT1JFIHNwZWNpZmljLCBzbyB0aGVyZSBpcyBubyBjcm9zcy1jb250YW1pbmF0aW9uIHJpc2suIEFsc28gbmFtZXNwYWNlIGJ5XG4gKiB0aGUgVkVSSUZJRUQgdXNlci4gYElkZW1wb3RlbmN5LUtleWAgaXMgY2hvc2VuIGJ5IHRoZSBjbGllbnQsIHNvIHR3byB1c2VycyBpblxuICogdGhlIHNhbWUgb3JnIHNlbmRpbmcgdGhlIHNhbWUgYm9keSB3aXRoIHRoZSBzYW1lIGtleSBjb2xsaWRlZDogdGhlIHNlY29uZFxuICogdXNlcidzIG11dGF0aW9uIHdhcyBTS0lQUEVEIGFuZCB0aGV5IHdlcmUgc2VydmVkIHRoZSBmaXJzdCB1c2VyJ3MgY2FjaGVkXG4gKiByZXNwb25zZS4gRmFsbHMgYmFjayB0byB0aGUgb3JnIGFsb25lIG9ubHkgd2hlbiB0aGVyZSBpcyBubyB2ZXJpZmllZCBzdWJqZWN0XG4gKiAoc2VydmljZSBwcmluY2lwYWxzIGNhcnJ5IG9uZSkuXG4gKi9cbmZ1bmN0aW9uIGlkZW1wb3RlbmN5U3RvcmVLZXkocmVxOiBSZXF1ZXN0LCBrZXk6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IG9yZ0lkID0gcmVxLnVzZXI/Lm9yZ2FuaXphdGlvbklkIHx8IHJlcS5jb250ZXh0Py5pZGVudGl0eT8ub3JnSWQ7XG4gIGlmICghb3JnSWQpIHJldHVybiB1bmRlZmluZWQ7XG4gIGNvbnN0IHN1YiA9IHJlcS51c2VyPy5zdWI7XG4gIGNvbnN0IHJvdXRlUGF0aCA9IChyZXEuYmFzZVVybCA/PyAnJykgKyAocmVxLnJvdXRlPy5wYXRoID8/IHJlcS5wYXRoID8/ICcnKTtcbiAgcmV0dXJuIGAke3JlcS5tZXRob2R9OiR7cm91dGVQYXRofToke29yZ0lkfToke3N1YiA/PyAnLSd9OiR7Ym9keUZpbmdlcnByaW50KHJlcS5ib2R5KX06JHtrZXl9YDtcbn1cblxuLyoqIE1ldGhvZHMgdGhlIGlkZW1wb3RlbmN5IG1pZGRsZXdhcmUgYXBwbGllcyB0by4gKi9cbmNvbnN0IElERU1QT1RFTlRfTUVUSE9EUyA9IFsnUE9TVCcsICdQVVQnLCAnREVMRVRFJ107XG5cbi8qKlxuICogVHJ1ZSB3aGVuIHRoaXMgcmVxdWVzdCBpcyBhIFJFVFJZIG9mIGFuIGlkZW1wb3RlbnQgbXV0YXRpb24gd2hvc2Ugb3JpZ2luYWxcbiAqIGhhcyBDT01QTEVURUQgKGEgY2FjaGVkIDJ4eCBvbiByZWNvcmQpIOKAlCBpLmUuIHRoZSBpZGVtcG90ZW5jeSBtaWRkbGV3YXJlIHdpbGxcbiAqIHJlcGxheSBpdCB3aXRob3V0IHJ1bm5pbmcgdGhlIGhhbmRsZXIuIFRoZSBhcGlDYWxscyBjaGVjayB1c2VzIGl0IHRvIHNraXBcbiAqIHRoZSBnYXRlIGZvciBzdWNoIGEgcmV0cnk6IHRoZSByZXBsYXkgZG9lcyBubyB3b3JrIGFuZCBpcyBuZXZlciBtZXRlcmVkLCBzb1xuICogcmVmdXNpbmcgaXQgYXQgdGhlIHF1b3RhIGdhdGUgKHdoaWNoIHJ1bnMgaW4gcmVxdWlyZUF1dGgsIEJFRk9SRSByZXBsYXlcbiAqIGRldGVjdGlvbiBpbiBtb3N0IGNoYWlucykgd291bGQgNDI5IGEgY2xpZW50IGZvciByZS1yZWFkaW5nIGl0cyBvd24gcmVzdWx0LlxuICpcbiAqIE9uZSBzdG9yZSByZWFkLCBhbmQgb25seSBmb3IgYSBtdXRhdGlvbiBjYXJyeWluZyBgSWRlbXBvdGVuY3ktS2V5YDsgZXZlcnlcbiAqIGZhaWx1cmUgYW5zd2VycyBgZmFsc2VgICh0aGUgZ2F0ZSB0aGVuIHJ1bnMgYXMgdXN1YWwpLiBVc2VzIHRoZSBwcm9jZXNzLXdpZGVcbiAqIHN0b3JlIOKAlCB0aGUgc2FtZSBvbmUgdGhlIHJvdXRlIGNoYWlucycgbWlkZGxld2FyZSByZXNvbHZlcy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGhhc0NvbXBsZXRlZElkZW1wb3RlbnRSZXNwb25zZShyZXE6IFJlcXVlc3QpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgY29uc3Qga2V5ID0gcmVxLmhlYWRlcnM/LlsnaWRlbXBvdGVuY3kta2V5J107XG4gIGlmICh0eXBlb2Yga2V5ICE9PSAnc3RyaW5nJyB8fCAha2V5IHx8ICFJREVNUE9URU5UX01FVEhPRFMuaW5jbHVkZXMocmVxLm1ldGhvZCkpIHJldHVybiBmYWxzZTtcbiAgY29uc3QgZnVsbEtleSA9IGlkZW1wb3RlbmN5U3RvcmVLZXkocmVxLCBrZXkpO1xuICBpZiAoIWZ1bGxLZXkpIHJldHVybiBmYWxzZTtcbiAgdHJ5IHtcbiAgICBjb25zdCBjYWNoZWQgPSBhd2FpdCBkZWZhdWx0U3RvcmUuZ2V0KGZ1bGxLZXkpO1xuICAgIHJldHVybiAhIWNhY2hlZCAmJiAhY2FjaGVkLnBlbmRpbmc7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElkZW1wb3RlbmN5TWlkZGxld2FyZU9wdGlvbnMge1xuICAvKiogQ3VzdG9tIHN0b3JlIGJhY2tlbmQuIERlZmF1bHRzIHRvIHRoZSBwcm9jZXNzLXdpZGUgc3RvcmUgc2V0IHZpYVxuICAgKiAge0BsaW5rIHNldElkZW1wb3RlbmN5U3RvcmV9IChpbi1tZW1vcnkgdW50aWwgYGNyZWF0ZUFwcGAgd2lyZXMgUmVkaXMpLiAqL1xuICBzdG9yZT86IElkZW1wb3RlbmN5U3RvcmU7XG59XG5cbi8qKlxuICogTWlkZGxld2FyZSB0aGF0IHN1cHBvcnRzIGlkZW1wb3RlbmN5IGtleXMgZm9yIFBPU1QvUFVUL0RFTEVURSBtdXRhdGlvbnMuXG4gKlxuICogV2hlbiBhIHJlcXVlc3QgaW5jbHVkZXMgdGhlIGBJZGVtcG90ZW5jeS1LZXlgIGhlYWRlcjpcbiAqIC0gRmlyc3QgY2FsbDogcHJvY2Vzc2VzIG5vcm1hbGx5LCBjYWNoZXMgdGhlIHJlc3BvbnNlXG4gKiAtIFN1YnNlcXVlbnQgY2FsbHMgd2l0aCBzYW1lIGtleTogcmV0dXJucyBjYWNoZWQgcmVzcG9uc2UgKHByZXZlbnRzIGR1cGxpY2F0ZSBtdXRhdGlvbnMpXG4gKlxuICogRGVmYXVsdHMgdG8gYW4gaW4tbWVtb3J5IHN0b3JlIChzaW5nbGUtcmVwbGljYSkuIFBhc3MgYSBjdXN0b21cbiAqIGNyb3NzLXJlcGxpY2EgYHsgc3RvcmUgfWAgaW1wbGVtZW50aW5nIGBJZGVtcG90ZW5jeVN0b3JlYCB0byBkZWR1cGUgYWNyb3NzXG4gKiByZXBsaWNhcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlkZW1wb3RlbmN5TWlkZGxld2FyZShvcHRpb25zOiBJZGVtcG90ZW5jeU1pZGRsZXdhcmVPcHRpb25zID0ge30pIHtcbiAgLy8gUmVzb2x2ZSB0aGUgc3RvcmUgUEVSIFJFUVVFU1QgKG5vdCBhdCBmYWN0b3J5IHRpbWUpIHNvIGEgc3RvcmUgaW5qZWN0ZWQgYnlcbiAgLy8gY3JlYXRlQXBwIEFGVEVSIHRoZSByb3V0ZSBjaGFpbnMgYXJlIGJ1aWx0IHN0aWxsIHRha2VzIGVmZmVjdC4gQW4gZXhwbGljaXRcbiAgLy8gYG9wdGlvbnMuc3RvcmVgIGFsd2F5cyB3aW5zLlxuICBjb25zdCBleHBsaWNpdFN0b3JlID0gb3B0aW9ucy5zdG9yZTtcbiAgY29uc3QgdHRsTXMgPSBDb3JlQ29uc3RhbnRzLklERU1QT1RFTkNZX1RUTF9NUztcbiAgY29uc3QgdHRsU2VjID0gTWF0aC5mbG9vcih0dGxNcyAvIDEwMDApO1xuICAvLyBBIHJlc2VydmF0aW9uIGxpdmVzIG9ubHkgYXMgbG9uZyBhcyBhIGhhbmRsZXIgcGxhdXNpYmx5IHJ1bnM6IGlmIHRoZVxuICAvLyBwcm9jZXNzIGRpZXMgbWlkLWhhbmRsZXIgbm90aGluZyBldmVyIHNldHRsZXMgaXQsIGFuZCB0aGlzIOKAlCBub3QgdGhlIGZ1bGxcbiAgLy8gcmVwbGF5IFRUTCDigJQgaXMgaG93IGxvbmcgcmV0cmllcyBvZiB0aGF0IGtleSBhcmUgcmVmdXNlZC5cbiAgY29uc3QgcGVuZGluZ1R0bE1zID0gTWF0aC5taW4oQ29yZUNvbnN0YW50cy5JREVNUE9URU5DWV9QRU5ESU5HX1RUTF9NUywgdHRsTXMpO1xuICBjb25zdCBwZW5kaW5nVHRsU2VjID0gTWF0aC5tYXgoMSwgTWF0aC5mbG9vcihwZW5kaW5nVHRsTXMgLyAxMDAwKSk7XG5cbiAgcmV0dXJuIChyZXE6IFJlcXVlc3QsIHJlczogUmVzcG9uc2UsIG5leHQ6IE5leHRGdW5jdGlvbikgPT4ge1xuICAgIGNvbnN0IHN0b3JlID0gZXhwbGljaXRTdG9yZSA/PyBkZWZhdWx0U3RvcmU7XG4gICAgY29uc3Qga2V5ID0gcmVxLmhlYWRlcnNbJ2lkZW1wb3RlbmN5LWtleSddIGFzIHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICBpZiAoIWtleSkgcmV0dXJuIG5leHQoKTtcblxuICAgIC8vIE9ubHkgYXBwbHkgdG8gbXV0YXRpb24gbWV0aG9kc1xuICAgIGlmICghSURFTVBPVEVOVF9NRVRIT0RTLmluY2x1ZGVzKHJlcS5tZXRob2QpKSByZXR1cm4gbmV4dCgpO1xuXG4gICAgLy8gT25lIHBhc3MgcGVyIHJlcXVlc3Q6IGEgbGF0ZXIgc3RhY2tlZCBjaGFpbiBtdXN0IG5vdCByZS1jaGVjayB0aGUga2V5LlxuICAgIGNvbnN0IG1hcmtlZCA9IHJlcSBhcyBSZXF1ZXN0ICYgeyBbSURFTVBPVEVOQ1lfSEFORExFRF0/OiB0cnVlIH07XG4gICAgaWYgKG1hcmtlZFtJREVNUE9URU5DWV9IQU5ETEVEXSkgcmV0dXJuIG5leHQoKTtcblxuICAgIGNvbnN0IGZ1bGxLZXkgPSBpZGVtcG90ZW5jeVN0b3JlS2V5KHJlcSwga2V5KTtcbiAgICBpZiAoIWZ1bGxLZXkpIHJldHVybiBuZXh0KCk7IC8vIHNraXAgaWRlbXBvdGVuY3kgZm9yIHVuYXV0aGVudGljYXRlZCByZXF1ZXN0c1xuICAgIG1hcmtlZFtJREVNUE9URU5DWV9IQU5ETEVEXSA9IHRydWU7XG5cbiAgICAvKiogUmVqZWN0IGEgZHVwbGljYXRlIHdob3NlIG9yaWdpbmFsIGlzIHN0aWxsIGluLWZsaWdodC4gKi9cbiAgICBjb25zdCBzZW5kSW5Qcm9ncmVzcyA9ICgpOiB2b2lkID0+IHtcbiAgICAgIHJlcy5zZXRIZWFkZXIoJ1JldHJ5LUFmdGVyJywgJzEnKTtcbiAgICAgIHNlbmRFcnJvcihyZXMsIDQwOSwgJ0EgcmVxdWVzdCB3aXRoIHRoaXMgSWRlbXBvdGVuY3ktS2V5IGlzIGFscmVhZHkgYmVpbmcgcHJvY2Vzc2VkJywgRXJyb3JDb2RlLkNPTkZMSUNUKTtcbiAgICB9O1xuXG4gICAgc3RvcmUuZ2V0KGZ1bGxLZXkpLnRoZW4oYXN5bmMgKGNhY2hlZCkgPT4ge1xuICAgICAgaWYgKGNhY2hlZCAmJiAhY2FjaGVkLnBlbmRpbmcpIHtcbiAgICAgICAgLy8gQ29tcGxldGVkIHJlc3BvbnNlIG9uIHJlY29yZCDihpIgcmVwbGF5IGl0LlxuICAgICAgICBsb2dnZXIuZGVidWcoJ0lkZW1wb3RlbnQgcmVxdWVzdCByZXBsYXllZCcsIHsga2V5OiBmdWxsS2V5IH0pO1xuICAgICAgICAocmVzLmxvY2FscyA/Pz0ge30pW0lERU1QT1RFTlRfUkVQTEFZX0xPQ0FMXSA9IHRydWU7XG4gICAgICAgIHJlcy5zZXRIZWFkZXIoJ1gtSWRlbXBvdGVudC1SZXBsYXllZCcsICd0cnVlJyk7XG4gICAgICAgIHJlcy5zdGF0dXMoY2FjaGVkLnN0YXR1c0NvZGUpLmpzb24oY2FjaGVkLmJvZHkpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoY2FjaGVkICYmIGNhY2hlZC5wZW5kaW5nKSB7XG4gICAgICAgIC8vIFRoZSBvcmlnaW5hbCBpcyBzdGlsbCBydW5uaW5nIOKAlCBkb24ndCBydW4gdGhlIG11dGF0aW9uIGEgc2Vjb25kIHRpbWUuXG4gICAgICAgIGxvZ2dlci5kZWJ1ZygnSWRlbXBvdGVudCByZXF1ZXN0IHJlamVjdGVkIChpbiBwcm9ncmVzcyknLCB7IGtleTogZnVsbEtleSB9KTtcbiAgICAgICAgcmV0dXJuIHNlbmRJblByb2dyZXNzKCk7XG4gICAgICB9XG5cbiAgICAgIC8vIEF0b21pY2FsbHkgcmVzZXJ2ZSB0aGUga2V5LiBMb3NpbmcgdGhpcyByYWNlIG1lYW5zIGEgY29uY3VycmVudCByZXF1ZXN0XG4gICAgICAvLyB3aXRoIHRoZSBzYW1lIGtleSBnb3QgdGhlcmUgZmlyc3QgYW5kIGlzIGluLWZsaWdodCDihpIgNDA5LlxuICAgICAgY29uc3Qgd29uID0gYXdhaXQgc3RvcmUucmVzZXJ2ZShcbiAgICAgICAgZnVsbEtleSxcbiAgICAgICAgeyBzdGF0dXNDb2RlOiAwLCBib2R5OiBudWxsLCBwZW5kaW5nOiB0cnVlLCBleHBpcmVzQXQ6IERhdGUubm93KCkgKyBwZW5kaW5nVHRsTXMgfSxcbiAgICAgICAgcGVuZGluZ1R0bFNlYyxcbiAgICAgICk7XG4gICAgICBpZiAoIXdvbikge1xuICAgICAgICBsb2dnZXIuZGVidWcoJ0lkZW1wb3RlbnQgcmVxdWVzdCByZWplY3RlZCAobG9zdCByZXNlcnZlIHJhY2UpJywgeyBrZXk6IGZ1bGxLZXkgfSk7XG4gICAgICAgIHJldHVybiBzZW5kSW5Qcm9ncmVzcygpO1xuICAgICAgfVxuXG4gICAgICAvLyBXZSBvd24gdGhlIHJlc2VydmF0aW9uLiBJdCBNVVNUIGJlIHJlc29sdmVkIGV4YWN0bHkgb25jZSDigJQgZWl0aGVyIHRoZVxuICAgICAgLy8gcmVhbCAyeHggcmVzcG9uc2UgaXMgY2FjaGVkIGZvciByZXBsYXksIG9yIHRoZSByZXNlcnZhdGlvbiBpcyByZWxlYXNlZCBzb1xuICAgICAgLy8gYSByZXRyeSBjYW4gcHJvY2VlZC4gYHNldHRsZWRgIGd1YXJkcyBhZ2FpbnN0IGEgZG91YmxlLXJlc29sdmUuXG4gICAgICBsZXQgc2V0dGxlZCA9IGZhbHNlO1xuICAgICAgbGV0IGNhcHR1cmVkQm9keTogdW5rbm93bjtcbiAgICAgIGxldCBib2R5Q2FwdHVyZWQgPSBmYWxzZTtcblxuICAgICAgLyoqIFJlbWVtYmVyIHRoZSByZXNwb25zZSBib2R5IGZvciByZXBsYXkgKGZpcnN0IGNhcHR1cmUgd2lucykuICovXG4gICAgICBjb25zdCBjYXB0dXJlQm9keSA9IChib2R5OiB1bmtub3duKTogdm9pZCA9PiB7XG4gICAgICAgIGlmICghYm9keUNhcHR1cmVkKSB7XG4gICAgICAgICAgY2FwdHVyZWRCb2R5ID0gYm9keTtcbiAgICAgICAgICBib2R5Q2FwdHVyZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBjb25zdCByZWxlYXNlID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICBpZiAoc2V0dGxlZCkgcmV0dXJuO1xuICAgICAgICBzZXR0bGVkID0gdHJ1ZTtcbiAgICAgICAgc3RvcmUuZGVsZXRlKGZ1bGxLZXkpLmNhdGNoKChlcnIpID0+IHtcbiAgICAgICAgICBsb2dnZXIud2FybignSWRlbXBvdGVuY3kgcmVzZXJ2YXRpb24gcmVsZWFzZSBmYWlsZWQnLCB7IGtleTogZnVsbEtleSwgZXJyb3I6IGVycm9yTWVzc2FnZShlcnIpIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IGNhY2hlU3VjY2VzcyA9ICgpOiB2b2lkID0+IHtcbiAgICAgICAgaWYgKHNldHRsZWQpIHJldHVybjtcbiAgICAgICAgc2V0dGxlZCA9IHRydWU7XG4gICAgICAgIHN0b3JlLnNldChmdWxsS2V5LCB7XG4gICAgICAgICAgc3RhdHVzQ29kZTogcmVzLnN0YXR1c0NvZGUsXG4gICAgICAgICAgYm9keTogYm9keUNhcHR1cmVkID8gY2FwdHVyZWRCb2R5IDogbnVsbCxcbiAgICAgICAgICBleHBpcmVzQXQ6IERhdGUubm93KCkgKyB0dGxNcyxcbiAgICAgICAgfSwgdHRsU2VjKS5jYXRjaCgoZXJyKSA9PiB7XG4gICAgICAgICAgbG9nZ2VyLndhcm4oJ0lkZW1wb3RlbmN5IHN0b3JlLnNldCBmYWlsZWQnLCB7IGtleTogZnVsbEtleSwgZXJyb3I6IGVycm9yTWVzc2FnZShlcnIpIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH07XG5cbiAgICAgIC8qKlxuICAgICAgICogUmVzb2x2ZSB0aGUgcmVzZXJ2YXRpb24gZnJvbSB0aGUgQUNUVUFMIGZpbmFsIHN0YXR1czogYSAyeHggaXMgY2FjaGVkIGZvclxuICAgICAgICogcmVwbGF5OyBhbnl0aGluZyBlbHNlICh0aGUgaGFuZGxlciByZWZ1c2VkIG9yIGZhaWxlZCDigJQgdGhlIG11dGF0aW9uIGRpZFxuICAgICAgICogbm90IHRha2UgZWZmZWN0KSByZWxlYXNlcyB0aGUga2V5IHNvIGEgcmV0cnkgZ2VudWluZWx5IHJlLXJ1bnMuXG4gICAgICAgKi9cbiAgICAgIGNvbnN0IHNldHRsZUZyb21TdGF0dXMgPSAoKTogdm9pZCA9PiB7XG4gICAgICAgIGlmIChzZXR0bGVkKSByZXR1cm47XG4gICAgICAgIGlmIChyZXMuc3RhdHVzQ29kZSA+PSAyMDAgJiYgcmVzLnN0YXR1c0NvZGUgPCAzMDApIGNhY2hlU3VjY2VzcygpO1xuICAgICAgICBlbHNlIHJlbGVhc2UoKTtcbiAgICAgIH07XG5cbiAgICAgIC8vIEZhc3QgcGF0aDogcmVzLmpzb24gaXMgdGhlIGNvbW1vbiBjb21wbGV0aW9uLiBDYXB0dXJlIHRoZSBib2R5IGFuZCBzZXR0bGVcbiAgICAgIC8vIGltbWVkaWF0ZWx5IG9mZiB0aGUgc3RhdHVzIHNldCBieSByZXMuc3RhdHVzKC4uLikuanNvbiguLi4pLlxuICAgICAgY29uc3Qgb3JpZ2luYWxKc29uID0gcmVzLmpzb24uYmluZChyZXMpO1xuICAgICAgcmVzLmpzb24gPSAoYm9keTogdW5rbm93bikgPT4ge1xuICAgICAgICByZXMuc2V0SGVhZGVyKCdYLUlkZW1wb3RlbnQtUmVwbGF5ZWQnLCAnZmFsc2UnKTtcbiAgICAgICAgY2FwdHVyZUJvZHkoYm9keSk7XG4gICAgICAgIHNldHRsZUZyb21TdGF0dXMoKTtcbiAgICAgICAgcmV0dXJuIG9yaWdpbmFsSnNvbihib2R5KTtcbiAgICAgIH07XG5cbiAgICAgIC8vIEJvZHktY2FwdHVyZSBiYWNrc3RvcHMgZm9yIGNvbXBsZXRpb25zIHRoYXQgYnlwYXNzIHJlcy5qc29uXG4gICAgICAvLyAocmVzLnNlbmQgLyByZXMuZW5kIC8gcmVzLnNlbmRGaWxlIOKGkiByZXMuZW5kKS4gVGhlc2Ugb25seSBSRUNPUkQgdGhlIGJvZHk7XG4gICAgICAvLyB0aGUgYWN0dWFsIHNldHRsZSBoYXBwZW5zIG9uIGBmaW5pc2hgIGZyb20gdGhlIHJlYWwgc3RhdHVzIGNvZGUuIEZpcnN0XG4gICAgICAvLyBjYXB0dXJlIHdpbnMsIHNvIHJlcy5qc29uJ3MgYm9keSBpcyBuZXZlciBjbG9iYmVyZWQgYnkgaXRzIGludGVybmFsXG4gICAgICAvLyByZXMuc2VuZC9yZXMuZW5kIGNhbGxzLlxuICAgICAgY29uc3QgcGF0Y2hlZCA9IHJlcyBhcyB1bmtub3duIGFzIHtcbiAgICAgICAgc2VuZD86IChib2R5PzogdW5rbm93bikgPT4gdW5rbm93bjtcbiAgICAgICAgZW5kPzogKC4uLmFyZ3M6IHVua25vd25bXSkgPT4gdW5rbm93bjtcbiAgICAgICAgb24/OiAoZXZlbnQ6IHN0cmluZywgY2I6ICgpID0+IHZvaWQpID0+IHVua25vd247XG4gICAgICB9O1xuICAgICAgaWYgKHR5cGVvZiBwYXRjaGVkLnNlbmQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxTZW5kID0gcGF0Y2hlZC5zZW5kLmJpbmQocmVzKTtcbiAgICAgICAgcGF0Y2hlZC5zZW5kID0gKGJvZHk/OiB1bmtub3duKSA9PiB7XG4gICAgICAgICAgY2FwdHVyZUJvZHkoYm9keSk7XG4gICAgICAgICAgcmV0dXJuIG9yaWdpbmFsU2VuZChib2R5KTtcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIGlmICh0eXBlb2YgcGF0Y2hlZC5lbmQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxFbmQgPSBwYXRjaGVkLmVuZC5iaW5kKHJlcyk7XG4gICAgICAgIHBhdGNoZWQuZW5kID0gKC4uLmFyZ3M6IHVua25vd25bXSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGNodW5rID0gYXJnc1swXTtcbiAgICAgICAgICBpZiAoY2h1bmsgIT09IHVuZGVmaW5lZCAmJiB0eXBlb2YgY2h1bmsgIT09ICdmdW5jdGlvbicpIGNhcHR1cmVCb2R5KGNodW5rKTtcbiAgICAgICAgICBjb25zdCBvdXQgPSBvcmlnaW5hbEVuZCguLi5hcmdzKTtcbiAgICAgICAgICAvLyBUaGUgaGFuZGxlciBoYXMgcHJvZHVjZWQgaXRzIGZpbmFsIHN0YXR1cy4gU2V0dGxlIEhFUkUgcmF0aGVyIHRoYW5cbiAgICAgICAgICAvLyB3YWl0aW5nIGZvciAnZmluaXNoJzogYWZ0ZXIgYSBjbGllbnQgZGlzY29ubmVjdCAnZmluaXNoJyBuZXZlciBmaXJlcyxcbiAgICAgICAgICAvLyBhbmQgdGhlIGhhbmRsZXIncyBvdXRjb21lIG11c3Qgc3RpbGwgYmUgcmVjb3JkZWQuXG4gICAgICAgICAgc2V0dGxlRnJvbVN0YXR1cygpO1xuICAgICAgICAgIHJldHVybiBvdXQ7XG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIC8vIEJhY2tzdG9wIGZvciBBTlkgY29tcGxldGlvbiBwYXRoIOKAlCBpbmNsdWRpbmcgYSAyeHggdGhhdCBmaW5pc2hlZCB2aWFcbiAgICAgIC8vIHJlcy5zZW5kL3Jlcy5lbmQvcmVzLnNlbmRGaWxlLzIwNCBhbmQgbmV2ZXIgaGl0IHRoZSBwYXRjaGVkIHJlcy5qc29uLlxuICAgICAgLy8gRGVjaWRpbmcgb24gdGhlIHJlYWwgZmluYWwgc3RhdHVzIGhlcmUgbWVhbnMgYSBzdWNjZXNzZnVsIG9wIGlzIGNhY2hlZFxuICAgICAgLy8gKG9yIGEgZmFpbGVkIG9uZSByZWxlYXNlZCkgaW5zdGVhZCBvZiBzdHJhbmRpbmcgdGhlIHJlc2VydmF0aW9uIGFuZFxuICAgICAgLy8gNDA5LWluZyBldmVyeSByZXRyeSBmb3IgdGhlIGZ1bGwgVFRMLiBHdWFyZGVkIOKAlCB0ZXN0IGRvdWJsZXMgbWF5IG5vdCBiZVxuICAgICAgLy8gRXZlbnRFbWl0dGVyczsgcmVzLmpzb24ncyBmYXN0IHBhdGggYWxyZWFkeSBzZXR0bGVkIHRoZSBjb21tb24gY2FzZS5cbiAgICAgIGlmICh0eXBlb2YgcGF0Y2hlZC5vbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBwYXRjaGVkLm9uKCdmaW5pc2gnLCBzZXR0bGVGcm9tU3RhdHVzKTtcbiAgICAgICAgLy8gQSBjbGllbnQgdGhhdCBkaXNjb25uZWN0cyBlbWl0cyAnY2xvc2UnIFdJVEhPVVQgJ2ZpbmlzaCcg4oCUIGJ1dCB0aGVcbiAgICAgICAgLy8gSEFORExFUiBrZWVwcyBydW5uaW5nIGFuZCBtYXkgc3RpbGwgY29tbWl0IHRoZSBtdXRhdGlvbi4gUmVsZWFzaW5nXG4gICAgICAgIC8vIGhlcmUgbGV0IHRoZSBjbGllbnQncyByZXRyeSBydW4gaXQgYSBzZWNvbmQgdGltZSAoYSBkdXBsaWNhdGUgY3JlYXRlIC9cbiAgICAgICAgLy8gZG91YmxlIGNoYXJnZSDigJQgdGhlIHZlcnkgdGhpbmcgdGhlIGtleSBleGlzdHMgdG8gcHJldmVudCkuIFNvIHRoZVxuICAgICAgICAvLyByZXNlcnZhdGlvbiBzdGF5cyBwZW5kaW5nOiB0aGUgaGFuZGxlcidzIG93biBjb21wbGV0aW9uIHNldHRsZXMgaXRcbiAgICAgICAgLy8gKHJlcy5qc29uIC8gcmVzLmVuZCBhYm92ZSksIGFuZCBpZiB0aGUgcHJvY2VzcyBkaWVzIGluc3RlYWQsIHRoZVxuICAgICAgICAvLyBzaG9ydCBwZW5kaW5nIFRUTCBmcmVlcyB0aGUga2V5LlxuICAgICAgfVxuXG4gICAgICBuZXh0KCk7XG4gICAgfSkuY2F0Y2goKGVycikgPT4ge1xuICAgICAgLy8gSWYgdGhlIHN0b3JlIGJhY2tlbmQgaXMgZG93biwgZmFpbCBvcGVuIOKAlCBwcm9jZXNzIHRoZSByZXF1ZXN0IG5vcm1hbGx5LlxuICAgICAgbG9nZ2VyLndhcm4oJ0lkZW1wb3RlbmN5IHN0b3JlLmdldCBmYWlsZWQ7IHByb2NlZWRpbmcgd2l0aG91dCBkZWR1cCcsIHsga2V5OiBmdWxsS2V5LCBlcnJvcjogZXJyb3JNZXNzYWdlKGVycikgfSk7XG4gICAgICBuZXh0KCk7XG4gICAgfSk7XG4gIH07XG59XG4iXX0=
|
|
400
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRlbXBvdGVuY3ktbWlkZGxld2FyZS5qcyIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwaS9pZGVtcG90ZW5jeS1taWRkbGV3YXJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNwQyxPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsb0JBQW9CLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3JJLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUdoRSxNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUMsYUFBYSxDQUFDLENBQUM7QUFFM0M7Ozs7O0dBS0c7QUFDSCxTQUFTLGVBQWUsQ0FBQyxJQUFhO0lBQ3BDLElBQUksSUFBSSxLQUFLLFNBQVMsSUFBSSxJQUFJLEtBQUssSUFBSTtRQUFFLE9BQU8sR0FBRyxDQUFDO0lBQ3BELElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBYyxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUM7UUFBRSxPQUFPLEdBQUcsQ0FBQztJQUNyRixJQUFJLENBQUM7UUFDSCxPQUFPLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDdkYsQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNQLDBFQUEwRTtRQUMxRSx1RUFBdUU7UUFDdkUsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0FBQ0gsQ0FBQztBQWlDRCwwRUFBMEU7QUFDMUUsTUFBTSxVQUFVLGlCQUFpQjtJQUMvQixNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFB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eEUseUVBQXlFO1lBQ3pFLHNFQUFzRTtZQUN0RSwwRUFBMEU7WUFDMUUsdUVBQXVFO1lBQ3ZFLElBQUksT0FBTyxPQUFPLENBQUMsRUFBRSxLQUFLLFVBQVUsRUFBRSxDQUFDO2dCQUNyQyxPQUFPLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO2dCQUN2QyxxRUFBcUU7Z0JBQ3JFLHFFQUFxRTtnQkFDckUseUVBQXlFO2dCQUN6RSxvRUFBb0U7Z0JBQ3BFLHFFQUFxRTtnQkFDckUsbUVBQW1FO2dCQUNuRSxtQ0FBbUM7WUFDckMsQ0FBQztZQUVELElBQUksRUFBRSxDQUFDO1FBQ1QsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDZiwwRUFBMEU7WUFDMUUsTUFBTSxDQUFDLElBQUksQ0FBQyx3REFBd0QsRUFBRSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDbEgsSUFBSSxFQUFFLENBQUM7UUFDVCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHsgY3JlYXRlSGFzaCB9IGZyb20gJ2NyeXB0byc7XG5pbXBvcnQgeyBjcmVhdGVMb2dnZXIsIHNlbmRFcnJvciwgRXJyb3JDb2RlLCBjcmVhdGVFbnZSZWRpc0NsaWVudCwgZXJyb3JNZXNzYWdlLCBzdGFibGVTdHJpbmdpZnkgfSBmcm9tICdAcGlwZWxpbmUtYnVpbGRlci9hcGktY29yZSc7XG5pbXBvcnQgeyBDb3JlQ29uc3RhbnRzIH0gZnJvbSAnQHBpcGVsaW5lLWJ1aWxkZXIvcGlwZWxpbmUtY29yZSc7XG5pbXBvcnQgdHlwZSB7IFJlcXVlc3QsIFJlc3BvbnNlLCBOZXh0RnVuY3Rpb24gfSBmcm9tICdleHByZXNzJztcblxuY29uc3QgbG9nZ2VyID0gY3JlYXRlTG9nZ2VyKCdpZGVtcG90ZW5jeScpO1xuXG4vKipcbiAqIFNob3J0LCBzdGFibGUgZmluZ2VycHJpbnQgb2YgYSByZXF1ZXN0IGJvZHkuIEZvbGRzIHRoZSBwYXlsb2FkIGludG8gdGhlXG4gKiBpZGVtcG90ZW5jeSBrZXkgc28gcmVwbGF5aW5nIHRoZSBTQU1FIGtleSB3aXRoIGEgRElGRkVSRU5UIGJvZHkgaXMgdHJlYXRlZCBhc1xuICogYSBkaXN0aW5jdCBvcGVyYXRpb24gKGZyZXNoIGV4ZWN1dGlvbikgcmF0aGVyIHRoYW4gcmVwbGF5aW5nIHRoZSBvbGQgcmVzcG9uc2UuXG4gKiBFbXB0eS9hYnNlbnQgYm9kaWVzIGNvbGxhcHNlIHRvICctJyBzbyBib2R5LWxlc3MgbXV0YXRpb25zIHN0YXkgdW5hZmZlY3RlZC5cbiAqL1xuZnVuY3Rpb24gYm9keUZpbmdlcnByaW50KGJvZHk6IHVua25vd24pOiBzdHJpbmcge1xuICBpZiAoYm9keSA9PT0gdW5kZWZpbmVkIHx8IGJvZHkgPT09IG51bGwpIHJldHVybiAnLSc7XG4gIGlmICh0eXBlb2YgYm9keSA9PT0gJ29iamVjdCcgJiYgT2JqZWN0LmtleXMoYm9keSBhcyBvYmplY3QpLmxlbmd0aCA9PT0gMCkgcmV0dXJuICctJztcbiAgdHJ5IHtcbiAgICByZXR1cm4gY3JlYXRlSGFzaCgnc2hhMjU2JykudXBkYXRlKHN0YWJsZVN0cmluZ2lmeShib2R5KSkuZGlnZXN0KCdoZXgnKS5zbGljZSgwLCAxNik7XG4gIH0gY2F0Y2gge1xuICAgIC8vIE5vbi1zZXJpYWxpemFibGUgYm9keSAoZS5nLiBhIHN0cmVhbS9jaXJjdWxhciByZWYpOiBza2lwIGZpbmdlcnByaW50aW5nXG4gICAgLy8gcmF0aGVyIHRoYW4gZmFpbCB0aGUgcmVxdWVzdCDigJQga2V5IHN0YXlzIHNjb3BlZCBieSBtZXRob2Qrcm91dGUrb3JnLlxuICAgIHJldHVybiAnLSc7XG4gIH1cbn1cblxuaW50ZXJmYWNlIENhY2hlZEVudHJ5IHtcbiAgc3RhdHVzQ29kZTogbnVtYmVyO1xuICBib2R5OiB1bmtub3duO1xuICBleHBpcmVzQXQ6IG51bWJlcjtcbiAgLyoqIFJlc2VydmF0aW9uIHBsYWNlaG9sZGVyOiB0aGUgcmVxdWVzdCBpcyBpbi1mbGlnaHQsIG5vIHJlYWwgcmVzcG9uc2UgeWV0LlxuICAgKiAgQSBkdXBsaWNhdGUgdGhhdCBzZWVzIGEgcGVuZGluZyBlbnRyeSBpcyByZWplY3RlZCB3aXRoIDQwOSwgbm90IHJlcGxheWVkLiAqL1xuICBwZW5kaW5nPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBQbHVnZ2FibGUgYmFja2VuZCBmb3IgaWRlbXBvdGVuY3kta2V5IHJlcGxheSBjYWNoZS4gVGhlIGRlZmF1bHQgaW4tbWVtb3J5XG4gKiBpbXBsZW1lbnRhdGlvbiB3b3JrcyBmaW5lIHNpbmdsZS1yZXBsaWNhOyBhIFJlZGlzLWJhY2tlZCBpbXBsZW1lbnRhdGlvblxuICogaXMgcmVxdWlyZWQgZm9yIGNvcnJlY3QgZGVkdXBsaWNhdGlvbiBhY3Jvc3MgaG9yaXpvbnRhbGx5LXNjYWxlZCByZXBsaWNhc1xuICogKG90aGVyd2lzZSB0d28gcmVwbGljYXMgYmVoaW5kIGEgbG9hZC1iYWxhbmNlciBjYWNoZSBpbmRlcGVuZGVudGx5IGFuZCBhXG4gKiByZXRyeSBoaXR0aW5nIGEgZGlmZmVyZW50IHBvZCB3b24ndCByZXBsYXkpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElkZW1wb3RlbmN5U3RvcmUge1xuICBnZXQoa2V5OiBzdHJpbmcpOiBQcm9taXNlPENhY2hlZEVudHJ5IHwgbnVsbD47XG4gIHNldChrZXk6IHN0cmluZywgZW50cnk6IENhY2hlZEVudHJ5LCB0dGxTZWNvbmRzOiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+O1xuICAvKipcbiAgICogQXRvbWljYWxseSBjbGFpbSBga2V5YCBJRkYgaXQgaXMgY3VycmVudGx5IGFic2VudC4gUmV0dXJucyBgdHJ1ZWAgd2hlbiBUSElTXG4gICAqIGNhbGxlciBzZXQgdGhlIGVudHJ5ICh3b24gdGhlIHJhY2UpLCBgZmFsc2VgIHdoZW4gYW4gZW50cnkgYWxyZWFkeSBleGlzdHMuXG4gICAqIFRoaXMgaXMgd2hhdCBzZXJpYWxpemVzIGNvbmN1cnJlbnQgZmlyc3QtdGltZSByZXF1ZXN0cyB0aGF0IHNoYXJlIGFuXG4gICAqIElkZW1wb3RlbmN5LUtleSDigJQgYSBwbGFpbiBnZXQtdGhlbi1zZXQgbGVhdmVzIGEgd2luZG93IHdoZXJlIHR3byByZXF1ZXN0c1xuICAgKiBib3RoIHNlZSBcIm5vdCBjYWNoZWRcIiBhbmQgYm90aCBleGVjdXRlIHRoZSBtdXRhdGlvbi5cbiAgICovXG4gIHJlc2VydmUoa2V5OiBzdHJpbmcsIGVudHJ5OiBDYWNoZWRFbnRyeSwgdHRsU2Vjb25kczogbnVtYmVyKTogUHJvbWlzZTxib29sZWFuPjtcbiAgLyoqIFJlbW92ZSBhIGtleSDigJQgcmVsZWFzZXMgYSByZXNlcnZhdGlvbiBhZnRlciBhIG5vbi1jYWNoZWFibGUgKG5vbi0yeHgpIHJlc3BvbnNlLiAqL1xuICBkZWxldGUoa2V5OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+O1xufVxuXG4vKiogRGVmYXVsdCBpbi1tZW1vcnkgc3RvcmUuIFNpbmdsZS1yZXBsaWNhIG9ubHkuIEV4cG9ydGVkIGZvciB0ZXN0aW5nLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU1lbW9yeVN0b3JlKCk6IElkZW1wb3RlbmN5U3RvcmUge1xuICBjb25zdCBtYXAgPSBuZXcgTWFwPHN0cmluZywgQ2FjaGVkRW50cnk+KCk7XG4gIGNvbnN0IGNsZWFudXBUaW1lciA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgIGZvciAoY29uc3QgW2ssIHZdIG9mIG1hcCkge1xuICAgICAgaWYgKG5vdyA+IHYuZXhwaXJlc0F0KSBtYXAuZGVsZXRlKGspO1xuICAgIH1cbiAgfSwgQ29yZUNvbnN0YW50cy5JREVNUE9URU5DWV9DTEVBTlVQX0lOVEVSVkFMX01TKTtcbiAgY2xlYW51cFRpbWVyLnVucmVmKCk7XG5cbiAgLyoqIFJldHVybiB0aGUgbGl2ZSAobm9uLWV4cGlyZWQpIGVudHJ5LCBldmljdGluZyBpdCBsYXppbHkgaWYgZXhwaXJlZC4gKi9cbiAgY29uc3QgbGl2ZSA9IChrZXk6IHN0cmluZyk6IENhY2hlZEVudHJ5IHwgbnVsbCA9PiB7XG4gICAgY29uc3QgZW50cnkgPSBtYXAuZ2V0KGtleSk7XG4gICAgaWYgKCFlbnRyeSkgcmV0dXJuIG51bGw7XG4gICAgaWYgKERhdGUubm93KCkgPiBlbnRyeS5leHBpcmVzQXQpIHtcbiAgICAgIG1hcC5kZWxldGUoa2V5KTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gZW50cnk7XG4gIH07XG4gIC8qKlxuICAgKiBBdCBjYXBhY2l0eSwgZXZpY3QgdGhlIE9MREVTVCBlbnRyeSAoTWFwIHByZXNlcnZlcyBpbnNlcnRpb24gb3JkZXIpIHJhdGhlclxuICAgKiB0aGFuIHNpbGVudGx5IGRyb3BwaW5nIHRoZSBORVcga2V5IOKAlCBvdGhlcndpc2UsIG9uY2UgZnVsbCwgdGhlIHN0b3JlIHN0b3BzXG4gICAqIGRlZHVwbGljYXRpbmcgZnJlc2ggcmVxdWVzdHMgdW50aWwgdGhlIFRUTCBzd2VlcCBydW5zLiBTdGF5cyBib3VuZGVkOyBmYXZvcnNcbiAgICogcmVjZW50IGtleXMgKG1vc3QgbGlrZWx5IHRvIGJlIHJldHJpZWQpLlxuICAgKi9cbiAgY29uc3QgZXZpY3RJZkZ1bGwgPSAoa2V5OiBzdHJpbmcpOiB2b2lkID0+IHtcbiAgICBpZiAoIW1hcC5oYXMoa2V5KSAmJiBtYXAuc2l6ZSA+PSBDb3JlQ29uc3RhbnRzLklERU1QT1RFTkNZX01BWF9TVE9SRV9TSVpFKSB7XG4gICAgICBjb25zdCBvbGRlc3QgPSBtYXAua2V5cygpLm5leHQoKS52YWx1ZTtcbiAgICAgIGlmIChvbGRlc3QgIT09IHVuZGVmaW5lZCkgbWFwLmRlbGV0ZShvbGRlc3QpO1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIHtcbiAgICBhc3luYyBnZXQoa2V5KSB7XG4gICAgICByZXR1cm4gbGl2ZShrZXkpO1xuICAgIH0sXG4gICAgYXN5bmMgc2V0KGtleSwgZW50cnkpIHtcbiAgICAgIGV2aWN0SWZGdWxsKGtleSk7XG4gICAgICBtYXAuc2V0KGtleSwgZW50cnkpO1xuICAgIH0sXG4gICAgYXN5bmMgcmVzZXJ2ZShrZXksIGVudHJ5KSB7XG4gICAgICAvLyBBdG9taWMgaW4gYSBzaW5nbGUtdGhyZWFkZWQgcnVudGltZTogbm8gYXdhaXQgYmV0d2VlbiB0aGUgbGl2ZW5lc3MgY2hlY2tcbiAgICAgIC8vIGFuZCB0aGUgc2V0LCBzbyB0d28gY29uY3VycmVudCBjYWxsZXJzIGNhbid0IGJvdGggb2JzZXJ2ZSBcImFic2VudFwiLlxuICAgICAgaWYgKGxpdmUoa2V5KSkgcmV0dXJuIGZhbHNlO1xuICAgICAgZXZpY3RJZkZ1bGwoa2V5KTtcbiAgICAgIG1hcC5zZXQoa2V5LCBlbnRyeSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9LFxuICAgIGFzeW5jIGRlbGV0ZShrZXkpIHtcbiAgICAgIG1hcC5kZWxldGUoa2V5KTtcbiAgICB9LFxuICB9O1xufVxuXG4vKipcbiAqIE1pbmltYWwgUmVkaXMgc3VyZmFjZSB0aGUgaWRlbXBvdGVuY3kgc3RvcmUgbmVlZHMgKGFuIGlvcmVkaXMgc3Vic2V0KS5cbiAqIGBzZXRgIHN1cHBvcnRzIHRoZSB2YXJpYWRpYyBvcHRpb24gdGFpbDogYFNFVCBrZXkgdmFsIEVYIDx0dGw+IFtOWF1gLCB3aGljaFxuICogcmV0dXJucyBgJ09LJ2Agb24gc3VjY2VzcyBhbmQgYG51bGxgIHdoZW4gYW4gYE5YYCBzZXQgd2FzIHJlZnVzZWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVkaXNJZGVtcG90ZW5jeUNsaWVudCB7XG4gIGdldChrZXk6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nIHwgbnVsbD47XG4gIHNldChrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZywgLi4uYXJnczogKHN0cmluZyB8IG51bWJlcilbXSk6IFByb21pc2U8c3RyaW5nIHwgbnVsbD47XG4gIGRlbChrZXk6IHN0cmluZyk6IFByb21pc2U8bnVtYmVyPjtcbn1cblxuY29uc3QgUkVESVNfS0VZX1BSRUZJWCA9ICdpZGVtOic7XG5cbi8qKlxuICogUmVkaXMtYmFja2VkIHtAbGluayBJZGVtcG90ZW5jeVN0b3JlfSBmb3IgY29ycmVjdCBkZWR1cGxpY2F0aW9uIGFjcm9zc1xuICogaG9yaXpvbnRhbGx5LXNjYWxlZCByZXBsaWNhcy4gYHJlc2VydmVgIG1hcHMgdG8gYW4gYXRvbWljIGBTRVQg4oCmIE5YYCBzbyB0d29cbiAqIHBvZHMgYmVoaW5kIGEgbG9hZC1iYWxhbmNlciBjYW4ndCBib3RoIHdpbiBhIGZpcnN0LXRpbWUgcmVxdWVzdCBzaGFyaW5nIGFuXG4gKiBJZGVtcG90ZW5jeS1LZXk7IGEgcmV0cnkgbGFuZGluZyBvbiBBTlkgcG9kIHNlZXMgdGhlIHNhbWUgY29tbWl0dGVkIHJlc3BvbnNlLlxuICogUmVkaXMgVFRMIG93bnMgZXhwaXJ5ICh0aGUgYENhY2hlZEVudHJ5LmV4cGlyZXNBdGAgZmllbGQgaXMgY2FycmllZCBvbmx5IGZvclxuICogQVBJLXNoYXBlIHBhcml0eSB3aXRoIHRoZSBtZW1vcnkgc3RvcmUpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUmVkaXNJZGVtcG90ZW5jeVN0b3JlKHJlZGlzOiBSZWRpc0lkZW1wb3RlbmN5Q2xpZW50KTogSWRlbXBvdGVuY3lTdG9yZSB7XG4gIGNvbnN0IGsgPSAoa2V5OiBzdHJpbmcpOiBzdHJpbmcgPT4gYCR7UkVESVNfS0VZX1BSRUZJWH0ke2tleX1gO1xuICByZXR1cm4ge1xuICAgIGFzeW5jIGdldChrZXkpIHtcbiAgICAgIGNvbnN0IHJhdyA9IGF3YWl0IHJlZGlzLmdldChrKGtleSkpO1xuICAgICAgaWYgKCFyYXcpIHJldHVybiBudWxsO1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UocmF3KSBhcyBDYWNoZWRFbnRyeTtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICAvLyBDb3JydXB0IGVudHJ5IOKGkiB0cmVhdCBhcyBhYnNlbnQgc28gdGhlIHJlcXVlc3QgcHJvY2VlZHMgZnJlc2guXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgIH0sXG4gICAgYXN5bmMgc2V0KGtleSwgZW50cnksIHR0bFNlY29uZHMpIHtcbiAgICAgIGF3YWl0IHJlZGlzLnNldChrKGtleSksIEpTT04uc3RyaW5naWZ5KGVudHJ5KSwgJ0VYJywgTWF0aC5tYXgoMSwgdHRsU2Vjb25kcykpO1xuICAgIH0sXG4gICAgYXN5bmMgcmVzZXJ2ZShrZXksIGVudHJ5LCB0dGxTZWNvbmRzKSB7XG4gICAgICAvLyBBdG9taWMgY2xhaW06IFNFVCBrZXkgdmFsIEVYIHR0bCBOWCDihpIgJ09LJyBvbmx5IGlmIHRoZSBrZXkgd2FzIGFic2VudC5cbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IHJlZGlzLnNldChrKGtleSksIEpTT04uc3RyaW5naWZ5KGVudHJ5KSwgJ0VYJywgTWF0aC5tYXgoMSwgdHRsU2Vjb25kcyksICdOWCcpO1xuICAgICAgcmV0dXJuIHJlcyA9PT0gJ09LJztcbiAgICB9LFxuICAgIGFzeW5jIGRlbGV0ZShrZXkpIHtcbiAgICAgIGF3YWl0IHJlZGlzLmRlbChrKGtleSkpO1xuICAgIH0sXG4gIH07XG59XG5cbi8qKlxuICogQnVpbGQgYSBSZWRpcy1iYWNrZWQgaWRlbXBvdGVuY3kgc3RvcmUgZnJvbSB0aGUgc2hhcmVkIGVudiBSZWRpcyAodGhlIHNhbWVcbiAqIGBSRURJU19VUkxgIC8gYFJFRElTX1NFTlRJTkVMU2Agd2lyaW5nIHRoZSByYXRlLWxpbWl0ZXIgYW5kIGF1ZGl0LXNwb29sIHVzZSkuXG4gKiBSZXR1cm5zIGBudWxsYCB3aGVuIFJlZGlzIGlzbid0IGNvbmZpZ3VyZWQvYXZhaWxhYmxlIHNvIHRoZSBjYWxsZXIga2VlcHMgdGhlXG4gKiBpbi1tZW1vcnkgZGVmYXVsdCAoc2luZ2xlLXJlcGxpY2EgY29ycmVjdG5lc3MpLiBOZXZlciB0aHJvd3MuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVFbnZSZWRpc0lkZW1wb3RlbmN5U3RvcmUoKTogSWRlbXBvdGVuY3lTdG9yZSB8IG51bGwge1xuICBjb25zdCBjbGllbnQgPSBjcmVhdGVFbnZSZWRpc0NsaWVudDxSZWRpc0lkZW1wb3RlbmN5Q2xpZW50PignaWRlbXBvdGVuY3knKTtcbiAgaWYgKCFjbGllbnQpIHJldHVybiBudWxsO1xuICBsb2dnZXIuaW5mbygnUmVkaXMgaWRlbXBvdGVuY3kgc3RvcmUgaW5pdGlhbGl6ZWQnKTtcbiAgcmV0dXJuIGNyZWF0ZVJlZGlzSWRlbXBvdGVuY3lTdG9yZShjbGllbnQpO1xufVxuXG5jb25zdCBtZW1vcnlTdG9yZSA9IGNyZWF0ZU1lbW9yeVN0b3JlKCk7XG5cbi8qKlxuICogUHJvY2Vzcy13aWRlIGRlZmF1bHQgc3RvcmUgdXNlZCBieSBgaWRlbXBvdGVuY3lNaWRkbGV3YXJlKClgIHdoZW4gbm8gZXhwbGljaXRcbiAqIGBzdG9yZWAgaXMgcGFzc2VkLiBEZWZhdWx0cyB0byB0aGUgaW4tbWVtb3J5IHN0b3JlOyBgY3JlYXRlQXBwYCBwcm9tb3RlcyBpdCB0b1xuICogdGhlIHNoYXJlZCBlbnYtUmVkaXMgc3RvcmUgKG11bHRpLXJlcGxpY2EgZGVkdXApIGF0IHN0YXJ0dXAgdmlhXG4gKiB7QGxpbmsgc2V0SWRlbXBvdGVuY3lTdG9yZX0uIFRoZSByb3V0ZSBmYWN0b3JpZXMga2VlcCBjYWxsaW5nXG4gKiBgaWRlbXBvdGVuY3lNaWRkbGV3YXJlKClgIHdpdGggbm8gYXJncyBhbmQgdHJhbnNwYXJlbnRseSBwaWNrIHRoaXMgdXAuXG4gKi9cbmxldCBkZWZhdWx0U3RvcmU6IElkZW1wb3RlbmN5U3RvcmUgPSBtZW1vcnlTdG9yZTtcblxuLyoqIEluamVjdCB0aGUgcHJvY2Vzcy13aWRlIGlkZW1wb3RlbmN5IHN0b3JlIChlLmcuIGEgUmVkaXMtYmFja2VkIG9uZSkuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0SWRlbXBvdGVuY3lTdG9yZShzdG9yZTogSWRlbXBvdGVuY3lTdG9yZSk6IHZvaWQge1xuICBkZWZhdWx0U3RvcmUgPSBzdG9yZTtcbn1cblxuLyoqIFRoZSBjdXJyZW50IHByb2Nlc3Mtd2lkZSBkZWZhdWx0IHN0b3JlIChpbi1tZW1vcnkgdW5sZXNzIG92ZXJyaWRkZW4pLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldElkZW1wb3RlbmN5U3RvcmUoKTogSWRlbXBvdGVuY3lTdG9yZSB7XG4gIHJldHVybiBkZWZhdWx0U3RvcmU7XG59XG5cbi8qKlxuICogTWFya3MgYSByZXF1ZXN0IGlkZW1wb3RlbmN5IGhhcyBhbHJlYWR5IGhhbmRsZWQuIFJvdXRlIGNoYWlucyBhcmUgc3RhY2tlZCDigJRcbiAqIHNldmVyYWwgYGFwcC51c2UocHJlZml4LCAuLi5jcmVhdGVBdXRoZW50aWNhdGVkV2l0aE9yZ1JvdXRlKCksIHJvdXRlcilgIG1vdW50c1xuICogc2hhcmUgYSBwcmVmaXgsIGFuZCBhIHJlcXVlc3QgdGhhdCBmYWxscyB0aHJvdWdoIHRoZSBmaXJzdCByb3V0ZXIgcnVucyB0aGVcbiAqIG5leHQgY2hhaW4ncyBpZGVtcG90ZW5jeSBtaWRkbGV3YXJlIGFnYWluLiBUaGF0IHNlY29uZCBwYXNzIGZvdW5kIGl0cyBPV05cbiAqIHBlbmRpbmcgcmVzZXJ2YXRpb24gYW5kIGFuc3dlcmVkIDQwOS5cbiAqL1xuY29uc3QgSURFTVBPVEVOQ1lfSEFORExFRCA9IFN5bWJvbCgncGlwZWxpbmUtYnVpbGRlci5pZGVtcG90ZW5jeS5oYW5kbGVkJyk7XG5cbi8qKlxuICogYHJlcy5sb2NhbHNgIGtleSBzZXQgdG8gYHRydWVgIHdoZW4gdGhlIHJlc3BvbnNlIHdhcyBSRVBMQVlFRCBmcm9tIHRoZVxuICogaWRlbXBvdGVuY3kgY2FjaGUgaW5zdGVhZCBvZiBydW5uaW5nIHRoZSBoYW5kbGVyLiBBIHJlcGxheSBkaWQgbm8gd29yaywgc29cbiAqIGFueXRoaW5nIHRoYXQgYmlsbHMgcGVyIHN1Y2Nlc3NmdWwgcmVzcG9uc2UgKGBtZXRlclF1b3RhT25TdWNjZXNzYCkgbXVzdCBza2lwXG4gKiBpdCDigJQgdGhlIG9yaWdpbmFsIHJlcXVlc3QgYWxyZWFkeSBwYWlkLiBVc2Uge0BsaW5rIGlzSWRlbXBvdGVudFJlcGxheX0uXG4gKi9cbmV4cG9ydCBjb25zdCBJREVNUE9URU5UX1JFUExBWV9MT0NBTCA9ICdpZGVtcG90ZW50UmVwbGF5JztcblxuLyoqIFRydWUgd2hlbiBgcmVzYCBpcyBhIHJlcGxheSBvZiBhIGNhY2hlZCBpZGVtcG90ZW50IHJlc3BvbnNlLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzSWRlbXBvdGVudFJlcGxheShyZXM6IFJlc3BvbnNlKTogYm9vbGVhbiB7XG4gIHJldHVybiByZXMubG9jYWxzPy5bSURFTVBPVEVOVF9SRVBMQVlfTE9DQUxdID09PSB0cnVlO1xufVxuXG4vKipcbiAqIFRoZSBzdG9yZSBrZXkgYSByZXF1ZXN0J3MgYElkZW1wb3RlbmN5LUtleWAgaXMgcmVjb3JkZWQgdW5kZXIsIG9yIGB1bmRlZmluZWRgXG4gKiB3aGVuIHRoZSByZXF1ZXN0IGhhcyBubyBvcmcgdG8gbmFtZXNwYWNlIGl0IGJ5ICh1bmF1dGhlbnRpY2F0ZWQg4oCUIHNraXBwZWQpLlxuICpcbiAqIE5hbWVzcGFjZSBieSBvcmdJZCB0byBwcmV2ZW50IGNyb3NzLW9yZyBjYWNoZSBjb2xsaXNpb25zLiBQcmVmZXIgdGhlIFZFUklGSUVEXG4gKiBhdXRoIG9yZyAoYHJlcS51c2VyYCwgcG9wdWxhdGVkIGJ5IHJlcXVpcmVBdXRoIGFmdGVyIHNpZ25hdHVyZSB2ZXJpZmljYXRpb24pXG4gKiBvdmVyIGByZXEuY29udGV4dC5pZGVudGl0eWAsIHdoaWNoIHNvbWUgc2VydmljZXMgcG9wdWxhdGUgcHJlLWF1dGggZnJvbSBhblxuICogVU5WRVJJRklFRCB0b2tlbiBwZWVrIOKAlCBuYW1lc3BhY2luZyBhIG11dGF0aW9uJ3MgcmVwbGF5IGNhY2hlIG9uIGFuXG4gKiB1bnZlcmlmaWVkLCBjYWxsZXItaW5mbHVlbmNlZCBvcmcgaWQgd291bGQgYmUgdW5zYWZlLlxuICpcbiAqIE5hbWVzcGFjZSB0aGUgc3RvcmVkIGtleSBieSAobWV0aG9kLCByb3V0ZSwgb3JnLCBib2R5KSBzbyBhbiBJZGVtcG90ZW5jeS1LZXlcbiAqIGlzIHNjb3BlZCB0byBPTkUgc3BlY2lmaWMgZW5kcG9pbnQrcGF5bG9hZC4gUmV1c2luZyBhIHNpbmdsZSBrZXkgYWNyb3NzIHR3b1xuICogcm91dGVzIChlLmcuIFBPU1QgL3BpcGVsaW5lcyB0aGVuIFBPU1QgL3BsdWdpbnMpIG11c3Qgbm90IHJlcGxheSB0aGUgZmlyc3RcbiAqIGVuZHBvaW50J3MgMnh4IGZvciB0aGUgc2Vjb25kIOKAlCB0aGUgc3RvcmUgaXMgYSBtb2R1bGUtbGV2ZWwgc2luZ2xldG9uIHNoYXJlZFxuICogYnkgZXZlcnkgcm91dGUuIEZvbGRpbmcgaW4gbWV0aG9kICsgcm91dGUgcGF0aCArIGEgYm9keSBmaW5nZXJwcmludCBvbmx5IG1ha2VzXG4gKiBrZXlzIE1PUkUgc3BlY2lmaWMsIHNvIHRoZXJlIGlzIG5vIGNyb3NzLWNvbnRhbWluYXRpb24gcmlzay4gQWxzbyBuYW1lc3BhY2UgYnlcbiAqIHRoZSBWRVJJRklFRCB1c2VyLiBgSWRlbXBvdGVuY3ktS2V5YCBpcyBjaG9zZW4gYnkgdGhlIGNsaWVudCwgc28gdHdvIHVzZXJzIGluXG4gKiB0aGUgc2FtZSBvcmcgc2VuZGluZyB0aGUgc2FtZSBib2R5IHdpdGggdGhlIHNhbWUga2V5IGNvbGxpZGVkOiB0aGUgc2Vjb25kXG4gKiB1c2VyJ3MgbXV0YXRpb24gd2FzIFNLSVBQRUQgYW5kIHRoZXkgd2VyZSBzZXJ2ZWQgdGhlIGZpcnN0IHVzZXIncyBjYWNoZWRcbiAqIHJlc3BvbnNlLiBGYWxscyBiYWNrIHRvIHRoZSBvcmcgYWxvbmUgb25seSB3aGVuIHRoZXJlIGlzIG5vIHZlcmlmaWVkIHN1YmplY3RcbiAqIChzZXJ2aWNlIHByaW5jaXBhbHMgY2Fycnkgb25lKS5cbiAqL1xuZnVuY3Rpb24gaWRlbXBvdGVuY3lTdG9yZUtleShyZXE6IFJlcXVlc3QsIGtleTogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgY29uc3Qgb3JnSWQgPSByZXEudXNlcj8ub3JnYW5pemF0aW9uSWQgfHwgcmVxLmNvbnRleHQ/LmlkZW50aXR5Py5vcmdJZDtcbiAgaWYgKCFvcmdJZCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgY29uc3Qgc3ViID0gcmVxLnVzZXI/LnN1YjtcbiAgY29uc3Qgcm91dGVQYXRoID0gKHJlcS5iYXNlVXJsID8/ICcnKSArIChyZXEucm91dGU/LnBhdGggPz8gcmVxLnBhdGggPz8gJycpO1xuICByZXR1cm4gYCR7cmVxLm1ldGhvZH06JHtyb3V0ZVBhdGh9OiR7b3JnSWR9OiR7c3ViID8/ICctJ306JHtib2R5RmluZ2VycHJpbnQocmVxLmJvZHkpfToke2tleX1gO1xufVxuXG4vKiogTWV0aG9kcyB0aGUgaWRlbXBvdGVuY3kgbWlkZGxld2FyZSBhcHBsaWVzIHRvLiAqL1xuY29uc3QgSURFTVBPVEVOVF9NRVRIT0RTID0gWydQT1NUJywgJ1BVVCcsICdERUxFVEUnXTtcblxuLyoqXG4gKiBUcnVlIHdoZW4gdGhpcyByZXF1ZXN0IGlzIGEgUkVUUlkgb2YgYW4gaWRlbXBvdGVudCBtdXRhdGlvbiB3aG9zZSBvcmlnaW5hbFxuICogaGFzIENPTVBMRVRFRCAoYSBjYWNoZWQgMnh4IG9uIHJlY29yZCkg4oCUIGkuZS4gdGhlIGlkZW1wb3RlbmN5IG1pZGRsZXdhcmUgd2lsbFxuICogcmVwbGF5IGl0IHdpdGhvdXQgcnVubmluZyB0aGUgaGFuZGxlci4gVGhlIGFwaUNhbGxzIGNoZWNrIHVzZXMgaXQgdG8gc2tpcFxuICogdGhlIGdhdGUgZm9yIHN1Y2ggYSByZXRyeTogdGhlIHJlcGxheSBkb2VzIG5vIHdvcmsgYW5kIGlzIG5ldmVyIG1ldGVyZWQsIHNvXG4gKiByZWZ1c2luZyBpdCBhdCB0aGUgcXVvdGEgZ2F0ZSAod2hpY2ggcnVucyBpbiByZXF1aXJlQXV0aCwgQkVGT1JFIHJlcGxheVxuICogZGV0ZWN0aW9uIGluIG1vc3QgY2hhaW5zKSB3b3VsZCA0MjkgYSBjbGllbnQgZm9yIHJlLXJlYWRpbmcgaXRzIG93biByZXN1bHQuXG4gKlxuICogT25lIHN0b3JlIHJlYWQsIGFuZCBvbmx5IGZvciBhIG11dGF0aW9uIGNhcnJ5aW5nIGBJZGVtcG90ZW5jeS1LZXlgOyBldmVyeVxuICogZmFpbHVyZSBhbnN3ZXJzIGBmYWxzZWAgKHRoZSBnYXRlIHRoZW4gcnVucyBhcyB1c3VhbCkuIFVzZXMgdGhlIHByb2Nlc3Mtd2lkZVxuICogc3RvcmUg4oCUIHRoZSBzYW1lIG9uZSB0aGUgcm91dGUgY2hhaW5zJyBtaWRkbGV3YXJlIHJlc29sdmVzLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaGFzQ29tcGxldGVkSWRlbXBvdGVudFJlc3BvbnNlKHJlcTogUmVxdWVzdCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICBjb25zdCBrZXkgPSByZXEuaGVhZGVycz8uWydpZGVtcG90ZW5jeS1rZXknXTtcbiAgaWYgKHR5cGVvZiBrZXkgIT09ICdzdHJpbmcnIHx8ICFrZXkgfHwgIUlERU1QT1RFTlRfTUVUSE9EUy5pbmNsdWRlcyhyZXEubWV0aG9kKSkgcmV0dXJuIGZhbHNlO1xuICBjb25zdCBmdWxsS2V5ID0gaWRlbXBvdGVuY3lTdG9yZUtleShyZXEsIGtleSk7XG4gIGlmICghZnVsbEtleSkgcmV0dXJuIGZhbHNlO1xuICB0cnkge1xuICAgIGNvbnN0IGNhY2hlZCA9IGF3YWl0IGRlZmF1bHRTdG9yZS5nZXQoZnVsbEtleSk7XG4gICAgcmV0dXJuICEhY2FjaGVkICYmICFjYWNoZWQucGVuZGluZztcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSWRlbXBvdGVuY3lNaWRkbGV3YXJlT3B0aW9ucyB7XG4gIC8qKiBDdXN0b20gc3RvcmUgYmFja2VuZC4gRGVmYXVsdHMgdG8gdGhlIHByb2Nlc3Mtd2lkZSBzdG9yZSBzZXQgdmlhXG4gICAqICB7QGxpbmsgc2V0SWRlbXBvdGVuY3lTdG9yZX0gKGluLW1lbW9yeSB1bnRpbCBgY3JlYXRlQXBwYCB3aXJlcyBSZWRpcykuICovXG4gIHN0b3JlPzogSWRlbXBvdGVuY3lTdG9yZTtcbn1cblxuLyoqXG4gKiBNaWRkbGV3YXJlIHRoYXQgc3VwcG9ydHMgaWRlbXBvdGVuY3kga2V5cyBmb3IgUE9TVC9QVVQvREVMRVRFIG11dGF0aW9ucy5cbiAqXG4gKiBXaGVuIGEgcmVxdWVzdCBpbmNsdWRlcyB0aGUgYElkZW1wb3RlbmN5LUtleWAgaGVhZGVyOlxuICogLSBGaXJzdCBjYWxsOiBwcm9jZXNzZXMgbm9ybWFsbHksIGNhY2hlcyB0aGUgcmVzcG9uc2VcbiAqIC0gU3Vic2VxdWVudCBjYWxscyB3aXRoIHNhbWUga2V5OiByZXR1cm5zIGNhY2hlZCByZXNwb25zZSAocHJldmVudHMgZHVwbGljYXRlIG11dGF0aW9ucylcbiAqXG4gKiBEZWZhdWx0cyB0byBhbiBpbi1tZW1vcnkgc3RvcmUgKHNpbmdsZS1yZXBsaWNhKS4gUGFzcyBhIGN1c3RvbVxuICogY3Jvc3MtcmVwbGljYSBgeyBzdG9yZSB9YCBpbXBsZW1lbnRpbmcgYElkZW1wb3RlbmN5U3RvcmVgIHRvIGRlZHVwZSBhY3Jvc3NcbiAqIHJlcGxpY2FzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaWRlbXBvdGVuY3lNaWRkbGV3YXJlKG9wdGlvbnM6IElkZW1wb3RlbmN5TWlkZGxld2FyZU9wdGlvbnMgPSB7fSkge1xuICAvLyBSZXNvbHZlIHRoZSBzdG9yZSBQRVIgUkVRVUVTVCAobm90IGF0IGZhY3RvcnkgdGltZSkgc28gYSBzdG9yZSBpbmplY3RlZCBieVxuICAvLyBjcmVhdGVBcHAgQUZURVIgdGhlIHJvdXRlIGNoYWlucyBhcmUgYnVpbHQgc3RpbGwgdGFrZXMgZWZmZWN0LiBBbiBleHBsaWNpdFxuICAvLyBgb3B0aW9ucy5zdG9yZWAgYWx3YXlzIHdpbnMuXG4gIGNvbnN0IGV4cGxpY2l0U3RvcmUgPSBvcHRpb25zLnN0b3JlO1xuICBjb25zdCB0dGxNcyA9IENvcmVDb25zdGFudHMuSURFTVBPVEVOQ1lfVFRMX01TO1xuICBjb25zdCB0dGxTZWMgPSBNYXRoLmZsb29yKHR0bE1zIC8gMTAwMCk7XG4gIC8vIEEgcmVzZXJ2YXRpb24gbGl2ZXMgb25seSBhcyBsb25nIGFzIGEgaGFuZGxlciBwbGF1c2libHkgcnVuczogaWYgdGhlXG4gIC8vIHByb2Nlc3MgZGllcyBtaWQtaGFuZGxlciBub3RoaW5nIGV2ZXIgc2V0dGxlcyBpdCwgYW5kIHRoaXMg4oCUIG5vdCB0aGUgZnVsbFxuICAvLyByZXBsYXkgVFRMIOKAlCBpcyBob3cgbG9uZyByZXRyaWVzIG9mIHRoYXQga2V5IGFyZSByZWZ1c2VkLlxuICBjb25zdCBwZW5kaW5nVHRsTXMgPSBNYXRoLm1pbihDb3JlQ29uc3RhbnRzLklERU1QT1RFTkNZX1BFTkRJTkdfVFRMX01TLCB0dGxNcyk7XG4gIGNvbnN0IHBlbmRpbmdUdGxTZWMgPSBNYXRoLm1heCgxLCBNYXRoLmZsb29yKHBlbmRpbmdUdGxNcyAvIDEwMDApKTtcblxuICByZXR1cm4gKHJlcTogUmVxdWVzdCwgcmVzOiBSZXNwb25zZSwgbmV4dDogTmV4dEZ1bmN0aW9uKSA9PiB7XG4gICAgY29uc3Qgc3RvcmUgPSBleHBsaWNpdFN0b3JlID8/IGRlZmF1bHRTdG9yZTtcbiAgICBjb25zdCBrZXkgPSByZXEuaGVhZGVyc1snaWRlbXBvdGVuY3kta2V5J10gYXMgc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIGlmICgha2V5KSByZXR1cm4gbmV4dCgpO1xuXG4gICAgLy8gT25seSBhcHBseSB0byBtdXRhdGlvbiBtZXRob2RzXG4gICAgaWYgKCFJREVNUE9URU5UX01FVEhPRFMuaW5jbHVkZXMocmVxLm1ldGhvZCkpIHJldHVybiBuZXh0KCk7XG5cbiAgICAvLyBPbmUgcGFzcyBwZXIgcmVxdWVzdDogYSBsYXRlciBzdGFja2VkIGNoYWluIG11c3Qgbm90IHJlLWNoZWNrIHRoZSBrZXkuXG4gICAgY29uc3QgbWFya2VkID0gcmVxIGFzIFJlcXVlc3QgJiB7IFtJREVNUE9URU5DWV9IQU5ETEVEXT86IHRydWUgfTtcbiAgICBpZiAobWFya2VkW0lERU1QT1RFTkNZX0hBTkRMRURdKSByZXR1cm4gbmV4dCgpO1xuXG4gICAgY29uc3QgZnVsbEtleSA9IGlkZW1wb3RlbmN5U3RvcmVLZXkocmVxLCBrZXkpO1xuICAgIGlmICghZnVsbEtleSkgcmV0dXJuIG5leHQoKTsgLy8gc2tpcCBpZGVtcG90ZW5jeSBmb3IgdW5hdXRoZW50aWNhdGVkIHJlcXVlc3RzXG4gICAgbWFya2VkW0lERU1QT1RFTkNZX0hBTkRMRURdID0gdHJ1ZTtcblxuICAgIC8qKiBSZWplY3QgYSBkdXBsaWNhdGUgd2hvc2Ugb3JpZ2luYWwgaXMgc3RpbGwgaW4tZmxpZ2h0LiAqL1xuICAgIGNvbnN0IHNlbmRJblByb2dyZXNzID0gKCk6IHZvaWQgPT4ge1xuICAgICAgcmVzLnNldEhlYWRlcignUmV0cnktQWZ0ZXInLCAnMScpO1xuICAgICAgc2VuZEVycm9yKHJlcywgNDA5LCAnQSByZXF1ZXN0IHdpdGggdGhpcyBJZGVtcG90ZW5jeS1LZXkgaXMgYWxyZWFkeSBiZWluZyBwcm9jZXNzZWQnLCBFcnJvckNvZGUuQ09ORkxJQ1QpO1xuICAgIH07XG5cbiAgICBzdG9yZS5nZXQoZnVsbEtleSkudGhlbihhc3luYyAoY2FjaGVkKSA9PiB7XG4gICAgICBpZiAoY2FjaGVkICYmICFjYWNoZWQucGVuZGluZykge1xuICAgICAgICAvLyBDb21wbGV0ZWQgcmVzcG9uc2Ugb24gcmVjb3JkIOKGkiByZXBsYXkgaXQuXG4gICAgICAgIGxvZ2dlci5kZWJ1ZygnSWRlbXBvdGVudCByZXF1ZXN0IHJlcGxheWVkJywgeyBrZXk6IGZ1bGxLZXkgfSk7XG4gICAgICAgIChyZXMubG9jYWxzID8/PSB7fSlbSURFTVBPVEVOVF9SRVBMQVlfTE9DQUxdID0gdHJ1ZTtcbiAgICAgICAgcmVzLnNldEhlYWRlcignWC1JZGVtcG90ZW50LVJlcGxheWVkJywgJ3RydWUnKTtcbiAgICAgICAgcmVzLnN0YXR1cyhjYWNoZWQuc3RhdHVzQ29kZSkuanNvbihjYWNoZWQuYm9keSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChjYWNoZWQgJiYgY2FjaGVkLnBlbmRpbmcpIHtcbiAgICAgICAgLy8gVGhlIG9yaWdpbmFsIGlzIHN0aWxsIHJ1bm5pbmcg4oCUIGRvbid0IHJ1biB0aGUgbXV0YXRpb24gYSBzZWNvbmQgdGltZS5cbiAgICAgICAgbG9nZ2VyLmRlYnVnKCdJZGVtcG90ZW50IHJlcXVlc3QgcmVqZWN0ZWQgKGluIHByb2dyZXNzKScsIHsga2V5OiBmdWxsS2V5IH0pO1xuICAgICAgICByZXR1cm4gc2VuZEluUHJvZ3Jlc3MoKTtcbiAgICAgIH1cblxuICAgICAgLy8gQXRvbWljYWxseSByZXNlcnZlIHRoZSBrZXkuIExvc2luZyB0aGlzIHJhY2UgbWVhbnMgYSBjb25jdXJyZW50IHJlcXVlc3RcbiAgICAgIC8vIHdpdGggdGhlIHNhbWUga2V5IGdvdCB0aGVyZSBmaXJzdCBhbmQgaXMgaW4tZmxpZ2h0IOKGkiA0MDkuXG4gICAgICBjb25zdCB3b24gPSBhd2FpdCBzdG9yZS5yZXNlcnZlKFxuICAgICAgICBmdWxsS2V5LFxuICAgICAgICB7IHN0YXR1c0NvZGU6IDAsIGJvZHk6IG51bGwsIHBlbmRpbmc6IHRydWUsIGV4cGlyZXNBdDogRGF0ZS5ub3coKSArIHBlbmRpbmdUdGxNcyB9LFxuICAgICAgICBwZW5kaW5nVHRsU2VjLFxuICAgICAgKTtcbiAgICAgIGlmICghd29uKSB7XG4gICAgICAgIGxvZ2dlci5kZWJ1ZygnSWRlbXBvdGVudCByZXF1ZXN0IHJlamVjdGVkIChsb3N0IHJlc2VydmUgcmFjZSknLCB7IGtleTogZnVsbEtleSB9KTtcbiAgICAgICAgcmV0dXJuIHNlbmRJblByb2dyZXNzKCk7XG4gICAgICB9XG5cbiAgICAgIC8vIFdlIG93biB0aGUgcmVzZXJ2YXRpb24uIEl0IE1VU1QgYmUgcmVzb2x2ZWQgZXhhY3RseSBvbmNlIOKAlCBlaXRoZXIgdGhlXG4gICAgICAvLyByZWFsIDJ4eCByZXNwb25zZSBpcyBjYWNoZWQgZm9yIHJlcGxheSwgb3IgdGhlIHJlc2VydmF0aW9uIGlzIHJlbGVhc2VkIHNvXG4gICAgICAvLyBhIHJldHJ5IGNhbiBwcm9jZWVkLiBgc2V0dGxlZGAgZ3VhcmRzIGFnYWluc3QgYSBkb3VibGUtcmVzb2x2ZS5cbiAgICAgIGxldCBzZXR0bGVkID0gZmFsc2U7XG4gICAgICBsZXQgY2FwdHVyZWRCb2R5OiB1bmtub3duO1xuICAgICAgbGV0IGJvZHlDYXB0dXJlZCA9IGZhbHNlO1xuXG4gICAgICAvKiogUmVtZW1iZXIgdGhlIHJlc3BvbnNlIGJvZHkgZm9yIHJlcGxheSAoZmlyc3QgY2FwdHVyZSB3aW5zKS4gKi9cbiAgICAgIGNvbnN0IGNhcHR1cmVCb2R5ID0gKGJvZHk6IHVua25vd24pOiB2b2lkID0+IHtcbiAgICAgICAgaWYgKCFib2R5Q2FwdHVyZWQpIHtcbiAgICAgICAgICBjYXB0dXJlZEJvZHkgPSBib2R5O1xuICAgICAgICAgIGJvZHlDYXB0dXJlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHJlbGVhc2UgPSAoKTogdm9pZCA9PiB7XG4gICAgICAgIGlmIChzZXR0bGVkKSByZXR1cm47XG4gICAgICAgIHNldHRsZWQgPSB0cnVlO1xuICAgICAgICBzdG9yZS5kZWxldGUoZnVsbEtleSkuY2F0Y2goKGVycikgPT4ge1xuICAgICAgICAgIGxvZ2dlci53YXJuKCdJZGVtcG90ZW5jeSByZXNlcnZhdGlvbiByZWxlYXNlIGZhaWxlZCcsIHsga2V5OiBmdWxsS2V5LCBlcnJvcjogZXJyb3JNZXNzYWdlKGVycikgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfTtcblxuICAgICAgY29uc3QgY2FjaGVTdWNjZXNzID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICBpZiAoc2V0dGxlZCkgcmV0dXJuO1xuICAgICAgICBzZXR0bGVkID0gdHJ1ZTtcbiAgICAgICAgc3RvcmUuc2V0KGZ1bGxLZXksIHtcbiAgICAgICAgICBzdGF0dXNDb2RlOiByZXMuc3RhdHVzQ29kZSxcbiAgICAgICAgICBib2R5OiBib2R5Q2FwdHVyZWQgPyBjYXB0dXJlZEJvZHkgOiBudWxsLFxuICAgICAgICAgIGV4cGlyZXNBdDogRGF0ZS5ub3coKSArIHR0bE1zLFxuICAgICAgICB9LCB0dGxTZWMpLmNhdGNoKChlcnIpID0+IHtcbiAgICAgICAgICBsb2dnZXIud2FybignSWRlbXBvdGVuY3kgc3RvcmUuc2V0IGZhaWxlZCcsIHsga2V5OiBmdWxsS2V5LCBlcnJvcjogZXJyb3JNZXNzYWdlKGVycikgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfTtcblxuICAgICAgLyoqXG4gICAgICAgKiBSZXNvbHZlIHRoZSByZXNlcnZhdGlvbiBmcm9tIHRoZSBBQ1RVQUwgZmluYWwgc3RhdHVzOiBhIDJ4eCBpcyBjYWNoZWQgZm9yXG4gICAgICAgKiByZXBsYXk7IGFueXRoaW5nIGVsc2UgKHRoZSBoYW5kbGVyIHJlZnVzZWQgb3IgZmFpbGVkIOKAlCB0aGUgbXV0YXRpb24gZGlkXG4gICAgICAgKiBub3QgdGFrZSBlZmZlY3QpIHJlbGVhc2VzIHRoZSBrZXkgc28gYSByZXRyeSBnZW51aW5lbHkgcmUtcnVucy5cbiAgICAgICAqL1xuICAgICAgY29uc3Qgc2V0dGxlRnJvbVN0YXR1cyA9ICgpOiB2b2lkID0+IHtcbiAgICAgICAgaWYgKHNldHRsZWQpIHJldHVybjtcbiAgICAgICAgaWYgKHJlcy5zdGF0dXNDb2RlID49IDIwMCAmJiByZXMuc3RhdHVzQ29kZSA8IDMwMCkgY2FjaGVTdWNjZXNzKCk7XG4gICAgICAgIGVsc2UgcmVsZWFzZSgpO1xuICAgICAgfTtcblxuICAgICAgLy8gRmFzdCBwYXRoOiByZXMuanNvbiBpcyB0aGUgY29tbW9uIGNvbXBsZXRpb24uIENhcHR1cmUgdGhlIGJvZHkgYW5kIHNldHRsZVxuICAgICAgLy8gaW1tZWRpYXRlbHkgb2ZmIHRoZSBzdGF0dXMgc2V0IGJ5IHJlcy5zdGF0dXMoLi4uKS5qc29uKC4uLikuXG4gICAgICBjb25zdCBvcmlnaW5hbEpzb24gPSByZXMuanNvbi5iaW5kKHJlcyk7XG4gICAgICByZXMuanNvbiA9IChib2R5OiB1bmtub3duKSA9PiB7XG4gICAgICAgIHJlcy5zZXRIZWFkZXIoJ1gtSWRlbXBvdGVudC1SZXBsYXllZCcsICdmYWxzZScpO1xuICAgICAgICBjYXB0dXJlQm9keShib2R5KTtcbiAgICAgICAgc2V0dGxlRnJvbVN0YXR1cygpO1xuICAgICAgICByZXR1cm4gb3JpZ2luYWxKc29uKGJvZHkpO1xuICAgICAgfTtcblxuICAgICAgLy8gQm9keS1jYXB0dXJlIGJhY2tzdG9wcyBmb3IgY29tcGxldGlvbnMgdGhhdCBieXBhc3MgcmVzLmpzb25cbiAgICAgIC8vIChyZXMuc2VuZCAvIHJlcy5lbmQgLyByZXMuc2VuZEZpbGUg4oaSIHJlcy5lbmQpLiBUaGVzZSBvbmx5IFJFQ09SRCB0aGUgYm9keTtcbiAgICAgIC8vIHRoZSBhY3R1YWwgc2V0dGxlIGhhcHBlbnMgb24gYGZpbmlzaGAgZnJvbSB0aGUgcmVhbCBzdGF0dXMgY29kZS4gRmlyc3RcbiAgICAgIC8vIGNhcHR1cmUgd2lucywgc28gcmVzLmpzb24ncyBib2R5IGlzIG5ldmVyIGNsb2JiZXJlZCBieSBpdHMgaW50ZXJuYWxcbiAgICAgIC8vIHJlcy5zZW5kL3Jlcy5lbmQgY2FsbHMuXG4gICAgICBjb25zdCBwYXRjaGVkID0gcmVzIGFzIHVua25vd24gYXMge1xuICAgICAgICBzZW5kPzogKGJvZHk/OiB1bmtub3duKSA9PiB1bmtub3duO1xuICAgICAgICBlbmQ/OiAoLi4uYXJnczogdW5rbm93bltdKSA9PiB1bmtub3duO1xuICAgICAgICBvbj86IChldmVudDogc3RyaW5nLCBjYjogKCkgPT4gdm9pZCkgPT4gdW5rbm93bjtcbiAgICAgIH07XG4gICAgICBpZiAodHlwZW9mIHBhdGNoZWQuc2VuZCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjb25zdCBvcmlnaW5hbFNlbmQgPSBwYXRjaGVkLnNlbmQuYmluZChyZXMpO1xuICAgICAgICBwYXRjaGVkLnNlbmQgPSAoYm9keT86IHVua25vd24pID0+IHtcbiAgICAgICAgICBjYXB0dXJlQm9keShib2R5KTtcbiAgICAgICAgICByZXR1cm4gb3JpZ2luYWxTZW5kKGJvZHkpO1xuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgaWYgKHR5cGVvZiBwYXRjaGVkLmVuZCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjb25zdCBvcmlnaW5hbEVuZCA9IHBhdGNoZWQuZW5kLmJpbmQocmVzKTtcbiAgICAgICAgcGF0Y2hlZC5lbmQgPSAoLi4uYXJnczogdW5rbm93bltdKSA9PiB7XG4gICAgICAgICAgY29uc3QgY2h1bmsgPSBhcmdzWzBdO1xuICAgICAgICAgIGlmIChjaHVuayAhPT0gdW5kZWZpbmVkICYmIHR5cGVvZiBjaHVuayAhPT0gJ2Z1bmN0aW9uJykgY2FwdHVyZUJvZHkoY2h1bmspO1xuICAgICAgICAgIGNvbnN0IG91dCA9IG9yaWdpbmFsRW5kKC4uLmFyZ3MpO1xuICAgICAgICAgIC8vIFRoZSBoYW5kbGVyIGhhcyBwcm9kdWNlZCBpdHMgZmluYWwgc3RhdHVzLiBTZXR0bGUgSEVSRSByYXRoZXIgdGhhblxuICAgICAgICAgIC8vIHdhaXRpbmcgZm9yICdmaW5pc2gnOiBhZnRlciBhIGNsaWVudCBkaXNjb25uZWN0ICdmaW5pc2gnIG5ldmVyIGZpcmVzLFxuICAgICAgICAgIC8vIGFuZCB0aGUgaGFuZGxlcidzIG91dGNvbWUgbXVzdCBzdGlsbCBiZSByZWNvcmRlZC5cbiAgICAgICAgICBzZXR0bGVGcm9tU3RhdHVzKCk7XG4gICAgICAgICAgcmV0dXJuIG91dDtcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgLy8gQmFja3N0b3AgZm9yIEFOWSBjb21wbGV0aW9uIHBhdGgg4oCUIGluY2x1ZGluZyBhIDJ4eCB0aGF0IGZpbmlzaGVkIHZpYVxuICAgICAgLy8gcmVzLnNlbmQvcmVzLmVuZC9yZXMuc2VuZEZpbGUvMjA0IGFuZCBuZXZlciBoaXQgdGhlIHBhdGNoZWQgcmVzLmpzb24uXG4gICAgICAvLyBEZWNpZGluZyBvbiB0aGUgcmVhbCBmaW5hbCBzdGF0dXMgaGVyZSBtZWFucyBhIHN1Y2Nlc3NmdWwgb3AgaXMgY2FjaGVkXG4gICAgICAvLyAob3IgYSBmYWlsZWQgb25lIHJlbGVhc2VkKSBpbnN0ZWFkIG9mIHN0cmFuZGluZyB0aGUgcmVzZXJ2YXRpb24gYW5kXG4gICAgICAvLyA0MDktaW5nIGV2ZXJ5IHJldHJ5IGZvciB0aGUgZnVsbCBUVEwuIEd1YXJkZWQg4oCUIHRlc3QgZG91YmxlcyBtYXkgbm90IGJlXG4gICAgICAvLyBFdmVudEVtaXR0ZXJzOyByZXMuanNvbidzIGZhc3QgcGF0aCBhbHJlYWR5IHNldHRsZWQgdGhlIGNvbW1vbiBjYXNlLlxuICAgICAgaWYgKHR5cGVvZiBwYXRjaGVkLm9uID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHBhdGNoZWQub24oJ2ZpbmlzaCcsIHNldHRsZUZyb21TdGF0dXMpO1xuICAgICAgICAvLyBBIGNsaWVudCB0aGF0IGRpc2Nvbm5lY3RzIGVtaXRzICdjbG9zZScgV0lUSE9VVCAnZmluaXNoJyDigJQgYnV0IHRoZVxuICAgICAgICAvLyBIQU5ETEVSIGtlZXBzIHJ1bm5pbmcgYW5kIG1heSBzdGlsbCBjb21taXQgdGhlIG11dGF0aW9uLiBSZWxlYXNpbmdcbiAgICAgICAgLy8gaGVyZSBsZXQgdGhlIGNsaWVudCdzIHJldHJ5IHJ1biBpdCBhIHNlY29uZCB0aW1lIChhIGR1cGxpY2F0ZSBjcmVhdGUgL1xuICAgICAgICAvLyBkb3VibGUgY2hhcmdlIOKAlCB0aGUgdmVyeSB0aGluZyB0aGUga2V5IGV4aXN0cyB0byBwcmV2ZW50KS4gU28gdGhlXG4gICAgICAgIC8vIHJlc2VydmF0aW9uIHN0YXlzIHBlbmRpbmc6IHRoZSBoYW5kbGVyJ3Mgb3duIGNvbXBsZXRpb24gc2V0dGxlcyBpdFxuICAgICAgICAvLyAocmVzLmpzb24gLyByZXMuZW5kIGFib3ZlKSwgYW5kIGlmIHRoZSBwcm9jZXNzIGRpZXMgaW5zdGVhZCwgdGhlXG4gICAgICAgIC8vIHNob3J0IHBlbmRpbmcgVFRMIGZyZWVzIHRoZSBrZXkuXG4gICAgICB9XG5cbiAgICAgIG5leHQoKTtcbiAgICB9KS5jYXRjaCgoZXJyKSA9PiB7XG4gICAgICAvLyBJZiB0aGUgc3RvcmUgYmFja2VuZCBpcyBkb3duLCBmYWlsIG9wZW4g4oCUIHByb2Nlc3MgdGhlIHJlcXVlc3Qgbm9ybWFsbHkuXG4gICAgICBsb2dnZXIud2FybignSWRlbXBvdGVuY3kgc3RvcmUuZ2V0IGZhaWxlZDsgcHJvY2VlZGluZyB3aXRob3V0IGRlZHVwJywgeyBrZXk6IGZ1bGxLZXksIGVycm9yOiBlcnJvck1lc3NhZ2UoZXJyKSB9KTtcbiAgICAgIG5leHQoKTtcbiAgICB9KTtcbiAgfTtcbn1cbiJdfQ==
|
package/lib/api/index.js
CHANGED
|
@@ -35,4 +35,4 @@ export * from './server.js';
|
|
|
35
35
|
export { isReady, setReady, readinessGuard } from './readiness.js';
|
|
36
36
|
// Route wrapper
|
|
37
37
|
export * from './route-wrapper.js';
|
|
38
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcGkvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxhQUFhO0FBQ2IsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ25FLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsa0JBQWtCLENBQUM7QUFFakMsY0FBYztBQUNkLGNBQWMsa0JBQWtCLENBQUM7QUFFakMsdUJBQXVCO0FBQ3ZCLGNBQWMsb0JBQW9CLENBQUM7QUFFbkMsMkRBQTJEO0FBQzNELGNBQWMsb0JBQW9CLENBQUM7QUFFbkMsZ0JBQWdCO0FBQ2hCLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYywwQkFBMEIsQ0FBQztBQUV6Qyw2RUFBNkU7QUFDN0UsK0VBQStFO0FBQy9FLG1EQUFtRDtBQUNuRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsa0JBQWtCLEVBQUUsdUJBQXVCLEVBQXlCLE1BQU0sNkJBQTZCLENBQUM7QUFFdEksK0VBQStFO0FBQy9FLGdGQUFnRjtBQUNoRixPQUFPLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN4RCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLG1CQUFtQixFQUFzQixNQUFNLGNBQWMsQ0FBQztBQUUvSSxtQkFBbUI7QUFDbkIsY0FBYyxhQUFhLENBQUM7QUFFNUIsZ0ZBQWdGO0FBQ2hGLDRFQUE0RTtBQUM1RSxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVuRSxnQkFBZ0I7QUFDaEIsY0FBYyxvQkFBb0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG4vLyBNaWRkbGV3YXJlXG5leHBvcnQgKiBmcm9tICcuL21pZGRsZXdhcmUtZmFjdG9yeS5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnRleHQtbWlkZGxld2FyZS5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2NoZWNrLXF1b3RhLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vbWV0ZXItcXVvdGEuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9yYXRlLWxpbWl0LWJ5LW9yZy5qcyc7XG5leHBvcnQgeyBjcmVhdGVTaGFyZWRSYXRlTGltaXRTdG9yZSB9IGZyb20gJy4vcmF0ZS1saW1pdC1zdG9yZS5qcyc7XG5leHBvcnQgKiBmcm9tICcuL3JlcXVpcmUtb3JnLWlkLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vdGVuYW50LWNvbnRleHQuanMnO1xuZXhwb3J0ICogZnJvbSAnLi93cml0ZS1waW4uanMnO1xuZXhwb3J0ICogZnJvbSAnLi9nZXQtY29udGV4dC5qcyc7XG5cbi8vIEFwcCBmYWN0b3J5XG5leHBvcnQgKiBmcm9tICcuL2FwcC1mYWN0b3J5LmpzJztcblxuLy8gSGVhbHRoLWNoZWNrIGhlbHBlcnNcbmV4cG9ydCAqIGZyb20gJy4vaGVhbHRoLWNoZWNrcy5qcyc7XG5cbi8vIE1vbmdvREIgY29ubmVjdGlvbiBoZWxwZXIgKGRlcGVuZGVuY3ktaW5qZWN0ZWQgbW9uZ29vc2UpXG5leHBvcnQgKiBmcm9tICcuL21vbmdvLWNvbm5lY3QuanMnO1xuXG4vLyBRdW90YSBoZWxwZXJzXG5leHBvcnQgKiBmcm9tICcuL3F1b3RhLXJlc2VydmF0aW9uLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vYWktY2FsbC1yZXNlcnZhdGlvbi5qcyc7XG5cbi8vIElkZW1wb3RlbmN5IOKAlCBvbmx5IHRoZSBzdG9yZSBhY2Nlc3NvciBpcyBwdWJsaWM7IHRoZSBtaWRkbGV3YXJlLCB0aGUgc3RvcmVcbi8vIGZhY3RvcmllcyBhbmQgdGhlIHN0b3JlIHNldHRlciBhcmUgd2lyZWQgYnkgYGNyZWF0ZUFwcGAvYG1pZGRsZXdhcmUtZmFjdG9yeWBcbi8vIGluc2lkZSB0aGlzIHBhY2thZ2UgYW5kIGhhdmUgbm8gZXh0ZXJuYWwgY2FsbGVyLlxuZXhwb3J0IHsgZ2V0SWRlbXBvdGVuY3lTdG9yZSwgaXNJZGVtcG90ZW50UmVwbGF5LCBJREVNUE9URU5UX1JFUExBWV9MT0NBTCwgdHlwZSBJZGVtcG90ZW5jeVN0b3JlIH0gZnJvbSAnLi9pZGVtcG90ZW5jeS1taWRkbGV3YXJlLmpzJztcblxuLy8gT2JzZXJ2YWJpbGl0eS4gYHNodXRkb3duVHJhY2luZ2AgaXMgY2FsbGVkIGJ5IHRoaXMgcGFja2FnZSdzIG93biBgc2VydmVyLmpzYFxuLy8gc2h1dGRvd24gcGF0aCwgYW5kIHRoZSBtZXRyaWNzIG1pZGRsZXdhcmUvaGFuZGxlciBhcmUgbW91bnRlZCBieSBgY3JlYXRlQXBwYC5cbmV4cG9ydCB7IHdpdGhTcGFuLCBjdXJyZW50VHJhY2VJZCB9IGZyb20gJy4vdHJhY2luZy5qcyc7XG5leHBvcnQgeyByZWdpc3RlclNlY3JldFJvdGF0aW9uR2F1Z2UsIGluY0NvdW50ZXIsIG9ic2VydmUsIHNldEdhdWdlLCByZXNldEdhdWdlLCBjcmVhdGVNZXRyaWNIZWxwZXJzLCB0eXBlIE1ldHJpY0hlbHBlcnMgfSBmcm9tICcuL21ldHJpY3MuanMnO1xuXG4vLyBTZXJ2ZXIgdXRpbGl0aWVzXG5leHBvcnQgKiBmcm9tICcuL3NlcnZlci5qcyc7XG5cbi8vIFJlYWRpbmVzcyBzdGF0ZSArIGd1YXJkIG1pZGRsZXdhcmUuIGBERUZBVUxUX1JFQURJTkVTU19CWVBBU1NgIGlzIHRoZSBndWFyZCdzXG4vLyBvd24gZGVmYXVsdCDigJQgY2FsbGVycyBwYXNzIHRoZWlyIG93biBsaXN0IG9yIHRha2UgdGhlIGRlZmF1bHQgaW1wbGljaXRseS5cbmV4cG9ydCB7IGlzUmVhZHksIHNldFJlYWR5LCByZWFkaW5lc3NHdWFyZCB9IGZyb20gJy4vcmVhZGluZXNzLmpzJztcblxuLy8gUm91dGUgd3JhcHBlclxuZXhwb3J0ICogZnJvbSAnLi9yb3V0ZS13cmFwcGVyLmpzJztcblxuLy8gUmVxdWVzdC9SZXNwb25zZSB0eXBlcy4gYGNyZWF0ZVJlcXVlc3RDb250ZXh0YCBpcyB0aGUgZmFjdG9yeVxuLy8gYGF0dGFjaFJlcXVlc3RDb250ZXh0YCBjYWxsczsgaXQgaXMgbm90IHBhcnQgb2YgdGhlIHB1YmxpYyBzdXJmYWNlLlxuZXhwb3J0IHR5cGUgeyBSZXF1ZXN0TG9nZ2VyLCBSZXF1ZXN0Q29udGV4dCB9IGZyb20gJy4vcmVxdWVzdC10eXBlcy5qcyc7XG4iXX0=
|
package/lib/api/meter-quota.js
CHANGED
|
@@ -127,4 +127,4 @@ export function apiCallsQuota(quotaService) {
|
|
|
127
127
|
deferredCheckQuota(quotaService, 'apiCalls'),
|
|
128
128
|
];
|
|
129
129
|
}
|
|
130
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0ZXItcXVvdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXBpL21ldGVyLXF1b3RhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGNBQWMsRUFBRSxrQkFBa0IsRUFBRSxZQUFZLEVBQUUsbUJBQW1CLEVBQUUsMkJBQTJCLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFHbEwsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFdBQVcsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUVqRSxNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUMsYUFBYSxDQUFDLENBQUM7QUFFM0M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1ERztBQUNILE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxZQUEwQixFQUFFLFNBQW9CO0lBQ2xGLE9BQU8sWUFBWSxDQUFDLENBQUMsR0FBWSxFQUFFLEdBQWEsRUFBRSxJQUFrQixFQUFRLEVBQUU7UUFDNUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFO1lBQ3BCLElBQUksQ0FBQztnQkFDSCwwQ0FBMEM7Z0JBQzFDLElBQUksR0FBRyxDQUFDLFVBQVUsR0FBRyxHQUFHLElBQUksR0FBRyxDQUFDLFVBQVUsSUFBSSxHQUFHO29CQUFFLE9BQU87Z0JBQzFELDBEQUEwRDtnQkFDMUQsSUFBSSxrQkFBa0IsQ0FBQyxHQUFHLENBQUM7b0JBQUUsT0FBTztnQkFDcEMsK0RBQStEO2dCQUMvRCw2RUFBNkU7Z0JBQzdFLDJFQUEyRTtnQkFDM0Usd0VBQXdFO2dCQUN4RSw2RUFBNkU7Z0JBQzdFLCtEQUErRDtnQkFDL0QsRUFBRTtnQkFDRixxRUFBcUU7Z0JBQ3JFLDBFQUEwRTtnQkFDMUUsd0VBQXdFO2dCQUN4RSxxQ0FBcUM7Z0JBQ3JDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLGNBQWM7b0JBQUUsT0FBTztnQkFDdEMsSUFBSSxLQUF5QixDQUFDO2dCQUM5QixJQUFJLENBQUM7b0JBQUMsS0FBSyxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO2dCQUFDLENBQUM7Z0JBQUMsTUFBTSxDQUFDO29CQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQztnQkFBQyxDQUFDO2dCQUMxRixJQUFJLENBQUMsS0FBSztvQkFBRSxPQUFPO2dCQUNuQix1RUFBdUU7Z0JBQ3ZFLHFFQUFxRTtnQkFDckUsTUFBTSxTQUFTLEdBQUcsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQzFDLElBQUksU0FBUyxLQUFLLFNBQVMsSUFBSSxDQUFDLFNBQVMsSUFBSSxTQUFTLEtBQUssVUFBVSxDQUFDO29CQUFFLE9BQU87Z0JBQy9FLHVDQUF1QztnQkFDdkMsSUFBSSxTQUFTLEtBQUssVUFBVSxJQUFJLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUFFLE9BQU87Z0JBQ3pGLHVFQUF1RTtnQkFDdkUscUVBQXFFO2dCQUNyRSxjQUFjLENBQ1osWUFBWSxFQUNaLEtBQUssRUFDTCxtQkFBbUIsQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDLEVBQ25DLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBK0IsQ0FBQyxFQUN4RSwyQkFBMkIsQ0FBQyxHQUFHLENBQUMsQ0FDakMsQ0FBQztZQUNKLENBQUM7WUFBQyxNQUFNLENBQUM7Z0JBQ1AsdUVBQXVFO2dCQUN2RSx3RUFBd0U7WUFDMUUsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxFQUFFLENBQUM7SUFDVCxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztBQUNsRCxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxNQUFNLFVBQVUsYUFBYSxDQUFDLFlBQTBCO0lBQ3RELE9BQU87UUFDTCxtQkFBbUIsQ0FBQyxZQUFZLEVBQUUsVUFBVSxDQUFtQjtRQUMvRCxrQkFBa0IsQ0FBQyxZQUFZLEVBQUUsVUFBVSxDQUFDO0tBQzdDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCB7IGNhbGxRdW90YUV4ZW1wdGlvbiwgaW5jcmVtZW50UXVvdGEsIGlzUXVvdGFFeGVtcHRSb3V0ZSwgY3JlYXRlTG9nZ2VyLCBtZXRlcmVkUXVvdGFUeXBlRm9yLCBxdW90YUF0dHJpYnV0aW9uRnJvbVJlcXVlc3QsIHRhZ1JvdXRlR2F0ZSB9IGZyb20gJ0BwaXBlbGluZS1idWlsZGVyL2FwaS1jb3JlJztcbmltcG9ydCB0eXBlIHsgUXVvdGFUeXBlLCBRdW90YVNlcnZpY2UgfSBmcm9tICdAcGlwZWxpbmUtYnVpbGRlci9hcGktY29yZSc7XG5pbXBvcnQgdHlwZSB7IFJlcXVlc3QsIFJlcXVlc3RIYW5kbGVyLCBSZXNwb25zZSwgTmV4dEZ1bmN0aW9uIH0gZnJvbSAnZXhwcmVzcyc7XG5pbXBvcnQgeyBkZWZlcnJlZENoZWNrUXVvdGEsIHJlcXVlc3RQYXRoIH0gZnJvbSAnLi9jaGVjay1xdW90YS5qcyc7XG5pbXBvcnQgeyBnZXRDb250ZXh0IH0gZnJvbSAnLi9nZXQtY29udGV4dC5qcyc7XG5pbXBvcnQgeyBpc0lkZW1wb3RlbnRSZXBsYXkgfSBmcm9tICcuL2lkZW1wb3RlbmN5LW1pZGRsZXdhcmUuanMnO1xuXG5jb25zdCBsb2dnZXIgPSBjcmVhdGVMb2dnZXIoJ21ldGVyLXF1b3RhJyk7XG5cbi8qKlxuICogTWlkZGxld2FyZSB0aGF0IE1FVEVSUyAoaW5jcmVtZW50cykgYSBxdW90YSBjb3VudGVyIG9uY2UgcGVyIFNVQ0NFU1NGVUxcbiAqIHJlcXVlc3QsIG9uIHJlc3BvbnNlIGBmaW5pc2hgLlxuICpcbiAqIFRoZSBjb21wbGVtZW50IHRvIHtAbGluayBjaGVja1F1b3RhfTogYGNoZWNrUXVvdGFgIG9ubHkgR0FURVMgKHJlYWRzIGN1cnJlbnRcbiAqIHVzYWdlIGFuZCA0MjlzIHdoZW4gb3Zlcikg4oCUIGl0IG5ldmVyIGluY3JlbWVudHMsIHNvIGEgc2VydmljZSB0aGF0IG1vdW50cyBpdFxuICogYnV0IG5ldmVyIGluY3JlbWVudHMgY2hlY2tzIGFnYWluc3QgYSBjb3VudGVyIGl0cyBvd24gdHJhZmZpYyBuZXZlciBtb3Zlcy5cbiAqIFRoaXMgaXMgVEhFIGFwaUNhbGxzIG1ldGVyaW5nIGNvbnZlbnRpb246IHB1dCBpdCBvbiBlYWNoIG1ldGVyZWQgcm91dGUgKG9yXG4gKiBtb3VudCBpdCBhaGVhZCBvZiBhIHNlcnZpY2UncyB3aG9sZSBzdXJmYWNlKSByYXRoZXIgdGhhbiBpbmNyZW1lbnRpbmcgYnkgaGFuZFxuICogaW4gaGFuZGxlcnMuXG4gKlxuICogRmlyZS1hbmQtZm9yZ2V0ICsgZmFpbC1zYWZlIGJ5IGNvbnN0cnVjdGlvbjpcbiAqIC0gcnVucyBpbiBhIGBmaW5pc2hgIGxpc3RlbmVyLCBzbyBpdCBuZXZlciBibG9ja3Mgb3IgZmFpbHMgdGhlIHJlc3BvbnNlO1xuICogLSBgaW5jcmVtZW50UXVvdGFgIEJVRkZFUlMgdGhlIHVuaXQgKGFwaS1jb3JlIHF1b3RhLWluY3JlbWVudC1iYXRjaGVyKTogdGhlXG4gKiAgIHBvZCBzZW5kcyBvbmUgbWV0ZXJlZCBpbmNyZW1lbnQgcGVyIChvcmcsIHR5cGUpIHBlciBmbHVzaCBpbnRlcnZhbCwgc28gdGhlXG4gKiAgIGNvdW50ZXIgbGFncyBieSBhdCBtb3N0IGBRVU9UQV9JTkNSRU1FTlRfRkxVU0hfTVNgLCBhbmQgYSB1bml0IHBhc3QgdGhlIGNhcFxuICogICBpcyByZWNvcmRlZCBhcyBgb3ZlcnNob290YCByYXRoZXIgdGhhbiBjb3VudGVkLiBFcnJvcnMgYXJlIHN3YWxsb3dlZCBhbmRcbiAqICAgY291bnRlZCAoYHF1b3RhX2luY3JlbWVudF9mYWlsdXJlc190b3RhbGApO1xuICogLSBvbmx5IDJ4eCByZXNwb25zZXMgYXJlIG1ldGVyZWQgKGEgcmVqZWN0ZWQvZXJyb3JlZCByZXF1ZXN0IGNvc3RzIG5vdGhpbmcpLlxuICogICBBIDMwNCBmcm9tIGFuIEVUYWcgbWF0Y2ggaXMgbm90IDJ4eCwgc28gcmV2YWxpZGF0aW5nIGFuIHVuY2hhbmdlZFxuICogICByZXNvdXJjZSBpcyBmcmVlOyBhIHJlc3BvbnNlIHRoYXQgbmV2ZXIgRklOSVNIRVMgKGNsaWVudCBhYm9ydGVkIGEgc3RyZWFtXG4gKiAgIG1pZC1mbGlnaHQsIHNvY2tldCBkZXN0cm95ZWQpIG5ldmVyIGVtaXRzIGBmaW5pc2hgIGFuZCBpcyBub3QgY291bnRlZDtcbiAqIC0gYSByZXNwb25zZSBSRVBMQVlFRCBmcm9tIHRoZSBpZGVtcG90ZW5jeSBjYWNoZSBpcyBza2lwcGVkIOKAlCB0aGUgb3JpZ2luYWxcbiAqICAgcmVxdWVzdCBhbHJlYWR5IHBhaWQsIGFuZCB0aGUgcmVwbGF5IGRpZCBubyB3b3JrLiBUaGlzIGhvbGRzIHdoZXRoZXIgdGhlXG4gKiAgIG1ldGVyIGlzIG1vdW50ZWQgYmVmb3JlIG9yIGFmdGVyIHRoZSBpZGVtcG90ZW5jeSBtaWRkbGV3YXJlOiB0aGUgZmxhZyBpc1xuICogICByZWFkIGF0IGBmaW5pc2hgLCBhZnRlciBib3RoIGhhdmUgcnVuO1xuICogLSBhIHJlcXVlc3Qgd2l0aCBubyBWRVJJRklFRCBvcmcgKGByZXEudXNlci5vcmdhbml6YXRpb25JZGAg4oCUIHNldCBieVxuICogICByZXF1aXJlQXV0aCwgbmV2ZXIgdGhlIHNwb29mYWJsZSBoZWFkZXIgaWRlbnRpdHkpIGlzIHNraXBwZWRcbiAqICAgKHVuYXV0aGVudGljYXRlZCAvIGhlYWx0aCAvIGVhcmx5LXRlcm1pbmF0ZWQpO1xuICogLSBTRVJWSUNFLVBSSU5DSVBBTCBjYWxsZXJzIGFyZSBza2lwcGVkOiBpbnRlcm5hbCBzZXJ2aWNlLXRvLXNlcnZpY2UgdHJhZmZpY1xuICogICAoZS5nLiBhIHBlZXIgY2FsbGluZyBjb21wbGlhbmNlIGB2YWxpZGF0ZWApIG11c3Qgbm90IGJ1cm4gYSB0ZW5hbnQncyBxdW90YSDigJRcbiAqICAgdGhlIG9yaWdpbmF0aW5nIHNlcnZpY2UgYWxyZWFkeSBtZXRlcnMgdGhlIHVzZXIgYWN0aW9uIHRoYXQgdHJpZ2dlcmVkIGl0LlxuICogICBBbiBPUkcgU0VSVklDRSBBQ0NPVU5UIChvciBhIHBlcnNvbmFsIGFjY2VzcyBrZXkpIGlzIG5vdCBhIHNlcnZpY2UgcHJpbmNpcGFsXG4gKiAgIGFuZCBJUyBtZXRlcmVkIOKAlCBvbiBgYXV0b21hdGlvbkNhbGxzYCBpbnN0ZWFkIG9mIGBhcGlDYWxsc2BcbiAqICAgKHtAbGluayBtZXRlcmVkUXVvdGFUeXBlRm9yfSk7XG4gKiAtIGZvciBgYXBpQ2FsbHNgLCBhbiBJTVBFUlNPTkFUSU9OIHNlc3Npb24gYW5kIGFuIE9OLUJFSEFMRiBob3AgKGEgdXNlciB0b2tlblxuICogICBmb3J3YXJkZWQgYnkgYXNrL3BpcGVsaW5lIHdpdGggYSBzaWduZWQgbWFya2VyKSBhcmUgc2tpcHBlZCB0b28g4oCUIHNlZVxuICogICBhcGktY29yZSBgY2FsbFF1b3RhRXhlbXB0aW9uYDtcbiAqIC0gYW4gYGFwaUNhbGxzYCByZXF1ZXN0IG9uIHRoZSBmbGVldC13aWRlIGBRVU9UQV9FWEVNUFRfUk9VVEVTYCAoY29uc29sZVxuICogICBwb2xsaW5nKSBpcyBza2lwcGVkLlxuICpcbiAqIEV2ZXJ5IGluY3JlbWVudCBjYXJyaWVzIHVzYWdlIGF0dHJpYnV0aW9uIChwcmluY2lwYWwsIGtleSwgcm91dGUgcGF0dGVybixcbiAqIHBpcGVsaW5lLCByZXF1ZXN0IGlkKSBmb3IgdGhlIHF1b3RhIHNlcnZpY2UncyB1c2FnZSBsZWRnZXIuXG4gKlxuICogTW91bnQgaXQgb25jZSBwZXIgcm91dGU6IGEgc2Vjb25kIG1ldGVyIGZvciB0aGUgc2FtZSBxdW90YSB0eXBlIG9uIHRoZSBzYW1lXG4gKiByZXF1ZXN0IGRvdWJsZS1jb3VudHMgKHRoZSByb3V0ZSB0YWJsZSByZWNvcmRzIGVhY2ggbWV0ZXIsIGFuZCB0aGUgcXVvdGFcbiAqIGNvdmVyYWdlIGNoZWNrIGZhaWxzIGEgcm91dGUgbWV0ZXJlZCB0d2ljZSkuXG4gKlxuICogQHBhcmFtIHF1b3RhU2VydmljZSAtIFF1b3RhIHNlcnZpY2UgY2xpZW50XG4gKiBAcGFyYW0gcXVvdGFUeXBlIC0gV2hpY2ggcXVvdGEgdG8gbWV0ZXIgKGUuZy4gJ2FwaUNhbGxzJyDigJQgc3BsaXQgcGVyIHJlcXVlc3RcbiAqICAgaW50byBhcGlDYWxscyAvIGF1dG9tYXRpb25DYWxscyBieSBwcmluY2lwYWwpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtZXRlclF1b3RhT25TdWNjZXNzKHF1b3RhU2VydmljZTogUXVvdGFTZXJ2aWNlLCBxdW90YVR5cGU6IFF1b3RhVHlwZSkge1xuICByZXR1cm4gdGFnUm91dGVHYXRlKChyZXE6IFJlcXVlc3QsIHJlczogUmVzcG9uc2UsIG5leHQ6IE5leHRGdW5jdGlvbik6IHZvaWQgPT4ge1xuICAgIHJlcy5vbignZmluaXNoJywgKCkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgLy8gT25seSBzdWNjZXNzZnVsIHJlc3BvbnNlcyBhcmUgYmlsbGFibGUuXG4gICAgICAgIGlmIChyZXMuc3RhdHVzQ29kZSA8IDIwMCB8fCByZXMuc3RhdHVzQ29kZSA+PSAzMDApIHJldHVybjtcbiAgICAgICAgLy8gQSBjYWNoZWQgcmVwbGF5IGRpZCBubyB3b3JrOyB0aGUgb3JpZ2luYWwgYWxyZWFkeSBwYWlkLlxuICAgICAgICBpZiAoaXNJZGVtcG90ZW50UmVwbGF5KHJlcykpIHJldHVybjtcbiAgICAgICAgLy8gUmVzb2x2ZSB0aGUgb3JnIGlkIGZyb20gdGhlIFNBTUUgc291cmNlIGBjaGVja1F1b3RhYCByZWFkcyDigJRcbiAgICAgICAgLy8gYGdldENvbnRleHQoKS5pZGVudGl0eS5vcmdJZGAsIHdoaWNoIGlzIG5vcm1hbGl6ZWQgKHRyaW1tZWQgKyBsb3dlcmNhc2VkKS5cbiAgICAgICAgLy8gTWV0ZXJpbmcgb2ZmIHRoZSByYXcgYHJlcS51c2VyLm9yZ2FuaXphdGlvbklkYCB3aGlsZSB0aGUgZ2F0ZSBjaGVja3MgdGhlXG4gICAgICAgIC8vIG5vcm1hbGl6ZWQgaWQgd291bGQgbGFuZCBpbmNyZW1lbnRzIG9uIGEgZGlmZmVyZW50IGtleSB0aGFuIHRoZSBjaGVja1xuICAgICAgICAvLyByZWFkcyAoYSBzaWxlbnQgYnlwYXNzIGlmIGFuIG9yZyBpZCBldmVyIGNhcnJpZXMgbWl4ZWQgY2FzZSkuIEZhbGwgYmFjayB0b1xuICAgICAgICAvLyB0aGUgcmF3IGF1dGggb3JnIG9ubHkgd2hlbiBjb250ZXh0IG1pZGRsZXdhcmUgaXNuJ3QgbW91bnRlZC5cbiAgICAgICAgLy9cbiAgICAgICAgLy8gT25seSBhIFZFUklGSUVEIGNhbGxlciBpcyBtZXRlcmVkLiBUaGUgaW5jcmVtZW50IGlzIHNlbnQgd2l0aCBUSElTXG4gICAgICAgIC8vIHNlcnZpY2UncyBjcmVkZW50aWFscywgc28gbWV0ZXJpbmcgYW4gb3JnIHRha2VuIGZyb20gdGhlIGhlYWRlci1kZXJpdmVkXG4gICAgICAgIC8vIGlkZW50aXR5IG9mIGFuIHVuYXV0aGVudGljYXRlZCByZXF1ZXN0IHdvdWxkIGxldCBhbnlvbmUgYnVybiBhIHZpY3RpbVxuICAgICAgICAvLyBvcmcncyBxdW90YSBieSBzZXR0aW5nIGB4LW9yZy1pZGAuXG4gICAgICAgIGlmICghcmVxLnVzZXI/Lm9yZ2FuaXphdGlvbklkKSByZXR1cm47XG4gICAgICAgIGxldCBvcmdJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgICB0cnkgeyBvcmdJZCA9IGdldENvbnRleHQocmVxKS5pZGVudGl0eS5vcmdJZDsgfSBjYXRjaCB7IG9yZ0lkID0gcmVxLnVzZXIub3JnYW5pemF0aW9uSWQ7IH1cbiAgICAgICAgaWYgKCFvcmdJZCkgcmV0dXJuO1xuICAgICAgICAvLyBJbnRlcm5hbCBzZXJ2aWNlLXRvLXNlcnZpY2UgY2FsbHMgbXVzdCBub3QgY29uc3VtZSBhIHRlbmFudCdzIHF1b3RhO1xuICAgICAgICAvLyBub3IsIG9uIHRoZSBjYWxsIGJ1ZGdldCwgaW1wZXJzb25hdGlvbiBzZXNzaW9ucyBvciBvbi1iZWhhbGYgaG9wcy5cbiAgICAgICAgY29uc3QgZXhlbXB0aW9uID0gY2FsbFF1b3RhRXhlbXB0aW9uKHJlcSk7XG4gICAgICAgIGlmIChleGVtcHRpb24gPT09ICdzZXJ2aWNlJyB8fCAoZXhlbXB0aW9uICYmIHF1b3RhVHlwZSA9PT0gJ2FwaUNhbGxzJykpIHJldHVybjtcbiAgICAgICAgLy8gQ29uc29sZSBwb2xsaW5nIG5ldmVyIHNwZW5kcyBhIGNhbGwuXG4gICAgICAgIGlmIChxdW90YVR5cGUgPT09ICdhcGlDYWxscycgJiYgaXNRdW90YUV4ZW1wdFJvdXRlKHJlcS5tZXRob2QsIHJlcXVlc3RQYXRoKHJlcSkpKSByZXR1cm47XG4gICAgICAgIC8vIGluY3JlbWVudFF1b3RhIGF1dGhlbnRpY2F0ZXMgYXMgVEhJUyBzZXJ2aWNlICh0aGUgaW5jcmVtZW50IGVuZHBvaW50XG4gICAgICAgIC8vIGlzIHNlcnZpY2UtcHJpbmNpcGFsIG9ubHkg4oCUIGEgZm9yd2FyZGVkIHVzZXIgdG9rZW4gaXMgYWx3YXlzIDQwMykuXG4gICAgICAgIGluY3JlbWVudFF1b3RhKFxuICAgICAgICAgIHF1b3RhU2VydmljZSxcbiAgICAgICAgICBvcmdJZCxcbiAgICAgICAgICBtZXRlcmVkUXVvdGFUeXBlRm9yKHJlcSwgcXVvdGFUeXBlKSxcbiAgICAgICAgICAobWVzc2FnZSwgZGF0YSkgPT4gbG9nZ2VyLndhcm4obWVzc2FnZSwgZGF0YSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiksXG4gICAgICAgICAgcXVvdGFBdHRyaWJ1dGlvbkZyb21SZXF1ZXN0KHJlcSksXG4gICAgICAgICk7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgLy8gTWV0ZXJpbmcgbXVzdCBuZXZlciBhZmZlY3QgdGhlIHJlc3BvbnNlOyBhIG1pc3NpbmcgdXNlci9jb250ZXh0IGp1c3RcbiAgICAgICAgLy8gbWVhbnMgYW4gdW5hdXRoZW50aWNhdGVkIG9yIGVhcmx5LXRlcm1pbmF0ZWQgcmVxdWVzdCDigJQgc2tpcCBzaWxlbnRseS5cbiAgICAgIH1cbiAgICB9KTtcbiAgICBuZXh0KCk7XG4gIH0sIHsga2luZDogJ3F1b3RhJywgbW9kZTogJ21ldGVyJywgcXVvdGFUeXBlIH0pO1xufVxuXG4vKipcbiAqIFRIRSBhcGlDYWxscyBjb252ZW50aW9uIGZvciBhIHNlcnZpY2UncyB1c2VyIHN1cmZhY2U6IG1ldGVyIG9uY2UgcGVyIDJ4eCBBTkRcbiAqIGdhdGUgYWZ0ZXIgYXV0aGVudGljYXRpb24sIG1vdW50ZWQgT05DRSBhdCB0aGUgYXBwLXJvdXRlcyBsZXZlbCBhaGVhZCBvZiB0aGVcbiAqIHJvdXRlcnMgaXQgY292ZXJzIOKAlCBgYXBwLnVzZSgnL3RoaW5ncycsIC4uLmFwaUNhbGxzUXVvdGEocXVvdGFTZXJ2aWNlKSlgLlxuICpcbiAqIFRoZSBjaGVjayBpcyBERUZFUlJFRCB0byBgcmVxdWlyZUF1dGhgICh7QGxpbmsgZGVmZXJyZWRDaGVja1F1b3RhfSksIHNvIHRoZVxuICogbW91bnQgY2FuIHByZWNlZGUgcm91dGVycyB0aGF0IGF1dGhlbnRpY2F0ZSBwZXIgcm91dGUuIEJvdGggaGFsdmVzIHNraXBcbiAqIHNlcnZpY2UgcHJpbmNpcGFscywgdW5hdXRoZW50aWNhdGVkIHJlcXVlc3RzIGFuZCB0aGUgY29uc29sZS1wb2xsaW5nXG4gKiBgUVVPVEFfRVhFTVBUX1JPVVRFU2A7IGEgc2VydmljZSBhY2NvdW50IHNwZW5kcyBgYXV0b21hdGlvbkNhbGxzYC4gQSByb3V0ZVxuICogdW5kZXIgc3VjaCBhIHByZWZpeCBtdXN0IE5PVCBhbHNvIG1vdW50IGl0cyBvd24gYG1ldGVyUXVvdGFPblN1Y2Nlc3NgIGZvclxuICogYXBpQ2FsbHMgKHRoYXQgYmlsbHMgdHdpY2Ug4oCUIHRoZSBxdW90YSBjb3ZlcmFnZSBjaGVjayBmYWlscyBpdCkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhcGlDYWxsc1F1b3RhKHF1b3RhU2VydmljZTogUXVvdGFTZXJ2aWNlKTogUmVxdWVzdEhhbmRsZXJbXSB7XG4gIHJldHVybiBbXG4gICAgbWV0ZXJRdW90YU9uU3VjY2VzcyhxdW90YVNlcnZpY2UsICdhcGlDYWxscycpIGFzIFJlcXVlc3RIYW5kbGVyLFxuICAgIGRlZmVycmVkQ2hlY2tRdW90YShxdW90YVNlcnZpY2UsICdhcGlDYWxscycpLFxuICBdO1xufVxuIl19
|
|
130
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0ZXItcXVvdGEuanMiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcGkvbWV0ZXItcXVvdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsY0FBYyxFQUFFLGtCQUFrQixFQUFFLFlBQVksRUFBRSxtQkFBbUIsRUFBRSwyQkFBMkIsRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUdsTCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsV0FBVyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbkUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRWpFLE1BQU0sTUFBTSxHQUFHLFlBQVksQ0FBQyxhQUFhLENBQUMsQ0FBQztBQUUzQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbURHO0FBQ0gsTUFBTSxVQUFVLG1CQUFtQixDQUFDLFlBQTBCLEVBQUUsU0FBb0I7SUFDbEYsT0FBTyxZQUFZLENBQUMsQ0FBQyxHQUFZLEVBQUUsR0FBYSxFQUFFLElBQWtCLEVBQVEsRUFBRTtRQUM1RSxHQUFHLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUU7WUFDcEIsSUFBSSxDQUFDO2dCQUNILDBDQUEwQztnQkFDMUMsSUFBSSxHQUFHLENBQUMsVUFBVSxHQUFHLEdBQUcsSUFBSSxHQUFHLENBQUMsVUFBVSxJQUFJLEdBQUc7b0JBQUUsT0FBTztnQkFDMUQsMERBQTBEO2dCQUMxRCxJQUFJLGtCQUFrQixDQUFDLEdBQUcsQ0FBQztvQkFBRSxPQUFPO2dCQUNwQywrREFBK0Q7Z0JBQy9ELDZFQUE2RTtnQkFDN0UsMkVBQTJFO2dCQUMzRSx3RUFBd0U7Z0JBQ3hFLDZFQUE2RTtnQkFDN0UsK0RBQStEO2dCQUMvRCxFQUFFO2dCQUNGLHFFQUFxRTtnQkFDckUsMEVBQTBFO2dCQUMxRSx3RUFBd0U7Z0JBQ3hFLHFDQUFxQztnQkFDckMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsY0FBYztvQkFBRSxPQUFPO2dCQUN0QyxJQUFJLEtBQXlCLENBQUM7Z0JBQzlCLElBQUksQ0FBQztvQkFBQyxLQUFLLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7Z0JBQUMsQ0FBQztnQkFBQyxNQUFNLENBQUM7b0JBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDO2dCQUFDLENBQUM7Z0JBQzFGLElBQUksQ0FBQyxLQUFLO29CQUFFLE9BQU87Z0JBQ25CLHVFQUF1RTtnQkFDdkUscUVBQXFFO2dCQUNyRSxNQUFNLFNBQVMsR0FBRyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDMUMsSUFBSSxTQUFTLEtBQUssU0FBUyxJQUFJLENBQUMsU0FBUyxJQUFJLFNBQVMsS0FBSyxVQUFVLENBQUM7b0JBQUUsT0FBTztnQkFDL0UsdUNBQXVDO2dCQUN2QyxJQUFJLFNBQVMsS0FBSyxVQUFVLElBQUksa0JBQWtCLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQUUsT0FBTztnQkFDekYsdUVBQXVFO2dCQUN2RSxxRUFBcUU7Z0JBQ3JFLGNBQWMsQ0FDWixZQUFZLEVBQ1osS0FBSyxFQUNMLG1CQUFtQixDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsRUFDbkMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUErQixDQUFDLEVBQ3hFLDJCQUEyQixDQUFDLEdBQUcsQ0FBQyxDQUNqQyxDQUFDO1lBQ0osQ0FBQztZQUFDLE1BQU0sQ0FBQztnQkFDUCx1RUFBdUU7Z0JBQ3ZFLHdFQUF3RTtZQUMxRSxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLEVBQUUsQ0FBQztJQUNULENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO0FBQ2xELENBQUM7QUFFRDs7Ozs7Ozs7Ozs7R0FXRztBQUNILE1BQU0sVUFBVSxhQUFhLENBQUMsWUFBMEI7SUFDdEQsT0FBTztRQUNMLG1CQUFtQixDQUFDLFlBQVksRUFBRSxVQUFVLENBQW1CO1FBQy9ELGtCQUFrQixDQUFDLFlBQVksRUFBRSxVQUFVLENBQUM7S0FDN0MsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHsgY2FsbFF1b3RhRXhlbXB0aW9uLCBpbmNyZW1lbnRRdW90YSwgaXNRdW90YUV4ZW1wdFJvdXRlLCBjcmVhdGVMb2dnZXIsIG1ldGVyZWRRdW90YVR5cGVGb3IsIHF1b3RhQXR0cmlidXRpb25Gcm9tUmVxdWVzdCwgdGFnUm91dGVHYXRlIH0gZnJvbSAnQHBpcGVsaW5lLWJ1aWxkZXIvYXBpLWNvcmUnO1xuaW1wb3J0IHR5cGUgeyBRdW90YVR5cGUsIFF1b3RhU2VydmljZSB9IGZyb20gJ0BwaXBlbGluZS1idWlsZGVyL2FwaS1jb3JlJztcbmltcG9ydCB0eXBlIHsgUmVxdWVzdCwgUmVxdWVzdEhhbmRsZXIsIFJlc3BvbnNlLCBOZXh0RnVuY3Rpb24gfSBmcm9tICdleHByZXNzJztcbmltcG9ydCB7IGRlZmVycmVkQ2hlY2tRdW90YSwgcmVxdWVzdFBhdGggfSBmcm9tICcuL2NoZWNrLXF1b3RhLmpzJztcbmltcG9ydCB7IGdldENvbnRleHQgfSBmcm9tICcuL2dldC1jb250ZXh0LmpzJztcbmltcG9ydCB7IGlzSWRlbXBvdGVudFJlcGxheSB9IGZyb20gJy4vaWRlbXBvdGVuY3ktbWlkZGxld2FyZS5qcyc7XG5cbmNvbnN0IGxvZ2dlciA9IGNyZWF0ZUxvZ2dlcignbWV0ZXItcXVvdGEnKTtcblxuLyoqXG4gKiBNaWRkbGV3YXJlIHRoYXQgTUVURVJTIChpbmNyZW1lbnRzKSBhIHF1b3RhIGNvdW50ZXIgb25jZSBwZXIgU1VDQ0VTU0ZVTFxuICogcmVxdWVzdCwgb24gcmVzcG9uc2UgYGZpbmlzaGAuXG4gKlxuICogVGhlIGNvbXBsZW1lbnQgdG8ge0BsaW5rIGNoZWNrUXVvdGF9OiBgY2hlY2tRdW90YWAgb25seSBHQVRFUyAocmVhZHMgY3VycmVudFxuICogdXNhZ2UgYW5kIDQyOXMgd2hlbiBvdmVyKSDigJQgaXQgbmV2ZXIgaW5jcmVtZW50cywgc28gYSBzZXJ2aWNlIHRoYXQgbW91bnRzIGl0XG4gKiBidXQgbmV2ZXIgaW5jcmVtZW50cyBjaGVja3MgYWdhaW5zdCBhIGNvdW50ZXIgaXRzIG93biB0cmFmZmljIG5ldmVyIG1vdmVzLlxuICogVGhpcyBpcyBUSEUgYXBpQ2FsbHMgbWV0ZXJpbmcgY29udmVudGlvbjogcHV0IGl0IG9uIGVhY2ggbWV0ZXJlZCByb3V0ZSAob3JcbiAqIG1vdW50IGl0IGFoZWFkIG9mIGEgc2VydmljZSdzIHdob2xlIHN1cmZhY2UpIHJhdGhlciB0aGFuIGluY3JlbWVudGluZyBieSBoYW5kXG4gKiBpbiBoYW5kbGVycy5cbiAqXG4gKiBGaXJlLWFuZC1mb3JnZXQgKyBmYWlsLXNhZmUgYnkgY29uc3RydWN0aW9uOlxuICogLSBydW5zIGluIGEgYGZpbmlzaGAgbGlzdGVuZXIsIHNvIGl0IG5ldmVyIGJsb2NrcyBvciBmYWlscyB0aGUgcmVzcG9uc2U7XG4gKiAtIGBpbmNyZW1lbnRRdW90YWAgQlVGRkVSUyB0aGUgdW5pdCAoYXBpLWNvcmUgcXVvdGEtaW5jcmVtZW50LWJhdGNoZXIpOiB0aGVcbiAqICAgcG9kIHNlbmRzIG9uZSBtZXRlcmVkIGluY3JlbWVudCBwZXIgKG9yZywgdHlwZSkgcGVyIGZsdXNoIGludGVydmFsLCBzbyB0aGVcbiAqICAgY291bnRlciBsYWdzIGJ5IGF0IG1vc3QgYFFVT1RBX0lOQ1JFTUVOVF9GTFVTSF9NU2AsIGFuZCBhIHVuaXQgcGFzdCB0aGUgY2FwXG4gKiAgIGlzIHJlY29yZGVkIGFzIGBvdmVyc2hvb3RgIHJhdGhlciB0aGFuIGNvdW50ZWQuIEVycm9ycyBhcmUgc3dhbGxvd2VkIGFuZFxuICogICBjb3VudGVkIChgcXVvdGFfaW5jcmVtZW50X2ZhaWx1cmVzX3RvdGFsYCk7XG4gKiAtIG9ubHkgMnh4IHJlc3BvbnNlcyBhcmUgbWV0ZXJlZCAoYSByZWplY3RlZC9lcnJvcmVkIHJlcXVlc3QgY29zdHMgbm90aGluZykuXG4gKiAgIEEgMzA0IGZyb20gYW4gRVRhZyBtYXRjaCBpcyBub3QgMnh4LCBzbyByZXZhbGlkYXRpbmcgYW4gdW5jaGFuZ2VkXG4gKiAgIHJlc291cmNlIGlzIGZyZWU7IGEgcmVzcG9uc2UgdGhhdCBuZXZlciBGSU5JU0hFUyAoY2xpZW50IGFib3J0ZWQgYSBzdHJlYW1cbiAqICAgbWlkLWZsaWdodCwgc29ja2V0IGRlc3Ryb3llZCkgbmV2ZXIgZW1pdHMgYGZpbmlzaGAgYW5kIGlzIG5vdCBjb3VudGVkO1xuICogLSBhIHJlc3BvbnNlIFJFUExBWUVEIGZyb20gdGhlIGlkZW1wb3RlbmN5IGNhY2hlIGlzIHNraXBwZWQg4oCUIHRoZSBvcmlnaW5hbFxuICogICByZXF1ZXN0IGFscmVhZHkgcGFpZCwgYW5kIHRoZSByZXBsYXkgZGlkIG5vIHdvcmsuIFRoaXMgaG9sZHMgd2hldGhlciB0aGVcbiAqICAgbWV0ZXIgaXMgbW91bnRlZCBiZWZvcmUgb3IgYWZ0ZXIgdGhlIGlkZW1wb3RlbmN5IG1pZGRsZXdhcmU6IHRoZSBmbGFnIGlzXG4gKiAgIHJlYWQgYXQgYGZpbmlzaGAsIGFmdGVyIGJvdGggaGF2ZSBydW47XG4gKiAtIGEgcmVxdWVzdCB3aXRoIG5vIFZFUklGSUVEIG9yZyAoYHJlcS51c2VyLm9yZ2FuaXphdGlvbklkYCDigJQgc2V0IGJ5XG4gKiAgIHJlcXVpcmVBdXRoLCBuZXZlciB0aGUgc3Bvb2ZhYmxlIGhlYWRlciBpZGVudGl0eSkgaXMgc2tpcHBlZFxuICogICAodW5hdXRoZW50aWNhdGVkIC8gaGVhbHRoIC8gZWFybHktdGVybWluYXRlZCk7XG4gKiAtIFNFUlZJQ0UtUFJJTkNJUEFMIGNhbGxlcnMgYXJlIHNraXBwZWQ6IGludGVybmFsIHNlcnZpY2UtdG8tc2VydmljZSB0cmFmZmljXG4gKiAgIChlLmcuIGEgcGVlciBjYWxsaW5nIGNvbXBsaWFuY2UgYHZhbGlkYXRlYCkgbXVzdCBub3QgYnVybiBhIHRlbmFudCdzIHF1b3RhIOKAlFxuICogICB0aGUgb3JpZ2luYXRpbmcgc2VydmljZSBhbHJlYWR5IG1ldGVycyB0aGUgdXNlciBhY3Rpb24gdGhhdCB0cmlnZ2VyZWQgaXQuXG4gKiAgIEFuIE9SRyBTRVJWSUNFIEFDQ09VTlQgKG9yIGEgcGVyc29uYWwgYWNjZXNzIGtleSkgaXMgbm90IGEgc2VydmljZSBwcmluY2lwYWxcbiAqICAgYW5kIElTIG1ldGVyZWQg4oCUIG9uIGBhdXRvbWF0aW9uQ2FsbHNgIGluc3RlYWQgb2YgYGFwaUNhbGxzYFxuICogICAoe0BsaW5rIG1ldGVyZWRRdW90YVR5cGVGb3J9KTtcbiAqIC0gZm9yIGBhcGlDYWxsc2AsIGFuIElNUEVSU09OQVRJT04gc2Vzc2lvbiBhbmQgYW4gT04tQkVIQUxGIGhvcCAoYSB1c2VyIHRva2VuXG4gKiAgIGZvcndhcmRlZCBieSBhc2svcGlwZWxpbmUgd2l0aCBhIHNpZ25lZCBtYXJrZXIpIGFyZSBza2lwcGVkIHRvbyDigJQgc2VlXG4gKiAgIGFwaS1jb3JlIGBjYWxsUXVvdGFFeGVtcHRpb25gO1xuICogLSBhbiBgYXBpQ2FsbHNgIHJlcXVlc3Qgb24gdGhlIGZsZWV0LXdpZGUgYFFVT1RBX0VYRU1QVF9ST1VURVNgIChjb25zb2xlXG4gKiAgIHBvbGxpbmcpIGlzIHNraXBwZWQuXG4gKlxuICogRXZlcnkgaW5jcmVtZW50IGNhcnJpZXMgdXNhZ2UgYXR0cmlidXRpb24gKHByaW5jaXBhbCwga2V5LCByb3V0ZSBwYXR0ZXJuLFxuICogcGlwZWxpbmUsIHJlcXVlc3QgaWQpIGZvciB0aGUgcXVvdGEgc2VydmljZSdzIHVzYWdlIGxlZGdlci5cbiAqXG4gKiBNb3VudCBpdCBvbmNlIHBlciByb3V0ZTogYSBzZWNvbmQgbWV0ZXIgZm9yIHRoZSBzYW1lIHF1b3RhIHR5cGUgb24gdGhlIHNhbWVcbiAqIHJlcXVlc3QgZG91YmxlLWNvdW50cyAodGhlIHJvdXRlIHRhYmxlIHJlY29yZHMgZWFjaCBtZXRlciwgYW5kIHRoZSBxdW90YVxuICogY292ZXJhZ2UgY2hlY2sgZmFpbHMgYSByb3V0ZSBtZXRlcmVkIHR3aWNlKS5cbiAqXG4gKiBAcGFyYW0gcXVvdGFTZXJ2aWNlIC0gUXVvdGEgc2VydmljZSBjbGllbnRcbiAqIEBwYXJhbSBxdW90YVR5cGUgLSBXaGljaCBxdW90YSB0byBtZXRlciAoZS5nLiAnYXBpQ2FsbHMnIOKAlCBzcGxpdCBwZXIgcmVxdWVzdFxuICogICBpbnRvIGFwaUNhbGxzIC8gYXV0b21hdGlvbkNhbGxzIGJ5IHByaW5jaXBhbClcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1ldGVyUXVvdGFPblN1Y2Nlc3MocXVvdGFTZXJ2aWNlOiBRdW90YVNlcnZpY2UsIHF1b3RhVHlwZTogUXVvdGFUeXBlKSB7XG4gIHJldHVybiB0YWdSb3V0ZUdhdGUoKHJlcTogUmVxdWVzdCwgcmVzOiBSZXNwb25zZSwgbmV4dDogTmV4dEZ1bmN0aW9uKTogdm9pZCA9PiB7XG4gICAgcmVzLm9uKCdmaW5pc2gnLCAoKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICAvLyBPbmx5IHN1Y2Nlc3NmdWwgcmVzcG9uc2VzIGFyZSBiaWxsYWJsZS5cbiAgICAgICAgaWYgKHJlcy5zdGF0dXNDb2RlIDwgMjAwIHx8IHJlcy5zdGF0dXNDb2RlID49IDMwMCkgcmV0dXJuO1xuICAgICAgICAvLyBBIGNhY2hlZCByZXBsYXkgZGlkIG5vIHdvcms7IHRoZSBvcmlnaW5hbCBhbHJlYWR5IHBhaWQuXG4gICAgICAgIGlmIChpc0lkZW1wb3RlbnRSZXBsYXkocmVzKSkgcmV0dXJuO1xuICAgICAgICAvLyBSZXNvbHZlIHRoZSBvcmcgaWQgZnJvbSB0aGUgU0FNRSBzb3VyY2UgYGNoZWNrUXVvdGFgIHJlYWRzIOKAlFxuICAgICAgICAvLyBgZ2V0Q29udGV4dCgpLmlkZW50aXR5Lm9yZ0lkYCwgd2hpY2ggaXMgbm9ybWFsaXplZCAodHJpbW1lZCArIGxvd2VyY2FzZWQpLlxuICAgICAgICAvLyBNZXRlcmluZyBvZmYgdGhlIHJhdyBgcmVxLnVzZXIub3JnYW5pemF0aW9uSWRgIHdoaWxlIHRoZSBnYXRlIGNoZWNrcyB0aGVcbiAgICAgICAgLy8gbm9ybWFsaXplZCBpZCB3b3VsZCBsYW5kIGluY3JlbWVudHMgb24gYSBkaWZmZXJlbnQga2V5IHRoYW4gdGhlIGNoZWNrXG4gICAgICAgIC8vIHJlYWRzIChhIHNpbGVudCBieXBhc3MgaWYgYW4gb3JnIGlkIGV2ZXIgY2FycmllcyBtaXhlZCBjYXNlKS4gRmFsbCBiYWNrIHRvXG4gICAgICAgIC8vIHRoZSByYXcgYXV0aCBvcmcgb25seSB3aGVuIGNvbnRleHQgbWlkZGxld2FyZSBpc24ndCBtb3VudGVkLlxuICAgICAgICAvL1xuICAgICAgICAvLyBPbmx5IGEgVkVSSUZJRUQgY2FsbGVyIGlzIG1ldGVyZWQuIFRoZSBpbmNyZW1lbnQgaXMgc2VudCB3aXRoIFRISVNcbiAgICAgICAgLy8gc2VydmljZSdzIGNyZWRlbnRpYWxzLCBzbyBtZXRlcmluZyBhbiBvcmcgdGFrZW4gZnJvbSB0aGUgaGVhZGVyLWRlcml2ZWRcbiAgICAgICAgLy8gaWRlbnRpdHkgb2YgYW4gdW5hdXRoZW50aWNhdGVkIHJlcXVlc3Qgd291bGQgbGV0IGFueW9uZSBidXJuIGEgdmljdGltXG4gICAgICAgIC8vIG9yZydzIHF1b3RhIGJ5IHNldHRpbmcgYHgtb3JnLWlkYC5cbiAgICAgICAgaWYgKCFyZXEudXNlcj8ub3JnYW5pemF0aW9uSWQpIHJldHVybjtcbiAgICAgICAgbGV0IG9yZ0lkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICAgIHRyeSB7IG9yZ0lkID0gZ2V0Q29udGV4dChyZXEpLmlkZW50aXR5Lm9yZ0lkOyB9IGNhdGNoIHsgb3JnSWQgPSByZXEudXNlci5vcmdhbml6YXRpb25JZDsgfVxuICAgICAgICBpZiAoIW9yZ0lkKSByZXR1cm47XG4gICAgICAgIC8vIEludGVybmFsIHNlcnZpY2UtdG8tc2VydmljZSBjYWxscyBtdXN0IG5vdCBjb25zdW1lIGEgdGVuYW50J3MgcXVvdGE7XG4gICAgICAgIC8vIG5vciwgb24gdGhlIGNhbGwgYnVkZ2V0LCBpbXBlcnNvbmF0aW9uIHNlc3Npb25zIG9yIG9uLWJlaGFsZiBob3BzLlxuICAgICAgICBjb25zdCBleGVtcHRpb24gPSBjYWxsUXVvdGFFeGVtcHRpb24ocmVxKTtcbiAgICAgICAgaWYgKGV4ZW1wdGlvbiA9PT0gJ3NlcnZpY2UnIHx8IChleGVtcHRpb24gJiYgcXVvdGFUeXBlID09PSAnYXBpQ2FsbHMnKSkgcmV0dXJuO1xuICAgICAgICAvLyBDb25zb2xlIHBvbGxpbmcgbmV2ZXIgc3BlbmRzIGEgY2FsbC5cbiAgICAgICAgaWYgKHF1b3RhVHlwZSA9PT0gJ2FwaUNhbGxzJyAmJiBpc1F1b3RhRXhlbXB0Um91dGUocmVxLm1ldGhvZCwgcmVxdWVzdFBhdGgocmVxKSkpIHJldHVybjtcbiAgICAgICAgLy8gaW5jcmVtZW50UXVvdGEgYXV0aGVudGljYXRlcyBhcyBUSElTIHNlcnZpY2UgKHRoZSBpbmNyZW1lbnQgZW5kcG9pbnRcbiAgICAgICAgLy8gaXMgc2VydmljZS1wcmluY2lwYWwgb25seSDigJQgYSBmb3J3YXJkZWQgdXNlciB0b2tlbiBpcyBhbHdheXMgNDAzKS5cbiAgICAgICAgaW5jcmVtZW50UXVvdGEoXG4gICAgICAgICAgcXVvdGFTZXJ2aWNlLFxuICAgICAgICAgIG9yZ0lkLFxuICAgICAgICAgIG1ldGVyZWRRdW90YVR5cGVGb3IocmVxLCBxdW90YVR5cGUpLFxuICAgICAgICAgIChtZXNzYWdlLCBkYXRhKSA9PiBsb2dnZXIud2FybihtZXNzYWdlLCBkYXRhIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KSxcbiAgICAgICAgICBxdW90YUF0dHJpYnV0aW9uRnJvbVJlcXVlc3QocmVxKSxcbiAgICAgICAgKTtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICAvLyBNZXRlcmluZyBtdXN0IG5ldmVyIGFmZmVjdCB0aGUgcmVzcG9uc2U7IGEgbWlzc2luZyB1c2VyL2NvbnRleHQganVzdFxuICAgICAgICAvLyBtZWFucyBhbiB1bmF1dGhlbnRpY2F0ZWQgb3IgZWFybHktdGVybWluYXRlZCByZXF1ZXN0IOKAlCBza2lwIHNpbGVudGx5LlxuICAgICAgfVxuICAgIH0pO1xuICAgIG5leHQoKTtcbiAgfSwgeyBraW5kOiAncXVvdGEnLCBtb2RlOiAnbWV0ZXInLCBxdW90YVR5cGUgfSk7XG59XG5cbi8qKlxuICogVEhFIGFwaUNhbGxzIGNvbnZlbnRpb24gZm9yIGEgc2VydmljZSdzIHVzZXIgc3VyZmFjZTogbWV0ZXIgb25jZSBwZXIgMnh4IEFORFxuICogZ2F0ZSBhZnRlciBhdXRoZW50aWNhdGlvbiwgbW91bnRlZCBPTkNFIGF0IHRoZSBhcHAtcm91dGVzIGxldmVsIGFoZWFkIG9mIHRoZVxuICogcm91dGVycyBpdCBjb3ZlcnMg4oCUIGBhcHAudXNlKCcvdGhpbmdzJywgLi4uYXBpQ2FsbHNRdW90YShxdW90YVNlcnZpY2UpKWAuXG4gKlxuICogVGhlIGNoZWNrIGlzIERFRkVSUkVEIHRvIGByZXF1aXJlQXV0aGAgKHtAbGluayBkZWZlcnJlZENoZWNrUXVvdGF9KSwgc28gdGhlXG4gKiBtb3VudCBjYW4gcHJlY2VkZSByb3V0ZXJzIHRoYXQgYXV0aGVudGljYXRlIHBlciByb3V0ZS4gQm90aCBoYWx2ZXMgc2tpcFxuICogc2VydmljZSBwcmluY2lwYWxzLCB1bmF1dGhlbnRpY2F0ZWQgcmVxdWVzdHMgYW5kIHRoZSBjb25zb2xlLXBvbGxpbmdcbiAqIGBRVU9UQV9FWEVNUFRfUk9VVEVTYDsgYSBzZXJ2aWNlIGFjY291bnQgc3BlbmRzIGBhdXRvbWF0aW9uQ2FsbHNgLiBBIHJvdXRlXG4gKiB1bmRlciBzdWNoIGEgcHJlZml4IG11c3QgTk9UIGFsc28gbW91bnQgaXRzIG93biBgbWV0ZXJRdW90YU9uU3VjY2Vzc2AgZm9yXG4gKiBhcGlDYWxscyAodGhhdCBiaWxscyB0d2ljZSDigJQgdGhlIHF1b3RhIGNvdmVyYWdlIGNoZWNrIGZhaWxzIGl0KS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFwaUNhbGxzUXVvdGEocXVvdGFTZXJ2aWNlOiBRdW90YVNlcnZpY2UpOiBSZXF1ZXN0SGFuZGxlcltdIHtcbiAgcmV0dXJuIFtcbiAgICBtZXRlclF1b3RhT25TdWNjZXNzKHF1b3RhU2VydmljZSwgJ2FwaUNhbGxzJykgYXMgUmVxdWVzdEhhbmRsZXIsXG4gICAgZGVmZXJyZWRDaGVja1F1b3RhKHF1b3RhU2VydmljZSwgJ2FwaUNhbGxzJyksXG4gIF07XG59XG4iXX0=
|
package/lib/api/metrics.js
CHANGED
|
@@ -364,4 +364,4 @@ function humanizeName(metricName) {
|
|
|
364
364
|
.replace(/_/g, ' ')
|
|
365
365
|
.replace(/^./, (c) => c.toUpperCase());
|
|
366
366
|
}
|
|
367
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0cmljcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcGkvbWV0cmljcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSw4QkFBOEIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2xHLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUV6RCxPQUFPLEVBQUUsUUFBUSxFQUFFLHFCQUFxQixFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXpGLE1BQU0sWUFBWSxHQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUE2QixDQUFDLFdBQVcsQ0FBQztBQUU3RixpQ0FBaUM7QUFDakMsTUFBTSxRQUFRLEdBQUcsSUFBSSxRQUFRLEVBQUUsQ0FBQztBQUVoQyxxQ0FBcUM7QUFDckMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUM7QUFFckQsa0ZBQWtGO0FBQ2xGLHFCQUFxQixDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztBQUVwQzs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsMkJBQTJCLENBQUMsUUFBa0I7SUFDNUQsT0FBTyxJQUFJLEtBQUssQ0FBQztRQUNmLElBQUksRUFBRSw4QkFBOEI7UUFDcEMsSUFBSSxFQUFFLGtLQUFrSztRQUN4SyxVQUFVLEVBQUUsQ0FBQyxRQUFRLENBQVU7UUFDL0IsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDO1FBQ3JCLE9BQU87WUFDTCxLQUFLLE1BQU0sRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLElBQUksb0JBQW9CLEVBQUUsRUFBRSxDQUFDO2dCQUM3RCxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxFQUFFLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxD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LEtBQWE7SUFDbEYsZUFBZSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ2hELENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsVUFBVSxDQUFDLElBQVk7SUFDckMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNuQyxDQUFDO0FBRUQsU0FBUyxZQUFZLENBQUMsVUFBa0I7SUFDdEMsZ0RBQWdEO0lBQ2hELE9BQU8sVUFBVTtTQUNkLE9BQU8sQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDO1NBQ2xCLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0FBQzNDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHsgcHJldmlvdXNTZWNyZXRTdGF0ZXMsIFNFQ1JFVF9ST1RBVElPTl9QUkVWSU9VU19HQVVHRSB9IGZyb20gJ0BwaXBlbGluZS1idWlsZGVyL2FwaS1jb3JlJztcbmltcG9ydCB7IENvbmZpZyB9IGZyb20gJ0BwaXBlbGluZS1idWlsZGVyL3BpcGVsaW5lLWNvcmUnO1xuaW1wb3J0IHR5cGUgeyBSZXF1ZXN0LCBSZXNwb25zZSwgTmV4dEZ1bmN0aW9uIH0gZnJvbSAnZXhwcmVzcyc7XG5pbXBvcnQgeyBSZWdpc3RyeSwgY29sbGVjdERlZmF1bHRNZXRyaWNzLCBDb3VudGVyLCBIaXN0b2dyYW0sIEdhdWdlIH0gZnJvbSAncHJvbS1jbGllbnQnO1xuXG5jb25zdCBTRVJWSUNFX05BTUUgPSAoQ29uZmlnLmdldEFueSgnb2JzZXJ2YWJpbGl0eScpIGFzIHsgc2VydmljZU5hbWU6IHN0cmluZyB9KS5zZXJ2aWNlTmFtZTtcblxuLyoqIFNoYXJlZCBQcm9tZXRoZXVzIHJlZ2lzdHJ5ICovXG5jb25zdCByZWdpc3RlciA9IG5ldyBSZWdpc3RyeSgpO1xuXG4vLyBTZXQgZGVmYXVsdCBsYWJlbHMgZm9yIGFsbCBtZXRyaWNzXG5yZWdpc3Rlci5zZXREZWZhdWx0TGFiZWxzKHsgc2VydmljZTogU0VSVklDRV9OQU1FIH0pO1xuXG4vLyBDb2xsZWN0IGRlZmF1bHQgTm9kZS5qcyBwcm9jZXNzIG1ldHJpY3MgKENQVSwgbWVtb3J5LCBoZWFwLCBldmVudCBsb29wIGxhZywgR0MpXG5jb2xsZWN0RGVmYXVsdE1ldHJpY3MoeyByZWdpc3RlciB9KTtcblxuLyoqXG4gKiBSZWdpc3RlciB0aGUgYHNlY3JldF9yb3RhdGlvbl9wcmV2aW91c19zZXR7c2VjcmV0fWAgZ2F1Z2Ugb24gYHJlZ2lzdHJ5YDogMVxuICogd2hpbGUgYSBzZWNyZXQncyBgKl9QUkVWSU9VU2Agcm90YXRpb24gdmFsdWUgaXMgc3RpbGwgc2V0LCAwIG90aGVyd2lzZS4gVGhlXG4gKiB2YWx1ZSBpcyByZWFkIGZyb20gYXBpLWNvcmUncyBwcm9iZSByZWdpc3RyeSBhdCBzY3JhcGUgdGltZSwgc28gaXQgYWx3YXlzXG4gKiByZWZsZWN0cyB0aGUgbGl2ZSBwcm9jZXNzLiBFeHBvcnRlZCBzbyBwbGF0Zm9ybSAob3duIHJlZ2lzdHJ5KSBleHBvc2VzIHRoZVxuICogaWRlbnRpY2FsIHNlcmllczsgdGhlIGBTZWNyZXRSb3RhdGlvblByZXZpb3VzTGluZ2VyaW5nYCBhbGVydCBrZXlzIG9uIGl0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJTZWNyZXRSb3RhdGlvbkdhdWdlKHJlZ2lzdHJ5OiBSZWdpc3RyeSk6IEdhdWdlPCdzZWNyZXQnPiB7XG4gIHJldHVybiBuZXcgR2F1Z2Uoe1xuICAgIG5hbWU6IFNFQ1JFVF9ST1RBVElPTl9QUkVWSU9VU19HQVVHRSxcbiAgICBoZWxwOiAnMSB3aGlsZSBhIHNlY3JldCByb3RhdGlvbiBwcmV2aW91cyB2YWx1ZSAoZS5nLiBTRUNSRVRfRU5DUllQVElPTl9LRVlfUFJFVklPVVMpIG9yIGEgcmV0aXJpbmcgc2lnbmluZyBrZXkgaXMgc3RpbGwgYWNjZXB0ZWQ7IHNlZSBkb2NzL3J1bmJvb2tzL3NlY3JldC1yb3RhdGlvbi5tZCcsXG4gICAgbGFiZWxOYW1lczogWydzZWNyZXQnXSBhcyBjb25zdCxcbiAgICByZWdpc3RlcnM6IFtyZWdpc3RyeV0sXG4gICAgY29sbGVjdCgpIHtcbiAgICAgIGZvciAoY29uc3QgeyBzZWNyZXQsIHByZXZpb3VzU2V0IH0gb2YgcHJldmlvdXNTZWNyZXRTdGF0ZXMoKSkge1xuICAgICAgICB0aGlzLnNldCh7IHNlY3JldCB9LCBwcmV2aW91c1NldCA/IDEgOiAwKTtcbiAgICAgIH1cbiAgICB9LFxuICB9KTtcbn1cblxucmVnaXN0ZXJTZWNyZXRSb3RhdGlvbkdhdWdlKHJlZ2lzdGVyKTtcblxuLyoqIEhUVFAgcmVxdWVzdCBkdXJhdGlvbiBoaXN0b2dyYW0gKHNlY29uZHMpICovXG5jb25zdCBodHRwUmVxdWVzdER1cmF0aW9uID0gbmV3IEhpc3RvZ3JhbSh7XG4gIG5hbWU6ICdodHRwX3JlcXVlc3RfZHVyYXRpb25fc2Vjb25kcycsXG4gIGhlbHA6ICdEdXJhdGlvbiBvZiBIVFRQIHJlcXVlc3RzIGluIHNlY29uZHMnLFxuICBsYWJlbE5hbWVzOiBbJ21ldGhvZCcsICdyb3V0ZScsICdzdGF0dXNfY29kZSddIGFzIGNvbnN0LFxuICBidWNrZXRzOiBbMC4wMDUsIDAuMDEsIDAuMDI1LCAwLjA1LCAwLjEsIDAuMjUsIDAuNSwgMSwgMi41LCA1LCAxMF0sXG4gIHJlZ2lzdGVyczogW3JlZ2lzdGVyXSxcbn0pO1xuXG4vKiogSFRUUCByZXF1ZXN0IGNvdW50ZXIgKi9cbmNvbnN0IGh0dHBSZXF1ZXN0c1RvdGFsID0gbmV3IENvdW50ZXIoe1xuICBuYW1lOiAnaHR0cF9yZXF1ZXN0c190b3RhbCcsXG4gIGhlbHA6ICdUb3RhbCBudW1iZXIgb2YgSFRUUCByZXF1ZXN0cycsXG4gIGxhYmVsTmFtZXM6IFsnbWV0aG9kJywgJ3JvdXRlJywgJ3N0YXR1c19jb2RlJ10gYXMgY29uc3QsXG4gIHJlZ2lzdGVyczogW3JlZ2lzdGVyXSxcbn0pO1xuXG4vKipcbiAqIFBlci1vcmcgSFRUUCByZXF1ZXN0IGNvdW50ZXIg4oCUIFNBTVBMRUQgdG8ga2VlcCBQcm9tZXRoZXVzIGNhcmRpbmFsaXR5XG4gKiB1bmRlciBjb250cm9sLiBDYXJkaW5hbGl0eSBvZiBgb3JnX2lkICogbWV0aG9kICogcm91dGUgKiBzdGF0dXNfY29kZWBcbiAqIGdyb3dzIG11bHRpcGxpY2F0aXZlbHk7IHdpdGggTiBvcmdzICogNTAgcm91dGVzICogNSBzdGF0dXNfY29kZXMgdGhhdCdzXG4gKiAyNTDDl04gc2VyaWVzLiBXZSBzYW1wbGUgMS1pbi1OIHJlcXVlc3RzIChjb25maWd1cmFibGUgdmlhXG4gKiBgSFRUUF9NRVRSSUNTX09SR19TQU1QTEVfUkFURWAsIGRlZmF1bHQgMCA9IG9mZikuXG4gKlxuICogT3BlcmF0b3JzIGFuc3dlciBcIndoYXQncyBvcmcgWCdzIHA5OT9cIiB2aWEgc2VwYXJhdGUgcGVyLW9yZyBoaXN0b2dyYW1zXG4gKiBzY3JhcGVkIGF0IGEgbG93ZXIgcmF0ZSwgT1IgdmlhIExva2kgTG9nUUwgcXVlcmllcyBhZ2FpbnN0IHRoZVxuICogdW5zYW1wbGVkIGFjY2Vzcy1sb2cgc3RyZWFtLiBUaGlzIGNvdW50ZXIgaXMgdGhlIGZhc3QtcGF0aCBcIm5vaXN5XG4gKiBuZWlnaGJvciBkZXRlY3Rpb25cIiDigJQgb3BlcmF0b3JzIGFsZXJ0IHdoZW4gb25lIG9yZydzIHJlcXVlc3QgcmF0ZVxuICogZGV2aWF0ZXMgZnJvbSB0aGUgZmxlZXQgbWVkaWFuLlxuICpcbiAqIE5PVCBhIGhpc3RvZ3JhbTogaGlzdG9ncmFtIGxhYmVsIGNhcmRpbmFsaXR5IGlzIGV2ZW4gbW9yZSBzZW5zaXRpdmVcbiAqIChlYWNoIGJ1Y2tldCBpcyBhIHNlcGFyYXRlIHNlcmllcykuIElmIHBlci1vcmcgbGF0ZW5jeSBwZXJjZW50aWxlcyBhcmVcbiAqIG5lZWRlZCBsYXRlciwgYWRkIGEgc2VwYXJhdGUgaGlzdG9ncmFtIHdpdGggYSBjb2Fyc2VyIGJ1Y2tldCBzZXQgYW5kXG4gKiBsb3dlciBzYW1wbGUgcmF0ZS5cbiAqL1xuY29uc3QgaHR0cFJlcXVlc3RzQnlPcmdUb3RhbCA9IG5ldyBDb3VudGVyKHtcbiAgbmFtZTogJ2h0dHBfcmVxdWVzdHNfYnlfb3JnX3RvdGFsJyxcbiAgaGVscDogJ1NhbXBsZWQgcGVyLW9yZyBIVFRQIHJlcXVlc3QgY291bnQgKHNhbXBsZSByYXRlIHZpYSBIVFRQX01FVFJJQ1NfT1JHX1NBTVBMRV9SQVRFKScsXG4gIGxhYmVsTmFtZXM6IFsnbWV0aG9kJywgJ3JvdXRlJywgJ3N0YXR1c19jb2RlJywgJ29yZ19pZCddIGFzIGNvbnN0LFxuICByZWdpc3RlcnM6IFtyZWdpc3Rlcl0sXG59KTtcblxuLyoqXG4gKiBTYW1wbGUgcmF0ZSBmb3IgdGhlIHBlci1vcmcgY291bnRlci4gMS4wID0gZXZlcnkgcmVxdWVzdCwgMC4wID0gZGlzYWJsZWQuXG4gKiBQYXJzZWQgb25jZSBhdCBtb2R1bGUgbG9hZCDigJQgb3BlcmF0b3JzIHR1bmUgYnkgcmVzdGFydGluZyB0aGUgc2VydmljZS5cbiAqXG4gKiBEZWZhdWx0cyB0byAwIChPRkYpLiBgb3JnX2lkYCBpcyBhbiBVTkJPVU5ERUQsIHRlbmFudC1pZGVudGlmeWluZyBsYWJlbCBhbmRcbiAqIHByb20tY2xpZW50IGNvdW50ZXJzIG5ldmVyIGV4cGlyZSwgc28gYXQgMS4wIGV2ZXJ5IHNlcnZpY2UgYWNjdW11bGF0ZXMgYVxuICogc2VyaWVzIHBlciAob3JnIMOXIHJvdXRlIMOXIHN0YXR1cykgZm9yIHRoZSBwcm9jZXNzIGxpZmV0aW1lLCBhbmQgYC9tZXRyaWNzYCDigJRcbiAqIHdoaWNoIGlzIG5vdCBhdXRoLWdhdGVkIOKAlCBlbnVtZXJhdGVzIGV2ZXJ5IHRlbmFudCBpZCBhbG9uZyB3aXRoIGl0cyByZXF1ZXN0XG4gKiB2b2x1bWUgYW5kIGVycm9yIHJhdGUgdG8gYW55b25lIHdobyBjYW4gcmVhY2ggdGhlIHBvcnQuXG4gKlxuICogVHVybiBpdCBvbiBkZWxpYmVyYXRlbHkgKGFuZCBpZGVhbGx5IHdpdGggYSBzYW1wbGUgcmF0ZSB3ZWxsIHVuZGVyIDEuMCwgcGx1c1xuICogYE1FVFJJQ1NfU0NSQVBFX1RPS0VOYCBzZXQpIHdoZW4geW91IGFjdHVhbGx5IHdhbnQgcGVyLW9yZyBub2lzeS1uZWlnaGJvdXJcbiAqIGRldGVjdGlvbiBmcm9tIG1ldHJpY3MgcmF0aGVyIHRoYW4gZnJvbSB0aGUgYWNjZXNzLWxvZyBzdHJlYW0uXG4gKi9cbmNvbnN0IE9SR19TQU1QTEVfUkFURSA9ICgoKSA9PiB7XG4gIGNvbnN0IHJhdyA9IHByb2Nlc3MuZW52LkhUVFBfTUVUUklDU19PUkdfU0FNUExFX1JBVEU7XG4gIGlmIChyYXcgPT09IHVuZGVmaW5lZCB8fCByYXcgPT09ICcnKSByZXR1cm4gMDtcbiAgY29uc3QgcGFyc2VkID0gcGFyc2VGbG9hdChyYXcpO1xuICBpZiAoTnVtYmVyLmlzTmFOKHBhcnNlZCkgfHwgcGFyc2VkIDwgMCB8fCBwYXJzZWQgPiAxKSByZXR1cm4gMDtcbiAgcmV0dXJuIHBhcnNlZDtcbn0pKCk7XG5cbi8qKlxuICogTm9ybWFsaXplIGFuIEV4cHJlc3Mgcm91dGUgcGF0aCB0byBwcmV2ZW50IGxhYmVsIGNhcmRpbmFsaXR5IGV4cGxvc2lvbi5cbiAqXG4gKiBVc2VzIEV4cHJlc3MncyBtYXRjaGVkIHJvdXRlIHBhdHRlcm4gKGUuZy4gYC9wbHVnaW5zLzppZGApIHdoZW4gYXZhaWxhYmxlLFxuICogb3RoZXJ3aXNlIGZhbGxzIGJhY2sgdG8gdGhlIHJhdyBwYXRoIHdpdGggVVVJRC9udW1lcmljIHNlZ21lbnRzIHJlcGxhY2VkLlxuICovXG5mdW5jdGlvbiBub3JtYWxpemVSb3V0ZShyZXE6IFJlcXVlc3QpOiBzdHJpbmcge1xuICAvLyBQcmVmZXIgRXhwcmVzcyBtYXRjaGVkIHJvdXRlIHBhdHRlcm5cbiAgaWYgKHJlcS5yb3V0ZT8ucGF0aCkge1xuICAgIHJldHVybiByZXEuYmFzZVVybCArIHJlcS5yb3V0ZS5wYXRoO1xuICB9XG5cbiAgLy8gRmFsbGJhY2s6IHJlcGxhY2UgVVVJRHMgYW5kIG51bWVyaWMgSURzIHdpdGggOmlkXG4gIHJldHVybiByZXEucGF0aFxuICAgIC5yZXBsYWNlKC9bMC05YS1mXXs4fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXs0fS1bMC05YS1mXXsxMn0vZ2ksICc6aWQnKVxuICAgIC5yZXBsYWNlKC9cXC9cXGQrKD89XFwvfCQpL2csICcvOmlkJyk7XG59XG5cbi8qKlxuICogRXhwcmVzcyBtaWRkbGV3YXJlIHRoYXQgcmVjb3JkcyByZXF1ZXN0IGR1cmF0aW9uIGFuZCBjb3VudC5cbiAqXG4gKiBNdXN0IGJlIHJlZ2lzdGVyZWQgYmVmb3JlIHJvdXRlIGhhbmRsZXJzIHNvIGByZXMub24oJ2ZpbmlzaCcpYCBmaXJlc1xuICogYWZ0ZXIgdGhlIHJlc3BvbnNlIGlzIHNlbnQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtZXRyaWNzTWlkZGxld2FyZSgpIHtcbiAgcmV0dXJuIChyZXE6IFJlcXVlc3QsIHJlczogUmVzcG9uc2UsIG5leHQ6IE5leHRGdW5jdGlvbik6IHZvaWQgPT4ge1xuICAgIC8vIE5PVEU6IG5vIC9tZXRyaWNzIG9yIC9oZWFsdGggc2tpcCBuZWVkZWQgaGVyZSDigJQgYm90aCBlbmRwb2ludHMgYXJlXG4gICAgLy8gcmVnaXN0ZXJlZCBpbiBhcHAtZmFjdG9yeSBCRUZPUkUgdGhpcyBtaWRkbGV3YXJlIChjcmVhdGVIZWFsdGhSb3V0ZXIgYW5kXG4gICAgLy8gYXBwLmdldCgnL21ldHJpY3MnKSBib3RoIHRlcm1pbmF0ZSB0aGUgcmVzcG9uc2UpLCBzbyBuZWl0aGVyIGV2ZXIgcmVhY2hlc1xuICAgIC8vIHRoaXMgaGFuZGxlci5cbiAgICBjb25zdCBlbmQgPSBodHRwUmVxdWVzdER1cmF0aW9uLnN0YXJ0VGltZXIoKTtcblxuICAgIHJlcy5vbignZmluaXNoJywgKCkgPT4ge1xuICAgICAgY29uc3Qgcm91dGUgPSBub3JtYWxpemVSb3V0ZShyZXEpO1xuICAgICAgY29uc3QgbGFiZWxzID0ge1xuICAgICAgICBtZXRob2Q6IHJlcS5tZXRob2QsXG4gICAgICAgIHJvdXRlLFxuICAgICAgICBzdGF0dXNfY29kZTogU3RyaW5nKHJlcy5zdGF0dXNDb2RlKSxcbiAgICAgIH07XG5cbiAgICAgIGVuZChsYWJlbHMpO1xuICAgICAgaHR0cFJlcXVlc3RzVG90YWwuaW5jKGxhYmVscyk7XG5cbiAgICAgIC8vIFBlci1vcmcgc2FtcGxlZCBjb3VudGVyLiBTa2lwIHdoZW46XG4gICAgICAvLyAgIC0gbm8gb3JnIGNvbnRleHQgb24gdGhlIHJlcXVlc3QgKGFub255bW91cyAvIGhlYWx0aCBlbmRwb2ludHMpXG4gICAgICAvLyAgIC0gc2FtcGxlIHJhdGUgaXMgMCAoZGlzYWJsZWQpXG4gICAgICAvLyAgIC0gZGljZSByb2xsIGZhaWxzXG4gICAgICAvLyBVc2luZyBNYXRoLnJhbmRvbSBmb3IgdGhlIHNhbXBsZXIg4oCUIGZvciB1bmJpYXNlZCBsb3ctcmF0ZSBzYW1wbGluZ1xuICAgICAgLy8gYSBkZXRlcm1pbmlzdGljIHBlci1yZXF1ZXN0IGhhc2ggd291bGQgYmUgbW9yZSB1bmlmb3JtLCBidXQgYXQgdGhlXG4gICAgICAvLyBkZWZhdWx0IHJhdGUgb2YgMS4wIGV2ZXJ5IHJlcXVlc3QgbGFuZHMgc28gdGhpcyBpcyBmaW5lLlxuICAgICAgY29uc3Qgb3JnSWQgPSByZXEudXNlcj8ub3JnYW5pemF0aW9uSWQ7XG4gICAgICBpZiAob3JnSWQgJiYgT1JHX1NBTVBMRV9SQVRFID4gMCAmJiBNYXRoLnJhbmRvbSgpIDwgT1JHX1NBTVBMRV9SQVRFKSB7XG4gICAgICAgIGh0dHBSZXF1ZXN0c0J5T3JnVG90YWwuaW5jKHsgLi4ubGFiZWxzLCBvcmdfaWQ6IG9yZ0lkIH0pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgbmV4dCgpO1xuICB9O1xufVxuXG4vKipcbiAqIEV4cHJlc3MgaGFuZGxlciB0aGF0IHJldHVybnMgUHJvbWV0aGV1cyBtZXRyaWNzIGluIHRleHQgZXhwb3NpdGlvbiBmb3JtYXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtZXRyaWNzSGFuZGxlcigpIHtcbiAgcmV0dXJuIGFzeW5jIChfcmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgcmVzLnNldCgnQ29udGVudC1UeXBlJywgcmVnaXN0ZXIuY29udGVudFR5cGUpO1xuICAgIHJlcy5lbmQoYXdhaXQgcmVnaXN0ZXIubWV0cmljcygpKTtcbiAgfTtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBCdXNpbmVzcyAvIGRvbWFpbiBtZXRyaWNzXG4vL1xuLy8gU2VydmljZXMgc2hvdWxkIGVtaXQgY291bnRlcnMgZm9yIHRoZSB0aGluZ3Mgb3BlcmF0b3JzIGFjdHVhbGx5IGNhcmUgYWJvdXRcbi8vIChwaXBlbGluZXMgZ2VuZXJhdGVkLCBwbHVnaW4gYnVpbGRzIGNvbXBsZXRlZCwgY29tcGxpYW5jZSB2aW9sYXRpb25zLFxuLy8gQUkgdG9rZW5zIGNvbnN1bWVkKSDigJQgbm90IGp1c3QgSFRUUCB0cmFmZmljLiBUaGUgaGVscGVycyBiZWxvdyByZWdpc3RlclxuLy8gY291bnRlcnMgbGF6aWx5IG9uIHRoZSBzaGFyZWQgcmVnaXN0cnkgc28gbXVsdGlwbGUgc2VydmljZXMgY2FuIGNhbGxcbi8vIGBpbmNDb3VudGVyKCdwbHVnaW5fYnVpbGRzX3RvdGFsJywgeyBzdGF0dXM6ICdjb21wbGV0ZWQnIH0pYCB3aXRob3V0XG4vLyB3b3JyeWluZyBhYm91dCBkb3VibGUtcmVnaXN0cmF0aW9uLlxuLy9cbi8vIE5hbWluZyBjb252ZW50aW9uOiBgPGRvbWFpbj5fPG5vdW4+X3RvdGFsYCBmb3IgY291bnRlcnMsIGBfc2Vjb25kc2AgZm9yXG4vLyBoaXN0b2dyYW1zIOKAlCBtYXRjaGVzIFByb21ldGhldXMgYmVzdC1wcmFjdGljZS5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vKipcbiAqIEJ1Y2tldCBkaXN0cmlidXRpb25zIGZvciBoaXN0b2dyYW1zIHdob3NlIG9ic2VydmF0aW9ucyBhcmUgbm93aGVyZSBuZWFyIHRoZVxuICogc3ViLXNlY29uZC10by1taW51dGVzIGRlZmF1bHQuXG4gKlxuICogVEhJUyBUQUJMRSBFWElTVFMgQkVDQVVTRSBUSEUgREVGQVVMVCBTSUxFTlRMWSBCUkVBS1MgQUxFUlRTLiBUaGUgZGVmYXVsdCBzZXRcbiAqIGJlbG93IGVuZHMgYXQgYSAzMDAtc2Vjb25kIGJ1Y2tldCwgYW5kIGBoaXN0b2dyYW1fcXVhbnRpbGVgIGNhbm5vdCBpbnRlcnBvbGF0ZVxuICogcGFzdCB0aGUgbGFzdCBGSU5JVEUgYm91bmRhcnkg4oCUIGV2ZXJ5dGhpbmcgYWJvdmUgaXQgbGFuZHMgaW4gYCtJbmZgIGFuZCB0aGVcbiAqIHF1YW50aWxlIHJlYWRzIGJhY2sgYXMgMzAwIGZvcmV2ZXIuIEFuIGFsZXJ0IG9mIHRoZSBmb3JtIGA+IDMwMGAgb24gc3VjaCBhXG4gKiBoaXN0b2dyYW0gY2FuIHRoZXJlZm9yZSBuZXZlciBmaXJlLCBhbmQgYSBwOTAgcGFuZWwgZmxhdC1saW5lcyBhdCBmaXZlXG4gKiBtaW51dGVzIGhvd2V2ZXIgYmFkIHRoaW5ncyBnZXQuIE5vdGhpbmcgZXJyb3JzLCBub3RoaW5nIGlzIG1pc3NpbmcgZnJvbSB0aGVcbiAqIHNjcmFwZSwgYW5kIHRoZSBkYXNoYm9hcmQgbG9va3MgaGVhbHRoeTogdGhlIG9ubHkgc3ltcHRvbSBpcyBhbiBhbGVydCB0aGF0XG4gKiBzdGF5cyBxdWlldCB0aHJvdWdoIGFuIG91dGFnZS4gYHN1cHBvcnRfZmlyc3RfcmVzcG9uc2Vfc2Vjb25kc2AgbWVhc3VyZXMgaG91cnNcbiAqIHRvIGRheXMgYW5kIGhhZCBhIHRocmVzaG9sZCBvZiB0d2VsdmUgaG91cnMgc2l0dGluZyBhYm92ZSBhIGNlaWxpbmcgb2YgZml2ZVxuICogbWludXRlcy5cbiAqXG4gKiBTbyBhIGhpc3RvZ3JhbSB3aG9zZSBuYXR1cmFsIHJhbmdlIGlzIG1pbnV0ZXMtdG8tZGF5cyBkZWNsYXJlcyBpdHMgYnVja2V0c1xuICogaGVyZSwgYW5kIEFMRVJUIFRIUkVTSE9MRFMgQVJFIFBVVCBPTiBCT1VOREFSSUVTOiBhIHRocmVzaG9sZCBpbnNpZGUgYSB3aWRlXG4gKiBidWNrZXQgaXMgc2VydmVkIGJ5IGxpbmVhciBpbnRlcnBvbGF0aW9uIGFjcm9zcyB0aGF0IGJ1Y2tldCwgd2hpY2ggaXMgYSBndWVzcyxcbiAqIHdoaWxlIGEgdGhyZXNob2xkIE9OIGEgYm91bmRhcnkgaXMgZXhhY3QuIEZvciBzdXBwb3J0IHRoYXQgbWVhbnMgNmggKHRoZSBhbGVydClcbiAqIGFuZCA4aCAodGhlIHNvbGQgdGFyZ2V0KSBhcmUgYm90aCBib3VuZGFyaWVzLCAyNGggaXMgdGhlIG9wZXJhdGlvbmFsIGd1YXJkXG4gKiBmcm9tIHRoZSBzdGFuZGFyZC9wcmlvcml0eSBydWxlLCBhbmQgOTZoIGNvdmVycyB0aGUgbG9uZ2VzdCBsZWdpdGltYXRlIHdhaXQgYVxuICogYnVzaW5lc3MtZGF5IHRhcmdldCBhbGxvd3Mg4oCUIGEgcHJpb3JpdHkgY2FzZSByYWlzZWQgYXQgMTc6MDEgb24gYSBGcmlkYXkuXG4gKlxuICogQWRkIGEgbWV0cmljIGhlcmUgd2hlbiBpdHMgb2JzZXJ2YXRpb25zIGNhbiBleGNlZWQgZml2ZSBtaW51dGVzLiBUaGUgdGFibGUgaXNcbiAqIHJlYWQgb24gRklSU1QgVVNFIG9mIGVhY2ggbmFtZSBieSBgY3JlYXRlTWV0cmljSGVscGVyc2AsIHNvIGJvdGggcmVnaXN0cmllc1xuICogKGFwaS1zZXJ2ZXIncyBhbmQgcGxhdGZvcm0ncyBvd24pIGdldCB0aGUgc2FtZSBkaXN0cmlidXRpb24sIHdoaWNoIGlzIHRoZVxuICogZHJpZnQgdGhlIGZhY3RvcnkgZXhpc3RzIHRvIHByZXZlbnQuXG4gKi9cbmNvbnN0IEhJU1RPR1JBTV9CVUNLRVRTOiBSZWFkb25seTxSZWNvcmQ8c3RyaW5nLCByZWFkb25seSBudW1iZXJbXT4+ID0ge1xuICAvLyAxNW0sIDFoLCAyaCwgNGgsIDZoLCA4aCwgMTJoLCAyNGgsIDQ4aCwgOTZoLlxuICBzdXBwb3J0X2ZpcnN0X3Jlc3BvbnNlX3NlY29uZHM6IFs5MDAsIDM2MDAsIDcyMDAsIDE0NDAwLCAyMTYwMCwgMjg4MDAsIDQzMjAwLCA4NjQwMCwgMTcyODAwLCAzNDU2MDBdLFxuICAvLyBTdWJtaXNzaW9uLXRvLWRlY2lzaW9uIGxhdGVuY3kgaXMgYSBodW1hbiByZXZpZXcgcXVldWU6IGhvdXJzIHRvIGRheXMuXG4gIC8vIDE1bSwgMWgsIDRoLCAxMmgsIDFkLCAyZCwgNGQsIDdkLCAxNGQuXG4gIGVjb3N5c3RlbV9kZWNpc2lvbl9sYXRlbmN5X3NlY29uZHM6IFs5MDAsIDM2MDAsIDE0NDAwLCA0MzIwMCwgODY0MDAsIDE3MjgwMCwgMzQ1NjAwLCA2MDQ4MDAsIDEyMDk2MDBdLFxuICAvLyBRdWV1ZSB3YWl0LiBgUGx1Z2luUXVldWVQcm9jZXNzaW5nU2xvd2AgYXNzZXJ0cyBwOTUgPiAzMDAsIHdoaWNoIHRoZSBkZWZhdWx0XG4gIC8vIGNlaWxpbmcgb2YgMzAwIG1hZGUgdW5maXJlYWJsZTsgMzAwIGlzIGEgYm91bmRhcnkgaGVyZSBzbyB0aGUgY29tcGFyaXNvbiBpc1xuICAvLyBleGFjdCByYXRoZXIgdGhhbiBpbnRlcnBvbGF0ZWQuXG4gIHBsdWdpbl9qb2Jfd2FpdF9zZWNvbmRzOiBbMSwgNSwgMTUsIDMwLCA2MCwgMTIwLCAzMDAsIDYwMCwgMTgwMCwgMzYwMF0sXG4gIC8vIEEgY29udGFpbmVyIGJ1aWxkLiBNaW51dGVzIG5vcm1hbGx5LCBmYXIgbG9uZ2VyIGZvciBhIGNvbGQgYmFzZSBpbWFnZS5cbiAgcGx1Z2luX2J1aWxkX2R1cmF0aW9uX3NlY29uZHM6IFsxMCwgMzAsIDYwLCAxMjAsIDMwMCwgNjAwLCAxMjAwLCAxODAwLCAzNjAwXSxcbiAgLy8gQSBmdWxsIGltYWdlIHNjYW4sIHdoaWNoIHJvdXRpbmVseSBwYXNzZXMgZml2ZSBtaW51dGVzIG9uIGEgbGFyZ2UgaW1hZ2UuXG4gIHBsdWdpbl92dWxuX3NjYW5fZHVyYXRpb25fc2Vjb25kczogWzEsIDUsIDE1LCAzMCwgNjAsIDEyMCwgMzAwLCA2MDAsIDEyMDBdLFxuICAvLyBUaW1lIGZyb20gYW4gaW5jaWRlbnQgYmVpbmcgcmFpc2VkIHRvIGEgaHVtYW4gYWNrbm93bGVkZ2luZyBpdC4gVGhlIGRlZmF1bHRcbiAgLy8gYnVja2V0cyBlbmQgYXQgMzAwcywgYW5kIGBoaXN0b2dyYW1fcXVhbnRpbGVgIGNhbm5vdCBpbnRlcnBvbGF0ZSBwYXN0IHRoZVxuICAvLyBsYXN0IGZpbml0ZSBib3VuZGFyeSDigJQgc28gd2l0aCB0aGVtLCBhbnkgdGhyZXNob2xkIGFib3ZlIGZpdmUgbWludXRlcyBjb3VsZFxuICAvLyBuZXZlciBmaXJlLCB3aGljaCBpcyBldmVyeSB0aHJlc2hvbGQgd29ydGggc2V0dGluZyBoZXJlLiBCb3VuZGFyaWVzIGF0IDFtLFxuICAvLyAybSwgNW0sIDEwbSwgMTVtLCAzMG0sIDFoLCAyaCwgNGg6IDE1bSBpcyBleGFjdCBiZWNhdXNlIHRoYXQgaXMgdGhlXG4gIC8vIGVzY2FsYXRpb24gZGVsYXkgdGhlIGFsZXJ0IGNvbXBhcmVzIGFnYWluc3QsIGFuZCB0aGUgcmFuZ2UgcmVhY2hlcyA0aCBzbyBhXG4gIC8vIHBhZ2Ugbm9ib2R5IGV2ZXIgcGlja2VkIHVwIGlzIHN0aWxsIGNvdW50ZWQgcmF0aGVyIHRoYW4gY2xpcHBlZC5cbiAgb25jYWxsX3BhZ2VfYWNrX3NlY29uZHM6IFs2MCwgMTIwLCAzMDAsIDYwMCwgOTAwLCAxODAwLCAzNjAwLCA3MjAwLCAxNDQwMF0sXG4gIC8vIENTQVQsIDEtNS4gTm90IGEgZHVyYXRpb24gYXQgYWxsLCBhbmQgbGlzdGVkIGhlcmUgZm9yIHRoZSBzYW1lIHJlYXNvbiBhc1xuICAvLyB0aGUgb3RoZXJzOiB0aGUgZGVmYXVsdCBidWNrZXRzIGFyZSBzdWItc2Vjb25kLCBzbyBldmVyeSByYXRpbmcgd291bGQgbGFuZFxuICAvLyBpbiB0aGUgc2FtZSBidWNrZXQgYW5kIHRoZSBxdWFudGlsZSB3b3VsZCBiZSBtZWFuaW5nbGVzcy4gT25lIGJvdW5kYXJ5IHBlclxuICAvLyBwb3NzaWJsZSBzY29yZSBtYWtlcyBgX3N1bSAvIF9jb3VudGAgYW4gZXhhY3QgYXZlcmFnZSBhbmQgZWFjaCBidWNrZXQgYVxuICAvLyByZWFsIGNvdW50LiBJdCByaWRlcyB0aGUgaGlzdG9ncmFtIHJhdGhlciB0aGFuIGEgY291bnRlci1wZXItc2NvcmUgc28gdGhlXG4gIC8vIGF2ZXJhZ2UgbmVlZHMgbm8gUHJvbVFMIGFyaXRobWV0aWMgb3ZlciBmaXZlIHNlcmllcy5cbiAgc3VwcG9ydF9zYXRpc2ZhY3Rpb246IFsxLCAyLCAzLCA0LCA1XSxcbn07XG5cbi8qKiBUaGUgbGF6eSBidXNpbmVzcy1tZXRyaWMgaGVscGVycywgYm91bmQgdG8gb25lIHJlZ2lzdHJ5LiAqL1xuZXhwb3J0IGludGVyZmFjZSBNZXRyaWNIZWxwZXJzIHtcbiAgaW5jQ291bnRlcihuYW1lOiBzdHJpbmcsIGxhYmVscz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz4sIHZhbHVlPzogbnVtYmVyKTogdm9pZDtcbiAgb2JzZXJ2ZShuYW1lOiBzdHJpbmcsIGxhYmVsczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiwgdmFsdWU6IG51bWJlcik6IHZvaWQ7XG4gIHNldEdhdWdlKG5hbWU6IHN0cmluZywgbGFiZWxzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LCB2YWx1ZTogbnVtYmVyKTogdm9pZDtcbiAgcmVzZXRHYXVnZShuYW1lOiBzdHJpbmcpOiB2b2lkO1xufVxuXG4vKipcbiAqIEJ1aWxkIGBpbmNDb3VudGVyYCAvIGBvYnNlcnZlYCAvIGBzZXRHYXVnZWAgb3ZlciBhIGNhbGxlci1zdXBwbGllZCByZWdpc3RyeS5cbiAqXG4gKiBUSEUgb25lIGltcGxlbWVudGF0aW9uIG9mIHRoZSBsYXp5IGNvdW50ZXIvaGlzdG9ncmFtL2dhdWdlIG1hcHMuIGFwaS1zZXJ2ZXInc1xuICogb3duIGV4cG9ydHMgYmVsb3cgYXJlIHRoaXMgZmFjdG9yeSBvdmVyIGl0cyBtb2R1bGUtbGV2ZWwgYHJlZ2lzdGVyYDsgdGhlXG4gKiBwbGF0Zm9ybSBzZXJ2aWNlIOKAlCB3aGljaCBydW5zIGl0cyBvd24gRXhwcmVzcyBzZXR1cCBpbnN0ZWFkIG9mIGBjcmVhdGVBcHBgLFxuICogYW5kIHRoZXJlZm9yZSBvd25zIGEgZGlmZmVyZW50IHJlZ2lzdHJ5IOKAlCBidWlsZHMgdGhlIGlkZW50aWNhbCBoZWxwZXJzIG92ZXJcbiAqIGl0cyBvd24uIFdpdGhvdXQgdGhlIGZhY3RvcnkgdGhlIHR3byBkcmlmdDogdGhleSBkaWZmZXIgdG9kYXkgb25seSBpbiB0aGVcbiAqIGhpc3RvZ3JhbSBidWNrZXRzLCB3aGljaCBpcyBleGFjdGx5IHRoZSBraW5kIG9mIGRpZmZlcmVuY2Ugbm9ib2R5IG5vdGljZXNcbiAqIHVudGlsIGEgZGFzaGJvYXJkIHJlYWRzIHdyb25nIG9uIG9uZSBzZXJ2aWNlLlxuICpcbiAqIGByZWdpc3RyeWAgbWF5IGJlIGEgdGh1bmssIGZvciBhIHJlZ2lzdHJ5IHRoYXQgaXMgaW5qZWN0ZWQgYWZ0ZXIgbW9kdWxlIGxvYWRcbiAqIChwbGF0Zm9ybSB3aXJlcyBpdHMgb3duIG9uIGFwcCBib290KS4gVGhlIHRodW5rIGlzIGNhbGxlZCBvbiB0aGUgRklSU1QgdXNlIG9mXG4gKiBlYWNoIG1ldHJpYyBuYW1lLCBuZXZlciBhdCBpbXBvcnQgdGltZSwgc28gYnVpbGRpbmcgdGhlIGhlbHBlcnMgaGFzIG5vIHNpZGVcbiAqIGVmZmVjdCBvZiBpdHMgb3duLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTWV0cmljSGVscGVycyhyZWdpc3RyeTogUmVnaXN0cnkgfCAoKCkgPT4gUmVnaXN0cnkpKTogTWV0cmljSGVscGVycyB7XG4gIGNvbnN0IHJlZ2lzdHJ5T2YgPSAoKTogUmVnaXN0cnkgPT4gKHR5cGVvZiByZWdpc3RyeSA9PT0gJ2Z1bmN0aW9uJyA/IHJlZ2lzdHJ5KCkgOiByZWdpc3RyeSk7XG4gIGNvbnN0IGNvdW50ZXJzID0gbmV3IE1hcDxzdHJpbmcsIENvdW50ZXI8c3RyaW5nPj4oKTtcbiAgY29uc3QgaGlzdG9ncmFtcyA9IG5ldyBNYXA8c3RyaW5nLCBIaXN0b2dyYW08c3RyaW5nPj4oKTtcbiAgY29uc3QgZ2F1Z2VzID0gbmV3IE1hcDxzdHJpbmcsIEdhdWdlPHN0cmluZz4+KCk7XG5cbiAgcmV0dXJuIHtcbiAgICBpbmNDb3VudGVyKG5hbWUsIGxhYmVscyA9IHt9LCB2YWx1ZSA9IDEpIHtcbiAgICAgIGxldCBjb3VudGVyID0gY291bnRlcnMuZ2V0KG5hbWUpO1xuICAgICAgaWYgKCFjb3VudGVyKSB7XG4gICAgICAgIGNvdW50ZXIgPSBuZXcgQ291bnRlcih7XG4gICAgICAgICAgbmFtZSxcbiAgICAgICAgICBoZWxwOiBodW1hbml6ZU5hbWUobmFtZSksXG4gICAgICAgICAgbGFiZWxOYW1lczogT2JqZWN0LmtleXMobGFiZWxzKSxcbiAgICAgICAgICByZWdpc3RlcnM6IFtyZWdpc3RyeU9mKCldLFxuICAgICAgICB9KTtcbiAgICAgICAgY291bnRlcnMuc2V0KG5hbWUsIGNvdW50ZXIpO1xuICAgICAgfVxuICAgICAgY291bnRlci5pbmMobGFiZWxzLCB2YWx1ZSk7XG4gICAgfSxcblxuICAgIG9ic2VydmUobmFtZSwgbGFiZWxzLCB2YWx1ZSkge1xuICAgICAgbGV0IGhpc3QgPSBoaXN0b2dyYW1zLmdldChuYW1lKTtcbiAgICAgIGlmICghaGlzdCkge1xuICAgICAgICBoaXN0ID0gbmV3IEhpc3RvZ3JhbSh7XG4gICAgICAgICAgbmFtZSxcbiAgICAgICAgICBoZWxwOiBodW1hbml6ZU5hbWUobmFtZSksXG4gICAgICAgICAgbGFiZWxOYW1lczogT2JqZWN0LmtleXMobGFiZWxzKSxcbiAgICAgICAgICAvLyBEZWZhdWx0IGJ1Y2tldHMgdGFyZ2V0IHN1Yi1zZWNvbmQgdGhyb3VnaCBzZXZlcmFsLW1pbnV0ZVxuICAgICAgICAgIC8vIG9ic2VydmF0aW9ucy4gQW55dGhpbmcgdGhhdCBjYW4gZXhjZWVkIGZpdmUgbWludXRlcyBNVVNUIGRlY2xhcmUgaXRzXG4gICAgICAgICAgLy8gb3duIGRpc3RyaWJ1dGlvbiBpbiBgSElTVE9HUkFNX0JVQ0tFVFNgIGFib3ZlIOKAlCBwYXN0IHRoZSBsYXN0IGZpbml0ZVxuICAgICAgICAgIC8vIGJvdW5kYXJ5IGEgcXVhbnRpbGUgcmVhZHMgYmFjayBhcyB0aGF0IGJvdW5kYXJ5LCBzbyBhIHRocmVzaG9sZFxuICAgICAgICAgIC8vIGJleW9uZCBpdCBuZXZlciBmaXJlcy5cbiAgICAgICAgICBidWNrZXRzOiBbLi4uKEhJU1RPR1JBTV9CVUNLRVRTW25hbWVdID8/IFswLjA1LCAwLjEsIDAuMjUsIDAuNSwgMSwgMi41LCA1LCAxMCwgMzAsIDYwLCAxMjAsIDMwMF0pXSxcbiAgICAgICAgICByZWdpc3RlcnM6IFtyZWdpc3RyeU9mKCldLFxuICAgICAgICB9KTtcbiAgICAgICAgaGlzdG9ncmFtcy5zZXQobmFtZSwgaGlzdCk7XG4gICAgICB9XG4gICAgICBoaXN0Lm9ic2VydmUobGFiZWxzLCB2YWx1ZSk7XG4gICAgfSxcblxuICAgIHNldEdhdWdlKG5hbWUsIGxhYmVscywgdmFsdWUpIHtcbiAgICAgIGxldCBnYXVnZSA9IGdhdWdlcy5nZXQobmFtZSk7XG4gICAgICBpZiAoIWdhdWdlKSB7XG4gICAgICAgIGdhdWdlID0gbmV3IEdhdWdlKHtcbiAgICAgICAgICBuYW1lLFxuICAgICAgICAgIGhlbHA6IGh1bWFuaXplTmFtZShuYW1lKSxcbiAgICAgICAgICBsYWJlbE5hbWVzOiBPYmplY3Qua2V5cyhsYWJlbHMpLFxuICAgICAgICAgIHJlZ2lzdGVyczogW3JlZ2lzdHJ5T2YoKV0sXG4gICAgICAgIH0pO1xuICAgICAgICBnYXVnZXMuc2V0KG5hbWUsIGdhdWdlKTtcbiAgICAgIH1cbiAgICAgIGdhdWdlLnNldChsYWJlbHMsIHZhbHVlKTtcbiAgICB9LFxuXG4gICAgcmVzZXRHYXVnZShuYW1lKSB7XG4gICAgICBnYXVnZXMuZ2V0KG5hbWUpPy5yZXNldCgpO1xuICAgIH0sXG4gIH07XG59XG5cbi8qKiBUaGlzIHNlcnZpY2UncyBvd24gaGVscGVycywgb3ZlciB0aGUgc2hhcmVkIG1vZHVsZS1sZXZlbCByZWdpc3RyeS4gKi9cbmNvbnN0IGJ1c2luZXNzTWV0cmljcyA9IGNyZWF0ZU1ldHJpY0hlbHBlcnMocmVnaXN0ZXIpO1xuXG4vKipcbiAqIEluY3JlbWVudCBhIGJ1c2luZXNzIGNvdW50ZXIsIGNyZWF0aW5nIGl0IG9uIGZpcnN0IHVzZS5cbiAqXG4gKiBFdmVyeSBleGFtcGxlIGJlbG93IGlzIGEgY2FsbCB0aGF0IEVYSVNUUywgd2l0aCB0aGUgbGFiZWxzIGl0IHJlYWxseSBwYXNzZXMuIFRoYXQgaXNcbiAqIGRlbGliZXJhdGU6IGFuIGludmVudGVkIGV4YW1wbGUgcmVhZHMgYXMgYW4gaW52ZW50b3J5IG9mIHdoYXQgdGhlIHN5c3RlbSBtZWFzdXJlcywgYW5kXG4gKiBhIG1ldHJpY3Mgc3VydmV5IGxhdGVyIGNvdW50ZWQgdGhyZWUgbmFtZXMgZnJvbSB0aGlzIGJsb2NrIOKAlCBgcGlwZWxpbmVzX2dlbmVyYXRlZF90b3RhbGAsXG4gKiBgcXVvdGFfdGhyZXNob2xkX2Nyb3NzZWRfdG90YWxgLCBgY29tcGxpYW5jZV92aW9sYXRpb25zX2ZvdW5kX3RvdGFsYCDigJQgYXMgbGl2ZSBtZXRyaWNzXG4gKiBtaXNzaW5nIGEgZGFzaGJvYXJkIHBhbmVsLiBOb3RoaW5nIGVtaXR0ZWQgYW55IG9mIHRoZW0uIElsbHVzdHJhdGl2ZSBuYW1lcyBpbiBhIGRvY3N0cmluZ1xuICogYWJvdXQgbWV0cmljIG5hbWluZyBhcmUgaW5kaXN0aW5ndWlzaGFibGUgZnJvbSByZWFsIG9uZXMsIHNvIHRoZXJlIGFyZSBub25lIGhlcmUuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGluY0NvdW50ZXIoJ3BsdWdpbl9idWlsZHNfdG90YWwnLCB7IHN0YXR1czogJ3N1Y2Nlc3MnLCBvcmdfaWQ6IG9yZ0lkIH0pO1xuICogaW5jQ291bnRlcignY29tcGxpYW5jZV9zY2Fuc190b3RhbCcsIHsgb3V0Y29tZTogJ3N0YXJ0ZWQnIH0pO1xuICogaW5jQ291bnRlcigncGx1Z2luX3Z1bG5fZmluZGluZ3NfdG90YWwnLCB7IHRyaWdnZXIsIHNldmVyaXR5IH0sIGNvdW50KTtcbiAqIGluY0NvdW50ZXIoJ2FpX3Rva2Vuc190b3RhbCcsIHsgcm91dGU6ICdhZ2VudCcsIGtpbmQ6ICdpbnB1dCcgfSwgaW5wdXRUb2tlbnMpO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbmNDb3VudGVyKG5hbWU6IHN0cmluZywgbGFiZWxzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge30sIHZhbHVlID0gMSk6IHZvaWQge1xuICBidXNpbmVzc01ldHJpY3MuaW5jQ291bnRlcihuYW1lLCBsYWJlbHMsIHZhbHVlKTtcbn1cblxuLyoqXG4gKiBSZWNvcmQgYW4gb2JzZXJ2YXRpb24gb24gYSBidXNpbmVzcyBoaXN0b2dyYW0sIGNyZWF0aW5nIGl0IG9uIGZpcnN0IHVzZS5cbiAqIFVzZSBmb3IgZHVyYXRpb25zLCBzaXplcywgYW55dGhpbmcgd2hlcmUgcGVyY2VudGlsZXMgbWF0dGVyLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBvYnNlcnZlKCdhaV9nZW5lcmF0aW9uX2R1cmF0aW9uX3NlY29uZHMnLCB7IHJvdXRlLCBwcm92aWRlcjogcHJvdmlkZXJMYWJlbCB9LCBkdXJhdGlvblNlYyk7XG4gKiBvYnNlcnZlKCdwbHVnaW5fYnVpbGRfZHVyYXRpb25fc2Vjb25kcycsIHsgb3JnX2lkOiBvcmdJZCB9LCBkdXJhdGlvblNlYyk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG9ic2VydmUobmFtZTogc3RyaW5nLCBsYWJlbHM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4sIHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcbiAgYnVzaW5lc3NNZXRyaWNzLm9ic2VydmUobmFtZSwgbGFiZWxzLCB2YWx1ZSk7XG59XG5cbi8qKlxuICogU2V0IHRoZSB2YWx1ZSBvZiBhIGJ1c2luZXNzIGdhdWdlLCBjcmVhdGluZyBpdCBvbiBmaXJzdCB1c2UuIFVzZSBmb3JcbiAqIHBvaW50LWluLXRpbWUgb2JzZXJ2YXRpb25zIHNhbXBsZWQgYnkgYSBzY3JhcGVyIOKAlCBxdWV1ZSBkZXB0aCwgYWN0aXZlXG4gKiBjb25uZWN0aW9uIGNvdW50cywgaW4tZmxpZ2h0IHJlcXVlc3RzLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBzZXRHYXVnZSgncGx1Z2luX3F1ZXVlX2pvYnMnLCB7IHF1ZXVlOiAncGx1Z2luLWJ1aWxkJywgc3RhdGU6ICd3YWl0aW5nJyB9LCAxMik7XG4gKiBzZXRHYXVnZSgncGx1Z2luX3F1ZXVlX2pvYnMnLCB7IHF1ZXVlOiAncGx1Z2luLWJ1aWxkJywgc3RhdGU6ICdhY3RpdmUnIH0sIDMpO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRHYXVnZShuYW1lOiBzdHJpbmcsIGxhYmVsczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiwgdmFsdWU6IG51bWJlcik6IHZvaWQge1xuICBidXNpbmVzc01ldHJpY3Muc2V0R2F1Z2UobmFtZSwgbGFiZWxzLCB2YWx1ZSk7XG59XG5cbi8qKlxuICogRHJvcCBFVkVSWSBzZXJpZXMgb2YgYSBidXNpbmVzcyBnYXVnZS4gRm9yIGEgZ2F1Z2UgdGhhdCBkZXNjcmliZXMgYSBTRVQg4oCUIG9uZVxuICogc2VyaWVzIHBlciBjb25maWd1cmVkIGVudHJ5IOKAlCBhbmQgaXMgcmUtcHVibGlzaGVkIHdob2xlOiB3aXRob3V0IHRoZSByZXNldCwgYVxuICogc2VyaWVzIGZvciBhbiBlbnRyeSB0aGF0IGhhcyBzaW5jZSBiZWVuIGRlbGV0ZWQga2VlcHMgaXRzIGxhc3QgdmFsdWUgZm9yZXZlcixcbiAqIGFuZCBhbiBhbGVydCBvbiBpdCBrZWVwcyBmaXJpbmcgZm9yIHNvbWV0aGluZyB0aGF0IG5vIGxvbmdlciBleGlzdHMuIENhbGwgaXRcbiAqIGltbWVkaWF0ZWx5IGJlZm9yZSByZS1zZXR0aW5nIHRoZSBjdXJyZW50IHNldC4gQSBnYXVnZSBuZXZlciBzZXQgaXMgYSBuby1vcC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc2V0R2F1Z2UobmFtZTogc3RyaW5nKTogdm9pZCB7XG4gIGJ1c2luZXNzTWV0cmljcy5yZXNldEdhdWdlKG5hbWUpO1xufVxuXG5mdW5jdGlvbiBodW1hbml6ZU5hbWUobWV0cmljTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgLy8gYHBsdWdpbl9idWlsZHNfdG90YWxgIOKGkiBcIlBsdWdpbiBidWlsZHMgdG90YWxcIlxuICByZXR1cm4gbWV0cmljTmFtZVxuICAgIC5yZXBsYWNlKC9fL2csICcgJylcbiAgICAucmVwbGFjZSgvXi4vLCAoYykgPT4gYy50b1VwcGVyQ2FzZSgpKTtcbn1cbiJdfQ==
|
|
367
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0cmljcy5qcyIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwaS9tZXRyaWNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLDhCQUE4QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDbEcsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRXpELE9BQU8sRUFBRSxRQUFRLEVBQUUscUJBQXFCLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFekYsTUFBTSxZQUFZLEdBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQTZCLENBQUMsV0FBVyxDQUFDO0FBRTdGLGlDQUFpQztBQUNqQyxNQUFNLFFBQVEsR0FBRyxJQUFJLFFBQVEsRUFBRSxDQUFDO0FBRWhDLHFDQUFxQztBQUNyQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQztBQUVyRCxrRkFBa0Y7QUFDbEYscUJBQXFCLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO0FBRXBDOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSwyQkFBMkIsQ0FBQyxRQUFrQjtJQUM1RCxPQUFPLElBQUksS0FBSyxDQUFDO1FBQ2YsSUFBSSxFQUFFLDhCQUE4QjtRQUNwQyxJQUFJLEVBQUUsa0tBQWtLO1FBQ3hLLFVBQVUsRUFBRSxDQUFDLFFBQVEsQ0FBVTtRQUMvQixTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUM7UUFDckIsT0FBTztZQUNMLEtBQUssTUFBTSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsSUFBSSxvQkFBb0IsRUFBRSxFQUFFLENBQUM7Z0JBQzdELElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENB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LENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDaEQsQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSxVQUFVLENBQUMsSUFBWTtJQUNyQyxlQUFlLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ25DLENBQUM7QUFFRCxTQUFTLFlBQVksQ0FBQyxVQUFrQjtJQUN0QyxnREFBZ0Q7SUFDaEQsT0FBTyxVQUFVO1NBQ2QsT0FBTyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUM7U0FDbEIsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7QUFDM0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgeyBwcmV2aW91c1NlY3JldFN0YXRlcywgU0VDUkVUX1JPVEFUSU9OX1BSRVZJT1VTX0dBVUdFIH0gZnJvbSAnQHBpcGVsaW5lLWJ1aWxkZXIvYXBpLWNvcmUnO1xuaW1wb3J0IHsgQ29uZmlnIH0gZnJvbSAnQHBpcGVsaW5lLWJ1aWxkZXIvcGlwZWxpbmUtY29yZSc7XG5pbXBvcnQgdHlwZSB7IFJlcXVlc3QsIFJlc3BvbnNlLCBOZXh0RnVuY3Rpb24gfSBmcm9tICdleHByZXNzJztcbmltcG9ydCB7IFJlZ2lzdHJ5LCBjb2xsZWN0RGVmYXVsdE1ldHJpY3MsIENvdW50ZXIsIEhpc3RvZ3JhbSwgR2F1Z2UgfSBmcm9tICdwcm9tLWNsaWVudCc7XG5cbmNvbnN0IFNFUlZJQ0VfTkFNRSA9IChDb25maWcuZ2V0QW55KCdvYnNlcnZhYmlsaXR5JykgYXMgeyBzZXJ2aWNlTmFtZTogc3RyaW5nIH0pLnNlcnZpY2VOYW1lO1xuXG4vKiogU2hhcmVkIFByb21ldGhldXMgcmVnaXN0cnkgKi9cbmNvbnN0IHJlZ2lzdGVyID0gbmV3IFJlZ2lzdHJ5KCk7XG5cbi8vIFNldCBkZWZhdWx0IGxhYmVscyBmb3IgYWxsIG1ldHJpY3NcbnJlZ2lzdGVyLnNldERlZmF1bHRMYWJlbHMoeyBzZXJ2aWNlOiBTRVJWSUNFX05BTUUgfSk7XG5cbi8vIENvbGxlY3QgZGVmYXVsdCBOb2RlLmpzIHByb2Nlc3MgbWV0cmljcyAoQ1BVLCBtZW1vcnksIGhlYXAsIGV2ZW50IGxvb3AgbGFnLCBHQylcbmNvbGxlY3REZWZhdWx0TWV0cmljcyh7IHJlZ2lzdGVyIH0pO1xuXG4vKipcbiAqIFJlZ2lzdGVyIHRoZSBgc2VjcmV0X3JvdGF0aW9uX3ByZXZpb3VzX3NldHtzZWNyZXR9YCBnYXVnZSBvbiBgcmVnaXN0cnlgOiAxXG4gKiB3aGlsZSBhIHNlY3JldCdzIGAqX1BSRVZJT1VTYCByb3RhdGlvbiB2YWx1ZSBpcyBzdGlsbCBzZXQsIDAgb3RoZXJ3aXNlLiBUaGVcbiAqIHZhbHVlIGlzIHJlYWQgZnJvbSBhcGktY29yZSdzIHByb2JlIHJlZ2lzdHJ5IGF0IHNjcmFwZSB0aW1lLCBzbyBpdCBhbHdheXNcbiAqIHJlZmxlY3RzIHRoZSBsaXZlIHByb2Nlc3MuIEV4cG9ydGVkIHNvIHBsYXRmb3JtIChvd24gcmVnaXN0cnkpIGV4cG9zZXMgdGhlXG4gKiBpZGVudGljYWwgc2VyaWVzOyB0aGUgYFNlY3JldFJvdGF0aW9uUHJldmlvdXNMaW5nZXJpbmdgIGFsZXJ0IGtleXMgb24gaXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlclNlY3JldFJvdGF0aW9uR2F1Z2UocmVnaXN0cnk6IFJlZ2lzdHJ5KTogR2F1Z2U8J3NlY3JldCc+IHtcbiAgcmV0dXJuIG5ldyBHYXVnZSh7XG4gICAgbmFtZTogU0VDUkVUX1JPVEFUSU9OX1BSRVZJT1VTX0dBVUdFLFxuICAgIGhlbHA6ICcxIHdoaWxlIGEgc2VjcmV0IHJvdGF0aW9uIHByZXZpb3VzIHZhbHVlIChlLmcuIFNFQ1JFVF9FTkNSWVBUSU9OX0tFWV9QUkVWSU9VUykgb3IgYSByZXRpcmluZyBzaWduaW5nIGtleSBpcyBzdGlsbCBhY2NlcHRlZDsgc2VlIGRvY3MvcnVuYm9va3Mvc2VjcmV0LXJvdGF0aW9uLm1kJyxcbiAgICBsYWJlbE5hbWVzOiBbJ3NlY3JldCddIGFzIGNvbnN0LFxuICAgIHJlZ2lzdGVyczogW3JlZ2lzdHJ5XSxcbiAgICBjb2xsZWN0KCkge1xuICAgICAgZm9yIChjb25zdCB7IHNlY3JldCwgcHJldmlvdXNTZXQgfSBvZiBwcmV2aW91c1NlY3JldFN0YXRlcygpKSB7XG4gICAgICAgIHRoaXMuc2V0KHsgc2VjcmV0IH0sIHByZXZpb3VzU2V0ID8gMSA6IDApO1xuICAgICAgfVxuICAgIH0sXG4gIH0pO1xufVxuXG5yZWdpc3RlclNlY3JldFJvdGF0aW9uR2F1Z2UocmVnaXN0ZXIpO1xuXG4vKiogSFRUUCByZXF1ZXN0IGR1cmF0aW9uIGhpc3RvZ3JhbSAoc2Vjb25kcykgKi9cbmNvbnN0IGh0dHBSZXF1ZXN0RHVyYXRpb24gPSBuZXcgSGlzdG9ncmFtKHtcbiAgbmFtZTogJ2h0dHBfcmVxdWVzdF9kdXJhdGlvbl9zZWNvbmRzJyxcbiAgaGVscDogJ0R1cmF0aW9uIG9mIEhUVFAgcmVxdWVzdHMgaW4gc2Vjb25kcycsXG4gIGxhYmVsTmFtZXM6IFsnbWV0aG9kJywgJ3JvdXRlJywgJ3N0YXR1c19jb2RlJ10gYXMgY29uc3QsXG4gIGJ1Y2tldHM6IFswLjAwNSwgMC4wMSwgMC4wMjUsIDAuMDUsIDAuMSwgMC4yNSwgMC41LCAxLCAyLjUsIDUsIDEwXSxcbiAgcmVnaXN0ZXJzOiBbcmVnaXN0ZXJdLFxufSk7XG5cbi8qKiBIVFRQIHJlcXVlc3QgY291bnRlciAqL1xuY29uc3QgaHR0cFJlcXVlc3RzVG90YWwgPSBuZXcgQ291bnRlcih7XG4gIG5hbWU6ICdodHRwX3JlcXVlc3RzX3RvdGFsJyxcbiAgaGVscDogJ1RvdGFsIG51bWJlciBvZiBIVFRQIHJlcXVlc3RzJyxcbiAgbGFiZWxOYW1lczogWydtZXRob2QnLCAncm91dGUnLCAnc3RhdHVzX2NvZGUnXSBhcyBjb25zdCxcbiAgcmVnaXN0ZXJzOiBbcmVnaXN0ZXJdLFxufSk7XG5cbi8qKlxuICogUGVyLW9yZyBIVFRQIHJlcXVlc3QgY291bnRlciDigJQgU0FNUExFRCB0byBrZWVwIFByb21ldGhldXMgY2FyZGluYWxpdHlcbiAqIHVuZGVyIGNvbnRyb2wuIENhcmRpbmFsaXR5IG9mIGBvcmdfaWQgKiBtZXRob2QgKiByb3V0ZSAqIHN0YXR1c19jb2RlYFxuICogZ3Jvd3MgbXVsdGlwbGljYXRpdmVseTsgd2l0aCBOIG9yZ3MgKiA1MCByb3V0ZXMgKiA1IHN0YXR1c19jb2RlcyB0aGF0J3NcbiAqIDI1MMOXTiBzZXJpZXMuIFdlIHNhbXBsZSAxLWluLU4gcmVxdWVzdHMgKGNvbmZpZ3VyYWJsZSB2aWFcbiAqIGBIVFRQX01FVFJJQ1NfT1JHX1NBTVBMRV9SQVRFYCwgZGVmYXVsdCAwID0gb2ZmKS5cbiAqXG4gKiBPcGVyYXRvcnMgYW5zd2VyIFwid2hhdCdzIG9yZyBYJ3MgcDk5P1wiIHZpYSBzZXBhcmF0ZSBwZXItb3JnIGhpc3RvZ3JhbXNcbiAqIHNjcmFwZWQgYXQgYSBsb3dlciByYXRlLCBPUiB2aWEgTG9raSBMb2dRTCBxdWVyaWVzIGFnYWluc3QgdGhlXG4gKiB1bnNhbXBsZWQgYWNjZXNzLWxvZyBzdHJlYW0uIFRoaXMgY291bnRlciBpcyB0aGUgZmFzdC1wYXRoIFwibm9pc3lcbiAqIG5laWdoYm9yIGRldGVjdGlvblwiIOKAlCBvcGVyYXRvcnMgYWxlcnQgd2hlbiBvbmUgb3JnJ3MgcmVxdWVzdCByYXRlXG4gKiBkZXZpYXRlcyBmcm9tIHRoZSBmbGVldCBtZWRpYW4uXG4gKlxuICogTk9UIGEgaGlzdG9ncmFtOiBoaXN0b2dyYW0gbGFiZWwgY2FyZGluYWxpdHkgaXMgZXZlbiBtb3JlIHNlbnNpdGl2ZVxuICogKGVhY2ggYnVja2V0IGlzIGEgc2VwYXJhdGUgc2VyaWVzKS4gSWYgcGVyLW9yZyBsYXRlbmN5IHBlcmNlbnRpbGVzIGFyZVxuICogbmVlZGVkIGxhdGVyLCBhZGQgYSBzZXBhcmF0ZSBoaXN0b2dyYW0gd2l0aCBhIGNvYXJzZXIgYnVja2V0IHNldCBhbmRcbiAqIGxvd2VyIHNhbXBsZSByYXRlLlxuICovXG5jb25zdCBodHRwUmVxdWVzdHNCeU9yZ1RvdGFsID0gbmV3IENvdW50ZXIoe1xuICBuYW1lOiAnaHR0cF9yZXF1ZXN0c19ieV9vcmdfdG90YWwnLFxuICBoZWxwOiAnU2FtcGxlZCBwZXItb3JnIEhUVFAgcmVxdWVzdCBjb3VudCAoc2FtcGxlIHJhdGUgdmlhIEhUVFBfTUVUUklDU19PUkdfU0FNUExFX1JBVEUpJyxcbiAgbGFiZWxOYW1lczogWydtZXRob2QnLCAncm91dGUnLCAnc3RhdHVzX2NvZGUnLCAnb3JnX2lkJ10gYXMgY29uc3QsXG4gIHJlZ2lzdGVyczogW3JlZ2lzdGVyXSxcbn0pO1xuXG4vKipcbiAqIFNhbXBsZSByYXRlIGZvciB0aGUgcGVyLW9yZyBjb3VudGVyLiAxLjAgPSBldmVyeSByZXF1ZXN0LCAwLjAgPSBkaXNhYmxlZC5cbiAqIFBhcnNlZCBvbmNlIGF0IG1vZHVsZSBsb2FkIOKAlCBvcGVyYXRvcnMgdHVuZSBieSByZXN0YXJ0aW5nIHRoZSBzZXJ2aWNlLlxuICpcbiAqIERlZmF1bHRzIHRvIDAgKE9GRikuIGBvcmdfaWRgIGlzIGFuIFVOQk9VTkRFRCwgdGVuYW50LWlkZW50aWZ5aW5nIGxhYmVsIGFuZFxuICogcHJvbS1jbGllbnQgY291bnRlcnMgbmV2ZXIgZXhwaXJlLCBzbyBhdCAxLjAgZXZlcnkgc2VydmljZSBhY2N1bXVsYXRlcyBhXG4gKiBzZXJpZXMgcGVyIChvcmcgw5cgcm91dGUgw5cgc3RhdHVzKSBmb3IgdGhlIHByb2Nlc3MgbGlmZXRpbWUsIGFuZCBgL21ldHJpY3NgIOKAlFxuICogd2hpY2ggaXMgbm90IGF1dGgtZ2F0ZWQg4oCUIGVudW1lcmF0ZXMgZXZlcnkgdGVuYW50IGlkIGFsb25nIHdpdGggaXRzIHJlcXVlc3RcbiAqIHZvbHVtZSBhbmQgZXJyb3IgcmF0ZSB0byBhbnlvbmUgd2hvIGNhbiByZWFjaCB0aGUgcG9ydC5cbiAqXG4gKiBUdXJuIGl0IG9uIGRlbGliZXJhdGVseSAoYW5kIGlkZWFsbHkgd2l0aCBhIHNhbXBsZSByYXRlIHdlbGwgdW5kZXIgMS4wLCBwbHVzXG4gKiBgTUVUUklDU19TQ1JBUEVfVE9LRU5gIHNldCkgd2hlbiB5b3UgYWN0dWFsbHkgd2FudCBwZXItb3JnIG5vaXN5LW5laWdoYm91clxuICogZGV0ZWN0aW9uIGZyb20gbWV0cmljcyByYXRoZXIgdGhhbiBmcm9tIHRoZSBhY2Nlc3MtbG9nIHN0cmVhbS5cbiAqL1xuY29uc3QgT1JHX1NBTVBMRV9SQVRFID0gKCgpID0+IHtcbiAgY29uc3QgcmF3ID0gcHJvY2Vzcy5lbnYuSFRUUF9NRVRSSUNTX09SR19TQU1QTEVfUkFURTtcbiAgaWYgKHJhdyA9PT0gdW5kZWZpbmVkIHx8IHJhdyA9PT0gJycpIHJldHVybiAwO1xuICBjb25zdCBwYXJzZWQgPSBwYXJzZUZsb2F0KHJhdyk7XG4gIGlmIChOdW1iZXIuaXNOYU4ocGFyc2VkKSB8fCBwYXJzZWQgPCAwIHx8IHBhcnNlZCA+IDEpIHJldHVybiAwO1xuICByZXR1cm4gcGFyc2VkO1xufSkoKTtcblxuLyoqXG4gKiBOb3JtYWxpemUgYW4gRXhwcmVzcyByb3V0ZSBwYXRoIHRvIHByZXZlbnQgbGFiZWwgY2FyZGluYWxpdHkgZXhwbG9zaW9uLlxuICpcbiAqIFVzZXMgRXhwcmVzcydzIG1hdGNoZWQgcm91dGUgcGF0dGVybiAoZS5nLiBgL3BsdWdpbnMvOmlkYCkgd2hlbiBhdmFpbGFibGUsXG4gKiBvdGhlcndpc2UgZmFsbHMgYmFjayB0byB0aGUgcmF3IHBhdGggd2l0aCBVVUlEL251bWVyaWMgc2VnbWVudHMgcmVwbGFjZWQuXG4gKi9cbmZ1bmN0aW9uIG5vcm1hbGl6ZVJvdXRlKHJlcTogUmVxdWVzdCk6IHN0cmluZyB7XG4gIC8vIFByZWZlciBFeHByZXNzIG1hdGNoZWQgcm91dGUgcGF0dGVyblxuICBpZiAocmVxLnJvdXRlPy5wYXRoKSB7XG4gICAgcmV0dXJuIHJlcS5iYXNlVXJsICsgcmVxLnJvdXRlLnBhdGg7XG4gIH1cblxuICAvLyBGYWxsYmFjazogcmVwbGFjZSBVVUlEcyBhbmQgbnVtZXJpYyBJRHMgd2l0aCA6aWRcbiAgcmV0dXJuIHJlcS5wYXRoXG4gICAgLnJlcGxhY2UoL1swLTlhLWZdezh9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezR9LVswLTlhLWZdezEyfS9naSwgJzppZCcpXG4gICAgLnJlcGxhY2UoL1xcL1xcZCsoPz1cXC98JCkvZywgJy86aWQnKTtcbn1cblxuLyoqXG4gKiBFeHByZXNzIG1pZGRsZXdhcmUgdGhhdCByZWNvcmRzIHJlcXVlc3QgZHVyYXRpb24gYW5kIGNvdW50LlxuICpcbiAqIE11c3QgYmUgcmVnaXN0ZXJlZCBiZWZvcmUgcm91dGUgaGFuZGxlcnMgc28gYHJlcy5vbignZmluaXNoJylgIGZpcmVzXG4gKiBhZnRlciB0aGUgcmVzcG9uc2UgaXMgc2VudC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1ldHJpY3NNaWRkbGV3YXJlKCkge1xuICByZXR1cm4gKHJlcTogUmVxdWVzdCwgcmVzOiBSZXNwb25zZSwgbmV4dDogTmV4dEZ1bmN0aW9uKTogdm9pZCA9PiB7XG4gICAgLy8gTk9URTogbm8gL21ldHJpY3Mgb3IgL2hlYWx0aCBza2lwIG5lZWRlZCBoZXJlIOKAlCBib3RoIGVuZHBvaW50cyBhcmVcbiAgICAvLyByZWdpc3RlcmVkIGluIGFwcC1mYWN0b3J5IEJFRk9SRSB0aGlzIG1pZGRsZXdhcmUgKGNyZWF0ZUhlYWx0aFJvdXRlciBhbmRcbiAgICAvLyBhcHAuZ2V0KCcvbWV0cmljcycpIGJvdGggdGVybWluYXRlIHRoZSByZXNwb25zZSksIHNvIG5laXRoZXIgZXZlciByZWFjaGVzXG4gICAgLy8gdGhpcyBoYW5kbGVyLlxuICAgIGNvbnN0IGVuZCA9IGh0dHBSZXF1ZXN0RHVyYXRpb24uc3RhcnRUaW1lcigpO1xuXG4gICAgcmVzLm9uKCdmaW5pc2gnLCAoKSA9PiB7XG4gICAgICBjb25zdCByb3V0ZSA9IG5vcm1hbGl6ZVJvdXRlKHJlcSk7XG4gICAgICBjb25zdCBsYWJlbHMgPSB7XG4gICAgICAgIG1ldGhvZDogcmVxLm1ldGhvZCxcbiAgICAgICAgcm91dGUsXG4gICAgICAgIHN0YXR1c19jb2RlOiBTdHJpbmcocmVzLnN0YXR1c0NvZGUpLFxuICAgICAgfTtcblxuICAgICAgZW5kKGxhYmVscyk7XG4gICAgICBodHRwUmVxdWVzdHNUb3RhbC5pbmMobGFiZWxzKTtcblxuICAgICAgLy8gUGVyLW9yZyBzYW1wbGVkIGNvdW50ZXIuIFNraXAgd2hlbjpcbiAgICAgIC8vICAgLSBubyBvcmcgY29udGV4dCBvbiB0aGUgcmVxdWVzdCAoYW5vbnltb3VzIC8gaGVhbHRoIGVuZHBvaW50cylcbiAgICAgIC8vICAgLSBzYW1wbGUgcmF0ZSBpcyAwIChkaXNhYmxlZClcbiAgICAgIC8vICAgLSBkaWNlIHJvbGwgZmFpbHNcbiAgICAgIC8vIFVzaW5nIE1hdGgucmFuZG9tIGZvciB0aGUgc2FtcGxlciDigJQgZm9yIHVuYmlhc2VkIGxvdy1yYXRlIHNhbXBsaW5nXG4gICAgICAvLyBhIGRldGVybWluaXN0aWMgcGVyLXJlcXVlc3QgaGFzaCB3b3VsZCBiZSBtb3JlIHVuaWZvcm0sIGJ1dCBhdCB0aGVcbiAgICAgIC8vIGRlZmF1bHQgcmF0ZSBvZiAxLjAgZXZlcnkgcmVxdWVzdCBsYW5kcyBzbyB0aGlzIGlzIGZpbmUuXG4gICAgICBjb25zdCBvcmdJZCA9IHJlcS51c2VyPy5vcmdhbml6YXRpb25JZDtcbiAgICAgIGlmIChvcmdJZCAmJiBPUkdfU0FNUExFX1JBVEUgPiAwICYmIE1hdGgucmFuZG9tKCkgPCBPUkdfU0FNUExFX1JBVEUpIHtcbiAgICAgICAgaHR0cFJlcXVlc3RzQnlPcmdUb3RhbC5pbmMoeyAuLi5sYWJlbHMsIG9yZ19pZDogb3JnSWQgfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBuZXh0KCk7XG4gIH07XG59XG5cbi8qKlxuICogRXhwcmVzcyBoYW5kbGVyIHRoYXQgcmV0dXJucyBQcm9tZXRoZXVzIG1ldHJpY3MgaW4gdGV4dCBleHBvc2l0aW9uIGZvcm1hdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1ldHJpY3NIYW5kbGVyKCkge1xuICByZXR1cm4gYXN5bmMgKF9yZXE6IFJlcXVlc3QsIHJlczogUmVzcG9uc2UpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICByZXMuc2V0KCdDb250ZW50LVR5cGUnLCByZWdpc3Rlci5jb250ZW50VHlwZSk7XG4gICAgcmVzLmVuZChhd2FpdCByZWdpc3Rlci5tZXRyaWNzKCkpO1xuICB9O1xufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEJ1c2luZXNzIC8gZG9tYWluIG1ldHJpY3Ncbi8vXG4vLyBTZXJ2aWNlcyBzaG91bGQgZW1pdCBjb3VudGVycyBmb3IgdGhlIHRoaW5ncyBvcGVyYXRvcnMgYWN0dWFsbHkgY2FyZSBhYm91dFxuLy8gKHBpcGVsaW5lcyBnZW5lcmF0ZWQsIHBsdWdpbiBidWlsZHMgY29tcGxldGVkLCBjb21wbGlhbmNlIHZpb2xhdGlvbnMsXG4vLyBBSSB0b2tlbnMgY29uc3VtZWQpIOKAlCBub3QganVzdCBIVFRQIHRyYWZmaWMuIFRoZSBoZWxwZXJzIGJlbG93IHJlZ2lzdGVyXG4vLyBjb3VudGVycyBsYXppbHkgb24gdGhlIHNoYXJlZCByZWdpc3RyeSBzbyBtdWx0aXBsZSBzZXJ2aWNlcyBjYW4gY2FsbFxuLy8gYGluY0NvdW50ZXIoJ3BsdWdpbl9idWlsZHNfdG90YWwnLCB7IHN0YXR1czogJ2NvbXBsZXRlZCcgfSlgIHdpdGhvdXRcbi8vIHdvcnJ5aW5nIGFib3V0IGRvdWJsZS1yZWdpc3RyYXRpb24uXG4vL1xuLy8gTmFtaW5nIGNvbnZlbnRpb246IGA8ZG9tYWluPl88bm91bj5fdG90YWxgIGZvciBjb3VudGVycywgYF9zZWNvbmRzYCBmb3Jcbi8vIGhpc3RvZ3JhbXMg4oCUIG1hdGNoZXMgUHJvbWV0aGV1cyBiZXN0LXByYWN0aWNlLlxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKlxuICogQnVja2V0IGRpc3RyaWJ1dGlvbnMgZm9yIGhpc3RvZ3JhbXMgd2hvc2Ugb2JzZXJ2YXRpb25zIGFyZSBub3doZXJlIG5lYXIgdGhlXG4gKiBzdWItc2Vjb25kLXRvLW1pbnV0ZXMgZGVmYXVsdC5cbiAqXG4gKiBUSElTIFRBQkxFIEVYSVNUUyBCRUNBVVNFIFRIRSBERUZBVUxUIFNJTEVOVExZIEJSRUFLUyBBTEVSVFMuIFRoZSBkZWZhdWx0IHNldFxuICogYmVsb3cgZW5kcyBhdCBhIDMwMC1zZWNvbmQgYnVja2V0LCBhbmQgYGhpc3RvZ3JhbV9xdWFudGlsZWAgY2Fubm90IGludGVycG9sYXRlXG4gKiBwYXN0IHRoZSBsYXN0IEZJTklURSBib3VuZGFyeSDigJQgZXZlcnl0aGluZyBhYm92ZSBpdCBsYW5kcyBpbiBgK0luZmAgYW5kIHRoZVxuICogcXVhbnRpbGUgcmVhZHMgYmFjayBhcyAzMDAgZm9yZXZlci4gQW4gYWxlcnQgb2YgdGhlIGZvcm0gYD4gMzAwYCBvbiBzdWNoIGFcbiAqIGhpc3RvZ3JhbSBjYW4gdGhlcmVmb3JlIG5ldmVyIGZpcmUsIGFuZCBhIHA5MCBwYW5lbCBmbGF0LWxpbmVzIGF0IGZpdmVcbiAqIG1pbnV0ZXMgaG93ZXZlciBiYWQgdGhpbmdzIGdldC4gTm90aGluZyBlcnJvcnMsIG5vdGhpbmcgaXMgbWlzc2luZyBmcm9tIHRoZVxuICogc2NyYXBlLCBhbmQgdGhlIGRhc2hib2FyZCBsb29rcyBoZWFsdGh5OiB0aGUgb25seSBzeW1wdG9tIGlzIGFuIGFsZXJ0IHRoYXRcbiAqIHN0YXlzIHF1aWV0IHRocm91Z2ggYW4gb3V0YWdlLiBgc3VwcG9ydF9maXJzdF9yZXNwb25zZV9zZWNvbmRzYCBtZWFzdXJlcyBob3Vyc1xuICogdG8gZGF5cyBhbmQgaGFkIGEgdGhyZXNob2xkIG9mIHR3ZWx2ZSBob3VycyBzaXR0aW5nIGFib3ZlIGEgY2VpbGluZyBvZiBmaXZlXG4gKiBtaW51dGVzLlxuICpcbiAqIFNvIGEgaGlzdG9ncmFtIHdob3NlIG5hdHVyYWwgcmFuZ2UgaXMgbWludXRlcy10by1kYXlzIGRlY2xhcmVzIGl0cyBidWNrZXRzXG4gKiBoZXJlLCBhbmQgQUxFUlQgVEhSRVNIT0xEUyBBUkUgUFVUIE9OIEJPVU5EQVJJRVM6IGEgdGhyZXNob2xkIGluc2lkZSBhIHdpZGVcbiAqIGJ1Y2tldCBpcyBzZXJ2ZWQgYnkgbGluZWFyIGludGVycG9sYXRpb24gYWNyb3NzIHRoYXQgYnVja2V0LCB3aGljaCBpcyBhIGd1ZXNzLFxuICogd2hpbGUgYSB0aHJlc2hvbGQgT04gYSBib3VuZGFyeSBpcyBleGFjdC4gRm9yIHN1cHBvcnQgdGhhdCBtZWFucyA2aCAodGhlIGFsZXJ0KVxuICogYW5kIDhoICh0aGUgc29sZCB0YXJnZXQpIGFyZSBib3RoIGJvdW5kYXJpZXMsIDI0aCBpcyB0aGUgb3BlcmF0aW9uYWwgZ3VhcmRcbiAqIGZyb20gdGhlIHN0YW5kYXJkL3ByaW9yaXR5IHJ1bGUsIGFuZCA5NmggY292ZXJzIHRoZSBsb25nZXN0IGxlZ2l0aW1hdGUgd2FpdCBhXG4gKiBidXNpbmVzcy1kYXkgdGFyZ2V0IGFsbG93cyDigJQgYSBwcmlvcml0eSBjYXNlIHJhaXNlZCBhdCAxNzowMSBvbiBhIEZyaWRheS5cbiAqXG4gKiBBZGQgYSBtZXRyaWMgaGVyZSB3aGVuIGl0cyBvYnNlcnZhdGlvbnMgY2FuIGV4Y2VlZCBmaXZlIG1pbnV0ZXMuIFRoZSB0YWJsZSBpc1xuICogcmVhZCBvbiBGSVJTVCBVU0Ugb2YgZWFjaCBuYW1lIGJ5IGBjcmVhdGVNZXRyaWNIZWxwZXJzYCwgc28gYm90aCByZWdpc3RyaWVzXG4gKiAoYXBpLXNlcnZlcidzIGFuZCBwbGF0Zm9ybSdzIG93bikgZ2V0IHRoZSBzYW1lIGRpc3RyaWJ1dGlvbiwgd2hpY2ggaXMgdGhlXG4gKiBkcmlmdCB0aGUgZmFjdG9yeSBleGlzdHMgdG8gcHJldmVudC5cbiAqL1xuY29uc3QgSElTVE9HUkFNX0JVQ0tFVFM6IFJlYWRvbmx5PFJlY29yZDxzdHJpbmcsIHJlYWRvbmx5IG51bWJlcltdPj4gPSB7XG4gIC8vIDE1bSwgMWgsIDJoLCA0aCwgNmgsIDhoLCAxMmgsIDI0aCwgNDhoLCA5NmguXG4gIHN1cHBvcnRfZmlyc3RfcmVzcG9uc2Vfc2Vjb25kczogWzkwMCwgMzYwMCwgNzIwMCwgMTQ0MDAsIDIxNjAwLCAyODgwMCwgNDMyMDAsIDg2NDAwLCAxNzI4MDAsIDM0NTYwMF0sXG4gIC8vIFN1Ym1pc3Npb24tdG8tZGVjaXNpb24gbGF0ZW5jeSBpcyBhIGh1bWFuIHJldmlldyBxdWV1ZTogaG91cnMgdG8gZGF5cy5cbiAgLy8gMTVtLCAxaCwgNGgsIDEyaCwgMWQsIDJkLCA0ZCwgN2QsIDE0ZC5cbiAgZWNvc3lzdGVtX2RlY2lzaW9uX2xhdGVuY3lfc2Vjb25kczogWzkwMCwgMzYwMCwgMTQ0MDAsIDQzMjAwLCA4NjQwMCwgMTcyODAwLCAzNDU2MDAsIDYwNDgwMCwgMTIwOTYwMF0sXG4gIC8vIFF1ZXVlIHdhaXQuIGBQbHVnaW5RdWV1ZVByb2Nlc3NpbmdTbG93YCBhc3NlcnRzIHA5NSA+IDMwMCwgd2hpY2ggdGhlIGRlZmF1bHRcbiAgLy8gY2VpbGluZyBvZiAzMDAgbWFkZSB1bmZpcmVhYmxlOyAzMDAgaXMgYSBib3VuZGFyeSBoZXJlIHNvIHRoZSBjb21wYXJpc29uIGlzXG4gIC8vIGV4YWN0IHJhdGhlciB0aGFuIGludGVycG9sYXRlZC5cbiAgcGx1Z2luX2pvYl93YWl0X3NlY29uZHM6IFsxLCA1LCAxNSwgMzAsIDYwLCAxMjAsIDMwMCwgNjAwLCAxODAwLCAzNjAwXSxcbiAgLy8gQSBjb250YWluZXIgYnVpbGQuIE1pbnV0ZXMgbm9ybWFsbHksIGZhciBsb25nZXIgZm9yIGEgY29sZCBiYXNlIGltYWdlLlxuICBwbHVnaW5fYnVpbGRfZHVyYXRpb25fc2Vjb25kczogWzEwLCAzMCwgNjAsIDEyMCwgMzAwLCA2MDAsIDEyMDAsIDE4MDAsIDM2MDBdLFxuICAvLyBBIGZ1bGwgaW1hZ2Ugc2Nhbiwgd2hpY2ggcm91dGluZWx5IHBhc3NlcyBmaXZlIG1pbnV0ZXMgb24gYSBsYXJnZSBpbWFnZS5cbiAgcGx1Z2luX3Z1bG5fc2Nhbl9kdXJhdGlvbl9zZWNvbmRzOiBbMSwgNSwgMTUsIDMwLCA2MCwgMTIwLCAzMDAsIDYwMCwgMTIwMF0sXG4gIC8vIFRpbWUgZnJvbSBhbiBpbmNpZGVudCBiZWluZyByYWlzZWQgdG8gYSBodW1hbiBhY2tub3dsZWRnaW5nIGl0LiBUaGUgZGVmYXVsdFxuICAvLyBidWNrZXRzIGVuZCBhdCAzMDBzLCBhbmQgYGhpc3RvZ3JhbV9xdWFudGlsZWAgY2Fubm90IGludGVycG9sYXRlIHBhc3QgdGhlXG4gIC8vIGxhc3QgZmluaXRlIGJvdW5kYXJ5IOKAlCBzbyB3aXRoIHRoZW0sIGFueSB0aHJlc2hvbGQgYWJvdmUgZml2ZSBtaW51dGVzIGNvdWxkXG4gIC8vIG5ldmVyIGZpcmUsIHdoaWNoIGlzIGV2ZXJ5IHRocmVzaG9sZCB3b3J0aCBzZXR0aW5nIGhlcmUuIEJvdW5kYXJpZXMgYXQgMW0sXG4gIC8vIDJtLCA1bSwgMTBtLCAxNW0sIDMwbSwgMWgsIDJoLCA0aDogMTVtIGlzIGV4YWN0IGJlY2F1c2UgdGhhdCBpcyB0aGVcbiAgLy8gZXNjYWxhdGlvbiBkZWxheSB0aGUgYWxlcnQgY29tcGFyZXMgYWdhaW5zdCwgYW5kIHRoZSByYW5nZSByZWFjaGVzIDRoIHNvIGFcbiAgLy8gcGFnZSBub2JvZHkgZXZlciBwaWNrZWQgdXAgaXMgc3RpbGwgY291bnRlZCByYXRoZXIgdGhhbiBjbGlwcGVkLlxuICBvbmNhbGxfcGFnZV9hY2tfc2Vjb25kczogWzYwLCAxMjAsIDMwMCwgNjAwLCA5MDAsIDE4MDAsIDM2MDAsIDcyMDAsIDE0NDAwXSxcbiAgLy8gQ1NBVCwgMS01LiBOb3QgYSBkdXJhdGlvbiBhdCBhbGwsIGFuZCBsaXN0ZWQgaGVyZSBmb3IgdGhlIHNhbWUgcmVhc29uIGFzXG4gIC8vIHRoZSBvdGhlcnM6IHRoZSBkZWZhdWx0IGJ1Y2tldHMgYXJlIHN1Yi1zZWNvbmQsIHNvIGV2ZXJ5IHJhdGluZyB3b3VsZCBsYW5kXG4gIC8vIGluIHRoZSBzYW1lIGJ1Y2tldCBhbmQgdGhlIHF1YW50aWxlIHdvdWxkIGJlIG1lYW5pbmdsZXNzLiBPbmUgYm91bmRhcnkgcGVyXG4gIC8vIHBvc3NpYmxlIHNjb3JlIG1ha2VzIGBfc3VtIC8gX2NvdW50YCBhbiBleGFjdCBhdmVyYWdlIGFuZCBlYWNoIGJ1Y2tldCBhXG4gIC8vIHJlYWwgY291bnQuIEl0IHJpZGVzIHRoZSBoaXN0b2dyYW0gcmF0aGVyIHRoYW4gYSBjb3VudGVyLXBlci1zY29yZSBzbyB0aGVcbiAgLy8gYXZlcmFnZSBuZWVkcyBubyBQcm9tUUwgYXJpdGhtZXRpYyBvdmVyIGZpdmUgc2VyaWVzLlxuICBzdXBwb3J0X3NhdGlzZmFjdGlvbjogWzEsIDIsIDMsIDQsIDVdLFxufTtcblxuLyoqIFRoZSBsYXp5IGJ1c2luZXNzLW1ldHJpYyBoZWxwZXJzLCBib3VuZCB0byBvbmUgcmVnaXN0cnkuICovXG5leHBvcnQgaW50ZXJmYWNlIE1ldHJpY0hlbHBlcnMge1xuICBpbmNDb3VudGVyKG5hbWU6IHN0cmluZywgbGFiZWxzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPiwgdmFsdWU/OiBudW1iZXIpOiB2b2lkO1xuICBvYnNlcnZlKG5hbWU6IHN0cmluZywgbGFiZWxzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LCB2YWx1ZTogbnVtYmVyKTogdm9pZDtcbiAgc2V0R2F1Z2UobmFtZTogc3RyaW5nLCBsYWJlbHM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4sIHZhbHVlOiBudW1iZXIpOiB2b2lkO1xuICByZXNldEdhdWdlKG5hbWU6IHN0cmluZyk6IHZvaWQ7XG59XG5cbi8qKlxuICogQnVpbGQgYGluY0NvdW50ZXJgIC8gYG9ic2VydmVgIC8gYHNldEdhdWdlYCBvdmVyIGEgY2FsbGVyLXN1cHBsaWVkIHJlZ2lzdHJ5LlxuICpcbiAqIFRIRSBvbmUgaW1wbGVtZW50YXRpb24gb2YgdGhlIGxhenkgY291bnRlci9oaXN0b2dyYW0vZ2F1Z2UgbWFwcy4gYXBpLXNlcnZlcidzXG4gKiBvd24gZXhwb3J0cyBiZWxvdyBhcmUgdGhpcyBmYWN0b3J5IG92ZXIgaXRzIG1vZHVsZS1sZXZlbCBgcmVnaXN0ZXJgOyB0aGVcbiAqIHBsYXRmb3JtIHNlcnZpY2Ug4oCUIHdoaWNoIHJ1bnMgaXRzIG93biBFeHByZXNzIHNldHVwIGluc3RlYWQgb2YgYGNyZWF0ZUFwcGAsXG4gKiBhbmQgdGhlcmVmb3JlIG93bnMgYSBkaWZmZXJlbnQgcmVnaXN0cnkg4oCUIGJ1aWxkcyB0aGUgaWRlbnRpY2FsIGhlbHBlcnMgb3ZlclxuICogaXRzIG93bi4gV2l0aG91dCB0aGUgZmFjdG9yeSB0aGUgdHdvIGRyaWZ0OiB0aGV5IGRpZmZlciB0b2RheSBvbmx5IGluIHRoZVxuICogaGlzdG9ncmFtIGJ1Y2tldHMsIHdoaWNoIGlzIGV4YWN0bHkgdGhlIGtpbmQgb2YgZGlmZmVyZW5jZSBub2JvZHkgbm90aWNlc1xuICogdW50aWwgYSBkYXNoYm9hcmQgcmVhZHMgd3Jvbmcgb24gb25lIHNlcnZpY2UuXG4gKlxuICogYHJlZ2lzdHJ5YCBtYXkgYmUgYSB0aHVuaywgZm9yIGEgcmVnaXN0cnkgdGhhdCBpcyBpbmplY3RlZCBhZnRlciBtb2R1bGUgbG9hZFxuICogKHBsYXRmb3JtIHdpcmVzIGl0cyBvd24gb24gYXBwIGJvb3QpLiBUaGUgdGh1bmsgaXMgY2FsbGVkIG9uIHRoZSBGSVJTVCB1c2Ugb2ZcbiAqIGVhY2ggbWV0cmljIG5hbWUsIG5ldmVyIGF0IGltcG9ydCB0aW1lLCBzbyBidWlsZGluZyB0aGUgaGVscGVycyBoYXMgbm8gc2lkZVxuICogZWZmZWN0IG9mIGl0cyBvd24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVNZXRyaWNIZWxwZXJzKHJlZ2lzdHJ5OiBSZWdpc3RyeSB8ICgoKSA9PiBSZWdpc3RyeSkpOiBNZXRyaWNIZWxwZXJzIHtcbiAgY29uc3QgcmVnaXN0cnlPZiA9ICgpOiBSZWdpc3RyeSA9PiAodHlwZW9mIHJlZ2lzdHJ5ID09PSAnZnVuY3Rpb24nID8gcmVnaXN0cnkoKSA6IHJlZ2lzdHJ5KTtcbiAgY29uc3QgY291bnRlcnMgPSBuZXcgTWFwPHN0cmluZywgQ291bnRlcjxzdHJpbmc+PigpO1xuICBjb25zdCBoaXN0b2dyYW1zID0gbmV3IE1hcDxzdHJpbmcsIEhpc3RvZ3JhbTxzdHJpbmc+PigpO1xuICBjb25zdCBnYXVnZXMgPSBuZXcgTWFwPHN0cmluZywgR2F1Z2U8c3RyaW5nPj4oKTtcblxuICByZXR1cm4ge1xuICAgIGluY0NvdW50ZXIobmFtZSwgbGFiZWxzID0ge30sIHZhbHVlID0gMSkge1xuICAgICAgbGV0IGNvdW50ZXIgPSBjb3VudGVycy5nZXQobmFtZSk7XG4gICAgICBpZiAoIWNvdW50ZXIpIHtcbiAgICAgICAgY291bnRlciA9IG5ldyBDb3VudGVyKHtcbiAgICAgICAgICBuYW1lLFxuICAgICAgICAgIGhlbHA6IGh1bWFuaXplTmFtZShuYW1lKSxcbiAgICAgICAgICBsYWJlbE5hbWVzOiBPYmplY3Qua2V5cyhsYWJlbHMpLFxuICAgICAgICAgIHJlZ2lzdGVyczogW3JlZ2lzdHJ5T2YoKV0sXG4gICAgICAgIH0pO1xuICAgICAgICBjb3VudGVycy5zZXQobmFtZSwgY291bnRlcik7XG4gICAgICB9XG4gICAgICBjb3VudGVyLmluYyhsYWJlbHMsIHZhbHVlKTtcbiAgICB9LFxuXG4gICAgb2JzZXJ2ZShuYW1lLCBsYWJlbHMsIHZhbHVlKSB7XG4gICAgICBsZXQgaGlzdCA9IGhpc3RvZ3JhbXMuZ2V0KG5hbWUpO1xuICAgICAgaWYgKCFoaXN0KSB7XG4gICAgICAgIGhpc3QgPSBuZXcgSGlzdG9ncmFtKHtcbiAgICAgICAgICBuYW1lLFxuICAgICAgICAgIGhlbHA6IGh1bWFuaXplTmFtZShuYW1lKSxcbiAgICAgICAgICBsYWJlbE5hbWVzOiBPYmplY3Qua2V5cyhsYWJlbHMpLFxuICAgICAgICAgIC8vIERlZmF1bHQgYnVja2V0cyB0YXJnZXQgc3ViLXNlY29uZCB0aHJvdWdoIHNldmVyYWwtbWludXRlXG4gICAgICAgICAgLy8gb2JzZXJ2YXRpb25zLiBBbnl0aGluZyB0aGF0IGNhbiBleGNlZWQgZml2ZSBtaW51dGVzIE1VU1QgZGVjbGFyZSBpdHNcbiAgICAgICAgICAvLyBvd24gZGlzdHJpYnV0aW9uIGluIGBISVNUT0dSQU1fQlVDS0VUU2AgYWJvdmUg4oCUIHBhc3QgdGhlIGxhc3QgZmluaXRlXG4gICAgICAgICAgLy8gYm91bmRhcnkgYSBxdWFudGlsZSByZWFkcyBiYWNrIGFzIHRoYXQgYm91bmRhcnksIHNvIGEgdGhyZXNob2xkXG4gICAgICAgICAgLy8gYmV5b25kIGl0IG5ldmVyIGZpcmVzLlxuICAgICAgICAgIGJ1Y2tldHM6IFsuLi4oSElTVE9HUkFNX0JVQ0tFVFNbbmFtZV0gPz8gWzAuMDUsIDAuMSwgMC4yNSwgMC41LCAxLCAyLjUsIDUsIDEwLCAzMCwgNjAsIDEyMCwgMzAwXSldLFxuICAgICAgICAgIHJlZ2lzdGVyczogW3JlZ2lzdHJ5T2YoKV0sXG4gICAgICAgIH0pO1xuICAgICAgICBoaXN0b2dyYW1zLnNldChuYW1lLCBoaXN0KTtcbiAgICAgIH1cbiAgICAgIGhpc3Qub2JzZXJ2ZShsYWJlbHMsIHZhbHVlKTtcbiAgICB9LFxuXG4gICAgc2V0R2F1Z2UobmFtZSwgbGFiZWxzLCB2YWx1ZSkge1xuICAgICAgbGV0IGdhdWdlID0gZ2F1Z2VzLmdldChuYW1lKTtcbiAgICAgIGlmICghZ2F1Z2UpIHtcbiAgICAgICAgZ2F1Z2UgPSBuZXcgR2F1Z2Uoe1xuICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgaGVscDogaHVtYW5pemVOYW1lKG5hbWUpLFxuICAgICAgICAgIGxhYmVsTmFtZXM6IE9iamVjdC5rZXlzKGxhYmVscyksXG4gICAgICAgICAgcmVnaXN0ZXJzOiBbcmVnaXN0cnlPZigpXSxcbiAgICAgICAgfSk7XG4gICAgICAgIGdhdWdlcy5zZXQobmFtZSwgZ2F1Z2UpO1xuICAgICAgfVxuICAgICAgZ2F1Z2Uuc2V0KGxhYmVscywgdmFsdWUpO1xuICAgIH0sXG5cbiAgICByZXNldEdhdWdlKG5hbWUpIHtcbiAgICAgIGdhdWdlcy5nZXQobmFtZSk/LnJlc2V0KCk7XG4gICAgfSxcbiAgfTtcbn1cblxuLyoqIFRoaXMgc2VydmljZSdzIG93biBoZWxwZXJzLCBvdmVyIHRoZSBzaGFyZWQgbW9kdWxlLWxldmVsIHJlZ2lzdHJ5LiAqL1xuY29uc3QgYnVzaW5lc3NNZXRyaWNzID0gY3JlYXRlTWV0cmljSGVscGVycyhyZWdpc3Rlcik7XG5cbi8qKlxuICogSW5jcmVtZW50IGEgYnVzaW5lc3MgY291bnRlciwgY3JlYXRpbmcgaXQgb24gZmlyc3QgdXNlLlxuICpcbiAqIEV2ZXJ5IGV4YW1wbGUgYmVsb3cgaXMgYSBjYWxsIHRoYXQgRVhJU1RTLCB3aXRoIHRoZSBsYWJlbHMgaXQgcmVhbGx5IHBhc3Nlcy4gVGhhdCBpc1xuICogZGVsaWJlcmF0ZTogYW4gaW52ZW50ZWQgZXhhbXBsZSByZWFkcyBhcyBhbiBpbnZlbnRvcnkgb2Ygd2hhdCB0aGUgc3lzdGVtIG1lYXN1cmVzLCBhbmRcbiAqIGEgbWV0cmljcyBzdXJ2ZXkgbGF0ZXIgY291bnRlZCB0aHJlZSBuYW1lcyBmcm9tIHRoaXMgYmxvY2sg4oCUIGBwaXBlbGluZXNfZ2VuZXJhdGVkX3RvdGFsYCxcbiAqIGBxdW90YV90aHJlc2hvbGRfY3Jvc3NlZF90b3RhbGAsIGBjb21wbGlhbmNlX3Zpb2xhdGlvbnNfZm91bmRfdG90YWxgIOKAlCBhcyBsaXZlIG1ldHJpY3NcbiAqIG1pc3NpbmcgYSBkYXNoYm9hcmQgcGFuZWwuIE5vdGhpbmcgZW1pdHRlZCBhbnkgb2YgdGhlbS4gSWxsdXN0cmF0aXZlIG5hbWVzIGluIGEgZG9jc3RyaW5nXG4gKiBhYm91dCBtZXRyaWMgbmFtaW5nIGFyZSBpbmRpc3Rpbmd1aXNoYWJsZSBmcm9tIHJlYWwgb25lcywgc28gdGhlcmUgYXJlIG5vbmUgaGVyZS5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogaW5jQ291bnRlcigncGx1Z2luX2J1aWxkc190b3RhbCcsIHsgc3RhdHVzOiAnc3VjY2VzcycsIG9yZ19pZDogb3JnSWQgfSk7XG4gKiBpbmNDb3VudGVyKCdjb21wbGlhbmNlX3NjYW5zX3RvdGFsJywgeyBvdXRjb21lOiAnc3RhcnRlZCcgfSk7XG4gKiBpbmNDb3VudGVyKCdwbHVnaW5fdnVsbl9maW5kaW5nc190b3RhbCcsIHsgdHJpZ2dlciwgc2V2ZXJpdHkgfSwgY291bnQpO1xuICogaW5jQ291bnRlcignYWlfdG9rZW5zX3RvdGFsJywgeyByb3V0ZTogJ2FnZW50Jywga2luZDogJ2lucHV0JyB9LCBpbnB1dFRva2Vucyk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluY0NvdW50ZXIobmFtZTogc3RyaW5nLCBsYWJlbHM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fSwgdmFsdWUgPSAxKTogdm9pZCB7XG4gIGJ1c2luZXNzTWV0cmljcy5pbmNDb3VudGVyKG5hbWUsIGxhYmVscywgdmFsdWUpO1xufVxuXG4vKipcbiAqIFJlY29yZCBhbiBvYnNlcnZhdGlvbiBvbiBhIGJ1c2luZXNzIGhpc3RvZ3JhbSwgY3JlYXRpbmcgaXQgb24gZmlyc3QgdXNlLlxuICogVXNlIGZvciBkdXJhdGlvbnMsIHNpemVzLCBhbnl0aGluZyB3aGVyZSBwZXJjZW50aWxlcyBtYXR0ZXIuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIG9ic2VydmUoJ2FpX2dlbmVyYXRpb25fZHVyYXRpb25fc2Vjb25kcycsIHsgcm91dGUsIHByb3ZpZGVyOiBwcm92aWRlckxhYmVsIH0sIGR1cmF0aW9uU2VjKTtcbiAqIG9ic2VydmUoJ3BsdWdpbl9idWlsZF9kdXJhdGlvbl9zZWNvbmRzJywgeyBvcmdfaWQ6IG9yZ0lkIH0sIGR1cmF0aW9uU2VjKTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gb2JzZXJ2ZShuYW1lOiBzdHJpbmcsIGxhYmVsczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiwgdmFsdWU6IG51bWJlcik6IHZvaWQge1xuICBidXNpbmVzc01ldHJpY3Mub2JzZXJ2ZShuYW1lLCBsYWJlbHMsIHZhbHVlKTtcbn1cblxuLyoqXG4gKiBTZXQgdGhlIHZhbHVlIG9mIGEgYnVzaW5lc3MgZ2F1Z2UsIGNyZWF0aW5nIGl0IG9uIGZpcnN0IHVzZS4gVXNlIGZvclxuICogcG9pbnQtaW4tdGltZSBvYnNlcnZhdGlvbnMgc2FtcGxlZCBieSBhIHNjcmFwZXIg4oCUIHF1ZXVlIGRlcHRoLCBhY3RpdmVcbiAqIGNvbm5lY3Rpb24gY291bnRzLCBpbi1mbGlnaHQgcmVxdWVzdHMuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIHNldEdhdWdlKCdwbHVnaW5fcXVldWVfam9icycsIHsgcXVldWU6ICdwbHVnaW4tYnVpbGQnLCBzdGF0ZTogJ3dhaXRpbmcnIH0sIDEyKTtcbiAqIHNldEdhdWdlKCdwbHVnaW5fcXVldWVfam9icycsIHsgcXVldWU6ICdwbHVnaW4tYnVpbGQnLCBzdGF0ZTogJ2FjdGl2ZScgfSwgMyk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldEdhdWdlKG5hbWU6IHN0cmluZywgbGFiZWxzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LCB2YWx1ZTogbnVtYmVyKTogdm9pZCB7XG4gIGJ1c2luZXNzTWV0cmljcy5zZXRHYXVnZShuYW1lLCBsYWJlbHMsIHZhbHVlKTtcbn1cblxuLyoqXG4gKiBEcm9wIEVWRVJZIHNlcmllcyBvZiBhIGJ1c2luZXNzIGdhdWdlLiBGb3IgYSBnYXVnZSB0aGF0IGRlc2NyaWJlcyBhIFNFVCDigJQgb25lXG4gKiBzZXJpZXMgcGVyIGNvbmZpZ3VyZWQgZW50cnkg4oCUIGFuZCBpcyByZS1wdWJsaXNoZWQgd2hvbGU6IHdpdGhvdXQgdGhlIHJlc2V0LCBhXG4gKiBzZXJpZXMgZm9yIGFuIGVudHJ5IHRoYXQgaGFzIHNpbmNlIGJlZW4gZGVsZXRlZCBrZWVwcyBpdHMgbGFzdCB2YWx1ZSBmb3JldmVyLFxuICogYW5kIGFuIGFsZXJ0IG9uIGl0IGtlZXBzIGZpcmluZyBmb3Igc29tZXRoaW5nIHRoYXQgbm8gbG9uZ2VyIGV4aXN0cy4gQ2FsbCBpdFxuICogaW1tZWRpYXRlbHkgYmVmb3JlIHJlLXNldHRpbmcgdGhlIGN1cnJlbnQgc2V0LiBBIGdhdWdlIG5ldmVyIHNldCBpcyBhIG5vLW9wLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzZXRHYXVnZShuYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgYnVzaW5lc3NNZXRyaWNzLnJlc2V0R2F1Z2UobmFtZSk7XG59XG5cbmZ1bmN0aW9uIGh1bWFuaXplTmFtZShtZXRyaWNOYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAvLyBgcGx1Z2luX2J1aWxkc190b3RhbGAg4oaSIFwiUGx1Z2luIGJ1aWxkcyB0b3RhbFwiXG4gIHJldHVybiBtZXRyaWNOYW1lXG4gICAgLnJlcGxhY2UoL18vZywgJyAnKVxuICAgIC5yZXBsYWNlKC9eLi8sIChjKSA9PiBjLnRvVXBwZXJDYXNlKCkpO1xufVxuIl19
|
|
@@ -77,4 +77,4 @@ export function createAuthenticatedWithOrgRoute() {
|
|
|
77
77
|
withTenantContext(),
|
|
78
78
|
];
|
|
79
79
|
}
|
|
80
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
80
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxld2FyZS1mYWN0b3J5LmpzIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXBpL21pZGRsZXdhcmUtZmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUd6RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDOUMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDcEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXhEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTZCRztBQUNILE1BQU0sVUFBVSxvQkFBb0IsQ0FDbEMsWUFBMEIsRUFDMUIsU0FBb0I7SUFFcEIsT0FBTztRQUNMLFdBQTZCO1FBQzdCLFlBQVksRUFBb0I7UUFDaEMscUJBQXFCLEVBQW9CO1FBQ3pDLGlCQUFpQixFQUFvQjtRQUNyQyxVQUFVLENBQUMsWUFBWSxFQUFFLFNBQVMsQ0FBbUI7S0FDdEQsQ0FBQztBQUNKLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUJHO0FBQ0gsTUFBTSxVQUFVLCtCQUErQjtJQUM3QyxPQUFPO1FBQ0wsV0FBNkI7UUFDN0IsWUFBWSxFQUFvQjtRQUNoQywyRUFBMkU7UUFDM0UseUVBQXlFO1FBQ3pFLDJFQUEyRTtRQUMzRSxxQkFBcUIsRUFBb0I7UUFDekMsaUJBQWlCLEVBQW9CO0tBQ3RDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCB7IHJlcXVpcmVBdXRoIH0gZnJvbSAnQHBpcGVsaW5lLWJ1aWxkZXIvYXBpLWNvcmUnO1xuaW1wb3J0IHR5cGUgeyBRdW90YVR5cGUsIFF1b3RhU2VydmljZSB9IGZyb20gJ0BwaXBlbGluZS1idWlsZGVyL2FwaS1jb3JlJztcbmltcG9ydCB0eXBlIHsgUmVxdWVzdEhhbmRsZXIgfSBmcm9tICdleHByZXNzJztcbmltcG9ydCB7IGNoZWNrUXVvdGEgfSBmcm9tICcuL2NoZWNrLXF1b3RhLmpzJztcbmltcG9ydCB7IGlkZW1wb3RlbmN5TWlkZGxld2FyZSB9IGZyb20gJy4vaWRlbXBvdGVuY3ktbWlkZGxld2FyZS5qcyc7XG5pbXBvcnQgeyByZXF1aXJlT3JnSWQgfSBmcm9tICcuL3JlcXVpcmUtb3JnLWlkLmpzJztcbmltcG9ydCB7IHdpdGhUZW5hbnRDb250ZXh0IH0gZnJvbSAnLi90ZW5hbnQtY29udGV4dC5qcyc7XG5cbi8qKlxuICogQ3JlYXRlcyBhIG1pZGRsZXdhcmUgY2hhaW4gZm9yIHByb3RlY3RlZCByb3V0ZXMgcmVxdWlyaW5nIGF1dGhlbnRpY2F0aW9uLCBvcmcgSUQsIGFuZCBxdW90YSBjaGVjay5cbiAqXG4gKiBBcHBsaWVzIG1pZGRsZXdhcmUgaW4gb3JkZXI6XG4gKiAxLiByZXF1aXJlQXV0aCAtIFZhbGlkYXRlcyBKV1QgYW5kIGV4dHJhY3RzIHVzZXIgaWRlbnRpdHlcbiAqIDIuIHJlcXVpcmVPcmdJZCAtIEVuc3VyZXMgcmVxdWVzdCBoYXMgeC1vcmctaWQgaGVhZGVyXG4gKiAzLiBpZGVtcG90ZW5jeU1pZGRsZXdhcmUgLSBEZWR1cGVzIGtleWVkIG11dGF0aW9uIHJldHJpZXMgKG5vLW9wIHdpdGhvdXQgYW5cbiAqICAgIElkZW1wb3RlbmN5LUtleSBoZWFkZXIgb3Igb24gbm9uLW11dGF0aW9uIG1ldGhvZHMpXG4gKiA0LiB3aXRoVGVuYW50Q29udGV4dCAtIE9wZW5zIHRoZSBSTFMgdGVuYW50IHNjb3BlIChvcmdJZCArIGlzU3VwZXJBZG1pbikgZm9yIHRoZSByZXF1ZXN0XG4gKiA1LiBjaGVja1F1b3RhIC0gVmFsaWRhdGVzIHF1b3RhIGZvciB0aGUgc3BlY2lmaWVkIHJlc291cmNlIHR5cGVcbiAqXG4gKiBJZGVtcG90ZW5jeSBzaXRzIEFGVEVSIGF1dGgrb3JnSWQgKHNvIGl0IGNhbiBuYW1lc3BhY2UgdGhlIHJlcGxheSBjYWNoZSBvbiB0aGVcbiAqIFZFUklGSUVEIG9yZyDigJQgYSBwcmUtYXV0aCBnbG9iYWwgbW91bnQgc2F3IG5vIGlkZW50aXR5IGFuZCB3YXMgYSBwZXJtYW5lbnRcbiAqIG5vLW9wKSBhbmQgQkVGT1JFIHdpdGhUZW5hbnRDb250ZXh0L2NoZWNrUXVvdGEgKHNvIGEgcmVwbGF5ZWQgcmVxdWVzdCBzaG9ydC1cbiAqIGNpcmN1aXRzIHdpdGhvdXQgb3BlbmluZyBhbiBSTFMgc2NvcGUgb3Igc3BlbmRpbmcgYSBxdW90YSBjaGVjaykuXG4gKlxuICogQHBhcmFtIHF1b3RhU2VydmljZSAtIFF1b3RhIHNlcnZpY2UgY2xpZW50XG4gKiBAcGFyYW0gcXVvdGFUeXBlIC0gV2hpY2ggcXVvdGEgdG8gY2hlY2sgKGUuZy4sICdhcGlDYWxscycsICdwaXBlbGluZXMnLCAncGx1Z2lucycpXG4gKiBAcmV0dXJucyBBcnJheSBvZiBtaWRkbGV3YXJlIGhhbmRsZXJzIHJlYWR5IHRvIHNwcmVhZCBpbnRvIHJvdXRlIGRlZmluaXRpb25cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogcm91dGVyLnBvc3QoJy8nLFxuICogICAuLi5jcmVhdGVQcm90ZWN0ZWRSb3V0ZShxdW90YVNlcnZpY2UsICdwaXBlbGluZXMnKSxcbiAqICAgYXN5bmMgKHJlcSwgcmVzKSA9PiB7XG4gKiAgICAgLy8gSGFuZGxlciBpbXBsZW1lbnRhdGlvblxuICogICB9XG4gKiApO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVQcm90ZWN0ZWRSb3V0ZShcbiAgcXVvdGFTZXJ2aWNlOiBRdW90YVNlcnZpY2UsXG4gIHF1b3RhVHlwZTogUXVvdGFUeXBlLFxuKTogUmVxdWVzdEhhbmRsZXJbXSB7XG4gIHJldHVybiBbXG4gICAgcmVxdWlyZUF1dGggYXMgUmVxdWVzdEhhbmRsZXIsXG4gICAgcmVxdWlyZU9yZ0lkKCkgYXMgUmVxdWVzdEhhbmRsZXIsXG4gICAgaWRlbXBvdGVuY3lNaWRkbGV3YXJlKCkgYXMgUmVxdWVzdEhhbmRsZXIsXG4gICAgd2l0aFRlbmFudENvbnRleHQoKSBhcyBSZXF1ZXN0SGFuZGxlcixcbiAgICBjaGVja1F1b3RhKHF1b3RhU2VydmljZSwgcXVvdGFUeXBlKSBhcyBSZXF1ZXN0SGFuZGxlcixcbiAgXTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgbWlkZGxld2FyZSBjaGFpbiBmb3IgYXV0aGVudGljYXRlZCByb3V0ZXMgd2l0aCBvcmcgSUQgcmVxdWlyZW1lbnQgYnV0IG5vIHF1b3RhIGNoZWNrLlxuICpcbiAqIEFwcGxpZXMgbWlkZGxld2FyZSBpbiBvcmRlcjpcbiAqIDEuIHJlcXVpcmVBdXRoIC0gVmFsaWRhdGVzIEpXVCBhbmQgZXh0cmFjdHMgdXNlciBpZGVudGl0eVxuICogMi4gcmVxdWlyZU9yZ0lkIC0gRW5zdXJlcyByZXF1ZXN0IGhhcyB4LW9yZy1pZCBoZWFkZXJcbiAqIDMuIHdpdGhUZW5hbnRDb250ZXh0IC0gT3BlbnMgdGhlIFJMUyB0ZW5hbnQgc2NvcGUgKG9yZ0lkICsgaXNTdXBlckFkbWluKSBmb3IgdGhlIHJlcXVlc3RcbiAqXG4gKiBVc2UgdGhpcyBmb3IgcmVhZC1vbmx5IHJvdXRlcyB0aGF0IGRvbid0IGNvbnN1bWUgcXVvdGEuXG4gKlxuICogQHJldHVybnMgQXJyYXkgb2YgbWlkZGxld2FyZSBoYW5kbGVycyByZWFkeSB0byBzcHJlYWQgaW50byByb3V0ZSBkZWZpbml0aW9uXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIHJvdXRlci5nZXQoJy8nLFxuICogICAuLi5jcmVhdGVBdXRoZW50aWNhdGVkV2l0aE9yZ1JvdXRlKCksXG4gKiAgIGFzeW5jIChyZXEsIHJlcykgPT4ge1xuICogICAgIC8vIEhhbmRsZXIgaW1wbGVtZW50YXRpb25cbiAqICAgfVxuICogKTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQXV0aGVudGljYXRlZFdpdGhPcmdSb3V0ZSgpOiBSZXF1ZXN0SGFuZGxlcltdIHtcbiAgcmV0dXJuIFtcbiAgICByZXF1aXJlQXV0aCBhcyBSZXF1ZXN0SGFuZGxlcixcbiAgICByZXF1aXJlT3JnSWQoKSBhcyBSZXF1ZXN0SGFuZGxlcixcbiAgICAvLyBNb3VudGVkIHBvc3Qtb3JnSWQgKGlkZW50aXR5IHBvcHVsYXRlZCkgc28ga2V5ZWQgbXV0YXRpb24gcmV0cmllcyBvbiB0aGVcbiAgICAvLyBub24tcXVvdGEgcm91dGVzIOKAlCBub3RhYmx5IHRoZSBjcmVhdGUgcGF0aHMsIHdoaWNoIHVzZSB0aGlzIGZhY3RvcnkgdG9cbiAgICAvLyBhdm9pZCB0aGUgY2hlY2tRdW90YSBwcmUtZmxpZ2h0IHJhY2luZyB0aGVpciByZXNlcnZlIOKAlCBhcmUgZGVkdXBsaWNhdGVkLlxuICAgIGlkZW1wb3RlbmN5TWlkZGxld2FyZSgpIGFzIFJlcXVlc3RIYW5kbGVyLFxuICAgIHdpdGhUZW5hbnRDb250ZXh0KCkgYXMgUmVxdWVzdEhhbmRsZXIsXG4gIF07XG59XG4iXX0=
|
package/lib/api/mongo-connect.js
CHANGED
|
@@ -38,4 +38,4 @@ export async function connectMongo(mongoose, uri) {
|
|
|
38
38
|
await mongoose.connect(uri, { maxPoolSize, minPoolSize, serverSelectionTimeoutMS });
|
|
39
39
|
logger.info('MongoDB connection established', { maxPoolSize, minPoolSize, serverSelectionTimeoutMS });
|
|
40
40
|
}
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9uZ28tY29ubmVjdC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwaS9tb25nby1jb25uZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVsRSxNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUMsZUFBZSxDQUFDLENBQUM7QUFvQjdDOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsSUFBSSxhQUFhLEdBQUcsS0FBSyxDQUFDO0FBRTFCLE1BQU0sQ0FBQyxLQUFLLFVBQVUsWUFBWSxDQUFDLFFBQXNCLEVBQUUsR0FBVztJQUNwRSxRQUFRLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUVsQywwRUFBMEU7SUFDMUUsd0VBQXdFO0lBQ3hFLHdEQUF3RDtJQUN4RCxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDbkIsYUFBYSxHQUFHLElBQUksQ0FBQztRQUVyQixRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUN0QyxNQUFNLENBQUMsS0FBSyxDQUFDLDBCQUEwQixFQUFFLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ3BFLENBQUMsQ0FBQyxDQUFDO1FBRUgsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsY0FBYyxFQUFFLEdBQUcsRUFBRTtZQUMxQyxNQUFNLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFDdEMsQ0FBQyxDQUFDLENBQUM7UUFFSCxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsR0FBRyxFQUFFO1lBQ3pDLE1BQU0sQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUNyQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDN0QsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzVELE1BQU0sd0JBQXdCLEdBQUcsTUFBTSxDQUFDLDJCQUEyQixFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBRXZGLE1BQU0sUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLHdCQUF3QixFQUFFLENBQUMsQ0FBQztJQUNwRixNQUFNLENBQUMsSUFBSSxDQUFDLGdDQUFnQyxFQUFFLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSx3QkFBd0IsRUFBRSxDQUFDLENBQUM7QUFDeEcsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgeyBjcmVhdGVMb2dnZXIsIGVudkludCB9IGZyb20gJ0BwaXBlbGluZS1idWlsZGVyL2FwaS1jb3JlJztcblxuY29uc3QgbG9nZ2VyID0gY3JlYXRlTG9nZ2VyKCdtb25nby1jb25uZWN0Jyk7XG5cbi8qKlxuICogTWluaW1hbCBzaGFwZSBvZiBtb25nb29zZSBhY2NlcHRlZCBieSBgY29ubmVjdE1vbmdvYC4gUGFzc2luZyB0aGUgcmVhbFxuICogbW9uZ29vc2Ugb2JqZWN0IHNhdGlzZmllcyBpdDsgYXBpLXNlcnZlciB0YWtlcyBtb25nb29zZSBhcyBhIHBhcmFtZXRlclxuICogKGRlcGVuZGVuY3kgaW5qZWN0aW9uKSBzbyBpdCBkb2Vzbid0IGhhdmUgdG8gZGVjbGFyZSBtb25nb29zZSBhcyBhXG4gKiBkZXBlbmRlbmN5IGl0c2VsZi5cbiAqL1xuaW50ZXJmYWNlIE1vbmdvb3NlTGlrZSB7XG4gIHNldChvcHRpb246IHN0cmluZywgdmFsdWU6IHVua25vd24pOiB1bmtub3duO1xuICBjb25uZWN0aW9uOiB7XG4gICAgb24oZXZlbnQ6IHN0cmluZywgbGlzdGVuZXI6IChlcnI/OiBFcnJvcikgPT4gdm9pZCk6IHVua25vd247XG4gIH07XG4gIGNvbm5lY3QodXJpOiBzdHJpbmcsIG9wdGlvbnM6IHtcbiAgICBtYXhQb29sU2l6ZTogbnVtYmVyO1xuICAgIG1pblBvb2xTaXplOiBudW1iZXI7XG4gICAgc2VydmVyU2VsZWN0aW9uVGltZW91dE1TOiBudW1iZXI7XG4gIH0pOiBQcm9taXNlPHVua25vd24+O1xufVxuXG4vKipcbiAqIENvbm5lY3QgdG8gTW9uZ29EQiB3aXRoIHNlbnNpYmxlIHByb2R1Y3Rpb24tcmVhZHkgcG9vbCBkZWZhdWx0cyBhbmRcbiAqIHN0YW5kYXJkIGV2ZW50LWhhbmRsZXIgd2lyaW5nIChlcnJvciAvIGRpc2Nvbm5lY3RlZCAvIHJlY29ubmVjdGVkKS5cbiAqXG4gKiBQb29sIHNpemluZyBpcyByZWFkIGZyb20gZW52IChgTU9OR09fTUFYX1BPT0xgLCBgTU9OR09fTUlOX1BPT0xgLFxuICogYE1PTkdPX1NFUlZFUl9TRUxFQ1RJT05fTVNgKS4gV2l0aG91dCB0aGVzZSB0aGUgZHJpdmVyIGRlZmF1bHQgb2ZcbiAqIGBtYXhQb29sU2l6ZT0xMDBgIGxldHMgYSBidXJzdCBleGhhdXN0IE1vbmdvJ3MgY29ubmVjdGlvbiBjZWlsaW5nXG4gKiBhY3Jvc3MgcmVwbGljYXMuIERlZmF1bHRzOiAyMCBtYXggLyAyIG1pbiAvIDVzIHNlcnZlciBzZWxlY3Rpb24uXG4gKlxuICogUGFzcyB0aGUgc2VydmljZSdzIG93biBtb25nb29zZSBpbnN0YW5jZSDigJQgYXBpLXNlcnZlciBkb2Vzbid0IGJ1bmRsZVxuICogbW9uZ29vc2UgaXRzZWxmLlxuICovXG5sZXQgaGFuZGxlcnNXaXJlZCA9IGZhbHNlO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY29ubmVjdE1vbmdvKG1vbmdvb3NlOiBNb25nb29zZUxpa2UsIHVyaTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gIG1vbmdvb3NlLnNldCgnc3RyaWN0UXVlcnknLCB0cnVlKTtcblxuICAvLyBXaXJlIHRoZSBjb25uZWN0aW9uIGV2ZW50IGhhbmRsZXJzIGV4YWN0bHkgb25jZS4gVGhlIHN0YXJ0dXAgc3VwZXJ2aXNvclxuICAvLyBtYXkgY2FsbCBjb25uZWN0TW9uZ28gcmVwZWF0ZWRseSAocmV0cnlpbmcgdW50aWwgTW9uZ28gaXMgcmVhY2hhYmxlKTtcbiAgLy8gcmUtcmVnaXN0ZXJpbmcgb24gZXZlcnkgYXR0ZW1wdCB3b3VsZCBsZWFrIGxpc3RlbmVycy5cbiAgaWYgKCFoYW5kbGVyc1dpcmVkKSB7XG4gICAgaGFuZGxlcnNXaXJlZCA9IHRydWU7XG5cbiAgICBtb25nb29zZS5jb25uZWN0aW9uLm9uKCdlcnJvcicsIChlcnIpID0+IHtcbiAgICAgIGxvZ2dlci5lcnJvcignTW9uZ29EQiBjb25uZWN0aW9uIGVycm9yJywgeyBlcnJvcjogZXJyPy5tZXNzYWdlIH0pO1xuICAgIH0pO1xuXG4gICAgbW9uZ29vc2UuY29ubmVjdGlvbi5vbignZGlzY29ubmVjdGVkJywgKCkgPT4ge1xuICAgICAgbG9nZ2VyLndhcm4oJ01vbmdvREIgZGlzY29ubmVjdGVkJyk7XG4gICAgfSk7XG5cbiAgICBtb25nb29zZS5jb25uZWN0aW9uLm9uKCdyZWNvbm5lY3RlZCcsICgpID0+IHtcbiAgICAgIGxvZ2dlci5pbmZvKCdNb25nb0RCIHJlY29ubmVjdGVkJyk7XG4gICAgfSk7XG4gIH1cblxuICBjb25zdCBtYXhQb29sU2l6ZSA9IGVudkludCgnTU9OR09fTUFYX1BPT0wnLCAyMCwgeyBtaW46IDEgfSk7XG4gIGNvbnN0IG1pblBvb2xTaXplID0gZW52SW50KCdNT05HT19NSU5fUE9PTCcsIDIsIHsgbWluOiAwIH0pO1xuICBjb25zdCBzZXJ2ZXJTZWxlY3Rpb25UaW1lb3V0TVMgPSBlbnZJbnQoJ01PTkdPX1NFUlZFUl9TRUxFQ1RJT05fTVMnLCA1MDAwLCB7IG1pbjogMSB9KTtcblxuICBhd2FpdCBtb25nb29zZS5jb25uZWN0KHVyaSwgeyBtYXhQb29sU2l6ZSwgbWluUG9vbFNpemUsIHNlcnZlclNlbGVjdGlvblRpbWVvdXRNUyB9KTtcbiAgbG9nZ2VyLmluZm8oJ01vbmdvREIgY29ubmVjdGlvbiBlc3RhYmxpc2hlZCcsIHsgbWF4UG9vbFNpemUsIG1pblBvb2xTaXplLCBzZXJ2ZXJTZWxlY3Rpb25UaW1lb3V0TVMgfSk7XG59XG4iXX0=
|
|
@@ -80,4 +80,4 @@ export async function withQuotaReservation(opts, body, onError) {
|
|
|
80
80
|
return reserved;
|
|
81
81
|
return runWithSlot(reserved.slot, body, onError);
|
|
82
82
|
}
|
|
83
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVvdGEtcmVzZXJ2YXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXBpL3F1b3RhLXJlc2VydmF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEMsT0FBTyxFQUNMLGNBQWMsRUFDZCxvQkFBb0IsRUFDcEIsWUFBWSxFQUNaLHNCQUFzQixFQUN0QixlQUFlLEdBS2hCLE1BQU0sNEJBQTRCLENBQUM7QUFxRHBDOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxnQkFBZ0IsQ0FBQyxJQUE2QjtJQUNsRSxNQUFNLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxHQUFHLElBQUksQ0FBQztJQUNqRSxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQztJQUNoQyxNQUFNLFdBQVcsR0FBRyxvQkFBb0IsQ0FBQyxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVyxJQUFJLGVBQWUsRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUV4SCwyRUFBMkU7SUFDM0UsdUVBQXVFO0lBQ3ZFLG9EQUFvRDtJQUNwRCxNQUFNLFdBQVcsR0FBRyxNQUFNLFlBQVksQ0FBQyxZQUFZLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ3BHLElBQUksV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3pCLElBQUksSUFBSSxDQUFDLEdBQUc7WUFBRSxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQztRQUNsRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsQ0FBQztJQUMzQyxDQUFDO0lBRUQsSUFBSSxRQUFRLEdBQUcsS0FBSyxDQUFDO0lBQ3JCLElBQUksUUFBUSxHQUFHLEtBQUssQ0FBQztJQUNyQixNQUFNLElBQUksR0FBYztRQUN0QixXQUFXO1FBQ1gsV0FBVztRQUNYLFlBQVksRUFBRSxHQUFHLEVBQUUsR0FBRyxRQUFRLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUN4QyxNQUFNLEVBQUUsR0FBRyxFQUFFO1lBQ1gsSUFBSSxRQUFRLElBQUksUUFBUTtnQkFBRSxPQUFPO1lBQ2pDLFFBQVEsR0FBRyxJQUFJLENBQUM7WUFDaEIsMEVBQTBFO1lBQzFFLGNBQWMsQ0FBQyxZQUFZLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxXQUFXLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQztRQUNsSCxDQUFDO0tBQ0YsQ0FBQztJQUNGLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxDQUFDO0FBQ3RDLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxXQUFXLENBQy9CLElBQU8sRUFDUCxJQUE2QixFQUM3QixPQUFrRDtJQUVsRCxJQUFJLENBQUM7UUFDSCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztJQUNyRCxDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLGtFQUFrRTtRQUNsRSxNQUFNLGlCQUFpQixHQUFJLEtBQWdELEVBQUUsaUJBQWlCLEtBQUssSUFBSSxDQUFDO1FBQ3hHLElBQUksQ0FBQyxpQkFBaUI7WUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDdEMsSUFBSSxDQUFDLE9BQU87WUFBRSxNQUFNLEtBQUssQ0FBQztRQUMxQixNQUFNLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQixPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0FBQ0gsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxvQkFBb0IsQ0FDeEMsSUFBNkIsRUFDN0IsSUFBcUMsRUFDckMsT0FBa0Q7SUFFbEQsTUFBTSxRQUFRLEdBQUcsTUFBTSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5QyxJQUFJLFFBQVEsQ0FBQyxNQUFNLEtBQUssUUFBUTtRQUFFLE9BQU8sUUFBUSxDQUFDO0lBQ2xELE9BQU8sV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ25ELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHtcbiAgZGVjcmVtZW50UXVvdGEsXG4gIGdldFNlcnZpY2VBdXRoSGVhZGVyLFxuICByZXNlcnZlUXVvdGEsXG4gIHNlbmRRdW90YVJlc2VydmVEZW5pZWQsXG4gIHNlcnZpY2VJZGVudGl0eSxcbiAgdHlwZSBRdW90YVJlc2VydmVSZXN1bHQsXG4gIHR5cGUgUXVvdGFTZXJ2aWNlLFxuICB0eXBlIFF1b3RhVHlwZSxcbiAgdHlwZSBRdW90YVVzYWdlQXR0cmlidXRpb24sXG59IGZyb20gJ0BwaXBlbGluZS1idWlsZGVyL2FwaS1jb3JlJztcbmltcG9ydCB0eXBlIHsgUmVzcG9uc2UgfSBmcm9tICdleHByZXNzJztcblxuLyoqIFRoZSByZXNlcnZlZCBxdW90YSBzbG90LCBoYW5kZWQgdG8gdGhlIGd1YXJkZWQgYm9keS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUXVvdGFTbG90IHtcbiAgLyoqIE1pbnRlZCBzZXJ2aWNlIHRva2VuIHRoZSByZXNlcnZhdGlvbiB1c2VkIOKAlCByZXVzZSBpdCBmb3IgdGhlIGJvZHkncyBvd24gUzJTIGNhbGxzLiAqL1xuICByZWFkb25seSBzZXJ2aWNlQXV0aDogc3RyaW5nO1xuICByZWFkb25seSByZXNlcnZhdGlvbjogUXVvdGFSZXNlcnZlUmVzdWx0O1xuICAvKipcbiAgICogVGhlIHJlc2VydmVkIHJlc291cmNlIGhhcyBiZWVuIGNvbnN1bWVkIChlLmcuIHRoZSBBSSBwcm92aWRlciBzdGFydGVkXG4gICAqIHJlc3BvbmRpbmcpLiBGcm9tIGhlcmUgb24gYSBmYWlsdXJlIEtFRVBTIHRoZSBzbG90IOKAlCB0aGUgY29zdCB3YXMgaW5jdXJyZWQuXG4gICAqL1xuICBtYXJrQ29uc3VtZWQoKTogdm9pZDtcbiAgLyoqXG4gICAqIEdpdmUgdGhlIHNsb3QgYmFjayBub3cuIElkZW1wb3RlbnQ6IHJlZnVuZHMgYXQgbW9zdCBvbmNlIOKAlCBhbmQgYSBOTy1PUCBvbmNlXG4gICAqIHtAbGluayBtYXJrQ29uc3VtZWR9IHdhcyBjYWxsZWQuIEEgcGFpZCBwcm92aWRlciByb3VuZC10cmlwIGlzIG5ldmVyIHJlZnVuZGVkLFxuICAgKiB3aGF0ZXZlciBwYXRoIChhIGNsaWVudCBhYm9ydCwgYSBsYXRlciBmYWlsdXJlLCBhbiBlbXB0eSBhbnN3ZXIpIGFza3MgZm9yIGl0XG4gICAqIGFmdGVyd2FyZHM7IGNhbGxlcnMgbm8gbG9uZ2VyIG5lZWQgdG8gZ3VhcmQgYHJlZnVuZCgpYCB3aXRoIHRoZWlyIG93blxuICAgKiBcIndhcyB0aGUgcHJvdmlkZXIgY29udGFjdGVkXCIgZmxhZy5cbiAgICovXG4gIHJlZnVuZCgpOiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFF1b3RhUmVzZXJ2YXRpb25PcHRpb25zIHtcbiAgcXVvdGFTZXJ2aWNlOiBRdW90YVNlcnZpY2U7XG4gIG9yZ0lkOiBzdHJpbmc7XG4gIHR5cGU6IFF1b3RhVHlwZTtcbiAgLyoqIFVuaXRzIHRvIHJlc2VydmUgKGRlZmF1bHQgMSkg4oCUIGUuZy4gYW4gQUkgbW9kZWwncyB3ZWlnaHQuIFJlZnVuZHMgZ2l2ZSBiYWNrIHRoZSBzYW1lIGFtb3VudC4gKi9cbiAgYW1vdW50PzogbnVtYmVyO1xuICAvKipcbiAgICogVXNhZ2UtbGVkZ2VyIGF0dHJpYnV0aW9uIGZvciB0aGUgcmVzZXJ2ZSBBTkQgaXRzIHJlZnVuZC4gRGVmYXVsdHMgdG8gdGhlXG4gICAqIGFtYmllbnQgcmVxdWVzdCBjb250ZXh0IChwcmluY2lwYWwgKyByZXF1ZXN0IGlkLCBubyByb3V0ZSkg4oCUIHBhc3MgaXRcbiAgICogZXhwbGljaXRseSB0byByZWNvcmQgdGhlIHJvdXRlLCB0aGUgZmVhdHVyZSBhbmQgdGhlIG1vZGVsLlxuICAgKi9cbiAgYXR0cmlidXRpb24/OiBRdW90YVVzYWdlQXR0cmlidXRpb247XG4gIC8qKiBTaWduZXIgb2YgdGhlIHF1b3RhIHNlcnZpY2UgdG9rZW4uIERlZmF1bHRzIHRvIHRoaXMgcHJvY2VzcyAoYFNFUlZJQ0VfTkFNRWApLiAqL1xuICBzZXJ2aWNlTmFtZT86IHN0cmluZztcbiAgbG9nV2FybjogKG1lc3NhZ2U6IHN0cmluZywgZGF0YT86IHVua25vd24pID0+IHZvaWQ7XG4gIC8qKiBXaGVuIHNldCwgYSBkZW5pZWQgcmVzZXJ2YXRpb24gaXMgYW5zd2VyZWQgb24gaXQgKDQyOSwgb3IgNTAzIHdoZW4gdW5jb25maXJtYWJsZSkuICovXG4gIHJlcz86IFJlc3BvbnNlO1xufVxuXG5leHBvcnQgdHlwZSBRdW90YVJlc2VydmF0aW9uT3V0Y29tZTxUPiA9XG4gIHwgeyBzdGF0dXM6ICdkZW5pZWQnOyByZXNlcnZhdGlvbjogUXVvdGFSZXNlcnZlUmVzdWx0IH1cbiAgfCB7IHN0YXR1czogJ2RvbmUnOyB2YWx1ZTogVCB9XG4gIC8qKiBPbmx5IHdpdGggYW4gYG9uRXJyb3JgIGhhbmRsZXI6IHRoZSBib2R5IHRocmV3IGFuZCB0aGUgaGFuZGxlciBhbnN3ZXJlZC4gKi9cbiAgfCB7IHN0YXR1czogJ2ZhaWxlZCc7IGVycm9yOiB1bmtub3duIH07XG5cbi8qKiBXaGF0IHtAbGluayByZXNlcnZlUXVvdGFTbG90fSBoYW5kcyBiYWNrOiBhIGxpdmUgc2xvdCwgb3IgdGhlIGRlbmlhbC4gKi9cbmV4cG9ydCB0eXBlIFF1b3RhU2xvdFJlc2VydmF0aW9uID1cbiAgfCB7IHN0YXR1czogJ2RlbmllZCc7IHJlc2VydmF0aW9uOiBRdW90YVJlc2VydmVSZXN1bHQgfVxuICB8IHsgc3RhdHVzOiAncmVzZXJ2ZWQnOyBzbG90OiBRdW90YVNsb3QgfTtcblxuLyoqXG4gKiBSZXNlcnZlIG9uZSBzbG90IChvZiBgYW1vdW50YCB1bml0cykgYW5kIHJldHVybiBpdHMgaGFuZGxlLCBXSVRIT1VUIHJ1bm5pbmdcbiAqIGFueXRoaW5nLiBUaGUgcHJpbWl0aXZlIHVuZGVyIHtAbGluayB3aXRoUXVvdGFSZXNlcnZhdGlvbn0sIGZvciBhIGNhbGxlciB3aG9zZVxuICogZ2F0ZWQgd29yayBkb2VzIG5vdCBmaXQgb25lIGNhbGxiYWNrIOKAlCBlLmcuIGEgdG9vbCBpbnNpZGUgYW4gYWdlbnQgdHVybiB0aGF0XG4gKiBzZXR0bGVzIGl0cyBvd24gc2xvdC4gVGhlIGNhbGxlciBvd25zIHNldHRsZW1lbnQ6IGBtYXJrQ29uc3VtZWQoKWAgb25jZSB0aGVcbiAqIHJlc291cmNlIGlzIHNwZW50LCBgcmVmdW5kKClgIG9uIGV2ZXJ5IHBhdGggdGhhdCBmYWlscyBiZWZvcmUgdGhhdC5cbiAqXG4gKiBEZW5pZWQg4oaSIGB7IHN0YXR1czogJ2RlbmllZCcgfWAsIGFuc3dlcmVkIG9uIGByZXNgIHdoZW4gZ2l2ZW4uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZXNlcnZlUXVvdGFTbG90KG9wdHM6IFF1b3RhUmVzZXJ2YXRpb25PcHRpb25zKTogUHJvbWlzZTxRdW90YVNsb3RSZXNlcnZhdGlvbj4ge1xuICBjb25zdCB7IHF1b3RhU2VydmljZSwgb3JnSWQsIHR5cGUsIGxvZ1dhcm4sIGF0dHJpYnV0aW9uIH0gPSBvcHRzO1xuICBjb25zdCBhbW91bnQgPSBvcHRzLmFtb3VudCA/PyAxO1xuICBjb25zdCBzZXJ2aWNlQXV0aCA9IGdldFNlcnZpY2VBdXRoSGVhZGVyKHsgc2VydmljZU5hbWU6IG9wdHMuc2VydmljZU5hbWUgPz8gc2VydmljZUlkZW50aXR5KCksIG9yZ0lkLCByb2xlOiAnbWVtYmVyJyB9KTtcblxuICAvLyBSZXNlcnZlIGF0b21pY2FsbHkgQkVGT1JFIGFueSB3b3JrOiB0d28gY29uY3VycmVudCByZXF1ZXN0cyBhdCB0aGUgbGltaXRcbiAgLy8gY2FuJ3QgYm90aCBwYXNzLiBBdHRyaWJ1dGlvbiBkZWZhdWx0cyB0byB0aGUgYW1iaWVudCByZXF1ZXN0IGNvbnRleHRcbiAgLy8gKHByaW5jaXBhbCArIHJlcXVlc3QgaWQpIGluc2lkZSB0aGUgcXVvdGEgY2xpZW50LlxuICBjb25zdCByZXNlcnZhdGlvbiA9IGF3YWl0IHJlc2VydmVRdW90YShxdW90YVNlcnZpY2UsIG9yZ0lkLCB0eXBlLCBzZXJ2aWNlQXV0aCwgYW1vdW50LCBhdHRyaWJ1dGlvbik7XG4gIGlmIChyZXNlcnZhdGlvbi5leGNlZWRlZCkge1xuICAgIGlmIChvcHRzLnJlcykgc2VuZFF1b3RhUmVzZXJ2ZURlbmllZChvcHRzLnJlcywgdHlwZSwgcmVzZXJ2YXRpb24pO1xuICAgIHJldHVybiB7IHN0YXR1czogJ2RlbmllZCcsIHJlc2VydmF0aW9uIH07XG4gIH1cblxuICBsZXQgY29uc3VtZWQgPSBmYWxzZTtcbiAgbGV0IHJlZnVuZGVkID0gZmFsc2U7XG4gIGNvbnN0IHNsb3Q6IFF1b3RhU2xvdCA9IHtcbiAgICBzZXJ2aWNlQXV0aCxcbiAgICByZXNlcnZhdGlvbixcbiAgICBtYXJrQ29uc3VtZWQ6ICgpID0+IHsgY29uc3VtZWQgPSB0cnVlOyB9LFxuICAgIHJlZnVuZDogKCkgPT4ge1xuICAgICAgaWYgKHJlZnVuZGVkIHx8IGNvbnN1bWVkKSByZXR1cm47XG4gICAgICByZWZ1bmRlZCA9IHRydWU7XG4gICAgICAvLyBUaGUgcmVzZXJ2ZWQgcmVzZXRBdCBrZWVwcyBhIHBlcmlvZCByb2xsb3ZlciBmcm9tIGJlaW5nIGRvdWJsZS1jaGFyZ2VkLlxuICAgICAgZGVjcmVtZW50UXVvdGEocXVvdGFTZXJ2aWNlLCBvcmdJZCwgdHlwZSwgc2VydmljZUF1dGgsIGxvZ1dhcm4sIGFtb3VudCwgcmVzZXJ2YXRpb24ucXVvdGEucmVzZXRBdCwgYXR0cmlidXRpb24pO1xuICAgIH0sXG4gIH07XG4gIHJldHVybiB7IHN0YXR1czogJ3Jlc2VydmVkJywgc2xvdCB9O1xufVxuXG4vKipcbiAqIFJ1biBgYm9keWAgYWdhaW5zdCBhIHJlc2VydmVkIHNsb3QgYW5kIHNldHRsZSBpdCBieSBPTkUgcnVsZToga2VlcCBpdCBvbmNlXG4gKiB0aGUgcmVzb3VyY2Ugd2FzIGNvbnN1bWVkOyByZWZ1bmQgaXQgaWYgdGhlIGJvZHkgZmFpbHMgZmlyc3QuIFNoYXJlZCBieVxuICoge0BsaW5rIHdpdGhRdW90YVJlc2VydmF0aW9ufSBhbmQgYXBpLXNlcnZlcidzIEFJIHJlc2VydmF0aW9uLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuV2l0aFNsb3Q8VCwgUyBleHRlbmRzIFF1b3RhU2xvdD4oXG4gIHNsb3Q6IFMsXG4gIGJvZHk6IChzbG90OiBTKSA9PiBQcm9taXNlPFQ+LFxuICBvbkVycm9yPzogKGVycm9yOiB1bmtub3duKSA9PiB2b2lkIHwgUHJvbWlzZTx2b2lkPixcbik6IFByb21pc2U8UXVvdGFSZXNlcnZhdGlvbk91dGNvbWU8VD4+IHtcbiAgdHJ5IHtcbiAgICByZXR1cm4geyBzdGF0dXM6ICdkb25lJywgdmFsdWU6IGF3YWl0IGJvZHkoc2xvdCkgfTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAvLyBgcmVmdW5kKClgIGlzIGl0c2VsZiBhIG5vLW9wIG9uY2UgdGhlIHNsb3Qgd2FzIG1hcmtlZCBjb25zdW1lZC5cbiAgICBjb25zdCBlcnJvclNheXNDb25zdW1lZCA9IChlcnJvciBhcyB7IHByb3ZpZGVyQ29udGFjdGVkPzogdW5rbm93biB9IHwgbnVsbCk/LnByb3ZpZGVyQ29udGFjdGVkID09PSB0cnVlO1xuICAgIGlmICghZXJyb3JTYXlzQ29uc3VtZWQpIHNsb3QucmVmdW5kKCk7XG4gICAgaWYgKCFvbkVycm9yKSB0aHJvdyBlcnJvcjtcbiAgICBhd2FpdCBvbkVycm9yKGVycm9yKTtcbiAgICByZXR1cm4geyBzdGF0dXM6ICdmYWlsZWQnLCBlcnJvciB9O1xuICB9XG59XG5cbi8qKlxuICogUmVzZXJ2ZSBvbmUgcXVvdGEgc2xvdCwgcnVuIGBib2R5YCwgYW5kIHNldHRsZSB0aGUgc2xvdCBieSBPTkUgcnVsZTpcbiAqIGtlZXAgaXQgb25jZSB0aGUgcmVzb3VyY2Ugd2FzIGNvbnN1bWVkOyByZWZ1bmQgaXQgaWYgdGhlIGJvZHkgZmFpbHMgZmlyc3QuXG4gKlxuICogLSBEZW5pZWQg4oaSIGB7IHN0YXR1czogJ2RlbmllZCcgfWAgKGFuc3dlcmVkIG9uIGByZXNgIHdoZW4gZ2l2ZW4pOyBgYm9keWAgbmV2ZXIgcnVucy5cbiAqIC0gYGJvZHlgIHJlc29sdmVzIOKGkiB0aGUgc2xvdCBpcyBrZXB0ICh1bmxlc3MgYGJvZHlgIGNhbGxlZCBgc2xvdC5yZWZ1bmQoKWBcbiAqICAgQkVGT1JFIG1hcmtpbmcgaXQgY29uc3VtZWQg4oCUIGEgcmVmdW5kIGFmdGVyIGBtYXJrQ29uc3VtZWQoKWAgaXMgaWdub3JlZCkuXG4gKiAtIGBib2R5YCB0aHJvd3Mg4oaSIHJlZnVuZGVkIHVubGVzcyBjb25zdW1lZCDigJQgbWFya2VkIHZpYSBgc2xvdC5tYXJrQ29uc3VtZWQoKWBcbiAqICAgb3Igc2lnbmFsbGVkIGJ5IHRoZSBlcnJvciBpdHNlbGYgY2FycnlpbmcgYHByb3ZpZGVyQ29udGFjdGVkID09PSB0cnVlYFxuICogICAoYW4gQUkgcm91bmQtdHJpcCB0aGF0IGNvbXBsZXRlZCBidXQgcHJvZHVjZWQgbm90aGluZyB1c2FibGUpLiBUaGUgZXJyb3IgaXNcbiAqICAgdGhlbiBwYXNzZWQgdG8gYG9uRXJyb3JgLCBvciByZXRocm93biB3aGVuIHRoZXJlIGlzIG5vbmUuXG4gKlxuICogVGhlIHJlc2VydmUgYW5kIHJlZnVuZCBhdXRoZW50aWNhdGUgd2l0aCBhIG1pbnRlZCBzZXJ2aWNlIHRva2VuLCBuZXZlciB0aGVcbiAqIGVuZC11c2VyIGJlYXJlcjogdGhlIHF1b3RhIGluY3JlbWVudCBlbmRwb2ludCByZWplY3RzIHVzZXIgcHJpbmNpcGFscy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHdpdGhRdW90YVJlc2VydmF0aW9uPFQ+KFxuICBvcHRzOiBRdW90YVJlc2VydmF0aW9uT3B0aW9ucyxcbiAgYm9keTogKHNsb3Q6IFF1b3RhU2xvdCkgPT4gUHJvbWlzZTxUPixcbiAgb25FcnJvcj86IChlcnJvcjogdW5rbm93bikgPT4gdm9pZCB8IFByb21pc2U8dm9pZD4sXG4pOiBQcm9taXNlPFF1b3RhUmVzZXJ2YXRpb25PdXRjb21lPFQ+PiB7XG4gIGNvbnN0IHJlc2VydmVkID0gYXdhaXQgcmVzZXJ2ZVF1b3RhU2xvdChvcHRzKTtcbiAgaWYgKHJlc2VydmVkLnN0YXR1cyA9PT0gJ2RlbmllZCcpIHJldHVybiByZXNlcnZlZDtcbiAgcmV0dXJuIHJ1bldpdGhTbG90KHJlc2VydmVkLnNsb3QsIGJvZHksIG9uRXJyb3IpO1xufVxuIl19
|
|
83
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVvdGEtcmVzZXJ2YXRpb24uanMiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcGkvcXVvdGEtcmVzZXJ2YXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLEVBQ0wsY0FBYyxFQUNkLG9CQUFvQixFQUNwQixZQUFZLEVBQ1osc0JBQXNCLEVBQ3RCLGVBQWUsR0FLaEIsTUFBTSw0QkFBNEIsQ0FBQztBQXFEcEM7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLGdCQUFnQixDQUFDLElBQTZCO0lBQ2xFLE1BQU0sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLEdBQUcsSUFBSSxDQUFDO0lBQ2pFLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDO0lBQ2hDLE1BQU0sV0FBVyxHQUFHLG9CQUFvQixDQUFDLEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXLElBQUksZUFBZSxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBRXhILDJFQUEyRTtJQUMzRSx1RUFBdUU7SUFDdkUsb0RBQW9EO0lBQ3BELE1BQU0sV0FBVyxHQUFHLE1BQU0sWUFBWSxDQUFDLFlBQVksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDcEcsSUFBSSxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDekIsSUFBSSxJQUFJLENBQUMsR0FBRztZQUFFLHNCQUFzQixDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ2xFLE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxDQUFDO0lBQzNDLENBQUM7SUFFRCxJQUFJLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDckIsSUFBSSxRQUFRLEdBQUcsS0FBSyxDQUFDO0lBQ3JCLE1BQU0sSUFBSSxHQUFjO1FBQ3RCLFdBQVc7UUFDWCxXQUFXO1FBQ1gsWUFBWSxFQUFFLEdBQUcsRUFBRSxHQUFHLFFBQVEsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3hDLE1BQU0sRUFBRSxHQUFHLEVBQUU7WUFDWCxJQUFJLFFBQVEsSUFBSSxRQUFRO2dCQUFFLE9BQU87WUFDakMsUUFBUSxHQUFHLElBQUksQ0FBQztZQUNoQiwwRUFBMEU7WUFDMUUsY0FBYyxDQUFDLFlBQVksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFdBQVcsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ2xILENBQUM7S0FDRixDQUFDO0lBQ0YsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUM7QUFDdEMsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLFdBQVcsQ0FDL0IsSUFBTyxFQUNQLElBQTZCLEVBQzdCLE9BQWtEO0lBRWxELElBQUksQ0FBQztRQUNILE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO0lBQ3JELENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2Ysa0VBQWtFO1FBQ2xFLE1BQU0saUJBQWlCLEdBQUksS0FBZ0QsRUFBRSxpQkFBaUIsS0FBSyxJQUFJLENBQUM7UUFDeEcsSUFBSSxDQUFDLGlCQUFpQjtZQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUN0QyxJQUFJLENBQUMsT0FBTztZQUFFLE1BQU0sS0FBSyxDQUFDO1FBQzFCLE1BQU0sT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JCLE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDO0lBQ3JDLENBQUM7QUFDSCxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLG9CQUFvQixDQUN4QyxJQUE2QixFQUM3QixJQUFxQyxFQUNyQyxPQUFrRDtJQUVsRCxNQUFNLFFBQVEsR0FBRyxNQUFNLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlDLElBQUksUUFBUSxDQUFDLE1BQU0sS0FBSyxRQUFRO1FBQUUsT0FBTyxRQUFRLENBQUM7SUFDbEQsT0FBTyxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDbkQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQge1xuICBkZWNyZW1lbnRRdW90YSxcbiAgZ2V0U2VydmljZUF1dGhIZWFkZXIsXG4gIHJlc2VydmVRdW90YSxcbiAgc2VuZFF1b3RhUmVzZXJ2ZURlbmllZCxcbiAgc2VydmljZUlkZW50aXR5LFxuICB0eXBlIFF1b3RhUmVzZXJ2ZVJlc3VsdCxcbiAgdHlwZSBRdW90YVNlcnZpY2UsXG4gIHR5cGUgUXVvdGFUeXBlLFxuICB0eXBlIFF1b3RhVXNhZ2VBdHRyaWJ1dGlvbixcbn0gZnJvbSAnQHBpcGVsaW5lLWJ1aWxkZXIvYXBpLWNvcmUnO1xuaW1wb3J0IHR5cGUgeyBSZXNwb25zZSB9IGZyb20gJ2V4cHJlc3MnO1xuXG4vKiogVGhlIHJlc2VydmVkIHF1b3RhIHNsb3QsIGhhbmRlZCB0byB0aGUgZ3VhcmRlZCBib2R5LiAqL1xuZXhwb3J0IGludGVyZmFjZSBRdW90YVNsb3Qge1xuICAvKiogTWludGVkIHNlcnZpY2UgdG9rZW4gdGhlIHJlc2VydmF0aW9uIHVzZWQg4oCUIHJldXNlIGl0IGZvciB0aGUgYm9keSdzIG93biBTMlMgY2FsbHMuICovXG4gIHJlYWRvbmx5IHNlcnZpY2VBdXRoOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHJlc2VydmF0aW9uOiBRdW90YVJlc2VydmVSZXN1bHQ7XG4gIC8qKlxuICAgKiBUaGUgcmVzZXJ2ZWQgcmVzb3VyY2UgaGFzIGJlZW4gY29uc3VtZWQgKGUuZy4gdGhlIEFJIHByb3ZpZGVyIHN0YXJ0ZWRcbiAgICogcmVzcG9uZGluZykuIEZyb20gaGVyZSBvbiBhIGZhaWx1cmUgS0VFUFMgdGhlIHNsb3Qg4oCUIHRoZSBjb3N0IHdhcyBpbmN1cnJlZC5cbiAgICovXG4gIG1hcmtDb25zdW1lZCgpOiB2b2lkO1xuICAvKipcbiAgICogR2l2ZSB0aGUgc2xvdCBiYWNrIG5vdy4gSWRlbXBvdGVudDogcmVmdW5kcyBhdCBtb3N0IG9uY2Ug4oCUIGFuZCBhIE5PLU9QIG9uY2VcbiAgICoge0BsaW5rIG1hcmtDb25zdW1lZH0gd2FzIGNhbGxlZC4gQSBwYWlkIHByb3ZpZGVyIHJvdW5kLXRyaXAgaXMgbmV2ZXIgcmVmdW5kZWQsXG4gICAqIHdoYXRldmVyIHBhdGggKGEgY2xpZW50IGFib3J0LCBhIGxhdGVyIGZhaWx1cmUsIGFuIGVtcHR5IGFuc3dlcikgYXNrcyBmb3IgaXRcbiAgICogYWZ0ZXJ3YXJkczsgY2FsbGVycyBubyBsb25nZXIgbmVlZCB0byBndWFyZCBgcmVmdW5kKClgIHdpdGggdGhlaXIgb3duXG4gICAqIFwid2FzIHRoZSBwcm92aWRlciBjb250YWN0ZWRcIiBmbGFnLlxuICAgKi9cbiAgcmVmdW5kKCk6IHZvaWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUXVvdGFSZXNlcnZhdGlvbk9wdGlvbnMge1xuICBxdW90YVNlcnZpY2U6IFF1b3RhU2VydmljZTtcbiAgb3JnSWQ6IHN0cmluZztcbiAgdHlwZTogUXVvdGFUeXBlO1xuICAvKiogVW5pdHMgdG8gcmVzZXJ2ZSAoZGVmYXVsdCAxKSDigJQgZS5nLiBhbiBBSSBtb2RlbCdzIHdlaWdodC4gUmVmdW5kcyBnaXZlIGJhY2sgdGhlIHNhbWUgYW1vdW50LiAqL1xuICBhbW91bnQ/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBVc2FnZS1sZWRnZXIgYXR0cmlidXRpb24gZm9yIHRoZSByZXNlcnZlIEFORCBpdHMgcmVmdW5kLiBEZWZhdWx0cyB0byB0aGVcbiAgICogYW1iaWVudCByZXF1ZXN0IGNvbnRleHQgKHByaW5jaXBhbCArIHJlcXVlc3QgaWQsIG5vIHJvdXRlKSDigJQgcGFzcyBpdFxuICAgKiBleHBsaWNpdGx5IHRvIHJlY29yZCB0aGUgcm91dGUsIHRoZSBmZWF0dXJlIGFuZCB0aGUgbW9kZWwuXG4gICAqL1xuICBhdHRyaWJ1dGlvbj86IFF1b3RhVXNhZ2VBdHRyaWJ1dGlvbjtcbiAgLyoqIFNpZ25lciBvZiB0aGUgcXVvdGEgc2VydmljZSB0b2tlbi4gRGVmYXVsdHMgdG8gdGhpcyBwcm9jZXNzIChgU0VSVklDRV9OQU1FYCkuICovXG4gIHNlcnZpY2VOYW1lPzogc3RyaW5nO1xuICBsb2dXYXJuOiAobWVzc2FnZTogc3RyaW5nLCBkYXRhPzogdW5rbm93bikgPT4gdm9pZDtcbiAgLyoqIFdoZW4gc2V0LCBhIGRlbmllZCByZXNlcnZhdGlvbiBpcyBhbnN3ZXJlZCBvbiBpdCAoNDI5LCBvciA1MDMgd2hlbiB1bmNvbmZpcm1hYmxlKS4gKi9cbiAgcmVzPzogUmVzcG9uc2U7XG59XG5cbmV4cG9ydCB0eXBlIFF1b3RhUmVzZXJ2YXRpb25PdXRjb21lPFQ+ID1cbiAgfCB7IHN0YXR1czogJ2RlbmllZCc7IHJlc2VydmF0aW9uOiBRdW90YVJlc2VydmVSZXN1bHQgfVxuICB8IHsgc3RhdHVzOiAnZG9uZSc7IHZhbHVlOiBUIH1cbiAgLyoqIE9ubHkgd2l0aCBhbiBgb25FcnJvcmAgaGFuZGxlcjogdGhlIGJvZHkgdGhyZXcgYW5kIHRoZSBoYW5kbGVyIGFuc3dlcmVkLiAqL1xuICB8IHsgc3RhdHVzOiAnZmFpbGVkJzsgZXJyb3I6IHVua25vd24gfTtcblxuLyoqIFdoYXQge0BsaW5rIHJlc2VydmVRdW90YVNsb3R9IGhhbmRzIGJhY2s6IGEgbGl2ZSBzbG90LCBvciB0aGUgZGVuaWFsLiAqL1xuZXhwb3J0IHR5cGUgUXVvdGFTbG90UmVzZXJ2YXRpb24gPVxuICB8IHsgc3RhdHVzOiAnZGVuaWVkJzsgcmVzZXJ2YXRpb246IFF1b3RhUmVzZXJ2ZVJlc3VsdCB9XG4gIHwgeyBzdGF0dXM6ICdyZXNlcnZlZCc7IHNsb3Q6IFF1b3RhU2xvdCB9O1xuXG4vKipcbiAqIFJlc2VydmUgb25lIHNsb3QgKG9mIGBhbW91bnRgIHVuaXRzKSBhbmQgcmV0dXJuIGl0cyBoYW5kbGUsIFdJVEhPVVQgcnVubmluZ1xuICogYW55dGhpbmcuIFRoZSBwcmltaXRpdmUgdW5kZXIge0BsaW5rIHdpdGhRdW90YVJlc2VydmF0aW9ufSwgZm9yIGEgY2FsbGVyIHdob3NlXG4gKiBnYXRlZCB3b3JrIGRvZXMgbm90IGZpdCBvbmUgY2FsbGJhY2sg4oCUIGUuZy4gYSB0b29sIGluc2lkZSBhbiBhZ2VudCB0dXJuIHRoYXRcbiAqIHNldHRsZXMgaXRzIG93biBzbG90LiBUaGUgY2FsbGVyIG93bnMgc2V0dGxlbWVudDogYG1hcmtDb25zdW1lZCgpYCBvbmNlIHRoZVxuICogcmVzb3VyY2UgaXMgc3BlbnQsIGByZWZ1bmQoKWAgb24gZXZlcnkgcGF0aCB0aGF0IGZhaWxzIGJlZm9yZSB0aGF0LlxuICpcbiAqIERlbmllZCDihpIgYHsgc3RhdHVzOiAnZGVuaWVkJyB9YCwgYW5zd2VyZWQgb24gYHJlc2Agd2hlbiBnaXZlbi5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlc2VydmVRdW90YVNsb3Qob3B0czogUXVvdGFSZXNlcnZhdGlvbk9wdGlvbnMpOiBQcm9taXNlPFF1b3RhU2xvdFJlc2VydmF0aW9uPiB7XG4gIGNvbnN0IHsgcXVvdGFTZXJ2aWNlLCBvcmdJZCwgdHlwZSwgbG9nV2FybiwgYXR0cmlidXRpb24gfSA9IG9wdHM7XG4gIGNvbnN0IGFtb3VudCA9IG9wdHMuYW1vdW50ID8/IDE7XG4gIGNvbnN0IHNlcnZpY2VBdXRoID0gZ2V0U2VydmljZUF1dGhIZWFkZXIoeyBzZXJ2aWNlTmFtZTogb3B0cy5zZXJ2aWNlTmFtZSA/PyBzZXJ2aWNlSWRlbnRpdHkoKSwgb3JnSWQsIHJvbGU6ICdtZW1iZXInIH0pO1xuXG4gIC8vIFJlc2VydmUgYXRvbWljYWxseSBCRUZPUkUgYW55IHdvcms6IHR3byBjb25jdXJyZW50IHJlcXVlc3RzIGF0IHRoZSBsaW1pdFxuICAvLyBjYW4ndCBib3RoIHBhc3MuIEF0dHJpYnV0aW9uIGRlZmF1bHRzIHRvIHRoZSBhbWJpZW50IHJlcXVlc3QgY29udGV4dFxuICAvLyAocHJpbmNpcGFsICsgcmVxdWVzdCBpZCkgaW5zaWRlIHRoZSBxdW90YSBjbGllbnQuXG4gIGNvbnN0IHJlc2VydmF0aW9uID0gYXdhaXQgcmVzZXJ2ZVF1b3RhKHF1b3RhU2VydmljZSwgb3JnSWQsIHR5cGUsIHNlcnZpY2VBdXRoLCBhbW91bnQsIGF0dHJpYnV0aW9uKTtcbiAgaWYgKHJlc2VydmF0aW9uLmV4Y2VlZGVkKSB7XG4gICAgaWYgKG9wdHMucmVzKSBzZW5kUXVvdGFSZXNlcnZlRGVuaWVkKG9wdHMucmVzLCB0eXBlLCByZXNlcnZhdGlvbik7XG4gICAgcmV0dXJuIHsgc3RhdHVzOiAnZGVuaWVkJywgcmVzZXJ2YXRpb24gfTtcbiAgfVxuXG4gIGxldCBjb25zdW1lZCA9IGZhbHNlO1xuICBsZXQgcmVmdW5kZWQgPSBmYWxzZTtcbiAgY29uc3Qgc2xvdDogUXVvdGFTbG90ID0ge1xuICAgIHNlcnZpY2VBdXRoLFxuICAgIHJlc2VydmF0aW9uLFxuICAgIG1hcmtDb25zdW1lZDogKCkgPT4geyBjb25zdW1lZCA9IHRydWU7IH0sXG4gICAgcmVmdW5kOiAoKSA9PiB7XG4gICAgICBpZiAocmVmdW5kZWQgfHwgY29uc3VtZWQpIHJldHVybjtcbiAgICAgIHJlZnVuZGVkID0gdHJ1ZTtcbiAgICAgIC8vIFRoZSByZXNlcnZlZCByZXNldEF0IGtlZXBzIGEgcGVyaW9kIHJvbGxvdmVyIGZyb20gYmVpbmcgZG91YmxlLWNoYXJnZWQuXG4gICAgICBkZWNyZW1lbnRRdW90YShxdW90YVNlcnZpY2UsIG9yZ0lkLCB0eXBlLCBzZXJ2aWNlQXV0aCwgbG9nV2FybiwgYW1vdW50LCByZXNlcnZhdGlvbi5xdW90YS5yZXNldEF0LCBhdHRyaWJ1dGlvbik7XG4gICAgfSxcbiAgfTtcbiAgcmV0dXJuIHsgc3RhdHVzOiAncmVzZXJ2ZWQnLCBzbG90IH07XG59XG5cbi8qKlxuICogUnVuIGBib2R5YCBhZ2FpbnN0IGEgcmVzZXJ2ZWQgc2xvdCBhbmQgc2V0dGxlIGl0IGJ5IE9ORSBydWxlOiBrZWVwIGl0IG9uY2VcbiAqIHRoZSByZXNvdXJjZSB3YXMgY29uc3VtZWQ7IHJlZnVuZCBpdCBpZiB0aGUgYm9keSBmYWlscyBmaXJzdC4gU2hhcmVkIGJ5XG4gKiB7QGxpbmsgd2l0aFF1b3RhUmVzZXJ2YXRpb259IGFuZCBhcGktc2VydmVyJ3MgQUkgcmVzZXJ2YXRpb24uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBydW5XaXRoU2xvdDxULCBTIGV4dGVuZHMgUXVvdGFTbG90PihcbiAgc2xvdDogUyxcbiAgYm9keTogKHNsb3Q6IFMpID0+IFByb21pc2U8VD4sXG4gIG9uRXJyb3I/OiAoZXJyb3I6IHVua25vd24pID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+LFxuKTogUHJvbWlzZTxRdW90YVJlc2VydmF0aW9uT3V0Y29tZTxUPj4ge1xuICB0cnkge1xuICAgIHJldHVybiB7IHN0YXR1czogJ2RvbmUnLCB2YWx1ZTogYXdhaXQgYm9keShzbG90KSB9O1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIC8vIGByZWZ1bmQoKWAgaXMgaXRzZWxmIGEgbm8tb3Agb25jZSB0aGUgc2xvdCB3YXMgbWFya2VkIGNvbnN1bWVkLlxuICAgIGNvbnN0IGVycm9yU2F5c0NvbnN1bWVkID0gKGVycm9yIGFzIHsgcHJvdmlkZXJDb250YWN0ZWQ/OiB1bmtub3duIH0gfCBudWxsKT8ucHJvdmlkZXJDb250YWN0ZWQgPT09IHRydWU7XG4gICAgaWYgKCFlcnJvclNheXNDb25zdW1lZCkgc2xvdC5yZWZ1bmQoKTtcbiAgICBpZiAoIW9uRXJyb3IpIHRocm93IGVycm9yO1xuICAgIGF3YWl0IG9uRXJyb3IoZXJyb3IpO1xuICAgIHJldHVybiB7IHN0YXR1czogJ2ZhaWxlZCcsIGVycm9yIH07XG4gIH1cbn1cblxuLyoqXG4gKiBSZXNlcnZlIG9uZSBxdW90YSBzbG90LCBydW4gYGJvZHlgLCBhbmQgc2V0dGxlIHRoZSBzbG90IGJ5IE9ORSBydWxlOlxuICoga2VlcCBpdCBvbmNlIHRoZSByZXNvdXJjZSB3YXMgY29uc3VtZWQ7IHJlZnVuZCBpdCBpZiB0aGUgYm9keSBmYWlscyBmaXJzdC5cbiAqXG4gKiAtIERlbmllZCDihpIgYHsgc3RhdHVzOiAnZGVuaWVkJyB9YCAoYW5zd2VyZWQgb24gYHJlc2Agd2hlbiBnaXZlbik7IGBib2R5YCBuZXZlciBydW5zLlxuICogLSBgYm9keWAgcmVzb2x2ZXMg4oaSIHRoZSBzbG90IGlzIGtlcHQgKHVubGVzcyBgYm9keWAgY2FsbGVkIGBzbG90LnJlZnVuZCgpYFxuICogICBCRUZPUkUgbWFya2luZyBpdCBjb25zdW1lZCDigJQgYSByZWZ1bmQgYWZ0ZXIgYG1hcmtDb25zdW1lZCgpYCBpcyBpZ25vcmVkKS5cbiAqIC0gYGJvZHlgIHRocm93cyDihpIgcmVmdW5kZWQgdW5sZXNzIGNvbnN1bWVkIOKAlCBtYXJrZWQgdmlhIGBzbG90Lm1hcmtDb25zdW1lZCgpYFxuICogICBvciBzaWduYWxsZWQgYnkgdGhlIGVycm9yIGl0c2VsZiBjYXJyeWluZyBgcHJvdmlkZXJDb250YWN0ZWQgPT09IHRydWVgXG4gKiAgIChhbiBBSSByb3VuZC10cmlwIHRoYXQgY29tcGxldGVkIGJ1dCBwcm9kdWNlZCBub3RoaW5nIHVzYWJsZSkuIFRoZSBlcnJvciBpc1xuICogICB0aGVuIHBhc3NlZCB0byBgb25FcnJvcmAsIG9yIHJldGhyb3duIHdoZW4gdGhlcmUgaXMgbm9uZS5cbiAqXG4gKiBUaGUgcmVzZXJ2ZSBhbmQgcmVmdW5kIGF1dGhlbnRpY2F0ZSB3aXRoIGEgbWludGVkIHNlcnZpY2UgdG9rZW4sIG5ldmVyIHRoZVxuICogZW5kLXVzZXIgYmVhcmVyOiB0aGUgcXVvdGEgaW5jcmVtZW50IGVuZHBvaW50IHJlamVjdHMgdXNlciBwcmluY2lwYWxzLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gd2l0aFF1b3RhUmVzZXJ2YXRpb248VD4oXG4gIG9wdHM6IFF1b3RhUmVzZXJ2YXRpb25PcHRpb25zLFxuICBib2R5OiAoc2xvdDogUXVvdGFTbG90KSA9PiBQcm9taXNlPFQ+LFxuICBvbkVycm9yPzogKGVycm9yOiB1bmtub3duKSA9PiB2b2lkIHwgUHJvbWlzZTx2b2lkPixcbik6IFByb21pc2U8UXVvdGFSZXNlcnZhdGlvbk91dGNvbWU8VD4+IHtcbiAgY29uc3QgcmVzZXJ2ZWQgPSBhd2FpdCByZXNlcnZlUXVvdGFTbG90KG9wdHMpO1xuICBpZiAocmVzZXJ2ZWQuc3RhdHVzID09PSAnZGVuaWVkJykgcmV0dXJuIHJlc2VydmVkO1xuICByZXR1cm4gcnVuV2l0aFNsb3QocmVzZXJ2ZWQuc2xvdCwgYm9keSwgb25FcnJvcik7XG59XG4iXX0=
|