@rosoftlab/ionic 1.0.0-alpha-5 → 1.0.0-alpha-7

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.
@@ -9,6 +9,7 @@ import { NgxDatatableModule } from '@swimlane/ngx-datatable';
9
9
  import { RslIonicSmButtonsComponent } from './components/rsl-ionic-sm-buttons/ionic-sm-buttons.component';
10
10
  import { IonicDialogService } from './ionic-dialog.service';
11
11
  import { registerTranslateExtension } from './translate.extension';
12
+ import { RepeatDatatableComponent } from './types/repeat-datatable/repeat-datatable.component';
12
13
  import { RepeatTypeComponent } from './types/repeat/repeat-section.type';
13
14
  import { fieldMatchValidator } from './validators/must-match';
14
15
  import { AccordionWrapperComponent } from './wrappers/accordion-wrapper.component';
@@ -41,6 +42,7 @@ export class RslIonicModuleModule {
41
42
  FormlyModule.forRoot({
42
43
  types: [
43
44
  { name: 'repeat', component: RepeatTypeComponent },
45
+ { name: 'repeat-data-table', component: RepeatDatatableComponent },
44
46
  { name: 'sm-buttons', component: RslIonicSmButtonsComponent }
45
47
  ],
46
48
  validators: [{ name: 'fieldMatch', validation: fieldMatchValidator }],
@@ -67,6 +69,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.10", ngImpo
67
69
  FormlyModule.forRoot({
68
70
  types: [
69
71
  { name: 'repeat', component: RepeatTypeComponent },
72
+ { name: 'repeat-data-table', component: RepeatDatatableComponent },
70
73
  { name: 'sm-buttons', component: RslIonicSmButtonsComponent }
71
74
  ],
72
75
  validators: [{ name: 'fieldMatch', validation: fieldMatchValidator }],
@@ -90,4 +93,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.10", ngImpo
90
93
  ],
91
94
  }]
92
95
  }] });
