@tiba-spark/client-shared-lib 25.1.0-1132 → 25.1.0-1136
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/esm2022/libraries/interfaces/analytics.interface.mjs +7 -1
- package/esm2022/libraries/modules/guest/guest.actions.mjs +3 -2
- package/esm2022/libraries/modules/guest/guest.state.mjs +15 -5
- package/esm2022/libraries/services/analytics.service.mjs +6 -3
- package/esm2022/libraries/services/ticket.service.mjs +5 -5
- package/fesm2022/tiba-spark-client-shared-lib.mjs +29 -11
- package/fesm2022/tiba-spark-client-shared-lib.mjs.map +1 -1
- package/libraries/interfaces/analytics.interface.d.ts +8 -2
- package/libraries/interfaces/analytics.interface.d.ts.map +1 -1
- package/libraries/modules/guest/guest.actions.d.ts +3 -1
- package/libraries/modules/guest/guest.actions.d.ts.map +1 -1
- package/libraries/modules/guest/guest.state.d.ts +4 -1
- package/libraries/modules/guest/guest.state.d.ts.map +1 -1
- package/libraries/services/analytics.service.d.ts +1 -0
- package/libraries/services/analytics.service.d.ts.map +1 -1
- package/libraries/services/ticket.service.d.ts +3 -2
- package/libraries/services/ticket.service.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -9,6 +9,9 @@ export var AnalyticsSourceProps;
|
|
|
9
9
|
AnalyticsSourceProps["ValidationProfiles"] = "Validation Profiles - Sub Module";
|
|
10
10
|
AnalyticsSourceProps["RatesProgramming"] = "Rates Programming - Sub Module";
|
|
11
11
|
AnalyticsSourceProps["Unknown"] = "Unknown";
|
|
12
|
+
AnalyticsSourceProps["LotMobileDevice"] = "Lot Mobile Device";
|
|
13
|
+
AnalyticsSourceProps["MobileDeviceActivity"] = "Mobile Device Activity";
|
|
14
|
+
AnalyticsSourceProps["MobileParkActivity"] = "Mobile Park Activity";
|
|
12
15
|
})(AnalyticsSourceProps || (AnalyticsSourceProps = {}));
|
|
13
16
|
export var AnalyticsSourceComponent;
|
|
14
17
|
(function (AnalyticsSourceComponent) {
|
|
@@ -21,5 +24,8 @@ export var AnalyticsSourceComponent;
|
|
|
21
24
|
AnalyticsSourceComponent["RatesProgrammingComponent"] = "RatesProgrammingComponent";
|
|
22
25
|
AnalyticsSourceComponent["RestartSMartParkComponent"] = "RestartSMartParkComponent";
|
|
23
26
|
AnalyticsSourceComponent["Unknown"] = "Unknown";
|
|
27
|
+
AnalyticsSourceComponent["LotMobileDeviceComponent"] = "LotMobileDeviceComponent";
|
|
28
|
+
AnalyticsSourceComponent["MobileParkActivityComponent"] = "MobileParkActivityComponent";
|
|
29
|
+
AnalyticsSourceComponent["MobileDeviceActivityComponent"] = "MobileDeviceActivityComponent";
|
|
24
30
|
})(AnalyticsSourceComponent || (AnalyticsSourceComponent = {}));
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl0aWNzLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC1zaGFyZWQtbGliL3NyYy9saWJyYXJpZXMvaW50ZXJmYWNlcy9hbmFseXRpY3MuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE1BQU0sQ0FBTixJQUFZLG9CQWFYO0FBYkQsV0FBWSxvQkFBb0I7SUFDOUIsNkNBQXFCLENBQUE7SUFDckIsa0RBQTBCLENBQUE7SUFDMUIsa0RBQTBCLENBQUE7SUFDMUIsb0RBQTRCLENBQUE7SUFDNUIsOENBQXNCLENBQUE7SUFDdEIseUNBQWlCLENBQUE7SUFDakIsK0VBQXVELENBQUE7SUFDdkQsMkVBQW1ELENBQUE7SUFDbkQsMkNBQW1CLENBQUE7SUFDbkIsNkRBQXFDLENBQUE7SUFDckMsdUVBQStDLENBQUE7SUFDL0MsbUVBQTJDLENBQUE7QUFDN0MsQ0FBQyxFQWJXLG9CQUFvQixLQUFwQixvQkFBb0IsUUFhL0I7QUFFRCxNQUFNLENBQU4sSUFBWSx3QkFhWDtBQWJELFdBQVksd0JBQXdCO0lBQ2xDLGlGQUFxRCxDQUFBO0lBQ3JELDJGQUErRCxDQUFBO0lBQy9ELHVFQUEyQyxDQUFBO0lBQzNDLCtFQUFtRCxDQUFBO0lBQ25ELHlFQUE2QyxDQUFBO0lBQzdDLDZFQUFpRCxDQUFBO0lBQ2pELG1GQUF1RCxDQUFBO0lBQ3ZELG1GQUF1RCxDQUFBO0lBQ3ZELCtDQUFtQixDQUFBO0lBQ25CLGlGQUFxRCxDQUFBO0lBQ3JELHVGQUEyRCxDQUFBO0lBQzNELDJGQUErRCxDQUFBO0FBQ2pFLENBQUMsRUFiVyx3QkFBd0IsS0FBeEIsd0JBQXdCLFFBYW5DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGV2aWNlRHRvIH0gZnJvbSBcIi4uL3NlcnZpY2UtcHJveHkvZWRnZS1zZXJ2aWNlLXByb3hpZXNcIjtcblxuXG5leHBvcnQgZW51bSBBbmFseXRpY3NTb3VyY2VQcm9wcyB7XG4gIFJlc29sdmVyID0gJ1Jlc29sdmVyJyxcbiAgUmlnaHRDbGljayA9ICdSaWdodCBDbGljaycsXG4gIERldmljZU1lbnUgPSAnRGV2aWNlIE1lbnUnLFxuICBHYWxsZXJ5VmlldyA9ICdHYWxsZXJ5IFZpZXcnLFxuICBMaXN0VmlldyA9ICdMaXN0IFZpZXcnLFxuICBBbGVydHMgPSAnQWxlcnRzJyxcbiAgVmFsaWRhdGlvblByb2ZpbGVzID0gJ1ZhbGlkYXRpb24gUHJvZmlsZXMgLSBTdWIgTW9kdWxlJyxcbiAgUmF0ZXNQcm9ncmFtbWluZyA9ICdSYXRlcyBQcm9ncmFtbWluZyAtIFN1YiBNb2R1bGUnLFxuICBVbmtub3duID0gJ1Vua25vd24nLFxuICBMb3RNb2JpbGVEZXZpY2UgPSAnTG90IE1vYmlsZSBEZXZpY2UnLFxuICBNb2JpbGVEZXZpY2VBY3Rpdml0eSA9ICdNb2JpbGUgRGV2aWNlIEFjdGl2aXR5JyxcbiAgTW9iaWxlUGFya0FjdGl2aXR5ID0gJ01vYmlsZSBQYXJrIEFjdGl2aXR5Jyxcbn1cblxuZXhwb3J0IGVudW0gQW5hbHl0aWNzU291cmNlQ29tcG9uZW50IHtcbiAgRGV2aWNlc0xpc3RWaWV3Q29tcG9uZW50ID0gJ0RldmljZXNMaXN0Vmlld0NvbXBvbmVudCcsXG4gIERldmljZVJlbW90ZUNvbW1hbmRzQ29tcG9uZW50ID0gJ0RldmljZVJlbW90ZUNvbW1hbmRzQ29tcG9uZW50JyxcbiAgRGV2aWNlSXRlbUNvbXBvbmVudCA9ICdEZXZpY2VJdGVtQ29tcG9uZW50JyxcbiAgUmVzb2x2ZXJGb290ZXJDb21wb25lbnQgPSAnUmVzb2x2ZXJGb290ZXJDb21wb25lbnQnLFxuICBOb3RpZmljYXRpb25zU2VydmljZSA9ICdOb3RpZmljYXRpb25zU2VydmljZScsXG4gIFZhbGlkYXRpb25Qcm9maWxlU3RhdGUgPSAnVmFsaWRhdGlvblByb2ZpbGVTdGF0ZScsXG4gIFJhdGVzUHJvZ3JhbW1pbmdDb21wb25lbnQgPSAnUmF0ZXNQcm9ncmFtbWluZ0NvbXBvbmVudCcsXG4gIFJlc3RhcnRTTWFydFBhcmtDb21wb25lbnQgPSAnUmVzdGFydFNNYXJ0UGFya0NvbXBvbmVudCcsXG4gIFVua25vd24gPSAnVW5rbm93bicsXG4gIExvdE1vYmlsZURldmljZUNvbXBvbmVudCA9ICdMb3RNb2JpbGVEZXZpY2VDb21wb25lbnQnLFxuICBNb2JpbGVQYXJrQWN0aXZpdHlDb21wb25lbnQgPSAnTW9iaWxlUGFya0FjdGl2aXR5Q29tcG9uZW50JyxcbiAgTW9iaWxlRGV2aWNlQWN0aXZpdHlDb21wb25lbnQgPSAnTW9iaWxlRGV2aWNlQWN0aXZpdHlDb21wb25lbnQnXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXZlbnRQYXlsb2FkIHtcbiAgcGFya0lkOiBudW1iZXI7XG4gIGd1aWQ6IHN0cmluZztcbiAgc291cmNlPzogc3RyaW5nO1xuICBkZXZpY2U/OiBEZXZpY2VEdG87XG4gIHN1Y2Nlc3M/OiBib29sZWFuO1xuICBzbWFydFBhcmtWZXJzaW9uPzogc3RyaW5nO1xuICBzcGFya0FwaVZlcnNpb24/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXNlclBheWxvYWQge1xuICB1c2VySWQ6IG51bWJlcjtcbiAgdXNlckFnZW50OiBzdHJpbmc7XG4gIHVzZXJOYW1lOiBzdHJpbmc7XG4gIHRlbmFudDogc3RyaW5nO1xuICBsYW5ndWFnZTogc3RyaW5nO1xuICBjbG91ZFZlcnNpb246IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUcmFjZVBheWxvYWQge1xuICBvcmlnaW5hdGVkRnJvbT86IHN0cmluZztcbiAgZ3VpZD86IHN0cmluZztcbiAgc3VjY2Vzcz86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlQ291cG9uQW5hbHl0aWNzUGF5bG9hZCB7XG4gIGZhY2lsaXR5OiBzdHJpbmc7XG4gIGFjY291bnQ6IHN0cmluZztcbiAgc3ViQWNjb3VudDogc3RyaW5nO1xuICBiYXRjaE5hbWU6IHN0cmluZztcbiAgdmFsaWRhdGlvblR5cGU6IGJvb2xlYW47XG4gIHF1YW50aXR5OiBzdHJpbmc7XG4gIHZhbGlkRnJvbTogc3RyaW5nO1xuICB2YWxpZFRvOiBzdHJpbmc7XG4gIGFsbFdlZWtzOiBib29sZWFuO1xuICBkYXlzT2ZXZWVrOiBzdHJpbmdbXTtcbiAgc3RhcnRUaW1lOiBzdHJpbmc7XG4gIGVuZFRpbWU6IHN0cmluZztcbiAgbm90ZXM6IHN0cmluZztcbiAgcHJpY2VUYWJsZVRvQ2hhcmdlQWNjb3VudDogc3RyaW5nO1xuICB2YWx1ZTogbnVtYmVyO1xuICB2YWxpZGF0aW9uQWNjZXNzUHJvZmlsZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvdXBvbkFjdGlvbnNBbmFseXRpY3NQYXlsb2FkIHtcbiAgbmFtZT86IHN0cmluZztcbiAgdG90YWw/OiBudW1iZXI7XG4gIGlzc3VlZD86IG51bWJlcjtcbiAgdXNlZD86IG51bWJlcjtcbiAgZnJvbT86IHN0cmluZztcbiAgdG8/OiBzdHJpbmc7XG4gIGFjY291bnQ/OiBzdHJpbmc7XG4gIHN1YkFjY291bnQ/OiBzdHJpbmc7XG4gIGNyZWF0ZWRCeT86IHN0cmluZztcbiAgY3JlYXRlZD86IHN0cmluZztcbiAgdmFsaWRGcm9tPzogc3RyaW5nO1xuICB2YWxpZFRvPzogc3RyaW5nO1xuICByb3dOdW1iZXI/OiBudW1iZXI7XG59XG4iXX0=
|
|
@@ -121,9 +121,10 @@ export class ClearGuestProfilesAction {
|
|
|
121
121
|
}
|
|
122
122
|
export class UpdateGuestLocationAction {
|
|
123
123
|
static { this.type = '[guest] UpdateGuestLocation'; }
|
|
124
|
-
constructor(guid, updateGuestLocationCommand) {
|
|
124
|
+
constructor(guid, updateGuestLocationCommand, analyticsPayload) {
|
|
125
125
|
this.guid = guid;
|
|
126
126
|
this.updateGuestLocationCommand = updateGuestLocationCommand;
|
|
127
|
+
this.analyticsPayload = analyticsPayload;
|
|
127
128
|
}
|
|
128
129
|
}
|
|
129
130
|
let LoadGuestsByBatchIdAction = class LoadGuestsByBatchIdAction {
|
|
@@ -193,4 +194,4 @@ ExportGuestsAction = __decorate([
|
|
|
193
194
|
TrackAction()
|
|
194
195
|
], ExportGuestsAction);
|
|
195
196
|
export { ExportGuestsAction };
|
|
196
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3Vlc3QuYWN0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC1zaGFyZWQtbGliL3NyYy9saWJyYXJpZXMvbW9kdWxlcy9ndWVzdC9ndWVzdC5hY3Rpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBaUJuQyxJQUFNLGdCQUFnQixHQUF0QixNQUFNLGdCQUFnQjthQUNYLFNBQUksR0FBRyxvQkFBb0IsQ0FBQztJQUU1QyxZQUFtQixNQUFjLEVBQVMsSUFBWSxFQUFTLGVBQXlDO1FBQXJGLFdBQU0sR0FBTixNQUFNLENBQVE7UUFBUyxTQUFJLEdBQUosSUFBSSxDQUFRO1FBQVMsb0JBQWUsR0FBZixlQUFlLENBQTBCO0lBQ3hHLENBQUM7O0FBSlUsZ0JBQWdCO0lBRDVCLFdBQVcsRUFBRTtHQUNELGdCQUFnQixDQUs1QjtTQUxZLGdCQUFnQjtBQU83QixNQUFNLE9BQU8sZUFBZTthQUNWLFNBQUksR0FBRyxtQkFBbUIsQ0FBQztJQUUzQyxZQUFtQixNQUE0QjtRQUE1QixXQUFNLEdBQU4sTUFBTSxDQUFzQjtJQUMvQyxDQUFDOztBQUdILE1BQU0sT0FBTyxxQkFBcUI7YUFDaEIsU0FBSSxHQUFHLHlCQUF5QixDQUFDO0lBRWpEO0lBQ0EsQ0FBQzs7QUFHSCxNQUFNLE9BQU8saUJBQWlCO2FBQ1osU0FBSSxHQUFHLHFCQUFxQixDQUFDO0lBRTdDLFlBQW1CLElBQVksRUFBUyxLQUF5QjtRQUE5QyxTQUFJLEdBQUosSUFBSSxDQUFRO1FBQVMsVUFBSyxHQUFMLEtBQUssQ0FBb0I7SUFDakUsQ0FBQzs7QUFHSCxNQUFNLE9BQU8saUJBQWlCO2FBQ1osU0FBSSxHQUFHLHFCQUFxQixDQUFDO0lBRTdDLFlBQW1CLElBQVksRUFBUyxLQUF5QjtRQUE5QyxTQUFJLEdBQUosSUFBSSxDQUFRO1FBQVMsVUFBSyxH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RUFBUyxNQUFjLEVBQVMsT0FBZTtRQUEzRCxTQUFJLEdBQUosSUFBSSxDQUFRO1FBQVMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUFTLFlBQU8sR0FBUCxPQUFPLENBQVE7SUFDOUUsQ0FBQzs7QUFKVSxtQkFBbUI7SUFEL0IsV0FBVyxFQUFFO0dBQ0QsbUJBQW1CLENBSy9CO1NBTFksbUJBQW1CO0FBT2hDLE1BQU0sT0FBTyxnQkFBZ0I7YUFDSixTQUFJLEdBQUcsb0JBQW9CLENBQUM7SUFFbkQ7SUFDQSxDQUFDOztBQUdJLElBQU0sa0JBQWtCLEdBQXhCLE1BQU0sa0JBQWtCO2FBQ04sU0FBSSxHQUFHLHNCQUFzQixDQUFDO0lBRXJELFlBQW1CLE1BQWMsRUFBUyxJQUFZLEVBQVMsZUFBeUMsRUFBUyxRQUFrQixFQUFTLGFBQXVCO1FBQWhKLFdBQU0sR0FBTixNQUFNLENBQVE7UUFBUyxTQUFJLEdBQUosSUFBSSxDQUFRO1FBQVMsb0JBQWUsR0FBZixlQUFlLENBQTBCO1FBQVMsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUFTLGtCQUFhLEdBQWIsYUFBYSxDQUFVO0lBQ25LLENBQUM7O0FBSlUsa0JBQWtCO0lBRDlCLFdBQVcsRUFBRTtHQUNELGtCQUFrQixDQUs5QjtTQUxZLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENsb3VkLCBFZGdlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2UtcHJveHlcIjtcbmltcG9ydCB7IFRyYWNrQWN0aW9uIH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5pbXBvcnQgeyBGYWNpbGl0eVdpdGhHdWlkIH0gZnJvbSBcIi4uL2ZhY2lsaXR5L2ZhY2lsaXR5LXdpdGgtZ3VpZC5pbnRlcmZhY2VcIjtcblxuaW1wb3J0IENyZWF0ZUJhc2ljQmF0Y2hDb21tYW5kID0gRWRnZS5DcmVhdGVCYXNpY0JhdGNoQ29tbWFuZDtcbmltcG9ydCBDcmVhdGVCYXNpY0d1ZXN0Q29tbWFuZCA9IEVkZ2UuQ3JlYXRlQmFzaWNHdWVzdENvbW1hbmQ7XG5pbXBvcnQgQ3JlYXRlQmF0Y2hDb21tYW5kID0gRWRnZS5DcmVhdGVCYXRjaENvbW1hbmQ7XG5pbXBvcnQgQ3JlYXRlR3Vlc3RDb21tYW5kID0gRWRnZS5DcmVhdGVHdWVzdENvbW1hbmQ7XG5pbXBvcnQgR3Vlc3RzV2l0aEJhdGNoRmlsdGVyRHRvID0gRWRnZS5HdWVzdHNXaXRoQmF0Y2hGaWx0ZXJEdG87XG5pbXBvcnQgU2VhcmNoUGFyYW1zRHRvID0gRWRnZS5TZWFyY2hQYXJhbXNEdG87XG5pbXBvcnQgU2VuZEVtYWlsQ29tbWFuZCA9IEVkZ2UuU2VuZEVtYWlsQ29tbWFuZDtcbmltcG9ydCBVcGRhdGVCYXNpY0d1ZXN0Q29tbWFuZCA9IEVkZ2UuVXBkYXRlQmFzaWNHdWVzdENvbW1hbmQ7XG5pbXBvcnQgVXBkYXRlR3Vlc3RDb21tYW5kID0gRWRnZS5VcGRhdGVHdWVzdENvbW1hbmQ7XG5pbXBvcnQgVXBkYXRlR3Vlc3RMb2NhdGlvbkNvbW1hbmQgPSBFZGdlLlVwZGF0ZUd1ZXN0TG9jYXRpb25Db21tYW5kO1xuaW1wb3J0IFZHdWVzdFdpdGhCYXRjaER0byA9IEVkZ2UuVkd1ZXN0V2l0aEJhdGNoRHRvO1xuaW1wb3J0IEZpbGVUeXBlID0gQ2xvdWQuRmlsZVR5cGU7XG5cbkBUcmFja0FjdGlvbigpXG5leHBvcnQgY2xhc3MgTG9hZEd1ZXN0c0FjdGlvbiB7XG4gIHN0YXRpYyByZWFkb25seSB0eXBlID0gJ1tndWVzdF0gTG9hZEd1ZXN0cyc7XG5cbiAgY29uc3RydWN0b3IocHVibGljIHBhcmtJZDogbnVtYmVyLCBwdWJsaWMgZ3VpZDogc3RyaW5nLCBwdWJsaWMgZ3Vlc3RzRmlsdGVyRHRvOiBHdWVzdHNXaXRoQmF0Y2hGaWx0ZXJEdG8pIHtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgU2V0R3Vlc3RzQWN0aW9uIHtcbiAgc3RhdGljIHJlYWRvbmx5IHR5cGUgPSAnW2d1ZXN0XSBTZXRHdWVzdHMnO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBndWVzdHM6IFZHdWVzdFdpdGhCYXRjaER0b1tdKSB7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENsZWFyR3Vlc3RzTGlzdEFjdGlvbiB7XG4gIHN0YXRpYyByZWFkb25seSB0eXBlID0gJ1tndWVzdF0gQ2xlYXJHdWVzdHNMaXN0JztcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgVXBkYXRlR3Vlc3RBY3Rpb24ge1xuICBzdGF0aWMgcmVhZG9ubHkgdHlwZSA9ICdbZ3Vlc3RdIFVwZGF0ZUd1ZXN0JztcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgZ3VpZDogc3RyaW5nLCBwdWJsaWMgZ3Vlc3Q6IFVwZGF0ZUd1ZXN0Q29tbWFuZCkge1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDcmVhdGVHdWVzdEFjdGlvbiB7XG4gIHN0YXRpYyByZWFkb25seSB0eXBlID0gJ1tndWVzdF0gQ3JlYXRlR3Vlc3QnO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBndWlkOiBzdHJpbmcsIHB1YmxpYyBndWVzdDogQ3JlYXRlR3Vlc3RDb21tYW5kKSB7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENyZWF0ZUJhdGNoQWN0aW9uIHtcbiAgc3RhdGljIHJlYWRvbmx5IHR5cGUgPSAnW2d1ZXN0LWdyb3VwXSBDcmVhdGVHdWVzdEJhdGNoJztcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgZmFjaWxpdHlXaXRoR3VpZDogRmFjaWxpdHlXaXRoR3VpZCwgcHVibGljIGJhdGNoQ29tbWFuZDogQ3JlYXRlQmF0Y2hDb21tYW5kLCBwdWJsaWMgZXJyb3JNZXNzYWdlID0gbnVsbCkge1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDcmVhdGVCYXNpY0JhdGNoQWN0aW9uIHtcbiAgc3RhdGljIHJlYWRvbmx5IHR5cGUgPSAnW2d1ZXN0LWdyb3VwXSBDcmVhdGVCYXNpY0JhdGNoJztcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgZmFjaWxpdHlXaXRoR3VpZDogRmFjaWxpdHlXaXRoR3VpZCwgcHVibGljIGJhdGNoQ29tbWFuZDogQ3JlYXRlQmFzaWNCYXRjaENvbW1hbmQsIHB1YmxpYyBlcnJvck1lc3NhZ2UgPSBudWxsKSB7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFVwZGF0ZUJhc2ljR3Vlc3RBY3Rpb24ge1xuICBzdGF0aWMgcmVhZG9ubHkgdHlwZSA9ICdbZ3Vlc3RdIFVwZGF0ZUJhc2ljR3Vlc3QnO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBndWlkOiBzdHJpbmcsIHB1YmxpYyBndWVzdDogVXBkYXRlQmFzaWNHdWVzdENvbW1hbmQpIHtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgVXBkYXRlQmFzaWNHdWVzdFRlbXBBY3Rpb24ge1xuICBzdGF0aWMgcmVhZG9ubHkgdHlwZSA9ICdbZ3Vlc3RdIFVwZGF0ZUJhc2ljR3Vlc3RUZW1wJztcbiAgY29uc3RydWN0b3IocHVibGljIGd1aWQ6IHN0cmluZywgcHVibGljIGd1ZXN0OiBVcGRhdGVCYXNpY0d1ZXN0Q29tbWFuZCkge1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDcmVhdGVCYXNpY0d1ZXN0QWN0aW9uIHtcbiAgc3RhdGljIHJlYWRvbmx5IHR5cGUgPSAnW2d1ZXN0XSBDcmVhdGVCYXNpY0d1ZXN0JztcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgZ3VpZDogc3RyaW5nLCBwdWJsaWMgZ3Vlc3Q6IENyZWF0ZUJhc2ljR3Vlc3RDb21tYW5kKSB7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENsZWFySGFuZGxlZEd1ZXN0IHtcbiAgc3RhdGljIHJlYWRvbmx5IHR5cGUgPSAnW2d1ZXN0XSBDbGVhckhhbmRsZWRHdWVzdCc7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIERlbGV0ZUd1ZXN0QWN0aW9uIHtcbiAgc3RhdGljIHJlYWRvbmx5IHR5cGUgPSAnW2d1ZXN0XSBEZWxldGVHdWVzdEZyb21EQiAnO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBndWlkOiBzdHJpbmcsIHB1YmxpYyBndWVzdDogVkd1ZXN0V2l0aEJhdGNoRHRvKSB7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFNlbmRHdWVzdFBhc3Nlc1RvRW1haWxBY3Rpb24ge1xuICBzdGF0aWMgcmVhZG9ubHkgdHlwZSA9ICdbZ3Vlc3RdIFNlbmRHdWVzdFBhc3Nlc1RvRW1haWwnO1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgZ3VpZDogc3RyaW5nLCBwdWJsaWMgZ3Vlc3Q6IFZHdWVzdFdpdGhCYXRjaER0bywgcHVibGljIGVtYWlsOiBzdHJpbmcsIHB1YmxpYyBmYWNpbGl0eTogRmFjaWxpdHlXaXRoR3VpZCwgcHVibGljIGlzTXVsdGlQYWdlc0ZpbGU6IGJvb2xlYW4pIHtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgU2VuZEVtYWlsVG9HdWVzdCB7XG4gIHN0YXRpYyByZWFkb25seSB0eXBlID0gJ1tndWVzdF0gU2VuZEVtYWlsVG9HdWVzdCc7XG5cbiAgY29uc3RydWN0b3IocHVibGljIGd1aWQ6IHN0cmluZywgcHVibGljIHNlbmRFbWFpbENvbW1hbmQ6IFNlbmRFbWFpbENvbW1hbmQpIHtcbiAgfVxufVxuXG5AVHJhY2tBY3Rpb24oKVxuZXhwb3J0IGNsYXNzIExvYWRHdWVzdFByb2ZpbGVzQWN0aW9uIHtcbiAgc3RhdGljIHJlYWRvbmx5IHR5cGUgPSAnW2d1ZXN0XSBMb2FkR3Vlc3RQcm9maWxlcyc7XG5cbiAgY29uc3RydWN0b3IocHVibGljIHBhcmtJZDogbnVtYmVyLCBwdWJsaWMgZ3VpZDogc3RyaW5nLCBwdWJsaWMgc2VhcmNoUGFyYW1zRHRvPzogU2VhcmNoUGFyYW1zRHRvKSB7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENsZWFyR3Vlc3RQcm9maWxlc0FjdGlvbiB7XG4gIHN0YXRpYyByZWFkb25seSB0eXBlID0gJ1tndWVzdF0gQ2xlYXJHdWVzdFByb2ZpbGVzJztcblxuICBjb25zdHJ1Y3RvcigpIHsgfVxufVxuXG5leHBvcnQgY2xhc3MgVXBkYXRlR3Vlc3RMb2NhdGlvbkFjdGlvbiB7XG4gIHN0YXRpYyByZWFkb25seSB0eXBlID0gJ1tndWVzdF0gVXBkYXRlR3Vlc3RMb2NhdGlvbic7XG5cbiAgY29uc3RydWN0b3IocHVibGljIGd1aWQ6IHN0cmluZywgcHVibGljIHVwZGF0ZUd1ZXN0TG9jYXRpb25Db21tYW5kOiBVcGRhdGVHdWVzdExvY2F0aW9uQ29tbWFuZCkge1xuICB9XG59XG5cbkBUcmFja0FjdGlvbigpXG5leHBvcnQgY2xhc3MgTG9hZEd1ZXN0c0J5QmF0Y2hJZEFjdGlvbiB7XG4gIHN0YXRpYyByZWFkb25seSB0eXBlID0gJ1tndWVzdF0gTG9hZEd1ZXN0c0J5QmF0Y2hJZCc7XG5cbiAgY29uc3RydWN0b3IocHVibGljIHBhcmtJZDogbnVtYmVyLCBwdWJsaWMgZ3VpZDogc3RyaW5nLCBwdWJsaWMgYmF0Y2hJRDogbnVtYmVyLCBwdWJsaWMgZ3Vlc3RzRmlsdGVyRHRvOiBHdWVzdHNXaXRoQmF0Y2hGaWx0ZXJEdG8pIHtcbiAgfVxufVxuXG5AVHJhY2tBY3Rpb24oKVxuZXhwb3J0IGNsYXNzIExvYWRHdWVzdHNCeUJhdGNoSWRDYW5jZWxsZWRBY3Rpb24ge1xuICBzdGF0aWMgcmVhZG9ubHkgdHlwZSA9ICdbZ3Vlc3RdIExvYWRHdWVzdHNCeUJhdGNoSWRDYW5jZWxsZWQnO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBiYXRjaElkOiBudW1iZXIpIHtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRXhwYW5kR3Vlc3RzQnlCYXRjaElkQWN0aW9uIHtcbiAgc3RhdGljIHJlYWRvbmx5IHR5cGUgPSAnW2d1ZXN0XSBFeHBhbmRHdWVzdHNCeUJhdGNoSWQnO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBiYXRjaElEOiBudW1iZXIsIHB1YmxpYyBndWVzdHM6IFZHdWVzdFdpdGhCYXRjaER0b1tdKSB7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENvbGxhcHNlZEd1ZXN0c0J5QmF0Y2hJZEFjdGlvbiB7XG4gIHN0YXRpYyByZWFkb25seSB0eXBlID0gJ1tndWVzdF0gQ29sbGFwc2VkR3Vlc3RzQnlCYXRjaElkJztcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgYmF0Y2hJRDogbnVtYmVyKSB7XG4gIH1cbn1cblxuQFRyYWNrQWN0aW9uKClcbmV4cG9ydCBjbGFzcyBMb2FkR3Vlc3RCeUlkQWN0aW9uIHtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSB0eXBlID0gJ1tndWVzdF0gTG9hZEd1ZXN0QnlJZCc7XG5cbiAgY29uc3RydWN0b3IocHVibGljIGd1aWQ6IHN0cmluZywgcHVibGljIHBhcmtJZDogbnVtYmVyLCBwdWJsaWMgZ3Vlc3RJZDogbnVtYmVyKSB7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENsZWFyR3Vlc3RBY3Rpb24ge1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IHR5cGUgPSAnW2d1ZXN0XSBDbGVhckd1ZXN0JztcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgfVxufVxuQFRyYWNrQWN0aW9uKClcbmV4cG9ydCBjbGFzcyBFeHBvcnRHdWVzdHNBY3Rpb24ge1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IHR5cGUgPSAnW2d1ZXN0XSBFeHBvcnRHdWVzdHMnO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBwYXJrSWQ6IG51bWJlciwgcHVibGljIGd1aWQ6IHN0cmluZywgcHVibGljIGd1ZXN0c0ZpbHRlckR0bzogR3Vlc3RzV2l0aEJhdGNoRmlsdGVyRHRvLCBwdWJsaWMgZmlsZVR5cGU6IEZpbGVUeXBlLCBwdWJsaWMgY29sdW1uc0hlYWRlcjogc3RyaW5nW10pIHtcbiAgfVxufVxuIl19
|
|
197
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3Vlc3QuYWN0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC1zaGFyZWQtbGliL3NyYy9saWJyYXJpZXMvbW9kdWxlcy9ndWVzdC9ndWVzdC5hY3Rpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFFQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBaUJuQyxJQUFNLGdCQUFnQixHQUF0QixNQUFNLGdCQUFnQjthQUNYLFNBQUksR0FBRyxvQkFBb0IsQ0FBQztJQUU1QyxZQUFtQixNQUFjLEVBQVMsSUFBWSxFQUFTLGVBQXlDO1FBQXJGLFdBQU0sR0FBTixNQUFNLENBQVE7UUFBUyxTQUFJLEdBQUosSUFBSSxDQUFRO1FBQVMsb0JBQWUsR0FBZixlQUFlLENBQTBCO0lBQ3hHLENBQUM7O0FBSlUsZ0JBQWdCO0lBRDVCLFdBQVcsRUFBRTtHQUNELGdCQUFnQixDQUs1QjtTQUxZLGdCQUFnQjtBQU83QixNQUFNLE9BQU8sZUFBZTthQUNWLFNBQUksR0FBRyxtQkFBbUIsQ0FBQztJQUUzQyxZQUFtQixNQUE0QjtRQUE1QixXQUFNLEdBQU4sTUFBTSxDQUFzQjtJQUMvQyxDQUFDOztBQUdILE1BQU0sT0FBTyxxQkFBcUI7YUFDaEIsU0FBSSxHQUFHLHlCQUF5QixDQUFDO0lBRWpEO0lBQ0EsQ0FBQzs7QUFHSCxNQUFNLE9BQU8saUJBQWlCO2FBQ1osU0FBSSxHQUFHLHFCQUFxQixDQUFDO0lBRTdDLFlBQW1CLElBQVksRUFBUyxLQUF5QjtRQUE5QyxTQUFJLEdBQUosSUFBSSxDQUFRO1FBQVMsVUFBSyxHQUFMLEtBQUssQ0FBb0I7SUFDakUsQ0FBQzs7QUFHSCxNQUFNLE9BQU8saUJBQWlCO2FBQ1osU0FBSSxHQUFHLHFCQUFxQixDQUFDO0lBRTdDLFlBQW1CLElBQVksRUFBUyxLQUF5QjtRQUE5QyxTQUFJLEdBQUosSUFBSSxDQUFRO1FBQVMsVUFBSyxH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Q1AsU0FBSSxHQUFHLHVCQUF1QixDQUFDO0lBRXRELFlBQW1CLElBQVksRUFBUyxNQUFjLEVBQVMsT0FBZTtRQUEzRCxTQUFJLEdBQUosSUFBSSxDQUFRO1FBQVMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUFTLFlBQU8sR0FBUCxPQUFPLENBQVE7SUFDOUUsQ0FBQzs7QUFKVSxtQkFBbUI7SUFEL0IsV0FBVyxFQUFFO0dBQ0QsbUJBQW1CLENBSy9CO1NBTFksbUJBQW1CO0FBT2hDLE1BQU0sT0FBTyxnQkFBZ0I7YUFDSixTQUFJLEdBQUcsb0JBQW9CLENBQUM7SUFFbkQ7SUFDQSxDQUFDOztBQUdJLElBQU0sa0JBQWtCLEdBQXhCLE1BQU0sa0JBQWtCO2FBQ04sU0FBSSxHQUFHLHNCQUFzQixDQUFDO0lBRXJELFlBQW1CLE1BQWMsRUFBUyxJQUFZLEVBQVMsZUFBeUMsRUFBUyxRQUFrQixFQUFTLGFBQXVCO1FBQWhKLFdBQU0sR0FBTixNQUFNLENBQVE7UUFBUyxTQUFJLEdBQUosSUFBSSxDQUFRO1FBQVMsb0JBQWUsR0FBZixlQUFlLENBQTBCO1FBQVMsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUFTLGtCQUFhLEdBQWIsYUFBYSxDQUFVO0lBQ25LLENBQUM7O0FBSlUsa0JBQWtCO0lBRDlCLFdBQVcsRUFBRTtHQUNELGtCQUFrQixDQUs5QjtTQUxZLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRyYWNlUGF5bG9hZCB9IGZyb20gXCIuLi8uLi9pbnRlcmZhY2VzL2FuYWx5dGljcy5pbnRlcmZhY2VcIjtcbmltcG9ydCB7IENsb3VkLCBFZGdlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2UtcHJveHlcIjtcbmltcG9ydCB7IFRyYWNrQWN0aW9uIH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5pbXBvcnQgeyBGYWNpbGl0eVdpdGhHdWlkIH0gZnJvbSBcIi4uL2ZhY2lsaXR5L2ZhY2lsaXR5LXdpdGgtZ3VpZC5pbnRlcmZhY2VcIjtcblxuaW1wb3J0IENyZWF0ZUJhc2ljQmF0Y2hDb21tYW5kID0gRWRnZS5DcmVhdGVCYXNpY0JhdGNoQ29tbWFuZDtcbmltcG9ydCBDcmVhdGVCYXNpY0d1ZXN0Q29tbWFuZCA9IEVkZ2UuQ3JlYXRlQmFzaWNHdWVzdENvbW1hbmQ7XG5pbXBvcnQgQ3JlYXRlQmF0Y2hDb21tYW5kID0gRWRnZS5DcmVhdGVCYXRjaENvbW1hbmQ7XG5pbXBvcnQgQ3JlYXRlR3Vlc3RDb21tYW5kID0gRWRnZS5DcmVhdGVHdWVzdENvbW1hbmQ7XG5pbXBvcnQgR3Vlc3RzV2l0aEJhdGNoRmlsdGVyRHRvID0gRWRnZS5HdWVzdHNXaXRoQmF0Y2hGaWx0ZXJEdG87XG5pbXBvcnQgU2VhcmNoUGFyYW1zRHRvID0gRWRnZS5TZWFyY2hQYXJhbXNEdG87XG5pbXBvcnQgU2VuZEVtYWlsQ29tbWFuZCA9IEVkZ2UuU2VuZEVtYWlsQ29tbWFuZDtcbmltcG9ydCBVcGRhdGVCYXNpY0d1ZXN0Q29tbWFuZCA9IEVkZ2UuVXBkYXRlQmFzaWNHdWVzdENvbW1hbmQ7XG5pbXBvcnQgVXBkYXRlR3Vlc3RDb21tYW5kID0gRWRnZS5VcGRhdGVHdWVzdENvbW1hbmQ7XG5pbXBvcnQgVXBkYXRlR3Vlc3RMb2NhdGlvbkNvbW1hbmQgPSBFZGdlLlVwZGF0ZUd1ZXN0TG9jYXRpb25Db21tYW5kO1xuaW1wb3J0IFZHdWVzdFdpdGhCYXRjaER0byA9IEVkZ2UuVkd1ZXN0V2l0aEJhdGNoRHRvO1xuaW1wb3J0IEZpbGVUeXBlID0gQ2xvdWQuRmlsZVR5cGU7XG5cbkBUcmFja0FjdGlvbigpXG5leHBvcnQgY2xhc3MgTG9hZEd1ZXN0c0FjdGlvbiB7XG4gIHN0YXRpYyByZWFkb25seSB0eXBlID0gJ1tndWVzdF0gTG9hZEd1ZXN0cyc7XG5cbiAgY29uc3RydWN0b3IocHVibGljIHBhcmtJZDogbnVtYmVyLCBwdWJsaWMgZ3VpZDogc3RyaW5nLCBwdWJsaWMgZ3Vlc3RzRmlsdGVyRHRvOiBHdWVzdHNXaXRoQmF0Y2hGaWx0ZXJEdG8pIHtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgU2V0R3Vlc3RzQWN0aW9uIHtcbiAgc3RhdGljIHJlYWRvbmx5IHR5cGUgPSAnW2d1ZXN0XSBTZXRHdWVzdHMnO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBndWVzdHM6IFZHdWVzdFdpdGhCYXRjaER0b1tdKSB7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENsZWFyR3Vlc3RzTGlzdEFjdGlvbiB7XG4gIHN0YXRpYyByZWFkb25seSB0eXBlID0gJ1tndWVzdF0gQ2xlYXJHdWVzdHNMaXN0JztcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgVXBkYXRlR3Vlc3RBY3Rpb24ge1xuICBzdGF0aWMgcmVhZG9ubHkgdHlwZSA9ICdbZ3Vlc3RdIFVwZGF0ZUd1ZXN0JztcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgZ3VpZDogc3RyaW5nLCBwdWJsaWMgZ3Vlc3Q6IFVwZGF0ZUd1ZXN0Q29tbWFuZCkge1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDcmVhdGVHdWVzdEFjdGlvbiB7XG4gIHN0YXRpYyByZWFkb25seSB0eXBlID0gJ1tndWVzdF0gQ3JlYXRlR3Vlc3QnO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBndWlkOiBzdHJpbmcsIHB1YmxpYyBndWVzdDogQ3JlYXRlR3Vlc3RDb21tYW5kKSB7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENyZWF0ZUJhdGNoQWN0aW9uIHtcbiAgc3RhdGljIHJlYWRvbmx5IHR5cGUgPSAnW2d1ZXN0LWdyb3VwXSBDcmVhdGVHdWVzdEJhdGNoJztcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgZmFjaWxpdHlXaXRoR3VpZDogRmFjaWxpdHlXaXRoR3VpZCwgcHVibGljIGJhdGNoQ29tbWFuZDogQ3JlYXRlQmF0Y2hDb21tYW5kLCBwdWJsaWMgZXJyb3JNZXNzYWdlID0gbnVsbCkge1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDcmVhdGVCYXNpY0JhdGNoQWN0aW9uIHtcbiAgc3RhdGljIHJlYWRvbmx5IHR5cGUgPSAnW2d1ZXN0LWdyb3VwXSBDcmVhdGVCYXNpY0JhdGNoJztcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgZmFjaWxpdHlXaXRoR3VpZDogRmFjaWxpdHlXaXRoR3VpZCwgcHVibGljIGJhdGNoQ29tbWFuZDogQ3JlYXRlQmFzaWNCYXRjaENvbW1hbmQsIHB1YmxpYyBlcnJvck1lc3NhZ2UgPSBudWxsKSB7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFVwZGF0ZUJhc2ljR3Vlc3RBY3Rpb24ge1xuICBzdGF0aWMgcmVhZG9ubHkgdHlwZSA9ICdbZ3Vlc3RdIFVwZGF0ZUJhc2ljR3Vlc3QnO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBndWlkOiBzdHJpbmcsIHB1YmxpYyBndWVzdDogVXBkYXRlQmFzaWNHdWVzdENvbW1hbmQpIHtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgVXBkYXRlQmFzaWNHdWVzdFRlbXBBY3Rpb24ge1xuICBzdGF0aWMgcmVhZG9ubHkgdHlwZSA9ICdbZ3Vlc3RdIFVwZGF0ZUJhc2ljR3Vlc3RUZW1wJztcbiAgY29uc3RydWN0b3IocHVibGljIGd1aWQ6IHN0cmluZywgcHVibGljIGd1ZXN0OiBVcGRhdGVCYXNpY0d1ZXN0Q29tbWFuZCkge1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDcmVhdGVCYXNpY0d1ZXN0QWN0aW9uIHtcbiAgc3RhdGljIHJlYWRvbmx5IHR5cGUgPSAnW2d1ZXN0XSBDcmVhdGVCYXNpY0d1ZXN0JztcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgZ3VpZDogc3RyaW5nLCBwdWJsaWMgZ3Vlc3Q6IENyZWF0ZUJhc2ljR3Vlc3RDb21tYW5kKSB7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENsZWFySGFuZGxlZEd1ZXN0IHtcbiAgc3RhdGljIHJlYWRvbmx5IHR5cGUgPSAnW2d1ZXN0XSBDbGVhckhhbmRsZWRHdWVzdCc7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIERlbGV0ZUd1ZXN0QWN0aW9uIHtcbiAgc3RhdGljIHJlYWRvbmx5IHR5cGUgPSAnW2d1ZXN0XSBEZWxldGVHdWVzdEZyb21EQiAnO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBndWlkOiBzdHJpbmcsIHB1YmxpYyBndWVzdDogVkd1ZXN0V2l0aEJhdGNoRHRvKSB7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFNlbmRHdWVzdFBhc3Nlc1RvRW1haWxBY3Rpb24ge1xuICBzdGF0aWMgcmVhZG9ubHkgdHlwZSA9ICdbZ3Vlc3RdIFNlbmRHdWVzdFBhc3Nlc1RvRW1haWwnO1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgZ3VpZDogc3RyaW5nLCBwdWJsaWMgZ3Vlc3Q6IFZHdWVzdFdpdGhCYXRjaER0bywgcHVibGljIGVtYWlsOiBzdHJpbmcsIHB1YmxpYyBmYWNpbGl0eTogRmFjaWxpdHlXaXRoR3VpZCwgcHVibGljIGlzTXVsdGlQYWdlc0ZpbGU6IGJvb2xlYW4pIHtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgU2VuZEVtYWlsVG9HdWVzdCB7XG4gIHN0YXRpYyByZWFkb25seSB0eXBlID0gJ1tndWVzdF0gU2VuZEVtYWlsVG9HdWVzdCc7XG5cbiAgY29uc3RydWN0b3IocHVibGljIGd1aWQ6IHN0cmluZywgcHVibGljIHNlbmRFbWFpbENvbW1hbmQ6IFNlbmRFbWFpbENvbW1hbmQpIHtcbiAgfVxufVxuXG5AVHJhY2tBY3Rpb24oKVxuZXhwb3J0IGNsYXNzIExvYWRHdWVzdFByb2ZpbGVzQWN0aW9uIHtcbiAgc3RhdGljIHJlYWRvbmx5IHR5cGUgPSAnW2d1ZXN0XSBMb2FkR3Vlc3RQcm9maWxlcyc7XG5cbiAgY29uc3RydWN0b3IocHVibGljIHBhcmtJZDogbnVtYmVyLCBwdWJsaWMgZ3VpZDogc3RyaW5nLCBwdWJsaWMgc2VhcmNoUGFyYW1zRHRvPzogU2VhcmNoUGFyYW1zRHRvKSB7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENsZWFyR3Vlc3RQcm9maWxlc0FjdGlvbiB7XG4gIHN0YXRpYyByZWFkb25seSB0eXBlID0gJ1tndWVzdF0gQ2xlYXJHdWVzdFByb2ZpbGVzJztcblxuICBjb25zdHJ1Y3RvcigpIHsgfVxufVxuXG5leHBvcnQgY2xhc3MgVXBkYXRlR3Vlc3RMb2NhdGlvbkFjdGlvbiB7XG4gIHN0YXRpYyByZWFkb25seSB0eXBlID0gJ1tndWVzdF0gVXBkYXRlR3Vlc3RMb2NhdGlvbic7XG5cbiAgY29uc3RydWN0b3IocHVibGljIGd1aWQ6IHN0cmluZywgcHVibGljIHVwZGF0ZUd1ZXN0TG9jYXRpb25Db21tYW5kOiBVcGRhdGVHdWVzdExvY2F0aW9uQ29tbWFuZCwgcHVibGljIGFuYWx5dGljc1BheWxvYWQ/OiBUcmFjZVBheWxvYWQpIHtcbiAgfVxufVxuXG5AVHJhY2tBY3Rpb24oKVxuZXhwb3J0IGNsYXNzIExvYWRHdWVzdHNCeUJhdGNoSWRBY3Rpb24ge1xuICBzdGF0aWMgcmVhZG9ubHkgdHlwZSA9ICdbZ3Vlc3RdIExvYWRHdWVzdHNCeUJhdGNoSWQnO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBwYXJrSWQ6IG51bWJlciwgcHVibGljIGd1aWQ6IHN0cmluZywgcHVibGljIGJhdGNoSUQ6IG51bWJlciwgcHVibGljIGd1ZXN0c0ZpbHRlckR0bzogR3Vlc3RzV2l0aEJhdGNoRmlsdGVyRHRvKSB7XG4gIH1cbn1cblxuQFRyYWNrQWN0aW9uKClcbmV4cG9ydCBjbGFzcyBMb2FkR3Vlc3RzQnlCYXRjaElkQ2FuY2VsbGVkQWN0aW9uIHtcbiAgc3RhdGljIHJlYWRvbmx5IHR5cGUgPSAnW2d1ZXN0XSBMb2FkR3Vlc3RzQnlCYXRjaElkQ2FuY2VsbGVkJztcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgYmF0Y2hJZDogbnVtYmVyKSB7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEV4cGFuZEd1ZXN0c0J5QmF0Y2hJZEFjdGlvbiB7XG4gIHN0YXRpYyByZWFkb25seSB0eXBlID0gJ1tndWVzdF0gRXhwYW5kR3Vlc3RzQnlCYXRjaElkJztcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgYmF0Y2hJRDogbnVtYmVyLCBwdWJsaWMgZ3Vlc3RzOiBWR3Vlc3RXaXRoQmF0Y2hEdG9bXSkge1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDb2xsYXBzZWRHdWVzdHNCeUJhdGNoSWRBY3Rpb24ge1xuICBzdGF0aWMgcmVhZG9ubHkgdHlwZSA9ICdbZ3Vlc3RdIENvbGxhcHNlZEd1ZXN0c0J5QmF0Y2hJZCc7XG5cbiAgY29uc3RydWN0b3IocHVibGljIGJhdGNoSUQ6IG51bWJlcikge1xuICB9XG59XG5cbkBUcmFja0FjdGlvbigpXG5leHBvcnQgY2xhc3MgTG9hZEd1ZXN0QnlJZEFjdGlvbiB7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgdHlwZSA9ICdbZ3Vlc3RdIExvYWRHdWVzdEJ5SWQnO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBndWlkOiBzdHJpbmcsIHB1YmxpYyBwYXJrSWQ6IG51bWJlciwgcHVibGljIGd1ZXN0SWQ6IG51bWJlcikge1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDbGVhckd1ZXN0QWN0aW9uIHtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSB0eXBlID0gJ1tndWVzdF0gQ2xlYXJHdWVzdCc7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gIH1cbn1cbkBUcmFja0FjdGlvbigpXG5leHBvcnQgY2xhc3MgRXhwb3J0R3Vlc3RzQWN0aW9uIHtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSB0eXBlID0gJ1tndWVzdF0gRXhwb3J0R3Vlc3RzJztcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgcGFya0lkOiBudW1iZXIsIHB1YmxpYyBndWlkOiBzdHJpbmcsIHB1YmxpYyBndWVzdHNGaWx0ZXJEdG86IEd1ZXN0c1dpdGhCYXRjaEZpbHRlckR0bywgcHVibGljIGZpbGVUeXBlOiBGaWxlVHlwZSwgcHVibGljIGNvbHVtbnNIZWFkZXI6IHN0cmluZ1tdKSB7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -3,6 +3,7 @@ import { DatePipe } from '@angular/common';
|
|
|
3
3
|
import { Injectable } from '@angular/core';
|
|
4
4
|
import { Action, Selector, State } from '@ngxs/store';
|
|
5
5
|
import { tap } from 'rxjs/operators';
|
|
6
|
+
import { CommandNotificationDisplayCase } from '../../components/notification/command-notification/command-notification-config';
|
|
6
7
|
import { NotificationClass } from '../../components/notification/notification-config';
|
|
7
8
|
import { Localization, ProfileTypeText } from '../../enums';
|
|
8
9
|
import { Cloud, Edge } from '../../service-proxy';
|
|
@@ -24,11 +25,12 @@ import * as i5 from "../../components/notification/command-notification/command-
|
|
|
24
25
|
import * as i6 from "../../services/tenant.service";
|
|
25
26
|
import * as i7 from "../../services/export-file.service";
|
|
26
27
|
import * as i8 from "../parker/parker.service";
|
|
28
|
+
import * as i9 from "../../services/analytics.service";
|
|
27
29
|
export class VGuestWithBatchTableData extends VGuestWithBatchDto {
|
|
28
30
|
}
|
|
29
31
|
;
|
|
30
32
|
let GuestState = class GuestState {
|
|
31
|
-
constructor(store, guestServiceProxy, translate, batchServiceProxy, messageBarService, commandNotificationService, translateService, tenantService, exportFileService, parkerService) {
|
|
33
|
+
constructor(store, guestServiceProxy, translate, batchServiceProxy, messageBarService, commandNotificationService, translateService, tenantService, exportFileService, parkerService, analyticsService) {
|
|
32
34
|
this.store = store;
|
|
33
35
|
this.guestServiceProxy = guestServiceProxy;
|
|
34
36
|
this.translate = translate;
|
|
@@ -39,6 +41,7 @@ let GuestState = class GuestState {
|
|
|
39
41
|
this.tenantService = tenantService;
|
|
40
42
|
this.exportFileService = exportFileService;
|
|
41
43
|
this.parkerService = parkerService;
|
|
44
|
+
this.analyticsService = analyticsService;
|
|
42
45
|
this.datePipe = new DatePipe('en-US');
|
|
43
46
|
this.L = Localization;
|
|
44
47
|
this.toDateString = (value) => this.datePipe.transform(value.toDate(), this.tenantService.secondaryDateTimeFormat) || '-';
|
|
@@ -197,7 +200,9 @@ let GuestState = class GuestState {
|
|
|
197
200
|
command: this.translateService.instant(Localization.update_location)
|
|
198
201
|
};
|
|
199
202
|
const guest$ = this.guestServiceProxy.updateGuestLocation(action.guid, action.updateGuestLocationCommand);
|
|
200
|
-
return guest$.pipe(this.commandNotificationService.display(config))
|
|
203
|
+
return guest$.pipe(this.commandNotificationService.display(config), tap(() => {
|
|
204
|
+
this.analyticsTrackAction(config, action);
|
|
205
|
+
}));
|
|
201
206
|
}
|
|
202
207
|
onDeleteGuestAction(ctx, action) {
|
|
203
208
|
const interpolatedGuestName = action.guest.name.trim() === Localization.card_holder ?
|
|
@@ -345,6 +350,11 @@ let GuestState = class GuestState {
|
|
|
345
350
|
}
|
|
346
351
|
}));
|
|
347
352
|
}
|
|
353
|
+
analyticsTrackAction(config, action) {
|
|
354
|
+
const isSuccess = config?.displayCaseType === CommandNotificationDisplayCase.Success;
|
|
355
|
+
action.analyticsPayload.success = isSuccess;
|
|
356
|
+
this.analyticsService.track(config.command, action.analyticsPayload);
|
|
357
|
+
}
|
|
348
358
|
addGuestsByBatchIdToStore(ctx, batchID, guests) {
|
|
349
359
|
const displayedGusetBatches = ctx.getState().displayed;
|
|
350
360
|
const guestBatchIndex = displayedGusetBatches.findIndex(gb => gb.batchID === batchID);
|
|
@@ -496,7 +506,7 @@ let GuestState = class GuestState {
|
|
|
496
506
|
messageBarPayload.action = lowerCaseFirstLetter(this.translate.instant(Localization.update));
|
|
497
507
|
this.messageBarService.error(Localization.entity_failed, createMessageText(messageBarPayload));
|
|
498
508
|
}
|
|
499
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GuestState, deps: [{ token: i1.Store }, { token: i2.Edge.GuestServiceProxy }, { token: i3.TranslateService }, { token: i2.Edge.BatchServiceProxy }, { token: i4.MessageBarService }, { token: i5.CommandNotificationService }, { token: i3.TranslateService }, { token: i6.TenantService }, { token: i7.ExportFileService }, { token: i8.ParkerService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
509
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GuestState, deps: [{ token: i1.Store }, { token: i2.Edge.GuestServiceProxy }, { token: i3.TranslateService }, { token: i2.Edge.BatchServiceProxy }, { token: i4.MessageBarService }, { token: i5.CommandNotificationService }, { token: i3.TranslateService }, { token: i6.TenantService }, { token: i7.ExportFileService }, { token: i8.ParkerService }, { token: i9.AnalyticsService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
500
510
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GuestState }); }
|
|
501
511
|
};
|
|
502
512
|
__decorate([
|
|
@@ -599,5 +609,5 @@ GuestState = __decorate([
|
|
|
599
609
|
export { GuestState };
|
|
600
610
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GuestState, decorators: [{
|
|
601
611
|
type: Injectable
|
|
602
|
-
}], ctorParameters: function () { return [{ type: i1.Store }, { type: i2.Edge.GuestServiceProxy }, { type: i3.TranslateService }, { type: i2.Edge.BatchServiceProxy }, { type: i4.MessageBarService }, { type: i5.CommandNotificationService }, { type: i3.TranslateService }, { type: i6.TenantService }, { type: i7.ExportFileService }, { type: i8.ParkerService }]; }, propDecorators: { onLoadGuestByIdAction: [], onClearGuestAction: [], onLoadGuestsAction: [], onSetGuestsAction: [], onClearGuestListAction: [], onCreateGuestAction: [], onCreateBatchAction: [], onCreateBasicBatchAction: [], onUpdateGuestAction: [], onUpdateGuestLocationAction: [], onDeleteGuestAction: [], onCreateBasicGuestAction: [], onUpdateBasicGuestAction: [], onUpdateBasicGuestTempAction: [], onSendEmailToGuestAction: [], onLoadGuestsByBatchId: [], onLoadGuestsByBatchIdCancelledAction: [], onExpandGuestsByBatchIdAction: [], onCollapsedGuestsByBatchIdAction: [], onLoadGuestProfilesAction: [], onClearGuestProfilesAction: [], onSendGuestPassesToEmail: [], onExportGuestsAction: [] } });
|
|
603
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3Vlc3Quc3RhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtc2hhcmVkLWxpYi9zcmMvbGlicmFyaWVzL21vZHVsZXMvZ3Vlc3QvZ3Vlc3Quc3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBdUIsTUFBTSxhQUFhLENBQUM7QUFHM0UsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBS3JDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVELE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFHbEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFVBQVUsRUFBRSxvQkFBb0IsRUFBRSxxQkFBcUIsRUFBRSxxQkFBcUIsRUFBRSxZQUFZLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDOUksT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFFakYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRTNELE9BQU8sRUFDTCxnQkFBZ0IsRUFBRSx3QkFBd0IsRUFBRSxxQkFBcUIsRUFBRSw4QkFBOEIsRUFDakcsc0JBQXNCLEVBQUUsc0JBQXNCLEVBQUUsaUJBQWlCLEVBQUUsaUJBQWlCLEVBQUUsaUJBQWlCLEVBQ3ZHLDJCQUEyQixFQUFFLGtCQUFrQixFQUFFLG1CQUFtQixFQUFFLHVCQUF1QixFQUFFLGdCQUFnQixFQUMvRyx5QkFBeUIsRUFB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LEVBQUU7WUFDWixRQUFRLEVBQUUsSUFBSTtTQUNmO0tBQ0YsQ0FBQztHQUNXLFVBQVUsQ0FxbUJ0QjtTQXJtQlksVUFBVTs0RkFBVixVQUFVO2tCQVp0QixVQUFVO3FZQXVEVCxxQkFBcUIsTUFVckIsa0JBQWtCLE1BT2xCLGtCQUFrQixNQVdsQixpQkFBaUIsTUFPakIsc0JBQXNCLE1BU3RCLG1CQUFtQixNQWdDbkIsbUJBQW1CLE1BbUNuQix3QkFBd0IsTUFtQ3hCLG1CQUFtQixNQStCbkIsMkJBQTJCLE1BWTNCLG1CQUFtQixNQStCbkIsd0JBQXdCLE1BZ0N4Qix3QkFBd0IsTUFjeEIsNEJBQTRCLE1BYzVCLHdCQUF3QixNQVF4QixxQkFBcUIsTUFRckIsb0NBQW9DLE1BZ0JwQyw2QkFBNkIsTUFLN0IsZ0NBQWdDLE1BWWhDLHlCQUF5QixNQVl6QiwwQkFBMEIsTUFPcEIsd0JBQXdCLE1BVzlCLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGVQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IEFjdGlvbiwgU2VsZWN0b3IsIFN0YXRlLCBTdGF0ZUNvbnRleHQsIFN0b3JlIH0gZnJvbSAnQG5neHMvc3RvcmUnO1xuaW1wb3J0IHsgTW9tZW50IH0gZnJvbSAnbW9tZW50JztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE1lc3NhZ2VCYXJQYXlsb2FkIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9tZXNzYWdlLWJhci9tZXNzYWdlLWJhci10ZXh0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBNZXNzYWdlQmFyU2VydmljZSB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvbWVzc2FnZS1iYXIvbWVzc2FnZS1iYXIuc2VydmljZSc7XG5pbXBvcnQgeyBDb21tYW5kTm90aWZpY2F0aW9uQ29uZmlnIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9ub3RpZmljYXRpb24vY29tbWFuZC1ub3RpZmljYXRpb24vY29tbWFuZC1ub3RpZmljYXRpb24tY29uZmlnJztcbmltcG9ydCB7IENvbW1hbmROb3RpZmljYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9ub3RpZmljYXRpb24vY29tbWFuZC1ub3RpZmljYXRpb24vY29tbWFuZC1ub3RpZmljYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25DbGFzcyB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvbm90aWZpY2F0aW9uL25vdGlmaWNhdGlvbi1jb25maWcnO1xuaW1wb3J0IHsgTG9jYWxpemF0aW9uLCBQcm9maWxlVHlwZVRleHQgfSBmcm9tICcuLi8uLi9lbnVtcyc7XG5pbXBvcnQgeyBDbG91ZCwgRWRnZSB9IGZyb20gJy4uLy4uL3NlcnZpY2UtcHJveHknO1xuaW1wb3J0IHsgRXhwb3J0RmlsZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9leHBvcnQtZmlsZS5zZXJ2aWNlJztcbmltcG9ydCB7IFRlbmFudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90ZW5hbnQuc2VydmljZSc7XG5pbXBvcnQgeyBjcmVhdGVNZXNzYWdlVGV4dCwgZ2V0QWRkcmVzcywgbG93ZXJDYXNlRmlyc3RMZXR0ZXIsIG1hcmtFbnRpdGllc0FzQ2hhbmdlZCwgbWFya0VudGl0eUFzVW5jaGFuZ2VkLCBSb3dPcGVyYXRpb24gfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgeyBTZW5kRW1haWxGcm9tRW50aXR5QWN0aW9uIH0gZnJvbSAnLi4vZW1haWwtc2VydmVyL2VtYWlsLXNlcnZlci5hY3Rpb25zJztcbmltcG9ydCB7IEZhY2lsaXR5V2l0aEd1aWQgfSBmcm9tICcuLi9mYWNpbGl0eS9mYWNpbGl0eS13aXRoLWd1aWQuaW50ZXJmYWNlJztcbmltcG9ydCB7IEZhY2lsaXR5U3RhdGUgfSBmcm9tICcuLi9mYWNpbGl0eS9mYWNpbGl0eS5zdGF0ZSc7XG5pbXBvcnQgeyBQYXJrZXJTZXJ2aWNlIH0gZnJvbSAnLi4vcGFya2VyL3Bhcmtlci5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIENsZWFyR3Vlc3RBY3Rpb24sIENsZWFyR3Vlc3RQcm9maWxlc0FjdGlvbiwgQ2xlYXJHdWVzdHNMaXN0QWN0aW9uLCBDb2xsYXBzZWRHdWVzdHNCeUJhdGNoSWRBY3Rpb24sXG4gIENyZWF0ZUJhc2ljQmF0Y2hBY3Rpb24sIENyZWF0ZUJhc2ljR3Vlc3RBY3Rpb24sIENyZWF0ZUJhdGNoQWN0aW9uLCBDcmVhdGVHdWVzdEFjdGlvbiwgRGVsZXRlR3Vlc3RBY3Rpb24sXG4gIEV4cGFuZEd1ZXN0c0J5QmF0Y2hJZEFjdGlvbiwgRXhwb3J0R3Vlc3RzQWN0aW9uLCBMb2FkR3Vlc3RCeUlkQWN0aW9uLCBMb2FkR3Vlc3RQcm9maWxlc0FjdGlvbiwgTG9hZEd1ZXN0c0FjdGlvbixcbiAgTG9hZEd1ZXN0c0J5QmF0Y2hJZEFjdGlvbiwgTG9hZEd1ZXN0c0J5QmF0Y2hJZENhbmNlbGxlZEFjdGlvbiwgU2VuZEVtYWlsVG9HdWVzdCwgU2VuZEd1ZXN0UGFzc2VzVG9FbWFpbEFjdGlvbixcbiAgU2V0R3Vlc3RzQWN0aW9uLCBVcGRhdGVCYXNpY0d1ZXN0QWN0aW9uLCBVcGRhdGVCYXNpY0d1ZXN0VGVtcEFjdGlvbiwgVXBkYXRlR3Vlc3RBY3Rpb24sIFVwZGF0ZUd1ZXN0TG9jYXRpb25BY3Rpb25cbn0gZnJvbSAnLi9ndWVzdC5hY3Rpb25zJztcblxuaW1wb3J0IEd1ZXN0RW50aXR5UGFyYW1zID0gRWRnZS5HdWVzdEVudGl0eVBhcmFtcztcbmltcG9ydCBHdWVzdFByb2ZpbGVEdG8gPSBFZGdlLkd1ZXN0UHJvZmlsZUR0bztcbmltcG9ydCBJbnQzMkh0dHBSZXNwb25zZURhdGEgPSBFZGdlLkludDMySHR0cFJlc3BvbnNlRGF0YTtcbmltcG9ydCBQcm9ibGVtRGV0YWlsc0h0dHBSZXNwb25zZURhdGEgPSBFZGdlLlByb2JsZW1EZXRhaWxzSHR0cFJlc3BvbnNlRGF0YTtcbmltcG9ydCBQcm9maWxlVHlwZSA9IEVkZ2UuUHJvZmlsZVR5cGU7XG5pbXBvcnQgVkd1ZXN0V2l0aEJhdGNoRHRvID0gRWRnZS5WR3Vlc3RXaXRoQmF0Y2hEdG87XG5pbXBvcnQgVkd1ZXN0V2l0aEJhdGNoRHRvRW50aXR5V3JhcHBlckR0b0h0dHBSZXNwb25zZURhdGEgPSBFZGdlLlZHdWVzdFdpdGhCYXRjaER0b0VudGl0eVdyYXBwZXJEdG9IdHRwUmVzcG9uc2VEYXRhO1xuaW1wb3J0IFZHdWVzdFdpdGhCYXRjaER0b0h0dHBSZXNwb25zZURhdGEgPSBFZGdlLlZHdWVzdFdpdGhCYXRjaER0b0h0dHBSZXNwb25zZURhdGE7XG5pbXBvcnQgVkd1ZXN0V2l0aEJhdGNoRHRvSUVudW1lcmFibGVIdHRwUmVzcG9uc2VEYXRhID0gRWRnZS5WR3Vlc3RXaXRoQmF0Y2hEdG9JRW51bWVyYWJsZUh0dHBSZXNwb25zZURhdGE7XG5pbXBvcnQgU2VuZEVtYWlsUmVxdWVzdER0byA9IENsb3VkLlNlbmRFbWFpbFJlcXVlc3REdG87XG5pbXBvcnQgVGVtcGxhdGVUeXBlID0gQ2xvdWQuVGVtcGxhdGVUeXBlO1xuXG5leHBvcnQgY2xhc3MgVkd1ZXN0V2l0aEJhdGNoVGFibGVEYXRhIGV4dGVuZHMgVkd1ZXN0V2l0aEJhdGNoRHRvIHtcbiAgZW50aXRpZXM6IFZHdWVzdFdpdGhCYXRjaER0b1tdXG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIEd1ZXN0U3RhdGVNb2RlbCB7XG4gIGFyY2hpdmVkOiBWR3Vlc3RXaXRoQmF0Y2hEdG9bXTtcbiAgZGlzcGxheWVkOiBWR3Vlc3RXaXRoQmF0Y2hEdG9bXTtcbiAgY291bnRlcjogbnVtYmVyO1xuICBndWVzdDogVkd1ZXN0V2l0aEJhdGNoRHRvO1xuICBwcm9maWxlczogR3Vlc3RQcm9maWxlRHRvW107XG4gIHNlbGVjdGVkOiBWR3Vlc3RXaXRoQmF0Y2hEdG87XG59XG5cbkBJbmplY3RhYmxlKClcbkBTdGF0ZTxHdWVzdFN0YXRlTW9kZWw+KHtcbiAgbmFtZTogJ2d1ZXN0JyxcbiAgZGVmYXVsdHM6IHtcbiAgICBhcmNoaXZlZDogW10sXG4gICAgZGlzcGxheWVkOiBbXSxcbiAgICBjb3VudGVyOiAwLFxuICAgIGd1ZXN0OiBudWxsLFxuICAgIHByb2ZpbGVzOiBbXSxcbiAgICBzZWxlY3RlZDogbnVsbCxcbiAgfSxcbn0pXG5leHBvcnQgY2xhc3MgR3Vlc3RTdGF0ZSB7XG4gIGRhdGVQaXBlID0gbmV3IERhdGVQaXBlKCdlbi1VUycpO1xuICBMID0gTG9jYWxpemF0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgc3RvcmU6IFN0b3JlLFxuICAgIHByaXZhdGUgZ3Vlc3RTZXJ2aWNlUHJveHk6IEVkZ2UuR3Vlc3RTZXJ2aWNlUHJveHksXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBiYXRjaFNlcnZpY2VQcm94eTogRWRnZS5CYXRjaFNlcnZpY2VQcm94eSxcbiAgICBwcml2YXRlIG1lc3NhZ2VCYXJTZXJ2aWNlOiBNZXNzYWdlQmFyU2VydmljZSxcbiAgICBwcml2YXRlIGNvbW1hbmROb3RpZmljYXRpb25TZXJ2aWNlOiBDb21tYW5kTm90aWZpY2F0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0ZW5hbnRTZXJ2aWNlOiBUZW5hbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgZXhwb3J0RmlsZVNlcnZpY2U6IEV4cG9ydEZpbGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcGFya2VyU2VydmljZTogUGFya2VyU2VydmljZSkge1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBndWVzdENvdW50ZXIoc3RhdGU6IEd1ZXN0U3RhdGVNb2RlbCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHN0YXRlLmNvdW50ZXI7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIGFyY2hpdmVkR3Vlc3RzKHN0YXRlOiBHdWVzdFN0YXRlTW9kZWwpOiBWR3Vlc3RXaXRoQmF0Y2hEdG9bXSB7XG4gICAgcmV0dXJuIHN0YXRlLmFyY2hpdmVkO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBkaXNwbGF5ZWRHdWVzdHMoc3RhdGU6IEd1ZXN0U3RhdGVNb2RlbCk6IFZHdWVzdFdpdGhCYXRjaER0b1tdIHtcbiAgICByZXR1cm4gc3RhdGUuZGlzcGxheWVkO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBwcm9maWxlcyhzdGF0ZTogR3Vlc3RTdGF0ZU1vZGVsKTogR3Vlc3RQcm9maWxlRHRvW10ge1xuICAgIHJldHVybiBzdGF0ZS5wcm9maWxlcztcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgc2VsZWN0ZWQoc3RhdGU6IEd1ZXN0U3RhdGVNb2RlbCk6IFZHdWVzdFdpdGhCYXRjaER0byB7XG4gICAgcmV0dXJuIHN0YXRlLnNlbGVjdGVkO1xuICB9XG5cbiAgQEFjdGlvbihMb2FkR3Vlc3RCeUlkQWN0aW9uLCB7IGNhbmNlbFVuY29tcGxldGVkOiB0cnVlIH0pXG4gIG9uTG9hZEd1ZXN0QnlJZEFjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxHdWVzdFN0YXRlTW9kZWw+LCBhY3Rpb246IExvYWRHdWVzdEJ5SWRBY3Rpb24pOiBPYnNlcnZhYmxlPFZHdWVzdFdpdGhCYXRjaER0b0h0dHBSZXNwb25zZURhdGE+IHtcbiAgICBjb25zdCBnZXRHdWVzdCQgPSB0aGlzLmd1ZXN0U2VydmljZVByb3h5LmdldEd1ZXN0QnlJZChhY3Rpb24uZ3Vlc3RJZCwgYWN0aW9uLnBhcmtJZCwgYWN0aW9uLmd1aWQpO1xuICAgIHJldHVybiBnZXRHdWVzdCQucGlwZSh0YXAoZ3Vlc3QgPT4ge1xuICAgICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgICBzZWxlY3RlZDogZ3Vlc3QuZGF0YVxuICAgICAgfSk7XG4gICAgfSkpO1xuICB9XG5cbiAgQEFjdGlvbihDbGVhckd1ZXN0QWN0aW9uLCB7IGNhbmNlbFVuY29tcGxldGVkOiB0cnVlIH0pXG4gIG9uQ2xlYXJHdWVzdEFjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxDbGVhckd1ZXN0QWN0aW9uPik6IHZvaWQge1xuICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgIHNlbGVjdGVkOiBudWxsXG4gICAgfSk7XG4gIH1cblxuICBAQWN0aW9uKExvYWRHdWVzdHNBY3Rpb24sIHsgY2FuY2VsVW5jb21wbGV0ZWQ6IHRydWUgfSlcbiAgb25Mb2FkR3Vlc3RzQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PEd1ZXN0U3RhdGVNb2RlbD4sIGFjdGlvbjogTG9hZEd1ZXN0c0FjdGlvbik6IE9ic2VydmFibGU8Vkd1ZXN0V2l0aEJhdGNoRHRvRW50aXR5V3JhcHBlckR0b0h0dHBSZXNwb25zZURhdGE+IHtcbiAgICBjb25zdCBnZXRHdWVzdHMkID0gdGhpcy5ndWVzdFNlcnZpY2VQcm94eS5nZXRHdWVzdHMoYWN0aW9uLnBhcmtJZCwgYWN0aW9uLmd1aWQsIGFjdGlvbi5ndWVzdHNGaWx0ZXJEdG8pO1xuICAgIHJldHVybiBnZXRHdWVzdHMkLnBpcGUodGFwKChndWVzdHNXcmFwcGVyOiBWR3Vlc3RXaXRoQmF0Y2hEdG9FbnRpdHlXcmFwcGVyRHRvSHR0cFJlc3BvbnNlRGF0YSkgPT4ge1xuICAgICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgICBhcmNoaXZlZDogZ3Vlc3RzV3JhcHBlci5kYXRhLmVudGl0aWVzLFxuICAgICAgICBjb3VudGVyOiBndWVzdHNXcmFwcGVyLmRhdGEuY291bnRlcixcbiAgICAgIH0pO1xuICAgIH0pKTtcbiAgfVxuXG4gIEBBY3Rpb24oU2V0R3Vlc3RzQWN0aW9uKVxuICBvblNldEd1ZXN0c0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxHdWVzdFN0YXRlTW9kZWw+LCBhY3Rpb246IFNldEd1ZXN0c0FjdGlvbikge1xuICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgIGRpc3BsYXllZDogYWN0aW9uLmd1ZXN0cyB8fCBbXSxcbiAgICB9KTtcbiAgfVxuXG4gIEBBY3Rpb24oQ2xlYXJHdWVzdHNMaXN0QWN0aW9uKVxuICBvbkNsZWFyR3Vlc3RMaXN0QWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PEd1ZXN0U3RhdGVNb2RlbD4pIHtcbiAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICBhcmNoaXZlZDogW10sXG4gICAgICBkaXNwbGF5ZWQ6IFtdLFxuICAgICAgY291bnRlcjogMCxcbiAgICB9KTtcbiAgfVxuXG4gIEBBY3Rpb24oQ3JlYXRlR3Vlc3RBY3Rpb24pXG4gIG9uQ3JlYXRlR3Vlc3RBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8R3Vlc3RTdGF0ZU1vZGVsPiwgYWN0aW9uOiBDcmVhdGVHdWVzdEFjdGlvbik6IE9ic2VydmFibGU8Vkd1ZXN0V2l0aEJhdGNoRHRvSHR0cFJlc3BvbnNlRGF0YT4ge1xuICAgIGNvbnN0IG1lc3NhZ2VCYXJQYXlsb2FkOiBNZXNzYWdlQmFyUGF5bG9hZCA9IHtcbiAgICAgIGVudGl0eTogdGhpcy50cmFuc2xhdGUuaW5zdGFudChMb2NhbGl6YXRpb24uZ3Vlc3QpLFxuICAgICAgZW50aXR5TmFtZTogYCR7YWN0aW9uLmd1ZXN0LmZpcnN0TmFtZX0gJHthY3Rpb24uZ3Vlc3QubGFzdE5hbWV9YCxcbiAgICAgIGFjdGlvbjogbG93ZXJDYXNlRmlyc3RMZXR0ZXIodGhpcy50cmFuc2xhdGUuaW5zdGFudChMb2NhbGl6YXRpb24uY3JlYXRlZCkpLFxuICAgIH07XG4gICAgdGhpcy5tZXNzYWdlQmFyU2VydmljZS5pbmZvKExvY2FsaXphdGlvbi5lbnRpdHlfaW5fcHJvZ3Jlc3MsIGNyZWF0ZU1lc3NhZ2VUZXh0KG1lc3NhZ2VCYXJQYXlsb2FkKSk7XG4gICAgcmV0dXJuIHRoaXMuZ3Vlc3RTZXJ2aWNlUHJveHkuY3JlYXRlR3Vlc3QoYWN0aW9uLmd1aWQsIGFjdGlvbi5ndWVzdCkucGlwZSh0YXAoe1xuICAgICAgbmV4dDogKGhhbmRsZWQ6IFZHdWVzdFdpdGhCYXRjaER0b0h0dHBSZXNwb25zZURhdGEpID0+IHtcbiAgICAgICAgY29uc3QgZGlzcGxheU5ld0d1ZXN0SW5UYWJsZSA9IHRoaXMuaXNHdWVzdENyZWF0ZWRGcm9tU2VsZWN0ZWRGYWNpbGl0eShoYW5kbGVkLmRhdGEsIGFjdGlvbi5ndWlkKTtcbiAgICAgICAgdGhpcy5hZGRHdWVzdFRvU3RvcmUoY3R4LCBoYW5kbGVkLmRhdGEsIGRpc3BsYXlOZXdHdWVzdEluVGFibGUpO1xuICAgICAgICB0aGlzLm1lc3NhZ2VCYXJTZXJ2aWNlLnN1Y2Nlc3MoXG4gICAgICAgICAgZGlzcGxheU5ld0d1ZXN0SW5UYWJsZSA/IExvY2FsaXphdGlvbi5lbnRpdHlfc3VjY2VzcyA6IExvY2FsaXphdGlvbi5lbnRpdHlfc3VjY2Vzc19ub3RfY3VycmVudGx5X3Zpc2libGUsXG4gICAgICAgICAgY3JlYXRlTWVzc2FnZVRleHQobWVzc2FnZUJhclBheWxvYWQpXG4gICAgICAgICk7XG4gICAgICB9LFxuICAgICAgZXJyb3I6ICgpID0+IHtcbiAgICAgICAgbWVzc2FnZUJhclBheWxvYWQuZW50aXR5ID0gbG93ZXJDYXNlRmlyc3RMZXR0ZXIoXG4gICAgICAgICAgbWVzc2FnZUJhclBheWxvYWQuZW50aXR5XG4gICAgICAgICk7XG4gICAgICAgIG1lc3NhZ2VCYXJQYXlsb2FkLmFjdGlvbiA9IGxvd2VyQ2FzZUZpcnN0TGV0dGVyKFxuICAgICAgICAgIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoTG9jYWxpemF0aW9uLmNyZWF0ZSlcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5tZXNzYWdlQmFyU2VydmljZS5lcnJvcihcbiAgICAgICAgICBMb2NhbGl6YXRpb24uZW50aXR5X2ZhaWxlZCxcbiAgICAgICAgICBjcmVhdGVNZXNzYWdlVGV4dChtZXNzYWdlQmFyUGF5bG9hZClcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9KSk7XG4gIH1cblxuICBAQWN0aW9uKENyZWF0ZUJhdGNoQWN0aW9uKVxuICBvbkNyZWF0ZUJhdGNoQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PEd1ZXN0U3RhdGVNb2RlbD4sIGFjdGlvbjogQ3JlYXRlQmF0Y2hBY3Rpb24pOiBPYnNlcnZhYmxlPFZHdWVzdFdpdGhCYXRjaER0b0lFbnVtZXJhYmxlSHR0cFJlc3BvbnNlRGF0YT4ge1xuICAgIGNvbnN0IG1lc3NhZ2VCYXJQYXlsb2FkOiBNZXNzYWdlQmFyUGF5bG9hZCA9IHtcbiAgICAgIGVudGl0eTogdGhpcy50cmFuc2xhdGUuaW5zdGFudChMb2NhbGl6YXRpb24uZ3Vlc3RfZ3JvdXApLFxuICAgICAgZW50aXR5TmFtZTogYWN0aW9uLmJhdGNoQ29tbWFuZC5uYW1lLFxuICAgICAgYWN0aW9uOiBsb3dlckNhc2VGaXJzdExldHRlcih0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KExvY2FsaXphdGlvbi5jcmVhdGVkKSksXG4gICAgfTtcbiAgICB0aGlzLm1lc3NhZ2VCYXJTZXJ2aWNlLmluZm8oTG9jYWxpemF0aW9uLmVudGl0eV9pbl9wcm9ncmVzcywgY3JlYXRlTWVzc2FnZVRleHQobWVzc2FnZUJhclBheWxvYWQpKTtcbiAgICByZXR1cm4gdGhpcy5iYXRjaFNlcnZpY2VQcm94eS5jcmVhdGVCYXRjaChhY3Rpb24uZmFjaWxpdHlXaXRoR3VpZC5ndWlkLCBhY3Rpb24uYmF0Y2hDb21tYW5kKS5waXBlKHRhcCh7XG4gICAgICBuZXh0OiAobmV3R3Vlc3RzOiBWR3Vlc3RXaXRoQmF0Y2hEdG9JRW51bWVyYWJsZUh0dHBSZXNwb25zZURhdGEpID0+IHtcbiAgICAgICAgY29uc3QgZGlzcGxheU5ld0d1ZXN0SW5UYWJsZSA9IHRoaXMuaXNHdWVzdENyZWF0ZWRGcm9tU2VsZWN0ZWRGYWNpbGl0eShuZXdHdWVzdHMuZGF0YVswXSwgYWN0aW9uLmZhY2lsaXR5V2l0aEd1aWQuZ3VpZCk7XG4gICAgICAgIHRoaXMubWVzc2FnZUJhclNlcnZpY2Uuc3VjY2VzcyhcbiAgICAgICAgICBkaXNwbGF5TmV3R3Vlc3RJblRhYmxlID8gTG9jYWxpemF0aW9uLmVudGl0eV9zdWNjZXNzIDogTG9jYWxpemF0aW9uLmVudGl0eV9zdWNjZXNzX25vdF9jdXJyZW50bHlfdmlzaWJsZSxcbiAgICAgICAgICBjcmVhdGVNZXNzYWdlVGV4dChtZXNzYWdlQmFyUGF5bG9hZClcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAoZGlzcGxheU5ld0d1ZXN0SW5UYWJsZSkge1xuICAgICAgICAgIGNvbnN0IG5ld0JhdGNoID0gdGhpcy5jb252ZXJ0R3Vlc3RzVG9UYWJsZURhdGEobmV3R3Vlc3RzLmRhdGEpO1xuICAgICAgICAgIG1hcmtFbnRpdGllc0FzQ2hhbmdlZChbbmV3QmF0Y2hdLCBSb3dPcGVyYXRpb24uSW5zZXJ0KTtcbiAgICAgICAgICBtYXJrRW50aXRpZXNBc0NoYW5nZWQobmV3QmF0Y2guZW50aXRpZXMsIFJvd09wZXJhdGlvbi5JbnNlcnQpO1xuICAgICAgICAgIGNvbnN0IGRpc3BsYXllZEd1ZXN0cyA9IGN0eC5nZXRTdGF0ZSgpLmRpc3BsYXllZDtcbiAgICAgICAgICBkaXNwbGF5ZWRHdWVzdHMudW5zaGlmdCguLi5uZXdCYXRjaC5lbnRpdGllcyk7XG4gICAgICAgICAgZGlzcGxheWVkR3Vlc3RzLnVuc2hpZnQobmV3QmF0Y2gpO1xuICAgICAgICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgICAgICAgIGRpc3BsYXllZDogWy4uLmRpc3BsYXllZEd1ZXN0c10sXG4gICAgICAgICAgICBjb3VudGVyOiBjdHguZ2V0U3RhdGUoKS5jb3VudGVyICsgMSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGVycm9yOiAoZTogUHJvYmxlbURldGFpbHNIdHRwUmVzcG9uc2VEYXRhKSA9PiB7XG4gICAgICAgIGFjdGlvbi5lcnJvck1lc3NhZ2UgPSBlLmRhdGEuZGV0YWlsO1xuICAgICAgfVxuICAgIH0pKTtcbiAgfVxuXG4gIEBBY3Rpb24oQ3JlYXRlQmFzaWNCYXRjaEFjdGlvbilcbiAgb25DcmVhdGVCYXNpY0JhdGNoQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PEd1ZXN0U3RhdGVNb2RlbD4sIGFjdGlvbjogQ3JlYXRlQmFzaWNCYXRjaEFjdGlvbik6IE9ic2VydmFibGU8Vkd1ZXN0V2l0aEJhdGNoRHRvSUVudW1lcmFibGVIdHRwUmVzcG9uc2VEYXRhPiB7XG4gICAgY29uc3QgbWVzc2FnZUJhclBheWxvYWQ6IE1lc3NhZ2VCYXJQYXlsb2FkID0ge1xuICAgICAgZW50aXR5OiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KExvY2FsaXphdGlvbi5ndWVzdF9ncm91cCksXG4gICAgICBlbnRpdHlOYW1lOiBhY3Rpb24uYmF0Y2hDb21tYW5kLm5hbWUsXG4gICAgICBhY3Rpb246IGxvd2VyQ2FzZUZpcnN0TGV0dGVyKHRoaXMudHJhbnNsYXRlLmluc3RhbnQoTG9jYWxpemF0aW9uLmNyZWF0ZWQpKSxcbiAgICB9O1xuICAgIHRoaXMubWVzc2FnZUJhclNlcnZpY2UuaW5mbyhMb2NhbGl6YXRpb24uZW50aXR5X2luX3Byb2dyZXNzLCBjcmVhdGVNZXNzYWdlVGV4dChtZXNzYWdlQmFyUGF5bG9hZCkpO1xuICAgIHJldHVybiB0aGlzLmJhdGNoU2VydmljZVByb3h5LmNyZWF0ZUJhc2ljQmF0Y2goYWN0aW9uLmZhY2lsaXR5V2l0aEd1aWQuZ3VpZCwgYWN0aW9uLmJhdGNoQ29tbWFuZCkucGlwZSh0YXAoe1xuICAgICAgbmV4dDogKG5ld0d1ZXN0czogVkd1ZXN0V2l0aEJhdGNoRHRvSUVudW1lcmFibGVIdHRwUmVzcG9uc2VEYXRhKSA9PiB7XG4gICAgICAgIGNvbnN0IGRpc3BsYXlOZXdHdWVzdEluVGFibGUgPSB0aGlzLmlzR3Vlc3RDcmVhdGVkRnJvbVNlbGVjdGVkRmFjaWxpdHkobmV3R3Vlc3RzLmRhdGFbMF0sIGFjdGlvbi5mYWNpbGl0eVdpdGhHdWlkLmd1aWQpO1xuICAgICAgICB0aGlzLm1lc3NhZ2VCYXJTZXJ2aWNlLnN1Y2Nlc3MoXG4gICAgICAgICAgZGlzcGxheU5ld0d1ZXN0SW5UYWJsZSA/IExvY2FsaXphdGlvbi5lbnRpdHlfc3VjY2VzcyA6IExvY2FsaXphdGlvbi5lbnRpdHlfc3VjY2Vzc19ub3RfY3VycmVudGx5X3Zpc2libGUsXG4gICAgICAgICAgY3JlYXRlTWVzc2FnZVRleHQobWVzc2FnZUJhclBheWxvYWQpXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKGRpc3BsYXlOZXdHdWVzdEluVGFibGUpIHtcbiAgICAgICAgICBjb25zdCBuZXdCYXRjaCA9IHRoaXMuY29udmVydEd1ZXN0c1RvVGFibGVEYXRhKG5ld0d1ZXN0cy5kYXRhKTtcbiAgICAgICAgICBtYXJrRW50aXRpZXNBc0NoYW5nZWQoW25ld0JhdGNoXSwgUm93T3BlcmF0aW9uLkluc2VydCk7XG4gICAgICAgICAgbWFya0VudGl0aWVzQXNDaGFuZ2VkKG5ld0JhdGNoLmVudGl0aWVzLCBSb3dPcGVyYXRpb24uSW5zZXJ0KTtcbiAgICAgICAgICBjb25zdCBkaXNwbGF5ZWRHdWVzdHMgPSBjdHguZ2V0U3RhdGUoKS5kaXNwbGF5ZWQ7XG4gICAgICAgICAgZGlzcGxheWVkR3Vlc3RzLnVuc2hpZnQoLi4ubmV3QmF0Y2guZW50aXRpZXMpO1xuICAgICAgICAgIGRpc3BsYXllZEd1ZXN0cy51bnNoaWZ0KG5ld0JhdGNoKTtcbiAgICAgICAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICAgICAgICBkaXNwbGF5ZWQ6IFsuLi5kaXNwbGF5ZWRHdWVzdHNdLFxuICAgICAgICAgICAgY291bnRlcjogY3R4LmdldFN0YXRlKCkuY291bnRlciArIDEsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBlcnJvcjogKGU6IFByb2JsZW1EZXRhaWxzSHR0cFJlc3BvbnNlRGF0YSkgPT4ge1xuICAgICAgICBhY3Rpb24uZXJyb3JNZXNzYWdlID0gZS5kYXRhLmRldGFpbDtcbiAgICAgIH1cbiAgICB9KSk7XG4gIH1cblxuICBAQWN0aW9uKFVwZGF0ZUd1ZXN0QWN0aW9uKVxuICBvblVwZGF0ZUd1ZXN0QWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PEd1ZXN0U3RhdGVNb2RlbD4sIGFjdGlvbjogVXBkYXRlR3Vlc3RBY3Rpb24pOiBPYnNlcnZhYmxlPFZHdWVzdFdpdGhCYXRjaER0b0h0dHBSZXNwb25zZURhdGE+IHtcbiAgICBjb25zdCBtZXNzYWdlQmFyUGF5bG9hZDogTWVzc2FnZUJhclBheWxvYWQgPSB7XG4gICAgICBlbnRpdHk6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoTG9jYWxpemF0aW9uLmd1ZXN0KSxcbiAgICAgIGVudGl0eU5hbWU6IGAke2FjdGlvbi5ndWVzdC5maXJzdE5hbWV9ICR7YWN0aW9uLmd1ZXN0Lmxhc3ROYW1lfWAsXG4gICAgICBhY3Rpb246IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoTG9jYWxpemF0aW9uLnVwZGF0ZWQpLFxuICAgIH07XG4gICAgdGhpcy5tZXNzYWdlQmFyU2VydmljZS5pbmZvKExvY2FsaXphdGlvbi5lbnRpdHlfaW5fcHJvZ3Jlc3MsIGNyZWF0ZU1lc3NhZ2VUZXh0KG1lc3NhZ2VCYXJQYXlsb2FkKSk7XG4gICAgcmV0dXJuIHRoaXMuZ3Vlc3RTZXJ2aWNlUHJveHkudXBkYXRlR3Vlc3QoYWN0aW9uLmd1aWQsIGFjdGlvbi5ndWVzdCkucGlwZSh0YXAoe1xuICAgICAgbmV4dDogKGhhbmRsZWQ6IFZHdWVzdFdpdGhCYXRjaER0b0h0dHBSZXNwb25zZURhdGEpID0+IHtcbiAgICAgICAgdGhpcy51cGRhdGVHdWVzdEluU3RvcmUoY3R4LCBoYW5kbGVkLmRhdGEsIGFjdGlvbi5ndWlkKTtcbiAgICAgICAgdGhpcy5tZXNzYWdlQmFyU2VydmljZS5zdWNjZXNzKFxuICAgICAgICAgIExvY2FsaXphdGlvbi5lbnRpdHlfc3VjY2VzcyxcbiAgICAgICAgICBjcmVhdGVNZXNzYWdlVGV4dChtZXNzYWdlQmFyUGF5bG9hZClcbiAgICAgICAgKTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICBtZXNzYWdlQmFyUGF5bG9hZC5lbnRpdHkgPSBsb3dlckNhc2VGaXJzdExldHRlcihcbiAgICAgICAgICBtZXNzYWdlQmFyUGF5bG9hZC5lbnRpdHlcbiAgICAgICAgKTtcbiAgICAgICAgbWVzc2FnZUJhclBheWxvYWQuYWN0aW9uID0gbG93ZXJDYXNlRmlyc3RMZXR0ZXIoXG4gICAgICAgICAgdGhpcy50cmFuc2xhdGUuaW5zdGFudChMb2NhbGl6YXRpb24udXBkYXRlKVxuICAgICAgICApO1xuICAgICAgICB0aGlzLm1lc3NhZ2VCYXJTZXJ2aWNlLmVycm9yKFxuICAgICAgICAgIExvY2FsaXphdGlvbi5lbnRpdHlfZmFpbGVkLFxuICAgICAgICAgIGNyZWF0ZU1lc3NhZ2VUZXh0KG1lc3NhZ2VCYXJQYXlsb2FkKVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0pKTtcbiAgfVxuXG4gIEBBY3Rpb24oVXBkYXRlR3Vlc3RMb2NhdGlvbkFjdGlvbilcbiAgb25VcGRhdGVHdWVzdExvY2F0aW9uQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PEd1ZXN0U3RhdGVNb2RlbD4sIGFjdGlvbjogVXBkYXRlR3Vlc3RMb2NhdGlvbkFjdGlvbik6IE9ic2VydmFibGU8Vkd1ZXN0V2l0aEJhdGNoRHRvSHR0cFJlc3BvbnNlRGF0YT4ge1xuICAgIGRlYnVnZ2VyO1xuICAgIGNvbnN0IGNvbmZpZzogQ29tbWFuZE5vdGlmaWNhdGlvbkNvbmZpZyA9IHtcbiAgICAgIG1lc3NhZ2VzOiBbeyB2YWx1ZTogYWN0aW9uLnVwZGF0ZUd1ZXN0TG9jYXRpb25Db21tYW5kLm5hbWUsIGNsYXNzOiBOb3RpZmljYXRpb25DbGFzcy5ib2R5IH1dLFxuICAgICAgY29tbWFuZDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoTG9jYWxpemF0aW9uLnVwZGF0ZV9sb2NhdGlvbilcbiAgICB9O1xuXG4gICAgY29uc3QgZ3Vlc3QkID0gdGhpcy5ndWVzdFNlcnZpY2VQcm94eS51cGRhdGVHdWVzdExvY2F0aW9uKGFjdGlvbi5ndWlkLCBhY3Rpb24udXBkYXRlR3Vlc3RMb2NhdGlvbkNvbW1hbmQpO1xuICAgIHJldHVybiBndWVzdCQucGlwZSh0aGlzLmNvbW1hbmROb3RpZmljYXRpb25TZXJ2aWNlLmRpc3BsYXkoY29uZmlnKSk7XG4gIH1cblxuICBAQWN0aW9uKERlbGV0ZUd1ZXN0QWN0aW9uKVxuICBvbkRlbGV0ZUd1ZXN0QWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PEd1ZXN0U3RhdGVNb2RlbD4sIGFjdGlvbjogRGVsZXRlR3Vlc3RBY3Rpb24pOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGNvbnN0IGludGVycG9sYXRlZEd1ZXN0TmFtZSA9IGFjdGlvbi5ndWVzdC5uYW1lLnRyaW0oKSA9PT0gTG9jYWxpemF0aW9uLmNhcmRfaG9sZGVyID9cbiAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KExvY2FsaXphdGlvbi5jYXJkX2hvbGRlcikgOiBhY3Rpb24uZ3Vlc3QubmFtZTtcbiAgICBjb25zdCBtZXNzYWdlQmFyUGF5bG9hZDogTWVzc2FnZUJhclBheWxvYWQgPSB7XG4gICAgICBlbnRpdHk6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoTG9jYWxpemF0aW9uLmd1ZXN0KSxcbiAgICAgIGVudGl0eU5hbWU6IGludGVycG9sYXRlZEd1ZXN0TmFtZSxcbiAgICAgIGFjdGlvbjogdGhpcy50cmFuc2xhdGUuaW5zdGFudChMb2NhbGl6YXRpb24uZGVsZXRlZCksXG4gICAgfTtcbiAgICB0aGlzLm1lc3NhZ2VCYXJTZXJ2aWNlLmluZm8oTG9jYWxpemF0aW9uLmVudGl0eV9pbl9wcm9ncmVzcywgY3JlYXRlTWVzc2FnZVRleHQobWVzc2FnZUJhclBheWxvYWQpKTtcbiAgICByZXR1cm4gdGhpcy5ndWVzdFNlcnZpY2VQcm94eS5kZWxldGVHdWVzdChhY3Rpb24uZ3Vlc3QuZ3Vlc3RJRCwgYWN0aW9uLmd1ZXN0LnBhcmtJRCwgYWN0aW9uLmd1aWQpLnBpcGUodGFwKCgpID0+IHtcbiAgICAgIHRoaXMubWVzc2FnZUJhclNlcnZpY2Uuc3VjY2VzcyhcbiAgICAgICAgTG9jYWxpemF0aW9uLmVudGl0eV9zdWNjZXNzLFxuICAgICAgICBjcmVhdGVNZXNzYWdlVGV4dChtZXNzYWdlQmFyUGF5bG9hZClcbiAgICAgICk7XG4gICAgICAoYWN0aW9uLmd1ZXN0IGFzIFZHdWVzdFdpdGhCYXRjaER0bykuZGVsZXRlZCA9IDE7XG4gICAgICB0aGlzLmRlbGV0ZUd1ZXN0RnJvbVN0b3JlKGN0eCwgYWN0aW9uLmd1ZXN0LCBhY3Rpb24uZ3VpZCk7XG4gICAgfSwgKCkgPT4ge1xuICAgICAgbWVzc2FnZUJhclBheWxvYWQuZW50aXR5ID0gbG93ZXJDYXNlRmlyc3RMZXR0ZXIoXG4gICAgICAgIG1lc3NhZ2VCYXJQYXlsb2FkLmVudGl0eVxuICAgICAgKTtcbiAgICAgIG1lc3NhZ2VCYXJQYXlsb2FkLmFjdGlvbiA9IGxvd2VyQ2FzZUZpcnN0TGV0dGVyKFxuICAgICAgICB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KExvY2FsaXphdGlvbi5kZWxldGUpXG4gICAgICApO1xuICAgICAgdGhpcy5tZXNzYWdlQmFyU2VydmljZS5lcnJvcihcbiAgICAgICAgTG9jYWxpemF0aW9uLmVudGl0eV9mYWlsZWQsXG4gICAgICAgIGNyZWF0ZU1lc3NhZ2VUZXh0KG1lc3NhZ2VCYXJQYXlsb2FkKVxuICAgICAgKTtcbiAgICB9KSk7XG4gIH1cblxuICBAQWN0aW9uKENyZWF0ZUJhc2ljR3Vlc3RBY3Rpb24pXG4gIG9uQ3JlYXRlQmFzaWNHdWVzdEFjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxHdWVzdFN0YXRlTW9kZWw+LCBhY3Rpb246IENyZWF0ZUJhc2ljR3Vlc3RBY3Rpb24pOiBPYnNlcnZhYmxlPFZHdWVzdFdpdGhCYXRjaER0b0h0dHBSZXNwb25zZURhdGE+IHtcbiAgICBjb25zdCBtZXNzYWdlQmFyUGF5bG9hZDogTWVzc2FnZUJhclBheWxvYWQgPSB7XG4gICAgICBlbnRpdHk6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoTG9jYWxpemF0aW9uLmd1ZXN0KSxcbiAgICAgIGVudGl0eU5hbWU6IGAke2FjdGlvbi5ndWVzdC5maXJzdE5hbWV9ICR7YWN0aW9uLmd1ZXN0Lmxhc3ROYW1lfWAsXG4gICAgICBhY3Rpb246IGxvd2VyQ2FzZUZpcnN0TGV0dGVyKHRoaXMudHJhbnNsYXRlLmluc3RhbnQoTG9jYWxpemF0aW9uLmNyZWF0ZWQpKSxcbiAgICB9O1xuICAgIHRoaXMubWVzc2FnZUJhclNlcnZpY2UuaW5mbyhMb2NhbGl6YXRpb24uZW50aXR5X2luX3Byb2dyZXNzLCBjcmVhdGVNZXNzYWdlVGV4dChtZXNzYWdlQmFyUGF5bG9hZCkpO1xuICAgIHJldHVybiB0aGlzLmd1ZXN0U2VydmljZVByb3h5LmNyZWF0ZUJhc2ljR3Vlc3QoYWN0aW9uLmd1aWQsIGFjdGlvbi5ndWVzdCkucGlwZSh0YXAoe1xuICAgICAgbmV4dDogKGhhbmRsZWQ6IFZHdWVzdFdpdGhCYXRjaER0b0h0dHBSZXNwb25zZURhdGEpID0+IHtcbiAgICAgICAgY29uc3QgZGlzcGxheU5ld0d1ZXN0SW5UYWJsZSA9IHRoaXMuaXNHdWVzdENyZWF0ZWRGcm9tU2VsZWN0ZWRGYWNpbGl0eShoYW5kbGVkLmRhdGEsIGFjdGlvbi5ndWlkKTtcbiAgICAgICAgdGhpcy5hZGRHdWVzdFRvU3RvcmUoY3R4LCBoYW5kbGVkLmRhdGEsIGRpc3BsYXlOZXdHdWVzdEluVGFibGUpO1xuICAgICAgICB0aGlzLm1lc3NhZ2VCYXJTZXJ2aWNlLnN1Y2Nlc3MoXG4gICAgICAgICAgZGlzcGxheU5ld0d1ZXN0SW5UYWJsZSA/IExvY2FsaXphdGlvbi5lbnRpdHlfc3VjY2VzcyA6IExvY2FsaXphdGlvbi5lbnRpdHlfc3VjY2Vzc19ub3RfY3VycmVudGx5X3Zpc2libGUsXG4gICAgICAgICAgY3JlYXRlTWVzc2FnZVRleHQobWVzc2FnZUJhclBheWxvYWQpXG4gICAgICAgICk7XG4gICAgICB9LFxuICAgICAgZXJyb3I6ICgpID0+IHtcbiAgICAgICAgbWVzc2FnZUJhclBheWxvYWQuZW50aXR5ID0gbG93ZXJDYXNlRmlyc3RMZXR0ZXIoXG4gICAgICAgICAgbWVzc2FnZUJhclBheWxvYWQuZW50aXR5XG4gICAgICAgICk7XG4gICAgICAgIG1lc3NhZ2VCYXJQYXlsb2FkLmFjdGlvbiA9IGxvd2VyQ2FzZUZpcnN0TGV0dGVyKFxuICAgICAgICAgIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoTG9jYWxpemF0aW9uLmNyZWF0ZSlcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5tZXNzYWdlQmFyU2VydmljZS5lcnJvcihcbiAgICAgICAgICBMb2NhbGl6YXRpb24uZW50aXR5X2ZhaWxlZCxcbiAgICAgICAgICBjcmVhdGVNZXNzYWdlVGV4dChtZXNzYWdlQmFyUGF5bG9hZClcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9KSk7XG4gIH1cblxuICBAQWN0aW9uKFVwZGF0ZUJhc2ljR3Vlc3RBY3Rpb24pXG4gIG9uVXBkYXRlQmFzaWNHdWVzdEFjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxHdWVzdFN0YXRlTW9kZWw+LCBhY3Rpb246IFVwZGF0ZUJhc2ljR3Vlc3RBY3Rpb24pOiBPYnNlcnZhYmxlPFZHdWVzdFdpdGhCYXRjaER0b0h0dHBSZXNwb25zZURhdGE+IHtcbiAgICBjb25zdCBtZXNzYWdlQmFyUGF5bG9hZDogTWVzc2FnZUJhclBheWxvYWQgPSB7XG4gICAgICBlbnRpdHk6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoTG9jYWxpemF0aW9uLmd1ZXN0KSxcbiAgICAgIGVudGl0eU5hbWU6IGAke2FjdGlvbi5ndWVzdC5maXJzdE5hbWV9ICR7YWN0aW9uLmd1ZXN0Lmxhc3ROYW1lfWAsXG4gICAgICBhY3Rpb246IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoTG9jYWxpemF0aW9uLnVwZGF0ZWQpLFxuICAgIH07XG4gICAgdGhpcy5tZXNzYWdlQmFyU2VydmljZS5pbmZvKExvY2FsaXphdGlvbi5lbnRpdHlfaW5fcHJvZ3Jlc3MsIGNyZWF0ZU1lc3NhZ2VUZXh0KG1lc3NhZ2VCYXJQYXlsb2FkKSk7XG4gICAgcmV0dXJuIHRoaXMuZ3Vlc3RTZXJ2aWNlUHJveHkudXBkYXRlQmFzaWNHdWVzdChhY3Rpb24uZ3VpZCwgYWN0aW9uLmd1ZXN0KS5waXBlKHRhcCh7XG4gICAgICBuZXh0OiAoaGFuZGxlZDogVkd1ZXN0V2l0aEJhdGNoRHRvSHR0cFJlc3BvbnNlRGF0YSkgPT4gdGhpcy5vblVwZGF0ZUJhc2ljR3Vlc3ROZXh0KGN0eCwgYWN0aW9uLCBoYW5kbGVkLCBtZXNzYWdlQmFyUGF5bG9hZCksXG4gICAgICBlcnJvcjogKCkgPT4gdGhpcy5vblVwZGF0ZUJhc2ljR3Vlc3RFcnJvcihtZXNzYWdlQmFyUGF5bG9hZClcbiAgICB9KSk7XG4gIH1cblxuICBAQWN0aW9uKFVwZGF0ZUJhc2ljR3Vlc3RUZW1wQWN0aW9uKVxuICBvblVwZGF0ZUJhc2ljR3Vlc3RUZW1wQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PEd1ZXN0U3RhdGVNb2RlbD4sIGFjdGlvbjogVXBkYXRlQmFzaWNHdWVzdEFjdGlvbik6IE9ic2VydmFibGU8Vkd1ZXN0V2l0aEJhdGNoRHRvSHR0cFJlc3BvbnNlRGF0YT4ge1xuICAgIGNvbnN0IG1lc3NhZ2VCYXJQYXlsb2FkOiBNZXNzYWdlQmFyUGF5bG9hZCA9IHtcbiAgICAgIGVudGl0eTogdGhpcy50cmFuc2xhdGUuaW5zdGFudChMb2NhbGl6YXRpb24uZ3Vlc3QpLFxuICAgICAgZW50aXR5TmFtZTogYCR7YWN0aW9uLmd1ZXN0LmZpcnN0TmFtZX0gJHthY3Rpb24uZ3Vlc3QubGFzdE5hbWV9YCxcbiAgICAgIGFjdGlvbjogdGhpcy50cmFuc2xhdGUuaW5zdGFudChMb2NhbGl6YXRpb24udXBkYXRlZCksXG4gICAgfTtcbiAgICB0aGlzLm1lc3NhZ2VCYXJTZXJ2aWNlLmluZm8oTG9jYWxpemF0aW9uLmVudGl0eV9pbl9wcm9ncmVzcywgY3JlYXRlTWVzc2FnZVRleHQobWVzc2FnZUJhclBheWxvYWQpKTtcbiAgICByZXR1cm4gdGhpcy5ndWVzdFNlcnZpY2VQcm94eS51cGRhdGVCYXNpY0d1ZXN0VGVtcChhY3Rpb24uZ3VpZCwgYWN0aW9uLmd1ZXN0KS5waXBlKHRhcCh7XG4gICAgICBuZXh0OiAoaGFuZGxlZDogVkd1ZXN0V2l0aEJhdGNoRHRvSHR0cFJlc3BvbnNlRGF0YSkgPT4gdGhpcy5vblVwZGF0ZUJhc2ljR3Vlc3ROZXh0KGN0eCwgYWN0aW9uLCBoYW5kbGVkLCBtZXNzYWdlQmFyUGF5bG9hZCksXG4gICAgICBlcnJvcjogKCkgPT4gdGhpcy5vblVwZGF0ZUJhc2ljR3Vlc3RFcnJvcihtZXNzYWdlQmFyUGF5bG9hZClcbiAgICB9KSk7XG4gIH1cblxuICBAQWN0aW9uKFNlbmRFbWFpbFRvR3Vlc3QpXG4gIG9uU2VuZEVtYWlsVG9HdWVzdEFjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxHdWVzdFN0YXRlTW9kZWw+LCBhY3Rpb246IFNlbmRFbWFpbFRvR3Vlc3QpOiBPYnNlcnZhYmxlPEludDMySHR0cFJlc3BvbnNlRGF0YT4ge1xuICAgIHJldHVybiB0aGlzLmd1ZXN0U2VydmljZVByb3h5LnNlbmRHdWVzdEVtYWlsKGFjdGlvbi5ndWlkLCBhY3Rpb24uc2VuZEVtYWlsQ29tbWFuZCkucGlwZSh0YXAoe1xuICAgICAgbmV4dDogKCkgPT4gdGhpcy5tZXNzYWdlQmFyU2VydmljZS5zdWNjZXNzKExvY2FsaXphdGlvbi5lbWFpbF9zZW50X3N1Y2Nlc3NmdWxseSksXG4gICAgICBlcnJvcjogKCkgPT4gdGhpcy5tZXNzYWdlQmFyU2VydmljZS5lcnJvcihMb2NhbGl6YXRpb24uZW1haWxfc2VuZGluZ19mYWlsZWQpLFxuICAgIH0pKTtcbiAgfVxuXG4gIEBBY3Rpb24oTG9hZEd1ZXN0c0J5QmF0Y2hJZEFjdGlvbiwgeyBjYW5jZWxVbmNvbXBsZXRlZDogdHJ1ZSB9KVxuICBvbkxvYWRHdWVzdHNCeUJhdGNoSWQoY3R4OiBTdGF0ZUNvbnRleHQ8R3Vlc3RTdGF0ZU1vZGVsPiwgYWN0aW9uOiBMb2FkR3Vlc3RzQnlCYXRjaElkQWN0aW9uKTogT2JzZXJ2YWJsZTxWR3Vlc3RXaXRoQmF0Y2hEdG9JRW51bWVyYWJsZUh0dHBSZXNwb25zZURhdGE+IHtcbiAgICBjb25zdCByZXN1bHRzJCA9IHRoaXMuZ3Vlc3RTZXJ2aWNlUHJveHkuZ2V0R3Vlc3RzQnlCYXRjaElEKGFjdGlvbi5wYXJrSWQsIGFjdGlvbi5iYXRjaElELCBhY3Rpb24uZ3VpZCwgYWN0aW9uLmd1ZXN0c0ZpbHRlckR0byk7XG4gICAgcmV0dXJuIHJlc3VsdHMkLnBpcGUodGFwKChndWVzdHM6IFZHdWVzdFdpdGhCYXRjaER0b0lFbnVtZXJhYmxlSHR0cFJlc3BvbnNlRGF0YSkgPT4ge1xuICAgICAgdGhpcy5hZGRHdWVzdHNCeUJhdGNoSWRUb1N0b3JlKGN0eCwgYWN0aW9uLmJhdGNoSUQsIGd1ZXN0cy5kYXRhKTtcbiAgICB9KSk7XG4gIH1cblxuICBAQWN0aW9uKExvYWRHdWVzdHNCeUJhdGNoSWRDYW5jZWxsZWRBY3Rpb24sIHsgY2FuY2VsVW5jb21wbGV0ZWQ6IGZhbHNlIH0pXG4gIG9uTG9hZEd1ZXN0c0J5QmF0Y2hJZENhbmNlbGxlZEFjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxHdWVzdFN0YXRlTW9kZWw+LCBhY3Rpb246IExvYWRHdWVzdHNCeUJhdGNoSWRDYW5jZWxsZWRBY3Rpb24pIHtcbiAgICBjb25zdCBkaXNwbGF5ZWRHdWVzdHNCYXRjaGVzID0gY3R4LmdldFN0YXRlKCkuZGlzcGxheWVkO1xuICAgIGNvbnN0IGd1ZXN0QmF0Y2hJbmRleCA9IGRpc3BsYXllZEd1ZXN0c0JhdGNoZXMuZmluZEluZGV4KGd1ZXN0ID0+IGd1ZXN0IGluc3RhbmNlb2YgVkd1ZXN0V2l0aEJhdGNoRHRvICYmIGd1ZXN0LmJhdGNoSUQgPT09IGFjdGlvbi5iYXRjaElkKTtcblxuICAgIGlmIChndWVzdEJhdGNoSW5kZXggIT09IC0xKSB7XG4gICAgICBjb25zdCBndWVzdEJhdGNoID0gbWFya0VudGl0eUFzVW5jaGFuZ2VkKGRpc3BsYXllZEd1ZXN0c0JhdGNoZXNbZ3Vlc3RCYXRjaEluZGV4XSk7XG5cbiAgICAgIGRpc3BsYXllZEd1ZXN0c0JhdGNoZXNbZ3Vlc3RCYXRjaEluZGV4XSA9IE9iamVjdC5hc3NpZ24obmV3IFZHdWVzdFdpdGhCYXRjaER0bygpLCBndWVzdEJhdGNoKTtcblxuICAgICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgICBkaXNwbGF5ZWQ6IFsuLi5kaXNwbGF5ZWRHdWVzdHNCYXRjaGVzXVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgQEFjdGlvbihFeHBhbmRHdWVzdHNCeUJhdGNoSWRBY3Rpb24pXG4gIG9uRXhwYW5kR3Vlc3RzQnlCYXRjaElkQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PEd1ZXN0U3RhdGVNb2RlbD4sIGFjdGlvbjogRXhwYW5kR3Vlc3RzQnlCYXRjaElkQWN0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5hZGRHdWVzdHNCeUJhdGNoSWRUb1N0b3JlKGN0eCwgYWN0aW9uLmJhdGNoSUQsIGFjdGlvbi5ndWVzdHMpO1xuICB9XG5cbiAgQEFjdGlvbihDb2xsYXBzZWRHdWVzdHNCeUJhdGNoSWRBY3Rpb24pXG4gIG9uQ29sbGFwc2VkR3Vlc3RzQnlCYXRjaElkQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PEd1ZXN0U3RhdGVNb2RlbD4sIGFjdGlvbjogQ29sbGFwc2VkR3Vlc3RzQnlCYXRjaElkQWN0aW9uKTogdm9pZCB7XG4gICAgbGV0IGRpc3BsYXllZEd1c2V0QmF0Y2hlcyA9IGN0eC5nZXRTdGF0ZSgpLmRpc3BsYXllZDtcbiAgICBjb25zdCBndWVzdEJhdGNoSW5kZXggPSBkaXNwbGF5ZWRHdXNldEJhdGNoZXMuZmluZEluZGV4KGdiID0+IGdiLmJhdGNoSUQgPT09IGFjdGlvbi5iYXRjaElEKTtcbiAgICBpZiAoZ3Vlc3RCYXRjaEluZGV4ICE9PSAtMSkge1xuICAgICAgZGlzcGxheWVkR3VzZXRCYXRjaGVzID0gZGlzcGxheWVkR3VzZXRCYXRjaGVzLmZpbHRlcihlbnRpdHkgPT4gZW50aXR5LmJhdGNoSUQgIT09IGFjdGlvbi5iYXRjaElEIHx8ICFlbnRpdHkuZ3Vlc3RJRCk7XG4gICAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICAgIGRpc3BsYXllZDogWy4uLmRpc3BsYXllZEd1c2V0QmF0Y2hlc10sXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBAQWN0aW9uKExvYWRHdWVzdFByb2ZpbGVzQWN0aW9uLCB7IGNhbmNlbFVuY29tcGxldGVkOiB0cnVlIH0pXG4gIG9uTG9hZEd1ZXN0UHJvZmlsZXNBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8R3Vlc3RTdGF0ZU1vZGVsPiwgYWN0aW9uOiBMb2FkR3Vlc3RQcm9maWxlc0FjdGlvbikge1xuICAgIGNvbnN0IGd1ZXN0UHJvZmlsZXMkID0gdGhpcy5ndWVzdFNlcnZpY2VQcm94eS5nZXRQcm9maWxlcyhhY3Rpb24ucGFya0lkLCBhY3Rpb24uc2VhcmNoUGFyYW1zRHRvPy5tYXhSZXN1bHRzLFxuICAgICAgYWN0aW9uLnNlYXJjaFBhcmFtc0R0bz8uc2VhcmNoVGVybSwgYWN0aW9uLnNlYXJjaFBhcmFtc0R0bz8ub3JkZXJCeS5jb2x1bW4sXG4gICAgICBhY3Rpb24uc2VhcmNoUGFyYW1zRHRvPy5vcmRlckJ5Lm9yZGVyRGlyZWN0aW9uLCBhY3Rpb24uZ3VpZCk7XG4gICAgcmV0dXJuIGd1ZXN0UHJvZmlsZXMkLnBpcGUodGFwKHByb2ZpbGVzID0+IHtcbiAgICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgICAgcHJvZmlsZXM6IHByb2ZpbGVzLmRhdGEsXG4gICAgICB9KTtcbiAgICB9KSk7XG4gIH1cblxuICBAQWN0aW9uKENsZWFyR3Vlc3RQcm9maWxlc0FjdGlvbilcbiAgb25DbGVhckd1ZXN0UHJvZmlsZXNBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8R3Vlc3RTdGF0ZU1vZGVsPikge1xuICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgIHByb2ZpbGVzOiBbXSxcbiAgICB9KTtcbiAgfVxuXG4gIEBBY3Rpb24oU2VuZEd1ZXN0UGFzc2VzVG9FbWFpbEFjdGlvbilcbiAgYXN5bmMgb25TZW5kR3Vlc3RQYXNzZXNUb0VtYWlsKGN0eDogU3RhdGVDb250ZXh0PEd1ZXN0U3RhdGVNb2RlbD4sIGFjdGlvbjogU2VuZEd1ZXN0UGFzc2VzVG9FbWFpbEFjdGlvbikge1xuICAgIGNvbnN0IGRhdGE6IGFueSA9IHtcbiAgICAgIG1vZGFsVGl0bGU6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoTG9jYWxpemF0aW9uLnNlbmRfc3RpY2tlcnNfdG9fZW1haWwpLFxuICAgICAgc2VuZEVtYWlsOiBmYWxzZSxcbiAgICAgIHNlbmRFbWFpbFJlcWV1c3Q6IGF3YWl0IHRoaXMucG9wdWxhdGVTZW5kRW1haWxSZXF1ZXN0KGFjdGlvbikgIC8vIG9ubHkgdmVyc2lvbiA+PSA4LjEgc3VwcG9ydCB0aGlzIGZlYXR1cmVcbiAgICB9O1xuICAgIGRhdGEuc2VuZEVtYWlsUmVxZXVzdC50byA9IGFjdGlvbi5lbWFpbDtcbiAgICBjdHguZGlzcGF0Y2gobmV3IFNlbmRFbWFpbEZyb21FbnRpdHlBY3Rpb24oZGF0YS5zZW5kRW1haWxSZXFldXN0KSk7XG4gIH1cblxuICBAQWN0aW9uKEV4cG9ydEd1ZXN0c0FjdGlvbiwgeyBjYW5jZWxVbmNvbXBsZXRlZDogdHJ1ZSB9KVxuICBvbkV4cG9ydEd1ZXN0c0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxHdWVzdFN0YXRlTW9kZWw+LCBhY3Rpb246IEV4cG9ydEd1ZXN0c0FjdGlvbik6IE9ic2VydmFibGU8Vkd1ZXN0V2l0aEJhdGNoRHRvRW50aXR5V3JhcHBlckR0b0h0dHBSZXNwb25zZURhdGE+IHtcbiAgICBjb25zdCBnZXRHdWVzdHMkID0gdGhpcy5ndWVzdFNlcnZpY2VQcm94eS5nZXRHdWVzdHMoYWN0aW9uLnBhcmtJZCwgYWN0aW9uLmd1aWQsIGFjdGlvbi5ndWVzdHNGaWx0ZXJEdG8pO1xuICAgIHJldHVybiBnZXRHdWVzdHMkLnBpcGUodGFwKHtcbiAgICAgIG5leHQ6IChndWVzdHNXcmFwcGVyOiBWR3Vlc3RXaXRoQmF0Y2hEdG9FbnRpdHlXcmFwcGVyRHRvSHR0cFJlc3BvbnNlRGF0YSkgPT4ge1xuICAgICAgICBjb25zdCB0YWJsZVJvd3M6IGFueVtdW10gPSBbXTtcbiAgICAgICAgY29uc3QgZ3Vlc3RXaXRoQmF0Y2hEdG9MaXN0OiBWR3Vlc3RXaXRoQmF0Y2hEdG9bXSA9IGd1ZXN0c1dyYXBwZXIuZGF0YS5lbnRpdGllcztcbiAgICAgICAgZ3Vlc3RXaXRoQmF0Y2hEdG9MaXN0LmZvckVhY2goKGd1ZXN0KSA9PiB7XG4gICAgICAgICAgdGFibGVSb3dzLnB1c2goW2d1ZXN0Lm5hbWUsXG4gICAgICAgICAgdGhpcy50cmFuc2xhdGUuaW5zdGFudChQcm9maWxlVHlwZVRleHRbUHJvZmlsZVR5cGVbZ3Vlc3QubVR5cGVdXSksXG4gICAgICAgICAgZ3Vlc3QubW9iaWxlLFxuICAgICAgICAgIGd1ZXN0LmNhclBsYXRlLFxuICAgICAgICAgIHRoaXMuZXhwb3J0RmlsZVNlcnZpY2UuZ2V0RGF0ZUZpZWxkVmFsdWUoYWN0aW9uLmZpbGVUeXBlLCBndWVzdCwgJ3ZhbGlkRnJvbURhdGUnKSxcbiAgICAgICAgICB0aGlzLmV4cG9ydEZpbGVTZXJ2aWNlLmdldERhdGVGaWVsZFZhbHVlKGFjdGlvbi5maWxlVHlwZSwgZ3Vlc3QsICd2YWxpZFRvRGF0ZScpLFxuICAgICAgICAgIGd1ZXN0LmNvbXBhbnlOYW1lLFxuICAgICAgICAgIGd1ZXN0LnN1YkNvbXBhbnlOYW1lLFxuICAgICAgICAgIHRoaXMucGFya2VyU2VydmljZS5nZXRIaXN0b3J5SXRlbUFjdGlvbihndWVzdC5sb2NhdGlvbiwgbnVsbCksXG4gICAgICAgICAgdGhpcy5leHBvcnRGaWxlU2VydmljZS5nZXREYXRlRmllbGRWYWx1ZShhY3Rpb24uZmlsZVR5cGUsIGd1ZXN0LCAncHJvZHVjZWREYXRlJyldKVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5leHBvcnRGaWxlU2VydmljZS5leHBvcnQoYWN0aW9uLmZpbGVUeXBlLCB0YWJsZVJvd3MsIGFjdGlvbi5jb2x1bW5zSGVhZGVyLCBMb2NhbGl6YXRpb24uZ3Vlc3RzKTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICB0aGlzLm1lc3NhZ2VCYXJTZXJ2aWNlLmVycm9yKHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KHRoaXMuTC5mYWlsZWRfZXhwb3J0X2ZpbGUpKTtcbiAgICAgIH1cbiAgICB9KSk7XG4gIH1cblxuICB0b0RhdGVTdHJpbmcgPSAodmFsdWU6IE1vbWVudCkgPT4gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0odmFsdWUudG9EYXRlKCksIHRoaXMudGVuYW50U2VydmljZS5zZWNvbmRhcnlEYXRlVGltZUZvcm1hdCkgfHwgJy0nO1xuXG4gIHByaXZhdGUgYWRkR3Vlc3RzQnlCYXRjaElkVG9TdG9yZShjdHg6IFN0YXRlQ29udGV4dDxHdWVzdFN0YXRlTW9kZWw+LCBiYXRjaElEOiBudW1iZXIsIGd1ZXN0czogVkd1ZXN0V2l0aEJhdGNoRHRvW10pIHtcbiAgICBjb25zdCBkaXNwbGF5ZWRHdXNldEJhdGNoZXMgPSBjdHguZ2V0U3RhdGUoKS5kaXNwbGF5ZWQ7XG4gICAgY29uc3QgZ3Vlc3RCYXRjaEluZGV4ID0gZGlzcGxheWVkR3VzZXRCYXRjaGVzLmZpbmRJbmRleChnYiA9PiBnYi5iYXRjaElEID09PSBiYXRjaElEKTtcbiAgICBpZiAoZ3Vlc3RCYXRjaEluZGV4ICE9PSAtMSkge1xuICAgICAgZGlzcGxheWVkR3VzZXRCYXRjaGVzW2d1ZXN0QmF0Y2hJbmRleF0uZW50aXRpZXMgPSBndWVzdHM7XG4gICAgICBkaXNwbGF5ZWRHdXNldEJhdGNoZXMuc3BsaWNlKGd1ZXN0QmF0Y2hJbmRleCArIDEsIDAsIC4uLmd1ZXN0cyk7XG5cbiAgICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgICAgZGlzcGxheWVkOiBbLi4uZGlzcGxheWVkR3VzZXRCYXRjaGVzXSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY29udmVydEd1ZXN0c1RvVGFibGVEYXRhKGd1ZXN0czogVkd1ZXN0V2l0aEJhdGNoRHRvW10pOiBWR3Vlc3RXaXRoQmF0Y2hUYWJsZURhdGEge1xuICAgIGNvbnN0IGJhdGNoOiBWR3Vlc3RXaXRoQmF0Y2hUYWJsZURhdGEgPSBndWVzdHMuZmluZChnID0+IGcuYmF0Y2hJRCA+IDAgJiYgZy5ndWVzdElEID09PSBudWxsKSBhcyBhbnk7XG4gICAgYmF0Y2guaXNSb3dFeHBhbmRhYmxlID0gdHJ1ZTtcbiAgICBiYXRjaC5lbnRpdGllcyA9IGd1ZXN0cy5maWx0ZXIoZyA9PiBnLmJhdGNoSUQgIT09IG51bGwgJiYgZy5ndWVzdElEICE9PSBudWxsKTtcbiAgICByZXR1cm4gYmF0Y2g7XG4gIH1cblxuICBwcml2YXRlIGFkZEd1ZXN0VG9TdG9yZShjdHg6IFN0YXRlQ29udGV4dDxHdWVzdFN0YXRlTW9kZWw+LCBndWVzdDogVkd1ZXN0V2l0aEJhdGNoRHRvLCBkaXNwbGF5TmV3R3Vlc3RJblRhYmxlOiBib29sZWFuKSB7XG4gICAgaWYgKGRpc3BsYXlOZXdHdWVzdEluVGFibGUpIHtcbiAgICAgIGNvbnN0IGRpc3BsYXllZEd1ZXN0cyA9IGN0eC5nZXRTdGF0ZSgpLmRpc3BsYXllZDtcbiAgICAgIG1hcmtFbnRpdGllc0FzQ2hhbmdlZChbZ3Vlc3RdLCBSb3dPcGVyYXRpb24uSW5zZXJ0KTtcbiAgICAgIGRpc3BsYXllZEd1ZXN0cy51bnNoaWZ0KGd1ZXN0KTtcbiAgICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgICAgZGlzcGxheWVkOiBbLi4uZGlzcGxheWVkR3Vlc3RzXSxcbiAgICAgICAgY291bnRlcjogY3R4LmdldFN0YXRlKCkuY291bnRlciArIDEsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGlzR3Vlc3RDcmVhdGVkRnJvbVNlbGVjdGVkRmFjaWxpdHkoZ3Vlc3Q6IFZHdWVzdFdpdGhCYXRjaER0bywgZ3VpZDogc3RyaW5nKSB7XG4gICAgY29uc3Qgc2VsZWN0ZWRQYXJrSUQgPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KEZhY2lsaXR5U3RhdGUucGFya0lkKTtcbiAgICBjb25zdCBzZWxlY3RlZEd1aWQgPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KEZhY2lsaXR5U3RhdGUuZ3VpZCk7XG4gICAgcmV0dXJuIHNlbGVjdGVkUGFya0lEID09PSBndWVzdC5wYXJrSUQgJiYgc2VsZWN0ZWRHdWlkID09PSBndWlkO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRQYXJhbnRBbmRDaGlsZEluZGV4KGN0eDogU3RhdGVDb250ZXh0PEd1ZXN0U3RhdGVNb2RlbD4sIGd1ZXN0RHRvOiBWR3Vlc3RXaXRoQmF0Y2hEdG8pOiB7IHBhcmVudDogbnVtYmVyLCBjaGlsZDogbnVtYmVyIH0ge1xuICAgIGNvbnN0IGRpc3BsYXllZEd1ZXN0cyA9IGN0eC5nZXRTdGF0ZSgpLmRpc3BsYXllZDtcbiAgICAvLyBpZiBJIGFtIGNoaWxkcmVuIGZpbmQgbXkgcGFyZW50LCBhZnRlciB0aGF0IGZpbmQgbWVcbiAgICBjb25zdCBwYXJlbnQgPSBkaXNwbGF5ZWRHdWVzdHMuZmluZEluZGV4KGd1ZXN0ID0+IGd1ZXN0LmJhdGNoSUQgPT09IGd1ZXN0RHRvLmJhdGNoSUQgJiYgZ3Vlc3QuZ3Vlc3RJRCA9PT0gbnVsbCk7XG4gICAgY29uc3QgY2hpbGQgPSAoZGlzcGxheWVkR3Vlc3RzW3BhcmVudF0uZW50aXRpZXMgfHwgW10pLmZpbmRJbmRleChndWVzdCA9PiBndWVzdC5ndWVzdElEID09PSBndWVzdER0by5ndWVzdElEKTtcbiAgICByZXR1cm4geyBwYXJlbnQsIGNoaWxkIH07XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUd1ZXN0SW5TdG9yZShjdHg6IFN0YXRlQ29udGV4dDxHdWVzdFN0YXRlTW9kZWw+LCBndWVzdDogVkd1ZXN0V2l0aEJhdGNoRHRvLCBndWlkOiBzdHJpbmcpIHtcbiAgICBjb25zdCBkaXNwbGF5ZWRHdWVzdHMgPSBjdHguZ2V0U3RhdGUoKS5kaXNwbGF5ZWQ7XG4gICAgY29uc3QgZ3Vlc3RJbmRleCA9IHRoaXMuZ2V0R3Vlc3RJbmRleChkaXNwbGF5ZWRHdWVzdHMsIGd1ZXN0Lmd1ZXN0SUQpO1xuXG4gICAgaWYgKGd1ZXN0SW5kZXggIT09IC0xKSB7XG4gICAgICBkaXNwbGF5ZWRHdWVzdHNbZ3Vlc3RJbmRleF0gPSBndWVzdDtcbiAgICAgIG1hcmtFbnRpdGllc0FzQ2hhbmdlZChbZ3Vlc3RdLCBSb3dPcGVyYXRpb24uVXBkYXRlKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pc0d1ZXN0Q2hpbGQoZ3Vlc3QpKSB7XG4gICAgICBjb25zdCB7IGNoaWxkLCBwYXJlbnQgfSA9IHRoaXMuZ2V0UGFyYW50QW5kQ2hpbGRJbmRleChjdHgsIGd1ZXN0KTtcbiAgICAgIGlmIChwYXJlbnQgIT09IC0xKSB7XG4gICAgICAgIGlmIChjaGlsZCAhPT0gLTEpIHtcbiAgICAgICAgICBkaXNwbGF5ZWRHdWVzdHNbcGFyZW50XS5lbnRpdGllc1tjaGlsZF0gPSBndWVzdDtcbiAgICAgICAgfVxuICAgICAgICBtYXJrRW50aXRpZXNBc0NoYW5nZWQoW2Rpc3BsYXllZEd1ZXN0c1twYXJlbnRdXSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgZGlzcGxheWVkOiBbLi4uZGlzcGxheWVkR3Vlc3RzXSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZGVsZXRlR3Vlc3RGcm9tU3RvcmUoY3R4OiBTdGF0ZUNvbnRleHQ8R3Vlc3RTdGF0ZU1vZGVsPiwgZ3Vlc3Q6IFZHdWVzdFdpdGhCYXRjaER0bywgZ3VpZDogc3RyaW5nKSB7XG4gICAgbGV0IGNvdW50ZXIgPSBjdHguZ2V0U3RhdGUoKS5jb3VudGVyO1xuXG4gICAgY29uc3QgZGlzcGxheWVkR3Vlc3RzID0gY3R4LmdldFN0YXRlKCkuZGlzcGxheWVkO1xuICAgIGNvbnN0IGd1ZXN0SW5kZXggPSB0aGlzLmdldEd1ZXN0SW5kZXgoZGlzcGxheWVkR3Vlc3RzLCBndWVzdC5ndWVzdElEKTtcblxuICAgIGlmIChndWVzdEluZGV4ICE9PSAtMSkge1xuICAgICAgZGlzcGxheWVkR3Vlc3RzLnNwbGljZShndWVzdEluZGV4LCAxKTtcbiAgICAgIG1hcmtFbnRpdGllc0FzQ2hhbmdlZChbZ3Vlc3RdLCBSb3dPcGVyYXRpb24uRGVsZXRlKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pc0d1ZXN0Q2hpbGQoZ3Vlc3QpKSB7XG4gICAgICBjb25zdCB7IGNoaWxkLCBwYXJlbnQgfSA9IHRoaXMuZ2V0UGFyYW50QW5kQ2hpbGRJbmRleChjdHgsIGd1ZXN0KTtcbiAgICAgIGlmIChwYXJlbnQgIT09IC0xKSB7XG4gICAgICAgIGlmIChjaGlsZCAhPT0gLTEpIHtcbiAgICAgICAgICBkaXNwbGF5ZWRHdWVzdHNbcGFyZW50XS5lbnRpdGllcy5zcGxpY2UoY2hpbGQsIDEpO1xuICAgICAgICB9XG4gICAgICAgIG1hcmtFbnRpdGllc0FzQ2hhbmdlZChbZGlzcGxheWVkR3Vlc3RzW3BhcmVudF1dKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY291bnRlci0tO1xuICAgIH1cblxuICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgIGRpc3BsYXllZDogWy4uLmRpc3BsYXllZEd1ZXN0c10sXG4gICAgICBjb3VudGVyOiBjb3VudGVyLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBwb3B1bGF0ZVNlbmRFbWFpbFJlcXVlc3QoYWN0aW9uOiBTZW5kR3Vlc3RQYXNzZXNUb0VtYWlsQWN0aW9uKSB7XG4gICAgbGV0IHBkZlBhZ2VzUGFyYW1ldGVyc0xpc3Q6IHsgW2tleTogc3RyaW5nXTogYW55OyB9W10gPSBbXTtcbiAgICBsZXQgZ3Vlc3RFbWFpbFRlbXBsYXRlID0gJyc7XG4gICAgaWYgKGFjdGlvbi5ndWVzdC5lbnRpdGllcyAmJiBhY3Rpb24uZ3Vlc3QuZW50aXRpZXMubGVuZ3RoID4gMCkge1xuICAgICAgcGRmUGFnZXNQYXJhbWV0ZXJzTGlzdCA9IFtdO1xuICAgICAgYWN0aW9uLmd1ZXN0LmVudGl0aWVzLmZvckVhY2goZ3Vlc3QgPT4ge1xuICAgICAgICBjb25zdCBwYXJhbUxpc3QgPSB0aGlzLmdldFBhcmFtZXRlcnMoZ3Vlc3QsIGFjdGlvbi5mYWNpbGl0eSk7XG4gICAgICAgIHBkZlBhZ2VzUGFyYW1ldGVyc0xpc3QucHVzaChwYXJhbUxpc3QpO1xuICAgICAgfSk7XG4gICAgICBndWVzdEVtYWlsVGVtcGxhdGUgPSBhY3Rpb24uZ3Vlc3QuYmF0Y2hOYW1lO1xuXG4gICAgfSBlbHNlIHtcbiAgICAgIHBkZlBhZ2VzUGFyYW1ldGVyc0xpc3QucHVzaCh0aGlzLmdldFBhcmFtZXRlcnMoYWN0aW9uLmd1ZXN0LCBhY3Rpb24uZmFjaWxpdHkpKTtcbiAgICAgIGd1ZXN0RW1haWxUZW1wbGF0ZSA9IGFjdGlvbi5ndWVzdC5uYW1lO1xuICAgIH1cblxuICAgIGNvbnN0IHNlbmRFbWFpbFJlcXVlc3QgPSBuZXcgU2VuZEVtYWlsUmVxdWVzdER0byh7XG4gICAgICBlbnRpdHk6IG5ldyBHdWVzdEVudGl0eVBhcmFtcyh7XG4gICAgICAgIHFyUGxhaW5UZXh0OiBhY3Rpb24uZ3Vlc3QucXJQbGFpblRleHQsXG4gICAgICAgIGlkOiBhY3Rpb24uZ3Vlc3QuZ3Vlc3RJRCB8fCBhY3Rpb24uZ3Vlc3QuYmF0Y2hJRCxcbiAgICAgICAgcXJDb2RlOiBhY3Rpb24uZ3Vlc3QucXJDb2RlLFxuICAgICAgfSksXG4gICAgICB0bzogYWN0aW9uLmVtYWlsLFxuICAgICAgdGVtcGxhdGVUeXBlOiBUZW1wbGF0ZVR5cGUuR3Vlc3QsXG4gICAgICBwZGZQYWdlc1BhcmFtZXRlcnNMaXN0LFxuICAgICAgcGRmUGFnZXNQYXJhbWV0ZXJzOiBudWxsLCAvLyBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSB2ZXJzaW9uIDguMlxuICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICBndWVzdEVtYWlsVGVtcGxhdGUsXG4gICAgICB9LFxuICAgICAgaXNNdWx0aVBhZ2VzRmlsZTogYWN0aW9uLmlzTXVsdGlQYWdlc0ZpbGVcbiAgICB9KTtcbiAgICByZXR1cm4gc2VuZEVtYWlsUmVxdWVzdDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UGFyYW1ldGVycyhndWVzdDogVkd1ZXN0V2l0aEJhdGNoRHRvLCBmYWNpbGl0eTogRmFjaWxpdHlXaXRoR3VpZCk6IHsgW2tleTogc3RyaW5nXTogYW55OyB9IHtcbiAgICBjb25zdCBwYXJhbWV0ZXJzID0ge1xuICAgICAgdmFsaWRGcm9tRGF0ZVRpbWU6IHRoaXMudG9EYXRlU3RyaW5nKGd1ZXN0LnZhbGlkRnJvbURhdGUpLFxuICAgICAgdmFsaWRUb0RhdGVUaW1lOiB0aGlzLnRvRGF0ZVN0cmluZyhndWVzdC52YWxpZFRvRGF0ZSksXG4gICAgICBjb21wYW55TmFtZTogZ3Vlc3QuY29tcGFueU5hbWUsXG4gICAgICBzdWJDb21wYW55TmFtZTogZ3Vlc3Quc3ViQ29tcGFueU5hbWUsXG4gICAgICBwYXJrTmFtZTogZmFjaWxpdHk/LmRhdGE/Lm5hbWUsXG4gICAgICBwcm9kdWNlZERhdGVUaW1lOiB0aGlzLnRvRGF0ZVN0cmluZyhndWVzdC5wcm9kdWNlZERhdGUpLFxuICAgICAgaWQ6IGd1ZXN0Lmd1ZXN0SUQsXG4gICAgICBmaXJzdE5hbWU6IGd1ZXN0LmZpcnN0TmFtZSxcbiAgICAgIGxhc3ROYW1lOiBndWVzdC5sYXN0TmFtZSxcbiAgICAgIHBsYXRlSWQ6IGd1ZXN0LmNhclBsYXRlLFxuICAgICAgbmFtZTogZ3Vlc3QubmFtZSxcbiAgICAgIGNhcmQ6IGd1ZXN0LmNyZWRpdCxcbiAgICAgIGFkZHJlc3M6IGdldEFkZHJlc3MoZ3Vlc3QuY2l0eSwgZ3Vlc3Quc3RyZWV0KSxcbiAgICAgIHFyQ29kZTogZ3Vlc3QucXJDb2RlLFxuICAgICAgZ3VpZDogZmFjaWxpdHkuZ3VpZCxcbiAgICAgIHBhcmtJZDogZmFjaWxpdHkuZGF0YS5pZCxcbiAgICAgIHFyUGxhaW5UZXh0OiBndWVzdC5xclBsYWluVGV4dFxuICAgIH07XG5cbiAgICByZXR1cm4gcGFyYW1ldGVycztcbiAgfVxuXG4gIHByaXZhdGUgaXNHdWVzdENoaWxkID0gKGd1ZXN0OiBWR3Vlc3RXaXRoQmF0Y2hEdG8pID0+IGd1ZXN0Lmd1ZXN0SUQgIT09IG51bGwgJiYgZ3Vlc3QuYmF0Y2hJRCA+IDA7XG5cbiAgcHJpdmF0ZSBnZXRHdWVzdEluZGV4KGRpc3BsYXllZEd1ZXN0czogVkd1ZXN0V2l0aEJhdGNoRHRvW10sIGd1ZXN0SWQ6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIGRpc3BsYXllZEd1ZXN0cy5maW5kSW5kZXgoZ3Vlc3QgPT4gZ3Vlc3QuZ3Vlc3RJRCA9PT0gZ3Vlc3RJZCk7XG4gIH1cblxuICBwcml2YXRlIG9uVXBkYXRlQmFzaWNHdWVzdE5leHQoY3R4OiBTdGF0ZUNvbnRleHQ8R3Vlc3RTdGF0ZU1vZGVsPiwgYWN0aW9uOiBVcGRhdGVCYXNpY0d1ZXN0QWN0aW9uLCBoYW5kbGVkOiBWR3Vlc3RXaXRoQmF0Y2hEdG9IdHRwUmVzcG9uc2VEYXRhLCBtZXNzYWdlQmFyUGF5bG9hZDogTWVzc2FnZUJhclBheWxvYWQpIHtcbiAgICB0aGlzLnVwZGF0ZUd1ZXN0SW5TdG9yZShjdHgsIGhhbmRsZWQuZGF0YSwgYWN0aW9uLmd1aWQpO1xuICAgIHRoaXMubWVzc2FnZUJhclNlcnZpY2Uuc3VjY2VzcyhcbiAgICAgIExvY2FsaXphdGlvbi5lbnRpdHlfc3VjY2VzcyxcbiAgICAgIGNyZWF0ZU1lc3NhZ2VUZXh0KG1lc3NhZ2VCYXJQYXlsb2FkKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIG9uVXBkYXRlQmFzaWNHdWVzdEVycm9yKG1lc3NhZ2VCYXJQYXlsb2FkOiBNZXNzYWdlQmFyUGF5bG9hZCkge1xuICAgIG1lc3NhZ2VCYXJQYXlsb2FkLmVudGl0eSA9IGxvd2VyQ2FzZUZpcnN0TGV0dGVyKFxuICAgICAgbWVzc2FnZUJhclBheWxvYWQuZW50aXR5XG4gICAgKTtcbiAgICBtZXNzYWdlQmFyUGF5bG9hZC5hY3Rpb24gPSBsb3dlckNhc2VGaXJzdExldHRlcihcbiAgICAgIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoTG9jYWxpemF0aW9uLnVwZGF0ZSlcbiAgICApO1xuICAgIHRoaXMubWVzc2FnZUJhclNlcnZpY2UuZXJyb3IoXG4gICAgICBMb2NhbGl6YXRpb24uZW50aXR5X2ZhaWxlZCxcbiAgICAgIGNyZWF0ZU1lc3NhZ2VUZXh0KG1lc3NhZ2VCYXJQYXlsb2FkKVxuICAgICk7XG4gIH1cbn1cbiJdfQ==
|
|
612
|
+
}], ctorParameters: function () { return [{ type: i1.Store }, { type: i2.Edge.GuestServiceProxy }, { type: i3.TranslateService }, { type: i2.Edge.BatchServiceProxy }, { type: i4.MessageBarService }, { type: i5.CommandNotificationService }, { type: i3.TranslateService }, { type: i6.TenantService }, { type: i7.ExportFileService }, { type: i8.ParkerService }, { type: i9.AnalyticsService }]; }, propDecorators: { onLoadGuestByIdAction: [], onClearGuestAction: [], onLoadGuestsAction: [], onSetGuestsAction: [], onClearGuestListAction: [], onCreateGuestAction: [], onCreateBatchAction: [], onCreateBasicBatchAction: [], onUpdateGuestAction: [], onUpdateGuestLocationAction: [], onDeleteGuestAction: [], onCreateBasicGuestAction: [], onUpdateBasicGuestAction: [], onUpdateBasicGuestTempAction: [], onSendEmailToGuestAction: [], onLoadGuestsByBatchId: [], onLoadGuestsByBatchIdCancelledAction: [], onExpandGuestsByBatchIdAction: [], onCollapsedGuestsByBatchIdAction: [], onLoadGuestProfilesAction: [], onClearGuestProfilesAction: [], onSendGuestPassesToEmail: [], onExportGuestsAction: [] } });
|
|
613
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3Vlc3Quc3RhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtc2hhcmVkLWxpYi9zcmMvbGlicmFyaWVzL21vZHVsZXMvZ3Vlc3QvZ3Vlc3Quc3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBdUIsTUFBTSxhQUFhLENBQUM7QUFHM0UsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR3JDLE9BQU8sRUFBNkIsOEJBQThCLEVBQUUsTUFBTSxnRkFBZ0YsQ0FBQztBQUUzSixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUN0RixPQUFPLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM1RCxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBSWxELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxVQUFVLEVBQUUsb0JBQW9CLEVBQUUscUJBQXFCLEVBQUUscUJBQXFCLEVBQUUsWUFBWSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzlJLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBRWpGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUUzRCxPQUFPLEVBQ0wsZ0JBQWdCLEVBQUUsd0JBQXdCLEVBQUUscUJBQXFCLEVBQUUsOEJBQThCLEVBQ2pHLHNCQUFzQixFQUFFLHNCQUFzQixFQUFFLGlCQUFpQixFQUFFLGlCQUFpQixFQUFFLGlCQUFpQixFQUN2RywyQkFBMkIsRUFBRSxrQkFBa0IsRUFBRSxt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TSxDQUFDLHdCQUF3QixDQUFDOzREQUtoQztBQUdLO0lBREwsTUFBTSxDQUFDLDRCQUE0QixDQUFDOzBEQVNwQztBQUdEO0lBREMsTUFBTSxDQUFDLGtCQUFrQixFQUFFLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLENBQUM7c0RBeUJ2RDtBQTVaYTtJQURiLFFBQVEsRUFBRTtvQ0FHVjtBQUdhO0lBRGIsUUFBUSxFQUFFO3NDQUdWO0FBR2E7SUFEYixRQUFRLEVBQUU7dUNBR1Y7QUFHYTtJQURiLFFBQVEsRUFBRTtnQ0FHVjtBQUdhO0lBRGIsUUFBUSxFQUFFO2dDQUdWO0FBekNVLFVBQVU7SUFYdEIsS0FBSyxDQUFrQjtRQUN0QixJQUFJLEVBQUUsT0FBTztRQUNiLFFBQVEsRUFBRTtZQUNSLFFBQVEsRUFBRSxFQUFFO1lBQ1osU0FBUyxFQUFFLEVBQUU7WUFDYixPQUFPLEVBQUUsQ0FBQztZQUNWLEtBQUssRUFBRSxJQUFJO1lBQ1gsUUFBUSxFQUFFLEVBQUU7WUFDWixRQUFRLEVBQUUsSUFBSTtTQUNmO0tBQ0YsQ0FBQztHQUNXLFVBQVUsQ0FnbkJ0QjtTQWhuQlksVUFBVTs0RkFBVixVQUFVO2tCQVp0QixVQUFVO29hQXdEVCxxQkFBcUIsTUFVckIsa0JBQWtCLE1BT2xCLGtCQUFrQixNQVdsQixpQkFBaUIsTUFPakIsc0JBQXNCLE1BU3RCLG1CQUFtQixNQWdDbkIsbUJBQW1CLE1BbUNuQix3QkFBd0IsTUFtQ3hCLG1CQUFtQixNQStCbkIsMkJBQTJCLE1BZ0IzQixtQkFBbUIsTUErQm5CLHdCQUF3QixNQWdDeEIsd0JBQXdCLE1BY3hCLDRCQUE0QixNQWM1Qix3QkFBd0IsTUFReEIscUJBQXFCLE1BUXJCLG9DQUFvQyxNQWdCcEMsNkJBQTZCLE1BSzdCLGdDQUFnQyxNQVloQyx5QkFBeUIsTUFZekIsMEJBQTBCLE1BT3BCLHdCQUF3QixNQVc5QixvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRlUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBBY3Rpb24sIFNlbGVjdG9yLCBTdGF0ZSwgU3RhdGVDb250ZXh0LCBTdG9yZSB9IGZyb20gJ0BuZ3hzL3N0b3JlJztcbmltcG9ydCB7IE1vbWVudCB9IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBNZXNzYWdlQmFyUGF5bG9hZCB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvbWVzc2FnZS1iYXIvbWVzc2FnZS1iYXItdGV4dC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgTWVzc2FnZUJhclNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL21lc3NhZ2UtYmFyL21lc3NhZ2UtYmFyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29tbWFuZE5vdGlmaWNhdGlvbkNvbmZpZywgQ29tbWFuZE5vdGlmaWNhdGlvbkRpc3BsYXlDYXNlIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9ub3RpZmljYXRpb24vY29tbWFuZC1ub3RpZmljYXRpb24vY29tbWFuZC1ub3RpZmljYXRpb24tY29uZmlnJztcbmltcG9ydCB7IENvbW1hbmROb3RpZmljYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9ub3RpZmljYXRpb24vY29tbWFuZC1ub3RpZmljYXRpb24vY29tbWFuZC1ub3RpZmljYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25DbGFzcyB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvbm90aWZpY2F0aW9uL25vdGlmaWNhdGlvbi1jb25maWcnO1xuaW1wb3J0IHsgTG9jYWxpemF0aW9uLCBQcm9maWxlVHlwZVRleHQgfSBmcm9tICcuLi8uLi9lbnVtcyc7XG5pbXBvcnQgeyBDbG91ZCwgRWRnZSB9IGZyb20gJy4uLy4uL3NlcnZpY2UtcHJveHknO1xuaW1wb3J0IHsgQW5hbHl0aWNzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2FuYWx5dGljcy5zZXJ2aWNlJztcbmltcG9ydCB7IEV4cG9ydEZpbGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZXhwb3J0LWZpbGUuc2VydmljZSc7XG5pbXBvcnQgeyBUZW5hbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdGVuYW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgY3JlYXRlTWVzc2FnZVRleHQsIGdldEFkZHJlc3MsIGxvd2VyQ2FzZUZpcnN0TGV0dGVyLCBtYXJrRW50aXRpZXNBc0NoYW5nZWQsIG1hcmtFbnRpdHlBc1VuY2hhbmdlZCwgUm93T3BlcmF0aW9uIH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHsgU2VuZEVtYWlsRnJvbUVudGl0eUFjdGlvbiB9IGZyb20gJy4uL2VtYWlsLXNlcnZlci9lbWFpbC1zZXJ2ZXIuYWN0aW9ucyc7XG5pbXBvcnQgeyBGYWNpbGl0eVdpdGhHdWlkIH0gZnJvbSAnLi4vZmFjaWxpdHkvZmFjaWxpdHktd2l0aC1ndWlkLmludGVyZmFjZSc7XG5pbXBvcnQgeyBGYWNpbGl0eVN0YXRlIH0gZnJvbSAnLi4vZmFjaWxpdHkvZmFjaWxpdHkuc3RhdGUnO1xuaW1wb3J0IHsgUGFya2VyU2VydmljZSB9IGZyb20gJy4uL3Bhcmtlci9wYXJrZXIuc2VydmljZSc7XG5pbXBvcnQge1xuICBDbGVhckd1ZXN0QWN0aW9uLCBDbGVhckd1ZXN0UHJvZmlsZXNBY3Rpb24sIENsZWFyR3Vlc3RzTGlzdEFjdGlvbiwgQ29sbGFwc2VkR3Vlc3RzQnlCYXRjaElkQWN0aW9uLFxuICBDcmVhdGVCYXNpY0JhdGNoQWN0aW9uLCBDcmVhdGVCYXNpY0d1ZXN0QWN0aW9uLCBDcmVhdGVCYXRjaEFjdGlvbiwgQ3JlYXRlR3Vlc3RBY3Rpb24sIERlbGV0ZUd1ZXN0QWN0aW9uLFxuICBFeHBhbmRHdWVzdHNCeUJhdGNoSWRBY3Rpb24sIEV4cG9ydEd1ZXN0c0FjdGlvbiwgTG9hZEd1ZXN0QnlJZEFjdGlvbiwgTG9hZEd1ZXN0UHJvZmlsZXNBY3Rpb24sIExvYWRHdWVzdHNBY3Rpb24sXG4gIExvYWRHdWVzdHNCeUJhdGNoSWRBY3Rpb24sIExvYWRHdWVzdHNCeUJhdGNoSWRDYW5jZWxsZWRBY3Rpb24sIFNlbmRFbWFpbFRvR3Vlc3QsIFNlbmRHdWVzdFBhc3Nlc1RvRW1haWxBY3Rpb24sXG4gIFNldEd1ZXN0c0FjdGlvbiwgVXBkYXRlQmFzaWNHdWVzdEFjdGlvbiwgVXBkYXRlQmFzaWNHdWVzdFRlbXBBY3Rpb24sIFVwZGF0ZUd1ZXN0QWN0aW9uLCBVcGRhdGVHdWVzdExvY2F0aW9uQWN0aW9uXG59IGZyb20gJy4vZ3Vlc3QuYWN0aW9ucyc7XG5cbmltcG9ydCBHdWVzdEVudGl0eVBhcmFtcyA9IEVkZ2UuR3Vlc3RFbnRpdHlQYXJhbXM7XG5pbXBvcnQgR3Vlc3RQcm9maWxlRHRvID0gRWRnZS5HdWVzdFByb2ZpbGVEdG87XG5pbXBvcnQgSW50MzJIdHRwUmVzcG9uc2VEYXRhID0gRWRnZS5JbnQzMkh0dHBSZXNwb25zZURhdGE7XG5pbXBvcnQgUHJvYmxlbURldGFpbHNIdHRwUmVzcG9uc2VEYXRhID0gRWRnZS5Qcm9ibGVtRGV0YWlsc0h0dHBSZXNwb25zZURhdGE7XG5pbXBvcnQgUHJvZmlsZVR5cGUgPSBFZGdlLlByb2ZpbGVUeXBlO1xuaW1wb3J0IFZHdWVzdFdpdGhCYXRjaER0byA9IEVkZ2UuVkd1ZXN0V2l0aEJhdGNoRHRvO1xuaW1wb3J0IFZHdWVzdFdpdGhCYXRjaER0b0VudGl0eVdyYXBwZXJEdG9IdHRwUmVzcG9uc2VEYXRhID0gRWRnZS5WR3Vlc3RXaXRoQmF0Y2hEdG9FbnRpdHlXcmFwcGVyRHRvSHR0cFJlc3BvbnNlRGF0YTtcbmltcG9ydCBWR3Vlc3RXaXRoQmF0Y2hEdG9IdHRwUmVzcG9uc2VEYXRhID0gRWRnZS5WR3Vlc3RXaXRoQmF0Y2hEdG9IdHRwUmVzcG9uc2VEYXRhO1xuaW1wb3J0IFZHdWVzdFdpdGhCYXRjaER0b0lFbnVtZXJhYmxlSHR0cFJlc3BvbnNlRGF0YSA9IEVkZ2UuVkd1ZXN0V2l0aEJhdGNoRHRvSUVudW1lcmFibGVIdHRwUmVzcG9uc2VEYXRhO1xuaW1wb3J0IFNlbmRFbWFpbFJlcXVlc3REdG8gPSBDbG91ZC5TZW5kRW1haWxSZXF1ZXN0RHRvO1xuaW1wb3J0IFRlbXBsYXRlVHlwZSA9IENsb3VkLlRlbXBsYXRlVHlwZTtcblxuZXhwb3J0IGNsYXNzIFZHdWVzdFdpdGhCYXRjaFRhYmxlRGF0YSBleHRlbmRzIFZHdWVzdFdpdGhCYXRjaER0byB7XG4gIGVudGl0aWVzOiBWR3Vlc3RXaXRoQmF0Y2hEdG9bXVxufTtcblxuZXhwb3J0IGludGVyZmFjZSBHdWVzdFN0YXRlTW9kZWwge1xuICBhcmNoaXZlZDogVkd1ZXN0V2l0aEJhdGNoRHRvW107XG4gIGRpc3BsYXllZDogVkd1ZXN0V2l0aEJhdGNoRHRvW107XG4gIGNvdW50ZXI6IG51bWJlcjtcbiAgZ3Vlc3Q6IFZHdWVzdFdpdGhCYXRjaER0bztcbiAgcHJvZmlsZXM6IEd1ZXN0UHJvZmlsZUR0b1tdO1xuICBzZWxlY3RlZDogVkd1ZXN0V2l0aEJhdGNoRHRvO1xufVxuXG5ASW5qZWN0YWJsZSgpXG5AU3RhdGU8R3Vlc3RTdGF0ZU1vZGVsPih7XG4gIG5hbWU6ICdndWVzdCcsXG4gIGRlZmF1bHRzOiB7XG4gICAgYXJjaGl2ZWQ6IFtdLFxuICAgIGRpc3BsYXllZDogW10sXG4gICAgY291bnRlcjogMCxcbiAgICBndWVzdDogbnVsbCxcbiAgICBwcm9maWxlczogW10sXG4gICAgc2VsZWN0ZWQ6IG51bGwsXG4gIH0sXG59KVxuZXhwb3J0IGNsYXNzIEd1ZXN0U3RhdGUge1xuICBkYXRlUGlwZSA9IG5ldyBEYXRlUGlwZSgnZW4tVVMnKTtcbiAgTCA9IExvY2FsaXphdGlvbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHN0b3JlOiBTdG9yZSxcbiAgICBwcml2YXRlIGd1ZXN0U2VydmljZVByb3h5OiBFZGdlLkd1ZXN0U2VydmljZVByb3h5LFxuICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgYmF0Y2hTZXJ2aWNlUHJveHk6IEVkZ2UuQmF0Y2hTZXJ2aWNlUHJveHksXG4gICAgcHJpdmF0ZSBtZXNzYWdlQmFyU2VydmljZTogTWVzc2FnZUJhclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb21tYW5kTm90aWZpY2F0aW9uU2VydmljZTogQ29tbWFuZE5vdGlmaWNhdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgdGVuYW50U2VydmljZTogVGVuYW50U2VydmljZSxcbiAgICBwcml2YXRlIGV4cG9ydEZpbGVTZXJ2aWNlOiBFeHBvcnRGaWxlU2VydmljZSxcbiAgICBwcml2YXRlIHBhcmtlclNlcnZpY2U6IFBhcmtlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhbmFseXRpY3NTZXJ2aWNlOiBBbmFseXRpY3NTZXJ2aWNlKSB7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIGd1ZXN0Q291bnRlcihzdGF0ZTogR3Vlc3RTdGF0ZU1vZGVsKTogbnVtYmVyIHtcbiAgICByZXR1cm4gc3RhdGUuY291bnRlcjtcbiAgfVxuXG4gIEBTZWxlY3RvcigpXG4gIHB1YmxpYyBzdGF0aWMgYXJjaGl2ZWRHdWVzdHMoc3RhdGU6IEd1ZXN0U3RhdGVNb2RlbCk6IFZHdWVzdFdpdGhCYXRjaER0b1tdIHtcbiAgICByZXR1cm4gc3RhdGUuYXJjaGl2ZWQ7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIGRpc3BsYXllZEd1ZXN0cyhzdGF0ZTogR3Vlc3RTdGF0ZU1vZGVsKTogVkd1ZXN0V2l0aEJhdGNoRHRvW10ge1xuICAgIHJldHVybiBzdGF0ZS5kaXNwbGF5ZWQ7XG4gIH1cblxuICBAU2VsZWN0b3IoKVxuICBwdWJsaWMgc3RhdGljIHByb2ZpbGVzKHN0YXRlOiBHdWVzdFN0YXRlTW9kZWwpOiBHdWVzdFByb2ZpbGVEdG9bXSB7XG4gICAgcmV0dXJuIHN0YXRlLnByb2ZpbGVzO1xuICB9XG5cbiAgQFNlbGVjdG9yKClcbiAgcHVibGljIHN0YXRpYyBzZWxlY3RlZChzdGF0ZTogR3Vlc3RTdGF0ZU1vZGVsKTogVkd1ZXN0V2l0aEJhdGNoRHRvIHtcbiAgICByZXR1cm4gc3RhdGUuc2VsZWN0ZWQ7XG4gIH1cblxuICBAQWN0aW9uKExvYWRHdWVzdEJ5SWRBY3Rpb24sIHsgY2FuY2VsVW5jb21wbGV0ZWQ6IHRydWUgfSlcbiAgb25Mb2FkR3Vlc3RCeUlkQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PEd1ZXN0U3RhdGVNb2RlbD4sIGFjdGlvbjogTG9hZEd1ZXN0QnlJZEFjdGlvbik6IE9ic2VydmFibGU8Vkd1ZXN0V2l0aEJhdGNoRHRvSHR0cFJlc3BvbnNlRGF0YT4ge1xuICAgIGNvbnN0IGdldEd1ZXN0JCA9IHRoaXMuZ3Vlc3RTZXJ2aWNlUHJveHkuZ2V0R3Vlc3RCeUlkKGFjdGlvbi5ndWVzdElkLCBhY3Rpb24ucGFya0lkLCBhY3Rpb24uZ3VpZCk7XG4gICAgcmV0dXJuIGdldEd1ZXN0JC5waXBlKHRhcChndWVzdCA9PiB7XG4gICAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICAgIHNlbGVjdGVkOiBndWVzdC5kYXRhXG4gICAgICB9KTtcbiAgICB9KSk7XG4gIH1cblxuICBAQWN0aW9uKENsZWFyR3Vlc3RBY3Rpb24sIHsgY2FuY2VsVW5jb21wbGV0ZWQ6IHRydWUgfSlcbiAgb25DbGVhckd1ZXN0QWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PENsZWFyR3Vlc3RBY3Rpb24+KTogdm9pZCB7XG4gICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgc2VsZWN0ZWQ6IG51bGxcbiAgICB9KTtcbiAgfVxuXG4gIEBBY3Rpb24oTG9hZEd1ZXN0c0FjdGlvbiwgeyBjYW5jZWxVbmNvbXBsZXRlZDogdHJ1ZSB9KVxuICBvbkxvYWRHdWVzdHNBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8R3Vlc3RTdGF0ZU1vZGVsPiwgYWN0aW9uOiBMb2FkR3Vlc3RzQWN0aW9uKTogT2JzZXJ2YWJsZTxWR3Vlc3RXaXRoQmF0Y2hEdG9FbnRpdHlXcmFwcGVyRHRvSHR0cFJlc3BvbnNlRGF0YT4ge1xuICAgIGNvbnN0IGdldEd1ZXN0cyQgPSB0aGlzLmd1ZXN0U2VydmljZVByb3h5LmdldEd1ZXN0cyhhY3Rpb24ucGFya0lkLCBhY3Rpb24uZ3VpZCwgYWN0aW9uLmd1ZXN0c0ZpbHRlckR0byk7XG4gICAgcmV0dXJuIGdldEd1ZXN0cyQucGlwZSh0YXAoKGd1ZXN0c1dyYXBwZXI6IFZHdWVzdFdpdGhCYXRjaER0b0VudGl0eVdyYXBwZXJEdG9IdHRwUmVzcG9uc2VEYXRhKSA9PiB7XG4gICAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICAgIGFyY2hpdmVkOiBndWVzdHNXcmFwcGVyLmRhdGEuZW50aXRpZXMsXG4gICAgICAgIGNvdW50ZXI6IGd1ZXN0c1dyYXBwZXIuZGF0YS5jb3VudGVyLFxuICAgICAgfSk7XG4gICAgfSkpO1xuICB9XG5cbiAgQEFjdGlvbihTZXRHdWVzdHNBY3Rpb24pXG4gIG9uU2V0R3Vlc3RzQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PEd1ZXN0U3RhdGVNb2RlbD4sIGFjdGlvbjogU2V0R3Vlc3RzQWN0aW9uKSB7XG4gICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgZGlzcGxheWVkOiBhY3Rpb24uZ3Vlc3RzIHx8IFtdLFxuICAgIH0pO1xuICB9XG5cbiAgQEFjdGlvbihDbGVhckd1ZXN0c0xpc3RBY3Rpb24pXG4gIG9uQ2xlYXJHdWVzdExpc3RBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8R3Vlc3RTdGF0ZU1vZGVsPikge1xuICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgIGFyY2hpdmVkOiBbXSxcbiAgICAgIGRpc3BsYXllZDogW10sXG4gICAgICBjb3VudGVyOiAwLFxuICAgIH0pO1xuICB9XG5cbiAgQEFjdGlvbihDcmVhdGVHdWVzdEFjdGlvbilcbiAgb25DcmVhdGVHdWVzdEFjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxHdWVzdFN0YXRlTW9kZWw+LCBhY3Rpb246IENyZWF0ZUd1ZXN0QWN0aW9uKTogT2JzZXJ2YWJsZTxWR3Vlc3RXaXRoQmF0Y2hEdG9IdHRwUmVzcG9uc2VEYXRhPiB7XG4gICAgY29uc3QgbWVzc2FnZUJhclBheWxvYWQ6IE1lc3NhZ2VCYXJQYXlsb2FkID0ge1xuICAgICAgZW50aXR5OiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KExvY2FsaXphdGlvbi5ndWVzdCksXG4gICAgICBlbnRpdHlOYW1lOiBgJHthY3Rpb24uZ3Vlc3QuZmlyc3ROYW1lfSAke2FjdGlvbi5ndWVzdC5sYXN0TmFtZX1gLFxuICAgICAgYWN0aW9uOiBsb3dlckNhc2VGaXJzdExldHRlcih0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KExvY2FsaXphdGlvbi5jcmVhdGVkKSksXG4gICAgfTtcbiAgICB0aGlzLm1lc3NhZ2VCYXJTZXJ2aWNlLmluZm8oTG9jYWxpemF0aW9uLmVudGl0eV9pbl9wcm9ncmVzcywgY3JlYXRlTWVzc2FnZVRleHQobWVzc2FnZUJhclBheWxvYWQpKTtcbiAgICByZXR1cm4gdGhpcy5ndWVzdFNlcnZpY2VQcm94eS5jcmVhdGVHdWVzdChhY3Rpb24uZ3VpZCwgYWN0aW9uLmd1ZXN0KS5waXBlKHRhcCh7XG4gICAgICBuZXh0OiAoaGFuZGxlZDogVkd1ZXN0V2l0aEJhdGNoRHRvSHR0cFJlc3BvbnNlRGF0YSkgPT4ge1xuICAgICAgICBjb25zdCBkaXNwbGF5TmV3R3Vlc3RJblRhYmxlID0gdGhpcy5pc0d1ZXN0Q3JlYXRlZEZyb21TZWxlY3RlZEZhY2lsaXR5KGhhbmRsZWQuZGF0YSwgYWN0aW9uLmd1aWQpO1xuICAgICAgICB0aGlzLmFkZEd1ZXN0VG9TdG9yZShjdHgsIGhhbmRsZWQuZGF0YSwgZGlzcGxheU5ld0d1ZXN0SW5UYWJsZSk7XG4gICAgICAgIHRoaXMubWVzc2FnZUJhclNlcnZpY2Uuc3VjY2VzcyhcbiAgICAgICAgICBkaXNwbGF5TmV3R3Vlc3RJblRhYmxlID8gTG9jYWxpemF0aW9uLmVudGl0eV9zdWNjZXNzIDogTG9jYWxpemF0aW9uLmVudGl0eV9zdWNjZXNzX25vdF9jdXJyZW50bHlfdmlzaWJsZSxcbiAgICAgICAgICBjcmVhdGVNZXNzYWdlVGV4dChtZXNzYWdlQmFyUGF5bG9hZClcbiAgICAgICAgKTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICBtZXNzYWdlQmFyUGF5bG9hZC5lbnRpdHkgPSBsb3dlckNhc2VGaXJzdExldHRlcihcbiAgICAgICAgICBtZXNzYWdlQmFyUGF5bG9hZC5lbnRpdHlcbiAgICAgICAgKTtcbiAgICAgICAgbWVzc2FnZUJhclBheWxvYWQuYWN0aW9uID0gbG93ZXJDYXNlRmlyc3RMZXR0ZXIoXG4gICAgICAgICAgdGhpcy50cmFuc2xhdGUuaW5zdGFudChMb2NhbGl6YXRpb24uY3JlYXRlKVxuICAgICAgICApO1xuICAgICAgICB0aGlzLm1lc3NhZ2VCYXJTZXJ2aWNlLmVycm9yKFxuICAgICAgICAgIExvY2FsaXphdGlvbi5lbnRpdHlfZmFpbGVkLFxuICAgICAgICAgIGNyZWF0ZU1lc3NhZ2VUZXh0KG1lc3NhZ2VCYXJQYXlsb2FkKVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0pKTtcbiAgfVxuXG4gIEBBY3Rpb24oQ3JlYXRlQmF0Y2hBY3Rpb24pXG4gIG9uQ3JlYXRlQmF0Y2hBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8R3Vlc3RTdGF0ZU1vZGVsPiwgYWN0aW9uOiBDcmVhdGVCYXRjaEFjdGlvbik6IE9ic2VydmFibGU8Vkd1ZXN0V2l0aEJhdGNoRHRvSUVudW1lcmFibGVIdHRwUmVzcG9uc2VEYXRhPiB7XG4gICAgY29uc3QgbWVzc2FnZUJhclBheWxvYWQ6IE1lc3NhZ2VCYXJQYXlsb2FkID0ge1xuICAgICAgZW50aXR5OiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KExvY2FsaXphdGlvbi5ndWVzdF9ncm91cCksXG4gICAgICBlbnRpdHlOYW1lOiBhY3Rpb24uYmF0Y2hDb21tYW5kLm5hbWUsXG4gICAgICBhY3Rpb246IGxvd2VyQ2FzZUZpcnN0TGV0dGVyKHRoaXMudHJhbnNsYXRlLmluc3RhbnQoTG9jYWxpemF0aW9uLmNyZWF0ZWQpKSxcbiAgICB9O1xuICAgIHRoaXMubWVzc2FnZUJhclNlcnZpY2UuaW5mbyhMb2NhbGl6YXRpb24uZW50aXR5X2luX3Byb2dyZXNzLCBjcmVhdGVNZXNzYWdlVGV4dChtZXNzYWdlQmFyUGF5bG9hZCkpO1xuICAgIHJldHVybiB0aGlzLmJhdGNoU2VydmljZVByb3h5LmNyZWF0ZUJhdGNoKGFjdGlvbi5mYWNpbGl0eVdpdGhHdWlkLmd1aWQsIGFjdGlvbi5iYXRjaENvbW1hbmQpLnBpcGUodGFwKHtcbiAgICAgIG5leHQ6IChuZXdHdWVzdHM6IFZHdWVzdFdpdGhCYXRjaER0b0lFbnVtZXJhYmxlSHR0cFJlc3BvbnNlRGF0YSkgPT4ge1xuICAgICAgICBjb25zdCBkaXNwbGF5TmV3R3Vlc3RJblRhYmxlID0gdGhpcy5pc0d1ZXN0Q3JlYXRlZEZyb21TZWxlY3RlZEZhY2lsaXR5KG5ld0d1ZXN0cy5kYXRhWzBdLCBhY3Rpb24uZmFjaWxpdHlXaXRoR3VpZC5ndWlkKTtcbiAgICAgICAgdGhpcy5tZXNzYWdlQmFyU2VydmljZS5zdWNjZXNzKFxuICAgICAgICAgIGRpc3BsYXlOZXdHdWVzdEluVGFibGUgPyBMb2NhbGl6YXRpb24uZW50aXR5X3N1Y2Nlc3MgOiBMb2NhbGl6YXRpb24uZW50aXR5X3N1Y2Nlc3Nfbm90X2N1cnJlbnRseV92aXNpYmxlLFxuICAgICAgICAgIGNyZWF0ZU1lc3NhZ2VUZXh0KG1lc3NhZ2VCYXJQYXlsb2FkKVxuICAgICAgICApO1xuXG4gICAgICAgIGlmIChkaXNwbGF5TmV3R3Vlc3RJblRhYmxlKSB7XG4gICAgICAgICAgY29uc3QgbmV3QmF0Y2ggPSB0aGlzLmNvbnZlcnRHdWVzdHNUb1RhYmxlRGF0YShuZXdHdWVzdHMuZGF0YSk7XG4gICAgICAgICAgbWFya0VudGl0aWVzQXNDaGFuZ2VkKFtuZXdCYXRjaF0sIFJvd09wZXJhdGlvbi5JbnNlcnQpO1xuICAgICAgICAgIG1hcmtFbnRpdGllc0FzQ2hhbmdlZChuZXdCYXRjaC5lbnRpdGllcywgUm93T3BlcmF0aW9uLkluc2VydCk7XG4gICAgICAgICAgY29uc3QgZGlzcGxheWVkR3Vlc3RzID0gY3R4LmdldFN0YXRlKCkuZGlzcGxheWVkO1xuICAgICAgICAgIGRpc3BsYXllZEd1ZXN0cy51bnNoaWZ0KC4uLm5ld0JhdGNoLmVudGl0aWVzKTtcbiAgICAgICAgICBkaXNwbGF5ZWRHdWVzdHMudW5zaGlmdChuZXdCYXRjaCk7XG4gICAgICAgICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgICAgICAgZGlzcGxheWVkOiBbLi4uZGlzcGxheWVkR3Vlc3RzXSxcbiAgICAgICAgICAgIGNvdW50ZXI6IGN0eC5nZXRTdGF0ZSgpLmNvdW50ZXIgKyAxLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZXJyb3I6IChlOiBQcm9ibGVtRGV0YWlsc0h0dHBSZXNwb25zZURhdGEpID0+IHtcbiAgICAgICAgYWN0aW9uLmVycm9yTWVzc2FnZSA9IGUuZGF0YS5kZXRhaWw7XG4gICAgICB9XG4gICAgfSkpO1xuICB9XG5cbiAgQEFjdGlvbihDcmVhdGVCYXNpY0JhdGNoQWN0aW9uKVxuICBvbkNyZWF0ZUJhc2ljQmF0Y2hBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8R3Vlc3RTdGF0ZU1vZGVsPiwgYWN0aW9uOiBDcmVhdGVCYXNpY0JhdGNoQWN0aW9uKTogT2JzZXJ2YWJsZTxWR3Vlc3RXaXRoQmF0Y2hEdG9JRW51bWVyYWJsZUh0dHBSZXNwb25zZURhdGE+IHtcbiAgICBjb25zdCBtZXNzYWdlQmFyUGF5bG9hZDogTWVzc2FnZUJhclBheWxvYWQgPSB7XG4gICAgICBlbnRpdHk6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoTG9jYWxpemF0aW9uLmd1ZXN0X2dyb3VwKSxcbiAgICAgIGVudGl0eU5hbWU6IGFjdGlvbi5iYXRjaENvbW1hbmQubmFtZSxcbiAgICAgIGFjdGlvbjogbG93ZXJDYXNlRmlyc3RMZXR0ZXIodGhpcy50cmFuc2xhdGUuaW5zdGFudChMb2NhbGl6YXRpb24uY3JlYXRlZCkpLFxuICAgIH07XG4gICAgdGhpcy5tZXNzYWdlQmFyU2VydmljZS5pbmZvKExvY2FsaXphdGlvbi5lbnRpdHlfaW5fcHJvZ3Jlc3MsIGNyZWF0ZU1lc3NhZ2VUZXh0KG1lc3NhZ2VCYXJQYXlsb2FkKSk7XG4gICAgcmV0dXJuIHRoaXMuYmF0Y2hTZXJ2aWNlUHJveHkuY3JlYXRlQmFzaWNCYXRjaChhY3Rpb24uZmFjaWxpdHlXaXRoR3VpZC5ndWlkLCBhY3Rpb24uYmF0Y2hDb21tYW5kKS5waXBlKHRhcCh7XG4gICAgICBuZXh0OiAobmV3R3Vlc3RzOiBWR3Vlc3RXaXRoQmF0Y2hEdG9JRW51bWVyYWJsZUh0dHBSZXNwb25zZURhdGEpID0+IHtcbiAgICAgICAgY29uc3QgZGlzcGxheU5ld0d1ZXN0SW5UYWJsZSA9IHRoaXMuaXNHdWVzdENyZWF0ZWRGcm9tU2VsZWN0ZWRGYWNpbGl0eShuZXdHdWVzdHMuZGF0YVswXSwgYWN0aW9uLmZhY2lsaXR5V2l0aEd1aWQuZ3VpZCk7XG4gICAgICAgIHRoaXMubWVzc2FnZUJhclNlcnZpY2Uuc3VjY2VzcyhcbiAgICAgICAgICBkaXNwbGF5TmV3R3Vlc3RJblRhYmxlID8gTG9jYWxpemF0aW9uLmVudGl0eV9zdWNjZXNzIDogTG9jYWxpemF0aW9uLmVudGl0eV9zdWNjZXNzX25vdF9jdXJyZW50bHlfdmlzaWJsZSxcbiAgICAgICAgICBjcmVhdGVNZXNzYWdlVGV4dChtZXNzYWdlQmFyUGF5bG9hZClcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAoZGlzcGxheU5ld0d1ZXN0SW5UYWJsZSkge1xuICAgICAgICAgIGNvbnN0IG5ld0JhdGNoID0gdGhpcy5jb252ZXJ0R3Vlc3RzVG9UYWJsZURhdGEobmV3R3Vlc3RzLmRhdGEpO1xuICAgICAgICAgIG1hcmtFbnRpdGllc0FzQ2hhbmdlZChbbmV3QmF0Y2hdLCBSb3dPcGVyYXRpb24uSW5zZXJ0KTtcbiAgICAgICAgICBtYXJrRW50aXRpZXNBc0NoYW5nZWQobmV3QmF0Y2guZW50aXRpZXMsIFJvd09wZXJhdGlvbi5JbnNlcnQpO1xuICAgICAgICAgIGNvbnN0IGRpc3BsYXllZEd1ZXN0cyA9IGN0eC5nZXRTdGF0ZSgpLmRpc3BsYXllZDtcbiAgICAgICAgICBkaXNwbGF5ZWRHdWVzdHMudW5zaGlmdCguLi5uZXdCYXRjaC5lbnRpdGllcyk7XG4gICAgICAgICAgZGlzcGxheWVkR3Vlc3RzLnVuc2hpZnQobmV3QmF0Y2gpO1xuICAgICAgICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgICAgICAgIGRpc3BsYXllZDogWy4uLmRpc3BsYXllZEd1ZXN0c10sXG4gICAgICAgICAgICBjb3VudGVyOiBjdHguZ2V0U3RhdGUoKS5jb3VudGVyICsgMSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGVycm9yOiAoZTogUHJvYmxlbURldGFpbHNIdHRwUmVzcG9uc2VEYXRhKSA9PiB7XG4gICAgICAgIGFjdGlvbi5lcnJvck1lc3NhZ2UgPSBlLmRhdGEuZGV0YWlsO1xuICAgICAgfVxuICAgIH0pKTtcbiAgfVxuXG4gIEBBY3Rpb24oVXBkYXRlR3Vlc3RBY3Rpb24pXG4gIG9uVXBkYXRlR3Vlc3RBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8R3Vlc3RTdGF0ZU1vZGVsPiwgYWN0aW9uOiBVcGRhdGVHdWVzdEFjdGlvbik6IE9ic2VydmFibGU8Vkd1ZXN0V2l0aEJhdGNoRHRvSHR0cFJlc3BvbnNlRGF0YT4ge1xuICAgIGNvbnN0IG1lc3NhZ2VCYXJQYXlsb2FkOiBNZXNzYWdlQmFyUGF5bG9hZCA9IHtcbiAgICAgIGVudGl0eTogdGhpcy50cmFuc2xhdGUuaW5zdGFudChMb2NhbGl6YXRpb24uZ3Vlc3QpLFxuICAgICAgZW50aXR5TmFtZTogYCR7YWN0aW9uLmd1ZXN0LmZpcnN0TmFtZX0gJHthY3Rpb24uZ3Vlc3QubGFzdE5hbWV9YCxcbiAgICAgIGFjdGlvbjogdGhpcy50cmFuc2xhdGUuaW5zdGFudChMb2NhbGl6YXRpb24udXBkYXRlZCksXG4gICAgfTtcbiAgICB0aGlzLm1lc3NhZ2VCYXJTZXJ2aWNlLmluZm8oTG9jYWxpemF0aW9uLmVudGl0eV9pbl9wcm9ncmVzcywgY3JlYXRlTWVzc2FnZVRleHQobWVzc2FnZUJhclBheWxvYWQpKTtcbiAgICByZXR1cm4gdGhpcy5ndWVzdFNlcnZpY2VQcm94eS51cGRhdGVHdWVzdChhY3Rpb24uZ3VpZCwgYWN0aW9uLmd1ZXN0KS5waXBlKHRhcCh7XG4gICAgICBuZXh0OiAoaGFuZGxlZDogVkd1ZXN0V2l0aEJhdGNoRHRvSHR0cFJlc3BvbnNlRGF0YSkgPT4ge1xuICAgICAgICB0aGlzLnVwZGF0ZUd1ZXN0SW5TdG9yZShjdHgsIGhhbmRsZWQuZGF0YSwgYWN0aW9uLmd1aWQpO1xuICAgICAgICB0aGlzLm1lc3NhZ2VCYXJTZXJ2aWNlLnN1Y2Nlc3MoXG4gICAgICAgICAgTG9jYWxpemF0aW9uLmVudGl0eV9zdWNjZXNzLFxuICAgICAgICAgIGNyZWF0ZU1lc3NhZ2VUZXh0KG1lc3NhZ2VCYXJQYXlsb2FkKVxuICAgICAgICApO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgIG1lc3NhZ2VCYXJQYXlsb2FkLmVudGl0eSA9IGxvd2VyQ2FzZUZpcnN0TGV0dGVyKFxuICAgICAgICAgIG1lc3NhZ2VCYXJQYXlsb2FkLmVudGl0eVxuICAgICAgICApO1xuICAgICAgICBtZXNzYWdlQmFyUGF5bG9hZC5hY3Rpb24gPSBsb3dlckNhc2VGaXJzdExldHRlcihcbiAgICAgICAgICB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KExvY2FsaXphdGlvbi51cGRhdGUpXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMubWVzc2FnZUJhclNlcnZpY2UuZXJyb3IoXG4gICAgICAgICAgTG9jYWxpemF0aW9uLmVudGl0eV9mYWlsZWQsXG4gICAgICAgICAgY3JlYXRlTWVzc2FnZVRleHQobWVzc2FnZUJhclBheWxvYWQpXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSkpO1xuICB9XG5cbiAgQEFjdGlvbihVcGRhdGVHdWVzdExvY2F0aW9uQWN0aW9uKVxuICBvblVwZGF0ZUd1ZXN0TG9jYXRpb25BY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8R3Vlc3RTdGF0ZU1vZGVsPiwgYWN0aW9uOiBVcGRhdGVHdWVzdExvY2F0aW9uQWN0aW9uKTogT2JzZXJ2YWJsZTxWR3Vlc3RXaXRoQmF0Y2hEdG9IdHRwUmVzcG9uc2VEYXRhPiB7XG4gICAgZGVidWdnZXI7XG4gICAgY29uc3QgY29uZmlnOiBDb21tYW5kTm90aWZpY2F0aW9uQ29uZmlnID0ge1xuICAgICAgbWVzc2FnZXM6IFt7IHZhbHVlOiBhY3Rpb24udXBkYXRlR3Vlc3RMb2NhdGlvbkNvbW1hbmQubmFtZSwgY2xhc3M6IE5vdGlmaWNhdGlvbkNsYXNzLmJvZHkgfV0sXG4gICAgICBjb21tYW5kOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChMb2NhbGl6YXRpb24udXBkYXRlX2xvY2F0aW9uKVxuICAgIH07XG5cbiAgICBjb25zdCBndWVzdCQgPSB0aGlzLmd1ZXN0U2VydmljZVByb3h5LnVwZGF0ZUd1ZXN0TG9jYXRpb24oYWN0aW9uLmd1aWQsIGFjdGlvbi51cGRhdGVHdWVzdExvY2F0aW9uQ29tbWFuZCk7XG4gICAgcmV0dXJuIGd1ZXN0JC5waXBlKHRoaXMuY29tbWFuZE5vdGlmaWNhdGlvblNlcnZpY2UuZGlzcGxheShjb25maWcpLFxuICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgdGhpcy5hbmFseXRpY3NUcmFja0FjdGlvbihjb25maWcsIGFjdGlvbik7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBAQWN0aW9uKERlbGV0ZUd1ZXN0QWN0aW9uKVxuICBvbkRlbGV0ZUd1ZXN0QWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PEd1ZXN0U3RhdGVNb2RlbD4sIGFjdGlvbjogRGVsZXRlR3Vlc3RBY3Rpb24pOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGNvbnN0IGludGVycG9sYXRlZEd1ZXN0TmFtZSA9IGFjdGlvbi5ndWVzdC5uYW1lLnRyaW0oKSA9PT0gTG9jYWxpemF0aW9uLmNhcmRfaG9sZGVyID9cbiAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KExvY2FsaXphdGlvbi5jYXJkX2hvbGRlcikgOiBhY3Rpb24uZ3Vlc3QubmFtZTtcbiAgICBjb25zdCBtZXNzYWdlQmFyUGF5bG9hZDogTWVzc2FnZUJhclBheWxvYWQgPSB7XG4gICAgICBlbnRpdHk6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoTG9jYWxpemF0aW9uLmd1ZXN0KSxcbiAgICAgIGVudGl0eU5hbWU6IGludGVycG9sYXRlZEd1ZXN0TmFtZSxcbiAgICAgIGFjdGlvbjogdGhpcy50cmFuc2xhdGUuaW5zdGFudChMb2NhbGl6YXRpb24uZGVsZXRlZCksXG4gICAgfTtcbiAgICB0aGlzLm1lc3NhZ2VCYXJTZXJ2aWNlLmluZm8oTG9jYWxpemF0aW9uLmVudGl0eV9pbl9wcm9ncmVzcywgY3JlYXRlTWVzc2FnZVRleHQobWVzc2FnZUJhclBheWxvYWQpKTtcbiAgICByZXR1cm4gdGhpcy5ndWVzdFNlcnZpY2VQcm94eS5kZWxldGVHdWVzdChhY3Rpb24uZ3Vlc3QuZ3Vlc3RJRCwgYWN0aW9uLmd1ZXN0LnBhcmtJRCwgYWN0aW9uLmd1aWQpLnBpcGUodGFwKCgpID0+IHtcbiAgICAgIHRoaXMubWVzc2FnZUJhclNlcnZpY2Uuc3VjY2VzcyhcbiAgICAgICAgTG9jYWxpemF0aW9uLmVudGl0eV9zdWNjZXNzLFxuICAgICAgICBjcmVhdGVNZXNzYWdlVGV4dChtZXNzYWdlQmFyUGF5bG9hZClcbiAgICAgICk7XG4gICAgICAoYWN0aW9uLmd1ZXN0IGFzIFZHdWVzdFdpdGhCYXRjaER0bykuZGVsZXRlZCA9IDE7XG4gICAgICB0aGlzLmRlbGV0ZUd1ZXN0RnJvbVN0b3JlKGN0eCwgYWN0aW9uLmd1ZXN0LCBhY3Rpb24uZ3VpZCk7XG4gICAgfSwgKCkgPT4ge1xuICAgICAgbWVzc2FnZUJhclBheWxvYWQuZW50aXR5ID0gbG93ZXJDYXNlRmlyc3RMZXR0ZXIoXG4gICAgICAgIG1lc3NhZ2VCYXJQYXlsb2FkLmVudGl0eVxuICAgICAgKTtcbiAgICAgIG1lc3NhZ2VCYXJQYXlsb2FkLmFjdGlvbiA9IGxvd2VyQ2FzZUZpcnN0TGV0dGVyKFxuICAgICAgICB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KExvY2FsaXphdGlvbi5kZWxldGUpXG4gICAgICApO1xuICAgICAgdGhpcy5tZXNzYWdlQmFyU2VydmljZS5lcnJvcihcbiAgICAgICAgTG9jYWxpemF0aW9uLmVudGl0eV9mYWlsZWQsXG4gICAgICAgIGNyZWF0ZU1lc3NhZ2VUZXh0KG1lc3NhZ2VCYXJQYXlsb2FkKVxuICAgICAgKTtcbiAgICB9KSk7XG4gIH1cblxuICBAQWN0aW9uKENyZWF0ZUJhc2ljR3Vlc3RBY3Rpb24pXG4gIG9uQ3JlYXRlQmFzaWNHdWVzdEFjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxHdWVzdFN0YXRlTW9kZWw+LCBhY3Rpb246IENyZWF0ZUJhc2ljR3Vlc3RBY3Rpb24pOiBPYnNlcnZhYmxlPFZHdWVzdFdpdGhCYXRjaER0b0h0dHBSZXNwb25zZURhdGE+IHtcbiAgICBjb25zdCBtZXNzYWdlQmFyUGF5bG9hZDogTWVzc2FnZUJhclBheWxvYWQgPSB7XG4gICAgICBlbnRpdHk6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoTG9jYWxpemF0aW9uLmd1ZXN0KSxcbiAgICAgIGVudGl0eU5hbWU6IGAke2FjdGlvbi5ndWVzdC5maXJzdE5hbWV9ICR7YWN0aW9uLmd1ZXN0Lmxhc3ROYW1lfWAsXG4gICAgICBhY3Rpb246IGxvd2VyQ2FzZUZpcnN0TGV0dGVyKHRoaXMudHJhbnNsYXRlLmluc3RhbnQoTG9jYWxpemF0aW9uLmNyZWF0ZWQpKSxcbiAgICB9O1xuICAgIHRoaXMubWVzc2FnZUJhclNlcnZpY2UuaW5mbyhMb2NhbGl6YXRpb24uZW50aXR5X2luX3Byb2dyZXNzLCBjcmVhdGVNZXNzYWdlVGV4dChtZXNzYWdlQmFyUGF5bG9hZCkpO1xuICAgIHJldHVybiB0aGlzLmd1ZXN0U2VydmljZVByb3h5LmNyZWF0ZUJhc2ljR3Vlc3QoYWN0aW9uLmd1aWQsIGFjdGlvbi5ndWVzdCkucGlwZSh0YXAoe1xuICAgICAgbmV4dDogKGhhbmRsZWQ6IFZHdWVzdFdpdGhCYXRjaER0b0h0dHBSZXNwb25zZURhdGEpID0+IHtcbiAgICAgICAgY29uc3QgZGlzcGxheU5ld0d1ZXN0SW5UYWJsZSA9IHRoaXMuaXNHdWVzdENyZWF0ZWRGcm9tU2VsZWN0ZWRGYWNpbGl0eShoYW5kbGVkLmRhdGEsIGFjdGlvbi5ndWlkKTtcbiAgICAgICAgdGhpcy5hZGRHdWVzdFRvU3RvcmUoY3R4LCBoYW5kbGVkLmRhdGEsIGRpc3BsYXlOZXdHdWVzdEluVGFibGUpO1xuICAgICAgICB0aGlzLm1lc3NhZ2VCYXJTZXJ2aWNlLnN1Y2Nlc3MoXG4gICAgICAgICAgZGlzcGxheU5ld0d1ZXN0SW5UYWJsZSA/IExvY2FsaXphdGlvbi5lbnRpdHlfc3VjY2VzcyA6IExvY2FsaXphdGlvbi5lbnRpdHlfc3VjY2Vzc19ub3RfY3VycmVudGx5X3Zpc2libGUsXG4gICAgICAgICAgY3JlYXRlTWVzc2FnZVRleHQobWVzc2FnZUJhclBheWxvYWQpXG4gICAgICAgICk7XG4gICAgICB9LFxuICAgICAgZXJyb3I6ICgpID0+IHtcbiAgICAgICAgbWVzc2FnZUJhclBheWxvYWQuZW50aXR5ID0gbG93ZXJDYXNlRmlyc3RMZXR0ZXIoXG4gICAgICAgICAgbWVzc2FnZUJhclBheWxvYWQuZW50aXR5XG4gICAgICAgICk7XG4gICAgICAgIG1lc3NhZ2VCYXJQYXlsb2FkLmFjdGlvbiA9IGxvd2VyQ2FzZUZpcnN0TGV0dGVyKFxuICAgICAgICAgIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoTG9jYWxpemF0aW9uLmNyZWF0ZSlcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5tZXNzYWdlQmFyU2VydmljZS5lcnJvcihcbiAgICAgICAgICBMb2NhbGl6YXRpb24uZW50aXR5X2ZhaWxlZCxcbiAgICAgICAgICBjcmVhdGVNZXNzYWdlVGV4dChtZXNzYWdlQmFyUGF5bG9hZClcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9KSk7XG4gIH1cblxuICBAQWN0aW9uKFVwZGF0ZUJhc2ljR3Vlc3RBY3Rpb24pXG4gIG9uVXBkYXRlQmFzaWNHdWVzdEFjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxHdWVzdFN0YXRlTW9kZWw+LCBhY3Rpb246IFVwZGF0ZUJhc2ljR3Vlc3RBY3Rpb24pOiBPYnNlcnZhYmxlPFZHdWVzdFdpdGhCYXRjaER0b0h0dHBSZXNwb25zZURhdGE+IHtcbiAgICBjb25zdCBtZXNzYWdlQmFyUGF5bG9hZDogTWVzc2FnZUJhclBheWxvYWQgPSB7XG4gICAgICBlbnRpdHk6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoTG9jYWxpemF0aW9uLmd1ZXN0KSxcbiAgICAgIGVudGl0eU5hbWU6IGAke2FjdGlvbi5ndWVzdC5maXJzdE5hbWV9ICR7YWN0aW9uLmd1ZXN0Lmxhc3ROYW1lfWAsXG4gICAgICBhY3Rpb246IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoTG9jYWxpemF0aW9uLnVwZGF0ZWQpLFxuICAgIH07XG4gICAgdGhpcy5tZXNzYWdlQmFyU2VydmljZS5pbmZvKExvY2FsaXphdGlvbi5lbnRpdHlfaW5fcHJvZ3Jlc3MsIGNyZWF0ZU1lc3NhZ2VUZXh0KG1lc3NhZ2VCYXJQYXlsb2FkKSk7XG4gICAgcmV0dXJuIHRoaXMuZ3Vlc3RTZXJ2aWNlUHJveHkudXBkYXRlQmFzaWNHdWVzdChhY3Rpb24uZ3VpZCwgYWN0aW9uLmd1ZXN0KS5waXBlKHRhcCh7XG4gICAgICBuZXh0OiAoaGFuZGxlZDogVkd1ZXN0V2l0aEJhdGNoRHRvSHR0cFJlc3BvbnNlRGF0YSkgPT4gdGhpcy5vblVwZGF0ZUJhc2ljR3Vlc3ROZXh0KGN0eCwgYWN0aW9uLCBoYW5kbGVkLCBtZXNzYWdlQmFyUGF5bG9hZCksXG4gICAgICBlcnJvcjogKCkgPT4gdGhpcy5vblVwZGF0ZUJhc2ljR3Vlc3RFcnJvcihtZXNzYWdlQmFyUGF5bG9hZClcbiAgICB9KSk7XG4gIH1cblxuICBAQWN0aW9uKFVwZGF0ZUJhc2ljR3Vlc3RUZW1wQWN0aW9uKVxuICBvblVwZGF0ZUJhc2ljR3Vlc3RUZW1wQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PEd1ZXN0U3RhdGVNb2RlbD4sIGFjdGlvbjogVXBkYXRlQmFzaWNHdWVzdEFjdGlvbik6IE9ic2VydmFibGU8Vkd1ZXN0V2l0aEJhdGNoRHRvSHR0cFJlc3BvbnNlRGF0YT4ge1xuICAgIGNvbnN0IG1lc3NhZ2VCYXJQYXlsb2FkOiBNZXNzYWdlQmFyUGF5bG9hZCA9IHtcbiAgICAgIGVudGl0eTogdGhpcy50cmFuc2xhdGUuaW5zdGFudChMb2NhbGl6YXRpb24uZ3Vlc3QpLFxuICAgICAgZW50aXR5TmFtZTogYCR7YWN0aW9uLmd1ZXN0LmZpcnN0TmFtZX0gJHthY3Rpb24uZ3Vlc3QubGFzdE5hbWV9YCxcbiAgICAgIGFjdGlvbjogdGhpcy50cmFuc2xhdGUuaW5zdGFudChMb2NhbGl6YXRpb24udXBkYXRlZCksXG4gICAgfTtcbiAgICB0aGlzLm1lc3NhZ2VCYXJTZXJ2aWNlLmluZm8oTG9jYWxpemF0aW9uLmVudGl0eV9pbl9wcm9ncmVzcywgY3JlYXRlTWVzc2FnZVRleHQobWVzc2FnZUJhclBheWxvYWQpKTtcbiAgICByZXR1cm4gdGhpcy5ndWVzdFNlcnZpY2VQcm94eS51cGRhdGVCYXNpY0d1ZXN0VGVtcChhY3Rpb24uZ3VpZCwgYWN0aW9uLmd1ZXN0KS5waXBlKHRhcCh7XG4gICAgICBuZXh0OiAoaGFuZGxlZDogVkd1ZXN0V2l0aEJhdGNoRHRvSHR0cFJlc3BvbnNlRGF0YSkgPT4gdGhpcy5vblVwZGF0ZUJhc2ljR3Vlc3ROZXh0KGN0eCwgYWN0aW9uLCBoYW5kbGVkLCBtZXNzYWdlQmFyUGF5bG9hZCksXG4gICAgICBlcnJvcjogKCkgPT4gdGhpcy5vblVwZGF0ZUJhc2ljR3Vlc3RFcnJvcihtZXNzYWdlQmFyUGF5bG9hZClcbiAgICB9KSk7XG4gIH1cblxuICBAQWN0aW9uKFNlbmRFbWFpbFRvR3Vlc3QpXG4gIG9uU2VuZEVtYWlsVG9HdWVzdEFjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxHdWVzdFN0YXRlTW9kZWw+LCBhY3Rpb246IFNlbmRFbWFpbFRvR3Vlc3QpOiBPYnNlcnZhYmxlPEludDMySHR0cFJlc3BvbnNlRGF0YT4ge1xuICAgIHJldHVybiB0aGlzLmd1ZXN0U2VydmljZVByb3h5LnNlbmRHdWVzdEVtYWlsKGFjdGlvbi5ndWlkLCBhY3Rpb24uc2VuZEVtYWlsQ29tbWFuZCkucGlwZSh0YXAoe1xuICAgICAgbmV4dDogKCkgPT4gdGhpcy5tZXNzYWdlQmFyU2VydmljZS5zdWNjZXNzKExvY2FsaXphdGlvbi5lbWFpbF9zZW50X3N1Y2Nlc3NmdWxseSksXG4gICAgICBlcnJvcjogKCkgPT4gdGhpcy5tZXNzYWdlQmFyU2VydmljZS5lcnJvcihMb2NhbGl6YXRpb24uZW1haWxfc2VuZGluZ19mYWlsZWQpLFxuICAgIH0pKTtcbiAgfVxuXG4gIEBBY3Rpb24oTG9hZEd1ZXN0c0J5QmF0Y2hJZEFjdGlvbiwgeyBjYW5jZWxVbmNvbXBsZXRlZDogdHJ1ZSB9KVxuICBvbkxvYWRHdWVzdHNCeUJhdGNoSWQoY3R4OiBTdGF0ZUNvbnRleHQ8R3Vlc3RTdGF0ZU1vZGVsPiwgYWN0aW9uOiBMb2FkR3Vlc3RzQnlCYXRjaElkQWN0aW9uKTogT2JzZXJ2YWJsZTxWR3Vlc3RXaXRoQmF0Y2hEdG9JRW51bWVyYWJsZUh0dHBSZXNwb25zZURhdGE+IHtcbiAgICBjb25zdCByZXN1bHRzJCA9IHRoaXMuZ3Vlc3RTZXJ2aWNlUHJveHkuZ2V0R3Vlc3RzQnlCYXRjaElEKGFjdGlvbi5wYXJrSWQsIGFjdGlvbi5iYXRjaElELCBhY3Rpb24uZ3VpZCwgYWN0aW9uLmd1ZXN0c0ZpbHRlckR0byk7XG4gICAgcmV0dXJuIHJlc3VsdHMkLnBpcGUodGFwKChndWVzdHM6IFZHdWVzdFdpdGhCYXRjaER0b0lFbnVtZXJhYmxlSHR0cFJlc3BvbnNlRGF0YSkgPT4ge1xuICAgICAgdGhpcy5hZGRHdWVzdHNCeUJhdGNoSWRUb1N0b3JlKGN0eCwgYWN0aW9uLmJhdGNoSUQsIGd1ZXN0cy5kYXRhKTtcbiAgICB9KSk7XG4gIH1cblxuICBAQWN0aW9uKExvYWRHdWVzdHNCeUJhdGNoSWRDYW5jZWxsZWRBY3Rpb24sIHsgY2FuY2VsVW5jb21wbGV0ZWQ6IGZhbHNlIH0pXG4gIG9uTG9hZEd1ZXN0c0J5QmF0Y2hJZENhbmNlbGxlZEFjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxHdWVzdFN0YXRlTW9kZWw+LCBhY3Rpb246IExvYWRHdWVzdHNCeUJhdGNoSWRDYW5jZWxsZWRBY3Rpb24pIHtcbiAgICBjb25zdCBkaXNwbGF5ZWRHdWVzdHNCYXRjaGVzID0gY3R4LmdldFN0YXRlKCkuZGlzcGxheWVkO1xuICAgIGNvbnN0IGd1ZXN0QmF0Y2hJbmRleCA9IGRpc3BsYXllZEd1ZXN0c0JhdGNoZXMuZmluZEluZGV4KGd1ZXN0ID0+IGd1ZXN0IGluc3RhbmNlb2YgVkd1ZXN0V2l0aEJhdGNoRHRvICYmIGd1ZXN0LmJhdGNoSUQgPT09IGFjdGlvbi5iYXRjaElkKTtcblxuICAgIGlmIChndWVzdEJhdGNoSW5kZXggIT09IC0xKSB7XG4gICAgICBjb25zdCBndWVzdEJhdGNoID0gbWFya0VudGl0eUFzVW5jaGFuZ2VkKGRpc3BsYXllZEd1ZXN0c0JhdGNoZXNbZ3Vlc3RCYXRjaEluZGV4XSk7XG5cbiAgICAgIGRpc3BsYXllZEd1ZXN0c0JhdGNoZXNbZ3Vlc3RCYXRjaEluZGV4XSA9IE9iamVjdC5hc3NpZ24obmV3IFZHdWVzdFdpdGhCYXRjaER0bygpLCBndWVzdEJhdGNoKTtcblxuICAgICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgICBkaXNwbGF5ZWQ6IFsuLi5kaXNwbGF5ZWRHdWVzdHNCYXRjaGVzXVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgQEFjdGlvbihFeHBhbmRHdWVzdHNCeUJhdGNoSWRBY3Rpb24pXG4gIG9uRXhwYW5kR3Vlc3RzQnlCYXRjaElkQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PEd1ZXN0U3RhdGVNb2RlbD4sIGFjdGlvbjogRXhwYW5kR3Vlc3RzQnlCYXRjaElkQWN0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5hZGRHdWVzdHNCeUJhdGNoSWRUb1N0b3JlKGN0eCwgYWN0aW9uLmJhdGNoSUQsIGFjdGlvbi5ndWVzdHMpO1xuICB9XG5cbiAgQEFjdGlvbihDb2xsYXBzZWRHdWVzdHNCeUJhdGNoSWRBY3Rpb24pXG4gIG9uQ29sbGFwc2VkR3Vlc3RzQnlCYXRjaElkQWN0aW9uKGN0eDogU3RhdGVDb250ZXh0PEd1ZXN0U3RhdGVNb2RlbD4sIGFjdGlvbjogQ29sbGFwc2VkR3Vlc3RzQnlCYXRjaElkQWN0aW9uKTogdm9pZCB7XG4gICAgbGV0IGRpc3BsYXllZEd1c2V0QmF0Y2hlcyA9IGN0eC5nZXRTdGF0ZSgpLmRpc3BsYXllZDtcbiAgICBjb25zdCBndWVzdEJhdGNoSW5kZXggPSBkaXNwbGF5ZWRHdXNldEJhdGNoZXMuZmluZEluZGV4KGdiID0+IGdiLmJhdGNoSUQgPT09IGFjdGlvbi5iYXRjaElEKTtcbiAgICBpZiAoZ3Vlc3RCYXRjaEluZGV4ICE9PSAtMSkge1xuICAgICAgZGlzcGxheWVkR3VzZXRCYXRjaGVzID0gZGlzcGxheWVkR3VzZXRCYXRjaGVzLmZpbHRlcihlbnRpdHkgPT4gZW50aXR5LmJhdGNoSUQgIT09IGFjdGlvbi5iYXRjaElEIHx8ICFlbnRpdHkuZ3Vlc3RJRCk7XG4gICAgICBjdHgucGF0Y2hTdGF0ZSh7XG4gICAgICAgIGRpc3BsYXllZDogWy4uLmRpc3BsYXllZEd1c2V0QmF0Y2hlc10sXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBAQWN0aW9uKExvYWRHdWVzdFByb2ZpbGVzQWN0aW9uLCB7IGNhbmNlbFVuY29tcGxldGVkOiB0cnVlIH0pXG4gIG9uTG9hZEd1ZXN0UHJvZmlsZXNBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8R3Vlc3RTdGF0ZU1vZGVsPiwgYWN0aW9uOiBMb2FkR3Vlc3RQcm9maWxlc0FjdGlvbikge1xuICAgIGNvbnN0IGd1ZXN0UHJvZmlsZXMkID0gdGhpcy5ndWVzdFNlcnZpY2VQcm94eS5nZXRQcm9maWxlcyhhY3Rpb24ucGFya0lkLCBhY3Rpb24uc2VhcmNoUGFyYW1zRHRvPy5tYXhSZXN1bHRzLFxuICAgICAgYWN0aW9uLnNlYXJjaFBhcmFtc0R0bz8uc2VhcmNoVGVybSwgYWN0aW9uLnNlYXJjaFBhcmFtc0R0bz8ub3JkZXJCeS5jb2x1bW4sXG4gICAgICBhY3Rpb24uc2VhcmNoUGFyYW1zRHRvPy5vcmRlckJ5Lm9yZGVyRGlyZWN0aW9uLCBhY3Rpb24uZ3VpZCk7XG4gICAgcmV0dXJuIGd1ZXN0UHJvZmlsZXMkLnBpcGUodGFwKHByb2ZpbGVzID0+IHtcbiAgICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgICAgcHJvZmlsZXM6IHByb2ZpbGVzLmRhdGEsXG4gICAgICB9KTtcbiAgICB9KSk7XG4gIH1cblxuICBAQWN0aW9uKENsZWFyR3Vlc3RQcm9maWxlc0FjdGlvbilcbiAgb25DbGVhckd1ZXN0UHJvZmlsZXNBY3Rpb24oY3R4OiBTdGF0ZUNvbnRleHQ8R3Vlc3RTdGF0ZU1vZGVsPikge1xuICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgIHByb2ZpbGVzOiBbXSxcbiAgICB9KTtcbiAgfVxuXG4gIEBBY3Rpb24oU2VuZEd1ZXN0UGFzc2VzVG9FbWFpbEFjdGlvbilcbiAgYXN5bmMgb25TZW5kR3Vlc3RQYXNzZXNUb0VtYWlsKGN0eDogU3RhdGVDb250ZXh0PEd1ZXN0U3RhdGVNb2RlbD4sIGFjdGlvbjogU2VuZEd1ZXN0UGFzc2VzVG9FbWFpbEFjdGlvbikge1xuICAgIGNvbnN0IGRhdGE6IGFueSA9IHtcbiAgICAgIG1vZGFsVGl0bGU6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoTG9jYWxpemF0aW9uLnNlbmRfc3RpY2tlcnNfdG9fZW1haWwpLFxuICAgICAgc2VuZEVtYWlsOiBmYWxzZSxcbiAgICAgIHNlbmRFbWFpbFJlcWV1c3Q6IGF3YWl0IHRoaXMucG9wdWxhdGVTZW5kRW1haWxSZXF1ZXN0KGFjdGlvbikgIC8vIG9ubHkgdmVyc2lvbiA+PSA4LjEgc3VwcG9ydCB0aGlzIGZlYXR1cmVcbiAgICB9O1xuICAgIGRhdGEuc2VuZEVtYWlsUmVxZXVzdC50byA9IGFjdGlvbi5lbWFpbDtcbiAgICBjdHguZGlzcGF0Y2gobmV3IFNlbmRFbWFpbEZyb21FbnRpdHlBY3Rpb24oZGF0YS5zZW5kRW1haWxSZXFldXN0KSk7XG4gIH1cblxuICBAQWN0aW9uKEV4cG9ydEd1ZXN0c0FjdGlvbiwgeyBjYW5jZWxVbmNvbXBsZXRlZDogdHJ1ZSB9KVxuICBvbkV4cG9ydEd1ZXN0c0FjdGlvbihjdHg6IFN0YXRlQ29udGV4dDxHdWVzdFN0YXRlTW9kZWw+LCBhY3Rpb246IEV4cG9ydEd1ZXN0c0FjdGlvbik6IE9ic2VydmFibGU8Vkd1ZXN0V2l0aEJhdGNoRHRvRW50aXR5V3JhcHBlckR0b0h0dHBSZXNwb25zZURhdGE+IHtcbiAgICBjb25zdCBnZXRHdWVzdHMkID0gdGhpcy5ndWVzdFNlcnZpY2VQcm94eS5nZXRHdWVzdHMoYWN0aW9uLnBhcmtJZCwgYWN0aW9uLmd1aWQsIGFjdGlvbi5ndWVzdHNGaWx0ZXJEdG8pO1xuICAgIHJldHVybiBnZXRHdWVzdHMkLnBpcGUodGFwKHtcbiAgICAgIG5leHQ6IChndWVzdHNXcmFwcGVyOiBWR3Vlc3RXaXRoQmF0Y2hEdG9FbnRpdHlXcmFwcGVyRHRvSHR0cFJlc3BvbnNlRGF0YSkgPT4ge1xuICAgICAgICBjb25zdCB0YWJsZVJvd3M6IGFueVtdW10gPSBbXTtcbiAgICAgICAgY29uc3QgZ3Vlc3RXaXRoQmF0Y2hEdG9MaXN0OiBWR3Vlc3RXaXRoQmF0Y2hEdG9bXSA9IGd1ZXN0c1dyYXBwZXIuZGF0YS5lbnRpdGllcztcbiAgICAgICAgZ3Vlc3RXaXRoQmF0Y2hEdG9MaXN0LmZvckVhY2goKGd1ZXN0KSA9PiB7XG4gICAgICAgICAgdGFibGVSb3dzLnB1c2goW2d1ZXN0Lm5hbWUsXG4gICAgICAgICAgdGhpcy50cmFuc2xhdGUuaW5zdGFudChQcm9maWxlVHlwZVRleHRbUHJvZmlsZVR5cGVbZ3Vlc3QubVR5cGVdXSksXG4gICAgICAgICAgZ3Vlc3QubW9iaWxlLFxuICAgICAgICAgIGd1ZXN0LmNhclBsYXRlLFxuICAgICAgICAgIHRoaXMuZXhwb3J0RmlsZVNlcnZpY2UuZ2V0RGF0ZUZpZWxkVmFsdWUoYWN0aW9uLmZpbGVUeXBlLCBndWVzdCwgJ3ZhbGlkRnJvbURhdGUnKSxcbiAgICAgICAgICB0aGlzLmV4cG9ydEZpbGVTZXJ2aWNlLmdldERhdGVGaWVsZFZhbHVlKGFjdGlvbi5maWxlVHlwZSwgZ3Vlc3QsICd2YWxpZFRvRGF0ZScpLFxuICAgICAgICAgIGd1ZXN0LmNvbXBhbnlOYW1lLFxuICAgICAgICAgIGd1ZXN0LnN1YkNvbXBhbnlOYW1lLFxuICAgICAgICAgIHRoaXMucGFya2VyU2VydmljZS5nZXRIaXN0b3J5SXRlbUFjdGlvbihndWVzdC5sb2NhdGlvbiwgbnVsbCksXG4gICAgICAgICAgdGhpcy5leHBvcnRGaWxlU2VydmljZS5nZXREYXRlRmllbGRWYWx1ZShhY3Rpb24uZmlsZVR5cGUsIGd1ZXN0LCAncHJvZHVjZWREYXRlJyldKVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5leHBvcnRGaWxlU2VydmljZS5leHBvcnQoYWN0aW9uLmZpbGVUeXBlLCB0YWJsZVJvd3MsIGFjdGlvbi5jb2x1bW5zSGVhZGVyLCBMb2NhbGl6YXRpb24uZ3Vlc3RzKTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICB0aGlzLm1lc3NhZ2VCYXJTZXJ2aWNlLmVycm9yKHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KHRoaXMuTC5mYWlsZWRfZXhwb3J0X2ZpbGUpKTtcbiAgICAgIH1cbiAgICB9KSk7XG4gIH1cblxuICB0b0RhdGVTdHJpbmcgPSAodmFsdWU6IE1vbWVudCkgPT4gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0odmFsdWUudG9EYXRlKCksIHRoaXMudGVuYW50U2VydmljZS5zZWNvbmRhcnlEYXRlVGltZUZvcm1hdCkgfHwgJy0nO1xuXG4gIHByaXZhdGUgYW5hbHl0aWNzVHJhY2tBY3Rpb24oY29uZmlnOiBDb21tYW5kTm90aWZpY2F0aW9uQ29uZmlnLCBhY3Rpb246IFVwZGF0ZUd1ZXN0TG9jYXRpb25BY3Rpb24pIHtcbiAgICBjb25zdCBpc1N1Y2Nlc3MgPSBjb25maWc/LmRpc3BsYXlDYXNlVHlwZSA9PT0gQ29tbWFuZE5vdGlmaWNhdGlvbkRpc3BsYXlDYXNlLlN1Y2Nlc3M7XG4gICAgYWN0aW9uLmFuYWx5dGljc1BheWxvYWQuc3VjY2VzcyA9IGlzU3VjY2VzcztcbiAgICB0aGlzLmFuYWx5dGljc1NlcnZpY2UudHJhY2soY29uZmlnLmNvbW1hbmQsIGFjdGlvbi5hbmFseXRpY3NQYXlsb2FkKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkR3Vlc3RzQnlCYXRjaElkVG9TdG9yZShjdHg6IFN0YXRlQ29udGV4dDxHdWVzdFN0YXRlTW9kZWw+LCBiYXRjaElEOiBudW1iZXIsIGd1ZXN0czogVkd1ZXN0V2l0aEJhdGNoRHRvW10pIHtcbiAgICBjb25zdCBkaXNwbGF5ZWRHdXNldEJhdGNoZXMgPSBjdHguZ2V0U3RhdGUoKS5kaXNwbGF5ZWQ7XG4gICAgY29uc3QgZ3Vlc3RCYXRjaEluZGV4ID0gZGlzcGxheWVkR3VzZXRCYXRjaGVzLmZpbmRJbmRleChnYiA9PiBnYi5iYXRjaElEID09PSBiYXRjaElEKTtcbiAgICBpZiAoZ3Vlc3RCYXRjaEluZGV4ICE9PSAtMSkge1xuICAgICAgZGlzcGxheWVkR3VzZXRCYXRjaGVzW2d1ZXN0QmF0Y2hJbmRleF0uZW50aXRpZXMgPSBndWVzdHM7XG4gICAgICBkaXNwbGF5ZWRHdXNldEJhdGNoZXMuc3BsaWNlKGd1ZXN0QmF0Y2hJbmRleCArIDEsIDAsIC4uLmd1ZXN0cyk7XG5cbiAgICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgICAgZGlzcGxheWVkOiBbLi4uZGlzcGxheWVkR3VzZXRCYXRjaGVzXSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY29udmVydEd1ZXN0c1RvVGFibGVEYXRhKGd1ZXN0czogVkd1ZXN0V2l0aEJhdGNoRHRvW10pOiBWR3Vlc3RXaXRoQmF0Y2hUYWJsZURhdGEge1xuICAgIGNvbnN0IGJhdGNoOiBWR3Vlc3RXaXRoQmF0Y2hUYWJsZURhdGEgPSBndWVzdHMuZmluZChnID0+IGcuYmF0Y2hJRCA+IDAgJiYgZy5ndWVzdElEID09PSBudWxsKSBhcyBhbnk7XG4gICAgYmF0Y2guaXNSb3dFeHBhbmRhYmxlID0gdHJ1ZTtcbiAgICBiYXRjaC5lbnRpdGllcyA9IGd1ZXN0cy5maWx0ZXIoZyA9PiBnLmJhdGNoSUQgIT09IG51bGwgJiYgZy5ndWVzdElEICE9PSBudWxsKTtcbiAgICByZXR1cm4gYmF0Y2g7XG4gIH1cblxuICBwcml2YXRlIGFkZEd1ZXN0VG9TdG9yZShjdHg6IFN0YXRlQ29udGV4dDxHdWVzdFN0YXRlTW9kZWw+LCBndWVzdDogVkd1ZXN0V2l0aEJhdGNoRHRvLCBkaXNwbGF5TmV3R3Vlc3RJblRhYmxlOiBib29sZWFuKSB7XG4gICAgaWYgKGRpc3BsYXlOZXdHdWVzdEluVGFibGUpIHtcbiAgICAgIGNvbnN0IGRpc3BsYXllZEd1ZXN0cyA9IGN0eC5nZXRTdGF0ZSgpLmRpc3BsYXllZDtcbiAgICAgIG1hcmtFbnRpdGllc0FzQ2hhbmdlZChbZ3Vlc3RdLCBSb3dPcGVyYXRpb24uSW5zZXJ0KTtcbiAgICAgIGRpc3BsYXllZEd1ZXN0cy51bnNoaWZ0KGd1ZXN0KTtcbiAgICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgICAgZGlzcGxheWVkOiBbLi4uZGlzcGxheWVkR3Vlc3RzXSxcbiAgICAgICAgY291bnRlcjogY3R4LmdldFN0YXRlKCkuY291bnRlciArIDEsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGlzR3Vlc3RDcmVhdGVkRnJvbVNlbGVjdGVkRmFjaWxpdHkoZ3Vlc3Q6IFZHdWVzdFdpdGhCYXRjaER0bywgZ3VpZDogc3RyaW5nKSB7XG4gICAgY29uc3Qgc2VsZWN0ZWRQYXJrSUQgPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KEZhY2lsaXR5U3RhdGUucGFya0lkKTtcbiAgICBjb25zdCBzZWxlY3RlZEd1aWQgPSB0aGlzLnN0b3JlLnNlbGVjdFNuYXBzaG90KEZhY2lsaXR5U3RhdGUuZ3VpZCk7XG4gICAgcmV0dXJuIHNlbGVjdGVkUGFya0lEID09PSBndWVzdC5wYXJrSUQgJiYgc2VsZWN0ZWRHdWlkID09PSBndWlkO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRQYXJhbnRBbmRDaGlsZEluZGV4KGN0eDogU3RhdGVDb250ZXh0PEd1ZXN0U3RhdGVNb2RlbD4sIGd1ZXN0RHRvOiBWR3Vlc3RXaXRoQmF0Y2hEdG8pOiB7IHBhcmVudDogbnVtYmVyLCBjaGlsZDogbnVtYmVyIH0ge1xuICAgIGNvbnN0IGRpc3BsYXllZEd1ZXN0cyA9IGN0eC5nZXRTdGF0ZSgpLmRpc3BsYXllZDtcbiAgICAvLyBpZiBJIGFtIGNoaWxkcmVuIGZpbmQgbXkgcGFyZW50LCBhZnRlciB0aGF0IGZpbmQgbWVcbiAgICBjb25zdCBwYXJlbnQgPSBkaXNwbGF5ZWRHdWVzdHMuZmluZEluZGV4KGd1ZXN0ID0+IGd1ZXN0LmJhdGNoSUQgPT09IGd1ZXN0RHRvLmJhdGNoSUQgJiYgZ3Vlc3QuZ3Vlc3RJRCA9PT0gbnVsbCk7XG4gICAgY29uc3QgY2hpbGQgPSAoZGlzcGxheWVkR3Vlc3RzW3BhcmVudF0uZW50aXRpZXMgfHwgW10pLmZpbmRJbmRleChndWVzdCA9PiBndWVzdC5ndWVzdElEID09PSBndWVzdER0by5ndWVzdElEKTtcbiAgICByZXR1cm4geyBwYXJlbnQsIGNoaWxkIH07XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUd1ZXN0SW5TdG9yZShjdHg6IFN0YXRlQ29udGV4dDxHdWVzdFN0YXRlTW9kZWw+LCBndWVzdDogVkd1ZXN0V2l0aEJhdGNoRHRvLCBndWlkOiBzdHJpbmcpIHtcbiAgICBjb25zdCBkaXNwbGF5ZWRHdWVzdHMgPSBjdHguZ2V0U3RhdGUoKS5kaXNwbGF5ZWQ7XG4gICAgY29uc3QgZ3Vlc3RJbmRleCA9IHRoaXMuZ2V0R3Vlc3RJbmRleChkaXNwbGF5ZWRHdWVzdHMsIGd1ZXN0Lmd1ZXN0SUQpO1xuXG4gICAgaWYgKGd1ZXN0SW5kZXggIT09IC0xKSB7XG4gICAgICBkaXNwbGF5ZWRHdWVzdHNbZ3Vlc3RJbmRleF0gPSBndWVzdDtcbiAgICAgIG1hcmtFbnRpdGllc0FzQ2hhbmdlZChbZ3Vlc3RdLCBSb3dPcGVyYXRpb24uVXBkYXRlKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pc0d1ZXN0Q2hpbGQoZ3Vlc3QpKSB7XG4gICAgICBjb25zdCB7IGNoaWxkLCBwYXJlbnQgfSA9IHRoaXMuZ2V0UGFyYW50QW5kQ2hpbGRJbmRleChjdHgsIGd1ZXN0KTtcbiAgICAgIGlmIChwYXJlbnQgIT09IC0xKSB7XG4gICAgICAgIGlmIChjaGlsZCAhPT0gLTEpIHtcbiAgICAgICAgICBkaXNwbGF5ZWRHdWVzdHNbcGFyZW50XS5lbnRpdGllc1tjaGlsZF0gPSBndWVzdDtcbiAgICAgICAgfVxuICAgICAgICBtYXJrRW50aXRpZXNBc0NoYW5nZWQoW2Rpc3BsYXllZEd1ZXN0c1twYXJlbnRdXSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY3R4LnBhdGNoU3RhdGUoe1xuICAgICAgZGlzcGxheWVkOiBbLi4uZGlzcGxheWVkR3Vlc3RzXSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZGVsZXRlR3Vlc3RGcm9tU3RvcmUoY3R4OiBTdGF0ZUNvbnRleHQ8R3Vlc3RTdGF0ZU1vZGVsPiwgZ3Vlc3Q6IFZHdWVzdFdpdGhCYXRjaER0bywgZ3VpZDogc3RyaW5nKSB7XG4gICAgbGV0IGNvdW50ZXIgPSBjdHguZ2V0U3RhdGUoKS5jb3VudGVyO1xuXG4gICAgY29uc3QgZGlzcGxheWVkR3Vlc3RzID0gY3R4LmdldFN0YXRlKCkuZGlzcGxheWVkO1xuICAgIGNvbnN0IGd1ZXN0SW5kZXggPSB0aGlzLmdldEd1ZXN0SW5kZXgoZGlzcGxheWVkR3Vlc3RzLCBndWVzdC5ndWVzdElEKTtcblxuICAgIGlmIChndWVzdEluZGV4ICE9PSAtMSkge1xuICAgICAgZGlzcGxheWVkR3Vlc3RzLnNwbGljZShndWVzdEluZGV4LCAxKTtcbiAgICAgIG1hcmtFbnRpdGllc0FzQ2hhbmdlZChbZ3Vlc3RdLCBSb3dPcGVyYXRpb24uRGVsZXRlKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pc0d1ZXN0Q2hpbGQoZ3Vlc3QpKSB7XG4gICAgICBjb25zdCB7IGNoaWxkLCBwYXJlbnQgfSA9IHRoaXMuZ2V0UGFyYW50QW5kQ2hpbGRJbmRleChjdHgsIGd1ZXN0KTtcbiAgICAgIGlmIChwYXJlbnQgIT09IC0xKSB7XG4gICAgICAgIGlmIChjaGlsZCAhPT0gLTEpIHtcbiAgICAgICAgICBkaXNwbGF5ZWRHdWVzdHNbcGFyZW50XS5lbnRpdGllcy5zcGxpY2UoY2hpbGQsIDEpO1xuICAgICAgICB9XG4gICAgICAgIG1hcmtFbnRpdGllc0FzQ2hhbmdlZChbZGlzcGxheWVkR3Vlc3RzW3BhcmVudF1dKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY291bnRlci0tO1xuICAgIH1cblxuICAgIGN0eC5wYXRjaFN0YXRlKHtcbiAgICAgIGRpc3BsYXllZDogWy4uLmRpc3BsYXllZEd1ZXN0c10sXG4gICAgICBjb3VudGVyOiBjb3VudGVyLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBwb3B1bGF0ZVNlbmRFbWFpbFJlcXVlc3QoYWN0aW9uOiBTZW5kR3Vlc3RQYXNzZXNUb0VtYWlsQWN0aW9uKSB7XG4gICAgbGV0IHBkZlBhZ2VzUGFyYW1ldGVyc0xpc3Q6IHsgW2tleTogc3RyaW5nXTogYW55OyB9W10gPSBbXTtcbiAgICBsZXQgZ3Vlc3RFbWFpbFRlbXBsYXRlID0gJyc7XG4gICAgaWYgKGFjdGlvbi5ndWVzdC5lbnRpdGllcyAmJiBhY3Rpb24uZ3Vlc3QuZW50aXRpZXMubGVuZ3RoID4gMCkge1xuICAgICAgcGRmUGFnZXNQYXJhbWV0ZXJzTGlzdCA9IFtdO1xuICAgICAgYWN0aW9uLmd1ZXN0LmVudGl0aWVzLmZvckVhY2goZ3Vlc3QgPT4ge1xuICAgICAgICBjb25zdCBwYXJhbUxpc3QgPSB0aGlzLmdldFBhcmFtZXRlcnMoZ3Vlc3QsIGFjdGlvbi5mYWNpbGl0eSk7XG4gICAgICAgIHBkZlBhZ2VzUGFyYW1ldGVyc0xpc3QucHVzaChwYXJhbUxpc3QpO1xuICAgICAgfSk7XG4gICAgICBndWVzdEVtYWlsVGVtcGxhdGUgPSBhY3Rpb24uZ3Vlc3QuYmF0Y2hOYW1lO1xuXG4gICAgfSBlbHNlIHtcbiAgICAgIHBkZlBhZ2VzUGFyYW1ldGVyc0xpc3QucHVzaCh0aGlzLmdldFBhcmFtZXRlcnMoYWN0aW9uLmd1ZXN0LCBhY3Rpb24uZmFjaWxpdHkpKTtcbiAgICAgIGd1ZXN0RW1haWxUZW1wbGF0ZSA9IGFjdGlvbi5ndWVzdC5uYW1lO1xuICAgIH1cblxuICAgIGNvbnN0IHNlbmRFbWFpbFJlcXVlc3QgPSBuZXcgU2VuZEVtYWlsUmVxdWVzdER0byh7XG4gICAgICBlbnRpdHk6IG5ldyBHdWVzdEVudGl0eVBhcmFtcyh7XG4gICAgICAgIHFyUGxhaW5UZXh0OiBhY3Rpb24uZ3Vlc3QucXJQbGFpblRleHQsXG4gICAgICAgIGlkOiBhY3Rpb24uZ3Vlc3QuZ3Vlc3RJRCB8fCBhY3Rpb24uZ3Vlc3QuYmF0Y2hJRCxcbiAgICAgICAgcXJDb2RlOiBhY3Rpb24uZ3Vlc3QucXJDb2RlLFxuICAgICAgfSksXG4gICAgICB0bzogYWN0aW9uLmVtYWlsLFxuICAgICAgdGVtcGxhdGVUeXBlOiBUZW1wbGF0ZVR5cGUuR3Vlc3QsXG4gICAgICBwZGZQYWdlc1BhcmFtZXRlcnNMaXN0LFxuICAgICAgcGRmUGFnZXNQYXJhbWV0ZXJzOiBudWxsLCAvLyBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSB2ZXJzaW9uIDguMlxuICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICBndWVzdEVtYWlsVGVtcGxhdGUsXG4gICAgICB9LFxuICAgICAgaXNNdWx0aVBhZ2VzRmlsZTogYWN0aW9uLmlzTXVsdGlQYWdlc0ZpbGVcbiAgICB9KTtcbiAgICByZXR1cm4gc2VuZEVtYWlsUmVxdWVzdDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UGFyYW1ldGVycyhndWVzdDogVkd1ZXN0V2l0aEJhdGNoRHRvLCBmYWNpbGl0eTogRmFjaWxpdHlXaXRoR3VpZCk6IHsgW2tleTogc3RyaW5nXTogYW55OyB9IHtcbiAgICBjb25zdCBwYXJhbWV0ZXJzID0ge1xuICAgICAgdmFsaWRGcm9tRGF0ZVRpbWU6IHRoaXMudG9EYXRlU3RyaW5nKGd1ZXN0LnZhbGlkRnJvbURhdGUpLFxuICAgICAgdmFsaWRUb0RhdGVUaW1lOiB0aGlzLnRvRGF0ZVN0cmluZyhndWVzdC52YWxpZFRvRGF0ZSksXG4gICAgICBjb21wYW55TmFtZTogZ3Vlc3QuY29tcGFueU5hbWUsXG4gICAgICBzdWJDb21wYW55TmFtZTogZ3Vlc3Quc3ViQ29tcGFueU5hbWUsXG4gICAgICBwYXJrTmFtZTogZmFjaWxpdHk/LmRhdGE/Lm5hbWUsXG4gICAgICBwcm9kdWNlZERhdGVUaW1lOiB0aGlzLnRvRGF0ZVN0cmluZyhndWVzdC5wcm9kdWNlZERhdGUpLFxuICAgICAgaWQ6IGd1ZXN0Lmd1ZXN0SUQsXG4gICAgICBmaXJzdE5hbWU6IGd1ZXN0LmZpcnN0TmFtZSxcbiAgICAgIGxhc3ROYW1lOiBndWVzdC5sYXN0TmFtZSxcbiAgICAgIHBsYXRlSWQ6IGd1ZXN0LmNhclBsYXRlLFxuICAgICAgbmFtZTogZ3Vlc3QubmFtZSxcbiAgICAgIGNhcmQ6IGd1ZXN0LmNyZWRpdCxcbiAgICAgIGFkZHJlc3M6IGdldEFkZHJlc3MoZ3Vlc3QuY2l0eSwgZ3Vlc3Quc3RyZWV0KSxcbiAgICAgIHFyQ29kZTogZ3Vlc3QucXJDb2RlLFxuICAgICAgZ3VpZDogZmFjaWxpdHkuZ3VpZCxcbiAgICAgIHBhcmtJZDogZmFjaWxpdHkuZGF0YS5pZCxcbiAgICAgIHFyUGxhaW5UZXh0OiBndWVzdC5xclBsYWluVGV4dFxuICAgIH07XG5cbiAgICByZXR1cm4gcGFyYW1ldGVycztcbiAgfVxuXG4gIHByaXZhdGUgaXNHdWVzdENoaWxkID0gKGd1ZXN0OiBWR3Vlc3RXaXRoQmF0Y2hEdG8pID0+IGd1ZXN0Lmd1ZXN0SUQgIT09IG51bGwgJiYgZ3Vlc3QuYmF0Y2hJRCA+IDA7XG5cbiAgcHJpdmF0ZSBnZXRHdWVzdEluZGV4KGRpc3BsYXllZEd1ZXN0czogVkd1ZXN0V2l0aEJhdGNoRHRvW10sIGd1ZXN0SWQ6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIGRpc3BsYXllZEd1ZXN0cy5maW5kSW5kZXgoZ3Vlc3QgPT4gZ3Vlc3QuZ3Vlc3RJRCA9PT0gZ3Vlc3RJZCk7XG4gIH1cblxuICBwcml2YXRlIG9uVXBkYXRlQmFzaWNHdWVzdE5leHQoY3R4OiBTdGF0ZUNvbnRleHQ8R3Vlc3RTdGF0ZU1vZGVsPiwgYWN0aW9uOiBVcGRhdGVCYXNpY0d1ZXN0QWN0aW9uLCBoYW5kbGVkOiBWR3Vlc3RXaXRoQmF0Y2hEdG9IdHRwUmVzcG9uc2VEYXRhLCBtZXNzYWdlQmFyUGF5bG9hZDogTWVzc2FnZUJhclBheWxvYWQpIHtcbiAgICB0aGlzLnVwZGF0ZUd1ZXN0SW5TdG9yZShjdHgsIGhhbmRsZWQuZGF0YSwgYWN0aW9uLmd1aWQpO1xuICAgIHRoaXMubWVzc2FnZUJhclNlcnZpY2Uuc3VjY2VzcyhcbiAgICAgIExvY2FsaXphdGlvbi5lbnRpdHlfc3VjY2VzcyxcbiAgICAgIGNyZWF0ZU1lc3NhZ2VUZXh0KG1lc3NhZ2VCYXJQYXlsb2FkKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIG9uVXBkYXRlQmFzaWNHdWVzdEVycm9yKG1lc3NhZ2VCYXJQYXlsb2FkOiBNZXNzYWdlQmFyUGF5bG9hZCkge1xuICAgIG1lc3NhZ2VCYXJQYXlsb2FkLmVudGl0eSA9IGxvd2VyQ2FzZUZpcnN0TGV0dGVyKFxuICAgICAgbWVzc2FnZUJhclBheWxvYWQuZW50aXR5XG4gICAgKTtcbiAgICBtZXNzYWdlQmFyUGF5bG9hZC5hY3Rpb24gPSBsb3dlckNhc2VGaXJzdExldHRlcihcbiAgICAgIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoTG9jYWxpemF0aW9uLnVwZGF0ZSlcbiAgICApO1xuICAgIHRoaXMubWVzc2FnZUJhclNlcnZpY2UuZXJyb3IoXG4gICAgICBMb2NhbGl6YXRpb24uZW50aXR5X2ZhaWxlZCxcbiAgICAgIGNyZWF0ZU1lc3NhZ2VUZXh0KG1lc3NhZ2VCYXJQYXlsb2FkKVxuICAgICk7XG4gIH1cbn1cbiJdfQ==
|