@doolehealth/service-lib 0.0.6 → 0.0.8

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 CHANGED
@@ -1,123 +1,24 @@
1
- # Guía para Compilar y Publicar la Librería `service-lib`
1
+ # ServiceLib
2
2
 
3
- ## Introducción
4
- Este documento detalla el proceso para compilar y publicar la librería interna `service-lib` de manera eficiente y organizada. Sigue estos pasos para garantizar que el paquete cumpla con los estándares de la empresa.
3
+ This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 17.3.0.
5
4
 
6
- ---
5
+ ## Code scaffolding
7
6
 
8
- ## 1. Compilar la Librería
7
+ Run `ng generate component component-name --project service-lib` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project service-lib`.
8
+ > Note: Don't forget to add `--project service-lib` or else it will be added to the default project in your `angular.json` file.
9
9
 
10
- ### Paso 1: Verificar la Configuración
11
- Antes de comenzar, asegúrate de que el archivo `package.json` de tu librería tenga el formato correcto en el campo `name`:
10
+ ## Build
12
11
 
13
- ```json
14
- {
15
- "name": "@doolehealth/service-lib",
16
- "version": "x.x.x", // Asegúrate de usar el formato correcto de versionado semántico
17
- ...
18
- }
19
- ```
12
+ Run `ng build service-lib` to build the project. The build artifacts will be stored in the `dist/` directory.
20
13
 
21
- ### Paso 2: Ejecutar el Comando de Build
14
+ ## Publishing
22
15
 
23
- Para compilar la librería, utiliza el comando:
16
+ After building your library with `ng build service-lib`, go to the dist folder `cd dist/service-lib` and run `npm publish`.
24
17
 
25
- ```bash
26
- ng build service-lib
27
- ```
28
- Esto generará un directorio `dist/service-lib` donde se encontrará la versión compilada de la librería.
18
+ ## Running unit tests
29
19
 
30
- ---
20
+ Run `ng test service-lib` to execute the unit tests via [Karma](https://karma-runner.github.io).
31
21
 
32
- ## 2. Publicar la Librería en NPM
33
-
34
- ### Paso 1: Verificar el Package Ready para Publicar
35
-
36
- 1. Ve al directorio generado al compilar la librería:
37
-
38
- ```bash
39
- cd dist/service-lib
40
- ```
41
-
42
- 2. Asegúrate de que el archivo `package.json` tenga el nombre correcto, siguiendo el formato:
43
-
44
- ```json
45
- {
46
- "name": "@doolehealth/service-lib",
47
- "version": "x.x.x",
48
- "main": "index.js",
49
- ...
50
- }
51
- ```
52
-
53
- ### Paso 2: Autenticarse en NPM
54
- Si no estás autenticado en tu cuenta de NPM, ejecuta:
55
-
56
- ```bash
57
- npm login
58
- ```
59
- Esto te pedirá:
60
- - Tu usuario de NPM.
61
- - Contraseña.
62
- - Correo electrónico asociado.
63
-
64
- ### Paso 3: Publicar en NPM
65
-
66
- Desde el directorio `dist/service-lib`, ejecuta:
67
-
68
- ```bash
69
- npm publish
70
- ```
71
-
72
- **Nota:** Asegúrate de que la versión de la librería no sea repetida. Si intentas publicar con una versión existente, NPM rechazará la publicación.
73
-
74
- Si es necesario, actualiza la versión en el `package.json` antes de publicar. Por ejemplo, incrementa la versión en el formato **semántico** (major.minor.patch):
75
-
76
- ```json
77
- "version": "1.0.1"
78
- ```
79
-
80
- ### Paso 4: Confirmar la Publicación
81
-
82
- Una vez publicada, puedes verificar que la librería esté disponible ejecutando:
83
-
84
- ```bash
85
- npm view @doolehealth/service-lib
86
- ```
87
- Esto mostrará información de la versión publicada y otros detalles.
88
-
89
- ---
90
-
91
- ## 3. Notas Importantes
92
-
93
- 1. **Verificar Dependencias**: Antes de compilar y publicar, asegúrate de que todas las dependencias necesarias estén correctamente instaladas.
94
- 2. **Evitar Versiones Duplicadas**: Cada nueva versión publicada debe tener un número único. Utiliza versionado semántico para mantener el control.
95
- 3. **Publicación Interna**: Este proceso es para publicar librerías internas de la empresa y no deben ser accesibles al público general.
96
-
97
- ---
98
-
99
- ## Resumen de Comandos
100
-
101
- 1. Compilar la librería:
102
-
103
- ```bash
104
- ng build service-lib
105
- ```
106
-
107
- 2. Acceder al directorio compilado:
108
-
109
- ```bash
110
- cd dist/service-lib
111
- ```
112
-
113
- 3. Publicar en NPM:
114
-
115
- ```bash
116
- npm publish
117
- ```
118
-
119
- ---
120
-
121
- **ATENCIÓN:**
122
- - La configuración del `name` en el `package.json` debe seguir el formato `@doolehealth/nombrelibreria`.
22
+ ## Further help
123
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,5 +1,5 @@
1
1
  import { InjectionToken } from '@angular/core';
2
2
  export const CONFIGURACION_TOKEN = new InjectionToken('configuracion');
3
- export const PUSHERS_CONFIG_TOKEN = new InjectionToken('pushers.config');
4
3
  export const FIREBASE_CONFIG_TOKEN = new InjectionToken('environment');
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3NlcnZpY2UtbGliL3NyYy9saWIvY29uZmlndXJhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBb0QvQyxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLGNBQWMsQ0FBZ0IsZUFBZSxDQUFDLENBQUM7QUFDdEYsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxjQUFjLENBQWdCLGdCQUFnQixDQUFDLENBQUM7QUFDeEYsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxjQUFjLENBQWMsYUFBYSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbmZpZ3VyYWNpb24ge1xuICBMSVNUX0VOUE9JTlQ6IEFycmF5PGFueT47XG4gIElOREVYOiBudW1iZXI7XG4gIEFQSV9QUk9EX0VORFBPSU5UOnN0cmluZztcbiAgUFJPRF9FTkRQT0lOVDpzdHJpbmc7XG4gIEFQSV9QUkVfRU5EUE9JTlQ6c3RyaW5nO1xuICBQUkVfRU5EUE9JTlQ6c3RyaW5nO1xuICBBUElfRU5EUE9JTlRfREVWOiBzdHJpbmc7XG4gIEVORFBPSU5UX0RFVjogc3RyaW5nO1xuICBhcHBsZUFwcElkOiBzdHJpbmc7XG4gIGFuZHJvaWRCdW5kbGVJZDogc3RyaW5nO1xuICBWSURFT0NBTExfVVJMOiBzdHJpbmc7XG4gIFBSSU1BUllfQ09MT1I6IHN0cmluZztcbiAgZ29vZ2xlRml0UGFja2FnZUlEIDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFB1c2hlcnNDb25maWcge1xuICBQVVNIRVJfS0VZX1BSTzogUHVzaGVyS2V5O1xuICBQVVNIRVJfS0VZX0RFVjogUHVzaGVyS2V5O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFB1c2hlcktleXsgXG4gIGFwcF9pZDogc3RyaW5nLCBcbiAga2V5OiBzdHJpbmcsIFxuICBzZWNyZXQ6IHN0cmluZywgXG4gIGNsdXN0ZXI6IHN0cmluZywgXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRW52aXJvbm1lbnR7IFxuICBwcm9kdWN0aW9uOiBib29sZWFuLCBcbiAgYXBwU2hlbGxDb25maWc6IEFwcFNoZWxsQ29uZmlnLCBcbiAgZmlyZWJhc2U6IEZpcmViYXNlLCBcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBcHBTaGVsbENvbmZpZ3sgXG4gIGRlYnVnOiBib29sZWFuLCBcbiAgbmV0d29ya0RlbGF5OiBudW1iZXJcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGaXJlYmFzZXsgXG4gIGFwaUtleTogc3RyaW5nLCBcbiAgYXV0aERvbWFpbjogc3RyaW5nLCBcbiAgZGF0YWJhc2VVUkw6IHN0cmluZywgXG4gIHByb2plY3RJZDogc3RyaW5nLCBcbiAgc3RvcmFnZUJ1Y2tldDogc3RyaW5nLCBcbiAgbWVzc2FnaW5nU2VuZGVySWQ6IHN0cmluZywgXG4gIGFwcElkOiBzdHJpbmcsIFxuICBtZWFzdXJlbWVudElkOiBzdHJpbmdcbn1cblxuZXhwb3J0IGNvbnN0IENPTkZJR1VSQUNJT05fVE9LRU4gPSBuZXcgSW5qZWN0aW9uVG9rZW48Q29uZmlndXJhY2lvbj4oJ2NvbmZpZ3VyYWNpb24nKTtcbmV4cG9ydCBjb25zdCBQVVNIRVJTX0NPTkZJR19UT0tFTiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxQdXNoZXJzQ29uZmlnPigncHVzaGVycy5jb25maWcnKTtcbmV4cG9ydCBjb25zdCBGSVJFQkFTRV9DT05GSUdfVE9LRU4gPSBuZXcgSW5qZWN0aW9uVG9rZW48RW52aXJvbm1lbnQ+KCdlbnZpcm9ubWVudCcpOyJdfQ==
4
+ export const LANGUAGES_CONFIG_TOKEN = new InjectionToken('languages');
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3NlcnZpY2UtbGliL3NyYy9saWIvY29uZmlndXJhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBb0QvQyxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLGNBQWMsQ0FBZ0IsZUFBZSxDQUFDLENBQUM7QUFDdEYsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxjQUFjLENBQWMsYUFBYSxDQUFDLENBQUM7QUFDcEYsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsSUFBSSxjQUFjLENBQWMsV0FBVyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbmZpZ3VyYWNpb24ge1xuICBMSVNUX0VOUE9JTlQ6IEFycmF5PGFueT47XG4gIElOREVYOiBudW1iZXI7XG4gIEFQSV9QUk9EX0VORFBPSU5UOnN0cmluZztcbiAgUFJPRF9FTkRQT0lOVDpzdHJpbmc7XG4gIEFQSV9QUkVfRU5EUE9JTlQ6c3RyaW5nO1xuICBQUkVfRU5EUE9JTlQ6c3RyaW5nO1xuICBBUElfRU5EUE9JTlRfREVWOiBzdHJpbmc7XG4gIEVORFBPSU5UX0RFVjogc3RyaW5nO1xuICBhcHBsZUFwcElkOiBzdHJpbmc7XG4gIGFuZHJvaWRCdW5kbGVJZDogc3RyaW5nO1xuICBWSURFT0NBTExfVVJMOiBzdHJpbmc7XG4gIFBSSU1BUllfQ09MT1I6IHN0cmluZztcbiAgZ29vZ2xlRml0UGFja2FnZUlEIDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFB1c2hlcnNDb25maWcge1xuICBQVVNIRVJfS0VZX1BSTzogUHVzaGVyS2V5O1xuICBQVVNIRVJfS0VZX0RFVjogUHVzaGVyS2V5O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFB1c2hlcktleXsgXG4gIGFwcF9pZDogc3RyaW5nLCBcbiAga2V5OiBzdHJpbmcsIFxuICBzZWNyZXQ6IHN0cmluZywgXG4gIGNsdXN0ZXI6IHN0cmluZywgXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRW52aXJvbm1lbnR7IFxuICBwcm9kdWN0aW9uOiBib29sZWFuLCBcbiAgYXBwU2hlbGxDb25maWc6IEFwcFNoZWxsQ29uZmlnLCBcbiAgZmlyZWJhc2U6IEZpcmViYXNlLCBcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBcHBTaGVsbENvbmZpZ3sgXG4gIGRlYnVnOiBib29sZWFuLCBcbiAgbmV0d29ya0RlbGF5OiBudW1iZXJcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGaXJlYmFzZXsgXG4gIGFwaUtleTogc3RyaW5nLCBcbiAgYXV0aERvbWFpbjogc3RyaW5nLCBcbiAgZGF0YWJhc2VVUkw6IHN0cmluZywgXG4gIHByb2plY3RJZDogc3RyaW5nLCBcbiAgc3RvcmFnZUJ1Y2tldDogc3RyaW5nLCBcbiAgbWVzc2FnaW5nU2VuZGVySWQ6IHN0cmluZywgXG4gIGFwcElkOiBzdHJpbmcsIFxuICBtZWFzdXJlbWVudElkOiBzdHJpbmdcbn1cblxuZXhwb3J0IGNvbnN0IENPTkZJR1VSQUNJT05fVE9LRU4gPSBuZXcgSW5qZWN0aW9uVG9rZW48Q29uZmlndXJhY2lvbj4oJ2NvbmZpZ3VyYWNpb24nKTtcbmV4cG9ydCBjb25zdCBGSVJFQkFTRV9DT05GSUdfVE9LRU4gPSBuZXcgSW5qZWN0aW9uVG9rZW48RW52aXJvbm1lbnQ+KCdlbnZpcm9ubWVudCcpO1xuZXhwb3J0IGNvbnN0IExBTkdVQUdFU19DT05GSUdfVE9LRU4gPSBuZXcgSW5qZWN0aW9uVG9rZW48RW52aXJvbm1lbnQ+KCdsYW5ndWFnZXMnKTsiXX0=
@@ -1,16 +1,16 @@
1
1
  import { NgModule } from '@angular/core';
2
2
  import { CommonModule } from '@angular/common';
3
3
  import { ServiceLibComponent } from './service-lib.component';
4
- import { CONFIGURACION_TOKEN, FIREBASE_CONFIG_TOKEN, PUSHERS_CONFIG_TOKEN } from './configuration';
4
+ import { CONFIGURACION_TOKEN, FIREBASE_CONFIG_TOKEN, LANGUAGES_CONFIG_TOKEN } from './configuration';
5
5
  import * as i0 from "@angular/core";
6
6
  export class ServiceLibModule {
7
- static forRoot(config, configPushers, environment) {
7
+ static forRoot(config, environment, languages) {
8
8
  return {
9
9
  ngModule: ServiceLibModule,
10
10
  providers: [
11
11
  { provide: CONFIGURACION_TOKEN, useValue: config },
12
- { provide: PUSHERS_CONFIG_TOKEN, useValue: configPushers },
13
12
  { provide: FIREBASE_CONFIG_TOKEN, useValue: environment },
13
+ { provide: LANGUAGES_CONFIG_TOKEN, useValue: languages },
14
14
  ]
15
15
  };
16
16
  }
@@ -30,4 +30,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
30
30
  ]
31
31
  }]
32
32
  }] });
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS1saWIubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvc2VydmljZS1saWIvc3JjL2xpYi9zZXJ2aWNlLWxpYi5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF1QixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSxtQkFBbUIsRUFBOEIscUJBQXFCLEVBQUUsb0JBQW9CLEVBQTRCLE1BQU8saUJBQWlCLENBQUM7O0FBZTFKLE1BQU0sT0FBTyxnQkFBZ0I7SUFFM0IsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFxQixFQUFFLGFBQTJCLEVBQUcsV0FBeUI7UUFDM0YsT0FBTztZQUNMLFFBQVEsRUFBRSxnQkFBZ0I7WUFDMUIsU0FBUyxFQUFFO2dCQUNULEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUU7Z0JBQ2xELEVBQUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUU7Z0JBQzFELEVBQUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUU7YUFDMUQ7U0FDRixDQUFDO0lBQ0osQ0FBQzsrR0FYVSxnQkFBZ0I7Z0hBQWhCLGdCQUFnQixpQkFSWixtQkFBbUIsYUFFaEMsWUFBWSxhQUdaLG1CQUFtQjtnSEFHVixnQkFBZ0IsWUFOekIsWUFBWTs7NEZBTUgsZ0JBQWdCO2tCQVQ1QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLG1CQUFtQixDQUFDO29CQUNuQyxPQUFPLEVBQUU7d0JBQ1AsWUFBWTtxQkFDYjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsbUJBQW1CO3FCQUNwQjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtJb25pY01vZHVsZSB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJ1xuaW1wb3J0IHsgU2VydmljZUxpYkNvbXBvbmVudCB9IGZyb20gJy4vc2VydmljZS1saWIuY29tcG9uZW50JztcbmltcG9ydCB7IENPTkZJR1VSQUNJT05fVE9LRU4sIENvbmZpZ3VyYWNpb24sIEVudmlyb25tZW50LCBGSVJFQkFTRV9DT05GSUdfVE9LRU4sIFBVU0hFUlNfQ09ORklHX1RPS0VOLCBQdXNoZXJLZXksIFB1c2hlcnNDb25maWcgfSAgZnJvbSAnLi9jb25maWd1cmF0aW9uJztcblxuZXhwb3J0IGludGVyZmFjZSBMaWJDb25maWcge1xuICBcbn1cblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbU2VydmljZUxpYkNvbXBvbmVudF0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBTZXJ2aWNlTGliQ29tcG9uZW50XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgU2VydmljZUxpYk1vZHVsZSB7IFxuXG4gIHN0YXRpYyBmb3JSb290KGNvbmZpZzogQ29uZmlndXJhY2lvbiwgY29uZmlnUHVzaGVyczpQdXNoZXJzQ29uZmlnICwgZW52aXJvbm1lbnQgOiBFbnZpcm9ubWVudCApOiBNb2R1bGVXaXRoUHJvdmlkZXJzPFNlcnZpY2VMaWJNb2R1bGU+IHtcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IFNlcnZpY2VMaWJNb2R1bGUsXG4gICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgeyBwcm92aWRlOiBDT05GSUdVUkFDSU9OX1RPS0VOLCB1c2VWYWx1ZTogY29uZmlnIH0sXG4gICAgICAgIHsgcHJvdmlkZTogUFVTSEVSU19DT05GSUdfVE9LRU4sIHVzZVZhbHVlOiBjb25maWdQdXNoZXJzIH0sXG4gICAgICAgIHsgcHJvdmlkZTogRklSRUJBU0VfQ09ORklHX1RPS0VOLCB1c2VWYWx1ZTogZW52aXJvbm1lbnQgfSxcbiAgICAgIF1cbiAgICB9O1xuICB9XG4gXG59XG4iXX0=
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS1saWIubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvc2VydmljZS1saWIvc3JjL2xpYi9zZXJ2aWNlLWxpYi5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF1QixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSxtQkFBbUIsRUFBOEIscUJBQXFCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTyxpQkFBaUIsQ0FBQzs7QUFnQmxJLE1BQU0sT0FBTyxnQkFBZ0I7SUFFM0IsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFxQixFQUFFLFdBQXlCLEVBQUUsU0FBeUI7UUFDeEYsT0FBTztZQUNMLFFBQVEsRUFBRSxnQkFBZ0I7WUFDMUIsU0FBUyxFQUFFO2dCQUNULEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUU7Z0JBQ2xELEVBQUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUU7Z0JBQ3pELEVBQUUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUU7YUFDekQ7U0FDRixDQUFDO0lBQ0osQ0FBQzsrR0FYVSxnQkFBZ0I7Z0hBQWhCLGdCQUFnQixpQkFSWixtQkFBbUIsYUFFaEMsWUFBWSxhQUdaLG1CQUFtQjtnSEFHVixnQkFBZ0IsWUFOekIsWUFBWTs7NEZBTUgsZ0JBQWdCO2tCQVQ1QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLG1CQUFtQixDQUFDO29CQUNuQyxPQUFPLEVBQUU7d0JBQ1AsWUFBWTtxQkFDYjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsbUJBQW1CO3FCQUNwQjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgU2VydmljZUxpYkNvbXBvbmVudCB9IGZyb20gJy4vc2VydmljZS1saWIuY29tcG9uZW50JztcbmltcG9ydCB7IENPTkZJR1VSQUNJT05fVE9LRU4sIENvbmZpZ3VyYWNpb24sIEVudmlyb25tZW50LCBGSVJFQkFTRV9DT05GSUdfVE9LRU4sIExBTkdVQUdFU19DT05GSUdfVE9LRU4gfSAgZnJvbSAnLi9jb25maWd1cmF0aW9uJztcbmltcG9ydCB7IExhbmd1YWdlTW9kZWwgfSBmcm9tICcuL3NlcnZpY2VzL2xhbmd1YWdlLm1vZGVsJztcblxuZXhwb3J0IGludGVyZmFjZSBMaWJDb25maWcge1xuICBcbn1cblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbU2VydmljZUxpYkNvbXBvbmVudF0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBTZXJ2aWNlTGliQ29tcG9uZW50XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgU2VydmljZUxpYk1vZHVsZSB7IFxuXG4gIHN0YXRpYyBmb3JSb290KGNvbmZpZzogQ29uZmlndXJhY2lvbiwgZW52aXJvbm1lbnQgOiBFbnZpcm9ubWVudCwgbGFuZ3VhZ2VzOkxhbmd1YWdlTW9kZWxbXSk6IE1vZHVsZVdpdGhQcm92aWRlcnM8U2VydmljZUxpYk1vZHVsZT4ge1xuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogU2VydmljZUxpYk1vZHVsZSxcbiAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7IHByb3ZpZGU6IENPTkZJR1VSQUNJT05fVE9LRU4sIHVzZVZhbHVlOiBjb25maWcgfSxcbiAgICAgICAgeyBwcm92aWRlOiBGSVJFQkFTRV9DT05GSUdfVE9LRU4sIHVzZVZhbHVlOiBlbnZpcm9ubWVudCB9LFxuICAgICAgICB7IHByb3ZpZGU6IExBTkdVQUdFU19DT05GSUdfVE9LRU4sIHVzZVZhbHVlOiBsYW5ndWFnZXMgfSxcbiAgICAgIF1cbiAgICB9O1xuICB9XG4gXG59XG4iXX0=
@@ -15,8 +15,6 @@ import * as i5 from "@angular/fire/compat/auth";
15
15
  import * as i6 from "@angular/router";
16
16
  import * as i7 from "./change-endpoints.service";
17
17
  const INTRO_KEY = 'intro';
18
- //const TOKENS = 'tokens';
19
- //const TOKEN_KEY = 'token';
20
18
  export class User {
21
19
  constructor(idUser, secret, name, first_name, image) {
22
20
  this.roles = [];
@@ -423,4 +421,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
423
421
  type: ViewChild,
424
422
  args: [RouterOutlet]
425
423
  }] } });
426
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aGVudGljYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NlcnZpY2UtbGliL3NyYy9saWIvc2VydmljZXMvYXV0aGVudGljYXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBWSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxlQUFlLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFFbkQsT0FBTyxFQUFjLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFHckUsT0FBTyxFQUFVLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXZELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXZELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7Ozs7O0FBRzVDLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQztBQUMxQiwwQkFBMEI7QUFDMUIsNEJBQTRCO0FBRTVCLE1BQU0sT0FBTyxJQUFJO0lBY2YsWUFBWSxNQUFjLEVBQUUsTUFBYyxFQUFFLElBQVksRUFBRSxVQUFrQixFQUFFLEtBQWE7UUFQM0YsVUFBSyxHQUFRLEVBQUUsQ0FBQztRQUdoQixtQkFBYyxHQUFpQixFQUFFLENBQUM7UUFLaEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUE7UUFDcEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUE7UUFDcEIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUE7UUFDaEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUE7UUFDNUIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUE7SUFFcEIsQ0FBQztJQUFBLENBQUM7Q0FFSDtBQUtELE1BQU0sT0FBTyxxQkFBcUI7SUFxQmhDLFlBQytCLFVBQWtCLEVBQ3ZDLElBQWdCLEVBQ2hCLFlBQTBCLEVBQzFCLEdBQXdCLEVBQ3pCLFFBQWtCLEVBQ2xCLFlBQTZCLEVBQzdCLE1BQWMsRUFDZCxlQUFnQyxFQUMvQixRQUFrQixFQUNsQixTQUFpQztRQVRaLGVBQVUsR0FBVixVQUFVLENBQVE7UUFDdkMsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixRQUFHLEdBQUgsR0FBRyxDQUFxQjtRQUN6QixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLGlCQUFZLEdBQVosWUFBWSxDQUFpQjtRQUM3QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2Qsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQy9CLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsY0FBUyxHQUFULFNBQVMsQ0FBd0I7UUE5QjNDLG9CQUFlLEdBQTZCLElBQUksZUFBZSxDQUFVLElBQUksQ0FBQyxDQUFDO1FBRXhFLGVBQVUsR0FBWSxLQUFLLENBQUM7UUFNNUIsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQVNmLFdBQU0sR0FBRyxFQUFFLENBQUE7UUFDbkIsdUJBQWtCLEdBQVksS0FBSyxDQUFDO1FBYWhDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRUQsZ0JBQWdCO1FBQ2QsSUFBSSxDQUFDLGFBQWEsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFBO1FBQzdELG1FQUFtRTtJQUNyRSxDQUFDO0lBRUQsWUFBWTtRQUNWLE1BQU0sS0FBSyxHQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLENBQUE7UUFDL0MsdURBQXVEO1FBQ3ZELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELFlBQVksQ0FBQyxLQUFLO1FBQ2hCLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ3ZDLENBQUM7SUFFRCxtQkFBbUI7SUFDbkIsbURBQW1EO0lBQ25ELGtCQUFrQjtJQUNsQixJQUFJO0lBRUosd0JBQXdCO0lBQ3hCLDRDQUE0QztJQUM1QyxJQUFJO0lBRUosS0FBSyxDQUFDLFdBQXlDO1FBQzdDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRXZELDRDQUE0QztRQUM1QyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQy9DLEdBQUcsQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO1lBRWYsMkNBQTJDO1lBQzNDLGtEQUFrRDtZQUNsRCxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNqQixPQUFPLEdBQUcsQ0FBQTtZQUNaLENBQUM7WUFDRCxvQkFBb0I7WUFDcEIsSUFBSSxHQUFHLENBQUMsS0FBSyxFQUFDLENBQUM7Z0JBQ2IsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUMxQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMvQixDQUFDO1lBRUQsd0NBQXdDO1lBQ3RDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFBO1lBQ3JCLElBQUksU0FBUyxDQUFDLGdCQUFnQixFQUFFLEVBQUUsQ0FBQztnQkFDakMsc0JBQXNCO2dCQUN0QixJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUM7Z0JBQ2xCLElBQUcsSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsY0FBYztvQkFDeEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztnQkFFN0QsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBQyxDQUFDO29CQUMzQixJQUFHLElBQUksQ0FBQyxlQUFlO3dCQUN2QixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsY0FBYztvQkFDdkcsMEdBQTBHO2dCQUc5RyxDQUFDO1lBRUgsQ0FBQztZQUVMLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxXQUFXLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDcEcsSUFBSSxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDO1lBQzFCLElBQUksQ0FBQyxlQUFlLEdBQUcsR0FBRyxDQUFDLHNCQUFzQixDQUFDO1lBRWxELElBQUksR0FBRyxFQUFFLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQy9CLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUM7WUFDNUMsQ0FBQztZQUVELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7WUFDbkMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUE7WUFFdEMsT0FBTyxHQUFHLENBQUM7UUFFYixDQUFDLENBQUMsRUFDRixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDTixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsQyxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVELE9BQU87UUFDTCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2YsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUNyQyx5REFBeUQ7Z0JBQ3pELElBQUksSUFBSTtvQkFDTixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQTtZQUNwQixDQUFDLENBQUMsQ0FBQTtRQUNKLENBQUM7SUFFSCxDQUFDO0lBRUQsbUJBQW1CLENBQUMsSUFBSTtRQUN0QixxRUFBcUU7UUFDckUsV0FBVyxDQUFDLEdBQUcsQ0FBQztZQUNkLEdBQUcsRUFBRSxNQUFNO1lBQ1gsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDO1NBQzVCLENBQUMsQ0FBQztJQUVMLENBQUM7SUFFRCw4QkFBOEIsQ0FBQyxNQUFNO1FBQ25DLGtGQUFrRjtRQUNsRixXQUFXLENBQUMsR0FBRyxDQUFDO1lBQ2QsR0FBRyxFQUFFLGlCQUFpQjtZQUN0QixLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUM7U0FDOUIsQ0FBQyxDQUFDO0lBRUwsQ0FBQztJQUVELHlCQUF5QixDQUFDLFVBQWM7UUFHdEMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUMxQixJQUFJLENBQUMsR0FBVyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDL0IsSUFBSSxRQUFRLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUM1QixJQUFJLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7WUFDbEYsc0NBQXNDO1lBQ3RDLFdBQVcsQ0FBQyxHQUFHLENBQUM7Z0JBQ2QsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO2dCQUNyQixLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7YUFDekIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQseUJBQXlCLENBQUMsRUFBRTtRQUMxQixPQUFPLFdBQVcsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUMvQywrRUFBK0U7WUFDL0UsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMvQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxLQUFLLENBQUMsYUFBYSxDQUFDLElBQUk7UUFDN0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDckIsSUFBSSxDQUFDLEdBQVcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzdCLElBQUksUUFBUSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFNUIsSUFBSSxZQUFZLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQTtRQUc1QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLGlDQUFpQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQy9HLElBQUksQ0FBQyxJQUFJLENBQUMsNEJBQTRCLEdBQUcsWUFBWSxDQUFDO1FBQ3RELElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUM7UUFFL0IsV0FBVyxDQUFDLEdBQUcsQ0FBQztZQUNkLEdBQUcsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNwQixLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1NBQ2pDLENBQUMsQ0FBQztJQUdMLENBQUM7SUFFRCxtQkFBbUI7UUFDakIsT0FBTyxXQUFXLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDbkQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMvQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxLQUFLLENBQUMsZUFBZSxDQUFDLEVBQUU7UUFFN0IsTUFBTSxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDM0MsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7WUFDdEIsNkRBQTZEO1lBQzdELElBQUksQ0FBQyxHQUFXLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUM3QixJQUFJLFFBQVEsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzVCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsRUFBRSxpQ0FBaUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQ3JILElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ3JDLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVELHdCQUF3QjtRQUN0QixPQUFPLFdBQVcsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUN4RCxxRUFBcUU7WUFDckUsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQzNCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELEtBQUssQ0FBQyx3QkFBd0I7UUFDNUIsTUFBTSxXQUFXLENBQUMsR0FBRyxDQUFDO1lBQ3BCLEdBQUcsRUFBRSxXQUFXO1lBQ2hCLEtBQUssRUFBRSxNQUFNO1NBQ2QsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELG9DQUFvQyxDQUFDLE9BQWU7UUFDbEQsWUFBWSxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQsS0FBSyxDQUFDLGdDQUFnQztRQUNwQyxNQUFNLFdBQVcsQ0FBQyxHQUFHLENBQUM7WUFDcEIsR0FBRyxFQUFFLG1CQUFtQjtZQUN4QixLQUFLLEVBQUUsTUFBTTtTQUNkLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxZQUFZLENBQUMsUUFBUTtRQUNuQixZQUFZLENBQUMsT0FBTyxDQUFDLG1CQUFtQixFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxLQUFLLENBQUMsT0FBTztRQUNYLHdCQUF3QjtRQUN4QixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqQyxNQUFNLFdBQVcsQ0FBQyxNQUFNLENBQUMsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzFELElBQUksQ0FBQyxZQUFZLENBQUMsZUFBZSxFQUFFLENBQUE7UUFDdEMsT0FBTTtJQUNSLENBQUM7SUFFRCxNQUFNLENBQUMsVUFBVztRQUNoQixJQUFJLElBQUksR0FBRyxnQkFBZ0IsQ0FBQTtRQUMzQiwyQkFBMkI7UUFDM0IsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQ3BELElBQUksTUFBTSxHQUFHO1lBQ1gsTUFBTSxFQUFHLE1BQU0sRUFBRSxFQUFFO1lBQ25CLFVBQVUsRUFBRSxVQUFVLENBQUEsQ0FBQyxDQUFDLFVBQVUsQ0FBQSxDQUFDLENBQUMsS0FBSztTQUMxQyxDQUFBO1FBQ0QsaUNBQWlDO1FBQ2pDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FDMUMsR0FBRyxDQUFFLENBQUMsR0FBUSxFQUFFLEVBQUU7WUFDaEIscUZBQXFGO1lBQ3JGLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2hDLFdBQVcsQ0FBQyxNQUFNLENBQUMsRUFBRSxHQUFHLEVBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDdEUsV0FBVyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDdkQsSUFBSSxDQUFDLFlBQVksQ0FBQyxlQUFlLEVBQUUsQ0FBQTtZQUNwQyxPQUFPLEdBQUcsQ0FBQztRQUNiLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDTixDQUFDO0lBRUQsc0JBQXNCO1FBQ3BCLElBQUksWUFBWSxHQUFHLENBQUMsQ0FBQTtRQUNwQixJQUFJLEdBQUcsR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDakQsSUFBRyxHQUFHLEVBQUMsQ0FBQztZQUNOLElBQUksWUFBWSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFBO1lBQzlDLFlBQVksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLEVBQUMsRUFBRSxHQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ3ZELFlBQVksQ0FBQyxPQUFPLENBQUMseUJBQXlCLEVBQUMsRUFBRSxHQUFDLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDNUUsQ0FBQzthQUFJLENBQUM7WUFDSixZQUFZLENBQUMsT0FBTyxDQUFDLGdCQUFnQixFQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzNDLFlBQVksQ0FBQyxPQUFPLENBQUMseUJBQXlCLEVBQUMsRUFBRSxHQUFDLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDMUUsWUFBWSxHQUFHLENBQUMsQ0FBQTtRQUNsQixDQUFDO1FBQ0QsZ0ZBQWdGO0lBQ2xGLENBQUM7SUFFRCxzQkFBc0I7UUFDcEIsSUFBSSxHQUFHLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBQ3hELElBQUcsR0FBRyxFQUFDLENBQUM7WUFDTixZQUFZLENBQUMsT0FBTyxDQUFDLGdCQUFnQixFQUFDLEVBQUUsR0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN4RSxZQUFZLENBQUMsT0FBTyxDQUFDLHlCQUF5QixFQUFDLEVBQUUsR0FBQyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzVFLENBQUM7YUFBSSxDQUFDO1lBQ0osWUFBWSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBQyxHQUFHLENBQUMsQ0FBQztZQUMzQyxZQUFZLENBQUMsT0FBTyxDQUFDLHlCQUF5QixFQUFDLEVBQUUsR0FBQyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzVFLENBQUM7SUFDSCxDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsSUFBSSxHQUFHLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ2pELElBQUcsR0FBRztZQUFFLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQTtRQUN0QyxPQUFPLENBQUMsQ0FBQTtJQUNWLENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsSUFBSSxHQUFHLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1FBQzFELElBQUcsR0FBRztZQUFFLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQTtRQUN0QyxPQUFPLENBQUMsQ0FBQTtJQUNWLENBQUM7SUFFRCx5QkFBeUI7UUFDdkIsSUFBSSxHQUFHLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBQ3hELElBQUcsR0FBRztZQUFFLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQTtRQUN0QyxPQUFPLENBQUMsQ0FBQTtJQUNWLENBQUM7SUFFRCxvQkFBb0I7UUFDbEIsWUFBWSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzFDLFlBQVksQ0FBQyxVQUFVLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsc0JBQXNCO1FBQ3BCLFlBQVksQ0FBQyxVQUFVLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUNqRCxZQUFZLENBQUMsVUFBVSxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVELEdBQUcsQ0FBQyxLQUFLO1FBQ1AsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNsRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FDakMsR0FBRyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7WUFDZixPQUFPLEdBQUcsQ0FBQztRQUNiLENBQUMsQ0FBQyxDQUNILENBQUM7SUFFSixDQUFDO0lBRUQsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLO1FBQ2YsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNsRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQ3pDLEdBQUcsQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO1lBQ2YsT0FBTyxHQUFHLENBQUM7UUFDYixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFVO1FBRW5CLElBQUksS0FBSyxZQUFZLGlCQUFpQjtZQUNwQyxNQUFNLElBQUksaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUM7O1lBRW5DLE1BQU0sSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUdNLGNBQWMsQ0FBQyxLQUFLLEVBQUUsUUFBUTtRQUVsQyxJQUFHLFFBQVEsSUFBSSxLQUFLO1lBQ25CLFFBQVEsR0FBRyxTQUFTLENBQUM7UUFDdEIsSUFBRyxRQUFRLElBQUksTUFBTTtZQUNwQixRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQztRQUMzRCxJQUFHLFFBQVEsSUFBSSxLQUFLO1lBQ25CLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDO1FBRTNELE1BQU0sUUFBUSxHQUFHO1lBQ2hCLEtBQUssRUFBRSxLQUFLO1lBQ1osUUFBUSxFQUFFLFFBQVE7WUFDbEIsT0FBTyxFQUFFLENBQUM7U0FDWCxDQUFDO1FBRUgsMENBQTBDO1FBRXpDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxRQUFRLENBQUMsQ0FBQyxTQUFTLENBQzFELEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRTtZQUNiLElBQUksUUFBUSxHQUFDLElBQUksQ0FBQztZQUNuQixrREFBa0Q7WUFDakQsMEJBQTBCO1lBQzFCLElBQUksQ0FBQyxZQUFZLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLENBQUE7WUFDL0Msb0NBQW9DO1lBQ3BDLE9BQU8sUUFBUSxDQUFDO1FBQ2xCLENBQUMsRUFDRCxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ1Isb0JBQW9CO1lBQ3BCLHFEQUFxRDtZQUNyRCxNQUFNLEtBQUssQ0FBQztRQUNkLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELDhCQUE4QjtJQUM5Qiw0QkFBNEI7SUFDNUIsdUVBQXVFO0lBQ3ZFLDZEQUE2RDtJQUM3RCxJQUFJO0lBRUosd0JBQXdCO0lBQ3hCLHdEQUF3RDtJQUN4RCwrREFBK0Q7SUFDL0QsZ0NBQWdDO0lBQ2hDLElBQUk7SUFHSixLQUFLLENBQUMsU0FBUztRQUNiLE9BQU8sV0FBVyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUU7WUFDN0QsSUFBSSxTQUFTLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtZQUNuQyxzREFBc0Q7WUFDdEQsT0FBTyxTQUFTLENBQUM7UUFFbkIsQ0FBQyxDQUFDLENBQUE7SUFFSixDQUFDO0lBRUQsZ0NBQWdDO1FBQzlCLE9BQU8sV0FBVyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxtQkFBbUIsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDaEUsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQzNCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUdELGdCQUFnQixDQUFDLE1BQWM7UUFDN0IsSUFBSSxJQUFJLEdBQUcsZ0JBQWdCLENBQUM7UUFDNUIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUMxQyxHQUFHLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRTtZQUNmLHFFQUFxRTtZQUNyRSxPQUFPLEdBQUcsQ0FBQztRQUViLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRUQsZUFBZSxDQUFDLEVBQU8sRUFBRSxNQUFjO1FBQ3JDLElBQUksSUFBSSxHQUFHLGtCQUFrQixFQUFFLEVBQUUsQ0FBQztRQUNsQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1QyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQ3pDLEdBQUcsQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO1lBQ2Ysb0VBQW9FO1lBQ3BFLE9BQU8sR0FBRyxDQUFDO1FBRWIsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxFQUFVO1FBQzNCLElBQUksSUFBSSxHQUFHLGtCQUFrQixFQUFFLEVBQUUsQ0FBQztRQUNsQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1QyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FDcEMsR0FBRyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7WUFDZiw2RkFBNkY7WUFDN0YsT0FBTyxHQUFHLENBQUM7UUFDYixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVELGFBQWE7UUFDWCxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBR0QsS0FBSyxDQUFDLHVCQUF1QjtRQUV6QixNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUE7UUFFNUQsTUFBTSxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQztZQUM5QyxRQUFRLEVBQUUsWUFBWTtZQUN0QixNQUFNLEVBQUcsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQztZQUMvQyxlQUFlLEVBQUMsS0FBSztZQUNyQix5QkFBeUI7WUFDekIsT0FBTyxFQUFFLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQztZQUN4RCxPQUFPLEVBQUU7Z0JBQ1AsRUFBQyxJQUFJLEVBQUUsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQztvQkFDaEQsT0FBTyxFQUFFLEdBQUcsRUFBRTt3QkFDWixJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQztvQkFDeEMsQ0FBQztpQkFDRjthQUNBO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsTUFBTSxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVELDRCQUE0QjtRQUMxQixPQUFPLFdBQVcsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsZUFBZSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUM1RCxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDM0IsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsS0FBSyxDQUFDLDRCQUE0QjtRQUNoQyxNQUFNLFdBQVcsQ0FBQyxHQUFHLENBQUM7WUFDcEIsR0FBRyxFQUFFLGVBQWU7WUFDcEIsS0FBSyxFQUFFLE1BQU07U0FDZCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsZ0NBQWdDLENBQUMsT0FBZTtRQUM5QyxZQUFZLENBQUMsT0FBTyxDQUFDLGlCQUFpQixFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRCxnQ0FBZ0M7UUFDOUIsTUFBTSxLQUFLLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFBO1FBQ3JELE9BQU8sS0FBSyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ3BELENBQUM7K0dBMWVRLHFCQUFxQixrQkFzQnRCLFdBQVc7bUhBdEJWLHFCQUFxQixjQUZwQixNQUFNOzs0RkFFUCxxQkFBcUI7a0JBSGpDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkF1QkksTUFBTTsyQkFBQyxXQUFXO21TQUZJLE1BQU07c0JBQTlCLFNBQVM7dUJBQUMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0b3IsIFBMQVRGT1JNX0lELCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFByZWZlcmVuY2VzIH0gZnJvbSAnQGNhcGFjaXRvci9wcmVmZXJlbmNlcyc7XG5pbXBvcnQgeyBtYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQXBpRW5kcG9pbnRzU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2FwaS1lbmRwb2ludHMuc2VydmljZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEFsZXJ0Q29udHJvbGxlciwgUGxhdGZvcm0gfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQgeyBBbmd1bGFyRmlyZUF1dGggfSBmcm9tIFwiQGFuZ3VsYXIvZmlyZS9jb21wYXQvYXV0aFwiO1xuaW1wb3J0IHsgUm91dGVyLCBSb3V0ZXJPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgRmFtaWx5VW5pdCB9IGZyb20gJy4uL21vZGVscy91c2VyJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IFRva2VuU2VydmljZSB9IGZyb20gJy4vdG9rZW4uc2VydmljZSc7XG5pbXBvcnQgeyBDYXBhY2l0b3IgfSBmcm9tICdAY2FwYWNpdG9yL2NvcmUnO1xuaW1wb3J0IHsgQ2hhbmdlRW5kcG9pbnRzU2VydmljZSB9IGZyb20gJy4vY2hhbmdlLWVuZHBvaW50cy5zZXJ2aWNlJztcblxuY29uc3QgSU5UUk9fS0VZID0gJ2ludHJvJztcbi8vY29uc3QgVE9LRU5TID0gJ3Rva2Vucyc7XG4vL2NvbnN0IFRPS0VOX0tFWSA9ICd0b2tlbic7XG5cbmV4cG9ydCBjbGFzcyBVc2VyIHtcbiAgY29uZGljaW9uX2xlZ2FsOiBib29sZWFuO1xuICBpbWFnZTogYW55O1xuICBpZFBhdGllbnQ6IHN0cmluZztcbiAgaWRVc2VyOiBzdHJpbmc7XG4gIGZpcnN0X25hbWU6IHN0cmluZztcbiAgc2VjcmV0OiBzdHJpbmc7XG4gIHJvbGVzOiBhbnkgPSBbXTtcbiAgZmFtaWx5VW5pdDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIGxpc3RGYW1pbHlVbml0OiBGYW1pbHlVbml0W10gPSBbXTtcblxuICBzZWxlY3RlZENhcmVnaXZlclJlc3BvbnNpYmxlO1xuXG4gIGNvbnN0cnVjdG9yKGlkVXNlcjogc3RyaW5nLCBzZWNyZXQ6IHN0cmluZywgbmFtZTogc3RyaW5nLCBmaXJzdF9uYW1lOiBzdHJpbmcsIGltYWdlOiBzdHJpbmcpIHtcbiAgICB0aGlzLmlkVXNlciA9IGlkVXNlclxuICAgIHRoaXMuc2VjcmV0ID0gc2VjcmV0XG4gICAgdGhpcy5uYW1lID0gbmFtZVxuICAgIHRoaXMuZmlyc3RfbmFtZSA9IGZpcnN0X25hbWVcbiAgICB0aGlzLmltYWdlID0gaW1hZ2VcblxuICB9O1xuXG59XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEF1dGhlbnRpY2F0aW9uU2VydmljZSB7XG4gIGlzQXV0aGVudGljYXRlZDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihudWxsKTtcbiAgcHVibGljIHVzZXI6IFVzZXI7XG4gIHB1YmxpYyBpc1JlY292ZXJ5OiBib29sZWFuID0gZmFsc2U7XG4gIHB1YmxpYyBhY3Rpb246IHN0cmluZztcbiAgcHVibGljIGlkX3VzZXI6IHN0cmluZztcbiAgcHVibGljIGVtZXJnZW5jeU51bWJlcjogc3RyaW5nO1xuICBwdWJsaWMgZGF0YTogQXJyYXk8YW55PjtcbiAgcHVibGljIGVtYWlsOiBzdHJpbmc7XG4gIHB1YmxpYyBhZ2VuZGFVc2VyID0gW107XG4gIHB1YmxpYyB0aWVuZV9lbWFpbDogYm9vbGVhbjtcbiAgcHVibGljIGRldmljZVRva2VuOiBzdHJpbmc7XG4gIHB1YmxpYyBkZXZpY2VQbGF0Zm9ybTogc3RyaW5nO1xuICBwdWJsaWMgdm9pcERldmljZVRva2VuOiBzdHJpbmc7XG4gIHB1YmxpYyB2b2lwRGV2aWNlUGxhdGZvcm06IHN0cmluZztcbiAgcHVibGljIGRpZXRzQW5kQWR2aWNlczogW107XG4gIHB1YmxpYyBpc0ZhbWlseTpib29sZWFuO1xuICBwcml2YXRlIGluZGV4RW5kUG9pbnQ6IG51bWJlcjtcbiAgcHJpdmF0ZSB0b2tlbnMgPSBbXVxuICBzaG93aW5nU2lnbkluQWxlcnQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQFZpZXdDaGlsZChSb3V0ZXJPdXRsZXQpIG91dGxldDogUm91dGVyT3V0bGV0O1xuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIHBsYXRmb3JtSWQ6IG9iamVjdCxcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgcHJpdmF0ZSB0b2tlblNlcnZpY2U6IFRva2VuU2VydmljZSxcbiAgICBwcml2YXRlIGFwaTogQXBpRW5kcG9pbnRzU2VydmljZSxcbiAgICBwdWJsaWMgcGxhdGZvcm06IFBsYXRmb3JtLFxuICAgIHB1YmxpYyBmaXJlYmFzZUF1dGg6IEFuZ3VsYXJGaXJlQXV0aCxcbiAgICBwdWJsaWMgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHVibGljIGFsZXJ0Q29udHJvbGxlcjogQWxlcnRDb250cm9sbGVyLFxuICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHByaXZhdGUgZW5kcG9pbnRzOiBDaGFuZ2VFbmRwb2ludHNTZXJ2aWNlKSB7XG4gICAgICB0aGlzLnNldFVzZXIoKTtcbiAgfVxuXG4gIGdldEluZGV4RW5kUG9pbnQoKXtcbiAgICB0aGlzLmluZGV4RW5kUG9pbnQgPSBOdW1iZXIobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2VuZHBvaW50JykpXG4gICAgLy9jb25zb2xlLmxvZyhcIltBdXRoU2VydmljZV0gaW5kZXhFbmRQb2ludDogXCIsIHRoaXMuaW5kZXhFbmRQb2ludCk7XG4gIH1cblxuICBnZXRBdXRoVG9rZW4oKSB7XG4gICAgY29uc3QgdG9rZW4gPSAgdGhpcy50b2tlblNlcnZpY2UuZ2V0QXV0aFRva2VuKClcbiAgICAvLy8vY29uc29sZS5sb2coXCJbQXV0aFNlcnZpY2VdIGdldEF1dGhUb2tlbjogXCIsIHRva2VuKTtcbiAgICByZXR1cm4gdG9rZW47XG4gIH1cblxuICBzZXRBdXRoVG9rZW4odG9rZW4pIHtcbiAgICB0aGlzLnRva2VuU2VydmljZS5zZXRBdXRoVG9rZW4odG9rZW4pXG4gIH1cblxuICAvLyBnZXRBdXRoVG9rZW4oKSB7XG4gIC8vICAgY29uc3QgdG9rZW4gPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShUT0tFTl9LRVkpO1xuICAvLyAgIHJldHVybiB0b2tlbjtcbiAgLy8gfVxuXG4gIC8vIHNldEF1dGhUb2tlbih0b2tlbikge1xuICAvLyAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFRPS0VOX0tFWSwgdG9rZW4pO1xuICAvLyB9XG5cbiAgbG9naW4oY3JlZGVudGlhbHM6IHsgdXNlcm5hbWUsIHBhc3N3b3JkLCBoYXNoIH0pOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGNvbnN0IGVuZHBvaW50ID0gdGhpcy5hcGkuZ2V0RW5kcG9pbnQoJ3BhdGllbnQvbG9naW4nKTtcblxuICAgIC8vY29uc29sZS5sb2coJ2NyZWRlbnRpYWxzOiAnLCBjcmVkZW50aWFscyk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGVuZHBvaW50LCBjcmVkZW50aWFscykucGlwZShcbiAgICAgIG1hcCgocmVzOiBhbnkpID0+IHtcblxuICAgICAgICAvL2NvbnNvbGUubG9nKFwiW0F1dGhTZXJ2aWNlXSBsb2dpbigpIE9LIFwiKTtcbiAgICAgICAgLy9jb25zb2xlLmxvZyhcIltBdXRoU2VydmljZV0gZW5kcG9pbnRcIiwgZW5kcG9pbnQpO1xuICAgICAgICBpZiAoIXJlcy5zdWNjZXNzKSB7XG4gICAgICAgICAgcmV0dXJuIHJlc1xuICAgICAgICB9XG4gICAgICAgIC8vIHNhdmUgdXNlcidzIHRva2VuXG4gICAgICAgIGlmIChyZXMudG9rZW4pe1xuICAgICAgICAgIHRoaXMudG9rZW5TZXJ2aWNlLnNldEF1dGhUb2tlbihyZXMudG9rZW4pO1xuICAgICAgICAgIHRoaXMuc2V0QXV0aFRva2VuKHJlcy50b2tlbik7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTZXQgaW5kZXhFbmRQb2ludCBpb3NfZGV2IGlmIGl0IGlzIFFBXG4gICAgICAgICAgdGhpcy5nZXRJbmRleEVuZFBvaW50KClcbiAgICAgICAgICAgIGlmIChDYXBhY2l0b3IuaXNOYXRpdmVQbGF0Zm9ybSgpKSB7XG4gICAgICAgICAgICAgIC8vLy9jb25zb2xlLmxvZyhkYXRhKTtcbiAgICAgICAgICAgICAgbGV0IGFjY2VzcyA9IHRydWU7XG4gICAgICAgICAgICAgIGlmKHRoaXMuZGV2aWNlVG9rZW4gJiYgdGhpcy5kZXZpY2VQbGF0Zm9ybSlcbiAgICAgICAgICAgICAgICB0aGlzLnJlZ2lzdGVyRGV2aWNlKHRoaXMuZGV2aWNlVG9rZW4sIHRoaXMuZGV2aWNlUGxhdGZvcm0pO1xuXG4gICAgICAgICAgICAgIGlmICh0aGlzLnBsYXRmb3JtLmlzKCdpb3MnKSl7XG4gICAgICAgICAgICAgICAgaWYodGhpcy52b2lwRGV2aWNlVG9rZW4pXG4gICAgICAgICAgICAgICAgdGhpcy5yZWdpc3RlckRldmljZSh0aGlzLnZvaXBEZXZpY2VUb2tlbiwgdGhpcy5lbmRwb2ludHMuX0VOVklST01FTlQuZGV2aWNlX2lvcy5pb3Nfdm9pcCk7IC8vIGRlc2FvcnJvbGxvXG4gICAgICAgICAgICAgICAgICAvL3RoaXMucmVnaXN0ZXJEZXZpY2UodGhpcy52b2lwRGV2aWNlVG9rZW4sICh0aGlzLmluZGV4RW5kUG9pbnQhPT0wKT8naW9zdm9pcGRldic6J2lvc3ZvaXAnKTsgLy9wcm9kdWNjaW9uXG4gICAgICAgICAgICAgICAgXG5cbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgdGhpcy51c2VyID0gbmV3IFVzZXIocmVzLmlkVXNlciwgY3JlZGVudGlhbHMucGFzc3dvcmQsIHJlcy5uYW1lLCByZXMuZmlyc3RfbmFtZSwgcmVzLnRlbXBvcmFyeV91cmwpO1xuICAgICAgICB0aGlzLmlkX3VzZXIgPSByZXMuaWRVc2VyO1xuICAgICAgICB0aGlzLmVtZXJnZW5jeU51bWJlciA9IHJlcy5lbWVyZ2VuY3lfcGhvbmVfYnV0dG9uO1xuICAgICAgICBcbiAgICAgICAgaWYgKHJlcz8uZmFtaWx5VW5pdC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgdGhpcy51c2VyLmxpc3RGYW1pbHlVbml0ID0gcmVzLmZhbWlseVVuaXQ7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNldFVzZXJMb2NhbHN0b3JhZ2UodGhpcy51c2VyKVxuICAgICAgICB0aGlzLnNldFR3b0ZhY3RvcihyZXMudHdvRmFjdG9yQ2VudGVyKVxuXG4gICAgICAgIHJldHVybiByZXM7XG5cbiAgICAgIH0pLFxuICAgICAgdGFwKF8gPT4ge1xuICAgICAgICB0aGlzLmlzQXV0aGVudGljYXRlZC5uZXh0KHRydWUpO1xuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIHNldFVzZXIoKSB7XG4gICAgaWYgKCF0aGlzLnVzZXIpIHtcbiAgICAgIHRoaXMuZ2V0VXNlckxvY2Fsc3RvcmFnZSgpLnRoZW4odXNlciA9PiB7XG4gICAgICAgIC8vY29uc29sZS5sb2coXCJbQXV0aGVudGljYXRpb25TZXJ2aWNlXSBzZXRVc2VyKClcIiwgdXNlcik7XG4gICAgICAgIGlmICh1c2VyKVxuICAgICAgICAgIHRoaXMudXNlciA9IHVzZXJcbiAgICAgIH0pXG4gICAgfVxuXG4gIH1cblxuICBzZXRVc2VyTG9jYWxzdG9yYWdlKHVzZXIpIHtcbiAgICAvL2NvbnNvbGUubG9nKGBbQXV0aGVudGljYXRpb25TZXJ2aWNlXSBzZXRVc2VyTG9jYWxzdG9yYWdlKClgLCB1c2VyKTtcbiAgICBQcmVmZXJlbmNlcy5zZXQoe1xuICAgICAga2V5OiAndXNlcicsXG4gICAgICB2YWx1ZTogSlNPTi5zdHJpbmdpZnkodXNlcilcbiAgICB9KTtcblxuICB9XG5cbiAgc2V0RW1lcmdlbmN5TnVtYmVyTG9jYWxTdG9yYWdlKG51bWJlcikge1xuICAgIC8vY29uc29sZS5sb2coYFtBdXRoZW50aWNhdGlvblNlcnZpY2VdIHNldEVtZXJnZW5jeU51bWJlckxvY2FsU3RvcmFnZSgpYCwgbnVtYmVyKTtcbiAgICBQcmVmZXJlbmNlcy5zZXQoe1xuICAgICAga2V5OiAnZW1lcmdlbmN5TnVtYmVyJyxcbiAgICAgIHZhbHVlOiBKU09OLnN0cmluZ2lmeShudW1iZXIpXG4gICAgfSk7XG5cbiAgfVxuXG4gIHNldEZhbWlseVVuaXRMb2NhbHN0b3JhZ2UoZmFtaWx5VW5pdDogW10pIHtcblxuXG4gICAgZmFtaWx5VW5pdC5mb3JFYWNoKG1lbWJlciA9PiB7XG4gICAgICBsZXQgczogc3RyaW5nID0gbWVtYmVyWyduYW1lJ107XG4gICAgICBsZXQgZnVsbG5hbWUgPSBzLnNwbGl0KCcsJyk7XG4gICAgICBsZXQgdSA9IG5ldyBVc2VyKG1lbWJlclsnaWQnXSwgJycsIGZ1bGxuYW1lWzFdLCBmdWxsbmFtZVswXSwgbWVtYmVyWyd0aHVtYm5haWwnXSk7XG4gICAgICAvL2NvbnNvbGUubG9nKFwiZmFtaWx5VW5pdCBMb2NhbDpcIiwgdSk7XG4gICAgICBQcmVmZXJlbmNlcy5zZXQoe1xuICAgICAgICBrZXk6IFN0cmluZyh1LmlkVXNlciksXG4gICAgICAgIHZhbHVlOiBKU09OLnN0cmluZ2lmeSh1KVxuICAgICAgfSk7XG4gICAgfSlcbiAgfVxuXG4gIGdldEZhbWlseVVuaXRMb2NhbHN0b3JhZ2UoaWQpOiBQcm9taXNlPFVzZXI+IHtcbiAgICByZXR1cm4gUHJlZmVyZW5jZXMuZ2V0KHsga2V5OiBpZCB9KS50aGVuKCh2YWwpID0+IHtcbiAgICAgIC8vY29uc29sZS5sb2coYFtBdXRoZW50aWNhdGlvblNlcnZpY2VdIGdldEZhbWlseVVuaXRMb2NhbHN0b3JhZ2UoJHtpZH0pYCwgdmFsKTtcbiAgICAgIHJldHVybiBKU09OLnBhcnNlKHZhbC52YWx1ZSk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgc2V0RmFtaWx5VW5pdCh1c2VyKSB7XG4gICAgdGhpcy5pc0ZhbWlseSA9IHRydWU7XG4gICAgbGV0IHM6IHN0cmluZyA9IHVzZXJbJ25hbWUnXTtcbiAgICBsZXQgZnVsbG5hbWUgPSBzLnNwbGl0KCcsJyk7XG5cbiAgICBsZXQgcHJldmlvdXNVc2VyID0gdGhpcy51c2VyXG4gICAgXG5cbiAgICB0aGlzLnVzZXIgPSBuZXcgVXNlcih1c2VyLmlkLCAnJywgLyogZnVsbG5hbWVbMF0ucmVwbGFjZSgnLCcsJycpICovIHVzZXJbJ25hbWUnXSwgZnVsbG5hbWVbMV0sIHVzZXIudGh1bWJuYWlsKTtcbiAgICB0aGlzLnVzZXIuc2VsZWN0ZWRDYXJlZ2l2ZXJSZXNwb25zaWJsZSA9IHByZXZpb3VzVXNlcjtcbiAgICB0aGlzLnVzZXIuZmFtaWx5VW5pdCA9IHVzZXIuaWQ7XG4gICAgXG4gICAgUHJlZmVyZW5jZXMuc2V0KHtcbiAgICAgIGtleTogU3RyaW5nKHVzZXIuaWQpLFxuICAgICAgdmFsdWU6IEpTT04uc3RyaW5naWZ5KHRoaXMudXNlcilcbiAgICB9KTtcblxuXG4gIH1cblxuICBnZXRVc2VyTG9jYWxzdG9yYWdlKCk6IFByb21pc2U8VXNlcj4ge1xuICAgIHJldHVybiBQcmVmZXJlbmNlcy5nZXQoeyBrZXk6ICd1c2VyJyB9KS50aGVuKCh2YWwpID0+IHtcbiAgICAgIHJldHVybiBKU09OLnBhcnNlKHZhbC52YWx1ZSk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgc2V0VXNlckZhbWlseUlkKGlkKSB7XG5cbiAgICBhd2FpdCB0aGlzLmdldFVzZXJMb2NhbHN0b3JhZ2UoKS50aGVuKHVzZXIgPT4ge1xuICAgICAgdGhpcy5pc0ZhbWlseSA9IGZhbHNlO1xuICAgICAgLy9jb25zb2xlLmxvZyhgW0F1dGhlbnRpY2F0aW9uU2VydmljZV0gTUVNQkVSKCR7aWR9KWAsIHVzZXIpO1xuICAgICAgbGV0IHM6IHN0cmluZyA9IHVzZXJbJ25hbWUnXTtcbiAgICAgIGxldCBmdWxsbmFtZSA9IHMuc3BsaXQoJywnKTtcbiAgICAgIHRoaXMudXNlciA9IG5ldyBVc2VyKHVzZXJbJ2lkVXNlciddLCAnJywgLyogZnVsbG5hbWVbMF0ucmVwbGFjZSgnLCcsJycpICovIHVzZXJbJ25hbWUnXSwgZnVsbG5hbWVbMV0sIHVzZXJbJ2ltYWdlJ10pO1xuICAgICAgdGhpcy51c2VyLmZhbWlseVVuaXQgPSBpZDtcbiAgICAgIHRoaXMuc2V0VXNlckxvY2Fsc3RvcmFnZSh0aGlzLnVzZXIpXG4gICAgfSlcbiAgfVxuXG4gIGdldFNob3dJbnRyb0xvY2Fsc3RvcmFnZSgpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybiBQcmVmZXJlbmNlcy5nZXQoeyBrZXk6ICdzaG93SW50cm8nIH0pLnRoZW4oKHZhbCkgPT4ge1xuICAgICAgLy9jb25zb2xlLmxvZyhgW0F1dGhTZXJ2aWNlXSBnZXRTaG93SW50cm9Mb2NhbHN0b3JhZ2UoKWAsIHZhbC52YWx1ZSk7XG4gICAgICByZXR1cm4gQm9vbGVhbih2YWwudmFsdWUpXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBzZXRTaG93SW50cm9Mb2NhbHN0b3JhZ2UoKSB7XG4gICAgYXdhaXQgUHJlZmVyZW5jZXMuc2V0KHtcbiAgICAgIGtleTogJ3Nob3dJbnRybycsXG4gICAgICB2YWx1ZTogJ3RydWUnXG4gICAgfSk7XG4gIH1cblxuICBzZXRDYW5jZWxlZEhlYWx0aENvbm5lY3RMb2NhbHN0b3JhZ2UobW9zdHJhcjogc3RyaW5nKSB7XG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2NhbmNlbEhlYWx0aENvbm5lY3QnLCBtb3N0cmFyKTtcbiAgfVxuXG4gIGFzeW5jIHNldFNob3dIZWFsdGhDb25uZWN0TG9jYWxzdG9yYWdlKCkge1xuICAgIGF3YWl0IFByZWZlcmVuY2VzLnNldCh7XG4gICAgICBrZXk6ICdzaG93SGVhbHRoQ29ubmVjdCcsXG4gICAgICB2YWx1ZTogJ3RydWUnXG4gICAgfSk7XG4gIH1cblxuICBzZXRUd29GYWN0b3IodGZDZW50ZXIpe1xuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCd0d28tZmFjdG9yLWNlbnRlcicsIHRmQ2VudGVyKTtcbiAgfVxuXG4gIGFzeW5jIGxvZ291dDEoKTogUHJvbWlzZTx2b2lkPntcbiAgICAvL2NvbnNvbGUubG9nKCdsb2dvdXQnKTtcbiAgICB0aGlzLmlzQXV0aGVudGljYXRlZC5uZXh0KGZhbHNlKTtcbiAgICBhd2FpdCBQcmVmZXJlbmNlcy5yZW1vdmUoeyBrZXk6ICd1c2VyJyB9KS50aGVuKCh2YWwpID0+IHsgfSk7XG4gICAgICAgdGhpcy50b2tlblNlcnZpY2UucmVtb3ZlQXV0aFRva2VuKClcbiAgICByZXR1cm5cbiAgfVxuXG4gIGxvZ291dChhbGxEZXZpY2VzPyk6IE9ic2VydmFibGU8YW55PiAge1xuICAgIGxldCBwYXRoID0gJ3BhdGllbnQvbG9nb3V0J1xuICAgIC8vdGhpcy5nZXRBbGxUb2tlbkRldmljZXMoKVxuICAgIGNvbnN0IHRva2VucyA9IHRoaXMudG9rZW5TZXJ2aWNlLmdldEFsbFRva2VuRGV2aWNlcygpO1xuICAgICAgbGV0IHBhcmFtcyA9IHtcbiAgICAgICAgdG9rZW5zOiAgdG9rZW5zLCAvL1xuICAgICAgICBhbGxEZXZpY2VzOiBhbGxEZXZpY2VzPyBhbGxEZXZpY2VzOiBmYWxzZVxuICAgICAgfVxuICAgICAgLy9jb25zb2xlLmxvZygnbG9nb3V0JywgcGFyYW1zICk7XG4gICAgICBjb25zdCBlbmRwb2ludCA9IHRoaXMuYXBpLmdldEVuZHBvaW50KHBhdGgpO1xuICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGVuZHBvaW50LCBwYXJhbXMpLnBpcGUoXG4gICAgICAgIG1hcCggKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgLy9jb25zb2xlLmxvZyhgW0F1dGhlbnRpY2F0aW9uU2VydmljZV0gbG9nb3V0KCR7cGF0aH0pIHJlczogYCwgSlNPTi5zdHJpbmdpZnkocmVzKSApO1xuICAgICAgICAgIHRoaXMuaXNBdXRoZW50aWNhdGVkLm5leHQoZmFsc2UpO1xuICAgICAgICAgICBQcmVmZXJlbmNlcy5yZW1vdmUoeyBrZXk6ICB0aGlzLnVzZXIuZmFtaWx5VW5pdCB9KS50aGVuKCh2YWwpID0+IHsgfSk7XG4gICAgICAgICAgIFByZWZlcmVuY2VzLnJlbW92ZSh7IGtleTogJ3VzZXInIH0pLnRoZW4oKHZhbCkgPT4geyB9KTtcbiAgICAgICAgICAgdGhpcy50b2tlblNlcnZpY2UucmVtb3ZlQXV0aFRva2VuKClcbiAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgfVxuXG4gIGluY3JlYXNlTnVtbG9naW5GYWlsZWQoKXtcbiAgICBsZXQgbnVtRmFpbExvZ2luID0gMFxuICAgIGxldCBudW0gPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbnVtLWZhaWwtbG9naW4nKTtcbiAgICBpZihudW0pe1xuICAgICAgbGV0IG51bUZhaWxMb2dpbiA9IE51bWJlcihKU09OLnBhcnNlKG51bSkpICsgMVxuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ251bS1mYWlsLWxvZ2luJywnJytudW1GYWlsTG9naW4pO1xuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2xvZ2luX3JlcXVlc3RfbG9ja2VkX2F0JywnJysobmV3IERhdGUoKS5nZXRUaW1lKCkpKTtcbiAgICB9ZWxzZXtcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdudW0tZmFpbC1sb2dpbicsJzEnKTtcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdsb2dpbl9yZXF1ZXN0X2xvY2tlZF9hdCcsJycrKG5ldyBEYXRlKCkuZ2V0VGltZSgpKSk7XG4gICAgICBudW1GYWlsTG9naW4gPSAxXG4gICAgfVxuICAgIC8vY29uc29sZS5sb2coJ1tBdXRoZW50aWNhdGlvblNlcnZpY2VdIGluY3JlYXNlTnVtbG9naW5GYWlsZWQoKScsIG51bUZhaWxMb2dpbik7XG4gIH1cblxuICBpbmNyZWFzZU51bUZQQUlPRmFpbGVkKCl7XG4gICAgbGV0IG51bSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdudW0tZmFpbC1maW5nZXItcHJpbnQnKTtcbiAgICBpZihudW0pe1xuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ251bS1mYWlsLWxvZ2luJywnJysoTnVtYmVyKEpTT04ucGFyc2UobnVtKSkgKyAxKSk7XG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnbG9naW5fcmVxdWVzdF9sb2NrZWRfYXQnLCcnKyhuZXcgRGF0ZSgpLmdldFRpbWUoKSkpO1xuICAgIH1lbHNle1xuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ251bS1mYWlsLWxvZ2luJywnMScpO1xuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2xvZ2luX3JlcXVlc3RfbG9ja2VkX2F0JywnJysobmV3IERhdGUoKS5nZXRUaW1lKCkpKTtcbiAgICB9XG4gIH1cblxuICBnZXROdW1sb2dpbkZhaWxlZCgpe1xuICAgIGxldCBudW0gPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbnVtLWZhaWwtbG9naW4nKTtcbiAgICBpZihudW0pIHJldHVybiBOdW1iZXIoSlNPTi5wYXJzZShudW0pKVxuICAgIHJldHVybiAwXG4gIH1cblxuICBnZXREYXRlbG9naW5GYWlsZWQoKXtcbiAgICBsZXQgbnVtID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2xvZ2luX3JlcXVlc3RfbG9ja2VkX2F0Jyk7XG4gICAgaWYobnVtKSByZXR1cm4gTnVtYmVyKEpTT04ucGFyc2UobnVtKSlcbiAgICByZXR1cm4gMFxuICB9XG5cbiAgZ2V0TnVtRmluZ2VyUHJpbnRlckZhaWxlZCgpe1xuICAgIGxldCBudW0gPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbnVtLWZhaWwtZmluZ2VyLXByaW50Jyk7XG4gICAgaWYobnVtKSByZXR1cm4gTnVtYmVyKEpTT04ucGFyc2UobnVtKSlcbiAgICByZXR1cm4gMFxuICB9XG5cbiAgcmVtb3ZlTnVtbG9naW5GYWlsZWQoKXtcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnbnVtLWZhaWwtbG9naW4nKTtcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnbG9naW5fcmVxdWVzdF9sb2NrZWRfYXQnKTtcbiAgfVxuXG4gIHJlbW92ZU51bUZpcmdlclBGYWlsZWQoKXtcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnbnVtLWZhaWwtZmluZ2VyLXByaW50Jyk7XG4gICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ2xvZ2luX3JlcXVlc3RfbG9ja2VkX2F0Jyk7XG4gIH1cblxuICBnZXQoZW5kcHQpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGNvbnN0IGVuZHBvaW50ID0gdGhpcy5hcGkuZ2V0RG9vbGVFbmRwb2ludChlbmRwdCk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoZW5kcG9pbnQpLnBpcGUoXG4gICAgICBtYXAoKHJlczogYW55KSA9PiB7XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgICB9KVxuICAgICk7XG5cbiAgfVxuXG4gIHBvc3QoZW5kcHQsIGl0ZW1zKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCBlbmRwb2ludCA9IHRoaXMuYXBpLmdldERvb2xlRW5kcG9pbnQoZW5kcHQpO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChlbmRwb2ludCwgaXRlbXMpLnBpcGUoXG4gICAgICBtYXAoKHJlczogYW55KSA9PiB7XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICB0aHJvd0Vycm9yKGVycm9yOiBhbnkpIHtcblxuICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEh0dHBFcnJvclJlc3BvbnNlKVxuICAgICAgdGhyb3cgbmV3IEh0dHBFcnJvclJlc3BvbnNlKGVycm9yKTtcbiAgICBlbHNlXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IpO1xuICB9XG5cblxuICBwdWJsaWMgcmVnaXN0ZXJEZXZpY2UodG9rZW4sIHBsYXRmb3JtKSB7XG5cbiAgICAgaWYocGxhdGZvcm0gPT0gJ0ZDTScpXG4gICAgICBwbGF0Zm9ybSA9ICdhbmRyb2lkJztcbiAgICAgaWYocGxhdGZvcm0gPT0gJ0FQTlMnKVxuICAgICAgcGxhdGZvcm0gPSB0aGlzLmVuZHBvaW50cy5fRU5WSVJPTUVOVC5kZXZpY2VfaW9zLmlvc19wdXNoO1xuICAgICBpZihwbGF0Zm9ybSA9PSAnaW9zJylcbiAgICAgIHBsYXRmb3JtID0gdGhpcy5lbmRwb2ludHMuX0VOVklST01FTlQuZGV2aWNlX2lvcy5pb3NfcHVzaDtcblxuICAgICBjb25zdCBwb3N0RGF0YSA9IHtcbiAgICAgIHRva2VuOiB0b2tlbixcbiAgICAgIHBsYXRmb3JtOiBwbGF0Zm9ybSxcbiAgICAgIHZlcnNpb246IDFcbiAgICB9O1xuXG4gICAvLyAvL2NvbnNvbGUubG9nKFwicG9zdERhdGE6IFwiLCAgcG9zdERhdGEpO1xuXG4gICAgcmV0dXJuIHRoaXMucG9zdCgndXNlci9kZXZpY2UvcmVnaXN0ZXInLCBwb3N0RGF0YSkuc3Vic2NyaWJlKFxuICAgICAgYXN5bmMgKGRhdGEpID0+IHtcbiAgICAgICAgbGV0IHJlc3BvbnNlPWRhdGE7XG4gICAgICAgLy8gLy9jb25zb2xlLmxvZyhcInJlc3BvbnNlIHVzZXIvZGV2aWNlL3JlZ2lzdGVyXCIpO1xuICAgICAgICAvLy8vY29uc29sZS5sb2cocmVzcG9uc2UpO1xuICAgICAgICB0aGlzLnRva2VuU2VydmljZS5zYXZlQWxsVG9rZW5EZXZpY2VzKHBvc3REYXRhKVxuICAgICAgICAvL3RoaXMuc2F2ZUFsbFRva2VuRGV2aWNlcyhwb3N0RGF0YSlcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgICAgfSxcbiAgICAgIChlcnJvcikgPT4ge1xuICAgICAgICAvLyBDYWxsZWQgd2hlbiBlcnJvclxuICAgICAgICAvL2NvbnNvbGUubG9nKCdlcnJvciB1c2VyL2RldmljZS9yZWdpc3RlcjogJywgZXJyb3IpO1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH0pO1xuICB9XG5cbiAgLy8gc2F2ZUFsbFRva2VuRGV2aWNlcyh0b2tlbil7XG4gIC8vICAgdGhpcy50b2tlbnMucHVzaCh0b2tlbilcbiAgLy8gICAvL2NvbnNvbGUubG9nKGBbQXV0aFNlcnZpY2VdIHNhdmVBbGxUb2tlbkRldmljZXMoKWAsIHRoaXMudG9rZW5zKTtcbiAgLy8gICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShUT0tFTlMsSlNPTi5zdHJpbmdpZnkodGhpcy50b2tlbnMpKVxuICAvLyB9XG5cbiAgLy8gZ2V0QWxsVG9rZW5EZXZpY2VzKCl7XG4gIC8vICAgbGV0IGxpc3QgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFRPS0VOUykpXG4gIC8vICAgLy9jb25zb2xlLmxvZyhgW0F1dGhTZXJ2aWNlXSBnZXRBbGxUb2tlbkRldmljZXMoKWAsIGxpc3QpO1xuICAvLyAgIHRoaXMudG9rZW5zID0gbGlzdD8gbGlzdDpbXVxuICAvLyB9XG5cblxuICBhc3luYyBzaG93SW50cm8oKSB7XG4gICAgcmV0dXJuIFByZWZlcmVuY2VzLmdldCh7IGtleTogSU5UUk9fS0VZIH0pLnRoZW4oYXN5bmMgKGRhdGEpID0+IHtcbiAgICAgIGxldCBzaG93SW50cm8gPSBCb29sZWFuKGRhdGEudmFsdWUpXG4gICAgICAvL2NvbnNvbGUubG9nKGBbQXV0aFNlcnZpY2VdIHNob3dJbnRybygpYCwgc2hvd0ludHJvKTtcbiAgICAgIHJldHVybiBzaG93SW50cm87XG5cbiAgICB9KVxuXG4gIH1cblxuICBnZXRTaG93SGVhbHRoQ29ubmVjdExvY2Fsc3RvcmFnZSgpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybiBQcmVmZXJlbmNlcy5nZXQoeyBrZXk6ICdzaG93SGVhbHRoQ29ubmVjdCcgfSkudGhlbigodmFsKSA9PiB7XG4gICAgICByZXR1cm4gQm9vbGVhbih2YWwudmFsdWUpXG4gICAgfSk7XG4gIH1cblxuXG4gIHBvc3RBUEliaW9tZXRyaWMocGFyYW1zOiBPYmplY3QpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCBwYXRoID0gYHVzZXIvYmlvbWV0cmljYDtcbiAgICBjb25zdCBlbmRwb2ludCA9IHRoaXMuYXBpLmdldEVuZHBvaW50KHBhdGgpO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChlbmRwb2ludCwgcGFyYW1zKS5waXBlKFxuICAgICAgbWFwKChyZXM6IGFueSkgPT4ge1xuICAgICAgICAvL2NvbnNvbGUubG9nKGBbRG9vbGVTZXJ2aWNlXSBwb3N0QVBJYmlvbWV0cmljKCR7cGF0aH0pIHJlczogYCwgcmVzKTtcbiAgICAgICAgcmV0dXJuIHJlcztcblxuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHV0QVBJYmlvbWV0cmljKGlkOiBhbnksIHBhcmFtczogT2JqZWN0KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgcGF0aCA9IGB1c2VyL2Jpb21ldHJpYy8ke2lkfWA7XG4gICAgY29uc3QgZW5kcG9pbnQgPSB0aGlzLmFwaS5nZXRFbmRwb2ludChwYXRoKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dChlbmRwb2ludCwgcGFyYW1zKS5waXBlKFxuICAgICAgbWFwKChyZXM6IGFueSkgPT4ge1xuICAgICAgICAvL2NvbnNvbGUubG9nKGBbRG9vbGVTZXJ2aWNlXSBwdXRBUEliaW9tZXRyaWMoJHtwYXRofSkgcmVzOiBgLCByZXMpO1xuICAgICAgICByZXR1cm4gcmVzO1xuXG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBkZWxldGVBUEliaW9tZXRyaWMoaWQ6IE9iamVjdCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbGV0IHBhdGggPSBgdXNlci9iaW9tZXRyaWMvJHtpZH1gO1xuICAgIGNvbnN0IGVuZHBvaW50ID0gdGhpcy5hcGkuZ2V0RW5kcG9pbnQocGF0aCk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGUoZW5kcG9pbnQpLnBpcGUoXG4gICAgICBtYXAoKHJlczogYW55KSA9PiB7XG4gICAgICAgIC8vY29uc29sZS5sb2coYFtEb29sZVNlcnZpY2VdIGRlbGV0ZUFQSWJpb21ldHJpYygke3BhdGh9KSByZXM6ICR7cmVzfWAsIEpTT04uc3RyaW5naWZ5KHJlcykpO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcmVkaXJlY3RMb2dpbigpe1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoJy9sYW5kaW5nJyk7XG4gIH1cblxuXG4gIGFzeW5jIHJlZGlyZWN0VW5hdXRoZW50aWNhdGVkKCkge1xuXG4gICAgICBjb25zdCB0cmFuc2xhdGVTZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQoVHJhbnNsYXRlU2VydmljZSlcblxuICAgICAgY29uc3QgYWxlcnQgPSBhd2FpdCB0aGlzLmFsZXJ0Q29udHJvbGxlci5jcmVhdGUoe1xuICAgICAgICBjc3NDbGFzczogXCJhbGVydENsYXNzXCIsXG4gICAgICAgIGhlYWRlcjogIHRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnaW5mby50aXRsZScpLFxuICAgICAgICBiYWNrZHJvcERpc21pc3M6ZmFsc2UsXG4gICAgICAgIC8vIHN1YkhlYWRlcjogJ1N1YnRpdGxlJyxcbiAgICAgICAgbWVzc2FnZTogdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdsYW5kaW5nLmxvZ2luX2FnYWluJyksXG4gICAgICAgIGJ1dHRvbnM6IFtcbiAgICAgICAgICB7dGV4dDogdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdidXR0b24uYWNjZXB0JyksXG4gICAgICAgICAgaGFuZGxlcjogKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybChgL2xhbmRpbmdgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSk7XG5cbiAgICAgIGF3YWl0IGFsZXJ0LnByZXNlbnQoKTtcbiAgICB9XG5cbiAgICBnZXRTaG93R29vZ2xlRml0TG9jYWxzdG9yYWdlKCk6IFByb21pc2U8YW55PiB7XG4gICAgICByZXR1cm4gUHJlZmVyZW5jZXMuZ2V0KHsga2V5OiAnc2hvd0dvb2dsZUZpdCcgfSkudGhlbigodmFsKSA9PiB7XG4gICAgICAgIHJldHVybiBCb29sZWFuKHZhbC52YWx1ZSlcbiAgICAgIH0pO1xuICAgIH1cbiAgICBcbiAgICBhc3luYyBzZXRTaG93R29vZ2xlRml0TG9jYWxzdG9yYWdlKCkge1xuICAgICAgYXdhaXQgUHJlZmVyZW5jZXMuc2V0KHtcbiAgICAgICAga2V5OiAnc2hvd0dvb2dsZUZpdCcsXG4gICAgICAgIHZhbHVlOiAndHJ1ZSdcbiAgICAgIH0pO1xuICAgIH1cbiAgICBzZXRDYW5jZWxlZEdvb2dsZUZpdExvY2Fsc3RvcmFnZShtb3N0cmFyOiBzdHJpbmcpIHtcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdjYW5jZWxHb29nbGVGaXQnLCBtb3N0cmFyKTtcbiAgICB9XG5cbiAgICBnZXRDYW5jZWxlZEdvb2dsZUZpdExvY2Fsc3RvcmFnZSgpOmJvb2xlYW4ge1xuICAgICAgY29uc3QgdmFsdWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnY2FuY2VsR29vZ2xlRml0JylcbiAgICAgIHJldHVybiB2YWx1ZSAhPT0gbnVsbCA/IEpTT04ucGFyc2UodmFsdWUpIDogZmFsc2U7XG4gICAgfVxufVxuIl19
424
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aGVudGljYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NlcnZpY2UtbGliL3NyYy9saWIvc2VydmljZXMvYXV0aGVudGljYXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBWSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxlQUFlLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFFbkQsT0FBTyxFQUFjLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFHckUsT0FBTyxFQUFVLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXZELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXZELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7Ozs7O0FBRzVDLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQztBQUUxQixNQUFNLE9BQU8sSUFBSTtJQWNmLFlBQVksTUFBYyxFQUFFLE1BQWMsRUFBRSxJQUFZLEVBQUUsVUFBa0IsRUFBRSxLQUFhO1FBUDNGLFVBQUssR0FBUSxFQUFFLENBQUM7UUFHaEIsbUJBQWMsR0FBaUIsRUFBRSxDQUFDO1FBS2hDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFBO1FBQ3BCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFBO1FBQ3BCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFBO1FBQ2hCLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFBO1FBQzVCLElBQUksQ0FBQyxLQUFLLEdB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O1FBQzlCLE1BQU0sS0FBSyxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQTtRQUNyRCxPQUFPLEtBQUssS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUNwRCxDQUFDOytHQTFlUSxxQkFBcUIsa0JBc0J0QixXQUFXO21IQXRCVixxQkFBcUIsY0FGcEIsTUFBTTs7NEZBRVAscUJBQXFCO2tCQUhqQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBdUJJLE1BQU07MkJBQUMsV0FBVzttU0FGSSxNQUFNO3NCQUE5QixTQUFTO3VCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIEluamVjdG9yLCBQTEFURk9STV9JRCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQcmVmZXJlbmNlcyB9IGZyb20gJ0BjYXBhY2l0b3IvcHJlZmVyZW5jZXMnO1xuaW1wb3J0IHsgbWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFwaUVuZHBvaW50c1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9hcGktZW5kcG9pbnRzLnNlcnZpY2UnO1xuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBBbGVydENvbnRyb2xsZXIsIFBsYXRmb3JtIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHsgQW5ndWxhckZpcmVBdXRoIH0gZnJvbSBcIkBhbmd1bGFyL2ZpcmUvY29tcGF0L2F1dGhcIjtcbmltcG9ydCB7IFJvdXRlciwgUm91dGVyT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEZhbWlseVVuaXQgfSBmcm9tICcuLi9tb2RlbHMvdXNlcic7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBUb2tlblNlcnZpY2UgfSBmcm9tICcuL3Rva2VuLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2FwYWNpdG9yIH0gZnJvbSAnQGNhcGFjaXRvci9jb3JlJztcbmltcG9ydCB7IENoYW5nZUVuZHBvaW50c1NlcnZpY2UgfSBmcm9tICcuL2NoYW5nZS1lbmRwb2ludHMuc2VydmljZSc7XG5cbmNvbnN0IElOVFJPX0tFWSA9ICdpbnRybyc7XG5cbmV4cG9ydCBjbGFzcyBVc2VyIHtcbiAgY29uZGljaW9uX2xlZ2FsOiBib29sZWFuO1xuICBpbWFnZTogYW55O1xuICBpZFBhdGllbnQ6IHN0cmluZztcbiAgaWRVc2VyOiBzdHJpbmc7XG4gIGZpcnN0X25hbWU6IHN0cmluZztcbiAgc2VjcmV0OiBzdHJpbmc7XG4gIHJvbGVzOiBhbnkgPSBbXTtcbiAgZmFtaWx5VW5pdDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIGxpc3RGYW1pbHlVbml0OiBGYW1pbHlVbml0W10gPSBbXTtcblxuICBzZWxlY3RlZENhcmVnaXZlclJlc3BvbnNpYmxlO1xuXG4gIGNvbnN0cnVjdG9yKGlkVXNlcjogc3RyaW5nLCBzZWNyZXQ6IHN0cmluZywgbmFtZTogc3RyaW5nLCBmaXJzdF9uYW1lOiBzdHJpbmcsIGltYWdlOiBzdHJpbmcpIHtcbiAgICB0aGlzLmlkVXNlciA9IGlkVXNlclxuICAgIHRoaXMuc2VjcmV0ID0gc2VjcmV0XG4gICAgdGhpcy5uYW1lID0gbmFtZVxuICAgIHRoaXMuZmlyc3RfbmFtZSA9IGZpcnN0X25hbWVcbiAgICB0aGlzLmltYWdlID0gaW1hZ2VcblxuICB9O1xuXG59XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEF1dGhlbnRpY2F0aW9uU2VydmljZSB7XG4gIGlzQXV0aGVudGljYXRlZDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihudWxsKTtcbiAgcHVibGljIHVzZXI6IFVzZXI7XG4gIHB1YmxpYyBpc1JlY292ZXJ5OiBib29sZWFuID0gZmFsc2U7XG4gIHB1YmxpYyBhY3Rpb246IHN0cmluZztcbiAgcHVibGljIGlkX3VzZXI6IHN0cmluZztcbiAgcHVibGljIGVtZXJnZW5jeU51bWJlcjogc3RyaW5nO1xuICBwdWJsaWMgZGF0YTogQXJyYXk8YW55PjtcbiAgcHVibGljIGVtYWlsOiBzdHJpbmc7XG4gIHB1YmxpYyBhZ2VuZGFVc2VyID0gW107XG4gIHB1YmxpYyB0aWVuZV9lbWFpbDogYm9vbGVhbjtcbiAgcHVibGljIGRldmljZVRva2VuOiBzdHJpbmc7XG4gIHB1YmxpYyBkZXZpY2VQbGF0Zm9ybTogc3RyaW5nO1xuICBwdWJsaWMgdm9pcERldmljZVRva2VuOiBzdHJpbmc7XG4gIHB1YmxpYyB2b2lwRGV2aWNlUGxhdGZvcm06IHN0cmluZztcbiAgcHVibGljIGRpZXRzQW5kQWR2aWNlczogW107XG4gIHB1YmxpYyBpc0ZhbWlseTpib29sZWFuO1xuICBwcml2YXRlIGluZGV4RW5kUG9pbnQ6IG51bWJlcjtcbiAgcHJpdmF0ZSB0b2tlbnMgPSBbXVxuICBzaG93aW5nU2lnbkluQWxlcnQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQFZpZXdDaGlsZChSb3V0ZXJPdXRsZXQpIG91dGxldDogUm91dGVyT3V0bGV0O1xuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIHBsYXRmb3JtSWQ6IG9iamVjdCxcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgcHJpdmF0ZSB0b2tlblNlcnZpY2U6IFRva2VuU2VydmljZSxcbiAgICBwcml2YXRlIGFwaTogQXBpRW5kcG9pbnRzU2VydmljZSxcbiAgICBwdWJsaWMgcGxhdGZvcm06IFBsYXRmb3JtLFxuICAgIHB1YmxpYyBmaXJlYmFzZUF1dGg6IEFuZ3VsYXJGaXJlQXV0aCxcbiAgICBwdWJsaWMgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHVibGljIGFsZXJ0Q29udHJvbGxlcjogQWxlcnRDb250cm9sbGVyLFxuICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHByaXZhdGUgZW5kcG9pbnRzOiBDaGFuZ2VFbmRwb2ludHNTZXJ2aWNlKSB7XG4gICAgICB0aGlzLnNldFVzZXIoKTtcbiAgfVxuXG4gIGdldEluZGV4RW5kUG9pbnQoKXtcbiAgICB0aGlzLmluZGV4RW5kUG9pbnQgPSBOdW1iZXIobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2VuZHBvaW50JykpXG4gICAgLy9jb25zb2xlLmxvZyhcIltBdXRoU2VydmljZV0gaW5kZXhFbmRQb2ludDogXCIsIHRoaXMuaW5kZXhFbmRQb2ludCk7XG4gIH1cblxuICBnZXRBdXRoVG9rZW4oKSB7XG4gICAgY29uc3QgdG9rZW4gPSAgdGhpcy50b2tlblNlcnZpY2UuZ2V0QXV0aFRva2VuKClcbiAgICAvLy8vY29uc29sZS5sb2coXCJbQXV0aFNlcnZpY2VdIGdldEF1dGhUb2tlbjogXCIsIHRva2VuKTtcbiAgICByZXR1cm4gdG9rZW47XG4gIH1cblxuICBzZXRBdXRoVG9rZW4odG9rZW4pIHtcbiAgICB0aGlzLnRva2VuU2VydmljZS5zZXRBdXRoVG9rZW4odG9rZW4pXG4gIH1cblxuICAvLyBnZXRBdXRoVG9rZW4oKSB7XG4gIC8vICAgY29uc3QgdG9rZW4gPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShUT0tFTl9LRVkpO1xuICAvLyAgIHJldHVybiB0b2tlbjtcbiAgLy8gfVxuXG4gIC8vIHNldEF1dGhUb2tlbih0b2tlbikge1xuICAvLyAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFRPS0VOX0tFWSwgdG9rZW4pO1xuICAvLyB9XG5cbiAgbG9naW4oY3JlZGVudGlhbHM6IHsgdXNlcm5hbWUsIHBhc3N3b3JkLCBoYXNoIH0pOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGNvbnN0IGVuZHBvaW50ID0gdGhpcy5hcGkuZ2V0RW5kcG9pbnQoJ3BhdGllbnQvbG9naW4nKTtcblxuICAgIC8vY29uc29sZS5sb2coJ2NyZWRlbnRpYWxzOiAnLCBjcmVkZW50aWFscyk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGVuZHBvaW50LCBjcmVkZW50aWFscykucGlwZShcbiAgICAgIG1hcCgocmVzOiBhbnkpID0+IHtcblxuICAgICAgICAvL2NvbnNvbGUubG9nKFwiW0F1dGhTZXJ2aWNlXSBsb2dpbigpIE9LIFwiKTtcbiAgICAgICAgLy9jb25zb2xlLmxvZyhcIltBdXRoU2VydmljZV0gZW5kcG9pbnRcIiwgZW5kcG9pbnQpO1xuICAgICAgICBpZiAoIXJlcy5zdWNjZXNzKSB7XG4gICAgICAgICAgcmV0dXJuIHJlc1xuICAgICAgICB9XG4gICAgICAgIC8vIHNhdmUgdXNlcidzIHRva2VuXG4gICAgICAgIGlmIChyZXMudG9rZW4pe1xuICAgICAgICAgIHRoaXMudG9rZW5TZXJ2aWNlLnNldEF1dGhUb2tlbihyZXMudG9rZW4pO1xuICAgICAgICAgIHRoaXMuc2V0QXV0aFRva2VuKHJlcy50b2tlbik7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTZXQgaW5kZXhFbmRQb2ludCBpb3NfZGV2IGlmIGl0IGlzIFFBXG4gICAgICAgICAgdGhpcy5nZXRJbmRleEVuZFBvaW50KClcbiAgICAgICAgICAgIGlmIChDYXBhY2l0b3IuaXNOYXRpdmVQbGF0Zm9ybSgpKSB7XG4gICAgICAgICAgICAgIC8vLy9jb25zb2xlLmxvZyhkYXRhKTtcbiAgICAgICAgICAgICAgbGV0IGFjY2VzcyA9IHRydWU7XG4gICAgICAgICAgICAgIGlmKHRoaXMuZGV2aWNlVG9rZW4gJiYgdGhpcy5kZXZpY2VQbGF0Zm9ybSlcbiAgICAgICAgICAgICAgICB0aGlzLnJlZ2lzdGVyRGV2aWNlKHRoaXMuZGV2aWNlVG9rZW4sIHRoaXMuZGV2aWNlUGxhdGZvcm0pO1xuXG4gICAgICAgICAgICAgIGlmICh0aGlzLnBsYXRmb3JtLmlzKCdpb3MnKSl7XG4gICAgICAgICAgICAgICAgaWYodGhpcy52b2lwRGV2aWNlVG9rZW4pXG4gICAgICAgICAgICAgICAgdGhpcy5yZWdpc3RlckRldmljZSh0aGlzLnZvaXBEZXZpY2VUb2tlbiwgdGhpcy5lbmRwb2ludHMuX0VOVklST01FTlQuZGV2aWNlX2lvcy5pb3Nfdm9pcCk7IC8vIGRlc2FvcnJvbGxvXG4gICAgICAgICAgICAgICAgICAvL3RoaXMucmVnaXN0ZXJEZXZpY2UodGhpcy52b2lwRGV2aWNlVG9rZW4sICh0aGlzLmluZGV4RW5kUG9pbnQhPT0wKT8naW9zdm9pcGRldic6J2lvc3ZvaXAnKTsgLy9wcm9kdWNjaW9uXG4gICAgICAgICAgICAgICAgXG5cbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgdGhpcy51c2VyID0gbmV3IFVzZXIocmVzLmlkVXNlciwgY3JlZGVudGlhbHMucGFzc3dvcmQsIHJlcy5uYW1lLCByZXMuZmlyc3RfbmFtZSwgcmVzLnRlbXBvcmFyeV91cmwpO1xuICAgICAgICB0aGlzLmlkX3VzZXIgPSByZXMuaWRVc2VyO1xuICAgICAgICB0aGlzLmVtZXJnZW5jeU51bWJlciA9IHJlcy5lbWVyZ2VuY3lfcGhvbmVfYnV0dG9uO1xuICAgICAgICBcbiAgICAgICAgaWYgKHJlcz8uZmFtaWx5VW5pdC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgdGhpcy51c2VyLmxpc3RGYW1pbHlVbml0ID0gcmVzLmZhbWlseVVuaXQ7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNldFVzZXJMb2NhbHN0b3JhZ2UodGhpcy51c2VyKVxuICAgICAgICB0aGlzLnNldFR3b0ZhY3RvcihyZXMudHdvRmFjdG9yQ2VudGVyKVxuXG4gICAgICAgIHJldHVybiByZXM7XG5cbiAgICAgIH0pLFxuICAgICAgdGFwKF8gPT4ge1xuICAgICAgICB0aGlzLmlzQXV0aGVudGljYXRlZC5uZXh0KHRydWUpO1xuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIHNldFVzZXIoKSB7XG4gICAgaWYgKCF0aGlzLnVzZXIpIHtcbiAgICAgIHRoaXMuZ2V0VXNlckxvY2Fsc3RvcmFnZSgpLnRoZW4odXNlciA9PiB7XG4gICAgICAgIC8vY29uc29sZS5sb2coXCJbQXV0aGVudGljYXRpb25TZXJ2aWNlXSBzZXRVc2VyKClcIiwgdXNlcik7XG4gICAgICAgIGlmICh1c2VyKVxuICAgICAgICAgIHRoaXMudXNlciA9IHVzZXJcbiAgICAgIH0pXG4gICAgfVxuXG4gIH1cblxuICBzZXRVc2VyTG9jYWxzdG9yYWdlKHVzZXIpIHtcbiAgICAvL2NvbnNvbGUubG9nKGBbQXV0aGVudGljYXRpb25TZXJ2aWNlXSBzZXRVc2VyTG9jYWxzdG9yYWdlKClgLCB1c2VyKTtcbiAgICBQcmVmZXJlbmNlcy5zZXQoe1xuICAgICAga2V5OiAndXNlcicsXG4gICAgICB2YWx1ZTogSlNPTi5zdHJpbmdpZnkodXNlcilcbiAgICB9KTtcblxuICB9XG5cbiAgc2V0RW1lcmdlbmN5TnVtYmVyTG9jYWxTdG9yYWdlKG51bWJlcikge1xuICAgIC8vY29uc29sZS5sb2coYFtBdXRoZW50aWNhdGlvblNlcnZpY2VdIHNldEVtZXJnZW5jeU51bWJlckxvY2FsU3RvcmFnZSgpYCwgbnVtYmVyKTtcbiAgICBQcmVmZXJlbmNlcy5zZXQoe1xuICAgICAga2V5OiAnZW1lcmdlbmN5TnVtYmVyJyxcbiAgICAgIHZhbHVlOiBKU09OLnN0cmluZ2lmeShudW1iZXIpXG4gICAgfSk7XG5cbiAgfVxuXG4gIHNldEZhbWlseVVuaXRMb2NhbHN0b3JhZ2UoZmFtaWx5VW5pdDogW10pIHtcblxuXG4gICAgZmFtaWx5VW5pdC5mb3JFYWNoKG1lbWJlciA9PiB7XG4gICAgICBsZXQgczogc3RyaW5nID0gbWVtYmVyWyduYW1lJ107XG4gICAgICBsZXQgZnVsbG5hbWUgPSBzLnNwbGl0KCcsJyk7XG4gICAgICBsZXQgdSA9IG5ldyBVc2VyKG1lbWJlclsnaWQnXSwgJycsIGZ1bGxuYW1lWzFdLCBmdWxsbmFtZVswXSwgbWVtYmVyWyd0aHVtYm5haWwnXSk7XG4gICAgICAvL2NvbnNvbGUubG9nKFwiZmFtaWx5VW5pdCBMb2NhbDpcIiwgdSk7XG4gICAgICBQcmVmZXJlbmNlcy5zZXQoe1xuICAgICAgICBrZXk6IFN0cmluZyh1LmlkVXNlciksXG4gICAgICAgIHZhbHVlOiBKU09OLnN0cmluZ2lmeSh1KVxuICAgICAgfSk7XG4gICAgfSlcbiAgfVxuXG4gIGdldEZhbWlseVVuaXRMb2NhbHN0b3JhZ2UoaWQpOiBQcm9taXNlPFVzZXI+IHtcbiAgICByZXR1cm4gUHJlZmVyZW5jZXMuZ2V0KHsga2V5OiBpZCB9KS50aGVuKCh2YWwpID0+IHtcbiAgICAgIC8vY29uc29sZS5sb2coYFtBdXRoZW50aWNhdGlvblNlcnZpY2VdIGdldEZhbWlseVVuaXRMb2NhbHN0b3JhZ2UoJHtpZH0pYCwgdmFsKTtcbiAgICAgIHJldHVybiBKU09OLnBhcnNlKHZhbC52YWx1ZSk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgc2V0RmFtaWx5VW5pdCh1c2VyKSB7XG4gICAgdGhpcy5pc0ZhbWlseSA9IHRydWU7XG4gICAgbGV0IHM6IHN0cmluZyA9IHVzZXJbJ25hbWUnXTtcbiAgICBsZXQgZnVsbG5hbWUgPSBzLnNwbGl0KCcsJyk7XG5cbiAgICBsZXQgcHJldmlvdXNVc2VyID0gdGhpcy51c2VyXG4gICAgXG5cbiAgICB0aGlzLnVzZXIgPSBuZXcgVXNlcih1c2VyLmlkLCAnJywgLyogZnVsbG5hbWVbMF0ucmVwbGFjZSgnLCcsJycpICovIHVzZXJbJ25hbWUnXSwgZnVsbG5hbWVbMV0sIHVzZXIudGh1bWJuYWlsKTtcbiAgICB0aGlzLnVzZXIuc2VsZWN0ZWRDYXJlZ2l2ZXJSZXNwb25zaWJsZSA9IHByZXZpb3VzVXNlcjtcbiAgICB0aGlzLnVzZXIuZmFtaWx5VW5pdCA9IHVzZXIuaWQ7XG4gICAgXG4gICAgUHJlZmVyZW5jZXMuc2V0KHtcbiAgICAgIGtleTogU3RyaW5nKHVzZXIuaWQpLFxuICAgICAgdmFsdWU6IEpTT04uc3RyaW5naWZ5KHRoaXMudXNlcilcbiAgICB9KTtcblxuXG4gIH1cblxuICBnZXRVc2VyTG9jYWxzdG9yYWdlKCk6IFByb21pc2U8VXNlcj4ge1xuICAgIHJldHVybiBQcmVmZXJlbmNlcy5nZXQoeyBrZXk6ICd1c2VyJyB9KS50aGVuKCh2YWwpID0+IHtcbiAgICAgIHJldHVybiBKU09OLnBhcnNlKHZhbC52YWx1ZSk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgc2V0VXNlckZhbWlseUlkKGlkKSB7XG5cbiAgICBhd2FpdCB0aGlzLmdldFVzZXJMb2NhbHN0b3JhZ2UoKS50aGVuKHVzZXIgPT4ge1xuICAgICAgdGhpcy5pc0ZhbWlseSA9IGZhbHNlO1xuICAgICAgLy9jb25zb2xlLmxvZyhgW0F1dGhlbnRpY2F0aW9uU2VydmljZV0gTUVNQkVSKCR7aWR9KWAsIHVzZXIpO1xuICAgICAgbGV0IHM6IHN0cmluZyA9IHVzZXJbJ25hbWUnXTtcbiAgICAgIGxldCBmdWxsbmFtZSA9IHMuc3BsaXQoJywnKTtcbiAgICAgIHRoaXMudXNlciA9IG5ldyBVc2VyKHVzZXJbJ2lkVXNlciddLCAnJywgLyogZnVsbG5hbWVbMF0ucmVwbGFjZSgnLCcsJycpICovIHVzZXJbJ25hbWUnXSwgZnVsbG5hbWVbMV0sIHVzZXJbJ2ltYWdlJ10pO1xuICAgICAgdGhpcy51c2VyLmZhbWlseVVuaXQgPSBpZDtcbiAgICAgIHRoaXMuc2V0VXNlckxvY2Fsc3RvcmFnZSh0aGlzLnVzZXIpXG4gICAgfSlcbiAgfVxuXG4gIGdldFNob3dJbnRyb0xvY2Fsc3RvcmFnZSgpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybiBQcmVmZXJlbmNlcy5nZXQoeyBrZXk6ICdzaG93SW50cm8nIH0pLnRoZW4oKHZhbCkgPT4ge1xuICAgICAgLy9jb25zb2xlLmxvZyhgW0F1dGhTZXJ2aWNlXSBnZXRTaG93SW50cm9Mb2NhbHN0b3JhZ2UoKWAsIHZhbC52YWx1ZSk7XG4gICAgICByZXR1cm4gQm9vbGVhbih2YWwudmFsdWUpXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBzZXRTaG93SW50cm9Mb2NhbHN0b3JhZ2UoKSB7XG4gICAgYXdhaXQgUHJlZmVyZW5jZXMuc2V0KHtcbiAgICAgIGtleTogJ3Nob3dJbnRybycsXG4gICAgICB2YWx1ZTogJ3RydWUnXG4gICAgfSk7XG4gIH1cblxuICBzZXRDYW5jZWxlZEhlYWx0aENvbm5lY3RMb2NhbHN0b3JhZ2UobW9zdHJhcjogc3RyaW5nKSB7XG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2NhbmNlbEhlYWx0aENvbm5lY3QnLCBtb3N0cmFyKTtcbiAgfVxuXG4gIGFzeW5jIHNldFNob3dIZWFsdGhDb25uZWN0TG9jYWxzdG9yYWdlKCkge1xuICAgIGF3YWl0IFByZWZlcmVuY2VzLnNldCh7XG4gICAgICBrZXk6ICdzaG93SGVhbHRoQ29ubmVjdCcsXG4gICAgICB2YWx1ZTogJ3RydWUnXG4gICAgfSk7XG4gIH1cblxuICBzZXRUd29GYWN0b3IodGZDZW50ZXIpe1xuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCd0d28tZmFjdG9yLWNlbnRlcicsIHRmQ2VudGVyKTtcbiAgfVxuXG4gIGFzeW5jIGxvZ291dDEoKTogUHJvbWlzZTx2b2lkPntcbiAgICAvL2NvbnNvbGUubG9nKCdsb2dvdXQnKTtcbiAgICB0aGlzLmlzQXV0aGVudGljYXRlZC5uZXh0KGZhbHNlKTtcbiAgICBhd2FpdCBQcmVmZXJlbmNlcy5yZW1vdmUoeyBrZXk6ICd1c2VyJyB9KS50aGVuKCh2YWwpID0+IHsgfSk7XG4gICAgICAgdGhpcy50b2tlblNlcnZpY2UucmVtb3ZlQXV0aFRva2VuKClcbiAgICByZXR1cm5cbiAgfVxuXG4gIGxvZ291dChhbGxEZXZpY2VzPyk6IE9ic2VydmFibGU8YW55PiAge1xuICAgIGxldCBwYXRoID0gJ3BhdGllbnQvbG9nb3V0J1xuICAgIC8vdGhpcy5nZXRBbGxUb2tlbkRldmljZXMoKVxuICAgIGNvbnN0IHRva2VucyA9IHRoaXMudG9rZW5TZXJ2aWNlLmdldEFsbFRva2VuRGV2aWNlcygpO1xuICAgICAgbGV0IHBhcmFtcyA9IHtcbiAgICAgICAgdG9rZW5zOiAgdG9rZW5zLCAvL1xuICAgICAgICBhbGxEZXZpY2VzOiBhbGxEZXZpY2VzPyBhbGxEZXZpY2VzOiBmYWxzZVxuICAgICAgfVxuICAgICAgLy9jb25zb2xlLmxvZygnbG9nb3V0JywgcGFyYW1zICk7XG4gICAgICBjb25zdCBlbmRwb2ludCA9IHRoaXMuYXBpLmdldEVuZHBvaW50KHBhdGgpO1xuICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGVuZHBvaW50LCBwYXJhbXMpLnBpcGUoXG4gICAgICAgIG1hcCggKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgLy9jb25zb2xlLmxvZyhgW0F1dGhlbnRpY2F0aW9uU2VydmljZV0gbG9nb3V0KCR7cGF0aH0pIHJlczogYCwgSlNPTi5zdHJpbmdpZnkocmVzKSApO1xuICAgICAgICAgIHRoaXMuaXNBdXRoZW50aWNhdGVkLm5leHQoZmFsc2UpO1xuICAgICAgICAgICBQcmVmZXJlbmNlcy5yZW1vdmUoeyBrZXk6ICB0aGlzLnVzZXIuZmFtaWx5VW5pdCB9KS50aGVuKCh2YWwpID0+IHsgfSk7XG4gICAgICAgICAgIFByZWZlcmVuY2VzLnJlbW92ZSh7IGtleTogJ3VzZXInIH0pLnRoZW4oKHZhbCkgPT4geyB9KTtcbiAgICAgICAgICAgdGhpcy50b2tlblNlcnZpY2UucmVtb3ZlQXV0aFRva2VuKClcbiAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgfVxuXG4gIGluY3JlYXNlTnVtbG9naW5GYWlsZWQoKXtcbiAgICBsZXQgbnVtRmFpbExvZ2luID0gMFxuICAgIGxldCBudW0gPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbnVtLWZhaWwtbG9naW4nKTtcbiAgICBpZihudW0pe1xuICAgICAgbGV0IG51bUZhaWxMb2dpbiA9IE51bWJlcihKU09OLnBhcnNlKG51bSkpICsgMVxuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ251bS1mYWlsLWxvZ2luJywnJytudW1GYWlsTG9naW4pO1xuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2xvZ2luX3JlcXVlc3RfbG9ja2VkX2F0JywnJysobmV3IERhdGUoKS5nZXRUaW1lKCkpKTtcbiAgICB9ZWxzZXtcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdudW0tZmFpbC1sb2dpbicsJzEnKTtcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdsb2dpbl9yZXF1ZXN0X2xvY2tlZF9hdCcsJycrKG5ldyBEYXRlKCkuZ2V0VGltZSgpKSk7XG4gICAgICBudW1GYWlsTG9naW4gPSAxXG4gICAgfVxuICAgIC8vY29uc29sZS5sb2coJ1tBdXRoZW50aWNhdGlvblNlcnZpY2VdIGluY3JlYXNlTnVtbG9naW5GYWlsZWQoKScsIG51bUZhaWxMb2dpbik7XG4gIH1cblxuICBpbmNyZWFzZU51bUZQQUlPRmFpbGVkKCl7XG4gICAgbGV0IG51bSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdudW0tZmFpbC1maW5nZXItcHJpbnQnKTtcbiAgICBpZihudW0pe1xuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ251bS1mYWlsLWxvZ2luJywnJysoTnVtYmVyKEpTT04ucGFyc2UobnVtKSkgKyAxKSk7XG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnbG9naW5fcmVxdWVzdF9sb2NrZWRfYXQnLCcnKyhuZXcgRGF0ZSgpLmdldFRpbWUoKSkpO1xuICAgIH1lbHNle1xuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ251bS1mYWlsLWxvZ2luJywnMScpO1xuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2xvZ2luX3JlcXVlc3RfbG9ja2VkX2F0JywnJysobmV3IERhdGUoKS5nZXRUaW1lKCkpKTtcbiAgICB9XG4gIH1cblxuICBnZXROdW1sb2dpbkZhaWxlZCgpe1xuICAgIGxldCBudW0gPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbnVtLWZhaWwtbG9naW4nKTtcbiAgICBpZihudW0pIHJldHVybiBOdW1iZXIoSlNPTi5wYXJzZShudW0pKVxuICAgIHJldHVybiAwXG4gIH1cblxuICBnZXREYXRlbG9naW5GYWlsZWQoKXtcbiAgICBsZXQgbnVtID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2xvZ2luX3JlcXVlc3RfbG9ja2VkX2F0Jyk7XG4gICAgaWYobnVtKSByZXR1cm4gTnVtYmVyKEpTT04ucGFyc2UobnVtKSlcbiAgICByZXR1cm4gMFxuICB9XG5cbiAgZ2V0TnVtRmluZ2VyUHJpbnRlckZhaWxlZCgpe1xuICAgIGxldCBudW0gPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbnVtLWZhaWwtZmluZ2VyLXByaW50Jyk7XG4gICAgaWYobnVtKSByZXR1cm4gTnVtYmVyKEpTT04ucGFyc2UobnVtKSlcbiAgICByZXR1cm4gMFxuICB9XG5cbiAgcmVtb3ZlTnVtbG9naW5GYWlsZWQoKXtcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnbnVtLWZhaWwtbG9naW4nKTtcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnbG9naW5fcmVxdWVzdF9sb2NrZWRfYXQnKTtcbiAgfVxuXG4gIHJlbW92ZU51bUZpcmdlclBGYWlsZWQoKXtcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnbnVtLWZhaWwtZmluZ2VyLXByaW50Jyk7XG4gICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ2xvZ2luX3JlcXVlc3RfbG9ja2VkX2F0Jyk7XG4gIH1cblxuICBnZXQoZW5kcHQpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGNvbnN0IGVuZHBvaW50ID0gdGhpcy5hcGkuZ2V0RG9vbGVFbmRwb2ludChlbmRwdCk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoZW5kcG9pbnQpLnBpcGUoXG4gICAgICBtYXAoKHJlczogYW55KSA9PiB7XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgICB9KVxuICAgICk7XG5cbiAgfVxuXG4gIHBvc3QoZW5kcHQsIGl0ZW1zKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCBlbmRwb2ludCA9IHRoaXMuYXBpLmdldERvb2xlRW5kcG9pbnQoZW5kcHQpO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChlbmRwb2ludCwgaXRlbXMpLnBpcGUoXG4gICAgICBtYXAoKHJlczogYW55KSA9PiB7XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICB0aHJvd0Vycm9yKGVycm9yOiBhbnkpIHtcblxuICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEh0dHBFcnJvclJlc3BvbnNlKVxuICAgICAgdGhyb3cgbmV3IEh0dHBFcnJvclJlc3BvbnNlKGVycm9yKTtcbiAgICBlbHNlXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IpO1xuICB9XG5cblxuICBwdWJsaWMgcmVnaXN0ZXJEZXZpY2UodG9rZW4sIHBsYXRmb3JtKSB7XG5cbiAgICAgaWYocGxhdGZvcm0gPT0gJ0ZDTScpXG4gICAgICBwbGF0Zm9ybSA9ICdhbmRyb2lkJztcbiAgICAgaWYocGxhdGZvcm0gPT0gJ0FQTlMnKVxuICAgICAgcGxhdGZvcm0gPSB0aGlzLmVuZHBvaW50cy5fRU5WSVJPTUVOVC5kZXZpY2VfaW9zLmlvc19wdXNoO1xuICAgICBpZihwbGF0Zm9ybSA9PSAnaW9zJylcbiAgICAgIHBsYXRmb3JtID0gdGhpcy5lbmRwb2ludHMuX0VOVklST01FTlQuZGV2aWNlX2lvcy5pb3NfcHVzaDtcblxuICAgICBjb25zdCBwb3N0RGF0YSA9IHtcbiAgICAgIHRva2VuOiB0b2tlbixcbiAgICAgIHBsYXRmb3JtOiBwbGF0Zm9ybSxcbiAgICAgIHZlcnNpb246IDFcbiAgICB9O1xuXG4gICAvLyAvL2NvbnNvbGUubG9nKFwicG9zdERhdGE6IFwiLCAgcG9zdERhdGEpO1xuXG4gICAgcmV0dXJuIHRoaXMucG9zdCgndXNlci9kZXZpY2UvcmVnaXN0ZXInLCBwb3N0RGF0YSkuc3Vic2NyaWJlKFxuICAgICAgYXN5bmMgKGRhdGEpID0+IHtcbiAgICAgICAgbGV0IHJlc3BvbnNlPWRhdGE7XG4gICAgICAgLy8gLy9jb25zb2xlLmxvZyhcInJlc3BvbnNlIHVzZXIvZGV2aWNlL3JlZ2lzdGVyXCIpO1xuICAgICAgICAvLy8vY29uc29sZS5sb2cocmVzcG9uc2UpO1xuICAgICAgICB0aGlzLnRva2VuU2VydmljZS5zYXZlQWxsVG9rZW5EZXZpY2VzKHBvc3REYXRhKVxuICAgICAgICAvL3RoaXMuc2F2ZUFsbFRva2VuRGV2aWNlcyhwb3N0RGF0YSlcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgICAgfSxcbiAgICAgIChlcnJvcikgPT4ge1xuICAgICAgICAvLyBDYWxsZWQgd2hlbiBlcnJvclxuICAgICAgICAvL2NvbnNvbGUubG9nKCdlcnJvciB1c2VyL2RldmljZS9yZWdpc3RlcjogJywgZXJyb3IpO1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH0pO1xuICB9XG5cbiAgLy8gc2F2ZUFsbFRva2VuRGV2aWNlcyh0b2tlbil7XG4gIC8vICAgdGhpcy50b2tlbnMucHVzaCh0b2tlbilcbiAgLy8gICAvL2NvbnNvbGUubG9nKGBbQXV0aFNlcnZpY2VdIHNhdmVBbGxUb2tlbkRldmljZXMoKWAsIHRoaXMudG9rZW5zKTtcbiAgLy8gICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShUT0tFTlMsSlNPTi5zdHJpbmdpZnkodGhpcy50b2tlbnMpKVxuICAvLyB9XG5cbiAgLy8gZ2V0QWxsVG9rZW5EZXZpY2VzKCl7XG4gIC8vICAgbGV0IGxpc3QgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFRPS0VOUykpXG4gIC8vICAgLy9jb25zb2xlLmxvZyhgW0F1dGhTZXJ2aWNlXSBnZXRBbGxUb2tlbkRldmljZXMoKWAsIGxpc3QpO1xuICAvLyAgIHRoaXMudG9rZW5zID0gbGlzdD8gbGlzdDpbXVxuICAvLyB9XG5cblxuICBhc3luYyBzaG93SW50cm8oKSB7XG4gICAgcmV0dXJuIFByZWZlcmVuY2VzLmdldCh7IGtleTogSU5UUk9fS0VZIH0pLnRoZW4oYXN5bmMgKGRhdGEpID0+IHtcbiAgICAgIGxldCBzaG93SW50cm8gPSBCb29sZWFuKGRhdGEudmFsdWUpXG4gICAgICAvL2NvbnNvbGUubG9nKGBbQXV0aFNlcnZpY2VdIHNob3dJbnRybygpYCwgc2hvd0ludHJvKTtcbiAgICAgIHJldHVybiBzaG93SW50cm87XG5cbiAgICB9KVxuXG4gIH1cblxuICBnZXRTaG93SGVhbHRoQ29ubmVjdExvY2Fsc3RvcmFnZSgpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybiBQcmVmZXJlbmNlcy5nZXQoeyBrZXk6ICdzaG93SGVhbHRoQ29ubmVjdCcgfSkudGhlbigodmFsKSA9PiB7XG4gICAgICByZXR1cm4gQm9vbGVhbih2YWwudmFsdWUpXG4gICAgfSk7XG4gIH1cblxuXG4gIHBvc3RBUEliaW9tZXRyaWMocGFyYW1zOiBPYmplY3QpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCBwYXRoID0gYHVzZXIvYmlvbWV0cmljYDtcbiAgICBjb25zdCBlbmRwb2ludCA9IHRoaXMuYXBpLmdldEVuZHBvaW50KHBhdGgpO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChlbmRwb2ludCwgcGFyYW1zKS5waXBlKFxuICAgICAgbWFwKChyZXM6IGFueSkgPT4ge1xuICAgICAgICAvL2NvbnNvbGUubG9nKGBbRG9vbGVTZXJ2aWNlXSBwb3N0QVBJYmlvbWV0cmljKCR7cGF0aH0pIHJlczogYCwgcmVzKTtcbiAgICAgICAgcmV0dXJuIHJlcztcblxuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHV0QVBJYmlvbWV0cmljKGlkOiBhbnksIHBhcmFtczogT2JqZWN0KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgcGF0aCA9IGB1c2VyL2Jpb21ldHJpYy8ke2lkfWA7XG4gICAgY29uc3QgZW5kcG9pbnQgPSB0aGlzLmFwaS5nZXRFbmRwb2ludChwYXRoKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dChlbmRwb2ludCwgcGFyYW1zKS5waXBlKFxuICAgICAgbWFwKChyZXM6IGFueSkgPT4ge1xuICAgICAgICAvL2NvbnNvbGUubG9nKGBbRG9vbGVTZXJ2aWNlXSBwdXRBUEliaW9tZXRyaWMoJHtwYXRofSkgcmVzOiBgLCByZXMpO1xuICAgICAgICByZXR1cm4gcmVzO1xuXG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBkZWxldGVBUEliaW9tZXRyaWMoaWQ6IE9iamVjdCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbGV0IHBhdGggPSBgdXNlci9iaW9tZXRyaWMvJHtpZH1gO1xuICAgIGNvbnN0IGVuZHBvaW50ID0gdGhpcy5hcGkuZ2V0RW5kcG9pbnQocGF0aCk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGUoZW5kcG9pbnQpLnBpcGUoXG4gICAgICBtYXAoKHJlczogYW55KSA9PiB7XG4gICAgICAgIC8vY29uc29sZS5sb2coYFtEb29sZVNlcnZpY2VdIGRlbGV0ZUFQSWJpb21ldHJpYygke3BhdGh9KSByZXM6ICR7cmVzfWAsIEpTT04uc3RyaW5naWZ5KHJlcykpO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcmVkaXJlY3RMb2dpbigpe1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoJy9sYW5kaW5nJyk7XG4gIH1cblxuXG4gIGFzeW5jIHJlZGlyZWN0VW5hdXRoZW50aWNhdGVkKCkge1xuXG4gICAgICBjb25zdCB0cmFuc2xhdGVTZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQoVHJhbnNsYXRlU2VydmljZSlcblxuICAgICAgY29uc3QgYWxlcnQgPSBhd2FpdCB0aGlzLmFsZXJ0Q29udHJvbGxlci5jcmVhdGUoe1xuICAgICAgICBjc3NDbGFzczogXCJhbGVydENsYXNzXCIsXG4gICAgICAgIGhlYWRlcjogIHRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnaW5mby50aXRsZScpLFxuICAgICAgICBiYWNrZHJvcERpc21pc3M6ZmFsc2UsXG4gICAgICAgIC8vIHN1YkhlYWRlcjogJ1N1YnRpdGxlJyxcbiAgICAgICAgbWVzc2FnZTogdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdsYW5kaW5nLmxvZ2luX2FnYWluJyksXG4gICAgICAgIGJ1dHRvbnM6IFtcbiAgICAgICAgICB7dGV4dDogdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdidXR0b24uYWNjZXB0JyksXG4gICAgICAgICAgaGFuZGxlcjogKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybChgL2xhbmRpbmdgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSk7XG5cbiAgICAgIGF3YWl0IGFsZXJ0LnByZXNlbnQoKTtcbiAgICB9XG5cbiAgICBnZXRTaG93R29vZ2xlRml0TG9jYWxzdG9yYWdlKCk6IFByb21pc2U8YW55PiB7XG4gICAgICByZXR1cm4gUHJlZmVyZW5jZXMuZ2V0KHsga2V5OiAnc2hvd0dvb2dsZUZpdCcgfSkudGhlbigodmFsKSA9PiB7XG4gICAgICAgIHJldHVybiBCb29sZWFuKHZhbC52YWx1ZSlcbiAgICAgIH0pO1xuICAgIH1cbiAgICBcbiAgICBhc3luYyBzZXRTaG93R29vZ2xlRml0TG9jYWxzdG9yYWdlKCkge1xuICAgICAgYXdhaXQgUHJlZmVyZW5jZXMuc2V0KHtcbiAgICAgICAga2V5OiAnc2hvd0dvb2dsZUZpdCcsXG4gICAgICAgIHZhbHVlOiAndHJ1ZSdcbiAgICAgIH0pO1xuICAgIH1cbiAgICBzZXRDYW5jZWxlZEdvb2dsZUZpdExvY2Fsc3RvcmFnZShtb3N0cmFyOiBzdHJpbmcpIHtcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdjYW5jZWxHb29nbGVGaXQnLCBtb3N0cmFyKTtcbiAgICB9XG5cbiAgICBnZXRDYW5jZWxlZEdvb2dsZUZpdExvY2Fsc3RvcmFnZSgpOmJvb2xlYW4ge1xuICAgICAgY29uc3QgdmFsdWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnY2FuY2VsR29vZ2xlRml0JylcbiAgICAgIHJldHVybiB2YWx1ZSAhPT0gbnVsbCA/IEpTT04ucGFyc2UodmFsdWUpIDogZmFsc2U7XG4gICAgfVxufVxuIl19
@@ -1,61 +1,21 @@
1
1
  import { Inject, Injectable } from '@angular/core';
2
- import { CONFIGURACION_TOKEN, PUSHERS_CONFIG_TOKEN } from '../configuration';
2
+ import { CONFIGURACION_TOKEN } from '../configuration';
3
3
  import { BehaviorSubject } from 'rxjs';
4
4
  import * as i0 from "@angular/core";
5
5
  export var _INDEX_ENPOINT = 0; //Por defecto index 0
6
6
  const ENDPOINT = 'endpoint';
7
7
  export class ChangeEndpointsService {
8
- constructor(constants, pusher) {
9
- this.constants = constants;
10
- this.pusher = pusher;
8
+ constructor(configuration) {
9
+ this.configuration = configuration;
11
10
  this._endpointIndex = new BehaviorSubject(this.getIndexEndPointLocalstorage());
12
11
  this._LIST_ENPOINT = [];
13
12
  this.addEndPoint();
14
13
  this.setDefaultEndPoint();
15
- console.log("Constants: ", constants);
14
+ //console.log("Constants: ", configuration)
16
15
  }
17
16
  async addEndPoint() {
18
17
  this._LIST_ENPOINT = [];
19
- this._LIST_ENPOINT.push({
20
- id: 0,
21
- name: 'enviroment.prod',
22
- api: this.constants.API_PROD_ENDPOINT,
23
- endpoint: this.constants.PROD_ENDPOINT,
24
- device_ios: { ios_push: 'ios', ios_voip: 'iosvoip' },
25
- pusher_key: this.pusher.PUSHER_KEY_PRO,
26
- color: 'primary',
27
- settings_bio: 'settings-bio',
28
- biometric: 'biometric',
29
- show_bio_dialog: 'show-bio-dialog',
30
- registered_user: 'registered-user',
31
- });
32
- this._LIST_ENPOINT.push({
33
- id: 1,
34
- name: 'enviroment.pre',
35
- api: this.constants.API_PRE_ENDPOINT,
36
- endpoint: this.constants.PRE_ENDPOINT,
37
- device_ios: { ios_push: 'ios_dev', ios_voip: 'iosvoipdev' },
38
- pusher_key: this.pusher.PUSHER_KEY_DEV,
39
- color: 'primary',
40
- settings_bio: 'settings-bio2',
41
- biometric: 'biometric2',
42
- show_bio_dialog: 'show-bio-dialog2',
43
- registered_user: 'registered-user2',
44
- });
45
- this._LIST_ENPOINT.push({
46
- id: 2,
47
- name: 'enviroment.dev',
48
- api: this.constants.API_ENDPOINT_DEV,
49
- endpoint: this.constants.ENDPOINT_DEV,
50
- device_ios: { ios_push: 'ios_dev', ios_voip: 'iosvoipdev' },
51
- pusher_key: this.pusher.PUSHER_KEY_DEV,
52
- color: 'primary',
53
- settings_bio: 'settings-bio2',
54
- biometric: 'biometric2',
55
- show_bio_dialog: 'show-bio-dialog2',
56
- registered_user: 'registered-user2',
57
- });
58
- // device_ios: {ios_push: 'ios', ios_voip: 'iosvoip'},
18
+ this._LIST_ENPOINT = this.configuration.LIST_ENPOINT;
59
19
  }
60
20
  setEndPoint(index) {
61
21
  this._ENVIROMENT = this._LIST_ENPOINT[index];
@@ -65,6 +25,7 @@ export class ChangeEndpointsService {
65
25
  this.getApiEndpointRegex(this.API_ENDPOINT);
66
26
  this.setIndexEndPointLocalstorage(index);
67
27
  this._endpointIndex.next(index);
28
+ ChangeEndpointsService.urlBackEnd = this.DOOLE_ENDPOINT;
68
29
  }
69
30
  setIndexEndPointLocalstorage(endpoint) {
70
31
  localStorage.setItem(ENDPOINT, JSON.stringify(endpoint));
@@ -96,7 +57,7 @@ export class ChangeEndpointsService {
96
57
  this.setEndPoint(index);
97
58
  }
98
59
  }
99
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChangeEndpointsService, deps: [{ token: CONFIGURACION_TOKEN }, { token: PUSHERS_CONFIG_TOKEN }], target: i0.ɵɵFactoryTarget.Injectable }); }
60
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChangeEndpointsService, deps: [{ token: CONFIGURACION_TOKEN }], target: i0.ɵɵFactoryTarget.Injectable }); }
100
61
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChangeEndpointsService, providedIn: 'root' }); }
101
62
  }
102
63
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChangeEndpointsService, decorators: [{
@@ -107,8 +68,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
107
68
  }], ctorParameters: () => [{ type: undefined, decorators: [{
108
69
  type: Inject,
109
70
  args: [CONFIGURACION_TOKEN]
110
- }] }, { type: undefined, decorators: [{
111
- type: Inject,
112
- args: [PUSHERS_CONFIG_TOKEN]
113
71
  }] }] });
114
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbmdlLWVuZHBvaW50cy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2VydmljZS1saWIvc3JjL2xpYi9zZXJ2aWNlcy9jaGFuZ2UtZW5kcG9pbnRzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkQsT0FBTyxFQUFFLG1CQUFtQixFQUFpQixvQkFBb0IsRUFBNEIsTUFBTSxrQkFBa0IsQ0FBQztBQUN0SCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQUV2QyxNQUFNLENBQUMsSUFBSSxjQUFjLEdBQVcsQ0FBQyxDQUFBLENBQUMsc0JBQXNCO0FBQzVELE1BQU0sUUFBUSxHQUFHLFVBQVUsQ0FBQztBQWtCNUIsTUFBTSxPQUFPLHNCQUFzQjtJQVFqQyxZQUN1QyxTQUF3QixFQUN2QixNQUFxQjtRQUR0QixjQUFTLEdBQVQsU0FBUyxDQUFlO1FBQ3ZCLFdBQU0sR0FBTixNQUFNLENBQWU7UUFUckQsbUJBQWMsR0FBRyxJQUFJLGVBQWUsQ0FBUyxJQUFJLENBQUMsNEJBQTRCLEVBQUUsQ0FBQyxDQUFDO1FBSW5GLGtCQUFhLEdBQXNCLEVBQUUsQ0FBQTtRQU10QyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUE7UUFDbEIsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUE7UUFDekIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsU0FBUyxDQUFDLENBQUE7SUFDeEMsQ0FBQztJQUVHLEtBQUssQ0FBQyxXQUFXO1FBQ3RCLElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFBO1FBRXZCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDO1lBQ3RCLEVBQUUsRUFBQyxDQUFDO1lBQ0osSUFBSSxFQUFFLGlCQUFpQjtZQUN2QixHQUFHLEVBQUUsSUFBSSxD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IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQW5ndWxhckZpcmVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9maXJlL2NvbXBhdCc7XG5pbXBvcnQgeyBDT05GSUdVUkFDSU9OX1RPS0VOLCBDb25maWd1cmFjaW9uLCBQVVNIRVJTX0NPTkZJR19UT0tFTiwgUHVzaGVyS2V5LCBQdXNoZXJzQ29uZmlnIH0gZnJvbSAnLi4vY29uZmlndXJhdGlvbic7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IHZhciBfSU5ERVhfRU5QT0lOVDogbnVtYmVyID0gMCAvL1BvciBkZWZlY3RvIGluZGV4IDAgXG5jb25zdCBFTkRQT0lOVCA9ICdlbmRwb2ludCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgZW52aXJvbWVudCB7XG4gIGlkOm51bWJlcixcbiAgbmFtZTogc3RyaW5nLCBcbiAgYXBpOiBzdHJpbmcsIFxuICBlbmRwb2ludDogc3RyaW5nLFxuICBkZXZpY2VfaW9zOiB7aW9zX3B1c2g6IHN0cmluZywgaW9zX3ZvaXA6IHN0cmluZ30sXG4gIGNvbG9yPzogc3RyaW5nLFxuICBwdXNoZXJfa2V5OiBQdXNoZXJLZXksXG4gIHNldHRpbmdzX2Jpbz86IHN0cmluZyxcbiAgYmlvbWV0cmljPzogc3RyaW5nLFxuICBzaG93X2Jpb19kaWFsb2c/OiBzdHJpbmcsXG4gIHJlZ2lzdGVyZWRfdXNlcj86IHN0cmluZyxcbn1cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIENoYW5nZUVuZHBvaW50c1NlcnZpY2Uge1xuICBwcml2YXRlIF9lbmRwb2ludEluZGV4ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KHRoaXMuZ2V0SW5kZXhFbmRQb2ludExvY2Fsc3RvcmFnZSgpKTtcbiAgcHVibGljIEFQSV9FTkRQT0lOVDogc3RyaW5nO1xuICBwdWJsaWMgRE9PTEVfRU5EUE9JTlQ6IHN0cmluZztcblxuICBwdWJsaWMgX0xJU1RfRU5QT0lOVDogQXJyYXk8ZW52aXJvbWVudD4gPSBbXSBcbiAgcHVibGljIF9FTlZJUk9NRU5UOiBlbnZpcm9tZW50O1xuICBwdWJsaWMgc3RhdGljIHVybEJhY2tFbmQ6IHN0cmluZztcbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChDT05GSUdVUkFDSU9OX1RPS0VOKSBwcml2YXRlIGNvbnN0YW50czogQ29uZmlndXJhY2lvbixcbiAgICBASW5qZWN0KFBVU0hFUlNfQ09ORklHX1RPS0VOKSBwcml2YXRlIHB1c2hlcjogUHVzaGVyc0NvbmZpZywpIHtcbiAgICAgICAgdGhpcy5hZGRFbmRQb2ludCgpXG4gICAgICAgIHRoaXMuc2V0RGVmYXVsdEVuZFBvaW50KClcbiAgICAgICAgY29uc29sZS5sb2coXCJDb25zdGFudHM6IFwiLCBjb25zdGFudHMpXG4gICAgIH1cblxuICBwdWJsaWMgYXN5bmMgYWRkRW5kUG9pbnQoKXsgICBcbiAgICB0aGlzLl9MSVNUX0VOUE9JTlQgPSBbXSBcblxuICAgIHRoaXMuX0xJU1RfRU5QT0lOVC5wdXNoKHtcbiAgICAgIGlkOjAsXG4gICAgICBuYW1lOiAnZW52aXJvbWVudC5wcm9kJywgXG4gICAgICBhcGk6IHRoaXMuY29uc3RhbnRzLkFQSV9QUk9EX0VORFBPSU5ULCBcbiAgICAgIGVuZHBvaW50OiB0aGlzLmNvbnN0YW50cy5QUk9EX0VORFBPSU5ULFxuICAgICAgZGV2aWNlX2lvczoge2lvc19wdXNoOiAnaW9zJywgaW9zX3ZvaXA6ICdpb3N2b2lwJ30sXG4gICAgICBwdXNoZXJfa2V5OiB0aGlzLnB1c2hlci5QVVNIRVJfS0VZX1BSTyxcbiAgICAgIGNvbG9yOiAncHJpbWFyeScsXG4gICAgICBzZXR0aW5nc19iaW86ICdzZXR0aW5ncy1iaW8nLFxuICAgICAgYmlvbWV0cmljOiAnYmlvbWV0cmljJyxcbiAgICAgIHNob3dfYmlvX2RpYWxvZzogJ3Nob3ctYmlvLWRpYWxvZycsXG4gICAgICByZWdpc3RlcmVkX3VzZXI6ICdyZWdpc3RlcmVkLXVzZXInLFxuICAgICBcbiAgICB9KVxuXG4gICAgdGhpcy5fTElTVF9FTlBPSU5ULnB1c2goe1xuICAgICAgaWQ6MSxcbiAgICAgIG5hbWU6ICdlbnZpcm9tZW50LnByZScsIFxuICAgICAgYXBpOiB0aGlzLmNvbnN0YW50cy5BUElfUFJFX0VORFBPSU5ULCBcbiAgICAgIGVuZHBvaW50OiB0aGlzLmNvbnN0YW50cy5QUkVfRU5EUE9JTlQsXG4gICAgICBkZXZpY2VfaW9zOiB7aW9zX3B1c2g6ICdpb3NfZGV2JywgaW9zX3ZvaXA6ICdpb3N2b2lwZGV2J30sXG4gICAgICBwdXNoZXJfa2V5OiB0aGlzLnB1c2hlci5QVVNIRVJfS0VZX0RFVixcbiAgICAgIGNvbG9yOiAncHJpbWFyeScsXG4gICAgICBzZXR0aW5nc19iaW86ICdzZXR0aW5ncy1iaW8yJyxcbiAgICAgIGJpb21ldHJpYzogJ2Jpb21ldHJpYzInLFxuICAgICAgc2hvd19iaW9fZGlhbG9nOiAnc2hvdy1iaW8tZGlhbG9nMicsXG4gICAgICByZWdpc3RlcmVkX3VzZXI6ICdyZWdpc3RlcmVkLXVzZXIyJyxcbiAgICAgXG4gICAgfSlcbiAgICB0aGlzLl9MSVNUX0VOUE9JTlQucHVzaCh7XG4gICAgICBpZDoyLFxuICAgICAgbmFtZTogJ2Vudmlyb21lbnQuZGV2JywgXG4gICAgICBhcGk6IHRoaXMuY29uc3RhbnRzLkFQSV9FTkRQT0lOVF9ERVYsIFxuICAgICAgZW5kcG9pbnQ6IHRoaXMuY29uc3RhbnRzLkVORFBPSU5UX0RFVixcbiAgICAgIGRldmljZV9pb3M6IHtpb3NfcHVzaDogJ2lvc19kZXYnLCBpb3Nfdm9pcDogJ2lvc3ZvaXBkZXYnfSxcbiAgICAgIHB1c2hlcl9rZXk6IHRoaXMucHVzaGVyLlBVU0hFUl9LRVlfREVWLFxuICAgICAgY29sb3I6ICdwcmltYXJ5JyxcbiAgICAgIHNldHRpbmdzX2JpbzogJ3NldHRpbmdzLWJpbzInLFxuICAgICAgYmlvbWV0cmljOiAnYmlvbWV0cmljMicsXG4gICAgICBzaG93X2Jpb19kaWFsb2c6ICdzaG93LWJpby1kaWFsb2cyJyxcbiAgICAgIHJlZ2lzdGVyZWRfdXNlcjogJ3JlZ2lzdGVyZWQtdXNlcjInLFxuICAgICBcbiAgICB9KVxuXG4gICBcbiAgLy8gICAgICBkZXZpY2VfaW9zOiB7aW9zX3B1c2g6ICdpb3MnLCBpb3Nfdm9pcDogJ2lvc3ZvaXAnfSxcbiAgfVxuXG4gIHB1YmxpYyBzZXRFbmRQb2ludChpbmRleCl7XG4gICAgXG4gICAgdGhpcy5fRU5WSVJPTUVOVCA9IHRoaXMuX0xJU1RfRU5QT0lOVFtpbmRleF1cbiAgICBfSU5ERVhfRU5QT0lOVCA9IGluZGV4XG5cbiAgICB0aGlzLkFQSV9FTkRQT0lOVCA9IHRoaXMuX0VOVklST01FTlQuYXBpXG4gICAgdGhpcy5ET09MRV9FTkRQT0lOVCA9IHRoaXMuX0VOVklST01FTlQuZW5kcG9pbnRcbiAgICB0aGlzLmdldEFwaUVuZHBvaW50UmVnZXgodGhpcy5BUElfRU5EUE9JTlQpXG4gICAgdGhpcy5zZXRJbmRleEVuZFBvaW50TG9jYWxzdG9yYWdlKGluZGV4KVxuICAgIHRoaXMuX2VuZHBvaW50SW5kZXgubmV4dChpbmRleCk7IFxuICAgXG4gIH1cblxuICBzZXRJbmRleEVuZFBvaW50TG9jYWxzdG9yYWdlKGVuZHBvaW50KSB7XG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oRU5EUE9JTlQsIEpTT04uc3RyaW5naWZ5KGVuZHBvaW50KSk7XG4gIH1cbiAgcHVibGljIGdldEFwaUVuZHBvaW50UmVnZXgoY3VycmVudEVudik6IFJlZ0V4cCB8IG51bGwge1xuICAgIFxuICAgIGlmICghY3VycmVudEVudikge1xuICAgICAgcmV0dXJuIG51bGw7IC8vIE5vIHNlIGVuY29udHLDsyBuaW5nw7puIGVudG9ybm8gZGVmaW5pZG9cbiAgICB9ICAgIFxuICAgIGNvbnN0IGFwaUJhc2VVcmwgPSBjdXJyZW50RW52O1xuICAgIGNvbnN0IGVzY2FwZWRBcGlCYXNlVXJsID0gYXBpQmFzZVVybC5yZXBsYWNlKC9bLiorP14ke30oKXxbXFxdXFxcXF0vZywgJ1xcXFwkJicpO1xuICAgIGNvbnN0IHJlZyA9IG5ldyBSZWdFeHAoYF4ke2VzY2FwZWRBcGlCYXNlVXJsfS9gKTtcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnU2VudHJ5Q29uZmknLCBKU09OLnN0cmluZ2lmeShyZWcuc291cmNlKSk7XG4gICAgcmV0dXJuIHJlZztcbiAgfVxuXG4gIGdldEluZGV4RW5kUG9pbnRMb2NhbHN0b3JhZ2UoKSB7XG4gICAgbGV0IGVuZHBvaW50ID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oRU5EUE9JTlQpO1xuICAgIC8vLy9jb25zb2xlLmxvZyhgW0NoYW5nZUVuZHBvaW50c1NlcnZpY2VdIHNldEVuZFBvaW50TG9jYWxzdG9yYWdlKClgLCBlbmRwb2ludCk7XG4gICAgaWYoZW5kcG9pbnQpIHJldHVybiBOdW1iZXIoSlNPTi5wYXJzZShlbmRwb2ludCkpXG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG4gIGdldEVuZHBvaW50SW5kZXhPYnNlcnZhYmxlKCkge1xuICAgIHJldHVybiB0aGlzLl9lbmRwb2ludEluZGV4LmFzT2JzZXJ2YWJsZSgpO1xuICB9XG4gIHNldERlZmF1bHRFbmRQb2ludCgpe1xuICAgIGlmKHRoaXMuQVBJX0VORFBPSU5UID09IHVuZGVmaW5lZCB8fCB0aGlzLkRPT0xFX0VORFBPSU5UID09IHVuZGVmaW5lZCl7XG4gICAgICBsZXQgaW5kZXggPSB0aGlzLmdldEluZGV4RW5kUG9pbnRMb2NhbHN0b3JhZ2UoKVxuICAgICAgaW5kZXggPSAoaW5kZXggPT0gdW5kZWZpbmVkKT8gX0lOREVYX0VOUE9JTlQ6IGluZGV4XG4gICAgICB0aGlzLnNldEVuZFBvaW50KGluZGV4KVxuICAgIH1cbiAgfVxufVxuIl19
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbmdlLWVuZHBvaW50cy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2VydmljZS1saWIvc3JjL2xpYi9zZXJ2aWNlcy9jaGFuZ2UtZW5kcG9pbnRzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLG1CQUFtQixFQUEyQyxNQUFNLGtCQUFrQixDQUFDO0FBQ2hHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBRXZDLE1BQU0sQ0FBQyxJQUFJLGNBQWMsR0FBVyxDQUFDLENBQUEsQ0FBQyxzQkFBc0I7QUFDNUQsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDO0FBa0I1QixNQUFNLE9BQU8sc0JBQXNCO0lBUWpDLFlBQ3VDLGFBQTRCO1FBQTVCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBUjNELG1CQUFjLEdBQUcsSUFBSSxlQUFlLENBQVMsSUFBSSxDQUFDLDRCQUE0QixFQUFFLENBQUMsQ0FBQztRQUluRixrQkFBYSxHQUFzQixFQUFFLENBQUE7UUFLdEMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFBO1FBQ2xCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFBO1FBQ3pCLDJDQUEyQztJQUM5QyxDQUFDO0lBRUcsS0FBSyxDQUFDLFdBQVc7UUFDdEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUE7UUFDdkIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQztJQUN2RCxDQUFDO0lBRU0sV0FBVyxDQUFDLEtBQUs7UUFFdEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQzVDLGNBQWMsR0FBRyxLQUFLLENBQUE7UUFFdEIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQTtRQUN4QyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFBO1FBQy9DLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUE7UUFDM0MsSUFBSSxDQUFDLDRCQUE0QixDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ3hDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hDLHNCQUFzQixDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFBO0lBQ3pELENBQUM7SUFFRCw0QkFBNEIsQ0FBQyxRQUFRO1FBQ25DLFlBQVksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBQ00sbUJBQW1CLENBQUMsVUFBVTtRQUVuQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDaEIsT0FBTyxJQUFJLENBQUMsQ0FBQyx5Q0FBeUM7UUFDeEQsQ0FBQztRQUNELE1BQU0sVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUM5QixNQUFNLGlCQUFpQixHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUMscUJBQXFCLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDNUUsTUFBTSxHQUFHLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxpQkFBaUIsR0FBRyxDQUFDLENBQUM7UUFDakQsWUFBWSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUNoRSxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFRCw0QkFBNEI7UUFDMUIsSUFBSSxRQUFRLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM5QyxnRkFBZ0Y7UUFDaEYsSUFBRyxRQUFRO1lBQUUsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFBO1FBQ2hELE9BQU8sU0FBUyxDQUFBO0lBQ2xCLENBQUM7SUFDRCwwQkFBMEI7UUFDeEIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzVDLENBQUM7SUFDRCxrQkFBa0I7UUFDaEIsSUFBRyxJQUFJLENBQUMsWUFBWSxJQUFJLFNBQVMsSUFBSSxJQUFJLENBQUMsY0FBYyxJQUFJLFNBQVMsRUFBQyxDQUFDO1lBQ3JFLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyw0QkFBNEIsRUFBRSxDQUFBO1lBQy9DLEtBQUssR0FBRyxDQUFDLEtBQUssSUFBSSxTQUFTLENBQUMsQ0FBQSxDQUFDLENBQUMsY0FBYyxDQUFBLENBQUMsQ0FBQyxLQUFLLENBQUE7WUFDbkQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUN6QixDQUFDO0lBQ0gsQ0FBQzsrR0EvRFUsc0JBQXNCLGtCQVN2QixtQkFBbUI7bUhBVGxCLHNCQUFzQixjQUZyQixNQUFNOzs0RkFFUCxzQkFBc0I7a0JBSGxDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFVSSxNQUFNOzJCQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ09ORklHVVJBQ0lPTl9UT0tFTiwgQ29uZmlndXJhY2lvbiwgUHVzaGVyS2V5LCBQdXNoZXJzQ29uZmlnIH0gZnJvbSAnLi4vY29uZmlndXJhdGlvbic7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IHZhciBfSU5ERVhfRU5QT0lOVDogbnVtYmVyID0gMCAvL1BvciBkZWZlY3RvIGluZGV4IDAgXG5jb25zdCBFTkRQT0lOVCA9ICdlbmRwb2ludCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgZW52aXJvbWVudCB7XG4gIGlkOm51bWJlcixcbiAgbmFtZTogc3RyaW5nLCBcbiAgYXBpOiBzdHJpbmcsIFxuICBlbmRwb2ludDogc3RyaW5nLFxuICBkZXZpY2VfaW9zOiB7aW9zX3B1c2g6IHN0cmluZywgaW9zX3ZvaXA6IHN0cmluZ30sXG4gIGNvbG9yPzogc3RyaW5nLFxuICBwdXNoZXJfa2V5OiBQdXNoZXJLZXksXG4gIHNldHRpbmdzX2Jpbz86IHN0cmluZyxcbiAgYmlvbWV0cmljPzogc3RyaW5nLFxuICBzaG93X2Jpb19kaWFsb2c/OiBzdHJpbmcsXG4gIHJlZ2lzdGVyZWRfdXNlcj86IHN0cmluZyxcbn1cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIENoYW5nZUVuZHBvaW50c1NlcnZpY2Uge1xuICBwcml2YXRlIF9lbmRwb2ludEluZGV4ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KHRoaXMuZ2V0SW5kZXhFbmRQb2ludExvY2Fsc3RvcmFnZSgpKTtcbiAgcHVibGljIEFQSV9FTkRQT0lOVDogc3RyaW5nO1xuICBwdWJsaWMgRE9PTEVfRU5EUE9JTlQ6IHN0cmluZztcblxuICBwdWJsaWMgX0xJU1RfRU5QT0lOVDogQXJyYXk8ZW52aXJvbWVudD4gPSBbXSBcbiAgcHVibGljIF9FTlZJUk9NRU5UOiBlbnZpcm9tZW50O1xuICBwdWJsaWMgc3RhdGljIHVybEJhY2tFbmQ6IHN0cmluZztcbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChDT05GSUdVUkFDSU9OX1RPS0VOKSBwcml2YXRlIGNvbmZpZ3VyYXRpb246IENvbmZpZ3VyYWNpb24pIHtcbiAgICAgICAgdGhpcy5hZGRFbmRQb2ludCgpXG4gICAgICAgIHRoaXMuc2V0RGVmYXVsdEVuZFBvaW50KClcbiAgICAgICAgLy9jb25zb2xlLmxvZyhcIkNvbnN0YW50czogXCIsIGNvbmZpZ3VyYXRpb24pXG4gICAgIH1cblxuICBwdWJsaWMgYXN5bmMgYWRkRW5kUG9pbnQoKXsgICBcbiAgICB0aGlzLl9MSVNUX0VOUE9JTlQgPSBbXSBcbiAgICB0aGlzLl9MSVNUX0VOUE9JTlQgPSB0aGlzLmNvbmZpZ3VyYXRpb24uTElTVF9FTlBPSU5UO1xuICB9XG5cbiAgcHVibGljIHNldEVuZFBvaW50KGluZGV4KXtcbiAgICBcbiAgICB0aGlzLl9FTlZJUk9NRU5UID0gdGhpcy5fTElTVF9FTlBPSU5UW2luZGV4XVxuICAgIF9JTkRFWF9FTlBPSU5UID0gaW5kZXhcblxuICAgIHRoaXMuQVBJX0VORFBPSU5UID0gdGhpcy5fRU5WSVJPTUVOVC5hcGlcbiAgICB0aGlzLkRPT0xFX0VORFBPSU5UID0gdGhpcy5fRU5WSVJPTUVOVC5lbmRwb2ludFxuICAgIHRoaXMuZ2V0QXBpRW5kcG9pbnRSZWdleCh0aGlzLkFQSV9FTkRQT0lOVClcbiAgICB0aGlzLnNldEluZGV4RW5kUG9pbnRMb2NhbHN0b3JhZ2UoaW5kZXgpXG4gICAgdGhpcy5fZW5kcG9pbnRJbmRleC5uZXh0KGluZGV4KTsgXG4gICAgQ2hhbmdlRW5kcG9pbnRzU2VydmljZS51cmxCYWNrRW5kID0gdGhpcy5ET09MRV9FTkRQT0lOVFxuICB9XG5cbiAgc2V0SW5kZXhFbmRQb2ludExvY2Fsc3RvcmFnZShlbmRwb2ludCkge1xuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKEVORFBPSU5ULCBKU09OLnN0cmluZ2lmeShlbmRwb2ludCkpO1xuICB9XG4gIHB1YmxpYyBnZXRBcGlFbmRwb2ludFJlZ2V4KGN1cnJlbnRFbnYpOiBSZWdFeHAgfCBudWxsIHtcbiAgICBcbiAgICBpZiAoIWN1cnJlbnRFbnYpIHtcbiAgICAgIHJldHVybiBudWxsOyAvLyBObyBzZSBlbmNvbnRyw7MgbmluZ8O6biBlbnRvcm5vIGRlZmluaWRvXG4gICAgfSAgICBcbiAgICBjb25zdCBhcGlCYXNlVXJsID0gY3VycmVudEVudjtcbiAgICBjb25zdCBlc2NhcGVkQXBpQmFzZVVybCA9IGFwaUJhc2VVcmwucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xcXVxcXFxdL2csICdcXFxcJCYnKTtcbiAgICBjb25zdCByZWcgPSBuZXcgUmVnRXhwKGBeJHtlc2NhcGVkQXBpQmFzZVVybH0vYCk7XG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ1NlbnRyeUNvbmZpJywgSlNPTi5zdHJpbmdpZnkocmVnLnNvdXJjZSkpO1xuICAgIHJldHVybiByZWc7XG4gIH1cblxuICBnZXRJbmRleEVuZFBvaW50TG9jYWxzdG9yYWdlKCkge1xuICAgIGxldCBlbmRwb2ludCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKEVORFBPSU5UKTtcbiAgICAvLy8vY29uc29sZS5sb2coYFtDaGFuZ2VFbmRwb2ludHNTZXJ2aWNlXSBzZXRFbmRQb2ludExvY2Fsc3RvcmFnZSgpYCwgZW5kcG9pbnQpO1xuICAgIGlmKGVuZHBvaW50KSByZXR1cm4gTnVtYmVyKEpTT04ucGFyc2UoZW5kcG9pbnQpKVxuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfVxuICBnZXRFbmRwb2ludEluZGV4T2JzZXJ2YWJsZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fZW5kcG9pbnRJbmRleC5hc09ic2VydmFibGUoKTtcbiAgfVxuICBzZXREZWZhdWx0RW5kUG9pbnQoKXtcbiAgICBpZih0aGlzLkFQSV9FTkRQT0lOVCA9PSB1bmRlZmluZWQgfHwgdGhpcy5ET09MRV9FTkRQT0lOVCA9PSB1bmRlZmluZWQpe1xuICAgICAgbGV0IGluZGV4ID0gdGhpcy5nZXRJbmRleEVuZFBvaW50TG9jYWxzdG9yYWdlKClcbiAgICAgIGluZGV4ID0gKGluZGV4ID09IHVuZGVmaW5lZCk/IF9JTkRFWF9FTlBPSU5UOiBpbmRleFxuICAgICAgdGhpcy5zZXRFbmRQb2ludChpbmRleClcbiAgICB9XG4gIH1cbn1cbiJdfQ==