ng-easycommerce-v18 0.3.14-beta.1 → 0.3.14-beta.11
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 +26 -0
- package/esm2022/lib/constants/api.constants.service.mjs +17 -5
- package/esm2022/lib/constants/core.constants.service.mjs +2 -2
- package/esm2022/lib/ec-components/abstractions-components/menu-ec.component.mjs +17 -1
- package/esm2022/lib/ec-components/auth-ec/login-form-ec/login-form-ec.component.mjs +20 -12
- package/esm2022/lib/ec-components/auth-ec/password-reset-ec/password-reset-ec.component.mjs +8 -2
- package/esm2022/lib/ec-components/auth-ec/register-form-ec/register-form-ec.component.mjs +5 -1
- package/esm2022/lib/ec-components/cart-ec/cart-item-ec/cart-item-ec.component.mjs +6 -2
- package/esm2022/lib/ec-components/checkout-ec/payment-ec/payment-methods/mp-redirect-ec/mp-redirect-ec.component.mjs +141 -75
- package/esm2022/lib/ec-components/filters-ec/filters-ec.component.mjs +30 -5
- package/esm2022/lib/ec-components/header-ec/header-ec.component.mjs +23 -3
- package/esm2022/lib/ec-components/product-detail-ec/product-detail-ec.component.mjs +11 -10
- package/esm2022/lib/ec-components/product-ec/product-ec.component.mjs +95 -5
- package/esm2022/lib/ec-components/stores-ec/stores-ec.component.mjs +21 -6
- package/esm2022/lib/ec-components/widgets-ec/decidir-ec/decidir-ec.component.mjs +52 -28
- package/esm2022/lib/ec-components/widgets-ec/index.mjs +2 -1
- package/esm2022/lib/ec-components/widgets-ec/redsys-catch-ec/redsys-catch-ec.component.mjs +193 -0
- package/esm2022/lib/ec-services/analytics/google-analytics.service.mjs +4 -2
- package/esm2022/lib/ec-services/analytics/gtm.service.mjs +6 -3
- package/esm2022/lib/ec-services/analytics/metricool-pixel.service.mjs +4 -2
- package/esm2022/lib/ec-services/local-storage.service.mjs +21 -7
- package/esm2022/lib/ec-services/ngx-local-storage.service.mjs +24 -7
- package/esm2022/lib/interfaces/filter.mjs +1 -1
- package/esm2022/lib/interfaces/options.mjs +1 -1
- package/fesm2022/ng-easycommerce-v18.mjs +728 -221
- package/fesm2022/ng-easycommerce-v18.mjs.map +1 -1
- package/lib/constants/api.constants.service.d.ts +5 -1
- package/lib/ec-components/abstractions-components/menu-ec.component.d.ts +12 -0
- package/lib/ec-components/auth-ec/login-form-ec/login-form-ec.component.d.ts +3 -0
- package/lib/ec-components/auth-ec/password-reset-ec/password-reset-ec.component.d.ts +1 -0
- package/lib/ec-components/auth-ec/register-form-ec/register-form-ec.component.d.ts +2 -0
- package/lib/ec-components/cart-ec/cart-item-ec/cart-item-ec.component.d.ts +5 -0
- package/lib/ec-components/checkout-ec/payment-ec/payment-methods/mp-redirect-ec/mp-redirect-ec.component.d.ts +38 -16
- package/lib/ec-components/filters-ec/filters-ec.component.d.ts +12 -4
- package/lib/ec-components/header-ec/header-ec.component.d.ts +5 -1
- package/lib/ec-components/product-ec/product-ec.component.d.ts +10 -1
- package/lib/ec-components/stores-ec/stores-ec.component.d.ts +2 -1
- package/lib/ec-components/widgets-ec/decidir-ec/decidir-ec.component.d.ts +6 -0
- package/lib/ec-components/widgets-ec/index.d.ts +1 -0
- package/lib/ec-components/widgets-ec/redsys-catch-ec/redsys-catch-ec.component.d.ts +47 -0
- package/lib/ec-services/local-storage.service.d.ts +4 -2
- package/lib/ec-services/ngx-local-storage.service.d.ts +4 -2
- package/lib/interfaces/filter.d.ts +1 -0
- package/lib/interfaces/options.d.ts +2 -0
- package/package.json +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Component, Output, Input, EventEmitter } from '@angular/core';
|
|
2
|
-
import { CommonModule } from '@angular/common';
|
|
1
|
+
import { Component, Output, Input, EventEmitter, inject, PLATFORM_ID } from '@angular/core';
|
|
2
|
+
import { CommonModule, isPlatformBrowser } from '@angular/common';
|
|
3
3
|
import { FormsModule } from '@angular/forms';
|
|
4
4
|
import { ComponentHelper } from "../../../classes/component-helper";
|
|
5
5
|
import { LoadingFullEcComponent } from '../loading';
|
|
@@ -39,6 +39,12 @@ export class DecidirEcComponent extends ComponentHelper {
|
|
|
39
39
|
params;
|
|
40
40
|
showModal = false;
|
|
41
41
|
dataRedirect = () => this.apiConsts.getUrlBase() + 'shop-api/' + this.consts.getChannel() + '/decidir/' + this.cartService.cartToken + '/process-payment';
|
|
42
|
+
platformId = inject(PLATFORM_ID);
|
|
43
|
+
isBrowser = isPlatformBrowser(this.platformId);
|
|
44
|
+
windowRef = this.isBrowser ? window : null;
|
|
45
|
+
localStorageRef = this.windowRef?.localStorage ?? null;
|
|
46
|
+
sessionStorageRef = this.windowRef?.sessionStorage ?? null;
|
|
47
|
+
messageListener = (event) => this.handleIframeMessage(event);
|
|
42
48
|
constructor(renderer, connection, toastrService, consts, apiConsts, cartService, activedRoute, sanitizer, paramsService) {
|
|
43
49
|
super();
|
|
44
50
|
this.renderer = renderer;
|
|
@@ -63,32 +69,38 @@ export class DecidirEcComponent extends ComponentHelper {
|
|
|
63
69
|
}
|
|
64
70
|
ngOnDestroy() {
|
|
65
71
|
// Remover el listener de mensajes
|
|
66
|
-
|
|
72
|
+
if (this.isBrowser && this.windowRef) {
|
|
73
|
+
this.windowRef.removeEventListener('message', this.messageListener, false);
|
|
74
|
+
}
|
|
67
75
|
// console.log("SE DESTROZA");
|
|
68
76
|
}
|
|
69
77
|
ngOnChanges() {
|
|
70
78
|
// console.log("SE CAMBIO");
|
|
71
79
|
}
|
|
72
80
|
openModal() {
|
|
81
|
+
if (!this.isBrowser || !this.localStorageRef)
|
|
82
|
+
return;
|
|
73
83
|
this.clearStorageState();
|
|
74
|
-
|
|
75
|
-
|
|
84
|
+
this.localStorageRef.setItem('dataRedirect', this.dataRedirect());
|
|
85
|
+
this.localStorageRef.setItem('dataDecidir', JSON.stringify({
|
|
76
86
|
...this.method,
|
|
77
87
|
total_amount: this.total_amount
|
|
78
88
|
}));
|
|
79
|
-
|
|
89
|
+
this.localStorageRef.setItem('subtotal', this.total_amount.toString());
|
|
80
90
|
this.showModal = true;
|
|
81
91
|
this.closeModal = '';
|
|
82
92
|
this.callState();
|
|
83
93
|
}
|
|
84
94
|
clearStorageState = () => {
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
95
|
+
if (!this.isBrowser)
|
|
96
|
+
return;
|
|
97
|
+
this.sessionStorageRef?.removeItem('state');
|
|
98
|
+
this.localStorageRef?.removeItem('state');
|
|
99
|
+
this.localStorageRef?.removeItem('dataRedirect');
|
|
100
|
+
this.localStorageRef?.removeItem('dataDecidir');
|
|
101
|
+
this.localStorageRef?.removeItem('message');
|
|
102
|
+
this.localStorageRef?.removeItem('subMessage');
|
|
103
|
+
this.localStorageRef?.removeItem('subtotal');
|
|
92
104
|
};
|
|
93
105
|
clickClose = () => {
|
|
94
106
|
this.closeModal = 'cancel';
|
|
@@ -96,14 +108,18 @@ export class DecidirEcComponent extends ComponentHelper {
|
|
|
96
108
|
this.processError('Se cancelo el pago con Decidir');
|
|
97
109
|
};
|
|
98
110
|
showMessage = () => {
|
|
99
|
-
|
|
100
|
-
|
|
111
|
+
if (!this.isBrowser || !this.localStorageRef)
|
|
112
|
+
return;
|
|
113
|
+
let message = this.localStorageRef.getItem('message') || undefined;
|
|
114
|
+
let subMessage = this.localStorageRef.getItem('subMessage') || undefined;
|
|
101
115
|
message && this.toastrService.show(message, {}, '', { closeButton: true, timeOut: 6000 });
|
|
102
116
|
subMessage && this.toastrService.show(subMessage, {}, '', { closeButton: true, timeOut: 6000 });
|
|
103
117
|
};
|
|
104
118
|
callState = () => {
|
|
119
|
+
if (!this.isBrowser || !this.localStorageRef)
|
|
120
|
+
return;
|
|
105
121
|
try {
|
|
106
|
-
let state = this.closeModal != '' ? this.closeModal :
|
|
122
|
+
let state = this.closeModal != '' ? this.closeModal : this.localStorageRef.getItem('state');
|
|
107
123
|
this.loading = true;
|
|
108
124
|
state && this.showMessage();
|
|
109
125
|
if (state) {
|
|
@@ -138,16 +154,20 @@ export class DecidirEcComponent extends ComponentHelper {
|
|
|
138
154
|
// console.log("ERROR ENVIO BACK ", err);
|
|
139
155
|
};
|
|
140
156
|
getCheckoutDecidir = () => {
|
|
157
|
+
if (!this.isBrowser)
|
|
158
|
+
return;
|
|
141
159
|
this.loading = true;
|
|
142
160
|
this.dataDecidir = this.method;
|
|
143
161
|
this.url = this.sanitizer.bypassSecurityTrustResourceUrl('assets/decidirFormEc.html');
|
|
144
162
|
this.loading = false;
|
|
145
163
|
// Escuchar mensajes del iframe para manejar la comunicación
|
|
146
|
-
|
|
164
|
+
this.windowRef?.addEventListener('message', this.messageListener, false);
|
|
147
165
|
};
|
|
148
166
|
handleIframeMessage = (event) => {
|
|
149
167
|
// Verificar el origen por seguridad
|
|
150
|
-
if (
|
|
168
|
+
if (!this.isBrowser || !this.windowRef)
|
|
169
|
+
return;
|
|
170
|
+
if (event.origin !== this.windowRef.location.origin) {
|
|
151
171
|
return;
|
|
152
172
|
}
|
|
153
173
|
if (event.data && event.data.type === 'DECIDIR_PAYMENT') {
|
|
@@ -156,6 +176,8 @@ export class DecidirEcComponent extends ComponentHelper {
|
|
|
156
176
|
}
|
|
157
177
|
};
|
|
158
178
|
processPayment = (paymentData) => {
|
|
179
|
+
if (!this.isBrowser)
|
|
180
|
+
return;
|
|
159
181
|
this.loading = true;
|
|
160
182
|
this.connection.post('shop-api/' + this.consts.getChannel() + '/decidir/' + this.cartService.cartToken + '/process-payment')
|
|
161
183
|
.subscribe({
|
|
@@ -163,41 +185,43 @@ export class DecidirEcComponent extends ComponentHelper {
|
|
|
163
185
|
this.loading = false;
|
|
164
186
|
// console.log('Respuesta del backend:', response);
|
|
165
187
|
if (response.status === 'approved' || response.status === 'partially_authorized') {
|
|
166
|
-
|
|
188
|
+
this.localStorageRef?.setItem('state', response.status === 'approved' ? 'success' : 'partially_authorized');
|
|
167
189
|
if (response.message)
|
|
168
|
-
|
|
190
|
+
this.localStorageRef?.setItem('message', response.message);
|
|
169
191
|
if (response.subMessage)
|
|
170
|
-
|
|
192
|
+
this.localStorageRef?.setItem('subMessage', response.subMessage);
|
|
171
193
|
this.callState();
|
|
172
194
|
}
|
|
173
195
|
else {
|
|
174
|
-
|
|
196
|
+
this.localStorageRef?.setItem('state', 'failure');
|
|
175
197
|
if (response.message)
|
|
176
|
-
|
|
198
|
+
this.localStorageRef?.setItem('message', response.message);
|
|
177
199
|
if (response.subMessage)
|
|
178
|
-
|
|
200
|
+
this.localStorageRef?.setItem('subMessage', response.subMessage);
|
|
179
201
|
this.callState();
|
|
180
202
|
}
|
|
181
203
|
},
|
|
182
204
|
error: (error) => {
|
|
183
205
|
this.loading = false;
|
|
184
206
|
console.error('Error processing payment:', error);
|
|
185
|
-
|
|
207
|
+
this.localStorageRef?.setItem('state', 'failure');
|
|
186
208
|
this.processError('Error al procesar el pago');
|
|
187
209
|
this.callState();
|
|
188
210
|
}
|
|
189
211
|
});
|
|
190
212
|
};
|
|
191
213
|
resizeIframe = (obj) => {
|
|
214
|
+
if (!this.isBrowser || typeof document === 'undefined' || !obj.contentWindow || !obj.contentWindow.document)
|
|
215
|
+
return;
|
|
192
216
|
obj.style.height = obj.contentWindow.document.body.scrollHeight + 'px';
|
|
193
217
|
obj.style.width = obj.contentWindow.document.body.scrollWidth + 'px';
|
|
194
218
|
};
|
|
195
219
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DecidirEcComponent, deps: [{ token: i0.Renderer2 }, { token: i1.ConnectionService }, { token: i2.ToastService }, { token: i3.CoreConstantsService }, { token: i3.ApiConstantsService }, { token: i4.CartService }, { token: i5.ActivatedRoute }, { token: i6.DomSanitizer }, { token: i7.ParametersService }], target: i0.ɵɵFactoryTarget.Component });
|
|
196
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: DecidirEcComponent, isStandalone: true, selector: "app-decidir-ec", inputs: { paymentServiceInst: "paymentServiceInst", method: "method", total_amount: "total_amount", allData: "allData", user_data: "user_data" }, outputs: { ready: "ready" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"text-center\">\r\n <h3>Continuar con el pago en Decidir</h3>\r\n @if (method) {\r\n <p class=\"px-5\">{{ method.description }}</p>\r\n <p class=\"px-5\">{{ method.instructions }}</p>\r\n }\r\n @if (!loading) {\r\n <button class=\"btn btn-outline-secondary comprar\" (click)=\"openModal()\">Pagar</button>\r\n } @else {\r\n <div class=\"d-flex flex-column jusitfy-content-center align-items-center mt-2\">\r\n <app-loading-full-ec></app-loading-full-ec>\r\n </div>\r\n }\r\n </div>\r\n\r\n@if (showModal) {\r\n<div class=\"modal-backdrop\" (click)=\"clickClose()\">\r\n <div class=\"modal-dialog modal-lg\" (click)=\"$event.stopPropagation()\">\r\n <div class=\"modal-content\">\r\n\r\n <div class=\"modal-body\">\r\n <div class=\"payment-container\">\r\n \r\n <!-- Iframe del formulario de decidir -->\r\n <div class=\"iframe-container\">\r\n <iframe [src]=\"url\" frameborder=\"0\" class=\"payment-iframe\"></iframe>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n}\r\n", styles: [".modal-backdrop{position:fixed;top:0;left:0;width:100%;height:100%;background-color:#0009;display:flex;justify-content:center;align-items:center;z-index:1050
|
|
220
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: DecidirEcComponent, isStandalone: true, selector: "app-decidir-ec", inputs: { paymentServiceInst: "paymentServiceInst", method: "method", total_amount: "total_amount", allData: "allData", user_data: "user_data" }, outputs: { ready: "ready" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"text-center\">\r\n <h3>Continuar con el pago en Decidir</h3>\r\n @if (method) {\r\n <p class=\"px-5\">{{ method.description }}</p>\r\n <p class=\"px-5\">{{ method.instructions }}</p>\r\n }\r\n @if (!loading) {\r\n <button class=\"btn btn-outline-secondary comprar\" (click)=\"openModal()\">Pagar</button>\r\n } @else {\r\n <div class=\"d-flex flex-column jusitfy-content-center align-items-center mt-2\">\r\n <app-loading-full-ec></app-loading-full-ec>\r\n </div>\r\n }\r\n </div>\r\n\r\n@if (showModal) {\r\n<div class=\"modal-backdrop\" (click)=\"clickClose()\">\r\n <div class=\"modal-dialog modal-lg\" (click)=\"$event.stopPropagation()\">\r\n <div class=\"modal-content\">\r\n\r\n <div class=\"modal-body\">\r\n <div class=\"payment-container\">\r\n \r\n <!-- Iframe del formulario de decidir -->\r\n <div class=\"iframe-container\">\r\n <iframe [src]=\"url\" frameborder=\"0\" class=\"payment-iframe\"></iframe>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n}\r\n", styles: [".modal-backdrop{position:fixed;top:0;left:0;width:100%;height:100%;background-color:#0009;display:flex;justify-content:center;align-items:center;z-index:1050;backdrop-filter:blur(2px)}.modal-dialog{max-width:90%;max-height:90%;width:800px;background:#fff;border-radius:16px;overflow:hidden;box-shadow:0 20px 60px #0000004d;animation:modalFadeIn .3s ease-out}.modal-dialog.modal-lg{max-width:900px;width:90%}@keyframes modalFadeIn{0%{opacity:0;transform:scale(.9) translateY(-20px)}to{opacity:1;transform:scale(1) translateY(0)}}.modal-content{display:flex;flex-direction:column;height:100%;border:none;border-radius:16px;background:#fff}.modal-header{padding:1.5rem 2rem;border-bottom:1px solid #e9ecef;background:linear-gradient(135deg,#f8f9fa,#e9ecef);display:flex;justify-content:space-between;align-items:center;position:relative}.modal-header:after{content:\"\";position:absolute;bottom:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent 0%,#dee2e6 50%,transparent 100%)}.modal-header .modal-title{margin:0;font-size:1.5rem;font-weight:700;color:#2c3e50;text-shadow:0 1px 2px rgba(0,0,0,.1)}.modal-header .btn-close{background:none;border:none;font-size:1.8rem;color:#6c757d;cursor:pointer;padding:0;width:35px;height:35px;display:flex;align-items:center;justify-content:center;border-radius:50%;transition:all .3s ease;position:relative}.modal-header .btn-close:hover{background-color:#dc3545;color:#fff;transform:rotate(90deg);box-shadow:0 4px 12px #dc35454d}.modal-header .btn-close:active{transform:rotate(90deg) scale(.95)}.modal-body{padding:0;flex:1;overflow:hidden;background:#fff}.payment-container{height:100%;display:flex;flex-direction:column;background:#fff}.cards-accepted{padding:1.5rem 2rem;text-align:center;border-bottom:1px solid #e9ecef;background:linear-gradient(135deg,#fff,#f8f9fa);position:relative}.cards-accepted:after{content:\"\";position:absolute;bottom:0;left:5%;right:5%;height:1px;background:linear-gradient(90deg,transparent 0%,#dee2e6 50%,transparent 100%)}.cards-accepted .cards-img{height:45px;max-width:100%;object-fit:contain;filter:drop-shadow(0 2px 4px rgba(0,0,0,.1));transition:transform .2s ease}.cards-accepted .cards-img:hover{transform:scale(1.05)}.iframe-container{flex:1;padding:1.5rem;background:#fff;position:relative}.iframe-container:before{content:\"\";position:absolute;top:0;left:1.5rem;right:1.5rem;height:1px;background:linear-gradient(90deg,transparent 0%,#e9ecef 50%,transparent 100%)}.payment-iframe{width:100%;height:620px;border:none;border-radius:12px;background:#fff;box-shadow:inset 0 2px 8px #0000000d}.half-width{width:49%!important}.ml-1{margin-left:1%}#card-form{height:450px}.iframeStyle{height:520px;width:100%}@media only screen and (max-width: 1024px){.modal-dialog,.modal-dialog.modal-lg{max-width:95%;width:95%}.payment-iframe{height:650px}.modal-header{padding:1rem 1.5rem}.modal-header .modal-title{font-size:1.125rem}.cards-accepted{padding:.75rem 1.5rem}}@media only screen and (max-width: 680px){.modal-dialog{max-width:98%;width:98%;margin:1rem;max-height:calc(100vh - 2rem)}.modal-dialog.modal-lg{max-width:98%;width:98%}.payment-iframe{height:550px}.modal-header{padding:1rem}.modal-header .modal-title{font-size:1rem}.modal-header .btn-close{width:28px;height:28px;font-size:1.25rem}.cards-accepted{padding:.5rem 1rem}.cards-accepted .cards-img{height:35px}.iframe-container{padding:.5rem}}@media only screen and (max-width: 480px){.modal-dialog{margin:.5rem;max-height:calc(100vh - 1rem);border-radius:8px}.modal-content{border-radius:8px}.payment-iframe{height:500px}.cards-accepted .cards-img{height:30px}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "component", type: LoadingFullEcComponent, selector: "app-loading-full-ec" }] });
|
|
197
221
|
}
|
|
198
222
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DecidirEcComponent, decorators: [{
|
|
199
223
|
type: Component,
|
|
200
|
-
args: [{ selector: 'app-decidir-ec', standalone: true, imports: [CommonModule, FormsModule, LoadingFullEcComponent], template: "<div class=\"text-center\">\r\n <h3>Continuar con el pago en Decidir</h3>\r\n @if (method) {\r\n <p class=\"px-5\">{{ method.description }}</p>\r\n <p class=\"px-5\">{{ method.instructions }}</p>\r\n }\r\n @if (!loading) {\r\n <button class=\"btn btn-outline-secondary comprar\" (click)=\"openModal()\">Pagar</button>\r\n } @else {\r\n <div class=\"d-flex flex-column jusitfy-content-center align-items-center mt-2\">\r\n <app-loading-full-ec></app-loading-full-ec>\r\n </div>\r\n }\r\n </div>\r\n\r\n@if (showModal) {\r\n<div class=\"modal-backdrop\" (click)=\"clickClose()\">\r\n <div class=\"modal-dialog modal-lg\" (click)=\"$event.stopPropagation()\">\r\n <div class=\"modal-content\">\r\n\r\n <div class=\"modal-body\">\r\n <div class=\"payment-container\">\r\n \r\n <!-- Iframe del formulario de decidir -->\r\n <div class=\"iframe-container\">\r\n <iframe [src]=\"url\" frameborder=\"0\" class=\"payment-iframe\"></iframe>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n}\r\n", styles: [".modal-backdrop{position:fixed;top:0;left:0;width:100%;height:100%;background-color:#0009;display:flex;justify-content:center;align-items:center;z-index:1050
|
|
224
|
+
args: [{ selector: 'app-decidir-ec', standalone: true, imports: [CommonModule, FormsModule, LoadingFullEcComponent], template: "<div class=\"text-center\">\r\n <h3>Continuar con el pago en Decidir</h3>\r\n @if (method) {\r\n <p class=\"px-5\">{{ method.description }}</p>\r\n <p class=\"px-5\">{{ method.instructions }}</p>\r\n }\r\n @if (!loading) {\r\n <button class=\"btn btn-outline-secondary comprar\" (click)=\"openModal()\">Pagar</button>\r\n } @else {\r\n <div class=\"d-flex flex-column jusitfy-content-center align-items-center mt-2\">\r\n <app-loading-full-ec></app-loading-full-ec>\r\n </div>\r\n }\r\n </div>\r\n\r\n@if (showModal) {\r\n<div class=\"modal-backdrop\" (click)=\"clickClose()\">\r\n <div class=\"modal-dialog modal-lg\" (click)=\"$event.stopPropagation()\">\r\n <div class=\"modal-content\">\r\n\r\n <div class=\"modal-body\">\r\n <div class=\"payment-container\">\r\n \r\n <!-- Iframe del formulario de decidir -->\r\n <div class=\"iframe-container\">\r\n <iframe [src]=\"url\" frameborder=\"0\" class=\"payment-iframe\"></iframe>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n}\r\n", styles: [".modal-backdrop{position:fixed;top:0;left:0;width:100%;height:100%;background-color:#0009;display:flex;justify-content:center;align-items:center;z-index:1050;backdrop-filter:blur(2px)}.modal-dialog{max-width:90%;max-height:90%;width:800px;background:#fff;border-radius:16px;overflow:hidden;box-shadow:0 20px 60px #0000004d;animation:modalFadeIn .3s ease-out}.modal-dialog.modal-lg{max-width:900px;width:90%}@keyframes modalFadeIn{0%{opacity:0;transform:scale(.9) translateY(-20px)}to{opacity:1;transform:scale(1) translateY(0)}}.modal-content{display:flex;flex-direction:column;height:100%;border:none;border-radius:16px;background:#fff}.modal-header{padding:1.5rem 2rem;border-bottom:1px solid #e9ecef;background:linear-gradient(135deg,#f8f9fa,#e9ecef);display:flex;justify-content:space-between;align-items:center;position:relative}.modal-header:after{content:\"\";position:absolute;bottom:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent 0%,#dee2e6 50%,transparent 100%)}.modal-header .modal-title{margin:0;font-size:1.5rem;font-weight:700;color:#2c3e50;text-shadow:0 1px 2px rgba(0,0,0,.1)}.modal-header .btn-close{background:none;border:none;font-size:1.8rem;color:#6c757d;cursor:pointer;padding:0;width:35px;height:35px;display:flex;align-items:center;justify-content:center;border-radius:50%;transition:all .3s ease;position:relative}.modal-header .btn-close:hover{background-color:#dc3545;color:#fff;transform:rotate(90deg);box-shadow:0 4px 12px #dc35454d}.modal-header .btn-close:active{transform:rotate(90deg) scale(.95)}.modal-body{padding:0;flex:1;overflow:hidden;background:#fff}.payment-container{height:100%;display:flex;flex-direction:column;background:#fff}.cards-accepted{padding:1.5rem 2rem;text-align:center;border-bottom:1px solid #e9ecef;background:linear-gradient(135deg,#fff,#f8f9fa);position:relative}.cards-accepted:after{content:\"\";position:absolute;bottom:0;left:5%;right:5%;height:1px;background:linear-gradient(90deg,transparent 0%,#dee2e6 50%,transparent 100%)}.cards-accepted .cards-img{height:45px;max-width:100%;object-fit:contain;filter:drop-shadow(0 2px 4px rgba(0,0,0,.1));transition:transform .2s ease}.cards-accepted .cards-img:hover{transform:scale(1.05)}.iframe-container{flex:1;padding:1.5rem;background:#fff;position:relative}.iframe-container:before{content:\"\";position:absolute;top:0;left:1.5rem;right:1.5rem;height:1px;background:linear-gradient(90deg,transparent 0%,#e9ecef 50%,transparent 100%)}.payment-iframe{width:100%;height:620px;border:none;border-radius:12px;background:#fff;box-shadow:inset 0 2px 8px #0000000d}.half-width{width:49%!important}.ml-1{margin-left:1%}#card-form{height:450px}.iframeStyle{height:520px;width:100%}@media only screen and (max-width: 1024px){.modal-dialog,.modal-dialog.modal-lg{max-width:95%;width:95%}.payment-iframe{height:650px}.modal-header{padding:1rem 1.5rem}.modal-header .modal-title{font-size:1.125rem}.cards-accepted{padding:.75rem 1.5rem}}@media only screen and (max-width: 680px){.modal-dialog{max-width:98%;width:98%;margin:1rem;max-height:calc(100vh - 2rem)}.modal-dialog.modal-lg{max-width:98%;width:98%}.payment-iframe{height:550px}.modal-header{padding:1rem}.modal-header .modal-title{font-size:1rem}.modal-header .btn-close{width:28px;height:28px;font-size:1.25rem}.cards-accepted{padding:.5rem 1rem}.cards-accepted .cards-img{height:35px}.iframe-container{padding:.5rem}}@media only screen and (max-width: 480px){.modal-dialog{margin:.5rem;max-height:calc(100vh - 1rem);border-radius:8px}.modal-content{border-radius:8px}.payment-iframe{height:500px}.cards-accepted .cards-img{height:30px}}\n"] }]
|
|
201
225
|
}], ctorParameters: () => [{ type: i0.Renderer2 }, { type: i1.ConnectionService }, { type: i2.ToastService }, { type: i3.CoreConstantsService }, { type: i3.ApiConstantsService }, { type: i4.CartService }, { type: i5.ActivatedRoute }, { type: i6.DomSanitizer }, { type: i7.ParametersService }], propDecorators: { paymentServiceInst: [{
|
|
202
226
|
type: Input
|
|
203
227
|
}], method: [{
|
|
@@ -211,4 +235,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
211
235
|
}], ready: [{
|
|
212
236
|
type: Output
|
|
213
237
|
}] } });
|
|
214
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjaWRpci1lYy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lYXN5Y29tbWVyY2UtdjE4L3NyYy9saWIvZWMtY29tcG9uZW50cy93aWRnZXRzLWVjL2RlY2lkaXItZWMvZGVjaWRpci1lYy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lYXN5Y29tbWVyY2UtdjE4L3NyYy9saWIvZWMtY29tcG9uZW50cy93aWRnZXRzLWVjL2RlY2lkaXItZWMvZGVjaWRpci1lYy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBc0IsS0FBSyxFQUF3QixZQUFZLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDNUgsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxXQUFXLEVBQVUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFPcEUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sWUFBWSxDQUFDOzs7Ozs7Ozs7QUFVcEQsTUFBTSxPQUFPLGtCQUFtQixTQUFRLGVBQWU7SUFzQmhDO0lBQ1I7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQTVCRixrQkFBa0IsQ0FBTTtJQUN4QixNQUFNLEdBQTBFLElBQUksQ0FBQztJQUNyRixZQUFZLEdBQUcsQ0FBQyxDQUFDO0lBQ2pCLE9BQU8sQ0FBTTtJQUNiLFNBQVMsR0FBRyxJQUFJLENBQUM7SUFDaEIsS0FBSyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7SUFDM0IsUUFBUSxHQUFlLElBQUksQ0FBQztJQUM1QixXQUFXLENBQU07SUFFcEIsT0FBTyxHQUFHLEtBQUssQ0FBQztJQUNoQixXQUFXLEdB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S0FBSztzQkFBZCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPdXRwdXQsIE9uSW5pdCwgRWxlbWVudFJlZiwgSW5wdXQsIFJlbmRlcmVyMiwgT25DaGFuZ2VzLCBFdmVudEVtaXR0ZXIsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBOZ0Zvcm0gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IENvbXBvbmVudEhlbHBlciB9IGZyb20gXCIuLi8uLi8uLi9jbGFzc2VzL2NvbXBvbmVudC1oZWxwZXJcIjtcclxuaW1wb3J0IHsgQ29ubmVjdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9hcGkvY29ubmVjdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vZWMtc2VydmljZXMvdG9hc3Quc2VydmljZSc7XHJcbmltcG9ydCB7IENvcmVDb25zdGFudHNTZXJ2aWNlLCBBcGlDb25zdGFudHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzJztcclxuaW1wb3J0IHsgQ2FydFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9lYy1zZXJ2aWNlcy9jYXJ0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVSZXNvdXJjZVVybCwgU2FmZVVybCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQgeyBQYXJhbWV0ZXJzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2VjLXNlcnZpY2VzL3BhcmFtZXRlcnMuc2VydmljZSc7XHJcbmltcG9ydCB7IExvYWRpbmdGdWxsRWNDb21wb25lbnQgfSBmcm9tICcuLi9sb2FkaW5nJztcclxuZGVjbGFyZSB2YXIgJDogYW55XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnYXBwLWRlY2lkaXItZWMnLFxyXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICAgIHRlbXBsYXRlVXJsOiAnZGVjaWRpci1lYy5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnZGVjaWRpci1lYy5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRm9ybXNNb2R1bGUsIExvYWRpbmdGdWxsRWNDb21wb25lbnRdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEZWNpZGlyRWNDb21wb25lbnQgZXh0ZW5kcyBDb21wb25lbnRIZWxwZXIgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzIHtcclxuXHJcbiAgICBASW5wdXQoKSBwYXltZW50U2VydmljZUluc3Q6IGFueTtcclxuICAgIEBJbnB1dCgpIG1ldGhvZDogeyBkZXNjcmlwdGlvbj86IHN0cmluZzsgaW5zdHJ1Y3Rpb25zPzogc3RyaW5nOyBjb2RlPzogc3RyaW5nIH0gfCBudWxsID0gbnVsbDtcclxuICAgIEBJbnB1dCgpIHRvdGFsX2Ftb3VudCA9IDA7XHJcbiAgICBASW5wdXQoKSBhbGxEYXRhOiBhbnk7XHJcbiAgICBASW5wdXQoKSB1c2VyX2RhdGEgPSBudWxsO1xyXG4gICAgQE91dHB1dCgpIHJlYWR5ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gICAgcHJvdGVjdGVkIG1vZGFsUmVmOiBhbnkgfCBudWxsID0gbnVsbDtcclxuICAgIHByb3RlY3RlZCBkYXRhRGVjaWRpcjogYW55O1xyXG5cclxuICAgIHB1YmxpYyBsb2FkaW5nID0gZmFsc2U7XHJcbiAgICBwdWJsaWMgaXNEb2JsZUF1dGggPSBmYWxzZTtcclxuICAgIHB1YmxpYyB1cmxzOiBhbnlbXSA9IFtdO1xyXG4gICAgcHVibGljIHVybDogU2FmZVJlc291cmNlVXJsIHwgdW5kZWZpbmVkO1xyXG4gICAgcHVibGljIGNsb3NlTW9kYWwgPSAnJ1xyXG4gICAgcHVibGljIHBhcmFtc01lbnNhamUgPSAnJ1xyXG4gICAgcHVibGljIHZlbnRhbmE6IGFueVxyXG4gICAgcHVibGljIHBhcmFtczogYW55XHJcbiAgICBwdWJsaWMgc2hvd01vZGFsID0gZmFsc2U7XHJcbiAgICBwcm90ZWN0ZWQgZGF0YVJlZGlyZWN0ID0gKCkgPT4gdGhpcy5hcGlDb25zdHMuZ2V0VXJsQmFzZSgpICsgJ3Nob3AtYXBpLycgKyB0aGlzLmNvbnN0cy5nZXRDaGFubmVsKCkgKyAnL2RlY2lkaXIvJyArIHRoaXMuY2FydFNlcnZpY2UuY2FydFRva2VuICsgJy9wcm9jZXNzLXBheW1lbnQnO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyByZW5kZXJlcjogUmVuZGVyZXIyLFxyXG4gICAgICAgIHB1YmxpYyBjb25uZWN0aW9uOiBDb25uZWN0aW9uU2VydmljZSxcclxuICAgICAgICBwdWJsaWMgdG9hc3RyU2VydmljZTogVG9hc3RTZXJ2aWNlLFxyXG4gICAgICAgIHB1YmxpYyBjb25zdHM6IENvcmVDb25zdGFudHNTZXJ2aWNlLFxyXG4gICAgICAgIHB1YmxpYyBhcGlDb25zdHM6IEFwaUNvbnN0YW50c1NlcnZpY2UsXHJcbiAgICAgICAgcHVibGljIGNhcnRTZXJ2aWNlOiBDYXJ0U2VydmljZSxcclxuICAgICAgICBwdWJsaWMgYWN0aXZlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcclxuICAgICAgICBwdWJsaWMgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXHJcbiAgICAgICAgcHVibGljIHBhcmFtc1NlcnZpY2U6IFBhcmFtZXRlcnNTZXJ2aWNlXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICB0aGlzLmVjT25Db25zdHJ1Y3QoKVxyXG4gICAgfVxyXG5cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIHRoaXMuZ2V0Q2hlY2tvdXREZWNpZGlyKClcclxuICAgICAgICB0aGlzLnBhcmFtc1NlcnZpY2UuZ2V0UGFyYW1ldGVycygpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5wYXJhbXMgPSByZXNcclxuICAgICAgICAgICAgY29uc3QgcGFyYW1WYWx1ZSA9IHRoaXMuaGFzUGFyYW1zKHJlcywncGFydGlhbGx5X2F1dGhvcml6ZWRfZGVjaWRpcicpO1xyXG4gICAgICAgICAgICB0aGlzLnBhcmFtc01lbnNhamUgPSAodHlwZW9mIHBhcmFtVmFsdWUgPT09ICdzdHJpbmcnID8gcGFyYW1WYWx1ZSA6IG51bGwpIHx8ICdTZSBlc3TDoSBwcm9jZXNhbmRvIGVsIHBhZ28gY29uIHRhcmpldGEuJ1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuZWNPbkluaXQoKVxyXG4gICAgfVxyXG5cclxuICAgIG5nT25EZXN0cm95KCkge1xyXG4gICAgICAgIC8vIFJlbW92ZXIgZWwgbGlzdGVuZXIgZGUgbWVuc2FqZXNcclxuICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIHRoaXMuaGFuZGxlSWZyYW1lTWVzc2FnZSwgZmFsc2UpO1xyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKFwiU0UgREVTVFJPWkFcIik7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkNoYW5nZXMoKSB7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coXCJTRSBDQU1CSU9cIik7XHJcbiAgICB9XHJcblxyXG4gICAgb3Blbk1vZGFsKCkge1xyXG4gICAgICAgIHRoaXMuY2xlYXJTdG9yYWdlU3RhdGUoKVxyXG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdkYXRhUmVkaXJlY3QnLCB0aGlzLmRhdGFSZWRpcmVjdCgpKVxyXG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdkYXRhRGVjaWRpcicsIEpTT04uc3RyaW5naWZ5KHtcclxuICAgICAgICAgICAgLi4udGhpcy5tZXRob2QsXHJcbiAgICAgICAgICAgIHRvdGFsX2Ftb3VudDogdGhpcy50b3RhbF9hbW91bnRcclxuICAgICAgICB9KSlcclxuICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3N1YnRvdGFsJywgdGhpcy50b3RhbF9hbW91bnQudG9TdHJpbmcoKSlcclxuICAgICAgICB0aGlzLnNob3dNb2RhbCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5jbG9zZU1vZGFsID0gJydcclxuICAgICAgICB0aGlzLmNhbGxTdGF0ZSgpXHJcbiAgICB9XHJcblxyXG4gICAgY2xlYXJTdG9yYWdlU3RhdGUgPSAoKSA9PiB7XHJcbiAgICAgICAgc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbSgnc3RhdGUnKVxyXG4gICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdzdGF0ZScpXHJcbiAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ2RhdGFSZWRpcmVjdCcpXHJcbiAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ2RhdGFEZWNpZGlyJylcclxuICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnbWVzc2FnZScpXHJcbiAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ3N1Yk1lc3NhZ2UnKVxyXG4gICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdzdWJ0b3RhbCcpXHJcbiAgICB9XHJcblxyXG4gICAgY2xpY2tDbG9zZSA9ICgpID0+IHtcclxuICAgICAgICB0aGlzLmNsb3NlTW9kYWwgPSAnY2FuY2VsJ1xyXG4gICAgICAgIHRoaXMuc2hvd01vZGFsID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5wcm9jZXNzRXJyb3IoJ1NlIGNhbmNlbG8gZWwgcGFnbyBjb24gRGVjaWRpcicpXHJcbiAgICB9XHJcblxyXG4gICAgc2hvd01lc3NhZ2UgPSAoKSA9PiB7XHJcbiAgICAgICAgbGV0IG1lc3NhZ2UgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbWVzc2FnZScpIHx8IHVuZGVmaW5lZFxyXG4gICAgICAgIGxldCBzdWJNZXNzYWdlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3N1Yk1lc3NhZ2UnKSB8fCB1bmRlZmluZWRcclxuICAgICAgICBtZXNzYWdlICYmIHRoaXMudG9hc3RyU2VydmljZS5zaG93KG1lc3NhZ2Use30sJycsIHtjbG9zZUJ1dHRvbjp0cnVlLHRpbWVPdXQ6NjAwMH0pO1xyXG4gICAgICAgIHN1Yk1lc3NhZ2UgJiYgdGhpcy50b2FzdHJTZXJ2aWNlLnNob3coc3ViTWVzc2FnZSx7fSwnJywge2Nsb3NlQnV0dG9uOnRydWUsdGltZU91dDo2MDAwfSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGNhbGxTdGF0ZSA9ICgpID0+IHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBsZXQgc3RhdGUgPSB0aGlzLmNsb3NlTW9kYWwgIT0gJycgPyB0aGlzLmNsb3NlTW9kYWwgOiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnc3RhdGUnKVxyXG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlXHJcbiAgICAgICAgICAgIHN0YXRlICYmIHRoaXMuc2hvd01lc3NhZ2UoKTtcclxuICAgICAgICAgICAgaWYgKHN0YXRlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZVxyXG4gICAgICAgICAgICAgICAgdGhpcy5jbGVhclN0b3JhZ2VTdGF0ZSgpXHJcbiAgICAgICAgICAgICAgICBpZiAoc3RhdGUgPT0gJ3N1Y2Nlc3MnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWFkeS5lbWl0KHRydWUpXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoc3RhdGUgPT0gJ3BhcnRpYWxseV9hdXRob3JpemVkJykge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVhZHkuZW1pdCh0cnVlKVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJvY2Vzc0Vycm9yKHRoaXMucGFyYW1zTWVuc2FqZSlcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChzdGF0ZSA9PSAnY2FuY2VsJykge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVyblxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKHN0YXRlID09ICdmYWlsdXJlJykge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJvY2Vzc0Vycm9yKCcnKVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy5zaG93TW9kYWwgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHJldHVyblxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jYWxsU3RhdGUoKVxyXG4gICAgICAgICAgICB9LCA1MDAwKTtcclxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcclxuXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByb2Nlc3NFcnJvciA9IChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMudG9hc3RyU2VydmljZS5zaG93KGVyciAhPSAnJyA/IGVyciA6ICdwYXltZW50LWVycm9yJyk7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coXCJFUlJPUiBFTlZJTyBCQUNLICBcIiwgZXJyKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRDaGVja291dERlY2lkaXIgPSAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZVxyXG4gICAgICAgIHRoaXMuZGF0YURlY2lkaXIgPSB0aGlzLm1ldGhvZDtcclxuICAgICAgICB0aGlzLnVybCA9IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybCgnYXNzZXRzL2RlY2lkaXJGb3JtRWMuaHRtbCcpXHJcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2VcclxuICAgICAgICBcclxuICAgICAgICAvLyBFc2N1Y2hhciBtZW5zYWplcyBkZWwgaWZyYW1lIHBhcmEgbWFuZWphciBsYSBjb211bmljYWNpw7NuXHJcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCB0aGlzLmhhbmRsZUlmcmFtZU1lc3NhZ2UuYmluZCh0aGlzKSwgZmFsc2UpO1xyXG4gICAgfVxyXG5cclxuICAgIGhhbmRsZUlmcmFtZU1lc3NhZ2UgPSAoZXZlbnQ6IE1lc3NhZ2VFdmVudCkgPT4ge1xyXG4gICAgICAgIC8vIFZlcmlmaWNhciBlbCBvcmlnZW4gcG9yIHNlZ3VyaWRhZFxyXG4gICAgICAgIGlmIChldmVudC5vcmlnaW4gIT09IHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4pIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGV2ZW50LmRhdGEgJiYgZXZlbnQuZGF0YS50eXBlID09PSAnREVDSURJUl9QQVlNRU5UJykge1xyXG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZygnRGVjaWRpckNvbXBvbmVudCAtIFByb2Nlc2FuZG8gcGFnbyBjb24gcGF5bG9hZDonLCBldmVudC5kYXRhLnBheWxvYWQpO1xyXG4gICAgICAgICAgICB0aGlzLnByb2Nlc3NQYXltZW50KGV2ZW50LmRhdGEucGF5bG9hZCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByb2Nlc3NQYXltZW50ID0gKHBheW1lbnREYXRhOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgXHJcbiAgICAgICAgXHJcbiAgICAgICAgdGhpcy5jb25uZWN0aW9uLnBvc3QoJ3Nob3AtYXBpLycgKyB0aGlzLmNvbnN0cy5nZXRDaGFubmVsKCkgKyAnL2RlY2lkaXIvJyArIHRoaXMuY2FydFNlcnZpY2UuY2FydFRva2VuICsgJy9wcm9jZXNzLXBheW1lbnQnKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICAgICAgICAgIG5leHQ6IChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coJ1Jlc3B1ZXN0YSBkZWwgYmFja2VuZDonLCByZXNwb25zZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gJ2FwcHJvdmVkJyB8fCByZXNwb25zZS5zdGF0dXMgPT09ICdwYXJ0aWFsbHlfYXV0aG9yaXplZCcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3N0YXRlJywgcmVzcG9uc2Uuc3RhdHVzID09PSAnYXBwcm92ZWQnID8gJ3N1Y2Nlc3MnIDogJ3BhcnRpYWxseV9hdXRob3JpemVkJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5tZXNzYWdlKSBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnbWVzc2FnZScsIHJlc3BvbnNlLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3ViTWVzc2FnZSkgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3N1Yk1lc3NhZ2UnLCByZXNwb25zZS5zdWJNZXNzYWdlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jYWxsU3RhdGUoKTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnc3RhdGUnLCAnZmFpbHVyZScpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UubWVzc2FnZSkgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ21lc3NhZ2UnLCByZXNwb25zZS5tZXNzYWdlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN1Yk1lc3NhZ2UpIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdzdWJNZXNzYWdlJywgcmVzcG9uc2Uuc3ViTWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2FsbFN0YXRlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGVycm9yOiAoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHByb2Nlc3NpbmcgcGF5bWVudDonLCBlcnJvcik7XHJcbiAgICAgICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3N0YXRlJywgJ2ZhaWx1cmUnKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnByb2Nlc3NFcnJvcignRXJyb3IgYWwgcHJvY2VzYXIgZWwgcGFnbycpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2FsbFN0YXRlKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHJlc2l6ZUlmcmFtZSA9IChvYmo6IGFueSkgPT4ge1xyXG4gICAgICAgIG9iai5zdHlsZS5oZWlnaHQgPSBvYmouY29udGVudFdpbmRvdy5kb2N1bWVudC5ib2R5LnNjcm9sbEhlaWdodCArICdweCc7XHJcbiAgICAgICAgb2JqLnN0eWxlLndpZHRoID0gb2JqLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQuYm9keS5zY3JvbGxXaWR0aCArICdweCc7XHJcbiAgICB9XHJcblxyXG59XHJcblxyXG4iLCI8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXJcIj5cclxuICAgIDxoMz5Db250aW51YXIgY29uIGVsIHBhZ28gZW4gRGVjaWRpcjwvaDM+XHJcbiAgICBAaWYgKG1ldGhvZCkge1xyXG4gICAgPHAgY2xhc3M9XCJweC01XCI+e3sgbWV0aG9kLmRlc2NyaXB0aW9uIH19PC9wPlxyXG4gICAgPHAgY2xhc3M9XCJweC01XCI+e3sgbWV0aG9kLmluc3RydWN0aW9ucyB9fTwvcD5cclxuICAgIH1cclxuICAgIEBpZiAoIWxvYWRpbmcpIHtcclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXNlY29uZGFyeSBjb21wcmFyXCIgKGNsaWNrKT1cIm9wZW5Nb2RhbCgpXCI+UGFnYXI8L2J1dHRvbj5cclxuICAgIH0gQGVsc2Uge1xyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBqdXNpdGZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBtdC0yXCI+XHJcbiAgICAgICAgPGFwcC1sb2FkaW5nLWZ1bGwtZWM+PC9hcHAtbG9hZGluZy1mdWxsLWVjPlxyXG4gICAgPC9kaXY+XHJcbiAgICB9XHJcbiAgICA8L2Rpdj5cclxuXHJcbkBpZiAoc2hvd01vZGFsKSB7XHJcbjxkaXYgY2xhc3M9XCJtb2RhbC1iYWNrZHJvcFwiIChjbGljayk9XCJjbGlja0Nsb3NlKClcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1kaWFsb2cgbW9kYWwtbGdcIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWNvbnRlbnRcIj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGF5bWVudC1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gSWZyYW1lIGRlbCBmb3JtdWxhcmlvIGRlIGRlY2lkaXIgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlmcmFtZS1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlmcmFtZSBbc3JjXT1cInVybFwiIGZyYW1lYm9yZGVyPVwiMFwiIGNsYXNzPVwicGF5bWVudC1pZnJhbWVcIj48L2lmcmFtZT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj5cclxufVxyXG4iXX0=
|
|
238
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjaWRpci1lYy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lYXN5Y29tbWVyY2UtdjE4L3NyYy9saWIvZWMtY29tcG9uZW50cy93aWRnZXRzLWVjL2RlY2lkaXItZWMvZGVjaWRpci1lYy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lYXN5Y29tbWVyY2UtdjE4L3NyYy9saWIvZWMtY29tcG9uZW50cy93aWRnZXRzLWVjL2RlY2lkaXItZWMvZGVjaWRpci1lYy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBc0IsS0FBSyxFQUF3QixZQUFZLEVBQWEsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqSixPQUFPLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFbEUsT0FBTyxFQUFFLFdBQVcsRUFBVSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQU9wRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxZQUFZLENBQUM7Ozs7Ozs7OztBQVVwRCxNQUFNLE9BQU8sa0JBQW1CLFNBQVEsZUFBZTtJQTRCaEM7SUFDUjtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBbENGLGtCQUFrQixDQUFNO0lBQ3hCLE1BQU0sR0FBMEUsSUFBSSxDQUFDO0lBQ3JGLFlBQVksR0FBRyxDQUFDLENBQUM7SUFDakIsT0FBTyxDQUFNO0lBQ2IsU0FBUyxHQUFHLElBQUksQ0FBQztJQUNoQixLQUFLLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUMzQixRQUFRLEdBQWUsSUFBSSxDQUFDO0lBQzVCLFdBQVcsQ0FBTTtJQUVwQixP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RkFBbEIsa0JBQWtCLHFTQ3JCL0IsdXNDQWlDQSwrbEhEZGMsWUFBWSw4QkFBRSxXQUFXLCtCQUFFLHNCQUFzQjs7NEZBRWxELGtCQUFrQjtrQkFQOUIsU0FBUzsrQkFDSSxnQkFBZ0IsY0FDZCxJQUFJLFdBR1AsQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLHNCQUFzQixDQUFDO2dVQUluRCxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0ksS0FBSztzQkFBZCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPdXRwdXQsIE9uSW5pdCwgRWxlbWVudFJlZiwgSW5wdXQsIFJlbmRlcmVyMiwgT25DaGFuZ2VzLCBFdmVudEVtaXR0ZXIsIE9uRGVzdHJveSwgaW5qZWN0LCBQTEFURk9STV9JRCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUsIGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgTmdGb3JtIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRIZWxwZXIgfSBmcm9tIFwiLi4vLi4vLi4vY2xhc3Nlcy9jb21wb25lbnQtaGVscGVyXCI7XHJcbmltcG9ydCB7IENvbm5lY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vYXBpL2Nvbm5lY3Rpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2VjLXNlcnZpY2VzL3RvYXN0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb3JlQ29uc3RhbnRzU2VydmljZSwgQXBpQ29uc3RhbnRzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cyc7XHJcbmltcG9ydCB7IENhcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vZWMtc2VydmljZXMvY2FydC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlUmVzb3VyY2VVcmwsIFNhZmVVcmwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuaW1wb3J0IHsgUGFyYW1ldGVyc1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9lYy1zZXJ2aWNlcy9wYXJhbWV0ZXJzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBMb2FkaW5nRnVsbEVjQ29tcG9uZW50IH0gZnJvbSAnLi4vbG9hZGluZyc7XHJcbmRlY2xhcmUgdmFyICQ6IGFueVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2FwcC1kZWNpZGlyLWVjJyxcclxuICAgIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgICB0ZW1wbGF0ZVVybDogJ2RlY2lkaXItZWMuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJ2RlY2lkaXItZWMuY29tcG9uZW50LnNjc3MnXSxcclxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEZvcm1zTW9kdWxlLCBMb2FkaW5nRnVsbEVjQ29tcG9uZW50XVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGVjaWRpckVjQ29tcG9uZW50IGV4dGVuZHMgQ29tcG9uZW50SGVscGVyIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB7XHJcblxyXG4gICAgQElucHV0KCkgcGF5bWVudFNlcnZpY2VJbnN0OiBhbnk7XHJcbiAgICBASW5wdXQoKSBtZXRob2Q6IHsgZGVzY3JpcHRpb24/OiBzdHJpbmc7IGluc3RydWN0aW9ucz86IHN0cmluZzsgY29kZT86IHN0cmluZyB9IHwgbnVsbCA9IG51bGw7XHJcbiAgICBASW5wdXQoKSB0b3RhbF9hbW91bnQgPSAwO1xyXG4gICAgQElucHV0KCkgYWxsRGF0YTogYW55O1xyXG4gICAgQElucHV0KCkgdXNlcl9kYXRhID0gbnVsbDtcclxuICAgIEBPdXRwdXQoKSByZWFkeSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICAgIHByb3RlY3RlZCBtb2RhbFJlZjogYW55IHwgbnVsbCA9IG51bGw7XHJcbiAgICBwcm90ZWN0ZWQgZGF0YURlY2lkaXI6IGFueTtcclxuXHJcbiAgICBwdWJsaWMgbG9hZGluZyA9IGZhbHNlO1xyXG4gICAgcHVibGljIGlzRG9ibGVBdXRoID0gZmFsc2U7XHJcbiAgICBwdWJsaWMgdXJsczogYW55W10gPSBbXTtcclxuICAgIHB1YmxpYyB1cmw6IFNhZmVSZXNvdXJjZVVybCB8IHVuZGVmaW5lZDtcclxuICAgIHB1YmxpYyBjbG9zZU1vZGFsID0gJydcclxuICAgIHB1YmxpYyBwYXJhbXNNZW5zYWplID0gJydcclxuICAgIHB1YmxpYyB2ZW50YW5hOiBhbnlcclxuICAgIHB1YmxpYyBwYXJhbXM6IGFueVxyXG4gICAgcHVibGljIHNob3dNb2RhbCA9IGZhbHNlO1xyXG4gICAgcHJvdGVjdGVkIGRhdGFSZWRpcmVjdCA9ICgpID0+IHRoaXMuYXBpQ29uc3RzLmdldFVybEJhc2UoKSArICdzaG9wLWFwaS8nICsgdGhpcy5jb25zdHMuZ2V0Q2hhbm5lbCgpICsgJy9kZWNpZGlyLycgKyB0aGlzLmNhcnRTZXJ2aWNlLmNhcnRUb2tlbiArICcvcHJvY2Vzcy1wYXltZW50JztcclxuICAgIHByaXZhdGUgcGxhdGZvcm1JZCA9IGluamVjdChQTEFURk9STV9JRCk7XHJcbiAgICBwcml2YXRlIGlzQnJvd3NlciA9IGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCk7XHJcbiAgICBwcml2YXRlIHdpbmRvd1JlZiA9IHRoaXMuaXNCcm93c2VyID8gd2luZG93IDogbnVsbDtcclxuICAgIHByaXZhdGUgbG9jYWxTdG9yYWdlUmVmID0gdGhpcy53aW5kb3dSZWY/LmxvY2FsU3RvcmFnZSA/PyBudWxsO1xyXG4gICAgcHJpdmF0ZSBzZXNzaW9uU3RvcmFnZVJlZiA9IHRoaXMud2luZG93UmVmPy5zZXNzaW9uU3RvcmFnZSA/PyBudWxsO1xyXG4gICAgcHJpdmF0ZSBtZXNzYWdlTGlzdGVuZXIgPSAoZXZlbnQ6IE1lc3NhZ2VFdmVudCkgPT4gdGhpcy5oYW5kbGVJZnJhbWVNZXNzYWdlKGV2ZW50KTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVuZGVyZXI6IFJlbmRlcmVyMixcclxuICAgICAgICBwdWJsaWMgY29ubmVjdGlvbjogQ29ubmVjdGlvblNlcnZpY2UsXHJcbiAgICAgICAgcHVibGljIHRvYXN0clNlcnZpY2U6IFRvYXN0U2VydmljZSxcclxuICAgICAgICBwdWJsaWMgY29uc3RzOiBDb3JlQ29uc3RhbnRzU2VydmljZSxcclxuICAgICAgICBwdWJsaWMgYXBpQ29uc3RzOiBBcGlDb25zdGFudHNTZXJ2aWNlLFxyXG4gICAgICAgIHB1YmxpYyBjYXJ0U2VydmljZTogQ2FydFNlcnZpY2UsXHJcbiAgICAgICAgcHVibGljIGFjdGl2ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcbiAgICAgICAgcHVibGljIHNhbml0aXplcjogRG9tU2FuaXRpemVyLFxyXG4gICAgICAgIHB1YmxpYyBwYXJhbXNTZXJ2aWNlOiBQYXJhbWV0ZXJzU2VydmljZVxyXG4gICAgICAgICkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgdGhpcy5lY09uQ29uc3RydWN0KClcclxuICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICB0aGlzLmdldENoZWNrb3V0RGVjaWRpcigpXHJcbiAgICAgICAgdGhpcy5wYXJhbXNTZXJ2aWNlLmdldFBhcmFtZXRlcnMoKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucGFyYW1zID0gcmVzXHJcbiAgICAgICAgICAgIGNvbnN0IHBhcmFtVmFsdWUgPSB0aGlzLmhhc1BhcmFtcyhyZXMsJ3BhcnRpYWxseV9hdXRob3JpemVkX2RlY2lkaXInKTtcclxuICAgICAgICAgICAgdGhpcy5wYXJhbXNNZW5zYWplID0gKHR5cGVvZiBwYXJhbVZhbHVlID09PSAnc3RyaW5nJyA/IHBhcmFtVmFsdWUgOiBudWxsKSB8fCAnU2UgZXN0w6EgcHJvY2VzYW5kbyBlbCBwYWdvIGNvbiB0YXJqZXRhLidcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmVjT25Jbml0KClcclxuICAgIH1cclxuXHJcbiAgICBuZ09uRGVzdHJveSgpIHtcclxuICAgICAgICAvLyBSZW1vdmVyIGVsIGxpc3RlbmVyIGRlIG1lbnNhamVzXHJcbiAgICAgICAgaWYgKHRoaXMuaXNCcm93c2VyICYmIHRoaXMud2luZG93UmVmKSB7XHJcbiAgICAgICAgICAgIHRoaXMud2luZG93UmVmLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCB0aGlzLm1lc3NhZ2VMaXN0ZW5lciBhcyBFdmVudExpc3RlbmVyT3JFdmVudExpc3RlbmVyT2JqZWN0LCBmYWxzZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKFwiU0UgREVTVFJPWkFcIik7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkNoYW5nZXMoKSB7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coXCJTRSBDQU1CSU9cIik7XHJcbiAgICB9XHJcblxyXG4gICAgb3Blbk1vZGFsKCkge1xyXG4gICAgICAgIGlmICghdGhpcy5pc0Jyb3dzZXIgfHwgIXRoaXMubG9jYWxTdG9yYWdlUmVmKSByZXR1cm47XHJcblxyXG4gICAgICAgIHRoaXMuY2xlYXJTdG9yYWdlU3RhdGUoKVxyXG4gICAgICAgIHRoaXMubG9jYWxTdG9yYWdlUmVmLnNldEl0ZW0oJ2RhdGFSZWRpcmVjdCcsIHRoaXMuZGF0YVJlZGlyZWN0KCkpXHJcbiAgICAgICAgdGhpcy5sb2NhbFN0b3JhZ2VSZWYuc2V0SXRlbSgnZGF0YURlY2lkaXInLCBKU09OLnN0cmluZ2lmeSh7XHJcbiAgICAgICAgICAgIC4uLnRoaXMubWV0aG9kLFxyXG4gICAgICAgICAgICB0b3RhbF9hbW91bnQ6IHRoaXMudG90YWxfYW1vdW50XHJcbiAgICAgICAgfSkpXHJcbiAgICAgICAgIHRoaXMubG9jYWxTdG9yYWdlUmVmLnNldEl0ZW0oJ3N1YnRvdGFsJywgdGhpcy50b3RhbF9hbW91bnQudG9TdHJpbmcoKSlcclxuICAgICAgICB0aGlzLnNob3dNb2RhbCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5jbG9zZU1vZGFsID0gJydcclxuICAgICAgICB0aGlzLmNhbGxTdGF0ZSgpXHJcbiAgICB9XHJcblxyXG4gICAgY2xlYXJTdG9yYWdlU3RhdGUgPSAoKSA9PiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmlzQnJvd3NlcikgcmV0dXJuO1xyXG5cclxuICAgICAgICB0aGlzLnNlc3Npb25TdG9yYWdlUmVmPy5yZW1vdmVJdGVtKCdzdGF0ZScpXHJcbiAgICAgICAgdGhpcy5sb2NhbFN0b3JhZ2VSZWY/LnJlbW92ZUl0ZW0oJ3N0YXRlJylcclxuICAgICAgICB0aGlzLmxvY2FsU3RvcmFnZVJlZj8ucmVtb3ZlSXRlbSgnZGF0YVJlZGlyZWN0JylcclxuICAgICAgICB0aGlzLmxvY2FsU3RvcmFnZVJlZj8ucmVtb3ZlSXRlbSgnZGF0YURlY2lkaXInKVxyXG4gICAgICAgIHRoaXMubG9jYWxTdG9yYWdlUmVmPy5yZW1vdmVJdGVtKCdtZXNzYWdlJylcclxuICAgICAgICB0aGlzLmxvY2FsU3RvcmFnZVJlZj8ucmVtb3ZlSXRlbSgnc3ViTWVzc2FnZScpXHJcbiAgICAgICAgdGhpcy5sb2NhbFN0b3JhZ2VSZWY/LnJlbW92ZUl0ZW0oJ3N1YnRvdGFsJylcclxuICAgIH1cclxuXHJcbiAgICBjbGlja0Nsb3NlID0gKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuY2xvc2VNb2RhbCA9ICdjYW5jZWwnXHJcbiAgICAgICAgdGhpcy5zaG93TW9kYWwgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnByb2Nlc3NFcnJvcignU2UgY2FuY2VsbyBlbCBwYWdvIGNvbiBEZWNpZGlyJylcclxuICAgIH1cclxuXHJcbiAgICBzaG93TWVzc2FnZSA9ICgpID0+IHtcclxuICAgICAgICBpZiAoIXRoaXMuaXNCcm93c2VyIHx8ICF0aGlzLmxvY2FsU3RvcmFnZVJlZikgcmV0dXJuO1xyXG5cclxuICAgICAgICBsZXQgbWVzc2FnZSA9IHRoaXMubG9jYWxTdG9yYWdlUmVmLmdldEl0ZW0oJ21lc3NhZ2UnKSB8fCB1bmRlZmluZWRcclxuICAgICAgICBsZXQgc3ViTWVzc2FnZSA9IHRoaXMubG9jYWxTdG9yYWdlUmVmLmdldEl0ZW0oJ3N1Yk1lc3NhZ2UnKSB8fCB1bmRlZmluZWRcclxuICAgICAgICBtZXNzYWdlICYmIHRoaXMudG9hc3RyU2VydmljZS5zaG93KG1lc3NhZ2Use30sJycsIHtjbG9zZUJ1dHRvbjp0cnVlLHRpbWVPdXQ6NjAwMH0pO1xyXG4gICAgICAgIHN1Yk1lc3NhZ2UgJiYgdGhpcy50b2FzdHJTZXJ2aWNlLnNob3coc3ViTWVzc2FnZSx7fSwnJywge2Nsb3NlQnV0dG9uOnRydWUsdGltZU91dDo2MDAwfSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGNhbGxTdGF0ZSA9ICgpID0+IHtcclxuICAgICAgICBpZiAoIXRoaXMuaXNCcm93c2VyIHx8ICF0aGlzLmxvY2FsU3RvcmFnZVJlZikgcmV0dXJuO1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGxldCBzdGF0ZSA9IHRoaXMuY2xvc2VNb2RhbCAhPSAnJyA/IHRoaXMuY2xvc2VNb2RhbCA6IHRoaXMubG9jYWxTdG9yYWdlUmVmLmdldEl0ZW0oJ3N0YXRlJylcclxuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZVxyXG4gICAgICAgICAgICBzdGF0ZSAmJiB0aGlzLnNob3dNZXNzYWdlKCk7XHJcbiAgICAgICAgICAgIGlmIChzdGF0ZSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2VcclxuICAgICAgICAgICAgICAgIHRoaXMuY2xlYXJTdG9yYWdlU3RhdGUoKVxyXG4gICAgICAgICAgICAgICAgaWYgKHN0YXRlID09ICdzdWNjZXNzJykge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVhZHkuZW1pdCh0cnVlKVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKHN0YXRlID09ICdwYXJ0aWFsbHlfYXV0aG9yaXplZCcpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlYWR5LmVtaXQodHJ1ZSlcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnByb2Nlc3NFcnJvcih0aGlzLnBhcmFtc01lbnNhamUpXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoc3RhdGUgPT0gJ2NhbmNlbCcpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChzdGF0ZSA9PSAnZmFpbHVyZScpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnByb2Nlc3NFcnJvcignJylcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMuc2hvd01vZGFsID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICByZXR1cm5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY2FsbFN0YXRlKClcclxuICAgICAgICAgICAgfSwgNTAwMCk7XHJcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XHJcblxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcm9jZXNzRXJyb3IgPSAoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLnRvYXN0clNlcnZpY2Uuc2hvdyhlcnIgIT0gJycgPyBlcnIgOiAncGF5bWVudC1lcnJvcicpO1xyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKFwiRVJST1IgRU5WSU8gQkFDSyAgXCIsIGVycik7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0Q2hlY2tvdXREZWNpZGlyID0gKCkgPT4ge1xyXG4gICAgICAgIGlmICghdGhpcy5pc0Jyb3dzZXIpIHJldHVybjtcclxuICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlXHJcbiAgICAgICAgdGhpcy5kYXRhRGVjaWRpciA9IHRoaXMubWV0aG9kO1xyXG4gICAgICAgIHRoaXMudXJsID0gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKCdhc3NldHMvZGVjaWRpckZvcm1FYy5odG1sJylcclxuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZVxyXG4gICAgICAgIFxyXG4gICAgICAgIC8vIEVzY3VjaGFyIG1lbnNhamVzIGRlbCBpZnJhbWUgcGFyYSBtYW5lamFyIGxhIGNvbXVuaWNhY2nDs25cclxuICAgIHRoaXMud2luZG93UmVmPy5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgdGhpcy5tZXNzYWdlTGlzdGVuZXIgYXMgRXZlbnRMaXN0ZW5lck9yRXZlbnRMaXN0ZW5lck9iamVjdCwgZmFsc2UpO1xyXG4gICAgfVxyXG5cclxuICAgIGhhbmRsZUlmcmFtZU1lc3NhZ2UgPSAoZXZlbnQ6IE1lc3NhZ2VFdmVudCkgPT4ge1xyXG4gICAgICAgIC8vIFZlcmlmaWNhciBlbCBvcmlnZW4gcG9yIHNlZ3VyaWRhZFxyXG4gICAgICAgIGlmICghdGhpcy5pc0Jyb3dzZXIgfHwgIXRoaXMud2luZG93UmVmKSByZXR1cm47XHJcblxyXG4gICAgICAgIGlmIChldmVudC5vcmlnaW4gIT09IHRoaXMud2luZG93UmVmLmxvY2F0aW9uLm9yaWdpbikge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoZXZlbnQuZGF0YSAmJiBldmVudC5kYXRhLnR5cGUgPT09ICdERUNJRElSX1BBWU1FTlQnKSB7XHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCdEZWNpZGlyQ29tcG9uZW50IC0gUHJvY2VzYW5kbyBwYWdvIGNvbiBwYXlsb2FkOicsIGV2ZW50LmRhdGEucGF5bG9hZCk7XHJcbiAgICAgICAgICAgIHRoaXMucHJvY2Vzc1BheW1lbnQoZXZlbnQuZGF0YS5wYXlsb2FkKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJvY2Vzc1BheW1lbnQgPSAocGF5bWVudERhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmICghdGhpcy5pc0Jyb3dzZXIpIHJldHVybjtcclxuICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgXHJcbiAgICAgICAgXHJcbiAgICAgICAgdGhpcy5jb25uZWN0aW9uLnBvc3QoJ3Nob3AtYXBpLycgKyB0aGlzLmNvbnN0cy5nZXRDaGFubmVsKCkgKyAnL2RlY2lkaXIvJyArIHRoaXMuY2FydFNlcnZpY2UuY2FydFRva2VuICsgJy9wcm9jZXNzLXBheW1lbnQnKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICAgICAgICAgIG5leHQ6IChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coJ1Jlc3B1ZXN0YSBkZWwgYmFja2VuZDonLCByZXNwb25zZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gJ2FwcHJvdmVkJyB8fCByZXNwb25zZS5zdGF0dXMgPT09ICdwYXJ0aWFsbHlfYXV0aG9yaXplZCcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2NhbFN0b3JhZ2VSZWY/LnNldEl0ZW0oJ3N0YXRlJywgcmVzcG9uc2Uuc3RhdHVzID09PSAnYXBwcm92ZWQnID8gJ3N1Y2Nlc3MnIDogJ3BhcnRpYWxseV9hdXRob3JpemVkJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5tZXNzYWdlKSB0aGlzLmxvY2FsU3RvcmFnZVJlZj8uc2V0SXRlbSgnbWVzc2FnZScsIHJlc3BvbnNlLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3ViTWVzc2FnZSkgdGhpcy5sb2NhbFN0b3JhZ2VSZWY/LnNldEl0ZW0oJ3N1Yk1lc3NhZ2UnLCByZXNwb25zZS5zdWJNZXNzYWdlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jYWxsU3RhdGUoKTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvY2FsU3RvcmFnZVJlZj8uc2V0SXRlbSgnc3RhdGUnLCAnZmFpbHVyZScpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UubWVzc2FnZSkgdGhpcy5sb2NhbFN0b3JhZ2VSZWY/LnNldEl0ZW0oJ21lc3NhZ2UnLCByZXNwb25zZS5tZXNzYWdlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN1Yk1lc3NhZ2UpIHRoaXMubG9jYWxTdG9yYWdlUmVmPy5zZXRJdGVtKCdzdWJNZXNzYWdlJywgcmVzcG9uc2Uuc3ViTWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2FsbFN0YXRlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGVycm9yOiAoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHByb2Nlc3NpbmcgcGF5bWVudDonLCBlcnJvcik7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2NhbFN0b3JhZ2VSZWY/LnNldEl0ZW0oJ3N0YXRlJywgJ2ZhaWx1cmUnKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnByb2Nlc3NFcnJvcignRXJyb3IgYWwgcHJvY2VzYXIgZWwgcGFnbycpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2FsbFN0YXRlKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHJlc2l6ZUlmcmFtZSA9IChvYmo6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmICghdGhpcy5pc0Jyb3dzZXIgfHwgdHlwZW9mIGRvY3VtZW50ID09PSAndW5kZWZpbmVkJyB8fCAhb2JqLmNvbnRlbnRXaW5kb3cgfHwgIW9iai5jb250ZW50V2luZG93LmRvY3VtZW50KSByZXR1cm47XHJcbiAgICAgICAgXHJcbiAgICAgICAgb2JqLnN0eWxlLmhlaWdodCA9IG9iai5jb250ZW50V2luZG93LmRvY3VtZW50LmJvZHkuc2Nyb2xsSGVpZ2h0ICsgJ3B4JztcclxuICAgICAgICBvYmouc3R5bGUud2lkdGggPSBvYmouY29udGVudFdpbmRvdy5kb2N1bWVudC5ib2R5LnNjcm9sbFdpZHRoICsgJ3B4JztcclxuICAgIH1cclxuXHJcbn1cclxuXHJcbiIsIjxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlxyXG4gICAgPGgzPkNvbnRpbnVhciBjb24gZWwgcGFnbyBlbiBEZWNpZGlyPC9oMz5cclxuICAgIEBpZiAobWV0aG9kKSB7XHJcbiAgICA8cCBjbGFzcz1cInB4LTVcIj57eyBtZXRob2QuZGVzY3JpcHRpb24gfX08L3A+XHJcbiAgICA8cCBjbGFzcz1cInB4LTVcIj57eyBtZXRob2QuaW5zdHJ1Y3Rpb25zIH19PC9wPlxyXG4gICAgfVxyXG4gICAgQGlmICghbG9hZGluZykge1xyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtc2Vjb25kYXJ5IGNvbXByYXJcIiAoY2xpY2spPVwib3Blbk1vZGFsKClcIj5QYWdhcjwvYnV0dG9uPlxyXG4gICAgfSBAZWxzZSB7XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGp1c2l0ZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIG10LTJcIj5cclxuICAgICAgICA8YXBwLWxvYWRpbmctZnVsbC1lYz48L2FwcC1sb2FkaW5nLWZ1bGwtZWM+XHJcbiAgICA8L2Rpdj5cclxuICAgIH1cclxuICAgIDwvZGl2PlxyXG5cclxuQGlmIChzaG93TW9kYWwpIHtcclxuPGRpdiBjbGFzcz1cIm1vZGFsLWJhY2tkcm9wXCIgKGNsaWNrKT1cImNsaWNrQ2xvc2UoKVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsLWRpYWxvZyBtb2RhbC1sZ1wiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtY29udGVudFwiPlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHlcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwYXltZW50LWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBJZnJhbWUgZGVsIGZvcm11bGFyaW8gZGUgZGVjaWRpciAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaWZyYW1lLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aWZyYW1lIFtzcmNdPVwidXJsXCIgZnJhbWVib3JkZXI9XCIwXCIgY2xhc3M9XCJwYXltZW50LWlmcmFtZVwiPjwvaWZyYW1lPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG59XHJcbiJdfQ==
|
|
@@ -2,5 +2,6 @@ export * from './loading';
|
|
|
2
2
|
export * from './price-ec/price-ec.component';
|
|
3
3
|
export * from './re-captcha-ec/re-captcha-ec.component';
|
|
4
4
|
export * from './magnizoom-ec/magnizoom-ec.component';
|
|
5
|
+
export * from './redsys-catch-ec/redsys-catch-ec.component';
|
|
5
6
|
// export * from './rating-ec/rating-ec.component';
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lYXN5Y29tbWVyY2UtdjE4L3NyYy9saWIvZWMtY29tcG9uZW50cy93aWRnZXRzLWVjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLGNBQWMsV0FBVyxDQUFDO0FBQzFCLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsNkNBQTZDLENBQUM7QUFDNUQsbURBQW1EIiwic291cmNlc0NvbnRlbnQiOlsiXHJcbmV4cG9ydCAqIGZyb20gJy4vbG9hZGluZyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vcHJpY2UtZWMvcHJpY2UtZWMuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9yZS1jYXB0Y2hhLWVjL3JlLWNhcHRjaGEtZWMuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9tYWduaXpvb20tZWMvbWFnbml6b29tLWVjLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vcmVkc3lzLWNhdGNoLWVjL3JlZHN5cy1jYXRjaC1lYy5jb21wb25lbnQnO1xyXG4vLyBleHBvcnQgKiBmcm9tICcuL3JhdGluZy1lYy9yYXRpbmctZWMuY29tcG9uZW50JzsiXX0=
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
import { Component, Inject, PLATFORM_ID } from '@angular/core';
|
|
2
|
+
import { combineLatest } from 'rxjs';
|
|
3
|
+
import { ComponentHelper } from '../../../classes/component-helper';
|
|
4
|
+
import { CommonModule, isPlatformBrowser } from '@angular/common';
|
|
5
|
+
import { DOCUMENT } from '@angular/common';
|
|
6
|
+
import { LoadingFullEcComponent } from '../loading/loading-full-ec/loading-full-ec.component';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "@angular/router";
|
|
9
|
+
import * as i2 from "../../../ec-services";
|
|
10
|
+
import * as i3 from "@angular/common";
|
|
11
|
+
/**
|
|
12
|
+
* Catch genérico para redirecciones de pagos.
|
|
13
|
+
* - Normaliza el estado recibido por params/query.
|
|
14
|
+
* - Informa el resultado al opener (postMessage), BroadcastChannel y localStorage.
|
|
15
|
+
* - Intenta cerrarse; si el cierre falla, redirige según el estado.
|
|
16
|
+
*/
|
|
17
|
+
export class RedsysCatchEcComponent extends ComponentHelper {
|
|
18
|
+
activedRoute;
|
|
19
|
+
router;
|
|
20
|
+
checkoutService;
|
|
21
|
+
renderer;
|
|
22
|
+
elementRef;
|
|
23
|
+
document;
|
|
24
|
+
platformId;
|
|
25
|
+
message = '';
|
|
26
|
+
subscription = null;
|
|
27
|
+
sid = '';
|
|
28
|
+
bc;
|
|
29
|
+
constructor(activedRoute, router, checkoutService, renderer, elementRef, document, platformId) {
|
|
30
|
+
super();
|
|
31
|
+
this.activedRoute = activedRoute;
|
|
32
|
+
this.router = router;
|
|
33
|
+
this.checkoutService = checkoutService;
|
|
34
|
+
this.renderer = renderer;
|
|
35
|
+
this.elementRef = elementRef;
|
|
36
|
+
this.document = document;
|
|
37
|
+
this.platformId = platformId;
|
|
38
|
+
this.hideHeaderFooter();
|
|
39
|
+
this.ecOnConstruct();
|
|
40
|
+
}
|
|
41
|
+
ngOnInit() {
|
|
42
|
+
if (isPlatformBrowser(this.platformId) && 'BroadcastChannel' in window) {
|
|
43
|
+
this.bc = new BroadcastChannel('mp_payment');
|
|
44
|
+
}
|
|
45
|
+
this.subscription = combineLatest([this.activedRoute.params, this.activedRoute.queryParams])
|
|
46
|
+
.subscribe(([routeParams, q]) => {
|
|
47
|
+
let stateStr = routeParams['state'];
|
|
48
|
+
if (stateStr === 'statuspayment')
|
|
49
|
+
stateStr = q['status'];
|
|
50
|
+
const statusParam = (stateStr || q['status'] || q['state'] || '').toString();
|
|
51
|
+
const state = this.normalizeState(statusParam);
|
|
52
|
+
this.sid = (q['sid'] || (isPlatformBrowser(this.platformId) ? localStorage.getItem('mp:sid') : '') || '').toString();
|
|
53
|
+
this.storeTotalAmount(q);
|
|
54
|
+
this.setStateInLocal('Su pago fue procesado con éxito.', state);
|
|
55
|
+
this.signalState(state);
|
|
56
|
+
this.tryCloseSelf(() => {
|
|
57
|
+
const target = (state === 'success' || state === 'pending')
|
|
58
|
+
? ['/checkout/order_success']
|
|
59
|
+
: ['/checkout'];
|
|
60
|
+
setTimeout(() => this.router.navigate(target), 4500);
|
|
61
|
+
});
|
|
62
|
+
});
|
|
63
|
+
this.ecOnInit();
|
|
64
|
+
}
|
|
65
|
+
ngOnDestroy() {
|
|
66
|
+
this.subscription?.unsubscribe();
|
|
67
|
+
this.bc?.close();
|
|
68
|
+
this.showHeaderFooter();
|
|
69
|
+
}
|
|
70
|
+
/** Guarda total_amount si viene desde el PSP. */
|
|
71
|
+
storeTotalAmount(queryParams) {
|
|
72
|
+
const totalAmount = queryParams['total_amount'];
|
|
73
|
+
if (totalAmount && isPlatformBrowser(this.platformId)) {
|
|
74
|
+
localStorage.setItem('total_amount', totalAmount);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
/** Setea mensaje y estado en storages. */
|
|
78
|
+
setStateInLocal = (mensaje, state) => {
|
|
79
|
+
this.message = mensaje;
|
|
80
|
+
if (!isPlatformBrowser(this.platformId))
|
|
81
|
+
return;
|
|
82
|
+
try {
|
|
83
|
+
localStorage.setItem('state', state);
|
|
84
|
+
}
|
|
85
|
+
catch { }
|
|
86
|
+
try {
|
|
87
|
+
sessionStorage.setItem('modalnews', 'false');
|
|
88
|
+
}
|
|
89
|
+
catch { }
|
|
90
|
+
};
|
|
91
|
+
/** Normaliza estados heterogéneos de distintos gateways. */
|
|
92
|
+
normalizeState(raw) {
|
|
93
|
+
const v = (raw || '').toLowerCase();
|
|
94
|
+
if (v === '200' || v === 'ok' || v === 'success')
|
|
95
|
+
return 'success';
|
|
96
|
+
if (v === 'pending')
|
|
97
|
+
return 'pending';
|
|
98
|
+
if (v === 'cancel')
|
|
99
|
+
return 'cancel';
|
|
100
|
+
return 'failure'; // failure, 0, error, rejected, chargeback, desconocidos
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Informa el resultado: postMessage al opener, BroadcastChannel y localStorage
|
|
104
|
+
* (este último permite polling en la pestaña madre).
|
|
105
|
+
*/
|
|
106
|
+
signalState(state) {
|
|
107
|
+
if (!isPlatformBrowser(this.platformId))
|
|
108
|
+
return;
|
|
109
|
+
const sid = this.sid || localStorage.getItem('mp:sid') || '';
|
|
110
|
+
const payload = { type: 'mp:state', sid, state };
|
|
111
|
+
try {
|
|
112
|
+
window.opener && window.opener.postMessage(payload, '*');
|
|
113
|
+
}
|
|
114
|
+
catch { }
|
|
115
|
+
try {
|
|
116
|
+
this.bc?.postMessage(payload);
|
|
117
|
+
}
|
|
118
|
+
catch { }
|
|
119
|
+
try {
|
|
120
|
+
localStorage.setItem(`mp:state:${sid}`, state);
|
|
121
|
+
}
|
|
122
|
+
catch { }
|
|
123
|
+
try {
|
|
124
|
+
localStorage.setItem('state', state);
|
|
125
|
+
}
|
|
126
|
+
catch { }
|
|
127
|
+
}
|
|
128
|
+
/** Intenta cerrar la pestaña actual; si falla, ejecuta el callback de fallback. */
|
|
129
|
+
tryCloseSelf(onFail) {
|
|
130
|
+
if (!isPlatformBrowser(this.platformId))
|
|
131
|
+
return onFail();
|
|
132
|
+
let attempted = false;
|
|
133
|
+
try {
|
|
134
|
+
window.close();
|
|
135
|
+
attempted = true;
|
|
136
|
+
}
|
|
137
|
+
catch { }
|
|
138
|
+
if (!attempted)
|
|
139
|
+
onFail();
|
|
140
|
+
}
|
|
141
|
+
/** Oculta header/footer para esta pantalla mínima. */
|
|
142
|
+
hideHeaderFooter() {
|
|
143
|
+
if (!isPlatformBrowser(this.platformId) || !this.document)
|
|
144
|
+
return;
|
|
145
|
+
const header = this.document.querySelector('header');
|
|
146
|
+
const footer = this.document.querySelector('footer');
|
|
147
|
+
if (header)
|
|
148
|
+
this.renderer.setStyle(header, 'display', 'none');
|
|
149
|
+
if (footer)
|
|
150
|
+
this.renderer.setStyle(footer, 'display', 'none');
|
|
151
|
+
}
|
|
152
|
+
/** Restaura header/footer al salir. */
|
|
153
|
+
showHeaderFooter() {
|
|
154
|
+
if (!isPlatformBrowser(this.platformId) || !this.document)
|
|
155
|
+
return;
|
|
156
|
+
const header = this.document.querySelector('header');
|
|
157
|
+
const footer = this.document.querySelector('footer');
|
|
158
|
+
if (header)
|
|
159
|
+
this.renderer.removeStyle(header, 'display');
|
|
160
|
+
if (footer)
|
|
161
|
+
this.renderer.removeStyle(footer, 'display');
|
|
162
|
+
}
|
|
163
|
+
setStateInSession(mensaje, state) {
|
|
164
|
+
this.message = mensaje;
|
|
165
|
+
if (!isPlatformBrowser(this.platformId))
|
|
166
|
+
return;
|
|
167
|
+
try {
|
|
168
|
+
sessionStorage.setItem('state', state);
|
|
169
|
+
}
|
|
170
|
+
catch { }
|
|
171
|
+
try {
|
|
172
|
+
localStorage.setItem('state', state);
|
|
173
|
+
}
|
|
174
|
+
catch { }
|
|
175
|
+
try {
|
|
176
|
+
sessionStorage.setItem('modalnews', 'false');
|
|
177
|
+
}
|
|
178
|
+
catch { }
|
|
179
|
+
}
|
|
180
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RedsysCatchEcComponent, deps: [{ token: i1.ActivatedRoute }, { token: i1.Router }, { token: i2.CheckoutService }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: DOCUMENT }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Component });
|
|
181
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: RedsysCatchEcComponent, isStandalone: true, selector: "app-redsys-catch-ec", usesInheritance: true, ngImport: i0, template: "<div id=\"container\">\r\n <div class=\"row\">\r\n <div class=\"col align-self-center\">\r\n <h4 class=\"titpage center-block text-center font-nexa font-lg my-3\">{{ message | uppercase }}</h4>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col align-self-center\">\r\n <h5 class=\"center-block text-center font-nexa my-3\">Redirigiendo en segundos...</h5>\r\n <br>\r\n <div class=\"d-flex flex-column jusitfy-content-center align-items-center\">\r\n <app-loading-full-ec></app-loading-full-ec>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: [".loader{border:16px solid #f3f3f3;border-top:16px solid #dc3545;border-radius:50%;width:50px;height:50px;animation:spin 2s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.flex-container{display:flex;justify-content:center;align-items:center;height:80vh;width:100%}.flex-container>div{width:90%;height:100px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i3.UpperCasePipe, name: "uppercase" }, { kind: "component", type: LoadingFullEcComponent, selector: "app-loading-full-ec" }] });
|
|
182
|
+
}
|
|
183
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RedsysCatchEcComponent, decorators: [{
|
|
184
|
+
type: Component,
|
|
185
|
+
args: [{ selector: 'app-redsys-catch-ec', standalone: true, imports: [CommonModule, LoadingFullEcComponent], template: "<div id=\"container\">\r\n <div class=\"row\">\r\n <div class=\"col align-self-center\">\r\n <h4 class=\"titpage center-block text-center font-nexa font-lg my-3\">{{ message | uppercase }}</h4>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col align-self-center\">\r\n <h5 class=\"center-block text-center font-nexa my-3\">Redirigiendo en segundos...</h5>\r\n <br>\r\n <div class=\"d-flex flex-column jusitfy-content-center align-items-center\">\r\n <app-loading-full-ec></app-loading-full-ec>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: [".loader{border:16px solid #f3f3f3;border-top:16px solid #dc3545;border-radius:50%;width:50px;height:50px;animation:spin 2s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.flex-container{display:flex;justify-content:center;align-items:center;height:80vh;width:100%}.flex-container>div{width:90%;height:100px}\n"] }]
|
|
186
|
+
}], ctorParameters: () => [{ type: i1.ActivatedRoute }, { type: i1.Router }, { type: i2.CheckoutService }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: Document, decorators: [{
|
|
187
|
+
type: Inject,
|
|
188
|
+
args: [DOCUMENT]
|
|
189
|
+
}] }, { type: undefined, decorators: [{
|
|
190
|
+
type: Inject,
|
|
191
|
+
args: [PLATFORM_ID]
|
|
192
|
+
}] }] });
|
|
193
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkc3lzLWNhdGNoLWVjLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVhc3ljb21tZXJjZS12MTgvc3JjL2xpYi9lYy1jb21wb25lbnRzL3dpZGdldHMtZWMvcmVkc3lzLWNhdGNoLWVjL3JlZHN5cy1jYXRjaC1lYy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lYXN5Y29tbWVyY2UtdjE4L3NyYy9saWIvZWMtY29tcG9uZW50cy93aWRnZXRzLWVjL3JlZHN5cy1jYXRjaC1lYy9yZWRzeXMtY2F0Y2gtZWMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBNEMsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6RyxPQUFPLEVBQUUsYUFBYSxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUNuRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFHcEUsT0FBTyxFQUFFLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQzs7Ozs7QUFJOUY7Ozs7O0dBS0c7QUFRSCxNQUFNLE9BQU8sc0JBQXVCLFNBQVEsZUFBZTtJQVE1QztJQUNBO0lBQ0E7SUFDQztJQUNBO0lBQ2tCO0lBQ0c7SUFaMUIsT0FBTyxHQUFHLEVBQUUsQ0FBQztJQUNaLFlBQVksR0FBd0IsSUFBSSxDQUFDO0lBQ3pDLEdBQUcsR0FBRyxFQUFFLENBQUM7SUFDVCxFQUFFLENBQW9CO0lBRTlCLFlBQ1csWUFBNEIsRUFDNUIsTUFBYyxFQUNkLGVBQWdDLEVBQy9CLFFBQW1CLEVBQ25CLFVBQXNCLEVB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R0FBRyxPQUFPLENBQUM7UUFDdkIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7WUFBRSxPQUFPO1FBQ2hELElBQUksQ0FBQztZQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQUMsQ0FBQztRQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDO1lBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFBQyxDQUFDO1FBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUN2RCxJQUFJLENBQUM7WUFBQyxjQUFjLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUFDLENBQUM7UUFBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ25FLENBQUM7d0dBaklRLHNCQUFzQix3SkFhbkIsUUFBUSxhQUNSLFdBQVc7NEZBZGQsc0JBQXNCLHNHQ3pCbkMseXBCQWVNLG1aRE1RLFlBQVksNEZBQUUsc0JBQXNCOzs0RkFJckMsc0JBQXNCO2tCQVBsQyxTQUFTOytCQUNJLHFCQUFxQixjQUNuQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsc0JBQXNCLENBQUM7OzBCQWlCMUMsTUFBTTsyQkFBQyxRQUFROzswQkFDZixNQUFNOzJCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgT25EZXN0cm95LCBSZW5kZXJlcjIsIEVsZW1lbnRSZWYsIEluamVjdCwgUExBVEZPUk1fSUQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRIZWxwZXIgfSBmcm9tICcuLi8uLi8uLi9jbGFzc2VzL2NvbXBvbmVudC1oZWxwZXInO1xyXG5pbXBvcnQgeyBDYXJ0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2VjLXNlcnZpY2VzJztcclxuaW1wb3J0IHsgQ2hlY2tvdXRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vZWMtc2VydmljZXMnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUsIGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBMb2FkaW5nRnVsbEVjQ29tcG9uZW50IH0gZnJvbSAnLi4vbG9hZGluZy9sb2FkaW5nLWZ1bGwtZWMvbG9hZGluZy1mdWxsLWVjLmNvbXBvbmVudCc7XHJcblxyXG50eXBlIE1wU3RhdGUgPSAnc3VjY2VzcycgfCAncGVuZGluZycgfCAnZmFpbHVyZScgfCAnY2FuY2VsJztcclxuXHJcbi8qKlxyXG4gKiBDYXRjaCBnZW7DqXJpY28gcGFyYSByZWRpcmVjY2lvbmVzIGRlIHBhZ29zLlxyXG4gKiAtIE5vcm1hbGl6YSBlbCBlc3RhZG8gcmVjaWJpZG8gcG9yIHBhcmFtcy9xdWVyeS5cclxuICogLSBJbmZvcm1hIGVsIHJlc3VsdGFkbyBhbCBvcGVuZXIgKHBvc3RNZXNzYWdlKSwgQnJvYWRjYXN0Q2hhbm5lbCB5IGxvY2FsU3RvcmFnZS5cclxuICogLSBJbnRlbnRhIGNlcnJhcnNlOyBzaSBlbCBjaWVycmUgZmFsbGEsIHJlZGlyaWdlIHNlZ8O6biBlbCBlc3RhZG8uXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnYXBwLXJlZHN5cy1jYXRjaC1lYycsXHJcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTG9hZGluZ0Z1bGxFY0NvbXBvbmVudF0sXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vcmVkc3lzLWNhdGNoLWVjLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL3JlZHN5cy1jYXRjaC1lYy5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSZWRzeXNDYXRjaEVjQ29tcG9uZW50IGV4dGVuZHMgQ29tcG9uZW50SGVscGVyIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG5cclxuICAgIHB1YmxpYyBtZXNzYWdlID0gJyc7XHJcbiAgICBwcml2YXRlIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgbnVsbCA9IG51bGw7XHJcbiAgICBwcml2YXRlIHNpZCA9ICcnO1xyXG4gICAgcHJpdmF0ZSBiYz86IEJyb2FkY2FzdENoYW5uZWw7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHVibGljIGFjdGl2ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcbiAgICAgICAgcHVibGljIHJvdXRlcjogUm91dGVyLFxyXG4gICAgICAgIHB1YmxpYyBjaGVja291dFNlcnZpY2U6IENoZWNrb3V0U2VydmljZSxcclxuICAgICAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXHJcbiAgICAgICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxyXG4gICAgICAgIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgZG9jdW1lbnQ6IERvY3VtZW50LFxyXG4gICAgICAgIEBJbmplY3QoUExBVEZPUk1fSUQpIHByaXZhdGUgcGxhdGZvcm1JZDogYW55XHJcbiAgICApIHtcclxuICAgICAgICBzdXBlcigpO1xyXG5cclxuICAgICAgICB0aGlzLmhpZGVIZWFkZXJGb290ZXIoKTtcclxuICAgICAgICB0aGlzLmVjT25Db25zdHJ1Y3QoKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSAmJiAnQnJvYWRjYXN0Q2hhbm5lbCcgaW4gd2luZG93KSB7XHJcbiAgICAgICAgICAgIHRoaXMuYmMgPSBuZXcgQnJvYWRjYXN0Q2hhbm5lbCgnbXBfcGF5bWVudCcpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24gPSBjb21iaW5lTGF0ZXN0KFt0aGlzLmFjdGl2ZWRSb3V0ZS5wYXJhbXMsIHRoaXMuYWN0aXZlZFJvdXRlLnF1ZXJ5UGFyYW1zXSlcclxuICAgICAgICAgICAgLnN1YnNjcmliZSgoW3JvdXRlUGFyYW1zLCBxXSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgbGV0IHN0YXRlU3RyOiBzdHJpbmcgfCB1bmRlZmluZWQgPSByb3V0ZVBhcmFtc1snc3RhdGUnXTtcclxuICAgICAgICAgICAgICAgIGlmIChzdGF0ZVN0ciA9PT0gJ3N0YXR1c3BheW1lbnQnKSBzdGF0ZVN0ciA9IHFbJ3N0YXR1cyddO1xyXG5cclxuICAgICAgICAgICAgICAgIGNvbnN0IHN0YXR1c1BhcmFtID0gKHN0YXRlU3RyIHx8IHFbJ3N0YXR1cyddIHx8IHFbJ3N0YXRlJ10gfHwgJycpLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBzdGF0ZSA9IHRoaXMubm9ybWFsaXplU3RhdGUoc3RhdHVzUGFyYW0pO1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuc2lkID0gKHFbJ3NpZCddIHx8IChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpID8gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ21wOnNpZCcpIDogJycpIHx8ICcnKS50b1N0cmluZygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdG9yZVRvdGFsQW1vdW50KHEpO1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGVJbkxvY2FsKCdTdSBwYWdvIGZ1ZSBwcm9jZXNhZG8gY29uIMOpeGl0by4nLCBzdGF0ZSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNpZ25hbFN0YXRlKHN0YXRlKTtcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLnRyeUNsb3NlU2VsZigoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gKHN0YXRlID09PSAnc3VjY2VzcycgfHwgc3RhdGUgPT09ICdwZW5kaW5nJylcclxuICAgICAgICAgICAgICAgICAgICAgICAgPyBbJy9jaGVja291dC9vcmRlcl9zdWNjZXNzJ11cclxuICAgICAgICAgICAgICAgICAgICAgICAgOiBbJy9jaGVja291dCddO1xyXG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5yb3V0ZXIubmF2aWdhdGUodGFyZ2V0KSwgNDUwMCk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5lY09uSW5pdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25EZXN0cm95KCkge1xyXG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xyXG4gICAgICAgIHRoaXMuYmM/LmNsb3NlKCk7XHJcbiAgICAgICAgdGhpcy5zaG93SGVhZGVyRm9vdGVyKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEd1YXJkYSB0b3RhbF9hbW91bnQgc2kgdmllbmUgZGVzZGUgZWwgUFNQLiAqL1xyXG4gICAgcHJpdmF0ZSBzdG9yZVRvdGFsQW1vdW50KHF1ZXJ5UGFyYW1zOiBhbnkpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCB0b3RhbEFtb3VudCA9IHF1ZXJ5UGFyYW1zWyd0b3RhbF9hbW91bnQnXTtcclxuICAgICAgICBpZiAodG90YWxBbW91bnQgJiYgaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xyXG4gICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgndG90YWxfYW1vdW50JywgdG90YWxBbW91bnQpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKiogU2V0ZWEgbWVuc2FqZSB5IGVzdGFkbyBlbiBzdG9yYWdlcy4gKi9cclxuICAgIHByaXZhdGUgc2V0U3RhdGVJbkxvY2FsID0gKG1lbnNhamU6IHN0cmluZywgc3RhdGU6IHN0cmluZyk6IHZvaWQgPT4ge1xyXG4gICAgICAgIHRoaXMubWVzc2FnZSA9IG1lbnNhamU7XHJcbiAgICAgICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSByZXR1cm47XHJcbiAgICAgICAgdHJ5IHsgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3N0YXRlJywgc3RhdGUpOyB9IGNhdGNoIHsgfVxyXG4gICAgICAgIHRyeSB7IHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oJ21vZGFsbmV3cycsICdmYWxzZScpOyB9IGNhdGNoIHsgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKiBOb3JtYWxpemEgZXN0YWRvcyBoZXRlcm9nw6luZW9zIGRlIGRpc3RpbnRvcyBnYXRld2F5cy4gKi9cclxuICAgIHByaXZhdGUgbm9ybWFsaXplU3RhdGUocmF3OiBzdHJpbmcpOiBNcFN0YXRlIHtcclxuICAgICAgICBjb25zdCB2ID0gKHJhdyB8fCAnJykudG9Mb3dlckNhc2UoKTtcclxuICAgICAgICBpZiAodiA9PT0gJzIwMCcgfHwgdiA9PT0gJ29rJyB8fCB2ID09PSAnc3VjY2VzcycpIHJldHVybiAnc3VjY2Vzcyc7XHJcbiAgICAgICAgaWYgKHYgPT09ICdwZW5kaW5nJykgcmV0dXJuICdwZW5kaW5nJztcclxuICAgICAgICBpZiAodiA9PT0gJ2NhbmNlbCcpIHJldHVybiAnY2FuY2VsJztcclxuICAgICAgICByZXR1cm4gJ2ZhaWx1cmUnOyAvLyBmYWlsdXJlLCAwLCBlcnJvciwgcmVqZWN0ZWQsIGNoYXJnZWJhY2ssIGRlc2Nvbm9jaWRvc1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW5mb3JtYSBlbCByZXN1bHRhZG86IHBvc3RNZXNzYWdlIGFsIG9wZW5lciwgQnJvYWRjYXN0Q2hhbm5lbCB5IGxvY2FsU3RvcmFnZVxyXG4gICAgICogKGVzdGUgw7psdGltbyBwZXJtaXRlIHBvbGxpbmcgZW4gbGEgcGVzdGHDsWEgbWFkcmUpLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHNpZ25hbFN0YXRlKHN0YXRlOiBNcFN0YXRlKSB7XHJcbiAgICAgICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSByZXR1cm47XHJcbiAgICAgICAgY29uc3Qgc2lkID0gdGhpcy5zaWQgfHwgbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ21wOnNpZCcpIHx8ICcnO1xyXG4gICAgICAgIGNvbnN0IHBheWxvYWQgPSB7IHR5cGU6ICdtcDpzdGF0ZScsIHNpZCwgc3RhdGUgfTtcclxuXHJcbiAgICAgICAgdHJ5IHsgd2luZG93Lm9wZW5lciAmJiB3aW5kb3cub3BlbmVyLnBvc3RNZXNzYWdlKHBheWxvYWQsICcqJyk7IH0gY2F0Y2ggeyB9XHJcbiAgICAgICAgdHJ5IHsgdGhpcy5iYz8ucG9zdE1lc3NhZ2UocGF5bG9hZCk7IH0gY2F0Y2ggeyB9XHJcbiAgICAgICAgdHJ5IHsgbG9jYWxTdG9yYWdlLnNldEl0ZW0oYG1wOnN0YXRlOiR7c2lkfWAsIHN0YXRlKTsgfSBjYXRjaCB7IH1cclxuICAgICAgICB0cnkgeyBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnc3RhdGUnLCBzdGF0ZSk7IH0gY2F0Y2ggeyB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEludGVudGEgY2VycmFyIGxhIHBlc3Rhw7FhIGFjdHVhbDsgc2kgZmFsbGEsIGVqZWN1dGEgZWwgY2FsbGJhY2sgZGUgZmFsbGJhY2suICovXHJcbiAgICBwcml2YXRlIHRyeUNsb3NlU2VsZihvbkZhaWw6ICgpID0+IHZvaWQpIHtcclxuICAgICAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHJldHVybiBvbkZhaWwoKTtcclxuICAgICAgICBsZXQgYXR0ZW1wdGVkID0gZmFsc2U7XHJcbiAgICAgICAgdHJ5IHsgd2luZG93LmNsb3NlKCk7IGF0dGVtcHRlZCA9IHRydWU7IH0gY2F0Y2ggeyB9XHJcbiAgICAgICAgaWYgKCFhdHRlbXB0ZWQpIG9uRmFpbCgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBPY3VsdGEgaGVhZGVyL2Zvb3RlciBwYXJhIGVzdGEgcGFudGFsbGEgbcOtbmltYS4gKi9cclxuICAgIHByaXZhdGUgaGlkZUhlYWRlckZvb3RlcigpOiB2b2lkIHtcclxuICAgICAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkgfHwgIXRoaXMuZG9jdW1lbnQpIHJldHVybjtcclxuICAgICAgICBjb25zdCBoZWFkZXIgPSB0aGlzLmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2hlYWRlcicpO1xyXG4gICAgICAgIGNvbnN0IGZvb3RlciA9IHRoaXMuZG9jdW1lbnQucXVlcnlTZWxlY3RvcignZm9vdGVyJyk7XHJcbiAgICAgICAgaWYgKGhlYWRlcikgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShoZWFkZXIsICdkaXNwbGF5JywgJ25vbmUnKTtcclxuICAgICAgICBpZiAoZm9vdGVyKSB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGZvb3RlciwgJ2Rpc3BsYXknLCAnbm9uZScpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBSZXN0YXVyYSBoZWFkZXIvZm9vdGVyIGFsIHNhbGlyLiAqL1xyXG4gICAgcHJpdmF0ZSBzaG93SGVhZGVyRm9vdGVyKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSB8fCAhdGhpcy5kb2N1bWVudCkgcmV0dXJuO1xyXG4gICAgICAgIGNvbnN0IGhlYWRlciA9IHRoaXMuZG9jdW1lbnQucXVlcnlTZWxlY3RvcignaGVhZGVyJyk7XHJcbiAgICAgICAgY29uc3QgZm9vdGVyID0gdGhpcy5kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdmb290ZXInKTtcclxuICAgICAgICBpZiAoaGVhZGVyKSB0aGlzLnJlbmRlcmVyLnJlbW92ZVN0eWxlKGhlYWRlciwgJ2Rpc3BsYXknKTtcclxuICAgICAgICBpZiAoZm9vdGVyKSB0aGlzLnJlbmRlcmVyLnJlbW92ZVN0eWxlKGZvb3RlciwgJ2Rpc3BsYXknKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHNldFN0YXRlSW5TZXNzaW9uKG1lbnNhamU6IHN0cmluZywgc3RhdGU6IE1wU3RhdGUpIHtcclxuICAgICAgICB0aGlzLm1lc3NhZ2UgPSBtZW5zYWplO1xyXG4gICAgICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkgcmV0dXJuO1xyXG4gICAgICAgIHRyeSB7IHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oJ3N0YXRlJywgc3RhdGUpOyB9IGNhdGNoIHsgfVxyXG4gICAgICAgIHRyeSB7IGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdzdGF0ZScsIHN0YXRlKTsgfSBjYXRjaCB7IH1cclxuICAgICAgICB0cnkgeyBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdtb2RhbG5ld3MnLCAnZmFsc2UnKTsgfSBjYXRjaCB7IH1cclxuICAgIH1cclxuXHJcblxyXG59XHJcbiIsIjxkaXYgaWQ9XCJjb250YWluZXJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sIGFsaWduLXNlbGYtY2VudGVyXCI+XHJcbiAgICAgICAgICAgIDxoNCBjbGFzcz1cInRpdHBhZ2UgY2VudGVyLWJsb2NrIHRleHQtY2VudGVyIGZvbnQtbmV4YSBmb250LWxnIG15LTNcIj57eyBtZXNzYWdlIHwgdXBwZXJjYXNlIH19PC9oND5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wgYWxpZ24tc2VsZi1jZW50ZXJcIj5cclxuICAgICAgICAgICAgPGg1IGNsYXNzPVwiY2VudGVyLWJsb2NrIHRleHQtY2VudGVyIGZvbnQtbmV4YSBteS0zXCI+UmVkaXJpZ2llbmRvIGVuIHNlZ3VuZG9zLi4uPC9oNT5cclxuICAgICAgICAgICAgPGJyPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGp1c2l0ZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8YXBwLWxvYWRpbmctZnVsbC1lYz48L2FwcC1sb2FkaW5nLWZ1bGwtZWM+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==
|