@esolve/ng-esolve-connect 0.109.0 → 0.110.0
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/esm2022/lib/auth/index.mjs +3 -4
- package/esm2022/lib/auth/interceptors/esolve-auth.interceptor.mjs +32 -0
- package/esm2022/lib/auth/interceptors/index.mjs +2 -0
- package/esm2022/lib/auth/providers/esolve-eurus-auto-login.provider.mjs +2 -2
- package/esm2022/lib/auth/services/esolve-auth.service.mjs +288 -0
- package/esm2022/lib/auth/services/esolve-otp.service.mjs +77 -0
- package/esm2022/lib/auth/services/index.mjs +3 -0
- package/esm2022/lib/core/esolve-config.service.mjs +37 -40
- package/esm2022/lib/core/esolve-connect-config.interface.mjs +1 -1
- package/esm2022/lib/core/providers/index.mjs +2 -2
- package/esm2022/lib/core/providers/ng-esolve-connect.provider.mjs +19 -0
- package/esm2022/lib/coupons/esolve-coupons.service.mjs +8 -6
- package/esm2022/lib/session/esolve-session.service.mjs +89 -89
- package/esm2022/lib/shared/cookie/esolve-cookie-options.interface.mjs +2 -0
- package/esm2022/lib/shared/cookie/esolve-cookie.service.mjs +5 -5
- package/esm2022/lib/shared/cookie/index.mjs +2 -2
- package/esm2022/lib/vouchers/esolve-vouchers.service.mjs +8 -6
- package/fesm2022/esolve-ng-esolve-connect.mjs +304 -315
- package/fesm2022/esolve-ng-esolve-connect.mjs.map +1 -1
- package/lib/auth/index.d.ts +2 -3
- package/lib/auth/interceptors/esolve-auth.interceptor.d.ts +2 -0
- package/lib/auth/interceptors/index.d.ts +1 -0
- package/lib/auth/{esolve-auth.service.d.ts → services/esolve-auth.service.d.ts} +1 -1
- package/lib/auth/{esolve-otp.service.d.ts → services/esolve-otp.service.d.ts} +3 -3
- package/lib/auth/services/index.d.ts +2 -0
- package/lib/core/esolve-config.service.d.ts +14 -10
- package/lib/core/esolve-connect-config.interface.d.ts +6 -6
- package/lib/core/providers/index.d.ts +1 -1
- package/lib/session/esolve-session.service.d.ts +12 -5
- package/lib/shared/cookie/esolve-cookie-options.interface.d.ts +7 -0
- package/lib/shared/cookie/esolve-cookie.service.d.ts +3 -2
- package/lib/shared/cookie/index.d.ts +2 -1
- package/package.json +1 -1
- package/esm2022/lib/auth/esolve-auth-interceptor.service.mjs +0 -42
- package/esm2022/lib/auth/esolve-auth.service.mjs +0 -286
- package/esm2022/lib/auth/esolve-otp.service.mjs +0 -77
- package/esm2022/lib/core/providers/provide-ng-esolve-connect.function.mjs +0 -24
- package/lib/auth/esolve-auth-interceptor.service.d.ts +0 -10
- /package/lib/core/providers/{provide-ng-esolve-connect.function.d.ts → ng-esolve-connect.provider.d.ts} +0 -0
|
@@ -119,7 +119,9 @@ export class EsolveVouchersService {
|
|
|
119
119
|
cacheVouchers() {
|
|
120
120
|
if (this.cache.size > 0) {
|
|
121
121
|
const vouchers_json = this.jsonEncodeMap(this.cache);
|
|
122
|
-
this.cookieService.set(this.storage_key, vouchers_json,
|
|
122
|
+
this.cookieService.set(this.storage_key, vouchers_json, {
|
|
123
|
+
path: '/',
|
|
124
|
+
});
|
|
123
125
|
this.setBackup(vouchers_json);
|
|
124
126
|
}
|
|
125
127
|
else {
|
|
@@ -128,7 +130,7 @@ export class EsolveVouchersService {
|
|
|
128
130
|
}
|
|
129
131
|
deleteVouchers() {
|
|
130
132
|
this.cache.clear();
|
|
131
|
-
this.cookieService.delete(this.storage_key, '/');
|
|
133
|
+
this.cookieService.delete(this.storage_key, { path: '/' });
|
|
132
134
|
this.removeBackup();
|
|
133
135
|
}
|
|
134
136
|
getBackup() {
|
|
@@ -166,9 +168,9 @@ export class EsolveVouchersService {
|
|
|
166
168
|
this.applied.next();
|
|
167
169
|
}
|
|
168
170
|
setStorageKey() {
|
|
169
|
-
if (typeof this.config.
|
|
170
|
-
this.config.
|
|
171
|
-
this.storage_key = this.config.
|
|
171
|
+
if (typeof this.config.voucher_cookie_key === 'string' &&
|
|
172
|
+
this.config.voucher_cookie_key !== '') {
|
|
173
|
+
this.storage_key = this.config.voucher_cookie_key;
|
|
172
174
|
}
|
|
173
175
|
}
|
|
174
176
|
jsonEncodeMap(data) {
|
|
@@ -220,4 +222,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImpor
|
|
|
220
222
|
providedIn: 'root',
|
|
221
223
|
}]
|
|
222
224
|
}], ctorParameters: () => [] });
|
|
223
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLXZvdWNoZXJzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25nLWVzb2x2ZS1jb25uZWN0L3NyYy9saWIvdm91Y2hlcnMvZXNvbHZlLXZvdWNoZXJzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVoRSxPQUFPLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDNUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVqRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDOUMsT0FBTyxFQUFFLG1CQUFtQixFQUFxQixNQUFNLFdBQVcsQ0FBQztBQUVuRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sV0FBVyxDQUFDOztBQVkxQyxNQUFNLE9BQU8scUJBQXFCO0lBYTlCO1FBWmlCLGVBQVUsR0FBRyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztRQUNwRCxTQUFJLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzFCLFdBQU0sR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUNyQyxrQkFBYSxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBRXJELGdCQUFXLEdBQUcsbUJBQW1CLENBQUM7UUFDbEMsVUFBSyxHQUF3QixJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ3ZDLFlBQU8sR0FBRyxJQUFJLGVBQWUsQ0FBTyxTQUFTLENBQUMs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QUFPLEVBQUUsQ0FBQztnQkFDM0IsTUFBTSxPQUFPLEdBQUcsSUFBSSxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBRTFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDM0IsQ0FBQztRQUNMLENBQUM7UUFFRCxPQUFPLFFBQVEsQ0FBQztJQUNwQixDQUFDOzhHQXRSUSxxQkFBcUI7a0hBQXJCLHFCQUFxQixjQUZsQixNQUFNOzsyRkFFVCxxQkFBcUI7a0JBSGpDLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSwgUExBVEZPUk1fSUQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBmaXJzdFZhbHVlRnJvbSwgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBFc29sdmVDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vY29yZSc7XG5pbXBvcnQgeyBFc29sdmVDb29raWVTZXJ2aWNlLCBFc29sdmVHZXRSZXNwb25zZSB9IGZyb20gJy4uL3NoYXJlZCc7XG5cbmltcG9ydCB7IEVzb2x2ZVZvdWNoZXIgfSBmcm9tICcuL2NsYXNzZXMnO1xuaW1wb3J0IHtcbiAgICBFc29sdmVWb3VjaGVyUmVjb3JkLFxuICAgIEVzb2x2ZVZvdWNoZXJWYWxpZGF0aW9uLFxuICAgIEVzb2x2ZVZvdWNoZXJWYWxpZGF0aW9uRXJyb3IsXG4gICAgRXNvbHZlVm91Y2hlclZhbGlkYXRpb25SZXN1bHQsXG59IGZyb20gJy4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBFc29sdmVWb3VjaGVyc0NhY2hlIH0gZnJvbSAnLi90eXBlcyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEVzb2x2ZVZvdWNoZXJzU2VydmljZSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBpc19icm93c2VyID0gaXNQbGF0Zm9ybUJyb3dzZXIoaW5qZWN0KFBMQVRGT1JNX0lEKSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBodHRwID0gaW5qZWN0KEh0dHBDbGllbnQpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnID0gaW5qZWN0KEVzb2x2ZUNvbmZpZ1NlcnZpY2UpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY29va2llU2VydmljZSA9IGluamVjdChFc29sdmVDb29raWVTZXJ2aWNlKTtcblxuICAgIHByaXZhdGUgc3RvcmFnZV9rZXkgPSAnX25nX2VzbHZfdm91Y2hlcnMnO1xuICAgIHByaXZhdGUgY2FjaGU6IEVzb2x2ZVZvdWNoZXJzQ2FjaGUgPSBuZXcgTWFwKCk7XG4gICAgcHJpdmF0ZSBhcHBsaWVkID0gbmV3IEJlaGF2aW9yU3ViamVjdDx2b2lkPih1bmRlZmluZWQpO1xuICAgIHByaXZhdGUgdmFsaWRhdGlvbl9lcnJvciA9IG5ldyBTdWJqZWN0PFxuICAgICAgICBFc29sdmVWb3VjaGVyVmFsaWRhdGlvbkVycm9yIHwgdW5kZWZpbmVkXG4gICAgPigpO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuc2V0U3RvcmFnZUtleSgpO1xuICAgICAgICB0aGlzLmNhY2hlID0gdGhpcy5yZXRyaWV2ZUNhY2hlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uVmFsaWRhdGlvbkVycm9yKCk6IE9ic2VydmFibGU8XG4gICAgICAgIEVzb2x2ZVZvdWNoZXJWYWxpZGF0aW9uRXJyb3IgfCB1bmRlZmluZWRcbiAgICA+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsaWRhdGlvbl9lcnJvci5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25BcHBsaWVkKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5hcHBsaWVkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyB2YWxpZGF0ZShcbiAgICAgICAgdm91Y2hlcl9rZXk6IHN0cmluZyxcbiAgICApOiBPYnNlcnZhYmxlPEVzb2x2ZVZvdWNoZXJWYWxpZGF0aW9uUmVzdWx0PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgICAgICAgIC5nZXQ8RXNvbHZlR2V0UmVzcG9uc2U8RXNvbHZlVm91Y2hlclZhbGlkYXRpb24+PihcbiAgICAgICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9nZXQtdmFsaWRhdGUtdm91Y2hlci5waHBgLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2b3VjaGVyX2tleSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5yZWNvcmRzID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5LmlzQXJyYXkocmVzcG9uc2UucmVjb3JkcylcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyByZXNwb25zZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbGlkID0gcmVzcG9uc2UucmVjb3Jkcy52YWxpZDtcblxuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQ6IEVzb2x2ZVZvdWNoZXJWYWxpZGF0aW9uUmVzdWx0ID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWQsXG4gICAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCF2YWxpZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZXJyb3IgPSByZXNwb25zZS5yZWNvcmRzLmVycm9yO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9uX2Vycm9yLm5leHQoZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHZhbGlkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuaWQgPSByZXNwb25zZS5yZWNvcmRzLmlkO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9uX2Vycm9yLm5leHQodW5kZWZpbmVkKTtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gW3sgdmFsaWQ6IGZhbHNlIH1dO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgYXBwbHlWb3VjaGVyKHZvdWNoZXJfa2V5OiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmICh2b3VjaGVyX2tleS50cmltKCkgPT09ICcnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLnZhbGlkYXRlKHZvdWNoZXJfa2V5KSk7XG5cbiAgICAgICAgICAgIGlmIChyZXN1bHQudmFsaWQgJiYgcmVzdWx0LmlkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hZGRWb3VjaGVyKHJlc3VsdC5pZCwgdm91Y2hlcl9rZXkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0LnZhbGlkO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG5cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyByZW1vdmVWb3VjaGVyKGlkOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jYWNoZS5kZWxldGUoaWQpO1xuXG4gICAgICAgIHRoaXMuY2FjaGVWb3VjaGVycygpO1xuICAgICAgICB0aGlzLmFwcGxpZWQubmV4dCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRBcHBsaWVkVm91Y2hlcktleXMoKTogc3RyaW5nW10ge1xuICAgICAgICByZXR1cm4gWy4uLnRoaXMuY2FjaGUudmFsdWVzKCldO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRBcHBsaWVkVm91Y2hlcnMoKTogT2JzZXJ2YWJsZTxFc29sdmVWb3VjaGVyW10+IHtcbiAgICAgICAgY29uc3Qgdm91Y2hlcl9pZHMgPSBbLi4udGhpcy5jYWNoZS5rZXlzKCldO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgICAgICAgIC5nZXQ8RXNvbHZlR2V0UmVzcG9uc2U8RXNvbHZlVm91Y2hlclJlY29yZFtdPj4oXG4gICAgICAgICAgICAgICAgYCR7dGhpcy5jb25maWcuYXBpX3VybH0vZ2V0LWFwcGxpZWQtdm91Y2hlcnMucGhwYCxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHBhcmFtczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgdm91Y2hlcnM6IHZvdWNoZXJfaWRzLmpvaW4oJywnKSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UucmVjb3JkcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyByZXNwb25zZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnByb2Nlc3NWb3VjaGVycyhyZXNwb25zZS5yZWNvcmRzKTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIHJlc2V0KCkge1xuICAgICAgICB0aGlzLmRlbGV0ZVZvdWNoZXJzKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZXRyaWV2ZUNhY2hlKCk6IEVzb2x2ZVZvdWNoZXJzQ2FjaGUge1xuICAgICAgICBpZiAodGhpcy5jb29raWVTZXJ2aWNlLmNoZWNrKHRoaXMuc3RvcmFnZV9rZXkpIHx8IHRoaXMuZ2V0QmFja3VwKCkpIHtcbiAgICAgICAgICAgIGxldCB2b3VjaGVyc19qc29uID0gdGhpcy5jb29raWVTZXJ2aWNlLmdldCh0aGlzLnN0b3JhZ2Vfa2V5KTtcblxuICAgICAgICAgICAgaWYgKHZvdWNoZXJzX2pzb24gPT09ICcnKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbG9jYWxfc3RvcmVfZGF0YSA9IHRoaXMuZ2V0QmFja3VwKCk7XG5cbiAgICAgICAgICAgICAgICBpZiAobG9jYWxfc3RvcmVfZGF0YSkge1xuICAgICAgICAgICAgICAgICAgICB2b3VjaGVyc19qc29uID0gbG9jYWxfc3RvcmVfZGF0YTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuanNvbkRlY29kZU1hcCh2b3VjaGVyc19qc29uKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICAgICAgICAgICAgLy8gc29mdCBlcnJvclxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5ldyBNYXAoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNhY2hlVm91Y2hlcnMoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmNhY2hlLnNpemUgPiAwKSB7XG4gICAgICAgICAgICBjb25zdCB2b3VjaGVyc19qc29uID0gdGhpcy5qc29uRW5jb2RlTWFwKHRoaXMuY2FjaGUpO1xuXG4gICAgICAgICAgICB0aGlzLmNvb2tpZVNlcnZpY2Uuc2V0KFxuICAgICAgICAgICAgICAgIHRoaXMuc3RvcmFnZV9rZXksXG4gICAgICAgICAgICAgICAgdm91Y2hlcnNfanNvbixcbiAgICAgICAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgJy8nLFxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgdGhpcy5zZXRCYWNrdXAodm91Y2hlcnNfanNvbik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmRlbGV0ZVZvdWNoZXJzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGRlbGV0ZVZvdWNoZXJzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNhY2hlLmNsZWFyKCk7XG4gICAgICAgIHRoaXMuY29va2llU2VydmljZS5kZWxldGUodGhpcy5zdG9yYWdlX2tleSwgJy8nKTtcblxuICAgICAgICB0aGlzLnJlbW92ZUJhY2t1cCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0QmFja3VwKCk6IHN0cmluZyB8IG51bGwge1xuICAgICAgICBpZiAoIXRoaXMuaXNfYnJvd3Nlcikge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWxvY2FsU3RvcmFnZSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5zdG9yYWdlX2tleSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRCYWNrdXAoZGF0YTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5pc19icm93c2VyKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWxvY2FsU3RvcmFnZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5zdG9yYWdlX2tleSwgZGF0YSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZW1vdmVCYWNrdXAoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5pc19icm93c2VyKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWxvY2FsU3RvcmFnZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0odGhpcy5zdG9yYWdlX2tleSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhZGRWb3VjaGVyKGlkOiBudW1iZXIsIGtleTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5jYWNoZS5oYXMoaWQpKSB7XG4gICAgICAgICAgICB0aGlzLmNhY2hlLnNldChpZCwga2V5KTtcbiAgICAgICAgICAgIHRoaXMuY2FjaGVWb3VjaGVycygpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5hcHBsaWVkLm5leHQoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFN0b3JhZ2VLZXkoKTogdm9pZCB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHR5cGVvZiB0aGlzLmNvbmZpZy52b3VjaGVyX3N0b3JhZ2Vfa2V5ID09PSAnc3RyaW5nJyAmJlxuICAgICAgICAgICAgdGhpcy5jb25maWcudm91Y2hlcl9zdG9yYWdlX2tleSAhPT0gJydcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLnN0b3JhZ2Vfa2V5ID0gdGhpcy5jb25maWcudm91Y2hlcl9zdG9yYWdlX2tleTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUganNvbkVuY29kZU1hcChkYXRhOiBFc29sdmVWb3VjaGVyc0NhY2hlKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKCEoZGF0YSBpbnN0YW5jZW9mIE1hcCkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBtYXAgdHlwZScpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGRhdGEsIChrZXksIHZhbHVlKSA9PiB7XG4gICAgICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBNYXApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBkYXRhVHlwZTogJ01hcCcsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBbLi4udmFsdWVdLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBqc29uRGVjb2RlTWFwKGpzb25fZGF0YTogc3RyaW5nKTogRXNvbHZlVm91Y2hlcnNDYWNoZSB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSBKU09OLnBhcnNlKGpzb25fZGF0YSwgKGtleSwgdmFsdWUpID0+IHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlLmRhdGFUeXBlID09PSAnTWFwJykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IE1hcCh2YWx1ZS52YWx1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChkYXRhIGluc3RhbmNlb2YgTWFwKSB7XG4gICAgICAgICAgICByZXR1cm4gZGF0YTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBtYXAgdHlwZScpO1xuICAgIH1cblxuICAgIHByaXZhdGUgcHJvY2Vzc1ZvdWNoZXJzKHJlY29yZHM6IEVzb2x2ZVZvdWNoZXJSZWNvcmRbXSk6IEVzb2x2ZVZvdWNoZXJbXSB7XG4gICAgICAgIGNvbnN0IHZvdWNoZXJzOiBFc29sdmVWb3VjaGVyW10gPSBbXTtcblxuICAgICAgICBpZiAocmVjb3Jkcykge1xuICAgICAgICAgICAgZm9yIChjb25zdCByZWNvcmQgb2YgcmVjb3Jkcykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHZvdWNoZXIgPSBuZXcgRXNvbHZlVm91Y2hlcihyZWNvcmQpO1xuXG4gICAgICAgICAgICAgICAgdm91Y2hlcnMucHVzaCh2b3VjaGVyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB2b3VjaGVycztcbiAgICB9XG59XG4iXX0=
|
|
225
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNvbHZlLXZvdWNoZXJzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25nLWVzb2x2ZS1jb25uZWN0L3NyYy9saWIvdm91Y2hlcnMvZXNvbHZlLXZvdWNoZXJzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVoRSxPQUFPLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDNUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVqRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDOUMsT0FBTyxFQUFFLG1CQUFtQixFQUFxQixNQUFNLFdBQVcsQ0FBQztBQUVuRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sV0FBVyxDQUFDOztBQVkxQyxNQUFNLE9BQU8scUJBQXFCO0lBYTlCO1FBWmlCLGVBQVUsR0FBRyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztRQUNwRCxTQUFJLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzFCLFdBQU0sR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUNyQyxrQkFBYSxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBRXJELGdCQUFXLEdBQUcsbUJBQW1CLENBQUM7UUFDbEMsVUFBSyxHQUF3QixJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ3ZDLFlBQU8sR0FBRyxJQUFJLGVBQWUsQ0FBTyxTQUFTLENBQUMs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QUFDO1lBQ1YsS0FBSyxNQUFNLE1BQU0sSUFBSSxPQUFPLEVBQUUsQ0FBQztnQkFDM0IsTUFBTSxPQUFPLEdBQUcsSUFBSSxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBRTFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDM0IsQ0FBQztRQUNMLENBQUM7UUFFRCxPQUFPLFFBQVEsQ0FBQztJQUNwQixDQUFDOzhHQW5SUSxxQkFBcUI7a0hBQXJCLHFCQUFxQixjQUZsQixNQUFNOzsyRkFFVCxxQkFBcUI7a0JBSGpDLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSwgUExBVEZPUk1fSUQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBmaXJzdFZhbHVlRnJvbSwgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBFc29sdmVDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vY29yZSc7XG5pbXBvcnQgeyBFc29sdmVDb29raWVTZXJ2aWNlLCBFc29sdmVHZXRSZXNwb25zZSB9IGZyb20gJy4uL3NoYXJlZCc7XG5cbmltcG9ydCB7IEVzb2x2ZVZvdWNoZXIgfSBmcm9tICcuL2NsYXNzZXMnO1xuaW1wb3J0IHtcbiAgICBFc29sdmVWb3VjaGVyUmVjb3JkLFxuICAgIEVzb2x2ZVZvdWNoZXJWYWxpZGF0aW9uLFxuICAgIEVzb2x2ZVZvdWNoZXJWYWxpZGF0aW9uRXJyb3IsXG4gICAgRXNvbHZlVm91Y2hlclZhbGlkYXRpb25SZXN1bHQsXG59IGZyb20gJy4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBFc29sdmVWb3VjaGVyc0NhY2hlIH0gZnJvbSAnLi90eXBlcyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEVzb2x2ZVZvdWNoZXJzU2VydmljZSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBpc19icm93c2VyID0gaXNQbGF0Zm9ybUJyb3dzZXIoaW5qZWN0KFBMQVRGT1JNX0lEKSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBodHRwID0gaW5qZWN0KEh0dHBDbGllbnQpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnID0gaW5qZWN0KEVzb2x2ZUNvbmZpZ1NlcnZpY2UpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY29va2llU2VydmljZSA9IGluamVjdChFc29sdmVDb29raWVTZXJ2aWNlKTtcblxuICAgIHByaXZhdGUgc3RvcmFnZV9rZXkgPSAnX25nX2VzbHZfdm91Y2hlcnMnO1xuICAgIHByaXZhdGUgY2FjaGU6IEVzb2x2ZVZvdWNoZXJzQ2FjaGUgPSBuZXcgTWFwKCk7XG4gICAgcHJpdmF0ZSBhcHBsaWVkID0gbmV3IEJlaGF2aW9yU3ViamVjdDx2b2lkPih1bmRlZmluZWQpO1xuICAgIHByaXZhdGUgdmFsaWRhdGlvbl9lcnJvciA9IG5ldyBTdWJqZWN0PFxuICAgICAgICBFc29sdmVWb3VjaGVyVmFsaWRhdGlvbkVycm9yIHwgdW5kZWZpbmVkXG4gICAgPigpO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuc2V0U3RvcmFnZUtleSgpO1xuICAgICAgICB0aGlzLmNhY2hlID0gdGhpcy5yZXRyaWV2ZUNhY2hlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uVmFsaWRhdGlvbkVycm9yKCk6IE9ic2VydmFibGU8XG4gICAgICAgIEVzb2x2ZVZvdWNoZXJWYWxpZGF0aW9uRXJyb3IgfCB1bmRlZmluZWRcbiAgICA+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsaWRhdGlvbl9lcnJvci5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25BcHBsaWVkKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5hcHBsaWVkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyB2YWxpZGF0ZShcbiAgICAgICAgdm91Y2hlcl9rZXk6IHN0cmluZyxcbiAgICApOiBPYnNlcnZhYmxlPEVzb2x2ZVZvdWNoZXJWYWxpZGF0aW9uUmVzdWx0PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgICAgICAgIC5nZXQ8RXNvbHZlR2V0UmVzcG9uc2U8RXNvbHZlVm91Y2hlclZhbGlkYXRpb24+PihcbiAgICAgICAgICAgICAgICBgJHt0aGlzLmNvbmZpZy5hcGlfdXJsfS9nZXQtdmFsaWRhdGUtdm91Y2hlci5waHBgLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2b3VjaGVyX2tleSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5yZWNvcmRzID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5LmlzQXJyYXkocmVzcG9uc2UucmVjb3JkcylcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyByZXNwb25zZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbGlkID0gcmVzcG9uc2UucmVjb3Jkcy52YWxpZDtcblxuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQ6IEVzb2x2ZVZvdWNoZXJWYWxpZGF0aW9uUmVzdWx0ID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWQsXG4gICAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCF2YWxpZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZXJyb3IgPSByZXNwb25zZS5yZWNvcmRzLmVycm9yO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9uX2Vycm9yLm5leHQoZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHZhbGlkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuaWQgPSByZXNwb25zZS5yZWNvcmRzLmlkO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9uX2Vycm9yLm5leHQodW5kZWZpbmVkKTtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gW3sgdmFsaWQ6IGZhbHNlIH1dO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgYXBwbHlWb3VjaGVyKHZvdWNoZXJfa2V5OiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmICh2b3VjaGVyX2tleS50cmltKCkgPT09ICcnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLnZhbGlkYXRlKHZvdWNoZXJfa2V5KSk7XG5cbiAgICAgICAgICAgIGlmIChyZXN1bHQudmFsaWQgJiYgcmVzdWx0LmlkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hZGRWb3VjaGVyKHJlc3VsdC5pZCwgdm91Y2hlcl9rZXkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0LnZhbGlkO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG5cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyByZW1vdmVWb3VjaGVyKGlkOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jYWNoZS5kZWxldGUoaWQpO1xuXG4gICAgICAgIHRoaXMuY2FjaGVWb3VjaGVycygpO1xuICAgICAgICB0aGlzLmFwcGxpZWQubmV4dCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRBcHBsaWVkVm91Y2hlcktleXMoKTogc3RyaW5nW10ge1xuICAgICAgICByZXR1cm4gWy4uLnRoaXMuY2FjaGUudmFsdWVzKCldO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRBcHBsaWVkVm91Y2hlcnMoKTogT2JzZXJ2YWJsZTxFc29sdmVWb3VjaGVyW10+IHtcbiAgICAgICAgY29uc3Qgdm91Y2hlcl9pZHMgPSBbLi4udGhpcy5jYWNoZS5rZXlzKCldO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgICAgICAgIC5nZXQ8RXNvbHZlR2V0UmVzcG9uc2U8RXNvbHZlVm91Y2hlclJlY29yZFtdPj4oXG4gICAgICAgICAgICAgICAgYCR7dGhpcy5jb25maWcuYXBpX3VybH0vZ2V0LWFwcGxpZWQtdm91Y2hlcnMucGhwYCxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHBhcmFtczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgdm91Y2hlcnM6IHZvdWNoZXJfaWRzLmpvaW4oJywnKSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UucmVjb3JkcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyByZXNwb25zZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnByb2Nlc3NWb3VjaGVycyhyZXNwb25zZS5yZWNvcmRzKTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIHJlc2V0KCkge1xuICAgICAgICB0aGlzLmRlbGV0ZVZvdWNoZXJzKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZXRyaWV2ZUNhY2hlKCk6IEVzb2x2ZVZvdWNoZXJzQ2FjaGUge1xuICAgICAgICBpZiAodGhpcy5jb29raWVTZXJ2aWNlLmNoZWNrKHRoaXMuc3RvcmFnZV9rZXkpIHx8IHRoaXMuZ2V0QmFja3VwKCkpIHtcbiAgICAgICAgICAgIGxldCB2b3VjaGVyc19qc29uID0gdGhpcy5jb29raWVTZXJ2aWNlLmdldCh0aGlzLnN0b3JhZ2Vfa2V5KTtcblxuICAgICAgICAgICAgaWYgKHZvdWNoZXJzX2pzb24gPT09ICcnKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbG9jYWxfc3RvcmVfZGF0YSA9IHRoaXMuZ2V0QmFja3VwKCk7XG5cbiAgICAgICAgICAgICAgICBpZiAobG9jYWxfc3RvcmVfZGF0YSkge1xuICAgICAgICAgICAgICAgICAgICB2b3VjaGVyc19qc29uID0gbG9jYWxfc3RvcmVfZGF0YTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuanNvbkRlY29kZU1hcCh2b3VjaGVyc19qc29uKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICAgICAgICAgICAgLy8gc29mdCBlcnJvclxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5ldyBNYXAoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNhY2hlVm91Y2hlcnMoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmNhY2hlLnNpemUgPiAwKSB7XG4gICAgICAgICAgICBjb25zdCB2b3VjaGVyc19qc29uID0gdGhpcy5qc29uRW5jb2RlTWFwKHRoaXMuY2FjaGUpO1xuXG4gICAgICAgICAgICB0aGlzLmNvb2tpZVNlcnZpY2Uuc2V0KHRoaXMuc3RvcmFnZV9rZXksIHZvdWNoZXJzX2pzb24sIHtcbiAgICAgICAgICAgICAgICBwYXRoOiAnLycsXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgdGhpcy5zZXRCYWNrdXAodm91Y2hlcnNfanNvbik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmRlbGV0ZVZvdWNoZXJzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGRlbGV0ZVZvdWNoZXJzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNhY2hlLmNsZWFyKCk7XG4gICAgICAgIHRoaXMuY29va2llU2VydmljZS5kZWxldGUodGhpcy5zdG9yYWdlX2tleSwgeyBwYXRoOiAnLycgfSk7XG5cbiAgICAgICAgdGhpcy5yZW1vdmVCYWNrdXAoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEJhY2t1cCgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzX2Jyb3dzZXIpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFsb2NhbFN0b3JhZ2UpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuc3RvcmFnZV9rZXkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0QmFja3VwKGRhdGE6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuaXNfYnJvd3Nlcikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFsb2NhbFN0b3JhZ2UpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuc3RvcmFnZV9rZXksIGRhdGEpO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVtb3ZlQmFja3VwKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuaXNfYnJvd3Nlcikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFsb2NhbFN0b3JhZ2UpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKHRoaXMuc3RvcmFnZV9rZXkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYWRkVm91Y2hlcihpZDogbnVtYmVyLCBrZXk6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuY2FjaGUuaGFzKGlkKSkge1xuICAgICAgICAgICAgdGhpcy5jYWNoZS5zZXQoaWQsIGtleSk7XG4gICAgICAgICAgICB0aGlzLmNhY2hlVm91Y2hlcnMoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYXBwbGllZC5uZXh0KCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRTdG9yYWdlS2V5KCk6IHZvaWQge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0eXBlb2YgdGhpcy5jb25maWcudm91Y2hlcl9jb29raWVfa2V5ID09PSAnc3RyaW5nJyAmJlxuICAgICAgICAgICAgdGhpcy5jb25maWcudm91Y2hlcl9jb29raWVfa2V5ICE9PSAnJ1xuICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuc3RvcmFnZV9rZXkgPSB0aGlzLmNvbmZpZy52b3VjaGVyX2Nvb2tpZV9rZXk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGpzb25FbmNvZGVNYXAoZGF0YTogRXNvbHZlVm91Y2hlcnNDYWNoZSk6IHN0cmluZyB7XG4gICAgICAgIGlmICghKGRhdGEgaW5zdGFuY2VvZiBNYXApKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgbWFwIHR5cGUnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShkYXRhLCAoa2V5LCB2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgTWFwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YVR5cGU6ICdNYXAnLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogWy4uLnZhbHVlXSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUganNvbkRlY29kZU1hcChqc29uX2RhdGE6IHN0cmluZyk6IEVzb2x2ZVZvdWNoZXJzQ2FjaGUge1xuICAgICAgICBjb25zdCBkYXRhID0gSlNPTi5wYXJzZShqc29uX2RhdGEsIChrZXksIHZhbHVlKSA9PiB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGlmICh2YWx1ZS5kYXRhVHlwZSA9PT0gJ01hcCcpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBNYXAodmFsdWUudmFsdWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoZGF0YSBpbnN0YW5jZW9mIE1hcCkge1xuICAgICAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgbWFwIHR5cGUnKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHByb2Nlc3NWb3VjaGVycyhyZWNvcmRzOiBFc29sdmVWb3VjaGVyUmVjb3JkW10pOiBFc29sdmVWb3VjaGVyW10ge1xuICAgICAgICBjb25zdCB2b3VjaGVyczogRXNvbHZlVm91Y2hlcltdID0gW107XG5cbiAgICAgICAgaWYgKHJlY29yZHMpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgcmVjb3JkIG9mIHJlY29yZHMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB2b3VjaGVyID0gbmV3IEVzb2x2ZVZvdWNoZXIocmVjb3JkKTtcblxuICAgICAgICAgICAgICAgIHZvdWNoZXJzLnB1c2godm91Y2hlcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdm91Y2hlcnM7XG4gICAgfVxufVxuIl19
|