general-library-union 2.4.99 → 2.5.2

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.
@@ -23,8 +23,8 @@ export class ErrorIntecertorService {
23
23
  showError(errorJson) {
24
24
  const error = JSON.parse(errorJson);
25
25
  if (error.codigo == 'UNI-DB-002' || error.codigo == 'UNI-DB-003'
26
- || error.mensaje.includes('Se produjo un error de red') || error.mensaje.includes('El servicio no está disponible')
27
- || error.mensaje.includes('Conexion no valida')) {
26
+ || error.mensaje?.includes('Se produjo un error de red') || error.mensaje?.includes('El servicio no está disponible')
27
+ || error.mensaje?.includes('Conexion no valida')) {
28
28
  this.storageService.setItem('mensaje_notfound', error.mensaje);
29
29
  this.storageService.setItem('url_regresar', window.location.href);
30
30
  window.location.href = window.location.origin + '/' + this.utilsService.obtenerBase() + '/not-found';
@@ -38,7 +38,7 @@ export class ErrorIntecertorService {
38
38
  this.showWarning(error.mensaje, error.codigo, error.causa, error.accion, error.traza);
39
39
  }
40
40
  else if (error.tipo === 'ERR') {
41
- this.showErrorDetails(error.mensaje, error.codigo, error.traza, error.causa);
41
+ this.showErrorDetails(error.mensaje ? error.mensaje : '', error.codigo, error.traza, error.causa);
42
42
  }
43
43
  }
44
44
  /**
@@ -145,4 +145,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImpor
145
145
  providedIn: 'root'
146
146
  }]
147
147
  }], ctorParameters: () => [{ type: i1.UtilsService }, { type: i2.Router }, { type: i3.AuthService }, { type: i4.StorageService }] });
148
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3ItaW50ZXJjZXB0b3Iuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29yZS9zZXJ2aWNpb3MvZXJyb3ItaW50ZXJjZXB0b3Iuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sSUFBSSxNQUFNLGFBQWEsQ0FBQzs7Ozs7O0FBVS9CLE1BQU0sT0FBTyxzQkFBc0I7SUFFYjtJQUNBO0lBQ0E7SUFDQTtJQUhwQixZQUFvQixZQUEwQixFQUMxQixLQUFhLEVBQ2IsV0FBd0IsRUFDeEIsY0FBOEI7UUFIOUIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsVUFBSyxHQUFMLEtBQUssQ0FBUTtRQUNiLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtJQUM5QyxDQUFDO0lBRUo7OztNQUdFO0lBQ0gsU0FBUyxDQUFDLFNBQWlCO1FBQ3pCLE1BQU0sS0FBSyxHQUF1QixJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3hELElBQUksS0FBSyxDQUFDLE1BQU0sSUFBSSxZQUFZLElBQUksS0FBSyxDQUFDLE1BQU0sSUFBSSxZQUFZO2VBQzNELEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLDRCQUE0QixDQUFDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsZ0NBQWdDLENBQUM7ZUFDaEgsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsb0JBQW9CLENBQUMsRUFBRyxDQUFDO1lBQ25ELElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLGtCQUFrQixFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUMvRCxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsTUFBTSxDQUFD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c291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgU3dhbCBmcm9tICdzd2VldGFsZXJ0Mic7XHJcbmltcG9ydCB7IEVycm9yUmVzcG9uc2VNb2RlbCB9IGZyb20gJy4uL21vZGVsb3MvZXJyb3ItcmVzcG9uc2UubW9kZWwnO1xyXG5pbXBvcnQgeyBVdGlsc1NlcnZpY2UgfSBmcm9tICcuL3V0aWxzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4vYXV0aC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuL3N0b3JhZ2Uuc2VydmljZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFcnJvckludGVjZXJ0b3JTZXJ2aWNlIHtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSB1dGlsc1NlcnZpY2U6IFV0aWxzU2VydmljZSxcclxuICAgICAgICAgICAgICBwcml2YXRlIHJvdXRlOiBSb3V0ZXIsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSBzdG9yYWdlU2VydmljZTogU3RvcmFnZVNlcnZpY2UsXHJcbiAgKSB7IH1cclxuXHJcbiAgIC8qKlxyXG4gICAqIE11ZXN0cmEgdW4gbWVuc2FqZSBkZSBlcnJvciBzZWfDum4gZWwgdGlwbyBkZSBlcnJvciBwcm9wb3JjaW9uYWRvLlxyXG4gICAqIEBwYXJhbSBlcnJvckpzb24gRWwgb2JqZXRvIEpTT04gcXVlIHJlcHJlc2VudGEgZWwgZXJyb3IuXHJcbiAgICovXHJcbiAgc2hvd0Vycm9yKGVycm9ySnNvbjogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBjb25zdCBlcnJvcjogRXJyb3JSZXNwb25zZU1vZGVsID0gSlNPTi5wYXJzZShlcnJvckpzb24pO1xyXG4gICAgaWYgKGVycm9yLmNvZGlnbyA9PSAnVU5JLURCLTAwMicgfHwgZXJyb3IuY29kaWdvID09ICdVTkktREItMDAzJyBcclxuICAgICAgfHwgZXJyb3IubWVuc2FqZS5pbmNsdWRlcygnU2UgcHJvZHVqbyB1biBlcnJvciBkZSByZWQnKSB8fCBlcnJvci5tZW5zYWplLmluY2x1ZGVzKCdFbCBzZXJ2aWNpbyBubyBlc3TDoSBkaXNwb25pYmxlJykgXHJcbiAgICAgIHx8IGVycm9yLm1lbnNhamUuaW5jbHVkZXMoJ0NvbmV4aW9uIG5vIHZhbGlkYScpKSAge1xyXG4gICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnNldEl0ZW0oJ21lbnNhamVfbm90Zm91bmQnLCBlcnJvci5tZW5zYWplKTtcclxuICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5zZXRJdGVtKCd1cmxfcmVncmVzYXInLCB3aW5kb3cubG9jYXRpb24uaHJlZik7XHJcbiAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gd2luZG93LmxvY2F0aW9uLm9yaWdpbiArICcvJyArIHRoaXMudXRpbHNTZXJ2aWNlLm9idGVuZXJCYXNlKCkgKyAnL25vdC1mb3VuZCdcclxuICAgICAgLy90aGlzLnJvdXRlLm5hdmlnYXRlKFt0aGlzLnV0aWxzU2VydmljZS5vYnRlbmVyQmFzZSgpKycvbm90LWZvdW5kJ10pO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAoZXJyb3IudGlwbyA9PT0gJ0lORicpIHtcclxuICAgICAgdGhpcy5zaG93SW5mbyhlcnJvci5tZW5zYWplLCBlcnJvci5jb2RpZ28pO1xyXG4gICAgfSBlbHNlIGlmIChlcnJvci50aXBvID09PSAnV0FSJykge1xyXG4gICAgICB0aGlzLnNob3dXYXJuaW5nKGVycm9yLm1lbnNhamUsIGVycm9yLmNvZGlnbywgZXJyb3IuY2F1c2EsIGVycm9yLmFjY2lvbiwgZXJyb3IudHJhemEpO1xyXG4gICAgfSBlbHNlIGlmIChlcnJvci50aXBvID09PSAnRVJSJykge1xyXG4gICAgICB0aGlzLnNob3dFcnJvckRldGFpbHMoZXJyb3IubWVuc2FqZSwgZXJyb3IuY29kaWdvLCBlcnJvci50cmF6YSwgZXJyb3IuY2F1c2EpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTXVlc3RyYSB1biBtZW5zYWplIGRlIGluZm9ybWFjacOzbiBjb24gZWwgY8OzZGlnby5cclxuICAgKiBAcGFyYW0gbWVuc2FqZSBFbCBtZW5zYWplIGEgbW9zdHJhci5cclxuICAgKiBAcGFyYW0gY29kaWdvIEVsIGPDs2RpZ28gYXNvY2lhZG8gYWwgbWVuc2FqZS5cclxuICAgKi9cclxuICBwcml2YXRlIHNob3dJbmZvKG1lbnNhamU6IHN0cmluZywgY29kaWdvOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIFN3YWwuZmlyZSh7XHJcbiAgICAgIGJhY2tncm91bmQ6ICcjZjdiZmJmJyxcclxuICAgICAgcG9zaXRpb246ICd0b3AtZW5kJyxcclxuICAgICAgaHRtbDogJzxkaXYgc3R5bGU9XCJ0ZXh0LWFsaWduOiBsZWZ0O1wiPicgK1xyXG4gICAgICAgICAgICAgICc8cCBzdHlsZT1cInRleHQtYWxpZ246IGxlZnQ7XCI+PGI+Q8OzZGlnbzo8L2I+ICcgKyBjb2RpZ28gKyAnPC9wPicgK1xyXG4gICAgICAgICAgICAgICc8cCBzdHlsZT1cInRleHQtYWxpZ246IGxlZnQ7IGZvbnQtc2l6ZToxMnB4XCI+JyArIG1lbnNhamUgKyAnPC9wPicgK1xyXG4gICAgICAgICAgICAnPC9kaXY+JyxcclxuICAgICAgc2hvd0NvbmZpcm1CdXR0b246IGZhbHNlLFxyXG4gICAgICB0aW1lcjogNTUwMCxcclxuICAgICAgY29sb3I6ICcjZmYwMDAwJ1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNdWVzdHJhIHVuYSBhZHZlcnRlbmNpYSBjb24gZGV0YWxsZXMgYWRpY2lvbmFsZXMgY29tbyBjYXVzYSwgYWNjacOzbiB5IHRyYXphLlxyXG4gICAqIEBwYXJhbSBtZW5zYWplIEVsIG1lbnNhamUgYSBtb3N0cmFyLlxyXG4gICAqIEBwYXJhbSBjb2RpZ28gRWwgY8OzZGlnbyBhc29jaWFkbyBhbCBtZW5zYWplLlxyXG4gICAqIEBwYXJhbSBjYXVzYSBMYSBjYXVzYSBkZWwgZXJyb3IuXHJcbiAgICogQHBhcmFtIGFjY2lvbiBMYSBhY2Npw7NuIHJlY29tZW5kYWRhLlxyXG4gICAqIEBwYXJhbSB0cmF6YSBMYSB0cmF6YSBkZWwgZXJyb3IuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzaG93V2FybmluZyhtZW5zYWplOiBzdHJpbmcsIGNvZGlnbzogc3RyaW5nLCBjYXVzYTogc3RyaW5nLCBhY2Npb246IHN0cmluZywgdHJhemE6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgbGV0IGNvbnRlbmlkb0h0bWwgPSBgPHAgY2xhc3M9XCJtc2pFcnJvclwiPiR7bWVuc2FqZX08L3A+YFxyXG4gICAgY29udGVuaWRvSHRtbCA9IGNvbnRlbmlkb0h0bWwgKyAodGhpcy51dGlsc1NlcnZpY2UudmFsaWRhckNhbXBvT2JsaWdhdG9yaW8oY29kaWdvKSA/IGA8cCBjbGFzcz1cImNhdUVycm9yXCI+PGI+Q8OzZGlnbzo8L2I+ICR7Y29kaWdvfTwvcD5gIDogJyAnKTtcclxuICAgIGNvbnRlbmlkb0h0bWwgPSBjb250ZW5pZG9IdG1sICsgKHRoaXMudXRpbHNTZXJ2aWNlLnZhbGlkYXJDYW1wb09ibGlnYXRvcmlvKGNhdXNhKSA/IGA8cCBjbGFzcz1cImNhdUVycm9yXCI+PGI+Q2F1c2E6PC9iPiAke2NhdXNhfTwvcD5gIDogJyAnKTtcclxuICAgIGNvbnRlbmlkb0h0bWwgPSBjb250ZW5pZG9IdG1sICsgKHRoaXMudXRpbHNTZXJ2aWNlLnZhbGlkYXJDYW1wb09ibGlnYXRvcmlvKGFjY2lvbikgPyBgPHAgY2xhc3M9XCJjYXVFcnJvclwiPjxiPkFjY2nDs24gUmVjb21lbmRhZGE6PC9iPiAke2FjY2lvbn08L3A+YCA6ICcgJyk7XHJcbiAgICBsZXQgY29udGVuaWRvUGx1c0h0bWwgPSBgPHAgY2xhc3M9XCJtc2pFcnJvclwiPiR7bWVuc2FqZS5zbGljZSgwLCAxMDApfTwvcD48YnV0dG9uIGlkPVwidmVyTWFzQnV0dG9uXCI+VmVyIG3DoXM8L2J1dHRvbj4gPGJ1dHRvbiBpZD1cIk9rXCI+T0s8L2J1dHRvbj5gO1xyXG5cclxuICAgIFN3YWwuZmlyZSh7XHJcbiAgICAgIHRpdGxlOiAnPHNwYW4gc3R5bGU9XCJjb2xvcjogdmFyKC0tY29sb3ItNzAwKTtcIj4nICsgJ0FkdmVydGVuY2lhJyArICc8L3NwYW4+JyxcclxuICAgICAgaHRtbDogY29udGVuaWRvSHRtbCxcclxuICAgICAgaWNvbjogJ3dhcm5pbmcnLFxyXG4gICAgICBzaG93Q2FuY2VsQnV0dG9uOiBmYWxzZSxcclxuICAgICAgc2hvd0Nsb3NlQnV0dG9uOiB0cnVlLFxyXG4gICAgICBzaG93Q29uZmlybUJ1dHRvbjogdHJ1ZSxcclxuICAgICAgZGlkT3BlbjogKCkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgT2tCdXR0b24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnT2snKTtcclxuICAgICAgICAgIE9rQnV0dG9uLmNsYXNzTGlzdC5hZGQoJ3N3YWwyLXN0eWxlZCcsICdzd2FsMi1jYW5jZWwnLCAnYnRuLW9rJyk7XHJcbiAgICAgICAgICBPa0J1dHRvbi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcclxuICAgICAgICAgICAgU3dhbC5jbG9zZSgpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE11ZXN0cmEgdW4gbWVuc2FqZSBkZSBlcnJvciBjb24gZGV0YWxsZXMgYWRpY2lvbmFsZXMgY29tbyBlbCBjw7NkaWdvIGRlIGVycm9yIHkgbGEgdHJhemEuXHJcbiAgICogQHBhcmFtIG1lbnNhamUgRWwgbWVuc2FqZSBhIG1vc3RyYXIuXHJcbiAgICogQHBhcmFtIGVycm9yQ29kZSBFbCBjw7NkaWdvIGRlIGVycm9yIGFzb2NpYWRvIGFsIG1lbnNhamUuXHJcbiAgICogQHBhcmFtIHRyYXphIExhIHRyYXphIGRlbCBlcnJvci5cclxuICAgKi9cclxuICBwcml2YXRlIHNob3dFcnJvckRldGFpbHMobWVuc2FqZTogc3RyaW5nLCBjb2RpZ286IHN0cmluZywgdHJhemE6IHN0cmluZywgY2F1c2E/IDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgIGxldCBjb250ZW5pZG9IdG1sID0gYDxwIGNsYXNzPVwibXNqRXJyb3JcIj4ke21lbnNhamV9PC9wPjxwIGNsYXNzPVwiY29kRXJyb3JcIj48Yj5Dw7NkaWdvOjwvYj4gJHtjb2RpZ299PC9wPjxwIGNsYXNzPVwidHJhRXJyb3JcIj48Yj5UcmF6YTo8L2I+ICR7dHJhemF9PC9wPjxwIGNsYXNzPVwiY2F1RXJyb3JcIj5gO1xyXG4gICAgICBpZiAoY2F1c2EhPSBudWxsICYmIGNhdXNhICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIGNvbnRlbmlkb0h0bWwgPSBgPHAgY2xhc3M9XCJtc2pFcnJvclwiPiR7bWVuc2FqZX08L3A+PHAgY2xhc3M9XCJjb2RFcnJvclwiPjxiPkPDs2RpZ286PC9iPiAke2NvZGlnb308L3A+PHAgY2xhc3M9XCJ0cmFFcnJvclwiPjxiPlRyYXphOjwvYj4gJHt0cmF6YX08L3A+PHAgY2xhc3M9XCJjYXVFcnJvclwiPjxiPkNhdXNhOjwvYj4gJHtjYXVzYX08L3A+YDtcclxuICAgICAgfVxyXG4gICAgICBsZXQgY29udGVuaWRvUGx1c0h0bWwgPSBgPHAgY2xhc3M9XCJtc2pFcnJvclwiPiR7bWVuc2FqZS5zbGljZSgwLCAxMDApfTwvcD48YnV0dG9uIGlkPVwidmVyTWFzQnV0dG9uXCI+VmVyIG3DoXM8L2J1dHRvbj4gPGJ1dHRvbiBjbGFzcz1cImJ0bi1va1wiIGlkPVwiT2tcIj5PSzwvYnV0dG9uPmA7XHJcblxyXG4gICAgICBTd2FsLmZpcmUoe1xyXG4gICAgICAgIHRpdGxlOiAnPHNwYW4gc3R5bGU9XCJjb2xvcjogdmFyKC0tY29sb3ItNzAwKTtcIj4nICsgJ0Vycm9yJyArICc8L3NwYW4+JyxcclxuICAgICAgICBodG1sOiAobWVuc2FqZS5sZW5ndGggKyB0cmF6YS5sZW5ndGgpID4gMTAwID8gY29udGVuaWRvUGx1c0h0bWwgOiBjb250ZW5pZG9IdG1sLFxyXG4gICAgICAgIGljb246ICdlcnJvcicsXHJcbiAgICAgICAgc2hvd0NhbmNlbEJ1dHRvbjogZmFsc2UsXHJcbiAgICAgICAgc2hvd0Nsb3NlQnV0dG9uOiB0cnVlLFxyXG4gICAgICAgIHNob3dDb25maXJtQnV0dG9uOiBmYWxzZSxcclxuICAgICAgICBjdXN0b21DbGFzczogJ215LXN3YWwnLFxyXG4gICAgICAgIGRpZE9wZW46ICgpID0+IHtcclxuICAgICAgICAgIGlmICgobWVuc2FqZS5sZW5ndGggKyB0cmF6YS5sZW5ndGgpID4gMTAwKSB7XHJcbiAgICAgICAgICAgIC8vIEFncmVnYXIgZXN0aWxvcyBhbCBib3TDs24gXCJWZXIgbcOhc1wiXHJcbiAgICAgICAgICAgIGNvbnN0IHZlck1hc0J1dHRvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd2ZXJNYXNCdXR0b24nKTtcclxuICAgICAgICAgICAgdmVyTWFzQnV0dG9uLmNsYXNzTGlzdC5hZGQoJ3N3YWwyLXN0eWxlZCcsICdzd2FsMi1jYW5jZWwnLCAnYnRuLXZlcm1hcycgKTtcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IE9rQnV0dG9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ09rJyk7XHJcbiAgICAgICAgICAgIE9rQnV0dG9uLmNsYXNzTGlzdC5hZGQoJ3N3YWwyLXN0eWxlZCcsICdzd2FsMi1jYW5jZWwnICwgJ2J0bi1vaycpO1xyXG5cclxuICAgICAgICAgICAgLy8gQWdyZWdhciB1biBldmVudG8gYWwgYm90w7NuIFwiVmVyIG3DoXNcIiBwYXJhIG1vc3RyYXIgdG9kbyBlbCBjb250ZW5pZG8gY3VhbmRvIHNlIGhhY2UgY2xpY1xyXG4gICAgICAgICAgICB2ZXJNYXNCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgU3dhbC51cGRhdGUoe1xyXG4gICAgICAgICAgICAgICAgaHRtbDogY29udGVuaWRvSHRtbCxcclxuICAgICAgICAgICAgICAgIHNob3dDb25maXJtQnV0dG9uOiB0cnVlLFxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIE9rQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4ge1xyXG4gICAgICAgICAgICAgIFN3YWwuY2xvc2UoKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICBTd2FsLnVwZGF0ZSh7XHJcbiAgICAgICAgICAgICAgaHRtbDogY29udGVuaWRvSHRtbCxcclxuICAgICAgICAgICAgICBzaG93Q29uZmlybUJ1dHRvbjogdHJ1ZSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
148
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3ItaW50ZXJjZXB0b3Iuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29yZS9zZXJ2aWNpb3MvZXJyb3ItaW50ZXJjZXB0b3Iuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sSUFBSSxNQUFNLGFBQWEsQ0FBQzs7Ozs7O0FBVS9CLE1BQU0sT0FBTyxzQkFBc0I7SUFFYjtJQUNBO0lBQ0E7SUFDQTtJQUhwQixZQUFvQixZQUEwQixFQUMxQixLQUFhLEVBQ2IsV0FBd0IsRUFDeEIsY0FBOEI7UUFIOUIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsVUFBSyxHQUFMLEtBQUssQ0FBUTtRQUNiLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtJQUM5QyxDQUFDO0lBRUo7OztNQUdFO0lBQ0gsU0FBUyxDQUFDLFNBQWlCO1FBQ3pCLE1BQU0sS0FBSyxHQUF1QixJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3hELElBQUksS0FBSyxDQUFDLE1BQU0sSUFBSSxZQUFZLElBQUksS0FBSyxDQUFDLE1BQU0sSUFBSSxZQUFZO2VBQzNELEtBQUssQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLDRCQUE0QixDQUFDLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsZ0NBQWdDLENBQUM7ZUFDbEgsS0FBSyxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsb0JBQW9CLENBQUMsRUFBRyxDQUFDO1lBQ3BELElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLGtCQUFrQixFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUMvRCxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsTUFBTSxDQUFD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QjtrQkFIbEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCBTd2FsIGZyb20gJ3N3ZWV0YWxlcnQyJztcclxuaW1wb3J0IHsgRXJyb3JSZXNwb25zZU1vZGVsIH0gZnJvbSAnLi4vbW9kZWxvcy9lcnJvci1yZXNwb25zZS5tb2RlbCc7XHJcbmltcG9ydCB7IFV0aWxzU2VydmljZSB9IGZyb20gJy4vdXRpbHMuc2VydmljZSc7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi9hdXRoLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTdG9yYWdlU2VydmljZSB9IGZyb20gJy4vc3RvcmFnZS5zZXJ2aWNlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEVycm9ySW50ZWNlcnRvclNlcnZpY2Uge1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHV0aWxzU2VydmljZTogVXRpbHNTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgcm91dGU6IFJvdXRlcixcclxuICAgICAgICAgICAgICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcclxuICAgICAgICAgICAgICBwcml2YXRlIHN0b3JhZ2VTZXJ2aWNlOiBTdG9yYWdlU2VydmljZSxcclxuICApIHsgfVxyXG5cclxuICAgLyoqXHJcbiAgICogTXVlc3RyYSB1biBtZW5zYWplIGRlIGVycm9yIHNlZ8O6biBlbCB0aXBvIGRlIGVycm9yIHByb3BvcmNpb25hZG8uXHJcbiAgICogQHBhcmFtIGVycm9ySnNvbiBFbCBvYmpldG8gSlNPTiBxdWUgcmVwcmVzZW50YSBlbCBlcnJvci5cclxuICAgKi9cclxuICBzaG93RXJyb3IoZXJyb3JKc29uOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGNvbnN0IGVycm9yOiBFcnJvclJlc3BvbnNlTW9kZWwgPSBKU09OLnBhcnNlKGVycm9ySnNvbik7XHJcbiAgICBpZiAoZXJyb3IuY29kaWdvID09ICdVTkktREItMDAyJyB8fCBlcnJvci5jb2RpZ28gPT0gJ1VOSS1EQi0wMDMnIFxyXG4gICAgICB8fCBlcnJvci5tZW5zYWplPy5pbmNsdWRlcygnU2UgcHJvZHVqbyB1biBlcnJvciBkZSByZWQnKSB8fCBlcnJvci5tZW5zYWplPy5pbmNsdWRlcygnRWwgc2VydmljaW8gbm8gZXN0w6EgZGlzcG9uaWJsZScpIFxyXG4gICAgICB8fCBlcnJvci5tZW5zYWplPy5pbmNsdWRlcygnQ29uZXhpb24gbm8gdmFsaWRhJykpICB7XHJcbiAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2V0SXRlbSgnbWVuc2FqZV9ub3Rmb3VuZCcsIGVycm9yLm1lbnNhamUpO1xyXG4gICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnNldEl0ZW0oJ3VybF9yZWdyZXNhcicsIHdpbmRvdy5sb2NhdGlvbi5ocmVmKTtcclxuICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSB3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgJy8nICsgdGhpcy51dGlsc1NlcnZpY2Uub2J0ZW5lckJhc2UoKSArICcvbm90LWZvdW5kJ1xyXG4gICAgICAvL3RoaXMucm91dGUubmF2aWdhdGUoW3RoaXMudXRpbHNTZXJ2aWNlLm9idGVuZXJCYXNlKCkrJy9ub3QtZm91bmQnXSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmIChlcnJvci50aXBvID09PSAnSU5GJykge1xyXG4gICAgICB0aGlzLnNob3dJbmZvKGVycm9yLm1lbnNhamUsIGVycm9yLmNvZGlnbyk7XHJcbiAgICB9IGVsc2UgaWYgKGVycm9yLnRpcG8gPT09ICdXQVInKSB7XHJcbiAgICAgIHRoaXMuc2hvd1dhcm5pbmcoZXJyb3IubWVuc2FqZSwgZXJyb3IuY29kaWdvLCBlcnJvci5jYXVzYSwgZXJyb3IuYWNjaW9uLCBlcnJvci50cmF6YSk7XHJcbiAgICB9IGVsc2UgaWYgKGVycm9yLnRpcG8gPT09ICdFUlInKSB7XHJcbiAgICAgIHRoaXMuc2hvd0Vycm9yRGV0YWlscyhlcnJvci5tZW5zYWplID8gZXJyb3IubWVuc2FqZSA6ICcnLCBlcnJvci5jb2RpZ28sIGVycm9yLnRyYXphLCBlcnJvci5jYXVzYSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNdWVzdHJhIHVuIG1lbnNhamUgZGUgaW5mb3JtYWNpw7NuIGNvbiBlbCBjw7NkaWdvLlxyXG4gICAqIEBwYXJhbSBtZW5zYWplIEVsIG1lbnNhamUgYSBtb3N0cmFyLlxyXG4gICAqIEBwYXJhbSBjb2RpZ28gRWwgY8OzZGlnbyBhc29jaWFkbyBhbCBtZW5zYWplLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgc2hvd0luZm8obWVuc2FqZTogc3RyaW5nLCBjb2RpZ286IHN0cmluZyk6IHZvaWQge1xyXG4gICAgU3dhbC5maXJlKHtcclxuICAgICAgYmFja2dyb3VuZDogJyNmN2JmYmYnLFxyXG4gICAgICBwb3NpdGlvbjogJ3RvcC1lbmQnLFxyXG4gICAgICBodG1sOiAnPGRpdiBzdHlsZT1cInRleHQtYWxpZ246IGxlZnQ7XCI+JyArXHJcbiAgICAgICAgICAgICAgJzxwIHN0eWxlPVwidGV4dC1hbGlnbjogbGVmdDtcIj48Yj5Dw7NkaWdvOjwvYj4gJyArIGNvZGlnbyArICc8L3A+JyArXHJcbiAgICAgICAgICAgICAgJzxwIHN0eWxlPVwidGV4dC1hbGlnbjogbGVmdDsgZm9udC1zaXplOjEycHhcIj4nICsgbWVuc2FqZSArICc8L3A+JyArXHJcbiAgICAgICAgICAgICc8L2Rpdj4nLFxyXG4gICAgICBzaG93Q29uZmlybUJ1dHRvbjogZmFsc2UsXHJcbiAgICAgIHRpbWVyOiA1NTAwLFxyXG4gICAgICBjb2xvcjogJyNmZjAwMDAnXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE11ZXN0cmEgdW5hIGFkdmVydGVuY2lhIGNvbiBkZXRhbGxlcyBhZGljaW9uYWxlcyBjb21vIGNhdXNhLCBhY2Npw7NuIHkgdHJhemEuXHJcbiAgICogQHBhcmFtIG1lbnNhamUgRWwgbWVuc2FqZSBhIG1vc3RyYXIuXHJcbiAgICogQHBhcmFtIGNvZGlnbyBFbCBjw7NkaWdvIGFzb2NpYWRvIGFsIG1lbnNhamUuXHJcbiAgICogQHBhcmFtIGNhdXNhIExhIGNhdXNhIGRlbCBlcnJvci5cclxuICAgKiBAcGFyYW0gYWNjaW9uIExhIGFjY2nDs24gcmVjb21lbmRhZGEuXHJcbiAgICogQHBhcmFtIHRyYXphIExhIHRyYXphIGRlbCBlcnJvci5cclxuICAgKi9cclxuICBwcml2YXRlIHNob3dXYXJuaW5nKG1lbnNhamU6IHN0cmluZywgY29kaWdvOiBzdHJpbmcsIGNhdXNhOiBzdHJpbmcsIGFjY2lvbjogc3RyaW5nLCB0cmF6YTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBsZXQgY29udGVuaWRvSHRtbCA9IGA8cCBjbGFzcz1cIm1zakVycm9yXCI+JHttZW5zYWplfTwvcD5gXHJcbiAgICBjb250ZW5pZG9IdG1sID0gY29udGVuaWRvSHRtbCArICh0aGlzLnV0aWxzU2VydmljZS52YWxpZGFyQ2FtcG9PYmxpZ2F0b3Jpbyhjb2RpZ28pID8gYDxwIGNsYXNzPVwiY2F1RXJyb3JcIj48Yj5Dw7NkaWdvOjwvYj4gJHtjb2RpZ299PC9wPmAgOiAnICcpO1xyXG4gICAgY29udGVuaWRvSHRtbCA9IGNvbnRlbmlkb0h0bWwgKyAodGhpcy51dGlsc1NlcnZpY2UudmFsaWRhckNhbXBvT2JsaWdhdG9yaW8oY2F1c2EpID8gYDxwIGNsYXNzPVwiY2F1RXJyb3JcIj48Yj5DYXVzYTo8L2I+ICR7Y2F1c2F9PC9wPmAgOiAnICcpO1xyXG4gICAgY29udGVuaWRvSHRtbCA9IGNvbnRlbmlkb0h0bWwgKyAodGhpcy51dGlsc1NlcnZpY2UudmFsaWRhckNhbXBvT2JsaWdhdG9yaW8oYWNjaW9uKSA/IGA8cCBjbGFzcz1cImNhdUVycm9yXCI+PGI+QWNjacOzbiBSZWNvbWVuZGFkYTo8L2I+ICR7YWNjaW9ufTwvcD5gIDogJyAnKTtcclxuICAgIGxldCBjb250ZW5pZG9QbHVzSHRtbCA9IGA8cCBjbGFzcz1cIm1zakVycm9yXCI+JHttZW5zYWplLnNsaWNlKDAsIDEwMCl9PC9wPjxidXR0b24gaWQ9XCJ2ZXJNYXNCdXR0b25cIj5WZXIgbcOhczwvYnV0dG9uPiA8YnV0dG9uIGlkPVwiT2tcIj5PSzwvYnV0dG9uPmA7XHJcblxyXG4gICAgU3dhbC5maXJlKHtcclxuICAgICAgdGl0bGU6ICc8c3BhbiBzdHlsZT1cImNvbG9yOiB2YXIoLS1jb2xvci03MDApO1wiPicgKyAnQWR2ZXJ0ZW5jaWEnICsgJzwvc3Bhbj4nLFxyXG4gICAgICBodG1sOiBjb250ZW5pZG9IdG1sLFxyXG4gICAgICBpY29uOiAnd2FybmluZycsXHJcbiAgICAgIHNob3dDYW5jZWxCdXR0b246IGZhbHNlLFxyXG4gICAgICBzaG93Q2xvc2VCdXR0b246IHRydWUsXHJcbiAgICAgIHNob3dDb25maXJtQnV0dG9uOiB0cnVlLFxyXG4gICAgICBkaWRPcGVuOiAoKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBPa0J1dHRvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdPaycpO1xyXG4gICAgICAgICAgT2tCdXR0b24uY2xhc3NMaXN0LmFkZCgnc3dhbDItc3R5bGVkJywgJ3N3YWwyLWNhbmNlbCcsICdidG4tb2snKTtcclxuICAgICAgICAgIE9rQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4ge1xyXG4gICAgICAgICAgICBTd2FsLmNsb3NlKCk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTXVlc3RyYSB1biBtZW5zYWplIGRlIGVycm9yIGNvbiBkZXRhbGxlcyBhZGljaW9uYWxlcyBjb21vIGVsIGPDs2RpZ28gZGUgZXJyb3IgeSBsYSB0cmF6YS5cclxuICAgKiBAcGFyYW0gbWVuc2FqZSBFbCBtZW5zYWplIGEgbW9zdHJhci5cclxuICAgKiBAcGFyYW0gZXJyb3JDb2RlIEVsIGPDs2RpZ28gZGUgZXJyb3IgYXNvY2lhZG8gYWwgbWVuc2FqZS5cclxuICAgKiBAcGFyYW0gdHJhemEgTGEgdHJhemEgZGVsIGVycm9yLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgc2hvd0Vycm9yRGV0YWlscyhtZW5zYWplOiBzdHJpbmcsIGNvZGlnbzogc3RyaW5nLCB0cmF6YTogc3RyaW5nLCBjYXVzYT8gOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgbGV0IGNvbnRlbmlkb0h0bWwgPSBgPHAgY2xhc3M9XCJtc2pFcnJvclwiPiR7bWVuc2FqZX08L3A+PHAgY2xhc3M9XCJjb2RFcnJvclwiPjxiPkPDs2RpZ286PC9iPiAke2NvZGlnb308L3A+PHAgY2xhc3M9XCJ0cmFFcnJvclwiPjxiPlRyYXphOjwvYj4gJHt0cmF6YX08L3A+PHAgY2xhc3M9XCJjYXVFcnJvclwiPmA7XHJcbiAgICAgIGlmIChjYXVzYSE9IG51bGwgJiYgY2F1c2EgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgY29udGVuaWRvSHRtbCA9IGA8cCBjbGFzcz1cIm1zakVycm9yXCI+JHttZW5zYWplfTwvcD48cCBjbGFzcz1cImNvZEVycm9yXCI+PGI+Q8OzZGlnbzo8L2I+ICR7Y29kaWdvfTwvcD48cCBjbGFzcz1cInRyYUVycm9yXCI+PGI+VHJhemE6PC9iPiAke3RyYXphfTwvcD48cCBjbGFzcz1cImNhdUVycm9yXCI+PGI+Q2F1c2E6PC9iPiAke2NhdXNhfTwvcD5gO1xyXG4gICAgICB9XHJcbiAgICAgIGxldCBjb250ZW5pZG9QbHVzSHRtbCA9IGA8cCBjbGFzcz1cIm1zakVycm9yXCI+JHttZW5zYWplLnNsaWNlKDAsIDEwMCl9PC9wPjxidXR0b24gaWQ9XCJ2ZXJNYXNCdXR0b25cIj5WZXIgbcOhczwvYnV0dG9uPiA8YnV0dG9uIGNsYXNzPVwiYnRuLW9rXCIgaWQ9XCJPa1wiPk9LPC9idXR0b24+YDtcclxuXHJcbiAgICAgIFN3YWwuZmlyZSh7XHJcbiAgICAgICAgdGl0bGU6ICc8c3BhbiBzdHlsZT1cImNvbG9yOiB2YXIoLS1jb2xvci03MDApO1wiPicgKyAnRXJyb3InICsgJzwvc3Bhbj4nLFxyXG4gICAgICAgIGh0bWw6IChtZW5zYWplLmxlbmd0aCArIHRyYXphLmxlbmd0aCkgPiAxMDAgPyBjb250ZW5pZG9QbHVzSHRtbCA6IGNvbnRlbmlkb0h0bWwsXHJcbiAgICAgICAgaWNvbjogJ2Vycm9yJyxcclxuICAgICAgICBzaG93Q2FuY2VsQnV0dG9uOiBmYWxzZSxcclxuICAgICAgICBzaG93Q2xvc2VCdXR0b246IHRydWUsXHJcbiAgICAgICAgc2hvd0NvbmZpcm1CdXR0b246IGZhbHNlLFxyXG4gICAgICAgIGN1c3RvbUNsYXNzOiAnbXktc3dhbCcsXHJcbiAgICAgICAgZGlkT3BlbjogKCkgPT4ge1xyXG4gICAgICAgICAgaWYgKChtZW5zYWplLmxlbmd0aCArIHRyYXphLmxlbmd0aCkgPiAxMDApIHtcclxuICAgICAgICAgICAgLy8gQWdyZWdhciBlc3RpbG9zIGFsIGJvdMOzbiBcIlZlciBtw6FzXCJcclxuICAgICAgICAgICAgY29uc3QgdmVyTWFzQnV0dG9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Zlck1hc0J1dHRvbicpO1xyXG4gICAgICAgICAgICB2ZXJNYXNCdXR0b24uY2xhc3NMaXN0LmFkZCgnc3dhbDItc3R5bGVkJywgJ3N3YWwyLWNhbmNlbCcsICdidG4tdmVybWFzJyApO1xyXG5cclxuICAgICAgICAgICAgY29uc3QgT2tCdXR0b24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnT2snKTtcclxuICAgICAgICAgICAgT2tCdXR0b24uY2xhc3NMaXN0LmFkZCgnc3dhbDItc3R5bGVkJywgJ3N3YWwyLWNhbmNlbCcgLCAnYnRuLW9rJyk7XHJcblxyXG4gICAgICAgICAgICAvLyBBZ3JlZ2FyIHVuIGV2ZW50byBhbCBib3TDs24gXCJWZXIgbcOhc1wiIHBhcmEgbW9zdHJhciB0b2RvIGVsIGNvbnRlbmlkbyBjdWFuZG8gc2UgaGFjZSBjbGljXHJcbiAgICAgICAgICAgIHZlck1hc0J1dHRvbi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcclxuICAgICAgICAgICAgICBTd2FsLnVwZGF0ZSh7XHJcbiAgICAgICAgICAgICAgICBodG1sOiBjb250ZW5pZG9IdG1sLFxyXG4gICAgICAgICAgICAgICAgc2hvd0NvbmZpcm1CdXR0b246IHRydWUsXHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgT2tCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgU3dhbC5jbG9zZSgpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgIFN3YWwudXBkYXRlKHtcclxuICAgICAgICAgICAgICBodG1sOiBjb250ZW5pZG9IdG1sLFxyXG4gICAgICAgICAgICAgIHNob3dDb25maXJtQnV0dG9uOiB0cnVlLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICB9XHJcbn1cclxuIl19
@@ -325,7 +325,6 @@ export class CarguePlantillaGeneralComponent {
325
325
  this.mostrarEditor = true;
326
326
  }
327
327
  async guardarHtml() {
328
- console.log('this.modificarHTML', this.modificarHTML);
329
328
  await firstValueFrom(this.plantillasService.guardarArchivoHtml(this.rutaPrincipal, this.archivoSeleccionado.data, this.modificarHTML));
330
329
  this.toastService.showSuccess('El archivo ha sido modificado correctamente');
331
330
  this.ngOnInit();
@@ -339,7 +338,7 @@ export class CarguePlantillaGeneralComponent {
339
338
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: CarguePlantillaGeneralComponent, deps: [{ token: i1.PlantillasService }, { token: i2.AuthService }, { token: i3.TranslateService }, { token: i4.CargarControlFuncionalidadService }, { token: i5.ConfirmationService }, { token: i6.ToastService }, { token: i7.CargarArchivosService }, { token: i8.EncriptadoBasicoService }, { token: i9.GeneralPipe }, { token: i10.UtilsService }], target: i0.ɵɵFactoryTarget.Component });
340
339
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.4", type: CarguePlantillaGeneralComponent, isStandalone: true, selector: "app-cargue-plantilla-general", providers: [
341
340
  ConfirmationService
342
- ], viewQueries: [{ propertyName: "popupConvertirPlantillasComponent", first: true, predicate: PopupConvertirPlantillasComponent, descendants: true }, { propertyName: "miFormulario", first: true, predicate: ["miFormulario"], descendants: true }, { propertyName: "treeComponent", first: true, predicate: ["tree"], descendants: true }], ngImport: i0, template: "<p-confirmPopup key=\"eliminarCarpeta\"></p-confirmPopup>\r\n<p-confirmPopup key=\"eliminarArchivo\"></p-confirmPopup>\r\n\r\n<h1 class=\"mb-4\">{{'cargue' | translate}} {{'plantillas' | translate}}</h1>\r\n\r\n<div class=\"p-fluid p-formgrid grid\">\r\n\r\n <div class=\"field col-12 md:col-6 lg:col-5\">\r\n <div class=\"flex justify-content-between align-items-center justify-content-center\">\r\n <input type=\"text\" pInputText [(ngModel)]=\"filterValue\" placeholder=\"{{'filtro' | translate}}\"\r\n (keydown)=\"filtrarEnter($event)\" />\r\n <button type=\"button\" pButton pRipple icon=\"pi pi-search text-xl\" (click)=\"aplicarFiltro()\"\r\n class=\"p-element p-ripple p-button-rounded p-button-secondary p-button p-component p-button-icon-only\"\r\n tooltipPosition=\"bottom\" pTooltip=\"Editar HTML\"></button>\r\n </div>\r\n\r\n <p-tree #tree scrollHeight=\"670px\" [value]=\"filteredFiles\" selectionMode=\"single\" [(selection)]=\"dataSelected\"\r\n [filter]=\"false\" [filterPlaceholder]=\"'filtro' | translate\" filterMode=\"strict\"\r\n (onNodeSelect)=\"seleccionarArchivo($event)\" [loading]=\"loading\"\r\n (onNodeUnselect)=\"deseleccionarArchivo($event)\"></p-tree>\r\n </div>\r\n\r\n <!-- OPCINES DIRECTORIOS - ARCHIVOS -->\r\n <div class=\"field col-12 md:col-6 lg:col-7\">\r\n\r\n @if(!this.loading){\r\n <div class=\"card\">\r\n\r\n <!-- CARPETA -->\r\n @if(archivoSeleccionado.expanded){\r\n <div class=\"flex align-items-center\">\r\n <h1 class=\"text-xl mt-2 mb-4 mr-3\">Carpeta: </h1>\r\n <h5 class=\"text-sm mt-2 mb-4\"> {{archivoSeleccionado.label}} </h5>\r\n </div>\r\n\r\n <div class=\"flex justify-content-between\">\r\n\r\n <!-- Convertir -->\r\n <button type=\"button\" pButton pRipple (click)=\"convertirArchivos()\"\r\n *ngIf=\"verConvertir && controlFuncionService.getControlFuncionalidad('seguplacor:guardar')\"\r\n tooltipPosition=\"bottom\" label=\"{{'convertir' | translate}}\"\r\n class=\"p-button-outlined boton-accion-principal text-gray-600 color-500\"\r\n pTooltip=\"Convertir archivo\" tooltipPosition=\"bottom\">\r\n <div class=\"contenedor-icono-acciones-principal\">\r\n <i class=\"pi pi-arrow-right-arrow-left color-500\"></i>\r\n </div>\r\n </button>\r\n\r\n <!--Nueva Carpeta-->\r\n <button *ngIf=\"controlFuncionService.getControlFuncionalidad('seguplacor:guardar')\" pButton pRipple\r\n class=\"p-button-outlined boton-accion-principal text-gray-600 color-500\"\r\n label=\"{{'link_nuevo' | translate}}\" (click)=\"crearCarpeta()\">\r\n <div class=\"contenedor-icono-acciones-principal\">\r\n <i class=\"glyphicons glyphicons-floppy-save color-500\"></i>\r\n </div>\r\n </button>\r\n\r\n <!--Eliminar-->\r\n <button *ngIf=\"controlFuncionService.getControlFuncionalidad('seguplacor:guardar')\" pButton pRipple\r\n class=\"p-button-outlined boton-accion-principal text-gray-600 color-500\"\r\n label=\"{{'link_eliminar' | translate}}\" (click)=\"eliminarCarpeta()\">\r\n <div class=\"contenedor-icono-acciones-principal\">\r\n <i class=\"glyphicons glyphicons-bin color-500\"></i>\r\n </div>\r\n </button>\r\n\r\n <!-- Cargar Archivo -->\r\n <p-fileUpload #fubauto mode=\"basic\" [auto]=\"true\" [customUpload]=\"true\" chooseIcon=\"pi pi-paperclip\"\r\n *ngIf=\"controlFuncionService.getControlFuncionalidad('seguplacor:guardar')\"\r\n chooseLabel=\"{{'link_subirarchivos' | translate}}\" (onSelect)=\"cargarNuevo($event, fubauto)\">\r\n <div class=\"contenedor-icono-acciones-principal\">\r\n <i class=\"pi pi-trash\"></i>\r\n </div>\r\n </p-fileUpload>\r\n </div>\r\n }\r\n\r\n <!-- ARCHIVO-->\r\n @if(!archivoSeleccionado.expanded){\r\n\r\n <div class=\"flex align-items-center\">\r\n <h1 class=\"text-xl mt-2 mb-4 mr-3\">Archivo: </h1>\r\n <h5 class=\"text-sm mt-2 mb-4\"> {{archivoSeleccionado.label}} </h5>\r\n </div>\r\n\r\n <div class=\"flex justify-content-end\">\r\n @if(archivoSeleccionado.label.includes('.html')){\r\n\r\n <!--EDITAR HTML-->\r\n <button type=\"button\" pButton pRipple icon=\"pi pi-code text-xl\" (click)=\"editarAction()\"\r\n class=\"p-button-outlined boton-accion-principal text-gray-600 color-500\" label=\"Editar HTML\">\r\n </button>\r\n }\r\n\r\n <!-- DESCARGAR-->\r\n <button pButton pRipple class=\"p-button-outlined boton-accion-principal text-gray-600 color-500\"\r\n label=\"{{'link_descargar' | translate}}\" (click)=\"descargarAnexo()\"\r\n *ngIf=\"controlFuncionService.getControlFuncionalidad('seguplacor:descargar')\">\r\n <div class=\"contenedor-icono-acciones-principal\">\r\n <i class=\"glyphicons glyphicons-download\"></i>\r\n </div>\r\n </button>\r\n\r\n <!--ELIMINAR-->\r\n <button pButton pRipple class=\"p-button-outlined boton-accion-principal text-gray-600 color-500\"\r\n label=\"{{'link_eliminar' | translate}}\" (click)=\"eliminarArchivo()\"\r\n *ngIf=\"controlFuncionService.getControlFuncionalidad('seguplacor:guardar')\">\r\n <div class=\"contenedor-icono-acciones-principal\">\r\n <i class=\"glyphicons glyphicons-bin\"></i>\r\n </div>\r\n </button>\r\n </div>\r\n }\r\n </div>\r\n }\r\n\r\n @if(archivoSeleccionado.expanded && isVisualizarCrearCaperta){\r\n <div class=\"card\">\r\n\r\n <h5 class=\"mt-2\"><i class=\"glyphicons glyphicons-note\"></i> Nueva carpeta</h5>\r\n\r\n <form #miFormulario=\"ngForm\">\r\n <!-- campos -->\r\n <div class=\"flex mb-3\">\r\n <!-- Nombre -->\r\n <div class=\"w-full p-0 mb-0\">\r\n <span class=\"p-float-label mr-2\">\r\n <input pInputText id=\"id_numero_de_evento\" [(ngModel)]=\"nomNuevaCarpeta\" required\r\n name=\"nombreCarpeta\">\r\n <label for=\"id_numero_de_evento\">{{'nombre' | translate}} *</label>\r\n </span>\r\n </div>\r\n\r\n <div class=\"flex justify-content-end\">\r\n <!--Guardar Carpeta-->\r\n <button pButton pRipple class=\"mr-2 p-button background-100 color-500\"\r\n icon=\"glyphicons glyphicons-floppy-save\" [label]=\"('link_guardar' | translate)\"\r\n (click)=\"guardarCarpeta()\">\r\n </button>\r\n </div>\r\n </div>\r\n </form>\r\n\r\n </div>\r\n }\r\n <!-- EDITOR DE HTML -->\r\n <div *ngIf=\"isHtml() && mostrarEditor\">\r\n\r\n <div class=\"flex justify-content-end align-items-center mb-3\">\r\n <!-- Bot\u00F3n guardar HTML -->\r\n <button pButton pRipple label=\"{{'link_guardar' | translate }}\" (click)=\"guardarHtml()\"\r\n icon=\"glyphicons glyphicons-floppy-save\" class=\"p-button-secondary\"\r\n *ngIf=\"controlFuncionService.getControlFuncionalidad('seguplacor:guardar')\"></button>\r\n </div>\r\n\r\n <p-editor id=\"editor\" [style]=\"{ height: '500px' }\" required [(ngModel)]=\"modificarHTML\"\r\n name=\"htmlPublicacion\"></p-editor>\r\n\r\n </div>\r\n </div>\r\n</div>\r\n\r\n@if(isMostrarPopupConvertir){\r\n<app-popup-convertir-plantillas (regresar)=\"regresarPopupConvertir($event)\"></app-popup-convertir-plantillas>\r\n}", styles: [""], dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i11.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: TreeModule }, { kind: "component", type: i12.Tree, selector: "p-tree", inputs: ["value", "selectionMode", "loadingMode", "selection", "style", "styleClass", "contextMenu", "layout", "draggableScope", "droppableScope", "draggableNodes", "droppableNodes", "metaKeySelection", "propagateSelectionUp", "propagateSelectionDown", "loading", "loadingIcon", "emptyMessage", "ariaLabel", "togglerAriaLabel", "ariaLabelledBy", "validateDrop", "filter", "filterBy", "filterMode", "filterPlaceholder", "filteredNodes", "filterLocale", "scrollHeight", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "indentation", "_templateMap", "trackBy", "virtualNodeHeight"], outputs: ["selectionChange", "onNodeSelect", "onNodeUnselect", "onNodeExpand", "onNodeCollapse", "onNodeContextMenuSelect", "onNodeDrop", "onLazyLoad", "onScroll", "onScrollIndexChange", "onFilter"] }, { kind: "ngmodule", type: InputTextModule }, { kind: "directive", type: i13.InputText, selector: "[pInputText]", inputs: ["variant"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i14.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading", "severity", "raised", "rounded", "text", "outlined", "size", "plain"] }, { kind: "ngmodule", type: SplitButtonModule }, { kind: "directive", type: i15.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "ngmodule", type: ConfirmPopupModule }, { kind: "component", type: i16.ConfirmPopup, selector: "p-confirmPopup", inputs: ["key", "defaultFocus", "showTransitionOptions", "hideTransitionOptions", "autoZIndex", "baseZIndex", "style", "styleClass", "visible"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i17.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i17.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i17.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i17.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i17.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i17.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i17.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FieldsetModule }, { kind: "ngmodule", type: FileUploadModule }, { kind: "component", type: i18.FileUpload, selector: "p-fileUpload", inputs: ["name", "url", "method", "multiple", "accept", "disabled", "auto", "withCredentials", "maxFileSize", "invalidFileSizeMessageSummary", "invalidFileSizeMessageDetail", "invalidFileTypeMessageSummary", "invalidFileTypeMessageDetail", "invalidFileLimitMessageDetail", "invalidFileLimitMessageSummary", "style", "styleClass", "previewWidth", "chooseLabel", "uploadLabel", "cancelLabel", "chooseIcon", "uploadIcon", "cancelIcon", "showUploadButton", "showCancelButton", "mode", "headers", "customUpload", "fileLimit", "uploadStyleClass", "cancelStyleClass", "removeStyleClass", "chooseStyleClass", "files"], outputs: ["onBeforeUpload", "onSend", "onUpload", "onError", "onClear", "onRemove", "onSelect", "onProgress", "uploadHandler", "onImageError", "onRemoveUploadedFile"] }, { kind: "component", type: PopupConvertirPlantillasComponent, selector: "app-popup-convertir-plantillas", inputs: ["showDialog"], outputs: ["onSelected", "regresar"] }, { kind: "ngmodule", type: EditorModule }, { kind: "component", type: i19.Editor, selector: "p-editor", inputs: ["style", "styleClass", "placeholder", "formats", "modules", "bounds", "scrollingContainer", "debug", "readonly"], outputs: ["onInit", "onTextChange", "onSelectionChange"] }] });
341
+ ], viewQueries: [{ propertyName: "popupConvertirPlantillasComponent", first: true, predicate: PopupConvertirPlantillasComponent, descendants: true }, { propertyName: "miFormulario", first: true, predicate: ["miFormulario"], descendants: true }, { propertyName: "treeComponent", first: true, predicate: ["tree"], descendants: true }], ngImport: i0, template: "<p-confirmPopup key=\"eliminarCarpeta\"></p-confirmPopup>\r\n<p-confirmPopup key=\"eliminarArchivo\"></p-confirmPopup>\r\n\r\n<h1 class=\"mb-4\">{{'cargue' | translate}} {{'plantillas' | translate}}</h1>\r\n\r\n<div class=\"p-fluid p-formgrid grid\">\r\n\r\n <div class=\"field col-12 md:col-6 lg:col-5 card p-5\">\r\n <div class=\"flex justify-content-between align-items-center justify-content-center relative\">\r\n <input type=\"text\" pInputText [(ngModel)]=\"filterValue\" placeholder=\"{{'filtro' | translate}}\"\r\n (keydown)=\"filtrarEnter($event)\" />\r\n <button type=\"button\" pButton pRipple icon=\"pi pi-search text-xl\" (click)=\"aplicarFiltro()\"\r\n class=\"p-element p-ripple p-button-rounded p-button-secondary p-button p-component p-button-icon-only absolute right-0 border-none bg-white-alpha-10\"\r\n tooltipPosition=\"bottom\" pTooltip=\"Editar HTML\"></button>\r\n </div>\r\n\r\n <p-tree #tree scrollHeight=\"670px\" [value]=\"filteredFiles\" selectionMode=\"single\" [(selection)]=\"dataSelected\"\r\n [filter]=\"false\" [filterPlaceholder]=\"'filtro' | translate\" filterMode=\"strict\"\r\n (onNodeSelect)=\"seleccionarArchivo($event)\" [loading]=\"loading\"\r\n (onNodeUnselect)=\"deseleccionarArchivo($event)\"></p-tree>\r\n </div>\r\n\r\n <!-- OPCINES DIRECTORIOS - ARCHIVOS -->\r\n <div class=\"field col-12 md:col-6 lg:col-7 p-0 pl-3\">\r\n\r\n @if(!this.loading){\r\n <div class=\"card p-3\">\r\n\r\n <!-- CARPETA -->\r\n @if(archivoSeleccionado.expanded){\r\n <div class=\"flex align-items-center\">\r\n <h1 class=\"text-xl mt-2 mb-4 mr-3\">Carpeta: </h1>\r\n <h5 class=\"text-sm mt-2 mb-4\"> {{archivoSeleccionado.label}} </h5>\r\n </div>\r\n\r\n <div class=\"flex justify-content-between\">\r\n\r\n <!-- Convertir -->\r\n <button type=\"button\" pButton pRipple (click)=\"convertirArchivos()\"\r\n *ngIf=\"verConvertir && controlFuncionService.getControlFuncionalidad('seguplacor:guardar')\"\r\n tooltipPosition=\"bottom\" label=\"{{'convertir' | translate}}\"\r\n class=\"p-button-outlined boton-accion-principal text-gray-600 color-500\"\r\n pTooltip=\"Convertir archivo\" tooltipPosition=\"bottom\">\r\n <div class=\"contenedor-icono-acciones-principal\">\r\n <i class=\"pi pi-arrow-right-arrow-left color-500\"></i>\r\n </div>\r\n </button>\r\n\r\n <!--Nueva Carpeta-->\r\n <button *ngIf=\"controlFuncionService.getControlFuncionalidad('seguplacor:guardar')\" pButton pRipple\r\n class=\"p-button-outlined boton-accion-principal text-gray-600 color-500\"\r\n label=\"{{'link_nuevo' | translate}}\" (click)=\"crearCarpeta()\">\r\n <div class=\"contenedor-icono-acciones-principal\">\r\n <i class=\"glyphicons glyphicons-floppy-save color-500\"></i>\r\n </div>\r\n </button>\r\n\r\n <!--Eliminar-->\r\n <button *ngIf=\"controlFuncionService.getControlFuncionalidad('seguplacor:guardar')\" pButton pRipple\r\n class=\"p-button-outlined boton-accion-principal text-gray-600 color-500\"\r\n label=\"{{'link_eliminar' | translate}}\" (click)=\"eliminarCarpeta()\">\r\n <div class=\"contenedor-icono-acciones-principal\">\r\n <i class=\"glyphicons glyphicons-bin color-500\"></i>\r\n </div>\r\n </button>\r\n\r\n <!-- Cargar Archivo -->\r\n <div [ngClass]=\"{ 'min-width-100': !verConvertir, 'min-width-20': verConvertir }\">\r\n <p-fileUpload #fubauto mode=\"basic\" [auto]=\"true\" [customUpload]=\"true\" chooseIcon=\"pi pi-paperclip\"\r\n *ngIf=\"controlFuncionService.getControlFuncionalidad('seguplacor:guardar')\"\r\n chooseLabel=\"{{'link_subirarchivos' | translate}}\" (onSelect)=\"cargarNuevo($event, fubauto)\">\r\n <div class=\"contenedor-icono-acciones-principal\">\r\n <i class=\"pi pi-trash\"></i>\r\n </div>\r\n </p-fileUpload>\r\n </div>\r\n </div>\r\n }\r\n\r\n <!-- ARCHIVO-->\r\n @if(!archivoSeleccionado.expanded){\r\n\r\n <div class=\"flex align-items-center\">\r\n <h1 class=\"text-xl mt-2 mb-4 mr-3\">Archivo: </h1>\r\n <h5 class=\"text-sm mt-2 mb-4\"> {{archivoSeleccionado.label}} </h5>\r\n </div>\r\n\r\n <div class=\"flex justify-content-end\">\r\n @if(archivoSeleccionado.label.includes('.html')){\r\n\r\n <!--EDITAR HTML-->\r\n <button type=\"button\" pButton pRipple icon=\"pi pi-code text-xl color-500\" (click)=\"editarAction()\"\r\n class=\"p-button-outlined boton-accion-principal text-gray-600\" label=\"Editar HTML\">\r\n </button>\r\n }\r\n\r\n <!-- DESCARGAR-->\r\n <button pButton pRipple class=\"p-button-outlined boton-accion-principal text-gray-600 color-500\"\r\n label=\"{{'link_descargar' | translate}}\" (click)=\"descargarAnexo()\"\r\n *ngIf=\"controlFuncionService.getControlFuncionalidad('seguplacor:descargar')\">\r\n <div class=\"contenedor-icono-acciones-principal\">\r\n <i class=\"glyphicons glyphicons-download color-500\"></i>\r\n </div>\r\n </button>\r\n\r\n <!--ELIMINAR-->\r\n <button pButton pRipple class=\"p-button-outlined boton-accion-principal text-gray-600 color-500\"\r\n label=\"{{'link_eliminar' | translate}}\" (click)=\"eliminarArchivo()\"\r\n *ngIf=\"controlFuncionService.getControlFuncionalidad('seguplacor:guardar')\">\r\n <div class=\"contenedor-icono-acciones-principal\">\r\n <i class=\"glyphicons glyphicons-bin color-500\"></i>\r\n </div>\r\n </button>\r\n </div>\r\n }\r\n </div>\r\n }\r\n\r\n @if(archivoSeleccionado.expanded && isVisualizarCrearCaperta){\r\n <div class=\"card\">\r\n\r\n <h5 class=\"mt-2\"><i class=\"glyphicons glyphicons-note\"></i> Nueva carpeta</h5>\r\n\r\n <form #miFormulario=\"ngForm\">\r\n <!-- campos -->\r\n <div class=\"flex mb-3\">\r\n <!-- Nombre -->\r\n <div class=\"w-full p-0 mb-0\">\r\n <span class=\"p-float-label mr-2\">\r\n <input pInputText id=\"id_numero_de_evento\" [(ngModel)]=\"nomNuevaCarpeta\" required\r\n name=\"nombreCarpeta\">\r\n <label for=\"id_numero_de_evento\">{{'nombre' | translate}} *</label>\r\n </span>\r\n </div>\r\n\r\n <div class=\"flex justify-content-end\">\r\n <!--Guardar Carpeta-->\r\n <button pButton pRipple class=\"mr-2 p-button background-100 color-500\"\r\n icon=\"glyphicons glyphicons-floppy-save\" [label]=\"('link_guardar' | translate)\"\r\n (click)=\"guardarCarpeta()\">\r\n </button>\r\n </div>\r\n </div>\r\n </form>\r\n\r\n </div>\r\n }\r\n <!-- EDITOR DE HTML -->\r\n <div *ngIf=\"isHtml() && mostrarEditor\">\r\n\r\n <div class=\"flex justify-content-end align-items-center mb-3\">\r\n <!-- Bot\u00F3n guardar HTML -->\r\n <button pButton pRipple label=\"{{'link_guardar' | translate }}\" (click)=\"guardarHtml()\"\r\n icon=\"glyphicons glyphicons-floppy-save\" class=\"p-button-secondary\"\r\n *ngIf=\"controlFuncionService.getControlFuncionalidad('seguplacor:guardar')\"></button>\r\n </div>\r\n\r\n <p-editor id=\"editor\" [style]=\"{ height: '500px' }\" required [(ngModel)]=\"modificarHTML\"\r\n name=\"htmlPublicacion\"></p-editor>\r\n\r\n </div>\r\n </div>\r\n</div>\r\n\r\n@if(isMostrarPopupConvertir){\r\n<app-popup-convertir-plantillas (regresar)=\"regresarPopupConvertir($event)\"></app-popup-convertir-plantillas>\r\n}", styles: [":host ::ng-deep .p-fluid .p-fileupload .p-button{width:100%}:host ::ng-deep .min-width-20{min-width:20%}:host ::ng-deep .min-width-100{min-width:30%}\n"], dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i11.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i11.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: TreeModule }, { kind: "component", type: i12.Tree, selector: "p-tree", inputs: ["value", "selectionMode", "loadingMode", "selection", "style", "styleClass", "contextMenu", "layout", "draggableScope", "droppableScope", "draggableNodes", "droppableNodes", "metaKeySelection", "propagateSelectionUp", "propagateSelectionDown", "loading", "loadingIcon", "emptyMessage", "ariaLabel", "togglerAriaLabel", "ariaLabelledBy", "validateDrop", "filter", "filterBy", "filterMode", "filterPlaceholder", "filteredNodes", "filterLocale", "scrollHeight", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "indentation", "_templateMap", "trackBy", "virtualNodeHeight"], outputs: ["selectionChange", "onNodeSelect", "onNodeUnselect", "onNodeExpand", "onNodeCollapse", "onNodeContextMenuSelect", "onNodeDrop", "onLazyLoad", "onScroll", "onScrollIndexChange", "onFilter"] }, { kind: "ngmodule", type: InputTextModule }, { kind: "directive", type: i13.InputText, selector: "[pInputText]", inputs: ["variant"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i14.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading", "severity", "raised", "rounded", "text", "outlined", "size", "plain"] }, { kind: "ngmodule", type: SplitButtonModule }, { kind: "directive", type: i15.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "ngmodule", type: ConfirmPopupModule }, { kind: "component", type: i16.ConfirmPopup, selector: "p-confirmPopup", inputs: ["key", "defaultFocus", "showTransitionOptions", "hideTransitionOptions", "autoZIndex", "baseZIndex", "style", "styleClass", "visible"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i17.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i17.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i17.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i17.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i17.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i17.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i17.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FieldsetModule }, { kind: "ngmodule", type: FileUploadModule }, { kind: "component", type: i18.FileUpload, selector: "p-fileUpload", inputs: ["name", "url", "method", "multiple", "accept", "disabled", "auto", "withCredentials", "maxFileSize", "invalidFileSizeMessageSummary", "invalidFileSizeMessageDetail", "invalidFileTypeMessageSummary", "invalidFileTypeMessageDetail", "invalidFileLimitMessageDetail", "invalidFileLimitMessageSummary", "style", "styleClass", "previewWidth", "chooseLabel", "uploadLabel", "cancelLabel", "chooseIcon", "uploadIcon", "cancelIcon", "showUploadButton", "showCancelButton", "mode", "headers", "customUpload", "fileLimit", "uploadStyleClass", "cancelStyleClass", "removeStyleClass", "chooseStyleClass", "files"], outputs: ["onBeforeUpload", "onSend", "onUpload", "onError", "onClear", "onRemove", "onSelect", "onProgress", "uploadHandler", "onImageError", "onRemoveUploadedFile"] }, { kind: "component", type: PopupConvertirPlantillasComponent, selector: "app-popup-convertir-plantillas", inputs: ["showDialog"], outputs: ["onSelected", "regresar"] }, { kind: "ngmodule", type: EditorModule }, { kind: "component", type: i19.Editor, selector: "p-editor", inputs: ["style", "styleClass", "placeholder", "formats", "modules", "bounds", "scrollingContainer", "debug", "readonly"], outputs: ["onInit", "onTextChange", "onSelectionChange"] }] });
343
342
  }
344
343
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: CarguePlantillaGeneralComponent, decorators: [{
345
344
  type: Component,
@@ -357,7 +356,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImpor
357
356
  EditorModule
358
357
  ], providers: [
359
358
  ConfirmationService
360
- ], template: "<p-confirmPopup key=\"eliminarCarpeta\"></p-confirmPopup>\r\n<p-confirmPopup key=\"eliminarArchivo\"></p-confirmPopup>\r\n\r\n<h1 class=\"mb-4\">{{'cargue' | translate}} {{'plantillas' | translate}}</h1>\r\n\r\n<div class=\"p-fluid p-formgrid grid\">\r\n\r\n <div class=\"field col-12 md:col-6 lg:col-5\">\r\n <div class=\"flex justify-content-between align-items-center justify-content-center\">\r\n <input type=\"text\" pInputText [(ngModel)]=\"filterValue\" placeholder=\"{{'filtro' | translate}}\"\r\n (keydown)=\"filtrarEnter($event)\" />\r\n <button type=\"button\" pButton pRipple icon=\"pi pi-search text-xl\" (click)=\"aplicarFiltro()\"\r\n class=\"p-element p-ripple p-button-rounded p-button-secondary p-button p-component p-button-icon-only\"\r\n tooltipPosition=\"bottom\" pTooltip=\"Editar HTML\"></button>\r\n </div>\r\n\r\n <p-tree #tree scrollHeight=\"670px\" [value]=\"filteredFiles\" selectionMode=\"single\" [(selection)]=\"dataSelected\"\r\n [filter]=\"false\" [filterPlaceholder]=\"'filtro' | translate\" filterMode=\"strict\"\r\n (onNodeSelect)=\"seleccionarArchivo($event)\" [loading]=\"loading\"\r\n (onNodeUnselect)=\"deseleccionarArchivo($event)\"></p-tree>\r\n </div>\r\n\r\n <!-- OPCINES DIRECTORIOS - ARCHIVOS -->\r\n <div class=\"field col-12 md:col-6 lg:col-7\">\r\n\r\n @if(!this.loading){\r\n <div class=\"card\">\r\n\r\n <!-- CARPETA -->\r\n @if(archivoSeleccionado.expanded){\r\n <div class=\"flex align-items-center\">\r\n <h1 class=\"text-xl mt-2 mb-4 mr-3\">Carpeta: </h1>\r\n <h5 class=\"text-sm mt-2 mb-4\"> {{archivoSeleccionado.label}} </h5>\r\n </div>\r\n\r\n <div class=\"flex justify-content-between\">\r\n\r\n <!-- Convertir -->\r\n <button type=\"button\" pButton pRipple (click)=\"convertirArchivos()\"\r\n *ngIf=\"verConvertir && controlFuncionService.getControlFuncionalidad('seguplacor:guardar')\"\r\n tooltipPosition=\"bottom\" label=\"{{'convertir' | translate}}\"\r\n class=\"p-button-outlined boton-accion-principal text-gray-600 color-500\"\r\n pTooltip=\"Convertir archivo\" tooltipPosition=\"bottom\">\r\n <div class=\"contenedor-icono-acciones-principal\">\r\n <i class=\"pi pi-arrow-right-arrow-left color-500\"></i>\r\n </div>\r\n </button>\r\n\r\n <!--Nueva Carpeta-->\r\n <button *ngIf=\"controlFuncionService.getControlFuncionalidad('seguplacor:guardar')\" pButton pRipple\r\n class=\"p-button-outlined boton-accion-principal text-gray-600 color-500\"\r\n label=\"{{'link_nuevo' | translate}}\" (click)=\"crearCarpeta()\">\r\n <div class=\"contenedor-icono-acciones-principal\">\r\n <i class=\"glyphicons glyphicons-floppy-save color-500\"></i>\r\n </div>\r\n </button>\r\n\r\n <!--Eliminar-->\r\n <button *ngIf=\"controlFuncionService.getControlFuncionalidad('seguplacor:guardar')\" pButton pRipple\r\n class=\"p-button-outlined boton-accion-principal text-gray-600 color-500\"\r\n label=\"{{'link_eliminar' | translate}}\" (click)=\"eliminarCarpeta()\">\r\n <div class=\"contenedor-icono-acciones-principal\">\r\n <i class=\"glyphicons glyphicons-bin color-500\"></i>\r\n </div>\r\n </button>\r\n\r\n <!-- Cargar Archivo -->\r\n <p-fileUpload #fubauto mode=\"basic\" [auto]=\"true\" [customUpload]=\"true\" chooseIcon=\"pi pi-paperclip\"\r\n *ngIf=\"controlFuncionService.getControlFuncionalidad('seguplacor:guardar')\"\r\n chooseLabel=\"{{'link_subirarchivos' | translate}}\" (onSelect)=\"cargarNuevo($event, fubauto)\">\r\n <div class=\"contenedor-icono-acciones-principal\">\r\n <i class=\"pi pi-trash\"></i>\r\n </div>\r\n </p-fileUpload>\r\n </div>\r\n }\r\n\r\n <!-- ARCHIVO-->\r\n @if(!archivoSeleccionado.expanded){\r\n\r\n <div class=\"flex align-items-center\">\r\n <h1 class=\"text-xl mt-2 mb-4 mr-3\">Archivo: </h1>\r\n <h5 class=\"text-sm mt-2 mb-4\"> {{archivoSeleccionado.label}} </h5>\r\n </div>\r\n\r\n <div class=\"flex justify-content-end\">\r\n @if(archivoSeleccionado.label.includes('.html')){\r\n\r\n <!--EDITAR HTML-->\r\n <button type=\"button\" pButton pRipple icon=\"pi pi-code text-xl\" (click)=\"editarAction()\"\r\n class=\"p-button-outlined boton-accion-principal text-gray-600 color-500\" label=\"Editar HTML\">\r\n </button>\r\n }\r\n\r\n <!-- DESCARGAR-->\r\n <button pButton pRipple class=\"p-button-outlined boton-accion-principal text-gray-600 color-500\"\r\n label=\"{{'link_descargar' | translate}}\" (click)=\"descargarAnexo()\"\r\n *ngIf=\"controlFuncionService.getControlFuncionalidad('seguplacor:descargar')\">\r\n <div class=\"contenedor-icono-acciones-principal\">\r\n <i class=\"glyphicons glyphicons-download\"></i>\r\n </div>\r\n </button>\r\n\r\n <!--ELIMINAR-->\r\n <button pButton pRipple class=\"p-button-outlined boton-accion-principal text-gray-600 color-500\"\r\n label=\"{{'link_eliminar' | translate}}\" (click)=\"eliminarArchivo()\"\r\n *ngIf=\"controlFuncionService.getControlFuncionalidad('seguplacor:guardar')\">\r\n <div class=\"contenedor-icono-acciones-principal\">\r\n <i class=\"glyphicons glyphicons-bin\"></i>\r\n </div>\r\n </button>\r\n </div>\r\n }\r\n </div>\r\n }\r\n\r\n @if(archivoSeleccionado.expanded && isVisualizarCrearCaperta){\r\n <div class=\"card\">\r\n\r\n <h5 class=\"mt-2\"><i class=\"glyphicons glyphicons-note\"></i> Nueva carpeta</h5>\r\n\r\n <form #miFormulario=\"ngForm\">\r\n <!-- campos -->\r\n <div class=\"flex mb-3\">\r\n <!-- Nombre -->\r\n <div class=\"w-full p-0 mb-0\">\r\n <span class=\"p-float-label mr-2\">\r\n <input pInputText id=\"id_numero_de_evento\" [(ngModel)]=\"nomNuevaCarpeta\" required\r\n name=\"nombreCarpeta\">\r\n <label for=\"id_numero_de_evento\">{{'nombre' | translate}} *</label>\r\n </span>\r\n </div>\r\n\r\n <div class=\"flex justify-content-end\">\r\n <!--Guardar Carpeta-->\r\n <button pButton pRipple class=\"mr-2 p-button background-100 color-500\"\r\n icon=\"glyphicons glyphicons-floppy-save\" [label]=\"('link_guardar' | translate)\"\r\n (click)=\"guardarCarpeta()\">\r\n </button>\r\n </div>\r\n </div>\r\n </form>\r\n\r\n </div>\r\n }\r\n <!-- EDITOR DE HTML -->\r\n <div *ngIf=\"isHtml() && mostrarEditor\">\r\n\r\n <div class=\"flex justify-content-end align-items-center mb-3\">\r\n <!-- Bot\u00F3n guardar HTML -->\r\n <button pButton pRipple label=\"{{'link_guardar' | translate }}\" (click)=\"guardarHtml()\"\r\n icon=\"glyphicons glyphicons-floppy-save\" class=\"p-button-secondary\"\r\n *ngIf=\"controlFuncionService.getControlFuncionalidad('seguplacor:guardar')\"></button>\r\n </div>\r\n\r\n <p-editor id=\"editor\" [style]=\"{ height: '500px' }\" required [(ngModel)]=\"modificarHTML\"\r\n name=\"htmlPublicacion\"></p-editor>\r\n\r\n </div>\r\n </div>\r\n</div>\r\n\r\n@if(isMostrarPopupConvertir){\r\n<app-popup-convertir-plantillas (regresar)=\"regresarPopupConvertir($event)\"></app-popup-convertir-plantillas>\r\n}" }]
359
+ ], template: "<p-confirmPopup key=\"eliminarCarpeta\"></p-confirmPopup>\r\n<p-confirmPopup key=\"eliminarArchivo\"></p-confirmPopup>\r\n\r\n<h1 class=\"mb-4\">{{'cargue' | translate}} {{'plantillas' | translate}}</h1>\r\n\r\n<div class=\"p-fluid p-formgrid grid\">\r\n\r\n <div class=\"field col-12 md:col-6 lg:col-5 card p-5\">\r\n <div class=\"flex justify-content-between align-items-center justify-content-center relative\">\r\n <input type=\"text\" pInputText [(ngModel)]=\"filterValue\" placeholder=\"{{'filtro' | translate}}\"\r\n (keydown)=\"filtrarEnter($event)\" />\r\n <button type=\"button\" pButton pRipple icon=\"pi pi-search text-xl\" (click)=\"aplicarFiltro()\"\r\n class=\"p-element p-ripple p-button-rounded p-button-secondary p-button p-component p-button-icon-only absolute right-0 border-none bg-white-alpha-10\"\r\n tooltipPosition=\"bottom\" pTooltip=\"Editar HTML\"></button>\r\n </div>\r\n\r\n <p-tree #tree scrollHeight=\"670px\" [value]=\"filteredFiles\" selectionMode=\"single\" [(selection)]=\"dataSelected\"\r\n [filter]=\"false\" [filterPlaceholder]=\"'filtro' | translate\" filterMode=\"strict\"\r\n (onNodeSelect)=\"seleccionarArchivo($event)\" [loading]=\"loading\"\r\n (onNodeUnselect)=\"deseleccionarArchivo($event)\"></p-tree>\r\n </div>\r\n\r\n <!-- OPCINES DIRECTORIOS - ARCHIVOS -->\r\n <div class=\"field col-12 md:col-6 lg:col-7 p-0 pl-3\">\r\n\r\n @if(!this.loading){\r\n <div class=\"card p-3\">\r\n\r\n <!-- CARPETA -->\r\n @if(archivoSeleccionado.expanded){\r\n <div class=\"flex align-items-center\">\r\n <h1 class=\"text-xl mt-2 mb-4 mr-3\">Carpeta: </h1>\r\n <h5 class=\"text-sm mt-2 mb-4\"> {{archivoSeleccionado.label}} </h5>\r\n </div>\r\n\r\n <div class=\"flex justify-content-between\">\r\n\r\n <!-- Convertir -->\r\n <button type=\"button\" pButton pRipple (click)=\"convertirArchivos()\"\r\n *ngIf=\"verConvertir && controlFuncionService.getControlFuncionalidad('seguplacor:guardar')\"\r\n tooltipPosition=\"bottom\" label=\"{{'convertir' | translate}}\"\r\n class=\"p-button-outlined boton-accion-principal text-gray-600 color-500\"\r\n pTooltip=\"Convertir archivo\" tooltipPosition=\"bottom\">\r\n <div class=\"contenedor-icono-acciones-principal\">\r\n <i class=\"pi pi-arrow-right-arrow-left color-500\"></i>\r\n </div>\r\n </button>\r\n\r\n <!--Nueva Carpeta-->\r\n <button *ngIf=\"controlFuncionService.getControlFuncionalidad('seguplacor:guardar')\" pButton pRipple\r\n class=\"p-button-outlined boton-accion-principal text-gray-600 color-500\"\r\n label=\"{{'link_nuevo' | translate}}\" (click)=\"crearCarpeta()\">\r\n <div class=\"contenedor-icono-acciones-principal\">\r\n <i class=\"glyphicons glyphicons-floppy-save color-500\"></i>\r\n </div>\r\n </button>\r\n\r\n <!--Eliminar-->\r\n <button *ngIf=\"controlFuncionService.getControlFuncionalidad('seguplacor:guardar')\" pButton pRipple\r\n class=\"p-button-outlined boton-accion-principal text-gray-600 color-500\"\r\n label=\"{{'link_eliminar' | translate}}\" (click)=\"eliminarCarpeta()\">\r\n <div class=\"contenedor-icono-acciones-principal\">\r\n <i class=\"glyphicons glyphicons-bin color-500\"></i>\r\n </div>\r\n </button>\r\n\r\n <!-- Cargar Archivo -->\r\n <div [ngClass]=\"{ 'min-width-100': !verConvertir, 'min-width-20': verConvertir }\">\r\n <p-fileUpload #fubauto mode=\"basic\" [auto]=\"true\" [customUpload]=\"true\" chooseIcon=\"pi pi-paperclip\"\r\n *ngIf=\"controlFuncionService.getControlFuncionalidad('seguplacor:guardar')\"\r\n chooseLabel=\"{{'link_subirarchivos' | translate}}\" (onSelect)=\"cargarNuevo($event, fubauto)\">\r\n <div class=\"contenedor-icono-acciones-principal\">\r\n <i class=\"pi pi-trash\"></i>\r\n </div>\r\n </p-fileUpload>\r\n </div>\r\n </div>\r\n }\r\n\r\n <!-- ARCHIVO-->\r\n @if(!archivoSeleccionado.expanded){\r\n\r\n <div class=\"flex align-items-center\">\r\n <h1 class=\"text-xl mt-2 mb-4 mr-3\">Archivo: </h1>\r\n <h5 class=\"text-sm mt-2 mb-4\"> {{archivoSeleccionado.label}} </h5>\r\n </div>\r\n\r\n <div class=\"flex justify-content-end\">\r\n @if(archivoSeleccionado.label.includes('.html')){\r\n\r\n <!--EDITAR HTML-->\r\n <button type=\"button\" pButton pRipple icon=\"pi pi-code text-xl color-500\" (click)=\"editarAction()\"\r\n class=\"p-button-outlined boton-accion-principal text-gray-600\" label=\"Editar HTML\">\r\n </button>\r\n }\r\n\r\n <!-- DESCARGAR-->\r\n <button pButton pRipple class=\"p-button-outlined boton-accion-principal text-gray-600 color-500\"\r\n label=\"{{'link_descargar' | translate}}\" (click)=\"descargarAnexo()\"\r\n *ngIf=\"controlFuncionService.getControlFuncionalidad('seguplacor:descargar')\">\r\n <div class=\"contenedor-icono-acciones-principal\">\r\n <i class=\"glyphicons glyphicons-download color-500\"></i>\r\n </div>\r\n </button>\r\n\r\n <!--ELIMINAR-->\r\n <button pButton pRipple class=\"p-button-outlined boton-accion-principal text-gray-600 color-500\"\r\n label=\"{{'link_eliminar' | translate}}\" (click)=\"eliminarArchivo()\"\r\n *ngIf=\"controlFuncionService.getControlFuncionalidad('seguplacor:guardar')\">\r\n <div class=\"contenedor-icono-acciones-principal\">\r\n <i class=\"glyphicons glyphicons-bin color-500\"></i>\r\n </div>\r\n </button>\r\n </div>\r\n }\r\n </div>\r\n }\r\n\r\n @if(archivoSeleccionado.expanded && isVisualizarCrearCaperta){\r\n <div class=\"card\">\r\n\r\n <h5 class=\"mt-2\"><i class=\"glyphicons glyphicons-note\"></i> Nueva carpeta</h5>\r\n\r\n <form #miFormulario=\"ngForm\">\r\n <!-- campos -->\r\n <div class=\"flex mb-3\">\r\n <!-- Nombre -->\r\n <div class=\"w-full p-0 mb-0\">\r\n <span class=\"p-float-label mr-2\">\r\n <input pInputText id=\"id_numero_de_evento\" [(ngModel)]=\"nomNuevaCarpeta\" required\r\n name=\"nombreCarpeta\">\r\n <label for=\"id_numero_de_evento\">{{'nombre' | translate}} *</label>\r\n </span>\r\n </div>\r\n\r\n <div class=\"flex justify-content-end\">\r\n <!--Guardar Carpeta-->\r\n <button pButton pRipple class=\"mr-2 p-button background-100 color-500\"\r\n icon=\"glyphicons glyphicons-floppy-save\" [label]=\"('link_guardar' | translate)\"\r\n (click)=\"guardarCarpeta()\">\r\n </button>\r\n </div>\r\n </div>\r\n </form>\r\n\r\n </div>\r\n }\r\n <!-- EDITOR DE HTML -->\r\n <div *ngIf=\"isHtml() && mostrarEditor\">\r\n\r\n <div class=\"flex justify-content-end align-items-center mb-3\">\r\n <!-- Bot\u00F3n guardar HTML -->\r\n <button pButton pRipple label=\"{{'link_guardar' | translate }}\" (click)=\"guardarHtml()\"\r\n icon=\"glyphicons glyphicons-floppy-save\" class=\"p-button-secondary\"\r\n *ngIf=\"controlFuncionService.getControlFuncionalidad('seguplacor:guardar')\"></button>\r\n </div>\r\n\r\n <p-editor id=\"editor\" [style]=\"{ height: '500px' }\" required [(ngModel)]=\"modificarHTML\"\r\n name=\"htmlPublicacion\"></p-editor>\r\n\r\n </div>\r\n </div>\r\n</div>\r\n\r\n@if(isMostrarPopupConvertir){\r\n<app-popup-convertir-plantillas (regresar)=\"regresarPopupConvertir($event)\"></app-popup-convertir-plantillas>\r\n}", styles: [":host ::ng-deep .p-fluid .p-fileupload .p-button{width:100%}:host ::ng-deep .min-width-20{min-width:20%}:host ::ng-deep .min-width-100{min-width:30%}\n"] }]
361
360
  }], ctorParameters: () => [{ type: i1.PlantillasService }, { type: i2.AuthService }, { type: i3.TranslateService }, { type: i4.CargarControlFuncionalidadService }, { type: i5.ConfirmationService }, { type: i6.ToastService }, { type: i7.CargarArchivosService }, { type: i8.EncriptadoBasicoService }, { type: i9.GeneralPipe }, { type: i10.UtilsService }], propDecorators: { popupConvertirPlantillasComponent: [{
362
361
  type: ViewChild,
363
362
  args: [PopupConvertirPlantillasComponent]
@@ -368,4 +367,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImpor
368
367
  type: ViewChild,
369
368
  args: ['tree']
370
369
  }] } });
371
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyZ3VlLXBsYW50aWxsYS1nZW5lcmFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvd2ViY29tbW9uL3BhZ2VzL2Nhcmd1ZS1wbGFudGlsbGEvY2FyZ3VlLXBsYW50aWxsYS1nZW5lcmFsL2Nhcmd1ZS1wbGFudGlsbGEtZ2VuZXJhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3dlYmNvbW1vbi9wYWdlcy9jYXJndWUtcGxhbnRpbGxhL2Nhcmd1ZS1wbGFudGlsbGEtZ2VuZXJhbC9jYXJndWUtcGxhbnRpbGxhLWdlbmVyYWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQW9CLE1BQU0scUJBQXFCLENBQUM7QUFDeEUsT0FBTyxFQUFFLG1CQUFtQixFQUFzQixNQUFNLGFBQWEsQ0FBQztBQUN0RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3hELE9BQU8sRUFBUSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFJaEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBVSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FB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Y0FDNUIsSUFBSSxXQUNQLENBQUMsZUFBZTt3QkFDdkIsWUFBWTt3QkFDWixVQUFVO3dCQUNWLGVBQWU7d0JBQ2YsWUFBWTt3QkFDWixpQkFBaUI7d0JBQ2pCLGtCQUFrQjt3QkFDbEIsV0FBVzt3QkFDWCxjQUFjO3dCQUNkLGdCQUFnQjt3QkFDaEIsaUNBQWlDO3dCQUNqQyxZQUFZO3FCQUNiLGFBR1U7d0JBQ1QsbUJBQW1CO3FCQUNwQjs0WEFJNkMsaUNBQWlDO3NCQUE5RSxTQUFTO3VCQUFDLGlDQUFpQztnQkFDRSxZQUFZO3NCQUF6RCxTQUFTO3VCQUFDLGNBQWMsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ3pCLGFBQWE7c0JBQS9CLFNBQVM7dUJBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSwgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5pbXBvcnQgeyBDb25maXJtYXRpb25TZXJ2aWNlLCBNZW51SXRlbSwgVHJlZU5vZGUgfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcbmltcG9ydCB7IEJ1dHRvbk1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvYnV0dG9uJztcclxuaW1wb3J0IHsgSW5wdXRUZXh0TW9kdWxlIH0gZnJvbSAncHJpbWVuZy9pbnB1dHRleHQnO1xyXG5pbXBvcnQgeyBTcGxpdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvc3BsaXRidXR0b24nO1xyXG5pbXBvcnQgeyBUcmVlLCBUcmVlTW9kdWxlIH0gZnJvbSAncHJpbWVuZy90cmVlJztcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL3NlcnZpY2lvcy9hdXRoLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQbGFudGlsbGFzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL3dlYmNvbW1vbi9zZXJ2aWNlcy9wbGFudGlsbGFzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDYXJnYXJDb250cm9sRnVuY2lvbmFsaWRhZFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL3NlcnZpY2lvcy9jYXJnYXItY29udHJvbC1mdW5jaW9uYWxpZGFkLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb25maXJtUG9wdXBNb2R1bGUgfSBmcm9tICdwcmltZW5nL2NvbmZpcm1wb3B1cCc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBOZ0Zvcm0gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEZpZWxkc2V0TW9kdWxlIH0gZnJvbSAncHJpbWVuZy9maWVsZHNldCc7XHJcbmltcG9ydCB7IEZpbGVVcGxvYWRNb2R1bGUgfSBmcm9tICdwcmltZW5nL2ZpbGV1cGxvYWQnO1xyXG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL3NlcnZpY2lvcy90b2FzdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ2FyZ2FyQXJjaGl2b3NTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkL3NlcnZpY2lvcy9jYXJnYXItYXJjaGl2b3Muc2VydmljZSc7XHJcbmltcG9ydCB7IEVuY3JpcHRhZG9CYXNpY29TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkL3NlcnZpY2lvcy9lbmNyaXB0YWRvLWJhc2ljby5zZXJ2aWNlJztcclxuaW1wb3J0IHsgR2VuZXJhbFBpcGUgfSBmcm9tICcuLi8uLi8uLi8uLi93ZWJjb21tb24vcGlwZXMvZ2VuZXJhbC5waXBlJztcclxuaW1wb3J0IHsgUG9wdXBDb252ZXJ0aXJQbGFudGlsbGFzQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vd2ViY29tbW9uL3BvcHVwcy9wb3B1cC1jb252ZXJ0aXItcGxhbnRpbGxhcy9wb3B1cC1jb252ZXJ0aXItcGxhbnRpbGxhcy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBVdGlsc1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL3NlcnZpY2lvcy91dGlscy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgZmlyc3RWYWx1ZUZyb20gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgRWRpdG9yTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9lZGl0b3InO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtY2FyZ3VlLXBsYW50aWxsYS1nZW5lcmFsJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtUcmFuc2xhdGVNb2R1bGUsXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBUcmVlTW9kdWxlLFxyXG4gICAgSW5wdXRUZXh0TW9kdWxlLFxyXG4gICAgQnV0dG9uTW9kdWxlLFxyXG4gICAgU3BsaXRCdXR0b25Nb2R1bGUsXHJcbiAgICBDb25maXJtUG9wdXBNb2R1bGUsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIEZpZWxkc2V0TW9kdWxlLFxyXG4gICAgRmlsZVVwbG9hZE1vZHVsZSxcclxuICAgIFBvcHVwQ29udmVydGlyUGxhbnRpbGxhc0NvbXBvbmVudCxcclxuICAgIEVkaXRvck1vZHVsZVxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2Nhcmd1ZS1wbGFudGlsbGEtZ2VuZXJhbC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2Nhcmd1ZS1wbGFudGlsbGEtZ2VuZXJhbC5jb21wb25lbnQuc2NzcycsXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICBDb25maXJtYXRpb25TZXJ2aWNlXHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ2FyZ3VlUGxhbnRpbGxhR2VuZXJhbENvbXBvbmVudCB7XHJcblxyXG4gIEBWaWV3Q2hpbGQoUG9wdXBDb252ZXJ0aXJQbGFudGlsbGFzQ29tcG9uZW50KSBwb3B1cENvbnZlcnRpclBsYW50aWxsYXNDb21wb25lbnQ6IFBvcHVwQ29udmVydGlyUGxhbnRpbGxhc0NvbXBvbmVudDtcclxuICBAVmlld0NoaWxkKCdtaUZvcm11bGFyaW8nLCB7IHN0YXRpYzogZmFsc2UgfSkgbWlGb3JtdWxhcmlvITogTmdGb3JtO1xyXG4gIEBWaWV3Q2hpbGQoJ3RyZWUnKSB0cmVlQ29tcG9uZW50ITogVHJlZTtcclxuXHJcbiAgbG9hZGluZzogYm9vbGVhbjtcclxuICBwcm9waWVkYWQ6IHN0cmluZztcclxuICBleHRlbnNpb25lczogc3RyaW5nO1xyXG4gIHByb3BpZWRhZERlU2lzdGVtYTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGFuZXhvUHJvcGllZGFkOiBzdHJpbmcgPSAnJztcclxuICBmaWxlczogVHJlZU5vZGVbXTtcclxuICBkYXRhU2VsZWN0ZWQ6IFRyZWVOb2RlO1xyXG4gIGl0ZW1zQm90b25BY2Npb25lczogTWVudUl0ZW1bXTtcclxuICB2ZXJDb252ZXJ0aXI6IGJvb2xlYW47XHJcbiAgbm9tTnVldmFDYXJwZXRhOiBzdHJpbmc7XHJcbiAgaXNWaXN1YWxpemFyQ3JlYXJDYXBlcnRhOiBib29sZWFuID0gZmFsc2U7XHJcbiAgYXJjaGl2b1NlbGVjY2lvbmFkb0FuZXhvOiBGaWxlO1xyXG4gIGFyY2hpdm9TZWxlY2Npb25hZG86IFRyZWVOb2RlO1xyXG4gIGlzTW9zdHJhclBvcHVwQ29udmVydGlyOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcnV0YVByaW5jaXBhbDogc3RyaW5nO1xyXG4gIGZpbHRlcmVkRmlsZXM6IFRyZWVOb2RlW10gPSBbXTtcclxuICBmaWx0ZXJWYWx1ZTogc3RyaW5nID0gJyc7XHJcblxyXG4gIEZPUk1BVFNfVkFMSURPUzogU2V0PHN0cmluZz4gPSBuZXcgU2V0KFtcclxuICAgICcuZG9jJyxcclxuICAgICcuaHRtbCcsXHJcbiAgICAnLmphc3BlcicsXHJcbiAgICAnLnhscycsXHJcbiAgICAnLmpyeG1sJyxcclxuICAgICcub2R0JyxcclxuICAgICcueGxzbScsXHJcbiAgICAnLnhsc3gnLFxyXG4gICAgJy5wZ3AnLFxyXG4gICAgJy5hc2MnLFxyXG4gICAgJy5jZXInLFxyXG4gICAgJy5wMTInLFxyXG4gICAgJy5kb2N4JyxcclxuICAgICcucHJvcGVydGllcydcclxuICBdKTtcclxuICBmaWx0cm9Db252ZXJ0aXI6IHN0cmluZztcclxuICBodG1sOiBib29sZWFuO1xyXG4gIG1vc3RyYXJFZGl0b3I6IGJvb2xlYW47XHJcbiAgbW9kaWZpY2FySFRNTDogc3RyaW5nO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHBsYW50aWxsYXNTZXJ2aWNlOiBQbGFudGlsbGFzU2VydmljZSwgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsIHB1YmxpYyB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgcHVibGljIGNvbnRyb2xGdW5jaW9uU2VydmljZTogQ2FyZ2FyQ29udHJvbEZ1bmNpb25hbGlkYWRTZXJ2aWNlLCBwcml2YXRlIGNvbmZpcm1hdGlvblNlcnZpY2U6IENvbmZpcm1hdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHRvYXN0U2VydmljZTogVG9hc3RTZXJ2aWNlLCBwcml2YXRlIGNhcmdhckFyY2hpdm9TZXJ2aWNlczogQ2FyZ2FyQXJjaGl2b3NTZXJ2aWNlLCBwcml2YXRlIGVuY3JpcHRhZG9CYXNpY286IEVuY3JpcHRhZG9CYXNpY29TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBnZW5lcmFsUGlwZTogR2VuZXJhbFBpcGUsIHB1YmxpYyB1dGlsc1NlcnZpY2U6IFV0aWxzU2VydmljZVxyXG4gICkgeyB9XHJcblxyXG4gIGFzeW5jIG5nT25Jbml0KCk6IFByb21pc2U8dm9pZD4ge1xyXG5cclxuICAgIHRoaXMubW9zdHJhckVkaXRvciA9IGZhbHNlO1xyXG4gICAgbGV0IGNvbnN1bHRhclJ1dGFQcmluY2lwYWwgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLmNhcmdhckFyY2hpdm9TZXJ2aWNlcy5nZXRQcm9waWVkYWQoeyBwcm9waWVkYWQ6IFwicnV0YV9wbGFudGlsbGFzXCIsIGFwbGljYWNpb246IDEgfSkpO1xyXG4gICAgbGV0IGNvbnZlcnRpciA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuY2FyZ2FyQXJjaGl2b1NlcnZpY2VzLmdldFByb3BpZWRhZCh7IHByb3BpZWRhZDogXCJzZXJ2aWRvcl9vcGVuT2ZmaWNlXCIsIGFwbGljYWNpb246IDAgfSkpO1xyXG4gICAgdGhpcy52ZXJDb252ZXJ0aXIgPSAhY29udmVydGlyLnZhbG9yLnZhbG9yID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgdGhpcy5ydXRhUHJpbmNpcGFsID0gY29uc3VsdGFyUnV0YVByaW5jaXBhbC52YWxvci52YWxvcjtcclxuICAgIHRoaXMuaXNWaXN1YWxpemFyQ3JlYXJDYXBlcnRhID0gZmFsc2U7XHJcbiAgICBhd2FpdCB0aGlzLm9wZW5EYXRhVGFibGUoKTtcclxuXHJcbiAgICBjb25zdCBzbGVlcCA9IChtKSA9PiBuZXcgUHJvbWlzZSgocikgPT4gc2V0VGltZW91dChyLCBtKSk7XHJcbiAgICBhd2FpdCBzbGVlcCgxMDApO1xyXG5cclxuICAgIGlmICh0aGlzLmZpbHRlclZhbHVlKSB7XHJcbiAgICAgIGF3YWl0IHRoaXMuYXBsaWNhckZpbHRybygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgb3BlbkRhdGFUYWJsZSgpIHtcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuXHJcbiAgICAgIGlmICghdGhpcy5wcm9waWVkYWQpIHtcclxuICAgICAgICB0aGlzLnByb3BpZWRhZCA9ICdydXRhX3BsYW50aWxsYXMnXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5wbGFudGlsbGFzU2VydmljZS5vYnRlbmVyQXJjaGl2b3MoXHJcbiAgICAgICAgdGhpcy5wcm9waWVkYWQsIHRoaXMucHJvcGllZGFkRGVTaXN0ZW1hID8gJzAnIDogdGhpcy5hdXRoU2VydmljZS5nZXRUb2tlbktleSgnYXBsaWNhY2lvbicpLCAnZG9jO2h0bWw7amFzcGVyO3hscztqcnhtbDtvZHQ7eGxzbTt4bHN4O3BncDthc2M7Y2VyO3AxMjtkb2N4O3Byb3BlcnRpZXMnLCB0aGlzLmFuZXhvUHJvcGllZGFkLCB0cnVlKS5zdWJzY3JpYmVcclxuICAgICAgICAocnRhID0+IHtcclxuICAgICAgICAgIHRoaXMuZmlsZXMgPSBydGE7XHJcbiAgICAgICAgICB0aGlzLmZpbHRlcmVkRmlsZXMgPSBydGFcclxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgaWYgKCF0aGlzLmFyY2hpdm9TZWxlY2Npb25hZG8pIHtcclxuICAgICAgICAgICAgdGhpcy5hcmNoaXZvU2VsZWNjaW9uYWRvID0gdGhpcy5maWxlc1swXTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH0sIDEwMDApO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgYXBsaWNhckZpbHRybygpIHtcclxuICAgIHRoaXMuZmlsdHJvQ29udmVydGlyID0gdGhpcy5maWx0ZXJWYWx1ZTtcclxuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5maWx0ZXJlZEZpbGVzID0gdGhpcy5vYnRlbmVyRmlsdHJvc05vZG9zKHRoaXMuZmlsZXMsIHRoaXMuZmlsdGVyVmFsdWUpO1xyXG4gICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgIH0sIDEwMDApO1xyXG4gIH1cclxuXHJcbiAgb2J0ZW5lckZpbHRyb3NOb2Rvcyhub2RlczogVHJlZU5vZGVbXSwgZmlsdGVyVmFsdWU6IHN0cmluZyk6IFRyZWVOb2RlW10ge1xyXG5cclxuICAgIGNvbnN0IGZpbHRlcnMgPSB0aGlzLmZpbHRyb0F2YW56YWRvKGZpbHRlclZhbHVlKTtcclxuXHJcbiAgICBjb25zdCBmaWx0ZXJlZE5vZGVzOiBUcmVlTm9kZVtdID0gW107XHJcblxyXG4gICAgbm9kZXMuZm9yRWFjaChub2RlID0+IHtcclxuXHJcbiAgICAgIC8vIFZlcmlmaWNhIHNpIGVsIG5vZG8gYWN0dWFsIG8gYWxndW5vIGRlIHN1cyBoaWpvcyBjdW1wbGUgY29uIGVsIGZpbHRyb1xyXG4gICAgICBjb25zdCBjaGlsZHJlbiA9IG5vZGUuY2hpbGRyZW4gPyB0aGlzLm9idGVuZXJGaWx0cm9zTm9kb3Mobm9kZS5jaGlsZHJlbiwgZmlsdGVyVmFsdWUpIDogW107XHJcblxyXG4gICAgICBjb25zdCBub2RlTWF0Y2hlcyA9IGZpbHRlcnMuc29tZShmaWx0ZXIgPT4gbm9kZS5sYWJlbC5pbmNsdWRlcyhmaWx0ZXIpKTtcclxuXHJcbiAgICAgIGlmIChub2RlTWF0Y2hlcyB8fCBjaGlsZHJlbi5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgZmlsdGVyZWROb2Rlcy5wdXNoKHsgLi4ubm9kZSwgY2hpbGRyZW4gfSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBmaWx0ZXJlZE5vZGVzO1xyXG4gIH1cclxuXHJcbiAgZmlsdHJvQXZhbnphZG8oc2VhcmNoOiBzdHJpbmcpOiBzdHJpbmdbXSB7XHJcblxyXG4gICAgaWYgKHNlYXJjaC5pbmNsdWRlcygnKycpKSB7XHJcbiAgICAgIGxldCBhdXggPSBzZWFyY2g7XHJcblxyXG4gICAgICBpZiAoYXV4LnN0YXJ0c1dpdGgoJysnKSkge1xyXG4gICAgICAgIGF1eCA9IGF1eC5zdWJzdHJpbmcoMSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGF1eCA9IGF1eC5yZXBsYWNlKC9cXCsvZywgJzonKTtcclxuICAgICAgY29uc3QgaXRlbXMgPSBhdXgudHJpbSgpLnNwbGl0KCc6Jyk7XHJcbiAgICAgIHJldHVybiBpdGVtcztcclxuXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gW3NlYXJjaF07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBmaWx0cmFyRW50ZXIoZXZlbnQpIHtcclxuICAgIGlmIChldmVudC5rZXkgPT09ICdFbnRlcicpIHtcclxuICAgICAgdGhpcy5hcGxpY2FyRmlsdHJvKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZWxlY2Npb25hckFyY2hpdm8oZXZlbnQpIHtcclxuICAgIHRoaXMuYXJjaGl2b1NlbGVjY2lvbmFkbyA9IGV2ZW50Lm5vZGU7XHJcbiAgICB0aGlzLm1vc3RyYXJFZGl0b3IgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIGRlc2VsZWNjaW9uYXJBcmNoaXZvKCRldmVudCkge1xyXG4gICAgdGhpcy5kYXRhU2VsZWN0ZWQgPSBudWxsO1xyXG4gIH1cclxuXHJcblxyXG4gIGFzeW5jIGNhcmdhck51ZXZvKGV2ZW50LCBmdWJhdXRvKSB7XHJcblxyXG4gICAgdGhpcy5pc1Zpc3VhbGl6YXJDcmVhckNhcGVydGEgPSBmYWxzZTtcclxuICAgIHRoaXMuYXJjaGl2b1NlbGVjY2lvbmFkb0FuZXhvID0gZXZlbnQuZmlsZXNbMF07XHJcblxyXG4gICAgaWYgKCF0aGlzLmlzRm9ybWF0b1ZhbGlkbyh0aGlzLmFyY2hpdm9TZWxlY2Npb25hZG9BbmV4by5uYW1lKSkge1xyXG4gICAgICB0aGlzLnRvYXN0U2VydmljZS5zaG93V2FybmluZyhcIlNlIGRlYmUgYWdyZWdhciB1biBhcmNoaXZvIFwiICsgQXJyYXkuZnJvbSh0aGlzLkZPUk1BVFNfVkFMSURPUykuam9pbignLCAnKSlcclxuICAgICAgZnViYXV0by5jbGVhcigpO1xyXG4gICAgICAvL3RoaXMudG9hc3RTZXJ2aWNlLnNob3dXYXJuaW5nKFwiU2UgZGViZSBhZ3JlZ2FyIHVuIGFyY2hpdm8gLmRvYywgLmRvY3gsIC54bHMsIC54bHN4ICwgLnhsc20sIC5qcnhtbCwgLm9kdCwgLmphc3BlciwgLnBncCwgLmFzYywgLmNlciwgLnByb3BlcnRpZXMgbyAuaHRtbFwiKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIC8vQ2FyZ2FyIEFyY2hpdm8gVGVtcG9yYWxcclxuICAgIGxldCByZXN1bHRhZG8gPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLnBsYW50aWxsYXNTZXJ2aWNlLmNhcmdhckRvY3VtZW50b1RlbXBvcmFsKHRoaXMuYXJjaGl2b1NlbGVjY2lvbmFkb0FuZXhvKSk7XHJcblxyXG4gICAgZnViYXV0by5jbGVhcigpO1xyXG5cclxuICAgIGlmIChyZXN1bHRhZG8/LnZhbGlkYWNpb24pIHtcclxuICAgICAgdGhpcy50b2FzdFNlcnZpY2Uuc2hvd1N1Y2Nlc3MocmVzdWx0YWRvPy52YWxpZGFjaW9uKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBpbmZvcm1hY2lvbkFyY2hpdm8gPSByZXN1bHRhZG8/LmluZm9ybWFjaW9uQXJjaGl2byA/IHJlc3VsdGFkbz8uaW5mb3JtYWNpb25BcmNoaXZvIDogbnVsbDtcclxuXHJcbiAgICAvL09idGVuZXIgUnV0YXNcclxuICAgIGxldCBydXRhQ29tcGxlbWVudG8gPSB0aGlzLmFyY2hpdm9TZWxlY2Npb25hZG8uZGF0YTtcclxuXHJcbiAgICAvL2xldCBvYmpldG8gPSAoYXdhaXQgdGhpcy5jYXJnYXJBcmNoaXZvU2VydmljZXMuZ2V0UHJvcGllZGFkKHsgcHJvcGllZGFkOiBcInJ1dGFfcGxhbnRpbGxhc1wiLCBhcGxpY2FjaW9uOiAxIH0pLnRvUHJvbWlzZSgpKTtcclxuXHJcbiAgICBpZiAoIXRoaXMuYXJjaGl2b1NlbGVjY2lvbmFkbz8ucGFyZW50KSB7XHJcbiAgICAgIHJ1dGFDb21wbGVtZW50byA9ICcnO1xyXG4gICAgfVxyXG5cclxuICAgIC8vVmVyaWZpY2Egc2kgZWwgZG9jdW1lbnRvIHlhIGV4aXN0ZSBcclxuICAgIGxldCBkYXRhID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5wbGFudGlsbGFzU2VydmljZS5leGlzdGVEb2N1bWVudG8odGhpcy5ydXRhUHJpbmNpcGFsLCBydXRhQ29tcGxlbWVudG8sIGluZm9ybWFjaW9uQXJjaGl2bykpO1xyXG5cclxuICAgIGlmIChkYXRhPy52YWxpZGFjaW9uRG9jdW1lbnRvKSB7XHJcbiAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLnNob3dXYXJuaW5nKGRhdGE/LnZhbGlkYWNpb25Eb2N1bWVudG8pO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgLy9HdWFyZGEgZWwgZG9jdW1lbnRvXHJcbiAgICBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLnBsYW50aWxsYXNTZXJ2aWNlLmNhcmdhckRvY3VtZW50byh0aGlzLnJ1dGFQcmluY2lwYWwsIHJ1dGFDb21wbGVtZW50bywgaW5mb3JtYWNpb25BcmNoaXZvKSk7XHJcblxyXG4gICAgdGhpcy5uZ09uSW5pdCgpO1xyXG5cclxuICB9XHJcblxyXG4gIGFzeW5jIGRlc2NhcmdhckFuZXhvKCkge1xyXG5cclxuICAgIC8vUnV0YSBhcmNoaXZvICBcclxuICAgIGxldCBydXRhQ29tcGxlbWVudG8gPSB0aGlzLmFyY2hpdm9TZWxlY2Npb25hZG8uZGF0YTtcclxuXHJcbiAgICBpZiAoIXRoaXMuYXJjaGl2b1NlbGVjY2lvbmFkbz8ucGFyZW50KSB7XHJcbiAgICAgIHJ1dGFDb21wbGVtZW50byA9ICcnO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY2FyZ2FyQXJjaGl2b1NlcnZpY2VzLmRlc2NhcmdhckFyY2hpdm8odGhpcy5lbmNyaXB0YWRvQmFzaWNvLmVuY3JpcHRhcih0aGlzLnJ1dGFQcmluY2lwYWwgKyBydXRhQ29tcGxlbWVudG8pLCB1bmRlZmluZWQsIHVuZGVmaW5lZCkuc3Vic2NyaWJlKGJsb2IgPT4ge1xyXG4gICAgICBjb25zdCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xyXG4gICAgICBjb25zdCBvYmplY3RVcmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xyXG4gICAgICBhLmhyZWYgPSBvYmplY3RVcmw7XHJcbiAgICAgIGEuZG93bmxvYWQgPSB0aGlzLmFyY2hpdm9TZWxlY2Npb25hZG8/LmxhYmVsO1xyXG4gICAgICBhLmNsaWNrKCk7XHJcbiAgICAgIFVSTC5yZXZva2VPYmplY3RVUkwob2JqZWN0VXJsKTtcclxuICAgIH0pO1xyXG5cclxuICB9XHJcblxyXG4gIGVsaW1pbmFyQXJjaGl2bygpIHtcclxuICAgIHRoaXMuY29uZmlybWF0aW9uU2VydmljZS5jb25maXJtKHtcclxuICAgICAgdGFyZ2V0OiBldmVudC50YXJnZXQsXHJcbiAgICAgIGtleTogJ2VsaW1pbmFyQXJjaGl2bycsXHJcbiAgICAgIG1lc3NhZ2U6ICfCv0Rlc2VhIGVsaW1pbmFyIGVsIHJlZ2lzdHJvPycsXHJcbiAgICAgIGFjY2VwdExhYmVsOiAnU2knLFxyXG4gICAgICBpY29uOiAnY29uZmlybWFyJyxcclxuICAgICAgYWNjZXB0OiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXRFbGltaW5hckFyY2hpdm8oKTtcclxuICAgICAgfSxcclxuICAgICAgcmVqZWN0OiAoKSA9PiB7IH0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGFzeW5jIHNldEVsaW1pbmFyQXJjaGl2bygpIHtcclxuXHJcbiAgICAvL1J1dGEgYXJjaGl2byAgXHJcbiAgICBsZXQgcnV0YUNvbXBsZW1lbnRvID0gdGhpcy5hcmNoaXZvU2VsZWNjaW9uYWRvLmRhdGE7XHJcblxyXG4gICAgaWYgKCF0aGlzLmFyY2hpdm9TZWxlY2Npb25hZG8/LnBhcmVudCkge1xyXG4gICAgICBydXRhQ29tcGxlbWVudG8gPSAnJztcclxuICAgIH1cclxuXHJcbiAgICBsZXQgcHJvcGllZGFkID0gJ3J1dGFfcGxhbnRpbGxhcydcclxuICAgIGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuY2FyZ2FyQXJjaGl2b1NlcnZpY2VzLmVsaW1pbmFyQXJjaGl2byh0aGlzLmVuY3JpcHRhZG9CYXNpY28uZW5jcmlwdGFyKHJ1dGFDb21wbGVtZW50byksIHByb3BpZWRhZCwgJzEnKSk7XHJcbiAgICB0aGlzLnRvYXN0U2VydmljZS5zaG93U3VjY2Vzcyh0aGlzLmdlbmVyYWxQaXBlLk1FTlNBSkVfRUxJTUlOQVIpO1xyXG4gICAgdGhpcy5hcmNoaXZvU2VsZWNjaW9uYWRvID0gbnVsbDtcclxuICAgIHRoaXMuZmlsdGVyVmFsdWUgPSBudWxsO1xyXG4gICAgdGhpcy5uZ09uSW5pdCgpO1xyXG4gIH1cclxuXHJcbiAgaXNGb3JtYXRvVmFsaWRvKG5vbWJyZUFyY2hpdm86IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgLy8gVmVyaWZpY2Egc2kgZWwgYXJjaGl2byB0ZXJtaW5hIGNvbiBhbGd1bmEgZGUgbGFzIGV4dGVuc2lvbmVzIHbDoWxpZGFzXHJcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLkZPUk1BVFNfVkFMSURPUykuc29tZShleHQgPT4gbm9tYnJlQXJjaGl2by5lbmRzV2l0aChleHQpKTtcclxuICB9XHJcblxyXG4gIGNyZWFyQ2FycGV0YSgpIHtcclxuICAgIHRoaXMuaXNWaXN1YWxpemFyQ3JlYXJDYXBlcnRhID0gdHJ1ZTtcclxuICAgIHRoaXMubm9tTnVldmFDYXJwZXRhID0gbnVsbDtcclxuICB9XHJcblxyXG4gIGFzeW5jIGd1YXJkYXJDYXJwZXRhKCkge1xyXG5cclxuICAgIGlmICh0aGlzLm1pRm9ybXVsYXJpby52YWxpZCkge1xyXG5cclxuICAgICAgbGV0IHJ1dGFDb21wbGVtZW50byA9IHRoaXMuYXJjaGl2b1NlbGVjY2lvbmFkby5kYXRhO1xyXG5cclxuICAgICAgaWYgKCF0aGlzLmFyY2hpdm9TZWxlY2Npb25hZG8/LnBhcmVudCkge1xyXG4gICAgICAgIHJ1dGFDb21wbGVtZW50byA9ICcnO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLnBsYW50aWxsYXNTZXJ2aWNlLmNyZWFyQ2FycGV0YSh0aGlzLnJ1dGFQcmluY2lwYWwsIHJ1dGFDb21wbGVtZW50bywgdGhpcy5ub21OdWV2YUNhcnBldGEpKTtcclxuICAgICAgdGhpcy50b2FzdFNlcnZpY2Uuc2hvd1N1Y2Nlc3MoJ0xhIGNhcnBldGEgc2UgaGEgY3JlYWRvIGNvcnJlY3RhbWVudGUnKTtcclxuICAgICAgdGhpcy5uZ09uSW5pdCgpO1xyXG5cclxuICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICB0aGlzLnRvYXN0U2VydmljZS5zaG93RXJyb3IoJ0ZhbHRhbiBjYW1wb3Mgb2JsaWdhdG9yaW9zJyk7XHJcbiAgICAgIE9iamVjdC5rZXlzKHRoaXMubWlGb3JtdWxhcmlvLmNvbnRyb2xzKS5mb3JFYWNoKChrZXkpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5taUZvcm11bGFyaW8uY29udHJvbHNba2V5XS5pbnZhbGlkKSB7XHJcbiAgICAgICAgICB0aGlzLm1pRm9ybXVsYXJpby5jb250cm9sc1trZXldLm1hcmtBc0RpcnR5KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBlbGltaW5hckNhcnBldGEoKSB7XHJcblxyXG4gICAgdGhpcy5pc1Zpc3VhbGl6YXJDcmVhckNhcGVydGEgPSBmYWxzZTtcclxuXHJcbiAgICB0aGlzLmNvbmZpcm1hdGlvblNlcnZpY2UuY29uZmlybSh7XHJcbiAgICAgIHRhcmdldDogZXZlbnQudGFyZ2V0LFxyXG4gICAgICBrZXk6ICdlbGltaW5hckNhcnBldGEnLFxyXG4gICAgICBtZXNzYWdlOiAnwr9EZXNlYSBlbGltaW5hciBlbCByZWdpc3Rybz8nLFxyXG4gICAgICBhY2NlcHRMYWJlbDogJ1NpJyxcclxuICAgICAgaWNvbjogJ2NvbmZpcm1hcicsXHJcbiAgICAgIGFjY2VwdDogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0RWxpbWluYXJDYXJwZXRhKCk7XHJcbiAgICAgIH0sXHJcbiAgICAgIHJlamVjdDogKCkgPT4geyB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBzZXRFbGltaW5hckNhcnBldGEoKSB7XHJcblxyXG4gICAgbGV0IHJ1dGFDb21wbGVtZW50byA9IHRoaXMuYXJjaGl2b1NlbGVjY2lvbmFkby5kYXRhO1xyXG5cclxuICAgIGlmICghdGhpcy5hcmNoaXZvU2VsZWNjaW9uYWRvPy5wYXJlbnQpIHtcclxuICAgICAgcnV0YUNvbXBsZW1lbnRvID0gJyc7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5wbGFudGlsbGFzU2VydmljZS5lbGltaW5hckNhcnBldGEodGhpcy5ydXRhUHJpbmNpcGFsLCBydXRhQ29tcGxlbWVudG8pLnN1YnNjcmliZShydGEgPT4ge1xyXG4gICAgICB0aGlzLnRvYXN0U2VydmljZS5zaG93U3VjY2VzcygnTGEgY2FycGV0YSBoYSBzaWRvIGVsaW1pbmFkYSBjb3JyZWN0YW1lbnRlJyk7XHJcbiAgICAgIHRoaXMuYXJjaGl2b1NlbGVjY2lvbmFkbyA9IG51bGw7XHJcbiAgICAgIHRoaXMuZmlsdGVyVmFsdWUgPSBudWxsO1xyXG4gICAgICB0aGlzLm5nT25Jbml0KCk7XHJcbiAgICB9KVxyXG5cclxuICB9XHJcblxyXG4gIGFzeW5jIGNvbnZlcnRpckFyY2hpdm9zKCkge1xyXG5cclxuICAgIHRoaXMuaXNWaXN1YWxpemFyQ3JlYXJDYXBlcnRhID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzTW9zdHJhclBvcHVwQ29udmVydGlyID0gdHJ1ZTtcclxuICAgIC8vY29uc3QgZmlsdGVyZWROb2RlcyA9IHRoaXMuZ2V0RmlsdGVyZWROb2RlcygpO1xyXG4gICAgY29uc3QgdmFsb3JGaWx0cm8gPSB0aGlzLmZpbHRlclZhbHVlO1xyXG5cclxuICAgIGNvbnN0IHNsZWVwID0gKG0pID0+IG5ldyBQcm9taXNlKChyKSA9PiBzZXRUaW1lb3V0KHIsIG0pKTtcclxuICAgIGF3YWl0IHNsZWVwKDUwKTtcclxuXHJcbiAgICB0aGlzLnBvcHVwQ29udmVydGlyUGxhbnRpbGxhc0NvbXBvbmVudC5idXNjYXIodGhpcy5ydXRhUHJpbmNpcGFsLCB2YWxvckZpbHRybyk7XHJcblxyXG4gIH1cclxuXHJcbiAgcmVncmVzYXJQb3B1cENvbnZlcnRpcigkZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5pc01vc3RyYXJQb3B1cENvbnZlcnRpciA9IGZhbHNlO1xyXG4gICAgdGhpcy5uZ09uSW5pdCgpO1xyXG4gIH1cclxuXHJcbiAgaXNIdG1sKCkge1xyXG4gICAgdGhpcy5odG1sID0gZmFsc2U7XHJcblxyXG4gICAgaWYgKHRoaXMuYXJjaGl2b1NlbGVjY2lvbmFkbyAhPSBudWxsICYmIHRoaXMuYXJjaGl2b1NlbGVjY2lvbmFkby5sYWJlbCAhPSBudWxsICYmIHRoaXMuYXJjaGl2b1NlbGVjY2lvbmFkby5sYWJlbC5pbmNsdWRlcygnLmh0bWwnKSlcclxuICAgICAgdGhpcy5odG1sID0gdHJ1ZTtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5odG1sO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgZWRpdGFyQWN0aW9uKCkge1xyXG5cclxuICAgIGxldCBkYXRhID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5wbGFudGlsbGFzU2VydmljZS5jb25zdWx0YXJBcmNoaXZvSHRtbCh0aGlzLnJ1dGFQcmluY2lwYWwsIHRoaXMuYXJjaGl2b1NlbGVjY2lvbmFkby5kYXRhKSk7XHJcblxyXG4gICAgdGhpcy5tb2RpZmljYXJIVE1MID0gZGF0YTtcclxuXHJcbiAgICB0aGlzLm1vc3RyYXJFZGl0b3IgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgZ3VhcmRhckh0bWwoKSB7XHJcblxyXG4gICAgY29uc29sZS5sb2coJ3RoaXMubW9kaWZpY2FySFRNTCcsIHRoaXMubW9kaWZpY2FySFRNTCk7XHJcblxyXG4gICAgYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5wbGFudGlsbGFzU2VydmljZS5ndWFyZGFyQXJjaGl2b0h0bWwodGhpcy5ydXRhUHJpbmNpcGFsLCB0aGlzLmFyY2hpdm9TZWxlY2Npb25hZG8uZGF0YSwgdGhpcy5tb2RpZmljYXJIVE1MKSk7XHJcblxyXG4gICAgdGhpcy50b2FzdFNlcnZpY2Uuc2hvd1N1Y2Nlc3MoJ0VsIGFyY2hpdm8gaGEgc2lkbyBtb2RpZmljYWRvIGNvcnJlY3RhbWVudGUnKTtcclxuXHJcbiAgICB0aGlzLm5nT25Jbml0KCk7XHJcblxyXG4gIH1cclxuXHJcbiAgcmVncmVzYXJQcmluY2lwYWwoKSB7XHJcbiAgICB0aGlzLm1vc3RyYXJFZGl0b3IgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyB2ZXJpZmljYXJDb250cm9sKGNvbnRyb2wpIHtcclxuICAgIHJldHVybiB0aGlzLmNvbnRyb2xGdW5jaW9uU2VydmljZS5nZXRDb250cm9sRnVuY2lvbmFsaWRhZChjb250cm9sKTtcclxuICB9XHJcblxyXG59XHJcbiIsIjxwLWNvbmZpcm1Qb3B1cCBrZXk9XCJlbGltaW5hckNhcnBldGFcIj48L3AtY29uZmlybVBvcHVwPlxyXG48cC1jb25maXJtUG9wdXAga2V5PVwiZWxpbWluYXJBcmNoaXZvXCI+PC9wLWNvbmZpcm1Qb3B1cD5cclxuXHJcbjxoMSBjbGFzcz1cIm1iLTRcIj57eydjYXJndWUnIHwgdHJhbnNsYXRlfX0ge3sncGxhbnRpbGxhcycgfCB0cmFuc2xhdGV9fTwvaDE+XHJcblxyXG48ZGl2IGNsYXNzPVwicC1mbHVpZCBwLWZvcm1ncmlkIGdyaWRcIj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiZmllbGQgY29sLTEyIG1kOmNvbC02IGxnOmNvbC01XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgcElucHV0VGV4dCBbKG5nTW9kZWwpXT1cImZpbHRlclZhbHVlXCIgcGxhY2Vob2xkZXI9XCJ7eydmaWx0cm8nIHwgdHJhbnNsYXRlfX1cIlxyXG4gICAgICAgICAgICAgICAgKGtleWRvd24pPVwiZmlsdHJhckVudGVyKCRldmVudClcIiAvPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBwQnV0dG9uIHBSaXBwbGUgaWNvbj1cInBpIHBpLXNlYXJjaCB0ZXh0LXhsXCIgKGNsaWNrKT1cImFwbGljYXJGaWx0cm8oKVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInAtZWxlbWVudCBwLXJpcHBsZSBwLWJ1dHRvbi1yb3VuZGVkICBwLWJ1dHRvbi1zZWNvbmRhcnkgcC1idXR0b24gcC1jb21wb25lbnQgcC1idXR0b24taWNvbi1vbmx5XCJcclxuICAgICAgICAgICAgICAgIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiIHBUb29sdGlwPVwiRWRpdGFyIEhUTUxcIj48L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPHAtdHJlZSAjdHJlZSBzY3JvbGxIZWlnaHQ9XCI2NzBweFwiIFt2YWx1ZV09XCJmaWx0ZXJlZEZpbGVzXCIgc2VsZWN0aW9uTW9kZT1cInNpbmdsZVwiIFsoc2VsZWN0aW9uKV09XCJkYXRhU2VsZWN0ZWRcIlxyXG4gICAgICAgICAgICBbZmlsdGVyXT1cImZhbHNlXCIgW2ZpbHRlclBsYWNlaG9sZGVyXT1cIidmaWx0cm8nIHwgdHJhbnNsYXRlXCIgZmlsdGVyTW9kZT1cInN0cmljdFwiXHJcbiAgICAgICAgICAgIChvbk5vZGVTZWxlY3QpPVwic2VsZWNjaW9uYXJBcmNoaXZvKCRldmVudClcIiBbbG9hZGluZ109XCJsb2FkaW5nXCJcclxuICAgICAgICAgICAgKG9uTm9kZVVuc2VsZWN0KT1cImRlc2VsZWNjaW9uYXJBcmNoaXZvKCRldmVudClcIj48L3AtdHJlZT5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gT1BDSU5FUyBESVJFQ1RPUklPUyAtIEFSQ0hJVk9TIC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cImZpZWxkIGNvbC0xMiBtZDpjb2wtNiBsZzpjb2wtN1wiPlxyXG5cclxuICAgICAgICBAaWYoIXRoaXMubG9hZGluZyl7XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmRcIj5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gQ0FSUEVUQSAtLT5cclxuICAgICAgICAgICAgQGlmKGFyY2hpdm9TZWxlY2Npb25hZG8uZXhwYW5kZWQpe1xyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgIDxoMSBjbGFzcz1cInRleHQteGwgbXQtMiBtYi00IG1yLTNcIj5DYXJwZXRhOiA8L2gxPlxyXG4gICAgICAgICAgICAgICAgPGg1IGNsYXNzPVwidGV4dC1zbSBtdC0yIG1iLTRcIj4ge3thcmNoaXZvU2VsZWNjaW9uYWRvLmxhYmVsfX0gPC9oNT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gQ29udmVydGlyIC0tPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgcEJ1dHRvbiBwUmlwcGxlIChjbGljayk9XCJjb252ZXJ0aXJBcmNoaXZvcygpXCJcclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInZlckNvbnZlcnRpciAmJiBjb250cm9sRnVuY2lvblNlcnZpY2UuZ2V0Q29udHJvbEZ1bmNpb25hbGlkYWQoJ3NlZ3VwbGFjb3I6Z3VhcmRhcicpXCJcclxuICAgICAgICAgICAgICAgICAgICB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIiBsYWJlbD1cInt7J2NvbnZlcnRpcicgfCB0cmFuc2xhdGV9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwLWJ1dHRvbi1vdXRsaW5lZCBib3Rvbi1hY2Npb24tcHJpbmNpcGFsIHRleHQtZ3JheS02MDAgY29sb3ItNTAwXCJcclxuICAgICAgICAgICAgICAgICAgICBwVG9vbHRpcD1cIkNvbnZlcnRpciBhcmNoaXZvXCIgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbmVkb3ItaWNvbm8tYWNjaW9uZXMtcHJpbmNpcGFsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwicGkgcGktYXJyb3ctcmlnaHQtYXJyb3ctbGVmdCBjb2xvci01MDBcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tTnVldmEgQ2FycGV0YS0tPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImNvbnRyb2xGdW5jaW9uU2VydmljZS5nZXRDb250cm9sRnVuY2lvbmFsaWRhZCgnc2VndXBsYWNvcjpndWFyZGFyJylcIiBwQnV0dG9uIHBSaXBwbGVcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInAtYnV0dG9uLW91dGxpbmVkICBib3Rvbi1hY2Npb24tcHJpbmNpcGFsIHRleHQtZ3JheS02MDAgY29sb3ItNTAwXCJcclxuICAgICAgICAgICAgICAgICAgICBsYWJlbD1cInt7J2xpbmtfbnVldm8nIHwgdHJhbnNsYXRlfX1cIiAoY2xpY2spPVwiY3JlYXJDYXJwZXRhKClcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVuZWRvci1pY29uby1hY2Npb25lcy1wcmluY2lwYWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJnbHlwaGljb25zIGdseXBoaWNvbnMtZmxvcHB5LXNhdmUgY29sb3ItNTAwXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLUVsaW1pbmFyLS0+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiY29udHJvbEZ1bmNpb25TZXJ2aWNlLmdldENvbnRyb2xGdW5jaW9uYWxpZGFkKCdzZWd1cGxhY29yOmd1YXJkYXInKVwiIHBCdXR0b24gcFJpcHBsZVxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicC1idXR0b24tb3V0bGluZWQgIGJvdG9uLWFjY2lvbi1wcmluY2lwYWwgdGV4dC1ncmF5LTYwMCBjb2xvci01MDBcIlxyXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsPVwie3snbGlua19lbGltaW5hcicgfCB0cmFuc2xhdGV9fVwiIChjbGljayk9XCJlbGltaW5hckNhcnBldGEoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW5lZG9yLWljb25vLWFjY2lvbmVzLXByaW5jaXBhbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImdseXBoaWNvbnMgZ2x5cGhpY29ucy1iaW4gY29sb3ItNTAwXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSBDYXJnYXIgQXJjaGl2byAtLT5cclxuICAgICAgICAgICAgICAgIDxwLWZpbGVVcGxvYWQgI2Z1YmF1dG8gbW9kZT1cImJhc2ljXCIgW2F1dG9dPVwidHJ1ZVwiIFtjdXN0b21VcGxvYWRdPVwidHJ1ZVwiIGNob29zZUljb249XCJwaSBwaS1wYXBlcmNsaXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29udHJvbEZ1bmNpb25TZXJ2aWNlLmdldENvbnRyb2xGdW5jaW9uYWxpZGFkKCdzZWd1cGxhY29yOmd1YXJkYXInKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2hvb3NlTGFiZWw9XCJ7eydsaW5rX3N1YmlyYXJjaGl2b3MnIHwgdHJhbnNsYXRlfX1cIiAob25TZWxlY3QpPVwiY2FyZ2FyTnVldm8oJGV2ZW50LCBmdWJhdXRvKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW5lZG9yLWljb25vLWFjY2lvbmVzLXByaW5jaXBhbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cInBpIHBpLXRyYXNoXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9wLWZpbGVVcGxvYWQ+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICA8IS0tIEFSQ0hJVk8tLT5cclxuICAgICAgICAgICAgQGlmKCFhcmNoaXZvU2VsZWNjaW9uYWRvLmV4cGFuZGVkKXtcclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPGgxIGNsYXNzPVwidGV4dC14bCBtdC0yIG1iLTQgbXItM1wiPkFyY2hpdm86IDwvaDE+XHJcbiAgICAgICAgICAgICAgICA8aDUgY2xhc3M9XCJ0ZXh0LXNtIG10LTIgbWItNFwiPiB7e2FyY2hpdm9TZWxlY2Npb25hZG8ubGFiZWx9fSA8L2g1PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgICAgICAgICAgICAgIEBpZihhcmNoaXZvU2VsZWNjaW9uYWRvLmxhYmVsLmluY2x1ZGVzKCcuaHRtbCcpKXtcclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tRURJVEFSIEhUTUwtLT5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIHBCdXR0b24gcFJpcHBsZSBpY29uPVwicGkgcGktY29kZSB0ZXh0LXhsXCIgKGNsaWNrKT1cImVkaXRhckFjdGlvbigpXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInAtYnV0dG9uLW91dGxpbmVkICBib3Rvbi1hY2Npb24tcHJpbmNpcGFsIHRleHQtZ3JheS02MDAgY29sb3ItNTAwXCIgbGFiZWw9XCJFZGl0YXIgSFRNTFwiPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSBERVNDQVJHQVItLT5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gcEJ1dHRvbiBwUmlwcGxlIGNsYXNzPVwicC1idXR0b24tb3V0bGluZWQgIGJvdG9uLWFjY2lvbi1wcmluY2lwYWwgdGV4dC1ncmF5LTYwMCBjb2xvci01MDBcIlxyXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsPVwie3snbGlua19kZXNjYXJnYXInIHwgdHJhbnNsYXRlfX1cIiAoY2xpY2spPVwiZGVzY2FyZ2FyQW5leG8oKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb250cm9sRnVuY2lvblNlcnZpY2UuZ2V0Q29udHJvbEZ1bmNpb25hbGlkYWQoJ3NlZ3VwbGFjb3I6ZGVzY2FyZ2FyJylcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVuZWRvci1pY29uby1hY2Npb25lcy1wcmluY2lwYWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJnbHlwaGljb25zIGdseXBoaWNvbnMtZG93bmxvYWRcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tRUxJTUlOQVItLT5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gcEJ1dHRvbiBwUmlwcGxlIGNsYXNzPVwicC1idXR0b24tb3V0bGluZWQgIGJvdG9uLWFjY2lvbi1wcmluY2lwYWwgdGV4dC1ncmF5LTYwMCBjb2xvci01MDBcIlxyXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsPVwie3snbGlua19lbGltaW5hcicgfCB0cmFuc2xhdGV9fVwiIChjbGljayk9XCJlbGltaW5hckFyY2hpdm8oKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb250cm9sRnVuY2lvblNlcnZpY2UuZ2V0Q29udHJvbEZ1bmNpb25hbGlkYWQoJ3NlZ3VwbGFjb3I6Z3VhcmRhcicpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbmVkb3ItaWNvbm8tYWNjaW9uZXMtcHJpbmNpcGFsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZ2x5cGhpY29ucyBnbHlwaGljb25zLWJpblwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgQGlmKGFyY2hpdm9TZWxlY2Npb25hZG8uZXhwYW5kZWQgJiYgaXNWaXN1YWxpemFyQ3JlYXJDYXBlcnRhKXtcclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZFwiPlxyXG5cclxuICAgICAgICAgICAgPGg1IGNsYXNzPVwibXQtMlwiPjxpIGNsYXNzPVwiZ2x5cGhpY29ucyBnbHlwaGljb25zLW5vdGVcIj48L2k+IE51ZXZhIGNhcnBldGE8L2g1PlxyXG5cclxuICAgICAgICAgICAgPGZvcm0gI21pRm9ybXVsYXJpbz1cIm5nRm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgPCEtLSBjYW1wb3MgLS0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBOb21icmUgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctZnVsbCBwLTAgbWItMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtZmxvYXQtbGFiZWwgbXItMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHBJbnB1dFRleHQgaWQ9XCJpZF9udW1lcm9fZGVfZXZlbnRvXCIgWyhuZ01vZGVsKV09XCJub21OdWV2YUNhcnBldGFcIiByZXF1aXJlZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJub21icmVDYXJwZXRhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiaWRfbnVtZXJvX2RlX2V2ZW50b1wiPnt7J25vbWJyZScgfCB0cmFuc2xhdGV9fSAqPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS1HdWFyZGFyIENhcnBldGEtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBwQnV0dG9uIHBSaXBwbGUgY2xhc3M9XCJtci0yIHAtYnV0dG9uIGJhY2tncm91bmQtMTAwIGNvbG9yLTUwMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwiZ2x5cGhpY29ucyBnbHlwaGljb25zLWZsb3BweS1zYXZlXCIgW2xhYmVsXT1cIignbGlua19ndWFyZGFyJyB8IHRyYW5zbGF0ZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImd1YXJkYXJDYXJwZXRhKClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9mb3JtPlxyXG5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICB9XHJcbiAgICAgICAgPCEtLSBFRElUT1IgREUgSFRNTCAtLT5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiaXNIdG1sKCkgJiYgbW9zdHJhckVkaXRvclwiPlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jb250ZW50LWVuZCBhbGlnbi1pdGVtcy1jZW50ZXIgbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgPCEtLSBCb3TDs24gZ3VhcmRhciBIVE1MIC0tPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBwQnV0dG9uIHBSaXBwbGUgbGFiZWw9XCJ7eydsaW5rX2d1YXJkYXInIHwgdHJhbnNsYXRlIH19XCIgKGNsaWNrKT1cImd1YXJkYXJIdG1sKClcIlxyXG4gICAgICAgICAgICAgICAgICAgIGljb249XCJnbHlwaGljb25zIGdseXBoaWNvbnMtZmxvcHB5LXNhdmVcIiBjbGFzcz1cInAtYnV0dG9uLXNlY29uZGFyeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb250cm9sRnVuY2lvblNlcnZpY2UuZ2V0Q29udHJvbEZ1bmNpb25hbGlkYWQoJ3NlZ3VwbGFjb3I6Z3VhcmRhcicpXCI+PC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPHAtZWRpdG9yIGlkPVwiZWRpdG9yXCIgW3N0eWxlXT1cInsgaGVpZ2h0OiAnNTAwcHgnIH1cIiByZXF1aXJlZCBbKG5nTW9kZWwpXT1cIm1vZGlmaWNhckhUTUxcIlxyXG4gICAgICAgICAgICAgICAgbmFtZT1cImh0bWxQdWJsaWNhY2lvblwiPjwvcC1lZGl0b3I+XHJcblxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuQGlmKGlzTW9zdHJhclBvcHVwQ29udmVydGlyKXtcclxuPGFwcC1wb3B1cC1jb252ZXJ0aXItcGxhbnRpbGxhcyAocmVncmVzYXIpPVwicmVncmVzYXJQb3B1cENvbnZlcnRpcigkZXZlbnQpXCI+PC9hcHAtcG9wdXAtY29udmVydGlyLXBsYW50aWxsYXM+XHJcbn0iXX0=
370
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyZ3VlLXBsYW50aWxsYS1nZW5lcmFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvd2ViY29tbW9uL3BhZ2VzL2Nhcmd1ZS1wbGFudGlsbGEvY2FyZ3VlLXBsYW50aWxsYS1nZW5lcmFsL2Nhcmd1ZS1wbGFudGlsbGEtZ2VuZXJhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3dlYmNvbW1vbi9wYWdlcy9jYXJndWUtcGxhbnRpbGxhL2Nhcmd1ZS1wbGFudGlsbGEtZ2VuZXJhbC9jYXJndWUtcGxhbnRpbGxhLWdlbmVyYWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQW9CLE1BQU0scUJBQXFCLENBQUM7QUFDeEUsT0FBTyxFQUFFLG1CQUFtQixFQUFzQixNQUFNLGFBQWEsQ0FBQztBQUN0RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3hELE9BQU8sRUFBUSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFJaEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBVSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FB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Q2YsWUFBWTt3QkFDWixpQkFBaUI7d0JBQ2pCLGtCQUFrQjt3QkFDbEIsV0FBVzt3QkFDWCxjQUFjO3dCQUNkLGdCQUFnQjt3QkFDaEIsaUNBQWlDO3dCQUNqQyxZQUFZO3FCQUNiLGFBR1U7d0JBQ1QsbUJBQW1CO3FCQUNwQjs0WEFJNkMsaUNBQWlDO3NCQUE5RSxTQUFTO3VCQUFDLGlDQUFpQztnQkFDRSxZQUFZO3NCQUF6RCxTQUFTO3VCQUFDLGNBQWMsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ3pCLGFBQWE7c0JBQS9CLFNBQVM7dUJBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSwgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5pbXBvcnQgeyBDb25maXJtYXRpb25TZXJ2aWNlLCBNZW51SXRlbSwgVHJlZU5vZGUgfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcbmltcG9ydCB7IEJ1dHRvbk1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvYnV0dG9uJztcclxuaW1wb3J0IHsgSW5wdXRUZXh0TW9kdWxlIH0gZnJvbSAncHJpbWVuZy9pbnB1dHRleHQnO1xyXG5pbXBvcnQgeyBTcGxpdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvc3BsaXRidXR0b24nO1xyXG5pbXBvcnQgeyBUcmVlLCBUcmVlTW9kdWxlIH0gZnJvbSAncHJpbWVuZy90cmVlJztcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL3NlcnZpY2lvcy9hdXRoLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQbGFudGlsbGFzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL3dlYmNvbW1vbi9zZXJ2aWNlcy9wbGFudGlsbGFzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDYXJnYXJDb250cm9sRnVuY2lvbmFsaWRhZFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL3NlcnZpY2lvcy9jYXJnYXItY29udHJvbC1mdW5jaW9uYWxpZGFkLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb25maXJtUG9wdXBNb2R1bGUgfSBmcm9tICdwcmltZW5nL2NvbmZpcm1wb3B1cCc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBOZ0Zvcm0gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEZpZWxkc2V0TW9kdWxlIH0gZnJvbSAncHJpbWVuZy9maWVsZHNldCc7XHJcbmltcG9ydCB7IEZpbGVVcGxvYWRNb2R1bGUgfSBmcm9tICdwcmltZW5nL2ZpbGV1cGxvYWQnO1xyXG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL3NlcnZpY2lvcy90b2FzdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ2FyZ2FyQXJjaGl2b3NTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkL3NlcnZpY2lvcy9jYXJnYXItYXJjaGl2b3Muc2VydmljZSc7XHJcbmltcG9ydCB7IEVuY3JpcHRhZG9CYXNpY29TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkL3NlcnZpY2lvcy9lbmNyaXB0YWRvLWJhc2ljby5zZXJ2aWNlJztcclxuaW1wb3J0IHsgR2VuZXJhbFBpcGUgfSBmcm9tICcuLi8uLi8uLi8uLi93ZWJjb21tb24vcGlwZXMvZ2VuZXJhbC5waXBlJztcclxuaW1wb3J0IHsgUG9wdXBDb252ZXJ0aXJQbGFudGlsbGFzQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vd2ViY29tbW9uL3BvcHVwcy9wb3B1cC1jb252ZXJ0aXItcGxhbnRpbGxhcy9wb3B1cC1jb252ZXJ0aXItcGxhbnRpbGxhcy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBVdGlsc1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL3NlcnZpY2lvcy91dGlscy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgZmlyc3RWYWx1ZUZyb20gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgRWRpdG9yTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9lZGl0b3InO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtY2FyZ3VlLXBsYW50aWxsYS1nZW5lcmFsJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtUcmFuc2xhdGVNb2R1bGUsXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBUcmVlTW9kdWxlLFxyXG4gICAgSW5wdXRUZXh0TW9kdWxlLFxyXG4gICAgQnV0dG9uTW9kdWxlLFxyXG4gICAgU3BsaXRCdXR0b25Nb2R1bGUsXHJcbiAgICBDb25maXJtUG9wdXBNb2R1bGUsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIEZpZWxkc2V0TW9kdWxlLFxyXG4gICAgRmlsZVVwbG9hZE1vZHVsZSxcclxuICAgIFBvcHVwQ29udmVydGlyUGxhbnRpbGxhc0NvbXBvbmVudCxcclxuICAgIEVkaXRvck1vZHVsZVxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2Nhcmd1ZS1wbGFudGlsbGEtZ2VuZXJhbC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2Nhcmd1ZS1wbGFudGlsbGEtZ2VuZXJhbC5jb21wb25lbnQuc2NzcycsXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICBDb25maXJtYXRpb25TZXJ2aWNlXHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ2FyZ3VlUGxhbnRpbGxhR2VuZXJhbENvbXBvbmVudCB7XHJcblxyXG4gIEBWaWV3Q2hpbGQoUG9wdXBDb252ZXJ0aXJQbGFudGlsbGFzQ29tcG9uZW50KSBwb3B1cENvbnZlcnRpclBsYW50aWxsYXNDb21wb25lbnQ6IFBvcHVwQ29udmVydGlyUGxhbnRpbGxhc0NvbXBvbmVudDtcclxuICBAVmlld0NoaWxkKCdtaUZvcm11bGFyaW8nLCB7IHN0YXRpYzogZmFsc2UgfSkgbWlGb3JtdWxhcmlvITogTmdGb3JtO1xyXG4gIEBWaWV3Q2hpbGQoJ3RyZWUnKSB0cmVlQ29tcG9uZW50ITogVHJlZTtcclxuXHJcbiAgbG9hZGluZzogYm9vbGVhbjtcclxuICBwcm9waWVkYWQ6IHN0cmluZztcclxuICBleHRlbnNpb25lczogc3RyaW5nO1xyXG4gIHByb3BpZWRhZERlU2lzdGVtYTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGFuZXhvUHJvcGllZGFkOiBzdHJpbmcgPSAnJztcclxuICBmaWxlczogVHJlZU5vZGVbXTtcclxuICBkYXRhU2VsZWN0ZWQ6IFRyZWVOb2RlO1xyXG4gIGl0ZW1zQm90b25BY2Npb25lczogTWVudUl0ZW1bXTtcclxuICB2ZXJDb252ZXJ0aXI6IGJvb2xlYW47XHJcbiAgbm9tTnVldmFDYXJwZXRhOiBzdHJpbmc7XHJcbiAgaXNWaXN1YWxpemFyQ3JlYXJDYXBlcnRhOiBib29sZWFuID0gZmFsc2U7XHJcbiAgYXJjaGl2b1NlbGVjY2lvbmFkb0FuZXhvOiBGaWxlO1xyXG4gIGFyY2hpdm9TZWxlY2Npb25hZG86IFRyZWVOb2RlO1xyXG4gIGlzTW9zdHJhclBvcHVwQ29udmVydGlyOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcnV0YVByaW5jaXBhbDogc3RyaW5nO1xyXG4gIGZpbHRlcmVkRmlsZXM6IFRyZWVOb2RlW10gPSBbXTtcclxuICBmaWx0ZXJWYWx1ZTogc3RyaW5nID0gJyc7XHJcblxyXG4gIEZPUk1BVFNfVkFMSURPUzogU2V0PHN0cmluZz4gPSBuZXcgU2V0KFtcclxuICAgICcuZG9jJyxcclxuICAgICcuaHRtbCcsXHJcbiAgICAnLmphc3BlcicsXHJcbiAgICAnLnhscycsXHJcbiAgICAnLmpyeG1sJyxcclxuICAgICcub2R0JyxcclxuICAgICcueGxzbScsXHJcbiAgICAnLnhsc3gnLFxyXG4gICAgJy5wZ3AnLFxyXG4gICAgJy5hc2MnLFxyXG4gICAgJy5jZXInLFxyXG4gICAgJy5wMTInLFxyXG4gICAgJy5kb2N4JyxcclxuICAgICcucHJvcGVydGllcydcclxuICBdKTtcclxuICBmaWx0cm9Db252ZXJ0aXI6IHN0cmluZztcclxuICBodG1sOiBib29sZWFuO1xyXG4gIG1vc3RyYXJFZGl0b3I6IGJvb2xlYW47XHJcbiAgbW9kaWZpY2FySFRNTDogc3RyaW5nO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHBsYW50aWxsYXNTZXJ2aWNlOiBQbGFudGlsbGFzU2VydmljZSwgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsIHB1YmxpYyB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgcHVibGljIGNvbnRyb2xGdW5jaW9uU2VydmljZTogQ2FyZ2FyQ29udHJvbEZ1bmNpb25hbGlkYWRTZXJ2aWNlLCBwcml2YXRlIGNvbmZpcm1hdGlvblNlcnZpY2U6IENvbmZpcm1hdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHRvYXN0U2VydmljZTogVG9hc3RTZXJ2aWNlLCBwcml2YXRlIGNhcmdhckFyY2hpdm9TZXJ2aWNlczogQ2FyZ2FyQXJjaGl2b3NTZXJ2aWNlLCBwcml2YXRlIGVuY3JpcHRhZG9CYXNpY286IEVuY3JpcHRhZG9CYXNpY29TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBnZW5lcmFsUGlwZTogR2VuZXJhbFBpcGUsIHB1YmxpYyB1dGlsc1NlcnZpY2U6IFV0aWxzU2VydmljZVxyXG4gICkgeyB9XHJcblxyXG4gIGFzeW5jIG5nT25Jbml0KCk6IFByb21pc2U8dm9pZD4ge1xyXG5cclxuICAgIHRoaXMubW9zdHJhckVkaXRvciA9IGZhbHNlO1xyXG4gICAgbGV0IGNvbnN1bHRhclJ1dGFQcmluY2lwYWwgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLmNhcmdhckFyY2hpdm9TZXJ2aWNlcy5nZXRQcm9waWVkYWQoeyBwcm9waWVkYWQ6IFwicnV0YV9wbGFudGlsbGFzXCIsIGFwbGljYWNpb246IDEgfSkpO1xyXG4gICAgbGV0IGNvbnZlcnRpciA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuY2FyZ2FyQXJjaGl2b1NlcnZpY2VzLmdldFByb3BpZWRhZCh7IHByb3BpZWRhZDogXCJzZXJ2aWRvcl9vcGVuT2ZmaWNlXCIsIGFwbGljYWNpb246IDAgfSkpO1xyXG4gICAgdGhpcy52ZXJDb252ZXJ0aXIgPSAhY29udmVydGlyLnZhbG9yLnZhbG9yID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgdGhpcy5ydXRhUHJpbmNpcGFsID0gY29uc3VsdGFyUnV0YVByaW5jaXBhbC52YWxvci52YWxvcjtcclxuICAgIHRoaXMuaXNWaXN1YWxpemFyQ3JlYXJDYXBlcnRhID0gZmFsc2U7XHJcbiAgICBhd2FpdCB0aGlzLm9wZW5EYXRhVGFibGUoKTtcclxuXHJcbiAgICBjb25zdCBzbGVlcCA9IChtKSA9PiBuZXcgUHJvbWlzZSgocikgPT4gc2V0VGltZW91dChyLCBtKSk7XHJcbiAgICBhd2FpdCBzbGVlcCgxMDApO1xyXG5cclxuICAgIGlmICh0aGlzLmZpbHRlclZhbHVlKSB7XHJcbiAgICAgIGF3YWl0IHRoaXMuYXBsaWNhckZpbHRybygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgb3BlbkRhdGFUYWJsZSgpIHtcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuXHJcbiAgICAgIGlmICghdGhpcy5wcm9waWVkYWQpIHtcclxuICAgICAgICB0aGlzLnByb3BpZWRhZCA9ICdydXRhX3BsYW50aWxsYXMnXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5wbGFudGlsbGFzU2VydmljZS5vYnRlbmVyQXJjaGl2b3MoXHJcbiAgICAgICAgdGhpcy5wcm9waWVkYWQsIHRoaXMucHJvcGllZGFkRGVTaXN0ZW1hID8gJzAnIDogdGhpcy5hdXRoU2VydmljZS5nZXRUb2tlbktleSgnYXBsaWNhY2lvbicpLCAnZG9jO2h0bWw7amFzcGVyO3hscztqcnhtbDtvZHQ7eGxzbTt4bHN4O3BncDthc2M7Y2VyO3AxMjtkb2N4O3Byb3BlcnRpZXMnLCB0aGlzLmFuZXhvUHJvcGllZGFkLCB0cnVlKS5zdWJzY3JpYmVcclxuICAgICAgICAocnRhID0+IHtcclxuICAgICAgICAgIHRoaXMuZmlsZXMgPSBydGE7XHJcbiAgICAgICAgICB0aGlzLmZpbHRlcmVkRmlsZXMgPSBydGFcclxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgaWYgKCF0aGlzLmFyY2hpdm9TZWxlY2Npb25hZG8pIHtcclxuICAgICAgICAgICAgdGhpcy5hcmNoaXZvU2VsZWNjaW9uYWRvID0gdGhpcy5maWxlc1swXTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH0sIDEwMDApO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgYXBsaWNhckZpbHRybygpIHtcclxuICAgIHRoaXMuZmlsdHJvQ29udmVydGlyID0gdGhpcy5maWx0ZXJWYWx1ZTtcclxuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5maWx0ZXJlZEZpbGVzID0gdGhpcy5vYnRlbmVyRmlsdHJvc05vZG9zKHRoaXMuZmlsZXMsIHRoaXMuZmlsdGVyVmFsdWUpO1xyXG4gICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgIH0sIDEwMDApO1xyXG4gIH1cclxuXHJcbiAgb2J0ZW5lckZpbHRyb3NOb2Rvcyhub2RlczogVHJlZU5vZGVbXSwgZmlsdGVyVmFsdWU6IHN0cmluZyk6IFRyZWVOb2RlW10ge1xyXG5cclxuICAgIGNvbnN0IGZpbHRlcnMgPSB0aGlzLmZpbHRyb0F2YW56YWRvKGZpbHRlclZhbHVlKTtcclxuXHJcbiAgICBjb25zdCBmaWx0ZXJlZE5vZGVzOiBUcmVlTm9kZVtdID0gW107XHJcblxyXG4gICAgbm9kZXMuZm9yRWFjaChub2RlID0+IHtcclxuXHJcbiAgICAgIC8vIFZlcmlmaWNhIHNpIGVsIG5vZG8gYWN0dWFsIG8gYWxndW5vIGRlIHN1cyBoaWpvcyBjdW1wbGUgY29uIGVsIGZpbHRyb1xyXG4gICAgICBjb25zdCBjaGlsZHJlbiA9IG5vZGUuY2hpbGRyZW4gPyB0aGlzLm9idGVuZXJGaWx0cm9zTm9kb3Mobm9kZS5jaGlsZHJlbiwgZmlsdGVyVmFsdWUpIDogW107XHJcblxyXG4gICAgICBjb25zdCBub2RlTWF0Y2hlcyA9IGZpbHRlcnMuc29tZShmaWx0ZXIgPT4gbm9kZS5sYWJlbC5pbmNsdWRlcyhmaWx0ZXIpKTtcclxuXHJcbiAgICAgIGlmIChub2RlTWF0Y2hlcyB8fCBjaGlsZHJlbi5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgZmlsdGVyZWROb2Rlcy5wdXNoKHsgLi4ubm9kZSwgY2hpbGRyZW4gfSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBmaWx0ZXJlZE5vZGVzO1xyXG4gIH1cclxuXHJcbiAgZmlsdHJvQXZhbnphZG8oc2VhcmNoOiBzdHJpbmcpOiBzdHJpbmdbXSB7XHJcblxyXG4gICAgaWYgKHNlYXJjaC5pbmNsdWRlcygnKycpKSB7XHJcbiAgICAgIGxldCBhdXggPSBzZWFyY2g7XHJcblxyXG4gICAgICBpZiAoYXV4LnN0YXJ0c1dpdGgoJysnKSkge1xyXG4gICAgICAgIGF1eCA9IGF1eC5zdWJzdHJpbmcoMSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGF1eCA9IGF1eC5yZXBsYWNlKC9cXCsvZywgJzonKTtcclxuICAgICAgY29uc3QgaXRlbXMgPSBhdXgudHJpbSgpLnNwbGl0KCc6Jyk7XHJcbiAgICAgIHJldHVybiBpdGVtcztcclxuXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gW3NlYXJjaF07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBmaWx0cmFyRW50ZXIoZXZlbnQpIHtcclxuICAgIGlmIChldmVudC5rZXkgPT09ICdFbnRlcicpIHtcclxuICAgICAgdGhpcy5hcGxpY2FyRmlsdHJvKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZWxlY2Npb25hckFyY2hpdm8oZXZlbnQpIHtcclxuICAgIHRoaXMuYXJjaGl2b1NlbGVjY2lvbmFkbyA9IGV2ZW50Lm5vZGU7XHJcbiAgICB0aGlzLm1vc3RyYXJFZGl0b3IgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIGRlc2VsZWNjaW9uYXJBcmNoaXZvKCRldmVudCkge1xyXG4gICAgdGhpcy5kYXRhU2VsZWN0ZWQgPSBudWxsO1xyXG4gIH1cclxuXHJcblxyXG4gIGFzeW5jIGNhcmdhck51ZXZvKGV2ZW50LCBmdWJhdXRvKSB7XHJcblxyXG4gICAgdGhpcy5pc1Zpc3VhbGl6YXJDcmVhckNhcGVydGEgPSBmYWxzZTtcclxuICAgIHRoaXMuYXJjaGl2b1NlbGVjY2lvbmFkb0FuZXhvID0gZXZlbnQuZmlsZXNbMF07XHJcblxyXG4gICAgaWYgKCF0aGlzLmlzRm9ybWF0b1ZhbGlkbyh0aGlzLmFyY2hpdm9TZWxlY2Npb25hZG9BbmV4by5uYW1lKSkge1xyXG4gICAgICB0aGlzLnRvYXN0U2VydmljZS5zaG93V2FybmluZyhcIlNlIGRlYmUgYWdyZWdhciB1biBhcmNoaXZvIFwiICsgQXJyYXkuZnJvbSh0aGlzLkZPUk1BVFNfVkFMSURPUykuam9pbignLCAnKSlcclxuICAgICAgZnViYXV0by5jbGVhcigpO1xyXG4gICAgICAvL3RoaXMudG9hc3RTZXJ2aWNlLnNob3dXYXJuaW5nKFwiU2UgZGViZSBhZ3JlZ2FyIHVuIGFyY2hpdm8gLmRvYywgLmRvY3gsIC54bHMsIC54bHN4ICwgLnhsc20sIC5qcnhtbCwgLm9kdCwgLmphc3BlciwgLnBncCwgLmFzYywgLmNlciwgLnByb3BlcnRpZXMgbyAuaHRtbFwiKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIC8vQ2FyZ2FyIEFyY2hpdm8gVGVtcG9yYWxcclxuICAgIGxldCByZXN1bHRhZG8gPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLnBsYW50aWxsYXNTZXJ2aWNlLmNhcmdhckRvY3VtZW50b1RlbXBvcmFsKHRoaXMuYXJjaGl2b1NlbGVjY2lvbmFkb0FuZXhvKSk7XHJcblxyXG4gICAgZnViYXV0by5jbGVhcigpO1xyXG5cclxuICAgIGlmIChyZXN1bHRhZG8/LnZhbGlkYWNpb24pIHtcclxuICAgICAgdGhpcy50b2FzdFNlcnZpY2Uuc2hvd1N1Y2Nlc3MocmVzdWx0YWRvPy52YWxpZGFjaW9uKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBpbmZvcm1hY2lvbkFyY2hpdm8gPSByZXN1bHRhZG8/LmluZm9ybWFjaW9uQXJjaGl2byA/IHJlc3VsdGFkbz8uaW5mb3JtYWNpb25BcmNoaXZvIDogbnVsbDtcclxuXHJcbiAgICAvL09idGVuZXIgUnV0YXNcclxuICAgIGxldCBydXRhQ29tcGxlbWVudG8gPSB0aGlzLmFyY2hpdm9TZWxlY2Npb25hZG8uZGF0YTtcclxuXHJcbiAgICAvL2xldCBvYmpldG8gPSAoYXdhaXQgdGhpcy5jYXJnYXJBcmNoaXZvU2VydmljZXMuZ2V0UHJvcGllZGFkKHsgcHJvcGllZGFkOiBcInJ1dGFfcGxhbnRpbGxhc1wiLCBhcGxpY2FjaW9uOiAxIH0pLnRvUHJvbWlzZSgpKTtcclxuXHJcbiAgICBpZiAoIXRoaXMuYXJjaGl2b1NlbGVjY2lvbmFkbz8ucGFyZW50KSB7XHJcbiAgICAgIHJ1dGFDb21wbGVtZW50byA9ICcnO1xyXG4gICAgfVxyXG5cclxuICAgIC8vVmVyaWZpY2Egc2kgZWwgZG9jdW1lbnRvIHlhIGV4aXN0ZSBcclxuICAgIGxldCBkYXRhID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5wbGFudGlsbGFzU2VydmljZS5leGlzdGVEb2N1bWVudG8odGhpcy5ydXRhUHJpbmNpcGFsLCBydXRhQ29tcGxlbWVudG8sIGluZm9ybWFjaW9uQXJjaGl2bykpO1xyXG5cclxuICAgIGlmIChkYXRhPy52YWxpZGFjaW9uRG9jdW1lbnRvKSB7XHJcbiAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLnNob3dXYXJuaW5nKGRhdGE/LnZhbGlkYWNpb25Eb2N1bWVudG8pO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgLy9HdWFyZGEgZWwgZG9jdW1lbnRvXHJcbiAgICBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLnBsYW50aWxsYXNTZXJ2aWNlLmNhcmdhckRvY3VtZW50byh0aGlzLnJ1dGFQcmluY2lwYWwsIHJ1dGFDb21wbGVtZW50bywgaW5mb3JtYWNpb25BcmNoaXZvKSk7XHJcblxyXG4gICAgdGhpcy5uZ09uSW5pdCgpO1xyXG5cclxuICB9XHJcblxyXG4gIGFzeW5jIGRlc2NhcmdhckFuZXhvKCkge1xyXG5cclxuICAgIC8vUnV0YSBhcmNoaXZvICBcclxuICAgIGxldCBydXRhQ29tcGxlbWVudG8gPSB0aGlzLmFyY2hpdm9TZWxlY2Npb25hZG8uZGF0YTtcclxuXHJcbiAgICBpZiAoIXRoaXMuYXJjaGl2b1NlbGVjY2lvbmFkbz8ucGFyZW50KSB7XHJcbiAgICAgIHJ1dGFDb21wbGVtZW50byA9ICcnO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY2FyZ2FyQXJjaGl2b1NlcnZpY2VzLmRlc2NhcmdhckFyY2hpdm8odGhpcy5lbmNyaXB0YWRvQmFzaWNvLmVuY3JpcHRhcih0aGlzLnJ1dGFQcmluY2lwYWwgKyBydXRhQ29tcGxlbWVudG8pLCB1bmRlZmluZWQsIHVuZGVmaW5lZCkuc3Vic2NyaWJlKGJsb2IgPT4ge1xyXG4gICAgICBjb25zdCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xyXG4gICAgICBjb25zdCBvYmplY3RVcmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xyXG4gICAgICBhLmhyZWYgPSBvYmplY3RVcmw7XHJcbiAgICAgIGEuZG93bmxvYWQgPSB0aGlzLmFyY2hpdm9TZWxlY2Npb25hZG8/LmxhYmVsO1xyXG4gICAgICBhLmNsaWNrKCk7XHJcbiAgICAgIFVSTC5yZXZva2VPYmplY3RVUkwob2JqZWN0VXJsKTtcclxuICAgIH0pO1xyXG5cclxuICB9XHJcblxyXG4gIGVsaW1pbmFyQXJjaGl2bygpIHtcclxuICAgIHRoaXMuY29uZmlybWF0aW9uU2VydmljZS5jb25maXJtKHtcclxuICAgICAgdGFyZ2V0OiBldmVudC50YXJnZXQsXHJcbiAgICAgIGtleTogJ2VsaW1pbmFyQXJjaGl2bycsXHJcbiAgICAgIG1lc3NhZ2U6ICfCv0Rlc2VhIGVsaW1pbmFyIGVsIHJlZ2lzdHJvPycsXHJcbiAgICAgIGFjY2VwdExhYmVsOiAnU2knLFxyXG4gICAgICBpY29uOiAnY29uZmlybWFyJyxcclxuICAgICAgYWNjZXB0OiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXRFbGltaW5hckFyY2hpdm8oKTtcclxuICAgICAgfSxcclxuICAgICAgcmVqZWN0OiAoKSA9PiB7IH0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGFzeW5jIHNldEVsaW1pbmFyQXJjaGl2bygpIHtcclxuXHJcbiAgICAvL1J1dGEgYXJjaGl2byAgXHJcbiAgICBsZXQgcnV0YUNvbXBsZW1lbnRvID0gdGhpcy5hcmNoaXZvU2VsZWNjaW9uYWRvLmRhdGE7XHJcblxyXG4gICAgaWYgKCF0aGlzLmFyY2hpdm9TZWxlY2Npb25hZG8/LnBhcmVudCkge1xyXG4gICAgICBydXRhQ29tcGxlbWVudG8gPSAnJztcclxuICAgIH1cclxuXHJcbiAgICBsZXQgcHJvcGllZGFkID0gJ3J1dGFfcGxhbnRpbGxhcydcclxuICAgIGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuY2FyZ2FyQXJjaGl2b1NlcnZpY2VzLmVsaW1pbmFyQXJjaGl2byh0aGlzLmVuY3JpcHRhZG9CYXNpY28uZW5jcmlwdGFyKHJ1dGFDb21wbGVtZW50byksIHByb3BpZWRhZCwgJzEnKSk7XHJcbiAgICB0aGlzLnRvYXN0U2VydmljZS5zaG93U3VjY2Vzcyh0aGlzLmdlbmVyYWxQaXBlLk1FTlNBSkVfRUxJTUlOQVIpO1xyXG4gICAgdGhpcy5hcmNoaXZvU2VsZWNjaW9uYWRvID0gbnVsbDtcclxuICAgIHRoaXMuZmlsdGVyVmFsdWUgPSBudWxsO1xyXG4gICAgdGhpcy5uZ09uSW5pdCgpO1xyXG4gIH1cclxuXHJcbiAgaXNGb3JtYXRvVmFsaWRvKG5vbWJyZUFyY2hpdm86IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgLy8gVmVyaWZpY2Egc2kgZWwgYXJjaGl2byB0ZXJtaW5hIGNvbiBhbGd1bmEgZGUgbGFzIGV4dGVuc2lvbmVzIHbDoWxpZGFzXHJcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLkZPUk1BVFNfVkFMSURPUykuc29tZShleHQgPT4gbm9tYnJlQXJjaGl2by5lbmRzV2l0aChleHQpKTtcclxuICB9XHJcblxyXG4gIGNyZWFyQ2FycGV0YSgpIHtcclxuICAgIHRoaXMuaXNWaXN1YWxpemFyQ3JlYXJDYXBlcnRhID0gdHJ1ZTtcclxuICAgIHRoaXMubm9tTnVldmFDYXJwZXRhID0gbnVsbDtcclxuICB9XHJcblxyXG4gIGFzeW5jIGd1YXJkYXJDYXJwZXRhKCkge1xyXG5cclxuICAgIGlmICh0aGlzLm1pRm9ybXVsYXJpby52YWxpZCkge1xyXG5cclxuICAgICAgbGV0IHJ1dGFDb21wbGVtZW50byA9IHRoaXMuYXJjaGl2b1NlbGVjY2lvbmFkby5kYXRhO1xyXG5cclxuICAgICAgaWYgKCF0aGlzLmFyY2hpdm9TZWxlY2Npb25hZG8/LnBhcmVudCkge1xyXG4gICAgICAgIHJ1dGFDb21wbGVtZW50byA9ICcnO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLnBsYW50aWxsYXNTZXJ2aWNlLmNyZWFyQ2FycGV0YSh0aGlzLnJ1dGFQcmluY2lwYWwsIHJ1dGFDb21wbGVtZW50bywgdGhpcy5ub21OdWV2YUNhcnBldGEpKTtcclxuICAgICAgdGhpcy50b2FzdFNlcnZpY2Uuc2hvd1N1Y2Nlc3MoJ0xhIGNhcnBldGEgc2UgaGEgY3JlYWRvIGNvcnJlY3RhbWVudGUnKTtcclxuICAgICAgdGhpcy5uZ09uSW5pdCgpO1xyXG5cclxuICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICB0aGlzLnRvYXN0U2VydmljZS5zaG93RXJyb3IoJ0ZhbHRhbiBjYW1wb3Mgb2JsaWdhdG9yaW9zJyk7XHJcbiAgICAgIE9iamVjdC5rZXlzKHRoaXMubWlGb3JtdWxhcmlvLmNvbnRyb2xzKS5mb3JFYWNoKChrZXkpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5taUZvcm11bGFyaW8uY29udHJvbHNba2V5XS5pbnZhbGlkKSB7XHJcbiAgICAgICAgICB0aGlzLm1pRm9ybXVsYXJpby5jb250cm9sc1trZXldLm1hcmtBc0RpcnR5KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBlbGltaW5hckNhcnBldGEoKSB7XHJcblxyXG4gICAgdGhpcy5pc1Zpc3VhbGl6YXJDcmVhckNhcGVydGEgPSBmYWxzZTtcclxuXHJcbiAgICB0aGlzLmNvbmZpcm1hdGlvblNlcnZpY2UuY29uZmlybSh7XHJcbiAgICAgIHRhcmdldDogZXZlbnQudGFyZ2V0LFxyXG4gICAgICBrZXk6ICdlbGltaW5hckNhcnBldGEnLFxyXG4gICAgICBtZXNzYWdlOiAnwr9EZXNlYSBlbGltaW5hciBlbCByZWdpc3Rybz8nLFxyXG4gICAgICBhY2NlcHRMYWJlbDogJ1NpJyxcclxuICAgICAgaWNvbjogJ2NvbmZpcm1hcicsXHJcbiAgICAgIGFjY2VwdDogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0RWxpbWluYXJDYXJwZXRhKCk7XHJcbiAgICAgIH0sXHJcbiAgICAgIHJlamVjdDogKCkgPT4geyB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBzZXRFbGltaW5hckNhcnBldGEoKSB7XHJcblxyXG4gICAgbGV0IHJ1dGFDb21wbGVtZW50byA9IHRoaXMuYXJjaGl2b1NlbGVjY2lvbmFkby5kYXRhO1xyXG5cclxuICAgIGlmICghdGhpcy5hcmNoaXZvU2VsZWNjaW9uYWRvPy5wYXJlbnQpIHtcclxuICAgICAgcnV0YUNvbXBsZW1lbnRvID0gJyc7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5wbGFudGlsbGFzU2VydmljZS5lbGltaW5hckNhcnBldGEodGhpcy5ydXRhUHJpbmNpcGFsLCBydXRhQ29tcGxlbWVudG8pLnN1YnNjcmliZShydGEgPT4ge1xyXG4gICAgICB0aGlzLnRvYXN0U2VydmljZS5zaG93U3VjY2VzcygnTGEgY2FycGV0YSBoYSBzaWRvIGVsaW1pbmFkYSBjb3JyZWN0YW1lbnRlJyk7XHJcbiAgICAgIHRoaXMuYXJjaGl2b1NlbGVjY2lvbmFkbyA9IG51bGw7XHJcbiAgICAgIHRoaXMuZmlsdGVyVmFsdWUgPSBudWxsO1xyXG4gICAgICB0aGlzLm5nT25Jbml0KCk7XHJcbiAgICB9KVxyXG5cclxuICB9XHJcblxyXG4gIGFzeW5jIGNvbnZlcnRpckFyY2hpdm9zKCkge1xyXG5cclxuICAgIHRoaXMuaXNWaXN1YWxpemFyQ3JlYXJDYXBlcnRhID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzTW9zdHJhclBvcHVwQ29udmVydGlyID0gdHJ1ZTtcclxuICAgIC8vY29uc3QgZmlsdGVyZWROb2RlcyA9IHRoaXMuZ2V0RmlsdGVyZWROb2RlcygpO1xyXG4gICAgY29uc3QgdmFsb3JGaWx0cm8gPSB0aGlzLmZpbHRlclZhbHVlO1xyXG5cclxuICAgIGNvbnN0IHNsZWVwID0gKG0pID0+IG5ldyBQcm9taXNlKChyKSA9PiBzZXRUaW1lb3V0KHIsIG0pKTtcclxuICAgIGF3YWl0IHNsZWVwKDUwKTtcclxuXHJcbiAgICB0aGlzLnBvcHVwQ29udmVydGlyUGxhbnRpbGxhc0NvbXBvbmVudC5idXNjYXIodGhpcy5ydXRhUHJpbmNpcGFsLCB2YWxvckZpbHRybyk7XHJcblxyXG4gIH1cclxuXHJcbiAgcmVncmVzYXJQb3B1cENvbnZlcnRpcigkZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5pc01vc3RyYXJQb3B1cENvbnZlcnRpciA9IGZhbHNlO1xyXG4gICAgdGhpcy5uZ09uSW5pdCgpO1xyXG4gIH1cclxuXHJcbiAgaXNIdG1sKCkge1xyXG4gICAgdGhpcy5odG1sID0gZmFsc2U7XHJcblxyXG4gICAgaWYgKHRoaXMuYXJjaGl2b1NlbGVjY2lvbmFkbyAhPSBudWxsICYmIHRoaXMuYXJjaGl2b1NlbGVjY2lvbmFkby5sYWJlbCAhPSBudWxsICYmIHRoaXMuYXJjaGl2b1NlbGVjY2lvbmFkby5sYWJlbC5pbmNsdWRlcygnLmh0bWwnKSlcclxuICAgICAgdGhpcy5odG1sID0gdHJ1ZTtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5odG1sO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgZWRpdGFyQWN0aW9uKCkge1xyXG5cclxuICAgIGxldCBkYXRhID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5wbGFudGlsbGFzU2VydmljZS5jb25zdWx0YXJBcmNoaXZvSHRtbCh0aGlzLnJ1dGFQcmluY2lwYWwsIHRoaXMuYXJjaGl2b1NlbGVjY2lvbmFkby5kYXRhKSk7XHJcblxyXG4gICAgdGhpcy5tb2RpZmljYXJIVE1MID0gZGF0YTtcclxuXHJcbiAgICB0aGlzLm1vc3RyYXJFZGl0b3IgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgZ3VhcmRhckh0bWwoKSB7XHJcblxyXG4gICAgYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5wbGFudGlsbGFzU2VydmljZS5ndWFyZGFyQXJjaGl2b0h0bWwodGhpcy5ydXRhUHJpbmNpcGFsLCB0aGlzLmFyY2hpdm9TZWxlY2Npb25hZG8uZGF0YSwgdGhpcy5tb2RpZmljYXJIVE1MKSk7XHJcblxyXG4gICAgdGhpcy50b2FzdFNlcnZpY2Uuc2hvd1N1Y2Nlc3MoJ0VsIGFyY2hpdm8gaGEgc2lkbyBtb2RpZmljYWRvIGNvcnJlY3RhbWVudGUnKTtcclxuXHJcbiAgICB0aGlzLm5nT25Jbml0KCk7XHJcblxyXG4gIH1cclxuXHJcbiAgcmVncmVzYXJQcmluY2lwYWwoKSB7XHJcbiAgICB0aGlzLm1vc3RyYXJFZGl0b3IgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyB2ZXJpZmljYXJDb250cm9sKGNvbnRyb2wpIHtcclxuICAgIHJldHVybiB0aGlzLmNvbnRyb2xGdW5jaW9uU2VydmljZS5nZXRDb250cm9sRnVuY2lvbmFsaWRhZChjb250cm9sKTtcclxuICB9XHJcblxyXG59XHJcbiIsIjxwLWNvbmZpcm1Qb3B1cCBrZXk9XCJlbGltaW5hckNhcnBldGFcIj48L3AtY29uZmlybVBvcHVwPlxyXG48cC1jb25maXJtUG9wdXAga2V5PVwiZWxpbWluYXJBcmNoaXZvXCI+PC9wLWNvbmZpcm1Qb3B1cD5cclxuXHJcbjxoMSBjbGFzcz1cIm1iLTRcIj57eydjYXJndWUnIHwgdHJhbnNsYXRlfX0ge3sncGxhbnRpbGxhcycgfCB0cmFuc2xhdGV9fTwvaDE+XHJcblxyXG48ZGl2IGNsYXNzPVwicC1mbHVpZCBwLWZvcm1ncmlkIGdyaWRcIj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiZmllbGQgY29sLTEyIG1kOmNvbC02IGxnOmNvbC01IGNhcmQgcC01XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgcElucHV0VGV4dCBbKG5nTW9kZWwpXT1cImZpbHRlclZhbHVlXCIgcGxhY2Vob2xkZXI9XCJ7eydmaWx0cm8nIHwgdHJhbnNsYXRlfX1cIlxyXG4gICAgICAgICAgICAgICAgKGtleWRvd24pPVwiZmlsdHJhckVudGVyKCRldmVudClcIiAvPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBwQnV0dG9uIHBSaXBwbGUgaWNvbj1cInBpIHBpLXNlYXJjaCB0ZXh0LXhsXCIgKGNsaWNrKT1cImFwbGljYXJGaWx0cm8oKVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInAtZWxlbWVudCBwLXJpcHBsZSBwLWJ1dHRvbi1yb3VuZGVkICBwLWJ1dHRvbi1zZWNvbmRhcnkgcC1idXR0b24gcC1jb21wb25lbnQgcC1idXR0b24taWNvbi1vbmx5IGFic29sdXRlIHJpZ2h0LTAgYm9yZGVyLW5vbmUgYmctd2hpdGUtYWxwaGEtMTBcIlxyXG4gICAgICAgICAgICAgICAgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCIgcFRvb2x0aXA9XCJFZGl0YXIgSFRNTFwiPjwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8cC10cmVlICN0cmVlIHNjcm9sbEhlaWdodD1cIjY3MHB4XCIgW3ZhbHVlXT1cImZpbHRlcmVkRmlsZXNcIiBzZWxlY3Rpb25Nb2RlPVwic2luZ2xlXCIgWyhzZWxlY3Rpb24pXT1cImRhdGFTZWxlY3RlZFwiXHJcbiAgICAgICAgICAgIFtmaWx0ZXJdPVwiZmFsc2VcIiBbZmlsdGVyUGxhY2Vob2xkZXJdPVwiJ2ZpbHRybycgfCB0cmFuc2xhdGVcIiBmaWx0ZXJNb2RlPVwic3RyaWN0XCJcclxuICAgICAgICAgICAgKG9uTm9kZVNlbGVjdCk9XCJzZWxlY2Npb25hckFyY2hpdm8oJGV2ZW50KVwiIFtsb2FkaW5nXT1cImxvYWRpbmdcIlxyXG4gICAgICAgICAgICAob25Ob2RlVW5zZWxlY3QpPVwiZGVzZWxlY2Npb25hckFyY2hpdm8oJGV2ZW50KVwiPjwvcC10cmVlPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLSBPUENJTkVTIERJUkVDVE9SSU9TIC0gQVJDSElWT1MgLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZmllbGQgY29sLTEyIG1kOmNvbC02IGxnOmNvbC03IHAtMCBwbC0zXCI+XHJcblxyXG4gICAgICAgIEBpZighdGhpcy5sb2FkaW5nKXtcclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZCBwLTNcIj5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gQ0FSUEVUQSAtLT5cclxuICAgICAgICAgICAgQGlmKGFyY2hpdm9TZWxlY2Npb25hZG8uZXhwYW5kZWQpe1xyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgIDxoMSBjbGFzcz1cInRleHQteGwgbXQtMiBtYi00IG1yLTNcIj5DYXJwZXRhOiA8L2gxPlxyXG4gICAgICAgICAgICAgICAgPGg1IGNsYXNzPVwidGV4dC1zbSBtdC0yIG1iLTRcIj4ge3thcmNoaXZvU2VsZWNjaW9uYWRvLmxhYmVsfX0gPC9oNT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gQ29udmVydGlyIC0tPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgcEJ1dHRvbiBwUmlwcGxlIChjbGljayk9XCJjb252ZXJ0aXJBcmNoaXZvcygpXCJcclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInZlckNvbnZlcnRpciAmJiBjb250cm9sRnVuY2lvblNlcnZpY2UuZ2V0Q29udHJvbEZ1bmNpb25hbGlkYWQoJ3NlZ3VwbGFjb3I6Z3VhcmRhcicpXCJcclxuICAgICAgICAgICAgICAgICAgICB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIiBsYWJlbD1cInt7J2NvbnZlcnRpcicgfCB0cmFuc2xhdGV9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwLWJ1dHRvbi1vdXRsaW5lZCBib3Rvbi1hY2Npb24tcHJpbmNpcGFsIHRleHQtZ3JheS02MDAgY29sb3ItNTAwXCJcclxuICAgICAgICAgICAgICAgICAgICBwVG9vbHRpcD1cIkNvbnZlcnRpciBhcmNoaXZvXCIgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbmVkb3ItaWNvbm8tYWNjaW9uZXMtcHJpbmNpcGFsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwicGkgcGktYXJyb3ctcmlnaHQtYXJyb3ctbGVmdCBjb2xvci01MDBcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tTnVldmEgQ2FycGV0YS0tPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImNvbnRyb2xGdW5jaW9uU2VydmljZS5nZXRDb250cm9sRnVuY2lvbmFsaWRhZCgnc2VndXBsYWNvcjpndWFyZGFyJylcIiBwQnV0dG9uIHBSaXBwbGVcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInAtYnV0dG9uLW91dGxpbmVkICBib3Rvbi1hY2Npb24tcHJpbmNpcGFsIHRleHQtZ3JheS02MDAgY29sb3ItNTAwXCJcclxuICAgICAgICAgICAgICAgICAgICBsYWJlbD1cInt7J2xpbmtfbnVldm8nIHwgdHJhbnNsYXRlfX1cIiAoY2xpY2spPVwiY3JlYXJDYXJwZXRhKClcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVuZWRvci1pY29uby1hY2Npb25lcy1wcmluY2lwYWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJnbHlwaGljb25zIGdseXBoaWNvbnMtZmxvcHB5LXNhdmUgY29sb3ItNTAwXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLUVsaW1pbmFyLS0+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiY29udHJvbEZ1bmNpb25TZXJ2aWNlLmdldENvbnRyb2xGdW5jaW9uYWxpZGFkKCdzZWd1cGxhY29yOmd1YXJkYXInKVwiIHBCdXR0b24gcFJpcHBsZVxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicC1idXR0b24tb3V0bGluZWQgIGJvdG9uLWFjY2lvbi1wcmluY2lwYWwgdGV4dC1ncmF5LTYwMCBjb2xvci01MDBcIlxyXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsPVwie3snbGlua19lbGltaW5hcicgfCB0cmFuc2xhdGV9fVwiIChjbGljayk9XCJlbGltaW5hckNhcnBldGEoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW5lZG9yLWljb25vLWFjY2lvbmVzLXByaW5jaXBhbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImdseXBoaWNvbnMgZ2x5cGhpY29ucy1iaW4gY29sb3ItNTAwXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSBDYXJnYXIgQXJjaGl2byAtLT5cclxuICAgICAgICAgICAgICAgIDxkaXYgW25nQ2xhc3NdPVwieyAnbWluLXdpZHRoLTEwMCc6ICF2ZXJDb252ZXJ0aXIsICdtaW4td2lkdGgtMjAnOiB2ZXJDb252ZXJ0aXIgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwLWZpbGVVcGxvYWQgI2Z1YmF1dG8gbW9kZT1cImJhc2ljXCIgW2F1dG9dPVwidHJ1ZVwiIFtjdXN0b21VcGxvYWRdPVwidHJ1ZVwiIGNob29zZUljb249XCJwaSBwaS1wYXBlcmNsaXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbnRyb2xGdW5jaW9uU2VydmljZS5nZXRDb250cm9sRnVuY2lvbmFsaWRhZCgnc2VndXBsYWNvcjpndWFyZGFyJylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjaG9vc2VMYWJlbD1cInt7J2xpbmtfc3ViaXJhcmNoaXZvcycgfCB0cmFuc2xhdGV9fVwiIChvblNlbGVjdCk9XCJjYXJnYXJOdWV2bygkZXZlbnQsIGZ1YmF1dG8pXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW5lZG9yLWljb25vLWFjY2lvbmVzLXByaW5jaXBhbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJwaSBwaS10cmFzaFwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9wLWZpbGVVcGxvYWQ+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIDwhLS0gQVJDSElWTy0tPlxyXG4gICAgICAgICAgICBAaWYoIWFyY2hpdm9TZWxlY2Npb25hZG8uZXhwYW5kZWQpe1xyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8aDEgY2xhc3M9XCJ0ZXh0LXhsIG10LTIgbWItNCBtci0zXCI+QXJjaGl2bzogPC9oMT5cclxuICAgICAgICAgICAgICAgIDxoNSBjbGFzcz1cInRleHQtc20gbXQtMiBtYi00XCI+IHt7YXJjaGl2b1NlbGVjY2lvbmFkby5sYWJlbH19IDwvaDU+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgQGlmKGFyY2hpdm9TZWxlY2Npb25hZG8ubGFiZWwuaW5jbHVkZXMoJy5odG1sJykpe1xyXG5cclxuICAgICAgICAgICAgICAgIDwhLS1FRElUQVIgSFRNTC0tPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgcEJ1dHRvbiBwUmlwcGxlIGljb249XCJwaSBwaS1jb2RlIHRleHQteGwgY29sb3ItNTAwXCIgKGNsaWNrKT1cImVkaXRhckFjdGlvbigpXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInAtYnV0dG9uLW91dGxpbmVkICBib3Rvbi1hY2Npb24tcHJpbmNpcGFsIHRleHQtZ3JheS02MDBcIiBsYWJlbD1cIkVkaXRhciBIVE1MXCI+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tIERFU0NBUkdBUi0tPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBwQnV0dG9uIHBSaXBwbGUgY2xhc3M9XCJwLWJ1dHRvbi1vdXRsaW5lZCAgYm90b24tYWNjaW9uLXByaW5jaXBhbCB0ZXh0LWdyYXktNjAwIGNvbG9yLTUwMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw9XCJ7eydsaW5rX2Rlc2NhcmdhcicgfCB0cmFuc2xhdGV9fVwiIChjbGljayk9XCJkZXNjYXJnYXJBbmV4bygpXCJcclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbnRyb2xGdW5jaW9uU2VydmljZS5nZXRDb250cm9sRnVuY2lvbmFsaWRhZCgnc2VndXBsYWNvcjpkZXNjYXJnYXInKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW5lZG9yLWljb25vLWFjY2lvbmVzLXByaW5jaXBhbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImdseXBoaWNvbnMgZ2x5cGhpY29ucy1kb3dubG9hZCBjb2xvci01MDBcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tRUxJTUlOQVItLT5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gcEJ1dHRvbiBwUmlwcGxlIGNsYXNzPVwicC1idXR0b24tb3V0bGluZWQgIGJvdG9uLWFjY2lvbi1wcmluY2lwYWwgdGV4dC1ncmF5LTYwMCBjb2xvci01MDBcIlxyXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsPVwie3snbGlua19lbGltaW5hcicgfCB0cmFuc2xhdGV9fVwiIChjbGljayk9XCJlbGltaW5hckFyY2hpdm8oKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb250cm9sRnVuY2lvblNlcnZpY2UuZ2V0Q29udHJvbEZ1bmNpb25hbGlkYWQoJ3NlZ3VwbGFjb3I6Z3VhcmRhcicpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbmVkb3ItaWNvbm8tYWNjaW9uZXMtcHJpbmNpcGFsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZ2x5cGhpY29ucyBnbHlwaGljb25zLWJpbiBjb2xvci01MDBcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIEBpZihhcmNoaXZvU2VsZWNjaW9uYWRvLmV4cGFuZGVkICYmIGlzVmlzdWFsaXphckNyZWFyQ2FwZXJ0YSl7XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmRcIj5cclxuXHJcbiAgICAgICAgICAgIDxoNSBjbGFzcz1cIm10LTJcIj48aSBjbGFzcz1cImdseXBoaWNvbnMgZ2x5cGhpY29ucy1ub3RlXCI+PC9pPiBOdWV2YSBjYXJwZXRhPC9oNT5cclxuXHJcbiAgICAgICAgICAgIDxmb3JtICNtaUZvcm11bGFyaW89XCJuZ0Zvcm1cIj5cclxuICAgICAgICAgICAgICAgIDwhLS0gY2FtcG9zIC0tPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gTm9tYnJlIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LWZ1bGwgcC0wIG1iLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLWZsb2F0LWxhYmVsIG1yLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBwSW5wdXRUZXh0IGlkPVwiaWRfbnVtZXJvX2RlX2V2ZW50b1wiIFsobmdNb2RlbCldPVwibm9tTnVldmFDYXJwZXRhXCIgcmVxdWlyZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwibm9tYnJlQ2FycGV0YVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImlkX251bWVyb19kZV9ldmVudG9cIj57eydub21icmUnIHwgdHJhbnNsYXRlfX0gKjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tR3VhcmRhciBDYXJwZXRhLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gcEJ1dHRvbiBwUmlwcGxlIGNsYXNzPVwibXItMiBwLWJ1dHRvbiBiYWNrZ3JvdW5kLTEwMCBjb2xvci01MDBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj1cImdseXBoaWNvbnMgZ2x5cGhpY29ucy1mbG9wcHktc2F2ZVwiIFtsYWJlbF09XCIoJ2xpbmtfZ3VhcmRhcicgfCB0cmFuc2xhdGUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJndWFyZGFyQ2FycGV0YSgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZm9ybT5cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIDwhLS0gRURJVE9SIERFIEhUTUwgLS0+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cImlzSHRtbCgpICYmIG1vc3RyYXJFZGl0b3JcIj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktY29udGVudC1lbmQgYWxpZ24taXRlbXMtY2VudGVyIG1iLTNcIj5cclxuICAgICAgICAgICAgICAgIDwhLS0gQm90w7NuIGd1YXJkYXIgSFRNTCAtLT5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gcEJ1dHRvbiBwUmlwcGxlIGxhYmVsPVwie3snbGlua19ndWFyZGFyJyB8IHRyYW5zbGF0ZSB9fVwiIChjbGljayk9XCJndWFyZGFySHRtbCgpXCJcclxuICAgICAgICAgICAgICAgICAgICBpY29uPVwiZ2x5cGhpY29ucyBnbHlwaGljb25zLWZsb3BweS1zYXZlXCIgY2xhc3M9XCJwLWJ1dHRvbi1zZWNvbmRhcnlcIlxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29udHJvbEZ1bmNpb25TZXJ2aWNlLmdldENvbnRyb2xGdW5jaW9uYWxpZGFkKCdzZWd1cGxhY29yOmd1YXJkYXInKVwiPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxwLWVkaXRvciBpZD1cImVkaXRvclwiIFtzdHlsZV09XCJ7IGhlaWdodDogJzUwMHB4JyB9XCIgcmVxdWlyZWQgWyhuZ01vZGVsKV09XCJtb2RpZmljYXJIVE1MXCJcclxuICAgICAgICAgICAgICAgIG5hbWU9XCJodG1sUHVibGljYWNpb25cIj48L3AtZWRpdG9yPlxyXG5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbkBpZihpc01vc3RyYXJQb3B1cENvbnZlcnRpcil7XHJcbjxhcHAtcG9wdXAtY29udmVydGlyLXBsYW50aWxsYXMgKHJlZ3Jlc2FyKT1cInJlZ3Jlc2FyUG9wdXBDb252ZXJ0aXIoJGV2ZW50KVwiPjwvYXBwLXBvcHVwLWNvbnZlcnRpci1wbGFudGlsbGFzPlxyXG59Il19