ng-easycommerce-v18 0.6.21 → 0.6.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,3 +1,14 @@
1
+ # Version 0.6.23
2
+ - traducción al español para "form-rate-limit"
3
+ - Formulario de contacto: ante un `429` se muestra el mensaje traducible `form-rate-limit` en lugar del error genérico `inquiry-error`.
4
+ - Newsletter: se distingue el `429` como límite de solicitudes y se muestra `form-rate-limit`; el `400` sigue resolviéndose como `newsletter_email_already_registered`.
5
+ - SEO de colección: `CollectionEcComponent` separa el breadcrumb de categorías del breadcrumb general para que el title y la description prioricen la categoría real y no queden contaminados por filtros o búsquedas.
6
+ - Se agrega la traducción de `form-rate-limit` para las variantes locales actualizadas del proyecto.
7
+ # Version 0.6.22
8
+ - se corrigio el texto a mostrar en error de registro
9
+ - Registro: se distingue el `409` devuelto por `/shop-api/{channel}/register` cuando el email ya existe pero no tiene el canal habilitado.
10
+ - Registro: se agrega la clave traducible `email-register-channel-inactive` para mostrar el mensaje correcto por idioma.
11
+ - Registro: se actualizan las traducciones base y la cobertura de tests del flujo de registro.
1
12
  # Version 0.6.21
2
13
  - se agregaron traducciones al breadcrumb, sobre los filtros de ordenar.
3
14
  # Version 0.6.20
@@ -97,6 +97,7 @@
97
97
  "fashion": "moda",
98
98
  "sorry": "Perdó! No vam poder trobar el producte que estàs buscant !!!",
99
99
  "sorry-details": "Comproveu si ha escrit alguna cosa incorrectament o intenti buscar amb altres paraules.",
100
+ "email-register-channel-inactive": "Aquest correu electrònic ja està registrat al nostre sistema. Per habilitar l'accés a aquest lloc, poseu-vos en contacte amb el nostre equip d'atenció al client.",
100
101
  "empty-cart": "La teva cistella està buit",
101
102
  "empty-cart-detail": "Afegeix una cosa a l'cistella",
102
103
  "image": "imatge",
@@ -290,6 +291,7 @@
290
291
  "no-stores": "Encara no hi ha punts de venda carregats",
291
292
  "inquiry-sent": "Seva consulta va ser enviada",
292
293
  "inquiry-error": "Hi va haver un error a l'realitzar la consulta. Torneu a intentar-ho més tard",
294
+ "form-rate-limit": "Hi ha massa sol·licituds. Espereu uns minuts i torneu-ho a intentar.",
293
295
  "newsletter_email_already_registered": "La direcció de correu electrònic ja està registrada.",
294
296
  "newsletter-thanks": "Gràcies per subscriure a les notícies",
295
297
  "notes": "Detalls addicionals d'enviament",
@@ -111,6 +111,7 @@
111
111
  "email-address-help2": "Invalid Email",
112
112
  "email-already-registered": "The email entered is already registered.",
113
113
  "email-register-error": "Registration error. Please try again later.",
114
+ "email-register-channel-inactive": "This email is already registered in our system. To enable access to this site, please contact our support team.",
114
115
  "empty-cart": "Your Cart is Empty",
115
116
  "empty-cart-detail": "Add something to make me happy :)",
116
117
  "empty_faqs": "No FAQs uploaded yet",
@@ -298,6 +299,7 @@
298
299
  "repeat-password": "Repeat password",
299
300
  "repeated-new-password": "Repeated new password",
300
301
  "result-for": "Results for",
302
+ "form-rate-limit": "Too many requests. Please wait a few minutes and try again.",
301
303
  "right-sidebar": "right sidebar",
302
304
  "rings-wrist-wear": "rings & wrist wear",
303
305
  "same-billing-address": "Same billing address",
@@ -115,6 +115,7 @@
115
115
  "email-address-help2": "Email inválido",
116
116
  "email-already-registered": "El email ingresado ya se encuentra registrado.",
117
117
  "email-register-error": "Error en el registro. Vuelva a intentarlo más tarde.",
118
+ "email-register-channel-inactive": "Este correo electrónico ya se encuentra registrado en nuestro sistema. Para habilitar tu acceso a este sitio, por favor comunicate con nuestro equipo de atención al cliente.",
118
119
  "empty-cart": "Tu carrito está vacio",
119
120
  "empty-cart-detail": "Agrega algo al carrito",
120
121
  "empty_faqs": "Aún no hay preguntas frecuentes cargadas",
@@ -307,7 +308,7 @@
307
308
  "repeated-new-password": "Nueva contraseña repetida",
308
309
  "repeat-order": "Repetir pedido",
309
310
  "result-for": "Resultados para",
310
- "right-sidebar": "barra derecha",
311
+ "form-rate-limit": "Demasiadas solicitudes. Por favor, espere unos minutos e intente nuevamente.",
311
312
  "rings-wrist-wear": "Anillos y pulseras",
312
313
  "same-billing-address": "Mismos datos de facturación",
313
314
  "scarves": "Bufandas",
@@ -96,6 +96,7 @@
96
96
  "fashion": "Mode",
97
97
  "sorry": "Pardon! Impossible de trouver le produit que vous cherchiez !!!",
98
98
  "sorry-details": "Veuillez vérifier si vous avez mal orthographié quelque chose ou essayez de chercher avec d'autres mots.",
99
+ "email-register-channel-inactive": "Cette adresse e-mail est déjà enregistrée dans notre système. Pour activer l'accès à ce site, veuillez contacter notre service client.",
99
100
  "empty-cart": "Votre panier est vide",
100
101
  "empty-cart-detail": "Ajouter quelque chose pour me rendre heureux :)",
101
102
  "image": "Image",
@@ -282,6 +283,7 @@
282
283
  "no-stores": "Aucun point de vente chargé pour le moment",
283
284
  "inquiry-sent": "Votre demande a été envoyée",
284
285
  "inquiry-error": "Une erreur s'est produite lors de l'interrogation. Réessayez plus tard",
286
+ "form-rate-limit": "Trop de demandes. Veuillez patienter quelques minutes puis réessayer.",
285
287
  "newsletter_email_already_registered": "L'adresse e-mail est déjà enregistrée.",
286
288
  "newsletter-thanks": "Merci de vous être abonné aux nouvelles",
287
289
  "notes": "Détails d'expédition supplémentaires",
@@ -97,6 +97,7 @@
97
97
  "fashion": "Moda",
98
98
  "sorry": "Sentímolo! Non se atopou o produto que busca!!!",
99
99
  "sorry-details": "Asegúrese de que escribiu algo incorrectamente ou intente buscar con outras palabras.",
100
+ "email-register-channel-inactive": "Este correo electrónico xa está rexistrado no noso sistema. Para habilitar o acceso a este sitio, póñase en contacto co noso equipo de atención ao cliente.",
100
101
  "empty-cart": "O teu carro está baleiro",
101
102
  "empty-cart-detail": "Engade algo ao carro",
102
103
  "image": "Imaxe",
@@ -290,6 +291,7 @@
290
291
  "no-stores": "Non hai cargas aínda cargadas",
291
292
  "inquiry-sent": "Enviouse a súa consulta",
292
293
  "inquiry-error": "Produciuse un erro durante a consulta. Próbao máis tarde",
294
+ "form-rate-limit": "Hai demasiadas solicitudes. Agarda uns minutos e inténtao de novo.",
293
295
  "newsletter_email_already_registered": "A dirección de correo electrónico xa está rexistrada.",
294
296
  "newsletter-thanks": "Grazas por subscribirte á noticia",
295
297
  "notes": "Detalles adicionais de envío",
@@ -97,6 +97,7 @@
97
97
  "fashion": "Moda",
98
98
  "sorry": "Desculpe! Não foi possível encontrar o produto que você estava procurando !!!",
99
99
  "sorry-details": "Verifique se você escreveu algo incorretamente ou tente pesquisar com outras palavras.",
100
+ "email-register-channel-inactive": "O endereço de e-mail já está registrado em nosso sistema. Para habilitar o acesso a este site, entre em contato com nossa equipe de atendimento.",
100
101
  "empty-cart": "O seu carrinho está vazio",
101
102
  "empty-cart-detail": "Adicione algo ao carrinho",
102
103
  "image": "Imagen",
@@ -290,6 +291,7 @@
290
291
  "no-stores": "Ainda não há tomadas carregadas",
291
292
  "inquiry-sent": "Sua pergunta foi enviada",
292
293
  "inquiry-error": "Ocorreu um erro ao consultar. Por favor, tente novamente mais tarde",
294
+ "form-rate-limit": "Muitas solicitações. Aguarde alguns minutos e tente novamente.",
293
295
  "newsletter_email_already_registered": "O endereço de e‑mail já se encontra registado.",
294
296
  "newsletter-thanks": "Obrigado por se inscrever nas notícias",
295
297
  "notes": "Detalhes adicionais de envio",
@@ -151,12 +151,7 @@ export class RegisterFormEcComponent {
151
151
  })
152
152
  .catch(error => {
153
153
  this.register_loading = false;
154
- if (error.status == 400) {
155
- this._toastService.show('El email ingresado ya se encuentra registrado.');
156
- }
157
- else {
158
- this._toastService.show('Error en el registro. Vuelva a intentarlo más tarde.');
159
- }
154
+ this._toastService.show(this.resolveRegisterErrorMessage(error));
160
155
  })
161
156
  .finally(() => {
162
157
  this.loading = false;
@@ -208,6 +203,17 @@ export class RegisterFormEcComponent {
208
203
  togglePassword() {
209
204
  this.showPassword = !this.showPassword;
210
205
  }
206
+ resolveRegisterErrorMessage(error) {
207
+ const status = error?.status ?? error?.error?.code;
208
+ const backendMessage = `${error?.error?.message ?? error?.message ?? ''}`.toLowerCase();
209
+ if (status === 409 || (backendMessage.includes('canal') && backendMessage.includes('activo'))) {
210
+ return 'email-register-channel-inactive';
211
+ }
212
+ if (status === 400 || backendMessage.includes('registrado') || backendMessage.includes('registered')) {
213
+ return 'email-already-registered';
214
+ }
215
+ return 'email-register-error';
216
+ }
211
217
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RegisterFormEcComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
212
218
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: RegisterFormEcComponent, isStandalone: true, selector: "app-register-form-ec", inputs: { redirect: "redirect" }, outputs: { ready: "ready" }, ngImport: i0, template: "<div class=\"w-100 pl-md-5 position-relative\" id=\"register\">\n <div class=\"py-2\">\n <h5>CREAR CUENTA</h5>\n </div>\n <form id=\"registro\" [formGroup]=\"registerForm\" (submit)=\"register($event)\">\n <div class=\"form-group\">\n <label for=\"\" class=\"form-label\">NOMBRE</label>\n <input formControlName=\"firstName\" class=\"form-control rounded-0\" type=\"text\" placeholder=\"Nombre\">\n </div>\n <div class=\"form-group\">\n <label for=\"\" class=\"form-label\">APELLIDO</label>\n <input formControlName=\"lastName\" class=\"form-control rounded-0\" type=\"text\" placeholder=\"Apellido\">\n </div>\n <div class=\"form-group\">\n <label for=\"\" class=\"\">CORREO ELECTRONICO</label>\n <input formControlName=\"email\" email required class=\"form-control rounded-0\" type=\"email\"\n placeholder=\"Correo electr\u00F3nico\">\n </div>\n <div class=\"form-group\">\n <label for=\"\" class=\"form-label\">CONTRASE\u00D1A</label>\n <input formControlName=\"plainPassword\" required class=\"form-control rounded-0\" type=\"password\"\n placeholder=\"Contrase\u00F1a\">\n </div>\n <div class=\"form-group\">\n <label for=\"\" class=\"form-label\">REPETIR CONTRASE\u00D1A</label>\n <input formControlName=\"plainPassword2\" required class=\"form-control rounded-0\" type=\"password\"\n placeholder=\"Repetir contrase\u00F1a\">\n </div>\n\n <div class=\"custom-control d-flex flex-row form-check custom-checkbox mr-sm-2 mt-4 mb-2\">\n <input type=\"checkbox\" formControlName=\"terms\" required class=\"custom-control-input form-check-input\" name=\"Color2\"\n id=\"Color2\">\n <label class=\"custom-control-label ff-ubuntu-light font-sm form-check-label\" for=\"Color2\"> He\n le\u00EDdo y acepto las pol\u00EDticas de privacidad y los t\u00E9rminos y\n condiciones</label>\n </div>\n\n <div class=\"custom-control d-flex flex-row form-check custom-checkbox mr-sm-2 mb-4\">\n <input type=\"checkbox\" formControlName=\"newsletter\" class=\"custom-control-input form-check-input\" name=\"Color3\" id=\"Color3\">\n <label class=\"custom-control-label form-check-label ff-ubuntu-light font-sm\" for=\"Color3\">\n Suscripci\u00F3n al Newsletter</label>\n </div>\n\n <div class=\"row\">\n <div class=\"col-12\">\n <button [disabled]=\"registerForm.invalid\" type=\"submit\"\n class=\"btn btn-primary px-5 py-2 h-fit\">CREAR</button>\n </div>\n </div>\n </form>\n @if(loading){\n <app-loading-section-ec />\n }\n \n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.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: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.CheckboxRequiredValidator, selector: "input[type=checkbox][required][formControlName],input[type=checkbox][required][formControl],input[type=checkbox][required][ngModel]" }, { kind: "directive", type: i1.EmailValidator, selector: "[email][formControlName],[email][formControl],[email][ngModel]", inputs: ["email"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: LoadingSectionEcComponent, selector: "app-loading-section-ec" }] });
213
219
  }
@@ -219,4 +225,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
219
225
  }], ready: [{
220
226
  type: Output
221
227
  }] } });
