@wavemaker/app-ng-runtime 12.0.0-next.1417180 → 12.0.0-next.1417190
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.
- app-ng-runtime/components/base/bundles/index.umd.js +8 -5
- app-ng-runtime/components/base/esm2022/utils/widget-utils.mjs +9 -6
- app-ng-runtime/components/base/esm2022/widgets/framework/property-change-handler.mjs +3 -3
- app-ng-runtime/components/base/fesm2022/index.mjs +9 -6
- app-ng-runtime/components/base/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/package.json +1 -1
- app-ng-runtime/runtime/base/bundles/index.umd.js +16 -4
- app-ng-runtime/runtime/base/esm2022/runtime-base.module.mjs +4 -1
- app-ng-runtime/runtime/base/esm2022/services/http-interceptor.services.mjs +7 -1
- app-ng-runtime/runtime/base/esm2022/services/i18n.service.mjs +4 -3
- app-ng-runtime/runtime/base/esm2022/services/prefab-manager.service.mjs +2 -2
- app-ng-runtime/runtime/base/esm2022/util/utils.mjs +6 -2
- app-ng-runtime/runtime/base/fesm2022/index.mjs +17 -5
- app-ng-runtime/runtime/base/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/variables/bundles/index.umd.js +3 -1
- app-ng-runtime/variables/esm2022/service/metadata-service/metadata.service.mjs +5 -3
- app-ng-runtime/variables/fesm2022/index.mjs +4 -2
- app-ng-runtime/variables/fesm2022/index.mjs.map +1 -1
app-ng-runtime/package.json
CHANGED
|
@@ -533,7 +533,10 @@
|
|
|
533
533
|
}], () => [{ type: i1__namespace.AbstractHttpService }, { type: i2__namespace.SecurityService }, { type: i1__namespace.AbstractDialogService }, { type: i1$1__namespace.Router }, { type: i1__namespace.App }, { type: i4__namespace.VariablesService }, { type: i4__namespace.MetadataService }, { type: i1__namespace.AbstractSpinnerService }, { type: i1__namespace.AbstractI18nService }, { type: i1$2__namespace.DatePipe }], null); })();
|
|
534
534
|
|
|
535
535
|
const isPrefabInPreview = (prefabName) => prefabName === '__self__';
|
|
536
|
-
const getPrefabBaseUrl = (prefabName) =>
|
|
536
|
+
const getPrefabBaseUrl = (prefabName) => {
|
|
537
|
+
const basePath = i1._WM_APP_PROJECT.isPreview ? 'app/prefabs' : i1._WM_APP_PROJECT.cdnUrl + 'resources';
|
|
538
|
+
return isPrefabInPreview(prefabName) ? '.' : basePath + `/${prefabName}`;
|
|
539
|
+
};
|
|
537
540
|
const getPrefabConfigUrl = (prefabName) => `${getPrefabBaseUrl(prefabName)}/config.json`;
|
|
538
541
|
const getPrefabMinJsonUrl = (prefabName) => `${getPrefabBaseUrl(prefabName)}/pages/Main/page.min.json`;
|
|
539
542
|
const getPrefabPartialJsonUrl = (prefabName, partialName) => `${getPrefabBaseUrl(prefabName)}/pages/${partialName}/page.min.json`;
|
|
@@ -544,7 +547,7 @@
|
|
|
544
547
|
const getPrefabResourceUrl = (resourcePath, resourceBasePath) => {
|
|
545
548
|
let _url = resourcePath;
|
|
546
549
|
if (!i1.stringStartsWith(resourcePath, 'http://|https://|//')) {
|
|
547
|
-
_url = (resourceBasePath + _url)
|
|
550
|
+
_url = (resourceBasePath + _url);
|
|
548
551
|
}
|
|
549
552
|
return _url;
|
|
550
553
|
};
|
|
@@ -2703,7 +2706,7 @@
|
|
|
2703
2706
|
type: i0.Injectable
|
|
2704
2707
|
}], () => [{ type: i1$3__namespace.ToastrService }], null); })();
|
|
2705
2708
|
|
|
2706
|
-
const APP_LOCALE_ROOT_PATH = '
|
|
2709
|
+
const APP_LOCALE_ROOT_PATH = 'resources/i18n';
|
|
2707
2710
|
const RTL_LANGUAGE_CODES = ['ar', 'ar-001', 'ar-ae', 'ar-bh', 'ar-dz', 'ar-eg', 'ar-iq', 'ar-jo', 'ar-kw', 'ar-lb', 'ar-ly',
|
|
2708
2711
|
'ar-ma', 'ar-om', 'ar-qa', 'ar-sa', 'ar-sd', 'ar-sy', 'ar-tn', 'ar-ye', 'arc', 'bcc', 'bqi', 'ckb', 'dv', 'fa', 'glk',
|
|
2709
2712
|
'he', 'ku', 'mzn', 'pnb', 'ps', 'sd', 'ug', 'ur', 'yi'];
|
|
@@ -2774,7 +2777,8 @@
|
|
|
2774
2777
|
});
|
|
2775
2778
|
}
|
|
2776
2779
|
loadAppLocaleBundle() {
|
|
2777
|
-
|
|
2780
|
+
const basePath = i1._WM_APP_PROJECT.isPreview ? '' : i1._WM_APP_PROJECT.cdnUrl;
|
|
2781
|
+
this.loadResource(basePath + `${APP_LOCALE_ROOT_PATH}/${this.selectedLocale}.json`)
|
|
2778
2782
|
.then(bundle => {
|
|
2779
2783
|
this.extendMessages(bundle.messages);
|
|
2780
2784
|
this.extendPrefabMessages(bundle);
|
|
@@ -3878,6 +3882,11 @@
|
|
|
3878
3882
|
intercept(request, next) {
|
|
3879
3883
|
let modifiedReq;
|
|
3880
3884
|
let modifiedResp;
|
|
3885
|
+
let isServicesUrl = request.url.indexOf("services/") !== -1;
|
|
3886
|
+
if (isServicesUrl) {
|
|
3887
|
+
let apiUrl = i1._WM_APP_PROJECT.apiUrl + request.url;
|
|
3888
|
+
request = request.clone({ url: apiUrl });
|
|
3889
|
+
}
|
|
3881
3890
|
if (i4.appManager && i4.appManager.appOnBeforeServiceCall) {
|
|
3882
3891
|
// Convert the angular HttpRequest to wm HttpRequest
|
|
3883
3892
|
const req = this.wmHttpRequest.angularToWmRequest(request);
|
|
@@ -4556,12 +4565,15 @@
|
|
|
4556
4565
|
|
|
4557
4566
|
const initializeProjectDetails = () => {
|
|
4558
4567
|
let cdnUrl = document.querySelector('[name="deployUrl"]') && document.querySelector('[name="deployUrl"]').getAttribute('content');
|
|
4568
|
+
i1._WM_APP_PROJECT.isPreview = cdnUrl ? false : true;
|
|
4569
|
+
let apiUrl = document.querySelector('[name="apiUrl"]') && document.querySelector('[name="apiUrl"]').getAttribute('content');
|
|
4559
4570
|
//for preview
|
|
4560
4571
|
if (!cdnUrl) {
|
|
4561
4572
|
cdnUrl = document.querySelector('[name="cdnUrl"]') && document.querySelector('[name="cdnUrl"]').getAttribute('content');
|
|
4562
4573
|
}
|
|
4563
4574
|
i1._WM_APP_PROJECT.id = i1.hasCordova() ? _WM_APP_PROPERTIES.displayName : location.href.split('/')[3];
|
|
4564
4575
|
// Integration with third party apps like in SSPA/WebComponents, this meta tag with cdnUrl will not be there then default it to ng-bundle/
|
|
4576
|
+
i1._WM_APP_PROJECT.apiUrl = apiUrl || './';
|
|
4565
4577
|
i1._WM_APP_PROJECT.cdnUrl = cdnUrl || 'ng-bundle/';
|
|
4566
4578
|
i1._WM_APP_PROJECT.ngDest = 'ng-bundle/';
|
|
4567
4579
|
try {
|
|
@@ -106,12 +106,15 @@ import * as i1 from "@wm/mobile/runtime";
|
|
|
106
106
|
import * as i2 from "@wm/core";
|
|
107
107
|
const initializeProjectDetails = () => {
|
|
108
108
|
let cdnUrl = document.querySelector('[name="deployUrl"]') && document.querySelector('[name="deployUrl"]').getAttribute('content');
|
|
109
|
+
_WM_APP_PROJECT.isPreview = cdnUrl ? false : true;
|
|
110
|
+
let apiUrl = document.querySelector('[name="apiUrl"]') && document.querySelector('[name="apiUrl"]').getAttribute('content');
|
|
109
111
|
//for preview
|
|
110
112
|
if (!cdnUrl) {
|
|
111
113
|
cdnUrl = document.querySelector('[name="cdnUrl"]') && document.querySelector('[name="cdnUrl"]').getAttribute('content');
|
|
112
114
|
}
|
|
113
115
|
_WM_APP_PROJECT.id = hasCordova() ? _WM_APP_PROPERTIES.displayName : location.href.split('/')[3];
|
|
114
116
|
// Integration with third party apps like in SSPA/WebComponents, this meta tag with cdnUrl will not be there then default it to ng-bundle/
|
|
117
|
+
_WM_APP_PROJECT.apiUrl = apiUrl || './';
|
|
115
118
|
_WM_APP_PROJECT.cdnUrl = cdnUrl || 'ng-bundle/';
|
|
116
119
|
_WM_APP_PROJECT.ngDest = 'ng-bundle/';
|
|
117
120
|
try {
|
|
@@ -641,4 +644,4 @@ export const WM_MODULES_FOR_ROOT = [
|
|
|
641
644
|
HttpServiceModule.forRoot(),
|
|
642
645
|
RuntimeBaseModule.forRoot()
|
|
643
646
|
];
|
|
644
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS1iYXNlLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3J1bnRpbWUtYmFzZS9zcmMvcnVudGltZS1iYXNlLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsZUFBZSxFQUFFLFNBQVMsRUFBdUIsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RCxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFlBQVksQ0FBQztBQUUxQyxPQUFPLEVBQ0gsZUFBZSxFQUNmLFVBQVUsRUFDVixtQkFBbUIsRUFDbkIseUJBQXlCLEVBQ3pCLHNCQUFzQixFQUN0QixzQkFBc0IsRUFDdEIsR0FBRyxFQUNILFdBQVcsRUFDWCxVQUFVLEVBQ1YsMkJBQTJCLEVBQzNCLFFBQVEsRUFDUixRQUFRLEVBQ1IsTUFBTSxFQUNOLE1BQU0sRUFDTixRQUFRLEVBQ1IsVUFBVSxFQUNiLE1BQU0sVUFBVSxDQUFDO0FBQ2xCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1Q0FB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QjtRQUVuQixhQUFhO1FBQ2IsZ0JBQWdCO1FBQ2hCLFVBQVU7UUFDVixZQUFZO1FBQ1osYUFBYTtRQUViLFdBQVc7UUFDWCxjQUFjO1FBQ2QsV0FBVztRQUNYLGFBQWE7UUFFYixVQUFVO1FBQ1YsWUFBWTtRQUNaLFlBQVk7UUFDWixlQUFlO1FBQ2YsZ0JBQWdCO1FBQ2hCLFlBQVk7UUFDWixZQUFZO0FBeUpoQixNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRztJQUMvQixrQkFBa0IsQ0FBQyxPQUFPLEVBQUU7SUFDNUIsbUJBQW1CLENBQUMsT0FBTyxFQUFFO0lBQzdCLFVBQVUsQ0FBQyxPQUFPLEVBQUU7SUFDcEIsY0FBYyxDQUFDLE9BQU8sRUFBRTtJQUN4QixXQUFXLENBQUMsT0FBTyxFQUFFO0lBQ3JCLGVBQWUsQ0FBQyxPQUFPLEVBQUU7SUFDekIsaUJBQWlCLENBQUMsT0FBTyxFQUFFO0lBQzNCLGlCQUFpQixDQUFDLE9BQU8sRUFBRTtDQUM5QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBUFBfSU5JVElBTElaRVIsIExPQ0FMRV9JRCwgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSwgRGF0ZVBpcGUsIERlY2ltYWxQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEhUVFBfSU5URVJDRVBUT1JTLCBIdHRwQ2xpZW50TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgybVTaGFyZWRTdHlsZXNIb3N0IH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQge8m1RG9tUmVuZGVyZXJGYWN0b3J5Mn0gZnJvbSBcIkBhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXJcIjtcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBUb2FzdHJNb2R1bGUgfSBmcm9tICduZ3gtdG9hc3RyJztcblxuaW1wb3J0IHtcbiAgICBfV01fQVBQX1BST0pFQ1QsXG4gICAgJHBhcnNlRXhwcixcbiAgICBBYnN0cmFjdEkxOG5TZXJ2aWNlLFxuICAgIEFic3RyYWN0TmF2aWdhdGlvblNlcnZpY2UsXG4gICAgQWJzdHJhY3RTcGlubmVyU2VydmljZSxcbiAgICBBYnN0cmFjdFRvYXN0ZXJTZXJ2aWNlLFxuICAgIEFwcCxcbiAgICBBcHBEZWZhdWx0cyxcbiAgICBDb3JlTW9kdWxlLFxuICAgIER5bmFtaWNDb21wb25lbnRSZWZQcm92aWRlcixcbiAgICBpc09iamVjdCxcbiAgICBpc0lwaG9uZSxcbiAgICBpc0lwb2QsXG4gICAgaXNJcGFkLFxuICAgIFZpZXdwb3J0LFxuICAgIGhhc0NvcmRvdmFcbn0gZnJvbSAnQHdtL2NvcmUnO1xuaW1wb3J0IHsgV21Db21wb25lbnRzTW9kdWxlIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvYmFzZSc7XG5pbXBvcnQgeyBEaWFsb2dNb2R1bGUgfSBmcm9tICdAd20vY29tcG9uZW50cy9kaWFsb2dzJztcbmltcG9ydCB7IENvbmZpcm1EaWFsb2dNb2R1bGUgfSBmcm9tICdAd20vY29tcG9uZW50cy9kaWFsb2dzL2NvbmZpcm0tZGlhbG9nJztcbmltcG9ydCB7IERlc2lnbkRpYWxvZ01vZHVsZSB9IGZyb20gJ0B3bS9jb21wb25lbnRzL2RpYWxvZ3MvZGVzaWduLWRpYWxvZyc7XG5pbXBvcnQgeyBQcmVmYWJNb2R1bGUgfSBmcm9tICdAd20vY29tcG9uZW50cy9wcmVmYWInO1xuaW1wb3J0IHsgTW9iaWxlUnVudGltZU1vZHVsZSB9IGZyb20gJ0B3bS9tb2JpbGUvcnVudGltZSc7XG5pbXBvcnQgeyBTZWN1cml0eU1vZHVsZSB9IGZyb20gJ0B3bS9zZWN1cml0eSc7XG5pbXBvcnQgeyBIdHRwU2VydmljZU1vZHVsZSB9IGZyb20gJ0B3bS9odHRwJztcbmltcG9ydCB7IFZhcmlhYmxlc01vZHVsZSB9IGZyb20gJ0B3bS92YXJpYWJsZXMnO1xuaW1wb3J0IHsgT0F1dGhNb2R1bGUgfSBmcm9tICdAd20vb0F1dGgnO1xuXG5pbXBvcnQgeyBBY2Nlc3Nyb2xlc0RpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9hY2Nlc3Nyb2xlcy5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQXBwU3Bpbm5lckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9hcHAtc3Bpbm5lci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ3VzdG9tVG9hc3RlckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jdXN0b20tdG9hc3Rlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgRW1wdHlQYWdlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2VtcHR5LWNvbXBvbmVudC9lbXB0eS1wYWdlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQcmVmYWJEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvcHJlZmFiLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBBcHBSZWYgfSBmcm9tICcuL3NlcnZpY2VzL2FwcC5zZXJ2aWNlJztcbmltcG9ydCB7IFRvYXN0ZXJTZXJ2aWNlSW1wbCB9IGZyb20gJy4vc2VydmljZXMvdG9hc3Rlci5zZXJ2aWNlJztcbmltcG9ydCB7IEkxOG5TZXJ2aWNlSW1wbCB9IGZyb20gJy4vc2VydmljZXMvaTE4bi5zZXJ2aWNlJztcbmltcG9ydCB7IFNwaW5uZXJTZXJ2aWNlSW1wbCB9IGZyb20gJy4vc2VydmljZXMvc3Bpbm5lci5zZXJ2aWNlJztcbmltcG9ydCB7IE5hdmlnYXRpb25TZXJ2aWNlSW1wbCB9IGZyb20gJy4vc2VydmljZXMvbmF2aWdhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IFBpcGVTZXJ2aWNlIH0gZnJvbSBcIi4vc2VydmljZXMvcGlwZS5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBBcHBEZWZhdWx0c1NlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2FwcC1kZWZhdWx0cy5zZXJ2aWNlJztcbmltcG9ydCB7IEFwcE1hbmFnZXJTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9hcHAubWFuYWdlci5zZXJ2aWNlJztcbmltcG9ydCB7IFByZWZhYk1hbmFnZXJTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9wcmVmYWItbWFuYWdlci5zZXJ2aWNlJztcbmltcG9ydCB7IEF1dGhHdWFyZCB9IGZyb20gJy4vZ3VhcmRzL2F1dGguZ3VhcmQnO1xuaW1wb3J0IHsgUm9sZUd1YXJkIH0gZnJvbSAnLi9ndWFyZHMvcm9sZS5ndWFyZCc7XG5pbXBvcnQgeyBQYWdlTm90Rm91bmRHdWFyZCB9IGZyb20gJy4vZ3VhcmRzL3BhZ2Utbm90LWZvdW5kLmd1YXJkJztcbmltcG9ydCB7IEFwcEpTUmVzb2x2ZSB9IGZyb20gJy4vcmVzb2x2ZXMvYXBwLWpzLnJlc29sdmUnO1xuaW1wb3J0IHsgQXBwRXh0ZW5zaW9uSlNSZXNvbHZlIH0gZnJvbSAnLi9yZXNvbHZlcy9hcHAtZXh0ZW5zaW9uLnJlc29sdmUnO1xuaW1wb3J0IHsgSTE4blJlc29sdmUgfSBmcm9tICcuL3Jlc29sdmVzL2kxOG4ucmVzb2x2ZSc7XG5pbXBvcnQgeyBBcHBDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvYXBwLWNvbXBvbmVudC9hcHAuY29tcG9uZW50JztcbmltcG9ydCB7IEh0dHBDYWxsSW50ZXJjZXB0b3IgfSBmcm9tICcuL3NlcnZpY2VzL2h0dHAtaW50ZXJjZXB0b3Iuc2VydmljZXMnO1xuaW1wb3J0IHsgUHJlZmFiUHJldmlld0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9wcmVmYWItcHJldmlldy5jb21wb25lbnQnO1xuaW1wb3J0IHsgRHluYW1pY0NvbXBvbmVudFJlZlByb3ZpZGVyU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvZHluYW1pYy1jb21wb25lbnQtcmVmLXByb3ZpZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2FuRGVhY3RpdmF0ZVBhZ2VHdWFyZCB9IGZyb20gJy4vZ3VhcmRzL2Nhbi1kZWFjdGl2YXRlLXBhZ2UuZ3VhcmQnO1xuaW1wb3J0IHsgTUFYX0NBQ0hFX0FHRSwgTUFYX0NBQ0hFX1NJWkUgfSBmcm9tICcuL3V0aWwvd20tcm91dGUtcmV1c2Utc3RyYXRlZ3knO1xuXG4vL2FuZ3VsYXIgb3ZlcnJpZGVzXG5pbXBvcnQgeyBXTURvbVNoYXJlZFN0eWxlc0hvc3QgfSBmcm9tIFwiLi9vdmVycmlkZXMvd21fc2hhcmVkX3N0eWxlc19ob3N0XCI7XG5pbXBvcnQgeyBXTURvbVJlbmRlcmVyRmFjdG9yeTIgfSBmcm9tIFwiLi9vdmVycmlkZXMvd21fZG9tX3JlbmRlcmVyXCI7XG5pbXBvcnQge1BhZ2VNb2R1bGV9IGZyb20gXCJAd20vY29tcG9uZW50cy9wYWdlXCI7XG5pbXBvcnQge0Zvb3Rlck1vZHVsZX0gZnJvbSBcIkB3bS9jb21wb25lbnRzL3BhZ2UvZm9vdGVyXCI7XG5pbXBvcnQge0hlYWRlck1vZHVsZX0gZnJvbSBcIkB3bS9jb21wb25lbnRzL3BhZ2UvaGVhZGVyXCI7XG5pbXBvcnQge0xlZnRQYW5lbE1vZHVsZX0gZnJvbSBcIkB3bS9jb21wb25lbnRzL3BhZ2UvbGVmdC1wYW5lbFwiO1xuaW1wb3J0IHtSaWdodFBhbmVsTW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvcGFnZS9yaWdodC1wYW5lbFwiO1xuaW1wb3J0IHtUb3BOYXZNb2R1bGV9IGZyb20gXCJAd20vY29tcG9uZW50cy9wYWdlL3RvcC1uYXZcIjtcbmltcG9ydCB7QmFzaWNNb2R1bGV9IGZyb20gXCJAd20vY29tcG9uZW50cy9iYXNpY1wiO1xuaW1wb3J0IHtQcm9ncmVzc01vZHVsZX0gZnJvbSBcIkB3bS9jb21wb25lbnRzL2Jhc2ljL3Byb2dyZXNzXCI7XG5pbXBvcnQge1JpY2hUZXh0RWRpdG9yTW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvYmFzaWMvcmljaC10ZXh0LWVkaXRvclwiO1xuaW1wb3J0IHtTZWFyY2hNb2R1bGV9IGZyb20gXCJAd20vY29tcG9uZW50cy9iYXNpYy9zZWFyY2hcIjtcbmltcG9ydCB7VHJlZU1vZHVsZX0gZnJvbSBcIkB3bS9jb21wb25lbnRzL2Jhc2ljL3RyZWVcIjtcbmltcG9ydCB7Q2FsZW5kYXJNb2R1bGV9IGZyb20gXCJAd20vY29tcG9uZW50cy9pbnB1dC9jYWxlbmRhclwiO1xuaW1wb3J0IHtDaGlwc01vZHVsZX0gZnJvbSBcIkB3bS9jb21wb25lbnRzL2lucHV0L2NoaXBzXCI7XG5pbXBvcnQge0NvbG9yUGlja2VyTW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvaW5wdXQvY29sb3ItcGlja2VyXCI7XG5pbXBvcnQge0N1cnJlbmN5TW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvaW5wdXQvY3VycmVuY3lcIjtcbmltcG9ydCB7RXBvY2hNb2R1bGV9IGZyb20gXCJAd20vY29tcG9uZW50cy9pbnB1dC9lcG9jaFwiO1xuaW1wb3J0IHtGaWxlVXBsb2FkTW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvaW5wdXQvZmlsZS11cGxvYWRcIjtcbmltcG9ydCB7SW5wdXRNb2R1bGV9IGZyb20gXCJAd20vY29tcG9uZW50cy9pbnB1dFwiO1xuaW1wb3J0IHtSYXRpbmdNb2R1bGV9IGZyb20gXCJAd20vY29tcG9uZW50cy9pbnB1dC9yYXRpbmdcIjtcbmltcG9ydCB7U2xpZGVyTW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvaW5wdXQvc2xpZGVyXCI7XG5pbXBvcnQge0NhcmRNb2R1bGV9IGZyb20gXCJAd20vY29tcG9uZW50cy9kYXRhL2NhcmRcIjtcbmltcG9ydCB7Rm9ybU1vZHVsZX0gZnJvbSBcIkB3bS9jb21wb25lbnRzL2RhdGEvZm9ybVwiO1xuaW1wb3J0IHtMaXN0TW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvZGF0YS9saXN0XCI7XG5pbXBvcnQge0xpdmVUYWJsZU1vZHVsZX0gZnJvbSBcIkB3bS9jb21wb25lbnRzL2RhdGEvbGl2ZS10YWJsZVwiO1xuaW1wb3J0IHtQYWdpbmF0aW9uTW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvZGF0YS9wYWdpbmF0aW9uXCI7XG5pbXBvcnQge1RhYmxlTW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvZGF0YS90YWJsZVwiO1xuaW1wb3J0IHtDaGFydE1vZHVsZX0gZnJvbSBcIkB3bS9jb21wb25lbnRzL2NoYXJ0XCI7XG5pbXBvcnQge0FjY29yZGlvbk1vZHVsZX0gZnJvbSBcIkB3bS9jb21wb25lbnRzL2NvbnRhaW5lcnMvYWNjb3JkaW9uXCI7XG5pbXBvcnQge0xpbmVhckxheW91dE1vZHVsZX0gZnJvbSBcIkB3bS9jb21wb25lbnRzL2NvbnRhaW5lcnMvbGluZWFyLWxheW91dFwiO1xuaW1wb3J0IHtMYXlvdXRHcmlkTW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvY29udGFpbmVycy9sYXlvdXQtZ3JpZFwiO1xuaW1wb3J0IHtQYW5lbE1vZHVsZX0gZnJvbSBcIkB3bS9jb21wb25lbnRzL2NvbnRhaW5lcnMvcGFuZWxcIjtcbmltcG9ydCB7VGFic01vZHVsZX0gZnJvbSBcIkB3bS9jb21wb25lbnRzL2NvbnRhaW5lcnMvdGFic1wiO1xuaW1wb3J0IHtUaWxlTW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvY29udGFpbmVycy90aWxlXCI7XG5pbXBvcnQge1dpemFyZE1vZHVsZX0gZnJvbSBcIkB3bS9jb21wb25lbnRzL2NvbnRhaW5lcnMvd2l6YXJkXCI7XG5pbXBvcnQge0FsZXJ0RGlhbG9nTW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvZGlhbG9ncy9hbGVydC1kaWFsb2dcIjtcbmltcG9ydCB7SWZyYW1lRGlhbG9nTW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvZGlhbG9ncy9pZnJhbWUtZGlhbG9nXCI7XG5pbXBvcnQge0xvZ2luRGlhbG9nTW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvZGlhbG9ncy9sb2dpbi1kaWFsb2dcIjtcbmltcG9ydCB7UGFydGlhbERpYWxvZ01vZHVsZX0gZnJvbSBcIkB3bS9jb21wb25lbnRzL2RpYWxvZ3MvcGFydGlhbC1kaWFsb2dcIjtcbmltcG9ydCB7QnJlYWRjcnVtYk1vZHVsZX0gZnJvbSBcIkB3bS9jb21wb25lbnRzL25hdmlnYXRpb24vYnJlYWRjcnVtYlwiO1xuaW1wb3J0IHtNZW51TW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvbmF2aWdhdGlvbi9tZW51XCI7XG5pbXBvcnQge05hdmJhck1vZHVsZX0gZnJvbSBcIkB3bS9jb21wb25lbnRzL25hdmlnYXRpb24vbmF2YmFyXCI7XG5pbXBvcnQge1BvcG92ZXJNb2R1bGV9IGZyb20gXCJAd20vY29tcG9uZW50cy9uYXZpZ2F0aW9uL3BvcG92ZXJcIjtcbmltcG9ydCB7Q2Fyb3VzZWxNb2R1bGV9IGZyb20gXCJAd20vY29tcG9uZW50cy9hZHZhbmNlZC9jYXJvdXNlbFwiO1xuaW1wb3J0IHtMb2dpbk1vZHVsZX0gZnJvbSBcIkB3bS9jb21wb25lbnRzL2FkdmFuY2VkL2xvZ2luXCI7XG5pbXBvcnQge01hcnF1ZWVNb2R1bGV9IGZyb20gXCJAd20vY29tcG9uZW50cy9hZHZhbmNlZC9tYXJxdWVlXCI7XG5pbXBvcnQge0JzRGF0ZXBpY2tlck1vZHVsZX0gZnJvbSBcIm5neC1ib290c3RyYXAvZGF0ZXBpY2tlclwiO1xuaW1wb3J0IHtUaW1lcGlja2VyTW9kdWxlIGFzIG5neFRpbWVwaWNrZXJNb2R1bGV9IGZyb20gXCJuZ3gtYm9vdHN0cmFwL3RpbWVwaWNrZXJcIjtcbmltcG9ydCB7QnNEcm9wZG93bk1vZHVsZX0gZnJvbSBcIm5neC1ib290c3RyYXAvZHJvcGRvd25cIjtcbmltcG9ydCB7UGFnaW5hdGlvbk1vZHVsZSBhcyBuZ3hQYWdpbmF0aW9uTW9kdWxlfSBmcm9tIFwibmd4LWJvb3RzdHJhcC9wYWdpbmF0aW9uXCI7XG5pbXBvcnQge1R5cGVhaGVhZE1vZHVsZX0gZnJvbSBcIm5neC1ib290c3RyYXAvdHlwZWFoZWFkXCI7XG5pbXBvcnQge1Byb2dyZXNzYmFyTW9kdWxlfSBmcm9tIFwibmd4LWJvb3RzdHJhcC9wcm9ncmVzc2JhclwiO1xuaW1wb3J0IHtDYXJvdXNlbE1vZHVsZSBhcyBuZ3hDYXJvdXNlbE1vZHVsZX0gZnJvbSBcIm5neC1ib290c3RyYXAvY2Fyb3VzZWxcIjtcbmltcG9ydCB7UG9wb3Zlck1vZHVsZSBhcyBuZ3hQb3BvdmVyTW9kdWxlfSBmcm9tIFwibmd4LWJvb3RzdHJhcC9wb3BvdmVyXCI7XG5pbXBvcnQge05nQ2lyY2xlUHJvZ3Jlc3NNb2R1bGV9IGZyb20gXCJuZy1jaXJjbGUtcHJvZ3Jlc3NcIjtcbmltcG9ydCB7VG9vbHRpcE1vZHVsZX0gZnJvbSBcIm5neC1ib290c3RyYXAvdG9vbHRpcFwiO1xuXG5kZWNsYXJlIGNvbnN0IF9XTV9BUFBfUFJPUEVSVElFUztcblxuY29uc3QgaW5pdGlhbGl6ZVByb2plY3REZXRhaWxzID0gKCkgPT4ge1xuICAgIGxldCBjZG5VcmwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdbbmFtZT1cImRlcGxveVVybFwiXScpICYmIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tuYW1lPVwiZGVwbG95VXJsXCJdJykuZ2V0QXR0cmlidXRlKCdjb250ZW50Jyk7XG4gICAgLy9mb3IgcHJldmlld1xuICAgIGlmKCFjZG5VcmwpIHtcbiAgICAgICAgY2RuVXJsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignW25hbWU9XCJjZG5VcmxcIl0nKSAmJiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdbbmFtZT1cImNkblVybFwiXScpLmdldEF0dHJpYnV0ZSgnY29udGVudCcpO1xuICAgIH1cbiAgICBfV01fQVBQX1BST0pFQ1QuaWQgPSBoYXNDb3Jkb3ZhKCkgPyBfV01fQVBQX1BST1BFUlRJRVMuZGlzcGxheU5hbWUgOiBsb2NhdGlvbi5ocmVmLnNwbGl0KCcvJylbM107XG4gICAgLy8gSW50ZWdyYXRpb24gd2l0aCB0aGlyZCBwYXJ0eSBhcHBzIGxpa2UgaW4gU1NQQS9XZWJDb21wb25lbnRzLCB0aGlzIG1ldGEgdGFnIHdpdGggY2RuVXJsIHdpbGwgbm90IGJlIHRoZXJlIHRoZW4gZGVmYXVsdCBpdCB0byBuZy1idW5kbGUvXG4gICAgX1dNX0FQUF9QUk9KRUNULmNkblVybCA9IGNkblVybCB8fCAnbmctYnVuZGxlLyc7XG4gICAgX1dNX0FQUF9QUk9KRUNULm5nRGVzdCA9ICduZy1idW5kbGUvJztcbiAgICB0cnkge1xuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgX193ZWJwYWNrX3JlcXVpcmVfXy5wID0gX193ZWJwYWNrX3B1YmxpY19wYXRoX18gPSBjZG5Vcmw7XG4gICAgfSBjYXRjaChlKSB7XG4gICAgICAgIC8vZm9yIGFwcCBwcmV2aWV3IHRoZXJlIGlzIG5vIHdlYnBhY2suIERvbid0IGRvIGFueXRoaW5nLlxuICAgIH1cbn07XG5cbmVudW0gT1Mge1xuICAgIElPUyA9ICdpb3MnLFxuICAgIEFORFJPSUQgPSAnYW5kcm9pZCdcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNldHRpbmdQcm92aWRlcihrZXk6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBhbnkpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBwcm92aWRlOiBrZXksXG4gICAgICAgIHVzZVZhbHVlOiBkZWZhdWx0VmFsdWVcbiAgICB9O1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIEluaXRpYWxpemVBcHAoSTE4blNlcnZpY2UsIEFwcEpTUmVzb2x2ZSkge1xuICAgIHJldHVybiBhc3luYyAoKSA9PiB7XG4gICAgICAgIGluaXRpYWxpemVQcm9qZWN0RGV0YWlscygpO1xuICAgICAgICBhd2FpdCBBcHBKU1Jlc29sdmUucmVzb2x2ZSgpO1xuICAgICAgICByZXR1cm4gSTE4blNlcnZpY2UubG9hZERlZmF1bHRMb2NhbGUoKTtcbiAgICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0QW5ndWxhckxvY2FsZShJMThuU2VydmljZSkge1xuICAgIGluaXRpYWxpemVQcm9qZWN0RGV0YWlscygpO1xuICAgIHJldHVybiBJMThuU2VydmljZS5kZWR1Y2VBcHBMb2NhbGUoKTtcbn1cblxuY29uc3QgZGVmaW5pdGlvbnMgPSBbXG4gICAgQWNjZXNzcm9sZXNEaXJlY3RpdmUsXG4gICAgQXBwU3Bpbm5lckNvbXBvbmVudCxcbiAgICBDdXN0b21Ub2FzdGVyQ29tcG9uZW50LFxuICAgIFByZWZhYkRpcmVjdGl2ZSxcbiAgICBBcHBDb21wb25lbnQsXG4gICAgUHJlZmFiUHJldmlld0NvbXBvbmVudCxcbiAgICBFbXB0eVBhZ2VDb21wb25lbnRcbl07XG5cbmV4cG9ydCBjb25zdCBSRVFVSVJFRF9NT0RVTEVTX0ZPUl9EWU5BTUlDX0NPTVBPTkVOVFMgPSBbXG4gICAgQ29uZmlybURpYWxvZ01vZHVsZSxcbiAgICBEZXNpZ25EaWFsb2dNb2R1bGUsXG4gICAgRGlhbG9nTW9kdWxlLFxuXG4gICAgLy8gTkdYIEJvb3RzdHJhcFxuICAgIEJzRGF0ZXBpY2tlck1vZHVsZSxcbiAgICBuZ3hUaW1lcGlja2VyTW9kdWxlLFxuICAgIEJzRHJvcGRvd25Nb2R1bGUsXG4gICAgbmd4UGFnaW5hdGlvbk1vZHVsZSxcbiAgICBUeXBlYWhlYWRNb2R1bGUsXG4gICAgUHJvZ3Jlc3NiYXJNb2R1bGUsXG4gICAgbmd4Q2Fyb3VzZWxNb2R1bGUsXG4gICAgbmd4UG9wb3Zlck1vZHVsZSxcbiAgICBOZ0NpcmNsZVByb2dyZXNzTW9kdWxlLFxuICAgIFRvb2x0aXBNb2R1bGUsXG5cbiAgICAvLyBCYXNpYyB3aWRnZXRzXG4gICAgQmFzaWNNb2R1bGUsXG4gICAgUHJvZ3Jlc3NNb2R1bGUsXG4gICAgUmljaFRleHRFZGl0b3JNb2R1bGUsXG4gICAgU2VhcmNoTW9kdWxlLFxuICAgIFRyZWVNb2R1bGUsXG5cbiAgICAvLyBJbnB1dFxuICAgIENhbGVuZGFyTW9kdWxlLFxuICAgIENoaXBzTW9kdWxlLFxuICAgIENvbG9yUGlja2VyTW9kdWxlLFxuICAgIEN1cnJlbmN5TW9kdWxlLFxuICAgIEVwb2NoTW9kdWxlLFxuICAgIEZpbGVVcGxvYWRNb2R1bGUsXG4gICAgSW5wdXRNb2R1bGUsXG4gICAgUmF0aW5nTW9kdWxlLFxuICAgIFNsaWRlck1vZHVsZSxcblxuICAgIC8vIERhdGFcbiAgICBDYXJkTW9kdWxlLFxuICAgIEZvcm1Nb2R1bGUsXG4gICAgTGlzdE1vZHVsZSxcbiAgICBMaXZlVGFibGVNb2R1bGUsXG4gICAgUGFnaW5hdGlvbk1vZHVsZSxcbiAgICBUYWJsZU1vZHVsZSxcblxuICAgIC8vIGNoYXJ0XG4gICAgQ2hhcnRNb2R1bGUsXG5cbiAgICAvLyBjb250YWluZXIgbW9kdWxlc1xuICAgIEFjY29yZGlvbk1vZHVsZSxcbiAgICBMaW5lYXJMYXlvdXRNb2R1bGUsXG4gICAgTGF5b3V0R3JpZE1vZHVsZSxcbiAgICBQYW5lbE1vZHVsZSxcbiAgICBUYWJzTW9kdWxlLFxuICAgIFRpbGVNb2R1bGUsXG4gICAgV2l6YXJkTW9kdWxlLFxuXG4gICAgLy8gZGlhbG9nc1xuICAgIEFsZXJ0RGlhbG9nTW9kdWxlLFxuICAgIElmcmFtZURpYWxvZ01vZHVsZSxcbiAgICBMb2dpbkRpYWxvZ01vZHVsZSxcbiAgICBQYXJ0aWFsRGlhbG9nTW9kdWxlLFxuXG4gICAgLy8gbmF2aWdhdGlvblxuICAgIEJyZWFkY3J1bWJNb2R1bGUsXG4gICAgTWVudU1vZHVsZSxcbiAgICBOYXZiYXJNb2R1bGUsXG4gICAgUG9wb3Zlck1vZHVsZSxcblxuICAgIC8vIEFkdmFuY2VkXG4gICAgQ2Fyb3VzZWxNb2R1bGUsXG4gICAgTG9naW5Nb2R1bGUsXG4gICAgTWFycXVlZU1vZHVsZSxcblxuICAgIFBhZ2VNb2R1bGUsXG4gICAgRm9vdGVyTW9kdWxlLFxuICAgIEhlYWRlck1vZHVsZSxcbiAgICBMZWZ0UGFuZWxNb2R1bGUsXG4gICAgUmlnaHRQYW5lbE1vZHVsZSxcbiAgICBUb3BOYXZNb2R1bGUsXG4gICAgUHJlZmFiTW9kdWxlXG5dO1xuXG4vLyBzZXR0aW5nIHBhcnNlRXhwciBhcyBleHByRXZhbHVhdG9yIGZvciBzd2lwZUFuaW1hdGlvblxuKCQuZm4gYXMgYW55KS5zd2lwZUFuaW1hdGlvbi5leHByZXNzaW9uRXZhbHVhdG9yID0gJHBhcnNlRXhwcjtcblxuQE5nTW9kdWxlKHtcbiAgICBkZWNsYXJhdGlvbnM6IFsgLi4uZGVmaW5pdGlvbnMgXSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgUm91dGVyTW9kdWxlLFxuICAgICAgICBIdHRwQ2xpZW50TW9kdWxlLFxuICAgICAgICBGb3Jtc01vZHVsZSxcbiAgICAgICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcblxuICAgICAgICBUb2FzdHJNb2R1bGUsXG4gICAgICAgIFdtQ29tcG9uZW50c01vZHVsZSxcbiAgICAgICAgTW9iaWxlUnVudGltZU1vZHVsZSxcbiAgICAgICAgQ29yZU1vZHVsZSxcbiAgICAgICAgU2VjdXJpdHlNb2R1bGUsXG4gICAgICAgIE9BdXRoTW9kdWxlLFxuICAgICAgICBWYXJpYWJsZXNNb2R1bGUsXG4gICAgICAgIEh0dHBTZXJ2aWNlTW9kdWxlLFxuICAgICAgICAuLi5SRVFVSVJFRF9NT0RVTEVTX0ZPUl9EWU5BTUlDX0NPTVBPTkVOVFNcbiAgICBdLFxuICAgIGV4cG9ydHM6IFtcbiAgICAgICAgRm9ybXNNb2R1bGUsXG4gICAgICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG5cbiAgICAgICAgLi4uZGVmaW5pdGlvbnMsXG5cbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBSb3V0ZXJNb2R1bGUsXG4gICAgICAgIEh0dHBDbGllbnRNb2R1bGUsXG5cbiAgICAgICAgVG9hc3RyTW9kdWxlLFxuICAgICAgICBXbUNvbXBvbmVudHNNb2R1bGUsXG4gICAgICAgIE1vYmlsZVJ1bnRpbWVNb2R1bGUsXG4gICAgICAgIENvcmVNb2R1bGUsXG4gICAgICAgIFNlY3VyaXR5TW9kdWxlLFxuICAgICAgICBPQXV0aE1vZHVsZSxcbiAgICAgICAgVmFyaWFibGVzTW9kdWxlLFxuICAgICAgICBIdHRwU2VydmljZU1vZHVsZSxcbiAgICAgICAgLi4uUkVRVUlSRURfTU9EVUxFU19GT1JfRFlOQU1JQ19DT01QT05FTlRTXG4gICAgXSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge3Byb3ZpZGU6IMm1U2hhcmVkU3R5bGVzSG9zdCwgdXNlQ2xhc3M6IFdNRG9tU2hhcmVkU3R5bGVzSG9zdH0sXG4gICAgICAgIHtwcm92aWRlOiDJtURvbVJlbmRlcmVyRmFjdG9yeTIsIHVzZUNsYXNzOiBXTURvbVJlbmRlcmVyRmFjdG9yeTJ9XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBSdW50aW1lQmFzZU1vZHVsZSB7XG5cbiAgICAvLyB0aGlzIHBvbHlmaWxsIGlzIHRvIGFkZCBzdXBwb3J0IGZvciBDdXN0b21FdmVudCBpbiBJRTExXG4gICAgc3RhdGljIGFkZEN1c3RvbUV2ZW50UG9seWZpbGwoKSB7XG4gICAgICAgICAgICBpZiAoIHR5cGVvZiB3aW5kb3dbJ0N1c3RvbUV2ZW50J10gPT09ICdmdW5jdGlvbicgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gQWRkaW5nIHR5cGUgYXMgYW55IHRvIGF2b2lkIGVycm9yIFRTMjMyMlxuICAgICAgICAgICAgY29uc3QgQ3VzdG9tRXZlbnQ6IGFueSA9IChldmVudCwgcGFyYW1zKSA9PiB7XG4gICAgICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zIHx8IHsgYnViYmxlczogZmFsc2UsIGNhbmNlbGFibGU6IGZhbHNlLCBkZXRhaWw6IG51bGwgfTtcbiAgICAgICAgICAgICAgICBjb25zdCBldnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCggJ0N1c3RvbUV2ZW50JyApO1xuICAgICAgICAgICAgICAgIGV2dC5pbml0Q3VzdG9tRXZlbnQoIGV2ZW50LCBwYXJhbXMuYnViYmxlcywgcGFyYW1zLmNhbmNlbGFibGUsIHBhcmFtcy5kZXRhaWwgKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZXZ0O1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgQ3VzdG9tRXZlbnQucHJvdG90eXBlID0gd2luZG93WydFdmVudCddLnByb3RvdHlwZTtcbiAgICAgICAgICAgIC8vICMjIyBBTkdVTEFSOVRPRE8gIyMjXG4gICAgICAgICAgICB3aW5kb3dbJ0N1c3RvbUV2ZW50J10gPSBDdXN0b21FdmVudDtcbiAgICB9XG5cbiAgICBzdGF0aWMgZm9yUm9vdCgpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPFJ1bnRpbWVCYXNlTW9kdWxlPiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBuZ01vZHVsZTogUnVudGltZUJhc2VNb2R1bGUsXG4gICAgICAgICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgICAgICAgICB7cHJvdmlkZTogQXBwLCB1c2VDbGFzczogQXBwUmVmfSxcbiAgICAgICAgICAgICAgICB7cHJvdmlkZTogQWJzdHJhY3RUb2FzdGVyU2VydmljZSwgdXNlQ2xhc3M6IFRvYXN0ZXJTZXJ2aWNlSW1wbH0sXG4gICAgICAgICAgICAgICAge3Byb3ZpZGU6IEFic3RyYWN0STE4blNlcnZpY2UsIHVzZUNsYXNzOiBJMThuU2VydmljZUltcGx9LFxuICAgICAgICAgICAgICAgIHtwcm92aWRlOiBBYnN0cmFjdFNwaW5uZXJTZXJ2aWNlLCB1c2VDbGFzczogU3Bpbm5lclNlcnZpY2VJbXBsfSxcbiAgICAgICAgICAgICAgICB7cHJvdmlkZTogQWJzdHJhY3ROYXZpZ2F0aW9uU2VydmljZSwgdXNlQ2xhc3M6IE5hdmlnYXRpb25TZXJ2aWNlSW1wbH0sXG4gICAgICAgICAgICAgICAge3Byb3ZpZGU6IEFwcERlZmF1bHRzLCB1c2VDbGFzczogQXBwRGVmYXVsdHNTZXJ2aWNlfSxcbiAgICAgICAgICAgICAgICB7cHJvdmlkZTogRHluYW1pY0NvbXBvbmVudFJlZlByb3ZpZGVyLCB1c2VDbGFzczogRHluYW1pY0NvbXBvbmVudFJlZlByb3ZpZGVyU2VydmljZX0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwcm92aWRlOiBBUFBfSU5JVElBTElaRVIsXG4gICAgICAgICAgICAgICAgICAgIHVzZUZhY3Rvcnk6IEluaXRpYWxpemVBcHAsXG4gICAgICAgICAgICAgICAgICAgIGRlcHM6IFtBYnN0cmFjdEkxOG5TZXJ2aWNlLCBBcHBKU1Jlc29sdmVdLFxuICAgICAgICAgICAgICAgICAgICBtdWx0aTogdHJ1ZVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwcm92aWRlOiBMT0NBTEVfSUQsXG4gICAgICAgICAgICAgICAgICAgIHVzZUZhY3Rvcnk6IHNldEFuZ3VsYXJMb2NhbGUsXG4gICAgICAgICAgICAgICAgICAgIGRlcHM6IFtBYnN0cmFjdEkxOG5TZXJ2aWNlXVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwcm92aWRlOiBIVFRQX0lOVEVSQ0VQVE9SUyxcbiAgICAgICAgICAgICAgICAgICAgdXNlQ2xhc3M6IEh0dHBDYWxsSW50ZXJjZXB0b3IsXG4gICAgICAgICAgICAgICAgICAgIG11bHRpOiB0cnVlXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBQaXBlU2VydmljZSxcbiAgICAgICAgICAgICAgICBEZWNpbWFsUGlwZSxcbiAgICAgICAgICAgICAgICBEYXRlUGlwZSxcbiAgICAgICAgICAgICAgICBBcHBNYW5hZ2VyU2VydmljZSxcbiAgICAgICAgICAgICAgICBQcmVmYWJNYW5hZ2VyU2VydmljZSxcbiAgICAgICAgICAgICAgICBBdXRoR3VhcmQsXG4gICAgICAgICAgICAgICAgUm9sZUd1YXJkLFxuICAgICAgICAgICAgICAgIFBhZ2VOb3RGb3VuZEd1YXJkLFxuICAgICAgICAgICAgICAgIENhbkRlYWN0aXZhdGVQYWdlR3VhcmQsXG4gICAgICAgICAgICAgICAgQXBwSlNSZXNvbHZlLFxuICAgICAgICAgICAgICAgIEFwcEV4dGVuc2lvbkpTUmVzb2x2ZSxcbiAgICAgICAgICAgICAgICBJMThuUmVzb2x2ZSxcbiAgICAgICAgICAgICAgICBnZXRTZXR0aW5nUHJvdmlkZXIoTUFYX0NBQ0hFX1NJWkUsIDEwKSxcbiAgICAgICAgICAgICAgICBnZXRTZXR0aW5nUHJvdmlkZXIoTUFYX0NBQ0hFX0FHRSwgMzAgKiA2MClcbiAgICAgICAgICAgIF1cbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihtb2JpbGVSdW50aW1lTW9kdWxlOiBNb2JpbGVSdW50aW1lTW9kdWxlLFxuICAgICAgICAgICAgICAgIGFwcDogQXBwLFxuICAgICAgICAgICAgICAgIHZpZXdwb3J0OiBWaWV3cG9ydCkge1xuICAgICAgICBSdW50aW1lQmFzZU1vZHVsZS5hZGRDdXN0b21FdmVudFBvbHlmaWxsKCk7XG5cbiAgICAgICAgdGhpcy5nZXREZXZpY2VEZXRhaWxzKCkudGhlbihkZXRhaWxzID0+IHtcbiAgICAgICAgICAgIGFwcC5zZWxlY3RlZFZpZXdQb3J0ID0ge1xuICAgICAgICAgICAgICAgIG9zOiBkZXRhaWxzLm9zLFxuICAgICAgICAgICAgICAgIGNhdGVnb3J5OiBkZXRhaWxzLnNlbGVjdGVkRGV2aWNlQ2F0ZWdvcnlcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB2aWV3cG9ydC51cGRhdGUoZGV0YWlscyk7XG4gICAgICAgICAgICBhcHAubm90aWZ5KCdvbi12aWV3cG9ydC1kZXRhaWxzJywgZGV0YWlscy5vcyk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuXG4gICAgcHJpdmF0ZSBnZXREZXZpY2VEZXRhaWxzKCk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTxhbnk+KGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgICAgIGNvbnN0IG1zZ0NvbnRlbnQgPSB7a2V5OiAnb24tbG9hZCd9O1xuICAgICAgICAgICAgLy8gTm90aWZ5IHByZXZpZXcgd2luZG93IHRoYXQgYXBwbGljYXRpb24gaXMgcmVhZHkuIE90aGVyd2lzZSwgaWRlbnRpZnkgdGhlIE9TLlxuICAgICAgICAgICAgaWYgKHdpbmRvdy50b3AgIT09IHdpbmRvdykge1xuICAgICAgICAgICAgICAgIHdpbmRvdy50b3AucG9zdE1lc3NhZ2UobXNnQ29udGVudCwgJyonKTtcbiAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIGZvciBwcmV2aWV3IHBhZ2VcbiAgICAgICAgICAgICAgICB3aW5kb3cub25tZXNzYWdlID0gZnVuY3Rpb24gKG1zZykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkYXRhID0gbXNnLmRhdGE7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc09iamVjdChkYXRhKSAmJiBkYXRhLmtleSA9PT0gJ3N3aXRjaC1kZXZpY2UnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGRhdGEuZGV2aWNlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGlzSXBob25lKCkgfHwgaXNJcG9kKCkgfHwgaXNJcGFkKCkpIHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKHsnb3MnOiBPUy5JT1N9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZSh7J29zJzogT1MuQU5EUk9JRH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG59XG5cbmV4cG9ydCBjb25zdCBXTV9NT0RVTEVTX0ZPUl9ST09UID0gW1xuICAgIFdtQ29tcG9uZW50c01vZHVsZS5mb3JSb290KCksXG4gICAgTW9iaWxlUnVudGltZU1vZHVsZS5mb3JSb290KCksXG4gICAgQ29yZU1vZHVsZS5mb3JSb290KCksXG4gICAgU2VjdXJpdHlNb2R1bGUuZm9yUm9vdCgpLFxuICAgIE9BdXRoTW9kdWxlLmZvclJvb3QoKSxcbiAgICBWYXJpYWJsZXNNb2R1bGUuZm9yUm9vdCgpLFxuICAgIEh0dHBTZXJ2aWNlTW9kdWxlLmZvclJvb3QoKSxcbiAgICBSdW50aW1lQmFzZU1vZHVsZS5mb3JSb290KClcbl07XG4iXX0=
|
|
647
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS1iYXNlLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3J1bnRpbWUtYmFzZS9zcmMvcnVudGltZS1iYXNlLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsZUFBZSxFQUFFLFNBQVMsRUFBdUIsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RCxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFlBQVksQ0FBQztBQUUxQyxPQUFPLEVBQ0gsZUFBZSxFQUNmLFVBQVUsRUFDVixtQkFBbUIsRUFDbkIseUJBQXlCLEVBQ3pCLHNCQUFzQixFQUN0QixzQkFBc0IsRUFDdEIsR0FBRyxFQUNILFdBQVcsRUFDWCxVQUFVLEVBQ1YsMkJBQTJCLEVBQzNCLFFBQVEsRUFDUixRQUFRLEVBQ1IsTUFBTSxFQUNOLE1BQU0sRUFDTixRQUFRLEVBQ1IsVUFBVSxFQUNiLE1BQU0sVUFBVSxDQUFDO0FBQ2xCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1Q0FB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O1FBRVosT0FBTztRQUNQLFVBQVU7UUFDVixVQUFVO1FBQ1YsVUFBVTtRQUNWLGVBQWU7UUFDZixnQkFBZ0I7UUFDaEIsV0FBVztRQUVYLFFBQVE7UUFDUixXQUFXO1FBRVgsb0JBQW9CO1FBQ3BCLGVBQWU7UUFDZixrQkFBa0I7UUFDbEIsZ0JBQWdCO1FBQ2hCLFdBQVc7UUFDWCxVQUFVO1FBQ1YsVUFBVTtRQUNWLFlBQVk7UUFFWixVQUFVO1FBQ1YsaUJBQWlCO1FBQ2pCLGtCQUFrQjtRQUNsQixpQkFBaUI7UUFDakIsbUJBQW1CO1FBRW5CLGFBQWE7UUFDYixnQkFBZ0I7UUFDaEIsVUFBVTtRQUNWLFlBQVk7UUFDWixhQUFhO1FBRWIsV0FBVztRQUNYLGNBQWM7UUFDZCxXQUFXO1FBQ1gsYUFBYTtRQUViLFVBQVU7UUFDVixZQUFZO1FBQ1osWUFBWTtRQUNaLGVBQWU7UUFDZixnQkFBZ0I7UUFDaEIsWUFBWTtRQUNaLFlBQVk7QUF5SmhCLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHO0lBQy9CLGtCQUFrQixDQUFDLE9BQU8sRUFBRTtJQUM1QixtQkFBbUIsQ0FBQyxPQUFPLEVBQUU7SUFDN0IsVUFBVSxDQUFDLE9BQU8sRUFBRTtJQUNwQixjQUFjLENBQUMsT0FBTyxFQUFFO0lBQ3hCLFdBQVcsQ0FBQyxPQUFPLEVBQUU7SUFDckIsZUFBZSxDQUFDLE9BQU8sRUFBRTtJQUN6QixpQkFBaUIsQ0FBQyxPQUFPLEVBQUU7SUFDM0IsaUJBQWlCLENBQUMsT0FBTyxFQUFFO0NBQzlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FQUF9JTklUSUFMSVpFUiwgTE9DQUxFX0lELCBNb2R1bGVXaXRoUHJvdmlkZXJzLCBOZ01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlLCBEYXRlUGlwZSwgRGVjaW1hbFBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSFRUUF9JTlRFUkNFUFRPUlMsIEh0dHBDbGllbnRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyDJtVNoYXJlZFN0eWxlc0hvc3QgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7ybVEb21SZW5kZXJlckZhY3RvcnkyfSBmcm9tIFwiQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3NlclwiO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IFRvYXN0ck1vZHVsZSB9IGZyb20gJ25neC10b2FzdHInO1xuXG5pbXBvcnQge1xuICAgIF9XTV9BUFBfUFJPSkVDVCxcbiAgICAkcGFyc2VFeHByLFxuICAgIEFic3RyYWN0STE4blNlcnZpY2UsXG4gICAgQWJzdHJhY3ROYXZpZ2F0aW9uU2VydmljZSxcbiAgICBBYnN0cmFjdFNwaW5uZXJTZXJ2aWNlLFxuICAgIEFic3RyYWN0VG9hc3RlclNlcnZpY2UsXG4gICAgQXBwLFxuICAgIEFwcERlZmF1bHRzLFxuICAgIENvcmVNb2R1bGUsXG4gICAgRHluYW1pY0NvbXBvbmVudFJlZlByb3ZpZGVyLFxuICAgIGlzT2JqZWN0LFxuICAgIGlzSXBob25lLFxuICAgIGlzSXBvZCxcbiAgICBpc0lwYWQsXG4gICAgVmlld3BvcnQsXG4gICAgaGFzQ29yZG92YVxufSBmcm9tICdAd20vY29yZSc7XG5pbXBvcnQgeyBXbUNvbXBvbmVudHNNb2R1bGUgfSBmcm9tICdAd20vY29tcG9uZW50cy9iYXNlJztcbmltcG9ydCB7IERpYWxvZ01vZHVsZSB9IGZyb20gJ0B3bS9jb21wb25lbnRzL2RpYWxvZ3MnO1xuaW1wb3J0IHsgQ29uZmlybURpYWxvZ01vZHVsZSB9IGZyb20gJ0B3bS9jb21wb25lbnRzL2RpYWxvZ3MvY29uZmlybS1kaWFsb2cnO1xuaW1wb3J0IHsgRGVzaWduRGlhbG9nTW9kdWxlIH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvZGlhbG9ncy9kZXNpZ24tZGlhbG9nJztcbmltcG9ydCB7IFByZWZhYk1vZHVsZSB9IGZyb20gJ0B3bS9jb21wb25lbnRzL3ByZWZhYic7XG5pbXBvcnQgeyBNb2JpbGVSdW50aW1lTW9kdWxlIH0gZnJvbSAnQHdtL21vYmlsZS9ydW50aW1lJztcbmltcG9ydCB7IFNlY3VyaXR5TW9kdWxlIH0gZnJvbSAnQHdtL3NlY3VyaXR5JztcbmltcG9ydCB7IEh0dHBTZXJ2aWNlTW9kdWxlIH0gZnJvbSAnQHdtL2h0dHAnO1xuaW1wb3J0IHsgVmFyaWFibGVzTW9kdWxlIH0gZnJvbSAnQHdtL3ZhcmlhYmxlcyc7XG5pbXBvcnQgeyBPQXV0aE1vZHVsZSB9IGZyb20gJ0B3bS9vQXV0aCc7XG5cbmltcG9ydCB7IEFjY2Vzc3JvbGVzRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL2FjY2Vzc3JvbGVzLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBBcHBTcGlubmVyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2FwcC1zcGlubmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDdXN0b21Ub2FzdGVyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2N1c3RvbS10b2FzdGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFbXB0eVBhZ2VDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvZW1wdHktY29tcG9uZW50L2VtcHR5LXBhZ2UuY29tcG9uZW50JztcbmltcG9ydCB7IFByZWZhYkRpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9wcmVmYWIuZGlyZWN0aXZlJztcbmltcG9ydCB7IEFwcFJlZiB9IGZyb20gJy4vc2VydmljZXMvYXBwLnNlcnZpY2UnO1xuaW1wb3J0IHsgVG9hc3RlclNlcnZpY2VJbXBsIH0gZnJvbSAnLi9zZXJ2aWNlcy90b2FzdGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgSTE4blNlcnZpY2VJbXBsIH0gZnJvbSAnLi9zZXJ2aWNlcy9pMThuLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3Bpbm5lclNlcnZpY2VJbXBsIH0gZnJvbSAnLi9zZXJ2aWNlcy9zcGlubmVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgTmF2aWdhdGlvblNlcnZpY2VJbXBsIH0gZnJvbSAnLi9zZXJ2aWNlcy9uYXZpZ2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgUGlwZVNlcnZpY2UgfSBmcm9tIFwiLi9zZXJ2aWNlcy9waXBlLnNlcnZpY2VcIjtcbmltcG9ydCB7IEFwcERlZmF1bHRzU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvYXBwLWRlZmF1bHRzLnNlcnZpY2UnO1xuaW1wb3J0IHsgQXBwTWFuYWdlclNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2FwcC5tYW5hZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUHJlZmFiTWFuYWdlclNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3ByZWZhYi1tYW5hZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQXV0aEd1YXJkIH0gZnJvbSAnLi9ndWFyZHMvYXV0aC5ndWFyZCc7XG5pbXBvcnQgeyBSb2xlR3VhcmQgfSBmcm9tICcuL2d1YXJkcy9yb2xlLmd1YXJkJztcbmltcG9ydCB7IFBhZ2VOb3RGb3VuZEd1YXJkIH0gZnJvbSAnLi9ndWFyZHMvcGFnZS1ub3QtZm91bmQuZ3VhcmQnO1xuaW1wb3J0IHsgQXBwSlNSZXNvbHZlIH0gZnJvbSAnLi9yZXNvbHZlcy9hcHAtanMucmVzb2x2ZSc7XG5pbXBvcnQgeyBBcHBFeHRlbnNpb25KU1Jlc29sdmUgfSBmcm9tICcuL3Jlc29sdmVzL2FwcC1leHRlbnNpb24ucmVzb2x2ZSc7XG5pbXBvcnQgeyBJMThuUmVzb2x2ZSB9IGZyb20gJy4vcmVzb2x2ZXMvaTE4bi5yZXNvbHZlJztcbmltcG9ydCB7IEFwcENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9hcHAtY29tcG9uZW50L2FwcC5jb21wb25lbnQnO1xuaW1wb3J0IHsgSHR0cENhbGxJbnRlcmNlcHRvciB9IGZyb20gJy4vc2VydmljZXMvaHR0cC1pbnRlcmNlcHRvci5zZXJ2aWNlcyc7XG5pbXBvcnQgeyBQcmVmYWJQcmV2aWV3Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3ByZWZhYi1wcmV2aWV3LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEeW5hbWljQ29tcG9uZW50UmVmUHJvdmlkZXJTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9keW5hbWljLWNvbXBvbmVudC1yZWYtcHJvdmlkZXIuc2VydmljZSc7XG5pbXBvcnQgeyBDYW5EZWFjdGl2YXRlUGFnZUd1YXJkIH0gZnJvbSAnLi9ndWFyZHMvY2FuLWRlYWN0aXZhdGUtcGFnZS5ndWFyZCc7XG5pbXBvcnQgeyBNQVhfQ0FDSEVfQUdFLCBNQVhfQ0FDSEVfU0laRSB9IGZyb20gJy4vdXRpbC93bS1yb3V0ZS1yZXVzZS1zdHJhdGVneSc7XG5cbi8vYW5ndWxhciBvdmVycmlkZXNcbmltcG9ydCB7IFdNRG9tU2hhcmVkU3R5bGVzSG9zdCB9IGZyb20gXCIuL292ZXJyaWRlcy93bV9zaGFyZWRfc3R5bGVzX2hvc3RcIjtcbmltcG9ydCB7IFdNRG9tUmVuZGVyZXJGYWN0b3J5MiB9IGZyb20gXCIuL292ZXJyaWRlcy93bV9kb21fcmVuZGVyZXJcIjtcbmltcG9ydCB7UGFnZU1vZHVsZX0gZnJvbSBcIkB3bS9jb21wb25lbnRzL3BhZ2VcIjtcbmltcG9ydCB7Rm9vdGVyTW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvcGFnZS9mb290ZXJcIjtcbmltcG9ydCB7SGVhZGVyTW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvcGFnZS9oZWFkZXJcIjtcbmltcG9ydCB7TGVmdFBhbmVsTW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvcGFnZS9sZWZ0LXBhbmVsXCI7XG5pbXBvcnQge1JpZ2h0UGFuZWxNb2R1bGV9IGZyb20gXCJAd20vY29tcG9uZW50cy9wYWdlL3JpZ2h0LXBhbmVsXCI7XG5pbXBvcnQge1RvcE5hdk1vZHVsZX0gZnJvbSBcIkB3bS9jb21wb25lbnRzL3BhZ2UvdG9wLW5hdlwiO1xuaW1wb3J0IHtCYXNpY01vZHVsZX0gZnJvbSBcIkB3bS9jb21wb25lbnRzL2Jhc2ljXCI7XG5pbXBvcnQge1Byb2dyZXNzTW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvYmFzaWMvcHJvZ3Jlc3NcIjtcbmltcG9ydCB7UmljaFRleHRFZGl0b3JNb2R1bGV9IGZyb20gXCJAd20vY29tcG9uZW50cy9iYXNpYy9yaWNoLXRleHQtZWRpdG9yXCI7XG5pbXBvcnQge1NlYXJjaE1vZHVsZX0gZnJvbSBcIkB3bS9jb21wb25lbnRzL2Jhc2ljL3NlYXJjaFwiO1xuaW1wb3J0IHtUcmVlTW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvYmFzaWMvdHJlZVwiO1xuaW1wb3J0IHtDYWxlbmRhck1vZHVsZX0gZnJvbSBcIkB3bS9jb21wb25lbnRzL2lucHV0L2NhbGVuZGFyXCI7XG5pbXBvcnQge0NoaXBzTW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvaW5wdXQvY2hpcHNcIjtcbmltcG9ydCB7Q29sb3JQaWNrZXJNb2R1bGV9IGZyb20gXCJAd20vY29tcG9uZW50cy9pbnB1dC9jb2xvci1waWNrZXJcIjtcbmltcG9ydCB7Q3VycmVuY3lNb2R1bGV9IGZyb20gXCJAd20vY29tcG9uZW50cy9pbnB1dC9jdXJyZW5jeVwiO1xuaW1wb3J0IHtFcG9jaE1vZHVsZX0gZnJvbSBcIkB3bS9jb21wb25lbnRzL2lucHV0L2Vwb2NoXCI7XG5pbXBvcnQge0ZpbGVVcGxvYWRNb2R1bGV9IGZyb20gXCJAd20vY29tcG9uZW50cy9pbnB1dC9maWxlLXVwbG9hZFwiO1xuaW1wb3J0IHtJbnB1dE1vZHVsZX0gZnJvbSBcIkB3bS9jb21wb25lbnRzL2lucHV0XCI7XG5pbXBvcnQge1JhdGluZ01vZHVsZX0gZnJvbSBcIkB3bS9jb21wb25lbnRzL2lucHV0L3JhdGluZ1wiO1xuaW1wb3J0IHtTbGlkZXJNb2R1bGV9IGZyb20gXCJAd20vY29tcG9uZW50cy9pbnB1dC9zbGlkZXJcIjtcbmltcG9ydCB7Q2FyZE1vZHVsZX0gZnJvbSBcIkB3bS9jb21wb25lbnRzL2RhdGEvY2FyZFwiO1xuaW1wb3J0IHtGb3JtTW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvZGF0YS9mb3JtXCI7XG5pbXBvcnQge0xpc3RNb2R1bGV9IGZyb20gXCJAd20vY29tcG9uZW50cy9kYXRhL2xpc3RcIjtcbmltcG9ydCB7TGl2ZVRhYmxlTW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvZGF0YS9saXZlLXRhYmxlXCI7XG5pbXBvcnQge1BhZ2luYXRpb25Nb2R1bGV9IGZyb20gXCJAd20vY29tcG9uZW50cy9kYXRhL3BhZ2luYXRpb25cIjtcbmltcG9ydCB7VGFibGVNb2R1bGV9IGZyb20gXCJAd20vY29tcG9uZW50cy9kYXRhL3RhYmxlXCI7XG5pbXBvcnQge0NoYXJ0TW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvY2hhcnRcIjtcbmltcG9ydCB7QWNjb3JkaW9uTW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvY29udGFpbmVycy9hY2NvcmRpb25cIjtcbmltcG9ydCB7TGluZWFyTGF5b3V0TW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvY29udGFpbmVycy9saW5lYXItbGF5b3V0XCI7XG5pbXBvcnQge0xheW91dEdyaWRNb2R1bGV9IGZyb20gXCJAd20vY29tcG9uZW50cy9jb250YWluZXJzL2xheW91dC1ncmlkXCI7XG5pbXBvcnQge1BhbmVsTW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvY29udGFpbmVycy9wYW5lbFwiO1xuaW1wb3J0IHtUYWJzTW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvY29udGFpbmVycy90YWJzXCI7XG5pbXBvcnQge1RpbGVNb2R1bGV9IGZyb20gXCJAd20vY29tcG9uZW50cy9jb250YWluZXJzL3RpbGVcIjtcbmltcG9ydCB7V2l6YXJkTW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvY29udGFpbmVycy93aXphcmRcIjtcbmltcG9ydCB7QWxlcnREaWFsb2dNb2R1bGV9IGZyb20gXCJAd20vY29tcG9uZW50cy9kaWFsb2dzL2FsZXJ0LWRpYWxvZ1wiO1xuaW1wb3J0IHtJZnJhbWVEaWFsb2dNb2R1bGV9IGZyb20gXCJAd20vY29tcG9uZW50cy9kaWFsb2dzL2lmcmFtZS1kaWFsb2dcIjtcbmltcG9ydCB7TG9naW5EaWFsb2dNb2R1bGV9IGZyb20gXCJAd20vY29tcG9uZW50cy9kaWFsb2dzL2xvZ2luLWRpYWxvZ1wiO1xuaW1wb3J0IHtQYXJ0aWFsRGlhbG9nTW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvZGlhbG9ncy9wYXJ0aWFsLWRpYWxvZ1wiO1xuaW1wb3J0IHtCcmVhZGNydW1iTW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvbmF2aWdhdGlvbi9icmVhZGNydW1iXCI7XG5pbXBvcnQge01lbnVNb2R1bGV9IGZyb20gXCJAd20vY29tcG9uZW50cy9uYXZpZ2F0aW9uL21lbnVcIjtcbmltcG9ydCB7TmF2YmFyTW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvbmF2aWdhdGlvbi9uYXZiYXJcIjtcbmltcG9ydCB7UG9wb3Zlck1vZHVsZX0gZnJvbSBcIkB3bS9jb21wb25lbnRzL25hdmlnYXRpb24vcG9wb3ZlclwiO1xuaW1wb3J0IHtDYXJvdXNlbE1vZHVsZX0gZnJvbSBcIkB3bS9jb21wb25lbnRzL2FkdmFuY2VkL2Nhcm91c2VsXCI7XG5pbXBvcnQge0xvZ2luTW9kdWxlfSBmcm9tIFwiQHdtL2NvbXBvbmVudHMvYWR2YW5jZWQvbG9naW5cIjtcbmltcG9ydCB7TWFycXVlZU1vZHVsZX0gZnJvbSBcIkB3bS9jb21wb25lbnRzL2FkdmFuY2VkL21hcnF1ZWVcIjtcbmltcG9ydCB7QnNEYXRlcGlja2VyTW9kdWxlfSBmcm9tIFwibmd4LWJvb3RzdHJhcC9kYXRlcGlja2VyXCI7XG5pbXBvcnQge1RpbWVwaWNrZXJNb2R1bGUgYXMgbmd4VGltZXBpY2tlck1vZHVsZX0gZnJvbSBcIm5neC1ib290c3RyYXAvdGltZXBpY2tlclwiO1xuaW1wb3J0IHtCc0Ryb3Bkb3duTW9kdWxlfSBmcm9tIFwibmd4LWJvb3RzdHJhcC9kcm9wZG93blwiO1xuaW1wb3J0IHtQYWdpbmF0aW9uTW9kdWxlIGFzIG5neFBhZ2luYXRpb25Nb2R1bGV9IGZyb20gXCJuZ3gtYm9vdHN0cmFwL3BhZ2luYXRpb25cIjtcbmltcG9ydCB7VHlwZWFoZWFkTW9kdWxlfSBmcm9tIFwibmd4LWJvb3RzdHJhcC90eXBlYWhlYWRcIjtcbmltcG9ydCB7UHJvZ3Jlc3NiYXJNb2R1bGV9IGZyb20gXCJuZ3gtYm9vdHN0cmFwL3Byb2dyZXNzYmFyXCI7XG5pbXBvcnQge0Nhcm91c2VsTW9kdWxlIGFzIG5neENhcm91c2VsTW9kdWxlfSBmcm9tIFwibmd4LWJvb3RzdHJhcC9jYXJvdXNlbFwiO1xuaW1wb3J0IHtQb3BvdmVyTW9kdWxlIGFzIG5neFBvcG92ZXJNb2R1bGV9IGZyb20gXCJuZ3gtYm9vdHN0cmFwL3BvcG92ZXJcIjtcbmltcG9ydCB7TmdDaXJjbGVQcm9ncmVzc01vZHVsZX0gZnJvbSBcIm5nLWNpcmNsZS1wcm9ncmVzc1wiO1xuaW1wb3J0IHtUb29sdGlwTW9kdWxlfSBmcm9tIFwibmd4LWJvb3RzdHJhcC90b29sdGlwXCI7XG5cbmRlY2xhcmUgY29uc3QgX1dNX0FQUF9QUk9QRVJUSUVTO1xuXG5jb25zdCBpbml0aWFsaXplUHJvamVjdERldGFpbHMgPSAoKSA9PiB7XG4gICAgbGV0IGNkblVybCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tuYW1lPVwiZGVwbG95VXJsXCJdJykgJiYgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignW25hbWU9XCJkZXBsb3lVcmxcIl0nKS5nZXRBdHRyaWJ1dGUoJ2NvbnRlbnQnKTtcbiAgICBfV01fQVBQX1BST0pFQ1QuaXNQcmV2aWV3ID0gY2RuVXJsID8gZmFsc2UgOiB0cnVlO1xuICAgIGxldCBhcGlVcmwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdbbmFtZT1cImFwaVVybFwiXScpICYmIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tuYW1lPVwiYXBpVXJsXCJdJykuZ2V0QXR0cmlidXRlKCdjb250ZW50Jyk7XG4gICAgLy9mb3IgcHJldmlld1xuICAgIGlmKCFjZG5VcmwpIHtcbiAgICAgICAgY2RuVXJsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignW25hbWU9XCJjZG5VcmxcIl0nKSAmJiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdbbmFtZT1cImNkblVybFwiXScpLmdldEF0dHJpYnV0ZSgnY29udGVudCcpO1xuICAgIH1cbiAgICBfV01fQVBQX1BST0pFQ1QuaWQgPSBoYXNDb3Jkb3ZhKCkgPyBfV01fQVBQX1BST1BFUlRJRVMuZGlzcGxheU5hbWUgOiBsb2NhdGlvbi5ocmVmLnNwbGl0KCcvJylbM107XG4gICAgLy8gSW50ZWdyYXRpb24gd2l0aCB0aGlyZCBwYXJ0eSBhcHBzIGxpa2UgaW4gU1NQQS9XZWJDb21wb25lbnRzLCB0aGlzIG1ldGEgdGFnIHdpdGggY2RuVXJsIHdpbGwgbm90IGJlIHRoZXJlIHRoZW4gZGVmYXVsdCBpdCB0byBuZy1idW5kbGUvXG4gICAgX1dNX0FQUF9QUk9KRUNULmFwaVVybCA9IGFwaVVybCB8fCAnLi8nO1xuICAgIF9XTV9BUFBfUFJPSkVDVC5jZG5VcmwgPSBjZG5VcmwgfHwgJ25nLWJ1bmRsZS8nO1xuICAgIF9XTV9BUFBfUFJPSkVDVC5uZ0Rlc3QgPSAnbmctYnVuZGxlLyc7XG4gICAgdHJ5IHtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIF9fd2VicGFja19yZXF1aXJlX18ucCA9IF9fd2VicGFja19wdWJsaWNfcGF0aF9fID0gY2RuVXJsO1xuICAgIH0gY2F0Y2goZSkge1xuICAgICAgICAvL2ZvciBhcHAgcHJldmlldyB0aGVyZSBpcyBubyB3ZWJwYWNrLiBEb24ndCBkbyBhbnl0aGluZy5cbiAgICB9XG59O1xuXG5lbnVtIE9TIHtcbiAgICBJT1MgPSAnaW9zJyxcbiAgICBBTkRST0lEID0gJ2FuZHJvaWQnXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTZXR0aW5nUHJvdmlkZXIoa2V5OiBzdHJpbmcsIGRlZmF1bHRWYWx1ZTogYW55KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgcHJvdmlkZToga2V5LFxuICAgICAgICB1c2VWYWx1ZTogZGVmYXVsdFZhbHVlXG4gICAgfTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBJbml0aWFsaXplQXBwKEkxOG5TZXJ2aWNlLCBBcHBKU1Jlc29sdmUpIHtcbiAgICByZXR1cm4gYXN5bmMgKCkgPT4ge1xuICAgICAgICBpbml0aWFsaXplUHJvamVjdERldGFpbHMoKTtcbiAgICAgICAgYXdhaXQgQXBwSlNSZXNvbHZlLnJlc29sdmUoKTtcbiAgICAgICAgcmV0dXJuIEkxOG5TZXJ2aWNlLmxvYWREZWZhdWx0TG9jYWxlKCk7XG4gICAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldEFuZ3VsYXJMb2NhbGUoSTE4blNlcnZpY2UpIHtcbiAgICBpbml0aWFsaXplUHJvamVjdERldGFpbHMoKTtcbiAgICByZXR1cm4gSTE4blNlcnZpY2UuZGVkdWNlQXBwTG9jYWxlKCk7XG59XG5cbmNvbnN0IGRlZmluaXRpb25zID0gW1xuICAgIEFjY2Vzc3JvbGVzRGlyZWN0aXZlLFxuICAgIEFwcFNwaW5uZXJDb21wb25lbnQsXG4gICAgQ3VzdG9tVG9hc3RlckNvbXBvbmVudCxcbiAgICBQcmVmYWJEaXJlY3RpdmUsXG4gICAgQXBwQ29tcG9uZW50LFxuICAgIFByZWZhYlByZXZpZXdDb21wb25lbnQsXG4gICAgRW1wdHlQYWdlQ29tcG9uZW50XG5dO1xuXG5leHBvcnQgY29uc3QgUkVRVUlSRURfTU9EVUxFU19GT1JfRFlOQU1JQ19DT01QT05FTlRTID0gW1xuICAgIENvbmZpcm1EaWFsb2dNb2R1bGUsXG4gICAgRGVzaWduRGlhbG9nTW9kdWxlLFxuICAgIERpYWxvZ01vZHVsZSxcblxuICAgIC8vIE5HWCBCb290c3RyYXBcbiAgICBCc0RhdGVwaWNrZXJNb2R1bGUsXG4gICAgbmd4VGltZXBpY2tlck1vZHVsZSxcbiAgICBCc0Ryb3Bkb3duTW9kdWxlLFxuICAgIG5neFBhZ2luYXRpb25Nb2R1bGUsXG4gICAgVHlwZWFoZWFkTW9kdWxlLFxuICAgIFByb2dyZXNzYmFyTW9kdWxlLFxuICAgIG5neENhcm91c2VsTW9kdWxlLFxuICAgIG5neFBvcG92ZXJNb2R1bGUsXG4gICAgTmdDaXJjbGVQcm9ncmVzc01vZHVsZSxcbiAgICBUb29sdGlwTW9kdWxlLFxuXG4gICAgLy8gQmFzaWMgd2lkZ2V0c1xuICAgIEJhc2ljTW9kdWxlLFxuICAgIFByb2dyZXNzTW9kdWxlLFxuICAgIFJpY2hUZXh0RWRpdG9yTW9kdWxlLFxuICAgIFNlYXJjaE1vZHVsZSxcbiAgICBUcmVlTW9kdWxlLFxuXG4gICAgLy8gSW5wdXRcbiAgICBDYWxlbmRhck1vZHVsZSxcbiAgICBDaGlwc01vZHVsZSxcbiAgICBDb2xvclBpY2tlck1vZHVsZSxcbiAgICBDdXJyZW5jeU1vZHVsZSxcbiAgICBFcG9jaE1vZHVsZSxcbiAgICBGaWxlVXBsb2FkTW9kdWxlLFxuICAgIElucHV0TW9kdWxlLFxuICAgIFJhdGluZ01vZHVsZSxcbiAgICBTbGlkZXJNb2R1bGUsXG5cbiAgICAvLyBEYXRhXG4gICAgQ2FyZE1vZHVsZSxcbiAgICBGb3JtTW9kdWxlLFxuICAgIExpc3RNb2R1bGUsXG4gICAgTGl2ZVRhYmxlTW9kdWxlLFxuICAgIFBhZ2luYXRpb25Nb2R1bGUsXG4gICAgVGFibGVNb2R1bGUsXG5cbiAgICAvLyBjaGFydFxuICAgIENoYXJ0TW9kdWxlLFxuXG4gICAgLy8gY29udGFpbmVyIG1vZHVsZXNcbiAgICBBY2NvcmRpb25Nb2R1bGUsXG4gICAgTGluZWFyTGF5b3V0TW9kdWxlLFxuICAgIExheW91dEdyaWRNb2R1bGUsXG4gICAgUGFuZWxNb2R1bGUsXG4gICAgVGFic01vZHVsZSxcbiAgICBUaWxlTW9kdWxlLFxuICAgIFdpemFyZE1vZHVsZSxcblxuICAgIC8vIGRpYWxvZ3NcbiAgICBBbGVydERpYWxvZ01vZHVsZSxcbiAgICBJZnJhbWVEaWFsb2dNb2R1bGUsXG4gICAgTG9naW5EaWFsb2dNb2R1bGUsXG4gICAgUGFydGlhbERpYWxvZ01vZHVsZSxcblxuICAgIC8vIG5hdmlnYXRpb25cbiAgICBCcmVhZGNydW1iTW9kdWxlLFxuICAgIE1lbnVNb2R1bGUsXG4gICAgTmF2YmFyTW9kdWxlLFxuICAgIFBvcG92ZXJNb2R1bGUsXG5cbiAgICAvLyBBZHZhbmNlZFxuICAgIENhcm91c2VsTW9kdWxlLFxuICAgIExvZ2luTW9kdWxlLFxuICAgIE1hcnF1ZWVNb2R1bGUsXG5cbiAgICBQYWdlTW9kdWxlLFxuICAgIEZvb3Rlck1vZHVsZSxcbiAgICBIZWFkZXJNb2R1bGUsXG4gICAgTGVmdFBhbmVsTW9kdWxlLFxuICAgIFJpZ2h0UGFuZWxNb2R1bGUsXG4gICAgVG9wTmF2TW9kdWxlLFxuICAgIFByZWZhYk1vZHVsZVxuXTtcblxuLy8gc2V0dGluZyBwYXJzZUV4cHIgYXMgZXhwckV2YWx1YXRvciBmb3Igc3dpcGVBbmltYXRpb25cbigkLmZuIGFzIGFueSkuc3dpcGVBbmltYXRpb24uZXhwcmVzc2lvbkV2YWx1YXRvciA9ICRwYXJzZUV4cHI7XG5cbkBOZ01vZHVsZSh7XG4gICAgZGVjbGFyYXRpb25zOiBbIC4uLmRlZmluaXRpb25zIF0sXG4gICAgaW1wb3J0czogW1xuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIFJvdXRlck1vZHVsZSxcbiAgICAgICAgSHR0cENsaWVudE1vZHVsZSxcbiAgICAgICAgRm9ybXNNb2R1bGUsXG4gICAgICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG5cbiAgICAgICAgVG9hc3RyTW9kdWxlLFxuICAgICAgICBXbUNvbXBvbmVudHNNb2R1bGUsXG4gICAgICAgIE1vYmlsZVJ1bnRpbWVNb2R1bGUsXG4gICAgICAgIENvcmVNb2R1bGUsXG4gICAgICAgIFNlY3VyaXR5TW9kdWxlLFxuICAgICAgICBPQXV0aE1vZHVsZSxcbiAgICAgICAgVmFyaWFibGVzTW9kdWxlLFxuICAgICAgICBIdHRwU2VydmljZU1vZHVsZSxcbiAgICAgICAgLi4uUkVRVUlSRURfTU9EVUxFU19GT1JfRFlOQU1JQ19DT01QT05FTlRTXG4gICAgXSxcbiAgICBleHBvcnRzOiBbXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuXG4gICAgICAgIC4uLmRlZmluaXRpb25zLFxuXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgUm91dGVyTW9kdWxlLFxuICAgICAgICBIdHRwQ2xpZW50TW9kdWxlLFxuXG4gICAgICAgIFRvYXN0ck1vZHVsZSxcbiAgICAgICAgV21Db21wb25lbnRzTW9kdWxlLFxuICAgICAgICBNb2JpbGVSdW50aW1lTW9kdWxlLFxuICAgICAgICBDb3JlTW9kdWxlLFxuICAgICAgICBTZWN1cml0eU1vZHVsZSxcbiAgICAgICAgT0F1dGhNb2R1bGUsXG4gICAgICAgIFZhcmlhYmxlc01vZHVsZSxcbiAgICAgICAgSHR0cFNlcnZpY2VNb2R1bGUsXG4gICAgICAgIC4uLlJFUVVJUkVEX01PRFVMRVNfRk9SX0RZTkFNSUNfQ09NUE9ORU5UU1xuICAgIF0sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtwcm92aWRlOiDJtVNoYXJlZFN0eWxlc0hvc3QsIHVzZUNsYXNzOiBXTURvbVNoYXJlZFN0eWxlc0hvc3R9LFxuICAgICAgICB7cHJvdmlkZTogybVEb21SZW5kZXJlckZhY3RvcnkyLCB1c2VDbGFzczogV01Eb21SZW5kZXJlckZhY3RvcnkyfVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgUnVudGltZUJhc2VNb2R1bGUge1xuXG4gICAgLy8gdGhpcyBwb2x5ZmlsbCBpcyB0byBhZGQgc3VwcG9ydCBmb3IgQ3VzdG9tRXZlbnQgaW4gSUUxMVxuICAgIHN0YXRpYyBhZGRDdXN0b21FdmVudFBvbHlmaWxsKCkge1xuICAgICAgICAgICAgaWYgKCB0eXBlb2Ygd2luZG93WydDdXN0b21FdmVudCddID09PSAnZnVuY3Rpb24nICkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIEFkZGluZyB0eXBlIGFzIGFueSB0byBhdm9pZCBlcnJvciBUUzIzMjJcbiAgICAgICAgICAgIGNvbnN0IEN1c3RvbUV2ZW50OiBhbnkgPSAoZXZlbnQsIHBhcmFtcykgPT4ge1xuICAgICAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcyB8fCB7IGJ1YmJsZXM6IGZhbHNlLCBjYW5jZWxhYmxlOiBmYWxzZSwgZGV0YWlsOiBudWxsIH07XG4gICAgICAgICAgICAgICAgY29uc3QgZXZ0ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoICdDdXN0b21FdmVudCcgKTtcbiAgICAgICAgICAgICAgICBldnQuaW5pdEN1c3RvbUV2ZW50KCBldmVudCwgcGFyYW1zLmJ1YmJsZXMsIHBhcmFtcy5jYW5jZWxhYmxlLCBwYXJhbXMuZGV0YWlsICk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGV2dDtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIEN1c3RvbUV2ZW50LnByb3RvdHlwZSA9IHdpbmRvd1snRXZlbnQnXS5wcm90b3R5cGU7XG4gICAgICAgICAgICAvLyAjIyMgQU5HVUxBUjlUT0RPICMjI1xuICAgICAgICAgICAgd2luZG93WydDdXN0b21FdmVudCddID0gQ3VzdG9tRXZlbnQ7XG4gICAgfVxuXG4gICAgc3RhdGljIGZvclJvb3QoKTogTW9kdWxlV2l0aFByb3ZpZGVyczxSdW50aW1lQmFzZU1vZHVsZT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbmdNb2R1bGU6IFJ1bnRpbWVCYXNlTW9kdWxlLFxuICAgICAgICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgICAgICAgICAge3Byb3ZpZGU6IEFwcCwgdXNlQ2xhc3M6IEFwcFJlZn0sXG4gICAgICAgICAgICAgICAge3Byb3ZpZGU6IEFic3RyYWN0VG9hc3RlclNlcnZpY2UsIHVzZUNsYXNzOiBUb2FzdGVyU2VydmljZUltcGx9LFxuICAgICAgICAgICAgICAgIHtwcm92aWRlOiBBYnN0cmFjdEkxOG5TZXJ2aWNlLCB1c2VDbGFzczogSTE4blNlcnZpY2VJbXBsfSxcbiAgICAgICAgICAgICAgICB7cHJvdmlkZTogQWJzdHJhY3RTcGlubmVyU2VydmljZSwgdXNlQ2xhc3M6IFNwaW5uZXJTZXJ2aWNlSW1wbH0sXG4gICAgICAgICAgICAgICAge3Byb3ZpZGU6IEFic3RyYWN0TmF2aWdhdGlvblNlcnZpY2UsIHVzZUNsYXNzOiBOYXZpZ2F0aW9uU2VydmljZUltcGx9LFxuICAgICAgICAgICAgICAgIHtwcm92aWRlOiBBcHBEZWZhdWx0cywgdXNlQ2xhc3M6IEFwcERlZmF1bHRzU2VydmljZX0sXG4gICAgICAgICAgICAgICAge3Byb3ZpZGU6IER5bmFtaWNDb21wb25lbnRSZWZQcm92aWRlciwgdXNlQ2xhc3M6IER5bmFtaWNDb21wb25lbnRSZWZQcm92aWRlclNlcnZpY2V9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcHJvdmlkZTogQVBQX0lOSVRJQUxJWkVSLFxuICAgICAgICAgICAgICAgICAgICB1c2VGYWN0b3J5OiBJbml0aWFsaXplQXBwLFxuICAgICAgICAgICAgICAgICAgICBkZXBzOiBbQWJzdHJhY3RJMThuU2VydmljZSwgQXBwSlNSZXNvbHZlXSxcbiAgICAgICAgICAgICAgICAgICAgbXVsdGk6IHRydWVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcHJvdmlkZTogTE9DQUxFX0lELFxuICAgICAgICAgICAgICAgICAgICB1c2VGYWN0b3J5OiBzZXRBbmd1bGFyTG9jYWxlLFxuICAgICAgICAgICAgICAgICAgICBkZXBzOiBbQWJzdHJhY3RJMThuU2VydmljZV1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcHJvdmlkZTogSFRUUF9JTlRFUkNFUFRPUlMsXG4gICAgICAgICAgICAgICAgICAgIHVzZUNsYXNzOiBIdHRwQ2FsbEludGVyY2VwdG9yLFxuICAgICAgICAgICAgICAgICAgICBtdWx0aTogdHJ1ZVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgUGlwZVNlcnZpY2UsXG4gICAgICAgICAgICAgICAgRGVjaW1hbFBpcGUsXG4gICAgICAgICAgICAgICAgRGF0ZVBpcGUsXG4gICAgICAgICAgICAgICAgQXBwTWFuYWdlclNlcnZpY2UsXG4gICAgICAgICAgICAgICAgUHJlZmFiTWFuYWdlclNlcnZpY2UsXG4gICAgICAgICAgICAgICAgQXV0aEd1YXJkLFxuICAgICAgICAgICAgICAgIFJvbGVHdWFyZCxcbiAgICAgICAgICAgICAgICBQYWdlTm90Rm91bmRHdWFyZCxcbiAgICAgICAgICAgICAgICBDYW5EZWFjdGl2YXRlUGFnZUd1YXJkLFxuICAgICAgICAgICAgICAgIEFwcEpTUmVzb2x2ZSxcbiAgICAgICAgICAgICAgICBBcHBFeHRlbnNpb25KU1Jlc29sdmUsXG4gICAgICAgICAgICAgICAgSTE4blJlc29sdmUsXG4gICAgICAgICAgICAgICAgZ2V0U2V0dGluZ1Byb3ZpZGVyKE1BWF9DQUNIRV9TSVpFLCAxMCksXG4gICAgICAgICAgICAgICAgZ2V0U2V0dGluZ1Byb3ZpZGVyKE1BWF9DQUNIRV9BR0UsIDMwICogNjApXG4gICAgICAgICAgICBdXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IobW9iaWxlUnVudGltZU1vZHVsZTogTW9iaWxlUnVudGltZU1vZHVsZSxcbiAgICAgICAgICAgICAgICBhcHA6IEFwcCxcbiAgICAgICAgICAgICAgICB2aWV3cG9ydDogVmlld3BvcnQpIHtcbiAgICAgICAgUnVudGltZUJhc2VNb2R1bGUuYWRkQ3VzdG9tRXZlbnRQb2x5ZmlsbCgpO1xuXG4gICAgICAgIHRoaXMuZ2V0RGV2aWNlRGV0YWlscygpLnRoZW4oZGV0YWlscyA9PiB7XG4gICAgICAgICAgICBhcHAuc2VsZWN0ZWRWaWV3UG9ydCA9IHtcbiAgICAgICAgICAgICAgICBvczogZGV0YWlscy5vcyxcbiAgICAgICAgICAgICAgICBjYXRlZ29yeTogZGV0YWlscy5zZWxlY3RlZERldmljZUNhdGVnb3J5XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdmlld3BvcnQudXBkYXRlKGRldGFpbHMpO1xuICAgICAgICAgICAgYXBwLm5vdGlmeSgnb24tdmlld3BvcnQtZGV0YWlscycsIGRldGFpbHMub3MpO1xuICAgICAgICB9KTtcbiAgICB9XG5cblxuICAgIHByaXZhdGUgZ2V0RGV2aWNlRGV0YWlscygpOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2U8YW55PihmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgICAgICBjb25zdCBtc2dDb250ZW50ID0ge2tleTogJ29uLWxvYWQnfTtcbiAgICAgICAgICAgIC8vIE5vdGlmeSBwcmV2aWV3IHdpbmRvdyB0aGF0IGFwcGxpY2F0aW9uIGlzIHJlYWR5LiBPdGhlcndpc2UsIGlkZW50aWZ5IHRoZSBPUy5cbiAgICAgICAgICAgIGlmICh3aW5kb3cudG9wICE9PSB3aW5kb3cpIHtcbiAgICAgICAgICAgICAgICB3aW5kb3cudG9wLnBvc3RNZXNzYWdlKG1zZ0NvbnRlbnQsICcqJyk7XG4gICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBmb3IgcHJldmlldyBwYWdlXG4gICAgICAgICAgICAgICAgd2luZG93Lm9ubWVzc2FnZSA9IGZ1bmN0aW9uIChtc2cpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGF0YSA9IG1zZy5kYXRhO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNPYmplY3QoZGF0YSkgJiYgZGF0YS5rZXkgPT09ICdzd2l0Y2gtZGV2aWNlJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShkYXRhLmRldmljZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSBlbHNlIGlmIChpc0lwaG9uZSgpIHx8IGlzSXBvZCgpIHx8IGlzSXBhZCgpKSB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZSh7J29zJzogT1MuSU9TfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlc29sdmUoeydvcyc6IE9TLkFORFJPSUR9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG5leHBvcnQgY29uc3QgV01fTU9EVUxFU19GT1JfUk9PVCA9IFtcbiAgICBXbUNvbXBvbmVudHNNb2R1bGUuZm9yUm9vdCgpLFxuICAgIE1vYmlsZVJ1bnRpbWVNb2R1bGUuZm9yUm9vdCgpLFxuICAgIENvcmVNb2R1bGUuZm9yUm9vdCgpLFxuICAgIFNlY3VyaXR5TW9kdWxlLmZvclJvb3QoKSxcbiAgICBPQXV0aE1vZHVsZS5mb3JSb290KCksXG4gICAgVmFyaWFibGVzTW9kdWxlLmZvclJvb3QoKSxcbiAgICBIdHRwU2VydmljZU1vZHVsZS5mb3JSb290KCksXG4gICAgUnVudGltZUJhc2VNb2R1bGUuZm9yUm9vdCgpXG5dO1xuIl19
|
|
@@ -4,6 +4,7 @@ import { tap } from 'rxjs/operators';
|
|
|
4
4
|
import { httpService, appManager } from '@wm/variables';
|
|
5
5
|
import { WmHttpRequest, WmHttpResponse } from '@wm/http';
|
|
6
6
|
import { extend } from "lodash-es";
|
|
7
|
+
import { _WM_APP_PROJECT } from "@wm/core";
|
|
7
8
|
import * as i0 from "@angular/core";
|
|
8
9
|
/**
|
|
9
10
|
* This Interceptor intercepts all network calls and if a network call fails
|
|
@@ -20,6 +21,11 @@ export class HttpCallInterceptor {
|
|
|
20
21
|
intercept(request, next) {
|
|
21
22
|
let modifiedReq;
|
|
22
23
|
let modifiedResp;
|
|
24
|
+
let isServicesUrl = request.url.indexOf("services/") !== -1;
|
|
25
|
+
if (isServicesUrl) {
|
|
26
|
+
let apiUrl = _WM_APP_PROJECT.apiUrl + request.url;
|
|
27
|
+
request = request.clone({ url: apiUrl });
|
|
28
|
+
}
|
|
23
29
|
if (appManager && appManager.appOnBeforeServiceCall) {
|
|
24
30
|
// Convert the angular HttpRequest to wm HttpRequest
|
|
25
31
|
const req = this.wmHttpRequest.angularToWmRequest(request);
|
|
@@ -67,4 +73,4 @@ export class HttpCallInterceptor {
|
|
|
67
73
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(HttpCallInterceptor, [{
|
|
68
74
|
type: Injectable
|
|
69
75
|
}], () => [], null); })();
|
|
70
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
76
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1pbnRlcmNlcHRvci5zZXJ2aWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3J1bnRpbWUtYmFzZS9zcmMvc2VydmljZXMvaHR0cC1pbnRlcmNlcHRvci5zZXJ2aWNlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzNDLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXJDLE9BQU8sRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hELE9BQU8sRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3pELE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxXQUFXLENBQUM7QUFDakMsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLFVBQVUsQ0FBQzs7QUFFekM7OztHQUdHO0FBRUgsTUFBTSxPQUFPLG1CQUFtQjtJQUs1QjtRQUNJLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxhQUFhLEVBQUUsQ0FBQztRQUN6QyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksY0FBYyxFQUFFLENBQUM7SUFDL0MsQ0FBQztJQUVELGFBQWE7UUFDVCxPQUFPLElBQUksT0FBTyxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUNELFNBQVMsQ0FBQyxPQUF5QixFQUFFLElBQWlCO1FBQ2xELElBQUksV0FBVyxDQUFDO1FBQ2hCLElBQUksWUFBWSxDQUFDO1FBQ2pCLElBQUksYUFBYSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQzVELElBQUcsYUFBYSxFQUFFLENBQUM7WUFDZixJQUFJLE1BQU0sR0FBRSxlQUFlLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUM7WUFDakQsT0FBTyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUM3QyxDQUFDO1FBQ0QsSUFBSSxVQUFVLElBQUksVUFBVSxDQUFDLHNCQUFzQixFQUFFLENBQUM7WUFDbEQsb0RBQW9EO1lBQ3BELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDM0QsbUVBQW1FO1lBQ25FLFdBQVcsR0FBSSxVQUFVLENBQUMsc0JBQXNCLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDdEQsSUFBSSxXQUFXLEVBQUUsQ0FBQztnQkFDZCxvREFBb0Q7Z0JBQ3BELFdBQVcsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUNqRSxPQUFPLEdBQUcsV0FBVyxDQUFDO1lBQzFCLENBQUM7UUFDTCxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FDNUIsR0FBRyxDQUFDLENBQUMsUUFBYSxFQUFFLEVBQUU7WUFDZCxJQUFJLFFBQVEsSUFBSSxRQUFRLENBQUMsSUFBSSxLQUFLLENBQUMsSUFBSSxVQUFVLElBQUssVUFBVSxDQUFDLG1CQUFtQixFQUFFLENBQUM7Z0JBQ25GLHNEQUFzRDtnQkFDdEQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDL0QsdURBQXVEO2dCQUN2RCxZQUFZLEdBQUcsVUFBVSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQy9ELElBQUksWUFBWSxFQUFFLENBQUM7b0JBQ2Ysc0RBQXNEO29CQUN0RCxZQUFZLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLENBQUMsQ0FBQztvQkFDckUsTUFBTSxDQUFDLFFBQVEsRUFBRSxZQUFZLENBQUMsQ0FBQztnQkFDbkMsQ0FBQztZQUNMLENBQUM7UUFDTCxDQUFDLEVBQ0QsS0FBSyxDQUFDLEVBQUU7WUFDSixLQUFLLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUM1QyxJQUFJLFdBQVcsQ0FBQyx3QkFBd0IsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUM5QyxXQUFXLENBQUMsb0JBQW9CLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUNwRSxDQUFDO1lBQ0QsSUFBSSxVQUFVLElBQUksVUFBVSxDQUFDLGlCQUFpQixFQUFFLENBQUM7Z0JBQzdDLHNEQUFzRDtnQkFDdEQsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDM0QscURBQXFEO2dCQUNyRCxZQUFZLEdBQUcsVUFBVSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUM7Z0JBQzlELElBQUksWUFBWSxFQUFFLENBQUM7b0JBQ2Ysc0RBQXNEO29CQUN0RCxZQUFZLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLENBQUMsQ0FBQztvQkFDckUsTUFBTSxDQUFDLEtBQUssRUFBRSxZQUFZLENBQUMsQ0FBQztnQkFDaEMsQ0FBQztZQUNMLENBQUM7UUFDTCxDQUFDLENBQ0osQ0FDSixDQUFDO0lBQ04sQ0FBQztvRkFqRVEsbUJBQW1CO3VFQUFuQixtQkFBbUIsV0FBbkIsbUJBQW1COztpRkFBbkIsbUJBQW1CO2NBRC9CLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwRXZlbnQsIEh0dHBIYW5kbGVyLCBIdHRwSW50ZXJjZXB0b3IsIEh0dHBSZXF1ZXN0LCBIdHRwUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5cbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgaHR0cFNlcnZpY2UsIGFwcE1hbmFnZXIgfSBmcm9tICdAd20vdmFyaWFibGVzJztcbmltcG9ydCB7IFdtSHR0cFJlcXVlc3QsIFdtSHR0cFJlc3BvbnNlIH0gZnJvbSAnQHdtL2h0dHAnO1xuaW1wb3J0IHtleHRlbmR9IGZyb20gXCJsb2Rhc2gtZXNcIjtcbmltcG9ydCB7X1dNX0FQUF9QUk9KRUNUfSBmcm9tIFwiQHdtL2NvcmVcIjtcblxuLyoqXG4gKiBUaGlzIEludGVyY2VwdG9yIGludGVyY2VwdHMgYWxsIG5ldHdvcmsgY2FsbHMgYW5kIGlmIGEgbmV0d29yayBjYWxsIGZhaWxzXG4gKiBkdWUgdG8gc2Vzc2lvbiB0aW1lb3V0LCB0aGVuIGl0IGNhbGxzIGEgZnVuY3Rpb24gdG8gaGFuZGxlIHNlc3Npb24gdGltZW91dC5cbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEh0dHBDYWxsSW50ZXJjZXB0b3IgaW1wbGVtZW50cyBIdHRwSW50ZXJjZXB0b3Ige1xuXG4gICAgd21IdHRwUmVxdWVzdDogYW55O1xuICAgIHdtSHR0cFJlc3BvbnNlOiBhbnk7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy53bUh0dHBSZXF1ZXN0ID0gbmV3IFdtSHR0cFJlcXVlc3QoKTtcbiAgICAgICAgdGhpcy53bUh0dHBSZXNwb25zZSA9IG5ldyBXbUh0dHBSZXNwb25zZSgpO1xuICAgIH1cblxuICAgIGNyZWF0ZVN1YmplY3QoKSB7XG4gICAgICAgIHJldHVybiBuZXcgU3ViamVjdCgpO1xuICAgIH1cbiAgICBpbnRlcmNlcHQocmVxdWVzdDogSHR0cFJlcXVlc3Q8YW55PiwgbmV4dDogSHR0cEhhbmRsZXIpOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxhbnk+PiB7XG4gICAgICAgIGxldCBtb2RpZmllZFJlcTtcbiAgICAgICAgbGV0IG1vZGlmaWVkUmVzcDtcbiAgICAgICAgbGV0IGlzU2VydmljZXNVcmwgPSByZXF1ZXN0LnVybC5pbmRleE9mKFwic2VydmljZXMvXCIpICE9PSAtMTtcbiAgICAgICAgaWYoaXNTZXJ2aWNlc1VybCkge1xuICAgICAgICAgICAgbGV0IGFwaVVybD0gX1dNX0FQUF9QUk9KRUNULmFwaVVybCArIHJlcXVlc3QudXJsO1xuICAgICAgICAgICAgcmVxdWVzdCA9IHJlcXVlc3QuY2xvbmUoeyB1cmw6IGFwaVVybCB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYXBwTWFuYWdlciAmJiBhcHBNYW5hZ2VyLmFwcE9uQmVmb3JlU2VydmljZUNhbGwpIHtcbiAgICAgICAgICAgIC8vIENvbnZlcnQgdGhlIGFuZ3VsYXIgSHR0cFJlcXVlc3QgdG8gd20gSHR0cFJlcXVlc3RcbiAgICAgICAgICAgIGNvbnN0IHJlcSA9IHRoaXMud21IdHRwUmVxdWVzdC5hbmd1bGFyVG9XbVJlcXVlc3QocmVxdWVzdCk7XG4gICAgICAgICAgICAvLyB0cmlnZ2VyIHRoZSBjb21tb24gb25CZWZvcmVTZXJ2aWNlQ2FsbCBoYW5kbGVyIHByZXNlbnQgaW4gYXBwLmpzXG4gICAgICAgICAgICBtb2RpZmllZFJlcSA9ICBhcHBNYW5hZ2VyLmFwcE9uQmVmb3JlU2VydmljZUNhbGwocmVxKTtcbiAgICAgICAgICAgIGlmIChtb2RpZmllZFJlcSkge1xuICAgICAgICAgICAgICAgIC8vIENvbnZlcnQgdGhlIHdtIEh0dHBSZXF1ZXN0IHRvIGFuZ3VsYXIgSHR0cFJlcXVlc3RcbiAgICAgICAgICAgICAgICBtb2RpZmllZFJlcSA9IHRoaXMud21IdHRwUmVxdWVzdC53bVRvQW5ndWxhclJlcXVlc3QobW9kaWZpZWRSZXEpO1xuICAgICAgICAgICAgICAgIHJlcXVlc3QgPSBtb2RpZmllZFJlcTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV4dC5oYW5kbGUocmVxdWVzdCkucGlwZShcbiAgICAgICAgICAgIHRhcCgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UgJiYgcmVzcG9uc2UudHlwZSA9PT0gNCAmJiBhcHBNYW5hZ2VyICYmICBhcHBNYW5hZ2VyLmFwcE9uU2VydmljZVN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIENvbnZlcnQgdGhlIGFuZ3VsYXIgSHR0cFJlc3BvbnNlIHRvIHdtIEh0dHBSZXNwb25zZVxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzcCA9IHRoaXMud21IdHRwUmVzcG9uc2UuYW5ndWxhclRvV21SZXNwb25zZShyZXNwb25zZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB0cmlnZ2VyIHRoZSBjb21tb24gc3VjY2VzcyBoYW5kbGVyIHByZXNlbnQgaW4gYXBwLmpzXG4gICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllZFJlc3AgPSBhcHBNYW5hZ2VyLmFwcE9uU2VydmljZVN1Y2Nlc3MocmVzcC5ib2R5LCByZXNwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtb2RpZmllZFJlc3ApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDb252ZXJ0IHRoZSB3bSBIdHRwUmVzcG9uc2UgdG8gYW5ndWxhciBIdHRwUmVzcG9uc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllZFJlc3AgPSB0aGlzLndtSHR0cFJlc3BvbnNlLndtVG9Bbmd1bGFyUmVzcG9uc2UobW9kaWZpZWRSZXNwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRlbmQocmVzcG9uc2UsIG1vZGlmaWVkUmVzcCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGVycm9yID0+IHtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3IuXzQwMVN1YnNjcmliZXIgPSB0aGlzLmNyZWF0ZVN1YmplY3QoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGh0dHBTZXJ2aWNlLmlzUGxhdGZvcm1TZXNzaW9uVGltZW91dChlcnJvcikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGh0dHBTZXJ2aWNlLmhhbmRsZVNlc3Npb25UaW1lb3V0KHJlcXVlc3QsIGVycm9yLl80MDFTdWJzY3JpYmVyKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoYXBwTWFuYWdlciAmJiBhcHBNYW5hZ2VyLmFwcE9uU2VydmljZUVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBDb252ZXJ0IHRoZSBhbmd1bGFyIEh0dHBSZXNwb25zZSB0byB3bSBIdHRwUmVzcG9uc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVyciA9IHRoaXMud21IdHRwUmVzcG9uc2UuYW5ndWxhclRvV21SZXNwb25zZShlcnJvcik7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB0cmlnZ2VyIHRoZSBjb21tb24gZXJyb3IgaGFuZGxlciBwcmVzZW50IGluIGFwcC5qc1xuICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZWRSZXNwID0gYXBwTWFuYWdlci5hcHBPblNlcnZpY2VFcnJvcihlcnIubWVzc2FnZSwgZXJyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtb2RpZmllZFJlc3ApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDb252ZXJ0IHRoZSB3bSBIdHRwUmVzcG9uc2UgdG8gYW5ndWxhciBIdHRwUmVzcG9uc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllZFJlc3AgPSB0aGlzLndtSHR0cFJlc3BvbnNlLndtVG9Bbmd1bGFyUmVzcG9uc2UobW9kaWZpZWRSZXNwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRlbmQoZXJyb3IsIG1vZGlmaWVkUmVzcCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxufVxuIl19
|
|
@@ -9,7 +9,7 @@ import * as i0 from "@angular/core";
|
|
|
9
9
|
import * as i1 from "@angular/common/http";
|
|
10
10
|
import * as i2 from "ngx-bootstrap/datepicker";
|
|
11
11
|
import * as i3 from "@wm/core";
|
|
12
|
-
const APP_LOCALE_ROOT_PATH = '
|
|
12
|
+
const APP_LOCALE_ROOT_PATH = 'resources/i18n';
|
|
13
13
|
const RTL_LANGUAGE_CODES = ['ar', 'ar-001', 'ar-ae', 'ar-bh', 'ar-dz', 'ar-eg', 'ar-iq', 'ar-jo', 'ar-kw', 'ar-lb', 'ar-ly',
|
|
14
14
|
'ar-ma', 'ar-om', 'ar-qa', 'ar-sa', 'ar-sd', 'ar-sy', 'ar-tn', 'ar-ye', 'arc', 'bcc', 'bqi', 'ckb', 'dv', 'fa', 'glk',
|
|
15
15
|
'he', 'ku', 'mzn', 'pnb', 'ps', 'sd', 'ug', 'ur', 'yi'];
|
|
@@ -80,7 +80,8 @@ export class I18nServiceImpl extends AbstractI18nService {
|
|
|
80
80
|
});
|
|
81
81
|
}
|
|
82
82
|
loadAppLocaleBundle() {
|
|
83
|
-
|
|
83
|
+
const basePath = _WM_APP_PROJECT.isPreview ? '' : _WM_APP_PROJECT.cdnUrl;
|
|
84
|
+
this.loadResource(basePath + `${APP_LOCALE_ROOT_PATH}/${this.selectedLocale}.json`)
|
|
84
85
|
.then(bundle => {
|
|
85
86
|
this.extendMessages(bundle.messages);
|
|
86
87
|
this.extendPrefabMessages(bundle);
|
|
@@ -331,4 +332,4 @@ export class I18nServiceImpl extends AbstractI18nService {
|
|
|
331
332
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(I18nServiceImpl, [{
|
|
332
333
|
type: Injectable
|
|
333
334
|
}], () => [{ type: i1.HttpClient }, { type: i2.BsLocaleService }, { type: i3.AppDefaults }, { type: i0.Injector }], null); })();
|
|
334
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaTE4bi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcnVudGltZS1iYXNlL3NyYy9zZXJ2aWNlcy9pMThuLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFM0QsT0FBTyxFQUNILGVBQWUsRUFDZixtQkFBbUIsRUFDbkIsV0FBVyxFQUNYLHFCQUFxQixFQUNyQixzQkFBc0IsRUFDdEIsUUFBUSxFQUNSLFdBQVcsRUFDWCxXQUFXLEVBQ1gsT0FBTyxFQUNQLE1BQU0sRUFDTixxQkFBcUIsRUFDckIsR0FBRyxFQUNOLE1BQU0sVUFBVSxDQUFDO0FBQ2xCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUMsTUFBTSxXQUFXLENBQUM7Ozs7O0FBSTdGLE1BQU0sb0JBQW9CLEdBQUcsNEJBQTRCLENBQUM7QUFDMUQsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0lBQ3ZILE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxP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ICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBkZWZpbmVMb2NhbGUgfSBmcm9tICduZ3gtYm9vdHN0cmFwL2Nocm9ub3MnO1xuaW1wb3J0IHsgQnNMb2NhbGVTZXJ2aWNlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9kYXRlcGlja2VyJztcblxuaW1wb3J0IHtcbiAgICBfV01fQVBQX1BST0pFQ1QsXG4gICAgQWJzdHJhY3RJMThuU2VydmljZSxcbiAgICBBcHBEZWZhdWx0cyxcbiAgICBnZXRTZXNzaW9uU3RvcmFnZUl0ZW0sXG4gICAgZ2V0V21Qcm9qZWN0UHJvcGVydGllcyxcbiAgICBpc01vYmlsZSxcbiAgICBpc01vYmlsZUFwcCxcbiAgICBsb2FkU2NyaXB0cyxcbiAgICByZXBsYWNlLFxuICAgIHNldENTUyxcbiAgICBzZXRTZXNzaW9uU3RvcmFnZUl0ZW0sXG4gICAgQXBwXG59IGZyb20gJ0B3bS9jb3JlJztcbmltcG9ydCB7IENPTlNUQU5UUyB9IGZyb20gJ0B3bS92YXJpYWJsZXMnO1xuaW1wb3J0IHtmaW5kLCBmb3JFYWNoLCBnZXQsIGluY2x1ZGVzLCBpbnRlcnNlY3Rpb24sIGlzT2JqZWN0LCBtYXAsIHRvTG93ZXJ9IGZyb20gXCJsb2Rhc2gtZXNcIjtcblxuZGVjbGFyZSBjb25zdCBtb21lbnQ7XG5cbmNvbnN0IEFQUF9MT0NBTEVfUk9PVF9QQVRIID0gJy4vbmctYnVuZGxlL3Jlc291cmNlcy9pMThuJztcbmNvbnN0IFJUTF9MQU5HVUFHRV9DT0RFUyA9IFsnYXInLCAnYXItMDAxJywgJ2FyLWFlJywgJ2FyLWJoJywgJ2FyLWR6JywgJ2FyLWVnJywgJ2FyLWlxJywgJ2FyLWpvJywgJ2FyLWt3JywgJ2FyLWxiJywgJ2FyLWx5JyxcbiAgICAnYXItbWEnLCAnYXItb20nLCAnYXItcWEnLCAnYXItc2EnLCAnYXItc2QnLCAnYXItc3knLCAnYXItdG4nLCAnYXIteWUnLCAnYXJjJywgJ2JjYycsICdicWknLCAnY2tiJywgJ2R2JywgJ2ZhJywgJ2dsaycsXG4gICAgJ2hlJywgJ2t1JywgJ216bicsICdwbmInLCAncHMnLCAnc2QnLCAndWcnLCAndXInLCAneWknXTtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEkxOG5TZXJ2aWNlSW1wbCBleHRlbmRzIEFic3RyYWN0STE4blNlcnZpY2Uge1xuXG4gICAgcHJpdmF0ZSBzZWxlY3RlZExvY2FsZTogc3RyaW5nO1xuICAgIHByaXZhdGUgZGVmYXVsdFN1cHBvcnRlZExvY2FsZSA9ICdlbic7XG4gICAgcHJpdmF0ZSByZWFkb25seSBhcHBMb2NhbGU6IGFueTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHByZWZhYkxvY2FsZTogTWFwPFN0cmluZywgYW55PjtcbiAgICBwcml2YXRlIG1lc3NhZ2VzOiBhbnk7XG4gICAgcHJpdmF0ZSBfaXNBbmd1bGFyTG9jYWxlTG9hZGVkID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBmb3JtYXRzQnlMb2NhbGUgPSB7J3RpbWV6b25lJzogJycsICdudW1iZXInOiAnJ307XG4gICAgcHJpdmF0ZSBnZXQgYXBwKCkgeyByZXR1cm4gdGhpcy5pbmouZ2V0KEFwcCkgfTtcblxuICAgIHByaXZhdGUgYnVuZGxlTG9hZGVkOntba2V5OnN0cmluZ10gOiBhbnl9ID0ge307XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSAkaHR0cDogSHR0cENsaWVudCxcbiAgICAgICAgcHJpdmF0ZSBic0xvY2FsZVNlcnZpY2U6IEJzTG9jYWxlU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBhcHBEZWZhdWx0czogQXBwRGVmYXVsdHMsXG4gICAgICAgIHByaXZhdGUgaW5qOiBJbmplY3RvclxuICAgICkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLmFwcExvY2FsZSA9IHt9O1xuICAgICAgICB0aGlzLnByZWZhYkxvY2FsZSA9IG5ldyBNYXAoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZUxvY2FsZURpcmVjdGlvbigpIHtcbiAgICAgICAgbGV0IGRpcmVjdGlvbjogJ2x0cicgfCAncnRsJyA9ICdsdHInO1xuICAgICAgICBpZiAoUlRMX0xBTkdVQUdFX0NPREVTLmluY2x1ZGVzKHRoaXMuc2VsZWN0ZWRMb2NhbGUpKSB7XG4gICAgICAgICAgICBkaXJlY3Rpb24gPSAncnRsJztcbiAgICAgICAgfVxuXG4gICAgICAgIHNldENTUyhkb2N1bWVudC5ib2R5LCAnZGlyZWN0aW9uJywgZGlyZWN0aW9uKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXQoKSB7XG4gICAgICAgIHRoaXMubWVzc2FnZXMgPSB7fTtcblxuICAgICAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcy5hcHBMb2NhbGUsIHRoaXMubWVzc2FnZXMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRTZWxlY3RlZExvY2FsZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZExvY2FsZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RGVmYXVsdFN1cHBvcnRlZExvY2FsZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0U3VwcG9ydGVkTG9jYWxlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRBcHBMb2NhbGUoKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBwTG9jYWxlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRQcmVmYWJMb2NhbGVCdW5kbGUocHJlZmFiTmFtZTogc3RyaW5nKTogYW55IHtcbiAgICAgICAgaWYgKCF0aGlzLnByZWZhYkxvY2FsZS5oYXMocHJlZmFiTmFtZSkpIHtcbiAgICAgICAgICAgIHRoaXMucHJlZmFiTG9jYWxlLnNldChwcmVmYWJOYW1lLCBPYmplY3QuY3JlYXRlKHRoaXMuYXBwTG9jYWxlKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMucHJlZmFiTG9jYWxlLmdldChwcmVmYWJOYW1lKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGV4dGVuZFByZWZhYk1lc3NhZ2VzKG1lc3NhZ2VzOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFtZXNzYWdlcy5wcmVmYWJNZXNzYWdlcykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgT2JqZWN0LmtleXMobWVzc2FnZXMucHJlZmFiTWVzc2FnZXMpLmZvckVhY2goKHByZWZhYk5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgbGV0IGJ1bmRsZSA9IHRoaXMucHJlZmFiTG9jYWxlLmdldChwcmVmYWJOYW1lKTtcbiAgICAgICAgICAgIGlmICghYnVuZGxlKSB7XG4gICAgICAgICAgICAgICAgYnVuZGxlID0gT2JqZWN0LmNyZWF0ZSh0aGlzLmFwcExvY2FsZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5wcmVmYWJMb2NhbGUuc2V0KHByZWZhYk5hbWUsIGJ1bmRsZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKGJ1bmRsZSwgbWVzc2FnZXMucHJlZmFiTWVzc2FnZXNbcHJlZmFiTmFtZV0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGV4dGVuZE1lc3NhZ2VzKG1lc3NhZ2VzOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLm1lc3NhZ2VzLCBtZXNzYWdlcyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBsb2FkUmVzb3VyY2UocGF0aCk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiB0aGlzLiRodHRwLmdldChwYXRoKVxuICAgICAgICAgICAgLnRvUHJvbWlzZSgpXG4gICAgICAgICAgICAuY2F0Y2goKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihgZXJyb3IgbG9hZGluZyBsb2NhbGUgcmVzb3VyY2UgZnJvbSAke3BhdGh9YCk7XG4gICAgICAgICAgICAgICAgUHJvbWlzZS5yZXNvbHZlKHt9KTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBsb2FkQXBwTG9jYWxlQnVuZGxlKCkge1xuICAgICAgICB0aGlzLmxvYWRSZXNvdXJjZShgJHtBUFBfTE9DQUxFX1JPT1RfUEFUSH0vJHt0aGlzLnNlbGVjdGVkTG9jYWxlfS5qc29uYClcbiAgICAgICAgICAgIC50aGVuKGJ1bmRsZSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5leHRlbmRNZXNzYWdlcyhidW5kbGUubWVzc2FnZXMpO1xuICAgICAgICAgICAgICAgIHRoaXMuZXh0ZW5kUHJlZmFiTWVzc2FnZXMoYnVuZGxlKTtcbiAgICAgICAgICAgICAgICB0aGlzLmFwcERlZmF1bHRzLnNldEZvcm1hdHMoYnVuZGxlLmZvcm1hdHMpO1xuICAgICAgICAgICAgICAgIHRoaXMuYnVuZGxlTG9hZGVkLmFwcCA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5ub3RpZnlMb2NhbGVDaGFuZ2VkKCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgbG9hZE1vbWVudExvY2FsZUJ1bmRsZShtb21lbnRMb2NhbGUpIHtcbiAgICAgICAgY29uc3QgX2NkblVybCA9IF9XTV9BUFBfUFJPSkVDVC5jZG5VcmwgfHwgX1dNX0FQUF9QUk9KRUNULm5nRGVzdDtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRMb2NhbGUgPT09IHRoaXMuZGVmYXVsdFN1cHBvcnRlZExvY2FsZSkge1xuICAgICAgICAgICAgbW9tZW50LmxvY2FsZSh0aGlzLmRlZmF1bHRTdXBwb3J0ZWRMb2NhbGUpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHBhdGggPSBfY2RuVXJsICsgYGxvY2FsZXMvbW9tZW50LyR7bW9tZW50TG9jYWxlfS5qc2A7XG4gICAgICAgIGxvYWRTY3JpcHRzKFtwYXRoXSwgdHJ1ZSkudGhlbigoKT0+e1xuICAgICAgICAgICAgbW9tZW50LmxvY2FsZSh0aGlzLnNlbGVjdGVkTG9jYWxlKTtcblxuICAgICAgICAgICAgLy8gRm9yIG5neCBib290c3RyYXAgbG9jYWxlLCBnZXQgdGhlIGNvbmZpZyBmcm9tIHNjcmlwdCBhbmQgYXBwbHkgbG9jYWxlXG4gICAgICAgICAgICAvLyBtb21lbnQubG9jYWxlRGF0YShtb21lbnRMb2NhbGUpIHdpbGwgcmV0dXJuIG1vbWVudCBsb2NhbGUgaW5zdGFuY2UuIF9jb25maWcgaW5zaWRlIHdpbGwgaGF2ZSBhY3R1YWwgY29uZmlnXG4gICAgICAgICAgICBsZXQgX2NvbmZpZyA9IG1vbWVudC5sb2NhbGVEYXRhKG1vbWVudExvY2FsZSk7XG4gICAgICAgICAgICBfY29uZmlnID0gX2NvbmZpZyAmJiBfY29uZmlnLl9jb25maWc7XG4gICAgICAgICAgICBkZWZpbmVMb2NhbGUodGhpcy5zZWxlY3RlZExvY2FsZSwgX2NvbmZpZyk7XG4gICAgICAgICAgICB0aGlzLmJzTG9jYWxlU2VydmljZS51c2UodGhpcy5nZXRTZWxlY3RlZExvY2FsZSgpIHx8IHRoaXMuZGVmYXVsdFN1cHBvcnRlZExvY2FsZSk7XG4gICAgICAgICAgICB0aGlzLmJ1bmRsZUxvYWRlZC5tb21lbnQgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5ub3RpZnlMb2NhbGVDaGFuZ2VkKCk7XG4gICAgICAgIH0pXG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGxvYWRBbmd1bGFyTG9jYWxlQnVuZGxlKGFuZ0xvY2FsZSkge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4ocmVzb2x2ZSA9PiB7XG4gICAgICAgICAgICBjb25zdCBfY2RuVXJsID0gX1dNX0FQUF9QUk9KRUNULmNkblVybCB8fCBfV01fQVBQX1BST0pFQ1QubmdEZXN0O1xuICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRMb2NhbGUgPT09IHRoaXMuZGVmYXVsdFN1cHBvcnRlZExvY2FsZSkge1xuICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBwYXRoID0gX2NkblVybCArIGBsb2NhbGVzL2FuZ3VsYXIvZ2xvYmFsLyR7YW5nTG9jYWxlfS5qc2A7XG5cbiAgICAgICAgICAgIGxvYWRTY3JpcHRzKFtwYXRoXSwgdHJ1ZSkudGhlbigoKT0+e1xuICAgICAgICAgICAgICAgIHRoaXMuX2lzQW5ndWxhckxvY2FsZUxvYWRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgfSwgcmVzb2x2ZSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBsb2FkQ2FsZW5kYXJMb2NhbGVCdW5kbGUoY2FsZW5kYXJMb2NhbGUsIGZvcmNlID0gZmFsc2UpIHtcbiAgICAgICAgY29uc3QgX2NkblVybCA9IF9XTV9BUFBfUFJPSkVDVC5jZG5VcmwgfHwgX1dNX0FQUF9QUk9KRUNULm5nRGVzdDtcbiAgICAgICAgbGV0IHBhdGg6IHN0cmluZztcbiAgICAgICAgaWYgKGNhbGVuZGFyTG9jYWxlKSB7XG4gICAgICAgICAgICBwYXRoID0gX2NkblVybCArIGBsb2NhbGVzL2Z1bGxjYWxlbmRhci8ke2NhbGVuZGFyTG9jYWxlfS5qc2A7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyByZXR1cm4gaW4gY2FzZSBvZiBtb2JpbGUgYXBwIG9yIGlmIHNlbGVjdGVkIGxvY2FsZSBpcyBkZWZhdWx0IHN1cHBvcnRlZCBsb2NhbGUuXG4gICAgICAgIGlmICghZm9yY2UgJiYgKGlzTW9iaWxlKCkgfHwgaXNNb2JpbGVBcHAoKSB8fCB0aGlzLnNlbGVjdGVkTG9jYWxlID09PSB0aGlzLmRlZmF1bHRTdXBwb3J0ZWRMb2NhbGUpKSB7XG4gICAgICAgICAgICB0aGlzLmJ1bmRsZUxvYWRlZC5mdWxsQ2FsZW5kYXIgPSB0cnVlO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ2FsbCB0aGUgc2NyaXB0LiBJbiBzY3JpcHQsIG1vbWVudCBkZWZpbmVzIHRoZSBsb2FkZWQgbG9jYWxlXG4gICAgICAgIHJldHVybiBsb2FkU2NyaXB0cyhbcGF0aF0sIHRydWUpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBsb2FkTW9tZW50VGltZVpvbmVCdW5kbGUobG9jYWxlLCBjb21wSW5zdGFuY2U/KSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPihyZXNvbHZlID0+IHtcbiAgICAgICAgICAgIGNvbnN0IF9jZG5VcmwgPSBfV01fQVBQX1BST0pFQ1QuY2RuVXJsIHx8IF9XTV9BUFBfUFJPSkVDVC5uZ0Rlc3Q7XG4gICAgICAgICAgICBjb25zdCBwYXRoID0gX2NkblVybCArIGBsb2NhbGVzL21vbWVudC10aW1lem9uZS9tb21lbnQtdGltZXpvbmUtd2l0aC1kYXRhLmpzYDtcbiAgICAgICAgICAgIGxvYWRTY3JpcHRzKFtwYXRoXSwgdHJ1ZSkudGhlbigoKT0+e1xuICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAqIElmIGxvY2FsZSBpcyBwcm92aWRlZCBpbiB0aGUgZm9ybSBvZiBvZmZzZXQgYW5kIG5vdCB0aW1lem9uZSBuYW1lLCBkZWR1Y2UgdGhlIG5hbWUuXG4gICAgICAgICAgICAgICAgICogSWYgbG9jYWxlIGlzIHByb3ZpZGVkIGFzIEdNVCs5LCBuYW1lIHdpbGwgYmUgZGVkdWNlZCBhcyBBc2lhL1Rva3lvXG4gICAgICAgICAgICAgICAgICovXG5cbiAgICAgICAgICAgICAgICBsZXQgbG9jYWxlT2JqID0gbG9jYWxlO1xuICAgICAgICAgICAgICAgIGxvY2FsZSA9IGxvY2FsZU9ialsndGltZXpvbmUnXTtcbiAgICAgICAgICAgICAgICBjb25zdCBsb2NhbGVJbmRleCA9IGxvY2FsZS5pbmRleE9mKCcrJyk7XG4gICAgICAgICAgICAgICAgaWYgKGxvY2FsZUluZGV4ID4gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGxvY2FsZUluZGV4ID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxlID0gbG9jYWxlLnN1YnN0cihsb2NhbGVJbmRleCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgbG9jYWxlT2JqWyd0aW1lem9uZSddID0gZmluZChtb21lbnQudHoubmFtZXMoKSwgKHRpbWV6b25lTmFtZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvY2FsZSA9PT0gbW9tZW50LnR6KHRpbWV6b25lTmFtZSkuZm9ybWF0KCdaJyk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBtb21lbnQudHouc2V0RGVmYXVsdChsb2NhbGUpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGxvY2FsZURhdGEgPSAgY29tcEluc3RhbmNlICYmIGNvbXBJbnN0YW5jZS5mb3JtYXRzQnlMb2NhbGUgPyBjb21wSW5zdGFuY2UuZm9ybWF0c0J5TG9jYWxlIDogdGhpcy5mb3JtYXRzQnlMb2NhbGU7XG4gICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihsb2NhbGVEYXRhLCBsb2NhbGVPYmopO1xuICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgIH0sIHJlc29sdmUpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgbG9hZExvY2FsZUJ1bmRsZXMobGliTG9jYWxlKSB7XG4gICAgICAgIGlmIChsaWJMb2NhbGUubW9tZW50KSB7XG4gICAgICAgICAgICB0aGlzLmxvYWRNb21lbnRMb2NhbGVCdW5kbGUobGliTG9jYWxlLm1vbWVudCk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5zZWxlY3RlZExvY2FsZSA9PT0gdGhpcy5kZWZhdWx0U3VwcG9ydGVkTG9jYWxlKSB7XG4gICAgICAgICAgICB0aGlzLmJzTG9jYWxlU2VydmljZS51c2UodGhpcy5nZXRTZWxlY3RlZExvY2FsZSgpIHx8IHRoaXMuZGVmYXVsdFN1cHBvcnRlZExvY2FsZSk7XG4gICAgICAgICAgICB0aGlzLmJ1bmRsZUxvYWRlZC5tb21lbnQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChsaWJMb2NhbGUuZnVsbENhbGVuZGFyICYmIHdpbmRvd1snRnVsbENhbGVuZGFyJ10pIHtcbiAgICAgICAgICAgIHRoaXMubG9hZENhbGVuZGFyTG9jYWxlQnVuZGxlKGxpYkxvY2FsZS5mdWxsQ2FsZW5kYXIpPy50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmJ1bmRsZUxvYWRlZC5mdWxsQ2FsZW5kYXIgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMubm90aWZ5TG9jYWxlQ2hhbmdlZCgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmJ1bmRsZUxvYWRlZC5mdWxsQ2FsZW5kYXIgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChsaWJMb2NhbGUuYW5ndWxhcikge1xuICAgICAgICAgICAgdGhpcy5sb2FkQXBwTG9jYWxlQnVuZGxlKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMubG9hZEFuZ3VsYXJMb2NhbGVCdW5kbGUobGliTG9jYWxlLmFuZ3VsYXIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRUaW1lem9uZShsb2NhbGUsIGNvbXBJbnN0YW5jZT8pIHtcbiAgICAgICAgdGhpcy5sb2FkTW9tZW50VGltZVpvbmVCdW5kbGUobG9jYWxlLCBjb21wSW5zdGFuY2UpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRUaW1lem9uZShjb21wSW5zdGFuY2U/KSB7XG4gICAgICAgIGNvbnN0IHBhZ2VDb25maWcgPSBnZXQodGhpcy5hcHAsICdhY3RpdmVQYWdlLmZvcm1hdHNCeUxvY2FsZS50aW1lem9uZScpO1xuICAgICAgICBjb25zdCBjb21wQ29uZmlnID0gZ2V0KGNvbXBJbnN0YW5jZSwgJ2Zvcm1hdHNCeUxvY2FsZS50aW1lem9uZScpO1xuICAgICAgICBpZiAoY29tcENvbmZpZykge1xuICAgICAgICAgICAgcmV0dXJuIGNvbXBDb25maWc7XG4gICAgICAgIH0gZWxzZSBpZiAocGFnZUNvbmZpZykge1xuICAgICAgICAgICAgcmV0dXJuIHBhZ2VDb25maWc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5mb3JtYXRzQnlMb2NhbGVbJ3RpbWV6b25lJ107XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Rm9ybWF0c0J5TG9jYWxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5mb3JtYXRzQnlMb2NhbGU7XG4gICAgfVxuXG4gICAgcHVibGljIHNldFNlbGVjdGVkTG9jYWxlKGxvY2FsZSkge1xuXG4gICAgICAgIC8vIGNoZWNrIGlmIHRoZSBldmVudCBpcyBwcm9wYWdhdGVkIGZyb20gdGhlIHNlbGVjdCBvciBhbnkgc3VjaCB3aWRnZXRcbiAgICAgICAgaWYgKGlzT2JqZWN0KGxvY2FsZSkpIHtcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIGxvY2FsZSA9IGxvY2FsZS5kYXRhdmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBsaWJMb2NhbGUgPSBnZXRXbVByb2plY3RQcm9wZXJ0aWVzKCkuc3VwcG9ydGVkTGFuZ3VhZ2VzW2xvY2FsZV07XG4gICAgICAgIGNvbnN0IHN1cHBvcnRlZExvY2FsZSA9IE9iamVjdC5rZXlzKGdldFdtUHJvamVjdFByb3BlcnRpZXMoKS5zdXBwb3J0ZWRMYW5ndWFnZXMpO1xuXG4gICAgICAgIGlmICghaW5jbHVkZXMoc3VwcG9ydGVkTG9jYWxlLCBsb2NhbGUpKSB7XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWxvY2FsZSB8fCBsb2NhbGUgPT09IHRoaXMuc2VsZWN0ZWRMb2NhbGUpIHtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHNldFNlc3Npb25TdG9yYWdlSXRlbSgnc2VsZWN0ZWRMb2NhbGUnLCBsb2NhbGUpO1xuXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRMb2NhbGUgPSBsb2NhbGU7XG5cbiAgICAgICAgLy8gcmVzZXQgdGhlIGxvY2FsZURhdGEgb2JqZWN0XG4gICAgICAgIHRoaXMuaW5pdCgpO1xuXG4gICAgICAgIHRoaXMuYnVuZGxlTG9hZGVkLm1vbWVudCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmJ1bmRsZUxvYWRlZC5mdWxsQ2FsZW5kYXIgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5idW5kbGVMb2FkZWQuYXBwID0gZmFsc2U7XG4gICAgICAgIHRoaXMuYnVuZGxlTG9hZGVkLmFuZ3VsYXIgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5idW5kbGVMb2FkZWQubGliTG9jYWxlID0gbGliTG9jYWxlO1xuXG4gICAgICAgIC8vIGxvYWQgdGhlIGxvY2FsZSBidW5kbGVzIG9mIHRoZSBzZWxlY3RlZCBsb2NhbGVcbiAgICAgICAgcmV0dXJuIHRoaXMubG9hZExvY2FsZUJ1bmRsZXMobGliTG9jYWxlKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlTG9jYWxlRGlyZWN0aW9uKCk7XG4gICAgICAgICAgICB0aGlzLmJ1bmRsZUxvYWRlZC5hbmd1bGFyID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMubm90aWZ5TG9jYWxlQ2hhbmdlZCgpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGRlZHVjZUFwcExvY2FsZSgpIHtcbiAgICAgICAgLy8gY29tcHV0YXRpb24gdG8gZmluZCBhcHAgZGVmYXVsdCBsb2NhbGVcbiAgICAgICAgY29uc3QgX2FjY2VwdExhbmcgPSB0aGlzLmdldEFjY2VwdGVkTGFuZ3VhZ2VzKCk7XG4gICAgICAgIGNvbnN0IF9kZWZhdWx0TGFuZ3VhZ2UgPSBnZXRXbVByb2plY3RQcm9wZXJ0aWVzKCkuZGVmYXVsdExhbmd1YWdlO1xuICAgICAgICBfYWNjZXB0TGFuZy5wdXNoKF9kZWZhdWx0TGFuZ3VhZ2UpO1xuXG4gICAgICAgIC8vIGNoZWNrcyB3aGV0aGVyIHVzZXIgcHJlZmVyZW5jZSBpcyBiYXNlZCBvbiBicm93c2VyIHNldCBsYW5ndWFnZXMgb3IgZGVmYXVsdCBsYW5ndWFnZSBzZXQgaW4gcHJvamVjdFxuICAgICAgICBsZXQgcHJlZmVyQnJvd3NlckxhbmcgPSBnZXRXbVByb2plY3RQcm9wZXJ0aWVzKCkucHJlZmVyQnJvd3Nlckxhbmc7XG4gICAgICAgIGlmICghcHJlZmVyQnJvd3NlckxhbmcpIHsgLy8gd2hlbiBwcmVmZXJCcm93c2VyTGFuZyBpcyBub3QgZGVmaW5lZCwgc2V0IHRvIGl0cyBkZWZhdWx0IHZhbHVlXG4gICAgICAgICAgICBwcmVmZXJCcm93c2VyTGFuZyAgPSB0cnVlO1xuICAgICAgICB9IGVsc2UgeyAvLyBjb252ZXJ0IHN0cmluZ2lmaWVkIGJvb2xlYW4gdmFsdWVzIHJlY2lldmVkIGZyb20gQkUgdG8gYm9vbGVhbnNcbiAgICAgICAgICAgIHByZWZlckJyb3dzZXJMYW5nPSAocHJlZmVyQnJvd3NlckxhbmcgPT09ICd0cnVlJyB8fCBwcmVmZXJCcm93c2VyTGFuZyA9PT0gdHJ1ZSkgPyB0cnVlIDogZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgX3N1cHBvcnRlZExhbmcgPSBPYmplY3Qua2V5cyhnZXRXbVByb2plY3RQcm9wZXJ0aWVzKCkuc3VwcG9ydGVkTGFuZ3VhZ2VzKSB8fCBbdGhpcy5kZWZhdWx0U3VwcG9ydGVkTG9jYWxlXTtcblxuICAgICAgICAvLyB3aGVuIHByZWZlcmVuY2UgaXMgZ2l2ZW4gdG8gYnJvd3NlciBzZXQgbGFuZ3VhZ2VzLCBkbyBub3QgcG9wdWxhdGUgX3NlbGVjdGVkRGVmYXVsdExhbmcgdmFyaWFibGVcbiAgICAgICAgbGV0IF9zZWxlY3RlZERlZmF1bHRMYW5nID0gcHJlZmVyQnJvd3NlckxhbmcgPyB1bmRlZmluZWQgOiBfZGVmYXVsdExhbmd1YWdlO1xuXG4gICAgICAgIGxldCBfYXBwU3VwcG9ydGVkTGFuZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIGZvciBjb3Jkb3ZhLCBjaGVjayBmb3IgbGFuZ3VhZ2UgaWdub3JpbmcgdGhlIGxvY2FsZVxuICAgICAgICAgKiBBcyB0aGUgbmF2aWdhdG9yLmxhbmd1YWdlcyBhbHdheXMgcmV0dXJucyB0aGUgbGFuZ3VhZ2Ugd2l0aCBsb2NhbGUgKGVuLXVzKVxuICAgICAgICAgKiBUaGUgc3VwcG9ydGVkTGFuZ3VhZ2VzIGZyb20gQkUgZG9lc24ndCBpbmNsdWRlIGxvY2FsZSAoZW4pIHdoaWNoIGxlYWRzIHRvIG1pc21hdGNoXG4gICAgICAgICAqL1xuICAgICAgICBpZiAoQ09OU1RBTlRTLmhhc0NvcmRvdmEpIHtcbiAgICAgICAgICAgIGxldCBzdXBwb3J0ZWRMYW5nID0gW107XG4gICAgICAgICAgICBmb3JFYWNoKF9hY2NlcHRMYW5nLCBmdW5jdGlvbiAobGFuZykge1xuICAgICAgICAgICAgICAgIGxldCBtYXRjaGVkTGFuZyA9IGZpbmQoX3N1cHBvcnRlZExhbmcsICh2YWwpID0+IGxhbmcgPT09IHZhbCkgfHwgZmluZChfc3VwcG9ydGVkTGFuZywgKHZhbCkgPT4gbGFuZy5zdGFydHNXaXRoKHZhbCkpO1xuICAgICAgICAgICAgICAgIGlmIChtYXRjaGVkTGFuZykge1xuICAgICAgICAgICAgICAgICAgICBzdXBwb3J0ZWRMYW5nLnB1c2gobWF0Y2hlZExhbmcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgX2FwcFN1cHBvcnRlZExhbmcgPSBzdXBwb3J0ZWRMYW5nWzBdO1xuICAgICAgICB9XG4gICAgICAgIC8vIGNoZWNrIGZvciB0aGUgc2Vzc2lvbiBzdG9yYWdlIHRvIGxvYWQgYW55IHByZS1yZXF1ZXN0ZWQgbG9jYWxlXG4gICAgICAgIGNvbnN0IF9kZWZhdWx0TGFuZyA9IGdldFNlc3Npb25TdG9yYWdlSXRlbSgnc2VsZWN0ZWRMb2NhbGUnKSB8fCBfc2VsZWN0ZWREZWZhdWx0TGFuZyB8fCBfYXBwU3VwcG9ydGVkTGFuZyB8fCBpbnRlcnNlY3Rpb24oX2FjY2VwdExhbmcsIF9zdXBwb3J0ZWRMYW5nKVswXSB8fCB0aGlzLmRlZmF1bHRTdXBwb3J0ZWRMb2NhbGU7XG4gICAgICAgIC8vIGlmIHRoZSBzdXBwb3J0ZWRMb2NhbGUgaXMgbm90IGF2YWlsYWJsZSBzZXQgaXQgdG8gZGVmYXVsdExvY2FsZVxuICAgICAgICBfc3VwcG9ydGVkTGFuZyA9IF9zdXBwb3J0ZWRMYW5nIHx8IFtfZGVmYXVsdExhbmddO1xuXG4gICAgICAgIGNvbnN0IGRlZmF1bHRMYW5ndWFnZSA9IF9kZWZhdWx0TGFuZyB8fCBfc3VwcG9ydGVkTGFuZ1swXTtcbiAgICAgICAgcmV0dXJuIGRlZmF1bHRMYW5ndWFnZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbG9hZERlZmF1bHRMb2NhbGUoKSB7XG4gICAgICAgIERhdGUucHJvdG90eXBlW1wibW9udGhcIl0gPSBEYXRlLnByb3RvdHlwZS5nZXRNb250aDtcbiAgICAgICAgY29uc3QgbG9jYWxlID0gdGhpcy5kZWR1Y2VBcHBMb2NhbGUoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0U2VsZWN0ZWRMb2NhbGUobG9jYWxlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0TG9jYWxpemVkTWVzc2FnZShtZXNzYWdlLCAuLi5hcmdzKSB7XG4gICAgICAgIHJldHVybiByZXBsYWNlKHRoaXMuYXBwTG9jYWxlW21lc3NhZ2VdLCBhcmdzKTtcbiAgICB9XG5cbiAgICAvLyBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIGFjY2VwdGVkIGxhbmd1YWdlcyBsaXN0XG4gICAgcHVibGljIGdldEFjY2VwdGVkTGFuZ3VhZ2VzKCkge1xuICAgICAgICBsZXQgbGFuZ3VhZ2VzO1xuICAgICAgICBpZiAoQ09OU1RBTlRTLmhhc0NvcmRvdmEpIHtcbiAgICAgICAgICAgIGxhbmd1YWdlcyA9IG5hdmlnYXRvci5sYW5ndWFnZXMgfHwgW25hdmlnYXRvci5sYW5ndWFnZV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsYW5ndWFnZXMgPSBkZWNvZGVVUklDb21wb25lbnQoZ2V0V21Qcm9qZWN0UHJvcGVydGllcygpLnByZWZlcnJlZExhbmd1YWdlIHx8ICcnKTtcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQWNjZXB0LUxhbmd1YWdlIEhlYWRlciB3aWxsIGNvbnRhaW4gc2V0IG9mIHN1cHBvcnRlZCBsb2NhbGUsIHNvIHRyeSBzcGxpdHRpbmcgdGhlIHN0cmluZyB0byBwcm9wZXIgbG9jYWxlIHNldFxuICAgICAgICAgICAgICogRXg6IGVuLGVuLVVTO3E9MC45LGRlO3E9MC42LGFyO3E9MC4yLGhpXG4gICAgICAgICAgICAgKlxuICAgICAgICAgICAgICogU3BsaXQgdGhlIGFib3ZlIGludG8gW2VuLGVuLXVzLGRlLGFyLGhpXVxuICAgICAgICAgICAgICogQHR5cGUge0FycmF5fVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBsYW5ndWFnZXMgPSBsYW5ndWFnZXMuc3BsaXQoJywnKS5tYXAoZnVuY3Rpb24obG9jYWxlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGxvY2FsZS5zcGxpdCgnOycpWzBdO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1hcChsYW5ndWFnZXMsIHRvTG93ZXIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBpbml0Q2FsZW5kYXJMb2NhbGUoKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRMb2NhbGUgIT09ICdlbicpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmxvYWRDYWxlbmRhckxvY2FsZUJ1bmRsZSh0aGlzLnNlbGVjdGVkTG9jYWxlLCB0cnVlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGlzQW5ndWxhckxvY2FsZUxvYWRlZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzQW5ndWxhckxvY2FsZUxvYWRlZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0d2lkZ2V0TG9jYWxlKGxvY2FsZSkge1xuICAgICAgICB0aGlzLmZvcm1hdHNCeUxvY2FsZVsnbnVtYmVyJ10gPSBsb2NhbGVbJ251bWJlciddO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXR3aWRnZXRMb2NhbGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1hdHNCeUxvY2FsZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG5vdGlmeUxvY2FsZUNoYW5nZWQoKSB7XG4gICAgICAgIGlmKHRoaXMuYnVuZGxlTG9hZGVkLm1vbWVudCAmJiB0aGlzLmJ1bmRsZUxvYWRlZC5mdWxsQ2FsZW5kYXIgJiYgdGhpcy5idW5kbGVMb2FkZWQuYW5ndWxhciAmJiB0aGlzLmJ1bmRsZUxvYWRlZC5hcHApIHtcbiAgICAgICAgICAgIHRoaXMuYXBwLm5vdGlmeSggICdsb2NhbGUtY2hhbmdlZCcsIHRoaXMuYnVuZGxlTG9hZGVkLmxpYkxvY2FsZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbn1cbiJdfQ==
|
|
335
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaTE4bi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcnVudGltZS1iYXNlL3NyYy9zZXJ2aWNlcy9pMThuLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFM0QsT0FBTyxFQUNILGVBQWUsRUFDZixtQkFBbUIsRUFDbkIsV0FBVyxFQUNYLHFCQUFxQixFQUNyQixzQkFBc0IsRUFDdEIsUUFBUSxFQUNSLFdBQVcsRUFDWCxXQUFXLEVBQ1gsT0FBTyxFQUNQLE1BQU0sRUFDTixxQkFBcUIsRUFDckIsR0FBRyxFQUNOLE1BQU0sVUFBVSxDQUFDO0FBQ2xCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUMsTUFBTSxXQUFXLENBQUM7Ozs7O0FBSTdGLE1BQU0sb0JBQW9CLEdBQUcsZ0JBQWdCLENBQUM7QUFDOUMsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPO0lBQ3ZILE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxP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O3VFQUFmLGVBQWUsV0FBZixlQUFlOztpRkFBZixlQUFlO2NBRDNCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IGRlZmluZUxvY2FsZSB9IGZyb20gJ25neC1ib290c3RyYXAvY2hyb25vcyc7XG5pbXBvcnQgeyBCc0xvY2FsZVNlcnZpY2UgfSBmcm9tICduZ3gtYm9vdHN0cmFwL2RhdGVwaWNrZXInO1xuXG5pbXBvcnQge1xuICAgIF9XTV9BUFBfUFJPSkVDVCxcbiAgICBBYnN0cmFjdEkxOG5TZXJ2aWNlLFxuICAgIEFwcERlZmF1bHRzLFxuICAgIGdldFNlc3Npb25TdG9yYWdlSXRlbSxcbiAgICBnZXRXbVByb2plY3RQcm9wZXJ0aWVzLFxuICAgIGlzTW9iaWxlLFxuICAgIGlzTW9iaWxlQXBwLFxuICAgIGxvYWRTY3JpcHRzLFxuICAgIHJlcGxhY2UsXG4gICAgc2V0Q1NTLFxuICAgIHNldFNlc3Npb25TdG9yYWdlSXRlbSxcbiAgICBBcHBcbn0gZnJvbSAnQHdtL2NvcmUnO1xuaW1wb3J0IHsgQ09OU1RBTlRTIH0gZnJvbSAnQHdtL3ZhcmlhYmxlcyc7XG5pbXBvcnQge2ZpbmQsIGZvckVhY2gsIGdldCwgaW5jbHVkZXMsIGludGVyc2VjdGlvbiwgaXNPYmplY3QsIG1hcCwgdG9Mb3dlcn0gZnJvbSBcImxvZGFzaC1lc1wiO1xuXG5kZWNsYXJlIGNvbnN0IG1vbWVudDtcblxuY29uc3QgQVBQX0xPQ0FMRV9ST09UX1BBVEggPSAncmVzb3VyY2VzL2kxOG4nO1xuY29uc3QgUlRMX0xBTkdVQUdFX0NPREVTID0gWydhcicsICdhci0wMDEnLCAnYXItYWUnLCAnYXItYmgnLCAnYXItZHonLCAnYXItZWcnLCAnYXItaXEnLCAnYXItam8nLCAnYXIta3cnLCAnYXItbGInLCAnYXItbHknLFxuICAgICdhci1tYScsICdhci1vbScsICdhci1xYScsICdhci1zYScsICdhci1zZCcsICdhci1zeScsICdhci10bicsICdhci15ZScsICdhcmMnLCAnYmNjJywgJ2JxaScsICdja2InLCAnZHYnLCAnZmEnLCAnZ2xrJyxcbiAgICAnaGUnLCAna3UnLCAnbXpuJywgJ3BuYicsICdwcycsICdzZCcsICd1ZycsICd1cicsICd5aSddO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgSTE4blNlcnZpY2VJbXBsIGV4dGVuZHMgQWJzdHJhY3RJMThuU2VydmljZSB7XG5cbiAgICBwcml2YXRlIHNlbGVjdGVkTG9jYWxlOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBkZWZhdWx0U3VwcG9ydGVkTG9jYWxlID0gJ2VuJztcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFwcExvY2FsZTogYW55O1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcHJlZmFiTG9jYWxlOiBNYXA8U3RyaW5nLCBhbnk+O1xuICAgIHByaXZhdGUgbWVzc2FnZXM6IGFueTtcbiAgICBwcml2YXRlIF9pc0FuZ3VsYXJMb2NhbGVMb2FkZWQgPSBmYWxzZTtcbiAgICBwcml2YXRlIGZvcm1hdHNCeUxvY2FsZSA9IHsndGltZXpvbmUnOiAnJywgJ251bWJlcic6ICcnfTtcbiAgICBwcml2YXRlIGdldCBhcHAoKSB7IHJldHVybiB0aGlzLmluai5nZXQoQXBwKSB9O1xuXG4gICAgcHJpdmF0ZSBidW5kbGVMb2FkZWQ6e1trZXk6c3RyaW5nXSA6IGFueX0gPSB7fTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlICRodHRwOiBIdHRwQ2xpZW50LFxuICAgICAgICBwcml2YXRlIGJzTG9jYWxlU2VydmljZTogQnNMb2NhbGVTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGFwcERlZmF1bHRzOiBBcHBEZWZhdWx0cyxcbiAgICAgICAgcHJpdmF0ZSBpbmo6IEluamVjdG9yXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuYXBwTG9jYWxlID0ge307XG4gICAgICAgIHRoaXMucHJlZmFiTG9jYWxlID0gbmV3IE1hcCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlTG9jYWxlRGlyZWN0aW9uKCkge1xuICAgICAgICBsZXQgZGlyZWN0aW9uOiAnbHRyJyB8ICdydGwnID0gJ2x0cic7XG4gICAgICAgIGlmIChSVExfTEFOR1VBR0VfQ09ERVMuaW5jbHVkZXModGhpcy5zZWxlY3RlZExvY2FsZSkpIHtcbiAgICAgICAgICAgIGRpcmVjdGlvbiA9ICdydGwnO1xuICAgICAgICB9XG5cbiAgICAgICAgc2V0Q1NTKGRvY3VtZW50LmJvZHksICdkaXJlY3Rpb24nLCBkaXJlY3Rpb24pO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdCgpIHtcbiAgICAgICAgdGhpcy5tZXNzYWdlcyA9IHt9O1xuXG4gICAgICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLmFwcExvY2FsZSwgdGhpcy5tZXNzYWdlcyk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFNlbGVjdGVkTG9jYWxlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkTG9jYWxlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXREZWZhdWx0U3VwcG9ydGVkTG9jYWxlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRTdXBwb3J0ZWRMb2NhbGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEFwcExvY2FsZSgpOiBhbnkge1xuICAgICAgICByZXR1cm4gdGhpcy5hcHBMb2NhbGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFByZWZhYkxvY2FsZUJ1bmRsZShwcmVmYWJOYW1lOiBzdHJpbmcpOiBhbnkge1xuICAgICAgICBpZiAoIXRoaXMucHJlZmFiTG9jYWxlLmhhcyhwcmVmYWJOYW1lKSkge1xuICAgICAgICAgICAgdGhpcy5wcmVmYWJMb2NhbGUuc2V0KHByZWZhYk5hbWUsIE9iamVjdC5jcmVhdGUodGhpcy5hcHBMb2NhbGUpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5wcmVmYWJMb2NhbGUuZ2V0KHByZWZhYk5hbWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZXh0ZW5kUHJlZmFiTWVzc2FnZXMobWVzc2FnZXM6IGFueSk6IHZvaWQge1xuICAgICAgICBpZiAoIW1lc3NhZ2VzLnByZWZhYk1lc3NhZ2VzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBPYmplY3Qua2V5cyhtZXNzYWdlcy5wcmVmYWJNZXNzYWdlcykuZm9yRWFjaCgocHJlZmFiTmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICBsZXQgYnVuZGxlID0gdGhpcy5wcmVmYWJMb2NhbGUuZ2V0KHByZWZhYk5hbWUpO1xuICAgICAgICAgICAgaWYgKCFidW5kbGUpIHtcbiAgICAgICAgICAgICAgICBidW5kbGUgPSBPYmplY3QuY3JlYXRlKHRoaXMuYXBwTG9jYWxlKTtcbiAgICAgICAgICAgICAgICB0aGlzLnByZWZhYkxvY2FsZS5zZXQocHJlZmFiTmFtZSwgYnVuZGxlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oYnVuZGxlLCBtZXNzYWdlcy5wcmVmYWJNZXNzYWdlc1twcmVmYWJOYW1lXSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZXh0ZW5kTWVzc2FnZXMobWVzc2FnZXM6IGFueSk6IHZvaWQge1xuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMubWVzc2FnZXMsIG1lc3NhZ2VzKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGxvYWRSZXNvdXJjZShwYXRoKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuJGh0dHAuZ2V0KHBhdGgpXG4gICAgICAgICAgICAudG9Qcm9taXNlKClcbiAgICAgICAgICAgIC5jYXRjaCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKGBlcnJvciBsb2FkaW5nIGxvY2FsZSByZXNvdXJjZSBmcm9tICR7cGF0aH1gKTtcbiAgICAgICAgICAgICAgICBQcm9taXNlLnJlc29sdmUoe30pO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGxvYWRBcHBMb2NhbGVCdW5kbGUoKSB7XG4gICAgICAgIGNvbnN0IGJhc2VQYXRoID0gX1dNX0FQUF9QUk9KRUNULmlzUHJldmlldyA/ICcnIDogIF9XTV9BUFBfUFJPSkVDVC5jZG5VcmxcbiAgICAgICAgdGhpcy5sb2FkUmVzb3VyY2UoIGJhc2VQYXRoICsgYCR7QVBQX0xPQ0FMRV9ST09UX1BBVEh9LyR7dGhpcy5zZWxlY3RlZExvY2FsZX0uanNvbmApXG4gICAgICAgICAgICAudGhlbihidW5kbGUgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZXh0ZW5kTWVzc2FnZXMoYnVuZGxlLm1lc3NhZ2VzKTtcbiAgICAgICAgICAgICAgICB0aGlzLmV4dGVuZFByZWZhYk1lc3NhZ2VzKGJ1bmRsZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5hcHBEZWZhdWx0cy5zZXRGb3JtYXRzKGJ1bmRsZS5mb3JtYXRzKTtcbiAgICAgICAgICAgICAgICB0aGlzLmJ1bmRsZUxvYWRlZC5hcHAgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMubm90aWZ5TG9jYWxlQ2hhbmdlZCgpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGxvYWRNb21lbnRMb2NhbGVCdW5kbGUobW9tZW50TG9jYWxlKSB7XG4gICAgICAgIGNvbnN0IF9jZG5VcmwgPSBfV01fQVBQX1BST0pFQ1QuY2RuVXJsIHx8IF9XTV9BUFBfUFJPSkVDVC5uZ0Rlc3Q7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkTG9jYWxlID09PSB0aGlzLmRlZmF1bHRTdXBwb3J0ZWRMb2NhbGUpIHtcbiAgICAgICAgICAgIG1vbWVudC5sb2NhbGUodGhpcy5kZWZhdWx0U3VwcG9ydGVkTG9jYWxlKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwYXRoID0gX2NkblVybCArIGBsb2NhbGVzL21vbWVudC8ke21vbWVudExvY2FsZX0uanNgO1xuICAgICAgICBsb2FkU2NyaXB0cyhbcGF0aF0sIHRydWUpLnRoZW4oKCk9PntcbiAgICAgICAgICAgIG1vbWVudC5sb2NhbGUodGhpcy5zZWxlY3RlZExvY2FsZSk7XG5cbiAgICAgICAgICAgIC8vIEZvciBuZ3ggYm9vdHN0cmFwIGxvY2FsZSwgZ2V0IHRoZSBjb25maWcgZnJvbSBzY3JpcHQgYW5kIGFwcGx5IGxvY2FsZVxuICAgICAgICAgICAgLy8gbW9tZW50LmxvY2FsZURhdGEobW9tZW50TG9jYWxlKSB3aWxsIHJldHVybiBtb21lbnQgbG9jYWxlIGluc3RhbmNlLiBfY29uZmlnIGluc2lkZSB3aWxsIGhhdmUgYWN0dWFsIGNvbmZpZ1xuICAgICAgICAgICAgbGV0IF9jb25maWcgPSBtb21lbnQubG9jYWxlRGF0YShtb21lbnRMb2NhbGUpO1xuICAgICAgICAgICAgX2NvbmZpZyA9IF9jb25maWcgJiYgX2NvbmZpZy5fY29uZmlnO1xuICAgICAgICAgICAgZGVmaW5lTG9jYWxlKHRoaXMuc2VsZWN0ZWRMb2NhbGUsIF9jb25maWcpO1xuICAgICAgICAgICAgdGhpcy5ic0xvY2FsZVNlcnZpY2UudXNlKHRoaXMuZ2V0U2VsZWN0ZWRMb2NhbGUoKSB8fCB0aGlzLmRlZmF1bHRTdXBwb3J0ZWRMb2NhbGUpO1xuICAgICAgICAgICAgdGhpcy5idW5kbGVMb2FkZWQubW9tZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMubm90aWZ5TG9jYWxlQ2hhbmdlZCgpO1xuICAgICAgICB9KVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBsb2FkQW5ndWxhckxvY2FsZUJ1bmRsZShhbmdMb2NhbGUpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KHJlc29sdmUgPT4ge1xuICAgICAgICAgICAgY29uc3QgX2NkblVybCA9IF9XTV9BUFBfUFJPSkVDVC5jZG5VcmwgfHwgX1dNX0FQUF9QUk9KRUNULm5nRGVzdDtcbiAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkTG9jYWxlID09PSB0aGlzLmRlZmF1bHRTdXBwb3J0ZWRMb2NhbGUpIHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgcGF0aCA9IF9jZG5VcmwgKyBgbG9jYWxlcy9hbmd1bGFyL2dsb2JhbC8ke2FuZ0xvY2FsZX0uanNgO1xuXG4gICAgICAgICAgICBsb2FkU2NyaXB0cyhbcGF0aF0sIHRydWUpLnRoZW4oKCk9PntcbiAgICAgICAgICAgICAgICB0aGlzLl9pc0FuZ3VsYXJMb2NhbGVMb2FkZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgIH0sIHJlc29sdmUpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgbG9hZENhbGVuZGFyTG9jYWxlQnVuZGxlKGNhbGVuZGFyTG9jYWxlLCBmb3JjZSA9IGZhbHNlKSB7XG4gICAgICAgIGNvbnN0IF9jZG5VcmwgPSBfV01fQVBQX1BST0pFQ1QuY2RuVXJsIHx8IF9XTV9BUFBfUFJPSkVDVC5uZ0Rlc3Q7XG4gICAgICAgIGxldCBwYXRoOiBzdHJpbmc7XG4gICAgICAgIGlmIChjYWxlbmRhckxvY2FsZSkge1xuICAgICAgICAgICAgcGF0aCA9IF9jZG5VcmwgKyBgbG9jYWxlcy9mdWxsY2FsZW5kYXIvJHtjYWxlbmRhckxvY2FsZX0uanNgO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gcmV0dXJuIGluIGNhc2Ugb2YgbW9iaWxlIGFwcCBvciBpZiBzZWxlY3RlZCBsb2NhbGUgaXMgZGVmYXVsdCBzdXBwb3J0ZWQgbG9jYWxlLlxuICAgICAgICBpZiAoIWZvcmNlICYmIChpc01vYmlsZSgpIHx8IGlzTW9iaWxlQXBwKCkgfHwgdGhpcy5zZWxlY3RlZExvY2FsZSA9PT0gdGhpcy5kZWZhdWx0U3VwcG9ydGVkTG9jYWxlKSkge1xuICAgICAgICAgICAgdGhpcy5idW5kbGVMb2FkZWQuZnVsbENhbGVuZGFyID0gdHJ1ZTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENhbGwgdGhlIHNjcmlwdC4gSW4gc2NyaXB0LCBtb21lbnQgZGVmaW5lcyB0aGUgbG9hZGVkIGxvY2FsZVxuICAgICAgICByZXR1cm4gbG9hZFNjcmlwdHMoW3BhdGhdLCB0cnVlKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgbG9hZE1vbWVudFRpbWVab25lQnVuZGxlKGxvY2FsZSwgY29tcEluc3RhbmNlPykge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4ocmVzb2x2ZSA9PiB7XG4gICAgICAgICAgICBjb25zdCBfY2RuVXJsID0gX1dNX0FQUF9QUk9KRUNULmNkblVybCB8fCBfV01fQVBQX1BST0pFQ1QubmdEZXN0O1xuICAgICAgICAgICAgY29uc3QgcGF0aCA9IF9jZG5VcmwgKyBgbG9jYWxlcy9tb21lbnQtdGltZXpvbmUvbW9tZW50LXRpbWV6b25lLXdpdGgtZGF0YS5qc2A7XG4gICAgICAgICAgICBsb2FkU2NyaXB0cyhbcGF0aF0sIHRydWUpLnRoZW4oKCk9PntcbiAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgKiBJZiBsb2NhbGUgaXMgcHJvdmlkZWQgaW4gdGhlIGZvcm0gb2Ygb2Zmc2V0IGFuZCBub3QgdGltZXpvbmUgbmFtZSwgZGVkdWNlIHRoZSBuYW1lLlxuICAgICAgICAgICAgICAgICAqIElmIGxvY2FsZSBpcyBwcm92aWRlZCBhcyBHTVQrOSwgbmFtZSB3aWxsIGJlIGRlZHVjZWQgYXMgQXNpYS9Ub2t5b1xuICAgICAgICAgICAgICAgICAqL1xuXG4gICAgICAgICAgICAgICAgbGV0IGxvY2FsZU9iaiA9IGxvY2FsZTtcbiAgICAgICAgICAgICAgICBsb2NhbGUgPSBsb2NhbGVPYmpbJ3RpbWV6b25lJ107XG4gICAgICAgICAgICAgICAgY29uc3QgbG9jYWxlSW5kZXggPSBsb2NhbGUuaW5kZXhPZignKycpO1xuICAgICAgICAgICAgICAgIGlmIChsb2NhbGVJbmRleCA+IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChsb2NhbGVJbmRleCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsZSA9IGxvY2FsZS5zdWJzdHIobG9jYWxlSW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGxvY2FsZU9ialsndGltZXpvbmUnXSA9IGZpbmQobW9tZW50LnR6Lm5hbWVzKCksICh0aW1lem9uZU5hbWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2NhbGUgPT09IG1vbWVudC50eih0aW1lem9uZU5hbWUpLmZvcm1hdCgnWicpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbW9tZW50LnR6LnNldERlZmF1bHQobG9jYWxlKTtcbiAgICAgICAgICAgICAgICBjb25zdCBsb2NhbGVEYXRhID0gIGNvbXBJbnN0YW5jZSAmJiBjb21wSW5zdGFuY2UuZm9ybWF0c0J5TG9jYWxlID8gY29tcEluc3RhbmNlLmZvcm1hdHNCeUxvY2FsZSA6IHRoaXMuZm9ybWF0c0J5TG9jYWxlO1xuICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24obG9jYWxlRGF0YSwgbG9jYWxlT2JqKTtcbiAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICB9LCByZXNvbHZlKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGxvYWRMb2NhbGVCdW5kbGVzKGxpYkxvY2FsZSkge1xuICAgICAgICBpZiAobGliTG9jYWxlLm1vbWVudCkge1xuICAgICAgICAgICAgdGhpcy5sb2FkTW9tZW50TG9jYWxlQnVuZGxlKGxpYkxvY2FsZS5tb21lbnQpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc2VsZWN0ZWRMb2NhbGUgPT09IHRoaXMuZGVmYXVsdFN1cHBvcnRlZExvY2FsZSkge1xuICAgICAgICAgICAgdGhpcy5ic0xvY2FsZVNlcnZpY2UudXNlKHRoaXMuZ2V0U2VsZWN0ZWRMb2NhbGUoKSB8fCB0aGlzLmRlZmF1bHRTdXBwb3J0ZWRMb2NhbGUpO1xuICAgICAgICAgICAgdGhpcy5idW5kbGVMb2FkZWQubW9tZW50ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobGliTG9jYWxlLmZ1bGxDYWxlbmRhciAmJiB3aW5kb3dbJ0Z1bGxDYWxlbmRhciddKSB7XG4gICAgICAgICAgICB0aGlzLmxvYWRDYWxlbmRhckxvY2FsZUJ1bmRsZShsaWJMb2NhbGUuZnVsbENhbGVuZGFyKT8udGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5idW5kbGVMb2FkZWQuZnVsbENhbGVuZGFyID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLm5vdGlmeUxvY2FsZUNoYW5nZWQoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5idW5kbGVMb2FkZWQuZnVsbENhbGVuZGFyID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobGliTG9jYWxlLmFuZ3VsYXIpIHtcbiAgICAgICAgICAgIHRoaXMubG9hZEFwcExvY2FsZUJ1bmRsZSgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmxvYWRBbmd1bGFyTG9jYWxlQnVuZGxlKGxpYkxvY2FsZS5hbmd1bGFyKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0VGltZXpvbmUobG9jYWxlLCBjb21wSW5zdGFuY2U/KSB7XG4gICAgICAgIHRoaXMubG9hZE1vbWVudFRpbWVab25lQnVuZGxlKGxvY2FsZSwgY29tcEluc3RhbmNlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0VGltZXpvbmUoY29tcEluc3RhbmNlPykge1xuICAgICAgICBjb25zdCBwYWdlQ29uZmlnID0gZ2V0KHRoaXMuYXBwLCAnYWN0aXZlUGFnZS5mb3JtYXRzQnlMb2NhbGUudGltZXpvbmUnKTtcbiAgICAgICAgY29uc3QgY29tcENvbmZpZyA9IGdldChjb21wSW5zdGFuY2UsICdmb3JtYXRzQnlMb2NhbGUudGltZXpvbmUnKTtcbiAgICAgICAgaWYgKGNvbXBDb25maWcpIHtcbiAgICAgICAgICAgIHJldHVybiBjb21wQ29uZmlnO1xuICAgICAgICB9IGVsc2UgaWYgKHBhZ2VDb25maWcpIHtcbiAgICAgICAgICAgIHJldHVybiBwYWdlQ29uZmlnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0c0J5TG9jYWxlWyd0aW1lem9uZSddO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGdldEZvcm1hdHNCeUxvY2FsZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0c0J5TG9jYWxlO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRTZWxlY3RlZExvY2FsZShsb2NhbGUpIHtcblxuICAgICAgICAvLyBjaGVjayBpZiB0aGUgZXZlbnQgaXMgcHJvcGFnYXRlZCBmcm9tIHRoZSBzZWxlY3Qgb3IgYW55IHN1Y2ggd2lkZ2V0XG4gICAgICAgIGlmIChpc09iamVjdChsb2NhbGUpKSB7XG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICBsb2NhbGUgPSBsb2NhbGUuZGF0YXZhbHVlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbGliTG9jYWxlID0gZ2V0V21Qcm9qZWN0UHJvcGVydGllcygpLnN1cHBvcnRlZExhbmd1YWdlc1tsb2NhbGVdO1xuICAgICAgICBjb25zdCBzdXBwb3J0ZWRMb2NhbGUgPSBPYmplY3Qua2V5cyhnZXRXbVByb2plY3RQcm9wZXJ0aWVzKCkuc3VwcG9ydGVkTGFuZ3VhZ2VzKTtcblxuICAgICAgICBpZiAoIWluY2x1ZGVzKHN1cHBvcnRlZExvY2FsZSwgbG9jYWxlKSkge1xuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFsb2NhbGUgfHwgbG9jYWxlID09PSB0aGlzLnNlbGVjdGVkTG9jYWxlKSB7XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICAgIH1cblxuICAgICAgICBzZXRTZXNzaW9uU3RvcmFnZUl0ZW0oJ3NlbGVjdGVkTG9jYWxlJywgbG9jYWxlKTtcblxuICAgICAgICB0aGlzLnNlbGVjdGVkTG9jYWxlID0gbG9jYWxlO1xuXG4gICAgICAgIC8vIHJlc2V0IHRoZSBsb2NhbGVEYXRhIG9iamVjdFxuICAgICAgICB0aGlzLmluaXQoKTtcblxuICAgICAgICB0aGlzLmJ1bmRsZUxvYWRlZC5tb21lbnQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5idW5kbGVMb2FkZWQuZnVsbENhbGVuZGFyID0gZmFsc2U7XG4gICAgICAgIHRoaXMuYnVuZGxlTG9hZGVkLmFwcCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmJ1bmRsZUxvYWRlZC5hbmd1bGFyID0gZmFsc2U7XG4gICAgICAgIHRoaXMuYnVuZGxlTG9hZGVkLmxpYkxvY2FsZSA9IGxpYkxvY2FsZTtcblxuICAgICAgICAvLyBsb2FkIHRoZSBsb2NhbGUgYnVuZGxlcyBvZiB0aGUgc2VsZWN0ZWQgbG9jYWxlXG4gICAgICAgIHJldHVybiB0aGlzLmxvYWRMb2NhbGVCdW5kbGVzKGxpYkxvY2FsZSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUxvY2FsZURpcmVjdGlvbigpO1xuICAgICAgICAgICAgdGhpcy5idW5kbGVMb2FkZWQuYW5ndWxhciA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLm5vdGlmeUxvY2FsZUNoYW5nZWQoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBkZWR1Y2VBcHBMb2NhbGUoKSB7XG4gICAgICAgIC8vIGNvbXB1dGF0aW9uIHRvIGZpbmQgYXBwIGRlZmF1bHQgbG9jYWxlXG4gICAgICAgIGNvbnN0IF9hY2NlcHRMYW5nID0gdGhpcy5nZXRBY2NlcHRlZExhbmd1YWdlcygpO1xuICAgICAgICBjb25zdCBfZGVmYXVsdExhbmd1YWdlID0gZ2V0V21Qcm9qZWN0UHJvcGVydGllcygpLmRlZmF1bHRMYW5ndWFnZTtcbiAgICAgICAgX2FjY2VwdExhbmcucHVzaChfZGVmYXVsdExhbmd1YWdlKTtcblxuICAgICAgICAvLyBjaGVja3Mgd2hldGhlciB1c2VyIHByZWZlcmVuY2UgaXMgYmFzZWQgb24gYnJvd3NlciBzZXQgbGFuZ3VhZ2VzIG9yIGRlZmF1bHQgbGFuZ3VhZ2Ugc2V0IGluIHByb2plY3RcbiAgICAgICAgbGV0IHByZWZlckJyb3dzZXJMYW5nID0gZ2V0V21Qcm9qZWN0UHJvcGVydGllcygpLnByZWZlckJyb3dzZXJMYW5nO1xuICAgICAgICBpZiAoIXByZWZlckJyb3dzZXJMYW5nKSB7IC8vIHdoZW4gcHJlZmVyQnJvd3NlckxhbmcgaXMgbm90IGRlZmluZWQsIHNldCB0byBpdHMgZGVmYXVsdCB2YWx1ZVxuICAgICAgICAgICAgcHJlZmVyQnJvd3NlckxhbmcgID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHsgLy8gY29udmVydCBzdHJpbmdpZmllZCBib29sZWFuIHZhbHVlcyByZWNpZXZlZCBmcm9tIEJFIHRvIGJvb2xlYW5zXG4gICAgICAgICAgICBwcmVmZXJCcm93c2VyTGFuZz0gKHByZWZlckJyb3dzZXJMYW5nID09PSAndHJ1ZScgfHwgcHJlZmVyQnJvd3NlckxhbmcgPT09IHRydWUpID8gdHJ1ZSA6IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IF9zdXBwb3J0ZWRMYW5nID0gT2JqZWN0LmtleXMoZ2V0V21Qcm9qZWN0UHJvcGVydGllcygpLnN1cHBvcnRlZExhbmd1YWdlcykgfHwgW3RoaXMuZGVmYXVsdFN1cHBvcnRlZExvY2FsZV07XG5cbiAgICAgICAgLy8gd2hlbiBwcmVmZXJlbmNlIGlzIGdpdmVuIHRvIGJyb3dzZXIgc2V0IGxhbmd1YWdlcywgZG8gbm90IHBvcHVsYXRlIF9zZWxlY3RlZERlZmF1bHRMYW5nIHZhcmlhYmxlXG4gICAgICAgIGxldCBfc2VsZWN0ZWREZWZhdWx0TGFuZyA9IHByZWZlckJyb3dzZXJMYW5nID8gdW5kZWZpbmVkIDogX2RlZmF1bHRMYW5ndWFnZTtcblxuICAgICAgICBsZXQgX2FwcFN1cHBvcnRlZExhbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBmb3IgY29yZG92YSwgY2hlY2sgZm9yIGxhbmd1YWdlIGlnbm9yaW5nIHRoZSBsb2NhbGVcbiAgICAgICAgICogQXMgdGhlIG5hdmlnYXRvci5sYW5ndWFnZXMgYWx3YXlzIHJldHVybnMgdGhlIGxhbmd1YWdlIHdpdGggbG9jYWxlIChlbi11cylcbiAgICAgICAgICogVGhlIHN1cHBvcnRlZExhbmd1YWdlcyBmcm9tIEJFIGRvZXNuJ3QgaW5jbHVkZSBsb2NhbGUgKGVuKSB3aGljaCBsZWFkcyB0byBtaXNtYXRjaFxuICAgICAgICAgKi9cbiAgICAgICAgaWYgKENPTlNUQU5UUy5oYXNDb3Jkb3ZhKSB7XG4gICAgICAgICAgICBsZXQgc3VwcG9ydGVkTGFuZyA9IFtdO1xuICAgICAgICAgICAgZm9yRWFjaChfYWNjZXB0TGFuZywgZnVuY3Rpb24gKGxhbmcpIHtcbiAgICAgICAgICAgICAgICBsZXQgbWF0Y2hlZExhbmcgPSBmaW5kKF9zdXBwb3J0ZWRMYW5nLCAodmFsKSA9PiBsYW5nID09PSB2YWwpIHx8IGZpbmQoX3N1cHBvcnRlZExhbmcsICh2YWwpID0+IGxhbmcuc3RhcnRzV2l0aCh2YWwpKTtcbiAgICAgICAgICAgICAgICBpZiAobWF0Y2hlZExhbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgc3VwcG9ydGVkTGFuZy5wdXNoKG1hdGNoZWRMYW5nKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIF9hcHBTdXBwb3J0ZWRMYW5nID0gc3VwcG9ydGVkTGFuZ1swXTtcbiAgICAgICAgfVxuICAgICAgICAvLyBjaGVjayBmb3IgdGhlIHNlc3Npb24gc3RvcmFnZSB0byBsb2FkIGFueSBwcmUtcmVxdWVzdGVkIGxvY2FsZVxuICAgICAgICBjb25zdCBfZGVmYXVsdExhbmcgPSBnZXRTZXNzaW9uU3RvcmFnZUl0ZW0oJ3NlbGVjdGVkTG9jYWxlJykgfHwgX3NlbGVjdGVkRGVmYXVsdExhbmcgfHwgX2FwcFN1cHBvcnRlZExhbmcgfHwgaW50ZXJzZWN0aW9uKF9hY2NlcHRMYW5nLCBfc3VwcG9ydGVkTGFuZylbMF0gfHwgdGhpcy5kZWZhdWx0U3VwcG9ydGVkTG9jYWxlO1xuICAgICAgICAvLyBpZiB0aGUgc3VwcG9ydGVkTG9jYWxlIGlzIG5vdCBhdmFpbGFibGUgc2V0IGl0IHRvIGRlZmF1bHRMb2NhbGVcbiAgICAgICAgX3N1cHBvcnRlZExhbmcgPSBfc3VwcG9ydGVkTGFuZyB8fCBbX2RlZmF1bHRMYW5nXTtcblxuICAgICAgICBjb25zdCBkZWZhdWx0TGFuZ3VhZ2UgPSBfZGVmYXVsdExhbmcgfHwgX3N1cHBvcnRlZExhbmdbMF07XG4gICAgICAgIHJldHVybiBkZWZhdWx0TGFuZ3VhZ2U7XG4gICAgfVxuXG4gICAgcHVibGljIGxvYWREZWZhdWx0TG9jYWxlKCkge1xuICAgICAgICBEYXRlLnByb3RvdHlwZVtcIm1vbnRoXCJdID0gRGF0ZS5wcm90b3R5cGUuZ2V0TW9udGg7XG4gICAgICAgIGNvbnN0IGxvY2FsZSA9IHRoaXMuZGVkdWNlQXBwTG9jYWxlKCk7XG4gICAgICAgIHJldHVybiB0aGlzLnNldFNlbGVjdGVkTG9jYWxlKGxvY2FsZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldExvY2FsaXplZE1lc3NhZ2UobWVzc2FnZSwgLi4uYXJncykge1xuICAgICAgICByZXR1cm4gcmVwbGFjZSh0aGlzLmFwcExvY2FsZVttZXNzYWdlXSwgYXJncyk7XG4gICAgfVxuXG4gICAgLy8gVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBhY2NlcHRlZCBsYW5ndWFnZXMgbGlzdFxuICAgIHB1YmxpYyBnZXRBY2NlcHRlZExhbmd1YWdlcygpIHtcbiAgICAgICAgbGV0IGxhbmd1YWdlcztcbiAgICAgICAgaWYgKENPTlNUQU5UUy5oYXNDb3Jkb3ZhKSB7XG4gICAgICAgICAgICBsYW5ndWFnZXMgPSBuYXZpZ2F0b3IubGFuZ3VhZ2VzIHx8IFtuYXZpZ2F0b3IubGFuZ3VhZ2VdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbGFuZ3VhZ2VzID0gZGVjb2RlVVJJQ29tcG9uZW50KGdldFdtUHJvamVjdFByb3BlcnRpZXMoKS5wcmVmZXJyZWRMYW5ndWFnZSB8fCAnJyk7XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEFjY2VwdC1MYW5ndWFnZSBIZWFkZXIgd2lsbCBjb250YWluIHNldCBvZiBzdXBwb3J0ZWQgbG9jYWxlLCBzbyB0cnkgc3BsaXR0aW5nIHRoZSBzdHJpbmcgdG8gcHJvcGVyIGxvY2FsZSBzZXRcbiAgICAgICAgICAgICAqIEV4OiBlbixlbi1VUztxPTAuOSxkZTtxPTAuNixhcjtxPTAuMixoaVxuICAgICAgICAgICAgICpcbiAgICAgICAgICAgICAqIFNwbGl0IHRoZSBhYm92ZSBpbnRvIFtlbixlbi11cyxkZSxhcixoaV1cbiAgICAgICAgICAgICAqIEB0eXBlIHtBcnJheX1cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgbGFuZ3VhZ2VzID0gbGFuZ3VhZ2VzLnNwbGl0KCcsJykubWFwKGZ1bmN0aW9uKGxvY2FsZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBsb2NhbGUuc3BsaXQoJzsnKVswXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtYXAobGFuZ3VhZ2VzLCB0b0xvd2VyKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaW5pdENhbGVuZGFyTG9jYWxlKCk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkTG9jYWxlICE9PSAnZW4nKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5sb2FkQ2FsZW5kYXJMb2NhbGVCdW5kbGUodGhpcy5zZWxlY3RlZExvY2FsZSwgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBpc0FuZ3VsYXJMb2NhbGVMb2FkZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc0FuZ3VsYXJMb2NhbGVMb2FkZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIHNldHdpZGdldExvY2FsZShsb2NhbGUpIHtcbiAgICAgICAgdGhpcy5mb3JtYXRzQnlMb2NhbGVbJ251bWJlciddID0gbG9jYWxlWydudW1iZXInXTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0d2lkZ2V0TG9jYWxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5mb3JtYXRzQnlMb2NhbGU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBub3RpZnlMb2NhbGVDaGFuZ2VkKCkge1xuICAgICAgICBpZih0aGlzLmJ1bmRsZUxvYWRlZC5tb21lbnQgJiYgdGhpcy5idW5kbGVMb2FkZWQuZnVsbENhbGVuZGFyICYmIHRoaXMuYnVuZGxlTG9hZGVkLmFuZ3VsYXIgJiYgdGhpcy5idW5kbGVMb2FkZWQuYXBwKSB7XG4gICAgICAgICAgICB0aGlzLmFwcC5ub3RpZnkoICAnbG9jYWxlLWNoYW5nZWQnLCB0aGlzLmJ1bmRsZUxvYWRlZC5saWJMb2NhbGUpO1xuICAgICAgICB9XG4gICAgfVxuXG59XG4iXX0=
|
|
@@ -13,7 +13,7 @@ const resolvedPrefabs = new Set();
|
|
|
13
13
|
const getPrefabResourceUrl = (resourcePath, resourceBasePath) => {
|
|
14
14
|
let _url = resourcePath;
|
|
15
15
|
if (!stringStartsWith(resourcePath, 'http://|https://|//')) {
|
|
16
|
-
_url = (resourceBasePath + _url)
|
|
16
|
+
_url = (resourceBasePath + _url);
|
|
17
17
|
}
|
|
18
18
|
return _url;
|
|
19
19
|
};
|
|
@@ -92,4 +92,4 @@ export class PrefabManagerService {
|
|
|
92
92
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PrefabManagerService, [{
|
|
93
93
|
type: Injectable
|
|
94
94
|
}], () => [{ type: i1.MetadataService }, { type: i2.PrefabConfigProvider }], null); })();
|
|
95
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
95
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlZmFiLW1hbmFnZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3J1bnRpbWUtYmFzZS9zcmMvc2VydmljZXMvcHJlZmFiLW1hbmFnZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQzFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFaEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxXQUFXLENBQUM7Ozs7QUFFbkMsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDO0FBQzNDLE1BQU0sVUFBVSxHQUFHLElBQUksR0FBRyxFQUF3QixDQUFDO0FBQ25ELE1BQU0sZUFBZSxHQUFHLElBQUksR0FBRyxFQUFVLENBQUM7QUFFMUMsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxFQUFFO0lBQzVELElBQUksSUFBSSxHQUFHLFlBQVksQ0FBQztJQUN4QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLHFCQUFxQixDQUFDLEVBQUUsQ0FBQztRQUN6RCxJQUFJLEdBQUcsQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUM7QUFDaEIsQ0FBQyxDQUFDO0FBR0YsTUFBTSxPQUFPLG9CQUFvQjtJQUU3QixZQUNZLFNBQTBCLEVBQzFCLG9CQUEwQztRQUQxQyxjQUFTLEdBQVQs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LENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDbEMsT0FBTyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDN0IsQ0FBQztRQUVELElBQUksZ0JBQWdCLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDbkMsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzlCLENBQUM7UUFFRCxJQUFJLFVBQVUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUM3QixPQUFPLFVBQVUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDdEMsQ0FBQztRQUVELElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFL0IsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQzthQUM1QixJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDWCxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUM7Z0JBQ2YsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDO2dCQUNuQyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUM7Z0JBQ3BDLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDO2FBQ25DLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO2dCQUNULElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDbkMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNwQyxDQUFDLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQztxRkF0RlEsb0JBQW9CO3VFQUFwQixvQkFBb0IsV0FBcEIsb0JBQW9COztpRkFBcEIsb0JBQW9CO2NBRGhDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IGxvYWRTY3JpcHRzLCBsb2FkU3R5bGVTaGVldHMsIHN0cmluZ1N0YXJ0c1dpdGggfSBmcm9tICdAd20vY29yZSc7XG5pbXBvcnQgeyBNZXRhZGF0YVNlcnZpY2UgfSBmcm9tICdAd20vdmFyaWFibGVzJztcblxuaW1wb3J0IHsgUHJlZmFiQ29uZmlnUHJvdmlkZXIgfSBmcm9tICcuLi90eXBlcy90eXBlcyc7XG5pbXBvcnQgeyBnZXRQcmVmYWJCYXNlVXJsLCBpc1ByZWZhYkluUHJldmlldyB9IGZyb20gJy4uL3V0aWwvdXRpbHMnO1xuaW1wb3J0IHtlbmRzV2l0aH0gZnJvbSBcImxvZGFzaC1lc1wiO1xuXG5jb25zdCBwcmVmYWJzV2l0aEVycm9yID0gbmV3IFNldDxzdHJpbmc+KCk7XG5jb25zdCBpblByb2dyZXNzID0gbmV3IE1hcDxzdHJpbmcsIFByb21pc2U8YW55Pj4oKTtcbmNvbnN0IHJlc29sdmVkUHJlZmFicyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuXG5jb25zdCBnZXRQcmVmYWJSZXNvdXJjZVVybCA9IChyZXNvdXJjZVBhdGgsIHJlc291cmNlQmFzZVBhdGgpID0+IHtcbiAgICBsZXQgX3VybCA9IHJlc291cmNlUGF0aDtcbiAgICBpZiAoIXN0cmluZ1N0YXJ0c1dpdGgocmVzb3VyY2VQYXRoLCAnaHR0cDovL3xodHRwczovL3wvLycpKSB7XG4gICAgICAgIF91cmwgPSAocmVzb3VyY2VCYXNlUGF0aCArIF91cmwpO1xuICAgIH1cbiAgICByZXR1cm4gX3VybDtcbn07XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBQcmVmYWJNYW5hZ2VyU2VydmljZSB7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSAkbWV0YWRhdGE6IE1ldGFkYXRhU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBwcmVmYWJDb25maWdQcm92aWRlcjogUHJlZmFiQ29uZmlnUHJvdmlkZXJcbiAgICApIHt9XG5cbiAgICBwdWJsaWMgZ2V0Q29uZmlnKHByZWZhYk5hbWUpOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5wcmVmYWJDb25maWdQcm92aWRlci5nZXRDb25maWcocHJlZmFiTmFtZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGxvYWRTZXJ2aWNlRGVmcyhwcmVmYWJOYW1lKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGlzUHJlZmFiSW5QcmV2aWV3KHByZWZhYk5hbWUpID8gUHJvbWlzZS5yZXNvbHZlKCkgOiB0aGlzLiRtZXRhZGF0YS5sb2FkKHByZWZhYk5hbWUpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBsb2FkU3R5bGVzKHByZWZhYk5hbWUsIHtyZXNvdXJjZXM6IHtzdHlsZXN9fSA9IHtyZXNvdXJjZXM6IHtzdHlsZXM6IFtdfX0pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgYmFzZVVybCA9IGdldFByZWZhYkJhc2VVcmwocHJlZmFiTmFtZSk7XG4gICAgICAgIGNvbnN0IF9zdHlsZXMgPSBzdHlsZXMubWFwKHVybCA9PiB7XG4gICAgICAgICAgICBpZiAoIWVuZHNXaXRoKHVybCwgJy9wYWdlcy9NYWluL01haW4uY3NzJykpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZ2V0UHJlZmFiUmVzb3VyY2VVcmwodXJsLCBiYXNlVXJsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH0pLmZpbHRlcih1cmwgPT4gISF1cmwpO1xuXG4gICAgICAgIGxvYWRTdHlsZVNoZWV0cyhfc3R5bGVzKTtcblxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgfVxuXG4gICAgLy8gVE9ETyBbVmluYXldIC0gaW1wbGVtZW50IG9uUHJlZmFiUmVzb3VyY2VMb2FkXG4gICAgcHJvdGVjdGVkIGxvYWRTY3JpcHRzKHByZWZhYk5hbWUsIHtyZXNvdXJjZXM6IHtzY3JpcHRzfX0gPSB7cmVzb3VyY2VzOiB7c2NyaXB0czogW119fSk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIGNvbnN0IGJhc2VVcmwgPSBnZXRQcmVmYWJCYXNlVXJsKHByZWZhYk5hbWUpO1xuICAgICAgICBzY3JpcHRzID0gc2NyaXB0cy5maWx0ZXIoc2NyaXB0ID0+ICFzY3JpcHQuc3RhcnRzV2l0aCgnbnBtOi8vJykpO1xuICAgICAgICBjb25zdCBfc2NyaXB0cyA9IHNjcmlwdHMubWFwKHVybCA9PiBnZXRQcmVmYWJSZXNvdXJjZVVybCh1cmwsIGJhc2VVcmwpKTtcblxuICAgICAgICByZXR1cm4gbG9hZFNjcmlwdHMoX3NjcmlwdHMsIHRydWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0SW5Qcm9ncmVzcyhwcmVmYWJOYW1lOiBzdHJpbmcpIHtcbiAgICAgICAgbGV0IF9yZXM7XG4gICAgICAgIGxldCBfcmVqO1xuICAgICAgICBjb25zdCBfcHJvbWlzZTogYW55ID0gbmV3IFByb21pc2UoKHJlcywgcmVqKSA9PiB7XG4gICAgICAgICAgICBfcmVzID0gcmVzO1xuICAgICAgICAgICAgX3JlaiA9IHJlajtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgX3Byb21pc2UucmVzb2x2ZSA9IF9yZXM7XG4gICAgICAgIF9wcm9taXNlLnJlamVjdCA9IF9yZWo7XG5cbiAgICAgICAgaW5Qcm9ncmVzcy5zZXQocHJlZmFiTmFtZSwgX3Byb21pc2UpO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVzb2x2ZUluUHJvZ3Jlc3MocHJlZmFiTmFtZTogc3RyaW5nKSB7XG4gICAgICAgIGlmIChpblByb2dyZXNzLmdldChwcmVmYWJOYW1lKSkge1xuICAgICAgICAgICAgKGluUHJvZ3Jlc3MuZ2V0KHByZWZhYk5hbWUpIGFzIGFueSkucmVzb2x2ZSgpO1xuICAgICAgICAgICAgaW5Qcm9ncmVzcy5kZWxldGUocHJlZmFiTmFtZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgbG9hZERlcGVuZGVuY2llcyhwcmVmYWJOYW1lKTogUHJvbWlzZTx2b2lkPiB7XG5cbiAgICAgICAgaWYgKHJlc29sdmVkUHJlZmFicy5oYXMocHJlZmFiTmFtZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwcmVmYWJzV2l0aEVycm9yLmhhcyhwcmVmYWJOYW1lKSkge1xuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCcnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpblByb2dyZXNzLmdldChwcmVmYWJOYW1lKSkge1xuICAgICAgICAgICAgcmV0dXJuIGluUHJvZ3Jlc3MuZ2V0KHByZWZhYk5hbWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZXRJblByb2dyZXNzKHByZWZhYk5hbWUpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmdldENvbmZpZyhwcmVmYWJOYW1lKVxuICAgICAgICAgICAgLnRoZW4oY29uZmlnID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoW1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRTdHlsZXMocHJlZmFiTmFtZSwgY29uZmlnKSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkU2NyaXB0cyhwcmVmYWJOYW1lLCBjb25maWcpLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRTZXJ2aWNlRGVmcyhwcmVmYWJOYW1lKVxuICAgICAgICAgICAgICAgIF0pLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlc29sdmVJblByb2dyZXNzKHByZWZhYk5hbWUpO1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlZFByZWZhYnMuYWRkKHByZWZhYk5hbWUpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
|