@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
|
@@ -604,4 +604,4 @@ export class SSEManager {
|
|
|
604
604
|
logger.info('SSE Manager shut down');
|
|
605
605
|
}
|
|
606
606
|
}
|
|
607
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3NlLWNvbm5lY3Rpb24tbWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9odHRwL3NzZS1jb25uZWN0aW9uLW1hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUF1QixZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdEgsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRWhFLE9BQU8sRUFBRSxFQUFFLElBQUksSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRWxDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxlQUFlLEVBQTJCLE1BQU0sd0JBQXdCLENBQUM7QUFDdEcsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUV6RCxNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUMsYUFBYSxDQUFDLENBQUM7QUEwRzNDOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxxRUFBcUUsQ0FBQztBQWF2Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQkc7QUFDSCxNQUFNLE9BQU8sVUFBVTtJQUNiLE9BQU8sR0FBRyxJQUFJLEdBQUcsRUFBdUIsQ0FBQztJQUNqRDs7MkNBRXVDO0lBQy9CLGVBQWUsR0FBRyxJQUFJLEdBQUcsRUFBa0IsQ0FBQztJQUNwRCxtRkFBbUY7SUFDbEUsT0FBTyxDQUFrQjtJQUN6QixvQkFBb0IsQ0FBUztJQUM3QixlQUFlLENBQVM7SUFDeEIsZ0JBQWdCLENBQVM7SUFDekIsZUFBZSxDQUFTO0lBQ2pDLGVBQWUsR0FBMEIsSUFBSSxDQUFDO0lBQ3RELCtEQUErRDtJQUN2RCxLQUFLLENBQVk7SUFDUixZQUFZLENBQXlCO0lB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QUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQ3BDLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1FBQzlCLENBQUM7UUFFRCxLQUFLLE1BQU0sU0FBUyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUNqRCxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBRSxzQkFBc0IsQ0FBQyxDQUFDO1FBQ3ZELENBQUM7UUFFRCx1RUFBdUU7UUFDdkUsS0FBSyxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBeUIsQ0FBQyxDQUFDLENBQUM7UUFDaEUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUV4QixNQUFNLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLENBQUM7SUFDdkMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCB7IHJhbmRvbUJ5dGVzIH0gZnJvbSAnbm9kZTpjcnlwdG8nO1xuaW1wb3J0IHsgY3JlYXRlTG9nZ2VyLCB3cml0ZVNzZUhlYWRlcnMsIHR5cGUgU3NlVGlja2V0U3RvcmUsIGVycm9yTWVzc2FnZSwgZW52SW50IH0gZnJvbSAnQHBpcGVsaW5lLWJ1aWxkZXIvYXBpLWNvcmUnO1xuaW1wb3J0IHsgQ29yZUNvbnN0YW50cyB9IGZyb20gJ0BwaXBlbGluZS1idWlsZGVyL3BpcGVsaW5lLWNvcmUnO1xuaW1wb3J0IHR5cGUgeyBSZXNwb25zZSB9IGZyb20gJ2V4cHJlc3MnO1xuaW1wb3J0IHsgdjcgYXMgdXVpZCB9IGZyb20gJ3V1aWQnO1xuaW1wb3J0IHR5cGUgeyBTU0VSZWxheSwgU1NFUmVsYXlNZXNzYWdlIH0gZnJvbSAnLi9zc2UtcmVsYXkuanMnO1xuaW1wb3J0IHsgbm9ybWFsaXplUmVxdWVzdElkLCBTc2VUaWNrZXRCcm9rZXIsIHR5cGUgQ3JlYXRlVGlja2V0UmVzdWx0IH0gZnJvbSAnLi9zc2UtdGlja2V0LWJyb2tlci5qcyc7XG5pbXBvcnQgeyBpbmNDb3VudGVyLCBzZXRHYXVnZSB9IGZyb20gJy4uL2FwaS9tZXRyaWNzLmpzJztcblxuY29uc3QgbG9nZ2VyID0gY3JlYXRlTG9nZ2VyKCdzc2UtbWFuYWdlcicpO1xuXG4vKipcbiAqIEV2ZW50IHR5cGVzIGZvciBTU0UgbG9nZ2luZ1xuICovXG5leHBvcnQgdHlwZSBTU0VFdmVudFR5cGUgPSAnSU5GTycgfCAnV0FSTicgfCAnRVJST1InIHwgJ0NPTVBMRVRFRCcgfCAnUk9MTEJBQ0snIHwgJ01FU1NBR0UnO1xuXG4vKipcbiAqIFNTRSBwYXlsb2FkIHN0cnVjdHVyZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNTRVBheWxvYWQge1xuICB0czogc3RyaW5nO1xuICB0eXBlOiBTU0VFdmVudFR5cGU7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgZGF0YT86IHVua25vd247XG59XG5cbi8qKlxuICogU1NFIGNsaWVudCB3aXRoIGNvbm5lY3Rpb24gdHJhY2tpbmdcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTU0VDbGllbnQge1xuICBpZDogc3RyaW5nO1xuICByZXM6IFJlc3BvbnNlO1xuICBjb25uZWN0ZWRBdDogbnVtYmVyO1xuICB0aW1lb3V0OiBOb2RlSlMuVGltZW91dDtcbiAgLyoqIE51bWJlciBvZiBjb25zZWN1dGl2ZSBiYWNrcHJlc3N1cmUgZXZlbnRzICh3cml0ZSByZXR1cm5lZCBmYWxzZSkuICovXG4gIGJhY2twcmVzc3VyZUNvdW50OiBudW1iZXI7XG4gIC8qKiBPd25pbmcgb3JnIGlkIOKAlCBwb3B1bGF0ZWQgd2hlbiB0aGUgcmVxdWVzdCB3YXMgYXV0aGVudGljYXRlZC4gVXNlZCB0b1xuICAgKiAgZGVjcmVtZW50IHRoZSBwZXItb3JnIGNvdW50ZXIgb24gZGlzY29ubmVjdCAvIGNsZWFudXAuICovXG4gIG9yZ0lkPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFNTRSBNYW5hZ2VyIGNvbmZpZ3VyYXRpb24gb3B0aW9uc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFNTRU1hbmFnZXJPcHRpb25zIHtcbiAgLyoqIE1heGltdW0gY2xpZW50cyBhbGxvd2VkIHBlciByZXF1ZXN0IElEIChkZWZhdWx0OiAxMCkgKi9cbiAgbWF4Q2xpZW50c1BlclJlcXVlc3Q/OiBudW1iZXI7XG4gIC8qKiBDbGllbnQgdGltZW91dCBpbiBtaWxsaXNlY29uZHMgKGRlZmF1bHQ6IDMwIG1pbnV0ZXMpICovXG4gIGNsaWVudFRpbWVvdXRNcz86IG51bWJlcjtcbiAgLyoqIEludGVydmFsIGZvciBjbGVhbnVwIGNoZWNrcyBpbiBtaWxsaXNlY29uZHMgKGRlZmF1bHQ6IDUgbWludXRlcykgKi9cbiAgY2xlYW51cEludGVydmFsTXM/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBIYXJkIGNhcCBvbiB0b3RhbCBvcGVuIGNvbm5lY3Rpb25zIHBlciBwcm9jZXNzLiBEZWZhdWx0cyB0byAxMDAwIGZyb21cbiAgICogYFNTRV9NQVhfVE9UQUxfQ0xJRU5UU2AuIE5ldyBjb25uZWN0aW9ucyBiZXlvbmQgdGhpcyBhcmUgcmVqZWN0ZWQgYXRcbiAgICogYGFkZENsaWVudCgpYC4gVHVuZSB1cCBpZiB5b3VyIHNlcnZpY2Ugc2VydmVzID4gMTAwMCBjb25jdXJyZW50IFNTRVxuICAgKiBkYXNoYm9hcmRzLCBidXQgYmUgYXdhcmUgTm9kZS5qcyBmZCBsaW1pdHMgZG9taW5hdGUgYWJvdmUgfjUwMDAuXG4gICAqL1xuICBtYXhUb3RhbENsaWVudHM/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBQZXItb3JnIGNlaWxpbmcgb24gY29uY3VycmVudCBTU0Ugc3RyZWFtcy4gRGVmYXVsdHMgdG8gNTAgZnJvbVxuICAgKiBgU1NFX01BWF9DTElFTlRTX1BFUl9PUkdgLiBQcm90ZWN0cyBhZ2FpbnN0IG9uZSBub2lzeSBvcmcgY29uc3VtaW5nIHRoZVxuICAgKiBwcm9jZXNzLXdpZGUgYnVkZ2V0IOKAlCB3aXRob3V0IGl0LCBhbiBhdXRoZW50aWNhdGVkIHVzZXIgY2FuIGZhbiBvdXRcbiAgICogdGhvdXNhbmRzIG9mIHN0cmVhbXMgKG9uZSBwZXIgZGFzaGJvYXJkIC8gbG9nIHN0cmVhbSkgYW5kIHN0YXJ2ZSBvdGhlclxuICAgKiBvcmdzIG9mIGNvbm5lY3Rpb24gc2xvdHMuIFRoZSBjYXAgaXMgZW5mb3JjZWQgb25seSBvbiBgYWRkQ2xpZW50YCBjYWxsc1xuICAgKiB0aGF0IGNhcnJ5IGFuIGBvcmdJZGA7IHNlcnZpY2UtaW50ZXJuYWwgLyBhbm9ueW1vdXMgU1NFIHRyYWZmaWMgc2tpcHMgaXQuXG4gICAqL1xuICBtYXhDbGllbnRzUGVyT3JnPzogbnVtYmVyO1xuICAvKipcbiAgICogQ2FwIG9uIGxpdmUgbG9nLXN0cmVhbSB0aWNrZXRzIGFjcm9zcyB0aGUgcHJvY2VzcywgZm9yIHRoZSBERUZBVUxUXG4gICAqIGluLW1lbW9yeSB0aWNrZXQgc3RvcmUuIERlZmF1bHRzIHRvIDEwMDAgZnJvbSBgU1NFX01BWF9UT1RBTF9USUNLRVRTYC5cbiAgICogSWdub3JlZCB3aGVuIGB0aWNrZXRTdG9yZWAgaXMgaW5qZWN0ZWQgKHRoZSBzdG9yZSBjYXJyaWVzIGl0cyBvd24gY2FwcykuXG4gICAqL1xuICBtYXhUb3RhbFRpY2tldHM/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBQZXItb3JnIGNhcCBvbiBsaXZlIGxvZy1zdHJlYW0gdGlja2V0cywgZm9yIHRoZSBERUZBVUxUIGluLW1lbW9yeSB0aWNrZXRcbiAgICogc3RvcmUuIERlZmF1bHRzIHRvIDEwIGZyb20gYFNTRV9NQVhfVElDS0VUU19QRVJfT1JHYC4gSWdub3JlZCB3aGVuXG4gICAqIGB0aWNrZXRTdG9yZWAgaXMgaW5qZWN0ZWQuXG4gICAqL1xuICBtYXhUaWNrZXRzUGVyT3JnPzogbnVtYmVyO1xuICAvKiogVGlja2V0IFRUTCBpbiBtcyBmb3IgdGhlIGRlZmF1bHQgc3RvcmUgKGRlZmF1bHQ6IGBTU0VfVElDS0VUX1RUTF9NU2AgZnJvbSBhcGktY29yZSkuICovXG4gIHRpY2tldFR0bE1zPzogbnVtYmVyO1xuICAvKipcbiAgICogVGlja2V0ICsgc3RyZWFtLW93bmVyc2hpcCBiYWNrZW5kIGZvciB0aGUgc3ViamVjdC1ib3VuZCBsb2cgc3RyZWFtLiBEZWZhdWx0c1xuICAgKiB0byBhbiBpbi1tZW1vcnkgc3RvcmUgKHNpbmdsZSByZXBsaWNhIG9ubHkpLCBidWlsdCBvbiBmaXJzdCB1c2UuIEluamVjdCBhblxuICAgKiBhcGktY29yZSBgY3JlYXRlRW52U3NlVGlja2V0U3RvcmUoLi4uKWAgc28gbWludC9yZWRlZW0gYW5kIHN0cmVhbSBvd25lcnNoaXBcbiAgICogd29yayBhY3Jvc3MgcG9kcy5cbiAgICovXG4gIHRpY2tldFN0b3JlPzogU3NlVGlja2V0U3RvcmU7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoaXMgc2VydmljZSBzdHJlYW1zIHBlci1yZXF1ZXN0IGxvZ3MgKGBjdHgubG9nYCBmcmFtZXMga2V5ZWQgYnlcbiAgICogcmVxdWVzdElkLCB0aGUgYC9sb2dzYCBjaGFubmVsKS4gRGVmYXVsdCBmYWxzZTogYGN0eC5sb2dgIHRoZW4gb25seSB3cml0ZXNcbiAgICogdG8gdGhlIGxvZ2dlciwgc28gYSBzZXJ2aWNlIHRoYXQgbmV2ZXIgc2VydmVzIGEgbG9nIHN0cmVhbSBkb2Vzbid0IHB1c2hcbiAgICogZXZlcnkgbG9nIGxpbmUgdGhyb3VnaCBTU0UgKGFuZCBvdmVyIFJlZGlzKS5cbiAgICovXG4gIGxvZ1N0cmVhbT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBUVEwgZm9yIGEgc3RyZWFtLW93bmVyc2hpcCBiaW5kaW5nIChkZWZhdWx0IDFoKS4gTG9uZyBlbm91Z2ggdG8gb3V0bGl2ZSBhXG4gICAqIGJ1aWxkOyB0aGUgcHJvZHVjZXIgcmUtYmluZHMgYXMgbmVlZGVkLlxuICAgKi9cbiAgc3RyZWFtT3duZXJUdGxNcz86IG51bWJlcjtcbiAgLyoqXG4gICAqIENyb3NzLXBvZCBmYW4tb3V0IGJ1cyBmb3IgYHNlbmQoKWAvYGJyb2FkY2FzdCgpYCwgd2lyZWQgYXQgY29uc3RydWN0aW9uLlxuICAgKiBXaGVuIG9taXR0ZWQgKGFuZCBubyBgcmVsYXlGYWN0b3J5YCBpcyBlbmFibGVkKSBkZWxpdmVyeSBpcyBMT0NBTC1PTkxZLlxuICAgKiBEZWdyYWRlcyB0byBsb2NhbC1vbmx5IGR1cmluZyBhIFJlZGlzIG91dGFnZS5cbiAgICovXG4gIHJlbGF5PzogU1NFUmVsYXk7XG4gIC8qKlxuICAgKiBCdWlsZHMgdGhlIHJlbGF5IG9uIGRlbWFuZCDigJQgc2VlIHtAbGluayBTU0VNYW5hZ2VyLmVuYWJsZVJlbGF5fS4gTGV0cyBhXG4gICAqIHNlcnZpY2Ugb3BlbiBhIHJlbGF5IGNvbm5lY3Rpb24gb25seSB3aGVuIGl0IGFjdHVhbGx5IGhhcyBhIHN0cmVhbWluZ1xuICAgKiBjaGFubmVsICh0aGUgbG9nIHN0cmVhbSwgb3IgYW4gb3JnLWtleWVkIGNoYW5uZWwpLiBSZXR1cm5pbmcgbnVsbCAoUmVkaXNcbiAgICogbm90IGNvbmZpZ3VyZWQpIGtlZXBzIGxvY2FsLW9ubHkgZGVsaXZlcnkuXG4gICAqL1xuICByZWxheUZhY3Rvcnk/OiAoKSA9PiBTU0VSZWxheSB8IG51bGw7XG59XG5cbi8qKlxuICogQSBidWlsZC1sb2cgc3RyZWFtIHN1YmplY3QgaWQ6IGVpdGhlciBhIGRhc2hlZCBVVUlEIChhcGktc2VydmVyJ3MgYHV1aWQoKWApXG4gKiBvciBuZ2lueCdzIGAkcmVxdWVzdF9pZGAg4oCUIDE2IHJhbmRvbSBieXRlcyByZW5kZXJlZCBhcyAzMiBoZXggY2hhcnMgd2l0aCBOT1xuICogZGFzaGVzLiBBY2NlcHQgYm90aCBieSBtYWtpbmcgdGhlIGdyb3VwIHNlcGFyYXRvcnMgb3B0aW9uYWw7IHN0aWxsIHN0cmljdGx5XG4gKiAzMiBoZXggY2hhcnMgc28gaXQgY2FuJ3QgY2FycnkgYW4gaW5qZWN0aW9uIC8gcGF0aC10cmF2ZXJzYWwgcGF5bG9hZCBpbnRvIHRoZVxuICogU1NFIHN1YmplY3QuIFNoYXJlZCBieSB0aGUgdGlja2V0LW1pbnQgcm91dGUgYW5kIHRoZSBzdHJlYW0gbWlkZGxld2FyZSBzb1xuICogYm90aCB2YWxpZGF0ZSB0aGUgc3ViamVjdCBpZGVudGljYWxseS5cbiAqL1xuZXhwb3J0IGNvbnN0IFNTRV9SRVFVRVNUX0lEX1JFID0gL15bMC05YS1mXXs4fS0/WzAtOWEtZl17NH0tP1swLTlhLWZdezR9LT9bMC05YS1mXXs0fS0/WzAtOWEtZl17MTJ9JC9pO1xuXG5leHBvcnQgdHlwZSB7IENyZWF0ZVRpY2tldFJlc3VsdCB9O1xuXG4vKipcbiAqIFNTRSBNYW5hZ2VyIHN0YXRpc3RpY3NcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTU0VNYW5hZ2VyU3RhdHMge1xuICB0b3RhbFJlcXVlc3RzOiBudW1iZXI7XG4gIHRvdGFsQ2xpZW50czogbnVtYmVyO1xuICBvbGRlc3RDb25uZWN0aW9uTXM6IG51bWJlciB8IG51bGw7XG59XG5cbi8qKlxuICogU1NFIGhlbHBlciBjbGFzcyB3aXRoIG1lbW9yeSBsZWFrIHByb3RlY3Rpb25cbiAqXG4gKiBGZWF0dXJlczpcbiAqIC0gQ2xpZW50IGxpbWl0cyBwZXIgcmVxdWVzdCBJRFxuICogLSBBdXRvbWF0aWMgdGltZW91dCBmb3IgaWRsZSBjb25uZWN0aW9uc1xuICogLSBQZXJpb2RpYyBjbGVhbnVwIG9mIHN0YWxlIGNvbm5lY3Rpb25zXG4gKiAtIENvbm5lY3Rpb24gc3RhdGlzdGljc1xuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBzc2VNYW5hZ2VyID0gbmV3IFNTRU1hbmFnZXIoeyBtYXhDbGllbnRzUGVyUmVxdWVzdDogNSB9KTtcbiAqIGFwcC5nZXQoJy9sb2dzLzpyZXF1ZXN0SWQnLCBzc2VNYW5hZ2VyLm1pZGRsZXdhcmUoKSk7XG4gKlxuICogLy8gU2VuZCBldmVudHNcbiAqIHNzZU1hbmFnZXIuc2VuZCgncmVxdWVzdC0xMjMnLCAnSU5GTycsICdQcm9jZXNzaW5nLi4uJyk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNsYXNzIFNTRU1hbmFnZXIge1xuICBwcml2YXRlIGNsaWVudHMgPSBuZXcgTWFwPHN0cmluZywgU1NFQ2xpZW50W10+KCk7XG4gIC8qKiBQZXItb3JnIG9wZW4tY2xpZW50IGNvdW50ZXJzLiBEZWNyZW1lbnRlZCBvbiByZW1vdmVDbGllbnQvY2xlYW51cCBzbyB0aGVcbiAgICogIG1hcCBtaXJyb3JzIGBjbGllbnRzW10ub3JnSWRgIGNvdW50cyBhdCBhbGwgdGltZXMuIE9yZ3MgcmVhY2ggemVybyBhcmVcbiAgICogIGRlbGV0ZWQgdG8ga2VlcCB0aGUgbWFwIGJvdW5kZWQuICovXG4gIHByaXZhdGUgb3JnQ2xpZW50Q291bnRzID0gbmV3IE1hcDxzdHJpbmcsIG51bWJlcj4oKTtcbiAgLyoqIFRpY2tldCBtaW50aW5nIC8gcmVkZW1wdGlvbiArIHN0cmVhbSBvd25lcnNoaXAgKHNlZSAuL3NzZS10aWNrZXQtYnJva2VyLnRzKS4gKi9cbiAgcHJpdmF0ZSByZWFkb25seSB0aWNrZXRzOiBTc2VUaWNrZXRCcm9rZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgbWF4Q2xpZW50c1BlclJlcXVlc3Q6IG51bWJlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBtYXhUb3RhbENsaWVudHM6IG51bWJlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBtYXhDbGllbnRzUGVyT3JnOiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgY2xpZW50VGltZW91dE1zOiBudW1iZXI7XG4gIHByaXZhdGUgY2xlYW51cEludGVydmFsOiBOb2RlSlMuVGltZW91dCB8IG51bGwgPSBudWxsO1xuICAvKiogQ3Jvc3MtcG9kIGZhbi1vdXQgYnVzICh1bmRlZmluZWQg4oeSIGxvY2FsLW9ubHkgZGVsaXZlcnkpLiAqL1xuICBwcml2YXRlIHJlbGF5PzogU1NFUmVsYXk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcmVsYXlGYWN0b3J5PzogKCkgPT4gU1NFUmVsYXkgfCBudWxsO1xuICAvKiogV2hldGhlciBgY3R4LmxvZ2AgZnJhbWVzIGFyZSBzdHJlYW1lZCAoc2VlIHtAbGluayBTU0VNYW5hZ2VyT3B0aW9ucy5sb2dTdHJlYW19KS4gKi9cbiAgcmVhZG9ubHkgbG9nU3RyZWFtRW5hYmxlZDogYm9vbGVhbjtcbiAgLyoqIFRoaXMgbWFuYWdlciBpbnN0YW5jZSdzIGlkIOKAlCB0YWdzIHJlbGF5ZWQgZnJhbWVzIHNvIHdlIGlnbm9yZSBvdXIgb3duIGVjaG8uICovXG4gIHByaXZhdGUgcmVhZG9ubHkgbm9kZUlkID0gcmFuZG9tQnl0ZXMoOCkudG9TdHJpbmcoJ2hleCcpO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IFNTRU1hbmFnZXJPcHRpb25zID0ge30pIHtcbiAgICB0aGlzLm1heENsaWVudHNQZXJSZXF1ZXN0ID0gb3B0aW9ucy5tYXhDbGllbnRzUGVyUmVxdWVzdCA/PyBlbnZJbnQoJ1NTRV9NQVhfQ0xJRU5UU19QRVJfUkVRVUVTVCcsIDEwLCB7IG1pbjogMSB9KTtcbiAgICB0aGlzLm1heFRvdGFsQ2xpZW50cyA9IG9wdGlvbnMubWF4VG90YWxDbGllbnRzID8/IGVudkludCgnU1NFX01BWF9UT1RBTF9DTElFTlRTJywgMTAwMCwgeyBtaW46IDEgfSk7XG4gICAgdGhpcy5tYXhDbGllbnRzUGVyT3JnID0gb3B0aW9ucy5tYXhDbGllbnRzUGVyT3JnID8/IGVudkludCgnU1NFX01BWF9DTElFTlRTX1BFUl9PUkcnLCA1MCwgeyBtaW46IDEgfSk7XG4gICAgdGhpcy50aWNrZXRzID0gbmV3IFNzZVRpY2tldEJyb2tlcih7XG4gICAgICBzdG9yZTogb3B0aW9ucy50aWNrZXRTdG9yZSxcbiAgICAgIG1heFRvdGFsOiBvcHRpb25zLm1heFRvdGFsVGlja2V0cyxcbiAgICAgIG1heFBlck9yZzogb3B0aW9ucy5tYXhUaWNrZXRzUGVyT3JnLFxuICAgICAgdHRsTXM6IG9wdGlvbnMudGlja2V0VHRsTXMsXG4gICAgICBvd25lclR0bE1zOiBvcHRpb25zLnN0cmVhbU93bmVyVHRsTXMsXG4gICAgfSk7XG4gICAgdGhpcy5sb2dTdHJlYW1FbmFibGVkID0gb3B0aW9ucy5sb2dTdHJlYW0gPz8gZmFsc2U7XG4gICAgdGhpcy5jbGllbnRUaW1lb3V0TXMgPSBvcHRpb25zLmNsaWVudFRpbWVvdXRNcyA/PyBlbnZJbnQoJ1NTRV9DTElFTlRfVElNRU9VVF9NUycsIDFfODAwXzAwMCwgeyBtaW46IDEgfSk7IC8vIDMwIG1pbnV0ZXNcblxuICAgIGNvbnN0IGNsZWFudXBJbnRlcnZhbE1zID0gb3B0aW9ucy5jbGVhbnVwSW50ZXJ2YWxNcyA/PyBlbnZJbnQoJ1NTRV9DTEVBTlVQX0lOVEVSVkFMX01TJywgMzAwXzAwMCwgeyBtaW46IDEgfSk7IC8vIDUgbWludXRlc1xuICAgIHRoaXMuc3RhcnRDbGVhbnVwSW50ZXJ2YWwoY2xlYW51cEludGVydmFsTXMpO1xuXG4gICAgLy8gV2lyZSB0aGUgY3Jvc3MtcG9kIHJlbGF5OiBzdWJzY3JpYmUgb25jZSBvbiBzdGFydHVwIHNvIGZyYW1lcyBQVUJMSVNIRUQgYnlcbiAgICAvLyBhbnkgb3RoZXIgcG9kIGFyZSByZS1lbWl0dGVkIHRvIFRISVMgcG9kJ3MgbG9jYWwgY2xpZW50cy4gRnJhbWVzIHdlXG4gICAgLy8gcHVibGlzaGVkIG91cnNlbHZlcyBhcmUgaWdub3JlZCAob3JpZ2luID09PSBub2RlSWQpIOKAlCB3ZSBhbHJlYWR5IHdyb3RlIHRoZW1cbiAgICAvLyBsb2NhbGx5LiBGYWlsLXNhZmU6IG5vIHJlbGF5IOKHkiBsb2NhbC1vbmx5IGRlbGl2ZXJ5IChzaW5nbGUtcmVwbGljYSBkZWZhdWx0KS5cbiAgICB0aGlzLnJlbGF5RmFjdG9yeSA9IG9wdGlvbnMucmVsYXlGYWN0b3J5O1xuICAgIGlmIChvcHRpb25zLnJlbGF5KSB0aGlzLmF0dGFjaFJlbGF5KG9wdGlvbnMucmVsYXkpO1xuICB9XG5cbiAgcHJpdmF0ZSBhdHRhY2hSZWxheShyZWxheTogU1NFUmVsYXkpOiB2b2lkIHtcbiAgICB0aGlzLnJlbGF5ID0gcmVsYXk7XG4gICAgcmVsYXkuc3Vic2NyaWJlKChtc2cpID0+IHRoaXMub25SZWxheU1lc3NhZ2UobXNnKSk7XG4gIH1cblxuICAvKipcbiAgICogVHVybiBvbiBjcm9zcy1wb2QgZGVsaXZlcnkgdXNpbmcgdGhlIGNvbmZpZ3VyZWQgYHJlbGF5RmFjdG9yeWAuIElkZW1wb3RlbnQ7XG4gICAqIGEgbm8tb3Agd2hlbiBhIHJlbGF5IGlzIGFscmVhZHkgd2lyZWQgb3Igbm8gZmFjdG9yeSB3YXMgZ2l2ZW4sIGFuZCB3aGVuIHRoZVxuICAgKiBmYWN0b3J5IHJldHVybnMgbnVsbCAoUmVkaXMgbm90IGNvbmZpZ3VyZWQg4oaSIGxvY2FsLW9ubHkgZGVsaXZlcnkpLlxuICAgKi9cbiAgZW5hYmxlUmVsYXkoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucmVsYXkgfHwgIXRoaXMucmVsYXlGYWN0b3J5KSByZXR1cm47XG4gICAgY29uc3QgcmVsYXkgPSB0aGlzLnJlbGF5RmFjdG9yeSgpO1xuICAgIGlmIChyZWxheSkgdGhpcy5hdHRhY2hSZWxheShyZWxheSk7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlIGEgZnJhbWUgcmVjZWl2ZWQgZnJvbSBhbm90aGVyIHBvZCB2aWEgdGhlIHJlbGF5LiBXZSBhbHJlYWR5IGRlbGl2ZXJlZFxuICAgKiBvdXIgT1dOIGZyYW1lcyB0byBsb2NhbCBjbGllbnRzIGJlZm9yZSBwdWJsaXNoaW5nLCBzbyBpZ25vcmUgb3VyIGVjaG8uIEFcbiAgICogYHNlbmRgIHJlLWVtaXRzIHRvIHRoZSBzdWJqZWN0J3MgbG9jYWwgY2xpZW50czsgYSBgYnJvYWRjYXN0YCB0byBhbGwgb2YgdGhlbS5cbiAgICogUHVyZWx5IGxvY2FsIOKAlCBuZXZlciByZS1wdWJsaXNoZXMsIHNvIHRoZXJlIGlzIG5vIGZhbi1vdXQgbG9vcC5cbiAgICovXG4gIHByaXZhdGUgb25SZWxheU1lc3NhZ2UobXNnOiBTU0VSZWxheU1lc3NhZ2UpOiB2b2lkIHtcbiAgICBpZiAoIW1zZyB8fCBtc2cub3JpZ2luID09PSB0aGlzLm5vZGVJZCkgcmV0dXJuO1xuICAgIGlmIChtc2cua2luZCA9PT0gJ2Jyb2FkY2FzdCcpIHtcbiAgICAgIHRoaXMuYnJvYWRjYXN0TG9jYWwobXNnLnBheWxvYWQpO1xuICAgIH0gZWxzZSBpZiAobXNnLnJlcXVlc3RJZCkge1xuICAgICAgdGhpcy5zZW5kTG9jYWwobXNnLnJlcXVlc3RJZCwgbXNnLnBheWxvYWQpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBUb3RhbCBvcGVuIGNvbm5lY3Rpb25zIGFjcm9zcyBhbGwgcmVxdWVzdHMuICovXG4gIHByaXZhdGUgdG90YWxDbGllbnRzKCk6IG51bWJlciB7XG4gICAgbGV0IG4gPSAwO1xuICAgIGZvciAoY29uc3QgY2xpZW50cyBvZiB0aGlzLmNsaWVudHMudmFsdWVzKCkpIG4gKz0gY2xpZW50cy5sZW5ndGg7XG4gICAgcmV0dXJuIG47XG4gIH1cblxuICAvKipcbiAgICogUHVibGlzaCB0aGUgY3VycmVudCBsaXZlLWNvbm5lY3Rpb24gY291bnQgYXMgYSBnYXVnZSBzbyBvbi1jYWxsIGNhbiBzZWUgU1NFXG4gICAqIHNhdHVyYXRpb24gKGFwcHJvYWNoIHRvIHRoZSBwZXItcHJvY2VzcyBjYXApIG9uIGEgZGFzaGJvYXJkLCBub3Qgb25seSBpblxuICAgKiBgZ2V0U3RhdHMoKWAvbG9ncy4gQ2FsbGVkIGFmdGVyIGV2ZXJ5IGFkZC9yZW1vdmUvXG4gICAqIGNsb3NlL2NsZWFudXAuIENoZWFwIChPKFIpKTsgbWV0cmljIGhlbHBlcnMgbmV2ZXIgdGhyb3cuXG4gICAqL1xuICBwcml2YXRlIHVwZGF0ZUFjdGl2ZUdhdWdlKCk6IHZvaWQge1xuICAgIHNldEdhdWdlKCdzc2VfYWN0aXZlX2Nvbm5lY3Rpb25zJywge30sIHRoaXMudG90YWxDbGllbnRzKCkpO1xuICB9XG5cbiAgLyoqIEN1cnJlbnQgb3Blbi1zdHJlYW0gY291bnQgZm9yIGFuIG9yZyAoMCBpZiB1bnNlZW4pLiAqL1xuICBnZXRPcmdDbGllbnRDb3VudChvcmdJZDogc3RyaW5nKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5vcmdDbGllbnRDb3VudHMuZ2V0KG9yZ0lkKSA/PyAwO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlY29yZCB0aGUgb3JnIHRoYXQgT1dOUyBhIHN0cmVhbSBzdWJqZWN0LCBzbyB0aWNrZXQgbWludGluZyBjYW4gcmVmdXNlIGFcbiAgICogY3Jvc3MtdGVuYW50IG1pbnQuIERlbGVnYXRlcyB0byB0aGUgdGlja2V0IGJyb2tlci5cbiAgICovXG4gIGFzeW5jIGJpbmRTdHJlYW1Pd25lcihyZXF1ZXN0SWQ6IHN0cmluZywgb3JnSWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMudGlja2V0cy5iaW5kU3RyZWFtT3duZXIocmVxdWVzdElkLCBvcmdJZCk7XG4gIH1cblxuICAvKipcbiAgICogTWludCBhIHNob3J0LWxpdmVkLCBzaW5nbGUtdXNlIHRpY2tldCBib3VuZCB0byBgb3JnSWRgIEFORCB0aGlzIHN0cmVhbVxuICAgKiBzdWJqZWN0IOKAlCBob3cgYSBicm93c2VyIG9wZW5zIGFuIEV2ZW50U291cmNlIHdpdGhvdXQgcHV0dGluZyBpdHMgSldUIGluIGFcbiAgICogcXVlcnkgc3RyaW5nLiBEZWxlZ2F0ZXMgdG8gdGhlIHRpY2tldCBicm9rZXIsIHdoaWNoIG93bnMgdGhlIG93bmVyc2hpcCBhbmRcbiAgICogY2FwIHJ1bGVzLlxuICAgKi9cbiAgYXN5bmMgY3JlYXRlVGlja2V0KG9yZ0lkOiBzdHJpbmcsIHJlcXVlc3RJZDogc3RyaW5nKTogUHJvbWlzZTxDcmVhdGVUaWNrZXRSZXN1bHQ+IHtcbiAgICByZXR1cm4gdGhpcy50aWNrZXRzLmNyZWF0ZVRpY2tldChvcmdJZCwgcmVxdWVzdElkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZSBhbmQgQ09OU1VNRSBhIHRpY2tldCBmb3IgYSBzcGVjaWZpYyBzdHJlYW0gc3ViamVjdCAoc2luZ2xlLXVzZSxcbiAgICogc3ViamVjdC1ib3VuZCkuIERlbGVnYXRlcyB0byB0aGUgdGlja2V0IGJyb2tlci5cbiAgICovXG4gIGFzeW5jIGNvbnN1bWVUaWNrZXQodGlja2V0SWQ6IHN0cmluZywgcmVxdWVzdElkOiBzdHJpbmcpOiBQcm9taXNlPHsgb3JnSWQ6IHN0cmluZyB9IHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLnRpY2tldHMuY29uc3VtZVRpY2tldCh0aWNrZXRJZCwgcmVxdWVzdElkKTtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIEFkZHMgYSBjbGllbnQgdG8gdGhlIFNTRSBtYW5hZ2VyXG4gICAqXG4gICAqIEBwYXJhbSByZXF1ZXN0SWQgLSBVbmlxdWUgcmVxdWVzdCBJRFxuICAgKiBAcGFyYW0gcmVzIC0gRXhwcmVzcyBSZXNwb25zZSBvYmplY3RcbiAgICogQHBhcmFtIG9yZ0lkIC0gQXV0aGVudGljYXRlZCBvcmcgaWQgKG9wdGlvbmFsKS4gV2hlbiBzZXQsIGVuZm9yY2VzIHRoZVxuICAgKiAgIHBlci1vcmcgY2FwIGFuZCB0aGUgY291bnRlciBpcyBkZWNyZW1lbnRlZCBvbiBkaXNjb25uZWN0L2NsZWFudXAuXG4gICAqIEBwYXJhbSBtYXhDbGllbnRzRm9yU3ViamVjdCAtIFBlci1zdWJqZWN0IGNhcCBvdmVycmlkZSAoZGVmYXVsdFxuICAgKiAgIGBtYXhDbGllbnRzUGVyUmVxdWVzdGApLiBBbiBvcmcta2V5ZWQgY2hhbm5lbCdzIHN1YmplY3QgSVMgdGhlIG9yZywgc28gaXRcbiAgICogICBtdXN0IG5vdCBpbmhlcml0IHRoZSBzbWFsbCBwZXItYnVpbGQtcmVxdWVzdCBjYXAg4oCUIHNlZSB7QGxpbmsgYWRkT3JnQ2xpZW50fS5cbiAgICogQHJldHVybnMgdHJ1ZSBpZiBjbGllbnQgd2FzIGFkZGVkLCBmYWxzZSBpZiByZWplY3RlZCAobGltaXQgcmVhY2hlZClcbiAgICovXG4gIGFkZENsaWVudChyZXF1ZXN0SWQ6IHN0cmluZywgcmVzOiBSZXNwb25zZSwgb3JnSWQ/OiBzdHJpbmcsIG1heENsaWVudHNGb3JTdWJqZWN0OiBudW1iZXIgPSB0aGlzLm1heENsaWVudHNQZXJSZXF1ZXN0KTogYm9vbGVhbiB7XG4gICAgLy8gTm9ybWFsaXplIHRoZSBtYXAga2V5OiB0aGUgc3ViamVjdCBpZCBpcyBhbGxvd2VkIGluIHR3byBmb3JtcyAoZGFzaGVkXG4gICAgLy8gYXBpLXNlcnZlciB1dWlkIHZzIHVuZGFzaGVkIG5naW54ICRyZXF1ZXN0X2lkKSwgYW5kIGEgcHJvZHVjZXIvY29uc3VtZXIgdGhhdFxuICAgIC8vIHJlbmRlciBpdCBkaWZmZXJlbnRseSB3b3VsZCBvdGhlcndpc2Uga2V5IGRpZmZlcmVudCBNYXAgZW50cmllcyDigJQgdGhlIGNsaWVudFxuICAgIC8vIHJlZ2lzdGVycyB1bmRlciBvbmUgYW5kIGV2ZXJ5IHNlbmQoKS9yZWxheSB3cml0ZXMgdG8gYW5vdGhlciwgZHJvcHBpbmcgYWxsXG4gICAgLy8gZnJhbWVzLiBOb3JtYWxpemluZyBoZXJlIChhbmQgaW4gc2VuZC9zZW5kTG9jYWwvY2xvc2VSZXF1ZXN0L2V0Yy4pIHVuaWZpZXMgdGhlbS5cbiAgICByZXF1ZXN0SWQgPSBub3JtYWxpemVSZXF1ZXN0SWQocmVxdWVzdElkKTtcbiAgICBjb25zdCBleGlzdGluZyA9IHRoaXMuY2xpZW50cy5nZXQocmVxdWVzdElkKSB8fCBbXTtcblxuICAgIC8vIENoZWNrIGNsaWVudCBsaW1pdFxuICAgIGlmIChleGlzdGluZy5sZW5ndGggPj0gbWF4Q2xpZW50c0ZvclN1YmplY3QpIHtcbiAgICAgIGxvZ2dlci53YXJuKGBDbGllbnQgbGltaXQgcmVhY2hlZCBmb3IgcmVxdWVzdCAke3JlcXVlc3RJZH0gKG1heDogJHttYXhDbGllbnRzRm9yU3ViamVjdH0pYCk7XG4gICAgICBpbmNDb3VudGVyKCdzc2VfY29ubmVjdGlvbl9yZWplY3RlZF90b3RhbCcsIHsgcmVhc29uOiAncmVxdWVzdC1saW1pdCcgfSk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gUHJvY2Vzcy13aWRlIGNhcDogcHJvdGVjdHMgZmQgdGFibGUgKyBtZW1vcnkgZnJvbSBydW5hd2F5IGRhc2hib2FyZHMuXG4gICAgaWYgKHRoaXMudG90YWxDbGllbnRzKCkgPj0gdGhpcy5tYXhUb3RhbENsaWVudHMpIHtcbiAgICAgIGxvZ2dlci53YXJuKGBUb3RhbCBTU0UgY2xpZW50IGNhcCByZWFjaGVkIChtYXg6ICR7dGhpcy5tYXhUb3RhbENsaWVudHN9KTsgcmVqZWN0aW5nIG5ldyBjb25uZWN0aW9uYCk7XG4gICAgICBpbmNDb3VudGVyKCdzc2VfY29ubmVjdGlvbl9yZWplY3RlZF90b3RhbCcsIHsgcmVhc29uOiAndG90YWwtY2FwJyB9KTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBQZXItb3JnIGNhcDogcHJldmVudHMgb25lIG5vaXN5IG9yZyBmcm9tIG1vbm9wb2xpemluZyBwcm9jZXNzLXdpZGVcbiAgICAvLyBzbG90cy4gRW5mb3JjZWQgb25seSB3aGVuIG9yZ0lkIGlzIGtub3duIOKAlCBzZXJ2aWNlLWludGVybmFsIC8gYW5vbnltb3VzXG4gICAgLy8gc3RyZWFtcyB0aGF0IG5ldmVyIGlkZW50aWZ5IHdpdGggYW4gb3JnSWQgc3RheSBzdWJqZWN0IHRvIHRoZSBnbG9iYWxcbiAgICAvLyBjZWlsaW5ncyBhYm92ZS4gUmVzZXJ2ZSBhdG9taWNhbGx5IGJlZm9yZSBpbnNlcnQgc28gdHdvIGNvbmN1cnJlbnRcbiAgICAvLyByZXF1ZXN0cyBhdCB0aGUgbGltaXQgY2FuJ3QgYm90aCBzdWNjZWVkLlxuICAgIGlmIChvcmdJZCkge1xuICAgICAgY29uc3Qgb3JnQ3VycmVudCA9IHRoaXMub3JnQ2xpZW50Q291bnRzLmdldChvcmdJZCkgPz8gMDtcbiAgICAgIGlmIChvcmdDdXJyZW50ID49IHRoaXMubWF4Q2xpZW50c1Blck9yZykge1xuICAgICAgICBsb2dnZXIud2FybihgUGVyLW9yZyBTU0UgY2xpZW50IGNhcCByZWFjaGVkIGZvciAke29yZ0lkfSAobWF4OiAke3RoaXMubWF4Q2xpZW50c1Blck9yZ30pOyByZWplY3RpbmcgbmV3IGNvbm5lY3Rpb25gKTtcbiAgICAgICAgaW5jQ291bnRlcignc3NlX2Nvbm5lY3Rpb25fcmVqZWN0ZWRfdG90YWwnLCB7IHJlYXNvbjogJ29yZy1jYXAnIH0pO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICB0aGlzLm9yZ0NsaWVudENvdW50cy5zZXQob3JnSWQsIG9yZ0N1cnJlbnQgKyAxKTtcbiAgICB9XG5cbiAgICAvLyBDcmVhdGUgdGltZW91dCBmb3IgdGhpcyBjbGllbnRcbiAgICBjb25zdCBjbGllbnRJZCA9IHV1aWQoKTtcbiAgICBjb25zdCB0aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBsb2dnZXIuZGVidWcoYENsaWVudCAke2NsaWVudElkfSB0aW1lZCBvdXQgZm9yIHJlcXVlc3QgJHtyZXF1ZXN0SWR9YCk7XG4gICAgICB0aGlzLnJlbW92ZUNsaWVudChyZXF1ZXN0SWQsIGNsaWVudElkKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJlcy5lbmQoKTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBsb2dnZXIuZGVidWcoJ1Jlc3BvbnNlIGFscmVhZHkgY2xvc2VkIG9uIHRpbWVvdXQnLCB7IHJlcXVlc3RJZCwgY2xpZW50SWQsIGVycm9yOiBlcnJvck1lc3NhZ2UoZXJyKSB9KTtcbiAgICAgIH1cbiAgICB9LCB0aGlzLmNsaWVudFRpbWVvdXRNcyk7XG5cbiAgICBjb25zdCBjbGllbnQ6IFNTRUNsaWVudCA9IHtcbiAgICAgIGlkOiBjbGllbnRJZCxcbiAgICAgIHJlcyxcbiAgICAgIGNvbm5lY3RlZEF0OiBEYXRlLm5vdygpLFxuICAgICAgdGltZW91dCxcbiAgICAgIGJhY2twcmVzc3VyZUNvdW50OiAwLFxuICAgICAgb3JnSWQsXG4gICAgfTtcblxuICAgIC8vIEhhbmRsZSBkaXNjb25uZWN0aW9uXG4gICAgcmVzLm9uKCdjbG9zZScsICgpID0+IHtcbiAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgICAgIHRoaXMucmVtb3ZlQ2xpZW50KHJlcXVlc3RJZCwgY2xpZW50SWQpO1xuICAgIH0pO1xuXG4gICAgcmVzLm9uKCdlcnJvcicsIChlcnIpID0+IHtcbiAgICAgIGxvZ2dlci5lcnJvcihgU1NFIGNsaWVudCBlcnJvciBmb3IgcmVxdWVzdCAke3JlcXVlc3RJZH06YCwgZXJyKTtcbiAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgICAgIHRoaXMucmVtb3ZlQ2xpZW50KHJlcXVlc3RJZCwgY2xpZW50SWQpO1xuICAgIH0pO1xuXG4gICAgZXhpc3RpbmcucHVzaChjbGllbnQpO1xuICAgIHRoaXMuY2xpZW50cy5zZXQocmVxdWVzdElkLCBleGlzdGluZyk7XG4gICAgaW5jQ291bnRlcignc3NlX2Nvbm5lY3Rpb25zX3RvdGFsJywge30pO1xuICAgIHRoaXMudXBkYXRlQWN0aXZlR2F1Z2UoKTtcblxuICAgIGxvZ2dlci5kZWJ1ZyhgQ2xpZW50ICR7Y2xpZW50SWR9IGNvbm5lY3RlZCBmb3IgcmVxdWVzdCAke3JlcXVlc3RJZH0gKHRvdGFsOiAke2V4aXN0aW5nLmxlbmd0aH0pYCk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKipcbiAgICogQXR0YWNoIGEgY2xpZW50IHRvIGFuIE9SRy1rZXllZCBzdHJlYW0gKHRoZSBvcmcgaXMgdGhlIHN1YmplY3QpLiBDb3VudHNcbiAgICogYWdhaW5zdCB0aGUgcGVyLW9yZyBjYXAsIGFuZCB0aGUgb3JnIOKAlCBub3QgdGhlIHBlci1yZXF1ZXN0IGNhcCDigJQgYm91bmRzIGhvd1xuICAgKiBtYW55IHN0cmVhbXMgc2hhcmUgdGhlIHN1YmplY3QuXG4gICAqL1xuICBhZGRPcmdDbGllbnQob3JnSWQ6IHN0cmluZywgcmVzOiBSZXNwb25zZSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmFkZENsaWVudChvcmdJZCwgcmVzLCBvcmdJZCwgdGhpcy5tYXhDbGllbnRzUGVyT3JnKTtcbiAgfVxuXG4gIC8qKiBEcm9wIG9uZSBmcm9tIHRoZSBwZXItb3JnIGNvdW50ZXIuIElkZW1wb3RlbnQ6IGEgY291bnRlciBhdCAwIHN0YXlzIGF0IDBcbiAgICogIGFuZCB0aGUgb3JnIGtleSBpcyByZW1vdmVkIGZyb20gdGhlIG1hcC4gKi9cbiAgcHJpdmF0ZSBkZWNyZW1lbnRPcmdDb3VudChvcmdJZD86IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICghb3JnSWQpIHJldHVybjtcbiAgICBjb25zdCBjdXJyZW50ID0gdGhpcy5vcmdDbGllbnRDb3VudHMuZ2V0KG9yZ0lkKSA/PyAwO1xuICAgIGlmIChjdXJyZW50IDw9IDEpIHRoaXMub3JnQ2xpZW50Q291bnRzLmRlbGV0ZShvcmdJZCk7XG4gICAgZWxzZSB0aGlzLm9yZ0NsaWVudENvdW50cy5zZXQob3JnSWQsIGN1cnJlbnQgLSAxKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIGEgY2xpZW50IGZyb20gdGhlIG1hbmFnZXJcbiAgICovXG4gIHByaXZhdGUgcmVtb3ZlQ2xpZW50KHJlcXVlc3RJZDogc3RyaW5nLCBjbGllbnRJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgY2xpZW50cyA9IHRoaXMuY2xpZW50cy5nZXQocmVxdWVzdElkKTtcbiAgICBpZiAoIWNsaWVudHMpIHJldHVybjtcblxuICAgIGNvbnN0IHJlbWFpbmluZyA9IGNsaWVudHMuZmlsdGVyKGMgPT4ge1xuICAgICAgaWYgKGMuaWQgPT09IGNsaWVudElkKSB7XG4gICAgICAgIGNsZWFyVGltZW91dChjLnRpbWVvdXQpO1xuICAgICAgICAvLyBNaXJyb3IgdGhlIHBlci1vcmcgY291bnRlciDigJQgbXVzdCBkZWNyZW1lbnQgaGVyZSwgbm90IGp1c3QgaW4gdGhlXG4gICAgICAgIC8vIGV4cGxpY2l0IGNsb3NlIHBhdGhzLCBzaW5jZSAnY2xvc2UnLydlcnJvcicgZXZlbnQgaGFuZGxlcnMgYXJlIHRoZVxuICAgICAgICAvLyBwcmltYXJ5IGRpc2Nvbm5lY3Qgc2lnbmFsIGluIHByYWN0aWNlLlxuICAgICAgICB0aGlzLmRlY3JlbWVudE9yZ0NvdW50KGMub3JnSWQpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9KTtcblxuICAgIGlmIChyZW1haW5pbmcubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLmNsaWVudHMuZGVsZXRlKHJlcXVlc3RJZCk7XG4gICAgICBsb2dnZXIuZGVidWcoYEFsbCBjbGllbnRzIGRpc2Nvbm5lY3RlZCBmb3IgcmVxdWVzdCAke3JlcXVlc3RJZH1gKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jbGllbnRzLnNldChyZXF1ZXN0SWQsIHJlbWFpbmluZyk7XG4gICAgfVxuICAgIHRoaXMudXBkYXRlQWN0aXZlR2F1Z2UoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZW5kcyBhIG1lc3NhZ2UgdG8gYWxsIFNTRSBjbGllbnRzIGZvciBhIHJlcXVlc3RJZFxuICAgKlxuICAgKiBAcGFyYW0gcmVxdWVzdElkIC0gUmVxdWVzdCBJRFxuICAgKiBAcGFyYW0gdHlwZSAtIEV2ZW50IHR5cGVcbiAgICogQHBhcmFtIG1lc3NhZ2UgLSBNZXNzYWdlIHN0cmluZ1xuICAgKiBAcGFyYW0gZGF0YSAtIE9wdGlvbmFsIGFkZGl0aW9uYWwgZGF0YVxuICAgKiBAcmV0dXJucyBOdW1iZXIgb2YgY2xpZW50cyB0aGUgbWVzc2FnZSB3YXMgc2VudCB0b1xuICAgKi9cbiAgc2VuZChyZXF1ZXN0SWQ6IHN0cmluZywgdHlwZTogU1NFRXZlbnRUeXBlLCBtZXNzYWdlOiBzdHJpbmcsIGRhdGE/OiB1bmtub3duKTogbnVtYmVyIHtcbiAgICByZXF1ZXN0SWQgPSBub3JtYWxpemVSZXF1ZXN0SWQocmVxdWVzdElkKTsgLy8gdW5pZnkgcHJvZHVjZXIvY29uc3VtZXIga2V5IGZvcm1zXG4gICAgY29uc3QgcGF5bG9hZDogU1NFUGF5bG9hZCA9IHtcbiAgICAgIHRzOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICB0eXBlLFxuICAgICAgbWVzc2FnZSxcbiAgICAgIGRhdGEsXG4gICAgfTtcblxuICAgIC8vIERlbGl2ZXIgdG8gTE9DQUwgY2xpZW50cyBmaXJzdCwgdGhlbiByZWxheSB0aGUgU0FNRSBwYXlsb2FkIHRvIG90aGVyIHBvZHNcbiAgICAvLyBzbyBhbiBFdmVudFNvdXJjZSBhdHRhY2hlZCBvbiBhIGRpZmZlcmVudCByZXBsaWNhIGFsc28gcmVjZWl2ZXMgaXQuIFRoZVxuICAgIC8vIHJlbGF5IGlzIGZpcmUtYW5kLWZvcmdldCBhbmQgZmFpbC1zYWZlOiBubyByZWxheSAvIFJlZGlzIGRvd24g4oeSIGxvY2FsLW9ubHkuXG4gICAgY29uc3Qgc2VudENvdW50ID0gdGhpcy5zZW5kTG9jYWwocmVxdWVzdElkLCBwYXlsb2FkKTtcbiAgICB0aGlzLnB1Ymxpc2hSZWxheSh7IG9yaWdpbjogdGhpcy5ub2RlSWQsIGtpbmQ6ICdzZW5kJywgcmVxdWVzdElkLCBwYXlsb2FkIH0pO1xuICAgIHJldHVybiBzZW50Q291bnQ7XG4gIH1cblxuICAvKipcbiAgICogV3JpdGUgYSBwcmUtYnVpbHQgcGF5bG9hZCB0byB0aGlzIHBvZCdzIExPQ0FMIGNsaWVudHMgZm9yIGByZXF1ZXN0SWRgLiBTaGFyZWRcbiAgICogYnkge0BsaW5rIHNlbmR9IChsb2NhbCBoYWxmKSBhbmQgdGhlIHJlbGF5IHJlLWVtaXQgcGF0aCAoe0BsaW5rIG9uUmVsYXlNZXNzYWdlfSksXG4gICAqIHNvIGEgcmVsYXllZCBmcmFtZSByZXVzZXMgdGhlIHByb2R1Y2VyJ3Mgb3JpZ2luYWwgYHRzYCByYXRoZXIgdGhhbiBhIG5ldyBvbmUuXG4gICAqIE5ldmVyIHJlbGF5cyDigJQgY2FsbGVycyBkZWNpZGUgd2hldGhlciB0byBwdWJsaXNoLlxuICAgKi9cbiAgcHJpdmF0ZSBzZW5kTG9jYWwocmVxdWVzdElkOiBzdHJpbmcsIHBheWxvYWQ6IFNTRVBheWxvYWQpOiBudW1iZXIge1xuICAgIHJlcXVlc3RJZCA9IG5vcm1hbGl6ZVJlcXVlc3RJZChyZXF1ZXN0SWQpOyAvLyBpZGVtcG90ZW50OyBjb3ZlcnMgdGhlIHJlbGF5IHJlLWVtaXQgcGF0aFxuICAgIGNvbnN0IGNsaWVudHMgPSBbLi4uKHRoaXMuY2xpZW50cy5nZXQocmVxdWVzdElkKSB8fCBbXSldO1xuICAgIGxldCBzZW50Q291bnQgPSAwO1xuICAgIGNvbnN0IHNlcmlhbGl6ZWQgPSBgZGF0YTogJHtKU09OLnN0cmluZ2lmeShwYXlsb2FkKX1cXG5cXG5gO1xuXG4gICAgZm9yIChjb25zdCBjbGllbnQgb2YgY2xpZW50cykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgLy8gQmFja3ByZXNzdXJlOiBza2lwIGNsaWVudHMgd2hvc2Ugd3JpdGUgYnVmZmVyIGlzIGZ1bGxcbiAgICAgICAgaWYgKGNsaWVudC5yZXMud3JpdGFibGVFbmRlZCkge1xuICAgICAgICAgIHRoaXMucmVtb3ZlQ2xpZW50KHJlcXVlc3RJZCwgY2xpZW50LmlkKTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjYW5Xcml0ZSA9IGNsaWVudC5yZXMud3JpdGUoc2VyaWFsaXplZCk7XG4gICAgICAgIGlmICghY2FuV3JpdGUpIHtcbiAgICAgICAgICBjbGllbnQuYmFja3ByZXNzdXJlQ291bnQrKztcbiAgICAgICAgICAvLyBEaXNjb25uZWN0IGNsaWVudHMgdGhhdCBjb25zaXN0ZW50bHkgY2FuJ3Qga2VlcCB1cCAoMTAgY29uc2VjdXRpdmUgYmFja3ByZXNzdXJlIGV2ZW50cylcbiAgICAgICAgICBpZiAoY2xpZW50LmJhY2twcmVzc3VyZUNvdW50ID49IENvcmVDb25zdGFudHMuU1NFX0JBQ0tQUkVTU1VSRV9USFJFU0hPTEQpIHtcbiAgICAgICAgICAgIGxvZ2dlci53YXJuKGBEaXNjb25uZWN0aW5nIHNsb3cgY2xpZW50ICR7Y2xpZW50LmlkfSBmb3IgcmVxdWVzdCAke3JlcXVlc3RJZH0gKCR7Y2xpZW50LmJhY2twcmVzc3VyZUNvdW50fSBiYWNrcHJlc3N1cmUgZXZlbnRzKWApO1xuICAgICAgICAgICAgaW5jQ291bnRlcignc3NlX2JhY2twcmVzc3VyZV9kaXNjb25uZWN0c190b3RhbCcsIHt9KTtcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlQ2xpZW50KHJlcXVlc3RJZCwgY2xpZW50LmlkKTtcbiAgICAgICAgICAgIHRyeSB7IGNsaWVudC5yZXMuZW5kKCk7IH0gY2F0Y2ggeyAvKiBhbHJlYWR5IGNsb3NlZCAqLyB9XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY2xpZW50LmJhY2twcmVzc3VyZUNvdW50ID0gMDsgLy8gUmVzZXQgb24gc3VjY2Vzc2Z1bCB3cml0ZVxuICAgICAgICB9XG4gICAgICAgIHNlbnRDb3VudCsrO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgbG9nZ2VyLmVycm9yKGBGYWlsZWQgdG8gc2VuZCB0byBjbGllbnQgJHtjbGllbnQuaWR9OmAsIGVycm9yKTtcbiAgICAgICAgdGhpcy5yZW1vdmVDbGllbnQocmVxdWVzdElkLCBjbGllbnQuaWQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzZW50Q291bnQ7XG4gIH1cblxuICAvKipcbiAgICogQnJvYWRjYXN0IGEgbWVzc2FnZSB0byBhbGwgY29ubmVjdGVkIGNsaWVudHMgYWNyb3NzIGFsbCByZXF1ZXN0c1xuICAgKlxuICAgKiBAcGFyYW0gdHlwZSAtIEV2ZW50IHR5cGVcbiAgICogQHBhcmFtIG1lc3NhZ2UgLSBNZXNzYWdlIHN0cmluZ1xuICAgKiBAcGFyYW0gZGF0YSAtIE9wdGlvbmFsIGFkZGl0aW9uYWwgZGF0YVxuICAgKiBAcmV0dXJucyBUb3RhbCBudW1iZXIgb2YgY2xpZW50cyB0aGUgbWVzc2FnZSB3YXMgc2VudCB0b1xuICAgKi9cbiAgYnJvYWRjYXN0KHR5cGU6IFNTRUV2ZW50VHlwZSwgbWVzc2FnZTogc3RyaW5nLCBkYXRhPzogdW5rbm93bik6IG51bWJlciB7XG4gICAgY29uc3QgcGF5bG9hZDogU1NFUGF5bG9hZCA9IHtcbiAgICAgIHRzOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICB0eXBlLFxuICAgICAgbWVzc2FnZSxcbiAgICAgIGRhdGEsXG4gICAgfTtcbiAgICAvLyBEZWxpdmVyIHRvIGxvY2FsIGNsaWVudHMsIHRoZW4gcmVsYXkgYSBzaW5nbGUgYnJvYWRjYXN0IGZyYW1lIHNvIEVWRVJZIHBvZFxuICAgIC8vIHJlLWVtaXRzIHRvIEFMTCBvZiBpdHMgb3duIGNsaWVudHMg4oCUIGEgcGVyLXJlcXVlc3RJZCByZWxheSB3b3VsZCBtaXNzXG4gICAgLy8gc3ViamVjdHMgdGhhdCBvbmx5IGV4aXN0IG9uIG90aGVyIHJlcGxpY2FzLlxuICAgIGNvbnN0IHRvdGFsU2VudCA9IHRoaXMuYnJvYWRjYXN0TG9jYWwocGF5bG9hZCk7XG4gICAgdGhpcy5wdWJsaXNoUmVsYXkoeyBvcmlnaW46IHRoaXMubm9kZUlkLCBraW5kOiAnYnJvYWRjYXN0JywgcGF5bG9hZCB9KTtcbiAgICByZXR1cm4gdG90YWxTZW50O1xuICB9XG5cbiAgLyoqIFdyaXRlIGEgcHJlLWJ1aWx0IHBheWxvYWQgdG8gYWxsIExPQ0FMIGNsaWVudHMgYWNyb3NzIGV2ZXJ5IHJlcXVlc3QuICovXG4gIHByaXZhdGUgYnJvYWRjYXN0TG9jYWwocGF5bG9hZDogU1NFUGF5bG9hZCk6IG51bWJlciB7XG4gICAgbGV0IHRvdGFsU2VudCA9IDA7XG4gICAgZm9yIChjb25zdCByZXF1ZXN0SWQgb2YgWy4uLnRoaXMuY2xpZW50cy5rZXlzKCldKSB7XG4gICAgICB0b3RhbFNlbnQgKz0gdGhpcy5zZW5kTG9jYWwocmVxdWVzdElkLCBwYXlsb2FkKTtcbiAgICB9XG4gICAgcmV0dXJuIHRvdGFsU2VudDtcbiAgfVxuXG4gIC8qKiBGaXJlLWFuZC1mb3JnZXQgcmVsYXkgcHVibGlzaC4gTm8tb3AgKGxvY2FsLW9ubHkpIHdoZW4gbm8gcmVsYXkgaXMgd2lyZWQuICovXG4gIHByaXZhdGUgcHVibGlzaFJlbGF5KG1zZzogU1NFUmVsYXlNZXNzYWdlKTogdm9pZCB7XG4gICAgdGhpcy5yZWxheT8ucHVibGlzaChtc2cpO1xuICB9XG5cbiAgLyoqXG4gICAqIENsb3NlIGFsbCBjbGllbnRzIGZvciBhIHNwZWNpZmljIHJlcXVlc3RcbiAgICpcbiAgICogQHBhcmFtIHJlcXVlc3RJZCAtIFJlcXVlc3QgSUQgdG8gY2xvc2VcbiAgICogQHBhcmFtIGZpbmFsTWVzc2FnZSAtIE9wdGlvbmFsIGZpbmFsIG1lc3NhZ2UgdG8gc2VuZCBiZWZvcmUgY2xvc2luZ1xuICAgKi9cbiAgY2xvc2VSZXF1ZXN0KHJlcXVlc3RJZDogc3RyaW5nLCBmaW5hbE1lc3NhZ2U/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICByZXF1ZXN0SWQgPSBub3JtYWxpemVSZXF1ZXN0SWQocmVxdWVzdElkKTtcbiAgICBpZiAoIXRoaXMuY2xpZW50cy5oYXMocmVxdWVzdElkKSkgcmV0dXJuO1xuXG4gICAgLy8gTE9DQUwgb25seTogdGhpcyBjbG9zZXMgdGhpcyBwb2QncyBjbGllbnRzLCBzbyB0aGUgZmluYWwgZnJhbWUgaXMgZm9yIHRoZW1cbiAgICAvLyAocmVsYXlpbmcgaXQgd291bGQgcHVzaCBhIENPTVBMRVRFRCB0byBvdGhlciBwb2RzJyBzdGlsbC1vcGVuIHN0cmVhbXMpLlxuICAgIGlmIChmaW5hbE1lc3NhZ2UpIHtcbiAgICAgIHRoaXMuc2VuZExvY2FsKHJlcXVlc3RJZCwgeyB0czogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLCB0eXBlOiAnQ09NUExFVEVEJywgbWVzc2FnZTogZmluYWxNZXNzYWdlIH0pO1xuICAgIH1cblxuICAgIC8vIFJlYWQgdGhlIGVudHJ5IEFGVEVSIHRoZSBmaW5hbCB3cml0ZTogc2VuZExvY2FsIHJlbW92ZXMgKGFuZCB1bi1jb3VudHMpXG4gICAgLy8gY2xpZW50cyB0aGF0IHdlcmUgYWxyZWFkeSBnb25lLCBzbyBpdGVyYXRpbmcgYW4gZWFybGllciBzbmFwc2hvdCB3b3VsZFxuICAgIC8vIGRlY3JlbWVudCB0aGVpciBvcmcgY291bnQgYSBzZWNvbmQgdGltZS5cbiAgICBmb3IgKGNvbnN0IGNsaWVudCBvZiB0aGlzLmNsaWVudHMuZ2V0KHJlcXVlc3RJZCkgPz8gW10pIHtcbiAgICAgIGNsZWFyVGltZW91dChjbGllbnQudGltZW91dCk7XG4gICAgICB0aGlzLmRlY3JlbWVudE9yZ0NvdW50KGNsaWVudC5vcmdJZCk7XG4gICAgICB0cnkge1xuICAgICAgICBjbGllbnQucmVzLmVuZCgpO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGxvZ2dlci5kZWJ1ZygnUmVzcG9uc2UgYWxyZWFkeSBjbG9zZWQgb24gcmVxdWVzdCBjbG9zZScsIHsgcmVxdWVzdElkLCBjbGllbnRJZDogY2xpZW50LmlkLCBlcnJvcjogZXJyb3JNZXNzYWdlKGVycikgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5jbGllbnRzLmRlbGV0ZShyZXF1ZXN0SWQpO1xuICAgIHRoaXMudXBkYXRlQWN0aXZlR2F1Z2UoKTtcbiAgICBsb2dnZXIuZGVidWcoYENsb3NlZCBhbGwgY2xpZW50cyBmb3IgcmVxdWVzdCAke3JlcXVlc3RJZH1gKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgc3RhdGlzdGljcyBhYm91dCBjdXJyZW50IGNvbm5lY3Rpb25zXG4gICAqL1xuICBnZXRTdGF0cygpOiBTU0VNYW5hZ2VyU3RhdHMge1xuICAgIGxldCB0b3RhbENsaWVudHMgPSAwO1xuICAgIGxldCBvbGRlc3RDb25uZWN0aW9uOiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuXG4gICAgZm9yIChjb25zdCBjbGllbnRzIG9mIHRoaXMuY2xpZW50cy52YWx1ZXMoKSkge1xuICAgICAgdG90YWxDbGllbnRzICs9IGNsaWVudHMubGVuZ3RoO1xuICAgICAgZm9yIChjb25zdCBjbGllbnQgb2YgY2xpZW50cykge1xuICAgICAgICBjb25zdCBhZ2UgPSBub3cgLSBjbGllbnQuY29ubmVjdGVkQXQ7XG4gICAgICAgIGlmIChvbGRlc3RDb25uZWN0aW9uID09PSBudWxsIHx8IGFnZSA+IG9sZGVzdENvbm5lY3Rpb24pIHtcbiAgICAgICAgICBvbGRlc3RDb25uZWN0aW9uID0gYWdlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHRvdGFsUmVxdWVzdHM6IHRoaXMuY2xpZW50cy5zaXplLFxuICAgICAgdG90YWxDbGllbnRzLFxuICAgICAgb2xkZXN0Q29ubmVjdGlvbk1zOiBvbGRlc3RDb25uZWN0aW9uLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgYSByZXF1ZXN0IGhhcyBhbnkgY29ubmVjdGVkIGNsaWVudHNcbiAgICovXG4gIGhhc0NsaWVudHMocmVxdWVzdElkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBjb25zdCBjbGllbnRzID0gdGhpcy5jbGllbnRzLmdldChub3JtYWxpemVSZXF1ZXN0SWQocmVxdWVzdElkKSk7XG4gICAgcmV0dXJuIGNsaWVudHMgIT09IHVuZGVmaW5lZCAmJiBjbGllbnRzLmxlbmd0aCA+IDA7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBudW1iZXIgb2YgY2xpZW50cyBmb3IgYSBzcGVjaWZpYyByZXF1ZXN0XG4gICAqL1xuICBnZXRDbGllbnRDb3VudChyZXF1ZXN0SWQ6IHN0cmluZyk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuY2xpZW50cy5nZXQobm9ybWFsaXplUmVxdWVzdElkKHJlcXVlc3RJZCkpPy5sZW5ndGggPz8gMDtcbiAgfVxuXG4gIC8qKlxuICAgKiBNaWRkbGV3YXJlIHRvIGluaXRpYWxpemUgYSB0aWNrZXQtYXV0aGVudGljYXRlZCBTU0UgY29ubmVjdGlvbi5cbiAgICpcbiAgICogVGhlIHN0cmVhbSBpcyBOT1Qgb3BlbiB0byB0aGUgd29ybGQ6IHRoZSBjYWxsZXIgbXVzdCBmaXJzdCBleGNoYW5nZSBpdHNcbiAgICogSldUIGZvciBhIHNob3J0LWxpdmVkIHNpbmdsZS11c2UgdGlja2V0IChzZWUge0BsaW5rIGNyZWF0ZVRpY2tldH0sIHdpcmVkIHRvXG4gICAqIGBQT1NUIC9sb2dzL3RpY2tldGApIGFuZCBwYXNzIGl0IGFzIGA/dGlja2V0PTx0PmAuIFRoZSBtaWRkbGV3YXJlIHZhbGlkYXRlc1xuICAgKiArIGNvbnN1bWVzIHRoZSB0aWNrZXQsIGJpbmRzIHRoZSBjb25uZWN0aW9uIHRvIHRoZSB0aWNrZXQncyBvcmcsIGFuZFxuICAgKiBlbmZvcmNlcyB0aGUgcGVyLW9yZyBjb25uZWN0aW9uIGNhcC4gQSBtaXNzaW5nIC8gaW52YWxpZCAvIGV4cGlyZWQgL1xuICAgKiBhbHJlYWR5LXVzZWQgdGlja2V0IGlzIHJlamVjdGVkIHdpdGggNDAxIGJlZm9yZSBhbnkgU1NFIGhlYWRlcnMgZmx1c2guXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogYXBwLmdldCgnL2xvZ3MvOnJlcXVlc3RJZCcsIHNzZU1hbmFnZXIubWlkZGxld2FyZSgpKTtcbiAgICogYGBgXG4gICAqL1xuICBtaWRkbGV3YXJlKCkge1xuICAgIHJldHVybiBhc3luYyAocmVxOiB7IHBhcmFtczogeyByZXF1ZXN0SWQ6IHN0cmluZyB9OyBxdWVyeT86IHsgdGlja2V0PzogdW5rbm93biB9IH0sIHJlczogUmVzcG9uc2UpID0+IHtcbiAgICAgIGNvbnN0IHsgcmVxdWVzdElkIH0gPSByZXEucGFyYW1zO1xuXG4gICAgICBpZiAoIVNTRV9SRVFVRVNUX0lEX1JFLnRlc3QocmVxdWVzdElkKSkge1xuICAgICAgICByZXMuc3RhdHVzKDQwMCkuZW5kKCdJbnZhbGlkIHJlcXVlc3RJZCBmb3JtYXQnKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvLyBUaWNrZXQgYXV0aCDigJQgcmVxdWlyZWQuIFJlc29sdmUgYD90aWNrZXQ9PHQ+YCwgdGhlbiB2YWxpZGF0ZSArIGNvbnN1bWVcbiAgICAgIC8vIGl0IChzaW5nbGUtdXNlKSBGT1IgVEhJUyBTVUJKRUNULiBBbiBhbm9ueW1vdXMsIG1hbGZvcm1lZCwgdW5rbm93bixcbiAgICAgIC8vIGV4cGlyZWQsIGFscmVhZHktY29uc3VtZWQsIG9yIHdyb25nLXN1YmplY3QgdGlja2V0IGlzIGEgNDAxLiBUaGUgb3JnIGlzXG4gICAgICAvLyB0YWtlbiBmcm9tIHRoZSB0aWNrZXQsIHNvIHRoZSBzdHJlYW0gaXMgYWx3YXlzIGJvdW5kIHRvIGEgdmVyaWZpZWRcbiAgICAgIC8vIHRlbmFudCBBTkQgdG8gdGhlIGV4YWN0IHN1YmplY3QgdGhlIHRpY2tldCB3YXMgbWludGVkIGZvciAobm8gYW5vbnltb3VzXG4gICAgICAvLyBzdHJlYW1zLCBubyBjcm9zcy1zdWJqZWN0IGF0dGFjaCkuXG4gICAgICBjb25zdCB0aWNrZXRJZCA9IHJlcS5xdWVyeT8udGlja2V0O1xuICAgICAgaWYgKHR5cGVvZiB0aWNrZXRJZCAhPT0gJ3N0cmluZycgfHwgdGlja2V0SWQubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJlcy5zdGF0dXMoNDAxKS5lbmQoJ01pc3NpbmcgdGlja2V0Jyk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGNvbnN1bWVkID0gYXdhaXQgdGhpcy5jb25zdW1lVGlja2V0KHRpY2tldElkLCByZXF1ZXN0SWQpO1xuICAgICAgaWYgKCFjb25zdW1lZCkge1xuICAgICAgICByZXMuc3RhdHVzKDQwMSkuZW5kKCdJbnZhbGlkIG9yIGV4cGlyZWQgdGlja2V0Jyk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IG9yZ0lkID0gY29uc3VtZWQub3JnSWQ7XG5cbiAgICAgIC8vIFByZS1mbGlnaHQgcGVyLXJlcXVlc3QgY2FwIHNvIHdlIGNhbiByZXR1cm4gNDI5IGJlZm9yZSBmbHVzaGluZ1xuICAgICAgLy8gU1NFIGhlYWRlcnMgKGFmdGVyIGhlYWRlcnMgYXJlIGZsdXNoZWQgdGhlIGNsaWVudCBjYW4ndCByZWFkIGEgNDI5KS5cbiAgICAgIC8vXG4gICAgICAvLyBOT1JNQUxJWkUgZmlyc3Q6IGBhZGRDbGllbnRgIGtleXMgdGhlIG1hcCBvbiB0aGUgbm9ybWFsaXplZCBmb3JtXG4gICAgICAvLyAoZGFzaGVzIHN0cmlwcGVkKSwgc28gcmVhZGluZyB0aGUgcmF3IGByZXF1ZXN0SWRgIGhlcmUgYWx3YXlzIGZvdW5kIDBcbiAgICAgIC8vIGZvciBhIGNsaWVudCB1c2luZyB0aGUgZGFzaGVkIGZvcm0uIFRoZSBjYXAgd2FzIHRoZW4gb25seSBjYXVnaHQgaW5zaWRlXG4gICAgICAvLyBgYWRkQ2xpZW50YCDigJQgQUZURVIgYGZsdXNoSGVhZGVycygpYCDigJQgd2hpY2ggaXMgZXhhY3RseSB0aGUgY2FzZSB0aGlzXG4gICAgICAvLyBwcmUtZmxpZ2h0IGV4aXN0cyB0byBhdm9pZDogdGhlIGNsaWVudCBnb3QgYSBzaWxlbnRseS1jbG9zZWQgc3RyZWFtXG4gICAgICAvLyBpbnN0ZWFkIG9mIGEgNDI5LlxuICAgICAgY29uc3QgZXhpc3RpbmcgPSB0aGlzLmNsaWVudHMuZ2V0KG5vcm1hbGl6ZVJlcXVlc3RJZChyZXF1ZXN0SWQpKSB8fCBbXTtcbiAgICAgIGlmIChleGlzdGluZy5sZW5ndGggPj0gdGhpcy5tYXhDbGllbnRzUGVyUmVxdWVzdCkge1xuICAgICAgICBsb2dnZXIud2FybihgQ2xpZW50IGxpbWl0IHJlYWNoZWQgZm9yIHJlcXVlc3QgJHtyZXF1ZXN0SWR9IChtYXg6ICR7dGhpcy5tYXhDbGllbnRzUGVyUmVxdWVzdH0pYCk7XG4gICAgICAgIHJlcy5zdGF0dXMoNDI5KS5lbmQoJ1RvbyBtYW55IGNvbm5lY3Rpb25zIGZvciB0aGlzIHJlcXVlc3QnKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvLyBTYW1lIGZvciB0aGUgcGVyLW9yZyBjYXAg4oCUIGJldHRlciB0byBzZW5kIDQyOSB0aGFuIG9wZW4gdGhlIHN0cmVhbSBhbmRcbiAgICAgIC8vIGltbWVkaWF0ZWx5IGNsb3NlIGl0LiBUaGUgdGlja2V0IGd1YXJhbnRlZXMgYSB2ZXJpZmllZCBvcmcgaWQsIHNvIHRoZVxuICAgICAgLy8gcGVyLW9yZyBjZWlsaW5nIGlzIGFsd2F5cyBlbmZvcmNlZCBmb3IgdGhlIC9sb2dzIHN0cmVhbS5cbiAgICAgIGlmICgodGhpcy5vcmdDbGllbnRDb3VudHMuZ2V0KG9yZ0lkKSA/PyAwKSA+PSB0aGlzLm1heENsaWVudHNQZXJPcmcpIHtcbiAgICAgICAgbG9nZ2VyLndhcm4oYFBlci1vcmcgU1NFIGNsaWVudCBjYXAgcmVhY2hlZCBmb3IgJHtvcmdJZH0gKG1heDogJHt0aGlzLm1heENsaWVudHNQZXJPcmd9KWApO1xuICAgICAgICByZXMuc3RhdHVzKDQyOSkuZW5kKCdUb28gbWFueSBTU0UgY29ubmVjdGlvbnMgZm9yIHRoaXMgb3JnYW5pemF0aW9uJyk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgd3JpdGVTc2VIZWFkZXJzKHJlcyk7XG4gICAgICByZXMuZmx1c2hIZWFkZXJzKCk7XG5cbiAgICAgIC8vIEhlYWRlcnMgYXJlIGZsdXNoZWQg4oCUIHdlIGNhbiBubyBsb25nZXIgc2VuZCBhIDQyOS4gYWRkQ2xpZW50IHJlLWNoZWNrc1xuICAgICAgLy8gdGhlIGNhcHMgKGluY2x1ZGluZyB0aGUgcHJvY2Vzcy13aWRlIHRvdGFsLWNsaWVudHMgY2FwLCB3aGljaCB0aGVcbiAgICAgIC8vIHByZS1mbGlnaHQgYWJvdmUgZG9lcyBub3QpIGFuZCBjYW4gc3RpbGwgcmVqZWN0IG9uIGEgcmFjZTogYSBjb25jdXJyZW50XG4gICAgICAvLyBjb25uZWN0aW9uIG1heSBoYXZlIGZpbGxlZCBhIGNhcCBiZXR3ZWVuIHRoZSBwcmUtZmxpZ2h0IGNoZWNrIGFuZCBoZXJlLlxuICAgICAgLy8gT24gcmVqZWN0aW9uLCBjbG9zZSB0aGUgbm93LWRhbmdsaW5nIHJlc3BvbnNlIGluc3RlYWQgb2YgbGVhdmluZyBhblxuICAgICAgLy8gb3BlbiBzb2NrZXQgd2l0aCBubyBjbGllbnQgcmVjb3JkICh3aGljaCB3b3VsZCBsZWFrIGFuIGZkICsgbmV2ZXIgZW1pdFxuICAgICAgLy8gc3RyZWFtIGRhdGEpLlxuICAgICAgY29uc3QgYWRkZWQgPSB0aGlzLmFkZENsaWVudChyZXF1ZXN0SWQsIHJlcywgb3JnSWQpO1xuICAgICAgaWYgKCFhZGRlZCkge1xuICAgICAgICBsb2dnZXIud2FybihgU1NFIGFkZENsaWVudCByZWplY3RlZCBhZnRlciBoZWFkZXJzIGZsdXNoZWQgZm9yIHJlcXVlc3QgJHtyZXF1ZXN0SWR9OyBjbG9zaW5nIGRhbmdsaW5nIHJlc3BvbnNlYCk7XG4gICAgICAgIHRyeSB7IHJlcy5lbmQoKTsgfSBjYXRjaCB7IC8qIGFscmVhZHkgY2xvc2VkICovIH1cbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFN0YXJ0IHBlcmlvZGljIGNsZWFudXAgb2Ygc3RhbGUgY29ubmVjdGlvbnNcbiAgICovXG4gIHByaXZhdGUgc3RhcnRDbGVhbnVwSW50ZXJ2YWwoaW50ZXJ2YWxNczogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5jbGVhbnVwSW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICB0aGlzLmNsZWFudXAoKTtcbiAgICB9LCBpbnRlcnZhbE1zKTtcblxuICAgIC8vIERvbid0IHByZXZlbnQgcHJvY2VzcyBleGl0XG4gICAgdGhpcy5jbGVhbnVwSW50ZXJ2YWwudW5yZWYoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhbiB1cCBzdGFsZSBjb25uZWN0aW9ucyB1c2luZyBzaW5nbGUtcGFzcyBwYXJ0aXRpb24uXG4gICAqIE8oUiDDlyBDKSBpbnN0ZWFkIG9mIE8oUiDDlyBDwrIpLCBhbmQgYXZvaWRzIG11dGF0aW9uLWR1cmluZy1pdGVyYXRpb24uXG4gICAqL1xuICBwcml2YXRlIGNsZWFudXAoKTogdm9pZCB7XG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICBsZXQgY2xlYW5lZCA9IDA7XG5cbiAgICBmb3IgKGNvbnN0IFtyZXF1ZXN0SWQsIGNsaWVudHNdIG9mIHRoaXMuY2xpZW50cy5lbnRyaWVzKCkpIHtcbiAgICAgIGNvbnN0IHN0YWxlOiBTU0VDbGllbnRbXSA9IFtdO1xuICAgICAgY29uc3QgYWN0aXZlOiBTU0VDbGllbnRbXSA9IFtdO1xuXG4gICAgICBmb3IgKGNvbnN0IGNsaWVudCBvZiBjbGllbnRzKSB7XG4gICAgICAgIC8vIFRpbWUtYmFzZWQgZXZpY3Rpb24gT1IgYSBzb2NrZXQgdGhhdCBzaWxlbnRseSBjbG9zZWQgKG5vICdjbG9zZSdcbiAgICAgICAgLy8gZXZlbnQpIOKAlCBOb2RlIHNvbWV0aW1lcyBkcm9wcyBzb2NrZXRzIHdpdGhvdXQgZmlyaW5nIHRoZSBldmVudCxcbiAgICAgICAgLy8gc28gd2UgZXhwbGljaXRseSBjaGVjayB3cml0YWJsZUVuZGVkL2Rlc3Ryb3llZCBoZXJlLlxuICAgICAgICBjb25zdCBhZ2VTdGFsZSA9IG5vdyAtIGNsaWVudC5jb25uZWN0ZWRBdCA+IHRoaXMuY2xpZW50VGltZW91dE1zO1xuICAgICAgICBjb25zdCBzb2NrZXREZWFkID0gY2xpZW50LnJlcy53cml0YWJsZUVuZGVkIHx8IChjbGllbnQucmVzIGFzIHsgZGVzdHJveWVkPzogYm9vbGVhbiB9KS5kZXN0cm95ZWQgPT09IHRydWU7XG4gICAgICAgIGlmIChhZ2VTdGFsZSB8fCBzb2NrZXREZWFkKSB7XG4gICAgICAgICAgc3RhbGUucHVzaChjbGllbnQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGFjdGl2ZS5wdXNoKGNsaWVudCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZm9yIChjb25zdCBjbGllbnQgb2Ygc3RhbGUpIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KGNsaWVudC50aW1lb3V0KTtcbiAgICAgICAgdGhpcy5kZWNyZW1lbnRPcmdDb3VudChjbGllbnQub3JnSWQpO1xuICAgICAgICB0cnkgeyBjbGllbnQucmVzLmVuZCgpOyB9IGNhdGNoIHsgLyogYWxyZWFkeSBjbG9zZWQgKi8gfVxuICAgICAgICBjbGVhbmVkKys7XG4gICAgICB9XG5cbiAgICAgIGlmIChhY3RpdmUubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHRoaXMuY2xpZW50cy5kZWxldGUocmVxdWVzdElkKTtcbiAgICAgIH0gZWxzZSBpZiAoc3RhbGUubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLmNsaWVudHMuc2V0KHJlcXVlc3RJZCwgYWN0aXZlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoY2xlYW5lZCA+IDApIHtcbiAgICAgIGluY0NvdW50ZXIoJ3NzZV9zdGFsZV9jbGVhbmVkX3RvdGFsJywge30sIGNsZWFuZWQpO1xuICAgICAgdGhpcy51cGRhdGVBY3RpdmVHYXVnZSgpO1xuICAgICAgbG9nZ2VyLmluZm8oYENsZWFuZWQgdXAgJHtjbGVhbmVkfSBzdGFsZSBTU0UgY29ubmVjdGlvbnNgKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2h1dGRvd24gdGhlIFNTRSBtYW5hZ2VyIGFuZCBjbG9zZSBhbGwgY29ubmVjdGlvbnNcbiAgICovXG4gIHNodXRkb3duKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNsZWFudXBJbnRlcnZhbCkge1xuICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLmNsZWFudXBJbnRlcnZhbCk7XG4gICAgICB0aGlzLmNsZWFudXBJbnRlcnZhbCA9IG51bGw7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCByZXF1ZXN0SWQgb2YgWy4uLnRoaXMuY2xpZW50cy5rZXlzKCldKSB7XG4gICAgICB0aGlzLmNsb3NlUmVxdWVzdChyZXF1ZXN0SWQsICdTZXJ2ZXIgc2h1dHRpbmcgZG93bicpO1xuICAgIH1cblxuICAgIC8vIFRlYXIgZG93biB0aGUgcmVsYXkncyBSZWRpcyBjb25uZWN0aW9ucyAoYmVzdC1lZmZvcnQ7IG5ldmVyIHRocm93cykuXG4gICAgdm9pZCB0aGlzLnJlbGF5Py5jbG9zZSgpLmNhdGNoKCgpID0+IHsgLyogYWxyZWFkeSBjbG9zaW5nICovIH0pO1xuICAgIHRoaXMudGlja2V0cy5zaHV0ZG93bigpO1xuXG4gICAgbG9nZ2VyLmluZm8oJ1NTRSBNYW5hZ2VyIHNodXQgZG93bicpO1xuICB9XG59XG4iXX0=
|
|
607
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3NlLWNvbm5lY3Rpb24tbWFuYWdlci5qcyIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2h0dHAvc3NlLWNvbm5lY3Rpb24tbWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDMUMsT0FBTyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQXVCLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0SCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFaEUsT0FBTyxFQUFFLEVBQUUsSUFBSSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFbEMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGVBQWUsRUFBMkIsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RyxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRXpELE1BQU0sTUFBTSxHQUFHLFlBQVksQ0FBQyxhQUFhLENBQUMsQ0FBQztBQTBHM0M7Ozs7Ozs7R0FPRztBQUNILE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLHFFQUFxRSxDQUFDO0FBYXZHOzs7Ozs7Ozs7Ozs7Ozs7OztHQWlCRztBQUNILE1BQU0sT0FBTyxVQUFVO0lBQ2IsT0FBTyxHQUFHLElBQUksR0FBRyxFQUF1QixDQUFDO0lBQ2pEOzsyQ0FFdUM7SUFDL0IsZUFBZSxHQUFHLElBQUksR0FBRyxFQUFrQixDQUFDO0lBQ3BELG1GQUFtRjtJQUNsRSxPQUFPLENBQWtCO0lBQ3pCLG9CQUFvQixDQUFTO0lBQzdCLGVBQWUsQ0FBUztJQUN4QixnQkFBZ0IsQ0FBUztJQUN6QixlQUFlLENBQVM7SUFDakMsZUFBZSxHQUEwQixJQUFJLENBQUM7SUFDdEQsK0RBQStEO0lBQ3ZELEtBQUssQ0FBWTtJQUNSLFlBQVksQ0FBeUI7SUFDdEQsdUZBQXVGO0lBQzlF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ZSxDQUFDLENBQUM7WUFDcEMsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7UUFDOUIsQ0FBQztRQUVELEtBQUssTUFBTSxTQUFTLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQ2pELElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFFLHNCQUFzQixDQUFDLENBQUM7UUFDdkQsQ0FBQztRQUVELHVFQUF1RTtRQUN2RSxLQUFLLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUF5QixDQUFDLENBQUMsQ0FBQztRQUNoRSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRXhCLE1BQU0sQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsQ0FBQztJQUN2QyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHsgcmFuZG9tQnl0ZXMgfSBmcm9tICdub2RlOmNyeXB0byc7XG5pbXBvcnQgeyBjcmVhdGVMb2dnZXIsIHdyaXRlU3NlSGVhZGVycywgdHlwZSBTc2VUaWNrZXRTdG9yZSwgZXJyb3JNZXNzYWdlLCBlbnZJbnQgfSBmcm9tICdAcGlwZWxpbmUtYnVpbGRlci9hcGktY29yZSc7XG5pbXBvcnQgeyBDb3JlQ29uc3RhbnRzIH0gZnJvbSAnQHBpcGVsaW5lLWJ1aWxkZXIvcGlwZWxpbmUtY29yZSc7XG5pbXBvcnQgdHlwZSB7IFJlc3BvbnNlIH0gZnJvbSAnZXhwcmVzcyc7XG5pbXBvcnQgeyB2NyBhcyB1dWlkIH0gZnJvbSAndXVpZCc7XG5pbXBvcnQgdHlwZSB7IFNTRVJlbGF5LCBTU0VSZWxheU1lc3NhZ2UgfSBmcm9tICcuL3NzZS1yZWxheS5qcyc7XG5pbXBvcnQgeyBub3JtYWxpemVSZXF1ZXN0SWQsIFNzZVRpY2tldEJyb2tlciwgdHlwZSBDcmVhdGVUaWNrZXRSZXN1bHQgfSBmcm9tICcuL3NzZS10aWNrZXQtYnJva2VyLmpzJztcbmltcG9ydCB7IGluY0NvdW50ZXIsIHNldEdhdWdlIH0gZnJvbSAnLi4vYXBpL21ldHJpY3MuanMnO1xuXG5jb25zdCBsb2dnZXIgPSBjcmVhdGVMb2dnZXIoJ3NzZS1tYW5hZ2VyJyk7XG5cbi8qKlxuICogRXZlbnQgdHlwZXMgZm9yIFNTRSBsb2dnaW5nXG4gKi9cbmV4cG9ydCB0eXBlIFNTRUV2ZW50VHlwZSA9ICdJTkZPJyB8ICdXQVJOJyB8ICdFUlJPUicgfCAnQ09NUExFVEVEJyB8ICdST0xMQkFDSycgfCAnTUVTU0FHRSc7XG5cbi8qKlxuICogU1NFIHBheWxvYWQgc3RydWN0dXJlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU1NFUGF5bG9hZCB7XG4gIHRzOiBzdHJpbmc7XG4gIHR5cGU6IFNTRUV2ZW50VHlwZTtcbiAgbWVzc2FnZTogc3RyaW5nO1xuICBkYXRhPzogdW5rbm93bjtcbn1cblxuLyoqXG4gKiBTU0UgY2xpZW50IHdpdGggY29ubmVjdGlvbiB0cmFja2luZ1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFNTRUNsaWVudCB7XG4gIGlkOiBzdHJpbmc7XG4gIHJlczogUmVzcG9uc2U7XG4gIGNvbm5lY3RlZEF0OiBudW1iZXI7XG4gIHRpbWVvdXQ6IE5vZGVKUy5UaW1lb3V0O1xuICAvKiogTnVtYmVyIG9mIGNvbnNlY3V0aXZlIGJhY2twcmVzc3VyZSBldmVudHMgKHdyaXRlIHJldHVybmVkIGZhbHNlKS4gKi9cbiAgYmFja3ByZXNzdXJlQ291bnQ6IG51bWJlcjtcbiAgLyoqIE93bmluZyBvcmcgaWQg4oCUIHBvcHVsYXRlZCB3aGVuIHRoZSByZXF1ZXN0IHdhcyBhdXRoZW50aWNhdGVkLiBVc2VkIHRvXG4gICAqICBkZWNyZW1lbnQgdGhlIHBlci1vcmcgY291bnRlciBvbiBkaXNjb25uZWN0IC8gY2xlYW51cC4gKi9cbiAgb3JnSWQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogU1NFIE1hbmFnZXIgY29uZmlndXJhdGlvbiBvcHRpb25zXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU1NFTWFuYWdlck9wdGlvbnMge1xuICAvKiogTWF4aW11bSBjbGllbnRzIGFsbG93ZWQgcGVyIHJlcXVlc3QgSUQgKGRlZmF1bHQ6IDEwKSAqL1xuICBtYXhDbGllbnRzUGVyUmVxdWVzdD86IG51bWJlcjtcbiAgLyoqIENsaWVudCB0aW1lb3V0IGluIG1pbGxpc2Vjb25kcyAoZGVmYXVsdDogMzAgbWludXRlcykgKi9cbiAgY2xpZW50VGltZW91dE1zPzogbnVtYmVyO1xuICAvKiogSW50ZXJ2YWwgZm9yIGNsZWFudXAgY2hlY2tzIGluIG1pbGxpc2Vjb25kcyAoZGVmYXVsdDogNSBtaW51dGVzKSAqL1xuICBjbGVhbnVwSW50ZXJ2YWxNcz86IG51bWJlcjtcbiAgLyoqXG4gICAqIEhhcmQgY2FwIG9uIHRvdGFsIG9wZW4gY29ubmVjdGlvbnMgcGVyIHByb2Nlc3MuIERlZmF1bHRzIHRvIDEwMDAgZnJvbVxuICAgKiBgU1NFX01BWF9UT1RBTF9DTElFTlRTYC4gTmV3IGNvbm5lY3Rpb25zIGJleW9uZCB0aGlzIGFyZSByZWplY3RlZCBhdFxuICAgKiBgYWRkQ2xpZW50KClgLiBUdW5lIHVwIGlmIHlvdXIgc2VydmljZSBzZXJ2ZXMgPiAxMDAwIGNvbmN1cnJlbnQgU1NFXG4gICAqIGRhc2hib2FyZHMsIGJ1dCBiZSBhd2FyZSBOb2RlLmpzIGZkIGxpbWl0cyBkb21pbmF0ZSBhYm92ZSB+NTAwMC5cbiAgICovXG4gIG1heFRvdGFsQ2xpZW50cz86IG51bWJlcjtcbiAgLyoqXG4gICAqIFBlci1vcmcgY2VpbGluZyBvbiBjb25jdXJyZW50IFNTRSBzdHJlYW1zLiBEZWZhdWx0cyB0byA1MCBmcm9tXG4gICAqIGBTU0VfTUFYX0NMSUVOVFNfUEVSX09SR2AuIFByb3RlY3RzIGFnYWluc3Qgb25lIG5vaXN5IG9yZyBjb25zdW1pbmcgdGhlXG4gICAqIHByb2Nlc3Mtd2lkZSBidWRnZXQg4oCUIHdpdGhvdXQgaXQsIGFuIGF1dGhlbnRpY2F0ZWQgdXNlciBjYW4gZmFuIG91dFxuICAgKiB0aG91c2FuZHMgb2Ygc3RyZWFtcyAob25lIHBlciBkYXNoYm9hcmQgLyBsb2cgc3RyZWFtKSBhbmQgc3RhcnZlIG90aGVyXG4gICAqIG9yZ3Mgb2YgY29ubmVjdGlvbiBzbG90cy4gVGhlIGNhcCBpcyBlbmZvcmNlZCBvbmx5IG9uIGBhZGRDbGllbnRgIGNhbGxzXG4gICAqIHRoYXQgY2FycnkgYW4gYG9yZ0lkYDsgc2VydmljZS1pbnRlcm5hbCAvIGFub255bW91cyBTU0UgdHJhZmZpYyBza2lwcyBpdC5cbiAgICovXG4gIG1heENsaWVudHNQZXJPcmc/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBDYXAgb24gbGl2ZSBsb2ctc3RyZWFtIHRpY2tldHMgYWNyb3NzIHRoZSBwcm9jZXNzLCBmb3IgdGhlIERFRkFVTFRcbiAgICogaW4tbWVtb3J5IHRpY2tldCBzdG9yZS4gRGVmYXVsdHMgdG8gMTAwMCBmcm9tIGBTU0VfTUFYX1RPVEFMX1RJQ0tFVFNgLlxuICAgKiBJZ25vcmVkIHdoZW4gYHRpY2tldFN0b3JlYCBpcyBpbmplY3RlZCAodGhlIHN0b3JlIGNhcnJpZXMgaXRzIG93biBjYXBzKS5cbiAgICovXG4gIG1heFRvdGFsVGlja2V0cz86IG51bWJlcjtcbiAgLyoqXG4gICAqIFBlci1vcmcgY2FwIG9uIGxpdmUgbG9nLXN0cmVhbSB0aWNrZXRzLCBmb3IgdGhlIERFRkFVTFQgaW4tbWVtb3J5IHRpY2tldFxuICAgKiBzdG9yZS4gRGVmYXVsdHMgdG8gMTAgZnJvbSBgU1NFX01BWF9USUNLRVRTX1BFUl9PUkdgLiBJZ25vcmVkIHdoZW5cbiAgICogYHRpY2tldFN0b3JlYCBpcyBpbmplY3RlZC5cbiAgICovXG4gIG1heFRpY2tldHNQZXJPcmc/OiBudW1iZXI7XG4gIC8qKiBUaWNrZXQgVFRMIGluIG1zIGZvciB0aGUgZGVmYXVsdCBzdG9yZSAoZGVmYXVsdDogYFNTRV9USUNLRVRfVFRMX01TYCBmcm9tIGFwaS1jb3JlKS4gKi9cbiAgdGlja2V0VHRsTXM/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBUaWNrZXQgKyBzdHJlYW0tb3duZXJzaGlwIGJhY2tlbmQgZm9yIHRoZSBzdWJqZWN0LWJvdW5kIGxvZyBzdHJlYW0uIERlZmF1bHRzXG4gICAqIHRvIGFuIGluLW1lbW9yeSBzdG9yZSAoc2luZ2xlIHJlcGxpY2Egb25seSksIGJ1aWx0IG9uIGZpcnN0IHVzZS4gSW5qZWN0IGFuXG4gICAqIGFwaS1jb3JlIGBjcmVhdGVFbnZTc2VUaWNrZXRTdG9yZSguLi4pYCBzbyBtaW50L3JlZGVlbSBhbmQgc3RyZWFtIG93bmVyc2hpcFxuICAgKiB3b3JrIGFjcm9zcyBwb2RzLlxuICAgKi9cbiAgdGlja2V0U3RvcmU/OiBTc2VUaWNrZXRTdG9yZTtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhpcyBzZXJ2aWNlIHN0cmVhbXMgcGVyLXJlcXVlc3QgbG9ncyAoYGN0eC5sb2dgIGZyYW1lcyBrZXllZCBieVxuICAgKiByZXF1ZXN0SWQsIHRoZSBgL2xvZ3NgIGNoYW5uZWwpLiBEZWZhdWx0IGZhbHNlOiBgY3R4LmxvZ2AgdGhlbiBvbmx5IHdyaXRlc1xuICAgKiB0byB0aGUgbG9nZ2VyLCBzbyBhIHNlcnZpY2UgdGhhdCBuZXZlciBzZXJ2ZXMgYSBsb2cgc3RyZWFtIGRvZXNuJ3QgcHVzaFxuICAgKiBldmVyeSBsb2cgbGluZSB0aHJvdWdoIFNTRSAoYW5kIG92ZXIgUmVkaXMpLlxuICAgKi9cbiAgbG9nU3RyZWFtPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFRUTCBmb3IgYSBzdHJlYW0tb3duZXJzaGlwIGJpbmRpbmcgKGRlZmF1bHQgMWgpLiBMb25nIGVub3VnaCB0byBvdXRsaXZlIGFcbiAgICogYnVpbGQ7IHRoZSBwcm9kdWNlciByZS1iaW5kcyBhcyBuZWVkZWQuXG4gICAqL1xuICBzdHJlYW1Pd25lclR0bE1zPzogbnVtYmVyO1xuICAvKipcbiAgICogQ3Jvc3MtcG9kIGZhbi1vdXQgYnVzIGZvciBgc2VuZCgpYC9gYnJvYWRjYXN0KClgLCB3aXJlZCBhdCBjb25zdHJ1Y3Rpb24uXG4gICAqIFdoZW4gb21pdHRlZCAoYW5kIG5vIGByZWxheUZhY3RvcnlgIGlzIGVuYWJsZWQpIGRlbGl2ZXJ5IGlzIExPQ0FMLU9OTFkuXG4gICAqIERlZ3JhZGVzIHRvIGxvY2FsLW9ubHkgZHVyaW5nIGEgUmVkaXMgb3V0YWdlLlxuICAgKi9cbiAgcmVsYXk/OiBTU0VSZWxheTtcbiAgLyoqXG4gICAqIEJ1aWxkcyB0aGUgcmVsYXkgb24gZGVtYW5kIOKAlCBzZWUge0BsaW5rIFNTRU1hbmFnZXIuZW5hYmxlUmVsYXl9LiBMZXRzIGFcbiAgICogc2VydmljZSBvcGVuIGEgcmVsYXkgY29ubmVjdGlvbiBvbmx5IHdoZW4gaXQgYWN0dWFsbHkgaGFzIGEgc3RyZWFtaW5nXG4gICAqIGNoYW5uZWwgKHRoZSBsb2cgc3RyZWFtLCBvciBhbiBvcmcta2V5ZWQgY2hhbm5lbCkuIFJldHVybmluZyBudWxsIChSZWRpc1xuICAgKiBub3QgY29uZmlndXJlZCkga2VlcHMgbG9jYWwtb25seSBkZWxpdmVyeS5cbiAgICovXG4gIHJlbGF5RmFjdG9yeT86ICgpID0+IFNTRVJlbGF5IHwgbnVsbDtcbn1cblxuLyoqXG4gKiBBIGJ1aWxkLWxvZyBzdHJlYW0gc3ViamVjdCBpZDogZWl0aGVyIGEgZGFzaGVkIFVVSUQgKGFwaS1zZXJ2ZXIncyBgdXVpZCgpYClcbiAqIG9yIG5naW54J3MgYCRyZXF1ZXN0X2lkYCDigJQgMTYgcmFuZG9tIGJ5dGVzIHJlbmRlcmVkIGFzIDMyIGhleCBjaGFycyB3aXRoIE5PXG4gKiBkYXNoZXMuIEFjY2VwdCBib3RoIGJ5IG1ha2luZyB0aGUgZ3JvdXAgc2VwYXJhdG9ycyBvcHRpb25hbDsgc3RpbGwgc3RyaWN0bHlcbiAqIDMyIGhleCBjaGFycyBzbyBpdCBjYW4ndCBjYXJyeSBhbiBpbmplY3Rpb24gLyBwYXRoLXRyYXZlcnNhbCBwYXlsb2FkIGludG8gdGhlXG4gKiBTU0Ugc3ViamVjdC4gU2hhcmVkIGJ5IHRoZSB0aWNrZXQtbWludCByb3V0ZSBhbmQgdGhlIHN0cmVhbSBtaWRkbGV3YXJlIHNvXG4gKiBib3RoIHZhbGlkYXRlIHRoZSBzdWJqZWN0IGlkZW50aWNhbGx5LlxuICovXG5leHBvcnQgY29uc3QgU1NFX1JFUVVFU1RfSURfUkUgPSAvXlswLTlhLWZdezh9LT9bMC05YS1mXXs0fS0/WzAtOWEtZl17NH0tP1swLTlhLWZdezR9LT9bMC05YS1mXXsxMn0kL2k7XG5cbmV4cG9ydCB0eXBlIHsgQ3JlYXRlVGlja2V0UmVzdWx0IH07XG5cbi8qKlxuICogU1NFIE1hbmFnZXIgc3RhdGlzdGljc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFNTRU1hbmFnZXJTdGF0cyB7XG4gIHRvdGFsUmVxdWVzdHM6IG51bWJlcjtcbiAgdG90YWxDbGllbnRzOiBudW1iZXI7XG4gIG9sZGVzdENvbm5lY3Rpb25NczogbnVtYmVyIHwgbnVsbDtcbn1cblxuLyoqXG4gKiBTU0UgaGVscGVyIGNsYXNzIHdpdGggbWVtb3J5IGxlYWsgcHJvdGVjdGlvblxuICpcbiAqIEZlYXR1cmVzOlxuICogLSBDbGllbnQgbGltaXRzIHBlciByZXF1ZXN0IElEXG4gKiAtIEF1dG9tYXRpYyB0aW1lb3V0IGZvciBpZGxlIGNvbm5lY3Rpb25zXG4gKiAtIFBlcmlvZGljIGNsZWFudXAgb2Ygc3RhbGUgY29ubmVjdGlvbnNcbiAqIC0gQ29ubmVjdGlvbiBzdGF0aXN0aWNzXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IHNzZU1hbmFnZXIgPSBuZXcgU1NFTWFuYWdlcih7IG1heENsaWVudHNQZXJSZXF1ZXN0OiA1IH0pO1xuICogYXBwLmdldCgnL2xvZ3MvOnJlcXVlc3RJZCcsIHNzZU1hbmFnZXIubWlkZGxld2FyZSgpKTtcbiAqXG4gKiAvLyBTZW5kIGV2ZW50c1xuICogc3NlTWFuYWdlci5zZW5kKCdyZXF1ZXN0LTEyMycsICdJTkZPJywgJ1Byb2Nlc3NpbmcuLi4nKTtcbiAqIGBgYFxuICovXG5leHBvcnQgY2xhc3MgU1NFTWFuYWdlciB7XG4gIHByaXZhdGUgY2xpZW50cyA9IG5ldyBNYXA8c3RyaW5nLCBTU0VDbGllbnRbXT4oKTtcbiAgLyoqIFBlci1vcmcgb3Blbi1jbGllbnQgY291bnRlcnMuIERlY3JlbWVudGVkIG9uIHJlbW92ZUNsaWVudC9jbGVhbnVwIHNvIHRoZVxuICAgKiAgbWFwIG1pcnJvcnMgYGNsaWVudHNbXS5vcmdJZGAgY291bnRzIGF0IGFsbCB0aW1lcy4gT3JncyByZWFjaCB6ZXJvIGFyZVxuICAgKiAgZGVsZXRlZCB0byBrZWVwIHRoZSBtYXAgYm91bmRlZC4gKi9cbiAgcHJpdmF0ZSBvcmdDbGllbnRDb3VudHMgPSBuZXcgTWFwPHN0cmluZywgbnVtYmVyPigpO1xuICAvKiogVGlja2V0IG1pbnRpbmcgLyByZWRlbXB0aW9uICsgc3RyZWFtIG93bmVyc2hpcCAoc2VlIC4vc3NlLXRpY2tldC1icm9rZXIudHMpLiAqL1xuICBwcml2YXRlIHJlYWRvbmx5IHRpY2tldHM6IFNzZVRpY2tldEJyb2tlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBtYXhDbGllbnRzUGVyUmVxdWVzdDogbnVtYmVyO1xuICBwcml2YXRlIHJlYWRvbmx5IG1heFRvdGFsQ2xpZW50czogbnVtYmVyO1xuICBwcml2YXRlIHJlYWRvbmx5IG1heENsaWVudHNQZXJPcmc6IG51bWJlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBjbGllbnRUaW1lb3V0TXM6IG51bWJlcjtcbiAgcHJpdmF0ZSBjbGVhbnVwSW50ZXJ2YWw6IE5vZGVKUy5UaW1lb3V0IHwgbnVsbCA9IG51bGw7XG4gIC8qKiBDcm9zcy1wb2QgZmFuLW91dCBidXMgKHVuZGVmaW5lZCDih5IgbG9jYWwtb25seSBkZWxpdmVyeSkuICovXG4gIHByaXZhdGUgcmVsYXk/OiBTU0VSZWxheTtcbiAgcHJpdmF0ZSByZWFkb25seSByZWxheUZhY3Rvcnk/OiAoKSA9PiBTU0VSZWxheSB8IG51bGw7XG4gIC8qKiBXaGV0aGVyIGBjdHgubG9nYCBmcmFtZXMgYXJlIHN0cmVhbWVkIChzZWUge0BsaW5rIFNTRU1hbmFnZXJPcHRpb25zLmxvZ1N0cmVhbX0pLiAqL1xuICByZWFkb25seSBsb2dTdHJlYW1FbmFibGVkOiBib29sZWFuO1xuICAvKiogVGhpcyBtYW5hZ2VyIGluc3RhbmNlJ3MgaWQg4oCUIHRhZ3MgcmVsYXllZCBmcmFtZXMgc28gd2UgaWdub3JlIG91ciBvd24gZWNoby4gKi9cbiAgcHJpdmF0ZSByZWFkb25seSBub2RlSWQgPSByYW5kb21CeXRlcyg4KS50b1N0cmluZygnaGV4Jyk7XG5cbiAgY29uc3RydWN0b3Iob3B0aW9uczogU1NFTWFuYWdlck9wdGlvbnMgPSB7fSkge1xuICAgIHRoaXMubWF4Q2xpZW50c1BlclJlcXVlc3QgPSBvcHRpb25zLm1heENsaWVudHNQZXJSZXF1ZXN0ID8/IGVudkludCgnU1NFX01BWF9DTElFTlRTX1BFUl9SRVFVRVNUJywgMTAsIHsgbWluOiAxIH0pO1xuICAgIHRoaXMubWF4VG90YWxDbGllbnRzID0gb3B0aW9ucy5tYXhUb3RhbENsaWVudHMgPz8gZW52SW50KCdTU0VfTUFYX1RPVEFMX0NMSUVOVFMnLCAxMDAwLCB7IG1pbjogMSB9KTtcbiAgICB0aGlzLm1heENsaWVudHNQZXJPcmcgPSBvcHRpb25zLm1heENsaWVudHNQZXJPcmcgPz8gZW52SW50KCdTU0VfTUFYX0NMSUVOVFNfUEVSX09SRycsIDUwLCB7IG1pbjogMSB9KTtcbiAgICB0aGlzLnRpY2tldHMgPSBuZXcgU3NlVGlja2V0QnJva2VyKHtcbiAgICAgIHN0b3JlOiBvcHRpb25zLnRpY2tldFN0b3JlLFxuICAgICAgbWF4VG90YWw6IG9wdGlvbnMubWF4VG90YWxUaWNrZXRzLFxuICAgICAgbWF4UGVyT3JnOiBvcHRpb25zLm1heFRpY2tldHNQZXJPcmcsXG4gICAgICB0dGxNczogb3B0aW9ucy50aWNrZXRUdGxNcyxcbiAgICAgIG93bmVyVHRsTXM6IG9wdGlvbnMuc3RyZWFtT3duZXJUdGxNcyxcbiAgICB9KTtcbiAgICB0aGlzLmxvZ1N0cmVhbUVuYWJsZWQgPSBvcHRpb25zLmxvZ1N0cmVhbSA/PyBmYWxzZTtcbiAgICB0aGlzLmNsaWVudFRpbWVvdXRNcyA9IG9wdGlvbnMuY2xpZW50VGltZW91dE1zID8/IGVudkludCgnU1NFX0NMSUVOVF9USU1FT1VUX01TJywgMV84MDBfMDAwLCB7IG1pbjogMSB9KTsgLy8gMzAgbWludXRlc1xuXG4gICAgY29uc3QgY2xlYW51cEludGVydmFsTXMgPSBvcHRpb25zLmNsZWFudXBJbnRlcnZhbE1zID8/IGVudkludCgnU1NFX0NMRUFOVVBfSU5URVJWQUxfTVMnLCAzMDBfMDAwLCB7IG1pbjogMSB9KTsgLy8gNSBtaW51dGVzXG4gICAgdGhpcy5zdGFydENsZWFudXBJbnRlcnZhbChjbGVhbnVwSW50ZXJ2YWxNcyk7XG5cbiAgICAvLyBXaXJlIHRoZSBjcm9zcy1wb2QgcmVsYXk6IHN1YnNjcmliZSBvbmNlIG9uIHN0YXJ0dXAgc28gZnJhbWVzIFBVQkxJU0hFRCBieVxuICAgIC8vIGFueSBvdGhlciBwb2QgYXJlIHJlLWVtaXR0ZWQgdG8gVEhJUyBwb2QncyBsb2NhbCBjbGllbnRzLiBGcmFtZXMgd2VcbiAgICAvLyBwdWJsaXNoZWQgb3Vyc2VsdmVzIGFyZSBpZ25vcmVkIChvcmlnaW4gPT09IG5vZGVJZCkg4oCUIHdlIGFscmVhZHkgd3JvdGUgdGhlbVxuICAgIC8vIGxvY2FsbHkuIEZhaWwtc2FmZTogbm8gcmVsYXkg4oeSIGxvY2FsLW9ubHkgZGVsaXZlcnkgKHNpbmdsZS1yZXBsaWNhIGRlZmF1bHQpLlxuICAgIHRoaXMucmVsYXlGYWN0b3J5ID0gb3B0aW9ucy5yZWxheUZhY3Rvcnk7XG4gICAgaWYgKG9wdGlvbnMucmVsYXkpIHRoaXMuYXR0YWNoUmVsYXkob3B0aW9ucy5yZWxheSk7XG4gIH1cblxuICBwcml2YXRlIGF0dGFjaFJlbGF5KHJlbGF5OiBTU0VSZWxheSk6IHZvaWQge1xuICAgIHRoaXMucmVsYXkgPSByZWxheTtcbiAgICByZWxheS5zdWJzY3JpYmUoKG1zZykgPT4gdGhpcy5vblJlbGF5TWVzc2FnZShtc2cpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUdXJuIG9uIGNyb3NzLXBvZCBkZWxpdmVyeSB1c2luZyB0aGUgY29uZmlndXJlZCBgcmVsYXlGYWN0b3J5YC4gSWRlbXBvdGVudDtcbiAgICogYSBuby1vcCB3aGVuIGEgcmVsYXkgaXMgYWxyZWFkeSB3aXJlZCBvciBubyBmYWN0b3J5IHdhcyBnaXZlbiwgYW5kIHdoZW4gdGhlXG4gICAqIGZhY3RvcnkgcmV0dXJucyBudWxsIChSZWRpcyBub3QgY29uZmlndXJlZCDihpIgbG9jYWwtb25seSBkZWxpdmVyeSkuXG4gICAqL1xuICBlbmFibGVSZWxheSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yZWxheSB8fCAhdGhpcy5yZWxheUZhY3RvcnkpIHJldHVybjtcbiAgICBjb25zdCByZWxheSA9IHRoaXMucmVsYXlGYWN0b3J5KCk7XG4gICAgaWYgKHJlbGF5KSB0aGlzLmF0dGFjaFJlbGF5KHJlbGF5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGUgYSBmcmFtZSByZWNlaXZlZCBmcm9tIGFub3RoZXIgcG9kIHZpYSB0aGUgcmVsYXkuIFdlIGFscmVhZHkgZGVsaXZlcmVkXG4gICAqIG91ciBPV04gZnJhbWVzIHRvIGxvY2FsIGNsaWVudHMgYmVmb3JlIHB1Ymxpc2hpbmcsIHNvIGlnbm9yZSBvdXIgZWNoby4gQVxuICAgKiBgc2VuZGAgcmUtZW1pdHMgdG8gdGhlIHN1YmplY3QncyBsb2NhbCBjbGllbnRzOyBhIGBicm9hZGNhc3RgIHRvIGFsbCBvZiB0aGVtLlxuICAgKiBQdXJlbHkgbG9jYWwg4oCUIG5ldmVyIHJlLXB1Ymxpc2hlcywgc28gdGhlcmUgaXMgbm8gZmFuLW91dCBsb29wLlxuICAgKi9cbiAgcHJpdmF0ZSBvblJlbGF5TWVzc2FnZShtc2c6IFNTRVJlbGF5TWVzc2FnZSk6IHZvaWQge1xuICAgIGlmICghbXNnIHx8IG1zZy5vcmlnaW4gPT09IHRoaXMubm9kZUlkKSByZXR1cm47XG4gICAgaWYgKG1zZy5raW5kID09PSAnYnJvYWRjYXN0Jykge1xuICAgICAgdGhpcy5icm9hZGNhc3RMb2NhbChtc2cucGF5bG9hZCk7XG4gICAgfSBlbHNlIGlmIChtc2cucmVxdWVzdElkKSB7XG4gICAgICB0aGlzLnNlbmRMb2NhbChtc2cucmVxdWVzdElkLCBtc2cucGF5bG9hZCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIFRvdGFsIG9wZW4gY29ubmVjdGlvbnMgYWNyb3NzIGFsbCByZXF1ZXN0cy4gKi9cbiAgcHJpdmF0ZSB0b3RhbENsaWVudHMoKTogbnVtYmVyIHtcbiAgICBsZXQgbiA9IDA7XG4gICAgZm9yIChjb25zdCBjbGllbnRzIG9mIHRoaXMuY2xpZW50cy52YWx1ZXMoKSkgbiArPSBjbGllbnRzLmxlbmd0aDtcbiAgICByZXR1cm4gbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBQdWJsaXNoIHRoZSBjdXJyZW50IGxpdmUtY29ubmVjdGlvbiBjb3VudCBhcyBhIGdhdWdlIHNvIG9uLWNhbGwgY2FuIHNlZSBTU0VcbiAgICogc2F0dXJhdGlvbiAoYXBwcm9hY2ggdG8gdGhlIHBlci1wcm9jZXNzIGNhcCkgb24gYSBkYXNoYm9hcmQsIG5vdCBvbmx5IGluXG4gICAqIGBnZXRTdGF0cygpYC9sb2dzLiBDYWxsZWQgYWZ0ZXIgZXZlcnkgYWRkL3JlbW92ZS9cbiAgICogY2xvc2UvY2xlYW51cC4gQ2hlYXAgKE8oUikpOyBtZXRyaWMgaGVscGVycyBuZXZlciB0aHJvdy5cbiAgICovXG4gIHByaXZhdGUgdXBkYXRlQWN0aXZlR2F1Z2UoKTogdm9pZCB7XG4gICAgc2V0R2F1Z2UoJ3NzZV9hY3RpdmVfY29ubmVjdGlvbnMnLCB7fSwgdGhpcy50b3RhbENsaWVudHMoKSk7XG4gIH1cblxuICAvKiogQ3VycmVudCBvcGVuLXN0cmVhbSBjb3VudCBmb3IgYW4gb3JnICgwIGlmIHVuc2VlbikuICovXG4gIGdldE9yZ0NsaWVudENvdW50KG9yZ0lkOiBzdHJpbmcpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLm9yZ0NsaWVudENvdW50cy5nZXQob3JnSWQpID8/IDA7XG4gIH1cblxuICAvKipcbiAgICogUmVjb3JkIHRoZSBvcmcgdGhhdCBPV05TIGEgc3RyZWFtIHN1YmplY3QsIHNvIHRpY2tldCBtaW50aW5nIGNhbiByZWZ1c2UgYVxuICAgKiBjcm9zcy10ZW5hbnQgbWludC4gRGVsZWdhdGVzIHRvIHRoZSB0aWNrZXQgYnJva2VyLlxuICAgKi9cbiAgYXN5bmMgYmluZFN0cmVhbU93bmVyKHJlcXVlc3RJZDogc3RyaW5nLCBvcmdJZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy50aWNrZXRzLmJpbmRTdHJlYW1Pd25lcihyZXF1ZXN0SWQsIG9yZ0lkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNaW50IGEgc2hvcnQtbGl2ZWQsIHNpbmdsZS11c2UgdGlja2V0IGJvdW5kIHRvIGBvcmdJZGAgQU5EIHRoaXMgc3RyZWFtXG4gICAqIHN1YmplY3Qg4oCUIGhvdyBhIGJyb3dzZXIgb3BlbnMgYW4gRXZlbnRTb3VyY2Ugd2l0aG91dCBwdXR0aW5nIGl0cyBKV1QgaW4gYVxuICAgKiBxdWVyeSBzdHJpbmcuIERlbGVnYXRlcyB0byB0aGUgdGlja2V0IGJyb2tlciwgd2hpY2ggb3ducyB0aGUgb3duZXJzaGlwIGFuZFxuICAgKiBjYXAgcnVsZXMuXG4gICAqL1xuICBhc3luYyBjcmVhdGVUaWNrZXQob3JnSWQ6IHN0cmluZywgcmVxdWVzdElkOiBzdHJpbmcpOiBQcm9taXNlPENyZWF0ZVRpY2tldFJlc3VsdD4ge1xuICAgIHJldHVybiB0aGlzLnRpY2tldHMuY3JlYXRlVGlja2V0KG9yZ0lkLCByZXF1ZXN0SWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlIGFuZCBDT05TVU1FIGEgdGlja2V0IGZvciBhIHNwZWNpZmljIHN0cmVhbSBzdWJqZWN0IChzaW5nbGUtdXNlLFxuICAgKiBzdWJqZWN0LWJvdW5kKS4gRGVsZWdhdGVzIHRvIHRoZSB0aWNrZXQgYnJva2VyLlxuICAgKi9cbiAgYXN5bmMgY29uc3VtZVRpY2tldCh0aWNrZXRJZDogc3RyaW5nLCByZXF1ZXN0SWQ6IHN0cmluZyk6IFByb21pc2U8eyBvcmdJZDogc3RyaW5nIH0gfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMudGlja2V0cy5jb25zdW1lVGlja2V0KHRpY2tldElkLCByZXF1ZXN0SWQpO1xuICB9XG5cblxuICAvKipcbiAgICogQWRkcyBhIGNsaWVudCB0byB0aGUgU1NFIG1hbmFnZXJcbiAgICpcbiAgICogQHBhcmFtIHJlcXVlc3RJZCAtIFVuaXF1ZSByZXF1ZXN0IElEXG4gICAqIEBwYXJhbSByZXMgLSBFeHByZXNzIFJlc3BvbnNlIG9iamVjdFxuICAgKiBAcGFyYW0gb3JnSWQgLSBBdXRoZW50aWNhdGVkIG9yZyBpZCAob3B0aW9uYWwpLiBXaGVuIHNldCwgZW5mb3JjZXMgdGhlXG4gICAqICAgcGVyLW9yZyBjYXAgYW5kIHRoZSBjb3VudGVyIGlzIGRlY3JlbWVudGVkIG9uIGRpc2Nvbm5lY3QvY2xlYW51cC5cbiAgICogQHBhcmFtIG1heENsaWVudHNGb3JTdWJqZWN0IC0gUGVyLXN1YmplY3QgY2FwIG92ZXJyaWRlIChkZWZhdWx0XG4gICAqICAgYG1heENsaWVudHNQZXJSZXF1ZXN0YCkuIEFuIG9yZy1rZXllZCBjaGFubmVsJ3Mgc3ViamVjdCBJUyB0aGUgb3JnLCBzbyBpdFxuICAgKiAgIG11c3Qgbm90IGluaGVyaXQgdGhlIHNtYWxsIHBlci1idWlsZC1yZXF1ZXN0IGNhcCDigJQgc2VlIHtAbGluayBhZGRPcmdDbGllbnR9LlxuICAgKiBAcmV0dXJucyB0cnVlIGlmIGNsaWVudCB3YXMgYWRkZWQsIGZhbHNlIGlmIHJlamVjdGVkIChsaW1pdCByZWFjaGVkKVxuICAgKi9cbiAgYWRkQ2xpZW50KHJlcXVlc3RJZDogc3RyaW5nLCByZXM6IFJlc3BvbnNlLCBvcmdJZD86IHN0cmluZywgbWF4Q2xpZW50c0ZvclN1YmplY3Q6IG51bWJlciA9IHRoaXMubWF4Q2xpZW50c1BlclJlcXVlc3QpOiBib29sZWFuIHtcbiAgICAvLyBOb3JtYWxpemUgdGhlIG1hcCBrZXk6IHRoZSBzdWJqZWN0IGlkIGlzIGFsbG93ZWQgaW4gdHdvIGZvcm1zIChkYXNoZWRcbiAgICAvLyBhcGktc2VydmVyIHV1aWQgdnMgdW5kYXNoZWQgbmdpbnggJHJlcXVlc3RfaWQpLCBhbmQgYSBwcm9kdWNlci9jb25zdW1lciB0aGF0XG4gICAgLy8gcmVuZGVyIGl0IGRpZmZlcmVudGx5IHdvdWxkIG90aGVyd2lzZSBrZXkgZGlmZmVyZW50IE1hcCBlbnRyaWVzIOKAlCB0aGUgY2xpZW50XG4gICAgLy8gcmVnaXN0ZXJzIHVuZGVyIG9uZSBhbmQgZXZlcnkgc2VuZCgpL3JlbGF5IHdyaXRlcyB0byBhbm90aGVyLCBkcm9wcGluZyBhbGxcbiAgICAvLyBmcmFtZXMuIE5vcm1hbGl6aW5nIGhlcmUgKGFuZCBpbiBzZW5kL3NlbmRMb2NhbC9jbG9zZVJlcXVlc3QvZXRjLikgdW5pZmllcyB0aGVtLlxuICAgIHJlcXVlc3RJZCA9IG5vcm1hbGl6ZVJlcXVlc3RJZChyZXF1ZXN0SWQpO1xuICAgIGNvbnN0IGV4aXN0aW5nID0gdGhpcy5jbGllbnRzLmdldChyZXF1ZXN0SWQpIHx8IFtdO1xuXG4gICAgLy8gQ2hlY2sgY2xpZW50IGxpbWl0XG4gICAgaWYgKGV4aXN0aW5nLmxlbmd0aCA+PSBtYXhDbGllbnRzRm9yU3ViamVjdCkge1xuICAgICAgbG9nZ2VyLndhcm4oYENsaWVudCBsaW1pdCByZWFjaGVkIGZvciByZXF1ZXN0ICR7cmVxdWVzdElkfSAobWF4OiAke21heENsaWVudHNGb3JTdWJqZWN0fSlgKTtcbiAgICAgIGluY0NvdW50ZXIoJ3NzZV9jb25uZWN0aW9uX3JlamVjdGVkX3RvdGFsJywgeyByZWFzb246ICdyZXF1ZXN0LWxpbWl0JyB9KTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBQcm9jZXNzLXdpZGUgY2FwOiBwcm90ZWN0cyBmZCB0YWJsZSArIG1lbW9yeSBmcm9tIHJ1bmF3YXkgZGFzaGJvYXJkcy5cbiAgICBpZiAodGhpcy50b3RhbENsaWVudHMoKSA+PSB0aGlzLm1heFRvdGFsQ2xpZW50cykge1xuICAgICAgbG9nZ2VyLndhcm4oYFRvdGFsIFNTRSBjbGllbnQgY2FwIHJlYWNoZWQgKG1heDogJHt0aGlzLm1heFRvdGFsQ2xpZW50c30pOyByZWplY3RpbmcgbmV3IGNvbm5lY3Rpb25gKTtcbiAgICAgIGluY0NvdW50ZXIoJ3NzZV9jb25uZWN0aW9uX3JlamVjdGVkX3RvdGFsJywgeyByZWFzb246ICd0b3RhbC1jYXAnIH0pO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIFBlci1vcmcgY2FwOiBwcmV2ZW50cyBvbmUgbm9pc3kgb3JnIGZyb20gbW9ub3BvbGl6aW5nIHByb2Nlc3Mtd2lkZVxuICAgIC8vIHNsb3RzLiBFbmZvcmNlZCBvbmx5IHdoZW4gb3JnSWQgaXMga25vd24g4oCUIHNlcnZpY2UtaW50ZXJuYWwgLyBhbm9ueW1vdXNcbiAgICAvLyBzdHJlYW1zIHRoYXQgbmV2ZXIgaWRlbnRpZnkgd2l0aCBhbiBvcmdJZCBzdGF5IHN1YmplY3QgdG8gdGhlIGdsb2JhbFxuICAgIC8vIGNlaWxpbmdzIGFib3ZlLiBSZXNlcnZlIGF0b21pY2FsbHkgYmVmb3JlIGluc2VydCBzbyB0d28gY29uY3VycmVudFxuICAgIC8vIHJlcXVlc3RzIGF0IHRoZSBsaW1pdCBjYW4ndCBib3RoIHN1Y2NlZWQuXG4gICAgaWYgKG9yZ0lkKSB7XG4gICAgICBjb25zdCBvcmdDdXJyZW50ID0gdGhpcy5vcmdDbGllbnRDb3VudHMuZ2V0KG9yZ0lkKSA/PyAwO1xuICAgICAgaWYgKG9yZ0N1cnJlbnQgPj0gdGhpcy5tYXhDbGllbnRzUGVyT3JnKSB7XG4gICAgICAgIGxvZ2dlci53YXJuKGBQZXItb3JnIFNTRSBjbGllbnQgY2FwIHJlYWNoZWQgZm9yICR7b3JnSWR9IChtYXg6ICR7dGhpcy5tYXhDbGllbnRzUGVyT3JnfSk7IHJlamVjdGluZyBuZXcgY29ubmVjdGlvbmApO1xuICAgICAgICBpbmNDb3VudGVyKCdzc2VfY29ubmVjdGlvbl9yZWplY3RlZF90b3RhbCcsIHsgcmVhc29uOiAnb3JnLWNhcCcgfSk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHRoaXMub3JnQ2xpZW50Q291bnRzLnNldChvcmdJZCwgb3JnQ3VycmVudCArIDEpO1xuICAgIH1cblxuICAgIC8vIENyZWF0ZSB0aW1lb3V0IGZvciB0aGlzIGNsaWVudFxuICAgIGNvbnN0IGNsaWVudElkID0gdXVpZCgpO1xuICAgIGNvbnN0IHRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGxvZ2dlci5kZWJ1ZyhgQ2xpZW50ICR7Y2xpZW50SWR9IHRpbWVkIG91dCBmb3IgcmVxdWVzdCAke3JlcXVlc3RJZH1gKTtcbiAgICAgIHRoaXMucmVtb3ZlQ2xpZW50KHJlcXVlc3RJZCwgY2xpZW50SWQpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmVzLmVuZCgpO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGxvZ2dlci5kZWJ1ZygnUmVzcG9uc2UgYWxyZWFkeSBjbG9zZWQgb24gdGltZW91dCcsIHsgcmVxdWVzdElkLCBjbGllbnRJZCwgZXJyb3I6IGVycm9yTWVzc2FnZShlcnIpIH0pO1xuICAgICAgfVxuICAgIH0sIHRoaXMuY2xpZW50VGltZW91dE1zKTtcblxuICAgIGNvbnN0IGNsaWVudDogU1NFQ2xpZW50ID0ge1xuICAgICAgaWQ6IGNsaWVudElkLFxuICAgICAgcmVzLFxuICAgICAgY29ubmVjdGVkQXQ6IERhdGUubm93KCksXG4gICAgICB0aW1lb3V0LFxuICAgICAgYmFja3ByZXNzdXJlQ291bnQ6IDAsXG4gICAgICBvcmdJZCxcbiAgICB9O1xuXG4gICAgLy8gSGFuZGxlIGRpc2Nvbm5lY3Rpb25cbiAgICByZXMub24oJ2Nsb3NlJywgKCkgPT4ge1xuICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgICAgdGhpcy5yZW1vdmVDbGllbnQocmVxdWVzdElkLCBjbGllbnRJZCk7XG4gICAgfSk7XG5cbiAgICByZXMub24oJ2Vycm9yJywgKGVycikgPT4ge1xuICAgICAgbG9nZ2VyLmVycm9yKGBTU0UgY2xpZW50IGVycm9yIGZvciByZXF1ZXN0ICR7cmVxdWVzdElkfTpgLCBlcnIpO1xuICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgICAgdGhpcy5yZW1vdmVDbGllbnQocmVxdWVzdElkLCBjbGllbnRJZCk7XG4gICAgfSk7XG5cbiAgICBleGlzdGluZy5wdXNoKGNsaWVudCk7XG4gICAgdGhpcy5jbGllbnRzLnNldChyZXF1ZXN0SWQsIGV4aXN0aW5nKTtcbiAgICBpbmNDb3VudGVyKCdzc2VfY29ubmVjdGlvbnNfdG90YWwnLCB7fSk7XG4gICAgdGhpcy51cGRhdGVBY3RpdmVHYXVnZSgpO1xuXG4gICAgbG9nZ2VyLmRlYnVnKGBDbGllbnQgJHtjbGllbnRJZH0gY29ubmVjdGVkIGZvciByZXF1ZXN0ICR7cmVxdWVzdElkfSAodG90YWw6ICR7ZXhpc3RpbmcubGVuZ3RofSlgKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBdHRhY2ggYSBjbGllbnQgdG8gYW4gT1JHLWtleWVkIHN0cmVhbSAodGhlIG9yZyBpcyB0aGUgc3ViamVjdCkuIENvdW50c1xuICAgKiBhZ2FpbnN0IHRoZSBwZXItb3JnIGNhcCwgYW5kIHRoZSBvcmcg4oCUIG5vdCB0aGUgcGVyLXJlcXVlc3QgY2FwIOKAlCBib3VuZHMgaG93XG4gICAqIG1hbnkgc3RyZWFtcyBzaGFyZSB0aGUgc3ViamVjdC5cbiAgICovXG4gIGFkZE9yZ0NsaWVudChvcmdJZDogc3RyaW5nLCByZXM6IFJlc3BvbnNlKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuYWRkQ2xpZW50KG9yZ0lkLCByZXMsIG9yZ0lkLCB0aGlzLm1heENsaWVudHNQZXJPcmcpO1xuICB9XG5cbiAgLyoqIERyb3Agb25lIGZyb20gdGhlIHBlci1vcmcgY291bnRlci4gSWRlbXBvdGVudDogYSBjb3VudGVyIGF0IDAgc3RheXMgYXQgMFxuICAgKiAgYW5kIHRoZSBvcmcga2V5IGlzIHJlbW92ZWQgZnJvbSB0aGUgbWFwLiAqL1xuICBwcml2YXRlIGRlY3JlbWVudE9yZ0NvdW50KG9yZ0lkPzogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCFvcmdJZCkgcmV0dXJuO1xuICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLm9yZ0NsaWVudENvdW50cy5nZXQob3JnSWQpID8/IDA7XG4gICAgaWYgKGN1cnJlbnQgPD0gMSkgdGhpcy5vcmdDbGllbnRDb3VudHMuZGVsZXRlKG9yZ0lkKTtcbiAgICBlbHNlIHRoaXMub3JnQ2xpZW50Q291bnRzLnNldChvcmdJZCwgY3VycmVudCAtIDEpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgYSBjbGllbnQgZnJvbSB0aGUgbWFuYWdlclxuICAgKi9cbiAgcHJpdmF0ZSByZW1vdmVDbGllbnQocmVxdWVzdElkOiBzdHJpbmcsIGNsaWVudElkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBjbGllbnRzID0gdGhpcy5jbGllbnRzLmdldChyZXF1ZXN0SWQpO1xuICAgIGlmICghY2xpZW50cykgcmV0dXJuO1xuXG4gICAgY29uc3QgcmVtYWluaW5nID0gY2xpZW50cy5maWx0ZXIoYyA9PiB7XG4gICAgICBpZiAoYy5pZCA9PT0gY2xpZW50SWQpIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KGMudGltZW91dCk7XG4gICAgICAgIC8vIE1pcnJvciB0aGUgcGVyLW9yZyBjb3VudGVyIOKAlCBtdXN0IGRlY3JlbWVudCBoZXJlLCBub3QganVzdCBpbiB0aGVcbiAgICAgICAgLy8gZXhwbGljaXQgY2xvc2UgcGF0aHMsIHNpbmNlICdjbG9zZScvJ2Vycm9yJyBldmVudCBoYW5kbGVycyBhcmUgdGhlXG4gICAgICAgIC8vIHByaW1hcnkgZGlzY29ubmVjdCBzaWduYWwgaW4gcHJhY3RpY2UuXG4gICAgICAgIHRoaXMuZGVjcmVtZW50T3JnQ291bnQoYy5vcmdJZCk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0pO1xuXG4gICAgaWYgKHJlbWFpbmluZy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMuY2xpZW50cy5kZWxldGUocmVxdWVzdElkKTtcbiAgICAgIGxvZ2dlci5kZWJ1ZyhgQWxsIGNsaWVudHMgZGlzY29ubmVjdGVkIGZvciByZXF1ZXN0ICR7cmVxdWVzdElkfWApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNsaWVudHMuc2V0KHJlcXVlc3RJZCwgcmVtYWluaW5nKTtcbiAgICB9XG4gICAgdGhpcy51cGRhdGVBY3RpdmVHYXVnZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlbmRzIGEgbWVzc2FnZSB0byBhbGwgU1NFIGNsaWVudHMgZm9yIGEgcmVxdWVzdElkXG4gICAqXG4gICAqIEBwYXJhbSByZXF1ZXN0SWQgLSBSZXF1ZXN0IElEXG4gICAqIEBwYXJhbSB0eXBlIC0gRXZlbnQgdHlwZVxuICAgKiBAcGFyYW0gbWVzc2FnZSAtIE1lc3NhZ2Ugc3RyaW5nXG4gICAqIEBwYXJhbSBkYXRhIC0gT3B0aW9uYWwgYWRkaXRpb25hbCBkYXRhXG4gICAqIEByZXR1cm5zIE51bWJlciBvZiBjbGllbnRzIHRoZSBtZXNzYWdlIHdhcyBzZW50IHRvXG4gICAqL1xuICBzZW5kKHJlcXVlc3RJZDogc3RyaW5nLCB0eXBlOiBTU0VFdmVudFR5cGUsIG1lc3NhZ2U6IHN0cmluZywgZGF0YT86IHVua25vd24pOiBudW1iZXIge1xuICAgIHJlcXVlc3RJZCA9IG5vcm1hbGl6ZVJlcXVlc3RJZChyZXF1ZXN0SWQpOyAvLyB1bmlmeSBwcm9kdWNlci9jb25zdW1lciBrZXkgZm9ybXNcbiAgICBjb25zdCBwYXlsb2FkOiBTU0VQYXlsb2FkID0ge1xuICAgICAgdHM6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgIHR5cGUsXG4gICAgICBtZXNzYWdlLFxuICAgICAgZGF0YSxcbiAgICB9O1xuXG4gICAgLy8gRGVsaXZlciB0byBMT0NBTCBjbGllbnRzIGZpcnN0LCB0aGVuIHJlbGF5IHRoZSBTQU1FIHBheWxvYWQgdG8gb3RoZXIgcG9kc1xuICAgIC8vIHNvIGFuIEV2ZW50U291cmNlIGF0dGFjaGVkIG9uIGEgZGlmZmVyZW50IHJlcGxpY2EgYWxzbyByZWNlaXZlcyBpdC4gVGhlXG4gICAgLy8gcmVsYXkgaXMgZmlyZS1hbmQtZm9yZ2V0IGFuZCBmYWlsLXNhZmU6IG5vIHJlbGF5IC8gUmVkaXMgZG93biDih5IgbG9jYWwtb25seS5cbiAgICBjb25zdCBzZW50Q291bnQgPSB0aGlzLnNlbmRMb2NhbChyZXF1ZXN0SWQsIHBheWxvYWQpO1xuICAgIHRoaXMucHVibGlzaFJlbGF5KHsgb3JpZ2luOiB0aGlzLm5vZGVJZCwga2luZDogJ3NlbmQnLCByZXF1ZXN0SWQsIHBheWxvYWQgfSk7XG4gICAgcmV0dXJuIHNlbnRDb3VudDtcbiAgfVxuXG4gIC8qKlxuICAgKiBXcml0ZSBhIHByZS1idWlsdCBwYXlsb2FkIHRvIHRoaXMgcG9kJ3MgTE9DQUwgY2xpZW50cyBmb3IgYHJlcXVlc3RJZGAuIFNoYXJlZFxuICAgKiBieSB7QGxpbmsgc2VuZH0gKGxvY2FsIGhhbGYpIGFuZCB0aGUgcmVsYXkgcmUtZW1pdCBwYXRoICh7QGxpbmsgb25SZWxheU1lc3NhZ2V9KSxcbiAgICogc28gYSByZWxheWVkIGZyYW1lIHJldXNlcyB0aGUgcHJvZHVjZXIncyBvcmlnaW5hbCBgdHNgIHJhdGhlciB0aGFuIGEgbmV3IG9uZS5cbiAgICogTmV2ZXIgcmVsYXlzIOKAlCBjYWxsZXJzIGRlY2lkZSB3aGV0aGVyIHRvIHB1Ymxpc2guXG4gICAqL1xuICBwcml2YXRlIHNlbmRMb2NhbChyZXF1ZXN0SWQ6IHN0cmluZywgcGF5bG9hZDogU1NFUGF5bG9hZCk6IG51bWJlciB7XG4gICAgcmVxdWVzdElkID0gbm9ybWFsaXplUmVxdWVzdElkKHJlcXVlc3RJZCk7IC8vIGlkZW1wb3RlbnQ7IGNvdmVycyB0aGUgcmVsYXkgcmUtZW1pdCBwYXRoXG4gICAgY29uc3QgY2xpZW50cyA9IFsuLi4odGhpcy5jbGllbnRzLmdldChyZXF1ZXN0SWQpIHx8IFtdKV07XG4gICAgbGV0IHNlbnRDb3VudCA9IDA7XG4gICAgY29uc3Qgc2VyaWFsaXplZCA9IGBkYXRhOiAke0pTT04uc3RyaW5naWZ5KHBheWxvYWQpfVxcblxcbmA7XG5cbiAgICBmb3IgKGNvbnN0IGNsaWVudCBvZiBjbGllbnRzKSB7XG4gICAgICB0cnkge1xuICAgICAgICAvLyBCYWNrcHJlc3N1cmU6IHNraXAgY2xpZW50cyB3aG9zZSB3cml0ZSBidWZmZXIgaXMgZnVsbFxuICAgICAgICBpZiAoY2xpZW50LnJlcy53cml0YWJsZUVuZGVkKSB7XG4gICAgICAgICAgdGhpcy5yZW1vdmVDbGllbnQocmVxdWVzdElkLCBjbGllbnQuaWQpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNhbldyaXRlID0gY2xpZW50LnJlcy53cml0ZShzZXJpYWxpemVkKTtcbiAgICAgICAgaWYgKCFjYW5Xcml0ZSkge1xuICAgICAgICAgIGNsaWVudC5iYWNrcHJlc3N1cmVDb3VudCsrO1xuICAgICAgICAgIC8vIERpc2Nvbm5lY3QgY2xpZW50cyB0aGF0IGNvbnNpc3RlbnRseSBjYW4ndCBrZWVwIHVwICgxMCBjb25zZWN1dGl2ZSBiYWNrcHJlc3N1cmUgZXZlbnRzKVxuICAgICAgICAgIGlmIChjbGllbnQuYmFja3ByZXNzdXJlQ291bnQgPj0gQ29yZUNvbnN0YW50cy5TU0VfQkFDS1BSRVNTVVJFX1RIUkVTSE9MRCkge1xuICAgICAgICAgICAgbG9nZ2VyLndhcm4oYERpc2Nvbm5lY3Rpbmcgc2xvdyBjbGllbnQgJHtjbGllbnQuaWR9IGZvciByZXF1ZXN0ICR7cmVxdWVzdElkfSAoJHtjbGllbnQuYmFja3ByZXNzdXJlQ291bnR9IGJhY2twcmVzc3VyZSBldmVudHMpYCk7XG4gICAgICAgICAgICBpbmNDb3VudGVyKCdzc2VfYmFja3ByZXNzdXJlX2Rpc2Nvbm5lY3RzX3RvdGFsJywge30pO1xuICAgICAgICAgICAgdGhpcy5yZW1vdmVDbGllbnQocmVxdWVzdElkLCBjbGllbnQuaWQpO1xuICAgICAgICAgICAgdHJ5IHsgY2xpZW50LnJlcy5lbmQoKTsgfSBjYXRjaCB7IC8qIGFscmVhZHkgY2xvc2VkICovIH1cbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjbGllbnQuYmFja3ByZXNzdXJlQ291bnQgPSAwOyAvLyBSZXNldCBvbiBzdWNjZXNzZnVsIHdyaXRlXG4gICAgICAgIH1cbiAgICAgICAgc2VudENvdW50Kys7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBsb2dnZXIuZXJyb3IoYEZhaWxlZCB0byBzZW5kIHRvIGNsaWVudCAke2NsaWVudC5pZH06YCwgZXJyb3IpO1xuICAgICAgICB0aGlzLnJlbW92ZUNsaWVudChyZXF1ZXN0SWQsIGNsaWVudC5pZCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHNlbnRDb3VudDtcbiAgfVxuXG4gIC8qKlxuICAgKiBCcm9hZGNhc3QgYSBtZXNzYWdlIHRvIGFsbCBjb25uZWN0ZWQgY2xpZW50cyBhY3Jvc3MgYWxsIHJlcXVlc3RzXG4gICAqXG4gICAqIEBwYXJhbSB0eXBlIC0gRXZlbnQgdHlwZVxuICAgKiBAcGFyYW0gbWVzc2FnZSAtIE1lc3NhZ2Ugc3RyaW5nXG4gICAqIEBwYXJhbSBkYXRhIC0gT3B0aW9uYWwgYWRkaXRpb25hbCBkYXRhXG4gICAqIEByZXR1cm5zIFRvdGFsIG51bWJlciBvZiBjbGllbnRzIHRoZSBtZXNzYWdlIHdhcyBzZW50IHRvXG4gICAqL1xuICBicm9hZGNhc3QodHlwZTogU1NFRXZlbnRUeXBlLCBtZXNzYWdlOiBzdHJpbmcsIGRhdGE/OiB1bmtub3duKTogbnVtYmVyIHtcbiAgICBjb25zdCBwYXlsb2FkOiBTU0VQYXlsb2FkID0ge1xuICAgICAgdHM6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgIHR5cGUsXG4gICAgICBtZXNzYWdlLFxuICAgICAgZGF0YSxcbiAgICB9O1xuICAgIC8vIERlbGl2ZXIgdG8gbG9jYWwgY2xpZW50cywgdGhlbiByZWxheSBhIHNpbmdsZSBicm9hZGNhc3QgZnJhbWUgc28gRVZFUlkgcG9kXG4gICAgLy8gcmUtZW1pdHMgdG8gQUxMIG9mIGl0cyBvd24gY2xpZW50cyDigJQgYSBwZXItcmVxdWVzdElkIHJlbGF5IHdvdWxkIG1pc3NcbiAgICAvLyBzdWJqZWN0cyB0aGF0IG9ubHkgZXhpc3Qgb24gb3RoZXIgcmVwbGljYXMuXG4gICAgY29uc3QgdG90YWxTZW50ID0gdGhpcy5icm9hZGNhc3RMb2NhbChwYXlsb2FkKTtcbiAgICB0aGlzLnB1Ymxpc2hSZWxheSh7IG9yaWdpbjogdGhpcy5ub2RlSWQsIGtpbmQ6ICdicm9hZGNhc3QnLCBwYXlsb2FkIH0pO1xuICAgIHJldHVybiB0b3RhbFNlbnQ7XG4gIH1cblxuICAvKiogV3JpdGUgYSBwcmUtYnVpbHQgcGF5bG9hZCB0byBhbGwgTE9DQUwgY2xpZW50cyBhY3Jvc3MgZXZlcnkgcmVxdWVzdC4gKi9cbiAgcHJpdmF0ZSBicm9hZGNhc3RMb2NhbChwYXlsb2FkOiBTU0VQYXlsb2FkKTogbnVtYmVyIHtcbiAgICBsZXQgdG90YWxTZW50ID0gMDtcbiAgICBmb3IgKGNvbnN0IHJlcXVlc3RJZCBvZiBbLi4udGhpcy5jbGllbnRzLmtleXMoKV0pIHtcbiAgICAgIHRvdGFsU2VudCArPSB0aGlzLnNlbmRMb2NhbChyZXF1ZXN0SWQsIHBheWxvYWQpO1xuICAgIH1cbiAgICByZXR1cm4gdG90YWxTZW50O1xuICB9XG5cbiAgLyoqIEZpcmUtYW5kLWZvcmdldCByZWxheSBwdWJsaXNoLiBOby1vcCAobG9jYWwtb25seSkgd2hlbiBubyByZWxheSBpcyB3aXJlZC4gKi9cbiAgcHJpdmF0ZSBwdWJsaXNoUmVsYXkobXNnOiBTU0VSZWxheU1lc3NhZ2UpOiB2b2lkIHtcbiAgICB0aGlzLnJlbGF5Py5wdWJsaXNoKG1zZyk7XG4gIH1cblxuICAvKipcbiAgICogQ2xvc2UgYWxsIGNsaWVudHMgZm9yIGEgc3BlY2lmaWMgcmVxdWVzdFxuICAgKlxuICAgKiBAcGFyYW0gcmVxdWVzdElkIC0gUmVxdWVzdCBJRCB0byBjbG9zZVxuICAgKiBAcGFyYW0gZmluYWxNZXNzYWdlIC0gT3B0aW9uYWwgZmluYWwgbWVzc2FnZSB0byBzZW5kIGJlZm9yZSBjbG9zaW5nXG4gICAqL1xuICBjbG9zZVJlcXVlc3QocmVxdWVzdElkOiBzdHJpbmcsIGZpbmFsTWVzc2FnZT86IHN0cmluZyk6IHZvaWQge1xuICAgIHJlcXVlc3RJZCA9IG5vcm1hbGl6ZVJlcXVlc3RJZChyZXF1ZXN0SWQpO1xuICAgIGlmICghdGhpcy5jbGllbnRzLmhhcyhyZXF1ZXN0SWQpKSByZXR1cm47XG5cbiAgICAvLyBMT0NBTCBvbmx5OiB0aGlzIGNsb3NlcyB0aGlzIHBvZCdzIGNsaWVudHMsIHNvIHRoZSBmaW5hbCBmcmFtZSBpcyBmb3IgdGhlbVxuICAgIC8vIChyZWxheWluZyBpdCB3b3VsZCBwdXNoIGEgQ09NUExFVEVEIHRvIG90aGVyIHBvZHMnIHN0aWxsLW9wZW4gc3RyZWFtcykuXG4gICAgaWYgKGZpbmFsTWVzc2FnZSkge1xuICAgICAgdGhpcy5zZW5kTG9jYWwocmVxdWVzdElkLCB7IHRzOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksIHR5cGU6ICdDT01QTEVURUQnLCBtZXNzYWdlOiBmaW5hbE1lc3NhZ2UgfSk7XG4gICAgfVxuXG4gICAgLy8gUmVhZCB0aGUgZW50cnkgQUZURVIgdGhlIGZpbmFsIHdyaXRlOiBzZW5kTG9jYWwgcmVtb3ZlcyAoYW5kIHVuLWNvdW50cylcbiAgICAvLyBjbGllbnRzIHRoYXQgd2VyZSBhbHJlYWR5IGdvbmUsIHNvIGl0ZXJhdGluZyBhbiBlYXJsaWVyIHNuYXBzaG90IHdvdWxkXG4gICAgLy8gZGVjcmVtZW50IHRoZWlyIG9yZyBjb3VudCBhIHNlY29uZCB0aW1lLlxuICAgIGZvciAoY29uc3QgY2xpZW50IG9mIHRoaXMuY2xpZW50cy5nZXQocmVxdWVzdElkKSA/PyBbXSkge1xuICAgICAgY2xlYXJUaW1lb3V0KGNsaWVudC50aW1lb3V0KTtcbiAgICAgIHRoaXMuZGVjcmVtZW50T3JnQ291bnQoY2xpZW50Lm9yZ0lkKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNsaWVudC5yZXMuZW5kKCk7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgbG9nZ2VyLmRlYnVnKCdSZXNwb25zZSBhbHJlYWR5IGNsb3NlZCBvbiByZXF1ZXN0IGNsb3NlJywgeyByZXF1ZXN0SWQsIGNsaWVudElkOiBjbGllbnQuaWQsIGVycm9yOiBlcnJvck1lc3NhZ2UoZXJyKSB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmNsaWVudHMuZGVsZXRlKHJlcXVlc3RJZCk7XG4gICAgdGhpcy51cGRhdGVBY3RpdmVHYXVnZSgpO1xuICAgIGxvZ2dlci5kZWJ1ZyhgQ2xvc2VkIGFsbCBjbGllbnRzIGZvciByZXF1ZXN0ICR7cmVxdWVzdElkfWApO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBzdGF0aXN0aWNzIGFib3V0IGN1cnJlbnQgY29ubmVjdGlvbnNcbiAgICovXG4gIGdldFN0YXRzKCk6IFNTRU1hbmFnZXJTdGF0cyB7XG4gICAgbGV0IHRvdGFsQ2xpZW50cyA9IDA7XG4gICAgbGV0IG9sZGVzdENvbm5lY3Rpb246IG51bWJlciB8IG51bGwgPSBudWxsO1xuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG5cbiAgICBmb3IgKGNvbnN0IGNsaWVudHMgb2YgdGhpcy5jbGllbnRzLnZhbHVlcygpKSB7XG4gICAgICB0b3RhbENsaWVudHMgKz0gY2xpZW50cy5sZW5ndGg7XG4gICAgICBmb3IgKGNvbnN0IGNsaWVudCBvZiBjbGllbnRzKSB7XG4gICAgICAgIGNvbnN0IGFnZSA9IG5vdyAtIGNsaWVudC5jb25uZWN0ZWRBdDtcbiAgICAgICAgaWYgKG9sZGVzdENvbm5lY3Rpb24gPT09IG51bGwgfHwgYWdlID4gb2xkZXN0Q29ubmVjdGlvbikge1xuICAgICAgICAgIG9sZGVzdENvbm5lY3Rpb24gPSBhZ2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgdG90YWxSZXF1ZXN0czogdGhpcy5jbGllbnRzLnNpemUsXG4gICAgICB0b3RhbENsaWVudHMsXG4gICAgICBvbGRlc3RDb25uZWN0aW9uTXM6IG9sZGVzdENvbm5lY3Rpb24sXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhIHJlcXVlc3QgaGFzIGFueSBjb25uZWN0ZWQgY2xpZW50c1xuICAgKi9cbiAgaGFzQ2xpZW50cyhyZXF1ZXN0SWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGNsaWVudHMgPSB0aGlzLmNsaWVudHMuZ2V0KG5vcm1hbGl6ZVJlcXVlc3RJZChyZXF1ZXN0SWQpKTtcbiAgICByZXR1cm4gY2xpZW50cyAhPT0gdW5kZWZpbmVkICYmIGNsaWVudHMubGVuZ3RoID4gMDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIG51bWJlciBvZiBjbGllbnRzIGZvciBhIHNwZWNpZmljIHJlcXVlc3RcbiAgICovXG4gIGdldENsaWVudENvdW50KHJlcXVlc3RJZDogc3RyaW5nKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5jbGllbnRzLmdldChub3JtYWxpemVSZXF1ZXN0SWQocmVxdWVzdElkKSk/Lmxlbmd0aCA/PyAwO1xuICB9XG5cbiAgLyoqXG4gICAqIE1pZGRsZXdhcmUgdG8gaW5pdGlhbGl6ZSBhIHRpY2tldC1hdXRoZW50aWNhdGVkIFNTRSBjb25uZWN0aW9uLlxuICAgKlxuICAgKiBUaGUgc3RyZWFtIGlzIE5PVCBvcGVuIHRvIHRoZSB3b3JsZDogdGhlIGNhbGxlciBtdXN0IGZpcnN0IGV4Y2hhbmdlIGl0c1xuICAgKiBKV1QgZm9yIGEgc2hvcnQtbGl2ZWQgc2luZ2xlLXVzZSB0aWNrZXQgKHNlZSB7QGxpbmsgY3JlYXRlVGlja2V0fSwgd2lyZWQgdG9cbiAgICogYFBPU1QgL2xvZ3MvdGlja2V0YCkgYW5kIHBhc3MgaXQgYXMgYD90aWNrZXQ9PHQ+YC4gVGhlIG1pZGRsZXdhcmUgdmFsaWRhdGVzXG4gICAqICsgY29uc3VtZXMgdGhlIHRpY2tldCwgYmluZHMgdGhlIGNvbm5lY3Rpb24gdG8gdGhlIHRpY2tldCdzIG9yZywgYW5kXG4gICAqIGVuZm9yY2VzIHRoZSBwZXItb3JnIGNvbm5lY3Rpb24gY2FwLiBBIG1pc3NpbmcgLyBpbnZhbGlkIC8gZXhwaXJlZCAvXG4gICAqIGFscmVhZHktdXNlZCB0aWNrZXQgaXMgcmVqZWN0ZWQgd2l0aCA0MDEgYmVmb3JlIGFueSBTU0UgaGVhZGVycyBmbHVzaC5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBhcHAuZ2V0KCcvbG9ncy86cmVxdWVzdElkJywgc3NlTWFuYWdlci5taWRkbGV3YXJlKCkpO1xuICAgKiBgYGBcbiAgICovXG4gIG1pZGRsZXdhcmUoKSB7XG4gICAgcmV0dXJuIGFzeW5jIChyZXE6IHsgcGFyYW1zOiB7IHJlcXVlc3RJZDogc3RyaW5nIH07IHF1ZXJ5PzogeyB0aWNrZXQ/OiB1bmtub3duIH0gfSwgcmVzOiBSZXNwb25zZSkgPT4ge1xuICAgICAgY29uc3QgeyByZXF1ZXN0SWQgfSA9IHJlcS5wYXJhbXM7XG5cbiAgICAgIGlmICghU1NFX1JFUVVFU1RfSURfUkUudGVzdChyZXF1ZXN0SWQpKSB7XG4gICAgICAgIHJlcy5zdGF0dXMoNDAwKS5lbmQoJ0ludmFsaWQgcmVxdWVzdElkIGZvcm1hdCcpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIFRpY2tldCBhdXRoIOKAlCByZXF1aXJlZC4gUmVzb2x2ZSBgP3RpY2tldD08dD5gLCB0aGVuIHZhbGlkYXRlICsgY29uc3VtZVxuICAgICAgLy8gaXQgKHNpbmdsZS11c2UpIEZPUiBUSElTIFNVQkpFQ1QuIEFuIGFub255bW91cywgbWFsZm9ybWVkLCB1bmtub3duLFxuICAgICAgLy8gZXhwaXJlZCwgYWxyZWFkeS1jb25zdW1lZCwgb3Igd3Jvbmctc3ViamVjdCB0aWNrZXQgaXMgYSA0MDEuIFRoZSBvcmcgaXNcbiAgICAgIC8vIHRha2VuIGZyb20gdGhlIHRpY2tldCwgc28gdGhlIHN0cmVhbSBpcyBhbHdheXMgYm91bmQgdG8gYSB2ZXJpZmllZFxuICAgICAgLy8gdGVuYW50IEFORCB0byB0aGUgZXhhY3Qgc3ViamVjdCB0aGUgdGlja2V0IHdhcyBtaW50ZWQgZm9yIChubyBhbm9ueW1vdXNcbiAgICAgIC8vIHN0cmVhbXMsIG5vIGNyb3NzLXN1YmplY3QgYXR0YWNoKS5cbiAgICAgIGNvbnN0IHRpY2tldElkID0gcmVxLnF1ZXJ5Py50aWNrZXQ7XG4gICAgICBpZiAodHlwZW9mIHRpY2tldElkICE9PSAnc3RyaW5nJyB8fCB0aWNrZXRJZC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmVzLnN0YXR1cyg0MDEpLmVuZCgnTWlzc2luZyB0aWNrZXQnKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgY29uc3VtZWQgPSBhd2FpdCB0aGlzLmNvbnN1bWVUaWNrZXQodGlja2V0SWQsIHJlcXVlc3RJZCk7XG4gICAgICBpZiAoIWNvbnN1bWVkKSB7XG4gICAgICAgIHJlcy5zdGF0dXMoNDAxKS5lbmQoJ0ludmFsaWQgb3IgZXhwaXJlZCB0aWNrZXQnKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3Qgb3JnSWQgPSBjb25zdW1lZC5vcmdJZDtcblxuICAgICAgLy8gUHJlLWZsaWdodCBwZXItcmVxdWVzdCBjYXAgc28gd2UgY2FuIHJldHVybiA0MjkgYmVmb3JlIGZsdXNoaW5nXG4gICAgICAvLyBTU0UgaGVhZGVycyAoYWZ0ZXIgaGVhZGVycyBhcmUgZmx1c2hlZCB0aGUgY2xpZW50IGNhbid0IHJlYWQgYSA0MjkpLlxuICAgICAgLy9cbiAgICAgIC8vIE5PUk1BTElaRSBmaXJzdDogYGFkZENsaWVudGAga2V5cyB0aGUgbWFwIG9uIHRoZSBub3JtYWxpemVkIGZvcm1cbiAgICAgIC8vIChkYXNoZXMgc3RyaXBwZWQpLCBzbyByZWFkaW5nIHRoZSByYXcgYHJlcXVlc3RJZGAgaGVyZSBhbHdheXMgZm91bmQgMFxuICAgICAgLy8gZm9yIGEgY2xpZW50IHVzaW5nIHRoZSBkYXNoZWQgZm9ybS4gVGhlIGNhcCB3YXMgdGhlbiBvbmx5IGNhdWdodCBpbnNpZGVcbiAgICAgIC8vIGBhZGRDbGllbnRgIOKAlCBBRlRFUiBgZmx1c2hIZWFkZXJzKClgIOKAlCB3aGljaCBpcyBleGFjdGx5IHRoZSBjYXNlIHRoaXNcbiAgICAgIC8vIHByZS1mbGlnaHQgZXhpc3RzIHRvIGF2b2lkOiB0aGUgY2xpZW50IGdvdCBhIHNpbGVudGx5LWNsb3NlZCBzdHJlYW1cbiAgICAgIC8vIGluc3RlYWQgb2YgYSA0MjkuXG4gICAgICBjb25zdCBleGlzdGluZyA9IHRoaXMuY2xpZW50cy5nZXQobm9ybWFsaXplUmVxdWVzdElkKHJlcXVlc3RJZCkpIHx8IFtdO1xuICAgICAgaWYgKGV4aXN0aW5nLmxlbmd0aCA+PSB0aGlzLm1heENsaWVudHNQZXJSZXF1ZXN0KSB7XG4gICAgICAgIGxvZ2dlci53YXJuKGBDbGllbnQgbGltaXQgcmVhY2hlZCBmb3IgcmVxdWVzdCAke3JlcXVlc3RJZH0gKG1heDogJHt0aGlzLm1heENsaWVudHNQZXJSZXF1ZXN0fSlgKTtcbiAgICAgICAgcmVzLnN0YXR1cyg0MjkpLmVuZCgnVG9vIG1hbnkgY29ubmVjdGlvbnMgZm9yIHRoaXMgcmVxdWVzdCcpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIFNhbWUgZm9yIHRoZSBwZXItb3JnIGNhcCDigJQgYmV0dGVyIHRvIHNlbmQgNDI5IHRoYW4gb3BlbiB0aGUgc3RyZWFtIGFuZFxuICAgICAgLy8gaW1tZWRpYXRlbHkgY2xvc2UgaXQuIFRoZSB0aWNrZXQgZ3VhcmFudGVlcyBhIHZlcmlmaWVkIG9yZyBpZCwgc28gdGhlXG4gICAgICAvLyBwZXItb3JnIGNlaWxpbmcgaXMgYWx3YXlzIGVuZm9yY2VkIGZvciB0aGUgL2xvZ3Mgc3RyZWFtLlxuICAgICAgaWYgKCh0aGlzLm9yZ0NsaWVudENvdW50cy5nZXQob3JnSWQpID8/IDApID49IHRoaXMubWF4Q2xpZW50c1Blck9yZykge1xuICAgICAgICBsb2dnZXIud2FybihgUGVyLW9yZyBTU0UgY2xpZW50IGNhcCByZWFjaGVkIGZvciAke29yZ0lkfSAobWF4OiAke3RoaXMubWF4Q2xpZW50c1Blck9yZ30pYCk7XG4gICAgICAgIHJlcy5zdGF0dXMoNDI5KS5lbmQoJ1RvbyBtYW55IFNTRSBjb25uZWN0aW9ucyBmb3IgdGhpcyBvcmdhbml6YXRpb24nKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB3cml0ZVNzZUhlYWRlcnMocmVzKTtcbiAgICAgIHJlcy5mbHVzaEhlYWRlcnMoKTtcblxuICAgICAgLy8gSGVhZGVycyBhcmUgZmx1c2hlZCDigJQgd2UgY2FuIG5vIGxvbmdlciBzZW5kIGEgNDI5LiBhZGRDbGllbnQgcmUtY2hlY2tzXG4gICAgICAvLyB0aGUgY2FwcyAoaW5jbHVkaW5nIHRoZSBwcm9jZXNzLXdpZGUgdG90YWwtY2xpZW50cyBjYXAsIHdoaWNoIHRoZVxuICAgICAgLy8gcHJlLWZsaWdodCBhYm92ZSBkb2VzIG5vdCkgYW5kIGNhbiBzdGlsbCByZWplY3Qgb24gYSByYWNlOiBhIGNvbmN1cnJlbnRcbiAgICAgIC8vIGNvbm5lY3Rpb24gbWF5IGhhdmUgZmlsbGVkIGEgY2FwIGJldHdlZW4gdGhlIHByZS1mbGlnaHQgY2hlY2sgYW5kIGhlcmUuXG4gICAgICAvLyBPbiByZWplY3Rpb24sIGNsb3NlIHRoZSBub3ctZGFuZ2xpbmcgcmVzcG9uc2UgaW5zdGVhZCBvZiBsZWF2aW5nIGFuXG4gICAgICAvLyBvcGVuIHNvY2tldCB3aXRoIG5vIGNsaWVudCByZWNvcmQgKHdoaWNoIHdvdWxkIGxlYWsgYW4gZmQgKyBuZXZlciBlbWl0XG4gICAgICAvLyBzdHJlYW0gZGF0YSkuXG4gICAgICBjb25zdCBhZGRlZCA9IHRoaXMuYWRkQ2xpZW50KHJlcXVlc3RJZCwgcmVzLCBvcmdJZCk7XG4gICAgICBpZiAoIWFkZGVkKSB7XG4gICAgICAgIGxvZ2dlci53YXJuKGBTU0UgYWRkQ2xpZW50IHJlamVjdGVkIGFmdGVyIGhlYWRlcnMgZmx1c2hlZCBmb3IgcmVxdWVzdCAke3JlcXVlc3RJZH07IGNsb3NpbmcgZGFuZ2xpbmcgcmVzcG9uc2VgKTtcbiAgICAgICAgdHJ5IHsgcmVzLmVuZCgpOyB9IGNhdGNoIHsgLyogYWxyZWFkeSBjbG9zZWQgKi8gfVxuICAgICAgfVxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogU3RhcnQgcGVyaW9kaWMgY2xlYW51cCBvZiBzdGFsZSBjb25uZWN0aW9uc1xuICAgKi9cbiAgcHJpdmF0ZSBzdGFydENsZWFudXBJbnRlcnZhbChpbnRlcnZhbE1zOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLmNsZWFudXBJbnRlcnZhbCA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICAgIHRoaXMuY2xlYW51cCgpO1xuICAgIH0sIGludGVydmFsTXMpO1xuXG4gICAgLy8gRG9uJ3QgcHJldmVudCBwcm9jZXNzIGV4aXRcbiAgICB0aGlzLmNsZWFudXBJbnRlcnZhbC51bnJlZigpO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFuIHVwIHN0YWxlIGNvbm5lY3Rpb25zIHVzaW5nIHNpbmdsZS1wYXNzIHBhcnRpdGlvbi5cbiAgICogTyhSIMOXIEMpIGluc3RlYWQgb2YgTyhSIMOXIEPCsiksIGFuZCBhdm9pZHMgbXV0YXRpb24tZHVyaW5nLWl0ZXJhdGlvbi5cbiAgICovXG4gIHByaXZhdGUgY2xlYW51cCgpOiB2b2lkIHtcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgIGxldCBjbGVhbmVkID0gMDtcblxuICAgIGZvciAoY29uc3QgW3JlcXVlc3RJZCwgY2xpZW50c10gb2YgdGhpcy5jbGllbnRzLmVudHJpZXMoKSkge1xuICAgICAgY29uc3Qgc3RhbGU6IFNTRUNsaWVudFtdID0gW107XG4gICAgICBjb25zdCBhY3RpdmU6IFNTRUNsaWVudFtdID0gW107XG5cbiAgICAgIGZvciAoY29uc3QgY2xpZW50IG9mIGNsaWVudHMpIHtcbiAgICAgICAgLy8gVGltZS1iYXNlZCBldmljdGlvbiBPUiBhIHNvY2tldCB0aGF0IHNpbGVudGx5IGNsb3NlZCAobm8gJ2Nsb3NlJ1xuICAgICAgICAvLyBldmVudCkg4oCUIE5vZGUgc29tZXRpbWVzIGRyb3BzIHNvY2tldHMgd2l0aG91dCBmaXJpbmcgdGhlIGV2ZW50LFxuICAgICAgICAvLyBzbyB3ZSBleHBsaWNpdGx5IGNoZWNrIHdyaXRhYmxlRW5kZWQvZGVzdHJveWVkIGhlcmUuXG4gICAgICAgIGNvbnN0IGFnZVN0YWxlID0gbm93IC0gY2xpZW50LmNvbm5lY3RlZEF0ID4gdGhpcy5jbGllbnRUaW1lb3V0TXM7XG4gICAgICAgIGNvbnN0IHNvY2tldERlYWQgPSBjbGllbnQucmVzLndyaXRhYmxlRW5kZWQgfHwgKGNsaWVudC5yZXMgYXMgeyBkZXN0cm95ZWQ/OiBib29sZWFuIH0pLmRlc3Ryb3llZCA9PT0gdHJ1ZTtcbiAgICAgICAgaWYgKGFnZVN0YWxlIHx8IHNvY2tldERlYWQpIHtcbiAgICAgICAgICBzdGFsZS5wdXNoKGNsaWVudCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYWN0aXZlLnB1c2goY2xpZW50KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBmb3IgKGNvbnN0IGNsaWVudCBvZiBzdGFsZSkge1xuICAgICAgICBjbGVhclRpbWVvdXQoY2xpZW50LnRpbWVvdXQpO1xuICAgICAgICB0aGlzLmRlY3JlbWVudE9yZ0NvdW50KGNsaWVudC5vcmdJZCk7XG4gICAgICAgIHRyeSB7IGNsaWVudC5yZXMuZW5kKCk7IH0gY2F0Y2ggeyAvKiBhbHJlYWR5IGNsb3NlZCAqLyB9XG4gICAgICAgIGNsZWFuZWQrKztcbiAgICAgIH1cblxuICAgICAgaWYgKGFjdGl2ZS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdGhpcy5jbGllbnRzLmRlbGV0ZShyZXF1ZXN0SWQpO1xuICAgICAgfSBlbHNlIGlmIChzdGFsZS5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMuY2xpZW50cy5zZXQocmVxdWVzdElkLCBhY3RpdmUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChjbGVhbmVkID4gMCkge1xuICAgICAgaW5jQ291bnRlcignc3NlX3N0YWxlX2NsZWFuZWRfdG90YWwnLCB7fSwgY2xlYW5lZCk7XG4gICAgICB0aGlzLnVwZGF0ZUFjdGl2ZUdhdWdlKCk7XG4gICAgICBsb2dnZXIuaW5mbyhgQ2xlYW5lZCB1cCAke2NsZWFuZWR9IHN0YWxlIFNTRSBjb25uZWN0aW9uc2ApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTaHV0ZG93biB0aGUgU1NFIG1hbmFnZXIgYW5kIGNsb3NlIGFsbCBjb25uZWN0aW9uc1xuICAgKi9cbiAgc2h1dGRvd24oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY2xlYW51cEludGVydmFsKSB7XG4gICAgICBjbGVhckludGVydmFsKHRoaXMuY2xlYW51cEludGVydmFsKTtcbiAgICAgIHRoaXMuY2xlYW51cEludGVydmFsID0gbnVsbDtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHJlcXVlc3RJZCBvZiBbLi4udGhpcy5jbGllbnRzLmtleXMoKV0pIHtcbiAgICAgIHRoaXMuY2xvc2VSZXF1ZXN0KHJlcXVlc3RJZCwgJ1NlcnZlciBzaHV0dGluZyBkb3duJyk7XG4gICAgfVxuXG4gICAgLy8gVGVhciBkb3duIHRoZSByZWxheSdzIFJlZGlzIGNvbm5lY3Rpb25zIChiZXN0LWVmZm9ydDsgbmV2ZXIgdGhyb3dzKS5cbiAgICB2b2lkIHRoaXMucmVsYXk/LmNsb3NlKCkuY2F0Y2goKCkgPT4geyAvKiBhbHJlYWR5IGNsb3NpbmcgKi8gfSk7XG4gICAgdGhpcy50aWNrZXRzLnNodXRkb3duKCk7XG5cbiAgICBsb2dnZXIuaW5mbygnU1NFIE1hbmFnZXIgc2h1dCBkb3duJyk7XG4gIH1cbn1cbiJdfQ==
|
package/lib/http/sse-relay.js
CHANGED
|
@@ -96,4 +96,4 @@ export function createEnvRedisSSERelay(serviceName = process.env.SERVICE_NAME ||
|
|
|
96
96
|
logger.info('Redis SSE relay initialized (cross-pod fan-out enabled)', { channel });
|
|
97
97
|
return createRedisSSERelay(client, channel);
|
|
98
98
|
}
|
|
99
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3NlLXJlbGF5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2h0dHAvc3NlLXJlbGF5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEMsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFHNUcsTUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBdUR6Qzs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sVUFBVSxlQUFlLENBQUMsV0FBbUI7SUFDakQsT0FBTyxhQUFhLFdBQVcsRUFBRSxDQUFDO0FBQ3BDLENBQUM7QUFFRCxzREFBc0Q7QUFDdEQsTUFBTSxzQkFBc0IsR0FBRyxHQUFHLENBQUM7QUFDbkMsTUFBTSxzQkFBc0IsR0FBRyxNQUFNLENBQUM7QUFFdEM7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsbUJBQW1CLENBQUMsU0FBNEIsRUFBRSxPQUFlO0lBQy9FLE1BQU0sVUFBVSxHQUFHLFNBQVMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUN6Qyw2RUFBNkU7SUFDN0UsbUZBQW1GO0lBQ25GLFVBQVUsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUU7UUFDN0IsTUFBTSxDQUFDLElBQUksQ0FBQyx1Q0FBdUMsRUFBRSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsWUFBWSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM5RixDQUFDLENBQUMsQ0FBQztJQUNILElBQUksTUFBTSxHQUFHLEtBQUssQ0FBQztJQUVuQixPQUFPO1FBQ0wsT0FBTyxDQUFDLEdBQUc7WUFDVCxJQUFJLE1BQU07Z0JBQUUsT0FBTztZQUNuQix5RUFBeUU7WUFDekUsS0FBSyxPQUFPLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLElB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Q3BGLE9BQU8sbUJBQW1CLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQzlDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHsgY3JlYXRlTG9nZ2VyLCBjcmVhdGVFbnZSZWRpc0NsaWVudCwgZXJyb3JNZXNzYWdlLCByZXRyeUZvcmV2ZXIgfSBmcm9tICdAcGlwZWxpbmUtYnVpbGRlci9hcGktY29yZSc7XG5pbXBvcnQgdHlwZSB7IFNTRVBheWxvYWQgfSBmcm9tICcuL3NzZS1jb25uZWN0aW9uLW1hbmFnZXIuanMnO1xuXG5jb25zdCBsb2dnZXIgPSBjcmVhdGVMb2dnZXIoJ3NzZS1yZWxheScpO1xuXG4vKipcbiAqIEEgcmVsYXllZCBTU0UgZnJhbWUuIGBvcmlnaW5gIGlzIHRoZSBpZCBvZiB0aGUgU1NFTWFuYWdlciBpbnN0YW5jZSB0aGF0XG4gKiBwdWJsaXNoZWQgaXQsIHNvIHRoZSBwdWJsaXNoaW5nIHBvZCBjYW4gaWdub3JlIGl0cyBvd24gZWNobyAoaXQgYWxyZWFkeSB3cm90ZVxuICogdGhlIGZyYW1lIHRvIGl0cyBsb2NhbCBjbGllbnRzIGJlZm9yZSBwdWJsaXNoaW5nKS4gYGtpbmRgIGRpc3Rpbmd1aXNoZXMgYVxuICogcGVyLXN1YmplY3QgYHNlbmRgIChjYXJyaWVzIGByZXF1ZXN0SWRgKSBmcm9tIGEgYGJyb2FkY2FzdGAgKG5vIHN1YmplY3Qg4oCUXG4gKiBldmVyeSBwb2QgcmUtZW1pdHMgdG8gQUxMIG9mIGl0cyBsb2NhbCBjbGllbnRzKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTU0VSZWxheU1lc3NhZ2Uge1xuICBvcmlnaW46IHN0cmluZztcbiAga2luZDogJ3NlbmQnIHwgJ2Jyb2FkY2FzdCc7XG4gIC8qKiBQcmVzZW50IGZvciBgc2VuZGA7IHRoZSBzdHJlYW0gc3ViamVjdCB0aGUgcGF5bG9hZCB0YXJnZXRzLiAqL1xuICByZXF1ZXN0SWQ/OiBzdHJpbmc7XG4gIHBheWxvYWQ6IFNTRVBheWxvYWQ7XG59XG5cbi8qKlxuICogQ3Jvc3MtcG9kIGZhbi1vdXQgYnVzIGZvciBTU0UgZnJhbWVzLlxuICpcbiAqIFVuZGVyIG11bHRpcGxlIHJlcGxpY2FzIHRoZSBwcm9kdWNlciBvZiBhIGxvZyBmcmFtZSAoZS5nLiBhIHBsdWdpbiBidWlsZFxuICogd29ya2VyIG9uIHBvZCBBKSBhbmQgdGhlIGNvbnN1bWVyIChhIGJyb3dzZXIgRXZlbnRTb3VyY2Ugb24gcG9kIEIpIGFyZSBvblxuICogRElGRkVSRU5UIHBvZHMuIFRoZSBpbi1wcm9jZXNzIGNsaWVudCBtYXAgb25seSByZWFjaGVzIHRoZSBwcm9kdWNlcidzIG93blxuICogcG9kLCBzbyBCJ3Mgc3RyZWFtIHdvdWxkIHNpbGVudGx5IG1pc3MgZnJhbWVzLiBUaGUgcmVsYXkgY2xvc2VzIHRoYXQ6IGV2ZXJ5XG4gKiBwb2QgU1VCU0NSSUJFUyBvbmNlIG9uIHN0YXJ0dXAgYW5kIHJlLWVtaXRzIHJlY2VpdmVkIGZyYW1lcyB0byBpdHMgTE9DQUxcbiAqIGNsaWVudHMsIHdoaWxlIGBzZW5kKClgL2Bicm9hZGNhc3QoKWAgUFVCTElTSCB0byB0aGUgYnVzIChpbiBhZGRpdGlvbiB0b1xuICogd3JpdGluZyBsb2NhbGx5KS4gVGhlIG9yaWdpbiB0YWcgcHJldmVudHMgYSBwb2QgZnJvbSBkb3VibGUtZGVsaXZlcmluZyBpdHMgb3duXG4gKiBmcmFtZSB3aGVuIGl0IHJlY2VpdmVzIGl0cyBvd24gcHVibGlzaCBiYWNrLlxuICpcbiAqIEFsbCBtZXRob2RzIGFyZSBiZXN0LWVmZm9ydCAvIGZhaWwtc2FmZTogYSBidXMgb3V0YWdlIG11c3QgZGVncmFkZSB0b1xuICogbG9jYWwtb25seSBkZWxpdmVyeSAodG9kYXkncyBzaW5nbGUtcmVwbGljYSBiZWhhdmlvciksIG5ldmVyIGNyYXNoIHRoZSBzdHJlYW0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU1NFUmVsYXkge1xuICAvKiogRmlyZS1hbmQtZm9yZ2V0IHB1Ymxpc2ggb2YgYSBmcmFtZSB0byBldmVyeSBzdWJzY3JpYmVkIHBvZC4gTmV2ZXIgdGhyb3dzLiAqL1xuICBwdWJsaXNoKG1zZzogU1NFUmVsYXlNZXNzYWdlKTogdm9pZDtcbiAgLyoqIFN1YnNjcmliZSB0aGlzIHBvZCdzIHJlLWVtaXQgaGFuZGxlci4gQ2FsbGVkIG9uY2Ugb24gbWFuYWdlciBjb25zdHJ1Y3Rpb24uICovXG4gIHN1YnNjcmliZShoYW5kbGVyOiAobXNnOiBTU0VSZWxheU1lc3NhZ2UpID0+IHZvaWQpOiB2b2lkO1xuICAvKiogVGVhciBkb3duIHRoZSB1bmRlcmx5aW5nIGNvbm5lY3Rpb24ocykuICovXG4gIGNsb3NlKCk6IFByb21pc2U8dm9pZD47XG59XG5cbi8qKlxuICogTWluaW1hbCBpb3JlZGlzIHB1Yi9zdWIgc3VyZmFjZSB0aGUgUmVkaXMgcmVsYXkgbmVlZHMuIGBzdWJzY3JpYmVgIHJlcXVpcmVzIGFcbiAqIERFRElDQVRFRCBjb25uZWN0aW9uIChhIHN1YnNjcmliZWQgaW9yZWRpcyBjbGllbnQgY2FuJ3QgcnVuIG90aGVyIGNvbW1hbmRzKSxcbiAqIHNvIHRoZSByZWxheSBgZHVwbGljYXRlKClgcyB0aGUgcHVibGlzaGVyIGZvciB0aGUgc3Vic2NyaWJlciBzaWRlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlZGlzUHViU3ViQ2xpZW50IHtcbiAgcHVibGlzaChjaGFubmVsOiBzdHJpbmcsIG1lc3NhZ2U6IHN0cmluZyk6IFByb21pc2U8bnVtYmVyPjtcbiAgc3Vic2NyaWJlKC4uLmNoYW5uZWxzOiBzdHJpbmdbXSk6IFByb21pc2U8dW5rbm93bj47XG4gIG9uKGV2ZW50OiAnbWVzc2FnZScsIGNiOiAoY2hhbm5lbDogc3RyaW5nLCBtZXNzYWdlOiBzdHJpbmcpID0+IHZvaWQpOiB2b2lkO1xuICBvbihldmVudDogJ2Vycm9yJywgY2I6IChlcnI6IHVua25vd24pID0+IHZvaWQpOiB2b2lkO1xuICBkdXBsaWNhdGUoKTogUmVkaXNQdWJTdWJDbGllbnQ7XG4gIHF1aXQoKTogUHJvbWlzZTx1bmtub3duPjtcbn1cblxuLyoqXG4gKiBUaGUgcmVsYXkgY2hhbm5lbCBmb3Igb25lIHNlcnZpY2UuIEV2ZXJ5IHJlcGxpY2Egb2YgYSBzZXJ2aWNlIHNoYXJlcyBpdCwgYW5kXG4gKiBubyBvdGhlciBzZXJ2aWNlIGRvZXM6IGFuIFNTRSBzdWJqZWN0IChhbiBvcmcgaWQsIGEgYnVpbGQgcmVxdWVzdElkKSBvbmx5IGhhc1xuICogbWVhbmluZyBpbnNpZGUgdGhlIHNlcnZpY2Ugd2hvc2UgY2xpZW50cyBzdWJzY3JpYmVkIHRvIGl0LCBzbyBhIHNoYXJlZCBjaGFubmVsXG4gKiBtYWRlIGV2ZXJ5IHNlcnZpY2UncyBwb2RzIHBhcnNlIOKAlCBhbmQgcmUtZW1pdCB0byBzYW1lLW5hbWVkIHN1YmplY3RzIOKAlCBldmVyeVxuICogb3RoZXIgc2VydmljZSdzIGZyYW1lcy4gYHJlcXVlc3RJZGAgcmlkZXMgaW4gdGhlIG1lc3NhZ2UgYm9keSByYXRoZXIgdGhhbiB0aGVcbiAqIGNoYW5uZWwgbmFtZSBzbyBlYWNoIHBvZCBTVUJTQ1JJQkVTIGV4YWN0bHkgb25jZSBvbiBzdGFydHVwIOKAlCBubyBwZXItc3ViamVjdFxuICogc3Vic2NyaWJlL3Vuc3Vic2NyaWJlIGNodXJuIGFzIGNsaWVudHMgY29tZSBhbmQgZ28uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzc2VSZWxheUNoYW5uZWwoc2VydmljZU5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBgc3NlOnJlbGF5OiR7c2VydmljZU5hbWV9YDtcbn1cblxuLyoqIEJhY2tvZmYgYm91bmRzIGZvciB0aGUgc3RhcnR1cCBTVUJTQ1JJQkUgcmV0cnkuICovXG5jb25zdCBTVUJTQ1JJQkVfUkVUUllfTUlOX01TID0gNTAwO1xuY29uc3QgU1VCU0NSSUJFX1JFVFJZX01BWF9NUyA9IDMwXzAwMDtcblxuLyoqXG4gKiBSZWRpcy1iYWNrZWQgcmVsYXkuIFVzZXMgdGhlIGdpdmVuIGNsaWVudCBmb3IgUFVCTElTSCBhbmQgYSBgZHVwbGljYXRlKClgIGZvclxuICogU1VCU0NSSUJFIChpb3JlZGlzIGZvcmJpZHMgbWl4aW5nIHN1YnNjcmliZSB3aXRoIG5vcm1hbCBjb21tYW5kcyBvbiBvbmVcbiAqIGNvbm5lY3Rpb24pLiBQdWJsaXNoIGlzIGZpcmUtYW5kLWZvcmdldCB3aXRoIGEgc3dhbGxvd2VkIHJlamVjdGlvbjsgYSBzdWJzY3JpYmVcbiAqIGhhbmRsZXIgdGhhdCB0aHJvd3MgaXMgaXNvbGF0ZWQgc28gb25lIGJhZCBmcmFtZSBjYW4ndCBraWxsIHRoZSBzdWJzY3JpYmVyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUmVkaXNTU0VSZWxheShwdWJsaXNoZXI6IFJlZGlzUHViU3ViQ2xpZW50LCBjaGFubmVsOiBzdHJpbmcpOiBTU0VSZWxheSB7XG4gIGNvbnN0IHN1YnNjcmliZXIgPSBwdWJsaXNoZXIuZHVwbGljYXRlKCk7XG4gIC8vIEEgZHVwbGljYXRlZCBpb3JlZGlzIGNvbm5lY3Rpb24gZG9lc24ndCBpbmhlcml0IHRoZSBwdWJsaXNoZXIncyBsaXN0ZW5lcnM7XG4gIC8vIHdpdGhvdXQgaXRzIG93biwgYSBkcm9wcGVkIGNvbm5lY3Rpb24gaXMgYW4gdW5oYW5kbGVkICdlcnJvcicgdGhhdCBjcmFzaGVzIE5vZGUuXG4gIHN1YnNjcmliZXIub24oJ2Vycm9yJywgKGVycikgPT4ge1xuICAgIGxvZ2dlci53YXJuKCdTU0UgcmVsYXkgc3Vic2NyaWJlciBjb25uZWN0aW9uIGVycm9yJywgeyBjaGFubmVsLCBlcnJvcjogZXJyb3JNZXNzYWdlKGVycikgfSk7XG4gIH0pO1xuICBsZXQgY2xvc2VkID0gZmFsc2U7XG5cbiAgcmV0dXJuIHtcbiAgICBwdWJsaXNoKG1zZykge1xuICAgICAgaWYgKGNsb3NlZCkgcmV0dXJuO1xuICAgICAgLy8gRmlyZS1hbmQtZm9yZ2V0OiBuZXZlciBhd2FpdCwgbmV2ZXIgc3VyZmFjZSBhIHJlamVjdGlvbiB0byB0aGUgY2FsbGVyLlxuICAgICAgdm9pZCBQcm9taXNlLnJlc29sdmUocHVibGlzaGVyLnB1Ymxpc2goY2hhbm5lbCwgSlNPTi5zdHJpbmdpZnkobXNnKSkpLmNhdGNoKChlcnIpID0+IHtcbiAgICAgICAgbG9nZ2VyLndhcm4oJ1NTRSByZWxheSBwdWJsaXNoIGZhaWxlZCcsIHsgZXJyb3I6IGVycm9yTWVzc2FnZShlcnIpIH0pO1xuICAgICAgfSk7XG4gICAgfSxcbiAgICBzdWJzY3JpYmUoaGFuZGxlcikge1xuICAgICAgc3Vic2NyaWJlci5vbignbWVzc2FnZScsIChyZWNlaXZlZCwgbWVzc2FnZSkgPT4ge1xuICAgICAgICBpZiAocmVjZWl2ZWQgIT09IGNoYW5uZWwpIHJldHVybjtcbiAgICAgICAgbGV0IHBhcnNlZDogU1NFUmVsYXlNZXNzYWdlO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHBhcnNlZCA9IEpTT04ucGFyc2UobWVzc2FnZSkgYXMgU1NFUmVsYXlNZXNzYWdlO1xuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICBsb2dnZXIud2FybignU1NFIHJlbGF5IHJlY2VpdmVkIHVucGFyc2VhYmxlIGZyYW1lJywgeyBlcnJvcjogZXJyb3JNZXNzYWdlKGVycikgfSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgaGFuZGxlcihwYXJzZWQpO1xuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICBsb2dnZXIud2FybignU1NFIHJlbGF5IGhhbmRsZXIgdGhyZXcnLCB7IGVycm9yOiBlcnJvck1lc3NhZ2UoZXJyKSB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICAvLyBSZXRyeSB1bnRpbCBzdWJzY3JpYmVkOiBhdCBzdGFydHVwIHRoZSBjb25uZWN0aW9uIHVzdWFsbHkgaXNuJ3QgdXAgeWV0LFxuICAgICAgLy8gYW5kIGdpdmluZyB1cCBhZnRlciBvbmUgYXR0ZW1wdCBsZWZ0IHRoZSBwb2Qgb24gbG9jYWwtb25seSBkZWxpdmVyeSBmb3JcbiAgICAgIC8vIGl0cyB3aG9sZSBsaWZlLiBPbmNlIHN1YnNjcmliZWQsIGlvcmVkaXMgcmUtc3Vic2NyaWJlcyBhZnRlciByZWNvbm5lY3RzLlxuICAgICAgLy8gRGVsaWJlcmF0ZWx5IE5PVCBhd2FpdGVkIOKAlCBgc3RhcnQoKWAgbXVzdCByZXR1cm4gaW1tZWRpYXRlbHkgc28gdGhlXG4gICAgICAvLyBzZXJ2aWNlIGtlZXBzIHNlcnZpbmcgKGxvY2FsLW9ubHkpIHdoaWxlIHRoZSBzdWJzY3JpcHRpb24gY29tZXMgdXAuXG4gICAgICB2b2lkIHJldHJ5Rm9yZXZlcigoKSA9PiBQcm9taXNlLnJlc29sdmUoc3Vic2NyaWJlci5zdWJzY3JpYmUoY2hhbm5lbCkpLCB7XG4gICAgICAgIGJhc2VNczogU1VCU0NSSUJFX1JFVFJZX01JTl9NUyxcbiAgICAgICAgbWF4TXM6IFNVQlNDUklCRV9SRVRSWV9NQVhfTVMsXG4gICAgICAgIG9uQXR0ZW1wdEZhaWxlZDogKGVyciwgcmV0cnlJbk1zKSA9PiBsb2dnZXIud2FybihcbiAgICAgICAgICAnU1NFIHJlbGF5IHN1YnNjcmliZSBmYWlsZWQ7IHJldHJ5aW5nIChsb2NhbC1vbmx5IGRlbGl2ZXJ5IG1lYW53aGlsZSknLFxuICAgICAgICAgIHsgcmV0cnlJbk1zLCBlcnJvcjogZXJyb3JNZXNzYWdlKGVycikgfSxcbiAgICAgICAgKSxcbiAgICAgICAgc2hvdWxkQ29udGludWU6ICgpID0+ICFjbG9zZWQsXG4gICAgICB9KS50aGVuKCgpID0+IHtcbiAgICAgICAgLy8gYHJldHJ5Rm9yZXZlcmAgb25seSByZXNvbHZlcyBvbiBzdWNjZXNzIG9yIG9uIGFib3J0OyBgY2xvc2VkYCB0ZWxsc1xuICAgICAgICAvLyB0aGUgdHdvIGFwYXJ0LCBzbyBhIHJlbGF5IHRvcm4gZG93biBtaWQtcmV0cnkgZG9lc24ndCBjbGFpbSBpdFxuICAgICAgICAvLyBzdWJzY3JpYmVkLlxuICAgICAgICBpZiAoIWNsb3NlZCkgbG9nZ2VyLmluZm8oJ1NTRSByZWxheSBzdWJzY3JpYmVkJywgeyBjaGFubmVsIH0pO1xuICAgICAgfSk7XG4gICAgfSxcbiAgICBhc3luYyBjbG9zZSgpIHtcbiAgICAgIGNsb3NlZCA9IHRydWU7XG4gICAgICBhd2FpdCBQcm9taXNlLmFsbFNldHRsZWQoW3B1Ymxpc2hlci5xdWl0KCksIHN1YnNjcmliZXIucXVpdCgpXSk7XG4gICAgfSxcbiAgfTtcbn1cblxuLyoqXG4gKiBCdWlsZCBhIFJlZGlzLWJhY2tlZCBTU0UgcmVsYXkgZnJvbSB0aGUgc2hhcmVkIGVudiBSZWRpcywgb24gdGhpcyBzZXJ2aWNlJ3NcbiAqIG93biBjaGFubmVsIChgU0VSVklDRV9OQU1FYCkuIFJldHVybnMgbnVsbCB3aGVuIFJlZGlzIGlzbid0IGNvbmZpZ3VyZWQgc28gdGhlXG4gKiBjYWxsZXIga2VlcHMgbG9jYWwtb25seSBkZWxpdmVyeS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUVudlJlZGlzU1NFUmVsYXkoc2VydmljZU5hbWU6IHN0cmluZyA9IHByb2Nlc3MuZW52LlNFUlZJQ0VfTkFNRSB8fCAnYXBpJyk6IFNTRVJlbGF5IHwgbnVsbCB7XG4gIGNvbnN0IGNsaWVudCA9IGNyZWF0ZUVudlJlZGlzQ2xpZW50PFJlZGlzUHViU3ViQ2xpZW50Pignc3NlLXJlbGF5Jyk7XG4gIGlmICghY2xpZW50KSByZXR1cm4gbnVsbDtcbiAgY29uc3QgY2hhbm5lbCA9IHNzZVJlbGF5Q2hhbm5lbChzZXJ2aWNlTmFtZSk7XG4gIGxvZ2dlci5pbmZvKCdSZWRpcyBTU0UgcmVsYXkgaW5pdGlhbGl6ZWQgKGNyb3NzLXBvZCBmYW4tb3V0IGVuYWJsZWQpJywgeyBjaGFubmVsIH0pO1xuICByZXR1cm4gY3JlYXRlUmVkaXNTU0VSZWxheShjbGllbnQsIGNoYW5uZWwpO1xufVxuIl19
|
|
99
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3NlLXJlbGF5LmpzIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaHR0cC9zc2UtcmVsYXkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUc1RyxNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUMsV0FBVyxDQUFDLENBQUM7QUF1RHpDOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxVQUFVLGVBQWUsQ0FBQyxXQUFtQjtJQUNqRCxPQUFPLGFBQWEsV0FBVyxFQUFFLENBQUM7QUFDcEMsQ0FBQztBQUVELHNEQUFzRDtBQUN0RCxNQUFNLHNCQUFzQixHQUFHLEdBQUcsQ0FBQztBQUNuQyxNQUFNLHNCQUFzQixHQUFHLE1BQU0sQ0FBQztBQUV0Qzs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxTQUE0QixFQUFFLE9BQWU7SUFDL0UsTUFBTSxVQUFVLEdBQUcsU0FBUyxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ3pDLDZFQUE2RTtJQUM3RSxtRkFBbUY7SUFDbkYsVUFBVSxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtRQUM3QixNQUFNLENBQUMsSUFBSSxDQUFDLHVDQUF1QyxFQUFFLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxZQUFZLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzlGLENBQUMsQ0FBQyxDQUFDO0lBQ0gsSUFBSSxNQUFNLEdBQUcsS0FBSyxDQUFDO0lBRW5CLE9BQU87UUFDTCxPQUFPLENBQUMsR0FBRztZQUNULElBQUksTUFBTTtnQkFBRSxPQUFPO1lBQ25CLHlFQUF5RTtZQUN6RSxLQUFLLE9BQU8sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FB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Q0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDOUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgeyBjcmVhdGVMb2dnZXIsIGNyZWF0ZUVudlJlZGlzQ2xpZW50LCBlcnJvck1lc3NhZ2UsIHJldHJ5Rm9yZXZlciB9IGZyb20gJ0BwaXBlbGluZS1idWlsZGVyL2FwaS1jb3JlJztcbmltcG9ydCB0eXBlIHsgU1NFUGF5bG9hZCB9IGZyb20gJy4vc3NlLWNvbm5lY3Rpb24tbWFuYWdlci5qcyc7XG5cbmNvbnN0IGxvZ2dlciA9IGNyZWF0ZUxvZ2dlcignc3NlLXJlbGF5Jyk7XG5cbi8qKlxuICogQSByZWxheWVkIFNTRSBmcmFtZS4gYG9yaWdpbmAgaXMgdGhlIGlkIG9mIHRoZSBTU0VNYW5hZ2VyIGluc3RhbmNlIHRoYXRcbiAqIHB1Ymxpc2hlZCBpdCwgc28gdGhlIHB1Ymxpc2hpbmcgcG9kIGNhbiBpZ25vcmUgaXRzIG93biBlY2hvIChpdCBhbHJlYWR5IHdyb3RlXG4gKiB0aGUgZnJhbWUgdG8gaXRzIGxvY2FsIGNsaWVudHMgYmVmb3JlIHB1Ymxpc2hpbmcpLiBga2luZGAgZGlzdGluZ3Vpc2hlcyBhXG4gKiBwZXItc3ViamVjdCBgc2VuZGAgKGNhcnJpZXMgYHJlcXVlc3RJZGApIGZyb20gYSBgYnJvYWRjYXN0YCAobm8gc3ViamVjdCDigJRcbiAqIGV2ZXJ5IHBvZCByZS1lbWl0cyB0byBBTEwgb2YgaXRzIGxvY2FsIGNsaWVudHMpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNTRVJlbGF5TWVzc2FnZSB7XG4gIG9yaWdpbjogc3RyaW5nO1xuICBraW5kOiAnc2VuZCcgfCAnYnJvYWRjYXN0JztcbiAgLyoqIFByZXNlbnQgZm9yIGBzZW5kYDsgdGhlIHN0cmVhbSBzdWJqZWN0IHRoZSBwYXlsb2FkIHRhcmdldHMuICovXG4gIHJlcXVlc3RJZD86IHN0cmluZztcbiAgcGF5bG9hZDogU1NFUGF5bG9hZDtcbn1cblxuLyoqXG4gKiBDcm9zcy1wb2QgZmFuLW91dCBidXMgZm9yIFNTRSBmcmFtZXMuXG4gKlxuICogVW5kZXIgbXVsdGlwbGUgcmVwbGljYXMgdGhlIHByb2R1Y2VyIG9mIGEgbG9nIGZyYW1lIChlLmcuIGEgcGx1Z2luIGJ1aWxkXG4gKiB3b3JrZXIgb24gcG9kIEEpIGFuZCB0aGUgY29uc3VtZXIgKGEgYnJvd3NlciBFdmVudFNvdXJjZSBvbiBwb2QgQikgYXJlIG9uXG4gKiBESUZGRVJFTlQgcG9kcy4gVGhlIGluLXByb2Nlc3MgY2xpZW50IG1hcCBvbmx5IHJlYWNoZXMgdGhlIHByb2R1Y2VyJ3Mgb3duXG4gKiBwb2QsIHNvIEIncyBzdHJlYW0gd291bGQgc2lsZW50bHkgbWlzcyBmcmFtZXMuIFRoZSByZWxheSBjbG9zZXMgdGhhdDogZXZlcnlcbiAqIHBvZCBTVUJTQ1JJQkVTIG9uY2Ugb24gc3RhcnR1cCBhbmQgcmUtZW1pdHMgcmVjZWl2ZWQgZnJhbWVzIHRvIGl0cyBMT0NBTFxuICogY2xpZW50cywgd2hpbGUgYHNlbmQoKWAvYGJyb2FkY2FzdCgpYCBQVUJMSVNIIHRvIHRoZSBidXMgKGluIGFkZGl0aW9uIHRvXG4gKiB3cml0aW5nIGxvY2FsbHkpLiBUaGUgb3JpZ2luIHRhZyBwcmV2ZW50cyBhIHBvZCBmcm9tIGRvdWJsZS1kZWxpdmVyaW5nIGl0cyBvd25cbiAqIGZyYW1lIHdoZW4gaXQgcmVjZWl2ZXMgaXRzIG93biBwdWJsaXNoIGJhY2suXG4gKlxuICogQWxsIG1ldGhvZHMgYXJlIGJlc3QtZWZmb3J0IC8gZmFpbC1zYWZlOiBhIGJ1cyBvdXRhZ2UgbXVzdCBkZWdyYWRlIHRvXG4gKiBsb2NhbC1vbmx5IGRlbGl2ZXJ5ICh0b2RheSdzIHNpbmdsZS1yZXBsaWNhIGJlaGF2aW9yKSwgbmV2ZXIgY3Jhc2ggdGhlIHN0cmVhbS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTU0VSZWxheSB7XG4gIC8qKiBGaXJlLWFuZC1mb3JnZXQgcHVibGlzaCBvZiBhIGZyYW1lIHRvIGV2ZXJ5IHN1YnNjcmliZWQgcG9kLiBOZXZlciB0aHJvd3MuICovXG4gIHB1Ymxpc2gobXNnOiBTU0VSZWxheU1lc3NhZ2UpOiB2b2lkO1xuICAvKiogU3Vic2NyaWJlIHRoaXMgcG9kJ3MgcmUtZW1pdCBoYW5kbGVyLiBDYWxsZWQgb25jZSBvbiBtYW5hZ2VyIGNvbnN0cnVjdGlvbi4gKi9cbiAgc3Vic2NyaWJlKGhhbmRsZXI6IChtc2c6IFNTRVJlbGF5TWVzc2FnZSkgPT4gdm9pZCk6IHZvaWQ7XG4gIC8qKiBUZWFyIGRvd24gdGhlIHVuZGVybHlpbmcgY29ubmVjdGlvbihzKS4gKi9cbiAgY2xvc2UoKTogUHJvbWlzZTx2b2lkPjtcbn1cblxuLyoqXG4gKiBNaW5pbWFsIGlvcmVkaXMgcHViL3N1YiBzdXJmYWNlIHRoZSBSZWRpcyByZWxheSBuZWVkcy4gYHN1YnNjcmliZWAgcmVxdWlyZXMgYVxuICogREVESUNBVEVEIGNvbm5lY3Rpb24gKGEgc3Vic2NyaWJlZCBpb3JlZGlzIGNsaWVudCBjYW4ndCBydW4gb3RoZXIgY29tbWFuZHMpLFxuICogc28gdGhlIHJlbGF5IGBkdXBsaWNhdGUoKWBzIHRoZSBwdWJsaXNoZXIgZm9yIHRoZSBzdWJzY3JpYmVyIHNpZGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVkaXNQdWJTdWJDbGllbnQge1xuICBwdWJsaXNoKGNoYW5uZWw6IHN0cmluZywgbWVzc2FnZTogc3RyaW5nKTogUHJvbWlzZTxudW1iZXI+O1xuICBzdWJzY3JpYmUoLi4uY2hhbm5lbHM6IHN0cmluZ1tdKTogUHJvbWlzZTx1bmtub3duPjtcbiAgb24oZXZlbnQ6ICdtZXNzYWdlJywgY2I6IChjaGFubmVsOiBzdHJpbmcsIG1lc3NhZ2U6IHN0cmluZykgPT4gdm9pZCk6IHZvaWQ7XG4gIG9uKGV2ZW50OiAnZXJyb3InLCBjYjogKGVycjogdW5rbm93bikgPT4gdm9pZCk6IHZvaWQ7XG4gIGR1cGxpY2F0ZSgpOiBSZWRpc1B1YlN1YkNsaWVudDtcbiAgcXVpdCgpOiBQcm9taXNlPHVua25vd24+O1xufVxuXG4vKipcbiAqIFRoZSByZWxheSBjaGFubmVsIGZvciBvbmUgc2VydmljZS4gRXZlcnkgcmVwbGljYSBvZiBhIHNlcnZpY2Ugc2hhcmVzIGl0LCBhbmRcbiAqIG5vIG90aGVyIHNlcnZpY2UgZG9lczogYW4gU1NFIHN1YmplY3QgKGFuIG9yZyBpZCwgYSBidWlsZCByZXF1ZXN0SWQpIG9ubHkgaGFzXG4gKiBtZWFuaW5nIGluc2lkZSB0aGUgc2VydmljZSB3aG9zZSBjbGllbnRzIHN1YnNjcmliZWQgdG8gaXQsIHNvIGEgc2hhcmVkIGNoYW5uZWxcbiAqIG1hZGUgZXZlcnkgc2VydmljZSdzIHBvZHMgcGFyc2Ug4oCUIGFuZCByZS1lbWl0IHRvIHNhbWUtbmFtZWQgc3ViamVjdHMg4oCUIGV2ZXJ5XG4gKiBvdGhlciBzZXJ2aWNlJ3MgZnJhbWVzLiBgcmVxdWVzdElkYCByaWRlcyBpbiB0aGUgbWVzc2FnZSBib2R5IHJhdGhlciB0aGFuIHRoZVxuICogY2hhbm5lbCBuYW1lIHNvIGVhY2ggcG9kIFNVQlNDUklCRVMgZXhhY3RseSBvbmNlIG9uIHN0YXJ0dXAg4oCUIG5vIHBlci1zdWJqZWN0XG4gKiBzdWJzY3JpYmUvdW5zdWJzY3JpYmUgY2h1cm4gYXMgY2xpZW50cyBjb21lIGFuZCBnby5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNzZVJlbGF5Q2hhbm5lbChzZXJ2aWNlTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGBzc2U6cmVsYXk6JHtzZXJ2aWNlTmFtZX1gO1xufVxuXG4vKiogQmFja29mZiBib3VuZHMgZm9yIHRoZSBzdGFydHVwIFNVQlNDUklCRSByZXRyeS4gKi9cbmNvbnN0IFNVQlNDUklCRV9SRVRSWV9NSU5fTVMgPSA1MDA7XG5jb25zdCBTVUJTQ1JJQkVfUkVUUllfTUFYX01TID0gMzBfMDAwO1xuXG4vKipcbiAqIFJlZGlzLWJhY2tlZCByZWxheS4gVXNlcyB0aGUgZ2l2ZW4gY2xpZW50IGZvciBQVUJMSVNIIGFuZCBhIGBkdXBsaWNhdGUoKWAgZm9yXG4gKiBTVUJTQ1JJQkUgKGlvcmVkaXMgZm9yYmlkcyBtaXhpbmcgc3Vic2NyaWJlIHdpdGggbm9ybWFsIGNvbW1hbmRzIG9uIG9uZVxuICogY29ubmVjdGlvbikuIFB1Ymxpc2ggaXMgZmlyZS1hbmQtZm9yZ2V0IHdpdGggYSBzd2FsbG93ZWQgcmVqZWN0aW9uOyBhIHN1YnNjcmliZVxuICogaGFuZGxlciB0aGF0IHRocm93cyBpcyBpc29sYXRlZCBzbyBvbmUgYmFkIGZyYW1lIGNhbid0IGtpbGwgdGhlIHN1YnNjcmliZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVSZWRpc1NTRVJlbGF5KHB1Ymxpc2hlcjogUmVkaXNQdWJTdWJDbGllbnQsIGNoYW5uZWw6IHN0cmluZyk6IFNTRVJlbGF5IHtcbiAgY29uc3Qgc3Vic2NyaWJlciA9IHB1Ymxpc2hlci5kdXBsaWNhdGUoKTtcbiAgLy8gQSBkdXBsaWNhdGVkIGlvcmVkaXMgY29ubmVjdGlvbiBkb2Vzbid0IGluaGVyaXQgdGhlIHB1Ymxpc2hlcidzIGxpc3RlbmVycztcbiAgLy8gd2l0aG91dCBpdHMgb3duLCBhIGRyb3BwZWQgY29ubmVjdGlvbiBpcyBhbiB1bmhhbmRsZWQgJ2Vycm9yJyB0aGF0IGNyYXNoZXMgTm9kZS5cbiAgc3Vic2NyaWJlci5vbignZXJyb3InLCAoZXJyKSA9PiB7XG4gICAgbG9nZ2VyLndhcm4oJ1NTRSByZWxheSBzdWJzY3JpYmVyIGNvbm5lY3Rpb24gZXJyb3InLCB7IGNoYW5uZWwsIGVycm9yOiBlcnJvck1lc3NhZ2UoZXJyKSB9KTtcbiAgfSk7XG4gIGxldCBjbG9zZWQgPSBmYWxzZTtcblxuICByZXR1cm4ge1xuICAgIHB1Ymxpc2gobXNnKSB7XG4gICAgICBpZiAoY2xvc2VkKSByZXR1cm47XG4gICAgICAvLyBGaXJlLWFuZC1mb3JnZXQ6IG5ldmVyIGF3YWl0LCBuZXZlciBzdXJmYWNlIGEgcmVqZWN0aW9uIHRvIHRoZSBjYWxsZXIuXG4gICAgICB2b2lkIFByb21pc2UucmVzb2x2ZShwdWJsaXNoZXIucHVibGlzaChjaGFubmVsLCBKU09OLnN0cmluZ2lmeShtc2cpKSkuY2F0Y2goKGVycikgPT4ge1xuICAgICAgICBsb2dnZXIud2FybignU1NFIHJlbGF5IHB1Ymxpc2ggZmFpbGVkJywgeyBlcnJvcjogZXJyb3JNZXNzYWdlKGVycikgfSk7XG4gICAgICB9KTtcbiAgICB9LFxuICAgIHN1YnNjcmliZShoYW5kbGVyKSB7XG4gICAgICBzdWJzY3JpYmVyLm9uKCdtZXNzYWdlJywgKHJlY2VpdmVkLCBtZXNzYWdlKSA9PiB7XG4gICAgICAgIGlmIChyZWNlaXZlZCAhPT0gY2hhbm5lbCkgcmV0dXJuO1xuICAgICAgICBsZXQgcGFyc2VkOiBTU0VSZWxheU1lc3NhZ2U7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcGFyc2VkID0gSlNPTi5wYXJzZShtZXNzYWdlKSBhcyBTU0VSZWxheU1lc3NhZ2U7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgIGxvZ2dlci53YXJuKCdTU0UgcmVsYXkgcmVjZWl2ZWQgdW5wYXJzZWFibGUgZnJhbWUnLCB7IGVycm9yOiBlcnJvck1lc3NhZ2UoZXJyKSB9KTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBoYW5kbGVyKHBhcnNlZCk7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgIGxvZ2dlci53YXJuKCdTU0UgcmVsYXkgaGFuZGxlciB0aHJldycsIHsgZXJyb3I6IGVycm9yTWVzc2FnZShlcnIpIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIC8vIFJldHJ5IHVudGlsIHN1YnNjcmliZWQ6IGF0IHN0YXJ0dXAgdGhlIGNvbm5lY3Rpb24gdXN1YWxseSBpc24ndCB1cCB5ZXQsXG4gICAgICAvLyBhbmQgZ2l2aW5nIHVwIGFmdGVyIG9uZSBhdHRlbXB0IGxlZnQgdGhlIHBvZCBvbiBsb2NhbC1vbmx5IGRlbGl2ZXJ5IGZvclxuICAgICAgLy8gaXRzIHdob2xlIGxpZmUuIE9uY2Ugc3Vic2NyaWJlZCwgaW9yZWRpcyByZS1zdWJzY3JpYmVzIGFmdGVyIHJlY29ubmVjdHMuXG4gICAgICAvLyBEZWxpYmVyYXRlbHkgTk9UIGF3YWl0ZWQg4oCUIGBzdGFydCgpYCBtdXN0IHJldHVybiBpbW1lZGlhdGVseSBzbyB0aGVcbiAgICAgIC8vIHNlcnZpY2Uga2VlcHMgc2VydmluZyAobG9jYWwtb25seSkgd2hpbGUgdGhlIHN1YnNjcmlwdGlvbiBjb21lcyB1cC5cbiAgICAgIHZvaWQgcmV0cnlGb3JldmVyKCgpID0+IFByb21pc2UucmVzb2x2ZShzdWJzY3JpYmVyLnN1YnNjcmliZShjaGFubmVsKSksIHtcbiAgICAgICAgYmFzZU1zOiBTVUJTQ1JJQkVfUkVUUllfTUlOX01TLFxuICAgICAgICBtYXhNczogU1VCU0NSSUJFX1JFVFJZX01BWF9NUyxcbiAgICAgICAgb25BdHRlbXB0RmFpbGVkOiAoZXJyLCByZXRyeUluTXMpID0+IGxvZ2dlci53YXJuKFxuICAgICAgICAgICdTU0UgcmVsYXkgc3Vic2NyaWJlIGZhaWxlZDsgcmV0cnlpbmcgKGxvY2FsLW9ubHkgZGVsaXZlcnkgbWVhbndoaWxlKScsXG4gICAgICAgICAgeyByZXRyeUluTXMsIGVycm9yOiBlcnJvck1lc3NhZ2UoZXJyKSB9LFxuICAgICAgICApLFxuICAgICAgICBzaG91bGRDb250aW51ZTogKCkgPT4gIWNsb3NlZCxcbiAgICAgIH0pLnRoZW4oKCkgPT4ge1xuICAgICAgICAvLyBgcmV0cnlGb3JldmVyYCBvbmx5IHJlc29sdmVzIG9uIHN1Y2Nlc3Mgb3Igb24gYWJvcnQ7IGBjbG9zZWRgIHRlbGxzXG4gICAgICAgIC8vIHRoZSB0d28gYXBhcnQsIHNvIGEgcmVsYXkgdG9ybiBkb3duIG1pZC1yZXRyeSBkb2Vzbid0IGNsYWltIGl0XG4gICAgICAgIC8vIHN1YnNjcmliZWQuXG4gICAgICAgIGlmICghY2xvc2VkKSBsb2dnZXIuaW5mbygnU1NFIHJlbGF5IHN1YnNjcmliZWQnLCB7IGNoYW5uZWwgfSk7XG4gICAgICB9KTtcbiAgICB9LFxuICAgIGFzeW5jIGNsb3NlKCkge1xuICAgICAgY2xvc2VkID0gdHJ1ZTtcbiAgICAgIGF3YWl0IFByb21pc2UuYWxsU2V0dGxlZChbcHVibGlzaGVyLnF1aXQoKSwgc3Vic2NyaWJlci5xdWl0KCldKTtcbiAgICB9LFxuICB9O1xufVxuXG4vKipcbiAqIEJ1aWxkIGEgUmVkaXMtYmFja2VkIFNTRSByZWxheSBmcm9tIHRoZSBzaGFyZWQgZW52IFJlZGlzLCBvbiB0aGlzIHNlcnZpY2Unc1xuICogb3duIGNoYW5uZWwgKGBTRVJWSUNFX05BTUVgKS4gUmV0dXJucyBudWxsIHdoZW4gUmVkaXMgaXNuJ3QgY29uZmlndXJlZCBzbyB0aGVcbiAqIGNhbGxlciBrZWVwcyBsb2NhbC1vbmx5IGRlbGl2ZXJ5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRW52UmVkaXNTU0VSZWxheShzZXJ2aWNlTmFtZTogc3RyaW5nID0gcHJvY2Vzcy5lbnYuU0VSVklDRV9OQU1FIHx8ICdhcGknKTogU1NFUmVsYXkgfCBudWxsIHtcbiAgY29uc3QgY2xpZW50ID0gY3JlYXRlRW52UmVkaXNDbGllbnQ8UmVkaXNQdWJTdWJDbGllbnQ+KCdzc2UtcmVsYXknKTtcbiAgaWYgKCFjbGllbnQpIHJldHVybiBudWxsO1xuICBjb25zdCBjaGFubmVsID0gc3NlUmVsYXlDaGFubmVsKHNlcnZpY2VOYW1lKTtcbiAgbG9nZ2VyLmluZm8oJ1JlZGlzIFNTRSByZWxheSBpbml0aWFsaXplZCAoY3Jvc3MtcG9kIGZhbi1vdXQgZW5hYmxlZCknLCB7IGNoYW5uZWwgfSk7XG4gIHJldHVybiBjcmVhdGVSZWRpc1NTRVJlbGF5KGNsaWVudCwgY2hhbm5lbCk7XG59XG4iXX0=
|
|
@@ -167,4 +167,4 @@ export class SseTicketBroker {
|
|
|
167
167
|
this.storeInstance?.stop();
|
|
168
168
|
}
|
|
169
169
|
}
|
|
170
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3NlLXRpY2tldC1icm9rZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaHR0cC9zc2UtdGlja2V0LWJyb2tlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDOzs7Ozs7Ozs7R0FTRztBQUVILE9BQU8sRUFBRSxZQUFZLEVBQUUsMEJBQTBCLEVBQUUsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQXVCLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzlKLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUUvQyxNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUMsYUFBYSxDQUFDLENBQUM7QUEwQjNDOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLGtCQUFrQixDQUFDLFNBQWlCO0lBQ2xELE9BQU8sU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7QUFDbkQsQ0FBQztBQUVEOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLFVBQVUsY0FBYyxDQUFDLEtBQWE7SUFDMUMsT0FBTyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7QUFDcEMsQ0FBQztBQUVELE1BQU0sT0FBTyxlQUFlO0lBQ2xCLGFBQWEsQ0FBa0I7SUFDdkMsb0VBQW9FO0lBQzVELFNBQVMsR0FBRyxLQUFLLENBQUM7SUFDVCxRQUFRLENBQVM7SUFDakIsU0FBUyxDQUFTO0lBQ2xCLEtBQUssQ0FBUztJQUNkLFVBQVUsQ0FBUztJQUVwQyxZQUFZLE9BQU8sR0FBMkIsRUFBRTtRQUM5QyxNQUFNLElBQUksR0FBRyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQ2xELElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDLFNB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QyxDQUFDO1lBQ25FLFVBQVUsQ0FBQywyQkFBMkIsRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFDcEQsT0FBTyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUM7UUFDL0IsQ0FBQztRQUNELE9BQU8sRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDN0MsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7Ozs7OztPQWlCRztJQUNILEtBQUssQ0FBQyxhQUFhLENBQUMsUUFBZ0IsRUFBRSxTQUFpQjtRQUNyRCxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsYUFBYTtRQUNoRSxJQUFJLENBQUMsTUFBTTtZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQ3pCLHVFQUF1RTtRQUN2RSx3RUFBd0U7UUFDeEUsNkNBQTZDO1FBQzdDLElBQUksTUFBTSxDQUFDLE9BQU8sS0FBSyxrQkFBa0IsQ0FBQyxTQUFTLENBQUM7WUFBRSxPQUFPLElBQUksQ0FBQztRQUNsRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRUQ7aUNBQzZCO0lBQzdCLFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxTQUFTO1lBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUNqRCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuLyoqXG4gKiBNaW50aW5nIGFuZCByZWRlZW1pbmcgdGhlIHNob3J0LWxpdmVkIFNTRSB0aWNrZXRzIHRoYXQgYXV0aG9yaXplIGEgbG9nXG4gKiBzdHJlYW0sIHBsdXMgdGhlIHN0cmVhbS1vd25lcnNoaXAgYmluZGluZyB0aG9zZSBtaW50cyBhcmUgY2hlY2tlZCBhZ2FpbnN0LlxuICpcbiAqIFNlcGFyYXRlIGZyb20ge0BsaW5rIFNTRU1hbmFnZXJ9IGJlY2F1c2UgaXQgc2hhcmVzIG5vdGhpbmcgd2l0aCB0aGVcbiAqIGNvbm5lY3Rpb24gcmVnaXN0cnk6IGl0cyBzdGF0ZSBsaXZlcyBlbnRpcmVseSBpbiB0aGUgaW5qZWN0ZWRcbiAqIHtAbGluayBTc2VUaWNrZXRTdG9yZX0gKFJlZGlzIGluIGEgbXVsdGktcG9kIGRlcGxveSksIGFuZCBldmVyeSBydWxlIGluIGhlcmVcbiAqIGlzIGFuIEFVVEhPUklaQVRJT04gcnVsZSDigJQgd2hvIG1heSBvcGVuIHdoaWNoIHN1YmplY3QncyBzdHJlYW0g4oCUIHdoaWNoIGlzXG4gKiBlYXNpZXIgdG8gYXVkaXQgYXMgb25lIHVuaXQgdGhhbiBpbnRlcmxlYXZlZCB3aXRoIGNvbm5lY3Rpb24gYm9va2tlZXBpbmcuXG4gKi9cblxuaW1wb3J0IHsgY3JlYXRlTG9nZ2VyLCBjcmVhdGVNZW1vcnlTc2VUaWNrZXRTdG9yZSwgZW52U3NlVGlja2V0Q2FwcywgU1NFX1RJQ0tFVF9UVExfTVMsIHR5cGUgU3NlVGlja2V0U3RvcmUsIGVycm9yTWVzc2FnZSB9IGZyb20gJ0BwaXBlbGluZS1idWlsZGVyL2FwaS1jb3JlJztcbmltcG9ydCB7IGluY0NvdW50ZXIgfSBmcm9tICcuLi9hcGkvbWV0cmljcy5qcyc7XG5cbmNvbnN0IGxvZ2dlciA9IGNyZWF0ZUxvZ2dlcignc3NlLXRpY2tldHMnKTtcblxuLyoqIFJlc3VsdCBvZiB7QGxpbmsgU3NlVGlja2V0QnJva2VyLmNyZWF0ZVRpY2tldH0uICovXG5leHBvcnQgdHlwZSBDcmVhdGVUaWNrZXRSZXN1bHQgPVxuICB8IHsgb2s6IHRydWU7IHRpY2tldDogc3RyaW5nIH1cbiAgfCB7IG9rOiBmYWxzZTsgcmVhc29uOiAnb3JnLWxpbWl0JyB8ICdjYXBhY2l0eScgfCAnZm9yYmlkZGVuJyB9O1xuXG5leHBvcnQgaW50ZXJmYWNlIFNzZVRpY2tldEJyb2tlck9wdGlvbnMge1xuICAvKiogVGlja2V0ICsgc3RyZWFtLW93bmVyc2hpcCBiYWNrZW5kLiBEZWZhdWx0cyB0byBhbiBpbi1tZW1vcnkgc3RvcmUgKHNpbmdsZVxuICAgKiAgcmVwbGljYSBvbmx5KSwgYnVpbHQgb24gZmlyc3QgdXNlLiBJbmplY3QgYW4gYXBpLWNvcmVcbiAgICogIGBjcmVhdGVFbnZTc2VUaWNrZXRTdG9yZSguLi4pYCBzbyBtaW50L3JlZGVlbSBhbmQgc3RyZWFtIG93bmVyc2hpcCB3b3JrXG4gICAqICBhY3Jvc3MgcG9kcy4gKi9cbiAgc3RvcmU/OiBTc2VUaWNrZXRTdG9yZTtcbiAgLyoqIENhcCBvbiBsaXZlIHRpY2tldHMgYWNyb3NzIHRoZSBwcm9jZXNzLCBmb3IgdGhlIERFRkFVTFQgaW4tbWVtb3J5IHN0b3JlLlxuICAgKiAgSWdub3JlZCB3aGVuIGBzdG9yZWAgaXMgaW5qZWN0ZWQgKHRoZSBzdG9yZSBjYXJyaWVzIGl0cyBvd24gY2FwcykuICovXG4gIG1heFRvdGFsPzogbnVtYmVyO1xuICAvKiogUGVyLW9yZyBjYXAgb24gbGl2ZSB0aWNrZXRzLCBmb3IgdGhlIERFRkFVTFQgaW4tbWVtb3J5IHN0b3JlLiBJZ25vcmVkIHdoZW5cbiAgICogIGBzdG9yZWAgaXMgaW5qZWN0ZWQuICovXG4gIG1heFBlck9yZz86IG51bWJlcjtcbiAgLyoqIFRpY2tldCBUVEwgaW4gbXMgZm9yIHRoZSBkZWZhdWx0IHN0b3JlLiAqL1xuICB0dGxNcz86IG51bWJlcjtcbiAgLyoqIFRUTCBmb3IgYSBzdHJlYW0tb3duZXJzaGlwIGJpbmRpbmcgKGRlZmF1bHQgMWgpLiBMb25nIGVub3VnaCB0byBvdXRsaXZlIGFcbiAgICogIGJ1aWxkOyB0aGUgcHJvZHVjZXIgcmUtYmluZHMgYXMgbmVlZGVkLiAqL1xuICBvd25lclR0bE1zPzogbnVtYmVyO1xufVxuXG4vKipcbiAqIENhbm9uaWNhbCBmb3JtIG9mIGEgc3RyZWFtIHN1YmplY3QgaWQgZm9yIG1hcC9zdG9yZSBrZXlzOiB0aGUgaWQgaXMgYWxsb3dlZFxuICogaW4gdHdvIHJlbmRlcmluZ3MgKGEgZGFzaGVkIGFwaS1zZXJ2ZXIgdXVpZCBhbmQgbmdpbngncyB1bmRhc2hlZFxuICogYCRyZXF1ZXN0X2lkYCksIGFuZCBub3JtYWxpemluZyBtYWtlcyB0aGVtIGNvbXBhcmUgZXF1YWwuIENhbGxlcnMgYXJlXG4gKiBleHBlY3RlZCB0byBoYXZlIGFscmVhZHkgZm9ybWF0LXZhbGlkYXRlZCBhZ2FpbnN0IGBTU0VfUkVRVUVTVF9JRF9SRWAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVSZXF1ZXN0SWQocmVxdWVzdElkOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcmVxdWVzdElkLnJlcGxhY2UoLy0vZywgJycpLnRvTG93ZXJDYXNlKCk7XG59XG5cbi8qKlxuICogQ2Fub25pY2FsIGZvcm0gb2YgYW4gb3JnSWQgZm9yIG93bmVyc2hpcCBlcXVhbGl0eSBjaGVja3M6IHRyaW1tZWQgYW5kXG4gKiBsb3dlcmNhc2VkLiBUaGUgc3RyZWFtIFBST0RVQ0VSIChiaW5kU3RyZWFtT3duZXIpIGFuZCB0aGUgdGlja2V0LW1pbnRpbmdcbiAqIENPTlNVTUVSIChjcmVhdGVUaWNrZXQpIHJ1biBpbiBkaWZmZXJlbnQgc2VydmljZXMsIHNvIGEgY2FzaW5nIC8gd2hpdGVzcGFjZVxuICogZHJpZnQgYmV0d2VlbiBob3cgZWFjaCByZW5kZXJzIHRoZSBzYW1lIG9yZyB3b3VsZCBvdGhlcndpc2UgbWFrZSB0aGUgb3duZXJcbiAqIGNvbXBhcmlzb24gaW4ge0BsaW5rIFNzZVRpY2tldEJyb2tlci5jcmVhdGVUaWNrZXR9IGZhbHNlLWBmb3JiaWRkZW5gIHRoZSByZWFsXG4gKiBvd25lci4gTm9ybWFsaXppbmcgYm90aCBzaWRlcyDigJQgbWlycm9yaW5nIHtAbGluayBub3JtYWxpemVSZXF1ZXN0SWR9IOKAlCBjbG9zZXMgdGhhdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZU9yZ0lkKG9yZ0lkOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gb3JnSWQudHJpbSgpLnRvTG93ZXJDYXNlKCk7XG59XG5cbmV4cG9ydCBjbGFzcyBTc2VUaWNrZXRCcm9rZXIge1xuICBwcml2YXRlIHN0b3JlSW5zdGFuY2U/OiBTc2VUaWNrZXRTdG9yZTtcbiAgLyoqIFRydWUgd2hlbiB0aGlzIGJyb2tlciBidWlsdCBpdHMgc3RvcmUgKHNvIHNodXRkb3duIHN0b3BzIGl0KS4gKi9cbiAgcHJpdmF0ZSBvd25zU3RvcmUgPSBmYWxzZTtcbiAgcHJpdmF0ZSByZWFkb25seSBtYXhUb3RhbDogbnVtYmVyO1xuICBwcml2YXRlIHJlYWRvbmx5IG1heFBlck9yZzogbnVtYmVyO1xuICBwcml2YXRlIHJlYWRvbmx5IHR0bE1zOiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgb3duZXJUdGxNczogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IFNzZVRpY2tldEJyb2tlck9wdGlvbnMgPSB7fSkge1xuICAgIGNvbnN0IGNhcHMgPSBlbnZTc2VUaWNrZXRDYXBzKCk7XG4gICAgdGhpcy5tYXhUb3RhbCA9IG9wdGlvbnMubWF4VG90YWwgPz8gY2Fwcy5tYXhUb3RhbDtcbiAgICB0aGlzLm1heFBlck9yZyA9IG9wdGlvbnMubWF4UGVyT3JnID8/IGNhcHMubWF4UGVyT3JnO1xuICAgIHRoaXMudHRsTXMgPSBvcHRpb25zLnR0bE1zID8/IFNTRV9USUNLRVRfVFRMX01TO1xuICAgIHRoaXMub3duZXJUdGxNcyA9IG9wdGlvbnMub3duZXJUdGxNcyA/PyAzXzYwMF8wMDA7IC8vIDEgaG91clxuICAgIHRoaXMuc3RvcmVJbnN0YW5jZSA9IG9wdGlvbnMuc3RvcmU7XG4gIH1cblxuICAvKiogVGhlIHRpY2tldCBzdG9yZSwgYnVpbGRpbmcgdGhlIGluLW1lbW9yeSBkZWZhdWx0IG9uIGZpcnN0IHVzZS4gKi9cbiAgcHJpdmF0ZSBnZXQgc3RvcmUoKTogU3NlVGlja2V0U3RvcmUge1xuICAgIGlmICghdGhpcy5zdG9yZUluc3RhbmNlKSB7XG4gICAgICB0aGlzLnN0b3JlSW5zdGFuY2UgPSBjcmVhdGVNZW1vcnlTc2VUaWNrZXRTdG9yZSh7XG4gICAgICAgIHR0bE1zOiB0aGlzLnR0bE1zLFxuICAgICAgICBtYXhUb3RhbDogdGhpcy5tYXhUb3RhbCxcbiAgICAgICAgbWF4UGVyT3JnOiB0aGlzLm1heFBlck9yZyxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5vd25zU3RvcmUgPSB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5zdG9yZUluc3RhbmNlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlY29yZCB0aGUgb3JnIHRoYXQgT1dOUyBhIHN0cmVhbSBzdWJqZWN0LiBUaGUgc3RyZWFtIFBST0RVQ0VSIGNhbGxzIHRoaXNcbiAgICogd2hlbiBpdCBjcmVhdGVzIGEgYnVpbGQtbG9nIHN0cmVhbSBzbyB0aGF0IHRpY2tldCBtaW50aW5nIGNhbiBhc3NlcnQgdGhlXG4gICAqIGNhbGxlcidzIG9yZyBvd25zIHRoZSBzdWJqZWN0IChzZWUge0BsaW5rIGNyZWF0ZVRpY2tldH0pLiBCYWNrZWQgYnkgdGhlXG4gICAqIGluamVjdGVkIHRpY2tldCBzdG9yZSwgc28gd2hlbiBhIFJlZGlzIHN0b3JlIGlzIHdpcmVkIHRoZSBwbGF0Zm9ybSBwcm9kdWNlclxuICAgKiAoYSBkaWZmZXJlbnQgc2VydmljZSBzaGFyaW5nIHRoZSBzYW1lIFJlZGlzKSBjYW4gYmluZCBvd25lcnNoaXAgdGhhdCB0aGlzXG4gICAqIHNlcnZpY2UgcmVhZHMg4oCUIGNsb3NpbmcgdGhlIGNyb3NzLXRlbmFudCBhdHRhY2ggZ2FwIHdoZXJlIGFueSBvcmcgY291bGQgbWludFxuICAgKiBhIHRpY2tldCBmb3IgYSBndWVzc2VkIHJlcXVlc3RJZC5cbiAgICpcbiAgICogQHBhcmFtIHJlcXVlc3RJZCAtIFRoZSBzdHJlYW0gc3ViamVjdCAoZm9ybWF0LXZhbGlkYXRlZCBieSB0aGUgY2FsbGVyKS5cbiAgICogQHBhcmFtIG9yZ0lkIC0gVGhlIG93bmluZyBvcmcgKG5vcm1hbGl6ZWQgaW50ZXJuYWxseSB2aWEgbm9ybWFsaXplT3JnSWQpLlxuICAgKi9cbiAgYXN5bmMgYmluZFN0cmVhbU93bmVyKHJlcXVlc3RJZDogc3RyaW5nLCBvcmdJZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5zdG9yZS5iaW5kT3duZXIobm9ybWFsaXplUmVxdWVzdElkKHJlcXVlc3RJZCksIG5vcm1hbGl6ZU9yZ0lkKG9yZ0lkKSwgdGhpcy5vd25lclR0bE1zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNaW50IGEgc2hvcnQtbGl2ZWQsIHNpbmdsZS11c2UgU1NFIHRpY2tldCBib3VuZCB0byBgb3JnSWRgIEFORCBhIHNwZWNpZmljXG4gICAqIHN0cmVhbSBzdWJqZWN0IChgcmVxdWVzdElkYCkuIENsaWVudHMgUE9TVCB0byBvYnRhaW4gb25lIChKV1QtYXV0aGVudGljYXRlZClcbiAgICogZm9yIHRoZSBleGFjdCBzdHJlYW0gdGhleSBpbnRlbmQgdG8gb3BlbiwgdGhlbiBvcGVuIHRoZSBFdmVudFNvdXJjZSB3aXRoXG4gICAqIGA/dGlja2V0PTx0PmAgc28gdGhlIEpXVCBuZXZlciBsYW5kcyBpbiBhIHF1ZXJ5IHN0cmluZyAvIGFjY2VzcyBsb2cuIFRoZVxuICAgKiB0aWNrZXQgY2FuIHRoZW4gb25seSBiZSBjb25zdW1lZCB0byBvcGVuIHRoYXQgb25lIHN1YmplY3QncyBzdHJlYW0g4oCUIHNlZVxuICAgKiB7QGxpbmsgY29uc3VtZVRpY2tldH0g4oCUIHdoaWNoIGlzIHdoYXQgZW5mb3JjZXMgcGVyLXN1YmplY3QgYXV0aG9yaXphdGlvbi5cbiAgICpcbiAgICogT1JHLU9XTkVSU0hJUDogaWYgYSBzdHJlYW0gb3duZXIgaGFzIGJlZW4gYm91bmQgZm9yIHRoaXMgc3ViamVjdCAodmlhXG4gICAqIHtAbGluayBiaW5kU3RyZWFtT3duZXJ9KSBhbmQgaXQgaXMgYSBESUZGRVJFTlQgb3JnLCBtaW50aW5nIGlzIHJlZnVzZWRcbiAgICogKGByZWFzb246ICdmb3JiaWRkZW4nYCkg4oCUIGFuIG9yZyBjYW5ub3QgbWludCBhIHRpY2tldCBmb3IgYW5vdGhlciBvcmcnc1xuICAgKiBzdHJlYW0gZXZlbiBpZiBpdCBndWVzc2VzIHRoZSByZXF1ZXN0SWQuIFdoZW4gbm8gb3duZXIgaXMgYm91bmQgKHByb2R1Y2VyXG4gICAqIHdpcmluZyBub3QgeWV0IHByZXNlbnQpLCBtaW50aW5nIGZhbGxzIGJhY2sgdG8gYmluZGluZyB0aGUgdGlja2V0IHRvIHRoZVxuICAgKiBjYWxsZXIncyBvd24gb3JnLCBwcmVzZXJ2aW5nIGN1cnJlbnQgYmVoYXZpb3IuXG4gICAqXG4gICAqIEJvdW5kZWQgYnkgdGhlIHRpY2tldCBzdG9yZSdzIGxpdmUtdGlja2V0IGNhcHMgKHRvdGFsIGFuZCBwZXIgb3JnKS4gQW5cbiAgICogb3duZXJzaGlwIGxvb2t1cCB0aGUgc3RvcmUgY2FuJ3QgYW5zd2VyIGlzIHJlZnVzZWQgYXMgYGNhcGFjaXR5YC5cbiAgICpcbiAgICogQHBhcmFtIG9yZ0lkIC0gT3duaW5nIG9yZyAobm9ybWFsaXplZCBpbnRlcm5hbGx5IHZpYSBub3JtYWxpemVPcmdJZCkuXG4gICAqIEBwYXJhbSByZXF1ZXN0SWQgLSBUaGUgYnVpbGQtbG9nIHN0cmVhbSBzdWJqZWN0IHRoaXMgdGlja2V0IGF1dGhvcml6ZXMuXG4gICAqICAgVGhlIGNhbGxlciBtdXN0IGhhdmUgZm9ybWF0LXZhbGlkYXRlZCBpdCAoc2VlIGBTU0VfUkVRVUVTVF9JRF9SRWApLlxuICAgKiBAcmV0dXJucyBgeyBvazogdHJ1ZSwgdGlja2V0IH1gIG9uIHN1Y2Nlc3MsIG9yIGB7IG9rOiBmYWxzZSwgcmVhc29uIH1gXG4gICAqICAgd2hlcmUgcmVhc29uIGlzIGAnb3JnLWxpbWl0J2AsIGAnY2FwYWNpdHknYCwgb3IgYCdmb3JiaWRkZW4nYC5cbiAgICovXG4gIGFzeW5jIGNyZWF0ZVRpY2tldChvcmdJZDogc3RyaW5nLCByZXF1ZXN0SWQ6IHN0cmluZyk6IFByb21pc2U8Q3JlYXRlVGlja2V0UmVzdWx0PiB7XG4gICAgLy8gT3duZXJzaGlwIGdhdGUgZmlyc3Qg4oCUIGEgY3Jvc3MtdGVuYW50IG1pbnQgYXR0ZW1wdCBzaG91bGQgbmV2ZXIgZXZlblxuICAgIC8vIGNvbnN1bWUgY2FwIGJ1ZGdldC4gT25seSBlbmZvcmNlZCB3aGVuIGFuIG93bmVyIGlzIGFjdHVhbGx5IGJvdW5kLiBCb3RoXG4gICAgLy8gc2lkZXMgYXJlIG9yZy1ub3JtYWxpemVkIHNvIGEgcHJvZHVjZXIvY29uc3VtZXIgY2FzaW5nIGRyaWZ0IGNhbid0XG4gICAgLy8gZmFsc2UtYGZvcmJpZGRlbmAgdGhlIHJlYWwgb3duZXIgKG1pcnJvcnMgcmVxdWVzdElkIG5vcm1hbGl6YXRpb24pLlxuICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSBub3JtYWxpemVSZXF1ZXN0SWQocmVxdWVzdElkKTtcbiAgICBjb25zdCBub3JtYWxpemVkT3JnID0gbm9ybWFsaXplT3JnSWQob3JnSWQpO1xuICAgIGxldCBvd25lcjogc3RyaW5nIHwgbnVsbDtcbiAgICB0cnkge1xuICAgICAgb3duZXIgPSBhd2FpdCB0aGlzLnN0b3JlLmdldE93bmVyKG5vcm1hbGl6ZWQpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgLy8gQ2FuJ3QgdGVsbCB3aG8gb3ducyB0aGUgc3ViamVjdCDigJQgcmVmdXNlIHJhdGhlciB0aGFuIG1pbnQgdW5jaGVja2VkLlxuICAgICAgbG9nZ2VyLndhcm4oJ1NTRSB0aWNrZXQgcmVmdXNlZDogc3RyZWFtIG93bmVyc2hpcCBsb29rdXAgZmFpbGVkJywgeyBlcnJvcjogZXJyb3JNZXNzYWdlKGVycikgfSk7XG4gICAgICBpbmNDb3VudGVyKCdzc2VfdGlja2V0X3JlamVjdGVkX3RvdGFsJywgeyByZWFzb246ICdjYXBhY2l0eScgfSk7XG4gICAgICByZXR1cm4geyBvazogZmFsc2UsIHJlYXNvbjogJ2NhcGFjaXR5JyB9O1xuICAgIH1cbiAgICBpZiAob3duZXIgJiYgb3duZXIgIT09IG5vcm1hbGl6ZWRPcmcpIHtcbiAgICAgIGxvZ2dlci53YXJuKGBTU0UgdGlja2V0IHJlZnVzZWQ6IG9yZyAke25vcm1hbGl6ZWRPcmd9IGRvZXMgbm90IG93biBzdHJlYW0gc3ViamVjdGApO1xuICAgICAgaW5jQ291bnRlcignc3NlX3RpY2tldF9yZWplY3RlZF90b3RhbCcsIHsgcmVhc29uOiAnZm9yYmlkZGVuJyB9KTtcbiAgICAgIHJldHVybiB7IG9rOiBmYWxzZSwgcmVhc29uOiAnZm9yYmlkZGVuJyB9O1xuICAgIH1cblxuICAgIGNvbnN0IGlzc3VlZCA9IGF3YWl0IHRoaXMuc3RvcmUuaXNzdWUobm9ybWFsaXplZE9yZywgbm9ybWFsaXplZCk7XG4gICAgaWYgKCFpc3N1ZWQub2spIHtcbiAgICAgIGNvbnN0IHJlYXNvbiA9IGlzc3VlZC5yZWFzb24gPT09ICdvcmcnID8gJ29yZy1saW1pdCcgOiAnY2FwYWNpdHknO1xuICAgICAgbG9nZ2VyLndhcm4oYFNTRSB0aWNrZXQgcmVmdXNlZCAoJHtyZWFzb259KSBmb3IgJHtub3JtYWxpemVkT3JnfWApO1xuICAgICAgaW5jQ291bnRlcignc3NlX3RpY2tldF9yZWplY3RlZF90b3RhbCcsIHsgcmVhc29uIH0pO1xuICAgICAgcmV0dXJuIHsgb2s6IGZhbHNlLCByZWFzb24gfTtcbiAgICB9XG4gICAgcmV0dXJuIHsgb2s6IHRydWUsIHRpY2tldDogaXNzdWVkLnRpY2tldCB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlIGFuZCBDT05TVU1FIGEgdGlja2V0IGZvciBhIHNwZWNpZmljIHN0cmVhbSBzdWJqZWN0LiBTaW5nbGUtdXNlOlxuICAgKiB0aGUgdGlja2V0IGlzIGRlbGV0ZWQgd2hldGhlciBvciBub3QgaXQgdHVybnMgb3V0IHRvIGJlIHZhbGlkLCBzbyBhIHJlcGxheVxuICAgKiBvZiB0aGUgc2FtZSB2YWx1ZSBhbHdheXMgZmFpbHMuIFJldHVybnMgdGhlIGJvdW5kIG9yZyBvbiBzdWNjZXNzLCBvciBudWxsXG4gICAqIHdoZW4gdGhlIHRpY2tldCBpcyB1bmtub3duIC8gYWxyZWFkeS11c2VkIC8gZXhwaXJlZCAvIE9SIHdhcyBtaW50ZWQgZm9yIGFcbiAgICogRElGRkVSRU5UIGByZXF1ZXN0SWRgIHRoYW4gdGhlIG9uZSBiZWluZyBvcGVuZWQuXG4gICAqXG4gICAqIFRoZSBzdWJqZWN0IGNoZWNrIGlzIHRoZSBhdXRob3JpemF0aW9uIGZpeDogd2l0aG91dCBpdCwgYSB0aWNrZXQgbWludGVkIGZvclxuICAgKiBvbmUgc3RyZWFtIGNvdWxkIGJlIHByZXNlbnRlZCB0byBvcGVuIEFOWSBzdHJlYW0gdGhlIGhvbGRlcidzIG9yZyBjb3VsZFxuICAgKiBuYW1lLCBsZXR0aW5nIGFuIGF1dGhlbnRpY2F0ZWQgb3JnIGF0dGFjaCB0byBhbm90aGVyIG9yZydzIGxvZyBzdHJlYW0gYnlcbiAgICogZ3Vlc3NpbmcgaXRzIHJlcXVlc3RJZC4gVGhlIGdlbmVyaWMgNDAxIHRoZSBjYWxsZXIgcmV0dXJucyBkb2VzIG5vdFxuICAgKiBkaXN0aW5ndWlzaCBcInVua25vd24gdGlja2V0XCIgZnJvbSBcIndyb25nIHN1YmplY3RcIiwgc28gaXQgbGVha3Mgbm90aGluZ1xuICAgKiBhYm91dCB3aGljaCByZXF1ZXN0SWRzIGV4aXN0LlxuICAgKlxuICAgKiBAcGFyYW0gdGlja2V0SWQgLSBUaGUgb3BhcXVlIHRpY2tldCB2YWx1ZSBmcm9tIGA/dGlja2V0PWAuXG4gICAqIEBwYXJhbSByZXF1ZXN0SWQgLSBUaGUgc3RyZWFtIHN1YmplY3QgZnJvbSB0aGUgVVJMIHBhdGggKGA6cmVxdWVzdElkYCksXG4gICAqICAgYWxyZWFkeSBmb3JtYXQtdmFsaWRhdGVkIGJ5IHRoZSBjYWxsZXIuXG4gICAqL1xuICBhc3luYyBjb25zdW1lVGlja2V0KHRpY2tldElkOiBzdHJpbmcsIHJlcXVlc3RJZDogc3RyaW5nKTogUHJvbWlzZTx7IG9yZ0lkOiBzdHJpbmcgfSB8IG51bGw+IHtcbiAgICBjb25zdCB0aWNrZXQgPSBhd2FpdCB0aGlzLnN0b3JlLmNvbnN1bWUodGlja2V0SWQpOyAvLyBzaW5nbGUtdXNlXG4gICAgaWYgKCF0aWNrZXQpIHJldHVybiBudWxsO1xuICAgIC8vIFN1YmplY3QgYmluZGluZyDigJQgcmVqZWN0IGEgdGlja2V0IHByZXNlbnRlZCBmb3IgYSBzdWJqZWN0IGl0IHdhcyBub3RcbiAgICAvLyBtaW50ZWQgZm9yIChpbmNsdWRpbmcgYW4gdW5ib3VuZCwgb3JnLWNoYW5uZWwgdGlja2V0KS4gQm90aCBzaWRlcyBhcmVcbiAgICAvLyBub3JtYWxpemVkIHNvIGRhc2hlZC91bmRhc2hlZCBmb3JtcyBtYXRjaC5cbiAgICBpZiAodGlja2V0LnN1YmplY3QgIT09IG5vcm1hbGl6ZVJlcXVlc3RJZChyZXF1ZXN0SWQpKSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4geyBvcmdJZDogdGlja2V0Lm9yZ0lkIH07XG4gIH1cblxuICAvKiogU3RvcCB0aGUgc3RvcmUsIGJ1dCBvbmx5IHRoZSBvbmUgdGhpcyBicm9rZXIgYnVpbHQg4oCUIGFuIGluamVjdGVkIHN0b3JlIGlzXG4gICAqICB0aGUgY2FsbGVyJ3MgdG8gY2xvc2UuICovXG4gIHNodXRkb3duKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm93bnNTdG9yZSkgdGhpcy5zdG9yZUluc3RhbmNlPy5zdG9wKCk7XG4gIH1cbn1cbiJdfQ==
|
|
170
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3NlLXRpY2tldC1icm9rZXIuanMiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9odHRwL3NzZS10aWNrZXQtYnJva2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEM7Ozs7Ozs7OztHQVNHO0FBRUgsT0FBTyxFQUFFLFlBQVksRUFBRSwwQkFBMEIsRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBdUIsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDOUosT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRS9DLE1BQU0sTUFBTSxHQUFHLFlBQVksQ0FBQyxhQUFhLENBQUMsQ0FBQztBQTBCM0M7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsU0FBaUI7SUFDbEQsT0FBTyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztBQUNuRCxDQUFDO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILE1BQU0sVUFBVSxjQUFjLENBQUMsS0FBYTtJQUMxQyxPQUFPLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztBQUNwQyxDQUFDO0FBRUQsTUFBTSxPQUFPLGVBQWU7SUFDbEIsYUFBYSxDQUFrQjtJQUN2QyxvRUFBb0U7SUFDNUQsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUNULFFBQVEsQ0FBUztJQUNqQixTQUFTLENBQVM7SUFDbEIsS0FBSyxDQUFTO0lBQ2QsVUFBVSxDQUFTO0lBRXBDLFlBQVksT0FBTyxHQUEyQixFQUFFO1FBQzlDLE1BQU0sSUFBSSxHQUFHLGdCQUFnQixFQUFFLENBQUM7UUFDaEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDbEQsSUFBSSxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUMsU0FBUyxJQUFJLElBQUksQ0FB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VSxDQUFDLDJCQUEyQixFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztZQUNwRCxPQUFPLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQztRQUMvQixDQUFDO1FBQ0QsT0FBTyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUM3QyxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7O09BaUJHO0lBQ0gsS0FBSyxDQUFDLGFBQWEsQ0FBQyxRQUFnQixFQUFFLFNBQWlCO1FBQ3JELE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxhQUFhO1FBQ2hFLElBQUksQ0FBQyxNQUFNO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFDekIsdUVBQXVFO1FBQ3ZFLHdFQUF3RTtRQUN4RSw2Q0FBNkM7UUFDN0MsSUFBSSxNQUFNLENBQUMsT0FBTyxLQUFLLGtCQUFrQixDQUFDLFNBQVMsQ0FBQztZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQ2xFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFRDtpQ0FDNkI7SUFDN0IsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLFNBQVM7WUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLElBQUksRUFBRSxDQUFDO0lBQ2pELENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG4vKipcbiAqIE1pbnRpbmcgYW5kIHJlZGVlbWluZyB0aGUgc2hvcnQtbGl2ZWQgU1NFIHRpY2tldHMgdGhhdCBhdXRob3JpemUgYSBsb2dcbiAqIHN0cmVhbSwgcGx1cyB0aGUgc3RyZWFtLW93bmVyc2hpcCBiaW5kaW5nIHRob3NlIG1pbnRzIGFyZSBjaGVja2VkIGFnYWluc3QuXG4gKlxuICogU2VwYXJhdGUgZnJvbSB7QGxpbmsgU1NFTWFuYWdlcn0gYmVjYXVzZSBpdCBzaGFyZXMgbm90aGluZyB3aXRoIHRoZVxuICogY29ubmVjdGlvbiByZWdpc3RyeTogaXRzIHN0YXRlIGxpdmVzIGVudGlyZWx5IGluIHRoZSBpbmplY3RlZFxuICoge0BsaW5rIFNzZVRpY2tldFN0b3JlfSAoUmVkaXMgaW4gYSBtdWx0aS1wb2QgZGVwbG95KSwgYW5kIGV2ZXJ5IHJ1bGUgaW4gaGVyZVxuICogaXMgYW4gQVVUSE9SSVpBVElPTiBydWxlIOKAlCB3aG8gbWF5IG9wZW4gd2hpY2ggc3ViamVjdCdzIHN0cmVhbSDigJQgd2hpY2ggaXNcbiAqIGVhc2llciB0byBhdWRpdCBhcyBvbmUgdW5pdCB0aGFuIGludGVybGVhdmVkIHdpdGggY29ubmVjdGlvbiBib29ra2VlcGluZy5cbiAqL1xuXG5pbXBvcnQgeyBjcmVhdGVMb2dnZXIsIGNyZWF0ZU1lbW9yeVNzZVRpY2tldFN0b3JlLCBlbnZTc2VUaWNrZXRDYXBzLCBTU0VfVElDS0VUX1RUTF9NUywgdHlwZSBTc2VUaWNrZXRTdG9yZSwgZXJyb3JNZXNzYWdlIH0gZnJvbSAnQHBpcGVsaW5lLWJ1aWxkZXIvYXBpLWNvcmUnO1xuaW1wb3J0IHsgaW5jQ291bnRlciB9IGZyb20gJy4uL2FwaS9tZXRyaWNzLmpzJztcblxuY29uc3QgbG9nZ2VyID0gY3JlYXRlTG9nZ2VyKCdzc2UtdGlja2V0cycpO1xuXG4vKiogUmVzdWx0IG9mIHtAbGluayBTc2VUaWNrZXRCcm9rZXIuY3JlYXRlVGlja2V0fS4gKi9cbmV4cG9ydCB0eXBlIENyZWF0ZVRpY2tldFJlc3VsdCA9XG4gIHwgeyBvazogdHJ1ZTsgdGlja2V0OiBzdHJpbmcgfVxuICB8IHsgb2s6IGZhbHNlOyByZWFzb246ICdvcmctbGltaXQnIHwgJ2NhcGFjaXR5JyB8ICdmb3JiaWRkZW4nIH07XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3NlVGlja2V0QnJva2VyT3B0aW9ucyB7XG4gIC8qKiBUaWNrZXQgKyBzdHJlYW0tb3duZXJzaGlwIGJhY2tlbmQuIERlZmF1bHRzIHRvIGFuIGluLW1lbW9yeSBzdG9yZSAoc2luZ2xlXG4gICAqICByZXBsaWNhIG9ubHkpLCBidWlsdCBvbiBmaXJzdCB1c2UuIEluamVjdCBhbiBhcGktY29yZVxuICAgKiAgYGNyZWF0ZUVudlNzZVRpY2tldFN0b3JlKC4uLilgIHNvIG1pbnQvcmVkZWVtIGFuZCBzdHJlYW0gb3duZXJzaGlwIHdvcmtcbiAgICogIGFjcm9zcyBwb2RzLiAqL1xuICBzdG9yZT86IFNzZVRpY2tldFN0b3JlO1xuICAvKiogQ2FwIG9uIGxpdmUgdGlja2V0cyBhY3Jvc3MgdGhlIHByb2Nlc3MsIGZvciB0aGUgREVGQVVMVCBpbi1tZW1vcnkgc3RvcmUuXG4gICAqICBJZ25vcmVkIHdoZW4gYHN0b3JlYCBpcyBpbmplY3RlZCAodGhlIHN0b3JlIGNhcnJpZXMgaXRzIG93biBjYXBzKS4gKi9cbiAgbWF4VG90YWw/OiBudW1iZXI7XG4gIC8qKiBQZXItb3JnIGNhcCBvbiBsaXZlIHRpY2tldHMsIGZvciB0aGUgREVGQVVMVCBpbi1tZW1vcnkgc3RvcmUuIElnbm9yZWQgd2hlblxuICAgKiAgYHN0b3JlYCBpcyBpbmplY3RlZC4gKi9cbiAgbWF4UGVyT3JnPzogbnVtYmVyO1xuICAvKiogVGlja2V0IFRUTCBpbiBtcyBmb3IgdGhlIGRlZmF1bHQgc3RvcmUuICovXG4gIHR0bE1zPzogbnVtYmVyO1xuICAvKiogVFRMIGZvciBhIHN0cmVhbS1vd25lcnNoaXAgYmluZGluZyAoZGVmYXVsdCAxaCkuIExvbmcgZW5vdWdoIHRvIG91dGxpdmUgYVxuICAgKiAgYnVpbGQ7IHRoZSBwcm9kdWNlciByZS1iaW5kcyBhcyBuZWVkZWQuICovXG4gIG93bmVyVHRsTXM/OiBudW1iZXI7XG59XG5cbi8qKlxuICogQ2Fub25pY2FsIGZvcm0gb2YgYSBzdHJlYW0gc3ViamVjdCBpZCBmb3IgbWFwL3N0b3JlIGtleXM6IHRoZSBpZCBpcyBhbGxvd2VkXG4gKiBpbiB0d28gcmVuZGVyaW5ncyAoYSBkYXNoZWQgYXBpLXNlcnZlciB1dWlkIGFuZCBuZ2lueCdzIHVuZGFzaGVkXG4gKiBgJHJlcXVlc3RfaWRgKSwgYW5kIG5vcm1hbGl6aW5nIG1ha2VzIHRoZW0gY29tcGFyZSBlcXVhbC4gQ2FsbGVycyBhcmVcbiAqIGV4cGVjdGVkIHRvIGhhdmUgYWxyZWFkeSBmb3JtYXQtdmFsaWRhdGVkIGFnYWluc3QgYFNTRV9SRVFVRVNUX0lEX1JFYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZVJlcXVlc3RJZChyZXF1ZXN0SWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiByZXF1ZXN0SWQucmVwbGFjZSgvLS9nLCAnJykudG9Mb3dlckNhc2UoKTtcbn1cblxuLyoqXG4gKiBDYW5vbmljYWwgZm9ybSBvZiBhbiBvcmdJZCBmb3Igb3duZXJzaGlwIGVxdWFsaXR5IGNoZWNrczogdHJpbW1lZCBhbmRcbiAqIGxvd2VyY2FzZWQuIFRoZSBzdHJlYW0gUFJPRFVDRVIgKGJpbmRTdHJlYW1Pd25lcikgYW5kIHRoZSB0aWNrZXQtbWludGluZ1xuICogQ09OU1VNRVIgKGNyZWF0ZVRpY2tldCkgcnVuIGluIGRpZmZlcmVudCBzZXJ2aWNlcywgc28gYSBjYXNpbmcgLyB3aGl0ZXNwYWNlXG4gKiBkcmlmdCBiZXR3ZWVuIGhvdyBlYWNoIHJlbmRlcnMgdGhlIHNhbWUgb3JnIHdvdWxkIG90aGVyd2lzZSBtYWtlIHRoZSBvd25lclxuICogY29tcGFyaXNvbiBpbiB7QGxpbmsgU3NlVGlja2V0QnJva2VyLmNyZWF0ZVRpY2tldH0gZmFsc2UtYGZvcmJpZGRlbmAgdGhlIHJlYWxcbiAqIG93bmVyLiBOb3JtYWxpemluZyBib3RoIHNpZGVzIOKAlCBtaXJyb3Jpbmcge0BsaW5rIG5vcm1hbGl6ZVJlcXVlc3RJZH0g4oCUIGNsb3NlcyB0aGF0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplT3JnSWQob3JnSWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBvcmdJZC50cmltKCkudG9Mb3dlckNhc2UoKTtcbn1cblxuZXhwb3J0IGNsYXNzIFNzZVRpY2tldEJyb2tlciB7XG4gIHByaXZhdGUgc3RvcmVJbnN0YW5jZT86IFNzZVRpY2tldFN0b3JlO1xuICAvKiogVHJ1ZSB3aGVuIHRoaXMgYnJva2VyIGJ1aWx0IGl0cyBzdG9yZSAoc28gc2h1dGRvd24gc3RvcHMgaXQpLiAqL1xuICBwcml2YXRlIG93bnNTdG9yZSA9IGZhbHNlO1xuICBwcml2YXRlIHJlYWRvbmx5IG1heFRvdGFsOiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgbWF4UGVyT3JnOiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgdHRsTXM6IG51bWJlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBvd25lclR0bE1zOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3Iob3B0aW9uczogU3NlVGlja2V0QnJva2VyT3B0aW9ucyA9IHt9KSB7XG4gICAgY29uc3QgY2FwcyA9IGVudlNzZVRpY2tldENhcHMoKTtcbiAgICB0aGlzLm1heFRvdGFsID0gb3B0aW9ucy5tYXhUb3RhbCA/PyBjYXBzLm1heFRvdGFsO1xuICAgIHRoaXMubWF4UGVyT3JnID0gb3B0aW9ucy5tYXhQZXJPcmcgPz8gY2Fwcy5tYXhQZXJPcmc7XG4gICAgdGhpcy50dGxNcyA9IG9wdGlvbnMudHRsTXMgPz8gU1NFX1RJQ0tFVF9UVExfTVM7XG4gICAgdGhpcy5vd25lclR0bE1zID0gb3B0aW9ucy5vd25lclR0bE1zID8/IDNfNjAwXzAwMDsgLy8gMSBob3VyXG4gICAgdGhpcy5zdG9yZUluc3RhbmNlID0gb3B0aW9ucy5zdG9yZTtcbiAgfVxuXG4gIC8qKiBUaGUgdGlja2V0IHN0b3JlLCBidWlsZGluZyB0aGUgaW4tbWVtb3J5IGRlZmF1bHQgb24gZmlyc3QgdXNlLiAqL1xuICBwcml2YXRlIGdldCBzdG9yZSgpOiBTc2VUaWNrZXRTdG9yZSB7XG4gICAgaWYgKCF0aGlzLnN0b3JlSW5zdGFuY2UpIHtcbiAgICAgIHRoaXMuc3RvcmVJbnN0YW5jZSA9IGNyZWF0ZU1lbW9yeVNzZVRpY2tldFN0b3JlKHtcbiAgICAgICAgdHRsTXM6IHRoaXMudHRsTXMsXG4gICAgICAgIG1heFRvdGFsOiB0aGlzLm1heFRvdGFsLFxuICAgICAgICBtYXhQZXJPcmc6IHRoaXMubWF4UGVyT3JnLFxuICAgICAgfSk7XG4gICAgICB0aGlzLm93bnNTdG9yZSA9IHRydWU7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnN0b3JlSW5zdGFuY2U7XG4gIH1cblxuICAvKipcbiAgICogUmVjb3JkIHRoZSBvcmcgdGhhdCBPV05TIGEgc3RyZWFtIHN1YmplY3QuIFRoZSBzdHJlYW0gUFJPRFVDRVIgY2FsbHMgdGhpc1xuICAgKiB3aGVuIGl0IGNyZWF0ZXMgYSBidWlsZC1sb2cgc3RyZWFtIHNvIHRoYXQgdGlja2V0IG1pbnRpbmcgY2FuIGFzc2VydCB0aGVcbiAgICogY2FsbGVyJ3Mgb3JnIG93bnMgdGhlIHN1YmplY3QgKHNlZSB7QGxpbmsgY3JlYXRlVGlja2V0fSkuIEJhY2tlZCBieSB0aGVcbiAgICogaW5qZWN0ZWQgdGlja2V0IHN0b3JlLCBzbyB3aGVuIGEgUmVkaXMgc3RvcmUgaXMgd2lyZWQgdGhlIHBsYXRmb3JtIHByb2R1Y2VyXG4gICAqIChhIGRpZmZlcmVudCBzZXJ2aWNlIHNoYXJpbmcgdGhlIHNhbWUgUmVkaXMpIGNhbiBiaW5kIG93bmVyc2hpcCB0aGF0IHRoaXNcbiAgICogc2VydmljZSByZWFkcyDigJQgY2xvc2luZyB0aGUgY3Jvc3MtdGVuYW50IGF0dGFjaCBnYXAgd2hlcmUgYW55IG9yZyBjb3VsZCBtaW50XG4gICAqIGEgdGlja2V0IGZvciBhIGd1ZXNzZWQgcmVxdWVzdElkLlxuICAgKlxuICAgKiBAcGFyYW0gcmVxdWVzdElkIC0gVGhlIHN0cmVhbSBzdWJqZWN0IChmb3JtYXQtdmFsaWRhdGVkIGJ5IHRoZSBjYWxsZXIpLlxuICAgKiBAcGFyYW0gb3JnSWQgLSBUaGUgb3duaW5nIG9yZyAobm9ybWFsaXplZCBpbnRlcm5hbGx5IHZpYSBub3JtYWxpemVPcmdJZCkuXG4gICAqL1xuICBhc3luYyBiaW5kU3RyZWFtT3duZXIocmVxdWVzdElkOiBzdHJpbmcsIG9yZ0lkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLnN0b3JlLmJpbmRPd25lcihub3JtYWxpemVSZXF1ZXN0SWQocmVxdWVzdElkKSwgbm9ybWFsaXplT3JnSWQob3JnSWQpLCB0aGlzLm93bmVyVHRsTXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1pbnQgYSBzaG9ydC1saXZlZCwgc2luZ2xlLXVzZSBTU0UgdGlja2V0IGJvdW5kIHRvIGBvcmdJZGAgQU5EIGEgc3BlY2lmaWNcbiAgICogc3RyZWFtIHN1YmplY3QgKGByZXF1ZXN0SWRgKS4gQ2xpZW50cyBQT1NUIHRvIG9idGFpbiBvbmUgKEpXVC1hdXRoZW50aWNhdGVkKVxuICAgKiBmb3IgdGhlIGV4YWN0IHN0cmVhbSB0aGV5IGludGVuZCB0byBvcGVuLCB0aGVuIG9wZW4gdGhlIEV2ZW50U291cmNlIHdpdGhcbiAgICogYD90aWNrZXQ9PHQ+YCBzbyB0aGUgSldUIG5ldmVyIGxhbmRzIGluIGEgcXVlcnkgc3RyaW5nIC8gYWNjZXNzIGxvZy4gVGhlXG4gICAqIHRpY2tldCBjYW4gdGhlbiBvbmx5IGJlIGNvbnN1bWVkIHRvIG9wZW4gdGhhdCBvbmUgc3ViamVjdCdzIHN0cmVhbSDigJQgc2VlXG4gICAqIHtAbGluayBjb25zdW1lVGlja2V0fSDigJQgd2hpY2ggaXMgd2hhdCBlbmZvcmNlcyBwZXItc3ViamVjdCBhdXRob3JpemF0aW9uLlxuICAgKlxuICAgKiBPUkctT1dORVJTSElQOiBpZiBhIHN0cmVhbSBvd25lciBoYXMgYmVlbiBib3VuZCBmb3IgdGhpcyBzdWJqZWN0ICh2aWFcbiAgICoge0BsaW5rIGJpbmRTdHJlYW1Pd25lcn0pIGFuZCBpdCBpcyBhIERJRkZFUkVOVCBvcmcsIG1pbnRpbmcgaXMgcmVmdXNlZFxuICAgKiAoYHJlYXNvbjogJ2ZvcmJpZGRlbidgKSDigJQgYW4gb3JnIGNhbm5vdCBtaW50IGEgdGlja2V0IGZvciBhbm90aGVyIG9yZydzXG4gICAqIHN0cmVhbSBldmVuIGlmIGl0IGd1ZXNzZXMgdGhlIHJlcXVlc3RJZC4gV2hlbiBubyBvd25lciBpcyBib3VuZCAocHJvZHVjZXJcbiAgICogd2lyaW5nIG5vdCB5ZXQgcHJlc2VudCksIG1pbnRpbmcgZmFsbHMgYmFjayB0byBiaW5kaW5nIHRoZSB0aWNrZXQgdG8gdGhlXG4gICAqIGNhbGxlcidzIG93biBvcmcsIHByZXNlcnZpbmcgY3VycmVudCBiZWhhdmlvci5cbiAgICpcbiAgICogQm91bmRlZCBieSB0aGUgdGlja2V0IHN0b3JlJ3MgbGl2ZS10aWNrZXQgY2FwcyAodG90YWwgYW5kIHBlciBvcmcpLiBBblxuICAgKiBvd25lcnNoaXAgbG9va3VwIHRoZSBzdG9yZSBjYW4ndCBhbnN3ZXIgaXMgcmVmdXNlZCBhcyBgY2FwYWNpdHlgLlxuICAgKlxuICAgKiBAcGFyYW0gb3JnSWQgLSBPd25pbmcgb3JnIChub3JtYWxpemVkIGludGVybmFsbHkgdmlhIG5vcm1hbGl6ZU9yZ0lkKS5cbiAgICogQHBhcmFtIHJlcXVlc3RJZCAtIFRoZSBidWlsZC1sb2cgc3RyZWFtIHN1YmplY3QgdGhpcyB0aWNrZXQgYXV0aG9yaXplcy5cbiAgICogICBUaGUgY2FsbGVyIG11c3QgaGF2ZSBmb3JtYXQtdmFsaWRhdGVkIGl0IChzZWUgYFNTRV9SRVFVRVNUX0lEX1JFYCkuXG4gICAqIEByZXR1cm5zIGB7IG9rOiB0cnVlLCB0aWNrZXQgfWAgb24gc3VjY2Vzcywgb3IgYHsgb2s6IGZhbHNlLCByZWFzb24gfWBcbiAgICogICB3aGVyZSByZWFzb24gaXMgYCdvcmctbGltaXQnYCwgYCdjYXBhY2l0eSdgLCBvciBgJ2ZvcmJpZGRlbidgLlxuICAgKi9cbiAgYXN5bmMgY3JlYXRlVGlja2V0KG9yZ0lkOiBzdHJpbmcsIHJlcXVlc3RJZDogc3RyaW5nKTogUHJvbWlzZTxDcmVhdGVUaWNrZXRSZXN1bHQ+IHtcbiAgICAvLyBPd25lcnNoaXAgZ2F0ZSBmaXJzdCDigJQgYSBjcm9zcy10ZW5hbnQgbWludCBhdHRlbXB0IHNob3VsZCBuZXZlciBldmVuXG4gICAgLy8gY29uc3VtZSBjYXAgYnVkZ2V0LiBPbmx5IGVuZm9yY2VkIHdoZW4gYW4gb3duZXIgaXMgYWN0dWFsbHkgYm91bmQuIEJvdGhcbiAgICAvLyBzaWRlcyBhcmUgb3JnLW5vcm1hbGl6ZWQgc28gYSBwcm9kdWNlci9jb25zdW1lciBjYXNpbmcgZHJpZnQgY2FuJ3RcbiAgICAvLyBmYWxzZS1gZm9yYmlkZGVuYCB0aGUgcmVhbCBvd25lciAobWlycm9ycyByZXF1ZXN0SWQgbm9ybWFsaXphdGlvbikuXG4gICAgY29uc3Qgbm9ybWFsaXplZCA9IG5vcm1hbGl6ZVJlcXVlc3RJZChyZXF1ZXN0SWQpO1xuICAgIGNvbnN0IG5vcm1hbGl6ZWRPcmcgPSBub3JtYWxpemVPcmdJZChvcmdJZCk7XG4gICAgbGV0IG93bmVyOiBzdHJpbmcgfCBudWxsO1xuICAgIHRyeSB7XG4gICAgICBvd25lciA9IGF3YWl0IHRoaXMuc3RvcmUuZ2V0T3duZXIobm9ybWFsaXplZCk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAvLyBDYW4ndCB0ZWxsIHdobyBvd25zIHRoZSBzdWJqZWN0IOKAlCByZWZ1c2UgcmF0aGVyIHRoYW4gbWludCB1bmNoZWNrZWQuXG4gICAgICBsb2dnZXIud2FybignU1NFIHRpY2tldCByZWZ1c2VkOiBzdHJlYW0gb3duZXJzaGlwIGxvb2t1cCBmYWlsZWQnLCB7IGVycm9yOiBlcnJvck1lc3NhZ2UoZXJyKSB9KTtcbiAgICAgIGluY0NvdW50ZXIoJ3NzZV90aWNrZXRfcmVqZWN0ZWRfdG90YWwnLCB7IHJlYXNvbjogJ2NhcGFjaXR5JyB9KTtcbiAgICAgIHJldHVybiB7IG9rOiBmYWxzZSwgcmVhc29uOiAnY2FwYWNpdHknIH07XG4gICAgfVxuICAgIGlmIChvd25lciAmJiBvd25lciAhPT0gbm9ybWFsaXplZE9yZykge1xuICAgICAgbG9nZ2VyLndhcm4oYFNTRSB0aWNrZXQgcmVmdXNlZDogb3JnICR7bm9ybWFsaXplZE9yZ30gZG9lcyBub3Qgb3duIHN0cmVhbSBzdWJqZWN0YCk7XG4gICAgICBpbmNDb3VudGVyKCdzc2VfdGlja2V0X3JlamVjdGVkX3RvdGFsJywgeyByZWFzb246ICdmb3JiaWRkZW4nIH0pO1xuICAgICAgcmV0dXJuIHsgb2s6IGZhbHNlLCByZWFzb246ICdmb3JiaWRkZW4nIH07XG4gICAgfVxuXG4gICAgY29uc3QgaXNzdWVkID0gYXdhaXQgdGhpcy5zdG9yZS5pc3N1ZShub3JtYWxpemVkT3JnLCBub3JtYWxpemVkKTtcbiAgICBpZiAoIWlzc3VlZC5vaykge1xuICAgICAgY29uc3QgcmVhc29uID0gaXNzdWVkLnJlYXNvbiA9PT0gJ29yZycgPyAnb3JnLWxpbWl0JyA6ICdjYXBhY2l0eSc7XG4gICAgICBsb2dnZXIud2FybihgU1NFIHRpY2tldCByZWZ1c2VkICgke3JlYXNvbn0pIGZvciAke25vcm1hbGl6ZWRPcmd9YCk7XG4gICAgICBpbmNDb3VudGVyKCdzc2VfdGlja2V0X3JlamVjdGVkX3RvdGFsJywgeyByZWFzb24gfSk7XG4gICAgICByZXR1cm4geyBvazogZmFsc2UsIHJlYXNvbiB9O1xuICAgIH1cbiAgICByZXR1cm4geyBvazogdHJ1ZSwgdGlja2V0OiBpc3N1ZWQudGlja2V0IH07XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGUgYW5kIENPTlNVTUUgYSB0aWNrZXQgZm9yIGEgc3BlY2lmaWMgc3RyZWFtIHN1YmplY3QuIFNpbmdsZS11c2U6XG4gICAqIHRoZSB0aWNrZXQgaXMgZGVsZXRlZCB3aGV0aGVyIG9yIG5vdCBpdCB0dXJucyBvdXQgdG8gYmUgdmFsaWQsIHNvIGEgcmVwbGF5XG4gICAqIG9mIHRoZSBzYW1lIHZhbHVlIGFsd2F5cyBmYWlscy4gUmV0dXJucyB0aGUgYm91bmQgb3JnIG9uIHN1Y2Nlc3MsIG9yIG51bGxcbiAgICogd2hlbiB0aGUgdGlja2V0IGlzIHVua25vd24gLyBhbHJlYWR5LXVzZWQgLyBleHBpcmVkIC8gT1Igd2FzIG1pbnRlZCBmb3IgYVxuICAgKiBESUZGRVJFTlQgYHJlcXVlc3RJZGAgdGhhbiB0aGUgb25lIGJlaW5nIG9wZW5lZC5cbiAgICpcbiAgICogVGhlIHN1YmplY3QgY2hlY2sgaXMgdGhlIGF1dGhvcml6YXRpb24gZml4OiB3aXRob3V0IGl0LCBhIHRpY2tldCBtaW50ZWQgZm9yXG4gICAqIG9uZSBzdHJlYW0gY291bGQgYmUgcHJlc2VudGVkIHRvIG9wZW4gQU5ZIHN0cmVhbSB0aGUgaG9sZGVyJ3Mgb3JnIGNvdWxkXG4gICAqIG5hbWUsIGxldHRpbmcgYW4gYXV0aGVudGljYXRlZCBvcmcgYXR0YWNoIHRvIGFub3RoZXIgb3JnJ3MgbG9nIHN0cmVhbSBieVxuICAgKiBndWVzc2luZyBpdHMgcmVxdWVzdElkLiBUaGUgZ2VuZXJpYyA0MDEgdGhlIGNhbGxlciByZXR1cm5zIGRvZXMgbm90XG4gICAqIGRpc3Rpbmd1aXNoIFwidW5rbm93biB0aWNrZXRcIiBmcm9tIFwid3Jvbmcgc3ViamVjdFwiLCBzbyBpdCBsZWFrcyBub3RoaW5nXG4gICAqIGFib3V0IHdoaWNoIHJlcXVlc3RJZHMgZXhpc3QuXG4gICAqXG4gICAqIEBwYXJhbSB0aWNrZXRJZCAtIFRoZSBvcGFxdWUgdGlja2V0IHZhbHVlIGZyb20gYD90aWNrZXQ9YC5cbiAgICogQHBhcmFtIHJlcXVlc3RJZCAtIFRoZSBzdHJlYW0gc3ViamVjdCBmcm9tIHRoZSBVUkwgcGF0aCAoYDpyZXF1ZXN0SWRgKSxcbiAgICogICBhbHJlYWR5IGZvcm1hdC12YWxpZGF0ZWQgYnkgdGhlIGNhbGxlci5cbiAgICovXG4gIGFzeW5jIGNvbnN1bWVUaWNrZXQodGlja2V0SWQ6IHN0cmluZywgcmVxdWVzdElkOiBzdHJpbmcpOiBQcm9taXNlPHsgb3JnSWQ6IHN0cmluZyB9IHwgbnVsbD4ge1xuICAgIGNvbnN0IHRpY2tldCA9IGF3YWl0IHRoaXMuc3RvcmUuY29uc3VtZSh0aWNrZXRJZCk7IC8vIHNpbmdsZS11c2VcbiAgICBpZiAoIXRpY2tldCkgcmV0dXJuIG51bGw7XG4gICAgLy8gU3ViamVjdCBiaW5kaW5nIOKAlCByZWplY3QgYSB0aWNrZXQgcHJlc2VudGVkIGZvciBhIHN1YmplY3QgaXQgd2FzIG5vdFxuICAgIC8vIG1pbnRlZCBmb3IgKGluY2x1ZGluZyBhbiB1bmJvdW5kLCBvcmctY2hhbm5lbCB0aWNrZXQpLiBCb3RoIHNpZGVzIGFyZVxuICAgIC8vIG5vcm1hbGl6ZWQgc28gZGFzaGVkL3VuZGFzaGVkIGZvcm1zIG1hdGNoLlxuICAgIGlmICh0aWNrZXQuc3ViamVjdCAhPT0gbm9ybWFsaXplUmVxdWVzdElkKHJlcXVlc3RJZCkpIHJldHVybiBudWxsO1xuICAgIHJldHVybiB7IG9yZ0lkOiB0aWNrZXQub3JnSWQgfTtcbiAgfVxuXG4gIC8qKiBTdG9wIHRoZSBzdG9yZSwgYnV0IG9ubHkgdGhlIG9uZSB0aGlzIGJyb2tlciBidWlsdCDigJQgYW4gaW5qZWN0ZWQgc3RvcmUgaXNcbiAgICogIHRoZSBjYWxsZXIncyB0byBjbG9zZS4gKi9cbiAgc2h1dGRvd24oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMub3duc1N0b3JlKSB0aGlzLnN0b3JlSW5zdGFuY2U/LnN0b3AoKTtcbiAgfVxufVxuIl19
|
|
@@ -52,4 +52,4 @@ export function registerSseTicketChannel(app, opts) {
|
|
|
52
52
|
logger.info('SSE client connected', { channel: label, orgId: ticket.orgId });
|
|
53
53
|
});
|
|
54
54
|
}
|
|
55
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3NlLXRpY2tldC1jaGFubmVsLmpzIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaHR0cC9zc2UtdGlja2V0LWNoYW5uZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQXVCLE1BQU0sNEJBQTRCLENBQUM7QUFJaEosTUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDLG9CQUFvQixDQUFDLENBQUM7QUFpQmxEOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsTUFBTSxVQUFVLHdCQUF3QixDQUFDLEdBQVksRUFBRSxJQUE2QjtJQUNsRixNQUFNLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxZQUFZLEdBQUcsRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDO0lBQzNGLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUV6QixHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxXQUFXLEVBQUUsR0FBRyxZQUFZLEVBQUUsS0FBSyxFQUFFLEdBQVksRUFBRSxHQUFhLEVBQUUsRUFBRTtRQUN2RixNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsSUFBSSxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsQ0FBQztRQUN0RCxJQUFJLENBQUMsS0FBSztZQUFFLE9BQU8sU0FBUyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsNEJBQTRCLEVBQUUsU0FBUyxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDakcsTUFBTSxNQUFNLEdBQUcsTUFBTSxXQUFXLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDZixPQUFPLE1BQU0sQ0FBQyxNQUFNLEtBQUssT0FBTztnQkFDOUIsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLE9BQU8sS0FBSywyQkFBMkIsRUFBRSxTQUFTLENBQUMsY0FBYyxDQUFDO2dCQUN4RixDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsWUFBWSxLQUFLLGlCQUFpQixFQUFFLFNBQVMsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN4RixDQUFDO1FBQ0QsT0FBTyxXQUFXLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUMxRCxDQUFDLENBQUMsQ0FBQztJQUVILEdBQUcsQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLEtBQUssRUFBRSxHQUFZLEVBQUUsR0FBYSxFQUFFLEVBQUU7UUFDeEQsTUFBTSxRQUFRLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUE0QixDQUFDO1FBQ3hELElBQUksQ0FBQyxRQUFRO1lBQUUsT0FBTyxLQUFLLFNBQVMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLDBCQUEwQixFQUFFLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNuRyxNQUFNLE1BQU0sR0FBRyxNQUFNLFdBQVcsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxvQkFBb0I7UUFDeEUsNEVBQTRFO1FBQzVFLHlFQUF5RTtRQUN6RSxJQUFJLENBQUMsTUFBTSxJQUFJLE1BQU0sQ0FBQyxPQUFPLEtBQUssU0FBUztZQUFFLE9BQU8sS0FBSyxTQUFTLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSwyQkFBMkIsRUFBRSxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDbEksNkVBQTZFO1FBQzdFLDZFQUE2RTtRQUM3RSxnRkFBZ0Y7UUFDaEYsTUFBTSxLQUFLLEdBQUcsVUFBVSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3pELElBQUksQ0FBQyxLQUFLO1lBQUUsT0FBTyxLQUFLLFNBQVMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLFlBQVksS0FBSyxjQUFjLEVBQUUsU0FBUyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3ZHLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNyQixHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDbkIsTUFBTSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQy9FLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgeyByZXF1aXJlQXV0aCwgc2VuZFN1Y2Nlc3MsIHNlbmRFcnJvciwgRXJyb3JDb2RlLCBjcmVhdGVMb2dnZXIsIHdyaXRlU3NlSGVhZGVycywgdHlwZSBTc2VUaWNrZXRTdG9yZSB9IGZyb20gJ0BwaXBlbGluZS1idWlsZGVyL2FwaS1jb3JlJztcbmltcG9ydCB0eXBlIHsgRXhwcmVzcywgUmVxdWVzdCwgUmVxdWVzdEhhbmRsZXIsIFJlc3BvbnNlIH0gZnJvbSAnZXhwcmVzcyc7XG5pbXBvcnQgdHlwZSB7IFNTRU1hbmFnZXIgfSBmcm9tICcuL3NzZS1jb25uZWN0aW9uLW1hbmFnZXIuanMnO1xuXG5jb25zdCBsb2dnZXIgPSBjcmVhdGVMb2dnZXIoJ3NzZS10aWNrZXQtY2hhbm5lbCcpO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNzZVRpY2tldENoYW5uZWxPcHRpb25zIHtcbiAgLyoqIFBPU1Qgcm91dGUgdGhhdCBleGNoYW5nZXMgdGhlIEpXVCBmb3IgYSBzaW5nbGUtdXNlIHRpY2tldCAoZS5nLiAnL21lc3NhZ2VzL25vdGlmaWNhdGlvbnMvdGlja2V0JykuICovXG4gIHRpY2tldFBhdGg6IHN0cmluZztcbiAgLyoqIEdFVCByb3V0ZSB0aGF0IHJlZGVlbXMgdGhlIHRpY2tldCBhbmQgb3BlbnMgdGhlIEV2ZW50U291cmNlIChlLmcuICcvbWVzc2FnZXMvbm90aWZpY2F0aW9ucycpLiAqL1xuICBzdHJlYW1QYXRoOiBzdHJpbmc7XG4gIC8qKiBPcmctc2NvcGVkLCBzaW5nbGUtdXNlIHRpY2tldCBzdG9yZSAoUmVkaXMtYmFja2VkIGZvciBtdWx0aS1yZXBsaWNhKS4gKi9cbiAgdGlja2V0U3RvcmU6IFNzZVRpY2tldFN0b3JlO1xuICAvKiogU1NFIG1hbmFnZXIg4oCUIHRoZSBvcmcgaWQgaXMgdGhlIHN0cmVhbSBzdWJqZWN0IChgc3NlTWFuYWdlci5zZW5kKG9yZ0lkLCDigKYpYCkuICovXG4gIHNzZU1hbmFnZXI6IFNTRU1hbmFnZXI7XG4gIC8qKiBOb3VuIHVzZWQgaW4gY2FwYWNpdHkvY29ubmVjdGlvbiBlcnJvciBtZXNzYWdlcyAoZS5nLiAnbm90aWZpY2F0aW9uJywgJ2V4ZWN1dGlvbi1zdHJlYW0nKS4gKi9cbiAgbGFiZWw6IHN0cmluZztcbiAgLyoqIEV4dHJhIG1pZGRsZXdhcmUgYXBwbGllZCBBRlRFUiByZXF1aXJlQXV0aCBvbiB0aGUgbWludCByb3V0ZSAoZS5nLiByZXF1aXJlUGVybWlzc2lvbigncmVwb3J0czpyZWFkJykpLiAqL1xuICB0aWNrZXRHdWFyZHM/OiBSZXF1ZXN0SGFuZGxlcltdO1xufVxuXG4vKipcbiAqIFJlZ2lzdGVyIGEgcGVyLU9SRyBTU0UgY2hhbm5lbDogYSBQT1NUIHRoYXQgZXhjaGFuZ2VzIHRoZSBjYWxsZXIncyBWRVJJRklFRCBKV1RcbiAqIG9yZyBmb3IgYSBzaW5nbGUtdXNlLCBvcmctYm91bmQgdGlja2V0LCBhbmQgYSBHRVQgdGhhdCByZWRlZW1zIHRoZSB0aWNrZXQgYW5kXG4gKiBhdHRhY2hlcyBhbiBFdmVudFNvdXJjZSBrZXllZCBieSB0aGF0IG9yZy4gVGhlIG9yZyBJUyB0aGUgc3RyZWFtIHN1YmplY3QsIHNvIGFcbiAqIHByb2R1Y2VyIHJlYWNoZXMgc3Vic2NyaWJlcnMgd2l0aCBgc3NlTWFuYWdlci5zZW5kKG9yZ0lkLCDigKYpYC4gUmVnaXN0ZXJpbmcgYVxuICogY2hhbm5lbCB0dXJucyBvbiB0aGUgbWFuYWdlcidzIGNyb3NzLXBvZCByZWxheSAodGhpcyBzZXJ2aWNlJ3Mgb3duIHJlbGF5XG4gKiBjaGFubmVsKSwgc28gYSBmcmFtZSBwcm9kdWNlZCBvbiBvbmUgcmVwbGljYSByZWFjaGVzIGEgc3Vic2NyaWJlciBvbiBhbm90aGVyLlxuICogU2hhcmVkIGJ5IHRoZSBtZXNzYWdlLW5vdGlmaWNhdGlvbiBhbmQgcmVwb3J0aW5nIGV4ZWN1dGlvbi1zdGF0dXNcbiAqIGNoYW5uZWxzIHNvIHRoZSBzdWJ0bGUgYml0cyDigJQgdGhlIHRpY2tldOKGkmFkZENsaWVudOKGkmZsdXNoSGVhZGVycyBvcmRlcmluZyAoYSA0MjlcbiAqIE1VU1QgcHJlY2VkZSBmbHVzaEhlYWRlcnMsIHdoaWNoIGNvbW1pdHMgdGhlIDIwMCkgYW5kIHRoZSBjYXBhY2l0eSBzZW1hbnRpY3Mg4oCUXG4gKiBsaXZlIGluIGV4YWN0bHkgb25lIHBsYWNlLlxuICpcbiAqIERpc3RpbmN0IGZyb20gYXBwLWZhY3RvcnkncyBgL2xvZ3NgIGNoYW5uZWwsIHdoaWNoIGlzIFNVQkpFQ1QtYm91bmQgKHBlciBidWlsZCxcbiAqIHZpYSBTU0VNYW5hZ2VyLmNyZWF0ZVRpY2tldCkgcmF0aGVyIHRoYW4gb3JnLWJvdW5kLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJTc2VUaWNrZXRDaGFubmVsKGFwcDogRXhwcmVzcywgb3B0czogU3NlVGlja2V0Q2hhbm5lbE9wdGlvbnMpOiB2b2lkIHtcbiAgY29uc3QgeyB0aWNrZXRQYXRoLCBzdHJlYW1QYXRoLCB0aWNrZXRTdG9yZSwgc3NlTWFuYWdlciwgbGFiZWwsIHRpY2tldEd1YXJkcyA9IFtdIH0gPSBvcHRzO1xuICBzc2VNYW5hZ2VyLmVuYWJsZVJlbGF5KCk7XG5cbiAgYXBwLnBvc3QodGlja2V0UGF0aCwgcmVxdWlyZUF1dGgsIC4uLnRpY2tldEd1YXJkcywgYXN5bmMgKHJlcTogUmVxdWVzdCwgcmVzOiBSZXNwb25zZSkgPT4ge1xuICAgIGNvbnN0IG9yZ0lkID0gcmVxLnVzZXI/Lm9yZ2FuaXphdGlvbklkPy50b0xvd2VyQ2FzZSgpO1xuICAgIGlmICghb3JnSWQpIHJldHVybiBzZW5kRXJyb3IocmVzLCA0MDAsICdUb2tlbiBtaXNzaW5nIG9yZ2FuaXphdGlvbicsIEVycm9yQ29kZS5WQUxJREFUSU9OX0VSUk9SKTtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aWNrZXRTdG9yZS5pc3N1ZShvcmdJZCk7XG4gICAgaWYgKCFyZXN1bHQub2spIHtcbiAgICAgIHJldHVybiByZXN1bHQucmVhc29uID09PSAndG90YWwnXG4gICAgICAgID8gc2VuZEVycm9yKHJlcywgNTAzLCBgVGhlICR7bGFiZWx9IHN1YnN5c3RlbSBpcyBhdCBjYXBhY2l0eWAsIEVycm9yQ29kZS5RVU9UQV9FWENFRURFRClcbiAgICAgICAgOiBzZW5kRXJyb3IocmVzLCA0MjksIGBUb28gbWFueSAke2xhYmVsfSB0aWNrZXRzIGlzc3VlZGAsIEVycm9yQ29kZS5RVU9UQV9FWENFRURFRCk7XG4gICAgfVxuICAgIHJldHVybiBzZW5kU3VjY2VzcyhyZXMsIDIwMCwgeyB0aWNrZXQ6IHJlc3VsdC50aWNrZXQgfSk7XG4gIH0pO1xuXG4gIGFwcC5nZXQoc3RyZWFtUGF0aCwgYXN5bmMgKHJlcTogUmVxdWVzdCwgcmVzOiBSZXNwb25zZSkgPT4ge1xuICAgIGNvbnN0IHRpY2tldElkID0gcmVxLnF1ZXJ5LnRpY2tldCBhcyBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgaWYgKCF0aWNrZXRJZCkgcmV0dXJuIHZvaWQgc2VuZEVycm9yKHJlcywgNDAxLCAnTWlzc2luZyB0aWNrZXQgcGFyYW1ldGVyJywgRXJyb3JDb2RlLlVOQVVUSE9SSVpFRCk7XG4gICAgY29uc3QgdGlja2V0ID0gYXdhaXQgdGlja2V0U3RvcmUuY29uc3VtZSh0aWNrZXRJZCk7IC8vIGF0b21pYyBzaW5nbGUtdXNlXG4gICAgLy8gQW4gb3JnIGNoYW5uZWwncyB0aWNrZXQgaXMgb3JnLWJvdW5kIG9ubHk7IGEgc3ViamVjdC1ib3VuZCB0aWNrZXQgKGUuZy4gYVxuICAgIC8vIGJ1aWxkLWxvZyB0aWNrZXQgZnJvbSBhIHN0b3JlIHNoYXJpbmcgdGhpcyBuYW1lc3BhY2UpIGRvZXNuJ3Qgb3BlbiBpdC5cbiAgICBpZiAoIXRpY2tldCB8fCB0aWNrZXQuc3ViamVjdCAhPT0gdW5kZWZpbmVkKSByZXR1cm4gdm9pZCBzZW5kRXJyb3IocmVzLCA0MDEsICdJbnZhbGlkIG9yIGV4cGlyZWQgdGlja2V0JywgRXJyb3JDb2RlLlVOQVVUSE9SSVpFRCk7XG4gICAgLy8gUmVzZXJ2ZSB0aGUgY29ubmVjdGlvbiBzbG90IEJFRk9SRSBmbHVzaGluZyBTU0UgaGVhZGVyczogb25jZSBmbHVzaEhlYWRlcnNcbiAgICAvLyBydW5zIHRoZSByZXNwb25zZSBpcyBjb21taXR0ZWQgYXQgMjAwIGFuZCBhIGxhdGVyIDQyOSBpcyBzaWxlbnRseSBkcm9wcGVkLlxuICAgIC8vIFRoZSBvcmcgaXMgdGhlIHN1YmplY3QsIHNvIHRoZSBwZXItT1JHIGNhcCBhcHBsaWVzIChub3QgdGhlIHBlci1yZXF1ZXN0IG9uZSkuXG4gICAgY29uc3QgYWRkZWQgPSBzc2VNYW5hZ2VyLmFkZE9yZ0NsaWVudCh0aWNrZXQub3JnSWQsIHJlcyk7XG4gICAgaWYgKCFhZGRlZCkgcmV0dXJuIHZvaWQgc2VuZEVycm9yKHJlcywgNDI5LCBgVG9vIG1hbnkgJHtsYWJlbH0gY29ubmVjdGlvbnNgLCBFcnJvckNvZGUuUVVPVEFfRVhDRUVERUQpO1xuICAgIHdyaXRlU3NlSGVhZGVycyhyZXMpO1xuICAgIHJlcy5mbHVzaEhlYWRlcnMoKTtcbiAgICBsb2dnZXIuaW5mbygnU1NFIGNsaWVudCBjb25uZWN0ZWQnLCB7IGNoYW5uZWw6IGxhYmVsLCBvcmdJZDogdGlja2V0Lm9yZ0lkIH0pO1xuICB9KTtcbn1cbiJdfQ==
|
package/lib/index.js
CHANGED
|
@@ -31,4 +31,4 @@
|
|
|
31
31
|
export * from './api/index.js';
|
|
32
32
|
// HTTP Utilities
|
|
33
33
|
export * from './http/index.js';
|
|
34
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTBCRztBQUVILHFCQUFxQjtBQUNyQixjQUFjLGdCQUFnQixDQUFDO0FBRS9CLGlCQUFpQjtBQUNqQixjQUFjLGlCQUFpQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8qKlxuICogQG1vZHVsZSBAcGlwZWxpbmUtYnVpbGRlci9hcGktc2VydmVyXG4gKlxuICogRXhwcmVzcyBzZXJ2ZXIgaW5mcmFzdHJ1Y3R1cmUgYW5kIHJlcXVlc3QgbGlmZWN5Y2xlIHV0aWxpdGllcy5cbiAqXG4gKiAqKkFwcCBGYWN0b3J5KipcbiAqIC0gY3JlYXRlQXBwIOKAlCBjcmVhdGVzIGEgY29uZmlndXJlZCBFeHByZXNzIGFwcCB3aXRoIENPUlMsIEhlbG1ldCwgcmF0ZSBsaW1pdGluZ1xuICogLSBydW5TZXJ2ZXIsIHN0YXJ0U2VydmVyIOKAlCBzZXJ2ZXIgbGlmZWN5Y2xlIHdpdGggZ3JhY2VmdWwgc2h1dGRvd25cbiAqXG4gKiAqKk1pZGRsZXdhcmUqKlxuICogLSBhdHRhY2hSZXF1ZXN0Q29udGV4dCDigJQgYXR0YWNoZXMgaWRlbnRpdHkgKyBsb2dnaW5nIHRvIGVhY2ggcmVxdWVzdFxuICogLSByZXF1aXJlT3JnSWQg4oCUIHZhbGlkYXRlcyBvcmdhbml6YXRpb24gSUQgaXMgcHJlc2VudCBvbiB0aGUgcmVxdWVzdFxuICogLSB3aXRoVGVuYW50Q29udGV4dCDigJQgb3BlbnMgdGhlIFJMUyB0ZW5hbnQgc2NvcGUgZm9yIHRoZSByZXF1ZXN0XG4gKiAtIGNoZWNrUXVvdGEg4oCUIHF1b3RhIGVuZm9yY2VtZW50IG1pZGRsZXdhcmVcbiAqIC0gY3JlYXRlUHJvdGVjdGVkUm91dGUgLyBjcmVhdGVBdXRoZW50aWNhdGVkV2l0aE9yZ1JvdXRlIOKAlCBjb21wb3NhYmxlIG1pZGRsZXdhcmUgY2hhaW5zXG4gKlxuICogKipSb3V0ZSBIZWxwZXJzKipcbiAqIC0gd2l0aFJvdXRlIOKAlCB3cmFwcyBhc3luYyByb3V0ZSBoYW5kbGVycyB3aXRoIGNvbnRleHQgZXh0cmFjdGlvbiwgb3JnSWQgdmFsaWRhdGlvbiwgYW5kIGVycm9yIGhhbmRsaW5nXG4gKiAtIGdldENvbnRleHQg4oCUIHJldHJpZXZlcyBSZXF1ZXN0Q29udGV4dCBmcm9tIHRoZSBFeHByZXNzIHJlcXVlc3RcbiAqIC0gUm91dGVDb250ZXh0LCBSZXF1ZXN0Q29udGV4dCDigJQgcm91dGUgYW5kIHJlcXVlc3QgY29udGV4dCB0eXBlc1xuICpcbiAqICoqU1NFKipcbiAqIC0gU1NFTWFuYWdlciDigJQgU2VydmVyLVNlbnQgRXZlbnRzIGNvbm5lY3Rpb24gbWFuYWdlclxuICpcbiAqICoqT2JzZXJ2YWJpbGl0eSoqXG4gKiAtIFRyYWNpbmcgYW5kIG1ldHJpY3MgY29sbGVjdGlvbiB1dGlsaXRpZXNcbiAqL1xuXG4vLyBBUEkgSW5mcmFzdHJ1Y3R1cmVcbmV4cG9ydCAqIGZyb20gJy4vYXBpL2luZGV4LmpzJztcblxuLy8gSFRUUCBVdGlsaXRpZXNcbmV4cG9ydCAqIGZyb20gJy4vaHR0cC9pbmRleC5qcyc7Il19
|
package/lib/markdown.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Copyright 2026 Pipeline Builder Contributors
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
import rehypeSanitize
|
|
3
|
+
import rehypeSanitize from 'rehype-sanitize';
|
|
4
4
|
import rehypeStringify from 'rehype-stringify';
|
|
5
5
|
import remarkGfm from 'remark-gfm';
|
|
6
6
|
import remarkParse from 'remark-parse';
|
|
@@ -108,4 +108,4 @@ export function renderUntrustedMarkdown(md) {
|
|
|
108
108
|
}
|
|
109
109
|
return String(processor.processSync(md));
|
|
110
110
|
}
|
|
111
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFya2Rvd24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvbWFya2Rvd24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQXVCdEMsT0FBTyxjQUFjLEVBQUUsRUFBa0MsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRixPQUFPLGVBQWUsTUFBTSxrQkFBa0IsQ0FBQztBQUMvQyxPQUFPLFNBQVMsTUFBTSxZQUFZLENBQUM7QUFDbkMsT0FBTyxXQUFXLE1BQU0sY0FBYyxDQUFDO0FBQ3ZDLE9BQU8sWUFBWSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRWxDOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7QUFFdEQseUNBQXlDO0FBQ3pDLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLHVCQUF1QixDQUFDO0FBRTFEOzs7OztHQUtHO0FBQ0gsTUFBTSxlQUFlLEdBQW1CO0lBQ3RDLFFBQVEsRUFBRTtRQUNSLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtRQUNsQyxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxZQUFZO1FBQzdCLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtRQUNoQixLQUFLLEVBQUUsTUFBTTtRQUNiLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSztRQUNyQixPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7UUFDM0MsR0FBRztLQUNKO0lBQ0QsVUFBVSxFQUFFO1FBQ1YsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDO1FBQ1gsMkVBQTJFO1FBQzNFLElBQUksRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLDhCQUE4QixDQUFDLENBQUM7UUFDckQsRUFBRSxF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LEdBQUcsQ0FBQyxZQUFZLENBQUM7S0FDakIsR0FBRyxDQUFDLGNBQWMsRUFBRSxlQUFlLENBQUM7S0FDcEMsR0FBRyxDQUFDLGdCQUFnQixDQUFDO0tBQ3JCLEdBQUcsQ0FBQyxlQUFlLENBQUM7S0FDcEIsTUFBTSxFQUFFLENBQUM7QUFFWjs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLHVCQUF1QixDQUFDLEVBQVU7SUFDaEQsSUFBSSxNQUFNLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsR0FBRyw0QkFBNEIsRUFBRSxDQUFDO1FBQ2pFLE1BQU0sSUFBSSxVQUFVLENBQUMsb0JBQW9CLDRCQUE0QixRQUFRLENBQUMsQ0FBQztJQUNqRixDQUFDO0lBQ0QsT0FBTyxNQUFNLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzNDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuLyoqXG4gKiBTZXJ2ZXItc2lkZSByZW5kZXJlciBmb3IgVU5UUlVTVEVEIG1hcmtkb3duIOKAlCBwbHVnaW4gUkVBRE1Fcywgc2VjdXJpdHlcbiAqIGFkdmlzb3JpZXMsIHJldmlld3MgYW5kIHJldmlldyByZXBsaWVzIChkb2NzL3BsdWdpbi1wdWJsaXNoaW5nLm1kXG4gKiBcIk1hcmtkb3duIHNhZmV0eVwiKS5cbiAqXG4gKiBJbXBvcnQgaXQgdGhyb3VnaCBpdHMgb3duIHN1YnBhdGgsIG5ldmVyIHRoZSBwYWNrYWdlIHJvb3Q6XG4gKiAgIGltcG9ydCB7IHJlbmRlclVudHJ1c3RlZE1hcmtkb3duIH0gZnJvbSAnQHBpcGVsaW5lLWJ1aWxkZXIvYXBpLXNlcnZlci9saWIvbWFya2Rvd24uanMnO1xuICogVGhlIHVuaWZpZWQvcmVtYXJrL3JlaHlwZSBzdGFjayBpcyBFU00tb25seSBhbmQgb25seSB0aGUgZmV3IHNlcnZpY2VzIHRoYXRcbiAqIHJlbmRlciBtYXJrZG93biBzaG91bGQgbG9hZCBpdC4gSXQgaXMgc2VydmVyLW9ubHkgYnkgZGVzaWduOiBhcGktY29yZSAod2hpY2hcbiAqIHRoZSBmcm9udGVuZCBpbXBvcnRzKSBtdXN0IG5vdCBjYXJyeSBpdCwgYW5kIHRoZSBzdG9yZWQgSFRNTCB0aGlzIHByb2R1Y2VzIGlzXG4gKiB0aGUgT05MWSBmb3JtIHRoYXQgaXMgZXZlciBzZXJ2ZWQg4oCUIGNsaWVudC1zaWRlIHJlbmRlcmluZyBvZiB1bnRydXN0ZWRcbiAqIG1hcmtkb3duIGlzIGZvcmJpZGRlbi5cbiAqXG4gKiBQaXBlbGluZTogcmVtYXJrLXBhcnNlIOKGkiByZW1hcmstZ2ZtIOKGkiByZW1hcmstcmVoeXBlIChyYXcgSFRNTCBpcyBEUk9QUEVELCBub3RcbiAqIHBhc3NlZCB0aHJvdWdoOiBubyBgYWxsb3dEYW5nZXJvdXNIdG1sYCkg4oaSIHJlaHlwZS1zYW5pdGl6ZSAoc3RyaWN0IGFsbG93bGlzdFxuICogYmVsb3cpIOKGkiBsaW5rIHBvbGljeSAoaHR0cChzKS9tYWlsdG8gb25seSwgYHJlbD1cIm5vZm9sbG93IHVnYyBub29wZW5lclwiYCkg4oaSXG4gKiByZWh5cGUtc3RyaW5naWZ5LiBFdmVyeSBpbWFnZSBpcyBkcm9wcGVkOiByZW1vdGUgaW1hZ2VzIGFyZSB0cmFja2luZyBwaXhlbHMsXG4gKiBhbmQgYSBSRUFETUUgaGFzIG5vIHNhbWUtb3JpZ2luIGltYWdlcyB0byBzaG93LlxuICovXG5cbmltcG9ydCB0eXBlIHsgRWxlbWVudCwgRWxlbWVudENvbnRlbnQsIFJvb3QsIFJvb3RDb250ZW50IH0gZnJvbSAnaGFzdCc7XG5pbXBvcnQgcmVoeXBlU2FuaXRpemUsIHsgdHlwZSBPcHRpb25zIGFzIFNhbml0aXplU2NoZW1hIH0gZnJvbSAncmVoeXBlLXNhbml0aXplJztcbmltcG9ydCByZWh5cGVTdHJpbmdpZnkgZnJvbSAncmVoeXBlLXN0cmluZ2lmeSc7XG5pbXBvcnQgcmVtYXJrR2ZtIGZyb20gJ3JlbWFyay1nZm0nO1xuaW1wb3J0IHJlbWFya1BhcnNlIGZyb20gJ3JlbWFyay1wYXJzZSc7XG5pbXBvcnQgcmVtYXJrUmVoeXBlIGZyb20gJ3JlbWFyay1yZWh5cGUnO1xuaW1wb3J0IHsgdW5pZmllZCB9IGZyb20gJ3VuaWZpZWQnO1xuXG4vKipcbiAqIEhhcmQgaW5wdXQgY2FwIChieXRlcywgVVRGLTgpLiBDYWxsZXJzIGVuZm9yY2UgdGhlaXIgb3duIHRpZ2h0ZXIgbGltaXRzIChhXG4gKiBSRUFETUUgaXMg4omkIDY0IEtCKTsgdGhpcyBib3VuZHMgdGhlIHBhcnNlciBmb3IgYW55IGNhbGxlciB0aGF0IGZvcmdldHMuXG4gKi9cbmV4cG9ydCBjb25zdCBVTlRSVVNURURfTUFSS0RPV05fTUFYX0JZVEVTID0gNjQgKiAxMDI0O1xuXG4vKiogYHJlbGAgc2V0IG9uIGV2ZXJ5IHN1cnZpdmluZyBsaW5rLiAqL1xuZXhwb3J0IGNvbnN0IFVOVFJVU1RFRF9MSU5LX1JFTCA9ICdub2ZvbGxvdyB1Z2Mgbm9vcGVuZXInO1xuXG4vKipcbiAqIFRoZSBzdHJpY3QgYWxsb3dsaXN0LiBBbnl0aGluZyBub3QgbmFtZWQgaGVyZSBpcyB1bndyYXBwZWQgKGl0cyB0ZXh0IGtlcHQpXG4gKiBvciwgZm9yIHRoZSBgc3RyaXBgIHNldCwgcmVtb3ZlZCB3aXRoIGl0cyBjb250ZW50LiBObyBgaWRgL2BuYW1lYCAoc28gbm8gRE9NXG4gKiBjbG9iYmVyaW5nKSwgbm8gYHN0eWxlYCwgbm8gZXZlbnQgaGFuZGxlcnMsIG5vIGBpbWdgLCBubyByYXcgSFRNTCwgbm9cbiAqIGNvbW1lbnRzLCBubyBkb2N0eXBlcy5cbiAqL1xuY29uc3QgU0FOSVRJWkVfU0NIRU1BOiBTYW5pdGl6ZVNjaGVtYSA9IHtcbiAgdGFnTmFtZXM6IFtcbiAgICAnaDEnLCAnaDInLCAnaDMnLCAnaDQnLCAnaDUnLCAnaDYnLFxuICAgICdwJywgJ2JyJywgJ2hyJywgJ2Jsb2NrcXVvdGUnLFxuICAgICd1bCcsICdvbCcsICdsaScsXG4gICAgJ3ByZScsICdjb2RlJyxcbiAgICAnZW0nLCAnc3Ryb25nJywgJ2RlbCcsXG4gICAgJ3RhYmxlJywgJ3RoZWFkJywgJ3Rib2R5JywgJ3RyJywgJ3RoJywgJ3RkJyxcbiAgICAnYScsXG4gIF0sXG4gIGF0dHJpYnV0ZXM6IHtcbiAgICBhOiBbJ2hyZWYnXSxcbiAgICAvLyBGZW5jZWQtY29kZSBsYW5ndWFnZSBoaW50IG9ubHkgKGBsYW5ndWFnZS10c2ApLCBmb3IgY2xpZW50IGhpZ2hsaWdodGluZy5cbiAgICBjb2RlOiBbWydjbGFzc05hbWUnLCAvXmxhbmd1YWdlLVthLXowLTkrIy1dezEsMzJ9JC9dXSxcbiAgICBvbDogWydzdGFydCddLFxuICAgIHRoOiBbWydhbGlnbicsICdsZWZ0JywgJ3JpZ2h0JywgJ2NlbnRlciddXSxcbiAgICB0ZDogW1snYWxpZ24nLCAnbGVmdCcsICdyaWdodCcsICdjZW50ZXInXV0sXG4gIH0sXG4gIHByb3RvY29sczogeyBocmVmOiBbJ2h0dHAnLCAnaHR0cHMnLCAnbWFpbHRvJ10gfSxcbiAgLy8gUmVtb3ZlZCBXSVRIIHRoZWlyIGNvbnRlbnQgKG5ldmVyIHVud3JhcHBlZCBpbnRvIHZpc2libGUgdGV4dCkuXG4gIHN0cmlwOiBbJ3NjcmlwdCcsICdzdHlsZScsICdzdmcnLCAnbWF0aCcsICdpZnJhbWUnLCAnb2JqZWN0JywgJ2VtYmVkJywgJ3RlbXBsYXRlJywgJ25vc2NyaXB0J10sXG4gIGFsbG93Q29tbWVudHM6IGZhbHNlLFxuICBhbGxvd0RvY3R5cGVzOiBmYWxzZSxcbiAgY2xvYmJlcjogW10sXG4gIGNsb2JiZXJQcmVmaXg6ICcnLFxuICByZXF1aXJlZDoge30sXG4gIGFuY2VzdG9yczoge30sXG59O1xuXG4vKiogQW4gaHJlZiB0aGF0IG1heSBzdXJ2aXZlOiBhYnNvbHV0ZSBodHRwKHMpIG9yIG1haWx0by4gUmVsYXRpdmUgYW5kIGZyYWdtZW50XG4gKiAgbGlua3MgYXJlIGRyb3BwZWQgdG9vIOKAlCBhIHJlbGF0aXZlIFJFQURNRSBsaW5rIHdvdWxkIHJlc29sdmUgSU5UTyB0aGlzIGFwcC4gKi9cbmNvbnN0IFNBRkVfSFJFRiA9IC9eKD86aHR0cHM/OlxcL1xcL1teXFxzL118bWFpbHRvOlteXFxzXSkvaTtcblxuLyoqXG4gKiBMaW5rIHBvbGljeSwgcnVuIEFGVEVSIHNhbml0aXplOiBrZWVwIG9ubHkgYWJzb2x1dGUgaHR0cChzKS9tYWlsdG8gaHJlZnMgKGFuXG4gKiBhbmNob3Igd2l0aG91dCBvbmUgaXMgdW53cmFwcGVkIHRvIGl0cyB0ZXh0KSwgc3RhbXAgYHJlbGAsIGFuZCBvcGVuIHdlYiBsaW5rc1xuICogaW4gYSBuZXcgdGFiLiBEcm9wcyBhbnkgYGltZ2AgZGVmZW5zaXZlbHkgZXZlbiB0aG91Z2ggdGhlIHNjaGVtYSBhbHJlYWR5XG4gKiBleGNsdWRlcyBpdC5cbiAqL1xuZnVuY3Rpb24gcmVoeXBlTGlua1BvbGljeSgpIHtcbiAgY29uc3QgcmV3cml0ZSA9IChjaGlsZHJlbjogQXJyYXk8Um9vdENvbnRlbnQgfCBFbGVtZW50Q29udGVudD4pOiBBcnJheTxSb290Q29udGVudCB8IEVsZW1lbnRDb250ZW50PiA9PiB7XG4gICAgY29uc3Qgb3V0OiBBcnJheTxSb290Q29udGVudCB8IEVsZW1lbnRDb250ZW50PiA9IFtdO1xuICAgIGZvciAoY29uc3Qgbm9kZSBvZiBjaGlsZHJlbikge1xuICAgICAgaWYgKG5vZGUudHlwZSAhPT0gJ2VsZW1lbnQnKSB7XG4gICAgICAgIG91dC5wdXNoKG5vZGUpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGVsID0gbm9kZSBhcyBFbGVtZW50O1xuICAgICAgaWYgKGVsLnRhZ05hbWUgPT09ICdpbWcnKSBjb250aW51ZTtcbiAgICAgIGVsLmNoaWxkcmVuID0gcmV3cml0ZShlbC5jaGlsZHJlbikgYXMgRWxlbWVudENvbnRlbnRbXTtcbiAgICAgIGlmIChlbC50YWdOYW1lID09PSAnYScpIHtcbiAgICAgICAgY29uc3QgaHJlZiA9IHR5cGVvZiBlbC5wcm9wZXJ0aWVzPy5ocmVmID09PSAnc3RyaW5nJyA/IGVsLnByb3BlcnRpZXMuaHJlZi50cmltKCkgOiAnJztcbiAgICAgICAgaWYgKCFTQUZFX0hSRUYudGVzdChocmVmKSkge1xuICAgICAgICAgIG91dC5wdXNoKC4uLmVsLmNoaWxkcmVuKTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB3ZWIgPSAvXmh0dHBzPzovaS50ZXN0KGhyZWYpO1xuICAgICAgICBlbC5wcm9wZXJ0aWVzID0ge1xuICAgICAgICAgIGhyZWYsXG4gICAgICAgICAgcmVsOiBVTlRSVVNURURfTElOS19SRUwuc3BsaXQoJyAnKSxcbiAgICAgICAgICAuLi4od2ViID8geyB0YXJnZXQ6ICdfYmxhbmsnIH0gOiB7fSksXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBvdXQucHVzaChlbCk7XG4gICAgfVxuICAgIHJldHVybiBvdXQ7XG4gIH07XG4gIHJldHVybiAodHJlZTogUm9vdCkgPT4ge1xuICAgIHRyZWUuY2hpbGRyZW4gPSByZXdyaXRlKHRyZWUuY2hpbGRyZW4pIGFzIFJvb3RDb250ZW50W107XG4gIH07XG59XG5cbmNvbnN0IHByb2Nlc3NvciA9IHVuaWZpZWQoKVxuICAudXNlKHJlbWFya1BhcnNlKVxuICAudXNlKHJlbWFya0dmbSlcbiAgLnVzZShyZW1hcmtSZWh5cGUpXG4gIC51c2UocmVoeXBlU2FuaXRpemUsIFNBTklUSVpFX1NDSEVNQSlcbiAgLnVzZShyZWh5cGVMaW5rUG9saWN5KVxuICAudXNlKHJlaHlwZVN0cmluZ2lmeSlcbiAgLmZyZWV6ZSgpO1xuXG4vKipcbiAqIFJlbmRlciB1bnRydXN0ZWQgbWFya2Rvd24gdG8gc2FuaXRpemVkIEhUTUwsIHNhZmUgdG8gc3RvcmUgYW5kIHNlcnZlIGFzLWlzLlxuICpcbiAqIEB0aHJvd3MgUmFuZ2VFcnJvciB3aGVuIGBtZGAgZXhjZWVkcyB7QGxpbmsgVU5UUlVTVEVEX01BUktET1dOX01BWF9CWVRFU30uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJVbnRydXN0ZWRNYXJrZG93bihtZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWYgKEJ1ZmZlci5ieXRlTGVuZ3RoKG1kLCAndXRmOCcpID4gVU5UUlVTVEVEX01BUktET1dOX01BWF9CWVRFUykge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKGBNYXJrZG93biBleGNlZWRzICR7VU5UUlVTVEVEX01BUktET1dOX01BWF9CWVRFU30gYnl0ZXNgKTtcbiAgfVxuICByZXR1cm4gU3RyaW5nKHByb2Nlc3Nvci5wcm9jZXNzU3luYyhtZCkpO1xufVxuIl19
|
|
111
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFya2Rvd24uanMiLCJzb3VyY2VzIjpbIi4uL3NyYy9tYXJrZG93bi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBdUJ0QyxPQUFPLGNBQWtELE1BQU0saUJBQWlCLENBQUM7QUFDakYsT0FBTyxlQUFlLE1BQU0sa0JBQWtCLENBQUM7QUFDL0MsT0FBTyxTQUFTLE1BQU0sWUFBWSxDQUFDO0FBQ25DLE9BQU8sV0FBVyxNQUFNLGNBQWMsQ0FBQztBQUN2QyxPQUFPLFlBQVksTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUVsQzs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSw0QkFBNEIsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO0FBRXRELHlDQUF5QztBQUN6QyxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyx1QkFBdUIsQ0FBQztBQUUxRDs7Ozs7R0FLRztBQUNILE1BQU0sZUFBZSxHQUFtQjtJQUN0QyxRQUFRLEVBQUU7UUFDUixJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7UUFDbEMsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsWUFBWTtRQUM3QixJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7UUFDaEIsS0FBSyxFQUFFLE1BQU07UUFDYixJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUs7UUFDckIsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO1FBQzNDLEdBQUc7S0FDSjtJQUNELFVBQVUsRUFBRTtRQUNWLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQztRQUNYLDJFQUEyRTtRQUMzRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSw4QkFBOEIsQ0FBQyxDQUFDO1FBQ3JELEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQztRQUNiLEVB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LEdBQUcsQ0FBQyxjQUFjLEVBQUUsZUFBZSxDQUFDO0tBQ3BDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQztLQUNyQixHQUFHLENBQUMsZUFBZSxDQUFDO0tBQ3BCLE1BQU0sRUFBRSxDQUFDO0FBRVo7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSx1QkFBdUIsQ0FBQyxFQUFVO0lBQ2hELElBQUksTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLEdBQUcsNEJBQTRCLEVBQUUsQ0FBQztRQUNqRSxNQUFNLElBQUksVUFBVSxDQUFDLG9CQUFvQiw0QkFBNEIsUUFBUSxDQUFDLENBQUM7SUFDakYsQ0FBQztJQUNELE9BQU8sTUFBTSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUMzQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8qKlxuICogU2VydmVyLXNpZGUgcmVuZGVyZXIgZm9yIFVOVFJVU1RFRCBtYXJrZG93biDigJQgcGx1Z2luIFJFQURNRXMsIHNlY3VyaXR5XG4gKiBhZHZpc29yaWVzLCByZXZpZXdzIGFuZCByZXZpZXcgcmVwbGllcyAoZG9jcy9wbHVnaW4tcHVibGlzaGluZy5tZFxuICogXCJNYXJrZG93biBzYWZldHlcIikuXG4gKlxuICogSW1wb3J0IGl0IHRocm91Z2ggaXRzIG93biBzdWJwYXRoLCBuZXZlciB0aGUgcGFja2FnZSByb290OlxuICogICBpbXBvcnQgeyByZW5kZXJVbnRydXN0ZWRNYXJrZG93biB9IGZyb20gJ0BwaXBlbGluZS1idWlsZGVyL2FwaS1zZXJ2ZXIvbGliL21hcmtkb3duLmpzJztcbiAqIFRoZSB1bmlmaWVkL3JlbWFyay9yZWh5cGUgc3RhY2sgaXMgRVNNLW9ubHkgYW5kIG9ubHkgdGhlIGZldyBzZXJ2aWNlcyB0aGF0XG4gKiByZW5kZXIgbWFya2Rvd24gc2hvdWxkIGxvYWQgaXQuIEl0IGlzIHNlcnZlci1vbmx5IGJ5IGRlc2lnbjogYXBpLWNvcmUgKHdoaWNoXG4gKiB0aGUgZnJvbnRlbmQgaW1wb3J0cykgbXVzdCBub3QgY2FycnkgaXQsIGFuZCB0aGUgc3RvcmVkIEhUTUwgdGhpcyBwcm9kdWNlcyBpc1xuICogdGhlIE9OTFkgZm9ybSB0aGF0IGlzIGV2ZXIgc2VydmVkIOKAlCBjbGllbnQtc2lkZSByZW5kZXJpbmcgb2YgdW50cnVzdGVkXG4gKiBtYXJrZG93biBpcyBmb3JiaWRkZW4uXG4gKlxuICogUGlwZWxpbmU6IHJlbWFyay1wYXJzZSDihpIgcmVtYXJrLWdmbSDihpIgcmVtYXJrLXJlaHlwZSAocmF3IEhUTUwgaXMgRFJPUFBFRCwgbm90XG4gKiBwYXNzZWQgdGhyb3VnaDogbm8gYGFsbG93RGFuZ2Vyb3VzSHRtbGApIOKGkiByZWh5cGUtc2FuaXRpemUgKHN0cmljdCBhbGxvd2xpc3RcbiAqIGJlbG93KSDihpIgbGluayBwb2xpY3kgKGh0dHAocykvbWFpbHRvIG9ubHksIGByZWw9XCJub2ZvbGxvdyB1Z2Mgbm9vcGVuZXJcImApIOKGklxuICogcmVoeXBlLXN0cmluZ2lmeS4gRXZlcnkgaW1hZ2UgaXMgZHJvcHBlZDogcmVtb3RlIGltYWdlcyBhcmUgdHJhY2tpbmcgcGl4ZWxzLFxuICogYW5kIGEgUkVBRE1FIGhhcyBubyBzYW1lLW9yaWdpbiBpbWFnZXMgdG8gc2hvdy5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IEVsZW1lbnQsIEVsZW1lbnRDb250ZW50LCBSb290LCBSb290Q29udGVudCB9IGZyb20gJ2hhc3QnO1xuaW1wb3J0IHJlaHlwZVNhbml0aXplLCB7IHR5cGUgT3B0aW9ucyBhcyBTYW5pdGl6ZVNjaGVtYSB9IGZyb20gJ3JlaHlwZS1zYW5pdGl6ZSc7XG5pbXBvcnQgcmVoeXBlU3RyaW5naWZ5IGZyb20gJ3JlaHlwZS1zdHJpbmdpZnknO1xuaW1wb3J0IHJlbWFya0dmbSBmcm9tICdyZW1hcmstZ2ZtJztcbmltcG9ydCByZW1hcmtQYXJzZSBmcm9tICdyZW1hcmstcGFyc2UnO1xuaW1wb3J0IHJlbWFya1JlaHlwZSBmcm9tICdyZW1hcmstcmVoeXBlJztcbmltcG9ydCB7IHVuaWZpZWQgfSBmcm9tICd1bmlmaWVkJztcblxuLyoqXG4gKiBIYXJkIGlucHV0IGNhcCAoYnl0ZXMsIFVURi04KS4gQ2FsbGVycyBlbmZvcmNlIHRoZWlyIG93biB0aWdodGVyIGxpbWl0cyAoYVxuICogUkVBRE1FIGlzIOKJpCA2NCBLQik7IHRoaXMgYm91bmRzIHRoZSBwYXJzZXIgZm9yIGFueSBjYWxsZXIgdGhhdCBmb3JnZXRzLlxuICovXG5leHBvcnQgY29uc3QgVU5UUlVTVEVEX01BUktET1dOX01BWF9CWVRFUyA9IDY0ICogMTAyNDtcblxuLyoqIGByZWxgIHNldCBvbiBldmVyeSBzdXJ2aXZpbmcgbGluay4gKi9cbmV4cG9ydCBjb25zdCBVTlRSVVNURURfTElOS19SRUwgPSAnbm9mb2xsb3cgdWdjIG5vb3BlbmVyJztcblxuLyoqXG4gKiBUaGUgc3RyaWN0IGFsbG93bGlzdC4gQW55dGhpbmcgbm90IG5hbWVkIGhlcmUgaXMgdW53cmFwcGVkIChpdHMgdGV4dCBrZXB0KVxuICogb3IsIGZvciB0aGUgYHN0cmlwYCBzZXQsIHJlbW92ZWQgd2l0aCBpdHMgY29udGVudC4gTm8gYGlkYC9gbmFtZWAgKHNvIG5vIERPTVxuICogY2xvYmJlcmluZyksIG5vIGBzdHlsZWAsIG5vIGV2ZW50IGhhbmRsZXJzLCBubyBgaW1nYCwgbm8gcmF3IEhUTUwsIG5vXG4gKiBjb21tZW50cywgbm8gZG9jdHlwZXMuXG4gKi9cbmNvbnN0IFNBTklUSVpFX1NDSEVNQTogU2FuaXRpemVTY2hlbWEgPSB7XG4gIHRhZ05hbWVzOiBbXG4gICAgJ2gxJywgJ2gyJywgJ2gzJywgJ2g0JywgJ2g1JywgJ2g2JyxcbiAgICAncCcsICdicicsICdocicsICdibG9ja3F1b3RlJyxcbiAgICAndWwnLCAnb2wnLCAnbGknLFxuICAgICdwcmUnLCAnY29kZScsXG4gICAgJ2VtJywgJ3N0cm9uZycsICdkZWwnLFxuICAgICd0YWJsZScsICd0aGVhZCcsICd0Ym9keScsICd0cicsICd0aCcsICd0ZCcsXG4gICAgJ2EnLFxuICBdLFxuICBhdHRyaWJ1dGVzOiB7XG4gICAgYTogWydocmVmJ10sXG4gICAgLy8gRmVuY2VkLWNvZGUgbGFuZ3VhZ2UgaGludCBvbmx5IChgbGFuZ3VhZ2UtdHNgKSwgZm9yIGNsaWVudCBoaWdobGlnaHRpbmcuXG4gICAgY29kZTogW1snY2xhc3NOYW1lJywgL15sYW5ndWFnZS1bYS16MC05KyMtXXsxLDMyfSQvXV0sXG4gICAgb2w6IFsnc3RhcnQnXSxcbiAgICB0aDogW1snYWxpZ24nLCAnbGVmdCcsICdyaWdodCcsICdjZW50ZXInXV0sXG4gICAgdGQ6IFtbJ2FsaWduJywgJ2xlZnQnLCAncmlnaHQnLCAnY2VudGVyJ11dLFxuICB9LFxuICBwcm90b2NvbHM6IHsgaHJlZjogWydodHRwJywgJ2h0dHBzJywgJ21haWx0byddIH0sXG4gIC8vIFJlbW92ZWQgV0lUSCB0aGVpciBjb250ZW50IChuZXZlciB1bndyYXBwZWQgaW50byB2aXNpYmxlIHRleHQpLlxuICBzdHJpcDogWydzY3JpcHQnLCAnc3R5bGUnLCAnc3ZnJywgJ21hdGgnLCAnaWZyYW1lJywgJ29iamVjdCcsICdlbWJlZCcsICd0ZW1wbGF0ZScsICdub3NjcmlwdCddLFxuICBhbGxvd0NvbW1lbnRzOiBmYWxzZSxcbiAgYWxsb3dEb2N0eXBlczogZmFsc2UsXG4gIGNsb2JiZXI6IFtdLFxuICBjbG9iYmVyUHJlZml4OiAnJyxcbiAgcmVxdWlyZWQ6IHt9LFxuICBhbmNlc3RvcnM6IHt9LFxufTtcblxuLyoqIEFuIGhyZWYgdGhhdCBtYXkgc3Vydml2ZTogYWJzb2x1dGUgaHR0cChzKSBvciBtYWlsdG8uIFJlbGF0aXZlIGFuZCBmcmFnbWVudFxuICogIGxpbmtzIGFyZSBkcm9wcGVkIHRvbyDigJQgYSByZWxhdGl2ZSBSRUFETUUgbGluayB3b3VsZCByZXNvbHZlIElOVE8gdGhpcyBhcHAuICovXG5jb25zdCBTQUZFX0hSRUYgPSAvXig/Omh0dHBzPzpcXC9cXC9bXlxccy9dfG1haWx0bzpbXlxcc10pL2k7XG5cbi8qKlxuICogTGluayBwb2xpY3ksIHJ1biBBRlRFUiBzYW5pdGl6ZToga2VlcCBvbmx5IGFic29sdXRlIGh0dHAocykvbWFpbHRvIGhyZWZzIChhblxuICogYW5jaG9yIHdpdGhvdXQgb25lIGlzIHVud3JhcHBlZCB0byBpdHMgdGV4dCksIHN0YW1wIGByZWxgLCBhbmQgb3BlbiB3ZWIgbGlua3NcbiAqIGluIGEgbmV3IHRhYi4gRHJvcHMgYW55IGBpbWdgIGRlZmVuc2l2ZWx5IGV2ZW4gdGhvdWdoIHRoZSBzY2hlbWEgYWxyZWFkeVxuICogZXhjbHVkZXMgaXQuXG4gKi9cbmZ1bmN0aW9uIHJlaHlwZUxpbmtQb2xpY3koKSB7XG4gIGNvbnN0IHJld3JpdGUgPSAoY2hpbGRyZW46IEFycmF5PFJvb3RDb250ZW50IHwgRWxlbWVudENvbnRlbnQ+KTogQXJyYXk8Um9vdENvbnRlbnQgfCBFbGVtZW50Q29udGVudD4gPT4ge1xuICAgIGNvbnN0IG91dDogQXJyYXk8Um9vdENvbnRlbnQgfCBFbGVtZW50Q29udGVudD4gPSBbXTtcbiAgICBmb3IgKGNvbnN0IG5vZGUgb2YgY2hpbGRyZW4pIHtcbiAgICAgIGlmIChub2RlLnR5cGUgIT09ICdlbGVtZW50Jykge1xuICAgICAgICBvdXQucHVzaChub2RlKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBjb25zdCBlbCA9IG5vZGUgYXMgRWxlbWVudDtcbiAgICAgIGlmIChlbC50YWdOYW1lID09PSAnaW1nJykgY29udGludWU7XG4gICAgICBlbC5jaGlsZHJlbiA9IHJld3JpdGUoZWwuY2hpbGRyZW4pIGFzIEVsZW1lbnRDb250ZW50W107XG4gICAgICBpZiAoZWwudGFnTmFtZSA9PT0gJ2EnKSB7XG4gICAgICAgIGNvbnN0IGhyZWYgPSB0eXBlb2YgZWwucHJvcGVydGllcz8uaHJlZiA9PT0gJ3N0cmluZycgPyBlbC5wcm9wZXJ0aWVzLmhyZWYudHJpbSgpIDogJyc7XG4gICAgICAgIGlmICghU0FGRV9IUkVGLnRlc3QoaHJlZikpIHtcbiAgICAgICAgICBvdXQucHVzaCguLi5lbC5jaGlsZHJlbik7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgd2ViID0gL15odHRwcz86L2kudGVzdChocmVmKTtcbiAgICAgICAgZWwucHJvcGVydGllcyA9IHtcbiAgICAgICAgICBocmVmLFxuICAgICAgICAgIHJlbDogVU5UUlVTVEVEX0xJTktfUkVMLnNwbGl0KCcgJyksXG4gICAgICAgICAgLi4uKHdlYiA/IHsgdGFyZ2V0OiAnX2JsYW5rJyB9IDoge30pLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgb3V0LnB1c2goZWwpO1xuICAgIH1cbiAgICByZXR1cm4gb3V0O1xuICB9O1xuICByZXR1cm4gKHRyZWU6IFJvb3QpID0+IHtcbiAgICB0cmVlLmNoaWxkcmVuID0gcmV3cml0ZSh0cmVlLmNoaWxkcmVuKSBhcyBSb290Q29udGVudFtdO1xuICB9O1xufVxuXG5jb25zdCBwcm9jZXNzb3IgPSB1bmlmaWVkKClcbiAgLnVzZShyZW1hcmtQYXJzZSlcbiAgLnVzZShyZW1hcmtHZm0pXG4gIC51c2UocmVtYXJrUmVoeXBlKVxuICAudXNlKHJlaHlwZVNhbml0aXplLCBTQU5JVElaRV9TQ0hFTUEpXG4gIC51c2UocmVoeXBlTGlua1BvbGljeSlcbiAgLnVzZShyZWh5cGVTdHJpbmdpZnkpXG4gIC5mcmVlemUoKTtcblxuLyoqXG4gKiBSZW5kZXIgdW50cnVzdGVkIG1hcmtkb3duIHRvIHNhbml0aXplZCBIVE1MLCBzYWZlIHRvIHN0b3JlIGFuZCBzZXJ2ZSBhcy1pcy5cbiAqXG4gKiBAdGhyb3dzIFJhbmdlRXJyb3Igd2hlbiBgbWRgIGV4Y2VlZHMge0BsaW5rIFVOVFJVU1RFRF9NQVJLRE9XTl9NQVhfQllURVN9LlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVuZGVyVW50cnVzdGVkTWFya2Rvd24obWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmIChCdWZmZXIuYnl0ZUxlbmd0aChtZCwgJ3V0ZjgnKSA+IFVOVFJVU1RFRF9NQVJLRE9XTl9NQVhfQllURVMpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihgTWFya2Rvd24gZXhjZWVkcyAke1VOVFJVU1RFRF9NQVJLRE9XTl9NQVhfQllURVN9IGJ5dGVzYCk7XG4gIH1cbiAgcmV0dXJuIFN0cmluZyhwcm9jZXNzb3IucHJvY2Vzc1N5bmMobWQpKTtcbn1cbiJdfQ==
|