@c8y/ngx-components 1018.0.211 → 1018.0.214
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/ecosystem/application-properties/subscription-modal/subscription-modal.component.mjs +3 -3
- package/esm2020/map/cluster-map.component.mjs +18 -10
- package/esm2020/map/cluster-map.mjs +8 -3
- package/esm2020/map/map-status.component.mjs +19 -5
- package/esm2020/map/map.component.mjs +9 -9
- package/esm2020/map/map.model.mjs +1 -19
- package/esm2020/map/map.service.mjs +24 -1
- package/fesm2015/c8y-ngx-components-ecosystem.mjs +2 -2
- package/fesm2015/c8y-ngx-components-ecosystem.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-map.mjs +177 -145
- package/fesm2015/c8y-ngx-components-map.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-ecosystem.mjs +2 -2
- package/fesm2020/c8y-ngx-components-ecosystem.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-map.mjs +177 -145
- package/fesm2020/c8y-ngx-components-map.mjs.map +1 -1
- package/map/cluster-map.component.d.ts +3 -1
- package/map/map-status.component.d.ts +12 -1
- package/map/map.component.d.ts +1 -1
- package/map/map.model.d.ts +0 -1
- package/map/map.service.d.ts +6 -0
- package/package.json +1 -1
package/esm2020/ecosystem/application-properties/subscription-modal/subscription-modal.component.mjs
CHANGED
|
@@ -97,9 +97,9 @@ export class SubscriptionModalComponent {
|
|
|
97
97
|
}
|
|
98
98
|
}
|
|
99
99
|
SubscriptionModalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: SubscriptionModalComponent, deps: [{ token: i1.BsModalRef }, { token: i2.EcosystemService }, { token: i3.TabsService }, { token: i3.ModalService }, { token: i4.ApplicationService }, { token: i3.AlertService }, { token: i3.ContextRouteService }], target: i0.ɵɵFactoryTarget.Component });
|
|
100
|
-
SubscriptionModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: SubscriptionModalComponent, selector: "c8y-subscription-modal", ngImport: i0, template: "<div class=\"viewport-modal\">\n <div class=\"modal-header dialog-header\">\n <i c8yIcon=\"c8y-atom\"></i>\n <h4 id=\"modal-title\">{{ message }}</h4>\n </div>\n <div class=\"modal-body\" id=\"modal-body\" *ngIf=\"isLoading\">\n <div class=\"p-16 text-center\">\n <c8y-loading></c8y-loading>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i3.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.LoadingComponent, selector: "c8y-loading" }] });
|
|
100
|
+
SubscriptionModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: SubscriptionModalComponent, selector: "c8y-subscription-modal", ngImport: i0, template: "<div class=\"viewport-modal\">\n <div class=\"modal-header dialog-header\">\n <i c8yIcon=\"c8y-atom\"></i>\n <h4 id=\"modal-title\">{{ message | translate }}</h4>\n </div>\n <div class=\"modal-body\" id=\"modal-body\" *ngIf=\"isLoading\">\n <div class=\"p-16 text-center\">\n <c8y-loading></c8y-loading>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i3.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.LoadingComponent, selector: "c8y-loading" }, { kind: "pipe", type: i3.C8yTranslatePipe, name: "translate" }] });
|
|
101
101
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: SubscriptionModalComponent, decorators: [{
|
|
102
102
|
type: Component,
|
|
103
|
-
args: [{ selector: 'c8y-subscription-modal', template: "<div class=\"viewport-modal\">\n <div class=\"modal-header dialog-header\">\n <i c8yIcon=\"c8y-atom\"></i>\n <h4 id=\"modal-title\">{{ message }}</h4>\n </div>\n <div class=\"modal-body\" id=\"modal-body\" *ngIf=\"isLoading\">\n <div class=\"p-16 text-center\">\n <c8y-loading></c8y-loading>\n </div>\n </div>\n</div>\n" }]
|
|
103
|
+
args: [{ selector: 'c8y-subscription-modal', template: "<div class=\"viewport-modal\">\n <div class=\"modal-header dialog-header\">\n <i c8yIcon=\"c8y-atom\"></i>\n <h4 id=\"modal-title\">{{ message | translate }}</h4>\n </div>\n <div class=\"modal-body\" id=\"modal-body\" *ngIf=\"isLoading\">\n <div class=\"p-16 text-center\">\n <c8y-loading></c8y-loading>\n </div>\n </div>\n</div>\n" }]
|
|
104
104
|
}], ctorParameters: function () { return [{ type: i1.BsModalRef }, { type: i2.EcosystemService }, { type: i3.TabsService }, { type: i3.ModalService }, { type: i4.ApplicationService }, { type: i3.AlertService }, { type: i3.ContextRouteService }]; } });
|
|
105
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Vic2NyaXB0aW9uLW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2Vjb3N5c3RlbS9hcHBsaWNhdGlvbi1wcm9wZXJ0aWVzL3N1YnNjcmlwdGlvbi1tb2RhbC9zdWJzY3JpcHRpb24tbW9kYWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vZWNvc3lzdGVtL2FwcGxpY2F0aW9uLXByb3BlcnRpZXMvc3Vic2NyaXB0aW9uLW1vZGFsL3N1YnNjcmlwdGlvbi1tb2RhbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxrQkFBa0IsRUFBMkMsTUFBTSxhQUFhLENBQUM7QUFDMUYsT0FBTyxFQUNMLFlBQVksRUFDWixtQkFBbUIsRUFDbkIsT0FBTyxFQUNQLFlBQVksRUFDWixNQUFNLEVBQ04sV0FBVyxFQUNaLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNqQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7Ozs7Ozs7QUFNeEUsTUFBTSxPQUFPLDBCQUEwQjtJQWNyQyxZQUNVLFVBQXNCLEVBQ3RCLGdCQUFrQyxFQUNsQyxXQUF3QixFQUN4QixLQUFtQixFQUNuQixrQkFBc0MsRUFDdEMsWUFBMEIsRUFDMUIsbUJBQXdDO1FBTnhDLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixVQUFLLEdBQUwsS0FBSyxDQUFjO1FBQ25CLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMsaUJBQVksR0FBWixZ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QyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDeEM7SUFDSCxDQUFDO0lBRUQseURBQXlEO0lBQ2pELHdCQUF3QixDQUFDLEVBQTZCO1FBQzVELE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLFVBQVUsRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLGlCQUFpQixDQUFDO0lBQ3RFLENBQUM7SUFFTyxhQUFhO1FBQ25CLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVPLHFCQUFxQjtRQUMzQixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDaEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUN6QixDQUFDO0lBRU8sZ0JBQWdCLENBQUMsTUFBYztRQUNyQyxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDakMsTUFBTSxJQUFJLEdBQ1IsTUFBTSxLQUFLLFdBQVc7WUFDcEIsQ0FBQyxDQUFDLE9BQU8sQ0FBQywrRUFBK0UsQ0FBQztZQUMxRixDQUFDLENBQUMsT0FBTyxDQUNMLDZGQUE2RixDQUM5RixDQUFDO1FBQ1IsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7O3VIQXZHVSwwQkFBMEI7MkdBQTFCLDBCQUEwQiw4RENsQnZDLHNWQVdBOzJGRE9hLDBCQUEwQjtrQkFKdEMsU0FBUzsrQkFDRSx3QkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXBwbGljYXRpb25TZXJ2aWNlLCBJQXBwbGljYXRpb24sIElBcHBsaWNhdGlvbk1hbmFnZWRPYmplY3QgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQge1xuICBBbGVydFNlcnZpY2UsXG4gIENvbnRleHRSb3V0ZVNlcnZpY2UsXG4gIGdldHRleHQsXG4gIE1vZGFsU2VydmljZSxcbiAgU3RhdHVzLFxuICBUYWJzU2VydmljZVxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IGlzRW1wdHkgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgQnNNb2RhbFJlZiB9IGZyb20gJ25neC1ib290c3RyYXAvbW9kYWwnO1xuaW1wb3J0IHsgRWNvc3lzdGVtU2VydmljZSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvZWNvc3lzdGVtL3NoYXJlZCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1zdWJzY3JpcHRpb24tbW9kYWwnLFxuICB0ZW1wbGF0ZVVybDogJy4vc3Vic2NyaXB0aW9uLW1vZGFsLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBTdWJzY3JpcHRpb25Nb2RhbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHJlYWRvbmx5IFJFVFJZX1RJTUVPVVQgPSAzMDAwO1xuICBhcHBsaWNhdGlvbjogSUFwcGxpY2F0aW9uO1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIGlzTG9hZGluZyA9IGZhbHNlO1xuICByZXN1bHQ6IFByb21pc2U8dm9pZD4gPSBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcbiAgICB0aGlzLl9yZXNvbHZlID0gcmVzb2x2ZTtcbiAgfSk7XG4gIGlzU3Vic2NyaWJlZDogYm9vbGVhbjtcbiAgcmV0cnlDb3VudGVyID0gMDtcblxuICBwcml2YXRlIHJlYWRvbmx5IFRBQlM6IHN0cmluZ1tdID0gWydMb2dzJywgJ1N0YXR1cyddO1xuICBwcml2YXRlIF9yZXNvbHZlOiAodmFsdWU6IHZvaWQgfCBQcm9taXNlTGlrZTx2b2lkPikgPT4gdm9pZDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGJzTW9kYWxSZWY6IEJzTW9kYWxSZWYsXG4gICAgcHJpdmF0ZSBlY29zeXN0ZW1TZXJ2aWNlOiBFY29zeXN0ZW1TZXJ2aWNlLFxuICAgIHByaXZhdGUgdGFic1NlcnZpY2U6IFRhYnNTZXJ2aWNlLFxuICAgIHByaXZhdGUgbW9kYWw6IE1vZGFsU2VydmljZSxcbiAgICBwcml2YXRlIGFwcGxpY2F0aW9uU2VydmljZTogQXBwbGljYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgYWxlcnRTZXJ2aWNlOiBBbGVydFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb250ZXh0Um91dGVTZXJ2aWNlOiBDb250ZXh0Um91dGVTZXJ2aWNlXG4gICkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAodGhpcy5pc1N1YnNjcmliZWQpIHtcbiAgICAgIHRoaXMudW5zdWJzY3JpYmUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBzdWJzY3JpYmUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5yZXRyeUNvdW50ZXIgPSAwO1xuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLm1lc3NhZ2UgPSBnZXR0ZXh0KCdTdWJzY3JpYmluZ+KApicpO1xuICAgIGF3YWl0IHRoaXMuZWNvc3lzdGVtU2VydmljZS5zdWJzY3JpYmVBcHAodGhpcy5hcHBsaWNhdGlvbik7XG4gICAgdGhpcy5nZXRTdGF0dXNEZXRhaWxzKCdzdWJzY3JpYmUnKTtcbiAgfVxuXG4gIGFzeW5jIHVuc3Vic2NyaWJlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMucmV0cnlDb3VudGVyID0gMDtcbiAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XG4gICAgdGhpcy5tZXNzYWdlID0gZ2V0dGV4dCgnVW5zdWJzY3JpYmluZ+KApicpO1xuICAgIGF3YWl0IHRoaXMuZWNvc3lzdGVtU2VydmljZS51bnN1YnNjcmliZUFwcCh0aGlzLmFwcGxpY2F0aW9uKTtcbiAgICB0aGlzLmdldFN0YXR1c0RldGFpbHMoJ3Vuc3Vic2NyaWJlJyk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGdldFN0YXR1c0RldGFpbHMoYWN0aW9uOiAnc3Vic2NyaWJlJyB8ICd1bnN1YnNjcmliZScpIHtcbiAgICB0aGlzLmNvbnRleHRSb3V0ZVNlcnZpY2UucmVmcmVzaENvbnRleHQoKTtcbiAgICBjb25zdCBhY3Rpb25TdWNjZXNzZnVsID1cbiAgICAgIGFjdGlvbiA9PT0gJ3N1YnNjcmliZScgPyBhd2FpdCB0aGlzLm9uU3Vic2NyaWJlKCkgOiB0aGlzLm9uVW5zdWJzY3JpYmUoKTtcbiAgICBpZiAoYWN0aW9uU3VjY2Vzc2Z1bCkge1xuICAgICAgcmV0dXJuIHRoaXMuaGlkZVN1YnNjcmlwdGlvbk1vZGFsKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLnJldHJ5Q291bnRlciA9PT0gNCkge1xuICAgICAgdGhpcy5zaG93V2FybmluZ01vZGFsKGFjdGlvbik7XG4gICAgICByZXR1cm4gdGhpcy5oaWRlU3Vic2NyaXB0aW9uTW9kYWwoKTtcbiAgICB9XG4gICAgdGhpcy5yZXRyeUNvdW50ZXIgKz0gMTtcbiAgICBzZXRUaW1lb3V0KGFzeW5jICgpID0+IHtcbiAgICAgIHRoaXMuZ2V0U3RhdHVzRGV0YWlscyhhY3Rpb24pO1xuICAgIH0sIHRoaXMuUkVUUllfVElNRU9VVCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIG9uU3Vic2NyaWJlKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHRyeSB7XG4gICAgICBpZiAoIXRoaXMuYXBwbGljYXRpb24uYWN0aXZlVmVyc2lvbklkKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgY29uc3QgcmVzOiBJQXBwbGljYXRpb25NYW5hZ2VkT2JqZWN0ID0gKFxuICAgICAgICBhd2FpdCB0aGlzLmFwcGxpY2F0aW9uU2VydmljZS5nZXRTdGF0dXNEZXRhaWxzKHRoaXMuYXBwbGljYXRpb24pXG4gICAgICApLmRhdGFbMF07XG4gICAgICByZXR1cm4gdGhpcy5zaG91bGRTaG93TVNTcGVjaWZpY1RhYnMocmVzKTtcbiAgICB9IGNhdGNoIChlcikge1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2UuYWRkU2VydmVyRmFpbHVyZShlcik7XG4gICAgfVxuICB9XG5cbiAgLy8gQ2hlY2tzIGlmIHRoZSBVSSBzaG91bGQgc2hvdyB0YWJzIHdpdGggbG9ncyBhbmQgc3RhdHVzXG4gIHByaXZhdGUgc2hvdWxkU2hvd01TU3BlY2lmaWNUYWJzKG1vOiBJQXBwbGljYXRpb25NYW5hZ2VkT2JqZWN0KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICFpc0VtcHR5KG1vLmM4eV9TdGF0dXM/Lmluc3RhbmNlcykgJiYgISFtby5jOHlfU3VwcG9ydGVkTG9ncztcbiAgfVxuXG4gIHByaXZhdGUgb25VbnN1YnNjcmliZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMudGFic1NlcnZpY2UuYXJlQXZhaWxhYmxlKHRoaXMuVEFCUyk7XG4gIH1cblxuICBwcml2YXRlIGhpZGVTdWJzY3JpcHRpb25Nb2RhbCgpOiB2b2lkIHtcbiAgICB0aGlzLl9yZXNvbHZlKCk7XG4gICAgdGhpcy5ic01vZGFsUmVmLmhpZGUoKTtcbiAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBzaG93V2FybmluZ01vZGFsKGFjdGlvbjogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgdGl0bGUgPSBnZXR0ZXh0KCdXYXJuaW5nJyk7XG4gICAgY29uc3QgYm9keSA9XG4gICAgICBhY3Rpb24gPT09ICdzdWJzY3JpYmUnXG4gICAgICAgID8gZ2V0dGV4dCgnU29tZXRoaW5nIHdlbnQgd3JvbmcsIHBsZWFzZSByZWZyZXNoIHRoZSBwYWdlIG9yIHJlc3Vic2NyaWJlIHRoZSBhcHBsaWNhdGlvbi4nKVxuICAgICAgICA6IGdldHRleHQoXG4gICAgICAgICAgICAnU29tZXRoaW5nIHdlbnQgd3JvbmcsIHBsZWFzZSByZWZyZXNoIHRoZSBwYWdlIG9yIHJldHJ5IHRvIHVuc3Vic2NyaWJlIGZyb20gdGhlIGFwcGxpY2F0aW9uLidcbiAgICAgICAgICApO1xuICAgIHRoaXMubW9kYWwuYWNrbm93bGVkZ2UodGl0bGUsIGJvZHksIFN0YXR1cy5XQVJOSU5HLCBnZXR0ZXh0KCdDbG9zZScpKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInZpZXdwb3J0LW1vZGFsXCI+XG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXIgZGlhbG9nLWhlYWRlclwiPlxuICAgIDxpIGM4eUljb249XCJjOHktYXRvbVwiPjwvaT5cbiAgICA8aDQgaWQ9XCJtb2RhbC10aXRsZVwiPnt7IG1lc3NhZ2UgfX08L2g0PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHlcIiBpZD1cIm1vZGFsLWJvZHlcIiAqbmdJZj1cImlzTG9hZGluZ1wiPlxuICAgIDxkaXYgY2xhc3M9XCJwLTE2IHRleHQtY2VudGVyXCI+XG4gICAgICA8Yzh5LWxvYWRpbmc+PC9jOHktbG9hZGluZz5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
105
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Vic2NyaXB0aW9uLW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2Vjb3N5c3RlbS9hcHBsaWNhdGlvbi1wcm9wZXJ0aWVzL3N1YnNjcmlwdGlvbi1tb2RhbC9zdWJzY3JpcHRpb24tbW9kYWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vZWNvc3lzdGVtL2FwcGxpY2F0aW9uLXByb3BlcnRpZXMvc3Vic2NyaXB0aW9uLW1vZGFsL3N1YnNjcmlwdGlvbi1tb2RhbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxrQkFBa0IsRUFBMkMsTUFBTSxhQUFhLENBQUM7QUFDMUYsT0FBTyxFQUNMLFlBQVksRUFDWixtQkFBbUIsRUFDbkIsT0FBTyxFQUNQLFlBQVksRUFDWixNQUFNLEVBQ04sV0FBVyxFQUNaLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNqQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7Ozs7Ozs7QUFNeEUsTUFBTSxPQUFPLDBCQUEwQjtJQWNyQyxZQUNVLFVBQXNCLEVBQ3RCLGdCQUFrQyxFQUNsQyxXQUF3QixFQUN4QixLQUFtQixFQUNuQixrQkFBc0MsRUFDdEMsWUFBMEIsRUFDMUIsbUJBQXdDO1FBTnhDLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixVQUFLLEdBQUwsS0FBSyxDQUFjO1FBQ25CLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMsaUJBQVksR0FBWixZ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QyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDeEM7SUFDSCxDQUFDO0lBRUQseURBQXlEO0lBQ2pELHdCQUF3QixDQUFDLEVBQTZCO1FBQzVELE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLFVBQVUsRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLGlCQUFpQixDQUFDO0lBQ3RFLENBQUM7SUFFTyxhQUFhO1FBQ25CLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVPLHFCQUFxQjtRQUMzQixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDaEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUN6QixDQUFDO0lBRU8sZ0JBQWdCLENBQUMsTUFBYztRQUNyQyxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDakMsTUFBTSxJQUFJLEdBQ1IsTUFBTSxLQUFLLFdBQVc7WUFDcEIsQ0FBQyxDQUFDLE9BQU8sQ0FBQywrRUFBK0UsQ0FBQztZQUMxRixDQUFDLENBQUMsT0FBTyxDQUNMLDZGQUE2RixDQUM5RixDQUFDO1FBQ1IsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7O3VIQXZHVSwwQkFBMEI7MkdBQTFCLDBCQUEwQiw4RENsQnZDLGtXQVdBOzJGRE9hLDBCQUEwQjtrQkFKdEMsU0FBUzsrQkFDRSx3QkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXBwbGljYXRpb25TZXJ2aWNlLCBJQXBwbGljYXRpb24sIElBcHBsaWNhdGlvbk1hbmFnZWRPYmplY3QgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQge1xuICBBbGVydFNlcnZpY2UsXG4gIENvbnRleHRSb3V0ZVNlcnZpY2UsXG4gIGdldHRleHQsXG4gIE1vZGFsU2VydmljZSxcbiAgU3RhdHVzLFxuICBUYWJzU2VydmljZVxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IGlzRW1wdHkgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgQnNNb2RhbFJlZiB9IGZyb20gJ25neC1ib290c3RyYXAvbW9kYWwnO1xuaW1wb3J0IHsgRWNvc3lzdGVtU2VydmljZSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvZWNvc3lzdGVtL3NoYXJlZCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1zdWJzY3JpcHRpb24tbW9kYWwnLFxuICB0ZW1wbGF0ZVVybDogJy4vc3Vic2NyaXB0aW9uLW1vZGFsLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBTdWJzY3JpcHRpb25Nb2RhbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHJlYWRvbmx5IFJFVFJZX1RJTUVPVVQgPSAzMDAwO1xuICBhcHBsaWNhdGlvbjogSUFwcGxpY2F0aW9uO1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIGlzTG9hZGluZyA9IGZhbHNlO1xuICByZXN1bHQ6IFByb21pc2U8dm9pZD4gPSBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcbiAgICB0aGlzLl9yZXNvbHZlID0gcmVzb2x2ZTtcbiAgfSk7XG4gIGlzU3Vic2NyaWJlZDogYm9vbGVhbjtcbiAgcmV0cnlDb3VudGVyID0gMDtcblxuICBwcml2YXRlIHJlYWRvbmx5IFRBQlM6IHN0cmluZ1tdID0gWydMb2dzJywgJ1N0YXR1cyddO1xuICBwcml2YXRlIF9yZXNvbHZlOiAodmFsdWU6IHZvaWQgfCBQcm9taXNlTGlrZTx2b2lkPikgPT4gdm9pZDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGJzTW9kYWxSZWY6IEJzTW9kYWxSZWYsXG4gICAgcHJpdmF0ZSBlY29zeXN0ZW1TZXJ2aWNlOiBFY29zeXN0ZW1TZXJ2aWNlLFxuICAgIHByaXZhdGUgdGFic1NlcnZpY2U6IFRhYnNTZXJ2aWNlLFxuICAgIHByaXZhdGUgbW9kYWw6IE1vZGFsU2VydmljZSxcbiAgICBwcml2YXRlIGFwcGxpY2F0aW9uU2VydmljZTogQXBwbGljYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgYWxlcnRTZXJ2aWNlOiBBbGVydFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb250ZXh0Um91dGVTZXJ2aWNlOiBDb250ZXh0Um91dGVTZXJ2aWNlXG4gICkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAodGhpcy5pc1N1YnNjcmliZWQpIHtcbiAgICAgIHRoaXMudW5zdWJzY3JpYmUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBzdWJzY3JpYmUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5yZXRyeUNvdW50ZXIgPSAwO1xuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLm1lc3NhZ2UgPSBnZXR0ZXh0KCdTdWJzY3JpYmluZ+KApicpO1xuICAgIGF3YWl0IHRoaXMuZWNvc3lzdGVtU2VydmljZS5zdWJzY3JpYmVBcHAodGhpcy5hcHBsaWNhdGlvbik7XG4gICAgdGhpcy5nZXRTdGF0dXNEZXRhaWxzKCdzdWJzY3JpYmUnKTtcbiAgfVxuXG4gIGFzeW5jIHVuc3Vic2NyaWJlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMucmV0cnlDb3VudGVyID0gMDtcbiAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XG4gICAgdGhpcy5tZXNzYWdlID0gZ2V0dGV4dCgnVW5zdWJzY3JpYmluZ+KApicpO1xuICAgIGF3YWl0IHRoaXMuZWNvc3lzdGVtU2VydmljZS51bnN1YnNjcmliZUFwcCh0aGlzLmFwcGxpY2F0aW9uKTtcbiAgICB0aGlzLmdldFN0YXR1c0RldGFpbHMoJ3Vuc3Vic2NyaWJlJyk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGdldFN0YXR1c0RldGFpbHMoYWN0aW9uOiAnc3Vic2NyaWJlJyB8ICd1bnN1YnNjcmliZScpIHtcbiAgICB0aGlzLmNvbnRleHRSb3V0ZVNlcnZpY2UucmVmcmVzaENvbnRleHQoKTtcbiAgICBjb25zdCBhY3Rpb25TdWNjZXNzZnVsID1cbiAgICAgIGFjdGlvbiA9PT0gJ3N1YnNjcmliZScgPyBhd2FpdCB0aGlzLm9uU3Vic2NyaWJlKCkgOiB0aGlzLm9uVW5zdWJzY3JpYmUoKTtcbiAgICBpZiAoYWN0aW9uU3VjY2Vzc2Z1bCkge1xuICAgICAgcmV0dXJuIHRoaXMuaGlkZVN1YnNjcmlwdGlvbk1vZGFsKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLnJldHJ5Q291bnRlciA9PT0gNCkge1xuICAgICAgdGhpcy5zaG93V2FybmluZ01vZGFsKGFjdGlvbik7XG4gICAgICByZXR1cm4gdGhpcy5oaWRlU3Vic2NyaXB0aW9uTW9kYWwoKTtcbiAgICB9XG4gICAgdGhpcy5yZXRyeUNvdW50ZXIgKz0gMTtcbiAgICBzZXRUaW1lb3V0KGFzeW5jICgpID0+IHtcbiAgICAgIHRoaXMuZ2V0U3RhdHVzRGV0YWlscyhhY3Rpb24pO1xuICAgIH0sIHRoaXMuUkVUUllfVElNRU9VVCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIG9uU3Vic2NyaWJlKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHRyeSB7XG4gICAgICBpZiAoIXRoaXMuYXBwbGljYXRpb24uYWN0aXZlVmVyc2lvbklkKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgY29uc3QgcmVzOiBJQXBwbGljYXRpb25NYW5hZ2VkT2JqZWN0ID0gKFxuICAgICAgICBhd2FpdCB0aGlzLmFwcGxpY2F0aW9uU2VydmljZS5nZXRTdGF0dXNEZXRhaWxzKHRoaXMuYXBwbGljYXRpb24pXG4gICAgICApLmRhdGFbMF07XG4gICAgICByZXR1cm4gdGhpcy5zaG91bGRTaG93TVNTcGVjaWZpY1RhYnMocmVzKTtcbiAgICB9IGNhdGNoIChlcikge1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2UuYWRkU2VydmVyRmFpbHVyZShlcik7XG4gICAgfVxuICB9XG5cbiAgLy8gQ2hlY2tzIGlmIHRoZSBVSSBzaG91bGQgc2hvdyB0YWJzIHdpdGggbG9ncyBhbmQgc3RhdHVzXG4gIHByaXZhdGUgc2hvdWxkU2hvd01TU3BlY2lmaWNUYWJzKG1vOiBJQXBwbGljYXRpb25NYW5hZ2VkT2JqZWN0KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICFpc0VtcHR5KG1vLmM4eV9TdGF0dXM/Lmluc3RhbmNlcykgJiYgISFtby5jOHlfU3VwcG9ydGVkTG9ncztcbiAgfVxuXG4gIHByaXZhdGUgb25VbnN1YnNjcmliZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMudGFic1NlcnZpY2UuYXJlQXZhaWxhYmxlKHRoaXMuVEFCUyk7XG4gIH1cblxuICBwcml2YXRlIGhpZGVTdWJzY3JpcHRpb25Nb2RhbCgpOiB2b2lkIHtcbiAgICB0aGlzLl9yZXNvbHZlKCk7XG4gICAgdGhpcy5ic01vZGFsUmVmLmhpZGUoKTtcbiAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBzaG93V2FybmluZ01vZGFsKGFjdGlvbjogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgdGl0bGUgPSBnZXR0ZXh0KCdXYXJuaW5nJyk7XG4gICAgY29uc3QgYm9keSA9XG4gICAgICBhY3Rpb24gPT09ICdzdWJzY3JpYmUnXG4gICAgICAgID8gZ2V0dGV4dCgnU29tZXRoaW5nIHdlbnQgd3JvbmcsIHBsZWFzZSByZWZyZXNoIHRoZSBwYWdlIG9yIHJlc3Vic2NyaWJlIHRoZSBhcHBsaWNhdGlvbi4nKVxuICAgICAgICA6IGdldHRleHQoXG4gICAgICAgICAgICAnU29tZXRoaW5nIHdlbnQgd3JvbmcsIHBsZWFzZSByZWZyZXNoIHRoZSBwYWdlIG9yIHJldHJ5IHRvIHVuc3Vic2NyaWJlIGZyb20gdGhlIGFwcGxpY2F0aW9uLidcbiAgICAgICAgICApO1xuICAgIHRoaXMubW9kYWwuYWNrbm93bGVkZ2UodGl0bGUsIGJvZHksIFN0YXR1cy5XQVJOSU5HLCBnZXR0ZXh0KCdDbG9zZScpKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInZpZXdwb3J0LW1vZGFsXCI+XG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXIgZGlhbG9nLWhlYWRlclwiPlxuICAgIDxpIGM4eUljb249XCJjOHktYXRvbVwiPjwvaT5cbiAgICA8aDQgaWQ9XCJtb2RhbC10aXRsZVwiPnt7IG1lc3NhZ2UgfCB0cmFuc2xhdGUgfX08L2g0PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHlcIiBpZD1cIm1vZGFsLWJvZHlcIiAqbmdJZj1cImlzTG9hZGluZ1wiPlxuICAgIDxkaXYgY2xhc3M9XCJwLTE2IHRleHQtY2VudGVyXCI+XG4gICAgICA8Yzh5LWxvYWRpbmc+PC9jOHktbG9hZGluZz5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -79,17 +79,17 @@ export class ClusterMapComponent extends MapComponent {
|
|
|
79
79
|
cancelReload() {
|
|
80
80
|
this.reloadTrigger$.next(false);
|
|
81
81
|
}
|
|
82
|
-
|
|
82
|
+
listenToClusterAndIntervalChanges() {
|
|
83
83
|
const timerStart$ = new Subject();
|
|
84
84
|
const timerEnd$ = new Subject();
|
|
85
|
-
const documentHiddenEvent$ = fromEvent(document, 'visibilitychange').pipe(takeUntil(this.
|
|
85
|
+
const documentHiddenEvent$ = fromEvent(document, 'visibilitychange').pipe(takeUntil(this.unsubscribeTrigger$));
|
|
86
86
|
const interval$ = timerStart$.pipe(map(() => this.config.refreshInterval), switchMap(configInterval => {
|
|
87
87
|
if (!configInterval) {
|
|
88
88
|
return NEVER;
|
|
89
89
|
}
|
|
90
90
|
return interval(1000).pipe(map(value => value * 1000), tap(value => this.msUntilRefresh$.next(configInterval - value)), filter(value => value >= this.MIN_INTERVAL && value >= configInterval), first(), takeUntil(timerEnd$));
|
|
91
|
-
}), switchMap(() => (document.hidden ? documentHiddenEvent$ : of(true))), takeUntil(this.
|
|
92
|
-
const mapChange$ =
|
|
91
|
+
}), switchMap(() => (document.hidden ? documentHiddenEvent$ : of(true))), takeUntil(this.unsubscribeTrigger$));
|
|
92
|
+
const mapChange$ = this.getMapChangeObservable();
|
|
93
93
|
merge(this.reloadTrigger$, mapChange$, interval$)
|
|
94
94
|
.pipe(tap(() => {
|
|
95
95
|
timerEnd$.next(true);
|
|
@@ -97,7 +97,7 @@ export class ClusterMapComponent extends MapComponent {
|
|
|
97
97
|
this.isLoading$.next(true);
|
|
98
98
|
}), switchMap(value => value === false
|
|
99
99
|
? of([])
|
|
100
|
-
: from(this.mapService.getClusterSize(this.map.getBounds())).pipe(mergeMap((clusterSize) => this.getClusterRects(clusterSize, this.map.getBounds())), mergeMap(rects => this.createOrUpdateCluster(rects)))), takeUntil(this.
|
|
100
|
+
: from(this.mapService.getClusterSize(this.map.getBounds())).pipe(mergeMap((clusterSize) => this.getClusterRects(clusterSize, this.map.getBounds())), mergeMap(rects => this.createOrUpdateCluster(rects)))), takeUntil(this.unsubscribeTrigger$))
|
|
101
101
|
.subscribe((clusters) => {
|
|
102
102
|
clusters.forEach(cluster => cluster.render(this.map));
|
|
103
103
|
this.isLoading$.next(false);
|
|
@@ -105,6 +105,9 @@ export class ClusterMapComponent extends MapComponent {
|
|
|
105
105
|
this.msUntilRefresh$.next(this.config.refreshInterval);
|
|
106
106
|
});
|
|
107
107
|
}
|
|
108
|
+
listenToClusterMapChanges() {
|
|
109
|
+
this.getMapChangeObservable().subscribe();
|
|
110
|
+
}
|
|
108
111
|
refreshMarkers() {
|
|
109
112
|
if (this.assets) {
|
|
110
113
|
super.refreshMarkers();
|
|
@@ -123,11 +126,13 @@ export class ClusterMapComponent extends MapComponent {
|
|
|
123
126
|
if (isPositionDevice) {
|
|
124
127
|
this.assets = mo;
|
|
125
128
|
this.refreshMarkers();
|
|
126
|
-
|
|
129
|
+
this.listenToClusterMapChanges();
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
this.assets = null;
|
|
133
|
+
this.listenToClusterAndIntervalChanges();
|
|
134
|
+
this.reload();
|
|
127
135
|
}
|
|
128
|
-
this.assets = null;
|
|
129
|
-
this.listenToClusterChanges();
|
|
130
|
-
this.reload();
|
|
131
136
|
}
|
|
132
137
|
async getClusterRects(levelThreshold = ClusterSize.FOUR, viewBounds, level = 0) {
|
|
133
138
|
let rects = [];
|
|
@@ -216,6 +221,9 @@ export class ClusterMapComponent extends MapComponent {
|
|
|
216
221
|
});
|
|
217
222
|
return Promise.all(updatePromise);
|
|
218
223
|
}
|
|
224
|
+
getMapChangeObservable() {
|
|
225
|
+
return merge(fromEvent(this.map, 'move'), fromEvent(this.map, 'moveend')).pipe(debounceTime(this.EVENT_THROTTLE_TIME), tap(event => this.mapChange.emit(event)), takeUntil(this.unsubscribeTrigger$));
|
|
226
|
+
}
|
|
219
227
|
}
|
|
220
228
|
ClusterMapComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: ClusterMapComponent, deps: [{ token: i1.ManagedObjectRealtimeService }, { token: i2.MapService }, { token: MAP_TILE_LAYER, optional: true }, { token: MAP_DEFAULT_CONFIG, optional: true }, { token: i3.TranslateService }, { token: i0.IterableDiffers }, { token: i1.ColorService }], target: i0.ɵɵFactoryTarget.Component });
|
|
221
229
|
ClusterMapComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: ClusterMapComponent, selector: "c8y-cluster-map", inputs: { config: "config", rootNode: "rootNode", assets: ["asset", "assets"], showClusterColor: "showClusterColor" }, outputs: { mapChange: "mapChange" }, providers: [ManagedObjectRealtimeService], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"c8y-map\">\n <div #map></div>\n</div>\n<ng-content></ng-content>\n" });
|
|
@@ -244,4 +252,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
|
|
|
244
252
|
}], mapChange: [{
|
|
245
253
|
type: Output
|
|
246
254
|
}] } });
|
|
247
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2x1c3Rlci1tYXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vbWFwL2NsdXN0ZXItbWFwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL21hcC9jbHVzdGVyLW1hcC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUNMLGVBQWUsRUFDZixRQUFRLEVBQ1IsTUFBTSxFQUNOLFlBQVksRUFFYixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsWUFBWSxFQUFFLDRCQUE0QixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0YsT0FBTyxFQUNMLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUNMLEdBQUcsRUFDSCxRQUFRLEVBQ1IsU0FBUyxFQUNULFNBQVMsRUFDVCxHQUFHLEVBQ0osTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBRUwsV0FBVyxFQUNYLFlBQVksRUFDWixnQkFBZ0IsRUFHaEIsa0JBQWtCLEVBQ2xCLGNBQWMsRUFFZixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7OztBQU8zQyxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsWUFBWTtJQXdCbkQsWUFDWSxpQkFBK0MsRUFDL0MsVUFBc0IsRUFDYyxN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c0VDNUMzQyxrRkFJQTsyRkQwQ2EsbUJBQW1CO2tCQUwvQixTQUFTOytCQUNFLGlCQUFpQixhQUVoQixDQUFDLDRCQUE0QixDQUFDOzhIQTZCZSxLQUFLOzBCQUExRCxRQUFROzswQkFBSSxNQUFNOzJCQUFDLGNBQWM7OzBCQUNqQyxRQUFROzswQkFBSSxNQUFNOzJCQUFDLGtCQUFrQjtvSUF2QnhDLE1BQU07c0JBREwsS0FBSztnQkFJTixRQUFRO3NCQURQLEtBQUs7Z0JBSU4sTUFBTTtzQkFETCxLQUFLO3VCQUFDLE9BQU87Z0JBSWQsZ0JBQWdCO3NCQURmLEtBQUs7Z0JBSU4sU0FBUztzQkFEUixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIEl0ZXJhYmxlRGlmZmVycyxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlLFxuICBTaW1wbGVDaGFuZ2VzXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSU1hbmFnZWRPYmplY3QgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgeyBDb2xvclNlcnZpY2UsIE1hbmFnZWRPYmplY3RSZWFsdGltZVNlcnZpY2UgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB0eXBlICogYXMgTCBmcm9tICdsZWFmbGV0JztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZnJvbSwgZnJvbUV2ZW50LCBpbnRlcnZhbCwgbWVyZ2UsIE5FVkVSLCBvZiwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgZGVib3VuY2VUaW1lLFxuICBmaWx0ZXIsXG4gIGZpcnN0LFxuICBtYXAsXG4gIG1lcmdlTWFwLFxuICBzd2l0Y2hNYXAsXG4gIHRha2VVbnRpbCxcbiAgdGFwXG59IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IENsdXN0ZXJNYXAgfSBmcm9tICcuL2NsdXN0ZXItbWFwJztcbmltcG9ydCB7IE1hcENvbXBvbmVudCB9IGZyb20gJy4vbWFwLmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICBDbHVzdGVyTWFwQ29uZmlnLFxuICBDbHVzdGVyU2l6ZSxcbiAgZGVmYXVsdExheWVyLFxuICBkZWZhdWx0TWFwQ29uZmlnLFxuICBNYXBEZWZhdWx0Q29uZmlnLFxuICBNYXBUaWxlTGF5ZXIsXG4gIE1BUF9ERUZBVUxUX0NPTkZJRyxcbiAgTUFQX1RJTEVfTEFZRVIsXG4gIFBvc2l0aW9uTWFuYWdlZE9iamVjdFxufSBmcm9tICcuL21hcC5tb2RlbCc7XG5pbXBvcnQgeyBNYXBTZXJ2aWNlIH0gZnJvbSAnLi9tYXAuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1jbHVzdGVyLW1hcCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9jbHVzdGVyLW1hcC5jb21wb25lbnQuaHRtbCcsXG4gIHByb3ZpZGVyczogW01hbmFnZWRPYmplY3RSZWFsdGltZVNlcnZpY2VdXG59KVxuZXhwb3J0IGNsYXNzIENsdXN0ZXJNYXBDb21wb25lbnQgZXh0ZW5kcyBNYXBDb21wb25lbnQge1xuICBpc0xvYWRpbmckID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG4gIG1zVW50aWxSZWZyZXNoJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoNTAwMCk7XG5cbiAgQElucHV0KClcbiAgY29uZmlnOiBDbHVzdGVyTWFwQ29uZmlnO1xuXG4gIEBJbnB1dCgpXG4gIHJvb3ROb2RlOiBJTWFuYWdlZE9iamVjdDtcblxuICBASW5wdXQoJ2Fzc2V0JylcbiAgYXNzZXRzOiBQb3NpdGlvbk1hbmFnZWRPYmplY3Q7XG5cbiAgQElucHV0KClcbiAgc2hvd0NsdXN0ZXJDb2xvciA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKVxuICBtYXBDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPEwuTGVhZmxldEV2ZW50PigpO1xuXG4gIHByaXZhdGUgcmVsb2FkVHJpZ2dlciQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcbiAgcHJpdmF0ZSBjbHVzdGVyczogQ2x1c3Rlck1hcFtdID0gW107XG4gIHByaXZhdGUgcmVhZG9ubHkgTUlOX0lOVEVSVkFMID0gNTAwMDtcbiAgcHJpdmF0ZSByZWFkb25seSBFVkVOVF9USFJPVFRMRV9USU1FID0gNzUwO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBtb1JlYWx0aW1lU2VydmljZTogTWFuYWdlZE9iamVjdFJlYWx0aW1lU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgbWFwU2VydmljZTogTWFwU2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KE1BUF9USUxFX0xBWUVSKSBwcm90ZWN0ZWQgbGF5ZXJzOiBBcnJheTxNYXBUaWxlTGF5ZXIgfCBNYXBUaWxlTGF5ZXJbXT4sXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChNQVBfREVGQVVMVF9DT05GSUcpIHByb3RlY3RlZCBkZWZhdWx0Q29uZmlnOiBNYXBEZWZhdWx0Q29uZmlnLFxuICAgIHByb3RlY3RlZCB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgaXRlcmFibGU6IEl0ZXJhYmxlRGlmZmVycyxcbiAgICBwcml2YXRlIGNvbG9yU2VydmljZTogQ29sb3JTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKG1vUmVhbHRpbWVTZXJ2aWNlLCBtYXBTZXJ2aWNlLCBsYXllcnMsIGRlZmF1bHRDb25maWcsIHRyYW5zbGF0ZVNlcnZpY2UpO1xuICAgIGlmICghdGhpcy5sYXllcnMpIHtcbiAgICAgIHRoaXMubGF5ZXJzID0gW2RlZmF1bHRMYXllcl07XG4gICAgfVxuICAgIGlmICghdGhpcy5kZWZhdWx0Q29uZmlnKSB7XG4gICAgICB0aGlzLmRlZmF1bHRDb25maWcgPSBkZWZhdWx0TWFwQ29uZmlnO1xuICAgIH1cbiAgICB0aGlzLmNvbmZpZyA9IHtcbiAgICAgIGNlbnRlcjogdGhpcy5kZWZhdWx0Q29uZmlnLmNlbnRlclxuICAgIH07XG4gIH1cblxuICBhc3luYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXMuY29uZmlnPy5maXJzdENoYW5nZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VzLnJvb3ROb2RlPy5wcmV2aW91c1ZhbHVlICE9PSBjaGFuZ2VzLnJvb3ROb2RlPy5jdXJyZW50VmFsdWUpIHtcbiAgICAgIHRoaXMuY2hhbmdlUm9vdE5vZGUoY2hhbmdlcy5yb290Tm9kZS5jdXJyZW50VmFsdWUpO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VzLmNvbmZpZz8uY3VycmVudFZhbHVlKSB7XG4gICAgICB0aGlzLmNoYW5nZUNvbmZpZyhjaGFuZ2VzLmNvbmZpZyk7XG4gICAgfVxuICB9XG5cbiAgY2hhbmdlQ29uZmlnKGNoYW5nZTogU2ltcGxlQ2hhbmdlKSB7XG4gICAgLy8gb24gZm9sbG93aW5nLCBjYW5jZWwgcmVsb2FkIHRvIGF2b2lkIHN0YWxlIHN0YXRlXG4gICAgaWYgKGNoYW5nZS5jdXJyZW50VmFsdWUuZm9sbG93ID09PSB0cnVlKSB7XG4gICAgICB0aGlzLmNhbmNlbFJlbG9hZCgpO1xuICAgICAgdGhpcy5pc0xvYWRpbmckLm5leHQoZmFsc2UpO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2UuY3VycmVudFZhbHVlLnJlZnJlc2hJbnRlcnZhbCAhPT0gY2hhbmdlLnByZXZpb3VzVmFsdWUucmVmcmVzaEludGVydmFsKSB7XG4gICAgICB0aGlzLnJlbG9hZCgpO1xuICAgIH1cbiAgICBzdXBlci5jaGFuZ2VDb25maWcoY2hhbmdlKTtcbiAgfVxuXG4gIGFzeW5jIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBpZiAoIXRoaXMubGVhZmxldCkge1xuICAgICAgdGhpcy5sZWFmbGV0ID0gYXdhaXQgdGhpcy5tYXBTZXJ2aWNlLmdldExlYWZsZXQoKTtcbiAgICB9XG4gICAgdGhpcy5pbml0TWFwKCk7XG4gICAgdGhpcy5jaGFuZ2VSb290Tm9kZSh0aGlzLnJvb3ROb2RlKTtcbiAgICB0aGlzLmNoYW5nZUNvbmZpZyhuZXcgU2ltcGxlQ2hhbmdlKHt9LCB0aGlzLmNvbmZpZywgZmFsc2UpKTtcbiAgfVxuXG4gIGFzeW5jIHJlc2V0KCkge1xuICAgIHRoaXMubmdPbkRlc3Ryb3koKTtcbiAgICBhd2FpdCB0aGlzLm5nQWZ0ZXJWaWV3SW5pdCgpO1xuICB9XG5cbiAgcmVsb2FkKCkge1xuICAgIHRoaXMucmVsb2FkVHJpZ2dlciQubmV4dCh0cnVlKTtcbiAgfVxuXG4gIGNhbmNlbFJlbG9hZCgpIHtcbiAgICB0aGlzLnJlbG9hZFRyaWdnZXIkLm5leHQoZmFsc2UpO1xuICB9XG5cbiAgbGlzdGVuVG9DbHVzdGVyQ2hhbmdlcygpIHtcbiAgICBjb25zdCB0aW1lclN0YXJ0JCA9IG5ldyBTdWJqZWN0KCk7XG4gICAgY29uc3QgdGltZXJFbmQkID0gbmV3IFN1YmplY3QoKTtcblxuICAgIGNvbnN0IGRvY3VtZW50SGlkZGVuRXZlbnQkID0gZnJvbUV2ZW50PGJvb2xlYW4+KGRvY3VtZW50LCAndmlzaWJpbGl0eWNoYW5nZScpLnBpcGUoXG4gICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JClcbiAgICApO1xuXG4gICAgY29uc3QgaW50ZXJ2YWwkID0gdGltZXJTdGFydCQucGlwZShcbiAgICAgIG1hcCgoKSA9PiB0aGlzLmNvbmZpZy5yZWZyZXNoSW50ZXJ2YWwpLFxuICAgICAgc3dpdGNoTWFwKGNvbmZpZ0ludGVydmFsID0+IHtcbiAgICAgICAgaWYgKCFjb25maWdJbnRlcnZhbCkge1xuICAgICAgICAgIHJldHVybiBORVZFUjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaW50ZXJ2YWwoMTAwMCkucGlwZShcbiAgICAgICAgICBtYXAodmFsdWUgPT4gdmFsdWUgKiAxMDAwKSxcbiAgICAgICAgICB0YXAodmFsdWUgPT4gdGhpcy5tc1VudGlsUmVmcmVzaCQubmV4dChjb25maWdJbnRlcnZhbCAtIHZhbHVlKSksXG4gICAgICAgICAgZmlsdGVyKHZhbHVlID0+IHZhbHVlID49IHRoaXMuTUlOX0lOVEVSVkFMICYmIHZhbHVlID49IGNvbmZpZ0ludGVydmFsKSxcbiAgICAgICAgICBmaXJzdCgpLFxuICAgICAgICAgIHRha2VVbnRpbCh0aW1lckVuZCQpXG4gICAgICAgICk7XG4gICAgICB9KSxcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiAoZG9jdW1lbnQuaGlkZGVuID8gZG9jdW1lbnRIaWRkZW5FdmVudCQgOiBvZih0cnVlKSkpLFxuICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpXG4gICAgKTtcblxuICAgIGNvbnN0IG1hcENoYW5nZSQgPSBtZXJnZShcbiAgICAgIGZyb21FdmVudDxMLkxlYWZsZXRFdmVudD4odGhpcy5tYXAsICdtb3ZlJyksXG4gICAgICBmcm9tRXZlbnQ8TC5MZWFmbGV0RXZlbnQ+KHRoaXMubWFwLCAnbW92ZWVuZCcpXG4gICAgKS5waXBlKFxuICAgICAgZGVib3VuY2VUaW1lKHRoaXMuRVZFTlRfVEhST1RUTEVfVElNRSksXG4gICAgICB0YXAoZXZlbnQgPT4gdGhpcy5tYXBDaGFuZ2UuZW1pdChldmVudCkpLFxuICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpXG4gICAgKTtcblxuICAgIG1lcmdlKHRoaXMucmVsb2FkVHJpZ2dlciQsIG1hcENoYW5nZSQsIGludGVydmFsJClcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgIHRpbWVyRW5kJC5uZXh0KHRydWUpO1xuICAgICAgICAgIHRoaXMubXNVbnRpbFJlZnJlc2gkLm5leHQoMCk7XG4gICAgICAgICAgdGhpcy5pc0xvYWRpbmckLm5leHQodHJ1ZSk7XG4gICAgICAgIH0pLFxuICAgICAgICBzd2l0Y2hNYXAodmFsdWUgPT5cbiAgICAgICAgICB2YWx1ZSA9PT0gZmFsc2VcbiAgICAgICAgICAgID8gb2YoW10pXG4gICAgICAgICAgICA6IGZyb20odGhpcy5tYXBTZXJ2aWNlLmdldENsdXN0ZXJTaXplKHRoaXMubWFwLmdldEJvdW5kcygpKSkucGlwZShcbiAgICAgICAgICAgICAgICBtZXJnZU1hcCgoY2x1c3RlclNpemU6IENsdXN0ZXJTaXplKSA9PlxuICAgICAgICAgICAgICAgICAgdGhpcy5nZXRDbHVzdGVyUmVjdHMoY2x1c3RlclNpemUsIHRoaXMubWFwLmdldEJvdW5kcygpKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgbWVyZ2VNYXAocmVjdHMgPT4gdGhpcy5jcmVhdGVPclVwZGF0ZUNsdXN0ZXIocmVjdHMpKVxuICAgICAgICAgICAgICApXG4gICAgICAgICksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoY2x1c3RlcnM6IENsdXN0ZXJNYXBbXSkgPT4ge1xuICAgICAgICBjbHVzdGVycy5mb3JFYWNoKGNsdXN0ZXIgPT4gY2x1c3Rlci5yZW5kZXIodGhpcy5tYXApKTtcblxuICAgICAgICB0aGlzLmlzTG9hZGluZyQubmV4dChmYWxzZSk7XG4gICAgICAgIHRpbWVyU3RhcnQkLm5leHQoKTtcbiAgICAgICAgdGhpcy5tc1VudGlsUmVmcmVzaCQubmV4dCh0aGlzLmNvbmZpZy5yZWZyZXNoSW50ZXJ2YWwpO1xuICAgICAgfSk7XG4gIH1cblxuICByZWZyZXNoTWFya2VycygpIHtcbiAgICBpZiAodGhpcy5hc3NldHMpIHtcbiAgICAgIHN1cGVyLnJlZnJlc2hNYXJrZXJzKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuY2x1c3RlcnMuZm9yRWFjaChjbHVzdGVyID0+IHtcbiAgICAgIGNsdXN0ZXIuY2xlYXIodGhpcy5tYXApO1xuICAgIH0pO1xuICAgIHRoaXMucmVsb2FkKCk7XG4gIH1cblxuICBwcml2YXRlIGNoYW5nZVJvb3ROb2RlKG1vOiBJTWFuYWdlZE9iamVjdCkge1xuICAgIHRoaXMudW5zdWJzY3JpYmVBbGxMaXN0ZW5lcnMoKTtcbiAgICB0aGlzLmNsZWFyTWFya2VycygpO1xuICAgIHRoaXMuY2xlYXJDbHVzdGVycygpO1xuXG4gICAgY29uc3QgaXNQb3NpdGlvbkRldmljZSA9IG1vPy5jOHlfUG9zaXRpb24gJiYgbW8/LmM4eV9Jc0RldmljZTtcbiAgICBpZiAoaXNQb3NpdGlvbkRldmljZSkge1xuICAgICAgdGhpcy5hc3NldHMgPSBtbyBhcyBQb3NpdGlvbk1hbmFnZWRPYmplY3Q7XG4gICAgICB0aGlzLnJlZnJlc2hNYXJrZXJzKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuYXNzZXRzID0gbnVsbDtcbiAgICB0aGlzLmxpc3RlblRvQ2x1c3RlckNoYW5nZXMoKTtcbiAgICB0aGlzLnJlbG9hZCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZXRDbHVzdGVyUmVjdHMoXG4gICAgbGV2ZWxUaHJlc2hvbGQ6IENsdXN0ZXJTaXplID0gQ2x1c3RlclNpemUuRk9VUixcbiAgICB2aWV3Qm91bmRzOiBMLkxhdExuZ0JvdW5kcyxcbiAgICBsZXZlbCA9IDBcbiAgKTogUHJvbWlzZTxMLlJlY3RhbmdsZVtdPiB7XG4gICAgbGV0IHJlY3RzID0gW107XG5cbiAgICBpZiAobGV2ZWxUaHJlc2hvbGQgPT09IENsdXN0ZXJTaXplLk5PTkUpIHtcbiAgICAgIGNvbnN0IHJlY3QgPSBhd2FpdCB0aGlzLmdldFJlY3Qodmlld0JvdW5kcyk7XG4gICAgICByZWN0cy5wdXNoKHJlY3QpO1xuICAgICAgcmV0dXJuIHJlY3RzO1xuICAgIH1cblxuICAgIGlmIChsZXZlbCA+PSBsZXZlbFRocmVzaG9sZCkge1xuICAgICAgcmV0dXJuIHJlY3RzO1xuICAgIH1cbiAgICBsZXZlbCsrO1xuXG4gICAgY29uc3QgeyBsYXQ6IHgxLCBsbmc6IHkxIH0gPSB2aWV3Qm91bmRzLmdldFNvdXRoV2VzdCgpO1xuICAgIGNvbnN0IHsgbGF0OiB4MiwgbG5nOiB5MiB9ID0gdmlld0JvdW5kcy5nZXROb3J0aEVhc3QoKTtcbiAgICBjb25zdCBuZXdYMiA9ICh4MSArIHgyKSAvIDI7XG4gICAgY29uc3QgbmV3WTIgPSAoeTEgKyB5MikgLyAyO1xuXG4gICAgY29uc3QgYm91bmRzOiBbW251bWJlciwgbnVtYmVyXSwgW251bWJlciwgbnVtYmVyXV1bXSA9IFtcbiAgICAgIFtcbiAgICAgICAgW3gxLCB5MV0sXG4gICAgICAgIFtuZXdYMiwgbmV3WTJdXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICBbbmV3WDIsIG5ld1kyXSxcbiAgICAgICAgW3gyLCB5Ml1cbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgIFt4MSwgbmV3WTJdLFxuICAgICAgICBbbmV3WDIsIHkyXVxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgW25ld1gyLCB5MV0sXG4gICAgICAgIFt4MiwgbmV3WTJdXG4gICAgICBdXG4gICAgXTtcbiAgICBmb3IgKGNvbnN0IGJvdW5kIG9mIGJvdW5kcykge1xuICAgICAgY29uc3QgbGF0TG5nQm91bmQgPSB0aGlzLmxlYWZsZXQubGF0TG5nQm91bmRzKGJvdW5kKTtcbiAgICAgIGNvbnN0IHJlY3QgPSBhd2FpdCB0aGlzLmdldFJlY3QobGF0TG5nQm91bmQpO1xuICAgICAgcmVjdHMgPSBbLi4ucmVjdHMsIC4uLihhd2FpdCB0aGlzLmdldENsdXN0ZXJSZWN0cyhsZXZlbFRocmVzaG9sZCwgbGF0TG5nQm91bmQsIGxldmVsKSldO1xuXG4gICAgICBpZiAobGV2ZWwgPT09IGxldmVsVGhyZXNob2xkKSB7XG4gICAgICAgIHJlY3RzLnB1c2gocmVjdCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlY3RzO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZXRSZWN0KGxhdExuZ0JvdW5kOiBMLkxhdExuZ0JvdW5kcykge1xuICAgIGxldCBjb2xvciA9ICdub25lJztcbiAgICBpZiAodGhpcy5zaG93Q2x1c3RlckNvbG9yKSB7XG4gICAgICBjb2xvciA9IGF3YWl0IHRoaXMuY29sb3JTZXJ2aWNlLmdlbmVyYXRlQ29sb3IobGF0TG5nQm91bmQudG9CQm94U3RyaW5nKCkpO1xuICAgIH1cbiAgICBjb25zdCByZWN0ID0gdGhpcy5sZWFmbGV0LnJlY3RhbmdsZShsYXRMbmdCb3VuZCwge1xuICAgICAgY29sb3IsXG4gICAgICB3ZWlnaHQ6IGNvbG9yID09PSAnbm9uZScgPyAwIDogMSxcbiAgICAgIGludGVyYWN0aXZlOiBmYWxzZVxuICAgIH0pO1xuICAgIHJldHVybiByZWN0O1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhckNsdXN0ZXJzKCkge1xuICAgIHRoaXMuY2x1c3RlcnMuZm9yRWFjaChjbHVzdGVyID0+IHtcbiAgICAgIGNsdXN0ZXIuY2xlYXIodGhpcy5tYXApO1xuICAgIH0pO1xuICAgIHRoaXMuY2x1c3RlcnMgPSBbXTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgdXBkYXRlQ2x1c3RlcihjbHVzdGVyOiBDbHVzdGVyTWFwKSB7XG4gICAgY29uc3QgY2x1c3RlckNvdW50ID0gYXdhaXQgdGhpcy5tYXBTZXJ2aWNlLmdldFBvc2l0aW9uTU9zRnJvbUJvdW5kQ291bnQoXG4gICAgICBjbHVzdGVyLnJlY3QuZ2V0Qm91bmRzKCksXG4gICAgICB0aGlzLnJvb3ROb2RlXG4gICAgKTtcbiAgICBpZiAoY2x1c3RlckNvdW50ID4gdGhpcy5tYXBTZXJ2aWNlLk1BWF9ERVZJQ0VfUEVSX0NMVVNURVIpIHtcbiAgICAgIGNsdXN0ZXIuc2V0Q2x1c3RlclRvQmlnTWFya2VyKHRoaXMubWFwLCBjbHVzdGVyQ291bnQsIHRoaXMubGVhZmxldCk7XG4gICAgICBjbHVzdGVyLnBvc2l0aW9ucyA9IFtdO1xuICAgICAgcmV0dXJuIGNsdXN0ZXI7XG4gICAgfVxuXG4gICAgY2x1c3Rlci5yZW1vdmVDbHVzdGVyVG9CaWdNYXJrZXIoKTtcbiAgICBjbHVzdGVyLnBvc2l0aW9ucyA9IGF3YWl0IHRoaXMubWFwU2VydmljZS5nZXRQb3NpdGlvbk1PcyhcbiAgICAgIGNsdXN0ZXIucmVjdC5nZXRCb3VuZHMoKSxcbiAgICAgIHRoaXMucm9vdE5vZGVcbiAgICApO1xuICAgIHJldHVybiBjbHVzdGVyO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVPclVwZGF0ZUNsdXN0ZXIocmVjdHM6IEwuUmVjdGFuZ2xlPHVua25vd24+W10pIHtcbiAgICBjb25zdCBpc05ldyA9IHJlY3RzLmxlbmd0aCAhPT0gdGhpcy5jbHVzdGVycy5sZW5ndGg7XG4gICAgaWYgKGlzTmV3KSB7XG4gICAgICB0aGlzLmNsZWFyQ2x1c3RlcnMoKTtcbiAgICB9XG4gICAgY29uc3QgdXBkYXRlUHJvbWlzZSA9IHJlY3RzLm1hcCgocmVjdCwgaW5kZXgpID0+IHtcbiAgICAgIGlmIChpc05ldykge1xuICAgICAgICBjb25zdCBjbHVzdGVyID0gbmV3IENsdXN0ZXJNYXAoXG4gICAgICAgICAgdGhpcy5pdGVyYWJsZSxcbiAgICAgICAgICBhc3NldCA9PiB0aGlzLmdldEFzc2V0TWFya2VyKGFzc2V0KSxcbiAgICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2VcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5jbHVzdGVycy5wdXNoKGNsdXN0ZXIpO1xuICAgICAgfVxuICAgICAgdGhpcy5jbHVzdGVyc1tpbmRleF0ucmVjdCA9IHJlY3Q7XG4gICAgICByZXR1cm4gdGhpcy51cGRhdGVDbHVzdGVyKHRoaXMuY2x1c3RlcnNbaW5kZXhdKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBQcm9taXNlLmFsbCh1cGRhdGVQcm9taXNlKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImM4eS1tYXBcIj5cbiAgPGRpdiAjbWFwPjwvZGl2PlxuPC9kaXY+XG48bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4iXX0=
|
|
255
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2x1c3Rlci1tYXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vbWFwL2NsdXN0ZXItbWFwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL21hcC9jbHVzdGVyLW1hcC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUNMLGVBQWUsRUFDZixRQUFRLEVBQ1IsTUFBTSxFQUNOLFlBQVksRUFFYixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsWUFBWSxFQUFFLDRCQUE0QixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0YsT0FBTyxFQUNMLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUNMLEdBQUcsRUFDSCxRQUFRLEVBQ1IsU0FBUyxFQUNULFNBQVMsRUFDVCxHQUFHLEVBQ0osTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBRUwsV0FBVyxFQUNYLFlBQVksRUFDWixnQkFBZ0IsRUFHaEIsa0JBQWtCLEVBQ2xCLGNBQWMsRUFFZixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7OztBQU8zQyxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsWUFBWTtJQXdCbkQsWUFDWSxpQkFBK0MsRUFDL0MsVUFBc0IsRUFDYyxN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QVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFDeEMsU0FBUyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUNwQyxDQUFDO0lBQ0osQ0FBQzs7Z0hBalRVLG1CQUFtQix3RkEyQlIsY0FBYyw2QkFDZCxrQkFBa0I7b0dBNUI3QixtQkFBbUIsc01BRm5CLENBQUMsNEJBQTRCLENBQUMsc0VDNUMzQyxrRkFJQTsyRkQwQ2EsbUJBQW1CO2tCQUwvQixTQUFTOytCQUNFLGlCQUFpQixhQUVoQixDQUFDLDRCQUE0QixDQUFDOzhIQTZCZSxLQUFLOzBCQUExRCxRQUFROzswQkFBSSxNQUFNOzJCQUFDLGNBQWM7OzBCQUNqQyxRQUFROzswQkFBSSxNQUFNOzJCQUFDLGtCQUFrQjtvSUF2QnhDLE1BQU07c0JBREwsS0FBSztnQkFJTixRQUFRO3NCQURQLEtBQUs7Z0JBSU4sTUFBTTtzQkFETCxLQUFLO3VCQUFDLE9BQU87Z0JBSWQsZ0JBQWdCO3NCQURmLEtBQUs7Z0JBSU4sU0FBUztzQkFEUixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIEl0ZXJhYmxlRGlmZmVycyxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlLFxuICBTaW1wbGVDaGFuZ2VzXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSU1hbmFnZWRPYmplY3QgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgeyBDb2xvclNlcnZpY2UsIE1hbmFnZWRPYmplY3RSZWFsdGltZVNlcnZpY2UgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB0eXBlICogYXMgTCBmcm9tICdsZWFmbGV0JztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZnJvbSwgZnJvbUV2ZW50LCBpbnRlcnZhbCwgbWVyZ2UsIE5FVkVSLCBvZiwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgZGVib3VuY2VUaW1lLFxuICBmaWx0ZXIsXG4gIGZpcnN0LFxuICBtYXAsXG4gIG1lcmdlTWFwLFxuICBzd2l0Y2hNYXAsXG4gIHRha2VVbnRpbCxcbiAgdGFwXG59IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IENsdXN0ZXJNYXAgfSBmcm9tICcuL2NsdXN0ZXItbWFwJztcbmltcG9ydCB7IE1hcENvbXBvbmVudCB9IGZyb20gJy4vbWFwLmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICBDbHVzdGVyTWFwQ29uZmlnLFxuICBDbHVzdGVyU2l6ZSxcbiAgZGVmYXVsdExheWVyLFxuICBkZWZhdWx0TWFwQ29uZmlnLFxuICBNYXBEZWZhdWx0Q29uZmlnLFxuICBNYXBUaWxlTGF5ZXIsXG4gIE1BUF9ERUZBVUxUX0NPTkZJRyxcbiAgTUFQX1RJTEVfTEFZRVIsXG4gIFBvc2l0aW9uTWFuYWdlZE9iamVjdFxufSBmcm9tICcuL21hcC5tb2RlbCc7XG5pbXBvcnQgeyBNYXBTZXJ2aWNlIH0gZnJvbSAnLi9tYXAuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1jbHVzdGVyLW1hcCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9jbHVzdGVyLW1hcC5jb21wb25lbnQuaHRtbCcsXG4gIHByb3ZpZGVyczogW01hbmFnZWRPYmplY3RSZWFsdGltZVNlcnZpY2VdXG59KVxuZXhwb3J0IGNsYXNzIENsdXN0ZXJNYXBDb21wb25lbnQgZXh0ZW5kcyBNYXBDb21wb25lbnQge1xuICBpc0xvYWRpbmckID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG4gIG1zVW50aWxSZWZyZXNoJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoNTAwMCk7XG5cbiAgQElucHV0KClcbiAgY29uZmlnOiBDbHVzdGVyTWFwQ29uZmlnO1xuXG4gIEBJbnB1dCgpXG4gIHJvb3ROb2RlOiBJTWFuYWdlZE9iamVjdDtcblxuICBASW5wdXQoJ2Fzc2V0JylcbiAgYXNzZXRzOiBQb3NpdGlvbk1hbmFnZWRPYmplY3Q7XG5cbiAgQElucHV0KClcbiAgc2hvd0NsdXN0ZXJDb2xvciA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKVxuICBtYXBDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPEwuTGVhZmxldEV2ZW50PigpO1xuXG4gIHByaXZhdGUgcmVsb2FkVHJpZ2dlciQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcbiAgcHJpdmF0ZSBjbHVzdGVyczogQ2x1c3Rlck1hcFtdID0gW107XG4gIHByaXZhdGUgcmVhZG9ubHkgTUlOX0lOVEVSVkFMID0gNTAwMDtcbiAgcHJpdmF0ZSByZWFkb25seSBFVkVOVF9USFJPVFRMRV9USU1FID0gNzUwO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBtb1JlYWx0aW1lU2VydmljZTogTWFuYWdlZE9iamVjdFJlYWx0aW1lU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgbWFwU2VydmljZTogTWFwU2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KE1BUF9USUxFX0xBWUVSKSBwcm90ZWN0ZWQgbGF5ZXJzOiBBcnJheTxNYXBUaWxlTGF5ZXIgfCBNYXBUaWxlTGF5ZXJbXT4sXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChNQVBfREVGQVVMVF9DT05GSUcpIHByb3RlY3RlZCBkZWZhdWx0Q29uZmlnOiBNYXBEZWZhdWx0Q29uZmlnLFxuICAgIHByb3RlY3RlZCB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgaXRlcmFibGU6IEl0ZXJhYmxlRGlmZmVycyxcbiAgICBwcml2YXRlIGNvbG9yU2VydmljZTogQ29sb3JTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKG1vUmVhbHRpbWVTZXJ2aWNlLCBtYXBTZXJ2aWNlLCBsYXllcnMsIGRlZmF1bHRDb25maWcsIHRyYW5zbGF0ZVNlcnZpY2UpO1xuICAgIGlmICghdGhpcy5sYXllcnMpIHtcbiAgICAgIHRoaXMubGF5ZXJzID0gW2RlZmF1bHRMYXllcl07XG4gICAgfVxuICAgIGlmICghdGhpcy5kZWZhdWx0Q29uZmlnKSB7XG4gICAgICB0aGlzLmRlZmF1bHRDb25maWcgPSBkZWZhdWx0TWFwQ29uZmlnO1xuICAgIH1cbiAgICB0aGlzLmNvbmZpZyA9IHtcbiAgICAgIGNlbnRlcjogdGhpcy5kZWZhdWx0Q29uZmlnLmNlbnRlclxuICAgIH07XG4gIH1cblxuICBhc3luYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXMuY29uZmlnPy5maXJzdENoYW5nZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VzLnJvb3ROb2RlPy5wcmV2aW91c1ZhbHVlICE9PSBjaGFuZ2VzLnJvb3ROb2RlPy5jdXJyZW50VmFsdWUpIHtcbiAgICAgIHRoaXMuY2hhbmdlUm9vdE5vZGUoY2hhbmdlcy5yb290Tm9kZS5jdXJyZW50VmFsdWUpO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VzLmNvbmZpZz8uY3VycmVudFZhbHVlKSB7XG4gICAgICB0aGlzLmNoYW5nZUNvbmZpZyhjaGFuZ2VzLmNvbmZpZyk7XG4gICAgfVxuICB9XG5cbiAgY2hhbmdlQ29uZmlnKGNoYW5nZTogU2ltcGxlQ2hhbmdlKSB7XG4gICAgLy8gb24gZm9sbG93aW5nLCBjYW5jZWwgcmVsb2FkIHRvIGF2b2lkIHN0YWxlIHN0YXRlXG4gICAgaWYgKGNoYW5nZS5jdXJyZW50VmFsdWUuZm9sbG93ID09PSB0cnVlKSB7XG4gICAgICB0aGlzLmNhbmNlbFJlbG9hZCgpO1xuICAgICAgdGhpcy5pc0xvYWRpbmckLm5leHQoZmFsc2UpO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2UuY3VycmVudFZhbHVlLnJlZnJlc2hJbnRlcnZhbCAhPT0gY2hhbmdlLnByZXZpb3VzVmFsdWUucmVmcmVzaEludGVydmFsKSB7XG4gICAgICB0aGlzLnJlbG9hZCgpO1xuICAgIH1cbiAgICBzdXBlci5jaGFuZ2VDb25maWcoY2hhbmdlKTtcbiAgfVxuXG4gIGFzeW5jIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBpZiAoIXRoaXMubGVhZmxldCkge1xuICAgICAgdGhpcy5sZWFmbGV0ID0gYXdhaXQgdGhpcy5tYXBTZXJ2aWNlLmdldExlYWZsZXQoKTtcbiAgICB9XG4gICAgdGhpcy5pbml0TWFwKCk7XG4gICAgdGhpcy5jaGFuZ2VSb290Tm9kZSh0aGlzLnJvb3ROb2RlKTtcbiAgICB0aGlzLmNoYW5nZUNvbmZpZyhuZXcgU2ltcGxlQ2hhbmdlKHt9LCB0aGlzLmNvbmZpZywgZmFsc2UpKTtcbiAgfVxuXG4gIGFzeW5jIHJlc2V0KCkge1xuICAgIHRoaXMubmdPbkRlc3Ryb3koKTtcbiAgICBhd2FpdCB0aGlzLm5nQWZ0ZXJWaWV3SW5pdCgpO1xuICB9XG5cbiAgcmVsb2FkKCkge1xuICAgIHRoaXMucmVsb2FkVHJpZ2dlciQubmV4dCh0cnVlKTtcbiAgfVxuXG4gIGNhbmNlbFJlbG9hZCgpIHtcbiAgICB0aGlzLnJlbG9hZFRyaWdnZXIkLm5leHQoZmFsc2UpO1xuICB9XG5cbiAgbGlzdGVuVG9DbHVzdGVyQW5kSW50ZXJ2YWxDaGFuZ2VzKCkge1xuICAgIGNvbnN0IHRpbWVyU3RhcnQkID0gbmV3IFN1YmplY3QoKTtcbiAgICBjb25zdCB0aW1lckVuZCQgPSBuZXcgU3ViamVjdCgpO1xuXG4gICAgY29uc3QgZG9jdW1lbnRIaWRkZW5FdmVudCQgPSBmcm9tRXZlbnQ8Ym9vbGVhbj4oZG9jdW1lbnQsICd2aXNpYmlsaXR5Y2hhbmdlJykucGlwZShcbiAgICAgIHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlVHJpZ2dlciQpXG4gICAgKTtcblxuICAgIGNvbnN0IGludGVydmFsJCA9IHRpbWVyU3RhcnQkLnBpcGUoXG4gICAgICBtYXAoKCkgPT4gdGhpcy5jb25maWcucmVmcmVzaEludGVydmFsKSxcbiAgICAgIHN3aXRjaE1hcChjb25maWdJbnRlcnZhbCA9PiB7XG4gICAgICAgIGlmICghY29uZmlnSW50ZXJ2YWwpIHtcbiAgICAgICAgICByZXR1cm4gTkVWRVI7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGludGVydmFsKDEwMDApLnBpcGUoXG4gICAgICAgICAgbWFwKHZhbHVlID0+IHZhbHVlICogMTAwMCksXG4gICAgICAgICAgdGFwKHZhbHVlID0+IHRoaXMubXNVbnRpbFJlZnJlc2gkLm5leHQoY29uZmlnSW50ZXJ2YWwgLSB2YWx1ZSkpLFxuICAgICAgICAgIGZpbHRlcih2YWx1ZSA9PiB2YWx1ZSA+PSB0aGlzLk1JTl9JTlRFUlZBTCAmJiB2YWx1ZSA+PSBjb25maWdJbnRlcnZhbCksXG4gICAgICAgICAgZmlyc3QoKSxcbiAgICAgICAgICB0YWtlVW50aWwodGltZXJFbmQkKVxuICAgICAgICApO1xuICAgICAgfSksXG4gICAgICBzd2l0Y2hNYXAoKCkgPT4gKGRvY3VtZW50LmhpZGRlbiA/IGRvY3VtZW50SGlkZGVuRXZlbnQkIDogb2YodHJ1ZSkpKSxcbiAgICAgIHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlVHJpZ2dlciQpXG4gICAgKTtcblxuICAgIGNvbnN0IG1hcENoYW5nZSQgPSB0aGlzLmdldE1hcENoYW5nZU9ic2VydmFibGUoKTtcblxuICAgIG1lcmdlKHRoaXMucmVsb2FkVHJpZ2dlciQsIG1hcENoYW5nZSQsIGludGVydmFsJClcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgIHRpbWVyRW5kJC5uZXh0KHRydWUpO1xuICAgICAgICAgIHRoaXMubXNVbnRpbFJlZnJlc2gkLm5leHQoMCk7XG4gICAgICAgICAgdGhpcy5pc0xvYWRpbmckLm5leHQodHJ1ZSk7XG4gICAgICAgIH0pLFxuICAgICAgICBzd2l0Y2hNYXAodmFsdWUgPT5cbiAgICAgICAgICB2YWx1ZSA9PT0gZmFsc2VcbiAgICAgICAgICAgID8gb2YoW10pXG4gICAgICAgICAgICA6IGZyb20odGhpcy5tYXBTZXJ2aWNlLmdldENsdXN0ZXJTaXplKHRoaXMubWFwLmdldEJvdW5kcygpKSkucGlwZShcbiAgICAgICAgICAgICAgICBtZXJnZU1hcCgoY2x1c3RlclNpemU6IENsdXN0ZXJTaXplKSA9PlxuICAgICAgICAgICAgICAgICAgdGhpcy5nZXRDbHVzdGVyUmVjdHMoY2x1c3RlclNpemUsIHRoaXMubWFwLmdldEJvdW5kcygpKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgbWVyZ2VNYXAocmVjdHMgPT4gdGhpcy5jcmVhdGVPclVwZGF0ZUNsdXN0ZXIocmVjdHMpKVxuICAgICAgICAgICAgICApXG4gICAgICAgICksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlVHJpZ2dlciQpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChjbHVzdGVyczogQ2x1c3Rlck1hcFtdKSA9PiB7XG4gICAgICAgIGNsdXN0ZXJzLmZvckVhY2goY2x1c3RlciA9PiBjbHVzdGVyLnJlbmRlcih0aGlzLm1hcCkpO1xuXG4gICAgICAgIHRoaXMuaXNMb2FkaW5nJC5uZXh0KGZhbHNlKTtcbiAgICAgICAgdGltZXJTdGFydCQubmV4dCgpO1xuICAgICAgICB0aGlzLm1zVW50aWxSZWZyZXNoJC5uZXh0KHRoaXMuY29uZmlnLnJlZnJlc2hJbnRlcnZhbCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIGxpc3RlblRvQ2x1c3Rlck1hcENoYW5nZXMoKSB7XG4gICAgdGhpcy5nZXRNYXBDaGFuZ2VPYnNlcnZhYmxlKCkuc3Vic2NyaWJlKCk7XG4gIH1cblxuICByZWZyZXNoTWFya2VycygpIHtcbiAgICBpZiAodGhpcy5hc3NldHMpIHtcbiAgICAgIHN1cGVyLnJlZnJlc2hNYXJrZXJzKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuY2x1c3RlcnMuZm9yRWFjaChjbHVzdGVyID0+IHtcbiAgICAgIGNsdXN0ZXIuY2xlYXIodGhpcy5tYXApO1xuICAgIH0pO1xuICAgIHRoaXMucmVsb2FkKCk7XG4gIH1cblxuICBwcml2YXRlIGNoYW5nZVJvb3ROb2RlKG1vOiBJTWFuYWdlZE9iamVjdCkge1xuICAgIHRoaXMudW5zdWJzY3JpYmVBbGxMaXN0ZW5lcnMoKTtcbiAgICB0aGlzLmNsZWFyTWFya2VycygpO1xuICAgIHRoaXMuY2xlYXJDbHVzdGVycygpO1xuXG4gICAgY29uc3QgaXNQb3NpdGlvbkRldmljZSA9IG1vPy5jOHlfUG9zaXRpb24gJiYgbW8/LmM4eV9Jc0RldmljZTtcbiAgICBpZiAoaXNQb3NpdGlvbkRldmljZSkge1xuICAgICAgdGhpcy5hc3NldHMgPSBtbyBhcyBQb3NpdGlvbk1hbmFnZWRPYmplY3Q7XG4gICAgICB0aGlzLnJlZnJlc2hNYXJrZXJzKCk7XG4gICAgICB0aGlzLmxpc3RlblRvQ2x1c3Rlck1hcENoYW5nZXMoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5hc3NldHMgPSBudWxsO1xuICAgICAgdGhpcy5saXN0ZW5Ub0NsdXN0ZXJBbmRJbnRlcnZhbENoYW5nZXMoKTtcbiAgICAgIHRoaXMucmVsb2FkKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZXRDbHVzdGVyUmVjdHMoXG4gICAgbGV2ZWxUaHJlc2hvbGQ6IENsdXN0ZXJTaXplID0gQ2x1c3RlclNpemUuRk9VUixcbiAgICB2aWV3Qm91bmRzOiBMLkxhdExuZ0JvdW5kcyxcbiAgICBsZXZlbCA9IDBcbiAgKTogUHJvbWlzZTxMLlJlY3RhbmdsZVtdPiB7XG4gICAgbGV0IHJlY3RzID0gW107XG5cbiAgICBpZiAobGV2ZWxUaHJlc2hvbGQgPT09IENsdXN0ZXJTaXplLk5PTkUpIHtcbiAgICAgIGNvbnN0IHJlY3QgPSBhd2FpdCB0aGlzLmdldFJlY3Qodmlld0JvdW5kcyk7XG4gICAgICByZWN0cy5wdXNoKHJlY3QpO1xuICAgICAgcmV0dXJuIHJlY3RzO1xuICAgIH1cblxuICAgIGlmIChsZXZlbCA+PSBsZXZlbFRocmVzaG9sZCkge1xuICAgICAgcmV0dXJuIHJlY3RzO1xuICAgIH1cbiAgICBsZXZlbCsrO1xuXG4gICAgY29uc3QgeyBsYXQ6IHgxLCBsbmc6IHkxIH0gPSB2aWV3Qm91bmRzLmdldFNvdXRoV2VzdCgpO1xuICAgIGNvbnN0IHsgbGF0OiB4MiwgbG5nOiB5MiB9ID0gdmlld0JvdW5kcy5nZXROb3J0aEVhc3QoKTtcbiAgICBjb25zdCBuZXdYMiA9ICh4MSArIHgyKSAvIDI7XG4gICAgY29uc3QgbmV3WTIgPSAoeTEgKyB5MikgLyAyO1xuXG4gICAgY29uc3QgYm91bmRzOiBbW251bWJlciwgbnVtYmVyXSwgW251bWJlciwgbnVtYmVyXV1bXSA9IFtcbiAgICAgIFtcbiAgICAgICAgW3gxLCB5MV0sXG4gICAgICAgIFtuZXdYMiwgbmV3WTJdXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICBbbmV3WDIsIG5ld1kyXSxcbiAgICAgICAgW3gyLCB5Ml1cbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgIFt4MSwgbmV3WTJdLFxuICAgICAgICBbbmV3WDIsIHkyXVxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgW25ld1gyLCB5MV0sXG4gICAgICAgIFt4MiwgbmV3WTJdXG4gICAgICBdXG4gICAgXTtcbiAgICBmb3IgKGNvbnN0IGJvdW5kIG9mIGJvdW5kcykge1xuICAgICAgY29uc3QgbGF0TG5nQm91bmQgPSB0aGlzLmxlYWZsZXQubGF0TG5nQm91bmRzKGJvdW5kKTtcbiAgICAgIGNvbnN0IHJlY3QgPSBhd2FpdCB0aGlzLmdldFJlY3QobGF0TG5nQm91bmQpO1xuICAgICAgcmVjdHMgPSBbLi4ucmVjdHMsIC4uLihhd2FpdCB0aGlzLmdldENsdXN0ZXJSZWN0cyhsZXZlbFRocmVzaG9sZCwgbGF0TG5nQm91bmQsIGxldmVsKSldO1xuXG4gICAgICBpZiAobGV2ZWwgPT09IGxldmVsVGhyZXNob2xkKSB7XG4gICAgICAgIHJlY3RzLnB1c2gocmVjdCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlY3RzO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZXRSZWN0KGxhdExuZ0JvdW5kOiBMLkxhdExuZ0JvdW5kcykge1xuICAgIGxldCBjb2xvciA9ICdub25lJztcbiAgICBpZiAodGhpcy5zaG93Q2x1c3RlckNvbG9yKSB7XG4gICAgICBjb2xvciA9IGF3YWl0IHRoaXMuY29sb3JTZXJ2aWNlLmdlbmVyYXRlQ29sb3IobGF0TG5nQm91bmQudG9CQm94U3RyaW5nKCkpO1xuICAgIH1cbiAgICBjb25zdCByZWN0ID0gdGhpcy5sZWFmbGV0LnJlY3RhbmdsZShsYXRMbmdCb3VuZCwge1xuICAgICAgY29sb3IsXG4gICAgICB3ZWlnaHQ6IGNvbG9yID09PSAnbm9uZScgPyAwIDogMSxcbiAgICAgIGludGVyYWN0aXZlOiBmYWxzZVxuICAgIH0pO1xuICAgIHJldHVybiByZWN0O1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhckNsdXN0ZXJzKCkge1xuICAgIHRoaXMuY2x1c3RlcnMuZm9yRWFjaChjbHVzdGVyID0+IHtcbiAgICAgIGNsdXN0ZXIuY2xlYXIodGhpcy5tYXApO1xuICAgIH0pO1xuICAgIHRoaXMuY2x1c3RlcnMgPSBbXTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgdXBkYXRlQ2x1c3RlcihjbHVzdGVyOiBDbHVzdGVyTWFwKSB7XG4gICAgY29uc3QgY2x1c3RlckNvdW50ID0gYXdhaXQgdGhpcy5tYXBTZXJ2aWNlLmdldFBvc2l0aW9uTU9zRnJvbUJvdW5kQ291bnQoXG4gICAgICBjbHVzdGVyLnJlY3QuZ2V0Qm91bmRzKCksXG4gICAgICB0aGlzLnJvb3ROb2RlXG4gICAgKTtcbiAgICBpZiAoY2x1c3RlckNvdW50ID4gdGhpcy5tYXBTZXJ2aWNlLk1BWF9ERVZJQ0VfUEVSX0NMVVNURVIpIHtcbiAgICAgIGNsdXN0ZXIuc2V0Q2x1c3RlclRvQmlnTWFya2VyKHRoaXMubWFwLCBjbHVzdGVyQ291bnQsIHRoaXMubGVhZmxldCk7XG4gICAgICBjbHVzdGVyLnBvc2l0aW9ucyA9IFtdO1xuICAgICAgcmV0dXJuIGNsdXN0ZXI7XG4gICAgfVxuXG4gICAgY2x1c3Rlci5yZW1vdmVDbHVzdGVyVG9CaWdNYXJrZXIoKTtcbiAgICBjbHVzdGVyLnBvc2l0aW9ucyA9IGF3YWl0IHRoaXMubWFwU2VydmljZS5nZXRQb3NpdGlvbk1PcyhcbiAgICAgIGNsdXN0ZXIucmVjdC5nZXRCb3VuZHMoKSxcbiAgICAgIHRoaXMucm9vdE5vZGVcbiAgICApO1xuICAgIHJldHVybiBjbHVzdGVyO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVPclVwZGF0ZUNsdXN0ZXIocmVjdHM6IEwuUmVjdGFuZ2xlPHVua25vd24+W10pIHtcbiAgICBjb25zdCBpc05ldyA9IHJlY3RzLmxlbmd0aCAhPT0gdGhpcy5jbHVzdGVycy5sZW5ndGg7XG4gICAgaWYgKGlzTmV3KSB7XG4gICAgICB0aGlzLmNsZWFyQ2x1c3RlcnMoKTtcbiAgICB9XG4gICAgY29uc3QgdXBkYXRlUHJvbWlzZSA9IHJlY3RzLm1hcCgocmVjdCwgaW5kZXgpID0+IHtcbiAgICAgIGlmIChpc05ldykge1xuICAgICAgICBjb25zdCBjbHVzdGVyID0gbmV3IENsdXN0ZXJNYXAoXG4gICAgICAgICAgdGhpcy5pdGVyYWJsZSxcbiAgICAgICAgICBhc3NldCA9PiB0aGlzLmdldEFzc2V0TWFya2VyKGFzc2V0KSxcbiAgICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2VcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5jbHVzdGVycy5wdXNoKGNsdXN0ZXIpO1xuICAgICAgfVxuICAgICAgdGhpcy5jbHVzdGVyc1tpbmRleF0ucmVjdCA9IHJlY3Q7XG4gICAgICByZXR1cm4gdGhpcy51cGRhdGVDbHVzdGVyKHRoaXMuY2x1c3RlcnNbaW5kZXhdKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBQcm9taXNlLmFsbCh1cGRhdGVQcm9taXNlKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TWFwQ2hhbmdlT2JzZXJ2YWJsZSgpIHtcbiAgICByZXR1cm4gbWVyZ2UoXG4gICAgICBmcm9tRXZlbnQ8TC5MZWFmbGV0RXZlbnQ+KHRoaXMubWFwLCAnbW92ZScpLFxuICAgICAgZnJvbUV2ZW50PEwuTGVhZmxldEV2ZW50Pih0aGlzLm1hcCwgJ21vdmVlbmQnKVxuICAgICkucGlwZShcbiAgICAgIGRlYm91bmNlVGltZSh0aGlzLkVWRU5UX1RIUk9UVExFX1RJTUUpLFxuICAgICAgdGFwKGV2ZW50ID0+IHRoaXMubWFwQ2hhbmdlLmVtaXQoZXZlbnQpKSxcbiAgICAgIHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlVHJpZ2dlciQpXG4gICAgKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImM4eS1tYXBcIj5cbiAgPGRpdiAjbWFwPjwvZGl2PlxuPC9kaXY+XG48bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4iXX0=
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { gettext } from '@c8y/ngx-components';
|
|
2
|
-
import {
|
|
2
|
+
import { MapService } from './map.service';
|
|
3
3
|
export class ClusterMap {
|
|
4
4
|
constructor(iterable, addAssetCallback, translateService) {
|
|
5
5
|
this.iterable = iterable;
|
|
@@ -78,7 +78,12 @@ export class ClusterMap {
|
|
|
78
78
|
}
|
|
79
79
|
}
|
|
80
80
|
trackBy(index, item) {
|
|
81
|
-
const trackItems = [
|
|
81
|
+
const trackItems = [
|
|
82
|
+
item.id,
|
|
83
|
+
item.c8y_Position.lat,
|
|
84
|
+
item.c8y_Position.lng,
|
|
85
|
+
MapService.getStatus(item)
|
|
86
|
+
];
|
|
82
87
|
return trackItems.join('');
|
|
83
88
|
}
|
|
84
89
|
removeMarkerFromMap(device) {
|
|
@@ -86,4 +91,4 @@ export class ClusterMap {
|
|
|
86
91
|
markers.forEach(marker => marker.remove());
|
|
87
92
|
}
|
|
88
93
|
}
|
|
89
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
94
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2x1c3Rlci1tYXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9tYXAvY2x1c3Rlci1tYXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRTlDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsTUFBTSxPQUFPLFVBQVU7SUE0QnJCLFlBQ1UsUUFBeUIsRUFDekIsZ0JBQTZELEVBQzdELGdCQUFrQztRQUZsQyxhQUFRLEdBQVIsUUFBUSxDQUFpQjtRQUN6QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQTZDO1FBQzdELHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUE5QjVDLFlBQU8sR0FBZ0IsRUFBRSxDQUFDO1FBQzFCLGNBQVMsR0FBNEIsRUFBRSxDQUFDO1FBK0J0QyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2hGLENBQUM7SUE5QkQsSUFBSSxhQUFhLENBQUMsSUFBYTtRQUM3QixJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztRQUNoQyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztJQUM3QixDQUFDO0lBRUQsSUFBSSxhQUFhO1FBQ2YsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQzdCLENBQUM7SUFFRCxJQUFJLElBQUksQ0FBQyxJQUFpQjtRQUN4QixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDZCxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO1NBQ3JCO1FBQ0QsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7SUFDcEIsQ0FBQztJQUVELElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNw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UCxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUc7WUFDckIsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHO1lBQ3JCLFVBQVUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDO1NBQzNCLENBQUM7UUFDRixPQUFPLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVPLG1CQUFtQixDQUFDLE1BQTZCO1FBQ3ZELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBaUIsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxFQUFFLEtBQUssTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzNGLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUM3QyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJdGVyYWJsZUNoYW5nZVJlY29yZCwgSXRlcmFibGVEaWZmZXIsIEl0ZXJhYmxlRGlmZmVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHR5cGUgKiBhcyBMIGZyb20gJ2xlYWZsZXQnO1xuaW1wb3J0IHsgZ2V0dGV4dCB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgQzh5TWFya2VyLCBQb3NpdGlvbk1hbmFnZWRPYmplY3QgfSBmcm9tICcuL21hcC5tb2RlbCc7XG5pbXBvcnQgeyBNYXBTZXJ2aWNlIH0gZnJvbSAnLi9tYXAuc2VydmljZSc7XG5cbmV4cG9ydCBjbGFzcyBDbHVzdGVyTWFwIHtcbiAgbWFya2VyczogQzh5TWFya2VyW10gPSBbXTtcbiAgcG9zaXRpb25zOiBQb3NpdGlvbk1hbmFnZWRPYmplY3RbXSA9IFtdO1xuXG4gIHNldCBjbHVzdGVyTWFya2VyKGl0ZW06IEwuTGF5ZXIpIHtcbiAgICB0aGlzLnJlbW92ZUNsdXN0ZXJUb0JpZ01hcmtlcigpO1xuICAgIHRoaXMuX2NsdXN0ZXJNYXJrZXIgPSBpdGVtO1xuICB9XG5cbiAgZ2V0IGNsdXN0ZXJNYXJrZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NsdXN0ZXJNYXJrZXI7XG4gIH1cblxuICBzZXQgcmVjdChpdGVtOiBMLlJlY3RhbmdsZSkge1xuICAgIGlmICh0aGlzLl9yZWN0KSB7XG4gICAgICB0aGlzLl9yZWN0LnJlbW92ZSgpO1xuICAgIH1cbiAgICB0aGlzLl9yZWN0ID0gaXRlbTtcbiAgfVxuXG4gIGdldCByZWN0KCkge1xuICAgIHJldHVybiB0aGlzLl9yZWN0O1xuICB9XG5cbiAgcHJpdmF0ZSBfY2x1c3Rlck1hcmtlcjogTC5MYXllcjtcbiAgcHJpdmF0ZSBfcmVjdDogTC5SZWN0YW5nbGU7XG4gIHByaXZhdGUgaXRlcmFibGVEaWZmZXI6IEl0ZXJhYmxlRGlmZmVyPFBvc2l0aW9uTWFuYWdlZE9iamVjdD4gfCBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaXRlcmFibGU6IEl0ZXJhYmxlRGlmZmVycyxcbiAgICBwcml2YXRlIGFkZEFzc2V0Q2FsbGJhY2s6IChhc3NldDogUG9zaXRpb25NYW5hZ2VkT2JqZWN0KSA9PiBDOHlNYXJrZXIsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuaXRlcmFibGVEaWZmZXIgPSB0aGlzLml0ZXJhYmxlLmZpbmQodGhpcy5wb3NpdGlvbnMpLmNyZWF0ZSh0aGlzLnRyYWNrQnkpO1xuICB9XG5cbiAgcmVuZGVyKG1hcDogTC5NYXApIHtcbiAgICBpZiAodGhpcy5fcmVjdCkge1xuICAgICAgdGhpcy5fcmVjdC5hZGRUbyhtYXApO1xuICAgIH1cbiAgICB0aGlzLnVwZGF0ZUNoYW5nZXMobWFwKTtcbiAgICBpZiAodGhpcy5fY2x1c3Rlck1hcmtlcikge1xuICAgICAgdGhpcy5fY2x1c3Rlck1hcmtlci5hZGRUbyhtYXApO1xuICAgIH1cbiAgfVxuXG4gIGNsZWFyKG1hcDogTC5NYXApIHtcbiAgICB0aGlzLnJlbW92ZUNsdXN0ZXJUb0JpZ01hcmtlcigpO1xuICAgIHRoaXMuX3JlY3QucmVtb3ZlKCk7XG4gICAgdGhpcy5wb3NpdGlvbnMgPSBbXTtcbiAgICB0aGlzLnVwZGF0ZUNoYW5nZXMobWFwKTtcbiAgfVxuXG4gIHJlbW92ZUNsdXN0ZXJUb0JpZ01hcmtlcigpIHtcbiAgICBpZiAodGhpcy5fY2x1c3Rlck1hcmtlcikge1xuICAgICAgdGhpcy5fY2x1c3Rlck1hcmtlci5yZW1vdmUoKTtcbiAgICAgIHRoaXMuX2NsdXN0ZXJNYXJrZXIgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIGFkZE1hcmtlclRvTWFwKGRldmljZTogUG9zaXRpb25NYW5hZ2VkT2JqZWN0LCBtYXA6IEwuTWFwKSB7XG4gICAgY29uc3QgbWFya2VyID0gdGhpcy5hZGRBc3NldENhbGxiYWNrKGRldmljZSk7XG4gICAgdGhpcy5tYXJrZXJzLnB1c2gobWFya2VyKTtcbiAgICBtYXJrZXIuYWRkVG8obWFwKTtcbiAgfVxuXG4gIHNldENsdXN0ZXJUb0JpZ01hcmtlcihtYXA6IEwuTWFwLCBjb3VudCwgbGVhZmxldDogdHlwZW9mIEwpIHtcbiAgICBjb25zdCBib3VuZCA9IHRoaXMucmVjdC5nZXRCb3VuZHMoKTtcbiAgICBjb25zdCB0ZXh0ID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoZ2V0dGV4dCgnWm9vbSBpbicpKTtcbiAgICBjb25zdCBkaXZNYXJrZXIgPSBsZWFmbGV0LmRpdkljb24oe1xuICAgICAgaHRtbDogYDxkaXYgY2xhc3M9XCJjOHktbWFwLW1hcmtlci1jb3VudFwiIGRhdGEtY291bnQ9XCIke2NvdW50fVwiIHRpdGxlPVwiJHt0ZXh0fVwiPjwvZGl2PmBcbiAgICB9KTtcbiAgICBjb25zdCBsYWJlbEljb24gPSBsZWFmbGV0Lm1hcmtlcihib3VuZC5nZXRDZW50ZXIoKSwge1xuICAgICAgaWNvbjogZGl2TWFya2VyXG4gICAgfSk7XG4gICAgbGFiZWxJY29uLmFkZFRvKG1hcCk7XG4gICAgbGFiZWxJY29uLm9uKCdjbGljaycsICgpID0+IHtcbiAgICAgIG1hcC5maXRCb3VuZHMoYm91bmQpO1xuICAgIH0pO1xuICAgIHRoaXMuY2x1c3Rlck1hcmtlciA9IGxhYmVsSWNvbjtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlQ2hhbmdlcyhtYXA6IEwuTWFwKSB7XG4gICAgY29uc3QgY2hhbmdlcyA9IHRoaXMuaXRlcmFibGVEaWZmZXIuZGlmZih0aGlzLnBvc2l0aW9ucyk7XG4gICAgaWYgKGNoYW5nZXMpIHtcbiAgICAgIGNoYW5nZXMuZm9yRWFjaFJlbW92ZWRJdGVtKChyZWNvcmQ6IEl0ZXJhYmxlQ2hhbmdlUmVjb3JkPFBvc2l0aW9uTWFuYWdlZE9iamVjdD4pID0+IHtcbiAgICAgICAgdGhpcy5yZW1vdmVNYXJrZXJGcm9tTWFwKHJlY29yZC5pdGVtKTtcbiAgICAgIH0pO1xuXG4gICAgICBjaGFuZ2VzLmZvckVhY2hBZGRlZEl0ZW0oKHJlY29yZDogSXRlcmFibGVDaGFuZ2VSZWNvcmQ8UG9zaXRpb25NYW5hZ2VkT2JqZWN0PikgPT4ge1xuICAgICAgICB0aGlzLmFkZE1hcmtlclRvTWFwKHJlY29yZC5pdGVtLCBtYXApO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB0cmFja0J5KGluZGV4OiBudW1iZXIsIGl0ZW06IFBvc2l0aW9uTWFuYWdlZE9iamVjdCkge1xuICAgIGNvbnN0IHRyYWNrSXRlbXMgPSBbXG4gICAgICBpdGVtLmlkLFxuICAgICAgaXRlbS5jOHlfUG9zaXRpb24ubGF0LFxuICAgICAgaXRlbS5jOHlfUG9zaXRpb24ubG5nLFxuICAgICAgTWFwU2VydmljZS5nZXRTdGF0dXMoaXRlbSlcbiAgICBdO1xuICAgIHJldHVybiB0cmFja0l0ZW1zLmpvaW4oJycpO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVNYXJrZXJGcm9tTWFwKGRldmljZTogUG9zaXRpb25NYW5hZ2VkT2JqZWN0KSB7XG4gICAgY29uc3QgbWFya2VycyA9IHRoaXMubWFya2Vycy5maWx0ZXIoKG1hcmtlcjogQzh5TWFya2VyKSA9PiBtYXJrZXIuYXNzZXQ/LmlkID09PSBkZXZpY2UuaWQpO1xuICAgIG1hcmtlcnMuZm9yRWFjaChtYXJrZXIgPT4gbWFya2VyLnJlbW92ZSgpKTtcbiAgfVxufVxuIl19
|
|
@@ -10,7 +10,7 @@ export class MapStatusComponent {
|
|
|
10
10
|
constructor() {
|
|
11
11
|
this.configChange = new EventEmitter();
|
|
12
12
|
this.onUnfollow = new EventEmitter();
|
|
13
|
-
this.
|
|
13
|
+
this.centerMapButtonDisabled = true;
|
|
14
14
|
this.destroy$ = new Subject();
|
|
15
15
|
}
|
|
16
16
|
ngOnInit() {
|
|
@@ -60,16 +60,30 @@ export class MapStatusComponent {
|
|
|
60
60
|
this.clusterMap.mapChange.pipe(takeUntil(this.destroy$)).subscribe((event) => {
|
|
61
61
|
if (this.config?.center && event.sourceTarget?.getBounds) {
|
|
62
62
|
const bounds = event.sourceTarget.getBounds();
|
|
63
|
-
this.
|
|
63
|
+
this.centerMapButtonDisabled = this.shouldDisableCenterButton(bounds);
|
|
64
64
|
}
|
|
65
65
|
});
|
|
66
66
|
}
|
|
67
|
+
/**
|
|
68
|
+
* Checks if Center button should be disabled according to provided bounds.
|
|
69
|
+
* Provided bounds contain coordinates of current map rectangle corners.
|
|
70
|
+
* Center button should be disabled if distance between center coordinates (from config) and center of current bounds
|
|
71
|
+
* is less than 1/4 of bounds dimensions.
|
|
72
|
+
* To achieve it we just need to check if center coordinates (from config) are contained in the boundaries of
|
|
73
|
+
* current bounds shrunk by 25%.
|
|
74
|
+
* @param bounds Current map view boundaries.
|
|
75
|
+
* @returns True if distance between config center and current boundaries center is bigger than 1/4 of boundaries dimensions
|
|
76
|
+
*/
|
|
77
|
+
shouldDisableCenterButton(bounds) {
|
|
78
|
+
const shrunkBounds = bounds.pad(-0.25);
|
|
79
|
+
return shrunkBounds.contains(this.config.center);
|
|
80
|
+
}
|
|
67
81
|
}
|
|
68
82
|
MapStatusComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: MapStatusComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
69
|
-
MapStatusComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: MapStatusComponent, selector: "c8y-map-status", inputs: { config: "config", clusterMap: "clusterMap" }, outputs: { configChange: "configChange", onUnfollow: "onUnfollow" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"c8y-map-status\">\n <div class=\"leaflet-touch\">\n <div class=\"leaflet-bar\" role=\"group\">\n <button\n type=\"button\"\n title=\"{{ 'Realtime' | translate }}\"\n class=\"c8y-realtime\"\n *ngIf=\"initConfig.realtime || clusterMap.config.follow\"\n (click)=\"toggleRealtime()\"\n >\n <span class=\"c8y-pulse\" [ngClass]=\"{ active: clusterMap?.config.realtime }\"></span>\n </button>\n <button\n type=\"button\"\n class=\"time-ellapsed\"\n *ngIf=\"\n clusterMap?.config.refreshInterval &&\n (secondsUntilRefresh$ | async) &&\n !clusterMap?.config.follow\n \"\n disabled=\"disabled\"\n title=\"{{ secondsUntilRefresh$ | async }}s / {{\n clusterMap?.config.refreshInterval / 1000\n }}s\"\n [style.--timescope]=\"clusterMap?.config.refreshInterval + 1000 + 'ms'\"\n >\n <svg\n [ngClass]=\"{ 'time-on': !(clusterMap?.isLoading$ | async) }\"\n viewBox=\"0 0 40 40\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <circle cx=\"20\" cy=\"20\" r=\"15.8\" stroke=\"var(--c8y-brand-primary)\" stroke-width=\"6\" />\n </svg>\n\n <span>{{ secondsUntilRefresh$ | async }}</span>\n </button>\n <button\n type=\"button\"\n *ngIf=\"clusterMap?.isLoading$ | async\"\n title=\"{{ 'Cancel reload' | translate }}\"\n (click)=\"cancelReload()\"\n >\n <i c8yIcon=\"refresh\" class=\"icon-spin\"></i>\n </button>\n <button\n type=\"button\"\n *ngIf=\"\n !clusterMap?.config.realtime && !clusterMap?.assets && !(clusterMap?.isLoading$ | async)\n \"\n (click)=\"reload()\"\n [title]=\"'Reload' | translate\"\n >\n <i c8yIcon=\"refresh\"></i>\n </button>\n <button\n type=\"button\"\n (click)=\"center()\"\n title=\"{{ 'Center map' | translate }}\"\n [disabled]=\"
|
|
83
|
+
MapStatusComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: MapStatusComponent, selector: "c8y-map-status", inputs: { config: "config", clusterMap: "clusterMap" }, outputs: { configChange: "configChange", onUnfollow: "onUnfollow" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"c8y-map-status\">\n <div class=\"leaflet-touch\">\n <div class=\"leaflet-bar\" role=\"group\">\n <button\n type=\"button\"\n title=\"{{ 'Realtime' | translate }}\"\n class=\"c8y-realtime\"\n *ngIf=\"initConfig.realtime || clusterMap.config.follow\"\n (click)=\"toggleRealtime()\"\n >\n <span class=\"c8y-pulse\" [ngClass]=\"{ active: clusterMap?.config.realtime }\"></span>\n </button>\n <button\n type=\"button\"\n class=\"time-ellapsed\"\n *ngIf=\"\n clusterMap?.config.refreshInterval &&\n (secondsUntilRefresh$ | async) &&\n !clusterMap?.config.follow\n \"\n disabled=\"disabled\"\n title=\"{{ secondsUntilRefresh$ | async }}s / {{\n clusterMap?.config.refreshInterval / 1000\n }}s\"\n [style.--timescope]=\"clusterMap?.config.refreshInterval + 1000 + 'ms'\"\n >\n <svg\n [ngClass]=\"{ 'time-on': !(clusterMap?.isLoading$ | async) }\"\n viewBox=\"0 0 40 40\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <circle cx=\"20\" cy=\"20\" r=\"15.8\" stroke=\"var(--c8y-brand-primary)\" stroke-width=\"6\" />\n </svg>\n\n <span>{{ secondsUntilRefresh$ | async }}</span>\n </button>\n <button\n type=\"button\"\n *ngIf=\"clusterMap?.isLoading$ | async\"\n title=\"{{ 'Cancel reload' | translate }}\"\n (click)=\"cancelReload()\"\n >\n <i c8yIcon=\"refresh\" class=\"icon-spin\"></i>\n </button>\n <button\n type=\"button\"\n *ngIf=\"\n !clusterMap?.config.realtime && !clusterMap?.assets && !(clusterMap?.isLoading$ | async)\n \"\n (click)=\"reload()\"\n [title]=\"'Reload' | translate\"\n >\n <i c8yIcon=\"refresh\"></i>\n </button>\n <button\n type=\"button\"\n (click)=\"center()\"\n title=\"{{ 'Center map' | translate }}\"\n [disabled]=\"centerMapButtonDisabled || clusterMap?.config.follow\"\n >\n <i c8yIcon=\"target1\"></i>\n </button>\n <button\n type=\"button\"\n title=\"{{ 'Unfollow' | translate }}\"\n *ngIf=\"clusterMap?.config.follow\"\n (click)=\"unfollow()\"\n >\n <i c8yIcon=\"marker-off\"></i>\n </button>\n\n <button\n type=\"button\"\n title=\"{{ 'Follow' | translate }}\"\n *ngIf=\"initConfig.follow && !clusterMap?.config.follow\"\n (click)=\"follow()\"\n >\n <i c8yIcon=\"marker\"></i>\n </button>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }] });
|
|
70
84
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: MapStatusComponent, decorators: [{
|
|
71
85
|
type: Component,
|
|
72
|
-
args: [{ selector: 'c8y-map-status', template: "<div class=\"c8y-map-status\">\n <div class=\"leaflet-touch\">\n <div class=\"leaflet-bar\" role=\"group\">\n <button\n type=\"button\"\n title=\"{{ 'Realtime' | translate }}\"\n class=\"c8y-realtime\"\n *ngIf=\"initConfig.realtime || clusterMap.config.follow\"\n (click)=\"toggleRealtime()\"\n >\n <span class=\"c8y-pulse\" [ngClass]=\"{ active: clusterMap?.config.realtime }\"></span>\n </button>\n <button\n type=\"button\"\n class=\"time-ellapsed\"\n *ngIf=\"\n clusterMap?.config.refreshInterval &&\n (secondsUntilRefresh$ | async) &&\n !clusterMap?.config.follow\n \"\n disabled=\"disabled\"\n title=\"{{ secondsUntilRefresh$ | async }}s / {{\n clusterMap?.config.refreshInterval / 1000\n }}s\"\n [style.--timescope]=\"clusterMap?.config.refreshInterval + 1000 + 'ms'\"\n >\n <svg\n [ngClass]=\"{ 'time-on': !(clusterMap?.isLoading$ | async) }\"\n viewBox=\"0 0 40 40\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <circle cx=\"20\" cy=\"20\" r=\"15.8\" stroke=\"var(--c8y-brand-primary)\" stroke-width=\"6\" />\n </svg>\n\n <span>{{ secondsUntilRefresh$ | async }}</span>\n </button>\n <button\n type=\"button\"\n *ngIf=\"clusterMap?.isLoading$ | async\"\n title=\"{{ 'Cancel reload' | translate }}\"\n (click)=\"cancelReload()\"\n >\n <i c8yIcon=\"refresh\" class=\"icon-spin\"></i>\n </button>\n <button\n type=\"button\"\n *ngIf=\"\n !clusterMap?.config.realtime && !clusterMap?.assets && !(clusterMap?.isLoading$ | async)\n \"\n (click)=\"reload()\"\n [title]=\"'Reload' | translate\"\n >\n <i c8yIcon=\"refresh\"></i>\n </button>\n <button\n type=\"button\"\n (click)=\"center()\"\n title=\"{{ 'Center map' | translate }}\"\n [disabled]=\"
|
|
86
|
+
args: [{ selector: 'c8y-map-status', template: "<div class=\"c8y-map-status\">\n <div class=\"leaflet-touch\">\n <div class=\"leaflet-bar\" role=\"group\">\n <button\n type=\"button\"\n title=\"{{ 'Realtime' | translate }}\"\n class=\"c8y-realtime\"\n *ngIf=\"initConfig.realtime || clusterMap.config.follow\"\n (click)=\"toggleRealtime()\"\n >\n <span class=\"c8y-pulse\" [ngClass]=\"{ active: clusterMap?.config.realtime }\"></span>\n </button>\n <button\n type=\"button\"\n class=\"time-ellapsed\"\n *ngIf=\"\n clusterMap?.config.refreshInterval &&\n (secondsUntilRefresh$ | async) &&\n !clusterMap?.config.follow\n \"\n disabled=\"disabled\"\n title=\"{{ secondsUntilRefresh$ | async }}s / {{\n clusterMap?.config.refreshInterval / 1000\n }}s\"\n [style.--timescope]=\"clusterMap?.config.refreshInterval + 1000 + 'ms'\"\n >\n <svg\n [ngClass]=\"{ 'time-on': !(clusterMap?.isLoading$ | async) }\"\n viewBox=\"0 0 40 40\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <circle cx=\"20\" cy=\"20\" r=\"15.8\" stroke=\"var(--c8y-brand-primary)\" stroke-width=\"6\" />\n </svg>\n\n <span>{{ secondsUntilRefresh$ | async }}</span>\n </button>\n <button\n type=\"button\"\n *ngIf=\"clusterMap?.isLoading$ | async\"\n title=\"{{ 'Cancel reload' | translate }}\"\n (click)=\"cancelReload()\"\n >\n <i c8yIcon=\"refresh\" class=\"icon-spin\"></i>\n </button>\n <button\n type=\"button\"\n *ngIf=\"\n !clusterMap?.config.realtime && !clusterMap?.assets && !(clusterMap?.isLoading$ | async)\n \"\n (click)=\"reload()\"\n [title]=\"'Reload' | translate\"\n >\n <i c8yIcon=\"refresh\"></i>\n </button>\n <button\n type=\"button\"\n (click)=\"center()\"\n title=\"{{ 'Center map' | translate }}\"\n [disabled]=\"centerMapButtonDisabled || clusterMap?.config.follow\"\n >\n <i c8yIcon=\"target1\"></i>\n </button>\n <button\n type=\"button\"\n title=\"{{ 'Unfollow' | translate }}\"\n *ngIf=\"clusterMap?.config.follow\"\n (click)=\"unfollow()\"\n >\n <i c8yIcon=\"marker-off\"></i>\n </button>\n\n <button\n type=\"button\"\n title=\"{{ 'Follow' | translate }}\"\n *ngIf=\"initConfig.follow && !clusterMap?.config.follow\"\n (click)=\"follow()\"\n >\n <i c8yIcon=\"marker\"></i>\n </button>\n </div>\n </div>\n</div>\n" }]
|
|
73
87
|
}], propDecorators: { config: [{
|
|
74
88
|
type: Input
|
|
75
89
|
}], configChange: [{
|
|
@@ -79,4 +93,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
|
|
|
79
93
|
}], clusterMap: [{
|
|
80
94
|
type: Input
|
|
81
95
|
}] } });
|
|
82
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLXN0YXR1cy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9tYXAvbWFwLXN0YXR1cy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi9tYXAvbWFwLXN0YXR1cy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUN0RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUU5RCxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hELE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFdBQVcsQ0FBQzs7OztBQUt0QyxNQUFNLE9BQU8sa0JBQWtCO0lBSi9CO1FBU0UsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBb0IsQ0FBQztRQUdwRCxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQW9CLENBQUM7UUFLbEQsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUdYLGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0tBa0VsQztJQWhFQyxRQUFRO1FBQ04sSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsVUFBVSxFQUFFLGFBQWEsS0FBSyxPQUFPLENBQUMsVUFBVSxFQUFFLFlBQVksRUFBRTtZQUMxRSxJQUFJLENBQUMsMkJBQTJCLEVBQUUsQ0FBQztZQUVuQyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUM5RCxHQUFHLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsRUFDekQsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FDekIsQ0FBQztTQUNIO0lBQ0gsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxNQUFNO1FBQ0osSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVELGNBQWM7UUFDWixJQUFJLENBQUMsTUFBTSxHQUFHO1lBQ1osR0FBRyxJQUFJLENBQUMsTUFBTTtZQUNkLFFBQVEsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUTtTQUNoQyxDQUFDO1FBQ0YsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLE1BQU0sR0FBRztZQUNaLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNO1lBQ3pCLE1BQU0sRUFBRSxLQUFLO1NBQ2QsQ0FBQztRQUNGLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLENBQUMsTUFBTSxHQUFHO1lBQ1osR0FBRyxJQUFJLENBQUMsTUFBTTtZQUNkLE1BQU0sRUFBRSxJQUFJO1NBQ2IsQ0FBQztRQUNGLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVPLDJCQUEyQjtRQUNqQyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQXFCLEVBQUUsRUFBRTtZQUMzRixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxZQUFZLEVBQUUsU0FBUyxFQUFFO2dCQUN4RCxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUM5QyxJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQzthQUNyRTtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7K0dBakZVLGtCQUFrQjttR0FBbEIsa0JBQWtCLHdNQ1YvQixrbkZBbUZBOzJGRHpFYSxrQkFBa0I7a0JBSjlCLFNBQVM7K0JBQ0UsZ0JBQWdCOzhCQUsxQixNQUFNO3NCQURMLEtBQUs7Z0JBSU4sWUFBWTtzQkFEWCxNQUFNO2dCQUlQLFVBQVU7c0JBRFQsTUFBTTtnQkFJUCxVQUFVO3NCQURULEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2x1c3Rlck1hcENvbXBvbmVudCB9IGZyb20gJy4vY2x1c3Rlci1tYXAuY29tcG9uZW50JztcbmltcG9ydCB7IENsdXN0ZXJNYXBDb25maWcgfSBmcm9tICcuL21hcC5tb2RlbCc7XG5pbXBvcnQgeyBtYXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNsb25lRGVlcCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktbWFwLXN0YXR1cycsXG4gIHRlbXBsYXRlVXJsOiAnLi9tYXAtc3RhdHVzLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBNYXBTdGF0dXNDb21wb25lbnQge1xuICBASW5wdXQoKVxuICBjb25maWc6IENsdXN0ZXJNYXBDb25maWc7XG5cbiAgQE91dHB1dCgpXG4gIGNvbmZpZ0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Q2x1c3Rlck1hcENvbmZpZz4oKTtcblxuICBAT3V0cHV0KClcbiAgb25VbmZvbGxvdyA9IG5ldyBFdmVudEVtaXR0ZXI8Q2x1c3Rlck1hcENvbmZpZz4oKTtcblxuICBASW5wdXQoKVxuICBjbHVzdGVyTWFwOiBDbHVzdGVyTWFwQ29tcG9uZW50O1xuXG4gIHNob3dDZW50ZXIgPSBmYWxzZTtcbiAgc2Vjb25kc1VudGlsUmVmcmVzaCQ6IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgaW5pdENvbmZpZzogQ2x1c3Rlck1hcENvbmZpZztcbiAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pbml0Q29uZmlnID0gY2xvbmVEZWVwKHRoaXMuY29uZmlnKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy5jbHVzdGVyTWFwPy5wcmV2aW91c1ZhbHVlICE9PSBjaGFuZ2VzLmNsdXN0ZXJNYXA/LmN1cnJlbnRWYWx1ZSkge1xuICAgICAgdGhpcy5jaGVja0lmTWFwSXNBbHJlYWR5Q2VudGVyZWQoKTtcblxuICAgICAgdGhpcy5zZWNvbmRzVW50aWxSZWZyZXNoJCA9IHRoaXMuY2x1c3Rlck1hcC5tc1VudGlsUmVmcmVzaCQucGlwZShcbiAgICAgICAgbWFwKG1pbGxpc2Vjb25kcyA9PiBgJHtNYXRoLmZsb29yKG1pbGxpc2Vjb25kcyAvIDEwMDApfWApLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JClcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgY2VudGVyKCkge1xuICAgIHRoaXMuY2x1c3Rlck1hcC5jZW50ZXIoKTtcbiAgfVxuXG4gIHJlbG9hZCgpIHtcbiAgICB0aGlzLmNsdXN0ZXJNYXAucmVsb2FkKCk7XG4gIH1cblxuICBjYW5jZWxSZWxvYWQoKSB7XG4gICAgdGhpcy5jbHVzdGVyTWFwLmNhbmNlbFJlbG9hZCgpO1xuICB9XG5cbiAgdG9nZ2xlUmVhbHRpbWUoKSB7XG4gICAgdGhpcy5jb25maWcgPSB7XG4gICAgICAuLi50aGlzLmNvbmZpZyxcbiAgICAgIHJlYWx0aW1lOiAhdGhpcy5jb25maWcucmVhbHRpbWVcbiAgICB9O1xuICAgIHRoaXMuY29uZmlnQ2hhbmdlLmVtaXQodGhpcy5jb25maWcpO1xuICB9XG5cbiAgdW5mb2xsb3coKSB7XG4gICAgdGhpcy5jb25maWcgPSB7XG4gICAgICAuLi50aGlzLmNsdXN0ZXJNYXAuY29uZmlnLFxuICAgICAgZm9sbG93OiBmYWxzZVxuICAgIH07XG4gICAgdGhpcy5jb25maWdDaGFuZ2UuZW1pdCh0aGlzLmNvbmZpZyk7XG4gICAgdGhpcy5vblVuZm9sbG93LmVtaXQodGhpcy5jb25maWcpO1xuICB9XG5cbiAgZm9sbG93KCkge1xuICAgIHRoaXMuY29uZmlnID0ge1xuICAgICAgLi4udGhpcy5jb25maWcsXG4gICAgICBmb2xsb3c6IHRydWVcbiAgICB9O1xuICAgIHRoaXMuY29uZmlnQ2hhbmdlLmVtaXQodGhpcy5jb25maWcpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gIH1cblxuICBwcml2YXRlIGNoZWNrSWZNYXBJc0FscmVhZHlDZW50ZXJlZCgpIHtcbiAgICB0aGlzLmNsdXN0ZXJNYXAubWFwQ2hhbmdlLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKGV2ZW50OiBMLkxlYWZsZXRFdmVudCkgPT4ge1xuICAgICAgaWYgKHRoaXMuY29uZmlnPy5jZW50ZXIgJiYgZXZlbnQuc291cmNlVGFyZ2V0Py5nZXRCb3VuZHMpIHtcbiAgICAgICAgY29uc3QgYm91bmRzID0gZXZlbnQuc291cmNlVGFyZ2V0LmdldEJvdW5kcygpO1xuICAgICAgICB0aGlzLnNob3dDZW50ZXIgPSAhYm91bmRzLmdldENlbnRlcigpLmVxdWFscyh0aGlzLmNvbmZpZy5jZW50ZXIsIDMpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiYzh5LW1hcC1zdGF0dXNcIj5cbiAgPGRpdiBjbGFzcz1cImxlYWZsZXQtdG91Y2hcIj5cbiAgICA8ZGl2IGNsYXNzPVwibGVhZmxldC1iYXJcIiByb2xlPVwiZ3JvdXBcIj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIHRpdGxlPVwie3sgJ1JlYWx0aW1lJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgIGNsYXNzPVwiYzh5LXJlYWx0aW1lXCJcbiAgICAgICAgKm5nSWY9XCJpbml0Q29uZmlnLnJlYWx0aW1lIHx8IGNsdXN0ZXJNYXAuY29uZmlnLmZvbGxvd1wiXG4gICAgICAgIChjbGljayk9XCJ0b2dnbGVSZWFsdGltZSgpXCJcbiAgICAgID5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJjOHktcHVsc2VcIiBbbmdDbGFzc109XCJ7IGFjdGl2ZTogY2x1c3Rlck1hcD8uY29uZmlnLnJlYWx0aW1lIH1cIj48L3NwYW4+XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIGNsYXNzPVwidGltZS1lbGxhcHNlZFwiXG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgY2x1c3Rlck1hcD8uY29uZmlnLnJlZnJlc2hJbnRlcnZhbCAmJlxuICAgICAgICAgIChzZWNvbmRzVW50aWxSZWZyZXNoJCB8IGFzeW5jKSAmJlxuICAgICAgICAgICFjbHVzdGVyTWFwPy5jb25maWcuZm9sbG93XG4gICAgICAgIFwiXG4gICAgICAgIGRpc2FibGVkPVwiZGlzYWJsZWRcIlxuICAgICAgICB0aXRsZT1cInt7IHNlY29uZHNVbnRpbFJlZnJlc2gkIHwgYXN5bmMgfX1zIC8ge3tcbiAgICAgICAgICBjbHVzdGVyTWFwPy5jb25maWcucmVmcmVzaEludGVydmFsIC8gMTAwMFxuICAgICAgICB9fXNcIlxuICAgICAgICBbc3R5bGUuLS10aW1lc2NvcGVdPVwiY2x1c3Rlck1hcD8uY29uZmlnLnJlZnJlc2hJbnRlcnZhbCArIDEwMDAgKyAnbXMnXCJcbiAgICAgID5cbiAgICAgICAgPHN2Z1xuICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ3RpbWUtb24nOiAhKGNsdXN0ZXJNYXA/LmlzTG9hZGluZyQgfCBhc3luYykgfVwiXG4gICAgICAgICAgdmlld0JveD1cIjAgMCA0MCA0MFwiXG4gICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICA+XG4gICAgICAgICAgPGNpcmNsZSBjeD1cIjIwXCIgY3k9XCIyMFwiIHI9XCIxNS44XCIgc3Ryb2tlPVwidmFyKC0tYzh5LWJyYW5kLXByaW1hcnkpXCIgc3Ryb2tlLXdpZHRoPVwiNlwiIC8+XG4gICAgICAgIDwvc3ZnPlxuXG4gICAgICAgIDxzcGFuPnt7IHNlY29uZHNVbnRpbFJlZnJlc2gkIHwgYXN5bmMgfX08L3NwYW4+XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICpuZ0lmPVwiY2x1c3Rlck1hcD8uaXNMb2FkaW5nJCB8IGFzeW5jXCJcbiAgICAgICAgdGl0bGU9XCJ7eyAnQ2FuY2VsIHJlbG9hZCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAoY2xpY2spPVwiY2FuY2VsUmVsb2FkKClcIlxuICAgICAgPlxuICAgICAgICA8aSBjOHlJY29uPVwicmVmcmVzaFwiIGNsYXNzPVwiaWNvbi1zcGluXCI+PC9pPlxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICFjbHVzdGVyTWFwPy5jb25maWcucmVhbHRpbWUgJiYgIWNsdXN0ZXJNYXA/LmFzc2V0cyAmJiAhKGNsdXN0ZXJNYXA/LmlzTG9hZGluZyQgfCBhc3luYylcbiAgICAgICAgXCJcbiAgICAgICAgKGNsaWNrKT1cInJlbG9hZCgpXCJcbiAgICAgICAgW3RpdGxlXT1cIidSZWxvYWQnIHwgdHJhbnNsYXRlXCJcbiAgICAgID5cbiAgICAgICAgPGkgYzh5SWNvbj1cInJlZnJlc2hcIj48L2k+XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIChjbGljayk9XCJjZW50ZXIoKVwiXG4gICAgICAgIHRpdGxlPVwie3sgJ0NlbnRlciBtYXAnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgW2Rpc2FibGVkXT1cIiFzaG93Q2VudGVyIHx8IGNsdXN0ZXJNYXA/LmNvbmZpZy5mb2xsb3dcIlxuICAgICAgPlxuICAgICAgICA8aSBjOHlJY29uPVwidGFyZ2V0MVwiPjwvaT5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgdGl0bGU9XCJ7eyAnVW5mb2xsb3cnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgKm5nSWY9XCJjbHVzdGVyTWFwPy5jb25maWcuZm9sbG93XCJcbiAgICAgICAgKGNsaWNrKT1cInVuZm9sbG93KClcIlxuICAgICAgPlxuICAgICAgICA8aSBjOHlJY29uPVwibWFya2VyLW9mZlwiPjwvaT5cbiAgICAgIDwvYnV0dG9uPlxuXG4gICAgICA8YnV0dG9uXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICB0aXRsZT1cInt7ICdGb2xsb3cnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgKm5nSWY9XCJpbml0Q29uZmlnLmZvbGxvdyAmJiAhY2x1c3Rlck1hcD8uY29uZmlnLmZvbGxvd1wiXG4gICAgICAgIChjbGljayk9XCJmb2xsb3coKVwiXG4gICAgICA+XG4gICAgICAgIDxpIGM4eUljb249XCJtYXJrZXJcIj48L2k+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
96
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLXN0YXR1cy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9tYXAvbWFwLXN0YXR1cy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi9tYXAvbWFwLXN0YXR1cy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUN0RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUU5RCxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hELE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFdBQVcsQ0FBQzs7OztBQUt0QyxNQUFNLE9BQU8sa0JBQWtCO0lBSi9CO1FBU0UsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBb0IsQ0FBQztRQUdwRCxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQW9CLENBQUM7UUFLbEQsNEJBQXVCLEdBQUcsSUFBSSxDQUFDO1FBR3ZCLGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0tBaUZsQztJQS9FQyxRQUFRO1FBQ04sSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsVUFBVSxFQUFFLGFBQWEsS0FBSyxPQUFPLENBQUMsVUFBVSxFQUFFLFlBQVksRUFBRTtZQUMxRSxJQUFJLENBQUMsMkJBQTJCLEVBQUUsQ0FBQztZQUVuQyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUM5RCxHQUFHLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsRUFDekQsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FDekIsQ0FBQztTQUNIO0lBQ0gsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxNQUFNO1FBQ0osSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVELGNBQWM7UUFDWixJQUFJLENBQUMsTUFBTSxHQUFHO1lBQ1osR0FBRyxJQUFJLENBQUMsTUFBTTtZQUNkLFFBQVEsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUTtTQUNoQyxDQUFDO1FBQ0YsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLE1BQU0sR0FBRztZQUNaLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNO1lBQ3pCLE1BQU0sRUFBRSxLQUFLO1NBQ2QsQ0FBQztRQUNGLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLENBQUMsTUFBTSxHQUFHO1lBQ1osR0FBRyxJQUFJLENBQUMsTUFBTTtZQUNkLE1BQU0sRUFBRSxJQUFJO1NBQ2IsQ0FBQztRQUNGLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVPLDJCQUEyQjtRQUNqQyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQXFCLEVBQUUsRUFBRTtZQUMzRixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxZQUFZLEVBQUUsU0FBUyxFQUFFO2dCQUN4RCxNQUFNLE1BQU0sR0FBbUIsS0FBSyxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDOUQsSUFBSSxDQUFDLHVCQUF1QixHQUFHLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxNQUFNLENBQUMsQ0FBQzthQUN2RTtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7Ozs7Ozs7T0FTRztJQUNLLHlCQUF5QixDQUFDLE1BQXNCO1FBQ3RELE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2QyxPQUFPLFlBQVksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNuRCxDQUFDOzsrR0FoR1Usa0JBQWtCO21HQUFsQixrQkFBa0Isd01DVi9CLDhuRkFtRkE7MkZEekVhLGtCQUFrQjtrQkFKOUIsU0FBUzsrQkFDRSxnQkFBZ0I7OEJBSzFCLE1BQU07c0JBREwsS0FBSztnQkFJTixZQUFZO3NCQURYLE1BQU07Z0JBSVAsVUFBVTtzQkFEVCxNQUFNO2dCQUlQLFVBQVU7c0JBRFQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDbHVzdGVyTWFwQ29tcG9uZW50IH0gZnJvbSAnLi9jbHVzdGVyLW1hcC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2x1c3Rlck1hcENvbmZpZyB9IGZyb20gJy4vbWFwLm1vZGVsJztcbmltcG9ydCB7IG1hcCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2xvbmVEZWVwIH0gZnJvbSAnbG9kYXNoLWVzJztcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1tYXAtc3RhdHVzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL21hcC1zdGF0dXMuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIE1hcFN0YXR1c0NvbXBvbmVudCB7XG4gIEBJbnB1dCgpXG4gIGNvbmZpZzogQ2x1c3Rlck1hcENvbmZpZztcblxuICBAT3V0cHV0KClcbiAgY29uZmlnQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxDbHVzdGVyTWFwQ29uZmlnPigpO1xuXG4gIEBPdXRwdXQoKVxuICBvblVuZm9sbG93ID0gbmV3IEV2ZW50RW1pdHRlcjxDbHVzdGVyTWFwQ29uZmlnPigpO1xuXG4gIEBJbnB1dCgpXG4gIGNsdXN0ZXJNYXA6IENsdXN0ZXJNYXBDb21wb25lbnQ7XG5cbiAgY2VudGVyTWFwQnV0dG9uRGlzYWJsZWQgPSB0cnVlO1xuICBzZWNvbmRzVW50aWxSZWZyZXNoJDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICBpbml0Q29uZmlnOiBDbHVzdGVyTWFwQ29uZmlnO1xuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmluaXRDb25maWcgPSBjbG9uZURlZXAodGhpcy5jb25maWcpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzLmNsdXN0ZXJNYXA/LnByZXZpb3VzVmFsdWUgIT09IGNoYW5nZXMuY2x1c3Rlck1hcD8uY3VycmVudFZhbHVlKSB7XG4gICAgICB0aGlzLmNoZWNrSWZNYXBJc0FscmVhZHlDZW50ZXJlZCgpO1xuXG4gICAgICB0aGlzLnNlY29uZHNVbnRpbFJlZnJlc2gkID0gdGhpcy5jbHVzdGVyTWFwLm1zVW50aWxSZWZyZXNoJC5waXBlKFxuICAgICAgICBtYXAobWlsbGlzZWNvbmRzID0+IGAke01hdGguZmxvb3IobWlsbGlzZWNvbmRzIC8gMTAwMCl9YCksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBjZW50ZXIoKSB7XG4gICAgdGhpcy5jbHVzdGVyTWFwLmNlbnRlcigpO1xuICB9XG5cbiAgcmVsb2FkKCkge1xuICAgIHRoaXMuY2x1c3Rlck1hcC5yZWxvYWQoKTtcbiAgfVxuXG4gIGNhbmNlbFJlbG9hZCgpIHtcbiAgICB0aGlzLmNsdXN0ZXJNYXAuY2FuY2VsUmVsb2FkKCk7XG4gIH1cblxuICB0b2dnbGVSZWFsdGltZSgpIHtcbiAgICB0aGlzLmNvbmZpZyA9IHtcbiAgICAgIC4uLnRoaXMuY29uZmlnLFxuICAgICAgcmVhbHRpbWU6ICF0aGlzLmNvbmZpZy5yZWFsdGltZVxuICAgIH07XG4gICAgdGhpcy5jb25maWdDaGFuZ2UuZW1pdCh0aGlzLmNvbmZpZyk7XG4gIH1cblxuICB1bmZvbGxvdygpIHtcbiAgICB0aGlzLmNvbmZpZyA9IHtcbiAgICAgIC4uLnRoaXMuY2x1c3Rlck1hcC5jb25maWcsXG4gICAgICBmb2xsb3c6IGZhbHNlXG4gICAgfTtcbiAgICB0aGlzLmNvbmZpZ0NoYW5nZS5lbWl0KHRoaXMuY29uZmlnKTtcbiAgICB0aGlzLm9uVW5mb2xsb3cuZW1pdCh0aGlzLmNvbmZpZyk7XG4gIH1cblxuICBmb2xsb3coKSB7XG4gICAgdGhpcy5jb25maWcgPSB7XG4gICAgICAuLi50aGlzLmNvbmZpZyxcbiAgICAgIGZvbGxvdzogdHJ1ZVxuICAgIH07XG4gICAgdGhpcy5jb25maWdDaGFuZ2UuZW1pdCh0aGlzLmNvbmZpZyk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tJZk1hcElzQWxyZWFkeUNlbnRlcmVkKCkge1xuICAgIHRoaXMuY2x1c3Rlck1hcC5tYXBDaGFuZ2UucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoZXZlbnQ6IEwuTGVhZmxldEV2ZW50KSA9PiB7XG4gICAgICBpZiAodGhpcy5jb25maWc/LmNlbnRlciAmJiBldmVudC5zb3VyY2VUYXJnZXQ/LmdldEJvdW5kcykge1xuICAgICAgICBjb25zdCBib3VuZHM6IEwuTGF0TG5nQm91bmRzID0gZXZlbnQuc291cmNlVGFyZ2V0LmdldEJvdW5kcygpO1xuICAgICAgICB0aGlzLmNlbnRlck1hcEJ1dHRvbkRpc2FibGVkID0gdGhpcy5zaG91bGREaXNhYmxlQ2VudGVyQnV0dG9uKGJvdW5kcyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIENlbnRlciBidXR0b24gc2hvdWxkIGJlIGRpc2FibGVkIGFjY29yZGluZyB0byBwcm92aWRlZCBib3VuZHMuXG4gICAqIFByb3ZpZGVkIGJvdW5kcyBjb250YWluIGNvb3JkaW5hdGVzIG9mIGN1cnJlbnQgbWFwIHJlY3RhbmdsZSBjb3JuZXJzLlxuICAgKiBDZW50ZXIgYnV0dG9uIHNob3VsZCBiZSBkaXNhYmxlZCBpZiBkaXN0YW5jZSBiZXR3ZWVuIGNlbnRlciBjb29yZGluYXRlcyAoZnJvbSBjb25maWcpIGFuZCBjZW50ZXIgb2YgY3VycmVudCBib3VuZHNcbiAgICogaXMgbGVzcyB0aGFuIDEvNCBvZiBib3VuZHMgZGltZW5zaW9ucy5cbiAgICogVG8gYWNoaWV2ZSBpdCB3ZSBqdXN0IG5lZWQgdG8gY2hlY2sgaWYgY2VudGVyIGNvb3JkaW5hdGVzIChmcm9tIGNvbmZpZykgYXJlIGNvbnRhaW5lZCBpbiB0aGUgYm91bmRhcmllcyBvZlxuICAgKiBjdXJyZW50IGJvdW5kcyBzaHJ1bmsgYnkgMjUlLlxuICAgKiBAcGFyYW0gYm91bmRzIEN1cnJlbnQgbWFwIHZpZXcgYm91bmRhcmllcy5cbiAgICogQHJldHVybnMgVHJ1ZSBpZiBkaXN0YW5jZSBiZXR3ZWVuIGNvbmZpZyBjZW50ZXIgYW5kIGN1cnJlbnQgYm91bmRhcmllcyBjZW50ZXIgaXMgYmlnZ2VyIHRoYW4gMS80IG9mIGJvdW5kYXJpZXMgZGltZW5zaW9uc1xuICAgKi9cbiAgcHJpdmF0ZSBzaG91bGREaXNhYmxlQ2VudGVyQnV0dG9uKGJvdW5kczogTC5MYXRMbmdCb3VuZHMpOiBib29sZWFuIHtcbiAgICBjb25zdCBzaHJ1bmtCb3VuZHMgPSBib3VuZHMucGFkKC0wLjI1KTtcbiAgICByZXR1cm4gc2hydW5rQm91bmRzLmNvbnRhaW5zKHRoaXMuY29uZmlnLmNlbnRlcik7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjOHktbWFwLXN0YXR1c1wiPlxuICA8ZGl2IGNsYXNzPVwibGVhZmxldC10b3VjaFwiPlxuICAgIDxkaXYgY2xhc3M9XCJsZWFmbGV0LWJhclwiIHJvbGU9XCJncm91cFwiPlxuICAgICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgdGl0bGU9XCJ7eyAnUmVhbHRpbWUnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgY2xhc3M9XCJjOHktcmVhbHRpbWVcIlxuICAgICAgICAqbmdJZj1cImluaXRDb25maWcucmVhbHRpbWUgfHwgY2x1c3Rlck1hcC5jb25maWcuZm9sbG93XCJcbiAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVJlYWx0aW1lKClcIlxuICAgICAgPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImM4eS1wdWxzZVwiIFtuZ0NsYXNzXT1cInsgYWN0aXZlOiBjbHVzdGVyTWFwPy5jb25maWcucmVhbHRpbWUgfVwiPjwvc3Bhbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgY2xhc3M9XCJ0aW1lLWVsbGFwc2VkXCJcbiAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICBjbHVzdGVyTWFwPy5jb25maWcucmVmcmVzaEludGVydmFsICYmXG4gICAgICAgICAgKHNlY29uZHNVbnRpbFJlZnJlc2gkIHwgYXN5bmMpICYmXG4gICAgICAgICAgIWNsdXN0ZXJNYXA/LmNvbmZpZy5mb2xsb3dcbiAgICAgICAgXCJcbiAgICAgICAgZGlzYWJsZWQ9XCJkaXNhYmxlZFwiXG4gICAgICAgIHRpdGxlPVwie3sgc2Vjb25kc1VudGlsUmVmcmVzaCQgfCBhc3luYyB9fXMgLyB7e1xuICAgICAgICAgIGNsdXN0ZXJNYXA/LmNvbmZpZy5yZWZyZXNoSW50ZXJ2YWwgLyAxMDAwXG4gICAgICAgIH19c1wiXG4gICAgICAgIFtzdHlsZS4tLXRpbWVzY29wZV09XCJjbHVzdGVyTWFwPy5jb25maWcucmVmcmVzaEludGVydmFsICsgMTAwMCArICdtcydcIlxuICAgICAgPlxuICAgICAgICA8c3ZnXG4gICAgICAgICAgW25nQ2xhc3NdPVwieyAndGltZS1vbic6ICEoY2x1c3Rlck1hcD8uaXNMb2FkaW5nJCB8IGFzeW5jKSB9XCJcbiAgICAgICAgICB2aWV3Qm94PVwiMCAwIDQwIDQwXCJcbiAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgID5cbiAgICAgICAgICA8Y2lyY2xlIGN4PVwiMjBcIiBjeT1cIjIwXCIgcj1cIjE1LjhcIiBzdHJva2U9XCJ2YXIoLS1jOHktYnJhbmQtcHJpbWFyeSlcIiBzdHJva2Utd2lkdGg9XCI2XCIgLz5cbiAgICAgICAgPC9zdmc+XG5cbiAgICAgICAgPHNwYW4+e3sgc2Vjb25kc1VudGlsUmVmcmVzaCQgfCBhc3luYyB9fTwvc3Bhbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgKm5nSWY9XCJjbHVzdGVyTWFwPy5pc0xvYWRpbmckIHwgYXN5bmNcIlxuICAgICAgICB0aXRsZT1cInt7ICdDYW5jZWwgcmVsb2FkJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgIChjbGljayk9XCJjYW5jZWxSZWxvYWQoKVwiXG4gICAgICA+XG4gICAgICAgIDxpIGM4eUljb249XCJyZWZyZXNoXCIgY2xhc3M9XCJpY29uLXNwaW5cIj48L2k+XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgIWNsdXN0ZXJNYXA/LmNvbmZpZy5yZWFsdGltZSAmJiAhY2x1c3Rlck1hcD8uYXNzZXRzICYmICEoY2x1c3Rlck1hcD8uaXNMb2FkaW5nJCB8IGFzeW5jKVxuICAgICAgICBcIlxuICAgICAgICAoY2xpY2spPVwicmVsb2FkKClcIlxuICAgICAgICBbdGl0bGVdPVwiJ1JlbG9hZCcgfCB0cmFuc2xhdGVcIlxuICAgICAgPlxuICAgICAgICA8aSBjOHlJY29uPVwicmVmcmVzaFwiPjwvaT5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgKGNsaWNrKT1cImNlbnRlcigpXCJcbiAgICAgICAgdGl0bGU9XCJ7eyAnQ2VudGVyIG1hcCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICBbZGlzYWJsZWRdPVwiY2VudGVyTWFwQnV0dG9uRGlzYWJsZWQgfHwgY2x1c3Rlck1hcD8uY29uZmlnLmZvbGxvd1wiXG4gICAgICA+XG4gICAgICAgIDxpIGM4eUljb249XCJ0YXJnZXQxXCI+PC9pPlxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICB0aXRsZT1cInt7ICdVbmZvbGxvdycgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAqbmdJZj1cImNsdXN0ZXJNYXA/LmNvbmZpZy5mb2xsb3dcIlxuICAgICAgICAoY2xpY2spPVwidW5mb2xsb3coKVwiXG4gICAgICA+XG4gICAgICAgIDxpIGM4eUljb249XCJtYXJrZXItb2ZmXCI+PC9pPlxuICAgICAgPC9idXR0b24+XG5cbiAgICAgIDxidXR0b25cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIHRpdGxlPVwie3sgJ0ZvbGxvdycgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAqbmdJZj1cImluaXRDb25maWcuZm9sbG93ICYmICFjbHVzdGVyTWFwPy5jb25maWcuZm9sbG93XCJcbiAgICAgICAgKGNsaWNrKT1cImZvbGxvdygpXCJcbiAgICAgID5cbiAgICAgICAgPGkgYzh5SWNvbj1cIm1hcmtlclwiPjwvaT5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|