@eo-sdk/client 8.15.0-rc.1 → 8.16.0-rc.1
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/app/eo-framework/actions/actions/open-context-action/open-context-action.d.ts +2 -0
- package/app/eo-framework/actions/actions/share-object-action/share-object/share-object.component.d.ts +1 -0
- package/app/eo-framework/object-form/object-form/form-element-table/row-edit/row-edit.component.d.ts +3 -1
- package/app/eo-framework-core/agent/agent.service.d.ts +3 -2
- package/assets/_default/i18n/de.json +5 -3
- package/assets/_default/i18n/en.json +5 -3
- package/bundles/eo-sdk-client-projects-eo-sdk-core.umd.js +4275 -4240
- package/bundles/eo-sdk-client-projects-eo-sdk-core.umd.js.map +1 -1
- package/bundles/eo-sdk-client-projects-eo-sdk-core.umd.min.js +2 -2
- package/bundles/eo-sdk-client-projects-eo-sdk-core.umd.min.js.map +1 -1
- package/bundles/eo-sdk-client.umd.js +40 -20
- package/bundles/eo-sdk-client.umd.js.map +1 -1
- package/bundles/eo-sdk-client.umd.min.js +1 -1
- package/bundles/eo-sdk-client.umd.min.js.map +1 -1
- package/eo-sdk-client.metadata.json +1 -1
- package/esm2015/app/eo-client/about-state/about-state.component.js +3 -3
- package/esm2015/app/eo-client/result-state/result-state.component.js +3 -3
- package/esm2015/app/eo-framework/actions/actions/delete-content-action/delete-content-action.js +2 -3
- package/esm2015/app/eo-framework/actions/actions/open-context-action/open-context-action.js +11 -4
- package/esm2015/app/eo-framework/actions/actions/share-object-action/share-object/share-object.component.js +10 -4
- package/esm2015/app/eo-framework/app-shell/app-bar/app-search/app-search.component.js +2 -2
- package/esm2015/app/eo-framework/object-form/object-form/form-element-table/form-element-table.component.js +3 -3
- package/esm2015/app/eo-framework/object-form/object-form/form-element-table/row-edit/row-edit.component.js +11 -4
- package/esm2015/app/eo-framework/object-form/object-form/object-form.component.js +4 -4
- package/esm2015/app/eo-framework/ui/eo-dialog/eo-dialog.component.js +1 -2
- package/esm2015/app/eo-framework-core/agent/agent.service.js +7 -5
- package/esm2015/projects/eo-sdk/core/lib/config/core-config.js +3 -1
- package/esm2015/projects/eo-sdk/core/lib/config/core-init.service.js +4 -2
- package/esm2015/projects/eo-sdk/core/lib/service/auth/auth.service.js +4 -3
- package/esm2015/projects/eo-sdk/core/lib/service/backend/backend.service.js +11 -7
- package/esm2015/projects/eo-sdk/core/lib/service/dms/dms.service.js +7 -5
- package/esm2015/projects/eo-sdk/core/lib/service/upload/upload.service.js +8 -4
- package/esm2015/projects/eo-sdk/core/lib/util/utils.js +25 -1
- package/fesm2015/eo-sdk-client-projects-eo-sdk-core.js +3769 -3735
- package/fesm2015/eo-sdk-client-projects-eo-sdk-core.js.map +1 -1
- package/fesm2015/eo-sdk-client.js +41 -22
- package/fesm2015/eo-sdk-client.js.map +1 -1
- package/package.json +2 -2
- package/projects/eo-sdk/core/eo-sdk-client-projects-eo-sdk-core.metadata.json +1 -1
- package/projects/eo-sdk/core/lib/config/core-config.d.ts +1 -0
- package/projects/eo-sdk/core/lib/service/backend/backend.service.d.ts +3 -1
- package/projects/eo-sdk/core/lib/service/dms/dms.service.d.ts +4 -3
- package/projects/eo-sdk/core/lib/service/upload/upload.service.d.ts +3 -1
- package/projects/eo-sdk/core/lib/util/utils.d.ts +3 -0
- package/projects/eo-sdk/core/package.json +1 -1
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
1
|
+
import { Inject, Injectable } from '@angular/core';
|
|
2
2
|
import { HttpClient, HttpHeaders } from '@angular/common/http';
|
|
3
3
|
import { UserService } from '../user/user.service';
|
|
4
4
|
import { Utils } from '../../util/utils';
|
|
5
|
+
import { CoreConfig } from '../../config/core-config';
|
|
6
|
+
import { CORE_CONFIG } from '../../config/core-init.tokens';
|
|
5
7
|
/**
|
|
6
8
|
* The Upload Service is provides access to Upload data (files)
|
|
7
9
|
*/
|
|
@@ -9,7 +11,8 @@ export class UploadService {
|
|
|
9
11
|
/**
|
|
10
12
|
* @ignore
|
|
11
13
|
*/
|
|
12
|
-
constructor(http, userService) {
|
|
14
|
+
constructor(coreConfig, http, userService) {
|
|
15
|
+
this.coreConfig = coreConfig;
|
|
13
16
|
this.http = http;
|
|
14
17
|
this.userService = userService;
|
|
15
18
|
}
|
|
@@ -24,14 +27,15 @@ export class UploadService {
|
|
|
24
27
|
const formData = new FormData();
|
|
25
28
|
const headers = new HttpHeaders({ 'Accept-Language': this.userService.getCurrentUser().getClientLocale() });
|
|
26
29
|
files.forEach(file => formData.append('files[]', file, Utils.encodeFileName(file.name)));
|
|
27
|
-
return this.http.post(uri, formData, { headers });
|
|
30
|
+
return this.http.post(uri, formData, { headers, withCredentials: this.coreConfig.withCredentials });
|
|
28
31
|
}
|
|
29
32
|
}
|
|
30
33
|
UploadService.decorators = [
|
|
31
34
|
{ type: Injectable }
|
|
32
35
|
];
|
|
33
36
|
UploadService.ctorParameters = () => [
|
|
37
|
+
{ type: CoreConfig, decorators: [{ type: Inject, args: [CORE_CONFIG,] }] },
|
|
34
38
|
{ type: HttpClient },
|
|
35
39
|
{ type: UserService }
|
|
36
40
|
];
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lby1zZGsvY29yZS9zcmMvbGliL3NlcnZpY2UvdXBsb2FkL3VwbG9hZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBQyxVQUFVLEVBQUUsV0FBVyxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFFN0QsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ2pELE9BQU8sRUFBQyxLQUFLLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUN2QyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDcEQsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBRzFEOztHQUVHO0FBRUgsTUFBTSxPQUFPLGFBQWE7SUFDeEI7O09BRUc7SUFDSCxZQUM4QixVQUFzQixFQUMxQyxJQUFnQixFQUFVLFdBQXdCO1FBRDlCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDMUMsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUFVLGdCQUFXLEdBQVgsV0FBVyxDQUFhO0lBQzVELENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxNQUFNLENBQUMsR0FBVyxFQUFFLEtBQWE7UUFDL0IsTUFBTSxRQUFRLEdBQUcsSUFBSSxRQUFRLEVBQUUsQ0FBQztRQUNoQyxNQUFNLE9BQU8sR0FBZ0IsSUFBSSxXQUFXLENBQUMsRUFBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsRUFBRSxDQUFDLGVBQWUsRUFBRSxFQUFDLENBQUMsQ0FBQztRQUN2SCxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN6RixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxRQUFRLEVBQUUsRUFBQyxPQUFPLEVBQUUsZUFBZSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsZUFBZSxFQUFDLENBQUMsQ0FBQztJQUNwRyxDQUFDOzs7WUF0QkYsVUFBVTs7O1lBUEgsVUFBVSx1QkFhYixNQUFNLFNBQUMsV0FBVztZQWpCZixVQUFVO1lBRVYsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0LCBJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtIdHRwQ2xpZW50LCBIdHRwSGVhZGVyc30gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge1VzZXJTZXJ2aWNlfSBmcm9tICcuLi91c2VyL3VzZXIuc2VydmljZSc7XHJcbmltcG9ydCB7VXRpbHN9IGZyb20gJy4uLy4uL3V0aWwvdXRpbHMnO1xyXG5pbXBvcnQge0NvcmVDb25maWd9IGZyb20gJy4uLy4uL2NvbmZpZy9jb3JlLWNvbmZpZyc7XHJcbmltcG9ydCB7Q09SRV9DT05GSUd9IGZyb20gJy4uLy4uL2NvbmZpZy9jb3JlLWluaXQudG9rZW5zJztcclxuXHJcblxyXG4vKipcclxuICogVGhlIFVwbG9hZCBTZXJ2aWNlIGlzIHByb3ZpZGVzIGFjY2VzcyB0byBVcGxvYWQgZGF0YSAoZmlsZXMpXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBVcGxvYWRTZXJ2aWNlIHtcclxuICAvKipcclxuICAgKiBAaWdub3JlXHJcbiAgICovXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBASW5qZWN0KENPUkVfQ09ORklHKSBwdWJsaWMgY29yZUNvbmZpZzogQ29yZUNvbmZpZyxcclxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCwgcHJpdmF0ZSB1c2VyU2VydmljZTogVXNlclNlcnZpY2UpIHtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFVwbG9hZHMgZmlsZXMuXHJcbiAgICpcclxuICAgKiBAcGFyYW0gdXJpIFVwbG9hZCBkZXN0aW5hdGlvbiB1cmlcclxuICAgKiBAcGFyYW0gZmlsZXMgRmlsZXMgdG8gYmUgdXBsb2FkZWRcclxuICAgKiBAcmV0dXJucyByZXNvbHZlZCBieSB0aGUgcmVzcG9uc2Ugb2YgdGhlIHVwbG9hZCBkZXN0aW5hdGlvblxyXG4gICAqL1xyXG4gIHVwbG9hZCh1cmk6IHN0cmluZywgZmlsZXM6IEZpbGVbXSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xyXG4gICAgY29uc3QgaGVhZGVyczogSHR0cEhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoeydBY2NlcHQtTGFuZ3VhZ2UnOiB0aGlzLnVzZXJTZXJ2aWNlLmdldEN1cnJlbnRVc2VyKCkuZ2V0Q2xpZW50TG9jYWxlKCl9KTtcclxuICAgIGZpbGVzLmZvckVhY2goZmlsZSA9PiBmb3JtRGF0YS5hcHBlbmQoJ2ZpbGVzW10nLCBmaWxlLCBVdGlscy5lbmNvZGVGaWxlTmFtZShmaWxlLm5hbWUpKSk7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodXJpLCBmb3JtRGF0YSwge2hlYWRlcnMsIHdpdGhDcmVkZW50aWFsczogdGhpcy5jb3JlQ29uZmlnLndpdGhDcmVkZW50aWFsc30pO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { throwError as observableThrowError, EMPTY as observableEmpty } from 'rxjs';
|
|
2
2
|
import { EoError } from '../model/eo-error.model';
|
|
3
3
|
import * as momentImported from 'moment';
|
|
4
|
+
import { RangeValue } from '../model/range-value.model';
|
|
4
5
|
/**
|
|
5
6
|
* @ignore
|
|
6
7
|
*/
|
|
@@ -275,5 +276,28 @@ export class Utils {
|
|
|
275
276
|
return acc;
|
|
276
277
|
}, {});
|
|
277
278
|
}
|
|
279
|
+
static formDataStringify(o) {
|
|
280
|
+
const f = (key, value) => {
|
|
281
|
+
if (value instanceof RangeValue) {
|
|
282
|
+
return `/${Utils.PREF_RANGEVALUE}(${JSON.stringify(value)})/`;
|
|
283
|
+
}
|
|
284
|
+
return value;
|
|
285
|
+
};
|
|
286
|
+
return JSON.stringify(o, f);
|
|
287
|
+
}
|
|
288
|
+
static formDataParse(str) {
|
|
289
|
+
const f = (key, value) => {
|
|
290
|
+
if (typeof value === 'string' &&
|
|
291
|
+
value.startsWith(`/${Utils.PREF_RANGEVALUE}(`) &&
|
|
292
|
+
value.endsWith(')/')) {
|
|
293
|
+
value = value.substring(Utils.PREF_RANGEVALUE.length + 2, value.length - 2);
|
|
294
|
+
const parsed = JSON.parse(value);
|
|
295
|
+
return new RangeValue(parsed.operator, parsed.firstValue, parsed.secondValue);
|
|
296
|
+
}
|
|
297
|
+
return value;
|
|
298
|
+
};
|
|
299
|
+
return JSON.parse(str, f);
|
|
300
|
+
}
|
|
278
301
|
}
|
|
279
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lby1zZGsvY29yZS9zcmMvbGliL3V0aWwvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsSUFBSSxvQkFBb0IsRUFBRSxLQUFLLElBQUksZUFBZSxFQUFhLE1BQU0sTUFBTSxDQUFDO0FBQzlGLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUNoRCxPQUFPLEtBQUssY0FBYyxNQUFNLFFBQVEsQ0FBQztBQUV6Qzs7R0FFRztBQUNILE1BQU0sTUFBTSxHQUFHLGNBQWMsQ0FBQztBQUk5QixNQUFNLE9BQU8sS0FBSztJQUVoQjs7Ozs7O09BTUc7SUFDSSxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQVcsRUFBRSxNQUFVO1FBQzVDLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO2FBQzFCLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLENBQUM7YUFDaEUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMvRCxPQUFPLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVEOzs7T0FHRztJQUNJLE1BQU0sQ0FBQyxJQUFJO1FBQ2hCLE9BQU8sS0FBSyxDQUFDLEdBQUcsRUFBRSxH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Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7dGhyb3dFcnJvciBhcyBvYnNlcnZhYmxlVGhyb3dFcnJvciwgRU1QVFkgYXMgb2JzZXJ2YWJsZUVtcHR5LCBPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtFb0Vycm9yfSBmcm9tICcuLi9tb2RlbC9lby1lcnJvci5tb2RlbCc7XHJcbmltcG9ydCAqIGFzIG1vbWVudEltcG9ydGVkIGZyb20gJ21vbWVudCc7XHJcblxyXG4vKipcclxuICogQGlnbm9yZVxyXG4gKi9cclxuY29uc3QgbW9tZW50ID0gbW9tZW50SW1wb3J0ZWQ7XHJcblxyXG5cclxuZXhwb3J0IHR5cGUgRm9ybWF0ZWRNYWlsVG8gPSBzdHJpbmcgfCBzdHJpbmdbXTtcclxuZXhwb3J0IGNsYXNzIFV0aWxzIHtcclxuXHJcbiAgLyoqXHJcbiAgICogVXRpbGl0eSBtZXRob2QgZm9yIGFkZGluZyBwYXJhbWV0ZXJzIHRvIGEgZ2l2ZW4gVVJJLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHVyaSBUaGUgdXJpIHN0cmluZyB0byBhdHRhY2ggdGhlIHBhcmFtZXRlcnMgdG9cclxuICAgKiBAcGFyYW0gcGFyYW1zIFRoZSBvYmplY3QgY29udGFpbmluZyBwYXJhbWV0ZXJzIHRvIGJlIGFwcGVuZGVkXHJcbiAgICogQHJldHVybnMgdGhlIGdpdmVuIHVyaSBleHRlbmRlZCBieSB0aGUgZ2l2ZW4gcGFyYW1ldGVycyArIHJlbW92ZSBlbXB0eSBwYXJhbWV0ZXJzXHJcbiAgICovXHJcbiAgcHVibGljIHN0YXRpYyBidWlsZFVyaSh1cmk6IHN0cmluZywgcGFyYW1zOiB7fSk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBxID0gT2JqZWN0LmtleXMocGFyYW1zKVxyXG4gICAgICAuZmlsdGVyKGsgPT4gcGFyYW1zW2tdIHx8IHBhcmFtc1trXSA9PT0gMCB8fCBwYXJhbXNba10gPT09IGZhbHNlKVxyXG4gICAgICAubWFwKGsgPT4gayArICc9JyArIGVuY29kZVVSSUNvbXBvbmVudChwYXJhbXNba10pKS5qb2luKCcmJyk7XHJcbiAgICByZXR1cm4gdXJpICsgKHEgPyAnPycgKyBxIDogJycpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlcyBhIHVuaXF1ZSBpZGVudGlmaWVyLlxyXG4gICAqIEByZXR1cm5zIEEgVW5pdmVyc2FsbHkgVW5pcXVlIElkZW50aWZpZXJcclxuICAgKi9cclxuICBwdWJsaWMgc3RhdGljIHV1aWQoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBVdGlscy5fcDgoKSArIFV0aWxzLl9wOCh0cnVlKSArIFV0aWxzLl9wOCh0cnVlKSArIFV0aWxzLl9wOCgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRW5jb2RlIGEgZmlsZW5hbWUgc2FmZSBmb3Igc2VuZGluZyBjaGFycyBiZXlvbmQgQVNDSUktN2JpdCB1c2luZyBxdW90ZWQgcHJpbnRhYmxlIGVuY29kaW5nLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIGZpbGVuYW1lIFRoZSBmaWxlIG5hbWVcclxuICAgKiBAcmV0dXJucyBUaGUgcXVvdGVkIHByaW50YWJsZSBmaWxlbmFtZVxyXG4gICAqL1xyXG4gIHB1YmxpYyBzdGF0aWMgZW5jb2RlRmlsZU5hbWUoZmlsZW5hbWU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBmaWxlTmFtZSA9IFV0aWxzLmVuY29kZVRvUXVvdGVkUHJpbnRhYmxlKFV0aWxzLmVuY29kZVRvVXRmOChmaWxlbmFtZSkpLnJlcGxhY2UoL18vZywgJz01RicpXHJcbiAgICByZXR1cm4gYD0/VVRGLTg/UT8ke2ZpbGVOYW1lfT89YDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqXHJcbiAgICogQHBhcmFtIGJvb2xlYW4gc1xyXG4gICAqIEByZXR1cm4gc3RyaW5nXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzdGF0aWMgX3A4KHM/OiBib29sZWFuKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHAgPSAoTWF0aC5yYW5kb20oKS50b1N0cmluZygxNikgKyAnMDAwMDAwMDAwJykuc3Vic3RyKDIsIDgpO1xyXG4gICAgcmV0dXJuIHMgPyBgLSR7cC5zdWJzdHIoMCwgNCl9LSR7cC5zdWJzdHIoNCwgNCl9YCA6IHA7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDb252ZXJ0cyBhIGphdmFzY3JpcHQgdGV4dCB0byB0aGUgdXRmLTggY29udmVydGVkIHZhcmlhbnQuXHJcbiAgICogU2VlIFt1bmljb2RlXXtAbGluayBodHRwOi8vdGhsaXN0Lm9ubGluZWhvbWUuZGUvdGhvbWFzX2hvbWVwYWdlL3VuaWNvZGUvVVRGLTglMjBLb252ZXJ0aWVydW5nJTIwbWl0dGVscyUyMEphdmFTY3JpcHQuaHRtfSBmb3IgcmVmZXJlbmNlXHJcbiAgICpcclxuICAgKiBAcGFyYW0gcmF3aW5wdXQgVGhlIGlucHV0IHN0cmluZ1xyXG4gICAqIEByZXR1cm5zIFRoZSB1dGYtOCBjb252ZXJ0ZWQgc3RyaW5nXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzdGF0aWMgZW5jb2RlVG9VdGY4KHJhd2lucHV0KSB7XHJcbiAgICAvKipcclxuICAgICAqIE5vcm1hbGl6ZSBsaW5lIGJyZWFrc1xyXG4gICAgICovXHJcbiAgICByYXdpbnB1dCA9IHJhd2lucHV0LnJlcGxhY2UoL1xcclxcbi9nLCAnXFxuJyk7XHJcbiAgICBsZXQgdXRmcmV0dXJuID0gJyc7XHJcbiAgICBmb3IgKGxldCBuID0gMDsgbiA8IHJhd2lucHV0Lmxlbmd0aDsgbisrKSB7XHJcbiAgICAgIC8qKlxyXG4gICAgICAgKiBVbmljb2RlIGZvciBjdXJyZW50IGNoYXJcclxuICAgICAgICovXHJcbiAgICAgIGNvbnN0IGMgPSByYXdpbnB1dC5jaGFyQ29kZUF0KG4pO1xyXG4gICAgICBpZiAoYyA8IDEyOCkge1xyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIEFsbCBjaGFycyByYW5nZSAwLTEyNyA9PiAxYnl0ZVxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIHV0ZnJldHVybiArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGMpO1xyXG4gICAgICB9IGVsc2UgaWYgKChjID4gMTI3KSAmJiAoYyA8IDIwNDgpKSB7XHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICogQWxsIGNoYXJzIHJhbmdlIGZyb20gMTI3IHRvIDIwNDcgPT4gMmJ5dGVcclxuICAgICAgICAgKi9cclxuICAgICAgICB1dGZyZXR1cm4gKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgoYyA+PiA2KSB8IDE5Mik7XHJcbiAgICAgICAgdXRmcmV0dXJuICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoKGMgJiA2MykgfCAxMjgpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIEFsbCBjaGFycyByYW5nZSBmcm9tIDIwNDggdG8gNjY1MzYgPT4gM2J5dGVcclxuICAgICAgICAgKi9cclxuICAgICAgICB1dGZyZXR1cm4gKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgoYyA+PiAxMikgfCAyMjQpO1xyXG4gICAgICAgIHV0ZnJldHVybiArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKCgoYyA+PiA2KSAmIDYzKSB8IDEyOCk7XHJcbiAgICAgICAgdXRmcmV0dXJuICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoKGMgJiA2MykgfCAxMjgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdXRmcmV0dXJuO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2VlIFtxdW90ZWQtcHJpbnRhYmxlXXtAbGluayBodHRwczovL2dpdGh1Yi5jb20vbWF0aGlhc2J5bmVucy9xdW90ZWQtcHJpbnRhYmxlL2Jsb2IvbWFzdGVyL3F1b3RlZC1wcmludGFibGUuanN9XHJcbiAgICoqL1xyXG4gIHByaXZhdGUgc3RhdGljIHF1b3RlZFByaW50YWJsZShzeW1ib2wpIHtcclxuICAgIGlmIChzeW1ib2wgPiAnXFx4RkYnKSB7XHJcbiAgICAgIHRocm93IFJhbmdlRXJyb3IoJ2BlbmNvZGVUb1F1b3RlZFByaW50YWJsZWAgZXhwZWN0cyBleHRlbmRlZCBBU0NJSSBpbnB1dCBvbmx5LiBNaXNzaW5nIHByaW9yIFVURi04IGVuY29kaW5nPycpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgY29kZVBvaW50ID0gc3ltYm9sLmNoYXJDb2RlQXQoMCk7XHJcbiAgICBjb25zdCBoZXhhZGVjaW1hbCA9IGNvZGVQb2ludC50b1N0cmluZygxNikudG9VcHBlckNhc2UoKTtcclxuICAgIHJldHVybiAnPScgKyAoJzAnICsgaGV4YWRlY2ltYWwpLnNsaWNlKC0yKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEVuY29kZSBzeW1ib2xzIHRoYXQgYXJlIGRlZmluaXRlbHkgdW5zYWZlIChpLmUuIHVuc2FmZSBpbiBhbnkgY29udGV4dCkuIFRoZSByZWd1bGFyIGV4cHJlc3Npb24gZGVzY3JpYmVzIHRoZXNlIHVuc2FmZSBzeW1ib2xzLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHJhd2lucHV0IElucHV0IHN0cmluZyB0byBiZSBlbmNvZGVkXHJcbiAgICogQHJldHVybnMgVGhlIGVuY29kZWQgc3RyaW5nXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzdGF0aWMgZW5jb2RlVG9RdW90ZWRQcmludGFibGUocmF3aW5wdXQpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgZW5jb2RlZCA9IHJhd2lucHV0LnJlcGxhY2UoL1tcXDAtXFxiXFxuLVxceDFGPVxceDdGLVxcdUQ3RkZcXHVEQzAwLVxcdUZGRkZdfFtcXHVEODAwLVxcdURCRkZdW1xcdURDMDAtXFx1REZGRl18W1xcdUQ4MDAtXFx1REJGRl0vZywgdGhpcy5xdW90ZWRQcmludGFibGUpO1xyXG4gICAgcmV0dXJuIGVuY29kZWQ7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTb3J0cyBBbiBBcnJheSBvZiBPYmplY3QgYnkgZ2l2ZW4ga2V5XHJcbiAgICogU2VlIFtuZy1wYWNrYWdyIGlzc3VlcyA2OTZde0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9kaGVyZ2VzL25nLXBhY2thZ3IvaXNzdWVzLzY5Nn1cclxuICAgKlxyXG4gICAqIEBwYXJhbSBrZXlcclxuICAgKiBAcGFyYW0gb3JkZXJcclxuICAgKiBAcGFyYW0gbG9jYWxlc1xyXG4gICAqIEBwYXJhbSBvcHRpb25zXHJcbiAgICogQHJldHVybnMgKGE6IGFueSwgYjogYW55KSA9PiBudW1iZXJcclxuICAgKi9cclxuICBwdWJsaWMgc3RhdGljIHNvcnRWYWx1ZXMoa2V5ID0gJycsIG9yZGVyID0gJ2FzYycsIGxvY2FsZXM/OiBzdHJpbmcgfCBzdHJpbmdbXSwgb3B0aW9ucz86IEludGwuQ29sbGF0b3JPcHRpb25zKSB7XHJcbiAgICBjb25zdCBmID0gKGE6IGFueSwgYjogYW55KSA9PiB7XHJcbiAgICAgIGxldCBjb21wYXJpc29uOiBudW1iZXI7XHJcbiAgICAgIGNvbnN0IHZhckEgPSBVdGlscy5nZXRQcm9wZXJ0eShhLCBrZXkpO1xyXG4gICAgICBjb25zdCB2YXJCID0gVXRpbHMuZ2V0UHJvcGVydHkoYiwga2V5KTtcclxuICAgICAgaWYgKHR5cGVvZiB2YXJBID09PSAnbnVtYmVyJyAmJiB0eXBlb2YgdmFyQiA9PT0gJ251bWJlcicpIHtcclxuICAgICAgICBjb21wYXJpc29uID0gdmFyQSAtIHZhckI7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc3Qgc3RyaW5nQSA9IHZhckEgfHwgdmFyQSA9PT0gMCA/IHZhckEudG9TdHJpbmcoKSA6ICcnO1xyXG4gICAgICAgIGNvbnN0IHN0cmluZ0IgPSB2YXJCIHx8IHZhckIgPT09IDAgPyB2YXJCLnRvU3RyaW5nKCkgOiAnJztcclxuICAgICAgICBjb21wYXJpc29uID0gc3RyaW5nQS5sb2NhbGVDb21wYXJlKHN0cmluZ0IsIGxvY2FsZXMsIG9wdGlvbnMpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBvcmRlciA9PT0gJ2Rlc2MnID8gY29tcGFyaXNvbiAqIC0xIDogY29tcGFyaXNvbjtcclxuICAgIH07XHJcbiAgICByZXR1cm4gZjtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFtuZy1wYWNrYWdyIGlzc3VlcyA2OTZde0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9kaGVyZ2VzL25nLXBhY2thZ3IvaXNzdWVzLzY5Nn1cclxuICAgKlxyXG4gICAqIEBwYXJhbSBvYmplY3RcclxuICAgKiBAcGFyYW0gc3RyaW5nIGtleVxyXG4gICAqIEByZXR1cm5zIGFueVxyXG4gICAqL1xyXG4gIHB1YmxpYyBzdGF0aWMgZ2V0UHJvcGVydHkob2JqZWN0OiBhbnksIGtleSA9ICcnKTogYW55IHtcclxuICAgIGNvbnN0IGYgPSBrZXkgPyBrZXkuc3BsaXQoJy4nKS5yZWR1Y2UoKG8sIGspID0+IChvIHx8IHt9KVtrXSwgb2JqZWN0KSA6IG9iamVjdDtcclxuICAgIHJldHVybiBmO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXNlIG9uIE9ic2VydmFibGUuY2F0Y2ggb3IgT2JzZXJ2YWJsZS5zdWJzY3JpYmUgdG8gcmV0dXJuIGVtcHR5IHZhbHVlXHJcbiAgICogW25nLXBhY2thZ3IgaXNzdWVzIDY5Nl17QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2RoZXJnZXMvbmctcGFja2Fnci9pc3N1ZXMvNjk2fVxyXG4gICAqXHJcbiAgICogQHBhcmFtIChlcnJvcikgPT4gYW55IGNhbGxiYWNrXHJcbiAgICogQHJldHVybnMgKGVycm9yKSA9PiBPYnNlcnZhYmxlPG5ldmVyPlxyXG4gICAqL1xyXG4gIHB1YmxpYyBzdGF0aWMgZW1wdHkoY2FsbGJhY2s/OiAoZXJyb3IpID0+IGFueSkge1xyXG4gICAgY29uc3QgZiA9IChlcnJvcikgPT4ge1xyXG4gICAgICByZXR1cm4gb2JzZXJ2YWJsZUVtcHR5O1xyXG4gICAgfTtcclxuICAgIHJldHVybiBmO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXNlIG9uIE9ic2VydmFibGUuY2F0Y2ggd2l0aCBzcGVjaWZpYyBza2lwTm90aWZpY2F0aW9uIGZ1bmN0aW9uICEhIVxyXG4gICAqIFtuZy1wYWNrYWdyIGlzc3VlcyA2OTZde0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9kaGVyZ2VzL25nLXBhY2thZ3IvaXNzdWVzLzY5Nn1cclxuICAgKlxyXG4gICAqIEBwYXJhbSBza2lwTm90aWZpY2F0aW9uXHJcbiAgICogQHBhcmFtIGNhbGxiYWNrXHJcbiAgICogQHBhcmFtIG5hbWVcclxuICAgKiBAcGFyYW0gbWVzc2FnZVxyXG4gICAqL1xyXG4gIHB1YmxpYyBzdGF0aWMgY2F0Y2hTa2lwKHNraXBOb3RpZmljYXRpb24/OiAoZXJyb3IpID0+IGFueSwgY2FsbGJhY2s/OiAoZXJyb3IpID0+IGFueSwgbmFtZT86IHN0cmluZywgbWVzc2FnZT86IHN0cmluZykge1xyXG4gICAgY29uc3QgZiA9IChlcnJvcikgPT4ge1xyXG4gICAgICBjb25zdCBfZXJyb3IgPSBjYWxsYmFjayAmJiBjYWxsYmFjayhlcnJvcik7XHJcbiAgICAgIGNvbnN0IF9za2lwTm90aWZpY2F0aW9uID0gc2tpcE5vdGlmaWNhdGlvbiAmJiBza2lwTm90aWZpY2F0aW9uKGVycm9yKTtcclxuICAgICAgcmV0dXJuIG9ic2VydmFibGVUaHJvd0Vycm9yKG5ldyBFb0Vycm9yKF9lcnJvciBpbnN0YW5jZW9mIEVycm9yID8gX2Vycm9yIDogZXJyb3IsIG5hbWUsIG1lc3NhZ2UsIF9za2lwTm90aWZpY2F0aW9uKSk7XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIGY7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVc2Ugb24gT2JzZXJ2YWJsZS5jYXRjaCAhISFcclxuICAgKiBbbmctcGFja2FnciBpc3N1ZXNde0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9kaGVyZ2VzL25nLXBhY2thZ3IvaXNzdWVzLzY5Nn1cclxuICAgKlxyXG4gICAqIEBwYXJhbSBjYWxsYmFja1xyXG4gICAqIEBwYXJhbSBuYW1lXHJcbiAgICogQHBhcmFtIG1lc3NhZ2VcclxuICAgKiBAcGFyYW0gc2tpcE5vdGlmaWNhdGlvblxyXG4gICAqIEByZXR1cm4gKGVycm9yKSA9PiBPYnNlcnZhYmxlPG5ldmVyPlxyXG4gICAqL1xyXG4gIHB1YmxpYyBzdGF0aWMgY2F0Y2goY2FsbGJhY2s/OiAoZXJyb3IpID0+IGFueSwgbmFtZT86IHN0cmluZywgbWVzc2FnZT86IHN0cmluZywgc2tpcE5vdGlmaWNhdGlvbj86IGJvb2xlYW4pIHtcclxuICAgIGNvbnN0IGYgPSAoZXJyb3IpID0+IHtcclxuICAgICAgY29uc3QgX2Vycm9yID0gY2FsbGJhY2sgJiYgY2FsbGJhY2soZXJyb3IpO1xyXG4gICAgICByZXR1cm4gb2JzZXJ2YWJsZVRocm93RXJyb3IobmV3IEVvRXJyb3IoX2Vycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBfZXJyb3IgOiBlcnJvciwgbmFtZSwgbWVzc2FnZSwgc2tpcE5vdGlmaWNhdGlvbikpO1xyXG4gICAgfTtcclxuICAgIHJldHVybiBmO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXNlIG9uIE9ic2VydmFibGUuc3Vic2NyaWJlICEhIVxyXG4gICAqIFtuZy1wYWNrYWdyIGlzc3Vlc117QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2RoZXJnZXMvbmctcGFja2Fnci9pc3N1ZXMvNjk2fVxyXG4gICAqXHJcbiAgICogQHBhcmFtIGNhbGxiYWNrXHJcbiAgICogQHBhcmFtIG5hbWVcclxuICAgKiBAcGFyYW0gbWVzc2FnZVxyXG4gICAqIEBwYXJhbSBza2lwTm90aWZpY2F0aW9uXHJcbiAgICogQHJldHVybiAoZXJyb3IpID0+IHZvaWRcclxuICAgKi9cclxuICBwdWJsaWMgc3RhdGljIHRocm93KGNhbGxiYWNrPzogKGVycm9yKSA9PiBhbnksIG5hbWU/OiBzdHJpbmcsIG1lc3NhZ2U/OiBzdHJpbmcsIHNraXBOb3RpZmljYXRpb24/OiBib29sZWFuKSB7XHJcbiAgICBjb25zdCBmID0gKGVycm9yKSA9PiB7XHJcbiAgICAgIGNvbnN0IF9lcnJvciA9IGNhbGxiYWNrICYmIGNhbGxiYWNrKGVycm9yKTtcclxuICAgICAgdGhyb3cgbmV3IEVvRXJyb3IoX2Vycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBfZXJyb3IgOiBlcnJvciwgbmFtZSwgbWVzc2FnZSwgc2tpcE5vdGlmaWNhdGlvbik7XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIGY7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVc2Ugb24gT2JzZXJ2YWJsZS5zdWJzY3JpYmUgb25seSBpZiB5b3Ugd2FudCB0byBza2lwIG5vdGlmaWNhdGlvbiAvIHRvYXN0ISEhXHJcbiAgICpcclxuICAgKiBAcGFyYW0gY2FsbGJhY2tcclxuICAgKiBAcGFyYW0gbmFtZVxyXG4gICAqIEBwYXJhbSBtZXNzYWdlXHJcbiAgICogQHBhcmFtIHNraXBOb3RpZmljYXRpb25cclxuICAgKiBAcmV0dXJuIChlcnJvcikgPT4gdm9pZFxyXG4gICAqL1xyXG4gIHB1YmxpYyBzdGF0aWMgbG9nRXJyb3IoY2FsbGJhY2s/OiAoZXJyb3IpID0+IGFueSwgbmFtZT86IHN0cmluZywgbWVzc2FnZT86IHN0cmluZywgc2tpcE5vdGlmaWNhdGlvbiA9IHRydWUpIHtcclxuICAgIHJldHVybiBVdGlscy50aHJvdyhjYWxsYmFjaywgbmFtZSwgbWVzc2FnZSwgc2tpcE5vdGlmaWNhdGlvbik7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDaGVja3MgaWYgZWxlbWVudCBpcyB2aXNpYmxlXHJcbiAgICpcclxuICAgKiBAcGFyYW0gZWxlbVxyXG4gICAqIEByZXR1cm4gYm9vbGVhblxyXG4gICAqL1xyXG4gIHB1YmxpYyBzdGF0aWMgaXNWaXNpYmxlKGVsZW06IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuICEhKGVsZW0ub2Zmc2V0V2lkdGggfHwgZWxlbS5vZmZzZXRIZWlnaHQgfHwgZWxlbS5nZXRDbGllbnRSZWN0cygpLmxlbmd0aCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhdGljIGdldEJhc2VIcmVmKCkge1xyXG4gICAgcmV0dXJuIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdiYXNlJylbMF0uZ2V0QXR0cmlidXRlKCdocmVmJyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKlxyXG4gICAqIFRydW5jYXRlIGEgc3RyaW5nIChmaXJzdCBhcmd1bWVudCkgaWYgaXQgaXMgbG9uZ2VyIHRoYW4gdGhlIGdpdmVuIG1heGltdW0gc3RyaW5nIGxlbmd0aCAoc2Vjb25kIGFyZ3VtZW50KS5cclxuICAgKiBSZXR1cm4gdGhlIHRydW5jYXRlZCBzdHJpbmcgd2l0aCBhIC4uLiBlbmRpbmcgb3Qgd2hhdHMgcHJvdmlkZWQuXHJcbiAgICpcclxuICAgKiBAcGFyYW0gc3RyaW5nIHN0clxyXG4gICAqIEBwYXJhbSBudW1iZXIgbnVtXHJcbiAgICogQHJldHVybnNcclxuICAgKi9cclxuICBwdWJsaWMgc3RhdGljIHRydW5jYXRlU3RyaW5nKHN0ciwgbnVtLCBlbmRpbmcgPSAnLi4uJykge1xyXG4gICAgaWYgKHN0ci5sZW5ndGggPiBudW0pIHtcclxuICAgICAgaWYgKG51bSA+IDMpIHtcclxuICAgICAgICBudW0gLT0gMztcclxuICAgICAgfVxyXG4gICAgICBzdHIgPSBgJHtzdHIuc3Vic3RyaW5nKDAsIG51bSl9JHtlbmRpbmd9YDtcclxuICAgIH1cclxuICAgIHJldHVybiBzdHI7XHJcbiAgfTtcclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IHRoZSBUaW1lWm9uZSBPZmZzZXN0IGFzIElTTyBTdHJpbmcuXHJcbiAgICpcclxuICAgKiBAcmV0dXJuc1xyXG4gICAqL1xyXG4gIHB1YmxpYyBzdGF0aWMgZ2V0VGltZXpvbmVPZmZzZXQoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBtb21lbnQoKS5mb3JtYXQoJ1onKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgZm9ybWF0TWFpbFRvKHZhbHVlOiBGb3JtYXRlZE1haWxUbywgaXNFbWFpbDogYm9vbGVhbik6IEZvcm1hdGVkTWFpbFRvIHtcclxuICAgIGlmIChpc0VtYWlsICYmICEhdmFsdWUpIHtcclxuICAgICAgcmV0dXJuIChBcnJheS5pc0FycmF5KHZhbHVlKSkgPyB2YWx1ZS5qb2luKCkucmVwbGFjZSgvLC9nLCAnOyAnKSA6IHZhbHVlLnJlcGxhY2UoLywvZywgJzsgJyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhdGljIGFycmF5VG9PYmplY3QoYXJyID0gW10sIGtleVByb3BlcnR5Pzogc3RyaW5nIHwgKChvOiBhbnkpID0+IHN0cmluZyksIHZhbHVlUHJvcGVydHk/OiBzdHJpbmcgfCAoKG86IGFueSkgPT4gYW55KSkge1xyXG4gICAgY29uc3Qga2V5ID0gdHlwZW9mIGtleVByb3BlcnR5ID09PSAnc3RyaW5nJyA/IChvOiBhbnkpID0+IG9ba2V5UHJvcGVydHldIDoga2V5UHJvcGVydHk7XHJcbiAgICBjb25zdCB2YWx1ZSA9IHR5cGVvZiB2YWx1ZVByb3BlcnR5ID09PSAnc3RyaW5nJyA/IChvOiBhbnkpID0+IG9bdmFsdWVQcm9wZXJ0eV0gOiB2YWx1ZVByb3BlcnR5O1xyXG4gICAgcmV0dXJuIGFyci5yZWR1Y2UoKGFjYywgY3VyLCBpKSA9PiB7XHJcbiAgICAgIGFjY1trZXkgPyBrZXkoY3VyKSA6IGldID0gdmFsdWUgPyB2YWx1ZShjdXIpIDogY3VyO1xyXG4gICAgICByZXR1cm4gYWNjO1xyXG4gICAgfSwge30pO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
302
|
+
Utils.PREF_RANGEVALUE = 'RangeValue';
|
|
303
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lby1zZGsvY29yZS9zcmMvbGliL3V0aWwvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsSUFBSSxvQkFBb0IsRUFBRSxLQUFLLElBQUksZUFBZSxFQUFhLE1BQU0sTUFBTSxDQUFDO0FBQzlGLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUNoRCxPQUFPLEtBQUssY0FBYyxNQUFNLFFBQVEsQ0FBQztBQUN6QyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFFdEQ7O0dBRUc7QUFDSCxNQUFNLE1BQU0sR0FBRyxjQUFjLENBQUM7QUFJOUIsTUFBTSxPQUFPLEtBQUs7SUFJaEI7Ozs7OztPQU1HO0lBQ0ksTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFXLEVBQUUsTUFBVTtRQUM1QyxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQzthQUMxQixNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssS0FBSyxDQUFDO2FBQ2hFLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDL0QsT0FBTyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRDs7O09BR0c7SUFDSSxNQUFN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QUFDLENBQUM7SUFDNUIsQ0FBQzs7QUF4VGMscUJBQWUsR0FBRyxZQUFZLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3Rocm93RXJyb3IgYXMgb2JzZXJ2YWJsZVRocm93RXJyb3IsIEVNUFRZIGFzIG9ic2VydmFibGVFbXB0eSwgT2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7RW9FcnJvcn0gZnJvbSAnLi4vbW9kZWwvZW8tZXJyb3IubW9kZWwnO1xyXG5pbXBvcnQgKiBhcyBtb21lbnRJbXBvcnRlZCBmcm9tICdtb21lbnQnO1xyXG5pbXBvcnQge1JhbmdlVmFsdWV9IGZyb20gJy4uL21vZGVsL3JhbmdlLXZhbHVlLm1vZGVsJztcclxuXHJcbi8qKlxyXG4gKiBAaWdub3JlXHJcbiAqL1xyXG5jb25zdCBtb21lbnQgPSBtb21lbnRJbXBvcnRlZDtcclxuXHJcblxyXG5leHBvcnQgdHlwZSBGb3JtYXRlZE1haWxUbyA9IHN0cmluZyB8IHN0cmluZ1tdO1xyXG5leHBvcnQgY2xhc3MgVXRpbHMge1xyXG5cclxuICBwcml2YXRlIHN0YXRpYyBQUkVGX1JBTkdFVkFMVUUgPSAnUmFuZ2VWYWx1ZSc7XHJcblxyXG4gIC8qKlxyXG4gICAqIFV0aWxpdHkgbWV0aG9kIGZvciBhZGRpbmcgcGFyYW1ldGVycyB0byBhIGdpdmVuIFVSSS5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB1cmkgVGhlIHVyaSBzdHJpbmcgdG8gYXR0YWNoIHRoZSBwYXJhbWV0ZXJzIHRvXHJcbiAgICogQHBhcmFtIHBhcmFtcyBUaGUgb2JqZWN0IGNvbnRhaW5pbmcgcGFyYW1ldGVycyB0byBiZSBhcHBlbmRlZFxyXG4gICAqIEByZXR1cm5zIHRoZSBnaXZlbiB1cmkgZXh0ZW5kZWQgYnkgdGhlIGdpdmVuIHBhcmFtZXRlcnMgKyByZW1vdmUgZW1wdHkgcGFyYW1ldGVyc1xyXG4gICAqL1xyXG4gIHB1YmxpYyBzdGF0aWMgYnVpbGRVcmkodXJpOiBzdHJpbmcsIHBhcmFtczoge30pOiBzdHJpbmcge1xyXG4gICAgY29uc3QgcSA9IE9iamVjdC5rZXlzKHBhcmFtcylcclxuICAgICAgLmZpbHRlcihrID0+IHBhcmFtc1trXSB8fCBwYXJhbXNba10gPT09IDAgfHwgcGFyYW1zW2tdID09PSBmYWxzZSlcclxuICAgICAgLm1hcChrID0+IGsgKyAnPScgKyBlbmNvZGVVUklDb21wb25lbnQocGFyYW1zW2tdKSkuam9pbignJicpO1xyXG4gICAgcmV0dXJuIHVyaSArIChxID8gJz8nICsgcSA6ICcnKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZXMgYSB1bmlxdWUgaWRlbnRpZmllci5cclxuICAgKiBAcmV0dXJucyBBIFVuaXZlcnNhbGx5IFVuaXF1ZSBJZGVudGlmaWVyXHJcbiAgICovXHJcbiAgcHVibGljIHN0YXRpYyB1dWlkKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gVXRpbHMuX3A4KCkgKyBVdGlscy5fcDgodHJ1ZSkgKyBVdGlscy5fcDgodHJ1ZSkgKyBVdGlscy5fcDgoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEVuY29kZSBhIGZpbGVuYW1lIHNhZmUgZm9yIHNlbmRpbmcgY2hhcnMgYmV5b25kIEFTQ0lJLTdiaXQgdXNpbmcgcXVvdGVkIHByaW50YWJsZSBlbmNvZGluZy5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBmaWxlbmFtZSBUaGUgZmlsZSBuYW1lXHJcbiAgICogQHJldHVybnMgVGhlIHF1b3RlZCBwcmludGFibGUgZmlsZW5hbWVcclxuICAgKi9cclxuICBwdWJsaWMgc3RhdGljIGVuY29kZUZpbGVOYW1lKGZpbGVuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgZmlsZU5hbWUgPSBVdGlscy5lbmNvZGVUb1F1b3RlZFByaW50YWJsZShVdGlscy5lbmNvZGVUb1V0ZjgoZmlsZW5hbWUpKS5yZXBsYWNlKC9fL2csICc9NUYnKVxyXG4gICAgcmV0dXJuIGA9P1VURi04P1E/JHtmaWxlTmFtZX0/PWA7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKlxyXG4gICAqIEBwYXJhbSBib29sZWFuIHNcclxuICAgKiBAcmV0dXJuIHN0cmluZ1xyXG4gICAqL1xyXG4gIHByaXZhdGUgc3RhdGljIF9wOChzPzogYm9vbGVhbik6IHN0cmluZyB7XHJcbiAgICBjb25zdCBwID0gKE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMTYpICsgJzAwMDAwMDAwMCcpLnN1YnN0cigyLCA4KTtcclxuICAgIHJldHVybiBzID8gYC0ke3Auc3Vic3RyKDAsIDQpfS0ke3Auc3Vic3RyKDQsIDQpfWAgOiBwO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ29udmVydHMgYSBqYXZhc2NyaXB0IHRleHQgdG8gdGhlIHV0Zi04IGNvbnZlcnRlZCB2YXJpYW50LlxyXG4gICAqIFNlZSBbdW5pY29kZV17QGxpbmsgaHR0cDovL3RobGlzdC5vbmxpbmVob21lLmRlL3Rob21hc19ob21lcGFnZS91bmljb2RlL1VURi04JTIwS29udmVydGllcnVuZyUyMG1pdHRlbHMlMjBKYXZhU2NyaXB0Lmh0bX0gZm9yIHJlZmVyZW5jZVxyXG4gICAqXHJcbiAgICogQHBhcmFtIHJhd2lucHV0IFRoZSBpbnB1dCBzdHJpbmdcclxuICAgKiBAcmV0dXJucyBUaGUgdXRmLTggY29udmVydGVkIHN0cmluZ1xyXG4gICAqL1xyXG4gIHByaXZhdGUgc3RhdGljIGVuY29kZVRvVXRmOChyYXdpbnB1dCkge1xyXG4gICAgLyoqXHJcbiAgICAgKiBOb3JtYWxpemUgbGluZSBicmVha3NcclxuICAgICAqL1xyXG4gICAgcmF3aW5wdXQgPSByYXdpbnB1dC5yZXBsYWNlKC9cXHJcXG4vZywgJ1xcbicpO1xyXG4gICAgbGV0IHV0ZnJldHVybiA9ICcnO1xyXG4gICAgZm9yIChsZXQgbiA9IDA7IG4gPCByYXdpbnB1dC5sZW5ndGg7IG4rKykge1xyXG4gICAgICAvKipcclxuICAgICAgICogVW5pY29kZSBmb3IgY3VycmVudCBjaGFyXHJcbiAgICAgICAqL1xyXG4gICAgICBjb25zdCBjID0gcmF3aW5wdXQuY2hhckNvZGVBdChuKTtcclxuICAgICAgaWYgKGMgPCAxMjgpIHtcclxuICAgICAgICAvKipcclxuICAgICAgICAgKiBBbGwgY2hhcnMgcmFuZ2UgMC0xMjcgPT4gMWJ5dGVcclxuICAgICAgICAgKi9cclxuICAgICAgICB1dGZyZXR1cm4gKz0gU3RyaW5nLmZyb21DaGFyQ29kZShjKTtcclxuICAgICAgfSBlbHNlIGlmICgoYyA+IDEyNykgJiYgKGMgPCAyMDQ4KSkge1xyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIEFsbCBjaGFycyByYW5nZSBmcm9tIDEyNyB0byAyMDQ3ID0+IDJieXRlXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgdXRmcmV0dXJuICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoKGMgPj4gNikgfCAxOTIpO1xyXG4gICAgICAgIHV0ZnJldHVybiArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKChjICYgNjMpIHwgMTI4KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAvKipcclxuICAgICAgICAgKiBBbGwgY2hhcnMgcmFuZ2UgZnJvbSAyMDQ4IHRvIDY2NTM2ID0+IDNieXRlXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgdXRmcmV0dXJuICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoKGMgPj4gMTIpIHwgMjI0KTtcclxuICAgICAgICB1dGZyZXR1cm4gKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgoKGMgPj4gNikgJiA2MykgfCAxMjgpO1xyXG4gICAgICAgIHV0ZnJldHVybiArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKChjICYgNjMpIHwgMTI4KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHV0ZnJldHVybjtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNlZSBbcXVvdGVkLXByaW50YWJsZV17QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL21hdGhpYXNieW5lbnMvcXVvdGVkLXByaW50YWJsZS9ibG9iL21hc3Rlci9xdW90ZWQtcHJpbnRhYmxlLmpzfVxyXG4gICAqKi9cclxuICBwcml2YXRlIHN0YXRpYyBxdW90ZWRQcmludGFibGUoc3ltYm9sKSB7XHJcbiAgICBpZiAoc3ltYm9sID4gJ1xceEZGJykge1xyXG4gICAgICB0aHJvdyBSYW5nZUVycm9yKCdgZW5jb2RlVG9RdW90ZWRQcmludGFibGVgIGV4cGVjdHMgZXh0ZW5kZWQgQVNDSUkgaW5wdXQgb25seS4gTWlzc2luZyBwcmlvciBVVEYtOCBlbmNvZGluZz8nKTtcclxuICAgIH1cclxuICAgIGNvbnN0IGNvZGVQb2ludCA9IHN5bWJvbC5jaGFyQ29kZUF0KDApO1xyXG4gICAgY29uc3QgaGV4YWRlY2ltYWwgPSBjb2RlUG9pbnQudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCk7XHJcbiAgICByZXR1cm4gJz0nICsgKCcwJyArIGhleGFkZWNpbWFsKS5zbGljZSgtMik7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBFbmNvZGUgc3ltYm9scyB0aGF0IGFyZSBkZWZpbml0ZWx5IHVuc2FmZSAoaS5lLiB1bnNhZmUgaW4gYW55IGNvbnRleHQpLiBUaGUgcmVndWxhciBleHByZXNzaW9uIGRlc2NyaWJlcyB0aGVzZSB1bnNhZmUgc3ltYm9scy5cclxuICAgKlxyXG4gICAqIEBwYXJhbSByYXdpbnB1dCBJbnB1dCBzdHJpbmcgdG8gYmUgZW5jb2RlZFxyXG4gICAqIEByZXR1cm5zIFRoZSBlbmNvZGVkIHN0cmluZ1xyXG4gICAqL1xyXG4gIHByaXZhdGUgc3RhdGljIGVuY29kZVRvUXVvdGVkUHJpbnRhYmxlKHJhd2lucHV0KTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGVuY29kZWQgPSByYXdpbnB1dC5yZXBsYWNlKC9bXFwwLVxcYlxcbi1cXHgxRj1cXHg3Ri1cXHVEN0ZGXFx1REMwMC1cXHVGRkZGXXxbXFx1RDgwMC1cXHVEQkZGXVtcXHVEQzAwLVxcdURGRkZdfFtcXHVEODAwLVxcdURCRkZdL2csIHRoaXMucXVvdGVkUHJpbnRhYmxlKTtcclxuICAgIHJldHVybiBlbmNvZGVkO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU29ydHMgQW4gQXJyYXkgb2YgT2JqZWN0IGJ5IGdpdmVuIGtleVxyXG4gICAqIFNlZSBbbmctcGFja2FnciBpc3N1ZXMgNjk2XXtAbGluayBodHRwczovL2dpdGh1Yi5jb20vZGhlcmdlcy9uZy1wYWNrYWdyL2lzc3Vlcy82OTZ9XHJcbiAgICpcclxuICAgKiBAcGFyYW0ga2V5XHJcbiAgICogQHBhcmFtIG9yZGVyXHJcbiAgICogQHBhcmFtIGxvY2FsZXNcclxuICAgKiBAcGFyYW0gb3B0aW9uc1xyXG4gICAqIEByZXR1cm5zIChhOiBhbnksIGI6IGFueSkgPT4gbnVtYmVyXHJcbiAgICovXHJcbiAgcHVibGljIHN0YXRpYyBzb3J0VmFsdWVzKGtleSA9ICcnLCBvcmRlciA9ICdhc2MnLCBsb2NhbGVzPzogc3RyaW5nIHwgc3RyaW5nW10sIG9wdGlvbnM/OiBJbnRsLkNvbGxhdG9yT3B0aW9ucykge1xyXG4gICAgY29uc3QgZiA9IChhOiBhbnksIGI6IGFueSkgPT4ge1xyXG4gICAgICBsZXQgY29tcGFyaXNvbjogbnVtYmVyO1xyXG4gICAgICBjb25zdCB2YXJBID0gVXRpbHMuZ2V0UHJvcGVydHkoYSwga2V5KTtcclxuICAgICAgY29uc3QgdmFyQiA9IFV0aWxzLmdldFByb3BlcnR5KGIsIGtleSk7XHJcbiAgICAgIGlmICh0eXBlb2YgdmFyQSA9PT0gJ251bWJlcicgJiYgdHlwZW9mIHZhckIgPT09ICdudW1iZXInKSB7XHJcbiAgICAgICAgY29tcGFyaXNvbiA9IHZhckEgLSB2YXJCO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IHN0cmluZ0EgPSB2YXJBIHx8IHZhckEgPT09IDAgPyB2YXJBLnRvU3RyaW5nKCkgOiAnJztcclxuICAgICAgICBjb25zdCBzdHJpbmdCID0gdmFyQiB8fCB2YXJCID09PSAwID8gdmFyQi50b1N0cmluZygpIDogJyc7XHJcbiAgICAgICAgY29tcGFyaXNvbiA9IHN0cmluZ0EubG9jYWxlQ29tcGFyZShzdHJpbmdCLCBsb2NhbGVzLCBvcHRpb25zKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gb3JkZXIgPT09ICdkZXNjJyA/IGNvbXBhcmlzb24gKiAtMSA6IGNvbXBhcmlzb247XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIGY7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBbbmctcGFja2FnciBpc3N1ZXMgNjk2XXtAbGluayBodHRwczovL2dpdGh1Yi5jb20vZGhlcmdlcy9uZy1wYWNrYWdyL2lzc3Vlcy82OTZ9XHJcbiAgICpcclxuICAgKiBAcGFyYW0gb2JqZWN0XHJcbiAgICogQHBhcmFtIHN0cmluZyBrZXlcclxuICAgKiBAcmV0dXJucyBhbnlcclxuICAgKi9cclxuICBwdWJsaWMgc3RhdGljIGdldFByb3BlcnR5KG9iamVjdDogYW55LCBrZXkgPSAnJyk6IGFueSB7XHJcbiAgICBjb25zdCBmID0ga2V5ID8ga2V5LnNwbGl0KCcuJykucmVkdWNlKChvLCBrKSA9PiAobyB8fCB7fSlba10sIG9iamVjdCkgOiBvYmplY3Q7XHJcbiAgICByZXR1cm4gZjtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFVzZSBvbiBPYnNlcnZhYmxlLmNhdGNoIG9yIE9ic2VydmFibGUuc3Vic2NyaWJlIHRvIHJldHVybiBlbXB0eSB2YWx1ZVxyXG4gICAqIFtuZy1wYWNrYWdyIGlzc3VlcyA2OTZde0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9kaGVyZ2VzL25nLXBhY2thZ3IvaXNzdWVzLzY5Nn1cclxuICAgKlxyXG4gICAqIEBwYXJhbSAoZXJyb3IpID0+IGFueSBjYWxsYmFja1xyXG4gICAqIEByZXR1cm5zIChlcnJvcikgPT4gT2JzZXJ2YWJsZTxuZXZlcj5cclxuICAgKi9cclxuICBwdWJsaWMgc3RhdGljIGVtcHR5KGNhbGxiYWNrPzogKGVycm9yKSA9PiBhbnkpIHtcclxuICAgIGNvbnN0IGYgPSAoZXJyb3IpID0+IHtcclxuICAgICAgcmV0dXJuIG9ic2VydmFibGVFbXB0eTtcclxuICAgIH07XHJcbiAgICByZXR1cm4gZjtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFVzZSBvbiBPYnNlcnZhYmxlLmNhdGNoIHdpdGggc3BlY2lmaWMgc2tpcE5vdGlmaWNhdGlvbiBmdW5jdGlvbiAhISFcclxuICAgKiBbbmctcGFja2FnciBpc3N1ZXMgNjk2XXtAbGluayBodHRwczovL2dpdGh1Yi5jb20vZGhlcmdlcy9uZy1wYWNrYWdyL2lzc3Vlcy82OTZ9XHJcbiAgICpcclxuICAgKiBAcGFyYW0gc2tpcE5vdGlmaWNhdGlvblxyXG4gICAqIEBwYXJhbSBjYWxsYmFja1xyXG4gICAqIEBwYXJhbSBuYW1lXHJcbiAgICogQHBhcmFtIG1lc3NhZ2VcclxuICAgKi9cclxuICBwdWJsaWMgc3RhdGljIGNhdGNoU2tpcChza2lwTm90aWZpY2F0aW9uPzogKGVycm9yKSA9PiBhbnksIGNhbGxiYWNrPzogKGVycm9yKSA9PiBhbnksIG5hbWU/OiBzdHJpbmcsIG1lc3NhZ2U/OiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGYgPSAoZXJyb3IpID0+IHtcclxuICAgICAgY29uc3QgX2Vycm9yID0gY2FsbGJhY2sgJiYgY2FsbGJhY2soZXJyb3IpO1xyXG4gICAgICBjb25zdCBfc2tpcE5vdGlmaWNhdGlvbiA9IHNraXBOb3RpZmljYXRpb24gJiYgc2tpcE5vdGlmaWNhdGlvbihlcnJvcik7XHJcbiAgICAgIHJldHVybiBvYnNlcnZhYmxlVGhyb3dFcnJvcihuZXcgRW9FcnJvcihfZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IF9lcnJvciA6IGVycm9yLCBuYW1lLCBtZXNzYWdlLCBfc2tpcE5vdGlmaWNhdGlvbikpO1xyXG4gICAgfTtcclxuICAgIHJldHVybiBmO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXNlIG9uIE9ic2VydmFibGUuY2F0Y2ggISEhXHJcbiAgICogW25nLXBhY2thZ3IgaXNzdWVzXXtAbGluayBodHRwczovL2dpdGh1Yi5jb20vZGhlcmdlcy9uZy1wYWNrYWdyL2lzc3Vlcy82OTZ9XHJcbiAgICpcclxuICAgKiBAcGFyYW0gY2FsbGJhY2tcclxuICAgKiBAcGFyYW0gbmFtZVxyXG4gICAqIEBwYXJhbSBtZXNzYWdlXHJcbiAgICogQHBhcmFtIHNraXBOb3RpZmljYXRpb25cclxuICAgKiBAcmV0dXJuIChlcnJvcikgPT4gT2JzZXJ2YWJsZTxuZXZlcj5cclxuICAgKi9cclxuICBwdWJsaWMgc3RhdGljIGNhdGNoKGNhbGxiYWNrPzogKGVycm9yKSA9PiBhbnksIG5hbWU/OiBzdHJpbmcsIG1lc3NhZ2U/OiBzdHJpbmcsIHNraXBOb3RpZmljYXRpb24/OiBib29sZWFuKSB7XHJcbiAgICBjb25zdCBmID0gKGVycm9yKSA9PiB7XHJcbiAgICAgIGNvbnN0IF9lcnJvciA9IGNhbGxiYWNrICYmIGNhbGxiYWNrKGVycm9yKTtcclxuICAgICAgcmV0dXJuIG9ic2VydmFibGVUaHJvd0Vycm9yKG5ldyBFb0Vycm9yKF9lcnJvciBpbnN0YW5jZW9mIEVycm9yID8gX2Vycm9yIDogZXJyb3IsIG5hbWUsIG1lc3NhZ2UsIHNraXBOb3RpZmljYXRpb24pKTtcclxuICAgIH07XHJcbiAgICByZXR1cm4gZjtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFVzZSBvbiBPYnNlcnZhYmxlLnN1YnNjcmliZSAhISFcclxuICAgKiBbbmctcGFja2FnciBpc3N1ZXNde0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9kaGVyZ2VzL25nLXBhY2thZ3IvaXNzdWVzLzY5Nn1cclxuICAgKlxyXG4gICAqIEBwYXJhbSBjYWxsYmFja1xyXG4gICAqIEBwYXJhbSBuYW1lXHJcbiAgICogQHBhcmFtIG1lc3NhZ2VcclxuICAgKiBAcGFyYW0gc2tpcE5vdGlmaWNhdGlvblxyXG4gICAqIEByZXR1cm4gKGVycm9yKSA9PiB2b2lkXHJcbiAgICovXHJcbiAgcHVibGljIHN0YXRpYyB0aHJvdyhjYWxsYmFjaz86IChlcnJvcikgPT4gYW55LCBuYW1lPzogc3RyaW5nLCBtZXNzYWdlPzogc3RyaW5nLCBza2lwTm90aWZpY2F0aW9uPzogYm9vbGVhbikge1xyXG4gICAgY29uc3QgZiA9IChlcnJvcikgPT4ge1xyXG4gICAgICBjb25zdCBfZXJyb3IgPSBjYWxsYmFjayAmJiBjYWxsYmFjayhlcnJvcik7XHJcbiAgICAgIHRocm93IG5ldyBFb0Vycm9yKF9lcnJvciBpbnN0YW5jZW9mIEVycm9yID8gX2Vycm9yIDogZXJyb3IsIG5hbWUsIG1lc3NhZ2UsIHNraXBOb3RpZmljYXRpb24pO1xyXG4gICAgfTtcclxuICAgIHJldHVybiBmO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXNlIG9uIE9ic2VydmFibGUuc3Vic2NyaWJlIG9ubHkgaWYgeW91IHdhbnQgdG8gc2tpcCBub3RpZmljYXRpb24gLyB0b2FzdCEhIVxyXG4gICAqXHJcbiAgICogQHBhcmFtIGNhbGxiYWNrXHJcbiAgICogQHBhcmFtIG5hbWVcclxuICAgKiBAcGFyYW0gbWVzc2FnZVxyXG4gICAqIEBwYXJhbSBza2lwTm90aWZpY2F0aW9uXHJcbiAgICogQHJldHVybiAoZXJyb3IpID0+IHZvaWRcclxuICAgKi9cclxuICBwdWJsaWMgc3RhdGljIGxvZ0Vycm9yKGNhbGxiYWNrPzogKGVycm9yKSA9PiBhbnksIG5hbWU/OiBzdHJpbmcsIG1lc3NhZ2U/OiBzdHJpbmcsIHNraXBOb3RpZmljYXRpb24gPSB0cnVlKSB7XHJcbiAgICByZXR1cm4gVXRpbHMudGhyb3coY2FsbGJhY2ssIG5hbWUsIG1lc3NhZ2UsIHNraXBOb3RpZmljYXRpb24pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2hlY2tzIGlmIGVsZW1lbnQgaXMgdmlzaWJsZVxyXG4gICAqXHJcbiAgICogQHBhcmFtIGVsZW1cclxuICAgKiBAcmV0dXJuIGJvb2xlYW5cclxuICAgKi9cclxuICBwdWJsaWMgc3RhdGljIGlzVmlzaWJsZShlbGVtOiBhbnkpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAhIShlbGVtLm9mZnNldFdpZHRoIHx8IGVsZW0ub2Zmc2V0SGVpZ2h0IHx8IGVsZW0uZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBnZXRCYXNlSHJlZigpIHtcclxuICAgIHJldHVybiBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYmFzZScpWzBdLmdldEF0dHJpYnV0ZSgnaHJlZicpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICpcclxuICAgKiBUcnVuY2F0ZSBhIHN0cmluZyAoZmlyc3QgYXJndW1lbnQpIGlmIGl0IGlzIGxvbmdlciB0aGFuIHRoZSBnaXZlbiBtYXhpbXVtIHN0cmluZyBsZW5ndGggKHNlY29uZCBhcmd1bWVudCkuXHJcbiAgICogUmV0dXJuIHRoZSB0cnVuY2F0ZWQgc3RyaW5nIHdpdGggYSAuLi4gZW5kaW5nIG90IHdoYXRzIHByb3ZpZGVkLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHN0cmluZyBzdHJcclxuICAgKiBAcGFyYW0gbnVtYmVyIG51bVxyXG4gICAqIEByZXR1cm5zXHJcbiAgICovXHJcbiAgcHVibGljIHN0YXRpYyB0cnVuY2F0ZVN0cmluZyhzdHIsIG51bSwgZW5kaW5nID0gJy4uLicpIHtcclxuICAgIGlmIChzdHIubGVuZ3RoID4gbnVtKSB7XHJcbiAgICAgIGlmIChudW0gPiAzKSB7XHJcbiAgICAgICAgbnVtIC09IDM7XHJcbiAgICAgIH1cclxuICAgICAgc3RyID0gYCR7c3RyLnN1YnN0cmluZygwLCBudW0pfSR7ZW5kaW5nfWA7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gc3RyO1xyXG4gIH07XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCB0aGUgVGltZVpvbmUgT2Zmc2VzdCBhcyBJU08gU3RyaW5nLlxyXG4gICAqXHJcbiAgICogQHJldHVybnNcclxuICAgKi9cclxuICBwdWJsaWMgc3RhdGljIGdldFRpbWV6b25lT2Zmc2V0KCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gbW9tZW50KCkuZm9ybWF0KCdaJyk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhdGljIGZvcm1hdE1haWxUbyh2YWx1ZTogRm9ybWF0ZWRNYWlsVG8sIGlzRW1haWw6IGJvb2xlYW4pOiBGb3JtYXRlZE1haWxUbyB7XHJcbiAgICBpZiAoaXNFbWFpbCAmJiAhIXZhbHVlKSB7XHJcbiAgICAgIHJldHVybiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpID8gdmFsdWUuam9pbigpLnJlcGxhY2UoLywvZywgJzsgJykgOiB2YWx1ZS5yZXBsYWNlKC8sL2csICc7ICcpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBhcnJheVRvT2JqZWN0KGFyciA9IFtdLCBrZXlQcm9wZXJ0eT86IHN0cmluZyB8ICgobzogYW55KSA9PiBzdHJpbmcpLCB2YWx1ZVByb3BlcnR5Pzogc3RyaW5nIHwgKChvOiBhbnkpID0+IGFueSkpIHtcclxuICAgIGNvbnN0IGtleSA9IHR5cGVvZiBrZXlQcm9wZXJ0eSA9PT0gJ3N0cmluZycgPyAobzogYW55KSA9PiBvW2tleVByb3BlcnR5XSA6IGtleVByb3BlcnR5O1xyXG4gICAgY29uc3QgdmFsdWUgPSB0eXBlb2YgdmFsdWVQcm9wZXJ0eSA9PT0gJ3N0cmluZycgPyAobzogYW55KSA9PiBvW3ZhbHVlUHJvcGVydHldIDogdmFsdWVQcm9wZXJ0eTtcclxuICAgIHJldHVybiBhcnIucmVkdWNlKChhY2MsIGN1ciwgaSkgPT4ge1xyXG4gICAgICBhY2Nba2V5ID8ga2V5KGN1cikgOiBpXSA9IHZhbHVlID8gdmFsdWUoY3VyKSA6IGN1cjtcclxuICAgICAgcmV0dXJuIGFjYztcclxuICAgIH0sIHt9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgZm9ybURhdGFTdHJpbmdpZnkobzogYW55KTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGYgPSAoa2V5LCB2YWx1ZSkgPT4ge1xyXG4gICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBSYW5nZVZhbHVlKSB7XHJcbiAgICAgICAgcmV0dXJuIGAvJHtVdGlscy5QUkVGX1JBTkdFVkFMVUV9KCR7SlNPTi5zdHJpbmdpZnkodmFsdWUpfSkvYDtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KG8sIGYpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBmb3JtRGF0YVBhcnNlKHN0cjogc3RyaW5nKTogYW55IHtcclxuICAgIGNvbnN0IGYgPSAoa2V5LCB2YWx1ZSkgPT4ge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJlxyXG4gICAgICAgIHZhbHVlLnN0YXJ0c1dpdGgoYC8ke1V0aWxzLlBSRUZfUkFOR0VWQUxVRX0oYCkgJiZcclxuICAgICAgICB2YWx1ZS5lbmRzV2l0aCgnKS8nKVxyXG4gICAgICApIHtcclxuICAgICAgICB2YWx1ZSA9IHZhbHVlLnN1YnN0cmluZyhVdGlscy5QUkVGX1JBTkdFVkFMVUUubGVuZ3RoICsgMiwgdmFsdWUubGVuZ3RoIC0gMik7XHJcbiAgICAgICAgY29uc3QgcGFyc2VkID0gSlNPTi5wYXJzZSh2YWx1ZSk7XHJcblxyXG4gICAgICAgIHJldHVybiBuZXcgUmFuZ2VWYWx1ZShwYXJzZWQub3BlcmF0b3IsIHBhcnNlZC5maXJzdFZhbHVlLCBwYXJzZWQuc2Vjb25kVmFsdWUpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgIH07XHJcbiAgICByZXR1cm4gSlNPTi5wYXJzZShzdHIsIGYpO1xyXG4gIH1cclxufVxyXG4iXX0=
|