tnp-core 18.0.54 → 18.0.55
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/README.md +20 -20
- package/assets/shared/shared_folder_info.txt +1 -1
- package/browser/README.md +24 -24
- package/browser/esm2022/lib/utils.mjs +3 -15
- package/browser/fesm2022/tnp-core.mjs +2 -14
- package/browser/fesm2022/tnp-core.mjs.map +1 -1
- package/cli.backend.js.map +1 -1
- package/client/README.md +24 -24
- package/client/esm2022/lib/utils.mjs +3 -15
- package/client/fesm2022/tnp-core.mjs +2 -14
- package/client/fesm2022/tnp-core.mjs.map +1 -1
- package/index.js.map +1 -1
- package/lib/build-info._auto-generated_.js.map +1 -1
- package/lib/command-exists.js.map +1 -1
- package/lib/core-cli.js.map +1 -1
- package/lib/core-config.js.map +1 -1
- package/lib/core-imports.js.map +1 -1
- package/lib/core-models.js.map +1 -1
- package/lib/framework-name.js.map +1 -1
- package/lib/helpers-isomorphic.js.map +1 -1
- package/lib/helpers-messages.js.map +1 -1
- package/lib/helpers.js.map +1 -1
- package/lib/index._auto-generated_.js.map +1 -1
- package/lib/index.js.map +1 -1
- package/lib/node-chalk-mock.js +2 -2
- package/lib/node-chalk-mock.js.map +1 -1
- package/lib/node-path-mock.js +2 -2
- package/lib/node-path-mock.js.map +1 -1
- package/lib/progress-data.js.map +1 -1
- package/lib/public-api.js.map +1 -1
- package/lib/required-global-npm-packages.js.map +1 -1
- package/lib/utils.js +13 -29
- package/lib/utils.js.map +1 -1
- package/migrations/index.js.map +1 -1
- package/migrations/migrations_index._auto-generated_.js.map +1 -1
- package/package.json +1 -1
- package/taon.jsonc +56 -0
- package/tmp-environment.json +2 -2
- package/websql/README.md +24 -24
- package/websql/esm2022/lib/utils.mjs +3 -15
- package/websql/fesm2022/tnp-core.mjs +2 -14
- package/websql/fesm2022/tnp-core.mjs.map +1 -1
package/README.md
CHANGED
@@ -1,20 +1,20 @@
|
|
1
|
-
# taon-core ( tnp-core )
|
2
|
-
|
3
|
-
- Part of [taon.dev](https://github.com/darekf77/taon)
|
4
|
-
- JavasScript/Typescript most essential helpers
|
5
|
-
- Basic taon releated helpers
|
6
|
-
- Purpose:
|
7
|
-
+ lightweight most essential helpers library
|
8
|
-
+ crossplatform helpers for NodeJs/Browser
|
9
|
-
|
10
|
-
|
11
|
-
## Usage
|
12
|
-
- in taon isomorphic libs/apps or any NodeJS apps/libs:
|
13
|
-
```ts
|
14
|
-
import { Helpers } from 'tnp-core';
|
15
|
-
```
|
16
|
-
|
17
|
-
- in any frontend browser apps (except taon libs/apps)
|
18
|
-
```ts
|
19
|
-
import { Helpers } from 'tnp-core/browser';
|
20
|
-
```
|
1
|
+
# taon-core ( tnp-core )
|
2
|
+
|
3
|
+
- Part of [taon.dev](https://github.com/darekf77/taon)
|
4
|
+
- JavasScript/Typescript most essential helpers
|
5
|
+
- Basic taon releated helpers
|
6
|
+
- Purpose:
|
7
|
+
+ lightweight most essential helpers library
|
8
|
+
+ crossplatform helpers for NodeJs/Browser
|
9
|
+
|
10
|
+
|
11
|
+
## Usage
|
12
|
+
- in taon isomorphic libs/apps or any NodeJS apps/libs:
|
13
|
+
```ts
|
14
|
+
import { Helpers } from 'tnp-core';
|
15
|
+
```
|
16
|
+
|
17
|
+
- in any frontend browser apps (except taon libs/apps)
|
18
|
+
```ts
|
19
|
+
import { Helpers } from 'tnp-core/browser';
|
20
|
+
```
|
@@ -1,6 +1,6 @@
|
|
1
1
|
THIS FILE IS GENERATED. THIS FILE IS GENERATED. THIS FILE IS GENERATED.
|
2
2
|
|
3
|
-
Assets from this folder are being shipped with this npm package (tnp-core@18.0.
|
3
|
+
Assets from this folder are being shipped with this npm package (tnp-core@18.0.54)
|
4
4
|
created from this project.
|
5
5
|
|
6
6
|
THIS FILE IS GENERATED.THIS FILE IS GENERATED. THIS FILE IS GENERATED.
|
package/browser/README.md
CHANGED
@@ -1,24 +1,24 @@
|
|
1
|
-
# MyLib
|
2
|
-
|
3
|
-
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 13.2.0.
|
4
|
-
|
5
|
-
## Code scaffolding
|
6
|
-
|
7
|
-
Run `ng generate component component-name --project my-lib` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project my-lib`.
|
8
|
-
> Note: Don't forget to add `--project my-lib` or else it will be added to the default project in your `angular.json` file.
|
9
|
-
|
10
|
-
## Build
|
11
|
-
|
12
|
-
Run `ng build my-lib` to build the project. The build artifacts will be stored in the `dist/` directory.
|
13
|
-
|
14
|
-
## Publishing
|
15
|
-
|
16
|
-
After building your library with `ng build my-lib`, go to the dist folder `cd dist/my-lib` and run `npm publish`.
|
17
|
-
|
18
|
-
## Running unit tests
|
19
|
-
|
20
|
-
Run `ng test my-lib` to execute the unit tests via [Karma](https://karma-runner.github.io).
|
21
|
-
|
22
|
-
## Further help
|
23
|
-
|
24
|
-
To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page.
|
1
|
+
# MyLib
|
2
|
+
|
3
|
+
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 13.2.0.
|
4
|
+
|
5
|
+
## Code scaffolding
|
6
|
+
|
7
|
+
Run `ng generate component component-name --project my-lib` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project my-lib`.
|
8
|
+
> Note: Don't forget to add `--project my-lib` or else it will be added to the default project in your `angular.json` file.
|
9
|
+
|
10
|
+
## Build
|
11
|
+
|
12
|
+
Run `ng build my-lib` to build the project. The build artifacts will be stored in the `dist/` directory.
|
13
|
+
|
14
|
+
## Publishing
|
15
|
+
|
16
|
+
After building your library with `ng build my-lib`, go to the dist folder `cd dist/my-lib` and run `npm publish`.
|
17
|
+
|
18
|
+
## Running unit tests
|
19
|
+
|
20
|
+
Run `ng test my-lib` to execute the unit tests via [Karma](https://karma-runner.github.io).
|
21
|
+
|
22
|
+
## Further help
|
23
|
+
|
24
|
+
To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page.
|
@@ -1412,6 +1412,8 @@ export var UtilsTerminal;
|
|
1412
1412
|
/* */
|
1413
1413
|
/* */
|
1414
1414
|
/* */
|
1415
|
+
/* */
|
1416
|
+
/* */
|
1415
1417
|
return (void 0);
|
1416
1418
|
};
|
1417
1419
|
const transformChoices = (choices) => {
|
@@ -1689,20 +1691,6 @@ export var UtilsTerminal;
|
|
1689
1691
|
/* */
|
1690
1692
|
/* */
|
1691
1693
|
/* */
|
1692
|
-
/* */
|
1693
|
-
/* */
|
1694
|
-
/* */
|
1695
|
-
/* */
|
1696
|
-
/* */
|
1697
|
-
/* */
|
1698
|
-
/* */
|
1699
|
-
/* */
|
1700
|
-
/* */
|
1701
|
-
/* */
|
1702
|
-
/* */
|
1703
|
-
/* */
|
1704
|
-
/* */
|
1705
|
-
/* */
|
1706
1694
|
return (void 0);
|
1707
1695
|
};
|
1708
1696
|
UtilsTerminal.confirm = async (options) => {
|
@@ -1898,4 +1886,4 @@ export var UtilsTerminal;
|
|
1898
1886
|
})(UtilsTerminal || (UtilsTerminal = {}));
|
1899
1887
|
;
|
1900
1888
|
({}); // @--end-of-file-for-module=tnp-core lib/utils.ts
|
1901
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90bXAtbGlicy1mb3ItZGlzdC90bnAtY29yZS9wcm9qZWN0cy90bnAtY29yZS9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFJOUIsT0FBTyxLQUF3QixNQUFNLE9BQU8sQ0FBQztBQUU3QyxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBZ0MsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHNUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQU0zQyxNQUFNLHVCQUF1QixHQUFHLEtBQUssQ0FBQztBQUd0QyxNQUFNLEtBQVcsS0FBSyxDQTZzQnJCO0FBN3NCRCxXQUFpQixLQUFLO0lBRVAsZUFBUyxHQUFHLENBQ3ZCLEtBQVksRUFDWixjQUF3QixFQUN4QixFQUFFO1FBQ0YsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ2QsT0FBTyxLQUFLO2FBQ1QsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNoQixNQUFNLENBQUMsVUFBVSxJQUFJO1lBQ3BCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO2dCQUN0RSxDQUFDLENBQUMsS0FBSztnQkFDUCxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQ2xFLENBQUMsQ0FBUSxDQUFDO0lBQ2QsQ0FBQyxDQUFDO0lBSUY7OztP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S0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDbEIsQ0FBQyxDQUFDO0lBYUY7Ozs7T0FJRztJQUNVLCtDQUFrQyxHQUFHLEtBQUssRUFDckQsT0FBZSxFQUNmLE9BUUMsRUFDYyxFQUFFO1FBQ3JCLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDRCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNsQixDQUFDLENBQUM7SUFJVywyQkFBYyxHQUFHLEdBQUcsRUFBRTtRQUNyQyxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDRCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNsQixDQUFDLENBQUM7SUFJRjs7O09BR0c7SUFDVSxxQ0FBd0IsR0FBRyxDQUN0QyxPQUFlLEVBQ2YsT0FBeUQsRUFDekQsRUFBRTtRQUNOLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxL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S0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDRCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNsQixDQUFDLENBQUM7SUFJRjs7O09BR0c7SUFDVSx5Q0FBMkIsR0FBRyxLQUFLLEVBRzlDLE9BQWUsRUFDZixPQU1DLEVBQ0QsRUFBRTtRQUNOLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFL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QUMsQ0FBQyxDQUFDO0lBQ2xCLENBQUMsQ0FBQztJQUlXLHFCQUFPLEdBQUcsS0FBSyxFQUFFLE9BWTdCLEVBQUUsRUFBRTtRQUNQLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDRCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNsQixDQUFDLENBQUM7SUFJVyx3Q0FBMEIsR0FBRyxDQUFDLE9BRTFDLEVBQWlCLEVBQUU7UUFDdEIsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDbEIsQ0FBQyxDQUFDO0lBSUY7O09BRUc7SUFDVSx5QkFBVyxHQUFHLENBQUMsT0FBOEIsRUFBRSxFQUFFO1FBQ2hFLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNELE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2xCLENBQUMsQ0FBQztJQUlXLDZCQUFlLEdBQUcsS0FBSyxFQUNsQyxJQUF1QixFQUN2QixRQUFRLEdBQUcsTUFBTSxFQUNGLEVBQUU7UUFDckIsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDRCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNsQixDQUFDLENBQUM7SUFJRjs7Ozs7O09BTUc7SUFDVSx1Q0FBeUIsR0FBRyxDQUN2QyxJQUF1QixFQUNSLEVBQUU7UUFDckIsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDbEIsQ0FBQyxDQUFDO0FBRUosQ0FBQyxFQTFuQmdCLGFBQWEsS0FBYixhQUFhLFFBMG5CN0I7QUFHQSxDQUFDO0FBQUEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLGtEQUFrRCIsInNvdXJjZXNDb250ZW50IjpbIlxuXG5cbmltcG9ydCB7IEJsb2IgfSBmcm9tICdidWZmZXInO1xuaW1wb3J0ICogYXMgbmV0IGZyb20gJ25ldCc7XG5pbXBvcnQgeyBwcm9taXNpZnkgfSBmcm9tICd1dGlsJztcblxuaW1wb3J0IGF4aW9zLCB7IEF4aW9zUmVzcG9uc2UgfSBmcm9tICdheGlvcyc7XG5cbmltcG9ydCB7IHBhdGgsIF8sIGNyb3NzUGxhdGZvcm1QYXRoLCBvcywgY2hhbGsgfSBmcm9tICcuL2NvcmUtaW1wb3J0cyc7XG5pbXBvcnQgeyBkYXRlZm9ybWF0IH0gZnJvbSAnLi9jb3JlLWltcG9ydHMnO1xuaW1wb3J0IHsgc3Bhd24sIGNoaWxkX3Byb2Nlc3MgfSBmcm9tICcuL2NvcmUtaW1wb3J0cyc7XG5pbXBvcnQgeyBmc2UgfSBmcm9tICcuL2NvcmUtaW1wb3J0cyc7XG5pbXBvcnQgeyBDb3JlTW9kZWxzIH0gZnJvbSAnLi9jb3JlLW1vZGVscyc7XG5cbmltcG9ydCB7IEhlbHBlcnMgfSBmcm9tICcuL2luZGV4JztcbmltcG9ydCB7IENoaWxkUHJvY2VzcyB9IGZyb20gJ2NoaWxkX3Byb2Nlc3MnO1xuXG5cbmNvbnN0IEJMT0JfU1VQUE9SVEVEX0lOX1NRTEpTID0gZmFsc2U7XG5cblxuZXhwb3J0IG5hbWVzcGFjZSBVdGlscyB7XG5cbiAgZXhwb3J0IGNvbnN0IHVuaXFBcnJheSA9IDxUID0gYW55PihcbiAgICBhcnJheTogYW55W10sXG4gICAgdW5pcXVlUHJvcGVydHk/OiBrZXlvZiBULFxuICApID0+IHtcbiAgICB2YXIgc2VlbiA9IHt9O1xuICAgIHJldHVybiBhcnJheVxuICAgICAgLmZpbHRlcihmID0+ICEhZilcbiAgICAgIC5maWx0ZXIoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgcmV0dXJuIHNlZW4uaGFzT3duUHJvcGVydHkodW5pcXVlUHJvcGVydHkgPyBpdGVtW3VuaXF1ZVByb3BlcnR5XSA6IGl0ZW0pXG4gICAgICAgICAgPyBmYWxzZVxuICAgICAgICAgIDogKHNlZW5bdW5pcXVlUHJvcGVydHkgPyBpdGVtW3VuaXF1ZVByb3BlcnR5XSA6IGl0ZW1dID0gdHJ1ZSk7XG4gICAgICB9KSBhcyBUW107XG4gIH07XG5cblxuXG4gIC8qKlxuICAgKiBAcGFyYW0gYW55T2JqZWN0XG4gICAqIEByZXR1cm5zIG9iamVjdCB3aXRoIHNvcnRlZCBrZXlzXG4gICAqL1xuICBleHBvcnQgY29uc3Qgc29ydEtleXMgPSAoYW55T2JqZWN0OiBhbnkpOiBhbnkgPT4ge1xuICAgIGlmIChfLmlzQXJyYXkoYW55T2JqZWN0KSkge1xuICAgICAgcmV0dXJuIGFueU9iamVjdC5tYXAoc29ydEtleXMpO1xuICAgIH1cbiAgICBpZiAoXy5pc09iamVjdChhbnlPYmplY3QpKSB7XG4gICAgICByZXR1cm4gXy5mcm9tUGFpcnMoXG4gICAgICAgIF8ua2V5cyhhbnlPYmplY3QpXG4gICAgICAgICAgLnNvcnQoKVxuICAgICAgICAgIC5tYXAoa2V5ID0+IFtrZXksIHNvcnRLZXlzKGFueU9iamVjdFtrZXldKV0pLFxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIGFueU9iamVjdDtcbiAgfTtcblxuXG5cbiAgLyoqXG4gICAqIEV4YW1wbGU6XG4gICAqIG5ldyBSZWdFeHAoZXNjYXBlU3RyaW5nRm9yUmVnRXgoJ2EuYi5jJyksJ2cnKSA9PiAvYVxcLmJcXC5jL2dcbiAgICovXG4gIGV4cG9ydCBjb25zdCBlc2NhcGVTdHJpbmdGb3JSZWdFeCA9IChzdHJpbmdGb3JSZWdFeHA6IHN0cmluZykgPT4ge1xuICAgIHJldHVybiBzdHJpbmdGb3JSZWdFeHAucmVwbGFjZSgvWy1cXC9cXFxcXiQqKz8uKCl8W1xcXXt9XS9nLCAnXFxcXCQmJyk7XG4gIH07XG5cblxuXG4gIGV4cG9ydCBmdW5jdGlvbiByZW1vdmVDaGFsa1NwZWNpYWxDaGFycyhzdHI6IHN0cmluZyk6IHN0cmluZyB7XG5cbiAgICBjb25zdCBhbnNpUmVnZXggPSAvXFx1MDAxYlxcW1swLTk7XSptL2c7XG5cblxuICAgIHJldHVybiBzdHIucmVwbGFjZShhbnNpUmVnZXgsICcnKTtcbiAgfVxuXG5cblxuICBleHBvcnQgY29uc3QgZnVsbERhdGVUaW1lID0gKCkgPT4ge1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9O1xuXG5cblxuICBleHBvcnQgY29uc3QgZnVsbERhdGUgPSAoKSA9PiB7XG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH07XG5cblxuXG4gIGNvbnN0IHRha2VuUG9ydHMgPSBbXTtcbiAgZXhwb3J0IGNvbnN0IGdldEZyZWVQb3J0ID0gYXN5bmMgKG9wdGlvbnM/OiB7XG4gICAgc3RhcnRGcm9tPzogbnVtYmVyO1xuICB9KTogUHJvbWlzZTxudW1iZXI+ID0+IHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH07XG5cblxuXG4gIC8qKlxuICAgKiBUcmF2ZXJzZXMgdGhlIGNhY2hlIHRvIHNlYXJjaCBmb3IgYWxsIHRoZSBjYWNoZWRcbiAgICogZmlsZXMgb2YgdGhlIHNwZWNpZmllZCBtb2R1bGUgbmFtZVxuICAgKi9cbiAgY29uc3Qgc2VhcmNoQ2FjaGUgPSAobW9kdWxlTmFtZSwgY2FsbGJhY2spID0+IHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfTtcblxuICAvKipcbiAgICogUmVtb3ZlcyBhIG1vZHVsZSBmcm9tIHRoZSBjYWNoZVxuICAgKi9cbiAgY29uc3QgcHVyZ2VDYWNoZSA9IG1vZHVsZU5hbWUgPT4ge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9O1xuXG4gIGV4cG9ydCBjb25zdCByZXF1aXJlVW5jYWNoZWQgPSAobW9kdWxlOiBzdHJpbmcpID0+IHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9O1xuXG5cblxuXG4gIC8qKlxuICAgKiBzaW1pbGFyIHRvIGNhbWVsQ2FzZSBidXQgcmVtb3ZlXG4gICAqIGFsbCBub24gd29yZCAvIHJlcGVhdGVkIGNoYXJhY3RlcnNcbiAgICovXG4gIGV4cG9ydCBjb25zdCBjYW1lbGl6ZSA9IChzdHI6IHN0cmluZyA9ICcnKSA9PiB7XG4gICAgc3RyID0gc3RyLnJlcGxhY2UoL1xcVy9nLCAnJykudG9Mb3dlckNhc2UoKTtcbiAgICByZXR1cm4gc3RyXG4gICAgICAucmVwbGFjZSgvKD86Xlxcd3xbQS1aXXxcXGJcXHcpL2csIGZ1bmN0aW9uICh3b3JkLCBpbmRleCkge1xuICAgICAgICByZXR1cm4gaW5kZXggPT0gMCA/IHdvcmQudG9Mb3dlckNhc2UoKSA6IHdvcmQudG9VcHBlckNhc2UoKTtcbiAgICAgIH0pXG4gICAgICAucmVwbGFjZSgvXFxzKy9nLCAnJyk7XG4gIH07XG5cblxuXG4gIGludGVyZmFjZSBBdHRySnNvbmNQcm9wIHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgdmFsdWU/OiBhbnk7XG4gIH1cbiAgZXhwb3J0IG5hbWVzcGFjZSBqc29uIHtcbiAgICBleHBvcnQgY29uc3QgZ2V0QXRycmlidXRpZXMgPSAoXG4gICAgICBqc29uRGVlcFBhdGg6IHN0cmluZywgLy8gbG9kYXNoIHBhdGggdG8gcHJvcGVydHkgaW4ganNvbiBleC4gZGVlcC5wYXRoLnRvLnByb3BcbiAgICAgIGZpbGVDb250ZW50OiBzdHJpbmcsIC8vIGpzb25jIG9yIGpzb241IC0ganNvbiB3aXRoIGNvbW1lbnRzXG4gICAgKTogQXR0ckpzb25jUHJvcFtdID0+IHtcbiAgICAgIGNvbnN0IGxpbmVzID0gZmlsZUNvbnRlbnQuc3BsaXQoJ1xcbicpO1xuXG4gICAgICBjb25zdCBwYXRoUGFydHMgPSBqc29uRGVlcFBhdGguc3BsaXQoJy4nKS5yZWR1Y2UoKGEsIGIpID0+IHtcbiAgICAgICAgaWYgKGEubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgcmV0dXJuIFtiXTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBsYXN0OiBzdHJpbmcgPSBhW2EubGVuZ3RoIC0gMV07XG4gICAgICAgIGlmIChcbiAgICAgICAgICAobGFzdC5zdGFydHNXaXRoKGBbJ2ApICYmIGIuZW5kc1dpdGgoYCddYCkpIHx8XG4gICAgICAgICAgKGxhc3Quc3RhcnRzV2l0aChgW1wiYCkgJiYgYi5lbmRzV2l0aChgXCJdYCkpXG4gICAgICAgICkge1xuICAgICAgICAgIGFbYS5sZW5ndGggLSAxXSA9IFtsYXN0LCBiXS5qb2luKCcuJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYS5wdXNoKGIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhO1xuICAgICAgfSwgW10pO1xuXG5cbiAgICAgIGNvbnN0IGtleU5hbWUgPSBwYXRoUGFydHMucG9wKCkhLnJlcGxhY2UoL15cXFtcIiguKylcIlxcXSQvLCAnJDEnKTtcbiAgICAgIGxldCBjdXJyZW50UGF0aCA9ICcnO1xuICAgICAgbGV0IGF0dHJpYnV0ZXM6IEF0dHJKc29uY1Byb3BbXSA9IFtdO1xuICAgICAgbGV0IGNvbGxlY3RlZENvbW1lbnRzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgICBmb3IgKGNvbnN0IGxpbmUgb2YgbGluZXMpIHtcbiAgICAgICAgY29uc3QgdHJpbW1lZExpbmUgPSBsaW5lLnRyaW0oKTtcblxuICAgICAgICBpZiAodHJpbW1lZExpbmUuc3RhcnRzV2l0aCgnLy8nKSkge1xuXG4gICAgICAgICAgY29sbGVjdGVkQ29tbWVudHMucHVzaCh0cmltbWVkTGluZSk7XG5cblxuICAgICAgICB9IGVsc2UgaWYgKHRyaW1tZWRMaW5lLnN0YXJ0c1dpdGgoJ1wiJykgfHwgdHJpbW1lZExpbmUuc3RhcnRzV2l0aChcIidcIikpIHtcblxuICAgICAgICAgIGNvbnN0IG1hdGNoID0gdHJpbW1lZExpbmUubWF0Y2goL1tcIiddKFteXCInXSspW1wiJ11cXHMqOi8pO1xuXG4gICAgICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgICAgICBjb25zdCBrZXkgPSBtYXRjaFsxXTtcbiAgICAgICAgICAgIGN1cnJlbnRQYXRoID0gY3VycmVudFBhdGhcbiAgICAgICAgICAgICAgPyBgJHtjdXJyZW50UGF0aH0uJHtrZXkuaW5jbHVkZXMoJy4nKSA/IGBbJyR7a2V5fSddYCA6IGtleX1gXG4gICAgICAgICAgICAgIDoga2V5O1xuXG5cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgKGN1cnJlbnRQYXRoLmVuZHNXaXRoKGtleU5hbWUpICYmXG4gICAgICAgICAgICAgICAgIWN1cnJlbnRQYXRoLmVuZHNXaXRoKCcvJyArIGtleU5hbWUpKSB8fFxuICAgICAgICAgICAgICBjdXJyZW50UGF0aC5lbmRzV2l0aChgWycke2tleU5hbWV9J11gKVxuICAgICAgICAgICAgKSB7XG5cblxuXG5cblxuICAgICAgICAgICAgICBhdHRyaWJ1dGVzID0gZXh0cmFjdEF0dHJpYnV0ZXNGcm9tQ29tbWVudHMoY29sbGVjdGVkQ29tbWVudHMpO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuXG4gICAgICAgICAgICBjb2xsZWN0ZWRDb21tZW50cyA9IFtdO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gYXR0cmlidXRlcztcbiAgICB9O1xuXG4gICAgY29uc3QgZXh0cmFjdEF0dHJpYnV0ZXNGcm9tQ29tbWVudHMgPSAoXG4gICAgICBjb21tZW50czogc3RyaW5nW10sXG4gICAgKTogQXR0ckpzb25jUHJvcFtdID0+IHtcbiAgICAgIGNvbnN0IGF0dHJpYnV0ZXM6IEF0dHJKc29uY1Byb3BbXSA9IFtdO1xuICAgICAgY29uc3QgYXR0clJlZ2V4ID0gL0AoXFx3KykoPzpcXHMqPVxccyooW15cXHNAXSspKT8vZztcblxuICAgICAgZm9yIChjb25zdCBjb21tZW50IG9mIGNvbW1lbnRzKSB7XG4gICAgICAgIGxldCBtYXRjaDtcbiAgICAgICAgd2hpbGUgKChtYXRjaCA9IGF0dHJSZWdleC5leGVjKGNvbW1lbnQpKSAhPT0gbnVsbCkge1xuICAgICAgICAgIGNvbnN0IFssIG5hbWUsIHZhbHVlXSA9IG1hdGNoO1xuXG4gICAgICAgICAgY29uc3QgZXhpc3RpbmdBdHRyaWJ1dGUgPSBhdHRyaWJ1dGVzLmZpbmQoXG4gICAgICAgICAgICBhdHRyID0+IGF0dHIubmFtZSA9PT0gYEAke25hbWV9YCxcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgaWYgKGV4aXN0aW5nQXR0cmlidXRlKSB7XG4gICAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZXhpc3RpbmdBdHRyaWJ1dGUudmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgZXhpc3RpbmdBdHRyaWJ1dGUudmFsdWUucHVzaCh2YWx1ZSk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZXhpc3RpbmdBdHRyaWJ1dGUudmFsdWUgPSBbZXhpc3RpbmdBdHRyaWJ1dGUudmFsdWUsIHZhbHVlXTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhdHRyaWJ1dGVzLnB1c2goe1xuICAgICAgICAgICAgICBuYW1lOiBgQCR7bmFtZX1gLFxuICAgICAgICAgICAgICB2YWx1ZTogdmFsdWUgPyB2YWx1ZSA6IHRydWUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuXG4gICAgICBhdHRyaWJ1dGVzLmZvckVhY2goYXR0ciA9PiB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGF0dHIudmFsdWUpICYmIGF0dHIudmFsdWUubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgYXR0ci52YWx1ZSA9IGF0dHIudmFsdWVbMF07XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gYXR0cmlidXRlcztcbiAgICB9O1xuICB9XG5cblxuXG5cblxuICBleHBvcnQgZW51bSBEYkJpbmFyeUZvcm1hdEVudW0ge1xuICAgIEJsb2IgPSAnQmxvYicsXG4gICAgRmlsZSA9ICdGaWxlJyxcbiAgICBzdHJpbmcgPSAnc3RyaW5nJyxcbi8qICovXG4vKiAqL1xuICBcbiAgfVxuXG4gIGV4cG9ydCB0eXBlIERiQmluYXJ5Rm9ybWF0Rm9yQnJvd3NlciA9IEJsb2IgfCBGaWxlIHwgc3RyaW5nO1xuLyogKi9cbi8qICovXG4gIFxuXG4gIC8qKlxuICAgKiBCaW5hcnkgZm9ybWF0IHRoYXQgY2FuIGJlIHN0b3JlZCBpbiBkYXRhYmFzZVxuICAgKlxuICAgKiBmb3Igbm9kZWpzID0+IEJ1ZmZlclxuICAgKiBmb3Igc3FsLmpzID0+IHN0cmluZyAoc2hvdWxiIGJlIGJsb2IgLSBidXQgbm90IHN1cHBvcnRlZClcbiAgICpcbiAgICovXG4gIGV4cG9ydCB0eXBlIERiQmluYXJ5Rm9ybWF0ID1cbiAgICB8IERiQmluYXJ5Rm9ybWF0Rm9yQnJvd3NlclxuLyogKi9cbi8qICovXG4gIFxuXG4gIGV4cG9ydCBuYW1lc3BhY2UgYmluYXJ5IHtcblxuXG4gICAgLyoqXG4gICAgICogVGhpcyBpcyBmb3IgQlJPV1NFUiBPTkxZXG4gICAgICpcbiAgICAgKiBAcGFyYW0gYnVmZmVyXG4gICAgICogQHBhcmFtIGNvbnRlbnRUeXBlXG4gICAgICogQHJldHVybnNcbiAgICAgKi9cbiAgICBleHBvcnQgYXN5bmMgZnVuY3Rpb24gYXJyYXlCdWZmZXJUb0Jsb2IoXG4gICAgICBidWZmZXI6IEFycmF5QnVmZmVyLFxuICAgICAgY29udGVudFR5cGU6IENvcmVNb2RlbHMuQ29udGVudFR5cGUsXG4gICAgKTogUHJvbWlzZTxCbG9iPiB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICByZXR1cm4gbmV3IEJsb2IoW2J1ZmZlcl0sIHsgdHlwZTogY29udGVudFR5cGUgfSk7XG4gICAgfVxuXG5cblxuXG4gICAgLyoqXG4gICAgICogVGhpcyBpcyBmb3IgQlJPV1NFUiBPTkxZXG4gICAgICogQHBhcmFtIGJsb2JcbiAgICAgKiBAcmV0dXJuc1xuICAgICAqL1xuICAgIGV4cG9ydCBhc3luYyBmdW5jdGlvbiBibG9iVG9BcnJheUJ1ZmZlcihibG9iOiBCbG9iKTogUHJvbWlzZTxBcnJheUJ1ZmZlcj4ge1xuICAgICAgcmV0dXJuIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICAgICAgcmVhZGVyLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWRlbmQnLCAoKSA9PiB7XG4gICAgICAgICAgcmVzb2x2ZShyZWFkZXIucmVzdWx0IGFzIGFueSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZWFkZXIuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCByZWplY3QpOyAvLyBAdHMtaWdub3JlXG4gICAgICAgIHJlYWRlci5yZWFkQXNBcnJheUJ1ZmZlcihibG9iKTtcbiAgICAgIH0pO1xuICAgIH1cblxuXG5cbiAgICAvKipcbiAgICAgKiBpdCBpcyByZXZlcnMgdG8gYmFzZTY0dG9CbG9iXG4gICAgICogQHBhcmFtIGJsb2JcbiAgICAgKiBAcmV0dXJuc1xuICAgICAqL1xuICAgIGV4cG9ydCBmdW5jdGlvbiBibG9iVG9CYXNlNjQoYmxvYjogQmxvYik6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICByZXR1cm4gbmV3IFByb21pc2U8YW55PigocmVzb2x2ZSwgXykgPT4ge1xuICAgICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgICAgICByZWFkZXIub25sb2FkZW5kID0gKCkgPT4gcmVzb2x2ZShyZWFkZXIucmVzdWx0KTsgLy8gQHRzLWlnbm9yZVxuICAgICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChibG9iKTtcbiAgICAgIH0pO1xuICAgIH1cblxuXG5cbiAgICAvKipcbiAgICAgKiBpdCBpcyByZXZlcnMgdG8gYmxvYlRvQmFzZTY0KClcbiAgICAgKiBAcGFyYW0gYmFzZTY0RGF0YVxuICAgICAqIEByZXR1cm5zXG4gICAgICovXG4gICAgZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGJhc2U2NHRvQmxvYihcbiAgICAgIGJhc2U2NERhdGE6IHN0cmluZyxcbiAgICAgIGNvbnRlbnRUeXBlT3ZlcnJpZGU/OiBDb3JlTW9kZWxzLkNvbnRlbnRUeXBlLFxuICAgICk6IFByb21pc2U8QmxvYj4ge1xuICAgICAgbGV0IGNvbnRlbnRfdHlwZTogQ29yZU1vZGVscy5Db250ZW50VHlwZSA9IHZvaWQgMCBhcyBhbnk7XG4gICAgICBsZXQgZmlsZV9iYXNlNjQ6IHN0cmluZyA9IHZvaWQgMCBhcyBhbnk7XG4gICAgICBpZiAoIWNvbnRlbnRUeXBlT3ZlcnJpZGUpIHtcbiAgICAgICAgY29uc3QgbSA9IC9eZGF0YTooLis/KTtiYXNlNjQsKC4rKSQvLmV4ZWMoYmFzZTY0RGF0YSk7XG4gICAgICAgIGlmICghbSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBbdGFvbi1mcmFtZXdvcmtdW2Jhc2U2NHRvQmxvYl0gTm90IGEgYmFzZTY0IGJsb2IgWyR7YmFzZTY0RGF0YX1dYCxcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIFtfXywgY29udGVudHR5cGUsIGZpbGViYXNlNjRdID0gbTtcbiAgICAgICAgY29udGVudF90eXBlID0gY29udGVudHR5cGUgYXMgYW55O1xuICAgICAgICBmaWxlX2Jhc2U2NCA9IGZpbGViYXNlNjQ7XG4gICAgICB9XG4gICAgICBjb250ZW50X3R5cGUgPSAoXG4gICAgICAgIGNvbnRlbnRUeXBlT3ZlcnJpZGUgPyBjb250ZW50VHlwZU92ZXJyaWRlIDogY29udGVudF90eXBlIHx8ICcnXG4gICAgICApIGFzIGFueTtcbiAgICAgIGJhc2U2NERhdGEgPSBjb250ZW50VHlwZU92ZXJyaWRlID8gYmFzZTY0RGF0YSA6IGZpbGVfYmFzZTY0O1xuICAgICAgY29uc3Qgc2xpY2VTaXplID0gMTAyNDtcbiAgICAgIGNvbnN0IGJ5dGVDaGFyYWN0ZXJzID0gYXRvYihiYXNlNjREYXRhKTtcbiAgICAgIGNvbnN0IGJ5dGVzTGVuZ3RoID0gYnl0ZUNoYXJhY3RlcnMubGVuZ3RoO1xuICAgICAgY29uc3Qgc2xpY2VzQ291bnQgPSBNYXRoLmNlaWwoYnl0ZXNMZW5ndGggLyBzbGljZVNpemUpO1xuICAgICAgY29uc3QgYnl0ZUFycmF5cyA9IG5ldyBBcnJheShzbGljZXNDb3VudCk7XG5cbiAgICAgIGZvciAobGV0IHNsaWNlSW5kZXggPSAwOyBzbGljZUluZGV4IDwgc2xpY2VzQ291bnQ7ICsrc2xpY2VJbmRleCkge1xuICAgICAgICBjb25zdCBiZWdpbiA9IHNsaWNlSW5kZXggKiBzbGljZVNpemU7XG4gICAgICAgIGNvbnN0IGVuZCA9IE1hdGgubWluKGJlZ2luICsgc2xpY2VTaXplLCBieXRlc0xlbmd0aCk7XG5cbiAgICAgICAgY29uc3QgYnl0ZXMgPSBuZXcgQXJyYXkoZW5kIC0gYmVnaW4pO1xuXG4gICAgICAgIGZvciAobGV0IG9mZnNldCA9IGJlZ2luLCBpID0gMDsgb2Zmc2V0IDwgZW5kOyArK2ksICsrb2Zmc2V0KSB7XG4gICAgICAgICAgYnl0ZXNbaV0gPSBieXRlQ2hhcmFjdGVyc1tvZmZzZXRdLmNoYXJDb2RlQXQoMCk7XG4gICAgICAgIH1cbiAgICAgICAgYnl0ZUFycmF5c1tzbGljZUluZGV4XSA9IG5ldyBVaW50OEFycmF5KGJ5dGVzKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBuZXcgQmxvYihieXRlQXJyYXlzLCB7IHR5cGU6IGNvbnRlbnRfdHlwZSB9KTtcbiAgICB9XG5cblxuXG5cbiAgICBleHBvcnQgYXN5bmMgZnVuY3Rpb24gYmFzZTY0dG9EYkJpbmFyeUZvcm1hdChcbiAgICAgIHRleHQ6IHN0cmluZyxcbiAgICApOiBQcm9taXNlPERiQmluYXJ5Rm9ybWF0PiB7XG4gICAgICBsZXQgcmVzdWx0OiBEYkJpbmFyeUZvcm1hdDtcblxuICAgICAgcmVzdWx0ID0gYXdhaXQgKGFzeW5jICgpID0+IHtcbiAgICAgICAgaWYgKEJMT0JfU1VQUE9SVEVEX0lOX1NRTEpTKSB7XG4gICAgICAgICAgY29uc3QgYmxvYiA9IGF3YWl0IGJhc2U2NHRvQmxvYih0ZXh0KTtcbiAgICAgICAgICByZXR1cm4gYmxvYjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGV4dCBhcyBhbnk7XG4gICAgICB9KSgpO1xuXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuXG5cbiAgICBleHBvcnQgYXN5bmMgZnVuY3Rpb24gZGJCaW5hcnlGb3JtYXRUb0Jhc2U2NChcbiAgICAgIGJpbmFyeUZvcm1hdDogRGJCaW5hcnlGb3JtYXQsXG4gICAgKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgIGxldCByZXN1bHQ6IHN0cmluZztcblxuICAgICAgcmVzdWx0ID0gYXdhaXQgKGFzeW5jICgpID0+IHtcbiAgICAgICAgaWYgKEJMT0JfU1VQUE9SVEVEX0lOX1NRTEpTKSB7XG4gICAgICAgICAgY29uc3QgdGV4dCA9IGF3YWl0IGJsb2JUb0Jhc2U2NChiaW5hcnlGb3JtYXQgYXMgYW55KTtcbiAgICAgICAgICByZXR1cm4gdGV4dDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYmluYXJ5Rm9ybWF0IGFzIGFueTtcbiAgICAgIH0pKCk7XG5cblxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cblxuXG5cbiAgICBleHBvcnQgYXN5bmMgZnVuY3Rpb24gdGV4dFRvRGJCaW5hcnlGb3JtYXQoXG4gICAgICB0ZXh0OiBzdHJpbmcsXG4gICAgKTogUHJvbWlzZTxEYkJpbmFyeUZvcm1hdD4ge1xuICAgICAgbGV0IHJlc3VsdDogRGJCaW5hcnlGb3JtYXQ7XG5cbiAgICAgIHJlc3VsdCA9IGF3YWl0IChhc3luYyAoKSA9PiB7XG4gICAgICAgIGlmIChCTE9CX1NVUFBPUlRFRF9JTl9TUUxKUykge1xuICAgICAgICAgIGNvbnN0IGJsb2IgPSBhd2FpdCB0ZXh0VG9CbG9iKHRleHQpO1xuICAgICAgICAgIHJldHVybiBibG9iO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0ZXh0IGFzIGFueTtcbiAgICAgIH0pKCk7XG5cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG5cblxuICAgIGV4cG9ydCBhc3luYyBmdW5jdGlvbiBkYkJpbmFyeUZvcm1hdFRvVGV4dChcbiAgICAgIGJpbmFyeUZvcm1hdDogRGJCaW5hcnlGb3JtYXQsXG4gICAgKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgIGxldCByZXN1bHQ6IHN0cmluZztcblxuICAgICAgcmVzdWx0ID0gYXdhaXQgKGFzeW5jICgpID0+IHtcbiAgICAgICAgaWYgKEJMT0JfU1VQUE9SVEVEX0lOX1NRTEpTKSB7XG4gICAgICAgICAgY29uc3QgdGV4dCA9IGF3YWl0IGJsb2JUb1RleHQoYmluYXJ5Rm9ybWF0IGFzIGFueSk7XG4gICAgICAgICAgcmV0dXJuIHRleHQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGJpbmFyeUZvcm1hdCBhcyBhbnk7XG4gICAgICB9KSgpO1xuXG5cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG5cblxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcblxuXG5cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG5cblxuXG4gICAgZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZpbGVUb0Jsb2IoZmlsZTogRmlsZSkge1xuICAgICAgcmV0dXJuIG5ldyBCbG9iKFtuZXcgVWludDhBcnJheShhd2FpdCBmaWxlLmFycmF5QnVmZmVyKCkpXSwge1xuICAgICAgICB0eXBlOiBmaWxlLnR5cGUsXG4gICAgICB9KTtcbiAgICB9XG5cblxuXG4gICAgZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGJsb2JUb0ZpbGUoXG4gICAgICBibG9iOiBCbG9iLFxuICAgICAgbmFtZUZvckZpbGU6IHN0cmluZyA9ICdteS1maWxlLW5hbWUnLFxuICAgICk6IFByb21pc2U8RmlsZT4ge1xuICAgICAgaWYgKCFuYW1lRm9yRmlsZSkge1xuICAgICAgICBuYW1lRm9yRmlsZSA9ICdub25hbWVmaWxlJyArIG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgICAgfVxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgcmV0dXJuIG5ldyBGaWxlKFtibG9iXSwgbmFtZUZvckZpbGUpO1xuICAgIH1cblxuXG5cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG5cblxuXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG5cblxuXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuXG5cblxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcblxuXG5cbiAgICBleHBvcnQgYXN5bmMgZnVuY3Rpb24gdGV4dFRvQmxvYihcbiAgICAgIHRleHQ6IHN0cmluZyxcbiAgICAgIHR5cGU6IENvcmVNb2RlbHMuQ29udGVudFR5cGUgPSAndGV4dC9wbGFpbicsXG4gICAgKTogUHJvbWlzZTxCbG9iPiB7XG4gICAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW3RleHRdLCB7IHR5cGUgfSk7XG4gICAgICByZXR1cm4gYmxvYjtcbiAgICB9XG5cblxuXG4gICAgZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGJsb2JUb1RleHQoYmxvYjogQmxvYik6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICByZXR1cm4gYXdhaXQgYmxvYi50ZXh0KCk7XG4gICAgfVxuXG5cblxuICAgIGV4cG9ydCBhc3luYyBmdW5jdGlvbiB0ZXh0VG9GaWxlKFxuICAgICAgdGV4dDogc3RyaW5nLFxuICAgICAgZmlsZVJlbGF0aXZlUGF0aE9yTmFtZTogc3RyaW5nLFxuICAgICk6IFByb21pc2U8RmlsZT4ge1xuXG4gICAgICBjb25zdCBleHQgPSBwYXRoLmV4dG5hbWUoZmlsZVJlbGF0aXZlUGF0aE9yTmFtZSk7XG5cbiAgICAgIGNvbnN0IHR5cGUgPSBDb3JlTW9kZWxzLm1pbWVUeXBlc1tleHRdO1xuICAgICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFt0ZXh0XSwgeyB0eXBlIH0pO1xuICAgICAgY29uc3QgZmlsZSA9IGF3YWl0IGJsb2JUb0ZpbGUoYmxvYiwgZmlsZVJlbGF0aXZlUGF0aE9yTmFtZSk7XG5cblxuXG5cblxuICAgICAgcmV0dXJuIGZpbGU7XG4gICAgfVxuXG5cblxuICAgIGV4cG9ydCBhc3luYyBmdW5jdGlvbiBmaWxlVG9UZXh0KGZpbGU6IEZpbGUpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGZpbGUudGV4dCgpO1xuICAgIH1cblxuXG5cbiAgICBleHBvcnQgYXN5bmMgZnVuY3Rpb24ganNvblRvQmxvYihqc29uT2JqOiBvYmplY3QpOiBQcm9taXNlPEJsb2I+IHtcbiAgICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbSlNPTi5zdHJpbmdpZnkoanNvbk9iaiwgbnVsbCwgMildLCB7XG4gICAgICAgIHR5cGU6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGJsb2I7XG4gICAgfVxuXG5cblxuICAgIC8qKlxuICAgICAqIFRPRE8gTk9UIFRFU1RFRFxuICAgICAqL1xuICAgIGV4cG9ydCBhc3luYyBmdW5jdGlvbiBibG9iVG9Kc29uKGJsb2I6IEJsb2IpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgcmV0dXJuIEpTT04ucGFyc2UoYXdhaXQgYmxvYi50ZXh0KCkpO1xuICAgIH1cblxuXG5cbiAgICBleHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0QmxvYkZyb20odXJsOiBzdHJpbmcpOiBQcm9taXNlPEJsb2I+IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlOiBBeGlvc1Jlc3BvbnNlPEJsb2I+ID0gYXdhaXQgYXhpb3Moe1xuICAgICAgICB1cmwsXG4gICAgICAgIG1ldGhvZDogJ2dldCcsXG4gICAgICAgIHJlc3BvbnNlVHlwZTogJ2Jsb2InLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YTtcbiAgICB9XG5cbiAgfVxuXG5cblxuICBleHBvcnQgbmFtZXNwYWNlIGNzcyB7XG5cbiAgICAvKipcbiAgICAgKlxuICAgICAqIEBwYXJhbSBwaXhlbHNDc3MgcGl4ZWxzIGV4LiAxMDBweFxuICAgICAqIEByZXR1cm5zXG4gICAgICovXG4gICAgZXhwb3J0IGZ1bmN0aW9uIG51bVZhbHVlKHBpeGVsc0Nzczogc3RyaW5nIHwgbnVtYmVyKTogbnVtYmVyIHtcblxuICAgICAgcmV0dXJuIHBhcnNlSW50KFxuICAgICAgICBwaXhlbHNDc3M/LnRvU3RyaW5nKCk/LnJlcGxhY2UoJ3B4JywgJycpLFxuXG5cbiAgICAgICk7XG4gICAgfVxuXG4gIH1cblxufVxuXG5cblxuZXhwb3J0IG5hbWVzcGFjZSBVdGlsc1Byb2Nlc3Mge1xuXG4gIGludGVyZmFjZSBSZXNvbHZlUHJvbWlzZU1zZyB7XG4gICAgLyoqXG4gICAgICogdW50aWwgdGhpcyBzdHJpbmcgaXMgaW4gb3V0cHV0IG9mIHN0ZG91dFxuICAgICAqL1xuICAgIHN0ZG91dD86IHN0cmluZyB8IHN0cmluZ1tdO1xuICAgIC8qKlxuICAgICAqIHVudGlsIHRoaXMgc3RyaW5nIGlzIGluIG91dHB1dCBvZiBzdGRlcnJcbiAgICAgKi9cbiAgICBzdGRlcnI/OiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgICAvKipcbiAgICAgKiBieSBkZWZhdWx0IG9ubHkgcmVzb2x2ZSB3aGVuIGV4aXQgY29kZSBpcyAwXG4gICAgICovXG4gICAgcmVzb2x2ZUFmdGVyQW55RXhpdENvZGU/OiBib29sZWFuO1xuICB9XG5cbiAgZXhwb3J0IGludGVyZmFjZSBQcm9jZXNzU3RhcnRPcHRpb25zIHtcbiAgICAvKipcbiAgICAgKiBieSBkZWZhdWx0IGlzIHByb2Nlc3MuY3dkKCk7XG4gICAgICovXG4gICAgY3dkPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIGJ5IGRlZmF1bHQgaXMgZmFsc2VcbiAgICAgKi9cbiAgICBzaG93Q29tbWFuZD86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogTW9kaWZ5IG91dHB1dCBsaW5lIGJ5IGxpbmVcbiAgICAgKi9cbiAgICBvdXRwdXRMaW5lUmVwbGFjZT86IChvdXRwdXRMaW5lU3RkZXJPclN0ZG91dDogc3RyaW5nKSA9PiBzdHJpbmc7XG4gICAgcmVzb2x2ZVByb21pc2VNc2c/OiBSZXNvbHZlUHJvbWlzZU1zZztcbiAgICAvKipcbiAgICAgKiBQcmVmaXggbWVzc2FnZXMgb3V0cHV0IGZyb20gY2hpbGRfcHJvY2Vzc1xuICAgICAqL1xuICAgIHByZWZpeD86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBUcnkgY29tbWFuZCBhZ2FpbiBhZnRlciBmYWlsIGFmdGVyIG4gbWlsbGlzZWNvbmRzXG4gICAgICovXG4gICAgdHJ5QWdhaW5XaGVuRmFpbEFmdGVyPzogbnVtYmVyO1xuICAgIGFza1RvVHJ5QWdhaW5PbkVycm9yPzogYm9vbGVhbjtcbiAgICBleGl0T25FcnJvckNhbGxiYWNrPzogKGNvZGU6IG51bWJlcikgPT4gdm9pZDtcbiAgICAvKipcbiAgICAgKiBVc2UgYmlnIGJ1ZmZlciBmb3IgYmlnIHdlYnBhY2sgbG9nc1xuICAgICAqIChpdCBtYXkgc2xvdyBkb3duIHNtYWxsZXIgcHJvY2Vzc2VzIGV4ZWN1dGlvbilcbiAgICAgKi9cbiAgICBiaWdnZXJCdWZmZXI/OiBib29sZWFuO1xuICAgIGhpZGVPdXRwdXQ/OiB7XG4gICAgICBzdGRvdXQ/OiBib29sZWFuO1xuICAgICAgc3RkZXJyPzogYm9vbGVhbjtcbiAgICB9O1xuICB9XG5cblxuXG4gIC8qKlxuICAgKiBUT0RPIElNUExFTUVOVFxuICAgKiBzdGFydCBhc3luYyBub2RlIHByb2Nlc3NcbiAgICovXG4gIGV4cG9ydCBjb25zdCBzdGFydEFzeW5jID0gYXN5bmMgKFxuICAgIGNvbW1hbmQ6IHN0cmluZyxcbiAgICBjd2Q6IHN0cmluZyxcblxuICAgIG9wdGlvbnM/OiBPbWl0PENvcmVNb2RlbHMuRXhlY3V0ZU9wdGlvbnMsICd0cnlBZ2FpbldoZW5GYWlsQWZ0ZXInPixcbiAgKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9O1xuXG5cblxuXG5cblxuXG5cblxuXG5cblxuICAvKipcbiAgICogVGhpcyBsZXQgeW91IHN0YXJ0IGNoaWxkIHByb2Nlc3MgYW5kIHJlc29sdmUgcHJvbWlzZSB3aGVuIHNvbWVcbiAgICogY29uZGl0aW9uIGlzIG1ldC4gSXQgaXMgdXNlZnVsIGZvciBleGFtcGxlIHdoZW4geW91IHdhbnQgdG8gc3RhcnRcbiAgICogcHJvY2VzcyBhbmQgd2FpdCB1bnRpbCBzb21lIG91dHB1dCBpcyBpbiBzdGRvdXQgb3Igc3RkZXJyLlxuICAgKi9cbiAgZXhwb3J0IGNvbnN0IHN0YXJ0QXN5bmNDaGlsZFByb2Nlc3NDb21tYW5kVW50aWwgPSBhc3luYyAoXG4gICAgY29tbWFuZDogc3RyaW5nLFxuICAgIG9wdGlvbnM6IHtcbiAgICAgIC8qKlxuICAgICAgICogdGVscyB3aGVuIHRvIHJlc29sdmUgcHJvbWlzZVxuICAgICAgICovXG4gICAgICB1bnRpbE9wdGlvbnM6IFJlc29sdmVQcm9taXNlTXNnO1xuICAgICAgZGlzcGxheU91dHB1dEluUGFyZW50UHJvY2Vzcz86IGJvb2xlYW47XG4gICAgICByZXNvbHZlQWZ0ZXJBbnlFeGl0Q29kZT86IGJvb2xlYW47XG4gICAgICBjd2Q/OiBzdHJpbmc7XG4gICAgfSxcbiAgKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfTtcblxuXG5cbiAgZXhwb3J0IGNvbnN0IGdldEdpdEJhc2hQYXRoID0gKCkgPT4ge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfTtcblxuXG5cbiAgLyoqXG4gICAqIFRPRE8gSU1QTEVNRU5UXG4gICAqIHN0YXJ0IGFzeW5jIG5vZGUgcHJvY2Vzc1xuICAgKi9cbiAgZXhwb3J0IGNvbnN0IHN0YXJ0SW5OZXdUZXJtaW5hbFdpbmRvdyA9IChcbiAgICBjb21tYW5kOiBzdHJpbmcsXG4gICAgb3B0aW9ucz86IFBpY2s8UHJvY2Vzc1N0YXJ0T3B0aW9ucywgJ2N3ZCcgfCAnaGlkZU91dHB1dCc+LFxuICApID0+IHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfTtcblxuXG5cbiAgZXhwb3J0IGNvbnN0IGdldEJhc2hPclNoZWxsTmFtZSA9ICgpOlxuICAgIHwgJ2Jyb3dzZXInXG4gICAgfCAnY21kJ1xuICAgIHwgJ3Bvd2Vyc2hlbGwnXG4gICAgfCAnZ2l0YmFzaCdcbiAgICB8ICdjeWd3aW4nXG4gICAgfCAndW5rbm93bidcbiAgICB8ICdiYXNoJ1xuICAgIHwgJ3pzaCdcbiAgICB8ICdmaXNoJ1xuICAgIHwgJ3NoJyA9PiB7XG5cbiAgICByZXR1cm4gJ2Jyb3dzZXInO1xuXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICAgIHJldHVybiAodm9pZCAwKTtcbiAgfTtcblxuXG4gIC8qKlxuICAgKiBHZXQgQ1BVIGFuZCBtZW1vcnkgdXNhZ2UgZm9yIGEgc2luZ2xlIFBJRC5cbiAgICovXG4gIGV4cG9ydCBjb25zdCBnZXRVc2FnZUZvclBpZCA9IGFzeW5jIChcbiAgICBwaWQ6IG51bWJlcixcbiAgKTogUHJvbWlzZTx7IGNwdTogbnVtYmVyOyBtZW1vcnlJbkdCOiBudW1iZXI7IG1lbW9yeUluTUI6IG51bWJlciB9PiA9PiB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9O1xuXG4gIC8qKlxuICAgKiBSZXR1cm4gYSBsaXN0IG9mIGRpcmVjdCBjaGlsZCBQSURzIGZvciB0aGUgZ2l2ZW4gUElEIG9uIGEgVW5peC1saWtlIHN5c3RlbS5cbiAgICogVXNlcyBgcHMgLW8gcGlkPSAtLXBwaWQgPHBpZD5gIHRvIGZpbmQgY2hpbGQgcHJvY2Vzc2VzLlxuICAgKi9cbiAgYXN5bmMgZnVuY3Rpb24gZ2V0Q2hpbGRQaWRzVW5peChwaWQ6IG51bWJlcik6IFByb21pc2U8bnVtYmVyW10+IHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGEgbGlzdCBvZiBkaXJlY3QgY2hpbGQgUElEcyBmb3IgdGhlIGdpdmVuIFBJRCBvbiBXaW5kb3dzLlxuICAgKiBVc2VzIGB3bWljIHByb2Nlc3Mgd2hlcmUgKFBhcmVudFByb2Nlc3NJZD08cGlkPikgZ2V0IFByb2Nlc3NJZGAgdG8gZmluZCBjaGlsZCBwcm9jZXNzZXMuXG4gICAqL1xuICBhc3luYyBmdW5jdGlvbiBnZXRDaGlsZFBpZHNXaW5kb3dzKHBpZDogbnVtYmVyKTogUHJvbWlzZTxudW1iZXJbXT4ge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH1cblxuICAvKipcbiAgICogQ3Jvc3MtcGxhdGZvcm0gZnVuY3Rpb24gdG8gbGlzdCAqZGlyZWN0KiBjaGlsZCBQSURzIG9mIGEgZ2l2ZW4gUElELlxuICAgKiBVc2VzIHRoZSBhcHByb3ByaWF0ZSBjb21tYW5kIGRlcGVuZGluZyBvbiBgcHJvY2Vzcy5wbGF0Zm9ybWAuXG4gICAqL1xuICBleHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0Q2hpbGRQaWRzT25jZShwaWQ6IG51bWJlcik6IFByb21pc2U8bnVtYmVyW10+IHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IENQVSBhbmQgbWVtb3J5IHVzYWdlIGZvciB0aGUgY3VycmVudCBwcm9jZXNzICh0aGUgTm9kZS5qcyBwcm9jZXNzIGl0c2VsZiksXG4gICAqIHBsdXMgYW55IGNoaWxkIHByb2Nlc3NlcyBzcGF3bmVkIGJ5IGl0LlxuICAgKi9cbiAgZXhwb3J0IGNvbnN0IGdldEN1cnJlbnRQcm9jZXNzQW5kQ2hpbGRVc2FnZSA9IGFzeW5jICgpOiBQcm9taXNlPHtcbiAgICBjdXJyZW50OiB7IGNwdTogbnVtYmVyOyBtZW1vcnlJbk1COiBudW1iZXIgfTtcbiAgICBjaGlsZHJlbjogQXJyYXk8eyBwaWQ6IG51bWJlcjsgY3B1OiBudW1iZXI7IG1lbW9yeUluTUI6IG51bWJlciB9PjtcbiAgfT4gPT4ge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH07XG59XG5cblxuXG5cbmV4cG9ydCBuYW1lc3BhY2UgVXRpbHNPcyB7XG5cbiAgLyoqXG4gICAqIGNoZWNrIGlmIHNjcmlwdCBpcyBydW5uaW5nIGluIGNsaWVudCBicm93c2VyXG4gICAqICh3ZWJzcWwgbW9kZWwgLT4gaXMgYWxzbyBjb25zaWRlcmVkIGFzIGJyb3dzZXJcbiAgICogYmVjYXVzZSBpdCBpcyBydW5uaW5nIGluIGJyb3dzZXIpXG4gICAqL1xuICBleHBvcnQgY29uc3QgaXNSdW5uaW5nSW5Ccm93c2VyID0gKCk6IGJvb2xlYW4gPT4ge1xuLyogKi9cbi8qICovXG4gIFxuICAgIHJldHVybiB0cnVlO1xuICB9O1xuXG5cblxuICAvKipcbiAgICogY2hlY2sgaWYgc2NyaXB0IGlzIHJ1bm5pbmcgaW4gbm9kZWpzXG4gICAqIChiYWNrZW5kIHNjcmlwdCBvciBlbGVjdHJvbiBzY3JpcHQpXG4gICAqL1xuICBleHBvcnQgY29uc3QgaXNSdW5uaW5nSW5Ob2RlID0gKCk6IGJvb2xlYW4gPT4ge1xuLyogKi9cbi8qICovXG4gIFxuICAgIHJldHVybiBmYWxzZTtcbiAgfTtcblxuXG5cbiAgLyoqXG4gICAqIGNoZWNrIGlmIHNjcmlwdCBpcyBydW5uaW5nIHNwZWNpYWxcbiAgICogYnJvd3NlciBtb2RlIHRoYXQgaGFzIHNxbC5qcyBiYWNrZW5kXG4gICAqIGFuZCBleGVjdXRlcyBzcWwgcXVlcmllcyBpbiBicm93c2VyXG4gICAqL1xuICBleHBvcnQgY29uc3QgaXNSdW5uaW5nSW5XZWJTUUwgPSAoKTogYm9vbGVhbiA9PiB7XG4vKiAqL1xuLyogKi9cbiAgXG5cbi8qICovXG4vKiAqL1xuICBcbiAgICByZXR1cm4gZmFsc2U7XG4gIH07XG5cblxuXG4gIC8qKlxuICAgKiBjaGVjayB3aGV0aGVyIHRoZSBjdXJyZW50IHByb2Nlc3MgaXMgcnVubmluZyBpbnNpZGVcbiAgICogRWxlY3Ryb24gYmFja2VuZCBvciBicm93c2VyLlxuICAgKi9cbiAgZXhwb3J0IGNvbnN0IGlzUnVubmluZ0luRWxlY3Ryb24gPSAoKTogYm9vbGVhbiA9PiB7XG5cbiAgICAvLyBAdHMtaWdub3JlXG4gICAgaWYgKFxuICAgICAgdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAgIHR5cGVvZiB3aW5kb3cucHJvY2VzcyA9PT0gJ29iamVjdCcgJiZcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHdpbmRvdy5wcm9jZXNzLnR5cGUgPT09ICdyZW5kZXJlcidcbiAgICApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGlmIChcbiAgICAgIHR5cGVvZiBwcm9jZXNzICE9PSAndW5kZWZpbmVkJyAmJlxuICAgICAgdHlwZW9mIHByb2Nlc3MudmVyc2lvbnMgPT09ICdvYmplY3QnICYmXG4gICAgICAhIXByb2Nlc3MudmVyc2lvbnMuZWxlY3Ryb25cbiAgICApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuXG4gICAgaWYgKFxuICAgICAgdHlwZW9mIG5hdmlnYXRvciA9PT0gJ29iamVjdCcgJiZcbiAgICAgIHR5cGVvZiBuYXZpZ2F0b3IudXNlckFnZW50ID09PSAnc3RyaW5nJyAmJlxuICAgICAgbmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCdFbGVjdHJvbicpID49IDBcbiAgICApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfTtcblxuXG5cbiAgLyoqXG4gICAqIENoZWNrIHdoZXRoZXIgdGhlIGN1cnJlbnQgcHJvY2VzcyBpcyBydW5uaW5nIGluc2lkZVxuICAgKiBhIFZpc3VhbCBTdHVkaW8gQ29kZSBleHRlbnNpb24uXG4gICAqL1xuICBleHBvcnQgY29uc3QgaXNSdW5uaW5nSW5Wc2NvZGVFeHRlbnNpb24gPSAoKTogYm9vbGVhbiA9PiB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH07XG5cblxuXG4gIC8qKlxuICAgKiBDaGVjayB3ZXRoZXIgdGhlIGN1cnJlbnQgcHJvY2VzcyBpcyBydW5uaW5nIGluc2lkZVxuICAgKiB3aW5kb3dzIHN1YnN5c3RlbSBmb3IgbGludXggKFdTTCkuXG4gICAqL1xuICBleHBvcnQgY29uc3QgaXNSdW5uaW5nSW5Xc2wgPSAoKTogYm9vbGVhbiA9PiB7XG5cbiAgICByZXR1cm4gZmFsc2U7XG5cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgICAgcmV0dXJuICh2b2lkIDApO1xuICB9O1xuXG5cblxuICBleHBvcnQgY29uc3QgaXNSdW5uaW5nSW5XaW5kb3dzQ21kOiAoKSA9PiBib29sZWFuID0gKCkgPT4ge1xuXG4gICAgcmV0dXJuIGZhbHNlO1xuXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH07XG5cblxuXG4gIGV4cG9ydCBjb25zdCBpc1J1bm5pbmdJbkRvY2tlciA9ICgpOiBib29sZWFuID0+IHtcblxuICAgIHJldHVybiBmYWxzZTtcblxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICAgIHJldHVybiAodm9pZCAwKTtcbiAgfTtcblxuXG5cbiAgZXhwb3J0IGNvbnN0IGlzUnVubmluZ0luTGludXhHcmFwaGljc0NhcGFibGVFbnZpcm9ubWVudCA9ICgpOiBib29sZWFuID0+IHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9O1xuXG5cblxuICAvKipcbiAgICogQ2hlY2sgd2hldGhlciB0aGUgY3VycmVudCBwcm9jZXNzIGlzIHJ1bm5pbmcgaW4gQ0xJIG1vZGUuXG4gICAqL1xuICBleHBvcnQgY29uc3QgaXNSdW5uaW5nSW5DbGlNb2RlID0gKCk6IGJvb2xlYW4gPT4ge1xuXG4gICAgcmV0dXJuIGZhbHNlO1xuXG4vKiAqL1xuLyogKi9cbiAgICAgIHJldHVybiAodm9pZCAwKTtcbiAgfTtcblxuXG5cbiAgLyoqXG4gICAqIENoZWNrIHdoZXRoZXIgdGhlIGN1cnJlbnQgcHJvY2VzcyBpcyBydW5uaW5nIGluIG1vY2hhIHRlc3QuXG4gICAqL1xuICBleHBvcnQgY29uc3QgaXNSdW5uaW5nSW5Nb2NoYVRlc3QgPSAoKTogYm9vbGVhbiA9PiB7XG5cbiAgICByZXR1cm4gZmFsc2U7XG5cbi8qICovXG4vKiAqL1xuICAgICAgcmV0dXJuICh2b2lkIDApO1xuICB9O1xuXG5cblxuICBjb25zdCBpc1BvcnRJblVzZU9uSG9zdCA9IChwb3J0OiBudW1iZXIsIGhvc3Q6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4gPT4ge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfTtcblxuICAvKipcbiAgICogQ2hlY2tzIGlmIGEgZ2l2ZW4gcG9ydCBpcyBhbHJlYWR5IGluIHVzZSAoYm91bmQgYnkgYW5vdGhlciBwcm9jZXNzKS5cbiAgICpcbiAgICogQHBhcmFtIHBvcnQgLSBUaGUgcG9ydCBudW1iZXIgdG8gY2hlY2suXG4gICAqIEBwYXJhbSBob3N0IC0gVGhlIGhvc3RuYW1lIG9yIElQIGFkZHJlc3MgdG8gYmluZCB0byAoZGVmYXVsdDogJzEyNy4wLjAuMScpLlxuICAgKiBAcmV0dXJucyBQcm9taXNlPGJvb2xlYW4+IC0gUmVzb2x2ZXMgdG8gYHRydWVgIGlmIHRoZSBwb3J0IGlzIGluIHVzZSwgb3RoZXJ3aXNlIGBmYWxzZWAuXG4gICAqL1xuICBleHBvcnQgY29uc3QgaXNQb3J0SW5Vc2UgPSBhc3luYyAoXG4gICAgcG9ydDogbnVtYmVyLFxuICAgIG9wdGlvbnM/OiB7XG4gICAgICAvKipcbiAgICAgICAqICcxMjcuMC4wLjEnIGV0Yy4uXG4gICAgICAgKi9cbiAgICAgIGNoZWNrRm9yU3BlY2lmaWNPbmx5SG9zdD86IHN0cmluZztcbiAgICB9LFxuICApOiBQcm9taXNlPGJvb2xlYW4+ID0+IHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9O1xuXG59XG5cblxuXG5leHBvcnQgbmFtZXNwYWNlIFV0aWxzU3RyaW5nIHtcblxuICBleHBvcnQgY29uc3Qga2ViYWJDYXNlTm9TcGxpdE51bWJlcnMgPSAoaW5wdXQ6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgIGlucHV0XG5cbiAgICAgICAgLnJlcGxhY2UoL1xccysvZywgJy0nKVxuXG4gICAgICAgIC5yZXBsYWNlKC8oW2EtejAtOV0pKFtBLVpdKS9nLCAnJDEtJDInKVxuXG4gICAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgKTtcbiAgfTtcblxufVxuXG5cblxuLyoqXG4gKiBUYW9uIG1pZ3JhdGlvbiB1dGlsaXRpZXNcbiAqL1xuZXhwb3J0IG5hbWVzcGFjZSBVdGlsc01pZ3JhdGlvbnMge1xuICBleHBvcnQgY29uc3QgZ2V0VGltZXN0YW1wRnJvbUNsYXNzTmFtZSA9IChcbiAgICBjbGFzc05hbWU6IHN0cmluZyxcbiAgKTogbnVtYmVyIHwgdW5kZWZpbmVkID0+IHtcbiAgICBjb25zdCBbbWF5YmVUaW1lc3RhbXAxLCBtYXliZVRpbWVzdGFtcDJdID0gY2xhc3NOYW1lLnNwbGl0KCdfJykgfHwgW107XG5cbiAgICBjb25zdCB0aW1lc3RhbXAxID0gcGFyc2VJbnQobWF5YmVUaW1lc3RhbXAxKTtcbiAgICBjb25zdCB0aW1lc3RhbXAyID0gcGFyc2VJbnQobWF5YmVUaW1lc3RhbXAyKTtcbiAgICBjb25zdCB0aW1lc3RhbXAgPSAhXy5pc05hTih0aW1lc3RhbXAxKSA/IHRpbWVzdGFtcDEgOiB0aW1lc3RhbXAyO1xuICAgIHJldHVybiBpc1ZhbGlkVGltZXN0YW1wKHRpbWVzdGFtcCkgPyB0aW1lc3RhbXAgOiB2b2lkIDA7XG4gIH07XG5cbiAgZXhwb3J0IGNvbnN0IGdldEZvcm1hdHRlZFRpbWVzdGFtcEZyb21DbGFzc05hbWUgPSAoXG4gICAgY2xhc3NOYW1lOiBzdHJpbmcsXG4gICk6IHN0cmluZyB8IHVuZGVmaW5lZCA9PiB7XG4gICAgY29uc3QgdGltZXN0YW1wID0gZ2V0VGltZXN0YW1wRnJvbUNsYXNzTmFtZShjbGFzc05hbWUpO1xuICAgIGlmICghdGltZXN0YW1wKSB7XG4gICAgICByZXR1cm4gdm9pZCAwO1xuICAgIH1cbiAgICByZXR1cm4gZm9ybWF0VGltZXN0YW1wKHRpbWVzdGFtcCk7XG4gIH07XG5cbiAgZXhwb3J0IGNvbnN0IGZvcm1hdFRpbWVzdGFtcCA9ICh0aW1lc3RhbXA6IG51bWJlcik6IHN0cmluZyA9PiB7XG4gICAgY29uc3QgZGF0ZUZyb21UaW1lc3RhbXA6IERhdGUgPSBuZXcgRGF0ZSh0aW1lc3RhbXApO1xuICAgIHJldHVybiBgJHtkYXRlZm9ybWF0KGRhdGVGcm9tVGltZXN0YW1wLCAnZGQtbW0teXl5eSBISDpNTTpzcycpfWA7XG4gIH07XG5cbiAgZXhwb3J0IGNvbnN0IGlzVmFsaWRUaW1lc3RhbXAgPSAodmFsdWU6IGFueSk6IGJvb2xlYW4gPT4ge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdudW1iZXInKSB7XG4gICAgICByZXR1cm4gZmFsc2U7IC8vIE11c3QgYmUgYSBudW1iZXJcbiAgICB9XG5cbiAgICBjb25zdCBtaW5UaW1lc3RhbXAgPSAwOyAvLyBNaW5pbXVtIHBvc3NpYmxlIHRpbWVzdGFtcCAoVW5peCBlcG9jaClcbiAgICBjb25zdCBtYXhUaW1lc3RhbXAgPSA4NjQwMDAwMDAwMDAwMDAwOyAvLyBNYXggc2FmZSB0aW1lc3RhbXAgaW4gSlMgKHJlcHJlc2VudHMgeWVhciB+Mjc1NzYwKVxuXG4gICAgcmV0dXJuIHZhbHVlID49IG1pblRpbWVzdGFtcCAmJiB2YWx1ZSA8PSBtYXhUaW1lc3RhbXA7XG4gIH07XG59XG5cblxuXG5leHBvcnQgbmFtZXNwYWNlIFV0aWxzVGVybWluYWwge1xuXG4gIHR5cGUgU2VsZWN0QWN0aW9uQ2hvaWNlID0ge1xuICAgIFtjaG9pY2U6IHN0cmluZ106IHtcbiAgICAgIC8qKlxuICAgICAgICogVGl0bGUgb2YgdGhlIGNob2ljZVxuICAgICAgICovXG4gICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEFjdGlvbiB0byBleGVjdXRlXG4gICAgICAgKi9cbiAgICAgIGFjdGlvbj86ICgpID0+IGFueTtcbiAgICAgIC8qKlxuICAgICAgICogSWYgY2hvaWNlIGlzIHZpc2libGVcbiAgICAgICAqICBkZWZhdWx0OiB0cnVlXG4gICAgICAgKi9cbiAgICAgIHZpc2libGU/OiBib29sZWFuO1xuICAgIH07XG4gIH07XG5cblxuXG4gIGV4cG9ydCBjb25zdCB3YWl0ID0gKHNlY29uZDogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICByZXNvbHZlKHZvaWQgMCk7XG4gICAgICB9LCBzZWNvbmQgKiAxMDAwKTtcbiAgICB9KTtcbiAgfTtcblxuXG5cbiAgZXhwb3J0IGNvbnN0IGNsZWFyQ29uc29sZSA9ICgpOiB2b2lkID0+IHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH07XG5cblxuXG4gIGNvbnN0IHRyYW5zZm9ybUNob2ljZXMgPSAoXG4gICAgY2hvaWNlczogYW55LFxuICApOiB7IG5hbWU6IHN0cmluZzsgdmFsdWU6IHN0cmluZyB9W10gPT4ge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfTtcblxuXG5cbiAgZXhwb3J0IGNvbnN0IG11bHRpc2VsZWN0ID0gYXN5bmMgPFQgPSBzdHJpbmc+KG9wdGlvbnM6IHtcbiAgICBxdWVzdGlvbjogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIElmIHRydWUsIHRoZW4gb25seSBvbmUgY2hvaWNlIGNhbiBiZSBzZWxlY3RlZFxuICAgICAqIEBkZXByZWNhdGVkIHVzZSBzZWxlY3QgaW5zdGVhZFxuICAgICAqL1xuICAgIG9ubHlPbmVDaG9pY2U/OiBib29sZWFuO1xuICAgIGNob2ljZXM6XG4gICAgICB8IHsgbmFtZTogc3RyaW5nOyB2YWx1ZTogVCB9W11cbiAgICAgIHwgeyBbY2hvaWNlOiBzdHJpbmddOiB7IG5hbWU6IHN0cmluZyB9IH07XG4gICAgYXV0b2NvbXBsZXRlPzogYm9vbGVhbjtcbiAgICBkZWZhdWx0U2VsZWN0ZWQ/OiBzdHJpbmdbXTtcbiAgfSk6IFByb21pc2U8VFtdPiA9PiB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfTtcblxuXG5cbiAgLyoqXG4gICAqIFNpbWlsYXIgdG8gc2VsZWN0IGJ1dCBleGVjdXRlcyBhY3Rpb24gaWYgcHJvdmlkZWRcbiAgICogQHJldHVybnMgc2VsZWN0ZWQgYW5kIGV4ZWN1dGVkIHZhbHVlXG4gICAqL1xuICBleHBvcnQgY29uc3QgbXVsdGlzZWxlY3RBY3Rpb25BbmRFeGVjdXRlID0gYXN5bmMgPFxuICAgIENIT0lDRSBleHRlbmRzIFNlbGVjdEFjdGlvbkNob2ljZSA9IFNlbGVjdEFjdGlvbkNob2ljZSxcbiAgPihcbiAgICBjaG9pY2VzOiBDSE9JQ0UsXG4gICAgb3B0aW9ucz86IHtcbiAgICAgIHF1ZXN0aW9uPzogc3RyaW5nO1xuICAgICAgYXV0b2NvbXBsZXRlPzogYm9vbGVhbjtcbiAgICAgIGRlZmF1bHRTZWxlY3RlZD86IHN0cmluZztcbiAgICAgIGhpbnQ/OiBzdHJpbmc7XG4gICAgICBleGVjdXRlQWN0aW9uc09uRGVmYXVsdD86IGJvb2xlYW47XG4gICAgfSxcbiAgKSA9PiB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfTtcblxuXG5cbiAgLyoqXG4gICAqIFNpbWlsYXIgdG8gc2VsZWN0IGJ1dCBleGVjdXRlcyBhY3Rpb24gaWYgcHJvdmlkZWRcbiAgICogQHJldHVybnMgc2VsZWN0ZWQgYW5kIGV4ZWN1dGVkIHZhbHVlXG4gICAqL1xuICBleHBvcnQgY29uc3Qgc2VsZWN0QWN0aW9uQW5kRXhlY3V0ZSA9IGFzeW5jIDxcbiAgICBDSE9JQ0UgZXh0ZW5kcyBTZWxlY3RBY3Rpb25DaG9pY2UgPSBTZWxlY3RBY3Rpb25DaG9pY2UsXG4gID4oXG4gICAgY2hvaWNlczogQ0hPSUNFLFxuICAgIG9wdGlvbnM/OiB7XG4gICAgICBxdWVzdGlvbj86IHN0cmluZztcbiAgICAgIGF1dG9jb21wbGV0ZT86IGJvb2xlYW47XG4gICAgICBkZWZhdWx0U2VsZWN0ZWQ/OiBzdHJpbmc7XG4gICAgICBoaW50Pzogc3RyaW5nO1xuICAgICAgZXhlY3V0ZUFjdGlvbk9uRGVmYXVsdD86IGJvb2xlYW47XG4gICAgfSxcbiAgKSA9PiB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH07XG5cblxuXG4gIGV4cG9ydCBjb25zdCBzZWxlY3QgPSBhc3luYyA8VCA9IHN0cmluZz4ob3B0aW9uczoge1xuICAgIHF1ZXN0aW9uOiBzdHJpbmc7XG4gICAgY2hvaWNlczpcbiAgICAgIHwgeyBuYW1lOiBzdHJpbmc7IHZhbHVlOiBUIH1bXVxuICAgICAgfCB7IFtjaG9pY2U6IHN0cmluZ106IHsgbmFtZTogc3RyaW5nIH0gfTtcbiAgICBhdXRvY29tcGxldGU/OiBib29sZWFuO1xuICAgIGRlZmF1bHRTZWxlY3RlZD86IHN0cmluZztcbiAgICBoaW50Pzogc3RyaW5nO1xuICB9KTogUHJvbWlzZTxUPiA9PiB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9O1xuXG5cblxuXG4gIGV4cG9ydCBjb25zdCBwaXBlRW50ZXJUb1N0ZGluID0gKCk6IHZvaWQgPT4ge1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9O1xuXG5cblxuICBleHBvcnQgY29uc3QgaW5wdXQgPSBhc3luYyAoe1xuICAgIGRlZmF1bHRWYWx1ZSxcbiAgICBxdWVzdGlvbixcbiAgICByZXF1aXJlZCwgLy8gVE9ETyBzb21ldGhpbmcgaXMgd2VyaWQgd2l0aCByZXF1aXJlZFxuICB9OiB7XG4gICAgZGVmYXVsdFZhbHVlPzogc3RyaW5nO1xuICAgIHF1ZXN0aW9uOiBzdHJpbmc7XG4gICAgcmVxdWlyZWQ/OiBib29sZWFuO1xuICAgIHZhbGlkYXRlPzogKHZhbHVlOiBzdHJpbmcpID0+IGJvb2xlYW47XG4gIH0pOiBQcm9taXNlPHN0cmluZz4gPT4ge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfTtcblxuXG5cbiAgZXhwb3J0IGNvbnN0IGNvbmZpcm0gPSBhc3luYyAob3B0aW9ucz86IHtcbiAgICAvKipcbiAgICAgKiBkZWZhdWx0OiBBcmUgeW91IHN1cmU/XG4gICAgICovXG4gICAgbWVzc2FnZT86IHN0cmluZztcbiAgICBjYWxsYmFja1RydWU/OiAoKSA9PiBhbnk7XG4gICAgY2FsbGJhY2tGYWxzZT86ICgpID0+IGFueTtcbiAgICAvKipcbiAgICAgKiBkZWZhdWx0OiB0cnVlXG4gICAgICovXG4gICAgZGVmYXVsdFZhbHVlPzogYm9vbGVhbjtcbiAgICBlbmdpbmU/OiAnaW5xdWlyZXItdG9nZ2xlJyB8ICdwcm9tcHRzJyB8ICdlbnF1aXJlcicgfCAnQGlucXVpcmVyL3Byb21wdHMnO1xuICB9KSA9PiB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfTtcblxuXG5cbiAgZXhwb3J0IGNvbnN0IHByZXNzQW55S2V5VG9Db250aW51ZUFzeW5jID0gKG9wdGlvbnM/OiB7XG4gICAgbWVzc2FnZT86IHN0cmluZztcbiAgfSk6IFByb21pc2U8dm9pZD4gPT4ge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfTtcblxuXG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIHVzZSBVdGlsc1Rlcm1pbmFsLnByZXNzQW55S2V5VG9Db250aW51ZUFzeW5jKClcbiAgICovXG4gIGV4cG9ydCBjb25zdCBwcmVzc0FueUtleSA9IChvcHRpb25zPzogeyBtZXNzYWdlPzogc3RyaW5nIH0pID0+IHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH07XG5cblxuXG4gIGV4cG9ydCBjb25zdCBwcmV2aWV3TG9uZ0xpc3QgPSBhc3luYyAoXG4gICAgbGlzdDogc3RyaW5nIHwgc3RyaW5nW10sXG4gICAgbGlzdE5hbWUgPSAnTGlzdCcsXG4gICk6IFByb21pc2U8dm9pZD4gPT4ge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9O1xuXG5cblxuICAvKipcbiAgICogRGlzcGxheXMgYSBsb25nIGxpc3QgaW4gdGhlIGNvbnNvbGUgdXNpbmcgYSBwYWdlciBsaWtlIGBsZXNzYC5cbiAgICogUmV0dXJucyBhIFByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSB1c2VyIGV4aXRzIHRoZSBwYWdlci5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGxpc3QgLSBUaGUgbG9uZyBzdHJpbmcgY29udGVudCB0byBkaXNwbGF5LlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gQSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgcGFnZXIgZXhpdHMuXG4gICAqL1xuICBleHBvcnQgY29uc3QgcHJldmlld0xvbmdMaXN0R2l0TG9nTGlrZSA9IChcbiAgICBsaXN0OiBzdHJpbmcgfCBzdHJpbmdbXSxcbiAgKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9O1xuXG59XG5cblxuIDsoe30pOyAvLyBALS1lbmQtb2YtZmlsZS1mb3ItbW9kdWxlPXRucC1jb3JlIGxpYi91dGlscy50cyJdfQ==
|
1889
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90bXAtbGlicy1mb3ItZGlzdC90bnAtY29yZS9wcm9qZWN0cy90bnAtY29yZS9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFLOUIsT0FBTyxLQUF3QixNQUFNLE9BQU8sQ0FBQztBQUU3QyxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBZ0MsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHNUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUszQyxNQUFNLHVCQUF1QixHQUFHLEtBQUssQ0FBQztBQUd0QyxNQUFNLEtBQVcsS0FBSyxDQTZzQnJCO0FBN3NCRCxXQUFpQixLQUFLO0lBRVAsZUFBUyxHQUFHLENBQ3ZCLEtBQVksRUFDWixjQUF3QixFQUN4QixFQUFFO1FBQ0YsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ2QsT0FBTyxLQUFLO2FBQ1QsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNoQixNQUFNLENBQUMsVUFBVSxJQUFJO1lBQ3BCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO2dCQUN0RSxDQUFDLENBQUMsS0FBSztnQkFDUCxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQ2xFLENBQUMsQ0FBUSxDQUFDO0lBQ2QsQ0FBQyxDQUFDO0lBSUY7OztP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S0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDbEIsQ0FBQyxDQUFDO0lBYUY7Ozs7T0FJRztJQUNVLCtDQUFrQyxHQUFHLEtBQUssRUFDckQsT0FBZSxFQUNmLE9BUUMsRUFDYyxFQUFFO1FBQ3JCLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDRCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNsQixDQUFDLENBQUM7SUFJVywyQkFBYyxHQUFHLEdBQUcsRUFBRTtRQUNyQyxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDRCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNsQixDQUFDLENBQUM7SUFJRjs7O09BR0c7SUFDVSxxQ0FBd0IsR0FBRyxDQUN0QyxPQUFlLEVBQ2YsT0FBeUQsRUFDekQsRUFBRTtRQUNOLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxL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S0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNELE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2xCLENBQUMsQ0FBQztJQUlGOzs7T0FHRztJQUNVLHlDQUEyQixHQUFHLEtBQUssRUFHOUMsT0FBZSxFQUNmLE9BTUMsRUFDRCxFQUFFO1FBQ04sS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFL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O1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDRCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNsQixDQUFDLENBQUM7SUFJVyx3Q0FBMEIsR0FBRyxDQUFDLE9BRTFDLEVBQWlCLEVBQUU7UUFDdEIsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDbEIsQ0FBQyxDQUFDO0lBSUY7O09BRUc7SUFDVSx5QkFBVyxHQUFHLENBQUMsT0FBOEIsRUFBRSxFQUFFO1FBQ2hFLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNELE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2xCLENBQUMsQ0FBQztJQUlXLDZCQUFlLEdBQUcsS0FBSyxFQUNsQyxJQUF1QixFQUN2QixRQUFRLEdBQUcsTUFBTSxFQUNGLEVBQUU7UUFDckIsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDRCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNsQixDQUFDLENBQUM7SUFJRjs7Ozs7O09BTUc7SUFDVSx1Q0FBeUIsR0FBRyxDQUN2QyxJQUF1QixFQUNSLEVBQUU7UUFDckIsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDbEIsQ0FBQyxDQUFDO0FBRUosQ0FBQyxFQTltQmdCLGFBQWEsS0FBYixhQUFhLFFBOG1CN0I7QUFHQSxDQUFDO0FBQUEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLGtEQUFrRCIsInNvdXJjZXNDb250ZW50IjpbIlxuXG5cbmltcG9ydCB7IEJsb2IgfSBmcm9tICdidWZmZXInO1xuaW1wb3J0IHsgQ2hpbGRQcm9jZXNzIH0gZnJvbSAnY2hpbGRfcHJvY2Vzcyc7XG5pbXBvcnQgKiBhcyBuZXQgZnJvbSAnbmV0JztcbmltcG9ydCB7IHByb21pc2lmeSB9IGZyb20gJ3V0aWwnO1xuXG5pbXBvcnQgYXhpb3MsIHsgQXhpb3NSZXNwb25zZSB9IGZyb20gJ2F4aW9zJztcblxuaW1wb3J0IHsgcGF0aCwgXywgY3Jvc3NQbGF0Zm9ybVBhdGgsIG9zLCBjaGFsayB9IGZyb20gJy4vY29yZS1pbXBvcnRzJztcbmltcG9ydCB7IGRhdGVmb3JtYXQgfSBmcm9tICcuL2NvcmUtaW1wb3J0cyc7XG5pbXBvcnQgeyBzcGF3biwgY2hpbGRfcHJvY2VzcyB9IGZyb20gJy4vY29yZS1pbXBvcnRzJztcbmltcG9ydCB7IGZzZSB9IGZyb20gJy4vY29yZS1pbXBvcnRzJztcbmltcG9ydCB7IENvcmVNb2RlbHMgfSBmcm9tICcuL2NvcmUtbW9kZWxzJztcblxuaW1wb3J0IHsgSGVscGVycyB9IGZyb20gJy4vaW5kZXgnO1xuXG5cbmNvbnN0IEJMT0JfU1VQUE9SVEVEX0lOX1NRTEpTID0gZmFsc2U7XG5cblxuZXhwb3J0IG5hbWVzcGFjZSBVdGlscyB7XG5cbiAgZXhwb3J0IGNvbnN0IHVuaXFBcnJheSA9IDxUID0gYW55PihcbiAgICBhcnJheTogYW55W10sXG4gICAgdW5pcXVlUHJvcGVydHk/OiBrZXlvZiBULFxuICApID0+IHtcbiAgICB2YXIgc2VlbiA9IHt9O1xuICAgIHJldHVybiBhcnJheVxuICAgICAgLmZpbHRlcihmID0+ICEhZilcbiAgICAgIC5maWx0ZXIoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgcmV0dXJuIHNlZW4uaGFzT3duUHJvcGVydHkodW5pcXVlUHJvcGVydHkgPyBpdGVtW3VuaXF1ZVByb3BlcnR5XSA6IGl0ZW0pXG4gICAgICAgICAgPyBmYWxzZVxuICAgICAgICAgIDogKHNlZW5bdW5pcXVlUHJvcGVydHkgPyBpdGVtW3VuaXF1ZVByb3BlcnR5XSA6IGl0ZW1dID0gdHJ1ZSk7XG4gICAgICB9KSBhcyBUW107XG4gIH07XG5cblxuXG4gIC8qKlxuICAgKiBAcGFyYW0gYW55T2JqZWN0XG4gICAqIEByZXR1cm5zIG9iamVjdCB3aXRoIHNvcnRlZCBrZXlzXG4gICAqL1xuICBleHBvcnQgY29uc3Qgc29ydEtleXMgPSAoYW55T2JqZWN0OiBhbnkpOiBhbnkgPT4ge1xuICAgIGlmIChfLmlzQXJyYXkoYW55T2JqZWN0KSkge1xuICAgICAgcmV0dXJuIGFueU9iamVjdC5tYXAoc29ydEtleXMpO1xuICAgIH1cbiAgICBpZiAoXy5pc09iamVjdChhbnlPYmplY3QpKSB7XG4gICAgICByZXR1cm4gXy5mcm9tUGFpcnMoXG4gICAgICAgIF8ua2V5cyhhbnlPYmplY3QpXG4gICAgICAgICAgLnNvcnQoKVxuICAgICAgICAgIC5tYXAoa2V5ID0+IFtrZXksIHNvcnRLZXlzKGFueU9iamVjdFtrZXldKV0pLFxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIGFueU9iamVjdDtcbiAgfTtcblxuXG5cbiAgLyoqXG4gICAqIEV4YW1wbGU6XG4gICAqIG5ldyBSZWdFeHAoZXNjYXBlU3RyaW5nRm9yUmVnRXgoJ2EuYi5jJyksJ2cnKSA9PiAvYVxcLmJcXC5jL2dcbiAgICovXG4gIGV4cG9ydCBjb25zdCBlc2NhcGVTdHJpbmdGb3JSZWdFeCA9IChzdHJpbmdGb3JSZWdFeHA6IHN0cmluZykgPT4ge1xuICAgIHJldHVybiBzdHJpbmdGb3JSZWdFeHAucmVwbGFjZSgvWy1cXC9cXFxcXiQqKz8uKCl8W1xcXXt9XS9nLCAnXFxcXCQmJyk7XG4gIH07XG5cblxuXG4gIGV4cG9ydCBmdW5jdGlvbiByZW1vdmVDaGFsa1NwZWNpYWxDaGFycyhzdHI6IHN0cmluZyk6IHN0cmluZyB7XG5cbiAgICBjb25zdCBhbnNpUmVnZXggPSAvXFx1MDAxYlxcW1swLTk7XSptL2c7XG5cblxuICAgIHJldHVybiBzdHIucmVwbGFjZShhbnNpUmVnZXgsICcnKTtcbiAgfVxuXG5cblxuICBleHBvcnQgY29uc3QgZnVsbERhdGVUaW1lID0gKCkgPT4ge1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9O1xuXG5cblxuICBleHBvcnQgY29uc3QgZnVsbERhdGUgPSAoKSA9PiB7XG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH07XG5cblxuXG4gIGNvbnN0IHRha2VuUG9ydHMgPSBbXTtcbiAgZXhwb3J0IGNvbnN0IGdldEZyZWVQb3J0ID0gYXN5bmMgKG9wdGlvbnM/OiB7XG4gICAgc3RhcnRGcm9tPzogbnVtYmVyO1xuICB9KTogUHJvbWlzZTxudW1iZXI+ID0+IHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH07XG5cblxuXG4gIC8qKlxuICAgKiBUcmF2ZXJzZXMgdGhlIGNhY2hlIHRvIHNlYXJjaCBmb3IgYWxsIHRoZSBjYWNoZWRcbiAgICogZmlsZXMgb2YgdGhlIHNwZWNpZmllZCBtb2R1bGUgbmFtZVxuICAgKi9cbiAgY29uc3Qgc2VhcmNoQ2FjaGUgPSAobW9kdWxlTmFtZSwgY2FsbGJhY2spID0+IHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfTtcblxuICAvKipcbiAgICogUmVtb3ZlcyBhIG1vZHVsZSBmcm9tIHRoZSBjYWNoZVxuICAgKi9cbiAgY29uc3QgcHVyZ2VDYWNoZSA9IG1vZHVsZU5hbWUgPT4ge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9O1xuXG4gIGV4cG9ydCBjb25zdCByZXF1aXJlVW5jYWNoZWQgPSAobW9kdWxlOiBzdHJpbmcpID0+IHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9O1xuXG5cblxuXG4gIC8qKlxuICAgKiBzaW1pbGFyIHRvIGNhbWVsQ2FzZSBidXQgcmVtb3ZlXG4gICAqIGFsbCBub24gd29yZCAvIHJlcGVhdGVkIGNoYXJhY3RlcnNcbiAgICovXG4gIGV4cG9ydCBjb25zdCBjYW1lbGl6ZSA9IChzdHI6IHN0cmluZyA9ICcnKSA9PiB7XG4gICAgc3RyID0gc3RyLnJlcGxhY2UoL1xcVy9nLCAnJykudG9Mb3dlckNhc2UoKTtcbiAgICByZXR1cm4gc3RyXG4gICAgICAucmVwbGFjZSgvKD86Xlxcd3xbQS1aXXxcXGJcXHcpL2csIGZ1bmN0aW9uICh3b3JkLCBpbmRleCkge1xuICAgICAgICByZXR1cm4gaW5kZXggPT0gMCA/IHdvcmQudG9Mb3dlckNhc2UoKSA6IHdvcmQudG9VcHBlckNhc2UoKTtcbiAgICAgIH0pXG4gICAgICAucmVwbGFjZSgvXFxzKy9nLCAnJyk7XG4gIH07XG5cblxuXG4gIGludGVyZmFjZSBBdHRySnNvbmNQcm9wIHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgdmFsdWU/OiBhbnk7XG4gIH1cbiAgZXhwb3J0IG5hbWVzcGFjZSBqc29uIHtcbiAgICBleHBvcnQgY29uc3QgZ2V0QXRycmlidXRpZXMgPSAoXG4gICAgICBqc29uRGVlcFBhdGg6IHN0cmluZywgLy8gbG9kYXNoIHBhdGggdG8gcHJvcGVydHkgaW4ganNvbiBleC4gZGVlcC5wYXRoLnRvLnByb3BcbiAgICAgIGZpbGVDb250ZW50OiBzdHJpbmcsIC8vIGpzb25jIG9yIGpzb241IC0ganNvbiB3aXRoIGNvbW1lbnRzXG4gICAgKTogQXR0ckpzb25jUHJvcFtdID0+IHtcbiAgICAgIGNvbnN0IGxpbmVzID0gZmlsZUNvbnRlbnQuc3BsaXQoJ1xcbicpO1xuXG4gICAgICBjb25zdCBwYXRoUGFydHMgPSBqc29uRGVlcFBhdGguc3BsaXQoJy4nKS5yZWR1Y2UoKGEsIGIpID0+IHtcbiAgICAgICAgaWYgKGEubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgcmV0dXJuIFtiXTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBsYXN0OiBzdHJpbmcgPSBhW2EubGVuZ3RoIC0gMV07XG4gICAgICAgIGlmIChcbiAgICAgICAgICAobGFzdC5zdGFydHNXaXRoKGBbJ2ApICYmIGIuZW5kc1dpdGgoYCddYCkpIHx8XG4gICAgICAgICAgKGxhc3Quc3RhcnRzV2l0aChgW1wiYCkgJiYgYi5lbmRzV2l0aChgXCJdYCkpXG4gICAgICAgICkge1xuICAgICAgICAgIGFbYS5sZW5ndGggLSAxXSA9IFtsYXN0LCBiXS5qb2luKCcuJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYS5wdXNoKGIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhO1xuICAgICAgfSwgW10pO1xuXG5cbiAgICAgIGNvbnN0IGtleU5hbWUgPSBwYXRoUGFydHMucG9wKCkhLnJlcGxhY2UoL15cXFtcIiguKylcIlxcXSQvLCAnJDEnKTtcbiAgICAgIGxldCBjdXJyZW50UGF0aCA9ICcnO1xuICAgICAgbGV0IGF0dHJpYnV0ZXM6IEF0dHJKc29uY1Byb3BbXSA9IFtdO1xuICAgICAgbGV0IGNvbGxlY3RlZENvbW1lbnRzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgICBmb3IgKGNvbnN0IGxpbmUgb2YgbGluZXMpIHtcbiAgICAgICAgY29uc3QgdHJpbW1lZExpbmUgPSBsaW5lLnRyaW0oKTtcblxuICAgICAgICBpZiAodHJpbW1lZExpbmUuc3RhcnRzV2l0aCgnLy8nKSkge1xuXG4gICAgICAgICAgY29sbGVjdGVkQ29tbWVudHMucHVzaCh0cmltbWVkTGluZSk7XG5cblxuICAgICAgICB9IGVsc2UgaWYgKHRyaW1tZWRMaW5lLnN0YXJ0c1dpdGgoJ1wiJykgfHwgdHJpbW1lZExpbmUuc3RhcnRzV2l0aChcIidcIikpIHtcblxuICAgICAgICAgIGNvbnN0IG1hdGNoID0gdHJpbW1lZExpbmUubWF0Y2goL1tcIiddKFteXCInXSspW1wiJ11cXHMqOi8pO1xuXG4gICAgICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgICAgICBjb25zdCBrZXkgPSBtYXRjaFsxXTtcbiAgICAgICAgICAgIGN1cnJlbnRQYXRoID0gY3VycmVudFBhdGhcbiAgICAgICAgICAgICAgPyBgJHtjdXJyZW50UGF0aH0uJHtrZXkuaW5jbHVkZXMoJy4nKSA/IGBbJyR7a2V5fSddYCA6IGtleX1gXG4gICAgICAgICAgICAgIDoga2V5O1xuXG5cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgKGN1cnJlbnRQYXRoLmVuZHNXaXRoKGtleU5hbWUpICYmXG4gICAgICAgICAgICAgICAgIWN1cnJlbnRQYXRoLmVuZHNXaXRoKCcvJyArIGtleU5hbWUpKSB8fFxuICAgICAgICAgICAgICBjdXJyZW50UGF0aC5lbmRzV2l0aChgWycke2tleU5hbWV9J11gKVxuICAgICAgICAgICAgKSB7XG5cblxuXG5cblxuICAgICAgICAgICAgICBhdHRyaWJ1dGVzID0gZXh0cmFjdEF0dHJpYnV0ZXNGcm9tQ29tbWVudHMoY29sbGVjdGVkQ29tbWVudHMpO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuXG4gICAgICAgICAgICBjb2xsZWN0ZWRDb21tZW50cyA9IFtdO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gYXR0cmlidXRlcztcbiAgICB9O1xuXG4gICAgY29uc3QgZXh0cmFjdEF0dHJpYnV0ZXNGcm9tQ29tbWVudHMgPSAoXG4gICAgICBjb21tZW50czogc3RyaW5nW10sXG4gICAgKTogQXR0ckpzb25jUHJvcFtdID0+IHtcbiAgICAgIGNvbnN0IGF0dHJpYnV0ZXM6IEF0dHJKc29uY1Byb3BbXSA9IFtdO1xuICAgICAgY29uc3QgYXR0clJlZ2V4ID0gL0AoXFx3KykoPzpcXHMqPVxccyooW15cXHNAXSspKT8vZztcblxuICAgICAgZm9yIChjb25zdCBjb21tZW50IG9mIGNvbW1lbnRzKSB7XG4gICAgICAgIGxldCBtYXRjaDtcbiAgICAgICAgd2hpbGUgKChtYXRjaCA9IGF0dHJSZWdleC5leGVjKGNvbW1lbnQpKSAhPT0gbnVsbCkge1xuICAgICAgICAgIGNvbnN0IFssIG5hbWUsIHZhbHVlXSA9IG1hdGNoO1xuXG4gICAgICAgICAgY29uc3QgZXhpc3RpbmdBdHRyaWJ1dGUgPSBhdHRyaWJ1dGVzLmZpbmQoXG4gICAgICAgICAgICBhdHRyID0+IGF0dHIubmFtZSA9PT0gYEAke25hbWV9YCxcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgaWYgKGV4aXN0aW5nQXR0cmlidXRlKSB7XG4gICAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZXhpc3RpbmdBdHRyaWJ1dGUudmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgZXhpc3RpbmdBdHRyaWJ1dGUudmFsdWUucHVzaCh2YWx1ZSk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZXhpc3RpbmdBdHRyaWJ1dGUudmFsdWUgPSBbZXhpc3RpbmdBdHRyaWJ1dGUudmFsdWUsIHZhbHVlXTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhdHRyaWJ1dGVzLnB1c2goe1xuICAgICAgICAgICAgICBuYW1lOiBgQCR7bmFtZX1gLFxuICAgICAgICAgICAgICB2YWx1ZTogdmFsdWUgPyB2YWx1ZSA6IHRydWUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuXG4gICAgICBhdHRyaWJ1dGVzLmZvckVhY2goYXR0ciA9PiB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGF0dHIudmFsdWUpICYmIGF0dHIudmFsdWUubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgYXR0ci52YWx1ZSA9IGF0dHIudmFsdWVbMF07XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gYXR0cmlidXRlcztcbiAgICB9O1xuICB9XG5cblxuXG5cblxuICBleHBvcnQgZW51bSBEYkJpbmFyeUZvcm1hdEVudW0ge1xuICAgIEJsb2IgPSAnQmxvYicsXG4gICAgRmlsZSA9ICdGaWxlJyxcbiAgICBzdHJpbmcgPSAnc3RyaW5nJyxcbi8qICovXG4vKiAqL1xuICBcbiAgfVxuXG4gIGV4cG9ydCB0eXBlIERiQmluYXJ5Rm9ybWF0Rm9yQnJvd3NlciA9IEJsb2IgfCBGaWxlIHwgc3RyaW5nO1xuLyogKi9cbi8qICovXG4gIFxuXG4gIC8qKlxuICAgKiBCaW5hcnkgZm9ybWF0IHRoYXQgY2FuIGJlIHN0b3JlZCBpbiBkYXRhYmFzZVxuICAgKlxuICAgKiBmb3Igbm9kZWpzID0+IEJ1ZmZlclxuICAgKiBmb3Igc3FsLmpzID0+IHN0cmluZyAoc2hvdWxiIGJlIGJsb2IgLSBidXQgbm90IHN1cHBvcnRlZClcbiAgICpcbiAgICovXG4gIGV4cG9ydCB0eXBlIERiQmluYXJ5Rm9ybWF0ID1cbiAgICB8IERiQmluYXJ5Rm9ybWF0Rm9yQnJvd3NlclxuLyogKi9cbi8qICovXG4gIFxuXG4gIGV4cG9ydCBuYW1lc3BhY2UgYmluYXJ5IHtcblxuXG4gICAgLyoqXG4gICAgICogVGhpcyBpcyBmb3IgQlJPV1NFUiBPTkxZXG4gICAgICpcbiAgICAgKiBAcGFyYW0gYnVmZmVyXG4gICAgICogQHBhcmFtIGNvbnRlbnRUeXBlXG4gICAgICogQHJldHVybnNcbiAgICAgKi9cbiAgICBleHBvcnQgYXN5bmMgZnVuY3Rpb24gYXJyYXlCdWZmZXJUb0Jsb2IoXG4gICAgICBidWZmZXI6IEFycmF5QnVmZmVyLFxuICAgICAgY29udGVudFR5cGU6IENvcmVNb2RlbHMuQ29udGVudFR5cGUsXG4gICAgKTogUHJvbWlzZTxCbG9iPiB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICByZXR1cm4gbmV3IEJsb2IoW2J1ZmZlcl0sIHsgdHlwZTogY29udGVudFR5cGUgfSk7XG4gICAgfVxuXG5cblxuXG4gICAgLyoqXG4gICAgICogVGhpcyBpcyBmb3IgQlJPV1NFUiBPTkxZXG4gICAgICogQHBhcmFtIGJsb2JcbiAgICAgKiBAcmV0dXJuc1xuICAgICAqL1xuICAgIGV4cG9ydCBhc3luYyBmdW5jdGlvbiBibG9iVG9BcnJheUJ1ZmZlcihibG9iOiBCbG9iKTogUHJvbWlzZTxBcnJheUJ1ZmZlcj4ge1xuICAgICAgcmV0dXJuIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICAgICAgcmVhZGVyLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWRlbmQnLCAoKSA9PiB7XG4gICAgICAgICAgcmVzb2x2ZShyZWFkZXIucmVzdWx0IGFzIGFueSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZWFkZXIuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCByZWplY3QpOyAvLyBAdHMtaWdub3JlXG4gICAgICAgIHJlYWRlci5yZWFkQXNBcnJheUJ1ZmZlcihibG9iKTtcbiAgICAgIH0pO1xuICAgIH1cblxuXG5cbiAgICAvKipcbiAgICAgKiBpdCBpcyByZXZlcnMgdG8gYmFzZTY0dG9CbG9iXG4gICAgICogQHBhcmFtIGJsb2JcbiAgICAgKiBAcmV0dXJuc1xuICAgICAqL1xuICAgIGV4cG9ydCBmdW5jdGlvbiBibG9iVG9CYXNlNjQoYmxvYjogQmxvYik6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICByZXR1cm4gbmV3IFByb21pc2U8YW55PigocmVzb2x2ZSwgXykgPT4ge1xuICAgICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgICAgICByZWFkZXIub25sb2FkZW5kID0gKCkgPT4gcmVzb2x2ZShyZWFkZXIucmVzdWx0KTsgLy8gQHRzLWlnbm9yZVxuICAgICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChibG9iKTtcbiAgICAgIH0pO1xuICAgIH1cblxuXG5cbiAgICAvKipcbiAgICAgKiBpdCBpcyByZXZlcnMgdG8gYmxvYlRvQmFzZTY0KClcbiAgICAgKiBAcGFyYW0gYmFzZTY0RGF0YVxuICAgICAqIEByZXR1cm5zXG4gICAgICovXG4gICAgZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGJhc2U2NHRvQmxvYihcbiAgICAgIGJhc2U2NERhdGE6IHN0cmluZyxcbiAgICAgIGNvbnRlbnRUeXBlT3ZlcnJpZGU/OiBDb3JlTW9kZWxzLkNvbnRlbnRUeXBlLFxuICAgICk6IFByb21pc2U8QmxvYj4ge1xuICAgICAgbGV0IGNvbnRlbnRfdHlwZTogQ29yZU1vZGVscy5Db250ZW50VHlwZSA9IHZvaWQgMCBhcyBhbnk7XG4gICAgICBsZXQgZmlsZV9iYXNlNjQ6IHN0cmluZyA9IHZvaWQgMCBhcyBhbnk7XG4gICAgICBpZiAoIWNvbnRlbnRUeXBlT3ZlcnJpZGUpIHtcbiAgICAgICAgY29uc3QgbSA9IC9eZGF0YTooLis/KTtiYXNlNjQsKC4rKSQvLmV4ZWMoYmFzZTY0RGF0YSk7XG4gICAgICAgIGlmICghbSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBbdGFvbi1mcmFtZXdvcmtdW2Jhc2U2NHRvQmxvYl0gTm90IGEgYmFzZTY0IGJsb2IgWyR7YmFzZTY0RGF0YX1dYCxcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIFtfXywgY29udGVudHR5cGUsIGZpbGViYXNlNjRdID0gbTtcbiAgICAgICAgY29udGVudF90eXBlID0gY29udGVudHR5cGUgYXMgYW55O1xuICAgICAgICBmaWxlX2Jhc2U2NCA9IGZpbGViYXNlNjQ7XG4gICAgICB9XG4gICAgICBjb250ZW50X3R5cGUgPSAoXG4gICAgICAgIGNvbnRlbnRUeXBlT3ZlcnJpZGUgPyBjb250ZW50VHlwZU92ZXJyaWRlIDogY29udGVudF90eXBlIHx8ICcnXG4gICAgICApIGFzIGFueTtcbiAgICAgIGJhc2U2NERhdGEgPSBjb250ZW50VHlwZU92ZXJyaWRlID8gYmFzZTY0RGF0YSA6IGZpbGVfYmFzZTY0O1xuICAgICAgY29uc3Qgc2xpY2VTaXplID0gMTAyNDtcbiAgICAgIGNvbnN0IGJ5dGVDaGFyYWN0ZXJzID0gYXRvYihiYXNlNjREYXRhKTtcbiAgICAgIGNvbnN0IGJ5dGVzTGVuZ3RoID0gYnl0ZUNoYXJhY3RlcnMubGVuZ3RoO1xuICAgICAgY29uc3Qgc2xpY2VzQ291bnQgPSBNYXRoLmNlaWwoYnl0ZXNMZW5ndGggLyBzbGljZVNpemUpO1xuICAgICAgY29uc3QgYnl0ZUFycmF5cyA9IG5ldyBBcnJheShzbGljZXNDb3VudCk7XG5cbiAgICAgIGZvciAobGV0IHNsaWNlSW5kZXggPSAwOyBzbGljZUluZGV4IDwgc2xpY2VzQ291bnQ7ICsrc2xpY2VJbmRleCkge1xuICAgICAgICBjb25zdCBiZWdpbiA9IHNsaWNlSW5kZXggKiBzbGljZVNpemU7XG4gICAgICAgIGNvbnN0IGVuZCA9IE1hdGgubWluKGJlZ2luICsgc2xpY2VTaXplLCBieXRlc0xlbmd0aCk7XG5cbiAgICAgICAgY29uc3QgYnl0ZXMgPSBuZXcgQXJyYXkoZW5kIC0gYmVnaW4pO1xuXG4gICAgICAgIGZvciAobGV0IG9mZnNldCA9IGJlZ2luLCBpID0gMDsgb2Zmc2V0IDwgZW5kOyArK2ksICsrb2Zmc2V0KSB7XG4gICAgICAgICAgYnl0ZXNbaV0gPSBieXRlQ2hhcmFjdGVyc1tvZmZzZXRdLmNoYXJDb2RlQXQoMCk7XG4gICAgICAgIH1cbiAgICAgICAgYnl0ZUFycmF5c1tzbGljZUluZGV4XSA9IG5ldyBVaW50OEFycmF5KGJ5dGVzKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBuZXcgQmxvYihieXRlQXJyYXlzLCB7IHR5cGU6IGNvbnRlbnRfdHlwZSB9KTtcbiAgICB9XG5cblxuXG5cbiAgICBleHBvcnQgYXN5bmMgZnVuY3Rpb24gYmFzZTY0dG9EYkJpbmFyeUZvcm1hdChcbiAgICAgIHRleHQ6IHN0cmluZyxcbiAgICApOiBQcm9taXNlPERiQmluYXJ5Rm9ybWF0PiB7XG4gICAgICBsZXQgcmVzdWx0OiBEYkJpbmFyeUZvcm1hdDtcblxuICAgICAgcmVzdWx0ID0gYXdhaXQgKGFzeW5jICgpID0+IHtcbiAgICAgICAgaWYgKEJMT0JfU1VQUE9SVEVEX0lOX1NRTEpTKSB7XG4gICAgICAgICAgY29uc3QgYmxvYiA9IGF3YWl0IGJhc2U2NHRvQmxvYih0ZXh0KTtcbiAgICAgICAgICByZXR1cm4gYmxvYjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGV4dCBhcyBhbnk7XG4gICAgICB9KSgpO1xuXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuXG5cbiAgICBleHBvcnQgYXN5bmMgZnVuY3Rpb24gZGJCaW5hcnlGb3JtYXRUb0Jhc2U2NChcbiAgICAgIGJpbmFyeUZvcm1hdDogRGJCaW5hcnlGb3JtYXQsXG4gICAgKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgIGxldCByZXN1bHQ6IHN0cmluZztcblxuICAgICAgcmVzdWx0ID0gYXdhaXQgKGFzeW5jICgpID0+IHtcbiAgICAgICAgaWYgKEJMT0JfU1VQUE9SVEVEX0lOX1NRTEpTKSB7XG4gICAgICAgICAgY29uc3QgdGV4dCA9IGF3YWl0IGJsb2JUb0Jhc2U2NChiaW5hcnlGb3JtYXQgYXMgYW55KTtcbiAgICAgICAgICByZXR1cm4gdGV4dDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYmluYXJ5Rm9ybWF0IGFzIGFueTtcbiAgICAgIH0pKCk7XG5cblxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cblxuXG5cbiAgICBleHBvcnQgYXN5bmMgZnVuY3Rpb24gdGV4dFRvRGJCaW5hcnlGb3JtYXQoXG4gICAgICB0ZXh0OiBzdHJpbmcsXG4gICAgKTogUHJvbWlzZTxEYkJpbmFyeUZvcm1hdD4ge1xuICAgICAgbGV0IHJlc3VsdDogRGJCaW5hcnlGb3JtYXQ7XG5cbiAgICAgIHJlc3VsdCA9IGF3YWl0IChhc3luYyAoKSA9PiB7XG4gICAgICAgIGlmIChCTE9CX1NVUFBPUlRFRF9JTl9TUUxKUykge1xuICAgICAgICAgIGNvbnN0IGJsb2IgPSBhd2FpdCB0ZXh0VG9CbG9iKHRleHQpO1xuICAgICAgICAgIHJldHVybiBibG9iO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0ZXh0IGFzIGFueTtcbiAgICAgIH0pKCk7XG5cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG5cblxuICAgIGV4cG9ydCBhc3luYyBmdW5jdGlvbiBkYkJpbmFyeUZvcm1hdFRvVGV4dChcbiAgICAgIGJpbmFyeUZvcm1hdDogRGJCaW5hcnlGb3JtYXQsXG4gICAgKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgIGxldCByZXN1bHQ6IHN0cmluZztcblxuICAgICAgcmVzdWx0ID0gYXdhaXQgKGFzeW5jICgpID0+IHtcbiAgICAgICAgaWYgKEJMT0JfU1VQUE9SVEVEX0lOX1NRTEpTKSB7XG4gICAgICAgICAgY29uc3QgdGV4dCA9IGF3YWl0IGJsb2JUb1RleHQoYmluYXJ5Rm9ybWF0IGFzIGFueSk7XG4gICAgICAgICAgcmV0dXJuIHRleHQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGJpbmFyeUZvcm1hdCBhcyBhbnk7XG4gICAgICB9KSgpO1xuXG5cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG5cblxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcblxuXG5cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG5cblxuXG4gICAgZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZpbGVUb0Jsb2IoZmlsZTogRmlsZSkge1xuICAgICAgcmV0dXJuIG5ldyBCbG9iKFtuZXcgVWludDhBcnJheShhd2FpdCBmaWxlLmFycmF5QnVmZmVyKCkpXSwge1xuICAgICAgICB0eXBlOiBmaWxlLnR5cGUsXG4gICAgICB9KTtcbiAgICB9XG5cblxuXG4gICAgZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGJsb2JUb0ZpbGUoXG4gICAgICBibG9iOiBCbG9iLFxuICAgICAgbmFtZUZvckZpbGU6IHN0cmluZyA9ICdteS1maWxlLW5hbWUnLFxuICAgICk6IFByb21pc2U8RmlsZT4ge1xuICAgICAgaWYgKCFuYW1lRm9yRmlsZSkge1xuICAgICAgICBuYW1lRm9yRmlsZSA9ICdub25hbWVmaWxlJyArIG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgICAgfVxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgcmV0dXJuIG5ldyBGaWxlKFtibG9iXSwgbmFtZUZvckZpbGUpO1xuICAgIH1cblxuXG5cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG5cblxuXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG5cblxuXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuXG5cblxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcblxuXG5cbiAgICBleHBvcnQgYXN5bmMgZnVuY3Rpb24gdGV4dFRvQmxvYihcbiAgICAgIHRleHQ6IHN0cmluZyxcbiAgICAgIHR5cGU6IENvcmVNb2RlbHMuQ29udGVudFR5cGUgPSAndGV4dC9wbGFpbicsXG4gICAgKTogUHJvbWlzZTxCbG9iPiB7XG4gICAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW3RleHRdLCB7IHR5cGUgfSk7XG4gICAgICByZXR1cm4gYmxvYjtcbiAgICB9XG5cblxuXG4gICAgZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGJsb2JUb1RleHQoYmxvYjogQmxvYik6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICByZXR1cm4gYXdhaXQgYmxvYi50ZXh0KCk7XG4gICAgfVxuXG5cblxuICAgIGV4cG9ydCBhc3luYyBmdW5jdGlvbiB0ZXh0VG9GaWxlKFxuICAgICAgdGV4dDogc3RyaW5nLFxuICAgICAgZmlsZVJlbGF0aXZlUGF0aE9yTmFtZTogc3RyaW5nLFxuICAgICk6IFByb21pc2U8RmlsZT4ge1xuXG4gICAgICBjb25zdCBleHQgPSBwYXRoLmV4dG5hbWUoZmlsZVJlbGF0aXZlUGF0aE9yTmFtZSk7XG5cbiAgICAgIGNvbnN0IHR5cGUgPSBDb3JlTW9kZWxzLm1pbWVUeXBlc1tleHRdO1xuICAgICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFt0ZXh0XSwgeyB0eXBlIH0pO1xuICAgICAgY29uc3QgZmlsZSA9IGF3YWl0IGJsb2JUb0ZpbGUoYmxvYiwgZmlsZVJlbGF0aXZlUGF0aE9yTmFtZSk7XG5cblxuXG5cblxuICAgICAgcmV0dXJuIGZpbGU7XG4gICAgfVxuXG5cblxuICAgIGV4cG9ydCBhc3luYyBmdW5jdGlvbiBmaWxlVG9UZXh0KGZpbGU6IEZpbGUpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGZpbGUudGV4dCgpO1xuICAgIH1cblxuXG5cbiAgICBleHBvcnQgYXN5bmMgZnVuY3Rpb24ganNvblRvQmxvYihqc29uT2JqOiBvYmplY3QpOiBQcm9taXNlPEJsb2I+IHtcbiAgICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbSlNPTi5zdHJpbmdpZnkoanNvbk9iaiwgbnVsbCwgMildLCB7XG4gICAgICAgIHR5cGU6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGJsb2I7XG4gICAgfVxuXG5cblxuICAgIC8qKlxuICAgICAqIFRPRE8gTk9UIFRFU1RFRFxuICAgICAqL1xuICAgIGV4cG9ydCBhc3luYyBmdW5jdGlvbiBibG9iVG9Kc29uKGJsb2I6IEJsb2IpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgcmV0dXJuIEpTT04ucGFyc2UoYXdhaXQgYmxvYi50ZXh0KCkpO1xuICAgIH1cblxuXG5cbiAgICBleHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0QmxvYkZyb20odXJsOiBzdHJpbmcpOiBQcm9taXNlPEJsb2I+IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlOiBBeGlvc1Jlc3BvbnNlPEJsb2I+ID0gYXdhaXQgYXhpb3Moe1xuICAgICAgICB1cmwsXG4gICAgICAgIG1ldGhvZDogJ2dldCcsXG4gICAgICAgIHJlc3BvbnNlVHlwZTogJ2Jsb2InLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YTtcbiAgICB9XG5cbiAgfVxuXG5cblxuICBleHBvcnQgbmFtZXNwYWNlIGNzcyB7XG5cbiAgICAvKipcbiAgICAgKlxuICAgICAqIEBwYXJhbSBwaXhlbHNDc3MgcGl4ZWxzIGV4LiAxMDBweFxuICAgICAqIEByZXR1cm5zXG4gICAgICovXG4gICAgZXhwb3J0IGZ1bmN0aW9uIG51bVZhbHVlKHBpeGVsc0Nzczogc3RyaW5nIHwgbnVtYmVyKTogbnVtYmVyIHtcblxuICAgICAgcmV0dXJuIHBhcnNlSW50KFxuICAgICAgICBwaXhlbHNDc3M/LnRvU3RyaW5nKCk/LnJlcGxhY2UoJ3B4JywgJycpLFxuXG5cbiAgICAgICk7XG4gICAgfVxuXG4gIH1cblxufVxuXG5cblxuZXhwb3J0IG5hbWVzcGFjZSBVdGlsc1Byb2Nlc3Mge1xuXG4gIGludGVyZmFjZSBSZXNvbHZlUHJvbWlzZU1zZyB7XG4gICAgLyoqXG4gICAgICogdW50aWwgdGhpcyBzdHJpbmcgaXMgaW4gb3V0cHV0IG9mIHN0ZG91dFxuICAgICAqL1xuICAgIHN0ZG91dD86IHN0cmluZyB8IHN0cmluZ1tdO1xuICAgIC8qKlxuICAgICAqIHVudGlsIHRoaXMgc3RyaW5nIGlzIGluIG91dHB1dCBvZiBzdGRlcnJcbiAgICAgKi9cbiAgICBzdGRlcnI/OiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgICAvKipcbiAgICAgKiBieSBkZWZhdWx0IG9ubHkgcmVzb2x2ZSB3aGVuIGV4aXQgY29kZSBpcyAwXG4gICAgICovXG4gICAgcmVzb2x2ZUFmdGVyQW55RXhpdENvZGU/OiBib29sZWFuO1xuICB9XG5cbiAgZXhwb3J0IGludGVyZmFjZSBQcm9jZXNzU3RhcnRPcHRpb25zIHtcbiAgICAvKipcbiAgICAgKiBieSBkZWZhdWx0IGlzIHByb2Nlc3MuY3dkKCk7XG4gICAgICovXG4gICAgY3dkPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIGJ5IGRlZmF1bHQgaXMgZmFsc2VcbiAgICAgKi9cbiAgICBzaG93Q29tbWFuZD86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogTW9kaWZ5IG91dHB1dCBsaW5lIGJ5IGxpbmVcbiAgICAgKi9cbiAgICBvdXRwdXRMaW5lUmVwbGFjZT86IChvdXRwdXRMaW5lU3RkZXJPclN0ZG91dDogc3RyaW5nKSA9PiBzdHJpbmc7XG4gICAgcmVzb2x2ZVByb21pc2VNc2c/OiBSZXNvbHZlUHJvbWlzZU1zZztcbiAgICAvKipcbiAgICAgKiBQcmVmaXggbWVzc2FnZXMgb3V0cHV0IGZyb20gY2hpbGRfcHJvY2Vzc1xuICAgICAqL1xuICAgIHByZWZpeD86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBUcnkgY29tbWFuZCBhZ2FpbiBhZnRlciBmYWlsIGFmdGVyIG4gbWlsbGlzZWNvbmRzXG4gICAgICovXG4gICAgdHJ5QWdhaW5XaGVuRmFpbEFmdGVyPzogbnVtYmVyO1xuICAgIGFza1RvVHJ5QWdhaW5PbkVycm9yPzogYm9vbGVhbjtcbiAgICBleGl0T25FcnJvckNhbGxiYWNrPzogKGNvZGU6IG51bWJlcikgPT4gdm9pZDtcbiAgICAvKipcbiAgICAgKiBVc2UgYmlnIGJ1ZmZlciBmb3IgYmlnIHdlYnBhY2sgbG9nc1xuICAgICAqIChpdCBtYXkgc2xvdyBkb3duIHNtYWxsZXIgcHJvY2Vzc2VzIGV4ZWN1dGlvbilcbiAgICAgKi9cbiAgICBiaWdnZXJCdWZmZXI/OiBib29sZWFuO1xuICAgIGhpZGVPdXRwdXQ/OiB7XG4gICAgICBzdGRvdXQ/OiBib29sZWFuO1xuICAgICAgc3RkZXJyPzogYm9vbGVhbjtcbiAgICB9O1xuICB9XG5cblxuXG4gIC8qKlxuICAgKiBUT0RPIElNUExFTUVOVFxuICAgKiBzdGFydCBhc3luYyBub2RlIHByb2Nlc3NcbiAgICovXG4gIGV4cG9ydCBjb25zdCBzdGFydEFzeW5jID0gYXN5bmMgKFxuICAgIGNvbW1hbmQ6IHN0cmluZyxcbiAgICBjd2Q6IHN0cmluZyxcblxuICAgIG9wdGlvbnM/OiBPbWl0PENvcmVNb2RlbHMuRXhlY3V0ZU9wdGlvbnMsICd0cnlBZ2FpbldoZW5GYWlsQWZ0ZXInPixcbiAgKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9O1xuXG5cblxuXG5cblxuXG5cblxuXG5cblxuICAvKipcbiAgICogVGhpcyBsZXQgeW91IHN0YXJ0IGNoaWxkIHByb2Nlc3MgYW5kIHJlc29sdmUgcHJvbWlzZSB3aGVuIHNvbWVcbiAgICogY29uZGl0aW9uIGlzIG1ldC4gSXQgaXMgdXNlZnVsIGZvciBleGFtcGxlIHdoZW4geW91IHdhbnQgdG8gc3RhcnRcbiAgICogcHJvY2VzcyBhbmQgd2FpdCB1bnRpbCBzb21lIG91dHB1dCBpcyBpbiBzdGRvdXQgb3Igc3RkZXJyLlxuICAgKi9cbiAgZXhwb3J0IGNvbnN0IHN0YXJ0QXN5bmNDaGlsZFByb2Nlc3NDb21tYW5kVW50aWwgPSBhc3luYyAoXG4gICAgY29tbWFuZDogc3RyaW5nLFxuICAgIG9wdGlvbnM6IHtcbiAgICAgIC8qKlxuICAgICAgICogdGVscyB3aGVuIHRvIHJlc29sdmUgcHJvbWlzZVxuICAgICAgICovXG4gICAgICB1bnRpbE9wdGlvbnM6IFJlc29sdmVQcm9taXNlTXNnO1xuICAgICAgZGlzcGxheU91dHB1dEluUGFyZW50UHJvY2Vzcz86IGJvb2xlYW47XG4gICAgICByZXNvbHZlQWZ0ZXJBbnlFeGl0Q29kZT86IGJvb2xlYW47XG4gICAgICBjd2Q/OiBzdHJpbmc7XG4gICAgfSxcbiAgKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfTtcblxuXG5cbiAgZXhwb3J0IGNvbnN0IGdldEdpdEJhc2hQYXRoID0gKCkgPT4ge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfTtcblxuXG5cbiAgLyoqXG4gICAqIFRPRE8gSU1QTEVNRU5UXG4gICAqIHN0YXJ0IGFzeW5jIG5vZGUgcHJvY2Vzc1xuICAgKi9cbiAgZXhwb3J0IGNvbnN0IHN0YXJ0SW5OZXdUZXJtaW5hbFdpbmRvdyA9IChcbiAgICBjb21tYW5kOiBzdHJpbmcsXG4gICAgb3B0aW9ucz86IFBpY2s8UHJvY2Vzc1N0YXJ0T3B0aW9ucywgJ2N3ZCcgfCAnaGlkZU91dHB1dCc+LFxuICApID0+IHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfTtcblxuXG5cbiAgZXhwb3J0IGNvbnN0IGdldEJhc2hPclNoZWxsTmFtZSA9ICgpOlxuICAgIHwgJ2Jyb3dzZXInXG4gICAgfCAnY21kJ1xuICAgIHwgJ3Bvd2Vyc2hlbGwnXG4gICAgfCAnZ2l0YmFzaCdcbiAgICB8ICdjeWd3aW4nXG4gICAgfCAndW5rbm93bidcbiAgICB8ICdiYXNoJ1xuICAgIHwgJ3pzaCdcbiAgICB8ICdmaXNoJ1xuICAgIHwgJ3NoJyA9PiB7XG5cbiAgICByZXR1cm4gJ2Jyb3dzZXInO1xuXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICAgIHJldHVybiAodm9pZCAwKTtcbiAgfTtcblxuXG4gIC8qKlxuICAgKiBHZXQgQ1BVIGFuZCBtZW1vcnkgdXNhZ2UgZm9yIGEgc2luZ2xlIFBJRC5cbiAgICovXG4gIGV4cG9ydCBjb25zdCBnZXRVc2FnZUZvclBpZCA9IGFzeW5jIChcbiAgICBwaWQ6IG51bWJlcixcbiAgKTogUHJvbWlzZTx7IGNwdTogbnVtYmVyOyBtZW1vcnlJbkdCOiBudW1iZXI7IG1lbW9yeUluTUI6IG51bWJlciB9PiA9PiB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9O1xuXG4gIC8qKlxuICAgKiBSZXR1cm4gYSBsaXN0IG9mIGRpcmVjdCBjaGlsZCBQSURzIGZvciB0aGUgZ2l2ZW4gUElEIG9uIGEgVW5peC1saWtlIHN5c3RlbS5cbiAgICogVXNlcyBgcHMgLW8gcGlkPSAtLXBwaWQgPHBpZD5gIHRvIGZpbmQgY2hpbGQgcHJvY2Vzc2VzLlxuICAgKi9cbiAgYXN5bmMgZnVuY3Rpb24gZ2V0Q2hpbGRQaWRzVW5peChwaWQ6IG51bWJlcik6IFByb21pc2U8bnVtYmVyW10+IHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGEgbGlzdCBvZiBkaXJlY3QgY2hpbGQgUElEcyBmb3IgdGhlIGdpdmVuIFBJRCBvbiBXaW5kb3dzLlxuICAgKiBVc2VzIGB3bWljIHByb2Nlc3Mgd2hlcmUgKFBhcmVudFByb2Nlc3NJZD08cGlkPikgZ2V0IFByb2Nlc3NJZGAgdG8gZmluZCBjaGlsZCBwcm9jZXNzZXMuXG4gICAqL1xuICBhc3luYyBmdW5jdGlvbiBnZXRDaGlsZFBpZHNXaW5kb3dzKHBpZDogbnVtYmVyKTogUHJvbWlzZTxudW1iZXJbXT4ge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH1cblxuICAvKipcbiAgICogQ3Jvc3MtcGxhdGZvcm0gZnVuY3Rpb24gdG8gbGlzdCAqZGlyZWN0KiBjaGlsZCBQSURzIG9mIGEgZ2l2ZW4gUElELlxuICAgKiBVc2VzIHRoZSBhcHByb3ByaWF0ZSBjb21tYW5kIGRlcGVuZGluZyBvbiBgcHJvY2Vzcy5wbGF0Zm9ybWAuXG4gICAqL1xuICBleHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0Q2hpbGRQaWRzT25jZShwaWQ6IG51bWJlcik6IFByb21pc2U8bnVtYmVyW10+IHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IENQVSBhbmQgbWVtb3J5IHVzYWdlIGZvciB0aGUgY3VycmVudCBwcm9jZXNzICh0aGUgTm9kZS5qcyBwcm9jZXNzIGl0c2VsZiksXG4gICAqIHBsdXMgYW55IGNoaWxkIHByb2Nlc3NlcyBzcGF3bmVkIGJ5IGl0LlxuICAgKi9cbiAgZXhwb3J0IGNvbnN0IGdldEN1cnJlbnRQcm9jZXNzQW5kQ2hpbGRVc2FnZSA9IGFzeW5jICgpOiBQcm9taXNlPHtcbiAgICBjdXJyZW50OiB7IGNwdTogbnVtYmVyOyBtZW1vcnlJbk1COiBudW1iZXIgfTtcbiAgICBjaGlsZHJlbjogQXJyYXk8eyBwaWQ6IG51bWJlcjsgY3B1OiBudW1iZXI7IG1lbW9yeUluTUI6IG51bWJlciB9PjtcbiAgfT4gPT4ge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH07XG59XG5cblxuXG5cbmV4cG9ydCBuYW1lc3BhY2UgVXRpbHNPcyB7XG5cbiAgLyoqXG4gICAqIGNoZWNrIGlmIHNjcmlwdCBpcyBydW5uaW5nIGluIGNsaWVudCBicm93c2VyXG4gICAqICh3ZWJzcWwgbW9kZWwgLT4gaXMgYWxzbyBjb25zaWRlcmVkIGFzIGJyb3dzZXJcbiAgICogYmVjYXVzZSBpdCBpcyBydW5uaW5nIGluIGJyb3dzZXIpXG4gICAqL1xuICBleHBvcnQgY29uc3QgaXNSdW5uaW5nSW5Ccm93c2VyID0gKCk6IGJvb2xlYW4gPT4ge1xuLyogKi9cbi8qICovXG4gIFxuICAgIHJldHVybiB0cnVlO1xuICB9O1xuXG5cblxuICAvKipcbiAgICogY2hlY2sgaWYgc2NyaXB0IGlzIHJ1bm5pbmcgaW4gbm9kZWpzXG4gICAqIChiYWNrZW5kIHNjcmlwdCBvciBlbGVjdHJvbiBzY3JpcHQpXG4gICAqL1xuICBleHBvcnQgY29uc3QgaXNSdW5uaW5nSW5Ob2RlID0gKCk6IGJvb2xlYW4gPT4ge1xuLyogKi9cbi8qICovXG4gIFxuICAgIHJldHVybiBmYWxzZTtcbiAgfTtcblxuXG5cbiAgLyoqXG4gICAqIGNoZWNrIGlmIHNjcmlwdCBpcyBydW5uaW5nIHNwZWNpYWxcbiAgICogYnJvd3NlciBtb2RlIHRoYXQgaGFzIHNxbC5qcyBiYWNrZW5kXG4gICAqIGFuZCBleGVjdXRlcyBzcWwgcXVlcmllcyBpbiBicm93c2VyXG4gICAqL1xuICBleHBvcnQgY29uc3QgaXNSdW5uaW5nSW5XZWJTUUwgPSAoKTogYm9vbGVhbiA9PiB7XG4vKiAqL1xuLyogKi9cbiAgXG5cbi8qICovXG4vKiAqL1xuICBcbiAgICByZXR1cm4gZmFsc2U7XG4gIH07XG5cblxuXG4gIC8qKlxuICAgKiBjaGVjayB3aGV0aGVyIHRoZSBjdXJyZW50IHByb2Nlc3MgaXMgcnVubmluZyBpbnNpZGVcbiAgICogRWxlY3Ryb24gYmFja2VuZCBvciBicm93c2VyLlxuICAgKi9cbiAgZXhwb3J0IGNvbnN0IGlzUnVubmluZ0luRWxlY3Ryb24gPSAoKTogYm9vbGVhbiA9PiB7XG5cbiAgICAvLyBAdHMtaWdub3JlXG4gICAgaWYgKFxuICAgICAgdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAgIHR5cGVvZiB3aW5kb3cucHJvY2VzcyA9PT0gJ29iamVjdCcgJiZcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHdpbmRvdy5wcm9jZXNzLnR5cGUgPT09ICdyZW5kZXJlcidcbiAgICApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGlmIChcbiAgICAgIHR5cGVvZiBwcm9jZXNzICE9PSAndW5kZWZpbmVkJyAmJlxuICAgICAgdHlwZW9mIHByb2Nlc3MudmVyc2lvbnMgPT09ICdvYmplY3QnICYmXG4gICAgICAhIXByb2Nlc3MudmVyc2lvbnMuZWxlY3Ryb25cbiAgICApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuXG4gICAgaWYgKFxuICAgICAgdHlwZW9mIG5hdmlnYXRvciA9PT0gJ29iamVjdCcgJiZcbiAgICAgIHR5cGVvZiBuYXZpZ2F0b3IudXNlckFnZW50ID09PSAnc3RyaW5nJyAmJlxuICAgICAgbmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCdFbGVjdHJvbicpID49IDBcbiAgICApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfTtcblxuXG5cbiAgLyoqXG4gICAqIENoZWNrIHdoZXRoZXIgdGhlIGN1cnJlbnQgcHJvY2VzcyBpcyBydW5uaW5nIGluc2lkZVxuICAgKiBhIFZpc3VhbCBTdHVkaW8gQ29kZSBleHRlbnNpb24uXG4gICAqL1xuICBleHBvcnQgY29uc3QgaXNSdW5uaW5nSW5Wc2NvZGVFeHRlbnNpb24gPSAoKTogYm9vbGVhbiA9PiB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH07XG5cblxuXG4gIC8qKlxuICAgKiBDaGVjayB3ZXRoZXIgdGhlIGN1cnJlbnQgcHJvY2VzcyBpcyBydW5uaW5nIGluc2lkZVxuICAgKiB3aW5kb3dzIHN1YnN5c3RlbSBmb3IgbGludXggKFdTTCkuXG4gICAqL1xuICBleHBvcnQgY29uc3QgaXNSdW5uaW5nSW5Xc2wgPSAoKTogYm9vbGVhbiA9PiB7XG5cbiAgICByZXR1cm4gZmFsc2U7XG5cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgICAgcmV0dXJuICh2b2lkIDApO1xuICB9O1xuXG5cblxuICBleHBvcnQgY29uc3QgaXNSdW5uaW5nSW5XaW5kb3dzQ21kOiAoKSA9PiBib29sZWFuID0gKCkgPT4ge1xuXG4gICAgcmV0dXJuIGZhbHNlO1xuXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH07XG5cblxuXG4gIGV4cG9ydCBjb25zdCBpc1J1bm5pbmdJbkRvY2tlciA9ICgpOiBib29sZWFuID0+IHtcblxuICAgIHJldHVybiBmYWxzZTtcblxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICAgIHJldHVybiAodm9pZCAwKTtcbiAgfTtcblxuXG5cbiAgZXhwb3J0IGNvbnN0IGlzUnVubmluZ0luTGludXhHcmFwaGljc0NhcGFibGVFbnZpcm9ubWVudCA9ICgpOiBib29sZWFuID0+IHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9O1xuXG5cblxuICAvKipcbiAgICogQ2hlY2sgd2hldGhlciB0aGUgY3VycmVudCBwcm9jZXNzIGlzIHJ1bm5pbmcgaW4gQ0xJIG1vZGUuXG4gICAqL1xuICBleHBvcnQgY29uc3QgaXNSdW5uaW5nSW5DbGlNb2RlID0gKCk6IGJvb2xlYW4gPT4ge1xuXG4gICAgcmV0dXJuIGZhbHNlO1xuXG4vKiAqL1xuLyogKi9cbiAgICAgIHJldHVybiAodm9pZCAwKTtcbiAgfTtcblxuXG5cbiAgLyoqXG4gICAqIENoZWNrIHdoZXRoZXIgdGhlIGN1cnJlbnQgcHJvY2VzcyBpcyBydW5uaW5nIGluIG1vY2hhIHRlc3QuXG4gICAqL1xuICBleHBvcnQgY29uc3QgaXNSdW5uaW5nSW5Nb2NoYVRlc3QgPSAoKTogYm9vbGVhbiA9PiB7XG5cbiAgICByZXR1cm4gZmFsc2U7XG5cbi8qICovXG4vKiAqL1xuICAgICAgcmV0dXJuICh2b2lkIDApO1xuICB9O1xuXG5cblxuICBjb25zdCBpc1BvcnRJblVzZU9uSG9zdCA9IChwb3J0OiBudW1iZXIsIGhvc3Q6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4gPT4ge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfTtcblxuICAvKipcbiAgICogQ2hlY2tzIGlmIGEgZ2l2ZW4gcG9ydCBpcyBhbHJlYWR5IGluIHVzZSAoYm91bmQgYnkgYW5vdGhlciBwcm9jZXNzKS5cbiAgICpcbiAgICogQHBhcmFtIHBvcnQgLSBUaGUgcG9ydCBudW1iZXIgdG8gY2hlY2suXG4gICAqIEBwYXJhbSBob3N0IC0gVGhlIGhvc3RuYW1lIG9yIElQIGFkZHJlc3MgdG8gYmluZCB0byAoZGVmYXVsdDogJzEyNy4wLjAuMScpLlxuICAgKiBAcmV0dXJucyBQcm9taXNlPGJvb2xlYW4+IC0gUmVzb2x2ZXMgdG8gYHRydWVgIGlmIHRoZSBwb3J0IGlzIGluIHVzZSwgb3RoZXJ3aXNlIGBmYWxzZWAuXG4gICAqL1xuICBleHBvcnQgY29uc3QgaXNQb3J0SW5Vc2UgPSBhc3luYyAoXG4gICAgcG9ydDogbnVtYmVyLFxuICAgIG9wdGlvbnM/OiB7XG4gICAgICAvKipcbiAgICAgICAqICcxMjcuMC4wLjEnIGV0Yy4uXG4gICAgICAgKi9cbiAgICAgIGNoZWNrRm9yU3BlY2lmaWNPbmx5SG9zdD86IHN0cmluZztcbiAgICB9LFxuICApOiBQcm9taXNlPGJvb2xlYW4+ID0+IHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9O1xuXG59XG5cblxuXG5leHBvcnQgbmFtZXNwYWNlIFV0aWxzU3RyaW5nIHtcblxuICBleHBvcnQgY29uc3Qga2ViYWJDYXNlTm9TcGxpdE51bWJlcnMgPSAoaW5wdXQ6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgIGlucHV0XG5cbiAgICAgICAgLnJlcGxhY2UoL1xccysvZywgJy0nKVxuXG4gICAgICAgIC5yZXBsYWNlKC8oW2EtejAtOV0pKFtBLVpdKS9nLCAnJDEtJDInKVxuXG4gICAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgKTtcbiAgfTtcblxufVxuXG5cblxuLyoqXG4gKiBUYW9uIG1pZ3JhdGlvbiB1dGlsaXRpZXNcbiAqL1xuZXhwb3J0IG5hbWVzcGFjZSBVdGlsc01pZ3JhdGlvbnMge1xuICBleHBvcnQgY29uc3QgZ2V0VGltZXN0YW1wRnJvbUNsYXNzTmFtZSA9IChcbiAgICBjbGFzc05hbWU6IHN0cmluZyxcbiAgKTogbnVtYmVyIHwgdW5kZWZpbmVkID0+IHtcbiAgICBjb25zdCBbbWF5YmVUaW1lc3RhbXAxLCBtYXliZVRpbWVzdGFtcDJdID0gY2xhc3NOYW1lLnNwbGl0KCdfJykgfHwgW107XG5cbiAgICBjb25zdCB0aW1lc3RhbXAxID0gcGFyc2VJbnQobWF5YmVUaW1lc3RhbXAxKTtcbiAgICBjb25zdCB0aW1lc3RhbXAyID0gcGFyc2VJbnQobWF5YmVUaW1lc3RhbXAyKTtcbiAgICBjb25zdCB0aW1lc3RhbXAgPSAhXy5pc05hTih0aW1lc3RhbXAxKSA/IHRpbWVzdGFtcDEgOiB0aW1lc3RhbXAyO1xuICAgIHJldHVybiBpc1ZhbGlkVGltZXN0YW1wKHRpbWVzdGFtcCkgPyB0aW1lc3RhbXAgOiB2b2lkIDA7XG4gIH07XG5cbiAgZXhwb3J0IGNvbnN0IGdldEZvcm1hdHRlZFRpbWVzdGFtcEZyb21DbGFzc05hbWUgPSAoXG4gICAgY2xhc3NOYW1lOiBzdHJpbmcsXG4gICk6IHN0cmluZyB8IHVuZGVmaW5lZCA9PiB7XG4gICAgY29uc3QgdGltZXN0YW1wID0gZ2V0VGltZXN0YW1wRnJvbUNsYXNzTmFtZShjbGFzc05hbWUpO1xuICAgIGlmICghdGltZXN0YW1wKSB7XG4gICAgICByZXR1cm4gdm9pZCAwO1xuICAgIH1cbiAgICByZXR1cm4gZm9ybWF0VGltZXN0YW1wKHRpbWVzdGFtcCk7XG4gIH07XG5cbiAgZXhwb3J0IGNvbnN0IGZvcm1hdFRpbWVzdGFtcCA9ICh0aW1lc3RhbXA6IG51bWJlcik6IHN0cmluZyA9PiB7XG4gICAgY29uc3QgZGF0ZUZyb21UaW1lc3RhbXA6IERhdGUgPSBuZXcgRGF0ZSh0aW1lc3RhbXApO1xuICAgIHJldHVybiBgJHtkYXRlZm9ybWF0KGRhdGVGcm9tVGltZXN0YW1wLCAnZGQtbW0teXl5eSBISDpNTTpzcycpfWA7XG4gIH07XG5cbiAgZXhwb3J0IGNvbnN0IGlzVmFsaWRUaW1lc3RhbXAgPSAodmFsdWU6IGFueSk6IGJvb2xlYW4gPT4ge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdudW1iZXInKSB7XG4gICAgICByZXR1cm4gZmFsc2U7IC8vIE11c3QgYmUgYSBudW1iZXJcbiAgICB9XG5cbiAgICBjb25zdCBtaW5UaW1lc3RhbXAgPSAwOyAvLyBNaW5pbXVtIHBvc3NpYmxlIHRpbWVzdGFtcCAoVW5peCBlcG9jaClcbiAgICBjb25zdCBtYXhUaW1lc3RhbXAgPSA4NjQwMDAwMDAwMDAwMDAwOyAvLyBNYXggc2FmZSB0aW1lc3RhbXAgaW4gSlMgKHJlcHJlc2VudHMgeWVhciB+Mjc1NzYwKVxuXG4gICAgcmV0dXJuIHZhbHVlID49IG1pblRpbWVzdGFtcCAmJiB2YWx1ZSA8PSBtYXhUaW1lc3RhbXA7XG4gIH07XG59XG5cblxuXG5leHBvcnQgbmFtZXNwYWNlIFV0aWxzVGVybWluYWwge1xuXG4gIHR5cGUgU2VsZWN0QWN0aW9uQ2hvaWNlID0ge1xuICAgIFtjaG9pY2U6IHN0cmluZ106IHtcbiAgICAgIC8qKlxuICAgICAgICogVGl0bGUgb2YgdGhlIGNob2ljZVxuICAgICAgICovXG4gICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICAvKipcbiAgICAgICAqIEFjdGlvbiB0byBleGVjdXRlXG4gICAgICAgKi9cbiAgICAgIGFjdGlvbj86ICgpID0+IGFueTtcbiAgICAgIC8qKlxuICAgICAgICogSWYgY2hvaWNlIGlzIHZpc2libGVcbiAgICAgICAqICBkZWZhdWx0OiB0cnVlXG4gICAgICAgKi9cbiAgICAgIHZpc2libGU/OiBib29sZWFuO1xuICAgIH07XG4gIH07XG5cblxuXG4gIGV4cG9ydCBjb25zdCB3YWl0ID0gKHNlY29uZDogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICByZXNvbHZlKHZvaWQgMCk7XG4gICAgICB9LCBzZWNvbmQgKiAxMDAwKTtcbiAgICB9KTtcbiAgfTtcblxuXG5cbiAgZXhwb3J0IGNvbnN0IGNsZWFyQ29uc29sZSA9ICgpOiB2b2lkID0+IHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfTtcblxuXG5cbiAgY29uc3QgdHJhbnNmb3JtQ2hvaWNlcyA9IChcbiAgICBjaG9pY2VzOiBhbnksXG4gICk6IHsgbmFtZTogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIH1bXSA9PiB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9O1xuXG5cblxuICBleHBvcnQgY29uc3QgbXVsdGlzZWxlY3QgPSBhc3luYyA8VCA9IHN0cmluZz4ob3B0aW9uczoge1xuICAgIHF1ZXN0aW9uOiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogSWYgdHJ1ZSwgdGhlbiBvbmx5IG9uZSBjaG9pY2UgY2FuIGJlIHNlbGVjdGVkXG4gICAgICogQGRlcHJlY2F0ZWQgdXNlIHNlbGVjdCBpbnN0ZWFkXG4gICAgICovXG4gICAgb25seU9uZUNob2ljZT86IGJvb2xlYW47XG4gICAgY2hvaWNlczpcbiAgICAgIHwgeyBuYW1lOiBzdHJpbmc7IHZhbHVlOiBUIH1bXVxuICAgICAgfCB7IFtjaG9pY2U6IHN0cmluZ106IHsgbmFtZTogc3RyaW5nIH0gfTtcbiAgICBhdXRvY29tcGxldGU/OiBib29sZWFuO1xuICAgIGRlZmF1bHRTZWxlY3RlZD86IHN0cmluZ1tdO1xuICB9KTogUHJvbWlzZTxUW10+ID0+IHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9O1xuXG5cblxuICAvKipcbiAgICogU2ltaWxhciB0byBzZWxlY3QgYnV0IGV4ZWN1dGVzIGFjdGlvbiBpZiBwcm92aWRlZFxuICAgKiBAcmV0dXJucyBzZWxlY3RlZCBhbmQgZXhlY3V0ZWQgdmFsdWVcbiAgICovXG4gIGV4cG9ydCBjb25zdCBtdWx0aXNlbGVjdEFjdGlvbkFuZEV4ZWN1dGUgPSBhc3luYyA8XG4gICAgQ0hPSUNFIGV4dGVuZHMgU2VsZWN0QWN0aW9uQ2hvaWNlID0gU2VsZWN0QWN0aW9uQ2hvaWNlLFxuICA+KFxuICAgIGNob2ljZXM6IENIT0lDRSxcbiAgICBvcHRpb25zPzoge1xuICAgICAgcXVlc3Rpb24/OiBzdHJpbmc7XG4gICAgICBhdXRvY29tcGxldGU/OiBib29sZWFuO1xuICAgICAgZGVmYXVsdFNlbGVjdGVkPzogc3RyaW5nO1xuICAgICAgaGludD86IHN0cmluZztcbiAgICAgIGV4ZWN1dGVBY3Rpb25zT25EZWZhdWx0PzogYm9vbGVhbjtcbiAgICB9LFxuICApID0+IHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9O1xuXG5cblxuICAvKipcbiAgICogU2ltaWxhciB0byBzZWxlY3QgYnV0IGV4ZWN1dGVzIGFjdGlvbiBpZiBwcm92aWRlZFxuICAgKiBAcmV0dXJucyBzZWxlY3RlZCBhbmQgZXhlY3V0ZWQgdmFsdWVcbiAgICovXG4gIGV4cG9ydCBjb25zdCBzZWxlY3RBY3Rpb25BbmRFeGVjdXRlID0gYXN5bmMgPFxuICAgIENIT0lDRSBleHRlbmRzIFNlbGVjdEFjdGlvbkNob2ljZSA9IFNlbGVjdEFjdGlvbkNob2ljZSxcbiAgPihcbiAgICBjaG9pY2VzOiBDSE9JQ0UsXG4gICAgb3B0aW9ucz86IHtcbiAgICAgIHF1ZXN0aW9uPzogc3RyaW5nO1xuICAgICAgYXV0b2NvbXBsZXRlPzogYm9vbGVhbjtcbiAgICAgIGRlZmF1bHRTZWxlY3RlZD86IHN0cmluZztcbiAgICAgIGhpbnQ/OiBzdHJpbmc7XG4gICAgICBleGVjdXRlQWN0aW9uT25EZWZhdWx0PzogYm9vbGVhbjtcbiAgICB9LFxuICApID0+IHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfTtcblxuXG5cbiAgZXhwb3J0IGNvbnN0IHNlbGVjdCA9IGFzeW5jIDxUID0gc3RyaW5nPihvcHRpb25zOiB7XG4gICAgcXVlc3Rpb246IHN0cmluZztcbiAgICBjaG9pY2VzOlxuICAgICAgfCB7IG5hbWU6IHN0cmluZzsgdmFsdWU6IFQgfVtdXG4gICAgICB8IHsgW2Nob2ljZTogc3RyaW5nXTogeyBuYW1lOiBzdHJpbmcgfSB9O1xuICAgIGF1dG9jb21wbGV0ZT86IGJvb2xlYW47XG4gICAgZGVmYXVsdFNlbGVjdGVkPzogc3RyaW5nO1xuICAgIGhpbnQ/OiBzdHJpbmc7XG4gIH0pOiBQcm9taXNlPFQ+ID0+IHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH07XG5cblxuXG5cbiAgZXhwb3J0IGNvbnN0IHBpcGVFbnRlclRvU3RkaW4gPSAoKTogdm9pZCA9PiB7XG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH07XG5cblxuXG4gIGV4cG9ydCBjb25zdCBpbnB1dCA9IGFzeW5jICh7XG4gICAgZGVmYXVsdFZhbHVlLFxuICAgIHF1ZXN0aW9uLFxuICAgIHJlcXVpcmVkLCAvLyBUT0RPIHNvbWV0aGluZyBpcyB3ZXJpZCB3aXRoIHJlcXVpcmVkXG4gIH06IHtcbiAgICBkZWZhdWx0VmFsdWU/OiBzdHJpbmc7XG4gICAgcXVlc3Rpb246IHN0cmluZztcbiAgICByZXF1aXJlZD86IGJvb2xlYW47XG4gICAgdmFsaWRhdGU/OiAodmFsdWU6IHN0cmluZykgPT4gYm9vbGVhbjtcbiAgfSk6IFByb21pc2U8c3RyaW5nPiA9PiB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfTtcblxuXG5cbiAgZXhwb3J0IGNvbnN0IGNvbmZpcm0gPSBhc3luYyAob3B0aW9ucz86IHtcbiAgICAvKipcbiAgICAgKiBkZWZhdWx0OiBBcmUgeW91IHN1cmU/XG4gICAgICovXG4gICAgbWVzc2FnZT86IHN0cmluZztcbiAgICBjYWxsYmFja1RydWU/OiAoKSA9PiBhbnk7XG4gICAgY2FsbGJhY2tGYWxzZT86ICgpID0+IGFueTtcbiAgICAvKipcbiAgICAgKiBkZWZhdWx0OiB0cnVlXG4gICAgICovXG4gICAgZGVmYXVsdFZhbHVlPzogYm9vbGVhbjtcbiAgICBlbmdpbmU/OiAnaW5xdWlyZXItdG9nZ2xlJyB8ICdwcm9tcHRzJyB8ICdlbnF1aXJlcicgfCAnQGlucXVpcmVyL3Byb21wdHMnO1xuICB9KSA9PiB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfTtcblxuXG5cbiAgZXhwb3J0IGNvbnN0IHByZXNzQW55S2V5VG9Db250aW51ZUFzeW5jID0gKG9wdGlvbnM/OiB7XG4gICAgbWVzc2FnZT86IHN0cmluZztcbiAgfSk6IFByb21pc2U8dm9pZD4gPT4ge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfTtcblxuXG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIHVzZSBVdGlsc1Rlcm1pbmFsLnByZXNzQW55S2V5VG9Db250aW51ZUFzeW5jKClcbiAgICovXG4gIGV4cG9ydCBjb25zdCBwcmVzc0FueUtleSA9IChvcHRpb25zPzogeyBtZXNzYWdlPzogc3RyaW5nIH0pID0+IHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH07XG5cblxuXG4gIGV4cG9ydCBjb25zdCBwcmV2aWV3TG9uZ0xpc3QgPSBhc3luYyAoXG4gICAgbGlzdDogc3RyaW5nIHwgc3RyaW5nW10sXG4gICAgbGlzdE5hbWUgPSAnTGlzdCcsXG4gICk6IFByb21pc2U8dm9pZD4gPT4ge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9O1xuXG5cblxuICAvKipcbiAgICogRGlzcGxheXMgYSBsb25nIGxpc3QgaW4gdGhlIGNvbnNvbGUgdXNpbmcgYSBwYWdlciBsaWtlIGBsZXNzYC5cbiAgICogUmV0dXJucyBhIFByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSB1c2VyIGV4aXRzIHRoZSBwYWdlci5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGxpc3QgLSBUaGUgbG9uZyBzdHJpbmcgY29udGVudCB0byBkaXNwbGF5LlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gQSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgcGFnZXIgZXhpdHMuXG4gICAqL1xuICBleHBvcnQgY29uc3QgcHJldmlld0xvbmdMaXN0R2l0TG9nTGlrZSA9IChcbiAgICBsaXN0OiBzdHJpbmcgfCBzdHJpbmdbXSxcbiAgKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9O1xuXG59XG5cblxuIDsoe30pOyAvLyBALS1lbmQtb2YtZmlsZS1mb3ItbW9kdWxlPXRucC1jb3JlIGxpYi91dGlscy50cyJdfQ==
|
@@ -2243,6 +2243,8 @@ var UtilsTerminal;
|
|
2243
2243
|
/* */
|
2244
2244
|
/* */
|
2245
2245
|
/* */
|
2246
|
+
/* */
|
2247
|
+
/* */
|
2246
2248
|
return (void 0);
|
2247
2249
|
};
|
2248
2250
|
const transformChoices = (choices) => {
|
@@ -2520,20 +2522,6 @@ var UtilsTerminal;
|
|
2520
2522
|
/* */
|
2521
2523
|
/* */
|
2522
2524
|
/* */
|
2523
|
-
/* */
|
2524
|
-
/* */
|
2525
|
-
/* */
|
2526
|
-
/* */
|
2527
|
-
/* */
|
2528
|
-
/* */
|
2529
|
-
/* */
|
2530
|
-
/* */
|
2531
|
-
/* */
|
2532
|
-
/* */
|
2533
|
-
/* */
|
2534
|
-
/* */
|
2535
|
-
/* */
|
2536
|
-
/* */
|
2537
2525
|
return (void 0);
|
2538
2526
|
};
|
2539
2527
|
UtilsTerminal.confirm = async (options) => {
|