93
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnNsLWlvbmljLW1vZHVsZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yb3NvZnRsYWIvaW9uaWMvc3JjL2xpYi9yc2wtaW9uaWMtbW9kdWxlLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDeEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDN0QsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sOERBQThELENBQUM7QUFDMUcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbkUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDekUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDbkYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7OztBQUMzRSxNQUFNLGNBQWMsR0FBRztJQUNyQixZQUFZO0lBQ1osV0FBVztJQUNYLG1CQUFtQjtJQUNuQixpQkFBaUI7SUFDakIsa0JBQWtCO0NBQ25CLENBQUM7QUE4QkYsTUFBTSxPQUFPLG9CQUFvQjsrR0FBcEIsb0JBQW9CO2dIQUFwQixvQkFBb0IsWUFuQy9CLFlBQVk7WUFDWixXQUFXO1lBQ1gsbUJBQW1CO1lBQ25CLGlCQUFpQjtZQUNqQixrQkFBa0IsRUFNaEIsZUFBZSw4QkFWakIsWUFBWTtZQUNaLFdBQVc7WUFDWCxtQkFBbUI7WUFDbkIsaUJBQWlCO1lBQ2pCLGtCQUFrQixFQTJCaEIsWUFBWTtZQUNaLGVBQWU7Z0hBR04sb0JBQW9CLGFBVnBCO1lBQ1Qsa0JBQWtCO1lBQ2xCLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSwwQkFBMEIsRUFBRSxJQUFJLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFO1NBQzFHLFlBbkJJLGNBQWMsRUFDakIsZUFBZTtZQUNmLFlBQVksQ0FBQyxPQUFPLENBQUM7Z0JBQ25CLEtBQUssRUFBRTtvQkFDTCxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLG1CQUFtQixFQUFFO29CQUNsRCxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLDBCQUEwQixFQUFFO2lCQUM5RDtnQkFDRCxVQUFVLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLG1CQUFtQixFQUFFLENBQUM7Z0JBQ3JFLFFBQVEsRUFBRTtvQkFDUixFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLHFCQUFxQixFQUFFO29CQUNuRCxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLHlCQUF5QixFQUFFO2lCQUFDO2dCQUM5RCxrQkFBa0IsRUFBRTtvQkFDbEIsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRTtpQkFDeEQ7YUFDRixDQUFDLEVBdkJKLFlBQVk7WUFDWixXQUFXO1lBQ1gsbUJBQW1CO1lBQ25CLGlCQUFpQjtZQUNqQixrQkFBa0IsRUEyQmhCLFlBQVk7WUFDWixlQUFlOzs0RkFHTixvQkFBb0I7a0JBNUJoQyxRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRTt3QkFDUCxHQUFHLGNBQWM7d0JBQ2pCLGVBQWU7d0JBQ2YsWUFBWSxDQUFDLE9BQU8sQ0FBQzs0QkFDbkIsS0FBSyxFQUFFO2dDQUNMLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsbUJBQW1CLEVBQUU7Z0NBQ2xELEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsMEJBQTBCLEVBQUU7NkJBQzlEOzRCQUNELFVBQVUsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQzs0QkFDckUsUUFBUSxFQUFFO2dDQUNSLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUscUJBQXFCLEVBQUU7Z0NBQ25ELEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUseUJBQXlCLEVBQUU7NkJBQUM7NEJBQzlELGtCQUFrQixFQUFFO2dDQUNsQixFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLHdCQUF3QixFQUFFOzZCQUN4RDt5QkFDRixDQUFDO3FCQUNIO29CQUNELFNBQVMsRUFBRTt3QkFDVCxrQkFBa0I7d0JBQ2xCLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSwwQkFBMEIsRUFBRSxJQUFJLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFO3FCQUMxRztvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsR0FBRyxjQUFjO3dCQUNqQixZQUFZO3dCQUNaLGVBQWU7cUJBQ2hCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgSW9uaWNNb2R1bGUgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQgeyBGT1JNTFlfQ09ORklHLCBGb3JtbHlNb2R1bGUgfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcbmltcG9ydCB7IEZvcm1seUlvbmljTW9kdWxlIH0gZnJvbSAnQG5neC1mb3JtbHkvaW9uaWMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlLCBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBOZ3hEYXRhdGFibGVNb2R1bGUgfSBmcm9tICdAc3dpbWxhbmUvbmd4LWRhdGF0YWJsZSc7XG5pbXBvcnQgeyBSc2xJb25pY1NtQnV0dG9uc0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9yc2wtaW9uaWMtc20tYnV0dG9ucy9pb25pYy1zbS1idXR0b25zLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJb25pY0RpYWxvZ1NlcnZpY2UgfSBmcm9tICcuL2lvbmljLWRpYWxvZy5zZXJ2aWNlJztcbmltcG9ydCB7IHJlZ2lzdGVyVHJhbnNsYXRlRXh0ZW5zaW9uIH0gZnJvbSAnLi90cmFuc2xhdGUuZXh0ZW5zaW9uJztcbmltcG9ydCB7IFJlcGVhdFR5cGVDb21wb25lbnQgfSBmcm9tICcuL3R5cGVzL3JlcGVhdC9yZXBlYXQtc2VjdGlvbi50eXBlJztcbmltcG9ydCB7IGZpZWxkTWF0Y2hWYWxpZGF0b3IgfSBmcm9tICcuL3ZhbGlkYXRvcnMvbXVzdC1tYXRjaCc7XG5pbXBvcnQgeyBBY2NvcmRpb25XcmFwcGVyQ29tcG9uZW50IH0gZnJvbSAnLi93cmFwcGVycy9hY2NvcmRpb24td3JhcHBlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgUGFuZWxXcmFwcGVyQ29tcG9uZW50IH0gZnJvbSAnLi93cmFwcGVycy9wYW5lbC13cmFwcGVyLmNvbXBvbmVudCc7XG5jb25zdCBDT01NT05fTU9EVUxFUyA9IFtcbiAgQ29tbW9uTW9kdWxlLFxuICBJb25pY01vZHVsZSxcbiAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgRm9ybWx5SW9uaWNNb2R1bGUsXG4gIE5neERhdGF0YWJsZU1vZHVsZVxuXTtcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIC4uLkNPTU1PTl9NT0RVTEVTLFxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICBGb3JtbHlNb2R1bGUuZm9yUm9vdCh7XG4gICAgICB0eXBlczogW1xuICAgICAgICB7IG5hbWU6ICdyZXBlYXQnLCBjb21wb25lbnQ6IFJlcGVhdFR5cGVDb21wb25lbnQgfSxcbiAgICAgICAgeyBuYW1lOiAnc20tYnV0dG9ucycsIGNvbXBvbmVudDogUnNsSW9uaWNTbUJ1dHRvbnNDb21wb25lbnQgfVxuICAgICAgXSxcbiAgICAgIHZhbGlkYXRvcnM6IFt7IG5hbWU6ICdmaWVsZE1hdGNoJywgdmFsaWRhdGlvbjogZmllbGRNYXRjaFZhbGlkYXRvciB9XSxcbiAgICAgIHdyYXBwZXJzOiBbXG4gICAgICAgIHsgbmFtZTogJ3BhbmVsJywgY29tcG9uZW50OiBQYW5lbFdyYXBwZXJDb21wb25lbnQgfSxcbiAgICAgICAgeyBuYW1lOiAnYWNjb3JkaW9uJywgY29tcG9uZW50OiBBY2NvcmRpb25XcmFwcGVyQ29tcG9uZW50IH1dLFxuICAgICAgdmFsaWRhdGlvbk1lc3NhZ2VzOiBbXG4gICAgICAgIHsgbmFtZTogJ3JlcXVpcmVkJywgbWVzc2FnZTogJ1RoaXMgZmllbGQgaXMgcmVxdWlyZWQnIH0sXG4gICAgICBdLFxuICAgIH0pLFxuICBdLFxuICBwcm92aWRlcnM6IFtcbiAgICBJb25pY0RpYWxvZ1NlcnZpY2UsXG4gICAgeyBwcm92aWRlOiBGT1JNTFlfQ09ORklHLCBtdWx0aTogdHJ1ZSwgdXNlRmFjdG9yeTogcmVnaXN0ZXJUcmFuc2xhdGVFeHRlbnNpb24sIGRlcHM6IFtUcmFuc2xhdGVTZXJ2aWNlXSB9LFxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgLi4uQ09NTU9OX01PRFVMRVMsXG4gICAgRm9ybWx5TW9kdWxlLFxuICAgIFRyYW5zbGF0ZU1vZHVsZVxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBSc2xJb25pY01vZHVsZU1vZHVsZSB7IH1cbiJdfQ==
96
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnNsLWlvbmljLW1vZHVsZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yb3NvZnRsYWIvaW9uaWMvc3JjL2xpYi9yc2wtaW9uaWMtbW9kdWxlLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDeEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDN0QsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sOERBQThELENBQUM7QUFDMUcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbkUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0scURBQXFELENBQUM7QUFDL0YsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDekUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDbkYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sb0NBQW9D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O3dCQUNQLEdBQUcsY0FBYzt3QkFDakIsWUFBWTt3QkFDWixlQUFlO3FCQUNoQjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IElvbmljTW9kdWxlIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHsgRk9STUxZX0NPTkZJRywgRm9ybWx5TW9kdWxlIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5pbXBvcnQgeyBGb3JtbHlJb25pY01vZHVsZSB9IGZyb20gJ0BuZ3gtZm9ybWx5L2lvbmljJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSwgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgTmd4RGF0YXRhYmxlTW9kdWxlIH0gZnJvbSAnQHN3aW1sYW5lL25neC1kYXRhdGFibGUnO1xuaW1wb3J0IHsgUnNsSW9uaWNTbUJ1dHRvbnNDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcnNsLWlvbmljLXNtLWJ1dHRvbnMvaW9uaWMtc20tYnV0dG9ucy5jb21wb25lbnQnO1xuaW1wb3J0IHsgSW9uaWNEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnLi9pb25pYy1kaWFsb2cuc2VydmljZSc7XG5pbXBvcnQgeyByZWdpc3RlclRyYW5zbGF0ZUV4dGVuc2lvbiB9IGZyb20gJy4vdHJhbnNsYXRlLmV4dGVuc2lvbic7XG5pbXBvcnQgeyBSZXBlYXREYXRhdGFibGVDb21wb25lbnQgfSBmcm9tICcuL3R5cGVzL3JlcGVhdC1kYXRhdGFibGUvcmVwZWF0LWRhdGF0YWJsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUmVwZWF0VHlwZUNvbXBvbmVudCB9IGZyb20gJy4vdHlwZXMvcmVwZWF0L3JlcGVhdC1zZWN0aW9uLnR5cGUnO1xuaW1wb3J0IHsgZmllbGRNYXRjaFZhbGlkYXRvciB9IGZyb20gJy4vdmFsaWRhdG9ycy9tdXN0LW1hdGNoJztcbmltcG9ydCB7IEFjY29yZGlvbldyYXBwZXJDb21wb25lbnQgfSBmcm9tICcuL3dyYXBwZXJzL2FjY29yZGlvbi13cmFwcGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQYW5lbFdyYXBwZXJDb21wb25lbnQgfSBmcm9tICcuL3dyYXBwZXJzL3BhbmVsLXdyYXBwZXIuY29tcG9uZW50JztcbmNvbnN0IENPTU1PTl9NT0RVTEVTID0gW1xuICBDb21tb25Nb2R1bGUsXG4gIElvbmljTW9kdWxlLFxuICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICBGb3JtbHlJb25pY01vZHVsZSxcbiAgTmd4RGF0YXRhYmxlTW9kdWxlXG5dO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgLi4uQ09NTU9OX01PRFVMRVMsXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxuICAgIEZvcm1seU1vZHVsZS5mb3JSb290KHtcbiAgICAgIHR5cGVzOiBbXG4gICAgICAgIHsgbmFtZTogJ3JlcGVhdCcsIGNvbXBvbmVudDogUmVwZWF0VHlwZUNvbXBvbmVudCB9LFxuICAgICAgICB7IG5hbWU6ICdyZXBlYXQtZGF0YS10YWJsZScsIGNvbXBvbmVudDogUmVwZWF0RGF0YXRhYmxlQ29tcG9uZW50IH0sXG4gICAgICAgIHsgbmFtZTogJ3NtLWJ1dHRvbnMnLCBjb21wb25lbnQ6IFJzbElvbmljU21CdXR0b25zQ29tcG9uZW50IH1cbiAgICAgIF0sXG4gICAgICB2YWxpZGF0b3JzOiBbeyBuYW1lOiAnZmllbGRNYXRjaCcsIHZhbGlkYXRpb246IGZpZWxkTWF0Y2hWYWxpZGF0b3IgfV0sXG4gICAgICB3cmFwcGVyczogW1xuICAgICAgICB7IG5hbWU6ICdwYW5lbCcsIGNvbXBvbmVudDogUGFuZWxXcmFwcGVyQ29tcG9uZW50IH0sXG4gICAgICAgIHsgbmFtZTogJ2FjY29yZGlvbicsIGNvbXBvbmVudDogQWNjb3JkaW9uV3JhcHBlckNvbXBvbmVudCB9XSxcbiAgICAgIHZhbGlkYXRpb25NZXNzYWdlczogW1xuICAgICAgICB7IG5hbWU6ICdyZXF1aXJlZCcsIG1lc3NhZ2U6ICdUaGlzIGZpZWxkIGlzIHJlcXVpcmVkJyB9LFxuICAgICAgXSxcbiAgICB9KSxcbiAgXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgSW9uaWNEaWFsb2dTZXJ2aWNlLFxuICAgIHsgcHJvdmlkZTogRk9STUxZX0NPTkZJRywgbXVsdGk6IHRydWUsIHVzZUZhY3Rvcnk6IHJlZ2lzdGVyVHJhbnNsYXRlRXh0ZW5zaW9uLCBkZXBzOiBbVHJhbnNsYXRlU2VydmljZV0gfSxcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIC4uLkNPTU1PTl9NT0RVTEVTLFxuICAgIEZvcm1seU1vZHVsZSxcbiAgICBUcmFuc2xhdGVNb2R1bGVcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgUnNsSW9uaWNNb2R1bGVNb2R1bGUgeyB9XG4iXX0=
@@ -0,0 +1,190 @@
1
+ import { Component, ElementRef, TemplateRef, ViewChild } from '@angular/core';
2
+ import { FieldArrayType } from '@ngx-formly/core';
3
+ import { TranslateService } from '@ngx-translate/core';
4
+ import { ColumnMode, SelectionType } from '@swimlane/ngx-datatable';
5
+ import { FileSaverService } from 'ngx-filesaver';
6
+ import * as XLSX from 'xlsx';
7
+ import { IonicDialogService } from '../../ionic-dialog.service';
8
+ import { WrappersModule } from '../../wrappers/wrappers.module';
9
+ import * as i0 from "@angular/core";
10
+ import * as i1 from "../../ionic-dialog.service";
11
+ import * as i2 from "@ngx-translate/core";
12
+ import * as i3 from "ngx-filesaver";
13
+ import * as i4 from "@angular/common";
14
+ import * as i5 from "@ionic/angular";
15
+ import * as i6 from "@swimlane/ngx-datatable";
16
+ import * as i7 from "@ngx-formly/core";
17
+ export class RepeatDatatableComponent extends FieldArrayType {
18
+ constructor(dialogService, translate, fileSaverService) {
19
+ super();
20
+ this.dialogService = dialogService;
21
+ this.translate = translate;
22
+ this.fileSaverService = fileSaverService;
23
+ this.data = null;
24
+ this.serach = null;
25
+ this.showSerach = false;
26
+ this.filterValue = null;
27
+ this.importDataProp = null;
28
+ this.exportDataProp = null;
29
+ this.ColumnMode = ColumnMode;
30
+ this.SelectionType = SelectionType;
31
+ this.deleteMessage = this.translate.instant("General.Delete.Question");
32
+ this.deleteButton = this.translate.instant("General.Delete.Button");
33
+ this.cancelButton = this.translate.instant("General.Cancel.Button");
34
+ }
35
+ add(i, initialModel) {
36
+ initialModel = {};
37
+ this.props['columns'].forEach(column => initialModel[column.prop] = null);
38
+ super.add(i, initialModel);
39
+ }
40
+ remove(i, { markAsDirty } = { markAsDirty: true }) {
41
+ this.dialogService.confirm(this.deleteMessage, null, this.deleteButton, this.cancelButton).then((value) => {
42
+ if (value.data) {
43
+ var onDelete = this.field.props['onDelete'];
44
+ if (onDelete) {
45
+ onDelete(this.field.fieldGroup[i].model).subscribe(() => {
46
+ super.remove(i);
47
+ });
48
+ }
49
+ super.remove(i);
50
+ }
51
+ });
52
+ }
53
+ ngOnInit() {
54
+ this.props['columns'].forEach(column => column.cellTemplate = this.defaultColumn);
55
+ this.props['columns'].push({
56
+ cellTemplate: this.actionsTmpl,
57
+ name: '',
58
+ cellClass: 'actions-cell',
59
+ draggable: false,
60
+ sortable: false,
61
+ visible: true,
62
+ width: 75,
63
+ maxWidth: 75,
64
+ minWidth: 75
65
+ });
66
+ this.typeKey = this.field.key;
67
+ this.serach = this.props['search'];
68
+ this.exportDataProp = this.props['export'] || null;
69
+ this.importDataProp = this.props['import'] || null;
70
+ if (this.serach) {
71
+ this.showSerach = this.serach.showSerach;
72
+ }
73
+ }
74
+ getField(field, column, rowIndex) {
75
+ return field.fieldGroup[rowIndex].fieldGroup.find(f => f.key === column.prop);
76
+ }
77
+ postPopulate(field) {
78
+ if (this.showSerach) {
79
+ this.data = field.fieldGroup;
80
+ if (this.filterValue) {
81
+ this.field.fieldGroup = this.data.filter(f => f.formControl.value[this.serach.searchProp].toLowerCase().includes(this.filterValue));
82
+ }
83
+ }
84
+ }
85
+ handleChange(event) {
86
+ if (this.showSerach) {
87
+ if (this.data == null && this.field.fieldGroup !== null) {
88
+ this.data = this.field.fieldGroup;
89
+ }
90
+ this.filterValue = event.target.value.toLowerCase();
91
+ this.field.fieldGroup = this.data.filter(f => f.formControl.value[this.serach.searchProp].toLowerCase().includes(this.filterValue));
92
+ }
93
+ }
94
+ importData() {
95
+ this.fileInput.nativeElement.click();
96
+ }
97
+ async handleImportFile(event) {
98
+ const file = event.target.files[0];
99
+ if (file) {
100
+ try {
101
+ const fileContents = await this.readFileAsync(file);
102
+ // Handle the file contents here (e.g., display or process the data)
103
+ const wb = XLSX.read(fileContents); //, { type: 'binary' });
104
+ const wsname = wb.SheetNames[0];
105
+ const ws = wb.Sheets[wsname];
106
+ const excelData = XLSX.utils.sheet_to_json(ws); //, { header: 1 });
107
+ excelData.forEach(element => {
108
+ const jsonX = this.getValueFromJsonData(element, this.importDataProp.keyProp);
109
+ const idx = this.field.parent.model[this.typeKey].findIndex(f => f[this.importDataProp.keyProp] === jsonX);
110
+ if (idx >= 0) {
111
+ const existingdata = this.field.parent.model[this.typeKey][idx];
112
+ for (const prop of this.importDataProp.propertiesToImport) {
113
+ const jsonVal = this.getValueFromJsonData(element, prop);
114
+ if (existingdata[prop] !== jsonVal) {
115
+ var fieldControl = this.field.fieldGroup[idx].formControl;
116
+ fieldControl.controls[prop].setValue(jsonVal);
117
+ }
118
+ }
119
+ }
120
+ else {
121
+ super.add(null, element);
122
+ }
123
+ });
124
+ }
125
+ catch (error) {
126
+ console.error('Error reading the file:', error);
127
+ }
128
+ }
129
+ }
130
+ exportData() {
131
+ // Filter the data to include only the specified properties
132
+ const filteredData = this.field.parent.model[this.typeKey].map(item => {
133
+ const filteredItem = {};
134
+ for (const prop of this.exportDataProp.propertiesToExport) {
135
+ filteredItem[prop] = item[prop];
136
+ }
137
+ return filteredItem;
138
+ });
139
+ const ws = XLSX.utils.json_to_sheet(filteredData);
140
+ const wb = XLSX.utils.book_new();
141
+ XLSX.utils.book_append_sheet(wb, ws, this.exportDataProp.sheetName);
142
+ const excelBuffer = XLSX.write(wb, { bookType: 'xlsx', type: 'array' });
143
+ const blob = new Blob([excelBuffer], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' });
144
+ this.fileSaverService.save(blob, this.exportDataProp.fileName);
145
+ }
146
+ getValueFromJsonData(jsonData, key) {
147
+ // Convert the key and all JSON keys to lowercase
148
+ const lowercaseKey = key.toLowerCase();
149
+ const lowercaseKeys = Object.keys(jsonData).map(k => k.toLowerCase());
150
+ // Find the lowercase key in the lowercase keys array
151
+ const index = lowercaseKeys.indexOf(lowercaseKey);
152
+ // If found, use the original (proper case) key to access the value
153
+ if (index !== -1) {
154
+ const originalKey = Object.keys(jsonData)[index];
155
+ return jsonData[originalKey];
156
+ }
157
+ // Key not found
158
+ return undefined;
159
+ }
160
+ readFileAsync(file) {
161
+ return new Promise((resolve, reject) => {
162
+ const reader = new FileReader();
163
+ reader.onload = (event) => {
164
+ resolve(event.target.result);
165
+ };
166
+ reader.onerror = (event) => {
167
+ reject(event.target.error);
168
+ };
169
+ reader.readAsArrayBuffer(file);
170
+ });
171
+ }
172
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.10", ngImport: i0, type: RepeatDatatableComponent, deps: [{ token: i1.IonicDialogService }, { token: i2.TranslateService }, { token: i3.FileSaverService }], target: i0.ɵɵFactoryTarget.Component }); }
173
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.10", type: RepeatDatatableComponent, isStandalone: true, selector: "app-repeat-datatable", viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true }, { propertyName: "defaultColumn", first: true, predicate: ["defaultColumn"], descendants: true, static: true }, { propertyName: "actionsTmpl", first: true, predicate: ["actionsTmpl"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<ion-header [translucent]=\"true\">\n <ion-toolbar>\n <ng-container [ngTemplateOutlet]=\"header\"></ng-container>\n </ion-toolbar>\n <ng-container [ngTemplateOutlet]=\"search\"></ng-container>\n</ion-header>\n\n<ng-template #header>\n <ion-title class=\"ion-text-left\">{{props.label}}</ion-title>\n\n <ion-button slot=\"end\" (click)=\"exportData()\" fill=\"clear\" [disabled]=\"props.disabled\" *ngIf=\"exportDataProp\">\n <ion-icon name=\"cloud-download-outline\"></ion-icon>\n </ion-button>\n\n <ion-button slot=\"end\" (click)=\"importData()\" fill=\"clear\" [disabled]=\"props.disabled\" *ngIf=\"importDataProp\">\n <ion-icon name=\"cloud-upload-outline\"></ion-icon>\n </ion-button>\n <input #fileInput type=\"file\" style=\"display: none\" accept=\".xlsx,.xls,.csv\" (change)=\"handleImportFile($event)\">\n\n <ion-button slot=\"end\" (click)=\"add()\" fill=\"clear\" [disabled]=\"props.disabled\">\n <ion-icon size=\"large\" name=\"add\"></ion-icon>\n </ion-button>\n</ng-template>\n\n<ngx-datatable #table class=\"material fullscreen rls-server-scrolling\" [rows]=\"model\" [columns]=\"props['columns']\" [columnMode]=\"props['columnMode']\"\n [rowHeight]=\"props['rowHeight']\" [headerHeight]=\"props['headerHeight']\" [footerHeight]=\"props['footerHeight']\" [limit]=\"props['limit']\"\n [scrollbarH]=\"props['scrollbarH']\" [reorderable]=\"props['reorderable']\" [externalSorting]=\"true\">\n <ng-template #defaultColumn ngx-datatable-cell-template let-rowIndex=\"rowIndex\" let-value=\"value\" let-row=\"row\"\n let-column=\"column\">\n <formly-field class=\"formly-ion-list-item\" [field]=\"getField(field, column, rowIndex)\"></formly-field>\n </ng-template>\n</ngx-datatable>\n\n<ng-template #actionsTmpl let-row=\"row\" let-value=\"value\" let-rowIndex=\"rowIndex\">\n <ion-button style=\"height: 100%;\" fill=\"clear\"[disabled]=\"props.disabled\" (click)='remove(rowIndex)'>\n <ion-icon color=\"danger\" slot=\"icon-only\" name=\"trash\" (click)='remove(rowIndex)'></ion-icon>\n </ion-button>\n</ng-template>\n\n<ng-template #search>\n <ion-toolbar *ngIf=\"showSerach\">\n <ion-searchbar [debounce]=\"1000\" (ionChange)=\"handleChange($event)\"></ion-searchbar>\n </ion-toolbar>\n</ng-template>", styles: [".rls-server-scrolling{height:calc(100vh - 110px);position:relative!important}::ng-deep .datatable-body-cell{padding:0!important}::ng-deep .datatable-body-cell-label{height:100%!important}::ng-deep .progress-linear{position:fixed!important;bottom:0}::ng-deep .actions-cell{padding:5px 0 0 .9rem!important}::ng-deep .align-right{text-align:right!important}\n"], dependencies: [{ kind: "ngmodule", type: WrappersModule }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i5.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i5.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i5.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i5.IonSearchbar, selector: "ion-searchbar", inputs: ["animated", "autocomplete", "autocorrect", "cancelButtonIcon", "cancelButtonText", "clearIcon", "color", "debounce", "disabled", "enterkeyhint", "inputmode", "mode", "placeholder", "searchIcon", "showCancelButton", "showClearButton", "spellcheck", "type", "value"] }, { kind: "component", type: i5.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: i5.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "directive", type: i5.TextValueAccessor, selector: "ion-input:not([type=number]),ion-textarea,ion-searchbar" }, { kind: "component", type: i6.DatatableComponent, selector: "ngx-datatable", inputs: ["targetMarkerTemplate", "rows", "groupRowsBy", "groupedRows", "columns", "selected", "scrollbarV", "scrollbarH", "rowHeight", "columnMode", "headerHeight", "footerHeight", "externalPaging", "externalSorting", "limit", "count", "offset", "loadingIndicator", "selectionType", "reorderable", "swapColumns", "sortType", "sorts", "cssClasses", "messages", "rowClass", "selectCheck", "displayCheck", "groupExpansionDefault", "trackByProp", "selectAllRowsOnPage", "virtualization", "treeFromRelation", "treeToRelation", "summaryRow", "summaryHeight", "summaryPosition", "rowIdentity"], outputs: ["scroll", "activate", "select", "sort", "page", "reorder", "resize", "tableContextmenu", "treeAction"] }, { kind: "directive", type: i6.DataTableColumnCellDirective, selector: "[ngx-datatable-cell-template]" }, { kind: "component", type: i7.FormlyField, selector: "formly-field", inputs: ["field"] }] }); }
174
+ }
175
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.10", ngImport: i0, type: RepeatDatatableComponent, decorators: [{
176
+ type: Component,
177
+ args: [{ standalone: true, selector: 'app-repeat-datatable', imports: [
178
+ WrappersModule
179
+ ], template: "<ion-header [translucent]=\"true\">\n <ion-toolbar>\n <ng-container [ngTemplateOutlet]=\"header\"></ng-container>\n </ion-toolbar>\n <ng-container [ngTemplateOutlet]=\"search\"></ng-container>\n</ion-header>\n\n<ng-template #header>\n <ion-title class=\"ion-text-left\">{{props.label}}</ion-title>\n\n <ion-button slot=\"end\" (click)=\"exportData()\" fill=\"clear\" [disabled]=\"props.disabled\" *ngIf=\"exportDataProp\">\n <ion-icon name=\"cloud-download-outline\"></ion-icon>\n </ion-button>\n\n <ion-button slot=\"end\" (click)=\"importData()\" fill=\"clear\" [disabled]=\"props.disabled\" *ngIf=\"importDataProp\">\n <ion-icon name=\"cloud-upload-outline\"></ion-icon>\n </ion-button>\n <input #fileInput type=\"file\" style=\"display: none\" accept=\".xlsx,.xls,.csv\" (change)=\"handleImportFile($event)\">\n\n <ion-button slot=\"end\" (click)=\"add()\" fill=\"clear\" [disabled]=\"props.disabled\">\n <ion-icon size=\"large\" name=\"add\"></ion-icon>\n </ion-button>\n</ng-template>\n\n<ngx-datatable #table class=\"material fullscreen rls-server-scrolling\" [rows]=\"model\" [columns]=\"props['columns']\" [columnMode]=\"props['columnMode']\"\n [rowHeight]=\"props['rowHeight']\" [headerHeight]=\"props['headerHeight']\" [footerHeight]=\"props['footerHeight']\" [limit]=\"props['limit']\"\n [scrollbarH]=\"props['scrollbarH']\" [reorderable]=\"props['reorderable']\" [externalSorting]=\"true\">\n <ng-template #defaultColumn ngx-datatable-cell-template let-rowIndex=\"rowIndex\" let-value=\"value\" let-row=\"row\"\n let-column=\"column\">\n <formly-field class=\"formly-ion-list-item\" [field]=\"getField(field, column, rowIndex)\"></formly-field>\n </ng-template>\n</ngx-datatable>\n\n<ng-template #actionsTmpl let-row=\"row\" let-value=\"value\" let-rowIndex=\"rowIndex\">\n <ion-button style=\"height: 100%;\" fill=\"clear\"[disabled]=\"props.disabled\" (click)='remove(rowIndex)'>\n <ion-icon color=\"danger\" slot=\"icon-only\" name=\"trash\" (click)='remove(rowIndex)'></ion-icon>\n </ion-button>\n</ng-template>\n\n<ng-template #search>\n <ion-toolbar *ngIf=\"showSerach\">\n <ion-searchbar [debounce]=\"1000\" (ionChange)=\"handleChange($event)\"></ion-searchbar>\n </ion-toolbar>\n</ng-template>", styles: [".rls-server-scrolling{height:calc(100vh - 110px);position:relative!important}::ng-deep .datatable-body-cell{padding:0!important}::ng-deep .datatable-body-cell-label{height:100%!important}::ng-deep .progress-linear{position:fixed!important;bottom:0}::ng-deep .actions-cell{padding:5px 0 0 .9rem!important}::ng-deep .align-right{text-align:right!important}\n"] }]
180
+ }], ctorParameters: function () { return [{ type: i1.IonicDialogService }, { type: i2.TranslateService }, { type: i3.FileSaverService }]; }, propDecorators: { fileInput: [{
181
+ type: ViewChild,
182
+ args: ['fileInput']
183
+ }], defaultColumn: [{
184
+ type: ViewChild,
185
+ args: ['defaultColumn', { static: true }]
186
+ }], actionsTmpl: [{
187
+ type: ViewChild,
188
+ args: ['actionsTmpl', { static: true }]
189
+ }] } });
190
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwZWF0LWRhdGF0YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yb3NvZnRsYWIvaW9uaWMvc3JjL2xpYi90eXBlcy9yZXBlYXQtZGF0YXRhYmxlL3JlcGVhdC1kYXRhdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcm9zb2Z0bGFiL2lvbmljL3NyYy9saWIvdHlwZXMvcmVwZWF0LWRhdGF0YWJsZS9yZXBlYXQtZGF0YXRhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFVLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdEYsT0FBTyxFQUFFLGNBQWMsRUFBcUIsTUFBTSxrQkFBa0IsQ0FBQztBQUNyRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBZSxNQUFNLHlCQUF5QixDQUFDO0FBQ2pGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7Ozs7Ozs7OztBQXVCaEUsTUFBTSxPQUFPLHdCQUF5QixTQUFRLGNBQWM7SUFxQjFELFlBQ1MsYUFBaUMsRUFDakMsU0FBMkIsRUFDMUIsZ0JBQWtDO1FBQzFDLEtBQUssRUFBRSxDQUFDO1FBSEQsa0JBQWEsR0FBYixhQUFhLENBQW9CO1FBQ2pDLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQzFCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFoQjVD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dEVBMkNjLDZaRGZWLGNBQWM7OzRGQUdMLHdCQUF3QjtrQkFUcEMsU0FBUztpQ0FDSSxJQUFJLFlBQ04sc0JBQXNCLFdBR3ZCO3dCQUNQLGNBQWM7cUJBQ2Y7dUtBTXVCLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVztnQkFDK0IsYUFBYTtzQkFBakUsU0FBUzt1QkFBQyxlQUFlLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUNBLFdBQVc7c0JBQXRELFNBQVM7dUJBQUMsYUFBYSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgT25Jbml0LCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBGaWVsZEFycmF5VHlwZSwgRm9ybWx5RmllbGRDb25maWcgfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IENvbHVtbk1vZGUsIFNlbGVjdGlvblR5cGUsIFRhYmxlQ29sdW1uIH0gZnJvbSAnQHN3aW1sYW5lL25neC1kYXRhdGFibGUnO1xuaW1wb3J0IHsgRmlsZVNhdmVyU2VydmljZSB9IGZyb20gJ25neC1maWxlc2F2ZXInO1xuaW1wb3J0ICogYXMgWExTWCBmcm9tICd4bHN4JztcbmltcG9ydCB7IElvbmljRGlhbG9nU2VydmljZSB9IGZyb20gJy4uLy4uL2lvbmljLWRpYWxvZy5zZXJ2aWNlJztcbmltcG9ydCB7IFdyYXBwZXJzTW9kdWxlIH0gZnJvbSAnLi4vLi4vd3JhcHBlcnMvd3JhcHBlcnMubW9kdWxlJztcbmludGVyZmFjZSBTZWFyY2hQcm9wIHtcbiAgc2hvd1NlcmFjaDogYm9vbGVhblxuICBzZWFyY2hQcm9wOiBzdHJpbmdcbn1cbmludGVyZmFjZSBFeHBvcnREYXRhUHJvcCB7XG4gIHByb3BlcnRpZXNUb0V4cG9ydDogc3RyaW5nW11cbiAgc2hlZXROYW1lOiBzdHJpbmc7XG4gIGZpbGVOYW1lOiBzdHJpbmc7XG59XG5pbnRlcmZhY2UgSW1wb3J0RGF0YVByb3Age1xuICBrZXlQcm9wOiBzdHJpbmdcbiAgcHJvcGVydGllc1RvSW1wb3J0OiBzdHJpbmdbXVxufVxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAnYXBwLXJlcGVhdC1kYXRhdGFibGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vcmVwZWF0LWRhdGF0YWJsZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3JlcGVhdC1kYXRhdGFibGUuY29tcG9uZW50LnNjc3MnXSxcbiAgaW1wb3J0czogW1xuICAgIFdyYXBwZXJzTW9kdWxlXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgUmVwZWF0RGF0YXRhYmxlQ29tcG9uZW50IGV4dGVuZHMgRmllbGRBcnJheVR5cGUgaW1wbGVtZW50cyBPbkluaXQge1xuICAvKipcbiAgICpcbiAgICovXG4gIEBWaWV3Q2hpbGQoJ2ZpbGVJbnB1dCcpIGZpbGVJbnB1dDogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnZGVmYXVsdENvbHVtbicsIHsgc3RhdGljOiB0cnVlIH0pIHB1YmxpYyBkZWZhdWx0Q29sdW1uOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBAVmlld0NoaWxkKCdhY3Rpb25zVG1wbCcsIHsgc3RhdGljOiB0cnVlIH0pIGFjdGlvbnNUbXBsOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIGRhdGE6IEZvcm1seUZpZWxkQ29uZmlnW10gPSBudWxsO1xuICBzZXJhY2g6IFNlYXJjaFByb3AgPSBudWxsO1xuICBzaG93U2VyYWNoOiBib29sZWFuID0gZmFsc2U7XG4gIGRlbGV0ZU1lc3NhZ2U6IHN0cmluZ1xuICBkZWxldGVCdXR0b246IHN0cmluZ1xuICBjYW5jZWxCdXR0b246IHN0cmluZ1xuICBmaWx0ZXJWYWx1ZTogc3RyaW5nID0gbnVsbDtcbiAgdHlwZUtleTogc3RyaW5nO1xuICBpbXBvcnREYXRhUHJvcDogSW1wb3J0RGF0YVByb3AgPSBudWxsO1xuICBleHBvcnREYXRhUHJvcDogRXhwb3J0RGF0YVByb3AgPSBudWxsO1xuXG4gIENvbHVtbk1vZGUgPSBDb2x1bW5Nb2RlO1xuICBTZWxlY3Rpb25UeXBlID0gU2VsZWN0aW9uVHlwZTtcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGRpYWxvZ1NlcnZpY2U6IElvbmljRGlhbG9nU2VydmljZSxcbiAgICBwdWJsaWMgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgZmlsZVNhdmVyU2VydmljZTogRmlsZVNhdmVyU2VydmljZSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5kZWxldGVNZXNzYWdlID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudChcIkdlbmVyYWwuRGVsZXRlLlF1ZXN0aW9uXCIpXG4gICAgdGhpcy5kZWxldGVCdXR0b24gPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFwiR2VuZXJhbC5EZWxldGUuQnV0dG9uXCIpXG4gICAgdGhpcy5jYW5jZWxCdXR0b24gPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFwiR2VuZXJhbC5DYW5jZWwuQnV0dG9uXCIpXG5cbiAgfVxuICBvdmVycmlkZSBhZGQoaT86IG51bWJlciwgaW5pdGlhbE1vZGVsPzogYW55KSB7XG4gICAgaW5pdGlhbE1vZGVsID0ge31cbiAgICB0aGlzLnByb3BzWydjb2x1bW5zJ10uZm9yRWFjaChjb2x1bW4gPT4gaW5pdGlhbE1vZGVsW2NvbHVtbi5wcm9wXSA9IG51bGwpXG4gICAgc3VwZXIuYWRkKGksIGluaXRpYWxNb2RlbCk7XG4gIH1cbiAgb3ZlcnJpZGUgcmVtb3ZlKGk6IG51bWJlciwgeyBtYXJrQXNEaXJ0eSB9ID0geyBtYXJrQXNEaXJ0eTogdHJ1ZSB9KSB7XG4gICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmNvbmZpcm0odGhpcy5kZWxldGVNZXNzYWdlLCBudWxsLCB0aGlzLmRlbGV0ZUJ1dHRvbiwgdGhpcy5jYW5jZWxCdXR0b24pLnRoZW4oXG4gICAgICAodmFsdWU6IGFueSkgPT4ge1xuICAgICAgICBpZiAodmFsdWUuZGF0YSkge1xuICAgICAgICAgIHZhciBvbkRlbGV0ZSA9IHRoaXMuZmllbGQucHJvcHNbJ29uRGVsZXRlJ107XG4gICAgICAgICAgaWYgKG9uRGVsZXRlKSB7XG4gICAgICAgICAgICBvbkRlbGV0ZSh0aGlzLmZpZWxkLmZpZWxkR3JvdXBbaV0ubW9kZWwpLnN1YnNjcmliZShcbiAgICAgICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgICAgIHN1cGVyLnJlbW92ZShpKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKVxuICAgICAgICAgIH1cbiAgICAgICAgICBzdXBlci5yZW1vdmUoaSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICApXG4gIH1cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5wcm9wc1snY29sdW1ucyddLmZvckVhY2goY29sdW1uID0+IGNvbHVtbi5jZWxsVGVtcGxhdGUgPSB0aGlzLmRlZmF1bHRDb2x1bW4pO1xuICAgIHRoaXMucHJvcHNbJ2NvbHVtbnMnXS5wdXNoKHtcbiAgICAgIGNlbGxUZW1wbGF0ZTogdGhpcy5hY3Rpb25zVG1wbCxcbiAgICAgIG5hbWU6ICcnLFxuICAgICAgY2VsbENsYXNzOiAnYWN0aW9ucy1jZWxsJyxcbiAgICAgIGRyYWdnYWJsZTogZmFsc2UsXG4gICAgICBzb3J0YWJsZTogZmFsc2UsXG4gICAgICB2aXNpYmxlOiB0cnVlLFxuICAgICAgd2lkdGg6IDc1LFxuICAgICAgbWF4V2lkdGg6IDc1LFxuICAgICAgbWluV2lkdGg6IDc1XG4gICAgfSlcbiAgICB0aGlzLnR5cGVLZXkgPSB0aGlzLmZpZWxkLmtleSBhcyBzdHJpbmdcbiAgICB0aGlzLnNlcmFjaCA9IHRoaXMucHJvcHNbJ3NlYXJjaCddXG4gICAgdGhpcy5leHBvcnREYXRhUHJvcCA9IHRoaXMucHJvcHNbJ2V4cG9ydCddIHx8IG51bGxcbiAgICB0aGlzLmltcG9ydERhdGFQcm9wID0gdGhpcy5wcm9wc1snaW1wb3J0J10gfHwgbnVsbFxuICAgIGlmICh0aGlzLnNlcmFjaCkge1xuICAgICAgdGhpcy5zaG93U2VyYWNoID0gdGhpcy5zZXJhY2guc2hvd1NlcmFjaFxuICAgIH1cblxuICB9XG4gIGdldEZpZWxkKGZpZWxkOiBGb3JtbHlGaWVsZENvbmZpZywgY29sdW1uOiBUYWJsZUNvbHVtbiwgcm93SW5kZXg6IG51bWJlcik6IEZvcm1seUZpZWxkQ29uZmlnIHtcbiAgICByZXR1cm4gZmllbGQuZmllbGRHcm91cFtyb3dJbmRleF0uZmllbGRHcm91cC5maW5kKGYgPT4gZi5rZXkgPT09IGNvbHVtbi5wcm9wKTtcbiAgfVxuICBwb3N0UG9wdWxhdGUoZmllbGQ6IGFueSkge1xuICAgIGlmICh0aGlzLnNob3dTZXJhY2gpIHtcbiAgICAgIHRoaXMuZGF0YSA9IGZpZWxkLmZpZWxkR3JvdXBcbiAgICAgIGlmICh0aGlzLmZpbHRlclZhbHVlKSB7XG4gICAgICAgIHRoaXMuZmllbGQuZmllbGRHcm91cCA9IHRoaXMuZGF0YS5maWx0ZXIoZiA9PiBmLmZvcm1Db250cm9sLnZhbHVlW3RoaXMuc2VyYWNoLnNlYXJjaFByb3BdLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGhpcy5maWx0ZXJWYWx1ZSkpXG4gICAgICB9XG4gICAgfVxuICB9XG4gIGhhbmRsZUNoYW5nZShldmVudCkge1xuICAgIGlmICh0aGlzLnNob3dTZXJhY2gpIHtcbiAgICAgIGlmICh0aGlzLmRhdGEgPT0gbnVsbCAmJiB0aGlzLmZpZWxkLmZpZWxkR3JvdXAgIT09IG51bGwpIHtcbiAgICAgICAgdGhpcy5kYXRhID0gdGhpcy5maWVsZC5maWVsZEdyb3VwXG4gICAgICB9XG4gICAgICB0aGlzLmZpbHRlclZhbHVlID0gZXZlbnQudGFyZ2V0LnZhbHVlLnRvTG93ZXJDYXNlKCk7XG4gICAgICB0aGlzLmZpZWxkLmZpZWxkR3JvdXAgPSB0aGlzLmRhdGEuZmlsdGVyKGYgPT4gZi5mb3JtQ29udHJvbC52YWx1ZVt0aGlzLnNlcmFjaC5zZWFyY2hQcm9wXS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRoaXMuZmlsdGVyVmFsdWUpKVxuICAgIH1cbiAgfVxuICBpbXBvcnREYXRhKCkge1xuICAgIHRoaXMuZmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcbiAgfVxuICBhc3luYyBoYW5kbGVJbXBvcnRGaWxlKGV2ZW50OiBhbnkpIHtcbiAgICBjb25zdCBmaWxlID0gZXZlbnQudGFyZ2V0LmZpbGVzWzBdO1xuXG4gICAgaWYgKGZpbGUpIHtcbiAgICAgIHRyeSB7XG5cblxuICAgICAgICBjb25zdCBmaWxlQ29udGVudHMgPSBhd2FpdCB0aGlzLnJlYWRGaWxlQXN5bmMoZmlsZSk7XG4gICAgICAgIC8vIEhhbmRsZSB0aGUgZmlsZSBjb250ZW50cyBoZXJlIChlLmcuLCBkaXNwbGF5IG9yIHByb2Nlc3MgdGhlIGRhdGEpXG4gICAgICAgIGNvbnN0IHdiOiBYTFNYLldvcmtCb29rID0gWExTWC5yZWFkKGZpbGVDb250ZW50cykvLywgeyB0eXBlOiAnYmluYXJ5JyB9KTtcbiAgICAgICAgY29uc3Qgd3NuYW1lOiBzdHJpbmcgPSB3Yi5TaGVldE5hbWVzWzBdO1xuICAgICAgICBjb25zdCB3czogWExTWC5Xb3JrU2hlZXQgPSB3Yi5TaGVldHNbd3NuYW1lXTtcbiAgICAgICAgY29uc3QgZXhjZWxEYXRhID0gWExTWC51dGlscy5zaGVldF90b19qc29uKHdzKS8vLCB7IGhlYWRlcjogMSB9KTtcbiAgICAgICAgZXhjZWxEYXRhLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICAgICAgY29uc3QganNvblggPSB0aGlzLmdldFZhbHVlRnJvbUpzb25EYXRhKGVsZW1lbnQsIHRoaXMuaW1wb3J0RGF0YVByb3Aua2V5UHJvcClcbiAgICAgICAgICBjb25zdCBpZHggPSB0aGlzLmZpZWxkLnBhcmVudC5tb2RlbFt0aGlzLnR5cGVLZXldLmZpbmRJbmRleChmID0+IGZbdGhpcy5pbXBvcnREYXRhUHJvcC5rZXlQcm9wXSA9PT0ganNvblgpXG4gICAgICAgICAgaWYgKGlkeCA+PSAwKSB7XG4gICAgICAgICAgICBjb25zdCBleGlzdGluZ2RhdGEgPSB0aGlzLmZpZWxkLnBhcmVudC5tb2RlbFt0aGlzLnR5cGVLZXldW2lkeF1cbiAgICAgICAgICAgIGZvciAoY29uc3QgcHJvcCBvZiB0aGlzLmltcG9ydERhdGFQcm9wLnByb3BlcnRpZXNUb0ltcG9ydCkge1xuICAgICAgICAgICAgICBjb25zdCBqc29uVmFsID0gdGhpcy5nZXRWYWx1ZUZyb21Kc29uRGF0YShlbGVtZW50LCBwcm9wKVxuICAgICAgICAgICAgICBpZiAoZXhpc3RpbmdkYXRhW3Byb3BdICE9PSBqc29uVmFsKSB7XG4gICAgICAgICAgICAgICAgdmFyIGZpZWxkQ29udHJvbCA9IHRoaXMuZmllbGQuZmllbGRHcm91cFtpZHhdLmZvcm1Db250cm9sIGFzIEZvcm1Hcm91cFxuICAgICAgICAgICAgICAgIGZpZWxkQ29udHJvbC5jb250cm9sc1twcm9wXS5zZXRWYWx1ZShqc29uVmFsKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHN1cGVyLmFkZChudWxsLCBlbGVtZW50KVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHJlYWRpbmcgdGhlIGZpbGU6JywgZXJyb3IpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGV4cG9ydERhdGEoKSB7XG5cbiAgICAvLyBGaWx0ZXIgdGhlIGRhdGEgdG8gaW5jbHVkZSBvbmx5IHRoZSBzcGVjaWZpZWQgcHJvcGVydGllc1xuICAgIGNvbnN0IGZpbHRlcmVkRGF0YSA9IHRoaXMuZmllbGQucGFyZW50Lm1vZGVsW3RoaXMudHlwZUtleV0ubWFwKGl0ZW0gPT4ge1xuICAgICAgY29uc3QgZmlsdGVyZWRJdGVtOiBhbnkgPSB7fTtcbiAgICAgIGZvciAoY29uc3QgcHJvcCBvZiB0aGlzLmV4cG9ydERhdGFQcm9wLnByb3BlcnRpZXNUb0V4cG9ydCkge1xuICAgICAgICBmaWx0ZXJlZEl0ZW1bcHJvcF0gPSBpdGVtW3Byb3BdO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZpbHRlcmVkSXRlbTtcbiAgICB9KTtcblxuICAgIGNvbnN0IHdzOiBYTFNYLldvcmtTaGVldCA9IFhMU1gudXRpbHMuanNvbl90b19zaGVldChmaWx0ZXJlZERhdGEpO1xuICAgIGNvbnN0IHdiOiBYTFNYLldvcmtCb29rID0gWExTWC51dGlscy5ib29rX25ldygpO1xuICAgIFhMU1gudXRpbHMuYm9va19hcHBlbmRfc2hlZXQod2IsIHdzLCB0aGlzLmV4cG9ydERhdGFQcm9wLnNoZWV0TmFtZSk7XG5cbiAgICBjb25zdCBleGNlbEJ1ZmZlcjogYW55ID0gWExTWC53cml0ZSh3YiwgeyBib29rVHlwZTogJ3hsc3gnLCB0eXBlOiAnYXJyYXknIH0pO1xuXG4gICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtleGNlbEJ1ZmZlcl0sIHsgdHlwZTogJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0JyB9KTtcbiAgICB0aGlzLmZpbGVTYXZlclNlcnZpY2Uuc2F2ZShibG9iLCB0aGlzLmV4cG9ydERhdGFQcm9wLmZpbGVOYW1lKTtcbiAgfVxuXG4gIGdldFZhbHVlRnJvbUpzb25EYXRhKGpzb25EYXRhOiBhbnksIGtleTogc3RyaW5nKTogYW55IHtcbiAgICAvLyBDb252ZXJ0IHRoZSBrZXkgYW5kIGFsbCBKU09OIGtleXMgdG8gbG93ZXJjYXNlXG4gICAgY29uc3QgbG93ZXJjYXNlS2V5ID0ga2V5LnRvTG93ZXJDYXNlKCk7XG4gICAgY29uc3QgbG93ZXJjYXNlS2V5cyA9IE9iamVjdC5rZXlzKGpzb25EYXRhKS5tYXAoayA9PiBrLnRvTG93ZXJDYXNlKCkpO1xuXG4gICAgLy8gRmluZCB0aGUgbG93ZXJjYXNlIGtleSBpbiB0aGUgbG93ZXJjYXNlIGtleXMgYXJyYXlcbiAgICBjb25zdCBpbmRleCA9IGxvd2VyY2FzZUtleXMuaW5kZXhPZihsb3dlcmNhc2VLZXkpO1xuXG4gICAgLy8gSWYgZm91bmQsIHVzZSB0aGUgb3JpZ2luYWwgKHByb3BlciBjYXNlKSBrZXkgdG8gYWNjZXNzIHRoZSB2YWx1ZVxuICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgIGNvbnN0IG9yaWdpbmFsS2V5ID0gT2JqZWN0LmtleXMoanNvbkRhdGEpW2luZGV4XTtcbiAgICAgIHJldHVybiBqc29uRGF0YVtvcmlnaW5hbEtleV07XG4gICAgfVxuXG4gICAgLy8gS2V5IG5vdCBmb3VuZFxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgcHJpdmF0ZSByZWFkRmlsZUFzeW5jKGZpbGU6IEZpbGUpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTxhbnk+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG5cbiAgICAgIHJlYWRlci5vbmxvYWQgPSAoZXZlbnQ6IGFueSkgPT4ge1xuICAgICAgICByZXNvbHZlKGV2ZW50LnRhcmdldC5yZXN1bHQpO1xuICAgICAgfTtcblxuICAgICAgcmVhZGVyLm9uZXJyb3IgPSAoZXZlbnQ6IGFueSkgPT4ge1xuICAgICAgICByZWplY3QoZXZlbnQudGFyZ2V0LmVycm9yKTtcbiAgICAgIH07XG5cbiAgICAgIHJlYWRlci5yZWFkQXNBcnJheUJ1ZmZlcihmaWxlKTtcbiAgICB9KTtcbiAgfVxufSIsIjxpb24taGVhZGVyIFt0cmFuc2x1Y2VudF09XCJ0cnVlXCI+XG4gIDxpb24tdG9vbGJhcj5cbiAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImhlYWRlclwiPjwvbmctY29udGFpbmVyPlxuICA8L2lvbi10b29sYmFyPlxuICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInNlYXJjaFwiPjwvbmctY29udGFpbmVyPlxuPC9pb24taGVhZGVyPlxuXG48bmctdGVtcGxhdGUgI2hlYWRlcj5cbiAgPGlvbi10aXRsZSBjbGFzcz1cImlvbi10ZXh0LWxlZnRcIj57e3Byb3BzLmxhYmVsfX08L2lvbi10aXRsZT5cblxuICA8aW9uLWJ1dHRvbiBzbG90PVwiZW5kXCIgKGNsaWNrKT1cImV4cG9ydERhdGEoKVwiIGZpbGw9XCJjbGVhclwiIFtkaXNhYmxlZF09XCJwcm9wcy5kaXNhYmxlZFwiICpuZ0lmPVwiZXhwb3J0RGF0YVByb3BcIj5cbiAgICA8aW9uLWljb24gbmFtZT1cImNsb3VkLWRvd25sb2FkLW91dGxpbmVcIj48L2lvbi1pY29uPlxuICA8L2lvbi1idXR0b24+XG5cbiAgPGlvbi1idXR0b24gc2xvdD1cImVuZFwiIChjbGljayk9XCJpbXBvcnREYXRhKClcIiBmaWxsPVwiY2xlYXJcIiBbZGlzYWJsZWRdPVwicHJvcHMuZGlzYWJsZWRcIiAqbmdJZj1cImltcG9ydERhdGFQcm9wXCI+XG4gICAgPGlvbi1pY29uIG5hbWU9XCJjbG91ZC11cGxvYWQtb3V0bGluZVwiPjwvaW9uLWljb24+XG4gIDwvaW9uLWJ1dHRvbj5cbiAgPGlucHV0ICNmaWxlSW5wdXQgdHlwZT1cImZpbGVcIiBzdHlsZT1cImRpc3BsYXk6IG5vbmVcIiBhY2NlcHQ9XCIueGxzeCwueGxzLC5jc3ZcIiAoY2hhbmdlKT1cImhhbmRsZUltcG9ydEZpbGUoJGV2ZW50KVwiPlxuXG4gIDxpb24tYnV0dG9uIHNsb3Q9XCJlbmRcIiAoY2xpY2spPVwiYWRkKClcIiBmaWxsPVwiY2xlYXJcIiBbZGlzYWJsZWRdPVwicHJvcHMuZGlzYWJsZWRcIj5cbiAgICA8aW9uLWljb24gc2l6ZT1cImxhcmdlXCIgbmFtZT1cImFkZFwiPjwvaW9uLWljb24+XG4gIDwvaW9uLWJ1dHRvbj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZ3gtZGF0YXRhYmxlICN0YWJsZSBjbGFzcz1cIm1hdGVyaWFsIGZ1bGxzY3JlZW4gcmxzLXNlcnZlci1zY3JvbGxpbmdcIiBbcm93c109XCJtb2RlbFwiIFtjb2x1bW5zXT1cInByb3BzWydjb2x1bW5zJ11cIiBbY29sdW1uTW9kZV09XCJwcm9wc1snY29sdW1uTW9kZSddXCJcbiAgW3Jvd0hlaWdodF09XCJwcm9wc1sncm93SGVpZ2h0J11cIiBbaGVhZGVySGVpZ2h0XT1cInByb3BzWydoZWFkZXJIZWlnaHQnXVwiIFtmb290ZXJIZWlnaHRdPVwicHJvcHNbJ2Zvb3RlckhlaWdodCddXCIgW2xpbWl0XT1cInByb3BzWydsaW1pdCddXCJcbiAgW3Njcm9sbGJhckhdPVwicHJvcHNbJ3Njcm9sbGJhckgnXVwiIFtyZW9yZGVyYWJsZV09XCJwcm9wc1sncmVvcmRlcmFibGUnXVwiIFtleHRlcm5hbFNvcnRpbmddPVwidHJ1ZVwiPlxuICA8bmctdGVtcGxhdGUgI2RlZmF1bHRDb2x1bW4gbmd4LWRhdGF0YWJsZS1jZWxsLXRlbXBsYXRlIGxldC1yb3dJbmRleD1cInJvd0luZGV4XCIgbGV0LXZhbHVlPVwidmFsdWVcIiBsZXQtcm93PVwicm93XCJcbiAgICBsZXQtY29sdW1uPVwiY29sdW1uXCI+XG4gICAgPGZvcm1seS1maWVsZCAgIGNsYXNzPVwiZm9ybWx5LWlvbi1saXN0LWl0ZW1cIiAgW2ZpZWxkXT1cImdldEZpZWxkKGZpZWxkLCBjb2x1bW4sIHJvd0luZGV4KVwiPjwvZm9ybWx5LWZpZWxkPlxuICA8L25nLXRlbXBsYXRlPlxuPC9uZ3gtZGF0YXRhYmxlPlxuXG48bmctdGVtcGxhdGUgI2FjdGlvbnNUbXBsIGxldC1yb3c9XCJyb3dcIiBsZXQtdmFsdWU9XCJ2YWx1ZVwiICBsZXQtcm93SW5kZXg9XCJyb3dJbmRleFwiPlxuICA8aW9uLWJ1dHRvbiBzdHlsZT1cImhlaWdodDogMTAwJTtcIiBmaWxsPVwiY2xlYXJcIltkaXNhYmxlZF09XCJwcm9wcy5kaXNhYmxlZFwiIChjbGljayk9J3JlbW92ZShyb3dJbmRleCknPlxuICAgIDxpb24taWNvbiBjb2xvcj1cImRhbmdlclwiIHNsb3Q9XCJpY29uLW9ubHlcIiBuYW1lPVwidHJhc2hcIiAoY2xpY2spPSdyZW1vdmUocm93SW5kZXgpJz48L2lvbi1pY29uPlxuICA8L2lvbi1idXR0b24+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3NlYXJjaD5cbiAgPGlvbi10b29sYmFyICpuZ0lmPVwic2hvd1NlcmFjaFwiPlxuICAgIDxpb24tc2VhcmNoYmFyIFtkZWJvdW5jZV09XCIxMDAwXCIgKGlvbkNoYW5nZSk9XCJoYW5kbGVDaGFuZ2UoJGV2ZW50KVwiPjwvaW9uLXNlYXJjaGJhcj5cbiAgPC9pb24tdG9vbGJhcj5cbjwvbmctdGVtcGxhdGU+Il19