@sumaris-net/ngx-components 2.5.10 → 2.5.11-rc2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/src/app/core/account/account.page.mjs +6 -3
- package/esm2020/src/app/core/form/properties/properties.table.mjs +1 -28
- package/esm2020/src/app/shared/form/field.model.mjs +1 -1
- package/fesm2015/sumaris-net.ngx-components.mjs +5 -29
- package/fesm2015/sumaris-net.ngx-components.mjs.map +1 -1
- package/fesm2020/sumaris-net.ngx-components.mjs +5 -29
- package/fesm2020/sumaris-net.ngx-components.mjs.map +1 -1
- package/package.json +1 -1
- package/src/app/shared/form/field.model.d.ts +2 -0
|
@@ -75,7 +75,8 @@ export class AccountPage extends AppForm {
|
|
|
75
75
|
ngOnInit() {
|
|
76
76
|
super.ngOnInit();
|
|
77
77
|
// Get user options
|
|
78
|
-
this.optionDefinitions = this.accountService.optionDefs.slice()
|
|
78
|
+
this.optionDefinitions = this.accountService.optionDefs.slice()
|
|
79
|
+
.filter(definition => !definition.minProfile || this.accountService.hasMinProfile(definition.minProfile));
|
|
79
80
|
// Observed some events
|
|
80
81
|
this.registerSubscription(this.accountService.onLogin.pipe(filter(() => !this.saving)).subscribe(account => this.onLogin(account)));
|
|
81
82
|
this.registerSubscription(this.accountService.onLogout.subscribe(() => this.onLogout()));
|
|
@@ -149,7 +150,9 @@ export class AccountPage extends AppForm {
|
|
|
149
150
|
// Set options
|
|
150
151
|
const properties = data?.settings?.asLocalSettings()?.properties || {};
|
|
151
152
|
const propertiesEntities = [];
|
|
152
|
-
this.optionDefinitions
|
|
153
|
+
this.optionDefinitions
|
|
154
|
+
.filter(definition => !definition.minProfile || this.accountService.hasMinProfile(definition.minProfile))
|
|
155
|
+
.map(definition => definition.key).forEach(key => {
|
|
153
156
|
if (isNotNil(properties[key])) {
|
|
154
157
|
propertiesEntities.push(PropertyEntity.fromObject({ id: key, value: properties[key] }));
|
|
155
158
|
}
|
|
@@ -297,4 +300,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
297
300
|
type: ViewChild,
|
|
298
301
|
args: ['propertiesTable', { static: true }]
|
|
299
302
|
}] } });
|
|
300
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3VudC5wYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb3JlL2FjY291bnQvYWNjb3VudC5wYWdlLnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb3JlL2FjY291bnQvYWNjb3VudC5wYWdlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLHVCQUF1QixFQUFxQixTQUFTLEVBQUUsTUFBTSxFQUErQixTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDcEksT0FBTyxFQUFDLGFBQWEsRUFBZSxNQUFNLE1BQU0sQ0FBQztBQUVqRCxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFDeEQsT0FBTyxFQUF1QyxVQUFVLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUVoRixPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFDM0MsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBRWhELE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLDZDQUE2QyxDQUFDO0FBQzlFLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUN2RCxPQUFPLEVBQUMsV0FBVyxFQUE4QixNQUFNLGtDQUFrQyxDQUFDO0FBSTFGLE9BQU8sRUFBQyxNQUFNLEVBQUUsR0FBRyxFQUFXLE1BQU0sZ0JBQWdCLENBQUM7QUFHckQsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sZ0NBQWdDLENBQUM7QUFDbkUsT0FBTyxFQUFxQixjQUFjLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUV2RixPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVFoRCxNQUFNLE9BQU8sV0FBWSxTQUFRLE9BQWdCO0lBaUMvQyxZQUNFLFFBQWtCLEVBQ1gsV0FBK0IsRUFDL0Is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QUFDO2dCQUNTLGVBQWU7c0JBQTVELFNBQVM7dUJBQUMsaUJBQWlCLEVBQUUsRUFBQyxNQUFNLEVBQUUsSUFBSSxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5qZWN0LCBJbmplY3RvciwgT25EZXN0cm95LCBPbkluaXQsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge2NvbWJpbmVMYXRlc3QsIFN1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0FjY291bnRTZXJ2aWNlfSBmcm9tICcuLi9zZXJ2aWNlcy9hY2NvdW50LnNlcnZpY2UnO1xuaW1wb3J0IHtBY2NvdW50fSBmcm9tICcuLi9zZXJ2aWNlcy9tb2RlbC9hY2NvdW50Lm1vZGVsJztcbmltcG9ydCB7VW50eXBlZEZvcm1CdWlsZGVyLCBVbnR5cGVkRm9ybUdyb3VwLCBWYWxpZGF0b3JzfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge0FjY291bnRWYWxpZGF0b3JTZXJ2aWNlfSBmcm9tICcuLi9zZXJ2aWNlcy92YWxpZGF0b3IvYWNjb3VudC52YWxpZGF0b3InO1xuaW1wb3J0IHtBcHBGb3JtfSBmcm9tICcuLi9mb3JtL2Zvcm0uY2xhc3MnO1xuaW1wb3J0IHtBcHBGb3JtVXRpbHN9IGZyb20gJy4uL2Zvcm0vZm9ybS51dGlscyc7XG5pbXBvcnQge0Zvcm1GaWVsZERlZmluaXRpb259IGZyb20gJy4uLy4uL3NoYXJlZC9mb3JtL2ZpZWxkLm1vZGVsJztcbmltcG9ydCB7TEFUX0xPTkdfUEFUVEVSTlN9IGZyb20gJy4uLy4uL3NoYXJlZC9tYXRlcmlhbC9sYXRsb25nL2xhdGxvbmcudXRpbHMnO1xuaW1wb3J0IHtTdGF0dXNJZHN9IGZyb20gJy4uL3NlcnZpY2VzL21vZGVsL21vZGVsLmVudW0nO1xuaW1wb3J0IHtBUFBfTE9DQUxFUywgTG9jYWxlQ29uZmlnLCBMb2NhbFNldHRpbmdzfSBmcm9tICcuLi9zZXJ2aWNlcy9tb2RlbC9zZXR0aW5ncy5tb2RlbCc7XG5pbXBvcnQge1JvdXRlcn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7Q2FuTGVhdmV9IGZyb20gJy4uLy4uL3NoYXJlZC9ndWFyZC9jb21wb25lbnQtZGlydHkuZ3VhcmQnO1xuaW1wb3J0IHtOZXR3b3JrU2VydmljZX0gZnJvbSAnLi4vc2VydmljZXMvbmV0d29yay5zZXJ2aWNlJztcbmltcG9ydCB7ZmlsdGVyLCBtYXAsIG1lcmdlTWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge01hdFRhYkdyb3VwfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJzJztcbmltcG9ydCB7Q29uZmlnU2VydmljZX0gZnJvbSAnLi4vc2VydmljZXMvY29uZmlnLnNlcnZpY2UnO1xuaW1wb3J0IHtDT1JFX0NPTkZJR19PUFRJT05TfSBmcm9tICcuLi9zZXJ2aWNlcy9jb25maWcvY29yZS5jb25maWcnO1xuaW1wb3J0IHtBcHBQcm9wZXJ0aWVzVGFibGUsIFByb3BlcnR5RW50aXR5fSBmcm9tICcuLi9mb3JtL3Byb3BlcnRpZXMvcHJvcGVydGllcy50YWJsZSc7XG5pbXBvcnQge1Byb3BlcnRpZXNNYXB9IGZyb20gJy4uLy4uL3NoYXJlZC90eXBlcyc7XG5pbXBvcnQge2lzTm90TmlsfSBmcm9tICcuLi8uLi9zaGFyZWQvZnVuY3Rpb25zJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWFjY291bnQtcGFnZScsXG4gIHRlbXBsYXRlVXJsOiAnYWNjb3VudC5wYWdlLmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hY2NvdW50LnBhZ2Uuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBBY2NvdW50UGFnZSBleHRlbmRzIEFwcEZvcm08QWNjb3VudD4gaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQ2FuTGVhdmUge1xuICBAVmlld0NoaWxkKCd0YWJHcm91cCcsIHtzdGF0aWM6IHRydWV9KSB0YWJHcm91cDogTWF0VGFiR3JvdXA7XG4gIEBWaWV3Q2hpbGQoJ3Byb3BlcnRpZXNUYWJsZScsIHtzdGF0aWM6IHRydWV9KSBwcm9wZXJ0aWVzVGFibGU6IEFwcFByb3BlcnRpZXNUYWJsZTtcblxuICBzZWxlY3RlZFRhYkluZGV4ID0gMDtcbiAgaXNMb2dpbjogYm9vbGVhbjtcbiAgY2hhbmdlc1N1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBuZXR3b3JrU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIGVtYWlsOiBhbnkgPSB7XG4gICAgY29uZmlybWVkOiBmYWxzZSxcbiAgICBub3RDb25maXJtZWQ6IGZhbHNlLFxuICAgIHNlbmRpbmc6IGZhbHNlLFxuICAgIGVycm9yOiB1bmRlZmluZWRcbiAgfTtcbiAgYWRkaXRpb25hbEZpZWxkczogRm9ybUZpZWxkRGVmaW5pdGlvbltdO1xuICBvcHRpb25EZWZpbml0aW9uczogRm9ybUZpZWxkRGVmaW5pdGlvbltdO1xuXG4gIGdldCBzZXR0aW5nc0Zvcm0oKTogVW50eXBlZEZvcm1Hcm91cCB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybS5nZXQoJ3NldHRpbmdzJykgYXMgVW50eXBlZEZvcm1Hcm91cDtcbiAgfVxuXG4gIC8vIHNldHRpbmdzQ29udGVudEZvcm06IFVudHlwZWRGb3JtR3JvdXA7XG4gIGxvY2FsZXM6IExvY2FsZUNvbmZpZ1tdO1xuICBsYXRMb25nRm9ybWF0cyA9IExBVF9MT05HX1BBVFRFUk5TO1xuICBzYXZpbmcgPSBmYWxzZTtcbiAgc3VibWl0dGVkID0gZmFsc2U7XG4gIGFjY291bnRSZWFkT25seSA9IGZhbHNlO1xuICByZWFkb25seSBtb2JpbGU6IGJvb2xlYW47XG5cbiAgZ2V0IHZhbGlkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBzdXBlci52YWxpZCAmJiAodGhpcy5wcm9wZXJ0aWVzVGFibGU/LnZhbGlkIHx8IHRydWUpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHB1YmxpYyBmb3JtQnVpbGRlcjogVW50eXBlZEZvcm1CdWlsZGVyLFxuICAgIHB1YmxpYyBhY2NvdW50U2VydmljZTogQWNjb3VudFNlcnZpY2UsXG4gICAgcHVibGljIG5ldHdvcms6IE5ldHdvcmtTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCByb3V0ZXI6IFJvdXRlcixcbiAgICBwcm90ZWN0ZWQgdmFsaWRhdG9yU2VydmljZTogQWNjb3VudFZhbGlkYXRvclNlcnZpY2UsXG4gICAgLy8gcHJvdGVjdGVkIHNldHRpbmdzVmFsaWRhdG9yU2VydmljZTogVXNlclNldHRpbmdzVmFsaWRhdG9yU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgY29uZmlnU2VydmljZTogQ29uZmlnU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIEBJbmplY3QoQVBQX0xPQ0FMRVMpIGxvY2FsZXNcbiAgKSB7XG4gICAgc3VwZXIoaW5qZWN0b3IsIHZhbGlkYXRvclNlcnZpY2UuZ2V0Rm9ybUdyb3VwKGFjY291bnRTZXJ2aWNlLmFjY291bnQpKTtcblxuICAgIHRoaXMubG9jYWxlcyA9IGxvY2FsZXM7XG5cbiAgICAvLyBBZGQgc2V0dGluZ3MgZm8gZm9ybVxuICAgIC8vIHRoaXMuc2V0dGluZ3NGb3JtID0gc2V0dGluZ3NWYWxpZGF0b3JTZXJ2aWNlLmdldEZvcm1Hcm91cChhY2NvdW50U2VydmljZS5hY2NvdW50ICYmIGFjY291bnRTZXJ2aWNlLmFjY291bnQuc2V0dGluZ3MpO1xuICAgIC8vIHRoaXMuc2V0dGluZ3NDb250ZW50Rm9ybSA9ICh0aGlzLnNldHRpbmdzRm9ybS5jb250cm9sc1snY29udGVudCddIGFzIFVudHlwZWRGb3JtR3JvdXApO1xuICAgIC8vIHRoaXMuZm9ybS5hZGRDb250cm9sKCdzZXR0aW5ncycsIHRoaXMuc2V0dGluZ3NGb3JtKTtcblxuICAgIHRoaXMubW9iaWxlID0gdGhpcy5zZXR0aW5ncy5tb2JpbGU7XG5cbiAgICAvLyBCeSBkZWZhdWx0LCBkaXNhYmxlIHRoZSBmb3JtXG4gICAgdGhpcy5kaXNhYmxlKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuXG4gICAgLy8gR2V0IHVzZXIgb3B0aW9uc1xuICAgIHRoaXMub3B0aW9uRGVmaW5pdGlvbnMgPSB0aGlzLmFjY291bnRTZXJ2aWNlLm9wdGlvbkRlZnMuc2xpY2UoKTtcblxuICAgIC8vIE9ic2VydmVkIHNvbWUgZXZlbnRzXG4gICAgdGhpcy5yZWdpc3RlclN1YnNjcmlwdGlvbih0aGlzLmFjY291bnRTZXJ2aWNlLm9uTG9naW4ucGlwZShmaWx0ZXIoKCkgPT4gIXRoaXMuc2F2aW5nKSkuc3Vic2NyaWJlKGFjY291bnQgPT4gdGhpcy5vbkxvZ2luKGFjY291bnQpKSk7XG4gICAgdGhpcy5yZWdpc3RlclN1YnNjcmlwdGlvbih0aGlzLmFjY291bnRTZXJ2aWNlLm9uTG9nb3V0LnN1YnNjcmliZSgoKSA9PiB0aGlzLm9uTG9nb3V0KCkpKTtcbiAgICB0aGlzLnJlZ2lzdGVyU3Vic2NyaXB0aW9uKHRoaXMub25DYW5jZWwuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuc2V0VmFsdWUodGhpcy5hY2NvdW50U2VydmljZS5hY2NvdW50KTtcbiAgICAgIHRoaXMubWFya0FzUHJpc3RpbmUoKTtcbiAgICB9KSk7XG5cbiAgICB0aGlzLnJlZ2lzdGVyU3Vic2NyaXB0aW9uKHRoaXMuYWNjb3VudFNlcnZpY2UuJGFkZGl0aW9uYWxGaWVsZHNcbiAgICAgIC5zdWJzY3JpYmUoKGFkZGl0aW9uYWxGaWVsZHMpID0+IHtcbiAgICAgICAgdGhpcy5hZGRpdGlvbmFsRmllbGRzID0gYWRkaXRpb25hbEZpZWxkcy5zbGljZSgpOyAvLyBDb3B5XG4gICAgICAgIGlmICh0aGlzLmFjY291bnRTZXJ2aWNlLmlzTG9naW4oKSkge1xuICAgICAgICAgIHRoaXMub25Mb2dpbih0aGlzLmFjY291bnRTZXJ2aWNlLmFjY291bnQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMubWFya0FzTG9hZGVkKCk7XG4gICAgICAgIH1cbiAgICAgIH0pKTtcblxuICAgIHRoaXMucmVnaXN0ZXJTdWJzY3JpcHRpb24oXG4gICAgICB0aGlzLmNvbmZpZ1NlcnZpY2UuY29uZmlnLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICAgIHRoaXMuYWNjb3VudFJlYWRPbmx5ID0gdmFsdWUuZ2V0UHJvcGVydHlBc0Jvb2xlYW4oQ09SRV9DT05GSUdfT1BUSU9OUy5BQ0NPVU5UX1JFQURPTkxZKTtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIC8vIFJlYWxpZ24gdGFiLCBhZnRlciBhIGRlbGF5IGJlY2F1c2UgdGhlIHRhYiBjYW4gYmUgZGlzYWJsZWQgd2hlbiBjb21wb25lbnQgaXMgY3JlYXRlZFxuICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy50YWJHcm91cC5yZWFsaWduSW5rQmFyKCksIDUwMCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgIHRoaXMuc3RvcExpc3RlbkNoYW5nZXMoKTtcbiAgICB0aGlzLm5ldHdvcmtTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBvbkxvZ2luKGFjY291bnQ6IEFjY291bnQpIHtcbiAgICBjb25zb2xlLmRlYnVnKCdbYWNjb3VudF0gTG9nZ2VkIGFjY291bnQ6ICcsIGFjY291bnQpO1xuICAgIHRoaXMuaXNMb2dpbiA9IHRydWU7XG5cbiAgICB0aGlzLnNldFZhbHVlKGFjY291bnQpO1xuXG4gICAgdGhpcy5lbWFpbC5jb25maXJtZWQgPSBhY2NvdW50ICYmIGFjY291bnQuZW1haWwgJiYgKGFjY291bnQuc3RhdHVzSWQgIT09IFN0YXR1c0lkcy5URU1QT1JBUlkpO1xuICAgIHRoaXMuZW1haWwubm90Q29uZmlybWVkID0gYWNjb3VudCAmJiBhY2NvdW50LmVtYWlsICYmICghYWNjb3VudC5zdGF0dXNJZCB8fCBhY2NvdW50LnN0YXR1c0lkID09PSBTdGF0dXNJZHMuVEVNUE9SQVJZKTtcblxuICAgIHRoaXMubmV0d29ya1N1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLm5ldHdvcmtTdWJzY3JpcHRpb24gPWNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5jb25maWdTZXJ2aWNlLmNvbmZpZyxcbiAgICAgIHRoaXMubmV0d29yay5vbk5ldHdvcmtTdGF0dXNDaGFuZ2VzXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcChjb25uZWN0aW9uVHlwZSA9PiBjb25uZWN0aW9uVHlwZSAhPT0gJ25vbmUnKSxcbiAgICAgICAgKVxuICAgIF0pLnN1YnNjcmliZSgoW2NvbmZpZywgb25saW5lXSkgPT4ge1xuICAgICAgaWYgKG9ubGluZSkge1xuICAgICAgICBjb25zdCBhY2NvdW50UmVhZE9ubHkgPSBjb25maWcuZ2V0UHJvcGVydHlBc0Jvb2xlYW4oQ09SRV9DT05GSUdfT1BUSU9OUy5BQ0NPVU5UX1JFQURPTkxZKTtcbiAgICAgICAgdGhpcy5lbmFibGUoeyBhY2NvdW50UmVhZE9ubHkgfSk7XG4gICAgICAgIHRoaXMubWFya0FzUHJpc3RpbmUoKTtcbiAgICAgICAgdGhpcy5zdGFydExpc3RlbkNoYW5nZXMoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZGlzYWJsZSgpO1xuICAgICAgICB0aGlzLm1hcmtBc1ByaXN0aW5lKCk7XG4gICAgICAgIHRoaXMuc3RvcExpc3RlbkNoYW5nZXMoKTtcbiAgICAgIH1cbiAgICAgIHRoaXMubWFya0FzTG9hZGVkKCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgb25Mb2dvdXQoKSB7XG4gICAgdGhpcy5pc0xvZ2luID0gZmFsc2U7XG4gICAgdGhpcy5lbWFpbC5jb25maXJtZWQgPSBmYWxzZTtcbiAgICB0aGlzLmVtYWlsLm5vdENvbmZpcm1lZCA9IGZhbHNlO1xuICAgIHRoaXMuZW1haWwuc2VuZGluZyA9IGZhbHNlO1xuICAgIHRoaXMuZW1haWwuZXJyb3IgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5mb3JtLnJlc2V0KCk7XG4gICAgdGhpcy5kaXNhYmxlKCk7XG5cbiAgICB0aGlzLm5ldHdvcmtTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG5cbiAgICB0aGlzLnN0b3BMaXN0ZW5DaGFuZ2VzKCk7XG5cbiAgICAvLyBCYWNrIHRvIGhvbWVcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCcvJyk7XG5cbiAgfVxuXG4gIGFzeW5jIHNldFZhbHVlKGRhdGE6IEFjY291bnQsIG9wdHM/OiB7IGVtaXRFdmVudD86IGJvb2xlYW47IG9ubHlTZWxmPzogYm9vbGVhbiB9KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgc3VwZXIuc2V0VmFsdWUoZGF0YSwgb3B0cyk7XG5cbiAgICAvLyBTZXQgb3B0aW9uc1xuICAgIGNvbnN0IHByb3BlcnRpZXMgPSBkYXRhPy5zZXR0aW5ncz8uYXNMb2NhbFNldHRpbmdzKCk/LnByb3BlcnRpZXMgfHwge307XG4gICAgY29uc3QgcHJvcGVydGllc0VudGl0aWVzOiBQcm9wZXJ0eUVudGl0eVtdID0gW107XG4gICAgdGhpcy5vcHRpb25EZWZpbml0aW9ucy5tYXAodmFsdWUgPT4gdmFsdWUua2V5KS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICBpZiAoaXNOb3ROaWwocHJvcGVydGllc1trZXldKSkge1xuICAgICAgICBwcm9wZXJ0aWVzRW50aXRpZXMucHVzaChQcm9wZXJ0eUVudGl0eS5mcm9tT2JqZWN0KHtpZDoga2V5LCB2YWx1ZTogcHJvcGVydGllc1trZXldfSkpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKHRoaXMucHJvcGVydGllc1RhYmxlKSB7XG4gICAgICBhd2FpdCB0aGlzLnByb3BlcnRpZXNUYWJsZS5yZWFkeSgpO1xuICAgICAgdGhpcy5wcm9wZXJ0aWVzVGFibGUudmFsdWUgPSBwcm9wZXJ0aWVzRW50aXRpZXM7XG4gICAgfVxuXG4gIH1cblxuICBhc3luYyByZWZyZXNoKGV2ZW50PzogRXZlbnQpIHtcblxuICAgIHRoaXMuZGlzYWJsZSgpO1xuICAgIHRoaXMubWFya0FzTG9hZGluZygpO1xuXG4gICAgcmV0dXJuIHRoaXMuYWNjb3VudFNlcnZpY2UucmVsb2FkKCk7XG4gIH1cblxuICBzdGFydExpc3RlbkNoYW5nZXMoKSB7XG4gICAgaWYgKHRoaXMuY2hhbmdlc1N1YnNjcmlwdGlvbikgcmV0dXJuOyAvLyBhbHJlYWR5IHN0YXJ0ZWRcbiAgICB0aGlzLmNoYW5nZXNTdWJzY3JpcHRpb24gPSB0aGlzLmFjY291bnRTZXJ2aWNlLmxpc3RlbkNoYW5nZXMoKTtcbiAgfVxuXG4gIHN0b3BMaXN0ZW5DaGFuZ2VzKCkge1xuICAgIGlmICghdGhpcy5jaGFuZ2VzU3Vic2NyaXB0aW9uKSByZXR1cm47XG4gICAgdGhpcy5jaGFuZ2VzU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5jaGFuZ2VzU3Vic2NyaXB0aW9uID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgYXN5bmMgc2VuZENvbmZpcm1hdGlvbkVtYWlsKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgY29uc3QganNvbiA9IHRoaXMuZm9ybS52YWx1ZTtcbiAgICBqc29uLmVtYWlsID0gdGhpcy5mb3JtLmNvbnRyb2xzWydlbWFpbCddLnZhbHVlO1xuICAgIGlmICghanNvbi5lbWFpbCB8fCAhdGhpcy5lbWFpbC5ub3RDb25maXJtZWQpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgdGhpcy5lbWFpbC5zZW5kaW5nID0gdHJ1ZTtcbiAgICBjb25zb2xlLmRlYnVnKCdbYWNjb3VudF0gU2VuZGluZyBjb25maXJtYXRpb24gZW1haWwuLi4nKTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5hY2NvdW50U2VydmljZS5zZW5kQ29uZmlybWF0aW9uRW1haWwoXG4gICAgICAgIGpzb24uZW1haWwsXG4gICAgICAgIGpzb24uc2V0dGluZ3MgJiYganNvbi5zZXR0aW5ncy5sb2NhbGUgfHwgdGhpcy50cmFuc2xhdGUuY3VycmVudExhbmdcbiAgICAgICk7XG4gICAgICBjb25zb2xlLmRlYnVnKCdbYWNjb3VudF0gQ29uZmlybWF0aW9uIGVtYWlsIHNlbnQuJyk7XG4gICAgICB0aGlzLmVtYWlsLnNlbmRpbmcgPSBmYWxzZTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHRoaXMuZW1haWwuc2VuZGluZyA9IGZhbHNlO1xuICAgICAgdGhpcy5lbWFpbC5lcnJvciA9IGVyciAmJiBlcnIubWVzc2FnZSB8fCBlcnI7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgc2F2ZShldmVudCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGlmICh0aGlzLnNhdmluZykgcmV0dXJuIGZhbHNlO1xuXG4gICAgaWYgKCF0aGlzLmZvcm0udmFsaWQpIHtcbiAgICAgIGF3YWl0IEFwcEZvcm1VdGlscy53YWl0V2hpbGVQZW5kaW5nKHRoaXMuZm9ybSk7XG5cbiAgICAgIGlmICh0aGlzLmZvcm0uaW52YWxpZCkge1xuICAgICAgICBBcHBGb3JtVXRpbHMubG9nRm9ybUVycm9ycyh0aGlzLmZvcm0pO1xuICAgICAgICB0aGlzLmZvcm0ubWFya0FsbEFzVG91Y2hlZCgpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5zdWJtaXR0ZWQgPSB0cnVlO1xuICAgIHRoaXMuc2F2aW5nID0gdHJ1ZTtcbiAgICB0aGlzLmVycm9yID0gdW5kZWZpbmVkO1xuXG4gICAgY29uc3QgbmV3QWNjb3VudCA9IEFjY291bnQuZnJvbU9iamVjdCh7XG4gICAgICAuLi4odGhpcy5hY2NvdW50U2VydmljZS5hY2NvdW50LmFzT2JqZWN0KCkpLFxuICAgICAgLi4uKHRoaXMuZm9ybS52YWx1ZSlcbiAgICB9KTtcblxuICAgIGlmICh0aGlzLnByb3BlcnRpZXNUYWJsZSkge1xuICAgICAgLy8gbWVyZ2UgcHJvcGVydGllc1xuICAgICAgYXdhaXQgdGhpcy5wcm9wZXJ0aWVzVGFibGUuc2F2ZSgpO1xuICAgICAgY29uc3QgcHJvcGVydHlFbnRpdGllcyA9IHRoaXMucHJvcGVydGllc1RhYmxlLnZhbHVlIHx8IFtdO1xuICAgICAgY29uc3QgcHJvcGVydGllczogUHJvcGVydGllc01hcCA9IHByb3BlcnR5RW50aXRpZXMucmVkdWNlKChyZXMsIGl0ZW0pID0+IHtcbiAgICAgICAgcmVzW2l0ZW0uaWRdID0gaXRlbS52YWx1ZTtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgIH0sIHt9KTtcbiAgICAgIG5ld0FjY291bnQuc2V0dGluZ3MubWVyZ2UoPExvY2FsU2V0dGluZ3M+e3Byb3BlcnRpZXN9LCBbJ3Byb3BlcnRpZXMnXSk7XG4gICAgfVxuXG4gICAgY29uc29sZS5kZWJ1ZygnW2FjY291bnRdIFNhdmluZyBhY2NvdW50Li4uJywgbmV3QWNjb3VudCk7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuZGlzYWJsZSgpO1xuXG4gICAgICBhd2FpdCB0aGlzLmFjY291bnRTZXJ2aWNlLnNhdmUobmV3QWNjb3VudCk7XG5cbiAgICAgIHRoaXMubWFya0FzUHJpc3RpbmUoKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgdGhpcy5lcnJvciA9IGVyciAmJiBlcnIubWVzc2FnZSB8fCBlcnI7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuc2F2aW5nID0gZmFsc2U7XG4gICAgICB0aGlzLmVuYWJsZSgpO1xuICAgIH1cbiAgfVxuXG4gIGVuYWJsZShvcHRzPzoge1xuICAgIGFjY291bnRSZWFkT25seT86IGJvb2xlYW47XG4gICAgb25seVNlbGY/OiBib29sZWFuO1xuICAgIGVtaXRFdmVudD86IGJvb2xlYW47XG4gIH0pIHtcbiAgICBzdXBlci5lbmFibGUoKTtcblxuICAgIC8vIFNvbWUgZmllbGRzIGFyZSBhbHdheXMgZGlzYWJsZVxuICAgIHRoaXMuZm9ybS5jb250cm9scy5lbWFpbC5kaXNhYmxlKCk7XG4gICAgdGhpcy5mb3JtLmNvbnRyb2xzLm1haW5Qcm9maWxlLmRpc2FibGUoKTtcbiAgICB0aGlzLmZvcm0uY29udHJvbHMucHVia2V5LmRpc2FibGUoKTtcblxuICAgIC8vIERpc2FibGUgYWNjb3VudCBmaWVsZHMgaWYgcmVhZG9ubHkgYnkgY29uZmlndXJhdGlvblxuICAgIGlmIChvcHRzPy5hY2NvdW50UmVhZE9ubHkpIHtcbiAgICAgIHRoaXMuZm9ybS5jb250cm9scy5sYXN0TmFtZS5kaXNhYmxlKCk7XG4gICAgICB0aGlzLmZvcm0uY29udHJvbHMuZmlyc3ROYW1lLmRpc2FibGUoKTtcbiAgICB9XG5cbiAgICAvLyBBbHdheXMgZGlzYWJsZSBzb21lIGFkZGl0aW9uYWwgZmllbGRzXG4gICAgdGhpcy5hZGRpdGlvbmFsRmllbGRzXG4gICAgICAuZm9yRWFjaChmaWVsZCA9PiB7XG4gICAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmZvcm0uY29udHJvbHNbZmllbGQua2V5XTtcbiAgICAgICAgaWYgKCFjb250cm9sKSByZXR1cm47IC8vIFNraXBcblxuICAgICAgICBjb25zdCBkaXNhYmxlZCA9IGZpZWxkLmV4dHJhPy5hY2NvdW50ICYmIGZpZWxkLmV4dHJhLmFjY291bnQuZGlzYWJsZWQgfHwgZmFsc2U7XG4gICAgICAgIGlmIChkaXNhYmxlZCAmJiBjb250cm9sLmVuYWJsZWQpIHtcbiAgICAgICAgICBjb250cm9sLmRpc2FibGUoKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXF1aXJlZCA9IGZpZWxkLmV4dHJhPy5hY2NvdW50ICYmIGZpZWxkLmV4dHJhLmFjY291bnQucmVxdWlyZWQgfHwgZmFsc2U7XG4gICAgICAgIGlmICghZmllbGQucmVxdWlyZWQgJiYgcmVxdWlyZWQpIHtcbiAgICAgICAgICBjb250cm9sLnNldFZhbGlkYXRvcnMoY29udHJvbC52YWxpZGF0b3JcbiAgICAgICAgICAgID8gVmFsaWRhdG9ycy5jb21wb3NlKFtjb250cm9sLnZhbGlkYXRvciwgVmFsaWRhdG9ycy5yZXF1aXJlZF0pXG4gICAgICAgICAgICA6IFZhbGlkYXRvcnMucmVxdWlyZWQpO1xuICAgICAgICB9XG5cbiAgICAgIH0pO1xuICAgIHRoaXMubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBhc3luYyBjYW5jZWwoKSB7XG4gICAgYXdhaXQgc3VwZXIuY2FuY2VsKCk7XG4gIH1cblxuICBhc3luYyBjbG9zZShldmVudD86IEV2ZW50KSB7XG4gICAgaWYgKHRoaXMuc2F2aW5nKSByZXR1cm47XG5cbiAgICAvLyBCYWNrIHRvIGhvbWVcbiAgICByZXR1cm4gdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgnLycsIHtyZXBsYWNlVXJsOiB0cnVlfSk7IC8vIGJhY2sgdG8gaG9tZVxuICB9XG5cbiAgcHJvdGVjdGVkIG1hcmtGb3JDaGVjaygpIHtcbiAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbn1cbiIsIjxhcHAtdG9vbGJhciBbdGl0bGVdPVwiJ0FDQ09VTlQuVElUTEUnfHRyYW5zbGF0ZVwiIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgW2hhc1ZhbGlkYXRlXT1cImRpcnR5ICYmICFzYXZpbmdcIlxuICAgICAgICAgICAgIFtoYXNDbG9zZV09XCIhZGlydHkgJiYgIXNhdmluZ1wiXG4gICAgICAgICAgICAgKG9uVmFsaWRhdGUpPVwic2F2ZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICBbY2FuR29CYWNrXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAob25DbG9zZSk9XCJjbG9zZSgkZXZlbnQpXCI+XG5cbiAgPGlvbi1idXR0b25zIHNsb3Q9XCJlbmRcIj5cbiAgICA8IS0tIGxvYWRlciAtLT5cbiAgICA8aW9uLXNwaW5uZXIgKm5nSWY9XCJsb2FkaW5nIHx8IHNhdmluZzsgZWxzZSBlbmRCdXR0b25zXCI+PC9pb24tc3Bpbm5lcj5cblxuICAgIDxuZy10ZW1wbGF0ZSAjZW5kQnV0dG9ucz5cbiAgICAgIDwhLS0gcmVmcmVzaCBidXR0b24gKGlmIG9ubGluZSkgLS0+XG4gICAgICA8aW9uLWJ1dHRvbiBbbWF0VG9vbHRpcF09XCInQ09NTU9OLkJUTl9SRUZSRVNIJ3x0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJuZXR3b3JrLm9ubGluZVwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVmcmVzaCgkZXZlbnQpXCI+XG4gICAgICAgIDxtYXQtaWNvbiBzbG90PVwiaWNvbi1vbmx5XCI+cmVmcmVzaDwvbWF0LWljb24+XG4gICAgICA8L2lvbi1idXR0b24+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9pb24tYnV0dG9ucz5cbjwvYXBwLXRvb2xiYXI+XG5cbjxpb24tY29udGVudD5cblxuICA8IS0tIGVycm9yIC0tPlxuICA8aW9uLWl0ZW0gKm5nSWY9XCJlcnJvciAmJiBtb2JpbGVcIiBsaW5lcz1cIm5vbmVcIj5cbiAgICA8aW9uLWljb24gY29sb3I9XCJkYW5nZXJcIiBzbG90PVwic3RhcnRcIiBuYW1lPVwiYWxlcnQtY2lyY2xlXCI+PC9pb24taWNvbj5cbiAgICA8aW9uLWxhYmVsIGNvbG9yPVwiZGFuZ2VyXCIgY2xhc3M9XCJlcnJvclwiIFtpbm5lckhUTUxdPVwiZXJyb3J8dHJhbnNsYXRlXCI+PC9pb24tbGFiZWw+XG4gIDwvaW9uLWl0ZW0+XG5cbiAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCIgbm92YWxpZGF0ZSBjbGFzcz1cImZvcm0tY29udGFpbmVyXCI+XG5cbiAgICA8bWF0LXRhYi1ncm91cCAjdGFiR3JvdXAgWyhzZWxlY3RlZEluZGV4KV09XCJzZWxlY3RlZFRhYkluZGV4XCIgZHluYW1pY0hlaWdodD5cblxuICAgICAgPCEtLSBUQUI6IHVzZXIgZGV0YWlscyAtLT5cbiAgICAgIDxtYXQtdGFiIGxhYmVsPVwie3snQUNDT1VOVC5VU0VSX0RFVEFJTFMuVElUTEUnfHRyYW5zbGF0ZX19XCIgY2xhc3M9XCJpb24tcGFkZGluZ1wiPlxuICAgICAgICA8bmctdGVtcGxhdGUgbWF0LXRhYi1sYWJlbD5cbiAgICAgICAgICA8bWF0LWljb24+XG4gICAgICAgICAgICA8aW9uLWljb24gbWF0UHJlZml4IHNsb3Q9XCJzdGFydFwiIG5hbWU9XCJwZXJzb24tY2lyY2xlXCI+PC9pb24taWNvbj5cbiAgICAgICAgICA8L21hdC1pY29uPlxuICAgICAgICAgIDxpb24tbGFiZWw+e3snQUNDT1VOVC5VU0VSX0RFVEFJTFMuVElUTEUnfHRyYW5zbGF0ZX19PC9pb24tbGFiZWw+XG4gICAgICAgICAgPGlvbi1pY29uIHNsb3Q9XCJlbmRcIiBuYW1lPVwiYWxlcnQtY2lyY2xlXCIgY29sb3I9XCJkYW5nZXJcIiAqbmdJZj1cInN1Ym1pdHRlZCAmJiBmb3JtLmludmFsaWRcIj48L2lvbi1pY29uPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpb24tcGFkZGluZ1wiPlxuXG4gICAgICAgICAgPHAgW2lubmVySFRNTF09XCInQUNDT1VOVC5VU0VSX0RFVEFJTFMuREVTQ1JJUFRJT04nfHRyYW5zbGF0ZVwiPjwvcD5cblxuICAgICAgICAgIDwhLS1oMT5JZGVudGl0w6k8L2gxLS0+XG5cbiAgICAgICAgICA8IS0tIEVtYWlsIC0tPlxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbcGxhY2Vob2xkZXJdPVwiJ1VTRVIuRU1BSUwnfHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZW1haWxcIiBhdXRvY29tcGxldGU9XCJzZWN0aW9uLXJlZCBlbWFpbFwiPlxuICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImZvcm0uY29udHJvbHMuZW1haWwuaGFzRXJyb3IoJ3JlcXVpcmVkJykgJiYgZm9ybS5jb250cm9scy5lbWFpbC5kaXJ0eVwiIHRyYW5zbGF0ZT5FUlJPUi5GSUVMRF9SRVFVSVJFRDwvbWF0LWVycm9yPlxuICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImZvcm0uY29udHJvbHMuZW1haWwuaGFzRXJyb3IoJ2VtYWlsJykgJiYgZm9ybS5jb250cm9scy5lbWFpbC5kaXJ0eVwiPlxuICAgICAgICAgICAgICA8c3Bhbj57eydFUlJPUi5GSUVMRF9OT1RfVkFMSURfRU1BSUwnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgICAgICAgIDxpb24tZ3JpZCAqbmdJZj1cImVtYWlsLm5vdENvbmZpcm1lZFwiIGNsYXNzPVwiaW9uLW5vLXBhZGRpbmcgaW9uLXBhZGRpbmctYm90dG9tXCI+XG4gICAgICAgICAgICA8aW9uLXJvdz5cbiAgICAgICAgICAgICAgPGlvbi1jb2wgY29sb3I9XCJkYW5nZXJcIj5cbiAgICAgICAgICAgICAgICA8aW9uLWljb24gc2xvdD1cInN0YXJ0XCIgY29sb3I9XCJkYW5nZXJcIiBuYW1lPVwiYWxlcnQtY2lyY2xlXCIgY29sb3I9XCJkYW5nZXJcIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgICAgIDxpb24tdGV4dCBbaW5uZXJIVE1MXT1cIidBQ0NPVU5ULkVNQUlMX05PVF9DT05GSVJNRURfTEFCRUwnfHRyYW5zbGF0ZVwiPjwvaW9uLXRleHQ+XG4gICAgICAgICAgICAgIDwvaW9uLWNvbD5cbiAgICAgICAgICAgIDwvaW9uLXJvdz5cblxuICAgICAgICAgICAgPGlvbi1yb3cgc3R5bGU9XCJoZWlnaHQ6IDUxcHg7XCI+XG4gICAgICAgICAgICAgIDxpb24tY29sIHN0eWxlPVwidGV4dC1hbGlnbjogcmlnaHQ7XCI+XG4gICAgICAgICAgICAgICAgPGlvbi10ZXh0PlxuICAgICAgICAgICAgICAgICAgPHNtYWxsIFtpbm5lckhUTUxdPVwiJ0FDQ09VTlQuRU1BSUxfTk9UX1JFQ0VJVkVEX1FVRVNUSU9OJ3x0cmFuc2xhdGVcIj48L3NtYWxsPlxuICAgICAgICAgICAgICAgIDwvaW9uLXRleHQ+XG4gICAgICAgICAgICAgIDwvaW9uLWNvbD5cbiAgICAgICAgICAgICAgPGlvbi1jb2wgc2l6ZT1cImF1dG9cIj5cbiAgICAgICAgICAgICAgICA8aW9uLWJ1dHRvbiBmaWxsPVwic29saWRcIiBjb2xvcj1cInNlY29uZGFyeVwiICpuZ0lmPVwiIWVtYWlsLnNlbmRpbmdcIiAoY2xpY2spPVwic2VuZENvbmZpcm1hdGlvbkVtYWlsKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICAgIHt7J0FDQ09VTlQuQlROX1JFU0VORCd8dHJhbnNsYXRlfX1cbiAgICAgICAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgICAgICAgICAgPGlvbi1zcGlubmVyIGNsYXNzPVwiaW9uLW5vLXBhZGRpbmdcIiAqbmdJZj1cImVtYWlsLnNlbmRpbmdcIj48L2lvbi1zcGlubmVyPlxuICAgICAgICAgICAgICA8L2lvbi1jb2w+XG4gICAgICAgICAgICA8L2lvbi1yb3c+XG5cbiAgICAgICAgICAgIDxpb24tcm93ICpuZ0lmPVwiZW1haWwuZXJyb3IgJiYgIWVtYWlsLnNlbmRpbmdcIj5cbiAgICAgICAgICAgICAgPGlvbi1jb2w+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJlbWFpbC5lcnJvciAmJiAhZW1haWwuc2VuZGluZ1wiIFtpbm5lckhUTUxdPVwiZW1haWwuZXJyb3J8dHJhbnNsYXRlXCI+PC9zcGFuPlxuICAgICAgICAgICAgICA8L2lvbi1jb2w+XG4gICAgICAgICAgICA8L2lvbi1yb3c+XG4gICAgICAgICAgPC9pb24tZ3JpZD5cblxuICAgICAgICAgIDwhLS0gTGFzdCBuYW1lIC0tPlxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbYXBwQXV0b2ZvY3VzXT1cInRydWVcIiBbYXV0b2ZvY3VzRGVsYXldPVwiNTAwXCIgW3BsYWNlaG9sZGVyXT1cIidVU0VSLkxBU1RfTkFNRSd8dHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJsYXN0TmFtZVwiXG4gICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwic2VjdGlvbi1ibHVlIGZhbWlseS1uYW1lXCJcbiAgICAgICAgICAgICAgICAgICByZXF1aXJlZD5cbiAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJmb3JtLmNvbnRyb2xzLmxhc3ROYW1lLmhhc0Vycm9yKCdyZXF1aXJlZCcpICYmIGZvcm0uY29udHJvbHMubGFzdE5hbWUuZGlydHlcIlxuICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGU+RVJST1IuRklFTERfUkVRVUlSRURcbiAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImZvcm0uY29udHJvbHMubGFzdE5hbWUuaGFzRXJyb3IoJ21pbmxlbmd0aCcpICYmIGZvcm0uY29udHJvbHMubGFzdE5hbWUuZGlydHlcIj5cbiAgICAgICAgICAgICAgPHNwYW4+e3snRVJST1IuRklFTERfTUlOX0xFTkdUSCcgfCB0cmFuc2xhdGU6IHttaW5MZW5ndGg6IDJ9IH19PC9zcGFuPlxuICAgICAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgICAgICAgIDwhLS0gRmlyc3QgbmFtZSAtLT5cbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgW3BsYWNlaG9sZGVyXT1cIidVU0VSLkZJUlNUX05BTUUnfHRyYW5zbGF0ZVwiIGZvcm1Db250cm9sTmFtZT1cImZpcnN0TmFtZVwiIGF1dG9jb21wbGV0ZT1cInNlY3Rpb24tYmx1ZSBnaXZlbi1uYW1lXCJcbiAgICAgICAgICAgICAgICAgICByZXF1aXJlZD5cbiAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJmb3JtLmNvbnRyb2xzLmZpcnN0TmFtZS5oYXNFcnJvcigncmVxdWlyZWQnKSAmJiBmb3JtLmNvbnRyb2xzLmZpcnN0TmFtZS5kaXJ0eVwiXG4gICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZT5FUlJPUi5GSUVMRF9SRVFVSVJFRFxuICAgICAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiZm9ybS5jb250cm9scy5maXJzdE5hbWUuaGFzRXJyb3IoJ21pbmxlbmd0aCcpICYmIGZvcm0uY29udHJvbHMuZmlyc3ROYW1lLmRpcnR5XCI+XG4gICAgICAgICAgICAgIDxzcGFuPnt7J0VSUk9SLkZJRUxEX01JTl9MRU5HVEgnIHwgdHJhbnNsYXRlOiB7bWluTGVuZ3RoOiAyfSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cblxuICAgICAgICAgIDwhLS0gQWRkaXRpb25hbCBmaWVsZHMgLS0+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZGVmaW5pdGlvbiBvZiBhZGRpdGlvbmFsRmllbGRzXCI+XG4gICAgICAgICAgICA8YXBwLWZvcm0tZmllbGQgW2RlZmluaXRpb25dPVwiZGVmaW5pdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJkZWZpbml0aW9uLmtleVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cImRlZmluaXRpb24uZXh0cmEgJiYgZGVmaW5pdGlvbi5leHRyYS5hY2NvdW50ICYmIGRlZmluaXRpb24uZXh0cmEuYWNjb3VudC5yZXF1aXJlZCB8fCBmYWxzZVwiPlxuICAgICAgICAgICAgPC9hcHAtZm9ybS1maWVsZD5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgIDxoMyB0cmFuc2xhdGU+QUNDT1VOVC5VU0VSX0RFVEFJTFMuVEVDSE5JQ0FMX0RJVklERVI8L2gzPlxuXG4gICAgICAgICAgPCEtLSBwcm9maWxlIC0tPlxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBoaWRkZW4gcmVhZG9ubHk9XCJ0cnVlXCIgW3BsYWNlaG9sZGVyXT1cIidBQ0NPVU5ULlVTRVJfREVUQUlMUy5QUk9GSUxFJ3x0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIm1haW5Qcm9maWxlXCIgcmVxdWlyZWQ+XG4gICAgICAgICAgICA8c3Bhbj57eydVU0VSLlBST0ZJTEVfRU5VTS4nICsgZm9ybS5jb250cm9scy5tYWluUHJvZmlsZS52YWx1ZSB8IHRyYW5zbGF0ZX19PC9zcGFuPlxuICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImZvcm0uY29udHJvbHMuZmlyc3ROYW1lLmhhc0Vycm9yKCdtYWluUHJvZmlsZScpICYmIGZvcm0uY29udHJvbHMubWFpblByb2ZpbGUuZGlydHlcIlxuICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGU+RVJST1IuRklFTERfUkVRVUlSRURcbiAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICAgICAgICA8IS0tIHB1YmtleSAtLT5cbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgcmVhZG9ubHk9XCJ0cnVlXCIgW3BsYWNlaG9sZGVyXT1cIidBQ0NPVU5ULlVTRVJfREVUQUlMUy5QVUJLRVknfHRyYW5zbGF0ZVwiIGZvcm1Db250cm9sTmFtZT1cInB1YmtleVwiXG4gICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ+XG4gICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiZm9ybS5jb250cm9scy5maXJzdE5hbWUuaGFzRXJyb3IoJ3B1YmtleScpICYmIGZvcm0uY29udHJvbHMuZmlyc3ROYW1lLmRpcnR5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlPkVSUk9SLkZJRUxEX1JFUVVJUkVEXG4gICAgICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJmb3JtLmNvbnRyb2xzLmZpcnN0TmFtZS5oYXNFcnJvcigncHVia2V5JykgJiYgZm9ybS5jb250cm9scy5maXJzdE5hbWUuZGlydHlcIj5cbiAgICAgICAgICAgICAgPHNwYW4gdHJhbnNsYXRlPkVSUk9SLkZJRUxEX05PVF9WQUxJRF9QVUJLRVk8L3NwYW4+XG4gICAgICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9tYXQtdGFiPlxuXG4gICAgICA8IS0tIFRBQjogc2V0dGluZ3MgLS0+XG4gICAgICA8bWF0LXRhYiBsYWJlbD1cInt7J0FDQ09VTlQuU0VUVElOR1MuVElUTEUnfHRyYW5zbGF0ZX19XCIgZm9ybUdyb3VwTmFtZT1cInNldHRpbmdzXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBtYXQtdGFiLWxhYmVsPlxuICAgICAgICAgIDxtYXQtaWNvbj5cbiAgICAgICAgICAgIDxpb24taWNvbiBtYXRQcmVmaXggc2xvdD1cInN0YXJ0XCIgbmFtZT1cInNldHRpbmdzXCI+PC9pb24taWNvbj5cbiAgICAgICAgICA8L21hdC1pY29uPlxuICAgICAgICAgIDxpb24tbGFiZWwgdHJhbnNsYXRlPkFDQ09VTlQuU0VUVElOR1MuVElUTEU8L2lvbi1sYWJlbD5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW9uLXBhZGRpbmdcIj5cblxuICAgICAgICAgIDxwIFtpbm5lckhUTUxdPVwiJ0FDQ09VTlQuU0VUVElOR1MuREVTQ1JJUFRJT04nfHRyYW5zbGF0ZVwiPjwvcD5cblxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgIDxtYXQtc2VsZWN0IFtwbGFjZWhvbGRlcl09XCInQUNDT1VOVC5TRVRUSU5HUy5MT0NBTEUnfHRyYW5zbGF0ZVwiIGZvcm1Db250cm9sTmFtZT1cImxvY2FsZVwiIHJlcXVpcmVkPlxuICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBsb2NhbGVzXCIgW3ZhbHVlXT1cIml0ZW0ua2V5XCI+XG4gICAgICAgICAgICAgICAge3tpdGVtLnZhbHVlfX1cbiAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cInNldHRpbmdzRm9ybT8uY29udHJvbHMubG9jYWxlLmhhc0Vycm9yKCdyZXF1aXJlZCcpICYmIHNldHRpbmdzRm9ybT8uY29udHJvbHMubG9jYWxlLmRpcnR5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlPkVSUk9SLkZJRUxEX1JFUVVJUkVEXG4gICAgICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgICAgICAgPCEtLSBsYXQvbG9uZyBmb3JtYXQtLT5cbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICA8bWF0LXNlbGVjdCBbcGxhY2Vob2xkZXJdPVwiJ0FDQ09VTlQuU0VUVElOR1MuTEFUX0xPTkdfRk9STUFUJ3x0cmFuc2xhdGVcIiBmb3JtQ29udHJvbE5hbWU9XCJsYXRMb25nRm9ybWF0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkPlxuICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBsYXRMb25nRm9ybWF0c1wiIFt2YWx1ZV09XCJpdGVtXCI+XG4gICAgICAgICAgICAgICAge3snQ09NTU9OLkxBVF9MT05HLicgKyBpdGVtICsgJ19QTEFDRUhPTERFUid8dHJhbnNsYXRlfX1cbiAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cInNldHRpbmdzRm9ybT8uY29udHJvbHMubGF0TG9uZ0Zvcm1hdC5oYXNFcnJvcigncmVxdWlyZWQnKSAmJiBzZXR0aW5nc0Zvcm0/LmNvbnRyb2xzLmxhdExvbmdGb3JtYXQuZGlydHlcIlxuICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGU+RVJST1IuRklFTERfUkVRVUlSRURcbiAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPCEtLSBPcHRpb25zIHRhYmxlIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwib3B0aW9ucy10YWJsZVwiIFtjbGFzcy5jZGstdmlzdWFsbHktaGlkZGVuXT1cIm9wdGlvbkRlZmluaXRpb25zIHwgaXNFbXB0eUFycmF5XCI+XG4gICAgICAgICAgPGFwcC1wcm9wZXJ0aWVzLXRhYmxlXG4gICAgICAgICAgICAjcHJvcGVydGllc1RhYmxlXG4gICAgICAgICAgICBpMThuQ29sdW1uUHJlZml4PVwiQUNDT1VOVC5TRVRUSU5HUy5PUFRJT05TLlwiXG4gICAgICAgICAgICBbZGVmaW5pdGlvbnNdPVwib3B0aW9uRGVmaW5pdGlvbnNcIlxuICAgICAgICAgICAgW2NhbkVkaXRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAob25EaXJ0eSk9XCIkZXZlbnQgPyBtYXJrQXNEaXJ0eSgpIDogdW5kZWZpbmVkXCJcbiAgICAgICAgICA+PC9hcHAtcHJvcGVydGllcy10YWJsZT5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgIDwvbWF0LXRhYj5cbiAgICA8L21hdC10YWItZ3JvdXA+XG5cblxuICA8L2Zvcm0+XG48L2lvbi1jb250ZW50PlxuXG48aW9uLWZvb3RlciBoaWRkZW4teHMgaGlkZGVuLXNtIGhpZGRlbi1tb2JpbGU+XG4gIDxhcHAtZm9ybS1idXR0b25zLWJhciAob25DYW5jZWwpPVwiY2FuY2VsKClcIiAob25TYXZlKT1cInNhdmUoJGV2ZW50KVwiIFtkaXNhYmxlZF09XCIhZm9ybS5kaXJ0eSB8fCAhdmFsaWQgfHwgc2F2aW5nXCI+XG4gICAgPCEtLSBlcnJvciAtLT5cbiAgICA8aW9uLWl0ZW0gKm5nSWY9XCJlcnJvciAmJiAhbW9iaWxlXCIgbGluZXM9XCJub25lXCI+XG4gICAgICA8aW9uLWljb24gY29sb3I9XCJkYW5nZXJcIiBzbG90PVwic3RhcnRcIiBuYW1lPVwiYWxlcnQtY2lyY2xlXCI+PC9pb24taWNvbj5cbiAgICAgIDxpb24tbGFiZWwgY29sb3I9XCJkYW5nZXJcIiBjbGFzcz1cImVycm9yXCIgW2lubmVySFRNTF09XCJlcnJvcnx0cmFuc2xhdGVcIj48L2lvbi1sYWJlbD5cbiAgICA8L2lvbi1pdGVtPlxuICA8L2FwcC1mb3JtLWJ1dHRvbnMtYmFyPlxuPC9pb24tZm9vdGVyPlxuIl19
|
|
303
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3VudC5wYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb3JlL2FjY291bnQvYWNjb3VudC5wYWdlLnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb3JlL2FjY291bnQvYWNjb3VudC5wYWdlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLHVCQUF1QixFQUFxQixTQUFTLEVBQUUsTUFBTSxFQUErQixTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDcEksT0FBTyxFQUFDLGFBQWEsRUFBZSxNQUFNLE1BQU0sQ0FBQztBQUVqRCxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFDeEQsT0FBTyxFQUF1QyxVQUFVLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUVoRixPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFDM0MsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBRWhELE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLDZDQUE2QyxDQUFDO0FBQzlFLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUN2RCxPQUFPLEVBQUMsV0FBVyxFQUE4QixNQUFNLGtDQUFrQyxDQUFDO0FBSTFGLE9BQU8sRUFBQyxNQUFNLEVBQUUsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFHM0MsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sZ0NBQWdDLENBQUM7QUFDbkUsT0FBTyxFQUFxQixjQUFjLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUV2RixPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVFoRCxNQUFNLE9BQU8sV0FBWSxTQUFRLE9BQWdCO0lBaUMvQyxZQUNFLFFBQWtCLEVBQ1gsV0FBK0IsRUFDL0Is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RSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3pCLENBQUM7O3lHQTlUVSxXQUFXLG1RQTJDWixXQUFXOzZGQTNDVixXQUFXLHNUQzdCeEIsNmxUQXlOQTs0RkQ1TGEsV0FBVztrQkFOdkIsU0FBUzsrQkFDRSxrQkFBa0IsbUJBR1gsdUJBQXVCLENBQUMsTUFBTTs7MEJBNkM1QyxNQUFNOzJCQUFDLFdBQVc7NENBMUNrQixRQUFRO3NCQUE5QyxTQUFTO3VCQUFDLFVBQVUsRUFBRSxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUM7Z0JBQ1MsZUFBZTtzQkFBNUQsU0FBUzt1QkFBQyxpQkFBaUIsRUFBRSxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBJbmplY3QsIEluamVjdG9yLCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Y29tYmluZUxhdGVzdCwgU3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcbmltcG9ydCB7QWNjb3VudFNlcnZpY2V9IGZyb20gJy4uL3NlcnZpY2VzL2FjY291bnQuc2VydmljZSc7XG5pbXBvcnQge0FjY291bnR9IGZyb20gJy4uL3NlcnZpY2VzL21vZGVsL2FjY291bnQubW9kZWwnO1xuaW1wb3J0IHtVbnR5cGVkRm9ybUJ1aWxkZXIsIFVudHlwZWRGb3JtR3JvdXAsIFZhbGlkYXRvcnN9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7QWNjb3VudFZhbGlkYXRvclNlcnZpY2V9IGZyb20gJy4uL3NlcnZpY2VzL3ZhbGlkYXRvci9hY2NvdW50LnZhbGlkYXRvcic7XG5pbXBvcnQge0FwcEZvcm19IGZyb20gJy4uL2Zvcm0vZm9ybS5jbGFzcyc7XG5pbXBvcnQge0FwcEZvcm1VdGlsc30gZnJvbSAnLi4vZm9ybS9mb3JtLnV0aWxzJztcbmltcG9ydCB7Rm9ybUZpZWxkRGVmaW5pdGlvbn0gZnJvbSAnLi4vLi4vc2hhcmVkL2Zvcm0vZmllbGQubW9kZWwnO1xuaW1wb3J0IHtMQVRfTE9OR19QQVRURVJOU30gZnJvbSAnLi4vLi4vc2hhcmVkL21hdGVyaWFsL2xhdGxvbmcvbGF0bG9uZy51dGlscyc7XG5pbXBvcnQge1N0YXR1c0lkc30gZnJvbSAnLi4vc2VydmljZXMvbW9kZWwvbW9kZWwuZW51bSc7XG5pbXBvcnQge0FQUF9MT0NBTEVTLCBMb2NhbGVDb25maWcsIExvY2FsU2V0dGluZ3N9IGZyb20gJy4uL3NlcnZpY2VzL21vZGVsL3NldHRpbmdzLm1vZGVsJztcbmltcG9ydCB7Um91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtDYW5MZWF2ZX0gZnJvbSAnLi4vLi4vc2hhcmVkL2d1YXJkL2NvbXBvbmVudC1kaXJ0eS5ndWFyZCc7XG5pbXBvcnQge05ldHdvcmtTZXJ2aWNlfSBmcm9tICcuLi9zZXJ2aWNlcy9uZXR3b3JrLnNlcnZpY2UnO1xuaW1wb3J0IHtmaWx0ZXIsIG1hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtNYXRUYWJHcm91cH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFicyc7XG5pbXBvcnQge0NvbmZpZ1NlcnZpY2V9IGZyb20gJy4uL3NlcnZpY2VzL2NvbmZpZy5zZXJ2aWNlJztcbmltcG9ydCB7Q09SRV9DT05GSUdfT1BUSU9OU30gZnJvbSAnLi4vc2VydmljZXMvY29uZmlnL2NvcmUuY29uZmlnJztcbmltcG9ydCB7QXBwUHJvcGVydGllc1RhYmxlLCBQcm9wZXJ0eUVudGl0eX0gZnJvbSAnLi4vZm9ybS9wcm9wZXJ0aWVzL3Byb3BlcnRpZXMudGFibGUnO1xuaW1wb3J0IHtQcm9wZXJ0aWVzTWFwfSBmcm9tICcuLi8uLi9zaGFyZWQvdHlwZXMnO1xuaW1wb3J0IHtpc05vdE5pbH0gZnJvbSAnLi4vLi4vc2hhcmVkL2Z1bmN0aW9ucyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1hY2NvdW50LXBhZ2UnLFxuICB0ZW1wbGF0ZVVybDogJ2FjY291bnQucGFnZS5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYWNjb3VudC5wYWdlLnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgQWNjb3VudFBhZ2UgZXh0ZW5kcyBBcHBGb3JtPEFjY291bnQ+IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIENhbkxlYXZlIHtcbiAgQFZpZXdDaGlsZCgndGFiR3JvdXAnLCB7c3RhdGljOiB0cnVlfSkgdGFiR3JvdXA6IE1hdFRhYkdyb3VwO1xuICBAVmlld0NoaWxkKCdwcm9wZXJ0aWVzVGFibGUnLCB7c3RhdGljOiB0cnVlfSkgcHJvcGVydGllc1RhYmxlOiBBcHBQcm9wZXJ0aWVzVGFibGU7XG5cbiAgc2VsZWN0ZWRUYWJJbmRleCA9IDA7XG4gIGlzTG9naW46IGJvb2xlYW47XG4gIGNoYW5nZXNTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgbmV0d29ya1N1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBlbWFpbDogYW55ID0ge1xuICAgIGNvbmZpcm1lZDogZmFsc2UsXG4gICAgbm90Q29uZmlybWVkOiBmYWxzZSxcbiAgICBzZW5kaW5nOiBmYWxzZSxcbiAgICBlcnJvcjogdW5kZWZpbmVkXG4gIH07XG4gIGFkZGl0aW9uYWxGaWVsZHM6IEZvcm1GaWVsZERlZmluaXRpb25bXTtcbiAgb3B0aW9uRGVmaW5pdGlvbnM6IEZvcm1GaWVsZERlZmluaXRpb25bXTtcblxuICBnZXQgc2V0dGluZ3NGb3JtKCk6IFVudHlwZWRGb3JtR3JvdXAge1xuICAgIHJldHVybiB0aGlzLmZvcm0uZ2V0KCdzZXR0aW5ncycpIGFzIFVudHlwZWRGb3JtR3JvdXA7XG4gIH1cblxuICAvLyBzZXR0aW5nc0NvbnRlbnRGb3JtOiBVbnR5cGVkRm9ybUdyb3VwO1xuICBsb2NhbGVzOiBMb2NhbGVDb25maWdbXTtcbiAgbGF0TG9uZ0Zvcm1hdHMgPSBMQVRfTE9OR19QQVRURVJOUztcbiAgc2F2aW5nID0gZmFsc2U7XG4gIHN1Ym1pdHRlZCA9IGZhbHNlO1xuICBhY2NvdW50UmVhZE9ubHkgPSBmYWxzZTtcbiAgcmVhZG9ubHkgbW9iaWxlOiBib29sZWFuO1xuXG4gIGdldCB2YWxpZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gc3VwZXIudmFsaWQgJiYgKHRoaXMucHJvcGVydGllc1RhYmxlPy52YWxpZCB8fCB0cnVlKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwdWJsaWMgZm9ybUJ1aWxkZXI6IFVudHlwZWRGb3JtQnVpbGRlcixcbiAgICBwdWJsaWMgYWNjb3VudFNlcnZpY2U6IEFjY291bnRTZXJ2aWNlLFxuICAgIHB1YmxpYyBuZXR3b3JrOiBOZXR3b3JrU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJvdGVjdGVkIHZhbGlkYXRvclNlcnZpY2U6IEFjY291bnRWYWxpZGF0b3JTZXJ2aWNlLFxuICAgIC8vIHByb3RlY3RlZCBzZXR0aW5nc1ZhbGlkYXRvclNlcnZpY2U6IFVzZXJTZXR0aW5nc1ZhbGlkYXRvclNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGNvbmZpZ1NlcnZpY2U6IENvbmZpZ1NlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBASW5qZWN0KEFQUF9MT0NBTEVTKSBsb2NhbGVzXG4gICkge1xuICAgIHN1cGVyKGluamVjdG9yLCB2YWxpZGF0b3JTZXJ2aWNlLmdldEZvcm1Hcm91cChhY2NvdW50U2VydmljZS5hY2NvdW50KSk7XG5cbiAgICB0aGlzLmxvY2FsZXMgPSBsb2NhbGVzO1xuXG4gICAgLy8gQWRkIHNldHRpbmdzIGZvIGZvcm1cbiAgICAvLyB0aGlzLnNldHRpbmdzRm9ybSA9IHNldHRpbmdzVmFsaWRhdG9yU2VydmljZS5nZXRGb3JtR3JvdXAoYWNjb3VudFNlcnZpY2UuYWNjb3VudCAmJiBhY2NvdW50U2VydmljZS5hY2NvdW50LnNldHRpbmdzKTtcbiAgICAvLyB0aGlzLnNldHRpbmdzQ29udGVudEZvcm0gPSAodGhpcy5zZXR0aW5nc0Zvcm0uY29udHJvbHNbJ2NvbnRlbnQnXSBhcyBVbnR5cGVkRm9ybUdyb3VwKTtcbiAgICAvLyB0aGlzLmZvcm0uYWRkQ29udHJvbCgnc2V0dGluZ3MnLCB0aGlzLnNldHRpbmdzRm9ybSk7XG5cbiAgICB0aGlzLm1vYmlsZSA9IHRoaXMuc2V0dGluZ3MubW9iaWxlO1xuXG4gICAgLy8gQnkgZGVmYXVsdCwgZGlzYWJsZSB0aGUgZm9ybVxuICAgIHRoaXMuZGlzYWJsZSgpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgc3VwZXIubmdPbkluaXQoKTtcblxuICAgIC8vIEdldCB1c2VyIG9wdGlvbnNcbiAgICB0aGlzLm9wdGlvbkRlZmluaXRpb25zID0gdGhpcy5hY2NvdW50U2VydmljZS5vcHRpb25EZWZzLnNsaWNlKClcbiAgICAgIC5maWx0ZXIoZGVmaW5pdGlvbiA9PiAhZGVmaW5pdGlvbi5taW5Qcm9maWxlIHx8IHRoaXMuYWNjb3VudFNlcnZpY2UuaGFzTWluUHJvZmlsZShkZWZpbml0aW9uLm1pblByb2ZpbGUpKTtcblxuICAgIC8vIE9ic2VydmVkIHNvbWUgZXZlbnRzXG4gICAgdGhpcy5yZWdpc3RlclN1YnNjcmlwdGlvbih0aGlzLmFjY291bnRTZXJ2aWNlLm9uTG9naW4ucGlwZShmaWx0ZXIoKCkgPT4gIXRoaXMuc2F2aW5nKSkuc3Vic2NyaWJlKGFjY291bnQgPT4gdGhpcy5vbkxvZ2luKGFjY291bnQpKSk7XG4gICAgdGhpcy5yZWdpc3RlclN1YnNjcmlwdGlvbih0aGlzLmFjY291bnRTZXJ2aWNlLm9uTG9nb3V0LnN1YnNjcmliZSgoKSA9PiB0aGlzLm9uTG9nb3V0KCkpKTtcbiAgICB0aGlzLnJlZ2lzdGVyU3Vic2NyaXB0aW9uKHRoaXMub25DYW5jZWwuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuc2V0VmFsdWUodGhpcy5hY2NvdW50U2VydmljZS5hY2NvdW50KTtcbiAgICAgIHRoaXMubWFya0FzUHJpc3RpbmUoKTtcbiAgICB9KSk7XG5cbiAgICB0aGlzLnJlZ2lzdGVyU3Vic2NyaXB0aW9uKHRoaXMuYWNjb3VudFNlcnZpY2UuJGFkZGl0aW9uYWxGaWVsZHNcbiAgICAgIC5zdWJzY3JpYmUoKGFkZGl0aW9uYWxGaWVsZHMpID0+IHtcbiAgICAgICAgdGhpcy5hZGRpdGlvbmFsRmllbGRzID0gYWRkaXRpb25hbEZpZWxkcy5zbGljZSgpOyAvLyBDb3B5XG4gICAgICAgIGlmICh0aGlzLmFjY291bnRTZXJ2aWNlLmlzTG9naW4oKSkge1xuICAgICAgICAgIHRoaXMub25Mb2dpbih0aGlzLmFjY291bnRTZXJ2aWNlLmFjY291bnQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMubWFya0FzTG9hZGVkKCk7XG4gICAgICAgIH1cbiAgICAgIH0pKTtcblxuICAgIHRoaXMucmVnaXN0ZXJTdWJzY3JpcHRpb24oXG4gICAgICB0aGlzLmNvbmZpZ1NlcnZpY2UuY29uZmlnLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICAgIHRoaXMuYWNjb3VudFJlYWRPbmx5ID0gdmFsdWUuZ2V0UHJvcGVydHlBc0Jvb2xlYW4oQ09SRV9DT05GSUdfT1BUSU9OUy5BQ0NPVU5UX1JFQURPTkxZKTtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIC8vIFJlYWxpZ24gdGFiLCBhZnRlciBhIGRlbGF5IGJlY2F1c2UgdGhlIHRhYiBjYW4gYmUgZGlzYWJsZWQgd2hlbiBjb21wb25lbnQgaXMgY3JlYXRlZFxuICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy50YWJHcm91cC5yZWFsaWduSW5rQmFyKCksIDUwMCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgIHRoaXMuc3RvcExpc3RlbkNoYW5nZXMoKTtcbiAgICB0aGlzLm5ldHdvcmtTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBvbkxvZ2luKGFjY291bnQ6IEFjY291bnQpIHtcbiAgICBjb25zb2xlLmRlYnVnKCdbYWNjb3VudF0gTG9nZ2VkIGFjY291bnQ6ICcsIGFjY291bnQpO1xuICAgIHRoaXMuaXNMb2dpbiA9IHRydWU7XG5cbiAgICB0aGlzLnNldFZhbHVlKGFjY291bnQpO1xuXG4gICAgdGhpcy5lbWFpbC5jb25maXJtZWQgPSBhY2NvdW50ICYmIGFjY291bnQuZW1haWwgJiYgKGFjY291bnQuc3RhdHVzSWQgIT09IFN0YXR1c0lkcy5URU1QT1JBUlkpO1xuICAgIHRoaXMuZW1haWwubm90Q29uZmlybWVkID0gYWNjb3VudCAmJiBhY2NvdW50LmVtYWlsICYmICghYWNjb3VudC5zdGF0dXNJZCB8fCBhY2NvdW50LnN0YXR1c0lkID09PSBTdGF0dXNJZHMuVEVNUE9SQVJZKTtcblxuICAgIHRoaXMubmV0d29ya1N1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLm5ldHdvcmtTdWJzY3JpcHRpb24gPWNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5jb25maWdTZXJ2aWNlLmNvbmZpZyxcbiAgICAgIHRoaXMubmV0d29yay5vbk5ldHdvcmtTdGF0dXNDaGFuZ2VzXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcChjb25uZWN0aW9uVHlwZSA9PiBjb25uZWN0aW9uVHlwZSAhPT0gJ25vbmUnKSxcbiAgICAgICAgKVxuICAgIF0pLnN1YnNjcmliZSgoW2NvbmZpZywgb25saW5lXSkgPT4ge1xuICAgICAgaWYgKG9ubGluZSkge1xuICAgICAgICBjb25zdCBhY2NvdW50UmVhZE9ubHkgPSBjb25maWcuZ2V0UHJvcGVydHlBc0Jvb2xlYW4oQ09SRV9DT05GSUdfT1BUSU9OUy5BQ0NPVU5UX1JFQURPTkxZKTtcbiAgICAgICAgdGhpcy5lbmFibGUoeyBhY2NvdW50UmVhZE9ubHkgfSk7XG4gICAgICAgIHRoaXMubWFya0FzUHJpc3RpbmUoKTtcbiAgICAgICAgdGhpcy5zdGFydExpc3RlbkNoYW5nZXMoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZGlzYWJsZSgpO1xuICAgICAgICB0aGlzLm1hcmtBc1ByaXN0aW5lKCk7XG4gICAgICAgIHRoaXMuc3RvcExpc3RlbkNoYW5nZXMoKTtcbiAgICAgIH1cbiAgICAgIHRoaXMubWFya0FzTG9hZGVkKCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgb25Mb2dvdXQoKSB7XG4gICAgdGhpcy5pc0xvZ2luID0gZmFsc2U7XG4gICAgdGhpcy5lbWFpbC5jb25maXJtZWQgPSBmYWxzZTtcbiAgICB0aGlzLmVtYWlsLm5vdENvbmZpcm1lZCA9IGZhbHNlO1xuICAgIHRoaXMuZW1haWwuc2VuZGluZyA9IGZhbHNlO1xuICAgIHRoaXMuZW1haWwuZXJyb3IgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5mb3JtLnJlc2V0KCk7XG4gICAgdGhpcy5kaXNhYmxlKCk7XG5cbiAgICB0aGlzLm5ldHdvcmtTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG5cbiAgICB0aGlzLnN0b3BMaXN0ZW5DaGFuZ2VzKCk7XG5cbiAgICAvLyBCYWNrIHRvIGhvbWVcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCcvJyk7XG5cbiAgfVxuXG4gIGFzeW5jIHNldFZhbHVlKGRhdGE6IEFjY291bnQsIG9wdHM/OiB7IGVtaXRFdmVudD86IGJvb2xlYW47IG9ubHlTZWxmPzogYm9vbGVhbiB9KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgc3VwZXIuc2V0VmFsdWUoZGF0YSwgb3B0cyk7XG5cbiAgICAvLyBTZXQgb3B0aW9uc1xuICAgIGNvbnN0IHByb3BlcnRpZXMgPSBkYXRhPy5zZXR0aW5ncz8uYXNMb2NhbFNldHRpbmdzKCk/LnByb3BlcnRpZXMgfHwge307XG4gICAgY29uc3QgcHJvcGVydGllc0VudGl0aWVzOiBQcm9wZXJ0eUVudGl0eVtdID0gW107XG4gICAgdGhpcy5vcHRpb25EZWZpbml0aW9uc1xuICAgICAgLmZpbHRlcihkZWZpbml0aW9uID0+ICFkZWZpbml0aW9uLm1pblByb2ZpbGUgfHwgdGhpcy5hY2NvdW50U2VydmljZS5oYXNNaW5Qcm9maWxlKGRlZmluaXRpb24ubWluUHJvZmlsZSkpXG4gICAgICAubWFwKGRlZmluaXRpb24gPT4gZGVmaW5pdGlvbi5rZXkpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgIGlmIChpc05vdE5pbChwcm9wZXJ0aWVzW2tleV0pKSB7XG4gICAgICAgIHByb3BlcnRpZXNFbnRpdGllcy5wdXNoKFByb3BlcnR5RW50aXR5LmZyb21PYmplY3Qoe2lkOiBrZXksIHZhbHVlOiBwcm9wZXJ0aWVzW2tleV19KSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAodGhpcy5wcm9wZXJ0aWVzVGFibGUpIHtcbiAgICAgIGF3YWl0IHRoaXMucHJvcGVydGllc1RhYmxlLnJlYWR5KCk7XG4gICAgICB0aGlzLnByb3BlcnRpZXNUYWJsZS52YWx1ZSA9IHByb3BlcnRpZXNFbnRpdGllcztcbiAgICB9XG5cbiAgfVxuXG4gIGFzeW5jIHJlZnJlc2goZXZlbnQ/OiBFdmVudCkge1xuXG4gICAgdGhpcy5kaXNhYmxlKCk7XG4gICAgdGhpcy5tYXJrQXNMb2FkaW5nKCk7XG5cbiAgICByZXR1cm4gdGhpcy5hY2NvdW50U2VydmljZS5yZWxvYWQoKTtcbiAgfVxuXG4gIHN0YXJ0TGlzdGVuQ2hhbmdlcygpIHtcbiAgICBpZiAodGhpcy5jaGFuZ2VzU3Vic2NyaXB0aW9uKSByZXR1cm47IC8vIGFscmVhZHkgc3RhcnRlZFxuICAgIHRoaXMuY2hhbmdlc1N1YnNjcmlwdGlvbiA9IHRoaXMuYWNjb3VudFNlcnZpY2UubGlzdGVuQ2hhbmdlcygpO1xuICB9XG5cbiAgc3RvcExpc3RlbkNoYW5nZXMoKSB7XG4gICAgaWYgKCF0aGlzLmNoYW5nZXNTdWJzY3JpcHRpb24pIHJldHVybjtcbiAgICB0aGlzLmNoYW5nZXNTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmNoYW5nZXNTdWJzY3JpcHRpb24gPSB1bmRlZmluZWQ7XG4gIH1cblxuICBhc3luYyBzZW5kQ29uZmlybWF0aW9uRW1haWwoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBjb25zdCBqc29uID0gdGhpcy5mb3JtLnZhbHVlO1xuICAgIGpzb24uZW1haWwgPSB0aGlzLmZvcm0uY29udHJvbHNbJ2VtYWlsJ10udmFsdWU7XG4gICAgaWYgKCFqc29uLmVtYWlsIHx8ICF0aGlzLmVtYWlsLm5vdENvbmZpcm1lZCkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICB0aGlzLmVtYWlsLnNlbmRpbmcgPSB0cnVlO1xuICAgIGNvbnNvbGUuZGVidWcoJ1thY2NvdW50XSBTZW5kaW5nIGNvbmZpcm1hdGlvbiBlbWFpbC4uLicpO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLmFjY291bnRTZXJ2aWNlLnNlbmRDb25maXJtYXRpb25FbWFpbChcbiAgICAgICAganNvbi5lbWFpbCxcbiAgICAgICAganNvbi5zZXR0aW5ncyAmJiBqc29uLnNldHRpbmdzLmxvY2FsZSB8fCB0aGlzLnRyYW5zbGF0ZS5jdXJyZW50TGFuZ1xuICAgICAgKTtcbiAgICAgIGNvbnNvbGUuZGVidWcoJ1thY2NvdW50XSBDb25maXJtYXRpb24gZW1haWwgc2VudC4nKTtcbiAgICAgIHRoaXMuZW1haWwuc2VuZGluZyA9IGZhbHNlO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdGhpcy5lbWFpbC5zZW5kaW5nID0gZmFsc2U7XG4gICAgICB0aGlzLmVtYWlsLmVycm9yID0gZXJyICYmIGVyci5tZXNzYWdlIHx8IGVycjtcbiAgICB9XG4gIH1cblxuICBhc3luYyBzYXZlKGV2ZW50KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgaWYgKHRoaXMuc2F2aW5nKSByZXR1cm4gZmFsc2U7XG5cbiAgICBpZiAoIXRoaXMuZm9ybS52YWxpZCkge1xuICAgICAgYXdhaXQgQXBwRm9ybVV0aWxzLndhaXRXaGlsZVBlbmRpbmcodGhpcy5mb3JtKTtcblxuICAgICAgaWYgKHRoaXMuZm9ybS5pbnZhbGlkKSB7XG4gICAgICAgIEFwcEZvcm1VdGlscy5sb2dGb3JtRXJyb3JzKHRoaXMuZm9ybSk7XG4gICAgICAgIHRoaXMuZm9ybS5tYXJrQWxsQXNUb3VjaGVkKCk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnN1Ym1pdHRlZCA9IHRydWU7XG4gICAgdGhpcy5zYXZpbmcgPSB0cnVlO1xuICAgIHRoaXMuZXJyb3IgPSB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBuZXdBY2NvdW50ID0gQWNjb3VudC5mcm9tT2JqZWN0KHtcbiAgICAgIC4uLih0aGlzLmFjY291bnRTZXJ2aWNlLmFjY291bnQuYXNPYmplY3QoKSksXG4gICAgICAuLi4odGhpcy5mb3JtLnZhbHVlKVxuICAgIH0pO1xuXG4gICAgaWYgKHRoaXMucHJvcGVydGllc1RhYmxlKSB7XG4gICAgICAvLyBtZXJnZSBwcm9wZXJ0aWVzXG4gICAgICBhd2FpdCB0aGlzLnByb3BlcnRpZXNUYWJsZS5zYXZlKCk7XG4gICAgICBjb25zdCBwcm9wZXJ0eUVudGl0aWVzID0gdGhpcy5wcm9wZXJ0aWVzVGFibGUudmFsdWUgfHwgW107XG4gICAgICBjb25zdCBwcm9wZXJ0aWVzOiBQcm9wZXJ0aWVzTWFwID0gcHJvcGVydHlFbnRpdGllcy5yZWR1Y2UoKHJlcywgaXRlbSkgPT4ge1xuICAgICAgICByZXNbaXRlbS5pZF0gPSBpdGVtLnZhbHVlO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgfSwge30pO1xuICAgICAgbmV3QWNjb3VudC5zZXR0aW5ncy5tZXJnZSg8TG9jYWxTZXR0aW5ncz57cHJvcGVydGllc30sIFsncHJvcGVydGllcyddKTtcbiAgICB9XG5cbiAgICBjb25zb2xlLmRlYnVnKCdbYWNjb3VudF0gU2F2aW5nIGFjY291bnQuLi4nLCBuZXdBY2NvdW50KTtcbiAgICB0cnkge1xuICAgICAgdGhpcy5kaXNhYmxlKCk7XG5cbiAgICAgIGF3YWl0IHRoaXMuYWNjb3VudFNlcnZpY2Uuc2F2ZShuZXdBY2NvdW50KTtcblxuICAgICAgdGhpcy5tYXJrQXNQcmlzdGluZSgpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICB0aGlzLmVycm9yID0gZXJyICYmIGVyci5tZXNzYWdlIHx8IGVycjtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5zYXZpbmcgPSBmYWxzZTtcbiAgICAgIHRoaXMuZW5hYmxlKCk7XG4gICAgfVxuICB9XG5cbiAgZW5hYmxlKG9wdHM/OiB7XG4gICAgYWNjb3VudFJlYWRPbmx5PzogYm9vbGVhbjtcbiAgICBvbmx5U2VsZj86IGJvb2xlYW47XG4gICAgZW1pdEV2ZW50PzogYm9vbGVhbjtcbiAgfSkge1xuICAgIHN1cGVyLmVuYWJsZSgpO1xuXG4gICAgLy8gU29tZSBmaWVsZHMgYXJlIGFsd2F5cyBkaXNhYmxlXG4gICAgdGhpcy5mb3JtLmNvbnRyb2xzLmVtYWlsLmRpc2FibGUoKTtcbiAgICB0aGlzLmZvcm0uY29udHJvbHMubWFpblByb2ZpbGUuZGlzYWJsZSgpO1xuICAgIHRoaXMuZm9ybS5jb250cm9scy5wdWJrZXkuZGlzYWJsZSgpO1xuXG4gICAgLy8gRGlzYWJsZSBhY2NvdW50IGZpZWxkcyBpZiByZWFkb25seSBieSBjb25maWd1cmF0aW9uXG4gICAgaWYgKG9wdHM/LmFjY291bnRSZWFkT25seSkge1xuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLmxhc3ROYW1lLmRpc2FibGUoKTtcbiAgICAgIHRoaXMuZm9ybS5jb250cm9scy5maXJzdE5hbWUuZGlzYWJsZSgpO1xuICAgIH1cblxuICAgIC8vIEFsd2F5cyBkaXNhYmxlIHNvbWUgYWRkaXRpb25hbCBmaWVsZHNcbiAgICB0aGlzLmFkZGl0aW9uYWxGaWVsZHNcbiAgICAgIC5mb3JFYWNoKGZpZWxkID0+IHtcbiAgICAgICAgY29uc3QgY29udHJvbCA9IHRoaXMuZm9ybS5jb250cm9sc1tmaWVsZC5rZXldO1xuICAgICAgICBpZiAoIWNvbnRyb2wpIHJldHVybjsgLy8gU2tpcFxuXG4gICAgICAgIGNvbnN0IGRpc2FibGVkID0gZmllbGQuZXh0cmE/LmFjY291bnQgJiYgZmllbGQuZXh0cmEuYWNjb3VudC5kaXNhYmxlZCB8fCBmYWxzZTtcbiAgICAgICAgaWYgKGRpc2FibGVkICYmIGNvbnRyb2wuZW5hYmxlZCkge1xuICAgICAgICAgIGNvbnRyb2wuZGlzYWJsZSgpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJlcXVpcmVkID0gZmllbGQuZXh0cmE/LmFjY291bnQgJiYgZmllbGQuZXh0cmEuYWNjb3VudC5yZXF1aXJlZCB8fCBmYWxzZTtcbiAgICAgICAgaWYgKCFmaWVsZC5yZXF1aXJlZCAmJiByZXF1aXJlZCkge1xuICAgICAgICAgIGNvbnRyb2wuc2V0VmFsaWRhdG9ycyhjb250cm9sLnZhbGlkYXRvclxuICAgICAgICAgICAgPyBWYWxpZGF0b3JzLmNvbXBvc2UoW2NvbnRyb2wudmFsaWRhdG9yLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSlcbiAgICAgICAgICAgIDogVmFsaWRhdG9ycy5yZXF1aXJlZCk7XG4gICAgICAgIH1cblxuICAgICAgfSk7XG4gICAgdGhpcy5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIGFzeW5jIGNhbmNlbCgpIHtcbiAgICBhd2FpdCBzdXBlci5jYW5jZWwoKTtcbiAgfVxuXG4gIGFzeW5jIGNsb3NlKGV2ZW50PzogRXZlbnQpIHtcbiAgICBpZiAodGhpcy5zYXZpbmcpIHJldHVybjtcblxuICAgIC8vIEJhY2sgdG8gaG9tZVxuICAgIHJldHVybiB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCcvJywge3JlcGxhY2VVcmw6IHRydWV9KTsgLy8gYmFjayB0byBob21lXG4gIH1cblxuICBwcm90ZWN0ZWQgbWFya0ZvckNoZWNrKCkge1xuICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gIH1cblxufVxuIiwiPGFwcC10b29sYmFyIFt0aXRsZV09XCInQUNDT1VOVC5USVRMRSd8dHJhbnNsYXRlXCIgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICBbaGFzVmFsaWRhdGVdPVwiZGlydHkgJiYgIXNhdmluZ1wiXG4gICAgICAgICAgICAgW2hhc0Nsb3NlXT1cIiFkaXJ0eSAmJiAhc2F2aW5nXCJcbiAgICAgICAgICAgICAob25WYWxpZGF0ZSk9XCJzYXZlKCRldmVudClcIlxuICAgICAgICAgICAgIFtjYW5Hb0JhY2tdPVwiZmFsc2VcIlxuICAgICAgICAgICAgIChvbkNsb3NlKT1cImNsb3NlKCRldmVudClcIj5cblxuICA8aW9uLWJ1dHRvbnMgc2xvdD1cImVuZFwiPlxuICAgIDwhLS0gbG9hZGVyIC0tPlxuICAgIDxpb24tc3Bpbm5lciAqbmdJZj1cImxvYWRpbmcgfHwgc2F2aW5nOyBlbHNlIGVuZEJ1dHRvbnNcIj48L2lvbi1zcGlubmVyPlxuXG4gICAgPG5nLXRlbXBsYXRlICNlbmRCdXR0b25zPlxuICAgICAgPCEtLSByZWZyZXNoIGJ1dHRvbiAoaWYgb25saW5lKSAtLT5cbiAgICAgIDxpb24tYnV0dG9uIFttYXRUb29sdGlwXT1cIidDT01NT04uQlROX1JFRlJFU0gnfHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cIm5ldHdvcmsub25saW5lXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZWZyZXNoKCRldmVudClcIj5cbiAgICAgICAgPG1hdC1pY29uIHNsb3Q9XCJpY29uLW9ubHlcIj5yZWZyZXNoPC9tYXQtaWNvbj5cbiAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2lvbi1idXR0b25zPlxuPC9hcHAtdG9vbGJhcj5cblxuPGlvbi1jb250ZW50PlxuXG4gIDwhLS0gZXJyb3IgLS0+XG4gIDxpb24taXRlbSAqbmdJZj1cImVycm9yICYmIG1vYmlsZVwiIGxpbmVzPVwibm9uZVwiPlxuICAgIDxpb24taWNvbiBjb2xvcj1cImRhbmdlclwiIHNsb3Q9XCJzdGFydFwiIG5hbWU9XCJhbGVydC1jaXJjbGVcIj48L2lvbi1pY29uPlxuICAgIDxpb24tbGFiZWwgY29sb3I9XCJkYW5nZXJcIiBjbGFzcz1cImVycm9yXCIgW2lubmVySFRNTF09XCJlcnJvcnx0cmFuc2xhdGVcIj48L2lvbi1sYWJlbD5cbiAgPC9pb24taXRlbT5cblxuICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIiBub3ZhbGlkYXRlIGNsYXNzPVwiZm9ybS1jb250YWluZXJcIj5cblxuICAgIDxtYXQtdGFiLWdyb3VwICN0YWJHcm91cCBbKHNlbGVjdGVkSW5kZXgpXT1cInNlbGVjdGVkVGFiSW5kZXhcIiBkeW5hbWljSGVpZ2h0PlxuXG4gICAgICA8IS0tIFRBQjogdXNlciBkZXRhaWxzIC0tPlxuICAgICAgPG1hdC10YWIgbGFiZWw9XCJ7eydBQ0NPVU5ULlVTRVJfREVUQUlMUy5USVRMRSd8dHJhbnNsYXRlfX1cIiBjbGFzcz1cImlvbi1wYWRkaW5nXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBtYXQtdGFiLWxhYmVsPlxuICAgICAgICAgIDxtYXQtaWNvbj5cbiAgICAgICAgICAgIDxpb24taWNvbiBtYXRQcmVmaXggc2xvdD1cInN0YXJ0XCIgbmFtZT1cInBlcnNvbi1jaXJjbGVcIj48L2lvbi1pY29uPlxuICAgICAgICAgIDwvbWF0LWljb24+XG4gICAgICAgICAgPGlvbi1sYWJlbD57eydBQ0NPVU5ULlVTRVJfREVUQUlMUy5USVRMRSd8dHJhbnNsYXRlfX08L2lvbi1sYWJlbD5cbiAgICAgICAgICA8aW9uLWljb24gc2xvdD1cImVuZFwiIG5hbWU9XCJhbGVydC1jaXJjbGVcIiBjb2xvcj1cImRhbmdlclwiICpuZ0lmPVwic3VibWl0dGVkICYmIGZvcm0uaW52YWxpZFwiPjwvaW9uLWljb24+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImlvbi1wYWRkaW5nXCI+XG5cbiAgICAgICAgICA8cCBbaW5uZXJIVE1MXT1cIidBQ0NPVU5ULlVTRVJfREVUQUlMUy5ERVNDUklQVElPTid8dHJhbnNsYXRlXCI+PC9wPlxuXG4gICAgICAgICAgPCEtLWgxPklkZW50aXTDqTwvaDEtLT5cblxuICAgICAgICAgIDwhLS0gRW1haWwgLS0+XG4gICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IFtwbGFjZWhvbGRlcl09XCInVVNFUi5FTUFJTCd8dHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJlbWFpbFwiIGF1dG9jb21wbGV0ZT1cInNlY3Rpb24tcmVkIGVtYWlsXCI+XG4gICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiZm9ybS5jb250cm9scy5lbWFpbC5oYXNFcnJvcigncmVxdWlyZWQnKSAmJiBmb3JtLmNvbnRyb2xzLmVtYWlsLmRpcnR5XCIgdHJhbnNsYXRlPkVSUk9SLkZJRUxEX1JFUVVJUkVEPC9tYXQtZXJyb3I+XG4gICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiZm9ybS5jb250cm9scy5lbWFpbC5oYXNFcnJvcignZW1haWwnKSAmJiBmb3JtLmNvbnRyb2xzLmVtYWlsLmRpcnR5XCI+XG4gICAgICAgICAgICAgIDxzcGFuPnt7J0VSUk9SLkZJRUxEX05PVF9WQUxJRF9FTUFJTCcgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgICAgICAgPGlvbi1ncmlkICpuZ0lmPVwiZW1haWwubm90Q29uZmlybWVkXCIgY2xhc3M9XCJpb24tbm8tcGFkZGluZyBpb24tcGFkZGluZy1ib3R0b21cIj5cbiAgICAgICAgICAgIDxpb24tcm93PlxuICAgICAgICAgICAgICA8aW9uLWNvbCBjb2xvcj1cImRhbmdlclwiPlxuICAgICAgICAgICAgICAgIDxpb24taWNvbiBzbG90PVwic3RhcnRcIiBjb2xvcj1cImRhbmdlclwiIG5hbWU9XCJhbGVydC1jaXJjbGVcIiBjb2xvcj1cImRhbmdlclwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICAgICAgPGlvbi10ZXh0IFtpbm5lckhUTUxdPVwiJ0FDQ09VTlQuRU1BSUxfTk9UX0NPTkZJUk1FRF9MQUJFTCd8dHJhbnNsYXRlXCI+PC9pb24tdGV4dD5cbiAgICAgICAgICAgICAgPC9pb24tY29sPlxuICAgICAgICAgICAgPC9pb24tcm93PlxuXG4gICAgICAgICAgICA8aW9uLXJvdyBzdHlsZT1cImhlaWdodDogNTFweDtcIj5cbiAgICAgICAgICAgICAgPGlvbi1jb2wgc3R5bGU9XCJ0ZXh0LWFsaWduOiByaWdodDtcIj5cbiAgICAgICAgICAgICAgICA8aW9uLXRleHQ+XG4gICAgICAgICAgICAgICAgICA8c21hbGwgW2lubmVySFRNTF09XCInQUNDT1VOVC5FTUFJTF9OT1RfUkVDRUlWRURfUVVFU1RJT04nfHRyYW5zbGF0ZVwiPjwvc21hbGw+XG4gICAgICAgICAgICAgICAgPC9pb24tdGV4dD5cbiAgICAgICAgICAgICAgPC9pb24tY29sPlxuICAgICAgICAgICAgICA8aW9uLWNvbCBzaXplPVwiYXV0b1wiPlxuICAgICAgICAgICAgICAgIDxpb24tYnV0dG9uIGZpbGw9XCJzb2xpZFwiIGNvbG9yPVwic2Vjb25kYXJ5XCIgKm5nSWY9XCIhZW1haWwuc2VuZGluZ1wiIChjbGljayk9XCJzZW5kQ29uZmlybWF0aW9uRW1haWwoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAge3snQUNDT1VOVC5CVE5fUkVTRU5EJ3x0cmFuc2xhdGV9fVxuICAgICAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICA8aW9uLXNwaW5uZXIgY2xhc3M9XCJpb24tbm8tcGFkZGluZ1wiICpuZ0lmPVwiZW1haWwuc2VuZGluZ1wiPjwvaW9uLXNwaW5uZXI+XG4gICAgICAgICAgICAgIDwvaW9uLWNvbD5cbiAgICAgICAgICAgIDwvaW9uLXJvdz5cblxuICAgICAgICAgICAgPGlvbi1yb3cgKm5nSWY9XCJlbWFpbC5lcnJvciAmJiAhZW1haWwuc2VuZGluZ1wiPlxuICAgICAgICAgICAgICA8aW9uLWNvbD5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImVtYWlsLmVycm9yICYmICFlbWFpbC5zZW5kaW5nXCIgW2lubmVySFRNTF09XCJlbWFpbC5lcnJvcnx0cmFuc2xhdGVcIj48L3NwYW4+XG4gICAgICAgICAgICAgIDwvaW9uLWNvbD5cbiAgICAgICAgICAgIDwvaW9uLXJvdz5cbiAgICAgICAgICA8L2lvbi1ncmlkPlxuXG4gICAgICAgICAgPCEtLSBMYXN0IG5hbWUgLS0+XG4gICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IFthcHBBdXRvZm9jdXNdPVwidHJ1ZVwiIFthdXRvZm9jdXNEZWxheV09XCI1MDBcIiBbcGxhY2Vob2xkZXJdPVwiJ1VTRVIuTEFTVF9OQU1FJ3x0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImxhc3ROYW1lXCJcbiAgICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJzZWN0aW9uLWJsdWUgZmFtaWx5LW5hbWVcIlxuICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkPlxuICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImZvcm0uY29udHJvbHMubGFzdE5hbWUuaGFzRXJyb3IoJ3JlcXVpcmVkJykgJiYgZm9ybS5jb250cm9scy5sYXN0TmFtZS5kaXJ0eVwiXG4gICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZT5FUlJPUi5GSUVMRF9SRVFVSVJFRFxuICAgICAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiZm9ybS5jb250cm9scy5sYXN0TmFtZS5oYXNFcnJvcignbWlubGVuZ3RoJykgJiYgZm9ybS5jb250cm9scy5sYXN0TmFtZS5kaXJ0eVwiPlxuICAgICAgICAgICAgICA8c3Bhbj57eydFUlJPUi5GSUVMRF9NSU5fTEVOR1RIJyB8IHRyYW5zbGF0ZToge21pbkxlbmd0aDogMn0gfX08L3NwYW4+XG4gICAgICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgICAgICAgPCEtLSBGaXJzdCBuYW1lIC0tPlxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbcGxhY2Vob2xkZXJdPVwiJ1VTRVIuRklSU1RfTkFNRSd8dHJhbnNsYXRlXCIgZm9ybUNvbnRyb2xOYW1lPVwiZmlyc3ROYW1lXCIgYXV0b2NvbXBsZXRlPVwic2VjdGlvbi1ibHVlIGdpdmVuLW5hbWVcIlxuICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkPlxuICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImZvcm0uY29udHJvbHMuZmlyc3ROYW1lLmhhc0Vycm9yKCdyZXF1aXJlZCcpICYmIGZvcm0uY29udHJvbHMuZmlyc3ROYW1lLmRpcnR5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlPkVSUk9SLkZJRUxEX1JFUVVJUkVEXG4gICAgICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJmb3JtLmNvbnRyb2xzLmZpcnN0TmFtZS5oYXNFcnJvcignbWlubGVuZ3RoJykgJiYgZm9ybS5jb250cm9scy5maXJzdE5hbWUuZGlydHlcIj5cbiAgICAgICAgICAgICAgPHNwYW4+e3snRVJST1IuRklFTERfTUlOX0xFTkdUSCcgfCB0cmFuc2xhdGU6IHttaW5MZW5ndGg6IDJ9IH19PC9zcGFuPlxuICAgICAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cblxuXG4gICAgICAgICAgPCEtLSBBZGRpdGlvbmFsIGZpZWxkcyAtLT5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBkZWZpbml0aW9uIG9mIGFkZGl0aW9uYWxGaWVsZHNcIj5cbiAgICAgICAgICAgIDxhcHAtZm9ybS1maWVsZCBbZGVmaW5pdGlvbl09XCJkZWZpbml0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImRlZmluaXRpb24ua2V5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwiZGVmaW5pdGlvbi5leHRyYSAmJiBkZWZpbml0aW9uLmV4dHJhLmFjY291bnQgJiYgZGVmaW5pdGlvbi5leHRyYS5hY2NvdW50LnJlcXVpcmVkIHx8IGZhbHNlXCI+XG4gICAgICAgICAgICA8L2FwcC1mb3JtLWZpZWxkPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgPGgzIHRyYW5zbGF0ZT5BQ0NPVU5ULlVTRVJfREVUQUlMUy5URUNITklDQUxfRElWSURFUjwvaDM+XG5cbiAgICAgICAgICA8IS0tIHByb2ZpbGUgLS0+XG4gICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IGhpZGRlbiByZWFkb25seT1cInRydWVcIiBbcGxhY2Vob2xkZXJdPVwiJ0FDQ09VTlQuVVNFUl9ERVRBSUxTLlBST0ZJTEUnfHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibWFpblByb2ZpbGVcIiByZXF1aXJlZD5cbiAgICAgICAgICAgIDxzcGFuPnt7J1VTRVIuUFJPRklMRV9FTlVNLicgKyBmb3JtLmNvbnRyb2xzLm1haW5Qcm9maWxlLnZhbHVlIHwgdHJhbnNsYXRlfX08L3NwYW4+XG4gICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiZm9ybS5jb250cm9scy5maXJzdE5hbWUuaGFzRXJyb3IoJ21haW5Qcm9maWxlJykgJiYgZm9ybS5jb250cm9scy5tYWluUHJvZmlsZS5kaXJ0eVwiXG4gICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZT5FUlJPUi5GSUVMRF9SRVFVSVJFRFxuICAgICAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgICAgICAgIDwhLS0gcHVia2V5IC0tPlxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCByZWFkb25seT1cInRydWVcIiBbcGxhY2Vob2xkZXJdPVwiJ0FDQ09VTlQuVVNFUl9ERVRBSUxTLlBVQktFWSd8dHJhbnNsYXRlXCIgZm9ybUNvbnRyb2xOYW1lPVwicHVia2V5XCJcbiAgICAgICAgICAgICAgICAgICByZXF1aXJlZD5cbiAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJmb3JtLmNvbnRyb2xzLmZpcnN0TmFtZS5oYXNFcnJvcigncHVia2V5JykgJiYgZm9ybS5jb250cm9scy5maXJzdE5hbWUuZGlydHlcIlxuICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGU+RVJST1IuRklFTERfUkVRVUlSRURcbiAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImZvcm0uY29udHJvbHMuZmlyc3ROYW1lLmhhc0Vycm9yKCdwdWJrZXknKSAmJiBmb3JtLmNvbnRyb2xzLmZpcnN0TmFtZS5kaXJ0eVwiPlxuICAgICAgICAgICAgICA8c3BhbiB0cmFuc2xhdGU+RVJST1IuRklFTERfTk9UX1ZBTElEX1BVQktFWTwvc3Bhbj5cbiAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L21hdC10YWI+XG5cbiAgICAgIDwhLS0gVEFCOiBzZXR0aW5ncyAtLT5cbiAgICAgIDxtYXQtdGFiIGxhYmVsPVwie3snQUNDT1VOVC5TRVRUSU5HUy5USVRMRSd8dHJhbnNsYXRlfX1cIiBmb3JtR3JvdXBOYW1lPVwic2V0dGluZ3NcIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlIG1hdC10YWItbGFiZWw+XG4gICAgICAgICAgPG1hdC1pY29uPlxuICAgICAgICAgICAgPGlvbi1pY29uIG1hdFByZWZpeCBzbG90PVwic3RhcnRcIiBuYW1lPVwic2V0dGluZ3NcIj48L2lvbi1pY29uPlxuICAgICAgICAgIDwvbWF0LWljb24+XG4gICAgICAgICAgPGlvbi1sYWJlbCB0cmFuc2xhdGU+QUNDT1VOVC5TRVRUSU5HUy5USVRMRTwvaW9uLWxhYmVsPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpb24tcGFkZGluZ1wiPlxuXG4gICAgICAgICAgPHAgW2lubmVySFRNTF09XCInQUNDT1VOVC5TRVRUSU5HUy5ERVNDUklQVElPTid8dHJhbnNsYXRlXCI+PC9wPlxuXG4gICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgPG1hdC1zZWxlY3QgW3BsYWNlaG9sZGVyXT1cIidBQ0NPVU5ULlNFVFRJTkdTLkxPQ0FMRSd8dHJhbnNsYXRlXCIgZm9ybUNvbnRyb2xOYW1lPVwibG9jYWxlXCIgcmVxdWlyZWQ+XG4gICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBpdGVtIG9mIGxvY2FsZXNcIiBbdmFsdWVdPVwiaXRlbS5rZXlcIj5cbiAgICAgICAgICAgICAgICB7e2l0ZW0udmFsdWV9fVxuICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwic2V0dGluZ3NGb3JtPy5jb250cm9scy5sb2NhbGUuaGFzRXJyb3IoJ3JlcXVpcmVkJykgJiYgc2V0dGluZ3NGb3JtPy5jb250cm9scy5sb2NhbGUuZGlydHlcIlxuICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGU+RVJST1IuRklFTERfUkVRVUlSRURcbiAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICAgICAgICA8IS0tIGxhdC9sb25nIGZvcm1hdC0tPlxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgIDxtYXQtc2VsZWN0IFtwbGFjZWhvbGRlcl09XCInQUNDT1VOVC5TRVRUSU5HUy5MQVRfTE9OR19GT1JNQVQnfHRyYW5zbGF0ZVwiIGZvcm1Db250cm9sTmFtZT1cImxhdExvbmdGb3JtYXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ+XG4gICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBpdGVtIG9mIGxhdExvbmdGb3JtYXRzXCIgW3ZhbHVlXT1cIml0ZW1cIj5cbiAgICAgICAgICAgICAgICB7eydDT01NT04uTEFUX0xPTkcuJyArIGl0ZW0gKyAnX1BMQUNFSE9MREVSJ3x0cmFuc2xhdGV9fVxuICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwic2V0dGluZ3NGb3JtPy5jb250cm9scy5sYXRMb25nRm9ybWF0Lmhhc0Vycm9yKCdyZXF1aXJlZCcpICYmIHNldHRpbmdzRm9ybT8uY29udHJvbHMubGF0TG9uZ0Zvcm1hdC5kaXJ0eVwiXG4gICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZT5FUlJPUi5GSUVMRF9SRVFVSVJFRFxuICAgICAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8IS0tIE9wdGlvbnMgdGFibGUgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJvcHRpb25zLXRhYmxlXCIgW2NsYXNzLmNkay12aXN1YWxseS1oaWRkZW5dPVwib3B0aW9uRGVmaW5pdGlvbnMgfCBpc0VtcHR5QXJyYXlcIj5cbiAgICAgICAgICA8YXBwLXByb3BlcnRpZXMtdGFibGVcbiAgICAgICAgICAgICNwcm9wZXJ0aWVzVGFibGVcbiAgICAgICAgICAgIGkxOG5Db2x1bW5QcmVmaXg9XCJBQ0NPVU5ULlNFVFRJTkdTLk9QVElPTlMuXCJcbiAgICAgICAgICAgIFtkZWZpbml0aW9uc109XCJvcHRpb25EZWZpbml0aW9uc1wiXG4gICAgICAgICAgICBbY2FuRWRpdF09XCJ0cnVlXCJcbiAgICAgICAgICAgIChvbkRpcnR5KT1cIiRldmVudCA/IG1hcmtBc0RpcnR5KCkgOiB1bmRlZmluZWRcIlxuICAgICAgICAgID48L2FwcC1wcm9wZXJ0aWVzLXRhYmxlPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgPC9tYXQtdGFiPlxuICAgIDwvbWF0LXRhYi1ncm91cD5cblxuXG4gIDwvZm9ybT5cbjwvaW9uLWNvbnRlbnQ+XG5cbjxpb24tZm9vdGVyIGhpZGRlbi14cyBoaWRkZW4tc20gaGlkZGVuLW1vYmlsZT5cbiAgPGFwcC1mb3JtLWJ1dHRvbnMtYmFyIChvbkNhbmNlbCk9XCJjYW5jZWwoKVwiIChvblNhdmUpPVwic2F2ZSgkZXZlbnQpXCIgW2Rpc2FibGVkXT1cIiFmb3JtLmRpcnR5IHx8ICF2YWxpZCB8fCBzYXZpbmdcIj5cbiAgICA8IS0tIGVycm9yIC0tPlxuICAgIDxpb24taXRlbSAqbmdJZj1cImVycm9yICYmICFtb2JpbGVcIiBsaW5lcz1cIm5vbmVcIj5cbiAgICAgIDxpb24taWNvbiBjb2xvcj1cImRhbmdlclwiIHNsb3Q9XCJzdGFydFwiIG5hbWU9XCJhbGVydC1jaXJjbGVcIj48L2lvbi1pY29uPlxuICAgICAgPGlvbi1sYWJlbCBjb2xvcj1cImRhbmdlclwiIGNsYXNzPVwiZXJyb3JcIiBbaW5uZXJIVE1MXT1cImVycm9yfHRyYW5zbGF0ZVwiPjwvaW9uLWxhYmVsPlxuICAgIDwvaW9uLWl0ZW0+XG4gIDwvYXBwLWZvcm0tYnV0dG9ucy1iYXI+XG48L2lvbi1mb290ZXI+XG4iXX0=
|
|
@@ -119,27 +119,6 @@ export class AppPropertiesTable extends AppInMemoryTable {
|
|
|
119
119
|
this.translationsByKey = {};
|
|
120
120
|
this.filterCriteriaCount = 0;
|
|
121
121
|
this.filterPanelFloating = true;
|
|
122
|
-
// confirmEditCreate(event?: Event, row?: TableElement<PropertyEntity>): boolean {
|
|
123
|
-
// try {
|
|
124
|
-
// return super.confirmEditCreate(event, row);
|
|
125
|
-
// } finally {
|
|
126
|
-
// this.updateAvailableDefinitions();
|
|
127
|
-
// }
|
|
128
|
-
// }
|
|
129
|
-
// async updateView(res: LoadResult<PropertyEntity> | undefined, opts?: { emitEvent?: boolean }): Promise<void> {
|
|
130
|
-
// await super.updateView(res, opts);
|
|
131
|
-
// this.updateAvailableDefinitions();
|
|
132
|
-
// }
|
|
133
|
-
// protected async updateAvailableDefinitions() {
|
|
134
|
-
// const usedDefinitionsKeys = this.dataSource.getRows().map(row => row.currentData?.id).filter(isNotNilOrBlank) || [];
|
|
135
|
-
// const availableDefinitions: TranslatedFormFieldDefinition[] = (this.definitions || []).slice()
|
|
136
|
-
// .filter(value => !usedDefinitionsKeys.includes(value.key))
|
|
137
|
-
// .map(this.toTranslatedFormFieldDefinition);
|
|
138
|
-
//
|
|
139
|
-
// EntityUtils.sort(availableDefinitions, 'translatedName', 'asc');
|
|
140
|
-
//
|
|
141
|
-
// this.availableDefinitions$.next(availableDefinitions);
|
|
142
|
-
// }
|
|
143
122
|
this.toTranslatedFormFieldDefinition = (definition) => ({ ...definition, translatedName: this.translationsByKey[definition.label] });
|
|
144
123
|
this.inlineEdition = true;
|
|
145
124
|
this.defaultSortBy = 'definition';
|
|
@@ -158,12 +137,6 @@ export class AppPropertiesTable extends AppInMemoryTable {
|
|
|
158
137
|
this.definitions?.forEach(o => {
|
|
159
138
|
this.definitionsMapByKey[o.key] = o;
|
|
160
139
|
});
|
|
161
|
-
// this.registerAutocompleteField('definition', {
|
|
162
|
-
// attributes: ['translatedName'],
|
|
163
|
-
// columnNames: [this.i18nColumnPrefix + 'DEFINITION'],
|
|
164
|
-
// items: this.availableDefinitions$,
|
|
165
|
-
// equals: (o1, o2) => o1?.key === o2?.key,
|
|
166
|
-
// });
|
|
167
140
|
this.registerCellValueChanges('definition').subscribe((definition) => {
|
|
168
141
|
if (isNotNil(definition) && this.editedRow?.id === -1) {
|
|
169
142
|
this.editedRow.validator.patchValue({ id: definition.key, value: definition.defaultValue });
|
|
@@ -288,4 +261,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
288
261
|
type: ViewChild,
|
|
289
262
|
args: [MatExpansionPanel, { static: true }]
|
|
290
263
|
}] } });
|
|
291
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydGllcy50YWJsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29yZS9mb3JtL3Byb3BlcnRpZXMvcHJvcGVydGllcy50YWJsZS50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29yZS9mb3JtL3Byb3BlcnRpZXMvcHJvcGVydGllcy50YWJsZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNoRSxPQUFPLEVBQUMsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQVksS0FBSyxFQUFVLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN4SCxPQUFPLEVBQUMsb0JBQW9CLEVBQUUsc0JBQXNCLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUNyRixPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSxzREFBc0QsQ0FBQztBQUM3RixPQUFPLEVBQUMsTUFBTSxFQUF5QixXQUFXLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQUM3RixPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSwrQ0FBK0MsQ0FBQztBQUNsRixPQUFPLEVBQXdELFVBQVUsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRWpHLE9BQU8sRUFBQyxlQUFlLEVBQUUsUUFBUSxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFFcEUsT0FBTyxFQUFjLFdBQVcsRUFBQyxNQUFNLDRDQUE0QyxDQUFDO0FBRXBGLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSx3Q0FBd0MsQ0FBQztBQUNuRSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFFL0QsT0FBTyxFQUFDLFlBQVksRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDekQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGVB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bnRlbnQiOlsiaW1wb3J0IHtBcHBJbk1lbW9yeVRhYmxlfSBmcm9tICcuLi8uLi90YWJsZS9tZW1vcnktdGFibGUuY2xhc3MnO1xuaW1wb3J0IHtDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBEaXJlY3RpdmUsIEluamVjdCwgSW5qZWN0b3IsIElucHV0LCBPbkluaXQsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1JFU0VSVkVEX0VORF9DT0xVTU5TLCBSRVNFUlZFRF9TVEFSVF9DT0xVTU5TfSBmcm9tICcuLi8uLi90YWJsZS90YWJsZS5tb2RlbCc7XG5pbXBvcnQge0luTWVtb3J5RW50aXRpZXNTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvc2VydmljZXMvbWVtb3J5LWVudGl0eS1zZXJ2aWNlLmNsYXNzJztcbmltcG9ydCB7RW50aXR5LCBFbnRpdHlBc09iamVjdE9wdGlvbnMsIEVudGl0eVV0aWxzfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9tb2RlbC9lbnRpdHkubW9kZWwnO1xuaW1wb3J0IHtBcHBWYWxpZGF0b3JTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy92YWxpZGF0b3IvYmFzZS52YWxpZGF0b3IuY2xhc3MnO1xuaW1wb3J0IHtBYnN0cmFjdENvbnRyb2wsIFVudHlwZWRGb3JtQnVpbGRlciwgVW50eXBlZEZvcm1Hcm91cCwgVmFsaWRhdG9yc30gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtGb3JtRmllbGREZWZpbml0aW9uLCBGb3JtRmllbGREZWZpbml0aW9uTWFwfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvZm9ybS9maWVsZC5tb2RlbCc7XG5pbXBvcnQge2lzTm90RW1wdHlBcnJheSwgaXNOb3ROaWx9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9mdW5jdGlvbnMnO1xuaW1wb3J0IHtGaWx0ZXJGbn0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3NlcnZpY2VzL2VudGl0eS1zZXJ2aWNlLmNsYXNzJztcbmltcG9ydCB7RW52aXJvbm1lbnQsIEVOVklST05NRU5UfSBmcm9tICcuLi8uLi8uLi8uLi9lbnZpcm9ubWVudHMvZW52aXJvbm1lbnQuY2xhc3MnO1xuaW1wb3J0IHtUYWJsZUVsZW1lbnR9IGZyb20gJ0BlLWlzL25neC1tYXRlcmlhbC10YWJsZSc7XG5pbXBvcnQge0VudGl0eUNsYXNzfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9tb2RlbC9lbnRpdHkuZGVjb3JhdG9ycyc7XG5pbXBvcnQge0VudGl0eUZpbHRlcn0gZnJvbSAnLi4vLi4vc2VydmljZXMvbW9kZWwvZmlsdGVyLm1vZGVsJztcbmltcG9ydCB7T2JqZWN0TWFwfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvdHlwZXMnO1xuaW1wb3J0IHtkZWJvdW5jZVRpbWUsIGZpbHRlciwgdGFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge0FwcEZvcm1VdGlsc30gZnJvbSAnLi4vZm9ybS51dGlscyc7XG5pbXBvcnQge01hdEV4cGFuc2lvblBhbmVsfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9leHBhbnNpb24nO1xuXG5pbnRlcmZhY2UgVHJhbnNsYXRlZEZvcm1GaWVsZERlZmluaXRpb24gZXh0ZW5kcyBGb3JtRmllbGREZWZpbml0aW9uIHtcbiAgdHJhbnNsYXRlZE5hbWU/OiBzdHJpbmc7XG59XG5cbkBFbnRpdHlDbGFzcyh7dHlwZW5hbWU6ICdQcm9wZXJ0eUVudGl0eSd9KVxuZXhwb3J0IGNsYXNzIFByb3BlcnR5RW50aXR5IGV4dGVuZHMgRW50aXR5PFByb3BlcnR5RW50aXR5LCBzdHJpbmc+IHtcbiAgc3RhdGljIGZyb21PYmplY3Q6IChzb3VyY2U6IGFueSwgb3B0cz86IGFueSkgPT4gUHJvcGVydHlFbnRpdHk7XG5cbiAgZGVmaW5pdGlvbjogVHJhbnNsYXRlZEZvcm1GaWVsZERlZmluaXRpb24gPSBudWxsO1xuICB2YWx1ZTogYW55ID0gbnVsbDtcblxuICBmcm9tT2JqZWN0KHNvdXJjZTogYW55KSB7XG4gICAgc3VwZXIuZnJvbU9iamVjdChzb3VyY2UpO1xuICAgIHRoaXMuaWQgPSBzb3VyY2UuZGVmaW5pdGlvbj8ua2V5IHx8IHNvdXJjZS5pZDtcbiAgICB0aGlzLmRlZmluaXRpb24gPSBzb3VyY2UuZGVmaW5pdGlvbjtcbiAgICB0aGlzLnZhbHVlID0gc291cmNlLnZhbHVlO1xuICB9XG5cbiAgYXNPYmplY3Qob3B0cz86IEVudGl0eUFzT2JqZWN0T3B0aW9ucyk6IGFueSB7XG4gICAgY29uc3QgdGFyZ2V0ID0gc3VwZXIuYXNPYmplY3Qob3B0cyk7XG4gICAgdGFyZ2V0LmlkID0gdGhpcy5kZWZpbml0aW9uLmtleTtcbiAgICBkZWxldGUgdGFyZ2V0LmRlZmluaXRpb247XG4gICAgcmV0dXJuIHRhcmdldDtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUHJvcGVydHlFbnRpdHlGaWx0ZXIgZXh0ZW5kcyBFbnRpdHlGaWx0ZXI8UHJvcGVydHlFbnRpdHlGaWx0ZXIsIFByb3BlcnR5RW50aXR5PiB7XG4gIHN0YXRpYyBmcm9tT2JqZWN0OiAoc291cmNlLCBvcHRzPzogYW55KSA9PiBQcm9wZXJ0eUVudGl0eUZpbHRlcjtcblxuICBzZWFyY2hUZXh0OiBzdHJpbmc7XG4gIG5vdERlZmF1bHRPbmx5ID0gZmFsc2U7XG5cbiAgZnJvbU9iamVjdChzb3VyY2U6IGFueSkge1xuICAgIHN1cGVyLmZyb21PYmplY3Qoc291cmNlKTtcbiAgICB0aGlzLnNlYXJjaFRleHQgPSBzb3VyY2Uuc2VhcmNoVGV4dDtcbiAgICB0aGlzLm5vdERlZmF1bHRPbmx5ID0gc291cmNlLm5vdERlZmF1bHRPbmx5O1xuICB9XG5cbiAgYXNPYmplY3Qob3B0cz86IEVudGl0eUFzT2JqZWN0T3B0aW9ucyk6IGFueSB7XG4gICAgcmV0dXJuIHN1cGVyLmFzT2JqZWN0KG9wdHMpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGJ1aWxkRmlsdGVyKCk6IEZpbHRlckZuPFByb3BlcnR5RW50aXR5PltdIHtcbiAgICBjb25zdCBmaWx0ZXJGbnMgPSBzdXBlci5idWlsZEZpbHRlcigpO1xuXG4gICAgY29uc3Qgc2VhcmNoVGV4dEZpbHRlciA9IEVudGl0eVV0aWxzLnNlYXJjaFRleHRGaWx0ZXIoJ2RlZmluaXRpb24udHJhbnNsYXRlZE5hbWUnLCB0aGlzLnNlYXJjaFRleHQpO1xuICAgIGlmIChzZWFyY2hUZXh0RmlsdGVyKSBmaWx0ZXJGbnMucHVzaChzZWFyY2hUZXh0RmlsdGVyKTtcblxuICAgIGlmICh0aGlzLm5vdERlZmF1bHRPbmx5KSB7XG4gICAgICBmaWx0ZXJGbnMucHVzaChkYXRhID0+IGlzTm90TmlsKGRhdGEudmFsdWUpICYmIGRhdGEuZGVmaW5pdGlvbi5kZWZhdWx0VmFsdWUgIT09IGRhdGEudmFsdWUpO1xuICAgIH1cblxuICAgIHJldHVybiBmaWx0ZXJGbnM7XG4gIH1cblxuICBwcm90ZWN0ZWQgaXNDcml0ZXJpYU5vdEVtcHR5KGtleTogc3RyaW5nLCB2YWx1ZTogYW55KTogYm9vbGVhbiB7XG4gICAgaWYgKGtleSA9PT0gJ25vdERlZmF1bHRPbmx5JykgcmV0dXJuIHZhbHVlID09PSB0cnVlO1xuICAgIHJldHVybiBzdXBlci5pc0NyaXRlcmlhTm90RW1wdHkoa2V5LCB2YWx1ZSk7XG4gIH1cbn1cblxuQERpcmVjdGl2ZSgpXG5leHBvcnQgY2xhc3MgUHJvcGVydHlFbnRpdHlWYWxpZGF0b3IgZXh0ZW5kcyBBcHBWYWxpZGF0b3JTZXJ2aWNlPFByb3BlcnR5RW50aXR5PiB7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGZvcm1CdWlsZGVyOiBVbnR5cGVkRm9ybUJ1aWxkZXJcbiAgKSB7XG4gICAgc3VwZXIoZm9ybUJ1aWxkZXIsIG51bGwpO1xuICB9XG5cbiAgZ2V0Rm9ybUdyb3VwQ29uZmlnKGRhdGE/OiBQcm9wZXJ0eUVudGl0eSk6IHsgW3A6IHN0cmluZ106IGFueSB9IHtcbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IFtkYXRhPy5pZCB8fCBudWxsXSxcbiAgICAgIGRlZmluaXRpb246IFtkYXRhPy5kZWZpbml0aW9uIHx8IG51bGwsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgdmFsdWU6IFtkYXRhPy52YWx1ZSB8fCBudWxsXVxuICAgIH07XG4gIH1cbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLXByb3BlcnRpZXMtdGFibGUnLFxuICB0ZW1wbGF0ZVVybDogJ3Byb3BlcnRpZXMudGFibGUuaHRtbCcsXG4gIHN0eWxlVXJsczogWydwcm9wZXJ0aWVzLnRhYmxlLnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge3Byb3ZpZGU6IFByb3BlcnR5RW50aXR5VmFsaWRhdG9yLCB1c2VDbGFzczogUHJvcGVydHlFbnRpdHlWYWxpZGF0b3J9XG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEFwcFByb3BlcnRpZXNUYWJsZSBleHRlbmRzIEFwcEluTWVtb3J5VGFibGU8UHJvcGVydHlFbnRpdHksIFByb3BlcnR5RW50aXR5RmlsdGVyLCBzdHJpbmc+IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBASW5wdXQoKSBkZWZpbml0aW9uczogRm9ybUZpZWxkRGVmaW5pdGlvbltdO1xuICBASW5wdXQoKSBzaG93VG9vbGJhciA9IHRydWU7XG4gIEBWaWV3Q2hpbGQoTWF0RXhwYW5zaW9uUGFuZWwsIHtzdGF0aWM6IHRydWV9KSBmaWx0ZXJFeHBhbnNpb25QYW5lbDogTWF0RXhwYW5zaW9uUGFuZWw7XG5cbiAgLy8gYXZhaWxhYmxlRGVmaW5pdGlvbnMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUcmFuc2xhdGVkRm9ybUZpZWxkRGVmaW5pdGlvbltdPihbXSk7XG4gIGRlZmluaXRpb25zTWFwQnlLZXk6IEZvcm1GaWVsZERlZmluaXRpb25NYXAgPSB7fTtcbiAgdHJhbnNsYXRpb25zQnlLZXk6IE9iamVjdE1hcDxzdHJpbmc+ID0ge307XG4gIGZpbHRlckZvcm06IFVudHlwZWRGb3JtR3JvdXA7XG4gIGZpbHRlckNyaXRlcmlhQ291bnQgPSAwO1xuICBmaWx0ZXJQYW5lbEZsb2F0aW5nID0gdHJ1ZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHByb3RlY3RlZCBmb3JtQnVpbGRlcjogVW50eXBlZEZvcm1CdWlsZGVyLFxuICAgIHByb3RlY3RlZCB2YWxpZGF0b3JTZXJ2aWNlOiBQcm9wZXJ0eUVudGl0eVZhbGlkYXRvcixcbiAgICBASW5qZWN0KEVOVklST05NRU5UKSBlbnZpcm9ubWVudDogRW52aXJvbm1lbnRcbiAgKSB7XG4gICAgc3VwZXIoXG4gICAgICBpbmplY3RvcixcbiAgICAgIFsuLi5SRVNFUlZFRF9TVEFSVF9DT0xVTU5TLCAnZGVmaW5pdGlvbicsICd2YWx1ZScsIC4uLlJFU0VSVkVEX0VORF9DT0xVTU5TXSxcbiAgICAgIFByb3BlcnR5RW50aXR5LFxuICAgICAgbmV3IEluTWVtb3J5RW50aXRpZXNTZXJ2aWNlKFByb3BlcnR5RW50aXR5LCBQcm9wZXJ0eUVudGl0eUZpbHRlciwge1xuICAgICAgICBzb3J0QnlSZXBsYWNlbWVudDoge2RlZmluaXRpb246ICdkZWZpbml0aW9uLnRyYW5zbGF0ZWROYW1lJ31cbiAgICAgIH0pLFxuICAgICAgdmFsaWRhdG9yU2VydmljZVxuICAgICk7XG5cbiAgICB0aGlzLmlubGluZUVkaXRpb24gPSB0cnVlO1xuICAgIHRoaXMuZGVmYXVsdFNvcnRCeSA9ICdkZWZpbml0aW9uJztcbiAgICB0aGlzLmRlZmF1bHRTb3J0RGlyZWN0aW9uID0gJ2FzYyc7XG4gICAgdGhpcy5kZWJ1ZyA9ICFlbnZpcm9ubWVudD8ucHJvZHVjdGlvbjtcblxuICAgIHRoaXMuZmlsdGVyRm9ybSA9IGZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgIHNlYXJjaFRleHQ6IFtdLFxuICAgICAgbm90RGVmYXVsdE9ubHk6IFtudWxsXVxuICAgIH0pO1xuXG4gICAgdGhpcy5hdXRvTG9hZCA9IGZhbHNlO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgc3VwZXIubmdPbkluaXQoKTtcblxuICAgIC8vIEZpbGwgb3B0aW9ucyBtYXBcbiAgICB0aGlzLmRlZmluaXRpb25zTWFwQnlLZXkgPSB7fTtcbiAgICB0aGlzLmRlZmluaXRpb25zPy5mb3JFYWNoKG8gPT4ge1xuICAgICAgdGhpcy5kZWZpbml0aW9uc01hcEJ5S2V5W28ua2V5XSA9IG87XG4gICAgfSk7XG5cbiAgICAvLyB0aGlzLnJlZ2lzdGVyQXV0b2NvbXBsZXRlRmllbGQoJ2RlZmluaXRpb24nLCB7XG4gICAgLy8gICBhdHRyaWJ1dGVzOiBbJ3RyYW5zbGF0ZWROYW1lJ10sXG4gICAgLy8gICBjb2x1bW5OYW1lczogW3RoaXMuaTE4bkNvbHVtblByZWZpeCArICdERUZJTklUSU9OJ10sXG4gICAgLy8gICBpdGVtczogdGhpcy5hdmFpbGFibGVEZWZpbml0aW9ucyQsXG4gICAgLy8gICBlcXVhbHM6IChvMSwgbzIpID0+IG8xPy5rZXkgPT09IG8yPy5rZXksXG4gICAgLy8gfSk7XG5cbiAgICB0aGlzLnJlZ2lzdGVyQ2VsbFZhbHVlQ2hhbmdlcygnZGVmaW5pdGlvbicpLnN1YnNjcmliZSgoZGVmaW5pdGlvbikgPT4ge1xuICAgICAgaWYgKGlzTm90TmlsKGRlZmluaXRpb24pICYmIHRoaXMuZWRpdGVkUm93Py5pZCA9PT0gLTEpIHtcbiAgICAgICAgdGhpcy5lZGl0ZWRSb3cudmFsaWRhdG9yLnBhdGNoVmFsdWUoe2lkOiBkZWZpbml0aW9uLmtleSwgdmFsdWU6IGRlZmluaXRpb24uZGVmYXVsdFZhbHVlfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLnJlZ2lzdGVyQ2VsbFZhbHVlQ2hhbmdlcygndmFsdWUnKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5tYXJrQXNEaXJ0eSgpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5yZWdpc3RlclN1YnNjcmlwdGlvbihcbiAgICAgIHRoaXMuZmlsdGVyRm9ybS52YWx1ZUNoYW5nZXNcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgZGVib3VuY2VUaW1lKDI1MCksXG4gICAgICAgICAgZmlsdGVyKChfKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB2YWxpZCA9IHRoaXMuZmlsdGVyRm9ybS52YWxpZDtcbiAgICAgICAgICAgIGlmICghdmFsaWQgJiYgdGhpcy5kZWJ1ZykgQXBwRm9ybVV0aWxzLmxvZ0Zvcm1FcnJvcnModGhpcy5maWx0ZXJGb3JtKTtcbiAgICAgICAgICAgIHJldHVybiB2YWxpZDtcbiAgICAgICAgICB9KSxcbiAgICAgICAgICAvLyBVcGRhdGUgdGhlIGZpbHRlclxuICAgICAgICAgIHRhcChqc29uID0+IHRoaXMuc2V0RmlsdGVyKGpzb24pKSxcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKClcbiAgICApO1xuXG4gICAgdGhpcy5yZXNldEZpbHRlcigpO1xuXG4gICAgdGhpcy5tYXJrQXNSZWFkeSgpO1xuICB9XG5cbiAgZ2V0IHZhbHVlKCk6IFByb3BlcnR5RW50aXR5W10ge1xuICAgIGxldCB2YWx1ZXMgPSBzdXBlci52YWx1ZSB8fCBbXTtcblxuICAgIC8vIHJlbW92ZSB1bnNldCBvcHRpb25zXG4gICAgdmFsdWVzID0gdmFsdWVzLmZpbHRlcihwcm9wZXJ0eSA9PiBpc05vdE5pbChwcm9wZXJ0eS52YWx1ZSAhPT0gcHJvcGVydHkuZGVmaW5pdGlvbi5kZWZhdWx0VmFsdWUpKTtcblxuICAgIHJldHVybiB2YWx1ZXM7XG4gIH1cblxuICBzZXQgdmFsdWUoZGF0YTogUHJvcGVydHlFbnRpdHlbXSkge1xuICAgIHN1cGVyLnZhbHVlID0gZGF0YTtcbiAgfVxuXG4gIHNldFZhbHVlKHZhbHVlOiBQcm9wZXJ0eUVudGl0eVtdLCBvcHRzPzogeyBlbWl0RXZlbnQ/OiBib29sZWFuIH0pIHtcblxuICAgIC8vIFVwZGF0ZSB0cmFuc2xhdGlvbnNcbiAgICB0aGlzLnRyYW5zbGF0aW9uc0J5S2V5ID0gaXNOb3RFbXB0eUFycmF5KHRoaXMuZGVmaW5pdGlvbnMpID8gdGhpcy50cmFuc2xhdGUuaW5zdGFudCh0aGlzLmRlZmluaXRpb25zLm1hcChkZWYgPT4gZGVmLmxhYmVsKSkgOiB7fTtcblxuICAgIC8vIEJ1aWxkIGVudGl0aWVzXG4gICAgY29uc3Qgc291cmNlID0gKHZhbHVlIHx8IFtdKS5zbGljZSgpO1xuICAgIGNvbnN0IHRhcmdldDogUHJvcGVydHlFbnRpdHlbXSA9IFtdO1xuICAgIHRhcmdldC5wdXNoKFxuICAgICAgLi4udGhpcy5kZWZpbml0aW9uc1xuICAgICAgICAubWFwKGRlZmluaXRpb24gPT4gUHJvcGVydHlFbnRpdHkuZnJvbU9iamVjdCh7XG4gICAgICAgICAgaWQ6IGRlZmluaXRpb24ua2V5LFxuICAgICAgICAgIC8vIHRyYW5zbGF0ZSBkZWZpbml0aW9uIGxhYmVsXG4gICAgICAgICAgZGVmaW5pdGlvbjogdGhpcy50b1RyYW5zbGF0ZWRGb3JtRmllbGREZWZpbml0aW9uKGRlZmluaXRpb24pLFxuICAgICAgICAgIC8vIGdldCB1c2VyIHZhbHVlIG9yIGRlZmF1bHQgdmFsdWVcbiAgICAgICAgICB2YWx1ZTogdGhpcy50b1ZhbHVlKHNvdXJjZSwgZGVmaW5pdGlvbilcbiAgICAgICAgfSkpXG4gICAgKTtcblxuICAgIHN1cGVyLnNldFZhbHVlKHRhcmdldCwgb3B0cyk7XG4gIH1cblxuICBjbGVhckNvbnRyb2xWYWx1ZShldmVudDogRXZlbnQsIGZvcm1Db250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBib29sZWFuIHtcbiAgICBpZiAoZXZlbnQpIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyAvLyBBdm9pZCB0byBlbnRlciBpbnB1dCB0aGUgZmllbGRcbiAgICBmb3JtQ29udHJvbC5zZXRWYWx1ZShudWxsKTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXNldEZpbHRlcih2YWx1ZT86IGFueSwgb3B0cz86IHsgZW1pdEV2ZW50OiBib29sZWFuIH0pIHtcbiAgICBjb25zdCBmID0gPFByb3BlcnR5RW50aXR5RmlsdGVyPnsgc2VhcmNoVGV4dDogbnVsbCwgbm90RGVmYXVsdE9ubHk6IGZhbHNlLCAuLi52YWx1ZX07XG4gICAgdGhpcy5maWx0ZXJGb3JtLnJlc2V0KGYsIG9wdHMpO1xuICAgIHRoaXMuc2V0RmlsdGVyKGYgfHwgbnVsbCwgb3B0cyk7XG4gICAgdGhpcy5maWx0ZXJDcml0ZXJpYUNvdW50ID0gMDtcbiAgICBpZiAodGhpcy5maWx0ZXJFeHBhbnNpb25QYW5lbCAmJiB0aGlzLmZpbHRlclBhbmVsRmxvYXRpbmcpIHRoaXMuZmlsdGVyRXhwYW5zaW9uUGFuZWwuY2xvc2UoKTtcbiAgICB0aGlzLnJlc2V0RXJyb3IoKTtcbiAgfVxuXG4gIHNldEZpbHRlcihmaWx0ZXI6IFByb3BlcnR5RW50aXR5RmlsdGVyLCBvcHRzPzogeyBlbWl0RXZlbnQ/OiBib29sZWFuIH0pIHtcbiAgICBmaWx0ZXIgPSB0aGlzLmRhdGFTb3VyY2UuZGF0YVNlcnZpY2UuYXNGaWx0ZXIoZmlsdGVyKTtcblxuICAgIC8vIFVwZGF0ZSBjcml0ZXJpYSBjb3VudFxuICAgIGNvbnN0IGNyaXRlcmlhQ291bnQgPSBmaWx0ZXIuY291bnROb3RFbXB0eUNyaXRlcmlhKCk7XG4gICAgaWYgKGNyaXRlcmlhQ291bnQgIT09IHRoaXMuZmlsdGVyQ3JpdGVyaWFDb3VudCkge1xuICAgICAgdGhpcy5maWx0ZXJDcml0ZXJpYUNvdW50ID0gY3JpdGVyaWFDb3VudDtcbiAgICAgIHRoaXMubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgLy8gVXBkYXRlIHRoZSBmb3JtIGNvbnRlbnRcbiAgICBpZiAodGhpcy5maWx0ZXJGb3JtICYmICghb3B0cyB8fCBvcHRzLmVtaXRFdmVudCAhPT0gZmFsc2UpKSB7XG4gICAgICB0aGlzLmZpbHRlckZvcm0ucGF0Y2hWYWx1ZShmaWx0ZXIuYXNPYmplY3QoKSwge2VtaXRFdmVudDogZmFsc2V9KTtcbiAgICB9XG5cbiAgICBzdXBlci5zZXRGaWx0ZXIoZmlsdGVyIGFzIFByb3BlcnR5RW50aXR5RmlsdGVyLCBvcHRzKTtcbiAgfVxuXG4gIGdldCBmaWx0ZXJJc0VtcHR5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmZpbHRlckNyaXRlcmlhQ291bnQgPT09IDA7XG4gIH1cblxuICB0b2dnbGVGaWx0ZXJQYW5lbEZsb2F0aW5nKCkge1xuICAgIHRoaXMuZmlsdGVyUGFuZWxGbG9hdGluZyA9ICF0aGlzLmZpbHRlclBhbmVsRmxvYXRpbmc7XG4gICAgdGhpcy5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIGNsb3NlRmlsdGVyUGFuZWwoKSB7XG4gICAgaWYgKHRoaXMuZmlsdGVyRXhwYW5zaW9uUGFuZWwpIHRoaXMuZmlsdGVyRXhwYW5zaW9uUGFuZWwuY2xvc2UoKTtcbiAgICB0aGlzLmZpbHRlclBhbmVsRmxvYXRpbmcgPSB0cnVlO1xuICB9XG5cbiAgYXBwbHlGaWx0ZXJBbmRDbG9zZVBhbmVsKGV2ZW50PzogRXZlbnQpIHtcbiAgICBjb25zdCBmaWx0ZXIgPSB0aGlzLmZpbHRlckZvcm0udmFsdWU7XG4gICAgdGhpcy5zZXRGaWx0ZXIoZmlsdGVyLCB7ZW1pdEV2ZW50OiBmYWxzZX0pO1xuICAgIHRoaXMub25SZWZyZXNoLmVtaXQoZXZlbnQpO1xuICAgIGlmICh0aGlzLmZpbHRlckV4cGFuc2lvblBhbmVsICYmIHRoaXMuZmlsdGVyUGFuZWxGbG9hdGluZykgdGhpcy5maWx0ZXJFeHBhbnNpb25QYW5lbC5jbG9zZSgpO1xuICB9XG5cbiAgLy8gY29uZmlybUVkaXRDcmVhdGUoZXZlbnQ/OiBFdmVudCwgcm93PzogVGFibGVFbGVtZW50PFByb3BlcnR5RW50aXR5Pik6IGJvb2xlYW4ge1xuICAvLyAgIHRyeSB7XG4gIC8vICAgICByZXR1cm4gc3VwZXIuY29uZmlybUVkaXRDcmVhdGUoZXZlbnQsIHJvdyk7XG4gIC8vICAgfSBmaW5hbGx5IHtcbiAgLy8gICAgIHRoaXMudXBkYXRlQXZhaWxhYmxlRGVmaW5pdGlvbnMoKTtcbiAgLy8gICB9XG4gIC8vIH1cblxuICAvLyBhc3luYyB1cGRhdGVWaWV3KHJlczogTG9hZFJlc3VsdDxQcm9wZXJ0eUVudGl0eT4gfCB1bmRlZmluZWQsIG9wdHM/OiB7IGVtaXRFdmVudD86IGJvb2xlYW4gfSk6IFByb21pc2U8dm9pZD4ge1xuICAvLyAgIGF3YWl0IHN1cGVyLnVwZGF0ZVZpZXcocmVzLCBvcHRzKTtcbiAgLy8gICB0aGlzLnVwZGF0ZUF2YWlsYWJsZURlZmluaXRpb25zKCk7XG4gIC8vIH1cblxuICAvLyBwcm90ZWN0ZWQgYXN5bmMgdXBkYXRlQXZhaWxhYmxlRGVmaW5pdGlvbnMoKSB7XG4gIC8vICAgY29uc3QgdXNlZERlZmluaXRpb25zS2V5cyA9IHRoaXMuZGF0YVNvdXJjZS5nZXRSb3dzKCkubWFwKHJvdyA9PiByb3cuY3VycmVudERhdGE/LmlkKS5maWx0ZXIoaXNOb3ROaWxPckJsYW5rKSB8fCBbXTtcbiAgLy8gICBjb25zdCBhdmFpbGFibGVEZWZpbml0aW9uczogVHJhbnNsYXRlZEZvcm1GaWVsZERlZmluaXRpb25bXSA9ICh0aGlzLmRlZmluaXRpb25zIHx8IFtdKS5zbGljZSgpXG4gIC8vICAgICAuZmlsdGVyKHZhbHVlID0+ICF1c2VkRGVmaW5pdGlvbnNLZXlzLmluY2x1ZGVzKHZhbHVlLmtleSkpXG4gIC8vICAgICAubWFwKHRoaXMudG9UcmFuc2xhdGVkRm9ybUZpZWxkRGVmaW5pdGlvbik7XG4gIC8vXG4gIC8vICAgRW50aXR5VXRpbHMuc29ydChhdmFpbGFibGVEZWZpbml0aW9ucywgJ3RyYW5zbGF0ZWROYW1lJywgJ2FzYycpO1xuICAvL1xuICAvLyAgIHRoaXMuYXZhaWxhYmxlRGVmaW5pdGlvbnMkLm5leHQoYXZhaWxhYmxlRGVmaW5pdGlvbnMpO1xuICAvLyB9XG5cbiAgdG9UcmFuc2xhdGVkRm9ybUZpZWxkRGVmaW5pdGlvbiA9IChkZWZpbml0aW9uOiBGb3JtRmllbGREZWZpbml0aW9uKTogVHJhbnNsYXRlZEZvcm1GaWVsZERlZmluaXRpb24gPT5cbiAgICAoey4uLmRlZmluaXRpb24sIHRyYW5zbGF0ZWROYW1lOiB0aGlzLnRyYW5zbGF0aW9uc0J5S2V5W2RlZmluaXRpb24ubGFiZWxdfSk7XG5cbiAgcmVzZXRQcm9wZXJ0eShldmVudDogVUlFdmVudCwgcm93OiBUYWJsZUVsZW1lbnQ8UHJvcGVydHlFbnRpdHk+KSB7XG4gICAgZXZlbnQ/LnByZXZlbnREZWZhdWx0KCk7XG4gICAgcm93LnZhbGlkYXRvci5wYXRjaFZhbHVlKHsgdmFsdWU6IHJvdy5jdXJyZW50RGF0YS5kZWZpbml0aW9uLmRlZmF1bHRWYWx1ZSB9KTtcbiAgICB0aGlzLm1hcmtSb3dBc0RpcnR5KCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdG9WYWx1ZSh2YWx1ZXM6IFByb3BlcnR5RW50aXR5W10sIGRlZmluaXRpb246IEZvcm1GaWVsZERlZmluaXRpb24pOiBhbnkge1xuICAgIGNvbnN0IHZhbHVlID0gdmFsdWVzLmZpbmQodiA9PiB2LmlkID09PSBkZWZpbml0aW9uLmtleSk/LnZhbHVlO1xuICAgIHJldHVybiBpc05vdE5pbCh2YWx1ZSkgPyB2YWx1ZSA6IGRlZmluaXRpb24uZGVmYXVsdFZhbHVlO1xuICB9XG59XG4iLCI8bWF0LXRvb2xiYXIgKm5nSWY9XCJzaG93VG9vbGJhclwiIFtjbGFzcy5leHBhbmRlZF09XCJmaWx0ZXJFeHBhbnNpb25QYW5lbC5leHBhbmRlZFwiPlxuXG4gIDwhLS0gUmVmcmVzaCAtLT5cbiAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKm5nSWY9XCIhbW9iaWxlXCJcbiAgICAgICAgICBbdGl0bGVdPVwiJ0NPTU1PTi5CVE5fUkVGUkVTSCd8dHJhbnNsYXRlXCJcbiAgICAgICAgICAoY2xpY2spPVwib25SZWZyZXNoLmVtaXQoKVwiPlxuICAgIDxtYXQtaWNvbj5yZWZyZXNoPC9tYXQtaWNvbj5cbiAgPC9idXR0b24+XG5cbiAgPGlvbi1pdGVtICpuZ0lmPVwiIW1vYmlsZSAmJiBlcnJvcjsgbGV0IGVycm9yXCIgbGluZXM9XCJub25lXCI+XG4gICAgPGlvbi1pY29uIGNvbG9yPVwiZGFuZ2VyXCIgc2xvdD1cInN0YXJ0XCIgbmFtZT1cImFsZXJ0LWNpcmNsZVwiPjwvaW9uLWljb24+XG4gICAgPGlvbi1sYWJlbCBjb2xvcj1cImRhbmdlclwiIFtpbm5lckhUTUxdPVwiZXJyb3J8dHJhbnNsYXRlXCI+PC9pb24tbGFiZWw+XG4gIDwvaW9uLWl0ZW0+XG5cbiAgPGRpdiBjbGFzcz1cInRvb2xiYXItc3BhY2VyXCI+PC9kaXY+XG5cbiAgPCEtLSBSZXNldCBmaWx0ZXIgLS0+XG4gIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJyZXNldEZpbHRlcigpXCJcbiAgICAgICAgICAqbmdJZj1cImZpbHRlckNyaXRlcmlhQ291bnRcIj5cbiAgICA8bWF0LWljb24gY29sb3I9XCJhY2NlbnRcIj5maWx0ZXJfbGlzdF9hbHQ8L21hdC1pY29uPlxuICAgIDxtYXQtaWNvbiBjbGFzcz1cImljb24tc2Vjb25kYXJ5XCIgc3R5bGU9XCJsZWZ0OiAxNnB4OyB0b3A6IDVweDsgZm9udC13ZWlnaHQ6IGJvbGQ7XCI+Y2xvc2U8L21hdC1pY29uPlxuICA8L2J1dHRvbj5cblxuICA8IS0tIFNob3cgZmlsdGVyIC0tPlxuICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiZmlsdGVyRXhwYW5zaW9uUGFuZWwudG9nZ2xlKClcIj5cbiAgICA8bWF0LWljb24gW21hdEJhZGdlXT1cImZpbHRlckNyaXRlcmlhQ291bnRcIlxuICAgICAgICAgICAgICBbbWF0QmFkZ2VIaWRkZW5dPVwiZmlsdGVySXNFbXB0eVwiXG4gICAgICAgICAgICAgIG1hdEJhZGdlQ29sb3I9XCJhY2NlbnRcIlxuICAgICAgICAgICAgICBtYXRCYWRnZVNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgICAgIG1hdEJhZGdlUG9zaXRpb249XCJhYm92ZSBhZnRlclwiPmZpbHRlcl9saXN0X2FsdFxuICAgIDwvbWF0LWljb24+XG4gIDwvYnV0dG9uPlxuXG48L21hdC10b29sYmFyPlxuXG48aW9uLWNvbnRlbnQgY2xhc3M9XCJpb24tbm8tcGFkZGluZ1wiPlxuXG4gIDwhLS0gc2VhcmNoIC0tPlxuICA8bWF0LWV4cGFuc2lvbi1wYW5lbCAjZmlsdGVyRXhwYW5zaW9uUGFuZWxcbiAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmaWx0ZXItcGFuZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaW9uLW5vLXBhZGRpbmddPVwibW9iaWxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmZpbHRlci1wYW5lbC1mbG9hdGluZ109XCJmaWx0ZXJQYW5lbEZsb2F0aW5nXCI+XG4gICAgPGZvcm0gY2xhc3M9XCJmb3JtLWNvbnRhaW5lclwiIFtmb3JtR3JvdXBdPVwiZmlsdGVyRm9ybVwiIChuZ1N1Ym1pdCk9XCJvblJlZnJlc2guZW1pdCgpXCI+XG4gICAgICA8aW9uLWdyaWQ+XG4gICAgICAgIDxpb24tcm93PlxuICAgICAgICAgIDxpb24tY29sPlxuICAgICAgICAgICAgPCEtLSBzZWFyY2ggLS0+XG4gICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbcGxhY2Vob2xkZXJdPVwiJ1NFVFRJTkdTLkZJTFRFUi5TRUFSQ0gnfHRyYW5zbGF0ZVwiIGZvcm1Db250cm9sTmFtZT1cInNlYXJjaFRleHRcIj5cblxuICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBtYXRTdWZmaXggdGFiaW5kZXg9XCItMVwiXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNsZWFyQ29udHJvbFZhbHVlKCRldmVudCwgZmlsdGVyRm9ybS5jb250cm9scy5zZWFyY2hUZXh0KVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2hpZGRlbl09XCJmaWx0ZXJGb3JtLmNvbnRyb2xzLnNlYXJjaFRleHQuZGlzYWJsZWQgfHwgIWZpbHRlckZvcm0uY29udHJvbHMuc2VhcmNoVGV4dC52YWx1ZVwiPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICA8L2lvbi1jb2w+XG5cbiAgICAgICAgICA8aW9uLWNvbD5cbiAgICAgICAgICAgIDxtYXQtYm9vbGVhbi1maWVsZFxuICAgICAgICAgICAgICBbc3R5bGVdPVwiJ2NoZWNrYm94J1wiXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIm5vdERlZmF1bHRPbmx5XCJcbiAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidTRVRUSU5HUy5GSUxURVIuT05MWV9OT1RfREVGQVVMVCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICBmbG9hdExhYmVsPVwiYWx3YXlzXCJcbiAgICAgICAgICAgID48L21hdC1ib29sZWFuLWZpZWxkPlxuICAgICAgICAgIDwvaW9uLWNvbD5cbiAgICAgICAgPC9pb24tcm93PlxuICAgICAgPC9pb24tZ3JpZD5cbiAgICA8L2Zvcm0+XG5cbiAgICA8bWF0LWFjdGlvbi1yb3c+XG4gICAgICA8IS0tIENvdW50ZXIgIC0tPlxuICAgICAgPGlvbi1sYWJlbCBbaGlkZGVuXT1cIihsb2FkaW5nU3ViamVjdHxhc3luYykgfHwgZmlsdGVyRm9ybS5kaXJ0eVwiXG4gICAgICAgICAgICAgICAgIFtjb2xvcl09XCJlbXB0eSAmJiAnZGFuZ2VyJ1wiXG4gICAgICAgICAgICAgICAgIGNsYXNzPVwiaW9uLXBhZGRpbmdcIj5cbiAgICAgICAge3sgKHRvdGFsUm93Q291bnQgPyAnQ09NTU9OLlJFU1VMVF9DT1VOVCcgOiAnQ09NTU9OLk5PX1JFU1VMVCcpIHwgdHJhbnNsYXRlOiB7XG4gICAgICAgIGNvdW50OiAodG90YWxSb3dDb3VudCB8XG4gICAgICAgICAgbnVtYmVyRm9ybWF0KVxuICAgICAgfSB9fVxuICAgICAgPC9pb24tbGFiZWw+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJ0b29sYmFyLXNwYWNlclwiPjwvZGl2PlxuXG4gICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBjb2xvcj1cImFjY2VudFwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiZmlsdGVyUGFuZWxGbG9hdGluZ1wiXG4gICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVGaWx0ZXJQYW5lbEZsb2F0aW5nKClcIlxuICAgICAgICAgICAgICBjbGFzcz1cImhpZGRlbi14cyBoaWRkZW4tc20gaGlkZGVuLW1kXCJcbiAgICAgICAgICAgICAgW3RpdGxlXT1cIihmaWx0ZXJQYW5lbEZsb2F0aW5nID8gJ0NPTU1PTi5CVE5fRVhQQU5EJyA6ICdDT01NT04uQlROX0hJREUnKSB8dHJhbnNsYXRlXCI+XG4gICAgICAgIDxtYXQtaWNvbj48c3BhbiBzdHlsZT1cInRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTtcIj57e2ZpbHRlclBhbmVsRmxvYXRpbmcgPyAnJiN4YmI7JyA6ICcmI3hhYjsnfX08L3NwYW4+PC9tYXQtaWNvbj5cbiAgICAgIDwvYnV0dG9uPlxuXG4gICAgICA8IS0tIENsb3NlIHBhbmVsIC0tPlxuICAgICAgPGlvbi1idXR0b24gbWF0LWJ1dHRvbiBmaWxsPVwiY2xlYXJcIiBjb2xvcj1cImRhcmtcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNsb3NlRmlsdGVyUGFuZWwoKVwiXG4gICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwibG9hZGluZ1N1YmplY3R8YXN5bmNcIj5cbiAgICAgICAgPGlvbi10ZXh0IHRyYW5zbGF0ZT5DT01NT04uQlROX0NMT1NFPC9pb24tdGV4dD5cbiAgICAgIDwvaW9uLWJ1dHRvbj5cblxuICAgICAgPCEtLSBTZWFyY2ggYnV0dG9uIC0tPlxuICAgICAgPGlvbi1idXR0b24gbWF0LWJ1dHRvblxuICAgICAgICAgICAgICAgICAgW2NvbG9yXT1cImZpbHRlckZvcm0uZGlydHkgPyAndGVydGlhcnknIDogJ2RhcmsnXCJcbiAgICAgICAgICAgICAgICAgIFtmaWxsXT1cImZpbHRlckZvcm0uZGlydHkgPyAnc29saWQnIDogJ2NsZWFyJ1wiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYXBwbHlGaWx0ZXJBbmRDbG9zZVBhbmVsKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImxvYWRpbmdTdWJqZWN0fGFzeW5jXCI+XG4gICAgICAgIDxpb24tdGV4dCB0cmFuc2xhdGU+Q09NTU9OLkJUTl9BUFBMWTwvaW9uLXRleHQ+XG4gICAgICA8L2lvbi1idXR0b24+XG5cbiAgICA8L21hdC1hY3Rpb24tcm93PlxuICA8L21hdC1leHBhbnNpb24tcGFuZWw+XG5cbiAgPGlvbi1yZWZyZXNoZXIgc2xvdD1cImZpeGVkXCIgKm5nSWY9XCJtb2JpbGVcIiAoaW9uUmVmcmVzaCk9XCJkb1JlZnJlc2goJGV2ZW50KVwiPlxuICAgIDxpb24tcmVmcmVzaGVyLWNvbnRlbnQ+PC9pb24tcmVmcmVzaGVyLWNvbnRlbnQ+XG4gIDwvaW9uLXJlZnJlc2hlcj5cblxuICA8IS0tIHRhYmxlIC0tPlxuICA8ZGl2IGNsYXNzPVwidGFibGUtY29udGFpbmVyXCI+XG4gICAgPHRhYmxlICN0YWJsZSBtYXQtdGFibGUgbWF0U29ydCBtYXRTb3J0RGlzYWJsZUNsZWFyXG4gICAgICAgICAgIFtkYXRhU291cmNlXT1cImRhdGFTb3VyY2VcIlxuICAgICAgICAgICBbbWF0U29ydEFjdGl2ZV09XCJkZWZhdWx0U29ydEJ5XCJcbiAgICAgICAgICAgW21hdFNvcnREaXJlY3Rpb25dPVwiZGVmYXVsdFNvcnREaXJlY3Rpb25cIlxuICAgICAgICAgICBbdHJhY2tCeV09XCJ0cmFja0J5Rm5cIj5cblxuICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJzZWxlY3RcIj5cbiAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBbY2xhc3MuY2RrLXZpc3VhbGx5LWhpZGRlbl09XCJ0cnVlXCI+PC90aD5cbiAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHJvd1wiIFtjbGFzcy5jZGstdmlzdWFsbHktaGlkZGVuXT1cInRydWVcIj48L3RkPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDwhLS0gaWQgY29sdW1uIChoaWRkZW4pIC0tPlxuICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJpZFwiPlxuICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIFtjbGFzcy5jZGstdmlzdWFsbHktaGlkZGVuXT1cIiFkZWJ1Z1wiPjwvdGg+XG4gICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCByb3dcIiBbY2xhc3MuY2RrLXZpc3VhbGx5LWhpZGRlbl09XCIhZGVidWdcIj5cbiAgICAgICAgICB7eyByb3cuY3VycmVudERhdGEuaWQgfX1cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8IS0tIGRlZmluaXRpb24gY29sdW1uIC0tPlxuICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJkZWZpbml0aW9uXCI+XG4gICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgbWF0LXNvcnQtaGVhZGVyPlxuICAgICAgICAgIDxpb24tbGFiZWw+e3sgaTE4bkNvbHVtblByZWZpeCArICdERUZJTklUSU9OJyB8IHRyYW5zbGF0ZSB9fTwvaW9uLWxhYmVsPlxuICAgICAgICA8L3RoPlxuICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgcm93XCI+XG48IS0tICAgICAgICAgIDxtYXQtYXV0b2NvbXBsZXRlLWZpZWxkLS0+XG48IS0tICAgICAgICAgICAgKm5nSWY9XCJyb3cuaWQgPT09IC0xOyBlbHNlIHJlYWRPbmx5RGVmaW5pdGlvblwiLS0+XG48IS0tICAgICAgICAgICAgZmxvYXRMYWJlbD1cIm5ldmVyXCItLT5cbjwhLS0gICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwicm93LnZhbGlkYXRvciB8IGZvcm1HZXRDb250cm9sIDogJ2RlZmluaXRpb24nXCItLT5cbjwhLS0gICAgICAgICAgICBbY29uZmlnXT1cImF1dG9jb21wbGV0ZUZpZWxkcy5kZWZpbml0aW9uXCItLT5cbjwhLS0gICAgICAgICAgICBbcmVxdWlyZWRdPVwidHJ1ZVwiLS0+XG48IS0tICAgICAgICAgID48L21hdC1hdXRvY29tcGxldGUtZmllbGQ+LS0+XG48IS0tICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjcmVhZE9ubHlEZWZpbml0aW9uPi0tPlxuICAgICAgICAgICAge3sgcm93LmN1cnJlbnREYXRhIHwgcHJvcGVydHlHZXQgOiAnZGVmaW5pdGlvbi50cmFuc2xhdGVkTmFtZScgfX1cbjwhLS0gICAgICAgICAgPC9uZy10ZW1wbGF0ZT4tLT5cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8IS0tIHZhbHVlIGNvbHVtbiAtLT5cbiAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwidmFsdWVcIj5cbiAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj5cbiAgICAgICAgICA8aW9uLWxhYmVsPnt7IGkxOG5Db2x1bW5QcmVmaXggKyAnVkFMVUUnIHwgdHJhbnNsYXRlIH19PC9pb24tbGFiZWw+XG4gICAgICAgIDwvdGg+XG4gICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCByb3dcIj5cbiAgICAgICAgICA8YXBwLWZvcm0tZmllbGRcbiAgICAgICAgICAgICpuZ0lmPVwicm93LnZhbGlkYXRvciB8IGZvcm1HZXRWYWx1ZTogJ2lkJ1wiXG4gICAgICAgICAgICBmbG9hdExhYmVsPVwibmV2ZXJcIlxuICAgICAgICAgICAgW2RlZmluaXRpb25dPVwiZGVmaW5pdGlvbnNNYXBCeUtleVtyb3cudmFsaWRhdG9yIHwgZm9ybUdldFZhbHVlOiAnaWQnXVwiXG4gICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwicm93LnZhbGlkYXRvciB8IGZvcm1HZXRDb250cm9sOid2YWx1ZSdcIlxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImkxOG5Db2x1bW5QcmVmaXggKyAnVkFMVUUnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgIFtyZXF1aXJlZF09XCJ0cnVlXCI+XG4gICAgICAgICAgPC9hcHAtZm9ybS1maWVsZD5cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8IS0tIEFjdGlvbnMgYnV0dG9ucyBjb2x1bW4gLS0+XG4gICAgICA8YXBwLWFjdGlvbnMtY29sdW1uXG4gICAgICAgIFtzdGlja3lFbmRdPVwidHJ1ZVwiXG4gICAgICAgIFtjYW5DYW5jZWxdPVwiZmFsc2VcIlxuICAgICAgICBbY2FuRGVsZXRlXT1cImZhbHNlXCJcbiAgICAgICAgW2RpcnR5SWNvbl09XCJmYWxzZVwiXG4gICAgICAgIFtjZWxsVGVtcGxhdGVdPVwiY2VsbEluamVjdGlvblwiPlxuXG4gICAgICAgIDwhLS0gY2VsbCBpbmplY3Rpb24tLT5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNjZWxsSW5qZWN0aW9uIGxldC1yb3c+XG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cIiFtb2JpbGUgJiYgIWRpc2FibGVkICYmIChyb3cudmFsaWRhdG9yIHwgZm9ybUdldFZhbHVlIDogJ3ZhbHVlJykgIT09IChyb3cudmFsaWRhdG9yIHwgZm9ybUdldFZhbHVlIDogJ2RlZmluaXRpb24nKS5kZWZhdWx0VmFsdWVcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzLnZpc2libGUtaG92ZXItcm93XT1cIiFtb2JpbGVcIlxuICAgICAgICAgICAgICAgICAgW3RhYmluZGV4XT1cIi0xXCJcbiAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCInU0VUVElOR1MuQlROX1JFU0VUX1BST1BFUlRZJ3x0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlc2V0UHJvcGVydHkoJGV2ZW50LCByb3cpXCI+XG4gICAgICAgICAgICA8bWF0LWljb24+dW5kbzwvbWF0LWljb24+XG4gICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgPC9hcHAtYWN0aW9ucy1jb2x1bW4+XG5cbiAgICAgIDx0ciBtYXQtaGVhZGVyLXJvdyAqbWF0SGVhZGVyUm93RGVmPVwiZGlzcGxheWVkQ29sdW1uczsgc3RpY2t5OiB0cnVlXCI+PC90cj5cbiAgICAgIDx0ciBtYXQtcm93ICptYXRSb3dEZWY9XCJsZXQgcm93OyBjb2x1bW5zOiBkaXNwbGF5ZWRDb2x1bW5zO1wiXG4gICAgICAgICAgW2NsYXNzLm1hdC1yb3ctc2VsZWN0ZWRdPVwicm93LmVkaXRpbmdcIlxuICAgICAgICAgIFtjbGFzcy5tYXQtcm93LWVycm9yXT1cInJvdy52YWxpZGF0b3I/LmludmFsaWRcIlxuICAgICAgICAgIFtjbGFzcy5tYXQtcm93LWRpcnR5XT1cInJvdy52YWxpZGF0b3I/LmRpcnR5XCJcbiAgICAgICAgICAoY2xpY2spPVwiY2xpY2tSb3coJGV2ZW50LCByb3cpXCJcbiAgICAgICAgICAoa2V5ZG93bi5lc2NhcGUpPVwiZXNjYXBlRWRpdGluZ1JvdygkZXZlbnQpXCJcbiAgICAgICAgICBbY2RrVHJhcEZvY3VzXT1cInJvdy52YWxpZGF0b3I/LmludmFsaWRcIj48L3RyPlxuICAgIDwvdGFibGU+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibG9hZGluZ1N1YmplY3R8YXN5bmM7IGVsc2Ugbm9SZXN1bHRcIj5cbiAgICAgIDxpb24taXRlbT5cbiAgICAgICAgPGlvbi1za2VsZXRvbi10ZXh0IGFuaW1hdGVkPjwvaW9uLXNrZWxldG9uLXRleHQ+XG4gICAgICA8L2lvbi1pdGVtPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLXRlbXBsYXRlICNub1Jlc3VsdD5cbiAgICAgIDxpb24taXRlbSAqbmdJZj1cInRvdGFsUm93Q291bnQgPT09IDBcIj5cbiAgICAgICAgPGlvbi10ZXh0IGNvbG9yPVwiZGFuZ2VyXCIgY2xhc3M9XCJ0ZXh0LWl0YWxpY1wiIHRyYW5zbGF0ZT5DT01NT04uTk9fUkVTVUxUPC9pb24tdGV4dD5cbiAgICAgIDwvaW9uLWl0ZW0+XG4gICAgPC9uZy10ZW1wbGF0ZT5cblxuICA8L2Rpdj5cbjwvaW9uLWNvbnRlbnQ+XG4iXX0=
|
|
264
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydGllcy50YWJsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29yZS9mb3JtL3Byb3BlcnRpZXMvcHJvcGVydGllcy50YWJsZS50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29yZS9mb3JtL3Byb3BlcnRpZXMvcHJvcGVydGllcy50YWJsZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNoRSxPQUFPLEVBQUMsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQVksS0FBSyxFQUFVLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN4SCxPQUFPLEVBQUMsb0JBQW9CLEVBQUUsc0JBQXNCLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUNyRixPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSxzREFBc0QsQ0FBQztBQUM3RixPQUFPLEVBQUMsTUFBTSxFQUF5QixXQUFXLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQUM3RixPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSwrQ0FBK0MsQ0FBQztBQUNsRixPQUFPLEVBQXdELFVBQVUsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRWpHLE9BQU8sRUFBQyxlQUFlLEVBQUUsUUFBUSxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFFcEUsT0FBTyxFQUFjLFdBQVcsRUFBQyxNQUFNLDRDQUE0QyxDQUFDO0FBRXBGLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSx3Q0FBd0MsQ0FBQztBQUNuRSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFFL0QsT0FBTyxFQUFDLFlBQVksRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDekQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGVB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Q0FBQyxDQUFDLEVBQUUsS0FBSyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxDQUFDO1FBQy9ELE9BQU8sUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUM7SUFDM0QsQ0FBQzs7Z0hBdExVLGtCQUFrQixnSEFpQm5CLFdBQVc7b0dBakJWLGtCQUFrQixtSEFMbEI7UUFDVCxFQUFDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxRQUFRLEVBQUUsdUJBQXVCLEVBQUM7S0FDdEUsZ0ZBT1UsaUJBQWlCLHFGQy9HOUIsc2hSQTJOQTs0RkRoSGEsa0JBQWtCO2tCQVQ5QixTQUFTOytCQUNFLHNCQUFzQixhQUdyQjt3QkFDVCxFQUFDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxRQUFRLEVBQUUsdUJBQXVCLEVBQUM7cUJBQ3RFLG1CQUNnQix1QkFBdUIsQ0FBQyxNQUFNOzswQkFtQjVDLE1BQU07MkJBQUMsV0FBVzs0Q0FmWixXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ3dDLG9CQUFvQjtzQkFBakUsU0FBUzt1QkFBQyxpQkFBaUIsRUFBRSxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FwcEluTWVtb3J5VGFibGV9IGZyb20gJy4uLy4uL3RhYmxlL21lbW9yeS10YWJsZS5jbGFzcyc7XG5pbXBvcnQge0NoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIERpcmVjdGl2ZSwgSW5qZWN0LCBJbmplY3RvciwgSW5wdXQsIE9uSW5pdCwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7UkVTRVJWRURfRU5EX0NPTFVNTlMsIFJFU0VSVkVEX1NUQVJUX0NPTFVNTlN9IGZyb20gJy4uLy4uL3RhYmxlL3RhYmxlLm1vZGVsJztcbmltcG9ydCB7SW5NZW1vcnlFbnRpdGllc1NlcnZpY2V9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9zZXJ2aWNlcy9tZW1vcnktZW50aXR5LXNlcnZpY2UuY2xhc3MnO1xuaW1wb3J0IHtFbnRpdHksIEVudGl0eUFzT2JqZWN0T3B0aW9ucywgRW50aXR5VXRpbHN9IGZyb20gJy4uLy4uL3NlcnZpY2VzL21vZGVsL2VudGl0eS5tb2RlbCc7XG5pbXBvcnQge0FwcFZhbGlkYXRvclNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3ZhbGlkYXRvci9iYXNlLnZhbGlkYXRvci5jbGFzcyc7XG5pbXBvcnQge0Fic3RyYWN0Q29udHJvbCwgVW50eXBlZEZvcm1CdWlsZGVyLCBVbnR5cGVkRm9ybUdyb3VwLCBWYWxpZGF0b3JzfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge0Zvcm1GaWVsZERlZmluaXRpb24sIEZvcm1GaWVsZERlZmluaXRpb25NYXB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9mb3JtL2ZpZWxkLm1vZGVsJztcbmltcG9ydCB7aXNOb3RFbXB0eUFycmF5LCBpc05vdE5pbH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2Z1bmN0aW9ucyc7XG5pbXBvcnQge0ZpbHRlckZufSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvc2VydmljZXMvZW50aXR5LXNlcnZpY2UuY2xhc3MnO1xuaW1wb3J0IHtFbnZpcm9ubWVudCwgRU5WSVJPTk1FTlR9IGZyb20gJy4uLy4uLy4uLy4uL2Vudmlyb25tZW50cy9lbnZpcm9ubWVudC5jbGFzcyc7XG5pbXBvcnQge1RhYmxlRWxlbWVudH0gZnJvbSAnQGUtaXMvbmd4LW1hdGVyaWFsLXRhYmxlJztcbmltcG9ydCB7RW50aXR5Q2xhc3N9IGZyb20gJy4uLy4uL3NlcnZpY2VzL21vZGVsL2VudGl0eS5kZWNvcmF0b3JzJztcbmltcG9ydCB7RW50aXR5RmlsdGVyfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9tb2RlbC9maWx0ZXIubW9kZWwnO1xuaW1wb3J0IHtPYmplY3RNYXB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC90eXBlcyc7XG5pbXBvcnQge2RlYm91bmNlVGltZSwgZmlsdGVyLCB0YXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7QXBwRm9ybVV0aWxzfSBmcm9tICcuLi9mb3JtLnV0aWxzJztcbmltcG9ydCB7TWF0RXhwYW5zaW9uUGFuZWx9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2V4cGFuc2lvbic7XG5cbmludGVyZmFjZSBUcmFuc2xhdGVkRm9ybUZpZWxkRGVmaW5pdGlvbiBleHRlbmRzIEZvcm1GaWVsZERlZmluaXRpb24ge1xuICB0cmFuc2xhdGVkTmFtZT86IHN0cmluZztcbn1cblxuQEVudGl0eUNsYXNzKHt0eXBlbmFtZTogJ1Byb3BlcnR5RW50aXR5J30pXG5leHBvcnQgY2xhc3MgUHJvcGVydHlFbnRpdHkgZXh0ZW5kcyBFbnRpdHk8UHJvcGVydHlFbnRpdHksIHN0cmluZz4ge1xuICBzdGF0aWMgZnJvbU9iamVjdDogKHNvdXJjZTogYW55LCBvcHRzPzogYW55KSA9PiBQcm9wZXJ0eUVudGl0eTtcblxuICBkZWZpbml0aW9uOiBUcmFuc2xhdGVkRm9ybUZpZWxkRGVmaW5pdGlvbiA9IG51bGw7XG4gIHZhbHVlOiBhbnkgPSBudWxsO1xuXG4gIGZyb21PYmplY3Qoc291cmNlOiBhbnkpIHtcbiAgICBzdXBlci5mcm9tT2JqZWN0KHNvdXJjZSk7XG4gICAgdGhpcy5pZCA9IHNvdXJjZS5kZWZpbml0aW9uPy5rZXkgfHwgc291cmNlLmlkO1xuICAgIHRoaXMuZGVmaW5pdGlvbiA9IHNvdXJjZS5kZWZpbml0aW9uO1xuICAgIHRoaXMudmFsdWUgPSBzb3VyY2UudmFsdWU7XG4gIH1cblxuICBhc09iamVjdChvcHRzPzogRW50aXR5QXNPYmplY3RPcHRpb25zKTogYW55IHtcbiAgICBjb25zdCB0YXJnZXQgPSBzdXBlci5hc09iamVjdChvcHRzKTtcbiAgICB0YXJnZXQuaWQgPSB0aGlzLmRlZmluaXRpb24ua2V5O1xuICAgIGRlbGV0ZSB0YXJnZXQuZGVmaW5pdGlvbjtcbiAgICByZXR1cm4gdGFyZ2V0O1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBQcm9wZXJ0eUVudGl0eUZpbHRlciBleHRlbmRzIEVudGl0eUZpbHRlcjxQcm9wZXJ0eUVudGl0eUZpbHRlciwgUHJvcGVydHlFbnRpdHk+IHtcbiAgc3RhdGljIGZyb21PYmplY3Q6IChzb3VyY2UsIG9wdHM/OiBhbnkpID0+IFByb3BlcnR5RW50aXR5RmlsdGVyO1xuXG4gIHNlYXJjaFRleHQ6IHN0cmluZztcbiAgbm90RGVmYXVsdE9ubHkgPSBmYWxzZTtcblxuICBmcm9tT2JqZWN0KHNvdXJjZTogYW55KSB7XG4gICAgc3VwZXIuZnJvbU9iamVjdChzb3VyY2UpO1xuICAgIHRoaXMuc2VhcmNoVGV4dCA9IHNvdXJjZS5zZWFyY2hUZXh0O1xuICAgIHRoaXMubm90RGVmYXVsdE9ubHkgPSBzb3VyY2Uubm90RGVmYXVsdE9ubHk7XG4gIH1cblxuICBhc09iamVjdChvcHRzPzogRW50aXR5QXNPYmplY3RPcHRpb25zKTogYW55IHtcbiAgICByZXR1cm4gc3VwZXIuYXNPYmplY3Qob3B0cyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYnVpbGRGaWx0ZXIoKTogRmlsdGVyRm48UHJvcGVydHlFbnRpdHk+W10ge1xuICAgIGNvbnN0IGZpbHRlckZucyA9IHN1cGVyLmJ1aWxkRmlsdGVyKCk7XG5cbiAgICBjb25zdCBzZWFyY2hUZXh0RmlsdGVyID0gRW50aXR5VXRpbHMuc2VhcmNoVGV4dEZpbHRlcignZGVmaW5pdGlvbi50cmFuc2xhdGVkTmFtZScsIHRoaXMuc2VhcmNoVGV4dCk7XG4gICAgaWYgKHNlYXJjaFRleHRGaWx0ZXIpIGZpbHRlckZucy5wdXNoKHNlYXJjaFRleHRGaWx0ZXIpO1xuXG4gICAgaWYgKHRoaXMubm90RGVmYXVsdE9ubHkpIHtcbiAgICAgIGZpbHRlckZucy5wdXNoKGRhdGEgPT4gaXNOb3ROaWwoZGF0YS52YWx1ZSkgJiYgZGF0YS5kZWZpbml0aW9uLmRlZmF1bHRWYWx1ZSAhPT0gZGF0YS52YWx1ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZpbHRlckZucztcbiAgfVxuXG4gIHByb3RlY3RlZCBpc0NyaXRlcmlhTm90RW1wdHkoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgICBpZiAoa2V5ID09PSAnbm90RGVmYXVsdE9ubHknKSByZXR1cm4gdmFsdWUgPT09IHRydWU7XG4gICAgcmV0dXJuIHN1cGVyLmlzQ3JpdGVyaWFOb3RFbXB0eShrZXksIHZhbHVlKTtcbiAgfVxufVxuXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBjbGFzcyBQcm9wZXJ0eUVudGl0eVZhbGlkYXRvciBleHRlbmRzIEFwcFZhbGlkYXRvclNlcnZpY2U8UHJvcGVydHlFbnRpdHk+IHtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgZm9ybUJ1aWxkZXI6IFVudHlwZWRGb3JtQnVpbGRlclxuICApIHtcbiAgICBzdXBlcihmb3JtQnVpbGRlciwgbnVsbCk7XG4gIH1cblxuICBnZXRGb3JtR3JvdXBDb25maWcoZGF0YT86IFByb3BlcnR5RW50aXR5KTogeyBbcDogc3RyaW5nXTogYW55IH0ge1xuICAgIHJldHVybiB7XG4gICAgICBpZDogW2RhdGE/LmlkIHx8IG51bGxdLFxuICAgICAgZGVmaW5pdGlvbjogW2RhdGE/LmRlZmluaXRpb24gfHwgbnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICB2YWx1ZTogW2RhdGE/LnZhbHVlIHx8IG51bGxdXG4gICAgfTtcbiAgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtcHJvcGVydGllcy10YWJsZScsXG4gIHRlbXBsYXRlVXJsOiAncHJvcGVydGllcy50YWJsZS5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJ3Byb3BlcnRpZXMudGFibGUuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICB7cHJvdmlkZTogUHJvcGVydHlFbnRpdHlWYWxpZGF0b3IsIHVzZUNsYXNzOiBQcm9wZXJ0eUVudGl0eVZhbGlkYXRvcn1cbiAgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgQXBwUHJvcGVydGllc1RhYmxlIGV4dGVuZHMgQXBwSW5NZW1vcnlUYWJsZTxQcm9wZXJ0eUVudGl0eSwgUHJvcGVydHlFbnRpdHlGaWx0ZXIsIHN0cmluZz4gaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIEBJbnB1dCgpIGRlZmluaXRpb25zOiBGb3JtRmllbGREZWZpbml0aW9uW107XG4gIEBJbnB1dCgpIHNob3dUb29sYmFyID0gdHJ1ZTtcbiAgQFZpZXdDaGlsZChNYXRFeHBhbnNpb25QYW5lbCwge3N0YXRpYzogdHJ1ZX0pIGZpbHRlckV4cGFuc2lvblBhbmVsOiBNYXRFeHBhbnNpb25QYW5lbDtcblxuICAvLyBhdmFpbGFibGVEZWZpbml0aW9ucyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRyYW5zbGF0ZWRGb3JtRmllbGREZWZpbml0aW9uW10+KFtdKTtcbiAgZGVmaW5pdGlvbnNNYXBCeUtleTogRm9ybUZpZWxkRGVmaW5pdGlvbk1hcCA9IHt9O1xuICB0cmFuc2xhdGlvbnNCeUtleTogT2JqZWN0TWFwPHN0cmluZz4gPSB7fTtcbiAgZmlsdGVyRm9ybTogVW50eXBlZEZvcm1Hcm91cDtcbiAgZmlsdGVyQ3JpdGVyaWFDb3VudCA9IDA7XG4gIGZpbHRlclBhbmVsRmxvYXRpbmcgPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJvdGVjdGVkIGZvcm1CdWlsZGVyOiBVbnR5cGVkRm9ybUJ1aWxkZXIsXG4gICAgcHJvdGVjdGVkIHZhbGlkYXRvclNlcnZpY2U6IFByb3BlcnR5RW50aXR5VmFsaWRhdG9yLFxuICAgIEBJbmplY3QoRU5WSVJPTk1FTlQpIGVudmlyb25tZW50OiBFbnZpcm9ubWVudFxuICApIHtcbiAgICBzdXBlcihcbiAgICAgIGluamVjdG9yLFxuICAgICAgWy4uLlJFU0VSVkVEX1NUQVJUX0NPTFVNTlMsICdkZWZpbml0aW9uJywgJ3ZhbHVlJywgLi4uUkVTRVJWRURfRU5EX0NPTFVNTlNdLFxuICAgICAgUHJvcGVydHlFbnRpdHksXG4gICAgICBuZXcgSW5NZW1vcnlFbnRpdGllc1NlcnZpY2UoUHJvcGVydHlFbnRpdHksIFByb3BlcnR5RW50aXR5RmlsdGVyLCB7XG4gICAgICAgIHNvcnRCeVJlcGxhY2VtZW50OiB7ZGVmaW5pdGlvbjogJ2RlZmluaXRpb24udHJhbnNsYXRlZE5hbWUnfVxuICAgICAgfSksXG4gICAgICB2YWxpZGF0b3JTZXJ2aWNlXG4gICAgKTtcblxuICAgIHRoaXMuaW5saW5lRWRpdGlvbiA9IHRydWU7XG4gICAgdGhpcy5kZWZhdWx0U29ydEJ5ID0gJ2RlZmluaXRpb24nO1xuICAgIHRoaXMuZGVmYXVsdFNvcnREaXJlY3Rpb24gPSAnYXNjJztcbiAgICB0aGlzLmRlYnVnID0gIWVudmlyb25tZW50Py5wcm9kdWN0aW9uO1xuXG4gICAgdGhpcy5maWx0ZXJGb3JtID0gZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgc2VhcmNoVGV4dDogW10sXG4gICAgICBub3REZWZhdWx0T25seTogW251bGxdXG4gICAgfSk7XG5cbiAgICB0aGlzLmF1dG9Mb2FkID0gZmFsc2U7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuXG4gICAgLy8gRmlsbCBvcHRpb25zIG1hcFxuICAgIHRoaXMuZGVmaW5pdGlvbnNNYXBCeUtleSA9IHt9O1xuICAgIHRoaXMuZGVmaW5pdGlvbnM/LmZvckVhY2gobyA9PiB7XG4gICAgICB0aGlzLmRlZmluaXRpb25zTWFwQnlLZXlbby5rZXldID0gbztcbiAgICB9KTtcblxuICAgIHRoaXMucmVnaXN0ZXJDZWxsVmFsdWVDaGFuZ2VzKCdkZWZpbml0aW9uJykuc3Vic2NyaWJlKChkZWZpbml0aW9uKSA9PiB7XG4gICAgICBpZiAoaXNOb3ROaWwoZGVmaW5pdGlvbikgJiYgdGhpcy5lZGl0ZWRSb3c/LmlkID09PSAtMSkge1xuICAgICAgICB0aGlzLmVkaXRlZFJvdy52YWxpZGF0b3IucGF0Y2hWYWx1ZSh7aWQ6IGRlZmluaXRpb24ua2V5LCB2YWx1ZTogZGVmaW5pdGlvbi5kZWZhdWx0VmFsdWV9KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMucmVnaXN0ZXJDZWxsVmFsdWVDaGFuZ2VzKCd2YWx1ZScpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLm1hcmtBc0RpcnR5KCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnJlZ2lzdGVyU3Vic2NyaXB0aW9uKFxuICAgICAgdGhpcy5maWx0ZXJGb3JtLnZhbHVlQ2hhbmdlc1xuICAgICAgICAucGlwZShcbiAgICAgICAgICBkZWJvdW5jZVRpbWUoMjUwKSxcbiAgICAgICAgICBmaWx0ZXIoKF8pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZhbGlkID0gdGhpcy5maWx0ZXJGb3JtLnZhbGlkO1xuICAgICAgICAgICAgaWYgKCF2YWxpZCAmJiB0aGlzLmRlYnVnKSBBcHBGb3JtVXRpbHMubG9nRm9ybUVycm9ycyh0aGlzLmZpbHRlckZvcm0pO1xuICAgICAgICAgICAgcmV0dXJuIHZhbGlkO1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIC8vIFVwZGF0ZSB0aGUgZmlsdGVyXG4gICAgICAgICAgdGFwKGpzb24gPT4gdGhpcy5zZXRGaWx0ZXIoanNvbikpLFxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKVxuICAgICk7XG5cbiAgICB0aGlzLnJlc2V0RmlsdGVyKCk7XG5cbiAgICB0aGlzLm1hcmtBc1JlYWR5KCk7XG4gIH1cblxuICBnZXQgdmFsdWUoKTogUHJvcGVydHlFbnRpdHlbXSB7XG4gICAgbGV0IHZhbHVlcyA9IHN1cGVyLnZhbHVlIHx8IFtdO1xuXG4gICAgLy8gcmVtb3ZlIHVuc2V0IG9wdGlvbnNcbiAgICB2YWx1ZXMgPSB2YWx1ZXMuZmlsdGVyKHByb3BlcnR5ID0+IGlzTm90TmlsKHByb3BlcnR5LnZhbHVlICE9PSBwcm9wZXJ0eS5kZWZpbml0aW9uLmRlZmF1bHRWYWx1ZSkpO1xuXG4gICAgcmV0dXJuIHZhbHVlcztcbiAgfVxuXG4gIHNldCB2YWx1ZShkYXRhOiBQcm9wZXJ0eUVudGl0eVtdKSB7XG4gICAgc3VwZXIudmFsdWUgPSBkYXRhO1xuICB9XG5cbiAgc2V0VmFsdWUodmFsdWU6IFByb3BlcnR5RW50aXR5W10sIG9wdHM/OiB7IGVtaXRFdmVudD86IGJvb2xlYW4gfSkge1xuXG4gICAgLy8gVXBkYXRlIHRyYW5zbGF0aW9uc1xuICAgIHRoaXMudHJhbnNsYXRpb25zQnlLZXkgPSBpc05vdEVtcHR5QXJyYXkodGhpcy5kZWZpbml0aW9ucykgPyB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KHRoaXMuZGVmaW5pdGlvbnMubWFwKGRlZiA9PiBkZWYubGFiZWwpKSA6IHt9O1xuXG4gICAgLy8gQnVpbGQgZW50aXRpZXNcbiAgICBjb25zdCBzb3VyY2UgPSAodmFsdWUgfHwgW10pLnNsaWNlKCk7XG4gICAgY29uc3QgdGFyZ2V0OiBQcm9wZXJ0eUVudGl0eVtdID0gW107XG4gICAgdGFyZ2V0LnB1c2goXG4gICAgICAuLi50aGlzLmRlZmluaXRpb25zXG4gICAgICAgIC5tYXAoZGVmaW5pdGlvbiA9PiBQcm9wZXJ0eUVudGl0eS5mcm9tT2JqZWN0KHtcbiAgICAgICAgICBpZDogZGVmaW5pdGlvbi5rZXksXG4gICAgICAgICAgLy8gdHJhbnNsYXRlIGRlZmluaXRpb24gbGFiZWxcbiAgICAgICAgICBkZWZpbml0aW9uOiB0aGlzLnRvVHJhbnNsYXRlZEZvcm1GaWVsZERlZmluaXRpb24oZGVmaW5pdGlvbiksXG4gICAgICAgICAgLy8gZ2V0IHVzZXIgdmFsdWUgb3IgZGVmYXVsdCB2YWx1ZVxuICAgICAgICAgIHZhbHVlOiB0aGlzLnRvVmFsdWUoc291cmNlLCBkZWZpbml0aW9uKVxuICAgICAgICB9KSlcbiAgICApO1xuXG4gICAgc3VwZXIuc2V0VmFsdWUodGFyZ2V0LCBvcHRzKTtcbiAgfVxuXG4gIGNsZWFyQ29udHJvbFZhbHVlKGV2ZW50OiBFdmVudCwgZm9ybUNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IGJvb2xlYW4ge1xuICAgIGlmIChldmVudCkgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IC8vIEF2b2lkIHRvIGVudGVyIGlucHV0IHRoZSBmaWVsZFxuICAgIGZvcm1Db250cm9sLnNldFZhbHVlKG51bGwpO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJlc2V0RmlsdGVyKHZhbHVlPzogYW55LCBvcHRzPzogeyBlbWl0RXZlbnQ6IGJvb2xlYW4gfSkge1xuICAgIGNvbnN0IGYgPSA8UHJvcGVydHlFbnRpdHlGaWx0ZXI+eyBzZWFyY2hUZXh0OiBudWxsLCBub3REZWZhdWx0T25seTogZmFsc2UsIC4uLnZhbHVlfTtcbiAgICB0aGlzLmZpbHRlckZvcm0ucmVzZXQoZiwgb3B0cyk7XG4gICAgdGhpcy5zZXRGaWx0ZXIoZiB8fCBudWxsLCBvcHRzKTtcbiAgICB0aGlzLmZpbHRlckNyaXRlcmlhQ291bnQgPSAwO1xuICAgIGlmICh0aGlzLmZpbHRlckV4cGFuc2lvblBhbmVsICYmIHRoaXMuZmlsdGVyUGFuZWxGbG9hdGluZykgdGhpcy5maWx0ZXJFeHBhbnNpb25QYW5lbC5jbG9zZSgpO1xuICAgIHRoaXMucmVzZXRFcnJvcigpO1xuICB9XG5cbiAgc2V0RmlsdGVyKGZpbHRlcjogUHJvcGVydHlFbnRpdHlGaWx0ZXIsIG9wdHM/OiB7IGVtaXRFdmVudD86IGJvb2xlYW4gfSkge1xuICAgIGZpbHRlciA9IHRoaXMuZGF0YVNvdXJjZS5kYXRhU2VydmljZS5hc0ZpbHRlcihmaWx0ZXIpO1xuXG4gICAgLy8gVXBkYXRlIGNyaXRlcmlhIGNvdW50XG4gICAgY29uc3QgY3JpdGVyaWFDb3VudCA9IGZpbHRlci5jb3VudE5vdEVtcHR5Q3JpdGVyaWEoKTtcbiAgICBpZiAoY3JpdGVyaWFDb3VudCAhPT0gdGhpcy5maWx0ZXJDcml0ZXJpYUNvdW50KSB7XG4gICAgICB0aGlzLmZpbHRlckNyaXRlcmlhQ291bnQgPSBjcml0ZXJpYUNvdW50O1xuICAgICAgdGhpcy5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvLyBVcGRhdGUgdGhlIGZvcm0gY29udGVudFxuICAgIGlmICh0aGlzLmZpbHRlckZvcm0gJiYgKCFvcHRzIHx8IG9wdHMuZW1pdEV2ZW50ICE9PSBmYWxzZSkpIHtcbiAgICAgIHRoaXMuZmlsdGVyRm9ybS5wYXRjaFZhbHVlKGZpbHRlci5hc09iamVjdCgpLCB7ZW1pdEV2ZW50OiBmYWxzZX0pO1xuICAgIH1cblxuICAgIHN1cGVyLnNldEZpbHRlcihmaWx0ZXIgYXMgUHJvcGVydHlFbnRpdHlGaWx0ZXIsIG9wdHMpO1xuICB9XG5cbiAgZ2V0IGZpbHRlcklzRW1wdHkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZmlsdGVyQ3JpdGVyaWFDb3VudCA9PT0gMDtcbiAgfVxuXG4gIHRvZ2dsZUZpbHRlclBhbmVsRmxvYXRpbmcoKSB7XG4gICAgdGhpcy5maWx0ZXJQYW5lbEZsb2F0aW5nID0gIXRoaXMuZmlsdGVyUGFuZWxGbG9hdGluZztcbiAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgY2xvc2VGaWx0ZXJQYW5lbCgpIHtcbiAgICBpZiAodGhpcy5maWx0ZXJFeHBhbnNpb25QYW5lbCkgdGhpcy5maWx0ZXJFeHBhbnNpb25QYW5lbC5jbG9zZSgpO1xuICAgIHRoaXMuZmlsdGVyUGFuZWxGbG9hdGluZyA9IHRydWU7XG4gIH1cblxuICBhcHBseUZpbHRlckFuZENsb3NlUGFuZWwoZXZlbnQ/OiBFdmVudCkge1xuICAgIGNvbnN0IGZpbHRlciA9IHRoaXMuZmlsdGVyRm9ybS52YWx1ZTtcbiAgICB0aGlzLnNldEZpbHRlcihmaWx0ZXIsIHtlbWl0RXZlbnQ6IGZhbHNlfSk7XG4gICAgdGhpcy5vblJlZnJlc2guZW1pdChldmVudCk7XG4gICAgaWYgKHRoaXMuZmlsdGVyRXhwYW5zaW9uUGFuZWwgJiYgdGhpcy5maWx0ZXJQYW5lbEZsb2F0aW5nKSB0aGlzLmZpbHRlckV4cGFuc2lvblBhbmVsLmNsb3NlKCk7XG4gIH1cblxuICB0b1RyYW5zbGF0ZWRGb3JtRmllbGREZWZpbml0aW9uID0gKGRlZmluaXRpb246IEZvcm1GaWVsZERlZmluaXRpb24pOiBUcmFuc2xhdGVkRm9ybUZpZWxkRGVmaW5pdGlvbiA9PlxuICAgICh7Li4uZGVmaW5pdGlvbiwgdHJhbnNsYXRlZE5hbWU6IHRoaXMudHJhbnNsYXRpb25zQnlLZXlbZGVmaW5pdGlvbi5sYWJlbF19KTtcblxuICByZXNldFByb3BlcnR5KGV2ZW50OiBVSUV2ZW50LCByb3c6IFRhYmxlRWxlbWVudDxQcm9wZXJ0eUVudGl0eT4pIHtcbiAgICBldmVudD8ucHJldmVudERlZmF1bHQoKTtcbiAgICByb3cudmFsaWRhdG9yLnBhdGNoVmFsdWUoeyB2YWx1ZTogcm93LmN1cnJlbnREYXRhLmRlZmluaXRpb24uZGVmYXVsdFZhbHVlIH0pO1xuICAgIHRoaXMubWFya1Jvd0FzRGlydHkoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB0b1ZhbHVlKHZhbHVlczogUHJvcGVydHlFbnRpdHlbXSwgZGVmaW5pdGlvbjogRm9ybUZpZWxkRGVmaW5pdGlvbik6IGFueSB7XG4gICAgY29uc3QgdmFsdWUgPSB2YWx1ZXMuZmluZCh2ID0+IHYuaWQgPT09IGRlZmluaXRpb24ua2V5KT8udmFsdWU7XG4gICAgcmV0dXJuIGlzTm90TmlsKHZhbHVlKSA/IHZhbHVlIDogZGVmaW5pdGlvbi5kZWZhdWx0VmFsdWU7XG4gIH1cbn1cbiIsIjxtYXQtdG9vbGJhciAqbmdJZj1cInNob3dUb29sYmFyXCIgW2NsYXNzLmV4cGFuZGVkXT1cImZpbHRlckV4cGFuc2lvblBhbmVsLmV4cGFuZGVkXCI+XG5cbiAgPCEtLSBSZWZyZXNoIC0tPlxuICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAqbmdJZj1cIiFtb2JpbGVcIlxuICAgICAgICAgIFt0aXRsZV09XCInQ09NTU9OLkJUTl9SRUZSRVNIJ3x0cmFuc2xhdGVcIlxuICAgICAgICAgIChjbGljayk9XCJvblJlZnJlc2guZW1pdCgpXCI+XG4gICAgPG1hdC1pY29uPnJlZnJlc2g8L21hdC1pY29uPlxuICA8L2J1dHRvbj5cblxuICA8aW9uLWl0ZW0gKm5nSWY9XCIhbW9iaWxlICYmIGVycm9yOyBsZXQgZXJyb3JcIiBsaW5lcz1cIm5vbmVcIj5cbiAgICA8aW9uLWljb24gY29sb3I9XCJkYW5nZXJcIiBzbG90PVwic3RhcnRcIiBuYW1lPVwiYWxlcnQtY2lyY2xlXCI+PC9pb24taWNvbj5cbiAgICA8aW9uLWxhYmVsIGNvbG9yPVwiZGFuZ2VyXCIgW2lubmVySFRNTF09XCJlcnJvcnx0cmFuc2xhdGVcIj48L2lvbi1sYWJlbD5cbiAgPC9pb24taXRlbT5cblxuICA8ZGl2IGNsYXNzPVwidG9vbGJhci1zcGFjZXJcIj48L2Rpdj5cblxuICA8IS0tIFJlc2V0IGZpbHRlciAtLT5cbiAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cInJlc2V0RmlsdGVyKClcIlxuICAgICAgICAgICpuZ0lmPVwiZmlsdGVyQ3JpdGVyaWFDb3VudFwiPlxuICAgIDxtYXQtaWNvbiBjb2xvcj1cImFjY2VudFwiPmZpbHRlcl9saXN0X2FsdDwvbWF0LWljb24+XG4gICAgPG1hdC1pY29uIGNsYXNzPVwiaWNvbi1zZWNvbmRhcnlcIiBzdHlsZT1cImxlZnQ6IDE2cHg7IHRvcDogNXB4OyBmb250LXdlaWdodDogYm9sZDtcIj5jbG9zZTwvbWF0LWljb24+XG4gIDwvYnV0dG9uPlxuXG4gIDwhLS0gU2hvdyBmaWx0ZXIgLS0+XG4gIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJmaWx0ZXJFeHBhbnNpb25QYW5lbC50b2dnbGUoKVwiPlxuICAgIDxtYXQtaWNvbiBbbWF0QmFkZ2VdPVwiZmlsdGVyQ3JpdGVyaWFDb3VudFwiXG4gICAgICAgICAgICAgIFttYXRCYWRnZUhpZGRlbl09XCJmaWx0ZXJJc0VtcHR5XCJcbiAgICAgICAgICAgICAgbWF0QmFkZ2VDb2xvcj1cImFjY2VudFwiXG4gICAgICAgICAgICAgIG1hdEJhZGdlU2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICAgICAgbWF0QmFkZ2VQb3NpdGlvbj1cImFib3ZlIGFmdGVyXCI+ZmlsdGVyX2xpc3RfYWx0XG4gICAgPC9tYXQtaWNvbj5cbiAgPC9idXR0b24+XG5cbjwvbWF0LXRvb2xiYXI+XG5cbjxpb24tY29udGVudCBjbGFzcz1cImlvbi1uby1wYWRkaW5nXCI+XG5cbiAgPCEtLSBzZWFyY2ggLS0+XG4gIDxtYXQtZXhwYW5zaW9uLXBhbmVsICNmaWx0ZXJFeHBhbnNpb25QYW5lbFxuICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZpbHRlci1wYW5lbFwiXG4gICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pb24tbm8tcGFkZGluZ109XCJtb2JpbGVcIlxuICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZmlsdGVyLXBhbmVsLWZsb2F0aW5nXT1cImZpbHRlclBhbmVsRmxvYXRpbmdcIj5cbiAgICA8Zm9ybSBjbGFzcz1cImZvcm0tY29udGFpbmVyXCIgW2Zvcm1Hcm91cF09XCJmaWx0ZXJGb3JtXCIgKG5nU3VibWl0KT1cIm9uUmVmcmVzaC5lbWl0KClcIj5cbiAgICAgIDxpb24tZ3JpZD5cbiAgICAgICAgPGlvbi1yb3c+XG4gICAgICAgICAgPGlvbi1jb2w+XG4gICAgICAgICAgICA8IS0tIHNlYXJjaCAtLT5cbiAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IFtwbGFjZWhvbGRlcl09XCInU0VUVElOR1MuRklMVEVSLlNFQVJDSCd8dHJhbnNsYXRlXCIgZm9ybUNvbnRyb2xOYW1lPVwic2VhcmNoVGV4dFwiPlxuXG4gICAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIG1hdFN1ZmZpeCB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2xlYXJDb250cm9sVmFsdWUoJGV2ZW50LCBmaWx0ZXJGb3JtLmNvbnRyb2xzLnNlYXJjaFRleHQpXCJcbiAgICAgICAgICAgICAgICAgICAgICBbaGlkZGVuXT1cImZpbHRlckZvcm0uY29udHJvbHMuc2VhcmNoVGV4dC5kaXNhYmxlZCB8fCAhZmlsdGVyRm9ybS5jb250cm9scy5zZWFyY2hUZXh0LnZhbHVlXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgIDwvaW9uLWNvbD5cblxuICAgICAgICAgIDxpb24tY29sPlxuICAgICAgICAgICAgPG1hdC1ib29sZWFuLWZpZWxkXG4gICAgICAgICAgICAgIFtzdHlsZV09XCInY2hlY2tib3gnXCJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibm90RGVmYXVsdE9ubHlcIlxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ1NFVFRJTkdTLkZJTFRFUi5PTkxZX05PVF9ERUZBVUxUJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgIGZsb2F0TGFiZWw9XCJhbHdheXNcIlxuICAgICAgICAgICAgPjwvbWF0LWJvb2xlYW4tZmllbGQ+XG4gICAgICAgICAgPC9pb24tY29sPlxuICAgICAgICA8L2lvbi1yb3c+XG4gICAgICA8L2lvbi1ncmlkPlxuICAgIDwvZm9ybT5cblxuICAgIDxtYXQtYWN0aW9uLXJvdz5cbiAgICAgIDwhLS0gQ291bnRlciAgLS0+XG4gICAgICA8aW9uLWxhYmVsIFtoaWRkZW5dPVwiKGxvYWRpbmdTdWJqZWN0fGFzeW5jKSB8fCBmaWx0ZXJGb3JtLmRpcnR5XCJcbiAgICAgICAgICAgICAgICAgW2NvbG9yXT1cImVtcHR5ICYmICdkYW5nZXInXCJcbiAgICAgICAgICAgICAgICAgY2xhc3M9XCJpb24tcGFkZGluZ1wiPlxuICAgICAgICB7eyAodG90YWxSb3dDb3VudCA/ICdDT01NT04uUkVTVUxUX0NPVU5UJyA6ICdDT01NT04uTk9fUkVTVUxUJykgfCB0cmFuc2xhdGU6IHtcbiAgICAgICAgY291bnQ6ICh0b3RhbFJvd0NvdW50IHxcbiAgICAgICAgICBudW1iZXJGb3JtYXQpXG4gICAgICB9IH19XG4gICAgICA8L2lvbi1sYWJlbD5cblxuICAgICAgPGRpdiBjbGFzcz1cInRvb2xiYXItc3BhY2VyXCI+PC9kaXY+XG5cbiAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIGNvbG9yPVwiYWNjZW50XCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJmaWx0ZXJQYW5lbEZsb2F0aW5nXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUZpbHRlclBhbmVsRmxvYXRpbmcoKVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiaGlkZGVuLXhzIGhpZGRlbi1zbSBoaWRkZW4tbWRcIlxuICAgICAgICAgICAgICBbdGl0bGVdPVwiKGZpbHRlclBhbmVsRmxvYXRpbmcgPyAnQ09NTU9OLkJUTl9FWFBBTkQnIDogJ0NPTU1PTi5CVE5fSElERScpIHx0cmFuc2xhdGVcIj5cbiAgICAgICAgPG1hdC1pY29uPjxzcGFuIHN0eWxlPVwidHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpO1wiPnt7ZmlsdGVyUGFuZWxGbG9hdGluZyA/ICcmI3hiYjsnIDogJyYjeGFiOyd9fTwvc3Bhbj48L21hdC1pY29uPlxuICAgICAgPC9idXR0b24+XG5cbiAgICAgIDwhLS0gQ2xvc2UgcGFuZWwgLS0+XG4gICAgICA8aW9uLWJ1dHRvbiBtYXQtYnV0dG9uIGZpbGw9XCJjbGVhclwiIGNvbG9yPVwiZGFya1wiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2xvc2VGaWx0ZXJQYW5lbCgpXCJcbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJsb2FkaW5nU3ViamVjdHxhc3luY1wiPlxuICAgICAgICA8aW9uLXRleHQgdHJhbnNsYXRlPkNPTU1PTi5CVE5fQ0xPU0U8L2lvbi10ZXh0PlxuICAgICAgPC9pb24tYnV0dG9uPlxuXG4gICAgICA8IS0tIFNlYXJjaCBidXR0b24gLS0+XG4gICAgICA8aW9uLWJ1dHRvbiBtYXQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICBbY29sb3JdPVwiZmlsdGVyRm9ybS5kaXJ0eSA/ICd0ZXJ0aWFyeScgOiAnZGFyaydcIlxuICAgICAgICAgICAgICAgICAgW2ZpbGxdPVwiZmlsdGVyRm9ybS5kaXJ0eSA/ICdzb2xpZCcgOiAnY2xlYXInXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhcHBseUZpbHRlckFuZENsb3NlUGFuZWwoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwibG9hZGluZ1N1YmplY3R8YXN5bmNcIj5cbiAgICAgICAgPGlvbi10ZXh0IHRyYW5zbGF0ZT5DT01NT04uQlROX0FQUExZPC9pb24tdGV4dD5cbiAgICAgIDwvaW9uLWJ1dHRvbj5cblxuICAgIDwvbWF0LWFjdGlvbi1yb3c+XG4gIDwvbWF0LWV4cGFuc2lvbi1wYW5lbD5cblxuICA8aW9uLXJlZnJlc2hlciBzbG90PVwiZml4ZWRcIiAqbmdJZj1cIm1vYmlsZVwiIChpb25SZWZyZXNoKT1cImRvUmVmcmVzaCgkZXZlbnQpXCI+XG4gICAgPGlvbi1yZWZyZXNoZXItY29udGVudD48L2lvbi1yZWZyZXNoZXItY29udGVudD5cbiAgPC9pb24tcmVmcmVzaGVyPlxuXG4gIDwhLS0gdGFibGUgLS0+XG4gIDxkaXYgY2xhc3M9XCJ0YWJsZS1jb250YWluZXJcIj5cbiAgICA8dGFibGUgI3RhYmxlIG1hdC10YWJsZSBtYXRTb3J0IG1hdFNvcnREaXNhYmxlQ2xlYXJcbiAgICAgICAgICAgW2RhdGFTb3VyY2VdPVwiZGF0YVNvdXJjZVwiXG4gICAgICAgICAgIFttYXRTb3J0QWN0aXZlXT1cImRlZmF1bHRTb3J0QnlcIlxuICAgICAgICAgICBbbWF0U29ydERpcmVjdGlvbl09XCJkZWZhdWx0U29ydERpcmVjdGlvblwiXG4gICAgICAgICAgIFt0cmFja0J5XT1cInRyYWNrQnlGblwiPlxuXG4gICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cInNlbGVjdFwiPlxuICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIFtjbGFzcy5jZGstdmlzdWFsbHktaGlkZGVuXT1cInRydWVcIj48L3RoPlxuICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgcm93XCIgW2NsYXNzLmNkay12aXN1YWxseS1oaWRkZW5dPVwidHJ1ZVwiPjwvdGQ+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPCEtLSBpZCBjb2x1bW4gKGhpZGRlbikgLS0+XG4gICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImlkXCI+XG4gICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgW2NsYXNzLmNkay12aXN1YWxseS1oaWRkZW5dPVwiIWRlYnVnXCI+PC90aD5cbiAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHJvd1wiIFtjbGFzcy5jZGstdmlzdWFsbHktaGlkZGVuXT1cIiFkZWJ1Z1wiPlxuICAgICAgICAgIHt7IHJvdy5jdXJyZW50RGF0YS5pZCB9fVxuICAgICAgICA8L3RkPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDwhLS0gZGVmaW5pdGlvbiBjb2x1bW4gLS0+XG4gICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImRlZmluaXRpb25cIj5cbiAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBtYXQtc29ydC1oZWFkZXI+XG4gICAgICAgICAgPGlvbi1sYWJlbD57eyBpMThuQ29sdW1uUHJlZml4ICsgJ0RFRklOSVRJT04nIHwgdHJhbnNsYXRlIH19PC9pb24tbGFiZWw+XG4gICAgICAgIDwvdGg+XG4gICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCByb3dcIj5cbjwhLS0gICAgICAgICAgPG1hdC1hdXRvY29tcGxldGUtZmllbGQtLT5cbjwhLS0gICAgICAgICAgICAqbmdJZj1cInJvdy5pZCA9PT0gLTE7IGVsc2UgcmVhZE9ubHlEZWZpbml0aW9uXCItLT5cbjwhLS0gICAgICAgICAgICBmbG9hdExhYmVsPVwibmV2ZXJcIi0tPlxuPCEtLSAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJyb3cudmFsaWRhdG9yIHwgZm9ybUdldENvbnRyb2wgOiAnZGVmaW5pdGlvbidcIi0tPlxuPCEtLSAgICAgICAgICAgIFtjb25maWddPVwiYXV0b2NvbXBsZXRlRmllbGRzLmRlZmluaXRpb25cIi0tPlxuPCEtLSAgICAgICAgICAgIFtyZXF1aXJlZF09XCJ0cnVlXCItLT5cbjwhLS0gICAgICAgICAgPjwvbWF0LWF1dG9jb21wbGV0ZS1maWVsZD4tLT5cbjwhLS0gICAgICAgICAgPG5nLXRlbXBsYXRlICNyZWFkT25seURlZmluaXRpb24+LS0+XG4gICAgICAgICAgICB7eyByb3cuY3VycmVudERhdGEgfCBwcm9wZXJ0eUdldCA6ICdkZWZpbml0aW9uLnRyYW5zbGF0ZWROYW1lJyB9fVxuPCEtLSAgICAgICAgICA8L25nLXRlbXBsYXRlPi0tPlxuICAgICAgICA8L3RkPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDwhLS0gdmFsdWUgY29sdW1uIC0tPlxuICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJ2YWx1ZVwiPlxuICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPlxuICAgICAgICAgIDxpb24tbGFiZWw+e3sgaTE4bkNvbHVtblByZWZpeCArICdWQUxVRScgfCB0cmFuc2xhdGUgfX08L2lvbi1sYWJlbD5cbiAgICAgICAgPC90aD5cbiAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHJvd1wiPlxuICAgICAgICAgIDxhcHAtZm9ybS1maWVsZFxuICAgICAgICAgICAgKm5nSWY9XCJyb3cudmFsaWRhdG9yIHwgZm9ybUdldFZhbHVlOiAnaWQnXCJcbiAgICAgICAgICAgIGZsb2F0TGFiZWw9XCJuZXZlclwiXG4gICAgICAgICAgICBbZGVmaW5pdGlvbl09XCJkZWZpbml0aW9uc01hcEJ5S2V5W3Jvdy52YWxpZGF0b3IgfCBmb3JtR2V0VmFsdWU6ICdpZCddXCJcbiAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJyb3cudmFsaWRhdG9yIHwgZm9ybUdldENvbnRyb2w6J3ZhbHVlJ1wiXG4gICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiaTE4bkNvbHVtblByZWZpeCArICdWQUxVRScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgW3JlcXVpcmVkXT1cInRydWVcIj5cbiAgICAgICAgICA8L2FwcC1mb3JtLWZpZWxkPlxuICAgICAgICA8L3RkPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDwhLS0gQWN0aW9ucyBidXR0b25zIGNvbHVtbiAtLT5cbiAgICAgIDxhcHAtYWN0aW9ucy1jb2x1bW5cbiAgICAgICAgW3N0aWNreUVuZF09XCJ0cnVlXCJcbiAgICAgICAgW2NhbkNhbmNlbF09XCJmYWxzZVwiXG4gICAgICAgIFtjYW5EZWxldGVdPVwiZmFsc2VcIlxuICAgICAgICBbZGlydHlJY29uXT1cImZhbHNlXCJcbiAgICAgICAgW2NlbGxUZW1wbGF0ZV09XCJjZWxsSW5qZWN0aW9uXCI+XG5cbiAgICAgICAgPCEtLSBjZWxsIGluamVjdGlvbi0tPlxuICAgICAgICA8bmctdGVtcGxhdGUgI2NlbGxJbmplY3Rpb24gbGV0LXJvdz5cbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIW1vYmlsZSAmJiAhZGlzYWJsZWQgJiYgKHJvdy52YWxpZGF0b3IgfCBmb3JtR2V0VmFsdWUgOiAndmFsdWUnKSAhPT0gKHJvdy52YWxpZGF0b3IgfCBmb3JtR2V0VmFsdWUgOiAnZGVmaW5pdGlvbicpLmRlZmF1bHRWYWx1ZVwiXG4gICAgICAgICAgICAgICAgICBbY2xhc3MudmlzaWJsZS1ob3Zlci1yb3ddPVwiIW1vYmlsZVwiXG4gICAgICAgICAgICAgICAgICBbdGFiaW5kZXhdPVwiLTFcIlxuICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidTRVRUSU5HUy5CVE5fUkVTRVRfUFJPUEVSVFknfHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVzZXRQcm9wZXJ0eSgkZXZlbnQsIHJvdylcIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbj51bmRvPC9tYXQtaWNvbj5cbiAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICA8L2FwcC1hY3Rpb25zLWNvbHVtbj5cblxuICAgICAgPHRyIG1hdC1oZWFkZXItcm93ICptYXRIZWFkZXJSb3dEZWY9XCJkaXNwbGF5ZWRDb2x1bW5zOyBzdGlja3k6IHRydWVcIj48L3RyPlxuICAgICAgPHRyIG1hdC1yb3cgKm1hdFJvd0RlZj1cImxldCByb3c7IGNvbHVtbnM6IGRpc3BsYXllZENvbHVtbnM7XCJcbiAgICAgICAgICBbY2xhc3MubWF0LXJvdy1zZWxlY3RlZF09XCJyb3cuZWRpdGluZ1wiXG4gICAgICAgICAgW2NsYXNzLm1hdC1yb3ctZXJyb3JdPVwicm93LnZhbGlkYXRvcj8uaW52YWxpZFwiXG4gICAgICAgICAgW2NsYXNzLm1hdC1yb3ctZGlydHldPVwicm93LnZhbGlkYXRvcj8uZGlydHlcIlxuICAgICAgICAgIChjbGljayk9XCJjbGlja1JvdygkZXZlbnQsIHJvdylcIlxuICAgICAgICAgIChrZXlkb3duLmVzY2FwZSk9XCJlc2NhcGVFZGl0aW5nUm93KCRldmVudClcIlxuICAgICAgICAgIFtjZGtUcmFwRm9jdXNdPVwicm93LnZhbGlkYXRvcj8uaW52YWxpZFwiPjwvdHI+XG4gICAgPC90YWJsZT5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJsb2FkaW5nU3ViamVjdHxhc3luYzsgZWxzZSBub1Jlc3VsdFwiPlxuICAgICAgPGlvbi1pdGVtPlxuICAgICAgICA8aW9uLXNrZWxldG9uLXRleHQgYW5pbWF0ZWQ+PC9pb24tc2tlbGV0b24tdGV4dD5cbiAgICAgIDwvaW9uLWl0ZW0+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctdGVtcGxhdGUgI25vUmVzdWx0PlxuICAgICAgPGlvbi1pdGVtICpuZ0lmPVwidG90YWxSb3dDb3VudCA9PT0gMFwiPlxuICAgICAgICA8aW9uLXRleHQgY29sb3I9XCJkYW5nZXJcIiBjbGFzcz1cInRleHQtaXRhbGljXCIgdHJhbnNsYXRlPkNPTU1PTi5OT19SRVNVTFQ8L2lvbi10ZXh0PlxuICAgICAgPC9pb24taXRlbT5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gIDwvZGl2PlxuPC9pb24tY29udGVudD5cbiJdfQ==
|
|
@@ -22,4 +22,4 @@ export class FormFieldValuesHolder {
|
|
|
22
22
|
return isNotNil(data[definition.key]) ? data[definition.key] : (definition.defaultValue || undefined);
|
|
23
23
|
}
|
|
24
24
|
}
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC9mb3JtL2ZpZWxkLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFxQ3RDLE1BQU0sT0FBZ0IscUJBQXFCO0lBQ3pDLFlBQVksQ0FBQyxJQUFlLEVBQUUsVUFBK0I7UUFDM0QsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDekMsT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLEtBQUssS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ3BFLENBQUM7SUFFRCxRQUFRLENBQUMsSUFBUyxFQUFFLFVBQStCO1FBQ2pELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ3pDLE9BQU8sUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUN2RCxDQUFDO0lBRUQsWUFBWSxDQUFDLElBQVMsRUFBRSxVQUErQjtRQUNyRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQztRQUN6QyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVE7WUFBRSxPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLFNBQVMsQ0FBQztRQUNwRixPQUFPLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQzNELENBQUM7SUFFRCxZQUFZLENBQUMsSUFBUyxFQUFFLFVBQStCO1FBQ3JELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ3pDLE9BQU8sS0FBSyxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksU0FBUyxDQUFDO0lBQ2hELENBQUM7SUFFRCxHQUFHLENBQWEsSUFBUyxFQUFFLFVBQStCO1FBQ3hELE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsWUFBWSxJQUFJLFNBQVMsQ0FBQyxDQUFDO0lBQ3hHLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7T2JqZWN0TWFwLCBQcm9wZXJ0eX0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHtpc05vdE5pbH0gZnJvbSAnLi4vZnVuY3Rpb25zJztcbmltcG9ydCB7SW5qZWN0aW9uVG9rZW59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtNYXRBdXRvY29tcGxldGVGaWVsZENvbmZpZ30gZnJvbSAnLi4vbWF0ZXJpYWwvYXV0b2NvbXBsZXRlL21hdGVyaWFsLmF1dG9jb21wbGV0ZS5jb25maWcnO1xuaW1wb3J0IHtVc2VyUHJvZmlsZUxhYmVsfSBmcm9tICcuLi8uLi9jb3JlL3NlcnZpY2VzL21vZGVsL3BlcnNvbi5tb2RlbCc7XG5cbmV4cG9ydCBkZWNsYXJlIHR5cGUgRGlzcGxheUZuID0gKG9iajogYW55KSA9PiBzdHJpbmc7XG5cbmV4cG9ydCBkZWNsYXJlIHR5cGUgRXF1YWxzRm4gPSAobzE6IGFueSwgbzI6IGFueSkgPT4gYm9vbGVhbjtcblxuZXhwb3J0IGRlY2xhcmUgdHlwZSBDb21wYXJlRm4gPSAobzE6IGFueSwgbzI6IGFueSkgPT4gbnVtYmVyO1xuXG5leHBvcnQgZGVjbGFyZSB0eXBlIEZvcm1GaWVsZFR5cGUgPSAnaW50ZWdlcicgfCAnZG91YmxlJyB8ICdib29sZWFuJyB8ICdzdHJpbmcnIHwgJ2VudW0nIHwgJ2NvbG9yJyB8ICdwZWVyJyB8ICdlbnRpdHknIHwgJ2VudGl0aWVzJyB8ICdkYXRlJyB8ICdkYXRlVGltZSc7XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBGb3JtRmllbGREZWZpbml0aW9uPEsgPSBzdHJpbmcsIFQgPSBGb3JtRmllbGRUeXBlLCBFID0gYW55PiB7XG4gIGtleTogSztcbiAgdHlwZTogVDtcbiAgbGFiZWw6IHN0cmluZztcbiAgbWluVmFsdWU/OiBudW1iZXI7XG4gIG1heFZhbHVlPzogbnVtYmVyO1xuICBtYXhpbXVtTnVtYmVyRGVjaW1hbHM/OiBudW1iZXI7XG4gIGRlZmF1bHRWYWx1ZT86IGFueTtcbiAgaXNUcmFuc2llbnQ/OiBib29sZWFuOyAvLyBVc2VmdWwgb25seSBmb3IgcmVtb3RlIGNvbmZpZ3VyYXRpb25cbiAgdmFsdWVzPzogKHN0cmluZ3xQcm9wZXJ0eSlbXSB8IEluamVjdGlvblRva2VuPChzdHJpbmd8UHJvcGVydHkpW10+O1xuICBhdXRvY29tcGxldGU/OiBNYXRBdXRvY29tcGxldGVGaWVsZENvbmZpZzxFPjtcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICByZXF1aXJlZD86IGJvb2xlYW47XG4gIGV4dHJhPzoge1xuICAgIFtrZXk6IHN0cmluZ106IHtcbiAgICAgIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgICAgIHJlcXVpcmVkOiBib29sZWFuO1xuICAgIH07XG4gIH07XG4gIG1pblByb2ZpbGU/OiBVc2VyUHJvZmlsZUxhYmVsO1xufVxuZXhwb3J0IGRlY2xhcmUgdHlwZSBGb3JtRmllbGREZWZpbml0aW9uTWFwID0gT2JqZWN0TWFwPEZvcm1GaWVsZERlZmluaXRpb24+O1xuXG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBGb3JtRmllbGRWYWx1ZXNIb2xkZXIge1xuICBnZXRBc0Jvb2xlYW4oZGF0YTogT2JqZWN0TWFwLCBkZWZpbml0aW9uOiBGb3JtRmllbGREZWZpbml0aW9uKTogYm9vbGVhbiB7XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLmdldChkYXRhLCBkZWZpbml0aW9uKTtcbiAgICByZXR1cm4gaXNOb3ROaWwodmFsdWUpID8gKHZhbHVlICYmIHZhbHVlICE9PSAnZmFsc2UnKSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGdldEFzSW50KGRhdGE6IGFueSwgZGVmaW5pdGlvbjogRm9ybUZpZWxkRGVmaW5pdGlvbik6IG51bWJlciB7XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLmdldChkYXRhLCBkZWZpbml0aW9uKTtcbiAgICByZXR1cm4gaXNOb3ROaWwodmFsdWUpID8gcGFyc2VJbnQodmFsdWUpIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgZ2V0QXNOdW1iZXJzKGRhdGE6IGFueSwgZGVmaW5pdGlvbjogRm9ybUZpZWxkRGVmaW5pdGlvbik6IG51bWJlcltdIHtcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZ2V0KGRhdGEsIGRlZmluaXRpb24pO1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSByZXR1cm4gdmFsdWUuc3BsaXQoJywnKS5tYXAocGFyc2VGbG9hdCkgfHwgdW5kZWZpbmVkO1xuICAgIHJldHVybiBpc05vdE5pbCh2YWx1ZSkgPyBbcGFyc2VGbG9hdCh2YWx1ZSldIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgZ2V0QXNTdHJpbmdzKGRhdGE6IGFueSwgZGVmaW5pdGlvbjogRm9ybUZpZWxkRGVmaW5pdGlvbik6IHN0cmluZ1tdIHtcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZ2V0KGRhdGEsIGRlZmluaXRpb24pO1xuICAgIHJldHVybiB2YWx1ZSAmJiB2YWx1ZS5zcGxpdCgnLCcpIHx8IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGdldDxUID0gc3RyaW5nPihkYXRhOiBhbnksIGRlZmluaXRpb246IEZvcm1GaWVsZERlZmluaXRpb24pOiBUIHtcbiAgICByZXR1cm4gaXNOb3ROaWwoZGF0YVtkZWZpbml0aW9uLmtleV0pID8gZGF0YVtkZWZpbml0aW9uLmtleV0gOiAoZGVmaW5pdGlvbi5kZWZhdWx0VmFsdWUgfHwgdW5kZWZpbmVkKTtcbiAgfVxufVxuIl19
|
|
@@ -26727,27 +26727,6 @@ class AppPropertiesTable extends AppInMemoryTable {
|
|
|
26727
26727
|
this.translationsByKey = {};
|
|
26728
26728
|
this.filterCriteriaCount = 0;
|
|
26729
26729
|
this.filterPanelFloating = true;
|
|
26730
|
-
// confirmEditCreate(event?: Event, row?: TableElement<PropertyEntity>): boolean {
|
|
26731
|
-
// try {
|
|
26732
|
-
// return super.confirmEditCreate(event, row);
|
|
26733
|
-
// } finally {
|
|
26734
|
-
// this.updateAvailableDefinitions();
|
|
26735
|
-
// }
|
|
26736
|
-
// }
|
|
26737
|
-
// async updateView(res: LoadResult<PropertyEntity> | undefined, opts?: { emitEvent?: boolean }): Promise<void> {
|
|
26738
|
-
// await super.updateView(res, opts);
|
|
26739
|
-
// this.updateAvailableDefinitions();
|
|
26740
|
-
// }
|
|
26741
|
-
// protected async updateAvailableDefinitions() {
|
|
26742
|
-
// const usedDefinitionsKeys = this.dataSource.getRows().map(row => row.currentData?.id).filter(isNotNilOrBlank) || [];
|
|
26743
|
-
// const availableDefinitions: TranslatedFormFieldDefinition[] = (this.definitions || []).slice()
|
|
26744
|
-
// .filter(value => !usedDefinitionsKeys.includes(value.key))
|
|
26745
|
-
// .map(this.toTranslatedFormFieldDefinition);
|
|
26746
|
-
//
|
|
26747
|
-
// EntityUtils.sort(availableDefinitions, 'translatedName', 'asc');
|
|
26748
|
-
//
|
|
26749
|
-
// this.availableDefinitions$.next(availableDefinitions);
|
|
26750
|
-
// }
|
|
26751
26730
|
this.toTranslatedFormFieldDefinition = (definition) => (Object.assign(Object.assign({}, definition), { translatedName: this.translationsByKey[definition.label] }));
|
|
26752
26731
|
this.inlineEdition = true;
|
|
26753
26732
|
this.defaultSortBy = 'definition';
|
|
@@ -26767,12 +26746,6 @@ class AppPropertiesTable extends AppInMemoryTable {
|
|
|
26767
26746
|
(_a = this.definitions) === null || _a === void 0 ? void 0 : _a.forEach(o => {
|
|
26768
26747
|
this.definitionsMapByKey[o.key] = o;
|
|
26769
26748
|
});
|
|
26770
|
-
// this.registerAutocompleteField('definition', {
|
|
26771
|
-
// attributes: ['translatedName'],
|
|
26772
|
-
// columnNames: [this.i18nColumnPrefix + 'DEFINITION'],
|
|
26773
|
-
// items: this.availableDefinitions$,
|
|
26774
|
-
// equals: (o1, o2) => o1?.key === o2?.key,
|
|
26775
|
-
// });
|
|
26776
26749
|
this.registerCellValueChanges('definition').subscribe((definition) => {
|
|
26777
26750
|
var _a;
|
|
26778
26751
|
if (isNotNil(definition) && ((_a = this.editedRow) === null || _a === void 0 ? void 0 : _a.id) === -1) {
|
|
@@ -27409,7 +27382,8 @@ class AccountPage extends AppForm {
|
|
|
27409
27382
|
ngOnInit() {
|
|
27410
27383
|
super.ngOnInit();
|
|
27411
27384
|
// Get user options
|
|
27412
|
-
this.optionDefinitions = this.accountService.optionDefs.slice()
|
|
27385
|
+
this.optionDefinitions = this.accountService.optionDefs.slice()
|
|
27386
|
+
.filter(definition => !definition.minProfile || this.accountService.hasMinProfile(definition.minProfile));
|
|
27413
27387
|
// Observed some events
|
|
27414
27388
|
this.registerSubscription(this.accountService.onLogin.pipe(filter(() => !this.saving)).subscribe(account => this.onLogin(account)));
|
|
27415
27389
|
this.registerSubscription(this.accountService.onLogout.subscribe(() => this.onLogout()));
|
|
@@ -27491,7 +27465,9 @@ class AccountPage extends AppForm {
|
|
|
27491
27465
|
// Set options
|
|
27492
27466
|
const properties = ((_b = (_a = data === null || data === void 0 ? void 0 : data.settings) === null || _a === void 0 ? void 0 : _a.asLocalSettings()) === null || _b === void 0 ? void 0 : _b.properties) || {};
|
|
27493
27467
|
const propertiesEntities = [];
|
|
27494
|
-
this.optionDefinitions
|
|
27468
|
+
this.optionDefinitions
|
|
27469
|
+
.filter(definition => !definition.minProfile || this.accountService.hasMinProfile(definition.minProfile))
|
|
27470
|
+
.map(definition => definition.key).forEach(key => {
|
|
27495
27471
|
if (isNotNil(properties[key])) {
|
|
27496
27472
|
propertiesEntities.push(PropertyEntity.fromObject({ id: key, value: properties[key] }));
|
|
27497
27473
|
}
|