222
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0ZXItZm9ybS1lYy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lYXN5Y29tbWVyY2UtdjE4L3NyYy9saWIvZWMtY29tcG9uZW50cy9hdXRoLWVjL3JlZ2lzdGVyLWZvcm0tZWMvcmVnaXN0ZXItZm9ybS1lYy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lYXN5Y29tbWVyY2UtdjE4L3NyYy9saWIvZWMtY29tcG9uZW50cy9hdXRoLWVjL3JlZ2lzdGVyLWZvcm0tZWMvcmVnaXN0ZXItZm9ybS1lYy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBVSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDNUcsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxXQUFXLEVBQWEsbUJBQW1CLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7OztBQVMxRCxNQUFNLE9BQU8sdUJBQXVCO0lBQzNCLFlBQVksR0FBZ0IsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2hELGFBQWEsR0FBaUIsTUFBTSxD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bUJBQW1CLEVBQUUseUJBQXlCLENBQUM7OEJBbUJoRCxRQUFRO3NCQUFoQixLQUFLO2dCQUlJLEtBQUs7c0JBQWQsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBPbkluaXQsIGluamVjdCwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQW5hbHl0aWNzU2VydmljZSwgQXV0aFNlcnZpY2UsIFNlb1NlcnZpY2UsIEZvcm1TZXJ2aWNlLCBUb2FzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9lYy1zZXJ2aWNlcyc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IExvYWRpbmdTZWN0aW9uRWNDb21wb25lbnQgfSBmcm9tICcuLi8uLi93aWRnZXRzLWVjL2xvYWRpbmcnO1xuaW1wb3J0IHsgZmlyc3RWYWx1ZUZyb20gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENoYW5uZWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vZWMtc2VydmljZXMnO1xuaW1wb3J0IHsgQ29yZUNvbnN0YW50c1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMnO1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICdhcHAtcmVnaXN0ZXItZm9ybS1lYycsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdGltcG9ydHM6IFtSZWFjdGl2ZUZvcm1zTW9kdWxlLCBMb2FkaW5nU2VjdGlvbkVjQ29tcG9uZW50XSxcblx0dGVtcGxhdGVVcmw6ICcuL3JlZ2lzdGVyLWZvcm0tZWMuY29tcG9uZW50Lmh0bWwnLFxuXHRzdHlsZVVybHM6IFsnLi9yZWdpc3Rlci1mb3JtLWVjLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgUmVnaXN0ZXJGb3JtRWNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXHRwcml2YXRlIF9hdXRoU2VydmljZTogQXV0aFNlcnZpY2UgPSBpbmplY3QoQXV0aFNlcnZpY2UpO1xuXHRwcml2YXRlIF90b2FzdFNlcnZpY2U6IFRvYXN0U2VydmljZSA9IGluamVjdChUb2FzdFNlcnZpY2UpO1xuXHRwcml2YXRlIF9yb3V0ZXI6IFJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuXHRwcml2YXRlIF9hbmFseXRpY3NTZXJ2aWNlOiBBbmFseXRpY3NTZXJ2aWNlID0gaW5qZWN0KEFuYWx5dGljc1NlcnZpY2UpO1xuXHRwcml2YXRlIF9mb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIgPSBpbmplY3QoRm9ybUJ1aWxkZXIpO1xuXHRwcml2YXRlIF9mb3JtU2VydmljZTogRm9ybVNlcnZpY2UgPSBpbmplY3QoRm9ybVNlcnZpY2UpO1xuXHRwcml2YXRlIGNoYW5uZWxDb25maWdTZXJ2aWNlOiBDaGFubmVsU2VydmljZSA9IGluamVjdChDaGFubmVsU2VydmljZSk7XG5cdHByaXZhdGUgX3Nlb1NlcnZpY2U6IFNlb1NlcnZpY2UgPSBpbmplY3QoU2VvU2VydmljZSk7XG5cdHByaXZhdGUgX2NvbnN0czogQ29yZUNvbnN0YW50c1NlcnZpY2UgPSBpbmplY3QoQ29yZUNvbnN0YW50c1NlcnZpY2UpO1xuXHRzaG93UGFzc3dvcmQgPSBmYWxzZTtcblxuXHQvKipcblx0KiBJbmRpY2Egc2kgZGViZSByZWRpcmVjY2lvbmFyIG8gc2UgcXVlZGEgZW4gbGEgbWlzbWEgcGFudGFsbGFcblx0Ki9cblx0QElucHV0KCkgcmVkaXJlY3Q6IGJvb2xlYW4gPSB0cnVlO1xuXHQvKipcblx0ICogUGFyYSBxdWUgc2UgcHVlZGUgY2FwdHVyYXIgZWwgZXN0YWRvIGRlIGxhIHBldGljacOzbiBkZSByZWdpc3Ryby5cblx0ICovXG5cdEBPdXRwdXQoKSByZWFkeSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblx0LyoqXG5cdCAqIENvbnRpZW5lIGxvcyBwYWlzZXMgeSBzdXMgZGF0b3Ncblx0ICovXG5cdHB1YmxpYyBjb3VudHJpZXMkID0gdGhpcy5fZm9ybVNlcnZpY2UuZ2V0Q291bnRyaWVzRGF0YSgpO1xuXHQvKipcblx0ICogQ29udGllbmUgbGFzIHByb3ZpbmNpYXNcblx0ICovXG5cdHB1YmxpYyBwcm92aW5jZXMkID0gdGhpcy5fZm9ybVNlcnZpY2UucHJvdmluY2VzJDtcblx0LyoqXG5cdCAqIENvbnRpZW5lIGxvcyB0aXBvcyBkZSBkb2N1bWVudG9zLlxuXHQgKi9cblx0cHVibGljIGRvY3VtZW50VHlwZXMkID0gdGhpcy5fZm9ybVNlcnZpY2UuZG9jdW1lbnRUeXBlcyQ7XG5cdC8qKlxuXHQgKiBDb250aWVuZSBlbCBmb3JtdWxhcmlvIGRlIHJlZ2lzdHJvLlxuXHQgKi9cblx0cHVibGljIHJlZ2lzdGVyRm9ybTogRm9ybUdyb3VwID0gdGhpcy5fZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuXHRcdGZpcnN0TmFtZTogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcblx0XHRsYXN0TmFtZTogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcblx0XHRlbWFpbDogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5lbWFpbF1dLFxuXHRcdHBsYWluUGFzc3dvcmQ6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG5cdFx0cGxhaW5QYXNzd29yZDI6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG5cblx0XHQvLyBMZWdhY3kvc2ltcGxlIGZpZWxkc1xuXHRcdHBob25lOiBbJyddLFxuXHRcdG5ld3NsZXR0ZXI6IFsnJ10sXG5cdFx0dGVybXM6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZFRydWVdLFxuXG5cdFx0Ly8gT3B0aW9uYWwgZXh0ZW5kZWQgZmllbGRzIGZvciAvcmVnaXN0ZXIgZW5kcG9pbnRcblx0XHRiaXJ0aGRheTogWycnXSxcblx0XHRnZW5kZXI6IFsnJ10sXG5cdFx0cGhvbmVOdW1iZXI6IFsnJywgW1ZhbGlkYXRvcnMucGF0dGVybignXlxcXFwrP1swLTkoKVxcXFwtXFxcXHNdKyQnKV1dLFxuXHRcdHN1YnNjcmliZWRUb05ld3NsZXR0ZXI6IFtmYWxzZV0sXG5cdFx0ZG9jdW1lbnRUeXBlOiBbJyddLFxuXHRcdGRvY3VtZW50TnVtYmVyOiBbJyddLFxuXHRcdGNvdW50cnlDb2RlOiBbbnVsbF0sXG5cdFx0c3RyZWV0OiBbJyddLFxuXHRcdGNpdHk6IFsnJ10sXG5cdFx0cG9zdGNvZGU6IFsnJ10sXG5cdFx0cHJvdmluY2VOYW1lOiBbJyddLFxuXHRcdHByb3ZpbmNlQ29kZTogW251bGxdLFxuXHRcdGxlZ2FsRGVub21pbmF0aW9uOiBbJyddLFxuXHRcdGNvbXBhbnlOYW1lOiBbJyddLFxuXHRcdGNvbW1lbnRzOiBbJyddLFxuXHRcdGNvbnRhY3RGaXJzdE5hbWU6IFsnJ10sXG5cdFx0Y29udGFjdExhc3ROYW1lOiBbJyddLFxuXHRcdGNvbnRhY3RDb21wYW55UG9zaXRpb246IFsnJ10sXG5cdFx0Y29udGFjdEVtYWlsOiBbJyddLFxuXHRcdGNvbnRhY3REb2N1bWVudFR5cGU6IFsnJ10sXG5cdFx0Y29udGFjdERvY3VtZW50TnVtYmVyOiBbJyddXG5cdH0sIHsgdmFsaWRhdG9yczogdGhpcy5wYXNzd29yZE1hdGNoVmFsaWRhdG9yIH0pO1xuXHRyZWdpc3Rlcl9sb2FkaW5nOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG5cdHBhc3N3b3JkTWF0Y2hWYWxpZGF0b3IoZ3JvdXA6IEZvcm1Hcm91cCkge1xuXHRcdHJldHVybiBncm91cC5nZXQoJ3BsYWluUGFzc3dvcmQnKT8udmFsdWUgPT09IGdyb3VwLmdldCgncGxhaW5QYXNzd29yZDInKT8udmFsdWVcblx0XHRcdD8gbnVsbCA6IHsgbWlzbWF0Y2g6IHRydWUgfTtcblx0fVxuXHQvKipcblx0ICogUGFyYSBpbmRpY2FyIHF1ZSBzZSBlc3RhIHByb2Nlc2FuZG8gbGEgc29saWNpdHVkIGRlIHJlZ2lzdHJvLlxuXHQgKi9cblx0cHVibGljIGxvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcblx0LyoqXG5cdCAqIFBhcmEgaW5kaWNhciBlbCBleGl0byBkZSBsYSBzb2xpY2l0dWQgZGUgcmVnaXN0cm8uXG5cdCAqL1xuXHRwdWJsaWMgc3VjY2VzczogYm9vbGVhbiA9IGZhbHNlO1xuXG5cdG5nT25Jbml0KCk6IHZvaWQge1xuXHRcdGNvbnN0IHNpdGVOYW1lID0gdGhpcy5fc2VvU2VydmljZS5nZXRTaXRlTmFtZSgpO1xuXHRcdHRoaXMuX3Nlb1NlcnZpY2Uuc2V0VGl0bGUoYENyZWFyIGN1ZW50YSB8ICR7c2l0ZU5hbWV9YCk7XG5cdFx0dGhpcy5fc2VvU2VydmljZS5zZXREZXNjcmlwdGlvbihgQ3Jlw6EgdHUgY3VlbnRhIGVuICR7c2l0ZU5hbWV9IHBhcmEgYWNjZWRlciBhbCBjYXTDoWxvZ28geSBjb21wcmFyLmApO1xuXHRcdHRoaXMuX3Nlb1NlcnZpY2Uuc2V0T2dUeXBlKCd3ZWJzaXRlJyk7XG5cdFx0dGhpcy5fc2VvU2VydmljZS5zZXRDYW5vbmljYWwodGhpcy5fY29uc3RzLmdldEZyb250ZW5kVXJsKCkgKyB0aGlzLl9yb3V0ZXIudXJsKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZWdpc3RyYSB1biB1c3VhcmlvLlxuXHQgKiBAcGFyYW0gZXZlbnRcblx0ICogQHJldHVybnNcblx0ICovXG5cdGFzeW5jIHJlZ2lzdGVyKGV2ZW50OiBFdmVudCkge1xuXHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cblx0XHRpZiAodGhpcy5sb2FkaW5nKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0dGhpcy5sb2FkaW5nID0gdHJ1ZTtcblx0XHRpZiAoIXRoaXMucmVnaXN0ZXJGb3JtLnZhbGlkKSB7XG5cdFx0XHR0aGlzLl90b2FzdFNlcnZpY2Uuc2hvdygnZmllbGRzLWluY29tcGxldGUnKTtcblx0XHRcdHRoaXMubG9hZGluZyA9IGZhbHNlO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRpZiAodGhpcy5yZWdpc3RlckZvcm0udmFsdWUucGxhaW5QYXNzd29yZCAhPSB0aGlzLnJlZ2lzdGVyRm9ybS52YWx1ZS5wbGFpblBhc3N3b3JkMikge1xuXHRcdFx0dGhpcy5fdG9hc3RTZXJ2aWNlLnNob3coJ21pc21hdGNoZWQtcGFzc3dvcmQnKTtcblx0XHRcdHRoaXMubG9hZGluZyA9IGZhbHNlO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGNvbnN0IHBheWxvYWQgPSB0aGlzLmJ1aWxkUmVnaXN0ZXJQYXlsb2FkKCk7XG5cdFx0Y29uc3QgY2hhbm5lbCA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuY2hhbm5lbENvbmZpZ1NlcnZpY2UuY2hhbm5lbCQpO1xuXHRcdGNvbnN0IGlzQWNjb3VudFZlcmlmaWNhdGlvblJlcXVpcmVkID0gISFjaGFubmVsPy5pc0FjY291bnRWZXJpZmljYXRpb25SZXF1aXJlZDtcblx0XHRjb25zdCBpc1NlbmRXZWxjb21lRW1haWwgPSAhIWNoYW5uZWw/LmlzU2VuZFdlbGNvbWVFbWFpbDtcblxuXHRcdGZpcnN0VmFsdWVGcm9tKHRoaXMuX2F1dGhTZXJ2aWNlLnNpbmdVcChwYXlsb2FkKSlcblx0XHRcdC50aGVuKCgpID0+IHtcblx0XHRcdFx0dGhpcy5yZWdpc3Rlcl9sb2FkaW5nID0gZmFsc2U7XG5cdFx0XHRcdGxldCBtZXNzYWdlS2V5OiBzdHJpbmc7XG5cdFx0XHRcdHN3aXRjaCAodHJ1ZSkge1xuXHRcdFx0XHRcdGNhc2UgaXNBY2NvdW50VmVyaWZpY2F0aW9uUmVxdWlyZWQ6XG5cdFx0XHRcdFx0XHRtZXNzYWdlS2V5ID0gJ3JlZ2lzdGVyLW9rJztcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgaXNTZW5kV2VsY29tZUVtYWlsOlxuXHRcdFx0XHRcdFx0bWVzc2FnZUtleSA9ICdyZWdpc3Rlci13ZWxjb21lJztcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHRtZXNzYWdlS2V5ID0gJ3JlZ2lzdGVyLXN1Y2Nlc3MnO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHRoaXMuX3RvYXN0U2VydmljZS5zaG93KG1lc3NhZ2VLZXkpO1xuXHRcdFx0XHR0aGlzLl9hbmFseXRpY3NTZXJ2aWNlLmNhbGxFdmVudCgnc2lnbl91cCcsIHtcblx0XHRcdFx0XHRmaXJzdE5hbWU6IHBheWxvYWQuZmlyc3ROYW1lLFxuXHRcdFx0XHRcdGxhc3ROYW1lOiBwYXlsb2FkLmxhc3ROYW1lLFxuXHRcdFx0XHRcdGVtYWlsOiBwYXlsb2FkLmVtYWlsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR0aGlzLnN1Y2Nlc3MgPSB0cnVlO1xuXHRcdFx0XHR0aGlzLnJlYWR5LmVtaXQodHJ1ZSk7XG5cblx0XHRcdFx0aWYgKG1lc3NhZ2VLZXkgIT09ICdyZWdpc3Rlci1vaycgJiYgdGhpcy5yZWRpcmVjdCkge1xuXHRcdFx0XHRcdHRoaXMucmVnaXN0ZXJGb3JtLnJlc2V0KCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKHRoaXMucmVkaXJlY3QpIHtcblx0XHRcdFx0XHR0aGlzLl9yb3V0ZXIubmF2aWdhdGVCeVVybCgnaG9tZScpO1xuXHRcdFx0XHR9XG5cdFx0XHR9KVxuXHRcdFx0LmNhdGNoKGVycm9yID0+IHtcblx0XHRcdFx0dGhpcy5yZWdpc3Rlcl9sb2FkaW5nID0gZmFsc2U7XG5cdFx0XHRcdGlmIChlcnJvci5zdGF0dXMgPT0gNDAwKSB7XG5cdFx0XHRcdFx0dGhpcy5fdG9hc3RTZXJ2aWNlLnNob3coJ0VsIGVtYWlsIGluZ3Jlc2FkbyB5YSBzZSBlbmN1ZW50cmEgcmVnaXN0cmFkby4nKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHR0aGlzLl90b2FzdFNlcnZpY2Uuc2hvdygnRXJyb3IgZW4gZWwgcmVnaXN0cm8uIFZ1ZWx2YSBhIGludGVudGFybG8gbcOhcyB0YXJkZS4nKTtcblx0XHRcdFx0fVxuXHRcdFx0fSlcblx0XHRcdC5maW5hbGx5KCgpID0+IHtcblx0XHRcdFx0dGhpcy5sb2FkaW5nID0gZmFsc2U7XG5cdFx0XHR9KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDYXB0dXJhIGVsIGV2ZW50byBkZSBjdWFuZG8gY2FtYmlhIHVuIHBhaXMgZW4gdW4gPHNlbGVjdD5cblx0ICovXG5cdG9uQ291bnRyeVNlbGVjdGVkID0gKGV2ZW50OiBhbnkpID0+IHtcblx0XHRjb25zdCB2YWx1ZSA9IGV2ZW50Py50YXJnZXQ/LnZhbHVlID8/IGV2ZW50O1xuXHRcdHRoaXMucmVnaXN0ZXJGb3JtLmNvbnRyb2xzWydjb3VudHJ5Q29kZSddLnNldFZhbHVlKHZhbHVlKTtcblx0XHR0aGlzLnJlZ2lzdGVyRm9ybS5jb250cm9sc1sncHJvdmluY2VDb2RlJ10uc2V0VmFsdWUobnVsbCk7XG5cdFx0aWYgKHZhbHVlICYmIHZhbHVlICE9PSAnbnVsbCcpIHtcblx0XHRcdHRoaXMuX2Zvcm1TZXJ2aWNlLm9uQ291bnRyeVNlbGVjdGVkKHZhbHVlKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogQ2FwdHVyYSBlbCBldmVudG8gZGUgY3VhbmRvIGNhbWJpYSB1bmEgcHJvdmluY2lhL2VzdGFkbyBlbiB1biA8c2VsZWN0PlxuXHQgKi9cblx0b25Qcm92aW5jZXNTZWxlY3RlZCA9IChldmVudDogYW55LCBwcm92aW5jZXM6IGFueVtdKSA9PiB7XG5cdFx0Y29uc3QgdmFsdWUgPSBldmVudD8udGFyZ2V0Py52YWx1ZSA/PyBldmVudDtcblx0XHR0aGlzLnJlZ2lzdGVyRm9ybS5jb250cm9sc1sncHJvdmluY2VDb2RlJ10uc2V0VmFsdWUodmFsdWUpO1xuXHRcdGNvbnN0IHNlbGVjdGVkID0gcHJvdmluY2VzPy5maW5kKChwcm92aW5jZTogYW55KSA9PiBwcm92aW5jZS5jb2RlID09IHZhbHVlKTtcblx0XHR0aGlzLnJlZ2lzdGVyRm9ybS5jb250cm9sc1sncHJvdmluY2VOYW1lJ10uc2V0VmFsdWUoc2VsZWN0ZWQ/Lm5hbWUgfHwgJycpO1xuXHR9XG5cblx0cHJpdmF0ZSBidWlsZFJlZ2lzdGVyUGF5bG9hZCgpIHtcblx0XHRjb25zdCByYXcgPSB7IC4uLnRoaXMucmVnaXN0ZXJGb3JtLnZhbHVlIH07XG5cblx0XHQvLyBDb21wYXQ6IHZhcmlvcyBmcm9udGVuZHMgdXNhbiBgcGhvbmVgIGVuIHJlZ2lzdHJvIGLDoXNpY28uXG5cdFx0aWYgKCFyYXcucGhvbmVOdW1iZXIgJiYgcmF3LnBob25lKSB7XG5cdFx0XHRyYXcucGhvbmVOdW1iZXIgPSByYXcucGhvbmU7XG5cdFx0fVxuXG5cdFx0Ly8gQ29tcGF0OiB2YXJpb3MgZnJvbnRlbmRzIHVzYW4gYG5ld3NsZXR0ZXJgIGVuIHJlZ2lzdHJvIGLDoXNpY28uXG5cdFx0aWYgKHJhdy5zdWJzY3JpYmVkVG9OZXdzbGV0dGVyID09PSBmYWxzZSAmJiAocmF3Lm5ld3NsZXR0ZXIgPT09IHRydWUgfHwgcmF3Lm5ld3NsZXR0ZXIgPT09ICd0cnVlJykpIHtcblx0XHRcdHJhdy5zdWJzY3JpYmVkVG9OZXdzbGV0dGVyID0gdHJ1ZTtcblx0XHR9XG5cblx0XHQvLyBDYW1wb3MgaW50ZXJub3Mvbm8gZW52aWFkb3Ncblx0XHRkZWxldGUgcmF3LnBob25lO1xuXHRcdGRlbGV0ZSByYXcubmV3c2xldHRlcjtcblx0XHRkZWxldGUgcmF3LnRlcm1zO1xuXHRcdGRlbGV0ZSByYXcucGxhaW5QYXNzd29yZDI7XG5cblx0XHQvLyBMaW1waWV6YSBzaW1wbGUgcGFyYSBubyBlbnZpYXIgYmFzdXJhIHZhY8OtYVxuXHRcdE9iamVjdC5rZXlzKHJhdykuZm9yRWFjaCgoa2V5OiBzdHJpbmcpID0+IHtcblx0XHRcdGlmIChyYXdba2V5XSA9PT0gJycgfHwgcmF3W2tleV0gPT09IG51bGwgfHwgcmF3W2tleV0gPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHRkZWxldGUgcmF3W2tleV07XG5cdFx0XHR9XG5cdFx0fSk7XG5cblx0XHRyZXR1cm4gcmF3O1xuXHR9XG5cblx0dG9nZ2xlUGFzc3dvcmQoKSB7XG5cdFx0dGhpcy5zaG93UGFzc3dvcmQgPSAhdGhpcy5zaG93UGFzc3dvcmQ7XG5cdH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJ3LTEwMCBwbC1tZC01IHBvc2l0aW9uLXJlbGF0aXZlXCIgaWQ9XCJyZWdpc3RlclwiPlxuICA8ZGl2IGNsYXNzPVwicHktMlwiPlxuICAgICAgPGg1PkNSRUFSIENVRU5UQTwvaDU+XG4gIDwvZGl2PlxuICA8Zm9ybSBpZD1cInJlZ2lzdHJvXCIgW2Zvcm1Hcm91cF09XCJyZWdpc3RlckZvcm1cIiAoc3VibWl0KT1cInJlZ2lzdGVyKCRldmVudClcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgPGxhYmVsIGZvcj1cIlwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPk5PTUJSRTwvbGFiZWw+XG4gICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cImZpcnN0TmFtZVwiIGNsYXNzPVwiZm9ybS1jb250cm9sIHJvdW5kZWQtMFwiIHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9XCJOb21icmVcIj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICA8bGFiZWwgZm9yPVwiXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+QVBFTExJRE88L2xhYmVsPlxuICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJsYXN0TmFtZVwiIGNsYXNzPVwiZm9ybS1jb250cm9sIHJvdW5kZWQtMFwiIHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9XCJBcGVsbGlkb1wiPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgIDxsYWJlbCBmb3I9XCJcIiBjbGFzcz1cIlwiPkNPUlJFTyBFTEVDVFJPTklDTzwvbGFiZWw+XG4gICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cImVtYWlsXCIgZW1haWwgcmVxdWlyZWQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgcm91bmRlZC0wXCIgdHlwZT1cImVtYWlsXCJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJDb3JyZW8gZWxlY3Ryw7NuaWNvXCI+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgPGxhYmVsIGZvcj1cIlwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPkNPTlRSQVNFw5FBPC9sYWJlbD5cbiAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwicGxhaW5QYXNzd29yZFwiIHJlcXVpcmVkIGNsYXNzPVwiZm9ybS1jb250cm9sIHJvdW5kZWQtMFwiIHR5cGU9XCJwYXNzd29yZFwiXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiQ29udHJhc2XDsWFcIj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICA8bGFiZWwgZm9yPVwiXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+UkVQRVRJUiBDT05UUkFTRcORQTwvbGFiZWw+XG4gICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cInBsYWluUGFzc3dvcmQyXCIgcmVxdWlyZWQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgcm91bmRlZC0wXCIgdHlwZT1cInBhc3N3b3JkXCJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJSZXBldGlyIGNvbnRyYXNlw7FhXCI+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cImN1c3RvbS1jb250cm9sIGQtZmxleCBmbGV4LXJvdyBmb3JtLWNoZWNrIGN1c3RvbS1jaGVja2JveCBtci1zbS0yIG10LTQgbWItMlwiPlxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBmb3JtQ29udHJvbE5hbWU9XCJ0ZXJtc1wiIHJlcXVpcmVkIGNsYXNzPVwiY3VzdG9tLWNvbnRyb2wtaW5wdXQgZm9ybS1jaGVjay1pbnB1dFwiIG5hbWU9XCJDb2xvcjJcIlxuICAgICAgICAgICAgICBpZD1cIkNvbG9yMlwiPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImN1c3RvbS1jb250cm9sLWxhYmVsIGZmLXVidW50dS1saWdodCBmb250LXNtIGZvcm0tY2hlY2stbGFiZWxcIiBmb3I9XCJDb2xvcjJcIj4gSGVcbiAgICAgICAgICAgICAgbGXDrWRvIHkgYWNlcHRvIGxhcyBwb2zDrXRpY2FzIGRlIHByaXZhY2lkYWQgeSBsb3MgdMOpcm1pbm9zIHlcbiAgICAgICAgICAgICAgY29uZGljaW9uZXM8L2xhYmVsPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJjdXN0b20tY29udHJvbCBkLWZsZXggZmxleC1yb3cgZm9ybS1jaGVjayBjdXN0b20tY2hlY2tib3ggbXItc20tMiBtYi00XCI+XG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIGZvcm1Db250cm9sTmFtZT1cIm5ld3NsZXR0ZXJcIiBjbGFzcz1cImN1c3RvbS1jb250cm9sLWlucHV0IGZvcm0tY2hlY2staW5wdXRcIiBuYW1lPVwiQ29sb3IzXCIgaWQ9XCJDb2xvcjNcIj5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjdXN0b20tY29udHJvbC1sYWJlbCBmb3JtLWNoZWNrLWxhYmVsIGZmLXVidW50dS1saWdodCBmb250LXNtXCIgZm9yPVwiQ29sb3IzXCI+XG4gICAgICAgICAgICAgIFN1c2NyaXBjacOzbiBhbCBOZXdzbGV0dGVyPC9sYWJlbD5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiPlxuICAgICAgICAgICAgICA8YnV0dG9uIFtkaXNhYmxlZF09XCJyZWdpc3RlckZvcm0uaW52YWxpZFwiIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgcHgtNSBweS0yIGgtZml0XCI+Q1JFQVI8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICA8L2Zvcm0+XG4gIEBpZihsb2FkaW5nKXtcbiAgICA8YXBwLWxvYWRpbmctc2VjdGlvbi1lYyAvPlxuICB9XG4gIFxuPC9kaXY+XG4iXX0=
228
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0ZXItZm9ybS1lYy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lYXN5Y29tbWVyY2UtdjE4L3NyYy9saWIvZWMtY29tcG9uZW50cy9hdXRoLWVjL3JlZ2lzdGVyLWZvcm0tZWMvcmVnaXN0ZXItZm9ybS1lYy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lYXN5Y29tbWVyY2UtdjE4L3NyYy9saWIvZWMtY29tcG9uZW50cy9hdXRoLWVjL3JlZ2lzdGVyLWZvcm0tZWMvcmVnaXN0ZXItZm9ybS1lYy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBVSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDNUcsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxXQUFXLEVBQWEsbUJBQW1CLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7OztBQVMxRCxNQUFNLE9BQU8sdUJBQXVCO0lBQzNCLFlBQVksR0FBZ0IsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2hELGFBQWEsR0FBaUIsTUFBTSxD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Q0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksY0FBYyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDL0YsT0FBTyxpQ0FBaUMsQ0FBQztRQUMxQyxDQUFDO1FBRUQsSUFBSSxNQUFNLEtBQUssR0FBRyxJQUFJLGNBQWMsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLElBQUksY0FBYyxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO1lBQ3RHLE9BQU8sMEJBQTBCLENBQUM7UUFDbkMsQ0FBQztRQUVELE9BQU8sc0JBQXNCLENBQUM7SUFDL0IsQ0FBQzt3R0FyT1csdUJBQXVCOzRGQUF2Qix1QkFBdUIsK0lDaEJwQyxndUZBdURBLHlERDNDVyxtQkFBbUIsc3JEQUFFLHlCQUF5Qjs7NEZBSTVDLHVCQUF1QjtrQkFQbkMsU0FBUzsrQkFDQyxzQkFBc0IsY0FDcEIsSUFBSSxXQUNQLENBQUMsbUJBQW1CLEVBQUUseUJBQXlCLENBQUM7OEJBbUJoRCxRQUFRO3NCQUFoQixLQUFLO2dCQUlJLEtBQUs7c0JBQWQsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBPbkluaXQsIGluamVjdCwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQW5hbHl0aWNzU2VydmljZSwgQXV0aFNlcnZpY2UsIFNlb1NlcnZpY2UsIEZvcm1TZXJ2aWNlLCBUb2FzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9lYy1zZXJ2aWNlcyc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IExvYWRpbmdTZWN0aW9uRWNDb21wb25lbnQgfSBmcm9tICcuLi8uLi93aWRnZXRzLWVjL2xvYWRpbmcnO1xuaW1wb3J0IHsgZmlyc3RWYWx1ZUZyb20gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENoYW5uZWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vZWMtc2VydmljZXMnO1xuaW1wb3J0IHsgQ29yZUNvbnN0YW50c1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMnO1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICdhcHAtcmVnaXN0ZXItZm9ybS1lYycsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdGltcG9ydHM6IFtSZWFjdGl2ZUZvcm1zTW9kdWxlLCBMb2FkaW5nU2VjdGlvbkVjQ29tcG9uZW50XSxcblx0dGVtcGxhdGVVcmw6ICcuL3JlZ2lzdGVyLWZvcm0tZWMuY29tcG9uZW50Lmh0bWwnLFxuXHRzdHlsZVVybHM6IFsnLi9yZWdpc3Rlci1mb3JtLWVjLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgUmVnaXN0ZXJGb3JtRWNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXHRwcml2YXRlIF9hdXRoU2VydmljZTogQXV0aFNlcnZpY2UgPSBpbmplY3QoQXV0aFNlcnZpY2UpO1xuXHRwcml2YXRlIF90b2FzdFNlcnZpY2U6IFRvYXN0U2VydmljZSA9IGluamVjdChUb2FzdFNlcnZpY2UpO1xuXHRwcml2YXRlIF9yb3V0ZXI6IFJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuXHRwcml2YXRlIF9hbmFseXRpY3NTZXJ2aWNlOiBBbmFseXRpY3NTZXJ2aWNlID0gaW5qZWN0KEFuYWx5dGljc1NlcnZpY2UpO1xuXHRwcml2YXRlIF9mb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIgPSBpbmplY3QoRm9ybUJ1aWxkZXIpO1xuXHRwcml2YXRlIF9mb3JtU2VydmljZTogRm9ybVNlcnZpY2UgPSBpbmplY3QoRm9ybVNlcnZpY2UpO1xuXHRwcml2YXRlIGNoYW5uZWxDb25maWdTZXJ2aWNlOiBDaGFubmVsU2VydmljZSA9IGluamVjdChDaGFubmVsU2VydmljZSk7XG5cdHByaXZhdGUgX3Nlb1NlcnZpY2U6IFNlb1NlcnZpY2UgPSBpbmplY3QoU2VvU2VydmljZSk7XG5cdHByaXZhdGUgX2NvbnN0czogQ29yZUNvbnN0YW50c1NlcnZpY2UgPSBpbmplY3QoQ29yZUNvbnN0YW50c1NlcnZpY2UpO1xuXHRzaG93UGFzc3dvcmQgPSBmYWxzZTtcblxuXHQvKipcblx0KiBJbmRpY2Egc2kgZGViZSByZWRpcmVjY2lvbmFyIG8gc2UgcXVlZGEgZW4gbGEgbWlzbWEgcGFudGFsbGFcblx0Ki9cblx0QElucHV0KCkgcmVkaXJlY3Q6IGJvb2xlYW4gPSB0cnVlO1xuXHQvKipcblx0ICogUGFyYSBxdWUgc2UgcHVlZGUgY2FwdHVyYXIgZWwgZXN0YWRvIGRlIGxhIHBldGljacOzbiBkZSByZWdpc3Ryby5cblx0ICovXG5cdEBPdXRwdXQoKSByZWFkeSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblx0LyoqXG5cdCAqIENvbnRpZW5lIGxvcyBwYWlzZXMgeSBzdXMgZGF0b3Ncblx0ICovXG5cdHB1YmxpYyBjb3VudHJpZXMkID0gdGhpcy5fZm9ybVNlcnZpY2UuZ2V0Q291bnRyaWVzRGF0YSgpO1xuXHQvKipcblx0ICogQ29udGllbmUgbGFzIHByb3ZpbmNpYXNcblx0ICovXG5cdHB1YmxpYyBwcm92aW5jZXMkID0gdGhpcy5fZm9ybVNlcnZpY2UucHJvdmluY2VzJDtcblx0LyoqXG5cdCAqIENvbnRpZW5lIGxvcyB0aXBvcyBkZSBkb2N1bWVudG9zLlxuXHQgKi9cblx0cHVibGljIGRvY3VtZW50VHlwZXMkID0gdGhpcy5fZm9ybVNlcnZpY2UuZG9jdW1lbnRUeXBlcyQ7XG5cdC8qKlxuXHQgKiBDb250aWVuZSBlbCBmb3JtdWxhcmlvIGRlIHJlZ2lzdHJvLlxuXHQgKi9cblx0cHVibGljIHJlZ2lzdGVyRm9ybTogRm9ybUdyb3VwID0gdGhpcy5fZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuXHRcdGZpcnN0TmFtZTogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcblx0XHRsYXN0TmFtZTogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcblx0XHRlbWFpbDogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5lbWFpbF1dLFxuXHRcdHBsYWluUGFzc3dvcmQ6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG5cdFx0cGxhaW5QYXNzd29yZDI6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG5cblx0XHQvLyBMZWdhY3kvc2ltcGxlIGZpZWxkc1xuXHRcdHBob25lOiBbJyddLFxuXHRcdG5ld3NsZXR0ZXI6IFsnJ10sXG5cdFx0dGVybXM6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZFRydWVdLFxuXG5cdFx0Ly8gT3B0aW9uYWwgZXh0ZW5kZWQgZmllbGRzIGZvciAvcmVnaXN0ZXIgZW5kcG9pbnRcblx0XHRiaXJ0aGRheTogWycnXSxcblx0XHRnZW5kZXI6IFsnJ10sXG5cdFx0cGhvbmVOdW1iZXI6IFsnJywgW1ZhbGlkYXRvcnMucGF0dGVybignXlxcXFwrP1swLTkoKVxcXFwtXFxcXHNdKyQnKV1dLFxuXHRcdHN1YnNjcmliZWRUb05ld3NsZXR0ZXI6IFtmYWxzZV0sXG5cdFx0ZG9jdW1lbnRUeXBlOiBbJyddLFxuXHRcdGRvY3VtZW50TnVtYmVyOiBbJyddLFxuXHRcdGNvdW50cnlDb2RlOiBbbnVsbF0sXG5cdFx0c3RyZWV0OiBbJyddLFxuXHRcdGNpdHk6IFsnJ10sXG5cdFx0cG9zdGNvZGU6IFsnJ10sXG5cdFx0cHJvdmluY2VOYW1lOiBbJyddLFxuXHRcdHByb3ZpbmNlQ29kZTogW251bGxdLFxuXHRcdGxlZ2FsRGVub21pbmF0aW9uOiBbJyddLFxuXHRcdGNvbXBhbnlOYW1lOiBbJyddLFxuXHRcdGNvbW1lbnRzOiBbJyddLFxuXHRcdGNvbnRhY3RGaXJzdE5hbWU6IFsnJ10sXG5cdFx0Y29udGFjdExhc3ROYW1lOiBbJyddLFxuXHRcdGNvbnRhY3RDb21wYW55UG9zaXRpb246IFsnJ10sXG5cdFx0Y29udGFjdEVtYWlsOiBbJyddLFxuXHRcdGNvbnRhY3REb2N1bWVudFR5cGU6IFsnJ10sXG5cdFx0Y29udGFjdERvY3VtZW50TnVtYmVyOiBbJyddXG5cdH0sIHsgdmFsaWRhdG9yczogdGhpcy5wYXNzd29yZE1hdGNoVmFsaWRhdG9yIH0pO1xuXHRyZWdpc3Rlcl9sb2FkaW5nOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG5cdHBhc3N3b3JkTWF0Y2hWYWxpZGF0b3IoZ3JvdXA6IEZvcm1Hcm91cCkge1xuXHRcdHJldHVybiBncm91cC5nZXQoJ3BsYWluUGFzc3dvcmQnKT8udmFsdWUgPT09IGdyb3VwLmdldCgncGxhaW5QYXNzd29yZDInKT8udmFsdWVcblx0XHRcdD8gbnVsbCA6IHsgbWlzbWF0Y2g6IHRydWUgfTtcblx0fVxuXHQvKipcblx0ICogUGFyYSBpbmRpY2FyIHF1ZSBzZSBlc3RhIHByb2Nlc2FuZG8gbGEgc29saWNpdHVkIGRlIHJlZ2lzdHJvLlxuXHQgKi9cblx0cHVibGljIGxvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcblx0LyoqXG5cdCAqIFBhcmEgaW5kaWNhciBlbCBleGl0byBkZSBsYSBzb2xpY2l0dWQgZGUgcmVnaXN0cm8uXG5cdCAqL1xuXHRwdWJsaWMgc3VjY2VzczogYm9vbGVhbiA9IGZhbHNlO1xuXG5cdG5nT25Jbml0KCk6IHZvaWQge1xuXHRcdGNvbnN0IHNpdGVOYW1lID0gdGhpcy5fc2VvU2VydmljZS5nZXRTaXRlTmFtZSgpO1xuXHRcdHRoaXMuX3Nlb1NlcnZpY2Uuc2V0VGl0bGUoYENyZWFyIGN1ZW50YSB8ICR7c2l0ZU5hbWV9YCk7XG5cdFx0dGhpcy5fc2VvU2VydmljZS5zZXREZXNjcmlwdGlvbihgQ3Jlw6EgdHUgY3VlbnRhIGVuICR7c2l0ZU5hbWV9IHBhcmEgYWNjZWRlciBhbCBjYXTDoWxvZ28geSBjb21wcmFyLmApO1xuXHRcdHRoaXMuX3Nlb1NlcnZpY2Uuc2V0T2dUeXBlKCd3ZWJzaXRlJyk7XG5cdFx0dGhpcy5fc2VvU2VydmljZS5zZXRDYW5vbmljYWwodGhpcy5fY29uc3RzLmdldEZyb250ZW5kVXJsKCkgKyB0aGlzLl9yb3V0ZXIudXJsKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZWdpc3RyYSB1biB1c3VhcmlvLlxuXHQgKiBAcGFyYW0gZXZlbnRcblx0ICogQHJldHVybnNcblx0ICovXG5cdGFzeW5jIHJlZ2lzdGVyKGV2ZW50OiBFdmVudCkge1xuXHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cblx0XHRpZiAodGhpcy5sb2FkaW5nKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0dGhpcy5sb2FkaW5nID0gdHJ1ZTtcblx0XHRpZiAoIXRoaXMucmVnaXN0ZXJGb3JtLnZhbGlkKSB7XG5cdFx0XHR0aGlzLl90b2FzdFNlcnZpY2Uuc2hvdygnZmllbGRzLWluY29tcGxldGUnKTtcblx0XHRcdHRoaXMubG9hZGluZyA9IGZhbHNlO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRpZiAodGhpcy5yZWdpc3RlckZvcm0udmFsdWUucGxhaW5QYXNzd29yZCAhPSB0aGlzLnJlZ2lzdGVyRm9ybS52YWx1ZS5wbGFpblBhc3N3b3JkMikge1xuXHRcdFx0dGhpcy5fdG9hc3RTZXJ2aWNlLnNob3coJ21pc21hdGNoZWQtcGFzc3dvcmQnKTtcblx0XHRcdHRoaXMubG9hZGluZyA9IGZhbHNlO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGNvbnN0IHBheWxvYWQgPSB0aGlzLmJ1aWxkUmVnaXN0ZXJQYXlsb2FkKCk7XG5cdFx0Y29uc3QgY2hhbm5lbCA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuY2hhbm5lbENvbmZpZ1NlcnZpY2UuY2hhbm5lbCQpO1xuXHRcdGNvbnN0IGlzQWNjb3VudFZlcmlmaWNhdGlvblJlcXVpcmVkID0gISFjaGFubmVsPy5pc0FjY291bnRWZXJpZmljYXRpb25SZXF1aXJlZDtcblx0XHRjb25zdCBpc1NlbmRXZWxjb21lRW1haWwgPSAhIWNoYW5uZWw/LmlzU2VuZFdlbGNvbWVFbWFpbDtcblxuXHRcdGZpcnN0VmFsdWVGcm9tKHRoaXMuX2F1dGhTZXJ2aWNlLnNpbmdVcChwYXlsb2FkKSlcblx0XHRcdC50aGVuKCgpID0+IHtcblx0XHRcdFx0dGhpcy5yZWdpc3Rlcl9sb2FkaW5nID0gZmFsc2U7XG5cdFx0XHRcdGxldCBtZXNzYWdlS2V5OiBzdHJpbmc7XG5cdFx0XHRcdHN3aXRjaCAodHJ1ZSkge1xuXHRcdFx0XHRcdGNhc2UgaXNBY2NvdW50VmVyaWZpY2F0aW9uUmVxdWlyZWQ6XG5cdFx0XHRcdFx0XHRtZXNzYWdlS2V5ID0gJ3JlZ2lzdGVyLW9rJztcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgaXNTZW5kV2VsY29tZUVtYWlsOlxuXHRcdFx0XHRcdFx0bWVzc2FnZUtleSA9ICdyZWdpc3Rlci13ZWxjb21lJztcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHRtZXNzYWdlS2V5ID0gJ3JlZ2lzdGVyLXN1Y2Nlc3MnO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHRoaXMuX3RvYXN0U2VydmljZS5zaG93KG1lc3NhZ2VLZXkpO1xuXHRcdFx0XHR0aGlzLl9hbmFseXRpY3NTZXJ2aWNlLmNhbGxFdmVudCgnc2lnbl91cCcsIHtcblx0XHRcdFx0XHRmaXJzdE5hbWU6IHBheWxvYWQuZmlyc3ROYW1lLFxuXHRcdFx0XHRcdGxhc3ROYW1lOiBwYXlsb2FkLmxhc3ROYW1lLFxuXHRcdFx0XHRcdGVtYWlsOiBwYXlsb2FkLmVtYWlsXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR0aGlzLnN1Y2Nlc3MgPSB0cnVlO1xuXHRcdFx0XHR0aGlzLnJlYWR5LmVtaXQodHJ1ZSk7XG5cblx0XHRcdFx0aWYgKG1lc3NhZ2VLZXkgIT09ICdyZWdpc3Rlci1vaycgJiYgdGhpcy5yZWRpcmVjdCkge1xuXHRcdFx0XHRcdHRoaXMucmVnaXN0ZXJGb3JtLnJlc2V0KCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKHRoaXMucmVkaXJlY3QpIHtcblx0XHRcdFx0XHR0aGlzLl9yb3V0ZXIubmF2aWdhdGVCeVVybCgnaG9tZScpO1xuXHRcdFx0XHR9XG5cdFx0XHR9KVxuXHRcdFx0LmNhdGNoKGVycm9yID0+IHtcblx0XHRcdFx0dGhpcy5yZWdpc3Rlcl9sb2FkaW5nID0gZmFsc2U7XG5cdFx0XHRcdHRoaXMuX3RvYXN0U2VydmljZS5zaG93KHRoaXMucmVzb2x2ZVJlZ2lzdGVyRXJyb3JNZXNzYWdlKGVycm9yKSk7XG5cdFx0XHR9KVxuXHRcdFx0LmZpbmFsbHkoKCkgPT4ge1xuXHRcdFx0XHR0aGlzLmxvYWRpbmcgPSBmYWxzZTtcblx0XHRcdH0pO1xuXHR9XG5cblx0LyoqXG5cdCAqIENhcHR1cmEgZWwgZXZlbnRvIGRlIGN1YW5kbyBjYW1iaWEgdW4gcGFpcyBlbiB1biA8c2VsZWN0PlxuXHQgKi9cblx0b25Db3VudHJ5U2VsZWN0ZWQgPSAoZXZlbnQ6IGFueSkgPT4ge1xuXHRcdGNvbnN0IHZhbHVlID0gZXZlbnQ/LnRhcmdldD8udmFsdWUgPz8gZXZlbnQ7XG5cdFx0dGhpcy5yZWdpc3RlckZvcm0uY29udHJvbHNbJ2NvdW50cnlDb2RlJ10uc2V0VmFsdWUodmFsdWUpO1xuXHRcdHRoaXMucmVnaXN0ZXJGb3JtLmNvbnRyb2xzWydwcm92aW5jZUNvZGUnXS5zZXRWYWx1ZShudWxsKTtcblx0XHRpZiAodmFsdWUgJiYgdmFsdWUgIT09ICdudWxsJykge1xuXHRcdFx0dGhpcy5fZm9ybVNlcnZpY2Uub25Db3VudHJ5U2VsZWN0ZWQodmFsdWUpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBDYXB0dXJhIGVsIGV2ZW50byBkZSBjdWFuZG8gY2FtYmlhIHVuYSBwcm92aW5jaWEvZXN0YWRvIGVuIHVuIDxzZWxlY3Q+XG5cdCAqL1xuXHRvblByb3ZpbmNlc1NlbGVjdGVkID0gKGV2ZW50OiBhbnksIHByb3ZpbmNlczogYW55W10pID0+IHtcblx0XHRjb25zdCB2YWx1ZSA9IGV2ZW50Py50YXJnZXQ/LnZhbHVlID8/IGV2ZW50O1xuXHRcdHRoaXMucmVnaXN0ZXJGb3JtLmNvbnRyb2xzWydwcm92aW5jZUNvZGUnXS5zZXRWYWx1ZSh2YWx1ZSk7XG5cdFx0Y29uc3Qgc2VsZWN0ZWQgPSBwcm92aW5jZXM/LmZpbmQoKHByb3ZpbmNlOiBhbnkpID0+IHByb3ZpbmNlLmNvZGUgPT0gdmFsdWUpO1xuXHRcdHRoaXMucmVnaXN0ZXJGb3JtLmNvbnRyb2xzWydwcm92aW5jZU5hbWUnXS5zZXRWYWx1ZShzZWxlY3RlZD8ubmFtZSB8fCAnJyk7XG5cdH1cblxuXHRwcml2YXRlIGJ1aWxkUmVnaXN0ZXJQYXlsb2FkKCkge1xuXHRcdGNvbnN0IHJhdyA9IHsgLi4udGhpcy5yZWdpc3RlckZvcm0udmFsdWUgfTtcblxuXHRcdC8vIENvbXBhdDogdmFyaW9zIGZyb250ZW5kcyB1c2FuIGBwaG9uZWAgZW4gcmVnaXN0cm8gYsOhc2ljby5cblx0XHRpZiAoIXJhdy5waG9uZU51bWJlciAmJiByYXcucGhvbmUpIHtcblx0XHRcdHJhdy5waG9uZU51bWJlciA9IHJhdy5waG9uZTtcblx0XHR9XG5cblx0XHQvLyBDb21wYXQ6IHZhcmlvcyBmcm9udGVuZHMgdXNhbiBgbmV3c2xldHRlcmAgZW4gcmVnaXN0cm8gYsOhc2ljby5cblx0XHRpZiAocmF3LnN1YnNjcmliZWRUb05ld3NsZXR0ZXIgPT09IGZhbHNlICYmIChyYXcubmV3c2xldHRlciA9PT0gdHJ1ZSB8fCByYXcubmV3c2xldHRlciA9PT0gJ3RydWUnKSkge1xuXHRcdFx0cmF3LnN1YnNjcmliZWRUb05ld3NsZXR0ZXIgPSB0cnVlO1xuXHRcdH1cblxuXHRcdC8vIENhbXBvcyBpbnRlcm5vcy9ubyBlbnZpYWRvc1xuXHRcdGRlbGV0ZSByYXcucGhvbmU7XG5cdFx0ZGVsZXRlIHJhdy5uZXdzbGV0dGVyO1xuXHRcdGRlbGV0ZSByYXcudGVybXM7XG5cdFx0ZGVsZXRlIHJhdy5wbGFpblBhc3N3b3JkMjtcblxuXHRcdC8vIExpbXBpZXphIHNpbXBsZSBwYXJhIG5vIGVudmlhciBiYXN1cmEgdmFjw61hXG5cdFx0T2JqZWN0LmtleXMocmF3KS5mb3JFYWNoKChrZXk6IHN0cmluZykgPT4ge1xuXHRcdFx0aWYgKHJhd1trZXldID09PSAnJyB8fCByYXdba2V5XSA9PT0gbnVsbCB8fCByYXdba2V5XSA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdGRlbGV0ZSByYXdba2V5XTtcblx0XHRcdH1cblx0XHR9KTtcblxuXHRcdHJldHVybiByYXc7XG5cdH1cblxuXHR0b2dnbGVQYXNzd29yZCgpIHtcblx0XHR0aGlzLnNob3dQYXNzd29yZCA9ICF0aGlzLnNob3dQYXNzd29yZDtcblx0fVxuXG5cdHByaXZhdGUgcmVzb2x2ZVJlZ2lzdGVyRXJyb3JNZXNzYWdlKGVycm9yOiBhbnkpOiBzdHJpbmcge1xuXHRcdGNvbnN0IHN0YXR1cyA9IGVycm9yPy5zdGF0dXMgPz8gZXJyb3I/LmVycm9yPy5jb2RlO1xuXHRcdGNvbnN0IGJhY2tlbmRNZXNzYWdlID0gYCR7ZXJyb3I/LmVycm9yPy5tZXNzYWdlID8/IGVycm9yPy5tZXNzYWdlID8/ICcnfWAudG9Mb3dlckNhc2UoKTtcblxuXHRcdGlmIChzdGF0dXMgPT09IDQwOSB8fCAoYmFja2VuZE1lc3NhZ2UuaW5jbHVkZXMoJ2NhbmFsJykgJiYgYmFja2VuZE1lc3NhZ2UuaW5jbHVkZXMoJ2FjdGl2bycpKSkge1xuXHRcdFx0cmV0dXJuICdlbWFpbC1yZWdpc3Rlci1jaGFubmVsLWluYWN0aXZlJztcblx0XHR9XG5cblx0XHRpZiAoc3RhdHVzID09PSA0MDAgfHwgYmFja2VuZE1lc3NhZ2UuaW5jbHVkZXMoJ3JlZ2lzdHJhZG8nKSB8fCBiYWNrZW5kTWVzc2FnZS5pbmNsdWRlcygncmVnaXN0ZXJlZCcpKSB7XG5cdFx0XHRyZXR1cm4gJ2VtYWlsLWFscmVhZHktcmVnaXN0ZXJlZCc7XG5cdFx0fVxuXG5cdFx0cmV0dXJuICdlbWFpbC1yZWdpc3Rlci1lcnJvcic7XG5cdH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJ3LTEwMCBwbC1tZC01IHBvc2l0aW9uLXJlbGF0aXZlXCIgaWQ9XCJyZWdpc3RlclwiPlxuICA8ZGl2IGNsYXNzPVwicHktMlwiPlxuICAgICAgPGg1PkNSRUFSIENVRU5UQTwvaDU+XG4gIDwvZGl2PlxuICA8Zm9ybSBpZD1cInJlZ2lzdHJvXCIgW2Zvcm1Hcm91cF09XCJyZWdpc3RlckZvcm1cIiAoc3VibWl0KT1cInJlZ2lzdGVyKCRldmVudClcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgPGxhYmVsIGZvcj1cIlwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPk5PTUJSRTwvbGFiZWw+XG4gICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cImZpcnN0TmFtZVwiIGNsYXNzPVwiZm9ybS1jb250cm9sIHJvdW5kZWQtMFwiIHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9XCJOb21icmVcIj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICA8bGFiZWwgZm9yPVwiXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+QVBFTExJRE88L2xhYmVsPlxuICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJsYXN0TmFtZVwiIGNsYXNzPVwiZm9ybS1jb250cm9sIHJvdW5kZWQtMFwiIHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9XCJBcGVsbGlkb1wiPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgIDxsYWJlbCBmb3I9XCJcIiBjbGFzcz1cIlwiPkNPUlJFTyBFTEVDVFJPTklDTzwvbGFiZWw+XG4gICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cImVtYWlsXCIgZW1haWwgcmVxdWlyZWQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgcm91bmRlZC0wXCIgdHlwZT1cImVtYWlsXCJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJDb3JyZW8gZWxlY3Ryw7NuaWNvXCI+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgPGxhYmVsIGZvcj1cIlwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPkNPTlRSQVNFw5FBPC9sYWJlbD5cbiAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwicGxhaW5QYXNzd29yZFwiIHJlcXVpcmVkIGNsYXNzPVwiZm9ybS1jb250cm9sIHJvdW5kZWQtMFwiIHR5cGU9XCJwYXNzd29yZFwiXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiQ29udHJhc2XDsWFcIj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICA8bGFiZWwgZm9yPVwiXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+UkVQRVRJUiBDT05UUkFTRcORQTwvbGFiZWw+XG4gICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cInBsYWluUGFzc3dvcmQyXCIgcmVxdWlyZWQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgcm91bmRlZC0wXCIgdHlwZT1cInBhc3N3b3JkXCJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJSZXBldGlyIGNvbnRyYXNlw7FhXCI+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cImN1c3RvbS1jb250cm9sIGQtZmxleCBmbGV4LXJvdyBmb3JtLWNoZWNrIGN1c3RvbS1jaGVja2JveCBtci1zbS0yIG10LTQgbWItMlwiPlxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBmb3JtQ29udHJvbE5hbWU9XCJ0ZXJtc1wiIHJlcXVpcmVkIGNsYXNzPVwiY3VzdG9tLWNvbnRyb2wtaW5wdXQgZm9ybS1jaGVjay1pbnB1dFwiIG5hbWU9XCJDb2xvcjJcIlxuICAgICAgICAgICAgICBpZD1cIkNvbG9yMlwiPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImN1c3RvbS1jb250cm9sLWxhYmVsIGZmLXVidW50dS1saWdodCBmb250LXNtIGZvcm0tY2hlY2stbGFiZWxcIiBmb3I9XCJDb2xvcjJcIj4gSGVcbiAgICAgICAgICAgICAgbGXDrWRvIHkgYWNlcHRvIGxhcyBwb2zDrXRpY2FzIGRlIHByaXZhY2lkYWQgeSBsb3MgdMOpcm1pbm9zIHlcbiAgICAgICAgICAgICAgY29uZGljaW9uZXM8L2xhYmVsPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJjdXN0b20tY29udHJvbCBkLWZsZXggZmxleC1yb3cgZm9ybS1jaGVjayBjdXN0b20tY2hlY2tib3ggbXItc20tMiBtYi00XCI+XG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIGZvcm1Db250cm9sTmFtZT1cIm5ld3NsZXR0ZXJcIiBjbGFzcz1cImN1c3RvbS1jb250cm9sLWlucHV0IGZvcm0tY2hlY2staW5wdXRcIiBuYW1lPVwiQ29sb3IzXCIgaWQ9XCJDb2xvcjNcIj5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjdXN0b20tY29udHJvbC1sYWJlbCBmb3JtLWNoZWNrLWxhYmVsIGZmLXVidW50dS1saWdodCBmb250LXNtXCIgZm9yPVwiQ29sb3IzXCI+XG4gICAgICAgICAgICAgIFN1c2NyaXBjacOzbiBhbCBOZXdzbGV0dGVyPC9sYWJlbD5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiPlxuICAgICAgICAgICAgICA8YnV0dG9uIFtkaXNhYmxlZF09XCJyZWdpc3RlckZvcm0uaW52YWxpZFwiIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgcHgtNSBweS0yIGgtZml0XCI+Q1JFQVI8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICA8L2Zvcm0+XG4gIEBpZihsb2FkaW5nKXtcbiAgICA8YXBwLWxvYWRpbmctc2VjdGlvbi1lYyAvPlxuICB9XG4gIFxuPC9kaXY+XG4iXX0=
@@ -54,7 +54,8 @@ export class BlockFormContactEcComponent extends BlockEcComponent {
54
54
  this.loading = false;
55
55
  this.redirect && this._router.navigateByUrl('/home');
56
56
  }, (err) => {
57
- this._toastService.error('inquiry-error');
57
+ const status = err?.status ?? err?.error?.status;
58
+ this._toastService.error(status === 429 ? 'form-rate-limit' : 'inquiry-error');
58
59
  this.loading = false;
59
60
  });
