ng-easycommerce-v18 0.3.13 → 0.3.14-beta.10
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 +21 -0
- package/esm2022/lib/classes/filters/filter.mjs +27 -2
- package/esm2022/lib/constants/api.constants.service.mjs +42 -44
- 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 +15 -12
- package/esm2022/lib/ec-components/auth-ec/password-reset-ec/password-reset-ec.component.mjs +7 -2
- package/esm2022/lib/ec-components/blocks-ec/block-products-ec/block-products-ec.component.mjs +5 -3
- 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 +32 -23
- package/esm2022/lib/ec-components/product-detail-ec/product-detail-ec.component.mjs +11 -10
- package/esm2022/lib/ec-components/related-products-ec/related-products-ec.component.mjs +6 -4
- 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 +5 -3
- package/esm2022/lib/ec-components/widgets-ec/magnizoom-ec/magnizoom-ec.component.mjs +4 -2
- package/esm2022/lib/ec-components/widgets-ec/redsys-catch-ec/redsys-catch-ec.component.mjs +135 -80
- package/esm2022/lib/ec-services/analytics/facebook-pixel.service.mjs +4 -2
- package/esm2022/lib/ec-services/analytics/google-analytics.service.mjs +7 -3
- 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/ec-services/options.service.mjs +27 -3
- package/esm2022/lib/interfaces/filter.mjs +1 -1
- package/esm2022/lib/interfaces/options.mjs +1 -1
- package/fesm2022/ng-easycommerce-v18.mjs +603 -316
- package/fesm2022/ng-easycommerce-v18.mjs.map +1 -1
- package/lib/constants/api.constants.service.d.ts +13 -24
- package/lib/ec-components/abstractions-components/menu-ec.component.d.ts +12 -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 +1 -1
- package/lib/ec-components/stores-ec/stores-ec.component.d.ts +2 -1
- package/lib/ec-components/widgets-ec/redsys-catch-ec/redsys-catch-ec.component.d.ts +26 -5
- 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/ec-services/options.service.d.ts +4 -0
- package/lib/interfaces/filter.d.ts +1 -0
- package/lib/interfaces/options.d.ts +2 -0
- package/package.json +1 -1
|
@@ -69,9 +69,12 @@ export class GTMService {
|
|
|
69
69
|
if (this.isLoaded) {
|
|
70
70
|
return resolve(this.isLoaded);
|
|
71
71
|
}
|
|
72
|
+
if (!isPlatformBrowser(this.platformId) || !this.document) {
|
|
73
|
+
return reject(false);
|
|
74
|
+
}
|
|
72
75
|
//const doc = this.browserGlobals.documentRef();
|
|
73
76
|
this.pushOnDataLayer({ 'gtm.start': new Date().getTime(), event: 'gtm.js' });
|
|
74
|
-
const gtmScript = this.document
|
|
77
|
+
const gtmScript = this.document.createElement('script'); //doc.createElement('script');
|
|
75
78
|
if (gtmScript) {
|
|
76
79
|
gtmScript.id = 'GTMscript';
|
|
77
80
|
gtmScript.async = true;
|
|
@@ -82,7 +85,7 @@ export class GTMService {
|
|
|
82
85
|
gtmScript.addEventListener('error', () => {
|
|
83
86
|
return reject(false);
|
|
84
87
|
});
|
|
85
|
-
this.document
|
|
88
|
+
this.document.head.insertBefore(gtmScript, this.document.head.firstChild);
|
|
86
89
|
}
|
|
87
90
|
});
|
|
88
91
|
}
|
|
@@ -411,4 +414,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
411
414
|
providedIn: 'root'
|
|
412
415
|
}]
|
|
413
416
|
}], ctorParameters: () => [] });
|
|
414
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3RtLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lYXN5Y29tbWVyY2UtdjE4L3NyYy9saWIvZWMtc2VydmljZXMvYW5hbHl0aWNzL2d0bS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZSxNQUFNLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBYSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUxRyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFDOUQ7O0dBRUc7QUFJSCxNQUFNLE9BQU8sVUFBVTtJQUNuQjs7T0FFRztJQUNLLFFBQVEsR0FBWSxLQUFLLENBQUM7SUFDbEM7O09BRUc7SUFDSyxPQUFPLEdBQVksS0FBSyxDQUFDO0lBQ2pDOzs7T0FHRztJQUNLLFFBQVEsQ0FBWTtJQUM1Qjs7T0FFRztJQUNLLE1BQU0sQ0FBVTtJQUVoQixlQUFlLEdBQXFCLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzdELFFBQVEsR0FBb0IsSUFBSSxDQUFDO0lBQ3pDOztPQUVHO0lBQ0ssTUFBTSxHQUFXLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN4Qzs7T0FFRztJQUNLLE1BQU0sR0FBMkIsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUE7SUFDN0MsVUFBVSxHQUFRLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQTtJQUM3QztRQUNJLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2hFLElBQUksaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDckMsSUFBSSxDQUFD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O0lBQ0Q7Ozs7T0FJRztJQUNLLFlBQVksQ0FBQyxJQUFTO1FBQzFCLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEIsT0FBTztZQUNILEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztTQUMzQixDQUFBO0lBQ0wsQ0FBQzt3R0F0WlEsVUFBVTs0R0FBVixVQUFVLGNBRlAsTUFBTTs7NEZBRVQsVUFBVTtrQkFIdEIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhZnRlclJlbmRlciwgaW5qZWN0LCBJbmplY3RhYmxlLCBQTEFURk9STV9JRCwgUmVuZGVyZXIyLCBSZW5kZXJlckZhY3RvcnkyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFuYWx5dGljRXZlbnRLZXksIEdvb2dsZVRhZ01hbmFnZXJDb25maWcgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcclxuaW1wb3J0IHsgTmF2aWdhdGlvbkVuZCwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgRE9DVU1FTlQsIGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuLyoqXHJcbiAqIFNlcnZpY2lvIHF1ZSBzZSBlbmNhcmdhIGRlIG1hbmVqYXIgZWwgYW5hbHl0aWNzIGRlIEdUTS5cclxuICovXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgR1RNU2VydmljZSB7XHJcbiAgICAvKipcclxuICAgICAqIEluZGljYSBzaSBzZSBlc3RhIGNhcmdhbmRvIGVsIHNlcnZpY2lvLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGlzTG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICAvKipcclxuICAgICAqIEluZGljYSBjdWFuZG8gZWwgc2VydmljaW8gZXN0YSBoYWJpbGl0YWRvLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGVuYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIC8qKlxyXG4gICAgICogU2UgZW5jYXJnYSBkZSBjcmVhciBlbCBlbGVtZW50byBIVE1MIGNvbiBsYXMgY29uZmlndXJhY2lvbmVzIHBhcmEgXHJcbiAgICAgKiBxdWUgc2UgcHVlZGEgZWplY3V0YXIgZWwgc2VydmljaW8uXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMjtcclxuICAgIC8qKlxyXG4gICAgICogQWxtYWNlbmEgZWwgb2JqZWN0byB3aW5kb3cgZGVsIG5hdmVnYWRvci5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSB3aW5kb3c/OiBXaW5kb3c7XHJcblxyXG4gICAgcHJpdmF0ZSByZW5kZXJlckZhY3Rvcnk6IFJlbmRlcmVyRmFjdG9yeTIgPSBpbmplY3QoUmVuZGVyZXJGYWN0b3J5Mik7XHJcbiAgICBwcml2YXRlIGRvY3VtZW50OiBEb2N1bWVudCB8IG51bGwgPSBudWxsO1xyXG4gICAgLyoqXHJcbiAgICAgKiBTZXJ2aWNpbyBkZSBydXRlbyBkZSBhbmd1bGFyLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyID0gaW5qZWN0KFJvdXRlcik7XHJcbiAgICAvKipcclxuICAgICAqIENvbmZpZ3VyYWNpw7NuIGRlIEdvb2dsZSBUYWcgTWFuYWdlci5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBjb25maWc6IEdvb2dsZVRhZ01hbmFnZXJDb25maWcgPSB7IGlkOiBudWxsIH1cclxuICAgIHByaXZhdGUgcGxhdGZvcm1JZDogYW55ID0gaW5qZWN0KFBMQVRGT1JNX0lEKVxyXG4gICAgY29uc3RydWN0b3IoKSB7XHJcbiAgICAgICAgdGhpcy5yZW5kZXJlciA9IHRoaXMucmVuZGVyZXJGYWN0b3J5LmNyZWF0ZVJlbmRlcmVyKG51bGwsIG51bGwpO1xyXG4gICAgICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XHJcbiAgICAgICAgICAgIHRoaXMud2luZG93ID0gd2luZG93XHJcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnQgPSBpbmplY3QoRE9DVU1FTlQpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICogT2J0aWVuZSBlbCBkYXRhTGF5ZXIgZGVsIG9iamVjdG8gd2luZG93XHJcbiAgICAgKiBAcmV0dXJucyBcclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldERhdGFMYXllcigpOiBhbnlbXSB7XHJcbiAgICAgICAgY29uc3Qgd2luZG93ID0gdGhpcy53aW5kb3c7XHJcbiAgICAgICAgLyogaWYod2luZG93KVxyXG4gICAgICAgIHdpbmRvdy5kYXRhTGF5ZXIgPSB3aW5kb3cuZGF0YUxheWVyIHx8IFtdO1xyXG4gICAgICAgIHJldHVybiB3aW5kb3cuZGF0YUxheWVyOyAqL1xyXG4gICAgICAgIHJldHVybiBbXVxyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBBZ3JlZ2EgZGF0b3MgYWwgZGF0YUxheWVyLlxyXG4gICAgICogQHBhcmFtIG9iaiBcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBwdXNoT25EYXRhTGF5ZXIob2JqOiBvYmplY3QpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBkYXRhTGF5ZXIgPSB0aGlzLmdldERhdGFMYXllcigpO1xyXG4gICAgICAgIGRhdGFMYXllci5wdXNoKG9iaik7XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIEFncmVnYSBlbCBzY3JpcHQgZGUgR1RNIHBhcmEgcXVlIGVtcGllY2UgYSBjYXB0dXJhciBldmVudG9zLlxyXG4gICAgICogQHJldHVybnMgXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBhZGRHdG1Ub0RvbSgpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoXHJcbiAgICAgICAgICAgIChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzTG9hZGVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUodGhpcy5pc0xvYWRlZCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvL2NvbnN0IGRvYyA9IHRoaXMuYnJvd3Nlckdsb2JhbHMuZG9jdW1lbnRSZWYoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMucHVzaE9uRGF0YUxheWVyKHsgJ2d0bS5zdGFydCc6IG5ldyBEYXRlKCkuZ2V0VGltZSgpLCBldmVudDogJ2d0bS5qcycgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgY29uc3QgZ3RtU2NyaXB0ID0gdGhpcy5kb2N1bWVudD8uY3JlYXRlRWxlbWVudCgnc2NyaXB0JykgLy9kb2MuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7XHJcbiAgICAgICAgICAgICAgICBpZihndG1TY3JpcHQpe1xyXG4gICAgICAgICAgICAgICAgICAgIGd0bVNjcmlwdC5pZCA9ICdHVE1zY3JpcHQnO1xyXG4gICAgICAgICAgICAgICAgICAgIGd0bVNjcmlwdC5hc3luYyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgZ3RtU2NyaXB0LnNyYyA9IHRoaXMuYXBwbHlHdG1RdWVyeVBhcmFtcyh0aGlzLmNvbmZpZ1tcImd0bV9yZXNvdXJjZV9wYXRoXCJdID8gdGhpcy5jb25maWdbXCJndG1fcmVzb3VyY2VfcGF0aFwiXSA6ICdodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndG0uanMnKTtcclxuICAgICAgICAgICAgICAgICAgICBndG1TY3JpcHQuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUodGhpcy5pc0xvYWRlZCA9IHRydWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIGd0bVNjcmlwdC5hZGRFdmVudExpc3RlbmVyKCdlcnJvcicsICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlamVjdChmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kb2N1bWVudD8uaGVhZC5pbnNlcnRCZWZvcmUoZ3RtU2NyaXB0LCB0aGlzLmRvY3VtZW50LmhlYWQuZmlyc3RDaGlsZCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgYXBwbHlHdG1RdWVyeVBhcmFtcyh1cmw6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAgICAgaWYgKHVybC5pbmRleE9mKCc/JykgPT09IC0xKSB7XHJcbiAgICAgICAgICAgIHVybCArPSAnPyc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiAodXJsICsgT2JqZWN0LmtleXModGhpcy5jb25maWcpLmZpbHRlcigoaykgPT4gdGhpcy5jb25maWdba10pLm1hcCgoaykgPT4gYCR7a309JHt0aGlzLmNvbmZpZ1trXVxyXG4gICAgICAgICAgICB9YCkuam9pbignJicpKTtcclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICogSW5pY2lhbGl6YSBlbCBTZXJ2aWNpbyBkZSBhbmFseXRpY3MgY29uIHN1cyBjb25maWd1cmFjaW9uZXMuXHJcbiAgICAgKiBAcGFyYW0gY29uZmlnIENvbmZpZ3VyYWNpb25lcyBkZSBHb29nbGUgVGFnIE1hbmFnZXJcclxuICAgICAqL1xyXG4gICAgcHVibGljIGluaXRpYWxpemUoY29uZmlnOiBHb29nbGVUYWdNYW5hZ2VyQ29uZmlnKSB7XHJcbiAgICAgICAgdGhpcy5jb25maWcgPSBjb25maWcgfHwgdGhpcy5jb25maWc7XHJcbiAgICAgICAgdGhpcy5hZGRHdG1Ub0RvbSgpLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnJvdXRlci5ldmVudHMuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChpdGVtIGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGd0bVRhZyA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQ6ICdwYWdlJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGFnZU5hbWU6IGl0ZW0udXJsXHJcbiAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnB1c2hUYWcoZ3RtVGFnKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSlcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgcHVzaFRhZyhpdGVtOiBvYmplY3QpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuaXNMb2FkZWQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWRkR3RtVG9Eb20oKS50aGVuKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnB1c2hPbkRhdGFMYXllcihpdGVtKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZSgpO1xyXG4gICAgICAgICAgICAgICAgfSkuY2F0Y2goKCkgPT4gcmVqZWN0KCkpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wdXNoT25EYXRhTGF5ZXIoaXRlbSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIEVqZWN1dGEgZWwgZXZlbnRvIHBhc2FkbyBwb3IgcGFyYW1ldHJvLiBcclxuICAgICAqIEBwYXJhbSBldmVudF9uYW1lIE5vbWJyZSBkZWwgZXZlbnRvLlxyXG4gICAgICogQHBhcmFtIGRhdGEgRGF0YSBleHRyYSBwYXJhIGFncmVnYXIgYWwgZXZlbnRvLlxyXG4gICAgICogQHJldHVybnMgXHJcbiAgICAgKi9cclxuICAgIGNhbGxFdmVudChldmVudF9uYW1lOiBBbmFseXRpY0V2ZW50S2V5LCBkYXRhID0ge30pIHtcclxuICAgICAgICBpZiAoIXRoaXMuaXNMb2FkZWQpIHJldHVybjtcclxuICAgICAgICBsZXQgZXZlbnQgPSB0aGlzLnRyYW5zbGF0ZUV2ZW50TmFtZShldmVudF9uYW1lKTtcclxuICAgICAgICBldmVudCAmJiB0aGlzLnB1c2hUYWcoeyBlY29tbWVyY2U6IG51bGwgfSlcclxuICAgICAgICBldmVudCAmJiB0aGlzLnB1c2hUYWcoeyAnZXZlbnQnOiB0aGlzLnRyYW5zbGF0ZUV2ZW50TmFtZShldmVudF9uYW1lKSwgZWNvbW1lcmNlOiB0aGlzLmV2YWxFdmVudChldmVudF9uYW1lLCBkYXRhKSB9KVxyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBUcmFkdWNlIGVsIGV2ZW50byByZWNpYmlkbyB5IGRldnVlbHZlIGVsIG5vbWJyZSBkZSBsYSBmdW5jacOzbiBxdWUgbG8gdmEgYSB0cmF0YXIuXHJcbiAgICAgKiBAcGFyYW0gZXZlbnRfbmFtZSBcclxuICAgICAqIEByZXR1cm5zIFxyXG4gICAgICovXHJcbiAgICB0cmFuc2xhdGVFdmVudE5hbWUoZXZlbnRfbmFtZTogQW5hbHl0aWNFdmVudEtleSkge1xyXG4gICAgICAgIHN3aXRjaCAoZXZlbnRfbmFtZSkge1xyXG4gICAgICAgICAgICBjYXNlICd2aWV3X2l0ZW0nOiByZXR1cm4gJ3ZpZXdfaXRlbSc7XHJcbiAgICAgICAgICAgIGNhc2UgJ3ZpZXdfaXRlbV9saXN0JzogcmV0dXJuICd2aWV3X2l0ZW1fbGlzdCc7XHJcbiAgICAgICAgICAgIGNhc2UgJ2NoZWNrb3V0X2luaXQnOiByZXR1cm4gJ2JlZ2luX2NoZWNrb3V0JztcclxuICAgICAgICAgICAgY2FzZSAnc2hpcHBpbmdfaW5mbyc6IHJldHVybiAnYWRkX3NoaXBwaW5nX2luZm8nO1xyXG4gICAgICAgICAgICBjYXNlICdhZGRfcGF5bWVudF9pbmZvJzogcmV0dXJuICdhZGRfcGF5bWVudF9pbmZvJztcclxuICAgICAgICAgICAgY2FzZSAncHVyY2hhc2UnOiByZXR1cm4gJ3B1cmNoYXNlJztcclxuICAgICAgICAgICAgY2FzZSAnYWRkX3RvX2NhcnQnOiByZXR1cm4gJ2FkZF90b19jYXJ0JztcclxuICAgICAgICAgICAgY2FzZSAncmVtb3ZlX2Zyb21fY2FydCc6IHJldHVybiAncmVtb3ZlX2Zyb21fY2FydCc7XHJcbiAgICAgICAgICAgIGNhc2UgJ3NpZ25fdXAnOiByZXR1cm4gJ3NpZ25fdXAnO1xyXG4gICAgICAgICAgICBjYXNlICdzZWxlY3RfcHJvbW90aW9uJzogcmV0dXJuICdzZWxlY3RfcHJvbW90aW9uJztcclxuICAgICAgICAgICAgY2FzZSAnc2VsZWN0X2l0ZW0nOiByZXR1cm4gJ3NlbGVjdF9pdGVtJztcclxuICAgICAgICAgICAgZGVmYXVsdDogcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBFdmFsdWEgZWwgZXZlbnRvIHkgZGV2dWVsdmUgbG9zIGRhdG9zIGRlIGxhcyBmdW5jaW9uZXMgcmVsYWNpb25hZGFzLlxyXG4gICAgICogQHBhcmFtIGV2ZW50X25hbWUgTm9tYnJlIGRlbCBldmVudG9cclxuICAgICAqIEBwYXJhbSBkYXRhIERhdGEgZXh0cmEgcGFyYSBhZ3JlZ2FyIGFsIGV2ZW50b1xyXG4gICAgICogQHJldHVybnMgXHJcbiAgICAgKi9cclxuICAgIGV2YWxFdmVudChldmVudF9uYW1lOiBBbmFseXRpY0V2ZW50S2V5LCBkYXRhOiBhbnkpIHtcclxuICAgICAgICBzd2l0Y2ggKGV2ZW50X25hbWUpIHtcclxuICAgICAgICAgICAgY2FzZSAndmlld19pdGVtJzogcmV0dXJuIHRoaXMudG9WaWV3SXRlbShkYXRhKTtcclxuICAgICAgICAgICAgY2FzZSAndmlld19pdGVtX2xpc3QnOiByZXR1cm4gdGhpcy50b1ZpZXdJdGVtTGlzdChkYXRhKTtcclxuICAgICAgICAgICAgY2FzZSAnY2hlY2tvdXRfaW5pdCc6IHJldHVybiB0aGlzLnRvQ2hlY2tvdXRJbml0KGRhdGEpO1xyXG4gICAgICAgICAgICBjYXNlICdzaGlwcGluZ19pbmZvJzogcmV0dXJuIHRoaXMudG9TaGlwcGluZ0luZm8oZGF0YSk7XHJcbiAgICAgICAgICAgIGNhc2UgJ2FkZF9wYXltZW50X2luZm8nOiByZXR1cm4gdGhpcy50b1BheW1lbnRJbmZvKGRhdGEpO1xyXG4gICAgICAgICAgICBjYXNlICdwdXJjaGFzZSc6IHJldHVybiB0aGlzLnRvUHVyY2hhc2UoZGF0YSk7XHJcbiAgICAgICAgICAgIGNhc2UgJ2FkZF90b19jYXJ0JzogcmV0dXJuIHRoaXMudG9BZGRUb0NhcnQoZGF0YSk7XHJcbiAgICAgICAgICAgIGNhc2UgJ3JlbW92ZV9mcm9tX2NhcnQnOiByZXR1cm4gdGhpcy50b1JlbW92ZVRvQ2FydChkYXRhKTtcclxuICAgICAgICAgICAgY2FzZSAnc2lnbl91cCc6IHJldHVybiB0aGlzLnRvU2lnblVwKGRhdGEpO1xyXG4gICAgICAgICAgICBjYXNlICdzZWxlY3RfcHJvbW90aW9uJzogcmV0dXJuIHRoaXMudG9TZWxlY3RQcm9tb3Rpb24oZGF0YSk7XHJcbiAgICAgICAgICAgIGNhc2UgJ3NlbGVjdF9pdGVtJzogcmV0dXJuIHRoaXMudG9TZWxlY3RJdGVtKGRhdGEpO1xyXG4gICAgICAgICAgICBkZWZhdWx0OiByZXR1cm4gZGF0YTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIEV2ZW50byBxdWUgc2UgZGlzcGFyYSBjdWFuZG8gc2UgcXVpZXJlIGNvbXByYXIgdW4gcHJvZHVjdG8uXHJcbiAgICAgKiBAcGFyYW0gZGF0YSBcclxuICAgICAqIEByZXR1cm5zIFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHRvUHVyY2hhc2UoZGF0YTogYW55KSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgY291cG9uOiB0aGlzLnRvQ2FydERpc2NvdW50KGRhdGEpLFxyXG4gICAgICAgICAgICBjdXJyZW5jeTogZGF0YS5jdXJyZW5jeSxcclxuICAgICAgICAgICAgc2hpcHBpbmc6IGRhdGEudG90YWxzLnNoaXBwaW5nLFxyXG4gICAgICAgICAgICB0YXg6IGRhdGEudG90YWxzLnRheGVzLFxyXG4gICAgICAgICAgICB2YWx1ZTogZGF0YS50b3RhbHMudG90YWwsXHJcbiAgICAgICAgICAgIHRyYW5zYWN0aW9uX2lkOiBkYXRhLm51bWJlcixcclxuICAgICAgICAgICAgY291bnRJdGVtczogZGF0YS5pdGVtcz8ubGVuZ3RoIHx8IDAsXHJcbiAgICAgICAgICAgIGl0ZW1zOiBkYXRhLml0ZW1zLm1hcCgoaXRlbTogYW55KSA9PiAoe1xyXG4gICAgICAgICAgICAgICAgaXRlbV9pZDogaXRlbS5wcm9kdWN0LmlkLFxyXG4gICAgICAgICAgICAgICAgaXRlbV9uYW1lOiBpdGVtLnByb2R1Y3QubmFtZSxcclxuICAgICAgICAgICAgICAgIC8vY291cG9uOicnLFxyXG4gICAgICAgICAgICAgICAgZGlzY291bnQ6IGl0ZW0ucHJvZHVjdC5kaXNjb3VudCB8fCAwLFxyXG4gICAgICAgICAgICAgICAgLy9pbmRleDonJyxcclxuICAgICAgICAgICAgICAgIGl0ZW1fYnJhbmQ6IGl0ZW0ucHJvZHVjdC5hdHRyaWJ1dGVzPy5sZW5ndGggPyBpdGVtLnByb2R1Y3QuYXR0cmlidXRlc1swXS5uYW1lIDogJycsXHJcbiAgICAgICAgICAgICAgICBpdGVtX2NhdGVnb3J5OiBpdGVtLnByb2R1Y3QuY2F0ZWdvcnksXHJcbiAgICAgICAgICAgICAgICBpdGVtX3ZhcmlhbnQ6IGl0ZW0ucHJvZHVjdC52YXJpYW50c1swXT8uY29kZSB8fCAnJyxcclxuICAgICAgICAgICAgICAgIC8vbG9jYXRpb25faWQ6ICcnLFxyXG4gICAgICAgICAgICAgICAgcHJpY2U6IGl0ZW0ucHJvZHVjdC52YXJpYW50c1swXT8uc2FsZXByaWNlIHx8IGl0ZW0ucHJvZHVjdC52YXJpYW50c1swXT8ucHJpY2UsXHJcbiAgICAgICAgICAgICAgICBxdWFudGl0eTogaXRlbS5xdWFudGl0eSB8fCAxLFxyXG4gICAgICAgICAgICB9KSlcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIEV2ZW50byBxdWUgc2UgZGlzcGFyYSBjdWFuZG8gc2UgaW5pY2lhbGl6YSBlbiBjaGVja291dC5cclxuICAgICAqIEBwYXJhbSBkYXRhIFxyXG4gICAgICogQHJldHVybnMgXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgdG9DaGVja291dEluaXQoZGF0YTogYW55KSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgY291cG9uOiB0aGlzLnRvQ2FydERpc2NvdW50KGRhdGEpLFxyXG4gICAgICAgICAgICBjdXJyZW5jeTogZGF0YS5jdXJyZW5jeSB8fCBcIlVTRFwiLFxyXG4gICAgICAgICAgICBpdGVtczogZGF0YS5pdGVtcy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcclxuICAgICAgICAgICAgICAgIGl0ZW1faWQ6IGl0ZW0ucHJvZHVjdC5pZCxcclxuICAgICAgICAgICAgICAgIGl0ZW1fbmFtZTogaXRlbS5wcm9kdWN0Lm5hbWUsXHJcbiAgICAgICAgICAgICAgICAvL2NvdXBvbjonJyxcclxuICAgICAgICAgICAgICAgIGRpc2NvdW50OiBpdGVtLnByb2R1Y3QuZGlzY291bnQgfHwgMCxcclxuICAgICAgICAgICAgICAgIC8vaW5kZXg6JycsXHJcbiAgICAgICAgICAgICAgICBpdGVtX2JyYW5kOiBpdGVtLnByb2R1Y3QuYXR0cmlidXRlcz8ubGVuZ3RoID8gaXRlbS5wcm9kdWN0LmF0dHJpYnV0ZXNbMF0ubmFtZSA6ICcnLFxyXG4gICAgICAgICAgICAgICAgaXRlbV9jYXRlZ29yeTogaXRlbS5wcm9kdWN0LmNhdGVnb3J5LFxyXG4gICAgICAgICAgICAgICAgLy9pdGVtX2xpc3RfaWQ6ICcnLFxyXG4gICAgICAgICAgICAgICAgLy9pdGVtX2xpc3RfbmFtZTogJycsXHJcbiAgICAgICAgICAgICAgICBpdGVtX3ZhcmlhbnQ6IGl0ZW0ucHJvZHVjdC52YXJpYW50c1swXT8uY29kZSB8fCAnJyxcclxuICAgICAgICAgICAgICAgIC8vbG9jYXRpb25faWQ6ICcnLFxyXG4gICAgICAgICAgICAgICAgcHJpY2U6IGl0ZW0ucHJvZHVjdC52YXJpYW50c1swXT8uc2FsZXByaWNlIHx8IGl0ZW0ucHJvZHVjdC52YXJpYW50c1swXT8ucHJpY2UsXHJcbiAgICAgICAgICAgICAgICBxdWFudGl0eTogaXRlbS5xdWFudGl0eSB8fCAxLFxyXG4gICAgICAgICAgICB9KSksXHJcbiAgICAgICAgICAgIHZhbHVlOiBkYXRhLnRvdGFscz8udG90YWwgfHwgMCxcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIEV2ZW50byBxdWUgc2UgZGlzcGFyYSBjb24gbG9zIGRlc2N1ZW50b3MgZW4gZWwgY2Fycml0by5cclxuICAgICAqIEBwYXJhbSBkYXRhIFxyXG4gICAgICogQHJldHVybnMgXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgdG9DYXJ0RGlzY291bnQoZGF0YTogYW55KSB7XHJcbiAgICAgICAgbGV0IHN0ckRpc2NvdW50ID0gJydcclxuICAgICAgICBzdHJEaXNjb3VudCA9IGRhdGEuY2FydERpc2NvdW50cy5tYXAoKGl0ZW1EaXNjb3VudDogYW55KSA9PiBpdGVtRGlzY291bnQ/LnR5cGUpLmpvaW4oKVxyXG4gICAgICAgIHJldHVybiBzdHJEaXNjb3VudCA9PSAnJyA/ICdub3QtZGlzY291bnQnIDogc3RyRGlzY291bnRcclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICogRXZlbnRvIHF1ZSBzZSBkaXNwYXJhIGN1YW5kbyBzZSBhZ3JlZ2EgdW4gcHJvZHVjdG8gYWwgY2Fycml0by4gXHJcbiAgICAgKiBAcGFyYW0gZGF0YSBcclxuICAgICAqIEByZXR1cm5zIFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHRvQWRkVG9DYXJ0KGRhdGE6IGFueSkge1xyXG4gICAgICAgIGxldCBsYXN0UHJvZHVjdCA9IGRhdGEuaXRlbXM/Lmxlbmd0aCAmJiBkYXRhLml0ZW1zW2RhdGEuaXRlbXMubGVuZ3RoIC0gMV1cclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBjdXJyZW5jeTogZGF0YS5jdXJyZW5jeSB8fCBcIlVTRFwiLFxyXG4gICAgICAgICAgICBpdGVtczogW3RoaXMudG9JdGVtKHsgcXVhbnRpdHk6IGxhc3RQcm9kdWN0LnF1YW50aXR5LCAuLi5sYXN0UHJvZHVjdC5wcm9kdWN0IH0pXSxcclxuICAgICAgICAgICAgdmFsdWU6IGxhc3RQcm9kdWN0LnRvdGFsIHx8IDAsXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBDYW1iaWEgbGEgdmFyaWFibGUgKiplbmFibGVkKiogYSBgZmFsc2VgXHJcbiAgICAgKiBAcmV0dXJucyBcclxuICAgICAqL1xyXG4gICAgZGlzYWJsZSgpIHsgdGhpcy5lbmFibGVkID0gZmFsc2UgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBFdmVudG8gcXVlIHNlIGRpc3BhcmEgY3VhbmRvIHNlIGludGVyYWN0dWEgYSBsYXMgdmlzdGEgZGVsIHByb2R1Y3RvLlxyXG4gICAgICogQHBhcmFtIHByb2R1Y3QgXHJcbiAgICAgKiBAcmV0dXJucyBcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSB0b1ZpZXdJdGVtKHByb2R1Y3Q6IGFueSkge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGN1cnJlbmN5OiBwcm9kdWN0LmN1cnJlbmN5LFxyXG4gICAgICAgICAgICB2YWx1ZTogcHJvZHVjdC5wcmljZSxcclxuICAgICAgICAgICAgaXRlbXM6IFt0aGlzLnRvSXRlbShwcm9kdWN0KV1cclxuXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBFdmVudG8gcXVlIHNlIGRpc3BhcmEgY3VhbmRvIHNlIGludGVyYWN0dWEgY29uIGVsIGxpc3RhZG8gZGUgcHJvZHVjdG9zLlxyXG4gICAgICogQHBhcmFtIGRhdGEgXHJcbiAgICAgKiBAcmV0dXJucyBcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSB0b1ZpZXdJdGVtTGlzdChkYXRhOiBhbnkpIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBpdGVtczogZGF0YS5wcm9kdWN0cy5tYXAoKHByb2R1Y3Q6IGFueSkgPT4gdGhpcy50b0l0ZW0ocHJvZHVjdCkpLFxyXG4gICAgICAgICAgICBpdGVtX2xpc3RfbmFtZTogZGF0YS5pdGVtX2xpc3RfbmFtZSB8fCAnQ29sbGVjdGlvbicsXHJcbiAgICAgICAgICAgIGl0ZW1fbGlzdF9pZDogZGF0YS5pdGVtX2xpc3RfaWQgfHwgMFxyXG4gICAgICAgIH1cclxuXHJcblxyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBFdmVudG8gcXVlIHNlIGRpc3BhcmEgY3VhbmRvIHNlIHF1aXRhIHVuIGl0ZW0gZGVsIGNhcnJpdG8uXHJcbiAgICAgKiBAcGFyYW0gcHJvZHVjdCBcclxuICAgICAqIEByZXR1cm5zIFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHRvUmVtb3ZlVG9DYXJ0KHByb2R1Y3Q6IGFueSkge1xyXG4gICAgICAgIGxldCBwcm9kdWN0UGFyYW0gPSBwcm9kdWN0LnByb2R1Y3RcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBjdXJyZW5jeTogcHJvZHVjdC5jdXJyZW5jeSB8fCBcIlVTRFwiLFxyXG4gICAgICAgICAgICBpdGVtczogW3RoaXMudG9JdGVtKHsgcXVhbnRpdHk6IHByb2R1Y3QucXVhbnRpdHksIC4uLnByb2R1Y3RQYXJhbSB9KV0sXHJcbiAgICAgICAgICAgIHZhbHVlOiAocHJvZHVjdFBhcmFtLnZhcmlhbnRzWzBdPy5zYWxlcHJpY2UgfHwgcHJvZHVjdFBhcmFtLnZhcmlhbnRzWzBdPy5wcmljZSkgKiBwcm9kdWN0LnF1YW50aXR5IHx8IDEsXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgdG9JdGVtID0gKHByb2R1Y3Q6IGFueSkgPT4gKHtcclxuICAgICAgICBpdGVtX2lkOiBwcm9kdWN0LmlkLFxyXG4gICAgICAgIGl0ZW1fbmFtZTogcHJvZHVjdC5uYW1lLFxyXG4gICAgICAgIC8vY291cG9uOicnLFxyXG4gICAgICAgIGRpc2NvdW50OiBwcm9kdWN0LmRpc2NvdW50IHx8IDAsXHJcbiAgICAgICAgLy9pbmRleDonJyxcclxuICAgICAgICBpdGVtX2JyYW5kOiBwcm9kdWN0LmF0dHJpYnV0ZXM/Lmxlbmd0aCA/IHByb2R1Y3QuYXR0cmlidXRlc1swXS5uYW1lIDogJycsXHJcbiAgICAgICAgaXRlbV9jYXRlZ29yeTogcHJvZHVjdC5jYXRlZ29yeSxcclxuICAgICAgICAvL2l0ZW1fbGlzdF9pZDogJycsXHJcbiAgICAgICAgLy9pdGVtX2xpc3RfbmFtZTogJycsXHJcbiAgICAgICAgaXRlbV92YXJpYW50OiBwcm9kdWN0LnZhcmlhbnRzWzBdPy5jb2RlIHx8ICcnLFxyXG4gICAgICAgIC8vbG9jYXRpb25faWQ6ICcnLFxyXG4gICAgICAgIHByaWNlOiBwcm9kdWN0LnZhcmlhbnRzWzBdPy5zYWxlcHJpY2UgfHwgcHJvZHVjdC52YXJpYW50c1swXT8ucHJpY2UsXHJcbiAgICAgICAgcXVhbnRpdHk6IHByb2R1Y3QucXVhbnRpdHkgfHwgMSxcclxuICAgIH0pXHJcbiAgICAvKipcclxuICAgICAqIEV2ZW50byBxdWUgc2UgZGlzcGFyYSBjdWFuZG8gc2UgY29uc3VsdGEgbGEgaW5mb3JtYWNpw7NuIGRlIHBhZ28uXHJcbiAgICAgKiBAcGFyYW0gZGF0YSBcclxuICAgICAqIEByZXR1cm5zIFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHRvUGF5bWVudEluZm8oZGF0YTogYW55KSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgY291cG9uOiB0aGlzLnRvQ2FydERpc2NvdW50KGRhdGEpLFxyXG4gICAgICAgICAgICBjdXJyZW5jeTogZGF0YS5jdXJyZW5jeSB8fCBcIlVTRFwiLFxyXG4gICAgICAgICAgICBwYXltZW50X3R5cGU6IGRhdGEucGF5bWVudHNbMF0/Lm1ldGhvZD8uY29kZSB8fCAnbm90LXBheW1lbnRzJyxcclxuICAgICAgICAgICAgdmFsdWU6IGRhdGEudG90YWxzPy50b3RhbCB8fCAwLFxyXG4gICAgICAgICAgICBpdGVtczogZGF0YS5pdGVtcy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcclxuICAgICAgICAgICAgICAgIGl0ZW1faWQ6IGl0ZW0ucHJvZHVjdC5pZCxcclxuICAgICAgICAgICAgICAgIGl0ZW1fbmFtZTogaXRlbS5wcm9kdWN0Lm5hbWUsXHJcbiAgICAgICAgICAgICAgICAvL2NvdXBvbjonJyxcclxuICAgICAgICAgICAgICAgIGRpc2NvdW50OiBpdGVtLnByb2R1Y3QuZGlzY291bnQgfHwgMCxcclxuICAgICAgICAgICAgICAgIC8vaW5kZXg6JycsXHJcbiAgICAgICAgICAgICAgICBpdGVtX2JyYW5kOiBpdGVtLnByb2R1Y3QuYXR0cmlidXRlcz8ubGVuZ3RoID8gaXRlbS5wcm9kdWN0LmF0dHJpYnV0ZXNbMF0ubmFtZSA6ICcnLFxyXG4gICAgICAgICAgICAgICAgaXRlbV9jYXRlZ29yeTogaXRlbS5wcm9kdWN0LmNhdGVnb3J5LFxyXG4gICAgICAgICAgICAgICAgLy9pdGVtX2xpc3RfaWQ6ICcnLFxyXG4gICAgICAgICAgICAgICAgLy9pdGVtX2xpc3RfbmFtZTogJycsXHJcbiAgICAgICAgICAgICAgICBpdGVtX3ZhcmlhbnQ6IGl0ZW0ucHJvZHVjdC52YXJpYW50c1swXT8uY29kZSB8fCAnJyxcclxuICAgICAgICAgICAgICAgIC8vbG9jYXRpb25faWQ6ICcnLFxyXG4gICAgICAgICAgICAgICAgcHJpY2U6IGl0ZW0ucHJvZHVjdC52YXJpYW50c1swXT8uc2FsZXByaWNlIHx8IGl0ZW0ucHJvZHVjdC52YXJpYW50c1swXT8ucHJpY2UsXHJcbiAgICAgICAgICAgICAgICBxdWFudGl0eTogaXRlbS5xdWFudGl0eSB8fCAxLFxyXG4gICAgICAgICAgICB9KSksXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBFdmVudG8gcXVlIHNlIGRpc3BhcmEgY3VhbmRvIHNlIGludGVyYWN0dWEgY29uIGxvcyBtw6l0b2RvcyBkZSBlbnbDrW8uXHJcbiAgICAgKiBAcGFyYW0gZGF0YSBcclxuICAgICAqIEByZXR1cm5zIFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHRvU2hpcHBpbmdJbmZvKGRhdGE6IGFueSkge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGNvdXBvbjogdGhpcy50b0NhcnREaXNjb3VudChkYXRhKSxcclxuICAgICAgICAgICAgY3VycmVuY3k6IGRhdGEuY3VycmVuY3kgfHwgXCJVU0RcIixcclxuICAgICAgICAgICAgc2hpcHBpbmdfdGllcjogZGF0YS5zaGlwbWVudHNbMF0/Lm1ldGhvZD8uY29kZSB8fCAnbm90LXNoaXBwaW5nJyxcclxuICAgICAgICAgICAgdmFsdWU6IGRhdGEudG90YWxzPy50b3RhbCB8fCAwLFxyXG4gICAgICAgICAgICBpdGVtczogZGF0YS5pdGVtcy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcclxuICAgICAgICAgICAgICAgIGl0ZW1faWQ6IGl0ZW0ucHJvZHVjdC5pZCxcclxuICAgICAgICAgICAgICAgIGl0ZW1fbmFtZTogaXRlbS5wcm9kdWN0Lm5hbWUsXHJcbiAgICAgICAgICAgICAgICAvL2NvdXBvbjonJyxcclxuICAgICAgICAgICAgICAgIGRpc2NvdW50OiBpdGVtLnByb2R1Y3QuZGlzY291bnQgfHwgMCxcclxuICAgICAgICAgICAgICAgIC8vaW5kZXg6JycsXHJcbiAgICAgICAgICAgICAgICBpdGVtX2JyYW5kOiBpdGVtLnByb2R1Y3QuYXR0cmlidXRlcz8ubGVuZ3RoID8gaXRlbS5wcm9kdWN0LmF0dHJpYnV0ZXNbMF0ubmFtZSA6ICcnLFxyXG4gICAgICAgICAgICAgICAgaXRlbV9jYXRlZ29yeTogaXRlbS5wcm9kdWN0LmNhdGVnb3J5LFxyXG4gICAgICAgICAgICAgICAgLy9pdGVtX2xpc3RfaWQ6ICcnLFxyXG4gICAgICAgICAgICAgICAgLy9pdGVtX2xpc3RfbmFtZTogJycsXHJcbiAgICAgICAgICAgICAgICBpdGVtX3ZhcmlhbnQ6IGl0ZW0ucHJvZHVjdC52YXJpYW50c1swXT8uY29kZSB8fCAnJyxcclxuICAgICAgICAgICAgICAgIC8vbG9jYXRpb25faWQ6ICcnLFxyXG4gICAgICAgICAgICAgICAgcHJpY2U6IGl0ZW0ucHJvZHVjdC52YXJpYW50c1swXT8uc2FsZXByaWNlIHx8IGl0ZW0ucHJvZHVjdC52YXJpYW50c1swXT8ucHJpY2UsXHJcbiAgICAgICAgICAgICAgICBxdWFudGl0eTogaXRlbS5xdWFudGl0eSB8fCAxLFxyXG4gICAgICAgICAgICB9KSksXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgdG9TaWduVXAoZGF0YTogYW55KSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgLi4uZGF0YVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICogRXZlbnRvIHF1ZSBzZSBkaXNwYXJhIGN1YW5kbyBzZSBpbnRlcmFjdHVhIGNvbiB1bmEgcHJvbW9jacOzbi5cclxuICAgICAqIEBwYXJhbSBkYXRhIFxyXG4gICAgICogQHJldHVybnMgXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgdG9TZWxlY3RQcm9tb3Rpb24oZGF0YTogYW55KSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coZGF0YSk7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgcHJvbW90aW9uX2lkOiBkYXRhLmlkIHx8ICcnLFxyXG4gICAgICAgICAgICBwcm9tb3Rpb25fbmFtZTogZGF0YS5jb2RlIHx8IGRhdGEubmFtZSxcclxuICAgICAgICAgICAgcHJvbW90aW9uX3RpdGxlOiBkYXRhLnN1YnRpdGxlLFxyXG4gICAgICAgICAgICBsb2NhdGlvbl9pZDogZGF0YS5wcmlvcml0eSB8fCAwXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBFdmVudG8gcXVlIHNlIGRpc2FwcmEgY3VhbmRvIHNlIGludGVyYWN0dWEgYWwgc2VsZWNjaW9uYXIgdW4gaXRlbS5cclxuICAgICAqIEBwYXJhbSBkYXRhIFxyXG4gICAgICogQHJldHVybnMgXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgdG9TZWxlY3RJdGVtKGRhdGE6IGFueSkge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGRhdGEpO1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGl0ZW1zOiB0aGlzLnRvSXRlbShkYXRhKVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iXX0=
|
|
417
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3RtLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lYXN5Y29tbWVyY2UtdjE4L3NyYy9saWIvZWMtc2VydmljZXMvYW5hbHl0aWNzL2d0bS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZSxNQUFNLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBYSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUxRyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFDOUQ7O0dBRUc7QUFJSCxNQUFNLE9BQU8sVUFBVTtJQUNuQjs7T0FFRztJQUNLLFFBQVEsR0FBWSxLQUFLLENBQUM7SUFDbEM7O09BRUc7SUFDSyxPQUFPLEdBQVksS0FBSyxDQUFDO0lBQ2pDOzs7T0FHRztJQUNLLFFBQVEsQ0FBWTtJQUM1Qjs7T0FFRztJQUNLLE1BQU0sQ0FBVTtJQUVoQixlQUFlLEdBQXFCLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzdELFFBQVEsR0FBb0IsSUFBSSxDQUFDO0lBQ3pDOztPQUVHO0lBQ0ssTUFBTSxHQUFXLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN4Qzs7T0FFRztJQUNLLE1BQU0sR0FBMkIsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUE7SUFDN0MsVUFBVSxHQUFRLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQTtJQUM3QztRQUNJLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2hFLElBQUksaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDckMsSUFBSSxDQUFD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QUUsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSTtZQUN0QyxlQUFlLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDOUIsV0FBVyxFQUFFLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQztTQUNsQyxDQUFBO0lBQ0wsQ0FBQztJQUNEOzs7O09BSUc7SUFDSyxZQUFZLENBQUMsSUFBUztRQUMxQixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xCLE9BQU87WUFDSCxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7U0FDM0IsQ0FBQTtJQUNMLENBQUM7d0dBelpRLFVBQVU7NEdBQVYsVUFBVSxjQUZQLE1BQU07OzRGQUVULFVBQVU7a0JBSHRCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYWZ0ZXJSZW5kZXIsIGluamVjdCwgSW5qZWN0YWJsZSwgUExBVEZPUk1fSUQsIFJlbmRlcmVyMiwgUmVuZGVyZXJGYWN0b3J5MiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBbmFseXRpY0V2ZW50S2V5LCBHb29nbGVUYWdNYW5hZ2VyQ29uZmlnIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IE5hdmlnYXRpb25FbmQsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IERPQ1VNRU5ULCBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbi8qKlxyXG4gKiBTZXJ2aWNpbyBxdWUgc2UgZW5jYXJnYSBkZSBtYW5lamFyIGVsIGFuYWx5dGljcyBkZSBHVE0uXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEdUTVNlcnZpY2Uge1xyXG4gICAgLyoqXHJcbiAgICAgKiBJbmRpY2Egc2kgc2UgZXN0YSBjYXJnYW5kbyBlbCBzZXJ2aWNpby5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBpc0xvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgLyoqXHJcbiAgICAgKiBJbmRpY2EgY3VhbmRvIGVsIHNlcnZpY2lvIGVzdGEgaGFiaWxpdGFkby5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBlbmFibGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICAvKipcclxuICAgICAqIFNlIGVuY2FyZ2EgZGUgY3JlYXIgZWwgZWxlbWVudG8gSFRNTCBjb24gbGFzIGNvbmZpZ3VyYWNpb25lcyBwYXJhIFxyXG4gICAgICogcXVlIHNlIHB1ZWRhIGVqZWN1dGFyIGVsIHNlcnZpY2lvLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjI7XHJcbiAgICAvKipcclxuICAgICAqIEFsbWFjZW5hIGVsIG9iamVjdG8gd2luZG93IGRlbCBuYXZlZ2Fkb3IuXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgd2luZG93PzogV2luZG93O1xyXG5cclxuICAgIHByaXZhdGUgcmVuZGVyZXJGYWN0b3J5OiBSZW5kZXJlckZhY3RvcnkyID0gaW5qZWN0KFJlbmRlcmVyRmFjdG9yeTIpO1xyXG4gICAgcHJpdmF0ZSBkb2N1bWVudDogRG9jdW1lbnQgfCBudWxsID0gbnVsbDtcclxuICAgIC8qKlxyXG4gICAgICogU2VydmljaW8gZGUgcnV0ZW8gZGUgYW5ndWxhci5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xyXG4gICAgLyoqXHJcbiAgICAgKiBDb25maWd1cmFjacOzbiBkZSBHb29nbGUgVGFnIE1hbmFnZXIuXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgY29uZmlnOiBHb29nbGVUYWdNYW5hZ2VyQ29uZmlnID0geyBpZDogbnVsbCB9XHJcbiAgICBwcml2YXRlIHBsYXRmb3JtSWQ6IGFueSA9IGluamVjdChQTEFURk9STV9JRClcclxuICAgIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgICAgIHRoaXMucmVuZGVyZXIgPSB0aGlzLnJlbmRlcmVyRmFjdG9yeS5jcmVhdGVSZW5kZXJlcihudWxsLCBudWxsKTtcclxuICAgICAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xyXG4gICAgICAgICAgICB0aGlzLndpbmRvdyA9IHdpbmRvd1xyXG4gICAgICAgICAgICB0aGlzLmRvY3VtZW50ID0gaW5qZWN0KERPQ1VNRU5UKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIE9idGllbmUgZWwgZGF0YUxheWVyIGRlbCBvYmplY3RvIHdpbmRvd1xyXG4gICAgICogQHJldHVybnMgXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXREYXRhTGF5ZXIoKTogYW55W10ge1xyXG4gICAgICAgIGNvbnN0IHdpbmRvdyA9IHRoaXMud2luZG93O1xyXG4gICAgICAgIC8qIGlmKHdpbmRvdylcclxuICAgICAgICB3aW5kb3cuZGF0YUxheWVyID0gd2luZG93LmRhdGFMYXllciB8fCBbXTtcclxuICAgICAgICByZXR1cm4gd2luZG93LmRhdGFMYXllcjsgKi9cclxuICAgICAgICByZXR1cm4gW11cclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICogQWdyZWdhIGRhdG9zIGFsIGRhdGFMYXllci5cclxuICAgICAqIEBwYXJhbSBvYmogXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgcHVzaE9uRGF0YUxheWVyKG9iajogb2JqZWN0KTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgZGF0YUxheWVyID0gdGhpcy5nZXREYXRhTGF5ZXIoKTtcclxuICAgICAgICBkYXRhTGF5ZXIucHVzaChvYmopO1xyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBBZ3JlZ2EgZWwgc2NyaXB0IGRlIEdUTSBwYXJhIHF1ZSBlbXBpZWNlIGEgY2FwdHVyYXIgZXZlbnRvcy5cclxuICAgICAqIEByZXR1cm5zIFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYWRkR3RtVG9Eb20oKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKFxyXG4gICAgICAgICAgICAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc0xvYWRlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXNvbHZlKHRoaXMuaXNMb2FkZWQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpIHx8ICF0aGlzLmRvY3VtZW50KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlamVjdChmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvL2NvbnN0IGRvYyA9IHRoaXMuYnJvd3Nlckdsb2JhbHMuZG9jdW1lbnRSZWYoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMucHVzaE9uRGF0YUxheWVyKHsgJ2d0bS5zdGFydCc6IG5ldyBEYXRlKCkuZ2V0VGltZSgpLCBldmVudDogJ2d0bS5qcycgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgY29uc3QgZ3RtU2NyaXB0ID0gdGhpcy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKSAvL2RvYy5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcclxuICAgICAgICAgICAgICAgIGlmKGd0bVNjcmlwdCl7XHJcbiAgICAgICAgICAgICAgICAgICAgZ3RtU2NyaXB0LmlkID0gJ0dUTXNjcmlwdCc7XHJcbiAgICAgICAgICAgICAgICAgICAgZ3RtU2NyaXB0LmFzeW5jID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICBndG1TY3JpcHQuc3JjID0gdGhpcy5hcHBseUd0bVF1ZXJ5UGFyYW1zKHRoaXMuY29uZmlnW1wiZ3RtX3Jlc291cmNlX3BhdGhcIl0gPyB0aGlzLmNvbmZpZ1tcImd0bV9yZXNvdXJjZV9wYXRoXCJdIDogJ2h0dHBzOi8vd3d3Lmdvb2dsZXRhZ21hbmFnZXIuY29tL2d0bS5qcycpO1xyXG4gICAgICAgICAgICAgICAgICAgIGd0bVNjcmlwdC5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZSh0aGlzLmlzTG9hZGVkID0gdHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgZ3RtU2NyaXB0LmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVqZWN0KGZhbHNlKTtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRvY3VtZW50LmhlYWQuaW5zZXJ0QmVmb3JlKGd0bVNjcmlwdCwgdGhpcy5kb2N1bWVudC5oZWFkLmZpcnN0Q2hpbGQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGFwcGx5R3RtUXVlcnlQYXJhbXModXJsOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIGlmICh1cmwuaW5kZXhPZignPycpID09PSAtMSkge1xyXG4gICAgICAgICAgICB1cmwgKz0gJz8nO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gKHVybCArIE9iamVjdC5rZXlzKHRoaXMuY29uZmlnKS5maWx0ZXIoKGspID0+IHRoaXMuY29uZmlnW2tdKS5tYXAoKGspID0+IGAke2t9PSR7dGhpcy5jb25maWdba11cclxuICAgICAgICAgICAgfWApLmpvaW4oJyYnKSk7XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIEluaWNpYWxpemEgZWwgU2VydmljaW8gZGUgYW5hbHl0aWNzIGNvbiBzdXMgY29uZmlndXJhY2lvbmVzLlxyXG4gICAgICogQHBhcmFtIGNvbmZpZyBDb25maWd1cmFjaW9uZXMgZGUgR29vZ2xlIFRhZyBNYW5hZ2VyXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBpbml0aWFsaXplKGNvbmZpZzogR29vZ2xlVGFnTWFuYWdlckNvbmZpZykge1xyXG4gICAgICAgIHRoaXMuY29uZmlnID0gY29uZmlnIHx8IHRoaXMuY29uZmlnO1xyXG4gICAgICAgIHRoaXMuYWRkR3RtVG9Eb20oKS50aGVuKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5yb3V0ZXIuZXZlbnRzLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoaXRlbSBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBndG1UYWcgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50OiAncGFnZScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VOYW1lOiBpdGVtLnVybFxyXG4gICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wdXNoVGFnKGd0bVRhZyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHB1c2hUYWcoaXRlbTogb2JqZWN0KTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLmlzTG9hZGVkKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFkZEd0bVRvRG9tKCkudGhlbigoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wdXNoT25EYXRhTGF5ZXIoaXRlbSk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUoKTtcclxuICAgICAgICAgICAgICAgIH0pLmNhdGNoKCgpID0+IHJlamVjdCgpKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucHVzaE9uRGF0YUxheWVyKGl0ZW0pO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBFamVjdXRhIGVsIGV2ZW50byBwYXNhZG8gcG9yIHBhcmFtZXRyby4gXHJcbiAgICAgKiBAcGFyYW0gZXZlbnRfbmFtZSBOb21icmUgZGVsIGV2ZW50by5cclxuICAgICAqIEBwYXJhbSBkYXRhIERhdGEgZXh0cmEgcGFyYSBhZ3JlZ2FyIGFsIGV2ZW50by5cclxuICAgICAqIEByZXR1cm5zIFxyXG4gICAgICovXHJcbiAgICBjYWxsRXZlbnQoZXZlbnRfbmFtZTogQW5hbHl0aWNFdmVudEtleSwgZGF0YSA9IHt9KSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmlzTG9hZGVkKSByZXR1cm47XHJcbiAgICAgICAgbGV0IGV2ZW50ID0gdGhpcy50cmFuc2xhdGVFdmVudE5hbWUoZXZlbnRfbmFtZSk7XHJcbiAgICAgICAgZXZlbnQgJiYgdGhpcy5wdXNoVGFnKHsgZWNvbW1lcmNlOiBudWxsIH0pXHJcbiAgICAgICAgZXZlbnQgJiYgdGhpcy5wdXNoVGFnKHsgJ2V2ZW50JzogdGhpcy50cmFuc2xhdGVFdmVudE5hbWUoZXZlbnRfbmFtZSksIGVjb21tZXJjZTogdGhpcy5ldmFsRXZlbnQoZXZlbnRfbmFtZSwgZGF0YSkgfSlcclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICogVHJhZHVjZSBlbCBldmVudG8gcmVjaWJpZG8geSBkZXZ1ZWx2ZSBlbCBub21icmUgZGUgbGEgZnVuY2nDs24gcXVlIGxvIHZhIGEgdHJhdGFyLlxyXG4gICAgICogQHBhcmFtIGV2ZW50X25hbWUgXHJcbiAgICAgKiBAcmV0dXJucyBcclxuICAgICAqL1xyXG4gICAgdHJhbnNsYXRlRXZlbnROYW1lKGV2ZW50X25hbWU6IEFuYWx5dGljRXZlbnRLZXkpIHtcclxuICAgICAgICBzd2l0Y2ggKGV2ZW50X25hbWUpIHtcclxuICAgICAgICAgICAgY2FzZSAndmlld19pdGVtJzogcmV0dXJuICd2aWV3X2l0ZW0nO1xyXG4gICAgICAgICAgICBjYXNlICd2aWV3X2l0ZW1fbGlzdCc6IHJldHVybiAndmlld19pdGVtX2xpc3QnO1xyXG4gICAgICAgICAgICBjYXNlICdjaGVja291dF9pbml0JzogcmV0dXJuICdiZWdpbl9jaGVja291dCc7XHJcbiAgICAgICAgICAgIGNhc2UgJ3NoaXBwaW5nX2luZm8nOiByZXR1cm4gJ2FkZF9zaGlwcGluZ19pbmZvJztcclxuICAgICAgICAgICAgY2FzZSAnYWRkX3BheW1lbnRfaW5mbyc6IHJldHVybiAnYWRkX3BheW1lbnRfaW5mbyc7XHJcbiAgICAgICAgICAgIGNhc2UgJ3B1cmNoYXNlJzogcmV0dXJuICdwdXJjaGFzZSc7XHJcbiAgICAgICAgICAgIGNhc2UgJ2FkZF90b19jYXJ0JzogcmV0dXJuICdhZGRfdG9fY2FydCc7XHJcbiAgICAgICAgICAgIGNhc2UgJ3JlbW92ZV9mcm9tX2NhcnQnOiByZXR1cm4gJ3JlbW92ZV9mcm9tX2NhcnQnO1xyXG4gICAgICAgICAgICBjYXNlICdzaWduX3VwJzogcmV0dXJuICdzaWduX3VwJztcclxuICAgICAgICAgICAgY2FzZSAnc2VsZWN0X3Byb21vdGlvbic6IHJldHVybiAnc2VsZWN0X3Byb21vdGlvbic7XHJcbiAgICAgICAgICAgIGNhc2UgJ3NlbGVjdF9pdGVtJzogcmV0dXJuICdzZWxlY3RfaXRlbSc7XHJcbiAgICAgICAgICAgIGRlZmF1bHQ6IHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICogRXZhbHVhIGVsIGV2ZW50byB5IGRldnVlbHZlIGxvcyBkYXRvcyBkZSBsYXMgZnVuY2lvbmVzIHJlbGFjaW9uYWRhcy5cclxuICAgICAqIEBwYXJhbSBldmVudF9uYW1lIE5vbWJyZSBkZWwgZXZlbnRvXHJcbiAgICAgKiBAcGFyYW0gZGF0YSBEYXRhIGV4dHJhIHBhcmEgYWdyZWdhciBhbCBldmVudG9cclxuICAgICAqIEByZXR1cm5zIFxyXG4gICAgICovXHJcbiAgICBldmFsRXZlbnQoZXZlbnRfbmFtZTogQW5hbHl0aWNFdmVudEtleSwgZGF0YTogYW55KSB7XHJcbiAgICAgICAgc3dpdGNoIChldmVudF9uYW1lKSB7XHJcbiAgICAgICAgICAgIGNhc2UgJ3ZpZXdfaXRlbSc6IHJldHVybiB0aGlzLnRvVmlld0l0ZW0oZGF0YSk7XHJcbiAgICAgICAgICAgIGNhc2UgJ3ZpZXdfaXRlbV9saXN0JzogcmV0dXJuIHRoaXMudG9WaWV3SXRlbUxpc3QoZGF0YSk7XHJcbiAgICAgICAgICAgIGNhc2UgJ2NoZWNrb3V0X2luaXQnOiByZXR1cm4gdGhpcy50b0NoZWNrb3V0SW5pdChkYXRhKTtcclxuICAgICAgICAgICAgY2FzZSAnc2hpcHBpbmdfaW5mbyc6IHJldHVybiB0aGlzLnRvU2hpcHBpbmdJbmZvKGRhdGEpO1xyXG4gICAgICAgICAgICBjYXNlICdhZGRfcGF5bWVudF9pbmZvJzogcmV0dXJuIHRoaXMudG9QYXltZW50SW5mbyhkYXRhKTtcclxuICAgICAgICAgICAgY2FzZSAncHVyY2hhc2UnOiByZXR1cm4gdGhpcy50b1B1cmNoYXNlKGRhdGEpO1xyXG4gICAgICAgICAgICBjYXNlICdhZGRfdG9fY2FydCc6IHJldHVybiB0aGlzLnRvQWRkVG9DYXJ0KGRhdGEpO1xyXG4gICAgICAgICAgICBjYXNlICdyZW1vdmVfZnJvbV9jYXJ0JzogcmV0dXJuIHRoaXMudG9SZW1vdmVUb0NhcnQoZGF0YSk7XHJcbiAgICAgICAgICAgIGNhc2UgJ3NpZ25fdXAnOiByZXR1cm4gdGhpcy50b1NpZ25VcChkYXRhKTtcclxuICAgICAgICAgICAgY2FzZSAnc2VsZWN0X3Byb21vdGlvbic6IHJldHVybiB0aGlzLnRvU2VsZWN0UHJvbW90aW9uKGRhdGEpO1xyXG4gICAgICAgICAgICBjYXNlICdzZWxlY3RfaXRlbSc6IHJldHVybiB0aGlzLnRvU2VsZWN0SXRlbShkYXRhKTtcclxuICAgICAgICAgICAgZGVmYXVsdDogcmV0dXJuIGRhdGE7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBFdmVudG8gcXVlIHNlIGRpc3BhcmEgY3VhbmRvIHNlIHF1aWVyZSBjb21wcmFyIHVuIHByb2R1Y3RvLlxyXG4gICAgICogQHBhcmFtIGRhdGEgXHJcbiAgICAgKiBAcmV0dXJucyBcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSB0b1B1cmNoYXNlKGRhdGE6IGFueSkge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGNvdXBvbjogdGhpcy50b0NhcnREaXNjb3VudChkYXRhKSxcclxuICAgICAgICAgICAgY3VycmVuY3k6IGRhdGEuY3VycmVuY3ksXHJcbiAgICAgICAgICAgIHNoaXBwaW5nOiBkYXRhLnRvdGFscy5zaGlwcGluZyxcclxuICAgICAgICAgICAgdGF4OiBkYXRhLnRvdGFscy50YXhlcyxcclxuICAgICAgICAgICAgdmFsdWU6IGRhdGEudG90YWxzLnRvdGFsLFxyXG4gICAgICAgICAgICB0cmFuc2FjdGlvbl9pZDogZGF0YS5udW1iZXIsXHJcbiAgICAgICAgICAgIGNvdW50SXRlbXM6IGRhdGEuaXRlbXM/Lmxlbmd0aCB8fCAwLFxyXG4gICAgICAgICAgICBpdGVtczogZGF0YS5pdGVtcy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcclxuICAgICAgICAgICAgICAgIGl0ZW1faWQ6IGl0ZW0ucHJvZHVjdC5pZCxcclxuICAgICAgICAgICAgICAgIGl0ZW1fbmFtZTogaXRlbS5wcm9kdWN0Lm5hbWUsXHJcbiAgICAgICAgICAgICAgICAvL2NvdXBvbjonJyxcclxuICAgICAgICAgICAgICAgIGRpc2NvdW50OiBpdGVtLnByb2R1Y3QuZGlzY291bnQgfHwgMCxcclxuICAgICAgICAgICAgICAgIC8vaW5kZXg6JycsXHJcbiAgICAgICAgICAgICAgICBpdGVtX2JyYW5kOiBpdGVtLnByb2R1Y3QuYXR0cmlidXRlcz8ubGVuZ3RoID8gaXRlbS5wcm9kdWN0LmF0dHJpYnV0ZXNbMF0ubmFtZSA6ICcnLFxyXG4gICAgICAgICAgICAgICAgaXRlbV9jYXRlZ29yeTogaXRlbS5wcm9kdWN0LmNhdGVnb3J5LFxyXG4gICAgICAgICAgICAgICAgaXRlbV92YXJpYW50OiBpdGVtLnByb2R1Y3QudmFyaWFudHNbMF0/LmNvZGUgfHwgJycsXHJcbiAgICAgICAgICAgICAgICAvL2xvY2F0aW9uX2lkOiAnJyxcclxuICAgICAgICAgICAgICAgIHByaWNlOiBpdGVtLnByb2R1Y3QudmFyaWFudHNbMF0/LnNhbGVwcmljZSB8fCBpdGVtLnByb2R1Y3QudmFyaWFudHNbMF0/LnByaWNlLFxyXG4gICAgICAgICAgICAgICAgcXVhbnRpdHk6IGl0ZW0ucXVhbnRpdHkgfHwgMSxcclxuICAgICAgICAgICAgfSkpXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBFdmVudG8gcXVlIHNlIGRpc3BhcmEgY3VhbmRvIHNlIGluaWNpYWxpemEgZW4gY2hlY2tvdXQuXHJcbiAgICAgKiBAcGFyYW0gZGF0YSBcclxuICAgICAqIEByZXR1cm5zIFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHRvQ2hlY2tvdXRJbml0KGRhdGE6IGFueSkge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGNvdXBvbjogdGhpcy50b0NhcnREaXNjb3VudChkYXRhKSxcclxuICAgICAgICAgICAgY3VycmVuY3k6IGRhdGEuY3VycmVuY3kgfHwgXCJVU0RcIixcclxuICAgICAgICAgICAgaXRlbXM6IGRhdGEuaXRlbXMubWFwKChpdGVtOiBhbnkpID0+ICh7XHJcbiAgICAgICAgICAgICAgICBpdGVtX2lkOiBpdGVtLnByb2R1Y3QuaWQsXHJcbiAgICAgICAgICAgICAgICBpdGVtX25hbWU6IGl0ZW0ucHJvZHVjdC5uYW1lLFxyXG4gICAgICAgICAgICAgICAgLy9jb3Vwb246JycsXHJcbiAgICAgICAgICAgICAgICBkaXNjb3VudDogaXRlbS5wcm9kdWN0LmRpc2NvdW50IHx8IDAsXHJcbiAgICAgICAgICAgICAgICAvL2luZGV4OicnLFxyXG4gICAgICAgICAgICAgICAgaXRlbV9icmFuZDogaXRlbS5wcm9kdWN0LmF0dHJpYnV0ZXM/Lmxlbmd0aCA/IGl0ZW0ucHJvZHVjdC5hdHRyaWJ1dGVzWzBdLm5hbWUgOiAnJyxcclxuICAgICAgICAgICAgICAgIGl0ZW1fY2F0ZWdvcnk6IGl0ZW0ucHJvZHVjdC5jYXRlZ29yeSxcclxuICAgICAgICAgICAgICAgIC8vaXRlbV9saXN0X2lkOiAnJyxcclxuICAgICAgICAgICAgICAgIC8vaXRlbV9saXN0X25hbWU6ICcnLFxyXG4gICAgICAgICAgICAgICAgaXRlbV92YXJpYW50OiBpdGVtLnByb2R1Y3QudmFyaWFudHNbMF0/LmNvZGUgfHwgJycsXHJcbiAgICAgICAgICAgICAgICAvL2xvY2F0aW9uX2lkOiAnJyxcclxuICAgICAgICAgICAgICAgIHByaWNlOiBpdGVtLnByb2R1Y3QudmFyaWFudHNbMF0/LnNhbGVwcmljZSB8fCBpdGVtLnByb2R1Y3QudmFyaWFudHNbMF0/LnByaWNlLFxyXG4gICAgICAgICAgICAgICAgcXVhbnRpdHk6IGl0ZW0ucXVhbnRpdHkgfHwgMSxcclxuICAgICAgICAgICAgfSkpLFxyXG4gICAgICAgICAgICB2YWx1ZTogZGF0YS50b3RhbHM/LnRvdGFsIHx8IDAsXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBFdmVudG8gcXVlIHNlIGRpc3BhcmEgY29uIGxvcyBkZXNjdWVudG9zIGVuIGVsIGNhcnJpdG8uXHJcbiAgICAgKiBAcGFyYW0gZGF0YSBcclxuICAgICAqIEByZXR1cm5zIFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHRvQ2FydERpc2NvdW50KGRhdGE6IGFueSkge1xyXG4gICAgICAgIGxldCBzdHJEaXNjb3VudCA9ICcnXHJcbiAgICAgICAgc3RyRGlzY291bnQgPSBkYXRhLmNhcnREaXNjb3VudHMubWFwKChpdGVtRGlzY291bnQ6IGFueSkgPT4gaXRlbURpc2NvdW50Py50eXBlKS5qb2luKClcclxuICAgICAgICByZXR1cm4gc3RyRGlzY291bnQgPT0gJycgPyAnbm90LWRpc2NvdW50JyA6IHN0ckRpc2NvdW50XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIEV2ZW50byBxdWUgc2UgZGlzcGFyYSBjdWFuZG8gc2UgYWdyZWdhIHVuIHByb2R1Y3RvIGFsIGNhcnJpdG8uIFxyXG4gICAgICogQHBhcmFtIGRhdGEgXHJcbiAgICAgKiBAcmV0dXJucyBcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSB0b0FkZFRvQ2FydChkYXRhOiBhbnkpIHtcclxuICAgICAgICBsZXQgbGFzdFByb2R1Y3QgPSBkYXRhLml0ZW1zPy5sZW5ndGggJiYgZGF0YS5pdGVtc1tkYXRhLml0ZW1zLmxlbmd0aCAtIDFdXHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgY3VycmVuY3k6IGRhdGEuY3VycmVuY3kgfHwgXCJVU0RcIixcclxuICAgICAgICAgICAgaXRlbXM6IFt0aGlzLnRvSXRlbSh7IHF1YW50aXR5OiBsYXN0UHJvZHVjdC5xdWFudGl0eSwgLi4ubGFzdFByb2R1Y3QucHJvZHVjdCB9KV0sXHJcbiAgICAgICAgICAgIHZhbHVlOiBsYXN0UHJvZHVjdC50b3RhbCB8fCAwLFxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICogQ2FtYmlhIGxhIHZhcmlhYmxlICoqZW5hYmxlZCoqIGEgYGZhbHNlYFxyXG4gICAgICogQHJldHVybnMgXHJcbiAgICAgKi9cclxuICAgIGRpc2FibGUoKSB7IHRoaXMuZW5hYmxlZCA9IGZhbHNlIH1cclxuICAgIC8qKlxyXG4gICAgICogRXZlbnRvIHF1ZSBzZSBkaXNwYXJhIGN1YW5kbyBzZSBpbnRlcmFjdHVhIGEgbGFzIHZpc3RhIGRlbCBwcm9kdWN0by5cclxuICAgICAqIEBwYXJhbSBwcm9kdWN0IFxyXG4gICAgICogQHJldHVybnMgXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgdG9WaWV3SXRlbShwcm9kdWN0OiBhbnkpIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBjdXJyZW5jeTogcHJvZHVjdC5jdXJyZW5jeSxcclxuICAgICAgICAgICAgdmFsdWU6IHByb2R1Y3QucHJpY2UsXHJcbiAgICAgICAgICAgIGl0ZW1zOiBbdGhpcy50b0l0ZW0ocHJvZHVjdCldXHJcblxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICogRXZlbnRvIHF1ZSBzZSBkaXNwYXJhIGN1YW5kbyBzZSBpbnRlcmFjdHVhIGNvbiBlbCBsaXN0YWRvIGRlIHByb2R1Y3Rvcy5cclxuICAgICAqIEBwYXJhbSBkYXRhIFxyXG4gICAgICogQHJldHVybnMgXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgdG9WaWV3SXRlbUxpc3QoZGF0YTogYW55KSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgaXRlbXM6IGRhdGEucHJvZHVjdHMubWFwKChwcm9kdWN0OiBhbnkpID0+IHRoaXMudG9JdGVtKHByb2R1Y3QpKSxcclxuICAgICAgICAgICAgaXRlbV9saXN0X25hbWU6IGRhdGEuaXRlbV9saXN0X25hbWUgfHwgJ0NvbGxlY3Rpb24nLFxyXG4gICAgICAgICAgICBpdGVtX2xpc3RfaWQ6IGRhdGEuaXRlbV9saXN0X2lkIHx8IDBcclxuICAgICAgICB9XHJcblxyXG5cclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICogRXZlbnRvIHF1ZSBzZSBkaXNwYXJhIGN1YW5kbyBzZSBxdWl0YSB1biBpdGVtIGRlbCBjYXJyaXRvLlxyXG4gICAgICogQHBhcmFtIHByb2R1Y3QgXHJcbiAgICAgKiBAcmV0dXJucyBcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSB0b1JlbW92ZVRvQ2FydChwcm9kdWN0OiBhbnkpIHtcclxuICAgICAgICBsZXQgcHJvZHVjdFBhcmFtID0gcHJvZHVjdC5wcm9kdWN0XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgY3VycmVuY3k6IHByb2R1Y3QuY3VycmVuY3kgfHwgXCJVU0RcIixcclxuICAgICAgICAgICAgaXRlbXM6IFt0aGlzLnRvSXRlbSh7IHF1YW50aXR5OiBwcm9kdWN0LnF1YW50aXR5LCAuLi5wcm9kdWN0UGFyYW0gfSldLFxyXG4gICAgICAgICAgICB2YWx1ZTogKHByb2R1Y3RQYXJhbS52YXJpYW50c1swXT8uc2FsZXByaWNlIHx8IHByb2R1Y3RQYXJhbS52YXJpYW50c1swXT8ucHJpY2UpICogcHJvZHVjdC5xdWFudGl0eSB8fCAxLFxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHRvSXRlbSA9IChwcm9kdWN0OiBhbnkpID0+ICh7XHJcbiAgICAgICAgaXRlbV9pZDogcHJvZHVjdC5pZCxcclxuICAgICAgICBpdGVtX25hbWU6IHByb2R1Y3QubmFtZSxcclxuICAgICAgICAvL2NvdXBvbjonJyxcclxuICAgICAgICBkaXNjb3VudDogcHJvZHVjdC5kaXNjb3VudCB8fCAwLFxyXG4gICAgICAgIC8vaW5kZXg6JycsXHJcbiAgICAgICAgaXRlbV9icmFuZDogcHJvZHVjdC5hdHRyaWJ1dGVzPy5sZW5ndGggPyBwcm9kdWN0LmF0dHJpYnV0ZXNbMF0ubmFtZSA6ICcnLFxyXG4gICAgICAgIGl0ZW1fY2F0ZWdvcnk6IHByb2R1Y3QuY2F0ZWdvcnksXHJcbiAgICAgICAgLy9pdGVtX2xpc3RfaWQ6ICcnLFxyXG4gICAgICAgIC8vaXRlbV9saXN0X25hbWU6ICcnLFxyXG4gICAgICAgIGl0ZW1fdmFyaWFudDogcHJvZHVjdC52YXJpYW50c1swXT8uY29kZSB8fCAnJyxcclxuICAgICAgICAvL2xvY2F0aW9uX2lkOiAnJyxcclxuICAgICAgICBwcmljZTogcHJvZHVjdC52YXJpYW50c1swXT8uc2FsZXByaWNlIHx8IHByb2R1Y3QudmFyaWFudHNbMF0/LnByaWNlLFxyXG4gICAgICAgIHF1YW50aXR5OiBwcm9kdWN0LnF1YW50aXR5IHx8IDEsXHJcbiAgICB9KVxyXG4gICAgLyoqXHJcbiAgICAgKiBFdmVudG8gcXVlIHNlIGRpc3BhcmEgY3VhbmRvIHNlIGNvbnN1bHRhIGxhIGluZm9ybWFjacOzbiBkZSBwYWdvLlxyXG4gICAgICogQHBhcmFtIGRhdGEgXHJcbiAgICAgKiBAcmV0dXJucyBcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSB0b1BheW1lbnRJbmZvKGRhdGE6IGFueSkge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGNvdXBvbjogdGhpcy50b0NhcnREaXNjb3VudChkYXRhKSxcclxuICAgICAgICAgICAgY3VycmVuY3k6IGRhdGEuY3VycmVuY3kgfHwgXCJVU0RcIixcclxuICAgICAgICAgICAgcGF5bWVudF90eXBlOiBkYXRhLnBheW1lbnRzWzBdPy5tZXRob2Q/LmNvZGUgfHwgJ25vdC1wYXltZW50cycsXHJcbiAgICAgICAgICAgIHZhbHVlOiBkYXRhLnRvdGFscz8udG90YWwgfHwgMCxcclxuICAgICAgICAgICAgaXRlbXM6IGRhdGEuaXRlbXMubWFwKChpdGVtOiBhbnkpID0+ICh7XHJcbiAgICAgICAgICAgICAgICBpdGVtX2lkOiBpdGVtLnByb2R1Y3QuaWQsXHJcbiAgICAgICAgICAgICAgICBpdGVtX25hbWU6IGl0ZW0ucHJvZHVjdC5uYW1lLFxyXG4gICAgICAgICAgICAgICAgLy9jb3Vwb246JycsXHJcbiAgICAgICAgICAgICAgICBkaXNjb3VudDogaXRlbS5wcm9kdWN0LmRpc2NvdW50IHx8IDAsXHJcbiAgICAgICAgICAgICAgICAvL2luZGV4OicnLFxyXG4gICAgICAgICAgICAgICAgaXRlbV9icmFuZDogaXRlbS5wcm9kdWN0LmF0dHJpYnV0ZXM/Lmxlbmd0aCA/IGl0ZW0ucHJvZHVjdC5hdHRyaWJ1dGVzWzBdLm5hbWUgOiAnJyxcclxuICAgICAgICAgICAgICAgIGl0ZW1fY2F0ZWdvcnk6IGl0ZW0ucHJvZHVjdC5jYXRlZ29yeSxcclxuICAgICAgICAgICAgICAgIC8vaXRlbV9saXN0X2lkOiAnJyxcclxuICAgICAgICAgICAgICAgIC8vaXRlbV9saXN0X25hbWU6ICcnLFxyXG4gICAgICAgICAgICAgICAgaXRlbV92YXJpYW50OiBpdGVtLnByb2R1Y3QudmFyaWFudHNbMF0/LmNvZGUgfHwgJycsXHJcbiAgICAgICAgICAgICAgICAvL2xvY2F0aW9uX2lkOiAnJyxcclxuICAgICAgICAgICAgICAgIHByaWNlOiBpdGVtLnByb2R1Y3QudmFyaWFudHNbMF0/LnNhbGVwcmljZSB8fCBpdGVtLnByb2R1Y3QudmFyaWFudHNbMF0/LnByaWNlLFxyXG4gICAgICAgICAgICAgICAgcXVhbnRpdHk6IGl0ZW0ucXVhbnRpdHkgfHwgMSxcclxuICAgICAgICAgICAgfSkpLFxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICogRXZlbnRvIHF1ZSBzZSBkaXNwYXJhIGN1YW5kbyBzZSBpbnRlcmFjdHVhIGNvbiBsb3MgbcOpdG9kb3MgZGUgZW52w61vLlxyXG4gICAgICogQHBhcmFtIGRhdGEgXHJcbiAgICAgKiBAcmV0dXJucyBcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSB0b1NoaXBwaW5nSW5mbyhkYXRhOiBhbnkpIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBjb3Vwb246IHRoaXMudG9DYXJ0RGlzY291bnQoZGF0YSksXHJcbiAgICAgICAgICAgIGN1cnJlbmN5OiBkYXRhLmN1cnJlbmN5IHx8IFwiVVNEXCIsXHJcbiAgICAgICAgICAgIHNoaXBwaW5nX3RpZXI6IGRhdGEuc2hpcG1lbnRzWzBdPy5tZXRob2Q/LmNvZGUgfHwgJ25vdC1zaGlwcGluZycsXHJcbiAgICAgICAgICAgIHZhbHVlOiBkYXRhLnRvdGFscz8udG90YWwgfHwgMCxcclxuICAgICAgICAgICAgaXRlbXM6IGRhdGEuaXRlbXMubWFwKChpdGVtOiBhbnkpID0+ICh7XHJcbiAgICAgICAgICAgICAgICBpdGVtX2lkOiBpdGVtLnByb2R1Y3QuaWQsXHJcbiAgICAgICAgICAgICAgICBpdGVtX25hbWU6IGl0ZW0ucHJvZHVjdC5uYW1lLFxyXG4gICAgICAgICAgICAgICAgLy9jb3Vwb246JycsXHJcbiAgICAgICAgICAgICAgICBkaXNjb3VudDogaXRlbS5wcm9kdWN0LmRpc2NvdW50IHx8IDAsXHJcbiAgICAgICAgICAgICAgICAvL2luZGV4OicnLFxyXG4gICAgICAgICAgICAgICAgaXRlbV9icmFuZDogaXRlbS5wcm9kdWN0LmF0dHJpYnV0ZXM/Lmxlbmd0aCA/IGl0ZW0ucHJvZHVjdC5hdHRyaWJ1dGVzWzBdLm5hbWUgOiAnJyxcclxuICAgICAgICAgICAgICAgIGl0ZW1fY2F0ZWdvcnk6IGl0ZW0ucHJvZHVjdC5jYXRlZ29yeSxcclxuICAgICAgICAgICAgICAgIC8vaXRlbV9saXN0X2lkOiAnJyxcclxuICAgICAgICAgICAgICAgIC8vaXRlbV9saXN0X25hbWU6ICcnLFxyXG4gICAgICAgICAgICAgICAgaXRlbV92YXJpYW50OiBpdGVtLnByb2R1Y3QudmFyaWFudHNbMF0/LmNvZGUgfHwgJycsXHJcbiAgICAgICAgICAgICAgICAvL2xvY2F0aW9uX2lkOiAnJyxcclxuICAgICAgICAgICAgICAgIHByaWNlOiBpdGVtLnByb2R1Y3QudmFyaWFudHNbMF0/LnNhbGVwcmljZSB8fCBpdGVtLnByb2R1Y3QudmFyaWFudHNbMF0/LnByaWNlLFxyXG4gICAgICAgICAgICAgICAgcXVhbnRpdHk6IGl0ZW0ucXVhbnRpdHkgfHwgMSxcclxuICAgICAgICAgICAgfSkpLFxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHRvU2lnblVwKGRhdGE6IGFueSkge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIC4uLmRhdGFcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIEV2ZW50byBxdWUgc2UgZGlzcGFyYSBjdWFuZG8gc2UgaW50ZXJhY3R1YSBjb24gdW5hIHByb21vY2nDs24uXHJcbiAgICAgKiBAcGFyYW0gZGF0YSBcclxuICAgICAqIEByZXR1cm5zIFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHRvU2VsZWN0UHJvbW90aW9uKGRhdGE6IGFueSkge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGRhdGEpO1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHByb21vdGlvbl9pZDogZGF0YS5pZCB8fCAnJyxcclxuICAgICAgICAgICAgcHJvbW90aW9uX25hbWU6IGRhdGEuY29kZSB8fCBkYXRhLm5hbWUsXHJcbiAgICAgICAgICAgIHByb21vdGlvbl90aXRsZTogZGF0YS5zdWJ0aXRsZSxcclxuICAgICAgICAgICAgbG9jYXRpb25faWQ6IGRhdGEucHJpb3JpdHkgfHwgMFxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICogRXZlbnRvIHF1ZSBzZSBkaXNhcHJhIGN1YW5kbyBzZSBpbnRlcmFjdHVhIGFsIHNlbGVjY2lvbmFyIHVuIGl0ZW0uXHJcbiAgICAgKiBAcGFyYW0gZGF0YSBcclxuICAgICAqIEByZXR1cm5zIFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHRvU2VsZWN0SXRlbShkYXRhOiBhbnkpIHtcclxuICAgICAgICBjb25zb2xlLmxvZyhkYXRhKTtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBpdGVtczogdGhpcy50b0l0ZW0oZGF0YSlcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
@@ -28,6 +28,8 @@ export class MetricoolPixelService {
|
|
|
28
28
|
* @param pixel_hash hash provisto por Metricool Pixel.
|
|
29
29
|
*/
|
|
30
30
|
initialize = (pixel_hash) => {
|
|
31
|
+
if (!isPlatformBrowser(this.platformId) || !this.document)
|
|
32
|
+
return;
|
|
31
33
|
let new_analityc_script = this.renderer.createElement('script');
|
|
32
34
|
new_analityc_script.type = 'text/javascript';
|
|
33
35
|
new_analityc_script.text = `
|
|
@@ -41,7 +43,7 @@ export class MetricoolPixelService {
|
|
|
41
43
|
beTracker.t({ hash: "${pixel_hash}" })
|
|
42
44
|
});
|
|
43
45
|
`;
|
|
44
|
-
this.renderer.appendChild(this.document
|
|
46
|
+
this.renderer.appendChild(this.document.body, new_analityc_script);
|
|
45
47
|
};
|
|
46
48
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MetricoolPixelService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
47
49
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MetricoolPixelService, providedIn: 'root' });
|
|
@@ -52,4 +54,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
52
54
|
providedIn: 'root'
|
|
53
55
|
}]
|
|
54
56
|
}], ctorParameters: () => [] });
|
|
55
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0cmljb29sLXBpeGVsLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lYXN5Y29tbWVyY2UtdjE4L3NyYy9saWIvZWMtc2VydmljZXMvYW5hbHl0aWNzL21ldHJpY29vbC1waXhlbC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQWEsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBQzdGOztHQUVHO0FBSUgsTUFBTSxPQUFPLHFCQUFxQjtJQUM5Qjs7T0FFRztJQUNLLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFFakIsZUFBZSxHQUFxQixNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTtJQUM1RCxRQUFRLEdBQW9CLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUM1QyxVQUFVLEdBQVEsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFBO0lBQzdDOzs7T0FHRztJQUNLLFFBQVEsQ0FBWTtJQUU1QjtRQUNJLElBQUksaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDckMsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUE7UUFDNUIsQ0FBQztRQUNELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFDRDs7O09BR0c7SUFDSCxVQUFVLEdBQUcsQ0FBQyxVQUFlLEVBQUUsRUFBRTtRQUM3QixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVE7WUFBRSxPQUFPO1FBRWxFLElBQUksbUJBQW1CLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDaEUsbUJBQW1CLENBQUMsSUFBSSxHQUFHLGlCQUFpQixDQUFDO1FBQzdDLG1CQUFtQixDQUFDLElBQUksR0FBRzs7Ozs7Ozs7bUNBUUEsVUFBVTs7U0FFcEMsQ0FBQztRQUNGLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLG1CQUFtQixDQUFDLENBQUM7SUFDdkUsQ0FBQyxDQUFBO3dHQTFDUSxxQkFBcUI7NEdBQXJCLHFCQUFxQixjQUZsQixNQUFNOzs0RkFFVCxxQkFBcUI7a0JBSGpDLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRE9DVU1FTlQsIGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlLCBQTEFURk9STV9JRCwgUmVuZGVyZXIyLCBSZW5kZXJlckZhY3RvcnkyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbi8qKlxyXG4gKiBTZXJ2aWNpbyBlbmNhcmdhZG8gZGUgbWFuZWphciBlbCBhbmFseXRpY3MgZGUgTWV0cmljb29sIFBpeGVsXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIE1ldHJpY29vbFBpeGVsU2VydmljZSB7XHJcbiAgICAvKipcclxuICAgICAqIEluZGljYSBzaSBzZSBlc3RhIGNhcmdhbmRvIGVsIFNlcnZpY2lvLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGlzTG9hZGVkID0gZmFsc2U7XHJcblxyXG4gICAgcHJpdmF0ZSByZW5kZXJlckZhY3Rvcnk6IFJlbmRlcmVyRmFjdG9yeTIgPSBpbmplY3QoUmVuZGVyZXJGYWN0b3J5MilcclxuICAgIHByaXZhdGUgZG9jdW1lbnQ6IERvY3VtZW50IHwgbnVsbCA9IGluamVjdChET0NVTUVOVClcclxuICAgIHByaXZhdGUgcGxhdGZvcm1JZDogYW55ID0gaW5qZWN0KFBMQVRGT1JNX0lEKVxyXG4gICAgLyoqXHJcbiAgICAgKiBTZSBlbmNhcmdhIGRlIGNyZWFyIGVsIGVsZW1lbnRvIEhUTUwgY29uIGxhcyBjb25maWd1cmFjaW9uZXMgcGFyYSBcclxuICAgICAqIHF1ZSBzZSBwdWVkYSBlamVjdXRhciBlbCBzZXJ2aWNpby5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnQgPSBkb2N1bWVudFxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnJlbmRlcmVyID0gdGhpcy5yZW5kZXJlckZhY3RvcnkuY3JlYXRlUmVuZGVyZXIobnVsbCwgbnVsbCk7XHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIEluaWNpYWxpemEgZWwgU2VydmljaW8gZGUgYW5hbHl0aWNzIGNvbiBzdXMgY29uZmlndXJhY2lvbmVzLlxyXG4gICAgICogQHBhcmFtIHBpeGVsX2hhc2ggaGFzaCBwcm92aXN0byBwb3IgTWV0cmljb29sIFBpeGVsLlxyXG4gICAgICovXHJcbiAgICBpbml0aWFsaXplID0gKHBpeGVsX2hhc2g6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSB8fCAhdGhpcy5kb2N1bWVudCkgcmV0dXJuO1xyXG4gICAgICAgIFxyXG4gICAgICAgIGxldCBuZXdfYW5hbGl0eWNfc2NyaXB0ID0gdGhpcy5yZW5kZXJlci5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcclxuICAgICAgICBuZXdfYW5hbGl0eWNfc2NyaXB0LnR5cGUgPSAndGV4dC9qYXZhc2NyaXB0JztcclxuICAgICAgICBuZXdfYW5hbGl0eWNfc2NyaXB0LnRleHQgPSBgXHJcbiAgICAgICAgZnVuY3Rpb24gbG9hZFNjcmlwdChhKSB7XHJcbiAgICAgICAgICAgIHZhciBiID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJoZWFkXCIpWzBdLCBjID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiKTtcclxuICAgICAgICAgICAgYy50eXBlID0gXCJ0ZXh0L2phdmFzY3JpcHRcIixcclxuICAgICAgICAgICAgICAgIGMuc3JjID0gXCJodHRwczovL3RyYWNrZXIubWV0cmljb29sLmNvbS9yZXNvdXJjZXMvYmUuanNcIixcclxuICAgICAgICAgICAgICAgIGMub25yZWFkeXN0YXRlY2hhbmdlID0gYSxcclxuICAgICAgICAgICAgICAgIGMub25sb2FkID0gYSwgYi5hcHBlbmRDaGlsZChjKVxyXG4gICAgICAgIH0gbG9hZFNjcmlwdChmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIGJlVHJhY2tlci50KHsgaGFzaDogXCIke3BpeGVsX2hhc2h9XCIgfSlcclxuICAgICAgICB9KTtcclxuICAgICAgICBgO1xyXG4gICAgICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5kb2N1bWVudC5ib2R5LCBuZXdfYW5hbGl0eWNfc2NyaXB0KTtcclxuICAgIH1cclxufVxyXG4iXX0=
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { inject, Injectable } from '@angular/core';
|
|
2
|
-
import { CookieService } from 'ngx-cookie-service';
|
|
1
|
+
import { inject, Injectable, PLATFORM_ID, Optional } from '@angular/core';
|
|
3
2
|
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "ngx-cookie-service";
|
|
4
4
|
/**
|
|
5
5
|
* Adapter usado para storagear los datos.
|
|
6
6
|
* @class LocalStorageService
|
|
@@ -10,14 +10,20 @@ export class LocalStorageService {
|
|
|
10
10
|
/**
|
|
11
11
|
* Servicio usado para guardar los datos en las cookies
|
|
12
12
|
*/
|
|
13
|
-
_cookieService
|
|
14
|
-
|
|
13
|
+
_cookieService;
|
|
14
|
+
platformId = inject(PLATFORM_ID);
|
|
15
|
+
constructor(cookieService) {
|
|
16
|
+
// CookieService puede ser null en SSR
|
|
17
|
+
this._cookieService = cookieService;
|
|
18
|
+
}
|
|
15
19
|
/**
|
|
16
20
|
* Obtiene el item del Storage
|
|
17
21
|
* @param key Clave para acceder al valor
|
|
18
22
|
* @returns
|
|
19
23
|
*/
|
|
20
24
|
getItem(key) {
|
|
25
|
+
if (!this._cookieService)
|
|
26
|
+
return '';
|
|
21
27
|
return this._cookieService.get(key);
|
|
22
28
|
}
|
|
23
29
|
/**
|
|
@@ -27,6 +33,8 @@ export class LocalStorageService {
|
|
|
27
33
|
* @param metadata Opciones extra que puede necesitar el servicio.
|
|
28
34
|
*/
|
|
29
35
|
setItem(key, value, metadata = { path: '/' }) {
|
|
36
|
+
if (!this._cookieService)
|
|
37
|
+
return;
|
|
30
38
|
this._cookieService.set(key, value, metadata);
|
|
31
39
|
}
|
|
32
40
|
/**
|
|
@@ -35,18 +43,22 @@ export class LocalStorageService {
|
|
|
35
43
|
* @param metadata Opciones extra que puede necesitar el servicio.
|
|
36
44
|
*/
|
|
37
45
|
removeItem(key, metadata = '/') {
|
|
46
|
+
if (!this._cookieService)
|
|
47
|
+
return;
|
|
38
48
|
this._cookieService.delete(key, metadata);
|
|
39
49
|
}
|
|
40
50
|
/**
|
|
41
51
|
* Limpia el Storage.
|
|
42
52
|
*/
|
|
43
53
|
clear() {
|
|
54
|
+
if (!this._cookieService)
|
|
55
|
+
return;
|
|
44
56
|
this._cookieService.deleteAll();
|
|
45
57
|
}
|
|
46
58
|
key(index) {
|
|
47
59
|
throw new Error('Method not implemented.');
|
|
48
60
|
}
|
|
49
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LocalStorageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
61
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LocalStorageService, deps: [{ token: i1.CookieService, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
50
62
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LocalStorageService, providedIn: 'root' });
|
|
51
63
|
}
|
|
52
64
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LocalStorageService, decorators: [{
|
|
@@ -54,5 +66,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
54
66
|
args: [{
|
|
55
67
|
providedIn: 'root'
|
|
56
68
|
}]
|
|
57
|
-
}], ctorParameters: () => [
|
|
58
|
-
|
|
69
|
+
}], ctorParameters: () => [{ type: i1.CookieService, decorators: [{
|
|
70
|
+
type: Optional
|
|
71
|
+
}] }] });
|
|
72
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwtc3RvcmFnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLXNlcnZpY2VzL2xvY2FsLXN0b3JhZ2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFJMUU7Ozs7R0FJRztBQUlILE1BQU0sT0FBTyxtQkFBbUI7SUFDOUI7O09BRUc7SUFDSyxjQUFjLENBQXVCO0lBQ3JDLFVBQVUsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7SUFFekMsWUFBd0IsYUFBNEI7UUFDbEQsc0NBQXNDO1FBQ3RDLElBQUksQ0FBQyxjQUFjLEdBQUcsYUFBYSxDQUFDO0lBQ3RDLENBQUM7SUFDRDs7OztPQUlHO0lBQ0gsT0FBTyxDQUFDLEdBQVc7UUFDakIsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFDcEMsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBQ0Q7Ozs7O09BS0c7SUFDSCxPQUFPLENBQUMsR0FBVyxFQUFFLEtBQVUsRUFBRSxXQUFlLEVBQUMsSUFBSSxFQUFDLEdBQUcsRUFBQztRQUN4RCxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWM7WUFBRSxPQUFPO1FBQ2pDLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUNEOzs7O09BSUc7SUFDSCxVQUFVLENBQUMsR0FBVyxFQUFFLFdBQWUsR0FBRztRQUN4QyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWM7WUFBRSxPQUFPO1FBQ2pDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBQ0Q7O09BRUc7SUFDSCxLQUFLO1FBQ0gsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjO1lBQUUsT0FBTztRQUNqQyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFDRCxHQUFHLENBQUMsS0FBYTtRQUNmLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUM3QyxDQUFDO3dHQWhEVSxtQkFBbUI7NEdBQW5CLG1CQUFtQixjQUZsQixNQUFNOzs0RkFFUCxtQkFBbUI7a0JBSC9CLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFRYyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlLCBQTEFURk9STV9JRCwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDb29raWVTZXJ2aWNlIH0gZnJvbSAnbmd4LWNvb2tpZS1zZXJ2aWNlJztcclxuaW1wb3J0IHsgU3RvcmFnZSB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xyXG4vKipcclxuICogQWRhcHRlciB1c2FkbyBwYXJhIHN0b3JhZ2VhciBsb3MgZGF0b3MuXHJcbiAqIEBjbGFzcyBMb2NhbFN0b3JhZ2VTZXJ2aWNlXHJcbiAqIEBpbXBsZW1lbnRzIHtTdG9yYWdlfVxyXG4gKi9cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgTG9jYWxTdG9yYWdlU2VydmljZSBpbXBsZW1lbnRzIFN0b3JhZ2Uge1xyXG4gIC8qKlxyXG4gICAqIFNlcnZpY2lvIHVzYWRvIHBhcmEgZ3VhcmRhciBsb3MgZGF0b3MgZW4gbGFzIGNvb2tpZXNcclxuICAgKi9cclxuICBwcml2YXRlIF9jb29raWVTZXJ2aWNlOiBDb29raWVTZXJ2aWNlIHwgbnVsbDtcclxuICBwcml2YXRlIHBsYXRmb3JtSWQgPSBpbmplY3QoUExBVEZPUk1fSUQpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBjb29raWVTZXJ2aWNlOiBDb29raWVTZXJ2aWNlKSB7XHJcbiAgICAvLyBDb29raWVTZXJ2aWNlIHB1ZWRlIHNlciBudWxsIGVuIFNTUlxyXG4gICAgdGhpcy5fY29va2llU2VydmljZSA9IGNvb2tpZVNlcnZpY2U7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIE9idGllbmUgZWwgaXRlbSBkZWwgU3RvcmFnZVxyXG4gICAqIEBwYXJhbSBrZXkgQ2xhdmUgcGFyYSBhY2NlZGVyIGFsIHZhbG9yXHJcbiAgICogQHJldHVybnMgXHJcbiAgICovXHJcbiAgZ2V0SXRlbShrZXk6IHN0cmluZyk6c3RyaW5nIHtcclxuICAgIGlmICghdGhpcy5fY29va2llU2VydmljZSkgcmV0dXJuICcnO1xyXG4gICAgcmV0dXJuIHRoaXMuX2Nvb2tpZVNlcnZpY2UuZ2V0KGtleSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEd1YXJkYSB1biBkYXRvIGVuIGVsIHN0b3JhZ2UuXHJcbiAgICogQHBhcmFtIGtleSBDbGF2ZSBxdWUgc2UgYXNvY2lhIGFsIHZhbG9yXHJcbiAgICogQHBhcmFtIHZhbHVlIFZhbG9yIGEgZ3VhcmRhclxyXG4gICAqIEBwYXJhbSBtZXRhZGF0YSBPcGNpb25lcyBleHRyYSBxdWUgcHVlZGUgbmVjZXNpdGFyIGVsIHNlcnZpY2lvLlxyXG4gICAqL1xyXG4gIHNldEl0ZW0oa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnksIG1ldGFkYXRhOmFueSA9IHtwYXRoOicvJ30pIHtcclxuICAgIGlmICghdGhpcy5fY29va2llU2VydmljZSkgcmV0dXJuO1xyXG4gICAgdGhpcy5fY29va2llU2VydmljZS5zZXQoa2V5LCB2YWx1ZSwgbWV0YWRhdGEpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBSZW11ZXZlIGVsIGl0ZW0gZGVsIHN0b3JhZ2UuXHJcbiAgICogQHBhcmFtIGtleSBDbGF2ZSBkZWwgaXRlbSBkZWwgc3RvcmFnZSBhIGVsaW1pbmFyLlxyXG4gICAqIEBwYXJhbSBtZXRhZGF0YSBPcGNpb25lcyBleHRyYSBxdWUgcHVlZGUgbmVjZXNpdGFyIGVsIHNlcnZpY2lvLlxyXG4gICAqL1xyXG4gIHJlbW92ZUl0ZW0oa2V5OiBzdHJpbmcsIG1ldGFkYXRhOmFueSA9ICcvJyk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLl9jb29raWVTZXJ2aWNlKSByZXR1cm47XHJcbiAgICB0aGlzLl9jb29raWVTZXJ2aWNlLmRlbGV0ZShrZXksIG1ldGFkYXRhKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogTGltcGlhIGVsIFN0b3JhZ2UuXHJcbiAgICovXHJcbiAgY2xlYXIoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuX2Nvb2tpZVNlcnZpY2UpIHJldHVybjtcclxuICAgIHRoaXMuX2Nvb2tpZVNlcnZpY2UuZGVsZXRlQWxsKCk7XHJcbiAgfVxyXG4gIGtleShpbmRleDogbnVtYmVyKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { inject, Injectable } from '@angular/core';
|
|
2
|
-
import {
|
|
1
|
+
import { inject, Injectable, PLATFORM_ID, Optional } from '@angular/core';
|
|
2
|
+
import { of } from 'rxjs';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@ngx-pwa/local-storage";
|
|
4
5
|
/**
|
|
5
6
|
* Adapter usado para storagear los datos.
|
|
6
7
|
* @class NgxLocalStorageService
|
|
@@ -10,9 +11,15 @@ export class NgxLocalStorageService {
|
|
|
10
11
|
/**
|
|
11
12
|
* Servicio usado para guardar los datos en el localstorage.
|
|
12
13
|
*/
|
|
13
|
-
_storage
|
|
14
|
-
|
|
14
|
+
_storage;
|
|
15
|
+
platformId = inject(PLATFORM_ID);
|
|
16
|
+
constructor(storage) {
|
|
17
|
+
// StorageMap puede ser null en SSR
|
|
18
|
+
this._storage = storage;
|
|
19
|
+
}
|
|
15
20
|
getItemPromise(key) {
|
|
21
|
+
if (!this._storage)
|
|
22
|
+
return Promise.resolve(null);
|
|
16
23
|
return new Promise((resolve, reject) => {
|
|
17
24
|
this._storage.get(key).subscribe({
|
|
18
25
|
next: (data) => resolve(data),
|
|
@@ -26,6 +33,8 @@ export class NgxLocalStorageService {
|
|
|
26
33
|
* @returns
|
|
27
34
|
*/
|
|
28
35
|
getItem(key) {
|
|
36
|
+
if (!this._storage)
|
|
37
|
+
return of(null);
|
|
29
38
|
return this._storage.get(key);
|
|
30
39
|
}
|
|
31
40
|
/**
|
|
@@ -35,6 +44,8 @@ export class NgxLocalStorageService {
|
|
|
35
44
|
* @param metadata Opciones extra que puede necesitar el servicio.
|
|
36
45
|
*/
|
|
37
46
|
setItem(key, value, metadata = { path: '/' }) {
|
|
47
|
+
if (!this._storage)
|
|
48
|
+
return;
|
|
38
49
|
this._storage.set(key, value).subscribe(() => { });
|
|
39
50
|
}
|
|
40
51
|
/**
|
|
@@ -43,18 +54,22 @@ export class NgxLocalStorageService {
|
|
|
43
54
|
* @param metadata Opciones extra que puede necesitar el servicio.
|
|
44
55
|
*/
|
|
45
56
|
removeItem(key, metadata) {
|
|
57
|
+
if (!this._storage)
|
|
58
|
+
return;
|
|
46
59
|
this._storage.delete(key).subscribe(() => { });
|
|
47
60
|
}
|
|
48
61
|
/**
|
|
49
62
|
* Limpia el Storage.
|
|
50
63
|
*/
|
|
51
64
|
clear() {
|
|
65
|
+
if (!this._storage)
|
|
66
|
+
return;
|
|
52
67
|
this._storage.clear().subscribe(() => { });
|
|
53
68
|
}
|
|
54
69
|
key(index) {
|
|
55
70
|
throw new Error('Method not implemented.');
|
|
56
71
|
}
|
|
57
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NgxLocalStorageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
72
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NgxLocalStorageService, deps: [{ token: i1.StorageMap, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
58
73
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NgxLocalStorageService, providedIn: 'root' });
|
|
59
74
|
}
|
|
60
75
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NgxLocalStorageService, decorators: [{
|
|
@@ -62,5 +77,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
62
77
|
args: [{
|
|
63
78
|
providedIn: 'root'
|
|
64
79
|
}]
|
|
65
|
-
}], ctorParameters: () => [
|
|
66
|
-
|
|
80
|
+
}], ctorParameters: () => [{ type: i1.StorageMap, decorators: [{
|
|
81
|
+
type: Optional
|
|
82
|
+
}] }] });
|
|
83
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWxvY2FsLXN0b3JhZ2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVhc3ljb21tZXJjZS12MTgvc3JjL2xpYi9lYy1zZXJ2aWNlcy9uZ3gtbG9jYWwtc3RvcmFnZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFLMUUsT0FBTyxFQUFtQixFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7OztBQUMzQzs7OztHQUlHO0FBSUgsTUFBTSxPQUFPLHNCQUFzQjtJQUNsQzs7T0FFRztJQUNLLFFBQVEsQ0FBb0I7SUFDNUIsVUFBVSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUV6QyxZQUF3QixPQUFtQjtRQUMxQyxtQ0FBbUM7UUFDbkMsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7SUFDekIsQ0FBQztJQUVPLGNBQWMsQ0FBQyxHQUFRO1FBQzlCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUTtZQUFFLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqRCxPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ3RDLElBQUksQ0FBQyxRQUFTLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQztnQkFDakMsSUFBSSxFQUFFLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO2dCQUNsQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7YUFDM0IsQ0FBQyxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE9BQU8sQ0FBQyxHQUFXO1FBQ2xCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUTtZQUFFLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3BDLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUNEOzs7OztPQUtHO0lBQ0gsT0FBTyxDQUFDLEdBQVcsRUFBRSxLQUFVLEVBQUUsV0FBZ0IsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFO1FBQzdELElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUTtZQUFFLE9BQU87UUFDM0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBQ0Q7Ozs7T0FJRztJQUNILFVBQVUsQ0FBQyxHQUFXLEVBQUUsUUFBYztRQUNyQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVE7WUFBRSxPQUFPO1FBQzNCLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBQ0Q7O09BRUc7SUFDSCxLQUFLO1FBQ0osSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRO1lBQUUsT0FBTztRQUMzQixJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBQ0QsR0FBRyxDQUFDLEtBQWE7UUFDaEIsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQzVDLENBQUM7d0dBM0RXLHNCQUFzQjs0R0FBdEIsc0JBQXNCLGNBRnRCLE1BQU07OzRGQUVOLHNCQUFzQjtrQkFIbEMsVUFBVTttQkFBQztvQkFDWCxVQUFVLEVBQUUsTUFBTTtpQkFDbEI7OzBCQVFhLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUsIFBMQVRGT1JNX0lELCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENvb2tpZVNlcnZpY2UgfSBmcm9tICduZ3gtY29va2llLXNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTdG9yYWdlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IFN0b3JhZ2VNYXAgfSBmcm9tICdAbmd4LXB3YS9sb2NhbC1zdG9yYWdlJztcclxuaW1wb3J0IHsgbWFwLCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xyXG4vKipcclxuICogQWRhcHRlciB1c2FkbyBwYXJhIHN0b3JhZ2VhciBsb3MgZGF0b3MuXHJcbiAqIEBjbGFzcyBOZ3hMb2NhbFN0b3JhZ2VTZXJ2aWNlXHJcbiAqIEBpbXBsZW1lbnRzIHtTdG9yYWdlfVxyXG4gKi9cclxuQEluamVjdGFibGUoe1xyXG5cdHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgTmd4TG9jYWxTdG9yYWdlU2VydmljZSBpbXBsZW1lbnRzIFN0b3JhZ2Uge1xyXG5cdC8qKlxyXG5cdCAqIFNlcnZpY2lvIHVzYWRvIHBhcmEgZ3VhcmRhciBsb3MgZGF0b3MgZW4gZWwgbG9jYWxzdG9yYWdlLlxyXG5cdCAqL1xyXG5cdHByaXZhdGUgX3N0b3JhZ2U6IFN0b3JhZ2VNYXAgfCBudWxsO1xyXG5cdHByaXZhdGUgcGxhdGZvcm1JZCA9IGluamVjdChQTEFURk9STV9JRCk7XHJcblxyXG5cdGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpIHN0b3JhZ2U6IFN0b3JhZ2VNYXApIHtcclxuXHRcdC8vIFN0b3JhZ2VNYXAgcHVlZGUgc2VyIG51bGwgZW4gU1NSXHJcblx0XHR0aGlzLl9zdG9yYWdlID0gc3RvcmFnZTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgZ2V0SXRlbVByb21pc2Uoa2V5OiBhbnkpOiBQcm9taXNlPHN0cmluZyB8IG51bGw+IHtcclxuXHRcdGlmICghdGhpcy5fc3RvcmFnZSkgcmV0dXJuIFByb21pc2UucmVzb2x2ZShudWxsKTtcclxuXHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcblx0XHRcdHRoaXMuX3N0b3JhZ2UhLmdldChrZXkpLnN1YnNjcmliZSh7XHJcblx0XHRcdFx0bmV4dDogKGRhdGE6IGFueSkgPT4gcmVzb2x2ZShkYXRhKSxcclxuXHRcdFx0XHRlcnJvcjogKGVycikgPT4gcmVqZWN0KGVyciksXHJcblx0XHRcdH0pO1xyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBPYnRpZW5lIGVsIGl0ZW0gZGVsIFN0b3JhZ2VcclxuXHQgKiBAcGFyYW0ga2V5IENsYXZlIHBhcmEgYWNjZWRlciBhbCB2YWxvclxyXG5cdCAqIEByZXR1cm5zIFxyXG5cdCAqL1xyXG5cdGdldEl0ZW0oa2V5OiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG5cdFx0aWYgKCF0aGlzLl9zdG9yYWdlKSByZXR1cm4gb2YobnVsbCk7XHJcblx0XHRyZXR1cm4gdGhpcy5fc3RvcmFnZS5nZXQoa2V5KTtcclxuXHR9XHJcblx0LyoqXHJcblx0ICogR3VhcmRhIHVuIGRhdG8gZW4gZWwgc3RvcmFnZS5cclxuXHQgKiBAcGFyYW0ga2V5IENsYXZlIHF1ZSBzZSBhc29jaWEgYWwgdmFsb3JcclxuXHQgKiBAcGFyYW0gdmFsdWUgVmFsb3IgYSBndWFyZGFyXHJcblx0ICogQHBhcmFtIG1ldGFkYXRhIE9wY2lvbmVzIGV4dHJhIHF1ZSBwdWVkZSBuZWNlc2l0YXIgZWwgc2VydmljaW8uXHJcblx0ICovXHJcblx0c2V0SXRlbShrZXk6IHN0cmluZywgdmFsdWU6IGFueSwgbWV0YWRhdGE6IGFueSA9IHsgcGF0aDogJy8nIH0pIHtcclxuXHRcdGlmICghdGhpcy5fc3RvcmFnZSkgcmV0dXJuO1xyXG5cdFx0dGhpcy5fc3RvcmFnZS5zZXQoa2V5LCB2YWx1ZSkuc3Vic2NyaWJlKCgpID0+IHsgfSk7XHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIFJlbXVldmUgZWwgaXRlbSBkZWwgc3RvcmFnZS5cclxuXHQgKiBAcGFyYW0ga2V5IENsYXZlIGRlbCBpdGVtIGRlbCBzdG9yYWdlIGEgZWxpbWluYXIuXHJcblx0ICogQHBhcmFtIG1ldGFkYXRhIE9wY2lvbmVzIGV4dHJhIHF1ZSBwdWVkZSBuZWNlc2l0YXIgZWwgc2VydmljaW8uXHJcblx0ICovXHJcblx0cmVtb3ZlSXRlbShrZXk6IHN0cmluZywgbWV0YWRhdGE/OiBhbnkpOiB2b2lkIHtcclxuXHRcdGlmICghdGhpcy5fc3RvcmFnZSkgcmV0dXJuO1xyXG5cdFx0dGhpcy5fc3RvcmFnZS5kZWxldGUoa2V5KS5zdWJzY3JpYmUoKCkgPT4geyB9KTtcclxuXHR9XHJcblx0LyoqXHJcblx0ICogTGltcGlhIGVsIFN0b3JhZ2UuXHJcblx0ICovXHJcblx0Y2xlYXIoKTogdm9pZCB7XHJcblx0XHRpZiAoIXRoaXMuX3N0b3JhZ2UpIHJldHVybjtcclxuXHRcdHRoaXMuX3N0b3JhZ2UuY2xlYXIoKS5zdWJzY3JpYmUoKCkgPT4geyB9KTtcclxuXHR9XHJcblx0a2V5KGluZGV4OiBudW1iZXIpOiBzdHJpbmcgfCBudWxsIHtcclxuXHRcdHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcclxuXHR9XHJcblxyXG59XHJcbiJdfQ==
|