60
61
  }
@@ -90,4 +91,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
90
91
  }], subject: [{
91
92
  type: Input
92
93
  }] } });
93
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2stZm9ybS1jb250YWN0LWVjLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVhc3ljb21tZXJjZS12MTgvc3JjL2xpYi9lYy1jb21wb25lbnRzL2Jsb2Nrcy1lYy9ibG9jay1mb3JtLWNvbnRhY3QtZWMvYmxvY2stZm9ybS1jb250YWN0LWVjLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVhc3ljb21tZXJjZS12MTgvc3JjL2xpYi9lYy1jb21wb25lbnRzL2Jsb2Nrcy1lYy9ibG9jay1mb3JtLWNvbnRhY3QtZWMvYmxvY2stZm9ybS1jb250YWN0LWVjLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUFFLFdBQVcsRUFBMEIsbUJBQW1CLEVBQUUsVUFBVSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDckcsT0FBTyxFQUFpQixXQUFXLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDaEYsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRW5GLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7OztBQVMxRCxNQUFNLE9BQU8sMkJBQTRCLFNBQVEsZ0JBQWdCO0lBQ3RDLEtBQUssQ0FBSztJQUMzQixlQUFlLENBQW9CO0lBQ25DLFFBQVEsR0FBVyxJ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QUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQ3pDLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFBO1FBQ3hCLENBQUM7SUFDTCxDQUFDO0lBRUosU0FBUyxDQUFDLEdBQU87UUFDVixJQUFJLENBQUM7WUFDRCxJQUFJLFNBQVMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNsRSxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsR0FBRSxJQUFJLENBQUM7WUFDL0IsT0FBTyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQyxJQUFJLEtBQUssQ0FBQTtRQUNoRSxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNiLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDckIsT0FBTyxLQUFLLENBQUE7UUFDaEIsQ0FBQztJQUNMLENBQUM7d0dBN0VRLDJCQUEyQjs0RkFBM0IsMkJBQTJCLHNOQ2pCeEMsc3VHQTZEQyx5RERoRGEsbUJBQW1CLDY4QkFBRSx5QkFBeUIsbUVBQUUsb0JBQW9COzs0RkFJckUsMkJBQTJCO2tCQVB2QyxTQUFTOytCQUNDLDJCQUEyQixjQUN6QixJQUFJLFdBQ0osQ0FBQyxtQkFBbUIsRUFBRSx5QkFBeUIsRUFBRSxvQkFBb0IsQ0FBQzs4QkFLeEQsS0FBSztzQkFBOUIsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBQyxJQUFJLEVBQUU7Z0JBQ2YsZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgaW5qZWN0LCBJbnB1dCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgVmFsaWRhdG9yc30gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQmxvY2tzU2VydmljZSwgRm9ybVNlcnZpY2UsIFRvYXN0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2VjLXNlcnZpY2VzJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBCbG9ja0VjQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYWJzdHJhY3Rpb25zLWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgTG9hZGluZ1NlY3Rpb25FY0NvbXBvbmVudCwgUmVDYXB0Y2hhRWNDb21wb25lbnQgfSBmcm9tICcuLi8uLi93aWRnZXRzLWVjJztcbmltcG9ydCB7IEpzb25QaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IGZpcnN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDb3JlQ29uc3RhbnRzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cyc7XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ2FwcC1ibG9jay1mb3JtLWNvbnRhY3QtZWMnLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtSZWFjdGl2ZUZvcm1zTW9kdWxlLCBMb2FkaW5nU2VjdGlvbkVjQ29tcG9uZW50LCBSZUNhcHRjaGFFY0NvbXBvbmVudF0sXG5cdHRlbXBsYXRlVXJsOiAnLi9ibG9jay1mb3JtLWNvbnRhY3QtZWMuY29tcG9uZW50Lmh0bWwnLFxuXHRzdHlsZVVybDogJy4vYmxvY2stZm9ybS1jb250YWN0LWVjLmNvbXBvbmVudC5zY3NzJ1xufSlcbmV4cG9ydCBjbGFzcyBCbG9ja0Zvcm1Db250YWN0RWNDb21wb25lbnQgZXh0ZW5kcyBCbG9ja0VjQ29tcG9uZW50IHtcblx0QElucHV0KHsgcmVxdWlyZWQ6dHJ1ZSB9KSBibG9jazphbnk7XG5cdEBJbnB1dCgpIHN1Y2Nlc3NfbWVzc2FnZTpzdHJpbmcgfCB1bmRlZmluZWQ7XG5cdEBJbnB1dCgpIHJlZGlyZWN0OmJvb2xlYW4gPSB0cnVlO1xuXHRASW5wdXQoKSBzdWJqZWN0OnN0cmluZyB8IHVuZGVmaW5lZDtcblxuXHRyZWFkb25seSBob25leXBvdENvbnRyb2xOYW1lID0gJ2hwX2VtYWlsX3ZlcmlmaWNhdGlvbic7XG5cblx0cHJpdmF0ZSBfY29udGFjdEZvcm1TZXJ2aWNlOiBGb3JtU2VydmljZSA9IGluamVjdChGb3JtU2VydmljZSlcblx0cHJpdmF0ZSBfdG9hc3RTZXJ2aWNlOlRvYXN0U2VydmljZSA9IGluamVjdChUb2FzdFNlcnZpY2UpXG5cdHByaXZhdGUgX2Zvcm1CdWlsZGVyOkZvcm1CdWlsZGVyID0gaW5qZWN0KEZvcm1CdWlsZGVyKVxuXHRwcml2YXRlIF9yb3V0ZXI6Um91dGVyID0gaW5qZWN0KFJvdXRlcilcbiAgICBwdWJsaWMgX2NvbnN0czpDb3JlQ29uc3RhbnRzU2VydmljZSA9IGluamVjdChDb3JlQ29uc3RhbnRzU2VydmljZSlcblx0XG5cdHByb3RlY3RlZCBmb3JtX2RhdGE6YW55ID0gbmV3IEZvcm1EYXRhKCk7XG5cblx0cHVibGljIGxvYWRpbmc6Ym9vbGVhbiA9IGZhbHNlO1xuXG5cdHB1YmxpYyBmb3JtID0gc2lnbmFsPEZvcm1Hcm91cD4oXG5cdFx0dGhpcy5fZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuXHRcdFx0bmFtZTogWycnLCBbXV0sXG4gICAgICAgICAgICBlbWFpbDogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgIHRlbGVwaG9uZTogWycnLCBbXV0sXG4gICAgICAgICAgICBzdWJqZWN0OiBbJycsIFtdXSxcbiAgICAgICAgICAgIGJvZHk6IFsnJywgW11dLFxuICAgICAgICAgICAgYXR0YWNobWVudDogWycnXSxcbiAgICAgICAgICAgIHJlY2FwdGNoYTogW251bGwsIFZhbGlkYXRvcnMucmVxdWlyZWRdLCAvL3Rlc3RlYXIgZXN0ZSBjYW1iaW8gZGUgbm9tYnJlXG5cdFx0XHRocF9lbWFpbF92ZXJpZmljYXRpb246IFsnJywgW11dLFxuXHRcdH0pXG4gICAgKVxuXG5cdG9uU3VibWl0KGU6YW55KTp2b2lke1xuXHRcdHRoaXMubG9hZGluZyA9IHRydWU7XG5cdFx0ZS5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdHRoaXMuc2VuZEZvcm0odGhpcy5mb3JtKCksICdpbnF1aXJ5LXNlbnQnKTtcblx0fVxuXG5cdHNlbmRGb3JtKGZvcm06YW55LCBzdWNjZXNzX21lc3NhZ2U6c3RyaW5nKXtcbiAgICAgICAgaWYgKGZvcm0udmFsaWQgJiYgKGZvcm0udmFsdWUuZW1haWwuaW5jbHVkZXMoJ0AnKSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ21haWxUZXh0JywgZm9ybS52YWx1ZS5ib2R5KVxuICAgICAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdmb3JtX2NvZGUnLCB0aGlzLmJsb2NrLmNvZGUpXG4gICAgICAgICAgICB0aGlzLnNlbmRWYWx1ZSgnbmFtZScpICYmIGZvcm1EYXRhLmFwcGVuZCgnbmFtZScsIHRoaXMuZm9ybSgpLmdldCgnbmFtZScpPy52YWx1ZSlcbiAgICAgICAgICAgIHRoaXMuc2VuZFZhbHVlKCdlbWFpbCcpICYmIGZvcm1EYXRhLmFwcGVuZCgnZW1haWwnLCB0aGlzLmZvcm0oKS5nZXQoJ2VtYWlsJyk/LnZhbHVlKVxuICAgICAgICAgICAgdGhpcy5zZW5kVmFsdWUoJ3RlbGVwaG9uZScpICYmIGZvcm1EYXRhLmFwcGVuZCgndGVsZXBob25lJywgdGhpcy5mb3JtKCkuZ2V0KCd0ZWxlcGhvbmUnKT8udmFsdWUpXG4gICAgICAgICAgICB0aGlzLnNlbmRWYWx1ZSgnc3ViamVjdCcpICYmIGZvcm1EYXRhLmFwcGVuZCgnc3ViamVjdCcsIHRoaXMuZm9ybSgpLmdldCgnc3ViamVjdCcpPy52YWx1ZSlcbiAgICAgICAgICAgIHRoaXMuc2VuZFZhbHVlKCdib2R5JykgJiYgZm9ybURhdGEuYXBwZW5kKCdib2R5JywgdGhpcy5mb3JtKCkuZ2V0KCdib2R5Jyk/LnZhbHVlKVxuICAgICAgICAgICAgdGhpcy5zZW5kVmFsdWUoJ2F0dGFjaG1lbnRzJykgJiYgZm9ybURhdGEuYXBwZW5kKCdhdHRhY2htZW50JywgdGhpcy5mb3JtKCkuZ2V0KCdhdHRhY2htZW50Jyk/LnZhbHVlKVxuXHRcdFx0Zm9ybURhdGEuYXBwZW5kKHRoaXMuaG9uZXlwb3RDb250cm9sTmFtZSwgdGhpcy5mb3JtKCkuZ2V0KHRoaXMuaG9uZXlwb3RDb250cm9sTmFtZSk/LnZhbHVlID8/ICcnKTtcblx0XHRcdGZpcnN0VmFsdWVGcm9tKHRoaXMuX2NvbnRhY3RGb3JtU2VydmljZS5zZW5kUmVzcG9uc2UoZm9ybURhdGEpKS50aGVuKFxuICAgICAgICAgICAgICAgIChyZXM6YW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybSgpLnJlc2V0KClcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdG9hc3RTZXJ2aWNlLnNob3codGhpcy5zdWNjZXNzX21lc3NhZ2UgfHwgc3VjY2Vzc19tZXNzYWdlKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWRpcmVjdCAmJiB0aGlzLl9yb3V0ZXIubmF2aWdhdGVCeVVybCgnL2hvbWUnKTtcblxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgKGVycjphbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdG9hc3RTZXJ2aWNlLmVycm9yKCdpbnF1aXJ5LWVycm9yJyk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3RvYXN0U2VydmljZS5lcnJvcignaW52YWxpZC1mb3JtJyk7XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZVxuICAgICAgICB9XG4gICAgfVxuXG5cdHNlbmRWYWx1ZShrZXk6YW55KXtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGxldCBrZXlzZWFyY2ggPSBrZXlbMF0udG9VcHBlckNhc2UoKSArIGtleS5zbGljZSgxKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgdGhpcy5fY29uc3RzLmZvcm1fc2VuZGVyPSB0cnVlO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYmxvY2sgJiYgdGhpcy5ibG9ja1snc2VuZCcgKyBrZXlzZWFyY2hdIHx8IGZhbHNlXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgICB9XG4gICAgfVxufVxuIiwiQGlmKGJsb2NrKXtcbjxkaXYgW2NsYXNzXT1cInRyaW1DbGFzc0Jsb2NrKGJsb2NrLmNvZGUpICsgJyBjb250YWluZXItZmx1aWQnXCI+XG4gICAgPGRpdiBjbGFzcz1cInJvdyBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgY29sLW1kLTEyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IHctMTAwIG0tYXV0b1wiPlxuICAgICAgICAgICAgICAgIDxoNT57e2Jsb2NrLm5hbWUgfHwgJ0RlamFub3MgdHUgY29uc3VsdGEnfX08L2g1PlxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidy0xMDBcIj57eyBibG9jay5kZXNjcmlwdGlvbiB8fCAnQ29tcGxldGEgZWwgc2lndWllbnRlIGZvcm11bGFyaW8geSByZXNwb25kZXJlbW9zIHR1IGNvbnN1bHRhIGEgbGEgYnJldmVkYWQnIH19PC9wPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm0oKVwiIChzdWJtaXQpPVwib25TdWJtaXQoJGV2ZW50KVwiIGNsYXNzPVwicG9zaXRpb24tcmVsYXRpdmVcIiA+PCEtLSAoc3VibWl0KT1cInRvYXN0Q29tcGxldGVGb3JtKCRldmVudClcIiAtLT5cbiAgICAgICAgICAgICAgICBAaWYoYmxvY2suc2VuZE5hbWUpe1xuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBtdC0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJzci1vbmx5XCIgZm9yPVwibm9tYnJlXCI+Tm9tYnJlPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJuYW1lXCIgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbSByZXF1aXJlZFwiIGlkPVwibm9tYnJlXCIgcGxhY2Vob2xkZXI9XCJOb21icmVcIj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIEBpZihibG9jay5zZW5kRW1haWwpe1xuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBtdC0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJzci1vbmx5XCIgZm9yPVwibWFpbFwiPkVtYWlsPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJlbWFpbFwiIHR5cGU9XCJlbWFpbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtIHJlcXVpcmVkXCIgaWQ9XCJtYWlsXCIgcGxhY2Vob2xkZXI9XCJFbWFpbFwiPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgQGlmKGJsb2NrLnNlbmRUZWxlcGhvbmUpe1xuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBtdC0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJzci1vbmx5XCIgZm9yPVwidGVsZWZvbm9cIj5UZWzDqWZvbm88L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cInRlbGVwaG9uZVwiIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc20gcmVxdWlyZWRcIiBpZD1cInRlbGVmb25vXCIgcGxhY2Vob2xkZXI9XCJUZWzDqWZvbm9cIj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIEBpZihibG9jay5zZW5kU3ViamVjdCl7XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIG10LTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInNyLW9ubHlcIiBmb3I9XCJzdWJqZWN0XCI+QXN1bnRvPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJzdWJqZWN0XCIgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbSByZXF1aXJlZFwiIGlkPVwic3ViamVjdFwiIHBsYWNlaG9sZGVyPVwiQXN1bnRvXCI+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBAaWYoYmxvY2suc2VuZEJvZHkpe1xuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBtdC0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJzci1vbmx5XCIgZm9yPVwibWVuc2FqZVwiPk1lbnNhamU8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIGZvcm1Db250cm9sTmFtZT1cImJvZHlcIiBuYW1lPVwibWVuc2FqZVwiIGlkPVwibWVuc2FqZSBcIiBjb2xzPVwiMzBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3M9XCI1XCIgcGxhY2Vob2xkZXI9XCJEZWphbm9zIHR1IG1lbnNhamVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbSByZXF1aXJlZFwiPjwvdGV4dGFyZWE+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm94Q29udGVuaWRvQ2FwY2hhIG1iLTMgbXQtMVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVuZWRvckNhcHRjaGFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxyZS1jYXB0Y2hhLWVjIGZvcm1Db250cm9sTmFtZT1cInJlY2FwdGNoYVwiPjwvcmUtY2FwdGNoYS1lYz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cImJ0biBidG4tZGFyayB0ZXh0LXVwcGVyY2FzZSBweC01XCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImZvcm0oKS5pbnZhbGlkXCI+RU5WSUFSPC9idXR0b24+XG4gICAgICAgICAgICAgICAgQGlmKGxvYWRpbmcpe1xuICAgICAgICAgICAgICAgICAgICAgPGFwcC1sb2FkaW5nLXNlY3Rpb24tZWMvPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZm9ybT5cbiAgICAgICAgPC9kaXY+XG5cbiAgICA8L2Rpdj5cbjwvZGl2PlxufSJdfQ==
94
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2stZm9ybS1jb250YWN0LWVjLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVhc3ljb21tZXJjZS12MTgvc3JjL2xpYi9lYy1jb21wb25lbnRzL2Jsb2Nrcy1lYy9ibG9jay1mb3JtLWNvbnRhY3QtZWMvYmxvY2stZm9ybS1jb250YWN0LWVjLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVhc3ljb21tZXJjZS12MTgvc3JjL2xpYi9lYy1jb21wb25lbnRzL2Jsb2Nrcy1lYy9ibG9jay1mb3JtLWNvbnRhY3QtZWMvYmxvY2stZm9ybS1jb250YWN0LWVjLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUFFLFdBQVcsRUFBMEIsbUJBQW1CLEVBQUUsVUFBVSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDckcsT0FBTyxFQUFpQixXQUFXLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDaEYsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRW5GLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7OztBQVMxRCxNQUFNLE9BQU8sMkJBQTRCLFNBQVEsZ0JBQWdCO0lBQ3RDLEtBQUssQ0FBSztJQUMzQixlQUFlLENBQW9CO0lBQ25DLFFBQVEsR0FBVyxJ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QUFmLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGluamVjdCwgSW5wdXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIFZhbGlkYXRvcnN9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEJsb2Nrc1NlcnZpY2UsIEZvcm1TZXJ2aWNlLCBUb2FzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9lYy1zZXJ2aWNlcyc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQmxvY2tFY0NvbXBvbmVudCB9IGZyb20gJy4uLy4uL2Fic3RyYWN0aW9ucy1jb21wb25lbnRzJztcbmltcG9ydCB7IExvYWRpbmdTZWN0aW9uRWNDb21wb25lbnQsIFJlQ2FwdGNoYUVjQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vd2lkZ2V0cy1lYyc7XG5pbXBvcnQgeyBKc29uUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ29yZUNvbnN0YW50c1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMnO1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICdhcHAtYmxvY2stZm9ybS1jb250YWN0LWVjJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbUmVhY3RpdmVGb3Jtc01vZHVsZSwgTG9hZGluZ1NlY3Rpb25FY0NvbXBvbmVudCwgUmVDYXB0Y2hhRWNDb21wb25lbnRdLFxuXHR0ZW1wbGF0ZVVybDogJy4vYmxvY2stZm9ybS1jb250YWN0LWVjLmNvbXBvbmVudC5odG1sJyxcblx0c3R5bGVVcmw6ICcuL2Jsb2NrLWZvcm0tY29udGFjdC1lYy5jb21wb25lbnQuc2Nzcydcbn0pXG5leHBvcnQgY2xhc3MgQmxvY2tGb3JtQ29udGFjdEVjQ29tcG9uZW50IGV4dGVuZHMgQmxvY2tFY0NvbXBvbmVudCB7XG5cdEBJbnB1dCh7IHJlcXVpcmVkOnRydWUgfSkgYmxvY2s6YW55O1xuXHRASW5wdXQoKSBzdWNjZXNzX21lc3NhZ2U6c3RyaW5nIHwgdW5kZWZpbmVkO1xuXHRASW5wdXQoKSByZWRpcmVjdDpib29sZWFuID0gdHJ1ZTtcblx0QElucHV0KCkgc3ViamVjdDpzdHJpbmcgfCB1bmRlZmluZWQ7XG5cblx0cmVhZG9ubHkgaG9uZXlwb3RDb250cm9sTmFtZSA9ICdocF9lbWFpbF92ZXJpZmljYXRpb24nO1xuXG5cdHByaXZhdGUgX2NvbnRhY3RGb3JtU2VydmljZTogRm9ybVNlcnZpY2UgPSBpbmplY3QoRm9ybVNlcnZpY2UpXG5cdHByaXZhdGUgX3RvYXN0U2VydmljZTpUb2FzdFNlcnZpY2UgPSBpbmplY3QoVG9hc3RTZXJ2aWNlKVxuXHRwcml2YXRlIF9mb3JtQnVpbGRlcjpGb3JtQnVpbGRlciA9IGluamVjdChGb3JtQnVpbGRlcilcblx0cHJpdmF0ZSBfcm91dGVyOlJvdXRlciA9IGluamVjdChSb3V0ZXIpXG4gICAgcHVibGljIF9jb25zdHM6Q29yZUNvbnN0YW50c1NlcnZpY2UgPSBpbmplY3QoQ29yZUNvbnN0YW50c1NlcnZpY2UpXG5cdFxuXHRwcm90ZWN0ZWQgZm9ybV9kYXRhOmFueSA9IG5ldyBGb3JtRGF0YSgpO1xuXG5cdHB1YmxpYyBsb2FkaW5nOmJvb2xlYW4gPSBmYWxzZTtcblxuXHRwdWJsaWMgZm9ybSA9IHNpZ25hbDxGb3JtR3JvdXA+KFxuXHRcdHRoaXMuX2Zvcm1CdWlsZGVyLmdyb3VwKHtcblx0XHRcdG5hbWU6IFsnJywgW11dLFxuICAgICAgICAgICAgZW1haWw6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICB0ZWxlcGhvbmU6IFsnJywgW11dLFxuICAgICAgICAgICAgc3ViamVjdDogWycnLCBbXV0sXG4gICAgICAgICAgICBib2R5OiBbJycsIFtdXSxcbiAgICAgICAgICAgIGF0dGFjaG1lbnQ6IFsnJ10sXG4gICAgICAgICAgICByZWNhcHRjaGE6IFtudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSwgLy90ZXN0ZWFyIGVzdGUgY2FtYmlvIGRlIG5vbWJyZVxuXHRcdFx0aHBfZW1haWxfdmVyaWZpY2F0aW9uOiBbJycsIFtdXSxcblx0XHR9KVxuICAgIClcblxuXHRvblN1Ym1pdChlOmFueSk6dm9pZHtcblx0XHR0aGlzLmxvYWRpbmcgPSB0cnVlO1xuXHRcdGUucHJldmVudERlZmF1bHQoKTtcblx0XHR0aGlzLnNlbmRGb3JtKHRoaXMuZm9ybSgpLCAnaW5xdWlyeS1zZW50Jyk7XG5cdH1cblxuXHRzZW5kRm9ybShmb3JtOmFueSwgc3VjY2Vzc19tZXNzYWdlOnN0cmluZyl7XG4gICAgICAgIGlmIChmb3JtLnZhbGlkICYmIChmb3JtLnZhbHVlLmVtYWlsLmluY2x1ZGVzKCdAJykpKSB7XG4gICAgICAgICAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgICAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdtYWlsVGV4dCcsIGZvcm0udmFsdWUuYm9keSlcbiAgICAgICAgICAgIGZvcm1EYXRhLmFwcGVuZCgnZm9ybV9jb2RlJywgdGhpcy5ibG9jay5jb2RlKVxuICAgICAgICAgICAgdGhpcy5zZW5kVmFsdWUoJ25hbWUnKSAmJiBmb3JtRGF0YS5hcHBlbmQoJ25hbWUnLCB0aGlzLmZvcm0oKS5nZXQoJ25hbWUnKT8udmFsdWUpXG4gICAgICAgICAgICB0aGlzLnNlbmRWYWx1ZSgnZW1haWwnKSAmJiBmb3JtRGF0YS5hcHBlbmQoJ2VtYWlsJywgdGhpcy5mb3JtKCkuZ2V0KCdlbWFpbCcpPy52YWx1ZSlcbiAgICAgICAgICAgIHRoaXMuc2VuZFZhbHVlKCd0ZWxlcGhvbmUnKSAmJiBmb3JtRGF0YS5hcHBlbmQoJ3RlbGVwaG9uZScsIHRoaXMuZm9ybSgpLmdldCgndGVsZXBob25lJyk/LnZhbHVlKVxuICAgICAgICAgICAgdGhpcy5zZW5kVmFsdWUoJ3N1YmplY3QnKSAmJiBmb3JtRGF0YS5hcHBlbmQoJ3N1YmplY3QnLCB0aGlzLmZvcm0oKS5nZXQoJ3N1YmplY3QnKT8udmFsdWUpXG4gICAgICAgICAgICB0aGlzLnNlbmRWYWx1ZSgnYm9keScpICYmIGZvcm1EYXRhLmFwcGVuZCgnYm9keScsIHRoaXMuZm9ybSgpLmdldCgnYm9keScpPy52YWx1ZSlcbiAgICAgICAgICAgIHRoaXMuc2VuZFZhbHVlKCdhdHRhY2htZW50cycpICYmIGZvcm1EYXRhLmFwcGVuZCgnYXR0YWNobWVudCcsIHRoaXMuZm9ybSgpLmdldCgnYXR0YWNobWVudCcpPy52YWx1ZSlcblx0XHRcdGZvcm1EYXRhLmFwcGVuZCh0aGlzLmhvbmV5cG90Q29udHJvbE5hbWUsIHRoaXMuZm9ybSgpLmdldCh0aGlzLmhvbmV5cG90Q29udHJvbE5hbWUpPy52YWx1ZSA/PyAnJyk7XG5cdFx0XHRmaXJzdFZhbHVlRnJvbSh0aGlzLl9jb250YWN0Rm9ybVNlcnZpY2Uuc2VuZFJlc3BvbnNlKGZvcm1EYXRhKSkudGhlbihcbiAgICAgICAgICAgICAgICAocmVzOmFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0oKS5yZXNldCgpXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3RvYXN0U2VydmljZS5zaG93KHRoaXMuc3VjY2Vzc19tZXNzYWdlIHx8IHN1Y2Nlc3NfbWVzc2FnZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVkaXJlY3QgJiYgdGhpcy5fcm91dGVyLm5hdmlnYXRlQnlVcmwoJy9ob21lJyk7XG5cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIChlcnI6YW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0YXR1cyA9IGVycj8uc3RhdHVzID8/IGVycj8uZXJyb3I/LnN0YXR1cztcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdG9hc3RTZXJ2aWNlLmVycm9yKHN0YXR1cyA9PT0gNDI5ID8gJ2Zvcm0tcmF0ZS1saW1pdCcgOiAnaW5xdWlyeS1lcnJvcicpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl90b2FzdFNlcnZpY2UuZXJyb3IoJ2ludmFsaWQtZm9ybScpO1xuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2VcbiAgICAgICAgfVxuICAgIH1cblxuXHRzZW5kVmFsdWUoa2V5OmFueSl7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBsZXQga2V5c2VhcmNoID0ga2V5WzBdLnRvVXBwZXJDYXNlKCkgKyBrZXkuc2xpY2UoMSkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgIHRoaXMuX2NvbnN0cy5mb3JtX3NlbmRlcj0gdHJ1ZTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmJsb2NrICYmIHRoaXMuYmxvY2tbJ3NlbmQnICsga2V5c2VhcmNoXSB8fCBmYWxzZVxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIkBpZihibG9jayl7XG48ZGl2IFtjbGFzc109XCJ0cmltQ2xhc3NCbG9jayhibG9jay5jb2RlKSArICcgY29udGFpbmVyLWZsdWlkJ1wiPlxuICAgIDxkaXYgY2xhc3M9XCJyb3cganVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1tZC0xMlwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyB3LTEwMCBtLWF1dG9cIj5cbiAgICAgICAgICAgICAgICA8aDU+e3tibG9jay5uYW1lIHx8ICdEZWphbm9zIHR1IGNvbnN1bHRhJ319PC9oNT5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInctMTAwXCI+e3sgYmxvY2suZGVzY3JpcHRpb24gfHwgJ0NvbXBsZXRhIGVsIHNpZ3VpZW50ZSBmb3JtdWxhcmlvIHkgcmVzcG9uZGVyZW1vcyB0dSBjb25zdWx0YSBhIGxhIGJyZXZlZGFkJyB9fTwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtKClcIiAoc3VibWl0KT1cIm9uU3VibWl0KCRldmVudClcIiBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlXCIgPjwhLS0gKHN1Ym1pdCk9XCJ0b2FzdENvbXBsZXRlRm9ybSgkZXZlbnQpXCIgLS0+XG4gICAgICAgICAgICAgICAgQGlmKGJsb2NrLnNlbmROYW1lKXtcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgbXQtMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwic3Itb25seVwiIGZvcj1cIm5vbWJyZVwiPk5vbWJyZTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwibmFtZVwiIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc20gcmVxdWlyZWRcIiBpZD1cIm5vbWJyZVwiIHBsYWNlaG9sZGVyPVwiTm9tYnJlXCI+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBAaWYoYmxvY2suc2VuZEVtYWlsKXtcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgbXQtMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwic3Itb25seVwiIGZvcj1cIm1haWxcIj5FbWFpbDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiZW1haWxcIiB0eXBlPVwiZW1haWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbSByZXF1aXJlZFwiIGlkPVwibWFpbFwiIHBsYWNlaG9sZGVyPVwiRW1haWxcIj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIEBpZihibG9jay5zZW5kVGVsZXBob25lKXtcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgbXQtMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwic3Itb25seVwiIGZvcj1cInRlbGVmb25vXCI+VGVsw6lmb25vPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJ0ZWxlcGhvbmVcIiB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtIHJlcXVpcmVkXCIgaWQ9XCJ0ZWxlZm9ub1wiIHBsYWNlaG9sZGVyPVwiVGVsw6lmb25vXCI+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBAaWYoYmxvY2suc2VuZFN1YmplY3Qpe1xuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBtdC0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJzci1vbmx5XCIgZm9yPVwic3ViamVjdFwiPkFzdW50bzwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwic3ViamVjdFwiIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc20gcmVxdWlyZWRcIiBpZD1cInN1YmplY3RcIiBwbGFjZWhvbGRlcj1cIkFzdW50b1wiPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgQGlmKGJsb2NrLnNlbmRCb2R5KXtcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgbXQtMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwic3Itb25seVwiIGZvcj1cIm1lbnNhamVcIj5NZW5zYWplPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBmb3JtQ29udHJvbE5hbWU9XCJib2R5XCIgbmFtZT1cIm1lbnNhamVcIiBpZD1cIm1lbnNhamUgXCIgY29scz1cIjMwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dzPVwiNVwiIHBsYWNlaG9sZGVyPVwiRGVqYW5vcyB0dSBtZW5zYWplXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc20gcmVxdWlyZWRcIj48L3RleHRhcmVhPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJveENvbnRlbmlkb0NhcGNoYSBtYi0zIG10LTFcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbmVkb3JDYXB0Y2hhXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cmUtY2FwdGNoYS1lYyBmb3JtQ29udHJvbE5hbWU9XCJyZWNhcHRjaGFcIj48L3JlLWNhcHRjaGEtZWM+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJidG4gYnRuLWRhcmsgdGV4dC11cHBlcmNhc2UgcHgtNVwiXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmb3JtKCkuaW52YWxpZFwiPkVOVklBUjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIEBpZihsb2FkaW5nKXtcbiAgICAgICAgICAgICAgICAgICAgIDxhcHAtbG9hZGluZy1zZWN0aW9uLWVjLz5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Zvcm0+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgPC9kaXY+XG48L2Rpdj5cbn0iXX0=
@@ -54,9 +54,13 @@ export class BlockNewsletterEcComponent {
54
54
  this._toastService.show(this.success_message || success_message);
55
55
  }
56
56
  catch (err) {
57
- if (err?.status === 400) {
57
+ const status = err?.status ?? err?.error?.status;
58
+ if (status === 400) {
58
59
  this._toastService.error('newsletter_email_already_registered');
59
60
  }
61
+ else if (status === 429) {
62
+ this._toastService.error('form-rate-limit');
63
+ }
60
64
  else {
61
65
  this._toastService.error('inquiry-error');
62
66
  }
@@ -93,4 +97,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
93
97
  }], subject: [{
94
98
  type: Input
95
99
  }] } });
96
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2stbmV3c2xldHRlci1lYy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lYXN5Y29tbWVyY2UtdjE4L3NyYy9saWIvZWMtY29tcG9uZW50cy9ibG9ja3MtZWMvYmxvY2stbmV3c2xldHRlci1lYy9ibG9jay1uZXdzbGV0dGVyLWVjLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVhc3ljb21tZXJjZS12MTgvc3JjL2xpYi9lYy1jb21wb25lbnRzL2Jsb2Nrcy1lYy9ibG9jay1uZXdzbGV0dGVyLWVjL2Jsb2NrLW5ld3NsZXR0ZXItZWMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDakUsT0FBTyxFQUFFLFdBQVcsRUFBYSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQVN0QyxNQUFNLE9BQU8sMEJBQTBCO0lBQ1osS0FBSyxDQUFLO0lBQzNCLGVBQWUsQ0FBb0I7SUFDbkMsT0FBTyxDQUFvQjtJQUUzQixtQkFBbUIsR0FBRyx1QkFBdUIsQ0FBQztJQUUvQyxtQkFBbUIsR0FBZ0IsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFBO0lBQ3RELGFBQWEsR0FBZ0IsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFBO0lBQ2pELFlBQVksR0FBZSxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUE7SUFDNUMsZUFBZSxDQUFZO0lBQzlCLE9BQU8sR0FBVyxLQUFLLENBQUM7SUFFNUI7UUFDSywwQ0FBMEM7UUFFM0MsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQztZQUMzQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDO1lBQ2QsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7WUFDaEMsU0FBUyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQztZQUNuQixPQUFPLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDO1lBQ2pCLElBQUksRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUM7WUFDZCxVQUFVLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDaEIsT0FBTyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQztZQUNqQixxQkFBcUIsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUM7WUFDL0IsS0FBSyxFQUFFLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxZQUFZLENBQUM7U0FDMUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVKLFFBQVEsQ0FBQyxDQUFLO1FBQ2IsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ25CLEtBQUssSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFRCxLQUFLLENBQUMsUUFBUSxDQUFDLElBQVEsRUFBRSxlQUFzQjtRQUM5QyxJQUFJLElBQUksQ0FBQyxPQUFPO1lBQUUsT0FBTztRQUV6QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUVwQixJQUFJLENBQUM7WUFDSixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNyRCxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQztnQkFDekMsT0FBTztZQUNSLENBQUM7WUFFRCxNQUFNLFFBQVEsR0FBRyxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQ2hDLFFBQVEsQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUE7WUFDN0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFBO1lBQzFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksUUFBUSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQTtZQUM3RSxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUE7WUFDekYsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsSUFBSSxRQUFRLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFBO1lBQ25GLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQTtZQUMxRSxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUE7WUFDN0YsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsRUFBRSxLQUFLLElBQUksRUFBRSxDQUFDLENBQUM7WUFFM0YsTUFBTSxjQUFjLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1lBQ3RFLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLENBQUE7WUFDNUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsSUFBSSxlQUFlLENBQUMsQ0FBQztRQUNsRSxDQUFDO1FBQUMsT0FBTyxHQUFRLEVBQUUsQ0FBQztZQUNuQixJQUFJLEdBQUcsRUFBRSxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLHFDQUFxQyxDQUFDLENBQUM7WUFDakUsQ0FBQztpQkFBTSxDQUFDO2dCQUNQLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQzNDLENBQUM7UUFDRixDQUFDO2dCQUFTLENBQUM7WUFDVixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUN0QixDQUFDO0lBQ0YsQ0FBQztJQUVELFNBQVMsQ0FBQyxHQUFPO1FBQ1YsSUFBSSxDQUFDO1lBQ0QsSUFBSSxTQUFTLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDbEUsT0FBTyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQyxJQUFJLEtBQUssQ0FBQTtRQUNoRSxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNiLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDckIsT0FBTyxLQUFLLENBQUE7UUFDaEIsQ0FBQztJQUNMLENBQUM7SUFHRCxtQkFBbUIsR0FBRyxDQUFDLENBQVEsRUFBRSxFQUFFO1FBQy9CLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUNuQixLQUFLLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO0lBQ2xFLENBQUMsQ0FBQTt3R0FuRlEsMEJBQTBCOzRGQUExQiwwQkFBMEIsdUtDWnZDLHFDQUNBOzs0RkRXYSwwQkFBMEI7a0JBUHRDLFNBQVM7K0JBQ0MseUJBQXlCLGNBQ3ZCLElBQUksV0FDUCxFQUFFO3dEQUtlLEtBQUs7c0JBQTlCLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUMsSUFBSSxFQUFFO2dCQUNmLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBpbmplY3QsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtU2VydmljZSwgVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vZWMtc2VydmljZXMnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGZpcnN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ2FwcC1ibG9jay1uZXdzbGV0dGVyLWVjJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0aW1wb3J0czogW10sXG5cdHRlbXBsYXRlVXJsOiAnLi9ibG9jay1uZXdzbGV0dGVyLWVjLmNvbXBvbmVudC5odG1sJyxcblx0c3R5bGVVcmw6ICcuL2Jsb2NrLW5ld3NsZXR0ZXItZWMuY29tcG9uZW50LnNjc3MnXG59KVxuZXhwb3J0IGNsYXNzIEJsb2NrTmV3c2xldHRlckVjQ29tcG9uZW50IHtcblx0QElucHV0KHsgcmVxdWlyZWQ6dHJ1ZSB9KSBibG9jazphbnk7XG5cdEBJbnB1dCgpIHN1Y2Nlc3NfbWVzc2FnZTpzdHJpbmcgfCB1bmRlZmluZWQ7XG5cdEBJbnB1dCgpIHN1YmplY3Q6c3RyaW5nIHwgdW5kZWZpbmVkO1xuXG5cdHJlYWRvbmx5IGhvbmV5cG90Q29udHJvbE5hbWUgPSAnaHBfZW1haWxfdmVyaWZpY2F0aW9uJztcblxuXHRwcml2YXRlIF9jb250YWN0Rm9ybVNlcnZpY2U6IEZvcm1TZXJ2aWNlID0gaW5qZWN0KEZvcm1TZXJ2aWNlKVxuXHRwcml2YXRlIF90b2FzdFNlcnZpY2U6VG9hc3RTZXJ2aWNlID0gaW5qZWN0KFRvYXN0U2VydmljZSlcblx0cHJpdmF0ZSBfZm9ybUJ1aWxkZXI6Rm9ybUJ1aWxkZXIgPSBpbmplY3QoRm9ybUJ1aWxkZXIpXG4gICAgcHVibGljIG5ld3NsZXR0ZXJfZm9ybTogRm9ybUdyb3VwO1xuXHRwdWJsaWMgbG9hZGluZzpib29sZWFuID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgIC8vIExsYW1hciBhbCBjb25zdHJ1Y3RvciBkZSBsYSBjbGFzZSBwYWRyZVxuICAgIFxuICAgICAgICB0aGlzLm5ld3NsZXR0ZXJfZm9ybSA9IHRoaXMuX2Zvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgICAgICAgIG5hbWU6IFsnJywgW11dLFxuICAgICAgICAgICAgZW1haWw6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICB0ZWxlcGhvbmU6IFsnJywgW11dLFxuICAgICAgICAgICAgc3ViamVjdDogWycnLCBbXV0sXG4gICAgICAgICAgICBib2R5OiBbJycsIFtdXSxcbiAgICAgICAgICAgIGF0dGFjaG1lbnQ6IFsnJ10sXG4gICAgICAgICAgICBjYXB0Y2hhOiBbJycsIFtdXSxcbiAgICAgICAgICAgIGhwX2VtYWlsX3ZlcmlmaWNhdGlvbjogWycnLCBbXV0sXG4gICAgICAgICAgICB0ZXJtczogW2ZhbHNlLCBWYWxpZGF0b3JzLnJlcXVpcmVkVHJ1ZV1cbiAgICAgICAgfSk7XG4gICAgfVxuXG5cdG9uU3VibWl0KGU6YW55KTp2b2lke1xuXHRcdGUucHJldmVudERlZmF1bHQoKTtcblx0XHR2b2lkIHRoaXMuc2VuZEZvcm0odGhpcy5uZXdzbGV0dGVyX2Zvcm0sICdpbnF1aXJ5LXNlbnQnKTtcblx0fVxuXG5cdGFzeW5jIHNlbmRGb3JtKGZvcm06YW55LCBzdWNjZXNzX21lc3NhZ2U6c3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0aWYgKHRoaXMubG9hZGluZykgcmV0dXJuO1xuXG5cdFx0dGhpcy5sb2FkaW5nID0gdHJ1ZTtcblxuXHRcdHRyeSB7XG5cdFx0XHRpZiAoIWZvcm0udmFsaWQgfHwgIWZvcm0udmFsdWUuZW1haWw/LmluY2x1ZGVzKCdAJykpIHtcblx0XHRcdFx0dGhpcy5fdG9hc3RTZXJ2aWNlLmVycm9yKCdpbnZhbGlkLWZvcm0nKTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuXHRcdFx0Zm9ybURhdGEuYXBwZW5kKCdmb3JtX2NvZGUnLCB0aGlzLmJsb2NrLmNvZGUpXG5cdFx0XHR0aGlzLnNlbmRWYWx1ZSgnbmFtZScpICYmIGZvcm1EYXRhLmFwcGVuZCgnbmFtZScsIGZvcm0uZ2V0KCduYW1lJyk/LnZhbHVlKVxuXHRcdFx0dGhpcy5zZW5kVmFsdWUoJ2VtYWlsJykgJiYgZm9ybURhdGEuYXBwZW5kKCdlbWFpbCcsIGZvcm0uZ2V0KCdlbWFpbCcpPy52YWx1ZSlcblx0XHRcdHRoaXMuc2VuZFZhbHVlKCd0ZWxlcGhvbmUnKSAmJiBmb3JtRGF0YS5hcHBlbmQoJ3RlbGVwaG9uZScsIGZvcm0uZ2V0KCd0ZWxlcGhvbmUnKT8udmFsdWUpXG5cdFx0XHR0aGlzLnNlbmRWYWx1ZSgnc3ViamVjdCcpICYmIGZvcm1EYXRhLmFwcGVuZCgnc3ViamVjdCcsIGZvcm0uZ2V0KCdzdWJqZWN0Jyk/LnZhbHVlKVxuXHRcdFx0dGhpcy5zZW5kVmFsdWUoJ2JvZHknKSAmJiBmb3JtRGF0YS5hcHBlbmQoJ2JvZHknLCBmb3JtLmdldCgnYm9keScpPy52YWx1ZSlcblx0XHRcdHRoaXMuc2VuZFZhbHVlKCdhdHRhY2htZW50cycpICYmIGZvcm1EYXRhLmFwcGVuZCgnYXR0YWNobWVudCcsIGZvcm0uZ2V0KCdhdHRhY2htZW50Jyk/LnZhbHVlKVxuXHRcdFx0Zm9ybURhdGEuYXBwZW5kKHRoaXMuaG9uZXlwb3RDb250cm9sTmFtZSwgZm9ybS5nZXQodGhpcy5ob25leXBvdENvbnRyb2xOYW1lKT8udmFsdWUgPz8gJycpO1xuXG5cdFx0XHRhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLl9jb250YWN0Rm9ybVNlcnZpY2Uuc2VuZFJlc3BvbnNlKGZvcm1EYXRhKSk7XG5cdFx0XHR0aGlzLm5ld3NsZXR0ZXJfZm9ybS5yZXNldCgpXG5cdFx0XHR0aGlzLl90b2FzdFNlcnZpY2Uuc2hvdyh0aGlzLnN1Y2Nlc3NfbWVzc2FnZSB8fCBzdWNjZXNzX21lc3NhZ2UpO1xuXHRcdH0gY2F0Y2ggKGVycjogYW55KSB7XG5cdFx0XHRpZiAoZXJyPy5zdGF0dXMgPT09IDQwMCkge1xuXHRcdFx0XHR0aGlzLl90b2FzdFNlcnZpY2UuZXJyb3IoJ25ld3NsZXR0ZXJfZW1haWxfYWxyZWFkeV9yZWdpc3RlcmVkJyk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR0aGlzLl90b2FzdFNlcnZpY2UuZXJyb3IoJ2lucXVpcnktZXJyb3InKTtcblx0XHRcdH1cblx0XHR9IGZpbmFsbHkge1xuXHRcdFx0dGhpcy5sb2FkaW5nID0gZmFsc2U7XG5cdFx0fVxuXHR9XG5cblx0c2VuZFZhbHVlKGtleTphbnkpe1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgbGV0IGtleXNlYXJjaCA9IGtleVswXS50b1VwcGVyQ2FzZSgpICsga2V5LnNsaWNlKDEpLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5ibG9jayAmJiB0aGlzLmJsb2NrWydzZW5kJyArIGtleXNlYXJjaF0gfHwgZmFsc2VcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBcbiAgICB0b2FzdE5ld3NsZXR0ZXJGb3JtID0gKGU6IEV2ZW50KSA9PiB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdm9pZCB0aGlzLnNlbmRGb3JtKHRoaXMubmV3c2xldHRlcl9mb3JtLCAnbmV3c2xldHRlci10aGFua3MnKTtcbiAgICB9XG5cbn1cbiIsIjxwPmJsb2NrLW5ld3NsZXR0ZXItZWMgd29ya3MhPC9wPlxuIl19
100
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2stbmV3c2xldHRlci1lYy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lYXN5Y29tbWVyY2UtdjE4L3NyYy9saWIvZWMtY29tcG9uZW50cy9ibG9ja3MtZWMvYmxvY2stbmV3c2xldHRlci1lYy9ibG9jay1uZXdzbGV0dGVyLWVjLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVhc3ljb21tZXJjZS12MTgvc3JjL2xpYi9lYy1jb21wb25lbnRzL2Jsb2Nrcy1lYy9ibG9jay1uZXdzbGV0dGVyLWVjL2Jsb2NrLW5ld3NsZXR0ZXItZWMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDakUsT0FBTyxFQUFFLFdBQVcsRUFBYSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQVN0QyxNQUFNLE9BQU8sMEJBQTBCO0lBQ1osS0FBSyxDQUFLO0lBQzNCLGVBQWUsQ0FBb0I7SUFDbkMsT0FBTyxDQUFvQjtJQUUzQixtQkFBbUIsR0FBRyx1QkFBdUIsQ0FBQztJQUUvQyxtQkFBbUIsR0FBZ0IsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFBO0lBQ3RELGFBQWEsR0FBZ0IsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFBO0lBQ2pELFlBQVksR0FBZSxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUE7SUFDNUMsZUFBZSxDQUFZO0lBQzlCLE9BQU8sR0FBVyxLQUFLLENBQUM7SUFFNUI7UUFDSywwQ0FBMEM7UUFFM0MsSUFBSSxDQUFDLGVBQWUs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QTtRQUNoRSxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNiLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDckIsT0FBTyxLQUFLLENBQUE7UUFDaEIsQ0FBQztJQUNMLENBQUM7SUFHRCxtQkFBbUIsR0FBRyxDQUFDLENBQVEsRUFBRSxFQUFFO1FBQy9CLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUNuQixLQUFLLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO0lBQ2xFLENBQUMsQ0FBQTt3R0F0RlEsMEJBQTBCOzRGQUExQiwwQkFBMEIsdUtDWnZDLHFDQUNBOzs0RkRXYSwwQkFBMEI7a0JBUHRDLFNBQVM7K0JBQ0MseUJBQXlCLGNBQ3ZCLElBQUksV0FDUCxFQUFFO3dEQUtlLEtBQUs7c0JBQTlCLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUMsSUFBSSxFQUFFO2dCQUNmLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBpbmplY3QsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtU2VydmljZSwgVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vZWMtc2VydmljZXMnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGZpcnN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ2FwcC1ibG9jay1uZXdzbGV0dGVyLWVjJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0aW1wb3J0czogW10sXG5cdHRlbXBsYXRlVXJsOiAnLi9ibG9jay1uZXdzbGV0dGVyLWVjLmNvbXBvbmVudC5odG1sJyxcblx0c3R5bGVVcmw6ICcuL2Jsb2NrLW5ld3NsZXR0ZXItZWMuY29tcG9uZW50LnNjc3MnXG59KVxuZXhwb3J0IGNsYXNzIEJsb2NrTmV3c2xldHRlckVjQ29tcG9uZW50IHtcblx0QElucHV0KHsgcmVxdWlyZWQ6dHJ1ZSB9KSBibG9jazphbnk7XG5cdEBJbnB1dCgpIHN1Y2Nlc3NfbWVzc2FnZTpzdHJpbmcgfCB1bmRlZmluZWQ7XG5cdEBJbnB1dCgpIHN1YmplY3Q6c3RyaW5nIHwgdW5kZWZpbmVkO1xuXG5cdHJlYWRvbmx5IGhvbmV5cG90Q29udHJvbE5hbWUgPSAnaHBfZW1haWxfdmVyaWZpY2F0aW9uJztcblxuXHRwcml2YXRlIF9jb250YWN0Rm9ybVNlcnZpY2U6IEZvcm1TZXJ2aWNlID0gaW5qZWN0KEZvcm1TZXJ2aWNlKVxuXHRwcml2YXRlIF90b2FzdFNlcnZpY2U6VG9hc3RTZXJ2aWNlID0gaW5qZWN0KFRvYXN0U2VydmljZSlcblx0cHJpdmF0ZSBfZm9ybUJ1aWxkZXI6Rm9ybUJ1aWxkZXIgPSBpbmplY3QoRm9ybUJ1aWxkZXIpXG4gICAgcHVibGljIG5ld3NsZXR0ZXJfZm9ybTogRm9ybUdyb3VwO1xuXHRwdWJsaWMgbG9hZGluZzpib29sZWFuID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgIC8vIExsYW1hciBhbCBjb25zdHJ1Y3RvciBkZSBsYSBjbGFzZSBwYWRyZVxuICAgIFxuICAgICAgICB0aGlzLm5ld3NsZXR0ZXJfZm9ybSA9IHRoaXMuX2Zvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgICAgICAgIG5hbWU6IFsnJywgW11dLFxuICAgICAgICAgICAgZW1haWw6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICAgICB0ZWxlcGhvbmU6IFsnJywgW11dLFxuICAgICAgICAgICAgc3ViamVjdDogWycnLCBbXV0sXG4gICAgICAgICAgICBib2R5OiBbJycsIFtdXSxcbiAgICAgICAgICAgIGF0dGFjaG1lbnQ6IFsnJ10sXG4gICAgICAgICAgICBjYXB0Y2hhOiBbJycsIFtdXSxcbiAgICAgICAgICAgIGhwX2VtYWlsX3ZlcmlmaWNhdGlvbjogWycnLCBbXV0sXG4gICAgICAgICAgICB0ZXJtczogW2ZhbHNlLCBWYWxpZGF0b3JzLnJlcXVpcmVkVHJ1ZV1cbiAgICAgICAgfSk7XG4gICAgfVxuXG5cdG9uU3VibWl0KGU6YW55KTp2b2lke1xuXHRcdGUucHJldmVudERlZmF1bHQoKTtcblx0XHR2b2lkIHRoaXMuc2VuZEZvcm0odGhpcy5uZXdzbGV0dGVyX2Zvcm0sICdpbnF1aXJ5LXNlbnQnKTtcblx0fVxuXG5cdGFzeW5jIHNlbmRGb3JtKGZvcm06YW55LCBzdWNjZXNzX21lc3NhZ2U6c3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0aWYgKHRoaXMubG9hZGluZykgcmV0dXJuO1xuXG5cdFx0dGhpcy5sb2FkaW5nID0gdHJ1ZTtcblxuXHRcdHRyeSB7XG5cdFx0XHRpZiAoIWZvcm0udmFsaWQgfHwgIWZvcm0udmFsdWUuZW1haWw/LmluY2x1ZGVzKCdAJykpIHtcblx0XHRcdFx0dGhpcy5fdG9hc3RTZXJ2aWNlLmVycm9yKCdpbnZhbGlkLWZvcm0nKTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuXHRcdFx0Zm9ybURhdGEuYXBwZW5kKCdmb3JtX2NvZGUnLCB0aGlzLmJsb2NrLmNvZGUpXG5cdFx0XHR0aGlzLnNlbmRWYWx1ZSgnbmFtZScpICYmIGZvcm1EYXRhLmFwcGVuZCgnbmFtZScsIGZvcm0uZ2V0KCduYW1lJyk/LnZhbHVlKVxuXHRcdFx0dGhpcy5zZW5kVmFsdWUoJ2VtYWlsJykgJiYgZm9ybURhdGEuYXBwZW5kKCdlbWFpbCcsIGZvcm0uZ2V0KCdlbWFpbCcpPy52YWx1ZSlcblx0XHRcdHRoaXMuc2VuZFZhbHVlKCd0ZWxlcGhvbmUnKSAmJiBmb3JtRGF0YS5hcHBlbmQoJ3RlbGVwaG9uZScsIGZvcm0uZ2V0KCd0ZWxlcGhvbmUnKT8udmFsdWUpXG5cdFx0XHR0aGlzLnNlbmRWYWx1ZSgnc3ViamVjdCcpICYmIGZvcm1EYXRhLmFwcGVuZCgnc3ViamVjdCcsIGZvcm0uZ2V0KCdzdWJqZWN0Jyk/LnZhbHVlKVxuXHRcdFx0dGhpcy5zZW5kVmFsdWUoJ2JvZHknKSAmJiBmb3JtRGF0YS5hcHBlbmQoJ2JvZHknLCBmb3JtLmdldCgnYm9keScpPy52YWx1ZSlcblx0XHRcdHRoaXMuc2VuZFZhbHVlKCdhdHRhY2htZW50cycpICYmIGZvcm1EYXRhLmFwcGVuZCgnYXR0YWNobWVudCcsIGZvcm0uZ2V0KCdhdHRhY2htZW50Jyk/LnZhbHVlKVxuXHRcdFx0Zm9ybURhdGEuYXBwZW5kKHRoaXMuaG9uZXlwb3RDb250cm9sTmFtZSwgZm9ybS5nZXQodGhpcy5ob25leXBvdENvbnRyb2xOYW1lKT8udmFsdWUgPz8gJycpO1xuXG5cdFx0XHRhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLl9jb250YWN0Rm9ybVNlcnZpY2Uuc2VuZFJlc3BvbnNlKGZvcm1EYXRhKSk7XG5cdFx0XHR0aGlzLm5ld3NsZXR0ZXJfZm9ybS5yZXNldCgpXG5cdFx0XHR0aGlzLl90b2FzdFNlcnZpY2Uuc2hvdyh0aGlzLnN1Y2Nlc3NfbWVzc2FnZSB8fCBzdWNjZXNzX21lc3NhZ2UpO1xuXHRcdH0gY2F0Y2ggKGVycjogYW55KSB7XG5cdFx0XHRjb25zdCBzdGF0dXMgPSBlcnI/LnN0YXR1cyA/PyBlcnI/LmVycm9yPy5zdGF0dXM7XG5cdFx0XHRpZiAoc3RhdHVzID09PSA0MDApIHtcblx0XHRcdFx0dGhpcy5fdG9hc3RTZXJ2aWNlLmVycm9yKCduZXdzbGV0dGVyX2VtYWlsX2FscmVhZHlfcmVnaXN0ZXJlZCcpO1xuXHRcdFx0fSBlbHNlIGlmIChzdGF0dXMgPT09IDQyOSkge1xuXHRcdFx0XHR0aGlzLl90b2FzdFNlcnZpY2UuZXJyb3IoJ2Zvcm0tcmF0ZS1saW1pdCcpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dGhpcy5fdG9hc3RTZXJ2aWNlLmVycm9yKCdpbnF1aXJ5LWVycm9yJyk7XG5cdFx0XHR9XG5cdFx0fSBmaW5hbGx5IHtcblx0XHRcdHRoaXMubG9hZGluZyA9IGZhbHNlO1xuXHRcdH1cblx0fVxuXG5cdHNlbmRWYWx1ZShrZXk6YW55KXtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGxldCBrZXlzZWFyY2ggPSBrZXlbMF0udG9VcHBlckNhc2UoKSArIGtleS5zbGljZSgxKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYmxvY2sgJiYgdGhpcy5ibG9ja1snc2VuZCcgKyBrZXlzZWFyY2hdIHx8IGZhbHNlXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgXG4gICAgdG9hc3ROZXdzbGV0dGVyRm9ybSA9IChlOiBFdmVudCkgPT4ge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHZvaWQgdGhpcy5zZW5kRm9ybSh0aGlzLm5ld3NsZXR0ZXJfZm9ybSwgJ25ld3NsZXR0ZXItdGhhbmtzJyk7XG4gICAgfVxuXG59XG4iLCI8cD5ibG9jay1uZXdzbGV0dGVyLWVjIHdvcmtzITwvcD5cbiJdfQ==