qms-angular 1.1.20 → 1.1.21
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/bundles/qms-angular.umd.js +847 -485
- package/bundles/qms-angular.umd.js.map +1 -1
- package/esm2015/lib/common/models/qms-flat-node.model.js +1 -1
- package/esm2015/lib/common/models/qms-tree-node.model.js +1 -1
- package/esm2015/lib/components/select-access-dialog/common/animation.js +27 -3
- package/esm2015/lib/components/select-access-dialog/model/access-paging.model.js +12 -0
- package/esm2015/lib/components/select-access-dialog/model/filter-person.model.js +3 -0
- package/esm2015/lib/components/select-access-dialog/model/select-access-config.model.js +2 -1
- package/esm2015/lib/components/select-access-dialog/model/select-access-data.js +4 -3
- package/esm2015/lib/components/select-access-dialog/public-api.js +4 -1
- package/esm2015/lib/components/select-access-dialog/select-access-dialog.component.js +201 -125
- package/esm2015/lib/components/select-access-dialog/select-access-dialog.module.js +4 -2
- package/esm2015/lib/components/select-department/common/animation.js +26 -2
- package/esm2015/lib/components/select-department/select-department.component.js +21 -21
- package/esm2015/lib/components/select-department/select-department.module.js +2 -2
- package/esm2015/lib/components/select-department-tree/animation/animation.js +2 -2
- package/esm2015/lib/components/select-department-tree/model/department-paging.model.js +9 -0
- package/esm2015/lib/components/select-department-tree/model/selection-change.model.js +2 -0
- package/esm2015/lib/components/select-department-tree/public-api.js +3 -1
- package/esm2015/lib/components/select-department-tree/select-department-tree.component.js +312 -236
- package/esm2015/lib/directives/content-changes.directive.js +32 -0
- package/esm2015/lib/directives/tooltip/tooltip-elipsify.directive.js +51 -0
- package/esm2015/lib/directives/tooltip/tooltip-renderer.directive.js +1 -1
- package/esm2015/lib/model/en.js +3 -2
- package/esm2015/lib/model/no.js +3 -2
- package/esm2015/lib/qms-angular.module.js +9 -3
- package/esm2015/lib/qms-ckeditor-components/common/models/qms-ckeditor-data.model.js +1 -1
- package/esm2015/lib/qms-ckeditor-components/qms-ckeditor.component.js +62 -50
- package/esm2015/public-api.js +3 -1
- package/fesm2015/qms-angular.js +790 -472
- package/fesm2015/qms-angular.js.map +1 -1
- package/lib/common/models/qms-flat-node.model.d.ts +2 -0
- package/lib/common/models/qms-tree-node.model.d.ts +5 -0
- package/lib/components/select-access-dialog/model/access-paging.model.d.ts +9 -0
- package/lib/components/select-access-dialog/model/filter-person.model.d.ts +6 -0
- package/lib/components/select-access-dialog/model/select-access-config.model.d.ts +1 -0
- package/lib/components/select-access-dialog/model/select-access-data.d.ts +4 -2
- package/lib/components/select-access-dialog/public-api.d.ts +3 -0
- package/lib/components/select-access-dialog/select-access-dialog.component.d.ts +41 -18
- package/lib/components/select-department/select-department.component.d.ts +7 -6
- package/lib/components/select-department-tree/model/department-paging.model.d.ts +5 -0
- package/lib/components/select-department-tree/model/selection-change.model.d.ts +4 -0
- package/lib/components/select-department-tree/public-api.d.ts +2 -0
- package/lib/components/select-department-tree/select-department-tree.component.d.ts +24 -15
- package/lib/directives/content-changes.directive.d.ts +9 -0
- package/lib/directives/tooltip/tooltip-elipsify.directive.d.ts +13 -0
- package/lib/directives/tooltip/tooltip-renderer.directive.d.ts +2 -2
- package/lib/model/en.d.ts +2 -1
- package/lib/model/no.d.ts +2 -1
- package/lib/qms-ckeditor-components/common/models/qms-ckeditor-data.model.d.ts +1 -1
- package/lib/qms-ckeditor-components/qms-ckeditor.component.d.ts +6 -0
- package/package.json +1 -1
- package/public-api.d.ts +2 -0
- package/qms-angular.metadata.json +1 -1
- package/src/assets/qms-ckeditor-plugin/build/ckeditor.js +1 -1
- package/src/assets/qms-ckeditor-plugin/build/ckeditor.js.map +1 -1
- package/src/assets/qms-ckeditor-plugin/src/plugins/template/loadtemplatedialogcommand.js +5 -1
- package/src/lib/components/select-access-dialog/select-access-dialog.component.scss +103 -41
- package/src/lib/components/select-department/select-department.component.scss +12 -0
- package/src/lib/components/select-department-tree/select-department-tree.component.scss +1 -1
@@ -42,6 +42,8 @@ import { QMSTableRowDirective } from './directives/table/table-row.directive';
|
|
42
42
|
import { QMSDialogContainer, QMSDialogContainerV2, QMSDialogContent, QMSDialogFooter, QMSDialogHeader } from './directives/dialog/dialog.content.directive';
|
43
43
|
import { QMSTextTruncateDirective } from './directives/text-truncate/text-truncate.directive';
|
44
44
|
import { QMSMultiIconDirective } from './directives/qms-multi-icon.directive';
|
45
|
+
import { EllipsifyDirective } from './directives/tooltip/tooltip-elipsify.directive';
|
46
|
+
import { QMSContentChangesDirective } from './directives/content-changes.directive';
|
45
47
|
const ɵ0 = { appearance: 'fill' }, ɵ1 = { color: 'none' };
|
46
48
|
export class QmsAngularModule {
|
47
49
|
}
|
@@ -100,7 +102,9 @@ QmsAngularModule.decorators = [
|
|
100
102
|
QMSDialogHeader,
|
101
103
|
QMSDialogContent,
|
102
104
|
QMSDialogFooter,
|
103
|
-
QMSMultiIconDirective
|
105
|
+
QMSMultiIconDirective,
|
106
|
+
EllipsifyDirective,
|
107
|
+
QMSContentChangesDirective
|
104
108
|
],
|
105
109
|
imports: [
|
106
110
|
CommonModule,
|
@@ -161,7 +165,9 @@ QmsAngularModule.decorators = [
|
|
161
165
|
QMSDialogHeader,
|
162
166
|
QMSDialogContent,
|
163
167
|
QMSDialogFooter,
|
164
|
-
QMSMultiIconDirective
|
168
|
+
QMSMultiIconDirective,
|
169
|
+
EllipsifyDirective,
|
170
|
+
QMSContentChangesDirective
|
165
171
|
],
|
166
172
|
providers: [
|
167
173
|
{ provide: MAT_FORM_FIELD_DEFAULT_OPTIONS, useValue: ɵ0 },
|
@@ -172,4 +178,4 @@ QmsAngularModule.decorators = [
|
|
172
178
|
},] }
|
173
179
|
];
|
174
180
|
export { ɵ0, ɵ1 };
|
175
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicW1zLWFuZ3VsYXIubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvcW1zLWFuZ3VsYXIvc3JjL2xpYi9xbXMtYW5ndWxhci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzlFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDeEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQy9HLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQzNGLE9BQU8sRUFBRSxtQ0FBbUMsRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBQ25ILE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBQzdHLE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLDZEQUE2RCxDQUFDO0FBQ2pILE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFD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ckMsc0NBQXNDO29CQUN0QyxtQkFBbUI7b0JBQ25CLHFCQUFxQjtvQkFDckIscUJBQXFCO29CQUNyQixnQkFBZ0I7b0JBQ2hCLDJCQUEyQjtvQkFDM0IsY0FBYztvQkFDZCxxQkFBcUI7b0JBQ3JCLGdDQUFnQztvQkFDaEMsbUNBQW1DO29CQUNuQyxrQ0FBa0M7b0JBQ2xDLDZCQUE2QjtvQkFDN0IseUJBQXlCO29CQUN6Qix3QkFBd0I7b0JBQ3hCLFlBQVk7b0JBQ1osU0FBUztvQkFDVCxpQkFBaUI7b0JBQ2pCLG9CQUFvQjtvQkFDcEIsd0JBQXdCO29CQUN4Qix5QkFBeUI7b0JBQ3pCLHFCQUFxQjtvQkFDckIscUJBQXFCO29CQUNyQix5QkFBeUI7b0JBQ3pCLGtCQUFrQjtvQkFDbEIsb0JBQW9CO29CQUNwQixlQUFlO29CQUNmLGdCQUFnQjtvQkFDaEIsZUFBZTtvQkFDZixxQkFBcUI7aUJBQ3RCO2dCQUNELFNBQVMsRUFBRTtvQkFDVCxFQUFFLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxRQUFRLElBQXdCLEVBQUU7b0JBQzdFLEVBQUUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLFFBQVEsSUFBbUIsRUFBRTtvQkFDbkUscUJBQXFCO2lCQUN0QjtnQkFDRCxzQkFBc0I7YUFDdkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTUFUX0ZPUk1fRklFTERfREVGQVVMVF9PUFRJT05TIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XHJcbmltcG9ydCB7IE1BVF9SQURJT19ERUZBVUxUX09QVElPTlMgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9yYWRpbyc7XHJcbmltcG9ydCB7IFFNU0NvbW1lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY29tbWVudC9jb21tZW50JztcclxuaW1wb3J0IHsgU2VsZWN0RGlhbG9nIH0gZnJvbSAnLi9jb21wb25lbnRzL3NlbGVjdC1kaWFsb2cvc2VsZWN0LWRpYWxvZyc7XHJcbmltcG9ydCB7IFFNU0NvbmZpcm1EaWFsb2csIFFNU0Zvcm1EaWFsb2cgfSBmcm9tICcuL2NvbXBvbmVudHMvZGlhbG9nL2RpYWxvZyc7XHJcbmltcG9ydCB7IFFNU1N1ZmZpeERpcmVjdGl2ZSwgUU1TU3VmZml4RmllbGREaXJlY3RpdmUgfSBmcm9tICcuL2NvbXBvbmVudHMvc3VmZml4LWZpZWxkL3N1ZmZpeC1maWVsZC5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBRTVNDaGlwSW5wdXRDaGlwTGlzdERpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9jaGlwLWlucHV0L2NoaXAtaW5wdXQtY2hpcC1saXN0LmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFFNU0NoaXBJbnB1dERpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9jaGlwLWlucHV0L2NoaXAtaW5wdXQtZmllbGQuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgUU1TQ2hpcElucHV0U2VsZWN0RHJvcERvd25EaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvY2hpcC1pbnB1dC9jaGlwLWlucHV0LXNlbGVjdC1kcm9wZG93bi5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBRTVNDaGlwSW5wdXRTZWxlY3RGaWVsZERpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9jaGlwLWlucHV0L2NoaXAtaW5wdXQtc2VsZWN0LWZpZWxkLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFFNU0NoaXBJbnB1dFNlbGVjdFRyaWdnZXJEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvY2hpcC1pbnB1dC9jaGlwLWlucHV0LXNlbGVjdC10cmlnZ2VyLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFFNU0NoaXBCb2R5RGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL2NoaXBzL2NoaXAtYm9keS5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBRTVNJbnB1dENoaXBEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvY2hpcHMvY2hpcC5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBRTVNEcm9wZG93bk1lbnVJdGVtIH0gZnJvbSAnLi9kaXJlY3RpdmVzL2Ryb3Bkb3duLW1lbnUvZHJvcGRvd24taXRlbS5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBRTVNBdHRhY2htZW50TGlzdERpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9maWxlLXVwbG9hZC9maWxlLXVwbG9hZC1hdHRhY2htZW50LWxpc3QuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgUU1TRmlsZVVwbG9hZERpc3BsYXlEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvZmlsZS11cGxvYWQvZmlsZS11cGxvYWQtZGlzcGxheS5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBRTVNGaWxlVXBsb2FkTXVsdGlwbGVEaXNwbGF5RGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL2ZpbGUtdXBsb2FkL2ZpbGUtdXBsb2FkLW11bHRpcGxlLWRpc3BsYXkuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgUU1TRmlsZVVwbG9hZE11bHRpcGxlU2VsZWN0b3JEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvZmlsZS11cGxvYWQvZmlsZS11cGxvYWQtbXVsdGlwbGUtc2VsZWN0b3IuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgUU1TRmlsZVVwbG9hZE11bHRpcGxlRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL2ZpbGUtdXBsb2FkL2ZpbGUtdXBsb2FkLW11bHRpcGxlLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFFNU1Njcm9sYWJsZUF0dGFjaG1lbnRMaXN0RGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL2ZpbGUtdXBsb2FkL2ZpbGUtdXBsb2FkLXNjcm9sbGFibGUtYXR0YWNobWVudC1saXN0LmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFFNU0ZpbGVVcGxvYWRTZWxlY3RvckRpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9maWxlLXVwbG9hZC9maWxlLXVwbG9hZC1zZWxlY3Rvci5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBRTVNGaWxlVXBsb2FkRGlyZWN0aXZlLCBRTVNVcGxvYWRpbmdGaWxlR3VhcmQgfSBmcm9tICcuL2RpcmVjdGl2ZXMvZmlsZS11cGxvYWQvZmlsZS11cGxvYWQuZGlyZWN0aXZlJztcclxuaW1wb3J0IHtcclxuICBBdXRvY29tcGxldGVPZmZEaXJlY3RpdmUsXHJcbiAgUU1TRm9ybUZpZWxkRGF0ZVBpY2tlckRpcmVjdGl2ZSxcclxuICBRTVNGb3JtRmllbGREaXJlY3RpdmUsXHJcbiAgUU1TRm9ybUZpZWxkVGV4dGFyZWFEaXJlY3RpdmUsXHJcbiAgUU1TR3JvdXBPcHRpb25EaXJlY3RpdmVcclxufSBmcm9tICcuL2RpcmVjdGl2ZXMvZm9ybS5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBNYXJnaW5EaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvbWFyZ2luLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFNjcm9sbFRvU2VsZWN0ZWREaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvc2Nyb2xsLXNlbGVjdGVkL3Njcm9sbC10by1zZWxlY3RlZC5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBRTVNTY3JvbGxiYXJEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvc2Nyb2xsYmFyL3Njcm9sbGJhci5kaXJlY3RpdmUnO1xyXG5pbXBvcnQge1xyXG4gIFFNU0lucHV0Q2xlYXJEaXJlY3RpdmUsXHJcbiAgUU1TU2VhcmNoRmllbGREaXJlY3RpdmVcclxufSBmcm9tICcuL2RpcmVjdGl2ZXMvc2VhcmNoLWZpZWxkLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFFNU1RleHRCbG9ja0xpbmUgfSBmcm9tIFwiLi9kaXJlY3RpdmVzL3RleHQtYmxvY2svdGV4dC1ibG9jay1saW5lLmRpcmVjdGl2ZVwiO1xyXG5pbXBvcnQgeyBRTVNUZXh0QmxvY2tEaXJlY3RpdmUgfSBmcm9tIFwiLi9kaXJlY3RpdmVzL3RleHQtYmxvY2svdGV4dC1ibG9jay5kaXJlY3RpdmVcIjtcclxuaW1wb3J0IHsgUU1TVG9vbHRpcEltYWdlRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL3Rvb2x0aXAvdG9vbHRpcC1pbWFnZS5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBRTVNUb29sVGlwUmVuZGVyZXJEaXJlY3RpdmUgfSBmcm9tIFwiLi9kaXJlY3RpdmVzL3Rvb2x0aXAvdG9vbHRpcC1yZW5kZXJlci5kaXJlY3RpdmVcIjtcclxuaW1wb3J0IHsgU2hhcmVkTWF0ZXJpYWxNb2R1bGUgfSBmcm9tICcuL21hdGVyaWFsLW1vZHVsZSc7XHJcbmltcG9ydCB7IERhdGVGb3JtYXRQaXBlIH0gZnJvbSAnLi9waXBlL2RhdGVGb3JtYXQucGlwZSc7XHJcbmltcG9ydCB7IFFtc0FuZ3VsYXJDb21wb25lbnQgfSBmcm9tICcuL3Ftcy1hbmd1bGFyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFNoYXJlZE1vZHVsZSB9IGZyb20gJy4vc2hhcmVkLm1vZHVsZSc7XHJcbmltcG9ydCB7IFFNU0FwcEJhciB9IGZyb20gJy4vZGlyZWN0aXZlcy9hcHAtYmFyL2FwcC1iYXIuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQ2RrRGV0YWlsUm93RGlyZWN0aXZlLCBRTVNDb2xsYXBzZUdyb3VwRGlyZWN0aXZlLCBRTVNSb3dEZXRhaWxEaXJlY3RpdmUsIFFNU1RhYmxlQ2hpbGRyZW5EaXJlY3RpdmUsIFFNU1RhYmxlRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL3RhYmxlL3RhYmxlLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFFNU1RhYmxlUm93RGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL3RhYmxlL3RhYmxlLXJvdy5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBRTVNEaWFsb2dDb250YWluZXIsIFFNU0RpYWxvZ0NvbnRhaW5lclYyLCBRTVNEaWFsb2dDb250ZW50LCBRTVNEaWFsb2dGb290ZXIsIFFNU0RpYWxvZ0hlYWRlciB9IGZyb20gJy4vZGlyZWN0aXZlcy9kaWFsb2cvZGlhbG9nLmNvbnRlbnQuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgUU1TVGV4dFRydW5jYXRlRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL3RleHQtdHJ1bmNhdGUvdGV4dC10cnVuY2F0ZS5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBRTVNNdWx0aUljb25EaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvcW1zLW11bHRpLWljb24uZGlyZWN0aXZlJztcclxuXHJcblxyXG5cclxuQE5nTW9kdWxlKHtcclxuICBkZWNsYXJhdGlvbnM6IFtcclxuICAgIFFtc0FuZ3VsYXJDb21wb25lbnQsXHJcbiAgICBNYXJnaW5EaXJlY3RpdmUsXHJcbiAgICBRTVNTZWFyY2hGaWVsZERpcmVjdGl2ZSxcclxuICAgIFFNU0lucHV0Q2xlYXJEaXJlY3RpdmUsXHJcbiAgICBRTVNGb3JtRmllbGREaXJlY3RpdmUsXHJcbiAgICBRTVNGb3JtRmllbGRUZXh0YXJlYURpcmVjdGl2ZSxcclxuICAgIFFNU0dyb3VwT3B0aW9uRGlyZWN0aXZlLFxyXG4gICAgUU1TU3VmZml4RmllbGREaXJlY3RpdmUsXHJcbiAgICBRTVNTdWZmaXhEaXJlY3RpdmUsXHJcbiAgICBRTVNGb3JtRmllbGRUZXh0YXJlYURpcmVjdGl2ZSxcclxuICAgIEF1dG9jb21wbGV0ZU9mZkRpcmVjdGl2ZSxcclxuICAgIFFNU0NvbW1lbnQsXHJcbiAgICBRTVNDb25maXJtRGlhbG9nLFxyXG4gICAgUU1TRm9ybURpYWxvZyxcclxuICAgIFFNU0Zvcm1GaWVsZERhdGVQaWNrZXJEaXJlY3RpdmUsXHJcbiAgICBRTVNJbnB1dENoaXBEaXJlY3RpdmUsXHJcbiAgICBRTVNDaGlwQm9keURpcmVjdGl2ZSxcclxuICAgIFFNU0ZpbGVVcGxvYWREaXJlY3RpdmUsXHJcbiAgICBRTVNGaWxlVXBsb2FkRGlzcGxheURpcmVjdGl2ZSxcclxuICAgIFFNU0ZpbGVVcGxvYWRTZWxlY3RvckRpcmVjdGl2ZSxcclxuICAgIFFNU0F0dGFjaG1lbnRMaXN0RGlyZWN0aXZlLFxyXG4gICAgUU1TU2Nyb2xhYmxlQXR0YWNobWVudExpc3REaXJlY3RpdmUsXHJcbiAgICBRTVNGaWxlVXBsb2FkTXVsdGlwbGVEaXJlY3RpdmUsXHJcbiAgICBRTVNGaWxlVXBsb2FkTXVsdGlwbGVEaXNwbGF5RGlyZWN0aXZlLFxyXG4gICAgUU1TRmlsZVVwbG9hZE11bHRpcGxlU2VsZWN0b3JEaXJlY3RpdmUsXHJcbiAgICBRTVNEcm9wZG93bk1lbnVJdGVtLFxyXG4gICAgUU1TU2Nyb2xsYmFyRGlyZWN0aXZlLFxyXG4gICAgUU1TVGV4dEJsb2NrRGlyZWN0aXZlLFxyXG4gICAgUU1TVGV4dEJsb2NrTGluZSxcclxuICAgIFFNU1Rvb2xUaXBSZW5kZXJlckRpcmVjdGl2ZSxcclxuICAgIFFNU1RhYmxlRGlyZWN0aXZlLFxyXG4gICAgUU1TVGFibGVSb3dEaXJlY3RpdmUsXHJcbiAgICBRTVNUZXh0VHJ1bmNhdGVEaXJlY3RpdmUsXHJcbiAgICBRTVNSb3dEZXRhaWxEaXJlY3RpdmUsXHJcbiAgICBRTVNUYWJsZUNoaWxkcmVuRGlyZWN0aXZlLFxyXG4gICAgQ2RrRGV0YWlsUm93RGlyZWN0aXZlLFxyXG4gICAgUU1TQ29sbGFwc2VHcm91cERpcmVjdGl2ZSxcclxuICAgIERhdGVGb3JtYXRQaXBlLFxyXG4gICAgUU1TQ2hpcElucHV0RGlyZWN0aXZlLFxyXG4gICAgUU1TQ2hpcElucHV0U2VsZWN0RmllbGREaXJlY3RpdmUsXHJcbiAgICBRTVNDaGlwSW5wdXRTZWxlY3REcm9wRG93bkRpcmVjdGl2ZSxcclxuICAgIFFNU0NoaXBJbnB1dFNlbGVjdFRyaWdnZXJEaXJlY3RpdmUsXHJcbiAgICBRTVNDaGlwSW5wdXRDaGlwTGlzdERpcmVjdGl2ZSxcclxuICAgIFNjcm9sbFRvU2VsZWN0ZWREaXJlY3RpdmUsXHJcbiAgICBRTVNUb29sdGlwSW1hZ2VEaXJlY3RpdmUsXHJcbiAgICBTZWxlY3REaWFsb2csXHJcbiAgICBRTVNBcHBCYXIsXHJcbiAgICBRTVNEaWFsb2dDb250YWluZXIsXHJcbiAgICBRTVNEaWFsb2dDb250YWluZXJWMixcclxuICAgIFFNU0RpYWxvZ0hlYWRlcixcclxuICAgIFFNU0RpYWxvZ0NvbnRlbnQsXHJcbiAgICBRTVNEaWFsb2dGb290ZXIsXHJcbiAgICBRTVNNdWx0aUljb25EaXJlY3RpdmVcclxuICBdLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgIFNoYXJlZE1vZHVsZS5mb3JSb290KCksXHJcbiAgICBTaGFyZWRNYXRlcmlhbE1vZHVsZVxyXG4gIF0sXHJcbiAgZXhwb3J0czogW1xyXG4gICAgUW1zQW5ndWxhckNvbXBvbmVudCxcclxuICAgIE1hcmdpbkRpcmVjdGl2ZSxcclxuICAgIFFNU1NlYXJjaEZpZWxkRGlyZWN0aXZlLFxyXG4gICAgUU1TSW5wdXRDbGVhckRpcmVjdGl2ZSxcclxuICAgIFFNU0Zvcm1GaWVsZERpcmVjdGl2ZSxcclxuICAgIFFNU0Zvcm1GaWVsZFRleHRhcmVhRGlyZWN0aXZlLFxyXG4gICAgUU1TR3JvdXBPcHRpb25EaXJlY3RpdmUsXHJcbiAgICBRTVNTdWZmaXhGaWVsZERpcmVjdGl2ZSxcclxuICAgIFFNU1N1ZmZpeERpcmVjdGl2ZSxcclxuICAgIEF1dG9jb21wbGV0ZU9mZkRpcmVjdGl2ZSxcclxuICAgIFFNU0NvbW1lbnQsXHJcbiAgICBRTVNDb25maXJtRGlhbG9nLFxyXG4gICAgUU1TRm9ybURpYWxvZyxcclxuICAgIFFNU0lucHV0Q2hpcERpcmVjdGl2ZSxcclxuICAgIFFNU0NoaXBCb2R5RGlyZWN0aXZlLFxyXG4gICAgUU1TRm9ybUZpZWxkRGF0ZVBpY2tlckRpcmVjdGl2ZSxcclxuICAgIFFNU0ZpbGVVcGxvYWREaXJlY3RpdmUsXHJcbiAgICBRTVNGaWxlVXBsb2FkRGlzcGxheURpcmVjdGl2ZSxcclxuICAgIFFNU0ZpbGVVcGxvYWRTZWxlY3RvckRpcmVjdGl2ZSxcclxuICAgIFFNU0F0dGFjaG1lbnRMaXN0RGlyZWN0aXZlLFxyXG4gICAgUU1TU2Nyb2xhYmxlQXR0YWNobWVudExpc3REaXJlY3RpdmUsXHJcbiAgICBRTVNGaWxlVXBsb2FkTXVsdGlwbGVEaXJlY3RpdmUsXHJcbiAgICBRTVNGaWxlVXBsb2FkTXVsdGlwbGVEaXNwbGF5RGlyZWN0aXZlLFxyXG4gICAgUU1TRmlsZVVwbG9hZE11bHRpcGxlU2VsZWN0b3JEaXJlY3RpdmUsXHJcbiAgICBRTVNEcm9wZG93bk1lbnVJdGVtLFxyXG4gICAgUU1TU2Nyb2xsYmFyRGlyZWN0aXZlLFxyXG4gICAgUU1TVGV4dEJsb2NrRGlyZWN0aXZlLFxyXG4gICAgUU1TVGV4dEJsb2NrTGluZSxcclxuICAgIFFNU1Rvb2xUaXBSZW5kZXJlckRpcmVjdGl2ZSxcclxuICAgIERhdGVGb3JtYXRQaXBlLFxyXG4gICAgUU1TQ2hpcElucHV0RGlyZWN0aXZlLFxyXG4gICAgUU1TQ2hpcElucHV0U2VsZWN0RmllbGREaXJlY3RpdmUsXHJcbiAgICBRTVNDaGlwSW5wdXRTZWxlY3REcm9wRG93bkRpcmVjdGl2ZSxcclxuICAgIFFNU0NoaXBJbnB1dFNlbGVjdFRyaWdnZXJEaXJlY3RpdmUsXHJcbiAgICBRTVNDaGlwSW5wdXRDaGlwTGlzdERpcmVjdGl2ZSxcclxuICAgIFNjcm9sbFRvU2VsZWN0ZWREaXJlY3RpdmUsXHJcbiAgICBRTVNUb29sdGlwSW1hZ2VEaXJlY3RpdmUsXHJcbiAgICBTZWxlY3REaWFsb2csXHJcbiAgICBRTVNBcHBCYXIsXHJcbiAgICBRTVNUYWJsZURpcmVjdGl2ZSxcclxuICAgIFFNU1RhYmxlUm93RGlyZWN0aXZlLFxyXG4gICAgUU1TVGV4dFRydW5jYXRlRGlyZWN0aXZlLFxyXG4gICAgUU1TVGFibGVDaGlsZHJlbkRpcmVjdGl2ZSxcclxuICAgIFFNU1Jvd0RldGFpbERpcmVjdGl2ZSxcclxuICAgIENka0RldGFpbFJvd0RpcmVjdGl2ZSxcclxuICAgIFFNU0NvbGxhcHNlR3JvdXBEaXJlY3RpdmUsXHJcbiAgICBRTVNEaWFsb2dDb250YWluZXIsXHJcbiAgICBRTVNEaWFsb2dDb250YWluZXJWMixcclxuICAgIFFNU0RpYWxvZ0hlYWRlcixcclxuICAgIFFNU0RpYWxvZ0NvbnRlbnQsXHJcbiAgICBRTVNEaWFsb2dGb290ZXIsXHJcbiAgICBRTVNNdWx0aUljb25EaXJlY3RpdmVcclxuICBdLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAgeyBwcm92aWRlOiBNQVRfRk9STV9GSUVMRF9ERUZBVUxUX09QVElPTlMsIHVzZVZhbHVlOiB7IGFwcGVhcmFuY2U6ICdmaWxsJyB9IH0sXHJcbiAgICB7IHByb3ZpZGU6IE1BVF9SQURJT19ERUZBVUxUX09QVElPTlMsIHVzZVZhbHVlOiB7IGNvbG9yOiAnbm9uZScgfSB9LFxyXG4gICAgUU1TVXBsb2FkaW5nRmlsZUd1YXJkXHJcbiAgXSxcclxuICAvLyBlbnRyeUNvbXBvbmVudHM6IFtdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBRbXNBbmd1bGFyTW9kdWxlIHsgfVxyXG4iXX0=
|
181
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicW1zLWFuZ3VsYXIubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvcW1zLWFuZ3VsYXIvc3JjL2xpYi9xbXMtYW5ndWxhci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzlFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDeEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQy9HLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQzNGLE9BQU8sRUFBRSxtQ0FBbUMsRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBQ25ILE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBQzdHLE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLDZEQUE2RCxDQUFDO0FBQ2pILE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFD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QjtvQkFDcEIsK0JBQStCO29CQUMvQixzQkFBc0I7b0JBQ3RCLDZCQUE2QjtvQkFDN0IsOEJBQThCO29CQUM5QiwwQkFBMEI7b0JBQzFCLG1DQUFtQztvQkFDbkMsOEJBQThCO29CQUM5QixxQ0FBcUM7b0JBQ3JDLHNDQUFzQztvQkFDdEMsbUJBQW1CO29CQUNuQixxQkFBcUI7b0JBQ3JCLHFCQUFxQjtvQkFDckIsZ0JBQWdCO29CQUNoQiwyQkFBMkI7b0JBQzNCLGNBQWM7b0JBQ2QscUJBQXFCO29CQUNyQixnQ0FBZ0M7b0JBQ2hDLG1DQUFtQztvQkFDbkMsa0NBQWtDO29CQUNsQyw2QkFBNkI7b0JBQzdCLHlCQUF5QjtvQkFDekIsd0JBQXdCO29CQUN4QixZQUFZO29CQUNaLFNBQVM7b0JBQ1QsaUJBQWlCO29CQUNqQixvQkFBb0I7b0JBQ3BCLHdCQUF3QjtvQkFDeEIseUJBQXlCO29CQUN6QixxQkFBcUI7b0JBQ3JCLHFCQUFxQjtvQkFDckIseUJBQXlCO29CQUN6QixrQkFBa0I7b0JBQ2xCLG9CQUFvQjtvQkFDcEIsZUFBZTtvQkFDZixnQkFBZ0I7b0JBQ2hCLGVBQWU7b0JBQ2YscUJBQXFCO29CQUNyQixrQkFBa0I7b0JBQ2xCLDBCQUEwQjtpQkFDM0I7Z0JBQ0QsU0FBUyxFQUFFO29CQUNULEVBQUUsT0FBTyxFQUFFLDhCQUE4QixFQUFFLFFBQVEsSUFBd0IsRUFBRTtvQkFDN0UsRUFBRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsUUFBUSxJQUFtQixFQUFFO29CQUNuRSxxQkFBcUI7aUJBQ3RCO2dCQUNELHNCQUFzQjthQUN2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBNQVRfRk9STV9GSUVMRF9ERUZBVUxUX09QVElPTlMgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcclxuaW1wb3J0IHsgTUFUX1JBRElPX0RFRkFVTFRfT1BUSU9OUyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3JhZGlvJztcclxuaW1wb3J0IHsgUU1TQ29tbWVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jb21tZW50L2NvbW1lbnQnO1xyXG5pbXBvcnQgeyBTZWxlY3REaWFsb2cgfSBmcm9tICcuL2NvbXBvbmVudHMvc2VsZWN0LWRpYWxvZy9zZWxlY3QtZGlhbG9nJztcclxuaW1wb3J0IHsgUU1TQ29uZmlybURpYWxvZywgUU1TRm9ybURpYWxvZyB9IGZyb20gJy4vY29tcG9uZW50cy9kaWFsb2cvZGlhbG9nJztcclxuaW1wb3J0IHsgUU1TU3VmZml4RGlyZWN0aXZlLCBRTVNTdWZmaXhGaWVsZERpcmVjdGl2ZSB9IGZyb20gJy4vY29tcG9uZW50cy9zdWZmaXgtZmllbGQvc3VmZml4LWZpZWxkLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFFNU0NoaXBJbnB1dENoaXBMaXN0RGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL2NoaXAtaW5wdXQvY2hpcC1pbnB1dC1jaGlwLWxpc3QuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgUU1TQ2hpcElucHV0RGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL2NoaXAtaW5wdXQvY2hpcC1pbnB1dC1maWVsZC5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBRTVNDaGlwSW5wdXRTZWxlY3REcm9wRG93bkRpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9jaGlwLWlucHV0L2NoaXAtaW5wdXQtc2VsZWN0LWRyb3Bkb3duLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFFNU0NoaXBJbnB1dFNlbGVjdEZpZWxkRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL2NoaXAtaW5wdXQvY2hpcC1pbnB1dC1zZWxlY3QtZmllbGQuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgUU1TQ2hpcElucHV0U2VsZWN0VHJpZ2dlckRpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9jaGlwLWlucHV0L2NoaXAtaW5wdXQtc2VsZWN0LXRyaWdnZXIuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgUU1TQ2hpcEJvZHlEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvY2hpcHMvY2hpcC1ib2R5LmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFFNU0lucHV0Q2hpcERpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9jaGlwcy9jaGlwLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFFNU0Ryb3Bkb3duTWVudUl0ZW0gfSBmcm9tICcuL2RpcmVjdGl2ZXMvZHJvcGRvd24tbWVudS9kcm9wZG93bi1pdGVtLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFFNU0F0dGFjaG1lbnRMaXN0RGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL2ZpbGUtdXBsb2FkL2ZpbGUtdXBsb2FkLWF0dGFjaG1lbnQtbGlzdC5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBRTVNGaWxlVXBsb2FkRGlzcGxheURpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9maWxlLXVwbG9hZC9maWxlLXVwbG9hZC1kaXNwbGF5LmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFFNU0ZpbGVVcGxvYWRNdWx0aXBsZURpc3BsYXlEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvZmlsZS11cGxvYWQvZmlsZS11cGxvYWQtbXVsdGlwbGUtZGlzcGxheS5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBRTVNGaWxlVXBsb2FkTXVsdGlwbGVTZWxlY3RvckRpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9maWxlLXVwbG9hZC9maWxlLXVwbG9hZC1tdWx0aXBsZS1zZWxlY3Rvci5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBRTVNGaWxlVXBsb2FkTXVsdGlwbGVEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvZmlsZS11cGxvYWQvZmlsZS11cGxvYWQtbXVsdGlwbGUuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgUU1TU2Nyb2xhYmxlQXR0YWNobWVudExpc3REaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvZmlsZS11cGxvYWQvZmlsZS11cGxvYWQtc2Nyb2xsYWJsZS1hdHRhY2htZW50LWxpc3QuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgUU1TRmlsZVVwbG9hZFNlbGVjdG9yRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL2ZpbGUtdXBsb2FkL2ZpbGUtdXBsb2FkLXNlbGVjdG9yLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFFNU0ZpbGVVcGxvYWREaXJlY3RpdmUsIFFNU1VwbG9hZGluZ0ZpbGVHdWFyZCB9IGZyb20gJy4vZGlyZWN0aXZlcy9maWxlLXVwbG9hZC9maWxlLXVwbG9hZC5kaXJlY3RpdmUnO1xyXG5pbXBvcnQge1xyXG4gIEF1dG9jb21wbGV0ZU9mZkRpcmVjdGl2ZSxcclxuICBRTVNGb3JtRmllbGREYXRlUGlja2VyRGlyZWN0aXZlLFxyXG4gIFFNU0Zvcm1GaWVsZERpcmVjdGl2ZSxcclxuICBRTVNGb3JtRmllbGRUZXh0YXJlYURpcmVjdGl2ZSxcclxuICBRTVNHcm91cE9wdGlvbkRpcmVjdGl2ZVxyXG59IGZyb20gJy4vZGlyZWN0aXZlcy9mb3JtLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IE1hcmdpbkRpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9tYXJnaW4uZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgU2Nyb2xsVG9TZWxlY3RlZERpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9zY3JvbGwtc2VsZWN0ZWQvc2Nyb2xsLXRvLXNlbGVjdGVkLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFFNU1Njcm9sbGJhckRpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9zY3JvbGxiYXIvc2Nyb2xsYmFyLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7XHJcbiAgUU1TSW5wdXRDbGVhckRpcmVjdGl2ZSxcclxuICBRTVNTZWFyY2hGaWVsZERpcmVjdGl2ZVxyXG59IGZyb20gJy4vZGlyZWN0aXZlcy9zZWFyY2gtZmllbGQuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgUU1TVGV4dEJsb2NrTGluZSB9IGZyb20gXCIuL2RpcmVjdGl2ZXMvdGV4dC1ibG9jay90ZXh0LWJsb2NrLWxpbmUuZGlyZWN0aXZlXCI7XHJcbmltcG9ydCB7IFFNU1RleHRCbG9ja0RpcmVjdGl2ZSB9IGZyb20gXCIuL2RpcmVjdGl2ZXMvdGV4dC1ibG9jay90ZXh0LWJsb2NrLmRpcmVjdGl2ZVwiO1xyXG5pbXBvcnQgeyBRTVNUb29sdGlwSW1hZ2VEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvdG9vbHRpcC90b29sdGlwLWltYWdlLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFFNU1Rvb2xUaXBSZW5kZXJlckRpcmVjdGl2ZSB9IGZyb20gXCIuL2RpcmVjdGl2ZXMvdG9vbHRpcC90b29sdGlwLXJlbmRlcmVyLmRpcmVjdGl2ZVwiO1xyXG5pbXBvcnQgeyBTaGFyZWRNYXRlcmlhbE1vZHVsZSB9IGZyb20gJy4vbWF0ZXJpYWwtbW9kdWxlJztcclxuaW1wb3J0IHsgRGF0ZUZvcm1hdFBpcGUgfSBmcm9tICcuL3BpcGUvZGF0ZUZvcm1hdC5waXBlJztcclxuaW1wb3J0IHsgUW1zQW5ndWxhckNvbXBvbmVudCB9IGZyb20gJy4vcW1zLWFuZ3VsYXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU2hhcmVkTW9kdWxlIH0gZnJvbSAnLi9zaGFyZWQubW9kdWxlJztcclxuaW1wb3J0IHsgUU1TQXBwQmFyIH0gZnJvbSAnLi9kaXJlY3RpdmVzL2FwcC1iYXIvYXBwLWJhci5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBDZGtEZXRhaWxSb3dEaXJlY3RpdmUsIFFNU0NvbGxhcHNlR3JvdXBEaXJlY3RpdmUsIFFNU1Jvd0RldGFpbERpcmVjdGl2ZSwgUU1TVGFibGVDaGlsZHJlbkRpcmVjdGl2ZSwgUU1TVGFibGVEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvdGFibGUvdGFibGUuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgUU1TVGFibGVSb3dEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvdGFibGUvdGFibGUtcm93LmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFFNU0RpYWxvZ0NvbnRhaW5lciwgUU1TRGlhbG9nQ29udGFpbmVyVjIsIFFNU0RpYWxvZ0NvbnRlbnQsIFFNU0RpYWxvZ0Zvb3RlciwgUU1TRGlhbG9nSGVhZGVyIH0gZnJvbSAnLi9kaXJlY3RpdmVzL2RpYWxvZy9kaWFsb2cuY29udGVudC5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBRTVNUZXh0VHJ1bmNhdGVEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvdGV4dC10cnVuY2F0ZS90ZXh0LXRydW5jYXRlLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFFNU011bHRpSWNvbkRpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9xbXMtbXVsdGktaWNvbi5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBFbGxpcHNpZnlEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvdG9vbHRpcC90b29sdGlwLWVsaXBzaWZ5LmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFFNU0NvbnRlbnRDaGFuZ2VzRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL2NvbnRlbnQtY2hhbmdlcy5kaXJlY3RpdmUnO1xyXG5cclxuXHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGRlY2xhcmF0aW9uczogW1xyXG4gICAgUW1zQW5ndWxhckNvbXBvbmVudCxcclxuICAgIE1hcmdpbkRpcmVjdGl2ZSxcclxuICAgIFFNU1NlYXJjaEZpZWxkRGlyZWN0aXZlLFxyXG4gICAgUU1TSW5wdXRDbGVhckRpcmVjdGl2ZSxcclxuICAgIFFNU0Zvcm1GaWVsZERpcmVjdGl2ZSxcclxuICAgIFFNU0Zvcm1GaWVsZFRleHRhcmVhRGlyZWN0aXZlLFxyXG4gICAgUU1TR3JvdXBPcHRpb25EaXJlY3RpdmUsXHJcbiAgICBRTVNTdWZmaXhGaWVsZERpcmVjdGl2ZSxcclxuICAgIFFNU1N1ZmZpeERpcmVjdGl2ZSxcclxuICAgIFFNU0Zvcm1GaWVsZFRleHRhcmVhRGlyZWN0aXZlLFxyXG4gICAgQXV0b2NvbXBsZXRlT2ZmRGlyZWN0aXZlLFxyXG4gICAgUU1TQ29tbWVudCxcclxuICAgIFFNU0NvbmZpcm1EaWFsb2csXHJcbiAgICBRTVNGb3JtRGlhbG9nLFxyXG4gICAgUU1TRm9ybUZpZWxkRGF0ZVBpY2tlckRpcmVjdGl2ZSxcclxuICAgIFFNU0lucHV0Q2hpcERpcmVjdGl2ZSxcclxuICAgIFFNU0NoaXBCb2R5RGlyZWN0aXZlLFxyXG4gICAgUU1TRmlsZVVwbG9hZERpcmVjdGl2ZSxcclxuICAgIFFNU0ZpbGVVcGxvYWREaXNwbGF5RGlyZWN0aXZlLFxyXG4gICAgUU1TRmlsZVVwbG9hZFNlbGVjdG9yRGlyZWN0aXZlLFxyXG4gICAgUU1TQXR0YWNobWVudExpc3REaXJlY3RpdmUsXHJcbiAgICBRTVNTY3JvbGFibGVBdHRhY2htZW50TGlzdERpcmVjdGl2ZSxcclxuICAgIFFNU0ZpbGVVcGxvYWRNdWx0aXBsZURpcmVjdGl2ZSxcclxuICAgIFFNU0ZpbGVVcGxvYWRNdWx0aXBsZURpc3BsYXlEaXJlY3RpdmUsXHJcbiAgICBRTVNGaWxlVXBsb2FkTXVsdGlwbGVTZWxlY3RvckRpcmVjdGl2ZSxcclxuICAgIFFNU0Ryb3Bkb3duTWVudUl0ZW0sXHJcbiAgICBRTVNTY3JvbGxiYXJEaXJlY3RpdmUsXHJcbiAgICBRTVNUZXh0QmxvY2tEaXJlY3RpdmUsXHJcbiAgICBRTVNUZXh0QmxvY2tMaW5lLFxyXG4gICAgUU1TVG9vbFRpcFJlbmRlcmVyRGlyZWN0aXZlLFxyXG4gICAgUU1TVGFibGVEaXJlY3RpdmUsXHJcbiAgICBRTVNUYWJsZVJvd0RpcmVjdGl2ZSxcclxuICAgIFFNU1RleHRUcnVuY2F0ZURpcmVjdGl2ZSxcclxuICAgIFFNU1Jvd0RldGFpbERpcmVjdGl2ZSxcclxuICAgIFFNU1RhYmxlQ2hpbGRyZW5EaXJlY3RpdmUsXHJcbiAgICBDZGtEZXRhaWxSb3dEaXJlY3RpdmUsXHJcbiAgICBRTVNDb2xsYXBzZUdyb3VwRGlyZWN0aXZlLFxyXG4gICAgRGF0ZUZvcm1hdFBpcGUsXHJcbiAgICBRTVNDaGlwSW5wdXREaXJlY3RpdmUsXHJcbiAgICBRTVNDaGlwSW5wdXRTZWxlY3RGaWVsZERpcmVjdGl2ZSxcclxuICAgIFFNU0NoaXBJbnB1dFNlbGVjdERyb3BEb3duRGlyZWN0aXZlLFxyXG4gICAgUU1TQ2hpcElucHV0U2VsZWN0VHJpZ2dlckRpcmVjdGl2ZSxcclxuICAgIFFNU0NoaXBJbnB1dENoaXBMaXN0RGlyZWN0aXZlLFxyXG4gICAgU2Nyb2xsVG9TZWxlY3RlZERpcmVjdGl2ZSxcclxuICAgIFFNU1Rvb2x0aXBJbWFnZURpcmVjdGl2ZSxcclxuICAgIFNlbGVjdERpYWxvZyxcclxuICAgIFFNU0FwcEJhcixcclxuICAgIFFNU0RpYWxvZ0NvbnRhaW5lcixcclxuICAgIFFNU0RpYWxvZ0NvbnRhaW5lclYyLFxyXG4gICAgUU1TRGlhbG9nSGVhZGVyLFxyXG4gICAgUU1TRGlhbG9nQ29udGVudCxcclxuICAgIFFNU0RpYWxvZ0Zvb3RlcixcclxuICAgIFFNU011bHRpSWNvbkRpcmVjdGl2ZSxcclxuICAgIEVsbGlwc2lmeURpcmVjdGl2ZSxcclxuICAgIFFNU0NvbnRlbnRDaGFuZ2VzRGlyZWN0aXZlXHJcbiAgXSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICBTaGFyZWRNb2R1bGUuZm9yUm9vdCgpLFxyXG4gICAgU2hhcmVkTWF0ZXJpYWxNb2R1bGVcclxuICBdLFxyXG4gIGV4cG9ydHM6IFtcclxuICAgIFFtc0FuZ3VsYXJDb21wb25lbnQsXHJcbiAgICBNYXJnaW5EaXJlY3RpdmUsXHJcbiAgICBRTVNTZWFyY2hGaWVsZERpcmVjdGl2ZSxcclxuICAgIFFNU0lucHV0Q2xlYXJEaXJlY3RpdmUsXHJcbiAgICBRTVNGb3JtRmllbGREaXJlY3RpdmUsXHJcbiAgICBRTVNGb3JtRmllbGRUZXh0YXJlYURpcmVjdGl2ZSxcclxuICAgIFFNU0dyb3VwT3B0aW9uRGlyZWN0aXZlLFxyXG4gICAgUU1TU3VmZml4RmllbGREaXJlY3RpdmUsXHJcbiAgICBRTVNTdWZmaXhEaXJlY3RpdmUsXHJcbiAgICBBdXRvY29tcGxldGVPZmZEaXJlY3RpdmUsXHJcbiAgICBRTVNDb21tZW50LFxyXG4gICAgUU1TQ29uZmlybURpYWxvZyxcclxuICAgIFFNU0Zvcm1EaWFsb2csXHJcbiAgICBRTVNJbnB1dENoaXBEaXJlY3RpdmUsXHJcbiAgICBRTVNDaGlwQm9keURpcmVjdGl2ZSxcclxuICAgIFFNU0Zvcm1GaWVsZERhdGVQaWNrZXJEaXJlY3RpdmUsXHJcbiAgICBRTVNGaWxlVXBsb2FkRGlyZWN0aXZlLFxyXG4gICAgUU1TRmlsZVVwbG9hZERpc3BsYXlEaXJlY3RpdmUsXHJcbiAgICBRTVNGaWxlVXBsb2FkU2VsZWN0b3JEaXJlY3RpdmUsXHJcbiAgICBRTVNBdHRhY2htZW50TGlzdERpcmVjdGl2ZSxcclxuICAgIFFNU1Njcm9sYWJsZUF0dGFjaG1lbnRMaXN0RGlyZWN0aXZlLFxyXG4gICAgUU1TRmlsZVVwbG9hZE11bHRpcGxlRGlyZWN0aXZlLFxyXG4gICAgUU1TRmlsZVVwbG9hZE11bHRpcGxlRGlzcGxheURpcmVjdGl2ZSxcclxuICAgIFFNU0ZpbGVVcGxvYWRNdWx0aXBsZVNlbGVjdG9yRGlyZWN0aXZlLFxyXG4gICAgUU1TRHJvcGRvd25NZW51SXRlbSxcclxuICAgIFFNU1Njcm9sbGJhckRpcmVjdGl2ZSxcclxuICAgIFFNU1RleHRCbG9ja0RpcmVjdGl2ZSxcclxuICAgIFFNU1RleHRCbG9ja0xpbmUsXHJcbiAgICBRTVNUb29sVGlwUmVuZGVyZXJEaXJlY3RpdmUsXHJcbiAgICBEYXRlRm9ybWF0UGlwZSxcclxuICAgIFFNU0NoaXBJbnB1dERpcmVjdGl2ZSxcclxuICAgIFFNU0NoaXBJbnB1dFNlbGVjdEZpZWxkRGlyZWN0aXZlLFxyXG4gICAgUU1TQ2hpcElucHV0U2VsZWN0RHJvcERvd25EaXJlY3RpdmUsXHJcbiAgICBRTVNDaGlwSW5wdXRTZWxlY3RUcmlnZ2VyRGlyZWN0aXZlLFxyXG4gICAgUU1TQ2hpcElucHV0Q2hpcExpc3REaXJlY3RpdmUsXHJcbiAgICBTY3JvbGxUb1NlbGVjdGVkRGlyZWN0aXZlLFxyXG4gICAgUU1TVG9vbHRpcEltYWdlRGlyZWN0aXZlLFxyXG4gICAgU2VsZWN0RGlhbG9nLFxyXG4gICAgUU1TQXBwQmFyLFxyXG4gICAgUU1TVGFibGVEaXJlY3RpdmUsXHJcbiAgICBRTVNUYWJsZVJvd0RpcmVjdGl2ZSxcclxuICAgIFFNU1RleHRUcnVuY2F0ZURpcmVjdGl2ZSxcclxuICAgIFFNU1RhYmxlQ2hpbGRyZW5EaXJlY3RpdmUsXHJcbiAgICBRTVNSb3dEZXRhaWxEaXJlY3RpdmUsXHJcbiAgICBDZGtEZXRhaWxSb3dEaXJlY3RpdmUsXHJcbiAgICBRTVNDb2xsYXBzZUdyb3VwRGlyZWN0aXZlLFxyXG4gICAgUU1TRGlhbG9nQ29udGFpbmVyLFxyXG4gICAgUU1TRGlhbG9nQ29udGFpbmVyVjIsXHJcbiAgICBRTVNEaWFsb2dIZWFkZXIsXHJcbiAgICBRTVNEaWFsb2dDb250ZW50LFxyXG4gICAgUU1TRGlhbG9nRm9vdGVyLFxyXG4gICAgUU1TTXVsdGlJY29uRGlyZWN0aXZlLFxyXG4gICAgRWxsaXBzaWZ5RGlyZWN0aXZlLFxyXG4gICAgUU1TQ29udGVudENoYW5nZXNEaXJlY3RpdmVcclxuICBdLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAgeyBwcm92aWRlOiBNQVRfRk9STV9GSUVMRF9ERUZBVUxUX09QVElPTlMsIHVzZVZhbHVlOiB7IGFwcGVhcmFuY2U6ICdmaWxsJyB9IH0sXHJcbiAgICB7IHByb3ZpZGU6IE1BVF9SQURJT19ERUZBVUxUX09QVElPTlMsIHVzZVZhbHVlOiB7IGNvbG9yOiAnbm9uZScgfSB9LFxyXG4gICAgUU1TVXBsb2FkaW5nRmlsZUd1YXJkXHJcbiAgXSxcclxuICAvLyBlbnRyeUNvbXBvbmVudHM6IFtdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBRbXNBbmd1bGFyTW9kdWxlIHsgfVxyXG4iXX0=
|
@@ -1,3 +1,3 @@
|
|
1
1
|
export class QMSCKEditorData {
|
2
2
|
}
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicW1zLWNrZWRpdG9yLWRhdGEubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9xbXMtYW5ndWxhci9zcmMvbGliL3Ftcy1ja2VkaXRvci1jb21wb25lbnRzL2NvbW1vbi9tb2RlbHMvcW1zLWNrZWRpdG9yLWRhdGEubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxPQUFPLGVBQWU7Q0FhM0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBXUHJvb2ZyZWFkZXJDb25maWcgfSBmcm9tIFwiLi93cHJvb2ZyZWFkZXItY29uZmlnLm1vZGVsXCI7XHJcblxyXG5leHBvcnQgY2xhc3MgUU1TQ0tFZGl0b3JEYXRhIHtcclxuICBhcGlVcmw/OiBzdHJpbmc7XHJcbiAgbW9kdWxlPzogbnVtYmVyO1xyXG4gIGVudGl0eUlkPzogc3RyaW5nO1xyXG4gIGRvY3VtZW50SWQ/
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicW1zLWNrZWRpdG9yLWRhdGEubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9xbXMtYW5ndWxhci9zcmMvbGliL3Ftcy1ja2VkaXRvci1jb21wb25lbnRzL2NvbW1vbi9tb2RlbHMvcW1zLWNrZWRpdG9yLWRhdGEubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxPQUFPLGVBQWU7Q0FhM0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBXUHJvb2ZyZWFkZXJDb25maWcgfSBmcm9tIFwiLi93cHJvb2ZyZWFkZXItY29uZmlnLm1vZGVsXCI7XHJcblxyXG5leHBvcnQgY2xhc3MgUU1TQ0tFZGl0b3JEYXRhIHtcclxuICBhcGlVcmw/OiBzdHJpbmc7XHJcbiAgbW9kdWxlPzogbnVtYmVyO1xyXG4gIGVudGl0eUlkPzogc3RyaW5nO1xyXG4gIGRvY3VtZW50SWQ/OiBudW1iZXI7XHJcbiAgbWF0aHR5cGVTZXJ2aWNlVXJsPzogc3RyaW5nO1xyXG4gIHRpbWVzdGFtcEZvcm1hdD86IHN0cmluZztcclxuICBsaW5rSmF2YVNjcmlwdExpbmtzQWxsb3dlZD86IGJvb2xlYW47XHJcbiAgdG9nZ2xlZFRvb2xiYXJJdGVtcz86IHN0cmluZztcclxuICB3cHJvb2ZyZWFkZXI/OiBXUHJvb2ZyZWFkZXJDb25maWc7XHJcbiAgdGFibGVPZkNvbnRlbnRIZWFkaW5ncz86IHN0cmluZztcclxuICBtYXhGaWxlU2l6ZU1CPzogbnVtYmVyO1xyXG4gIGZ1bGxTY3JlZW5DbGFzcz86IHN0cmluZztcclxufVxyXG4iXX0=
|
@@ -42,8 +42,10 @@ export class QMSCKEditorComponent extends QMSCKEditorBaseComponent {
|
|
42
42
|
this.renderer = renderer;
|
43
43
|
this.elRef = elRef;
|
44
44
|
this.required = false;
|
45
|
+
this.editorId = 'qmsckeditor';
|
45
46
|
this.qmsckContentOutput = new EventEmitter();
|
46
47
|
this.ckEditorEventConst = CKEditorEventConst;
|
48
|
+
this.isToolbarItemsIdSet = false;
|
47
49
|
this.ckTagname = 'div';
|
48
50
|
}
|
49
51
|
onMessage(event) {
|
@@ -83,6 +85,7 @@ export class QMSCKEditorComponent extends QMSCKEditorBaseComponent {
|
|
83
85
|
}
|
84
86
|
}
|
85
87
|
ngOnInit() {
|
88
|
+
this.toolbarItemPrefixId = `${this.editorId}_toolbar_item_`;
|
86
89
|
this.name = 'CKEditor custom build';
|
87
90
|
this.ckEditor = this.qmsckPlugin.pluginObject;
|
88
91
|
this.translate.getLanguageSubject$.pipe(takeUntil(this.ngUnsubcribe)).subscribe((res) => {
|
@@ -90,7 +93,11 @@ export class QMSCKEditorComponent extends QMSCKEditorBaseComponent {
|
|
90
93
|
this.LANG = this.translate.getObjectLang(res);
|
91
94
|
}
|
92
95
|
});
|
93
|
-
|
96
|
+
let toolbarItems = this.qmsckPlugin.itemToolbar;
|
97
|
+
if (this.isEnabledToggleToolbar() && this.qmsckData.toggledToolbarItems) {
|
98
|
+
toolbarItems += ',' + this.qmsckData.toggledToolbarItems;
|
99
|
+
}
|
100
|
+
this.ckeditorConfig = CKEditorCommonFunctions.getCKEditorConfiguration(toolbarItems);
|
94
101
|
this.globalService.setApiUrl(this.qmsckData.apiUrl);
|
95
102
|
if (this.isEnabledMathtypeConfig()) {
|
96
103
|
this.addMathTypeConfig();
|
@@ -98,9 +105,6 @@ export class QMSCKEditorComponent extends QMSCKEditorBaseComponent {
|
|
98
105
|
if (this.isEnabledTimestampConfig()) {
|
99
106
|
this.addTimestampConfig();
|
100
107
|
}
|
101
|
-
if (this.isEnabledToggleToolbar()) {
|
102
|
-
this.addToggleToolbarConfig();
|
103
|
-
}
|
104
108
|
if (this.isEnabledWProofreader()) {
|
105
109
|
this.addWProofreaderConfig();
|
106
110
|
}
|
@@ -115,6 +119,7 @@ export class QMSCKEditorComponent extends QMSCKEditorBaseComponent {
|
|
115
119
|
if (this.editorInstance) {
|
116
120
|
this.editorInstance.destroy();
|
117
121
|
}
|
122
|
+
$(document).off();
|
118
123
|
}
|
119
124
|
registerOnChange(fn) {
|
120
125
|
this.onChange = fn;
|
@@ -146,12 +151,12 @@ export class QMSCKEditorComponent extends QMSCKEditorBaseComponent {
|
|
146
151
|
}
|
147
152
|
isEnabledToggleToolbar() {
|
148
153
|
const pattern = /(toggleToolbar)/gmi;
|
149
|
-
return !!this.qmsckData.
|
154
|
+
return !!this.qmsckData.toggledToolbarItems
|
150
155
|
&& !!this.qmsckPlugin.itemToolbar
|
151
156
|
&& this.qmsckPlugin.itemToolbar.search(pattern) > -1;
|
152
157
|
}
|
153
158
|
addToggleToolbarConfig() {
|
154
|
-
const items = this.qmsckData.
|
159
|
+
const items = this.qmsckData.toggledToolbarItems.split(',');
|
155
160
|
const toggleToolbarConfig = {
|
156
161
|
toggleToolbarConfig: {
|
157
162
|
toolbar: items
|
@@ -266,6 +271,7 @@ export class QMSCKEditorComponent extends QMSCKEditorBaseComponent {
|
|
266
271
|
wordsBox.textContent = `${this.LANG.QMSCKEDITOR.WORDS}: ${stats.words} / ${this.LANG.QMSCKEDITOR.CHARACTERS}: ${stats.characters}`;
|
267
272
|
}
|
268
273
|
});
|
274
|
+
this._setEditorInstanceObserver(this.editorId);
|
269
275
|
}
|
270
276
|
/**
|
271
277
|
* Add template - Load template
|
@@ -453,62 +459,48 @@ export class QMSCKEditorComponent extends QMSCKEditorBaseComponent {
|
|
453
459
|
}
|
454
460
|
/*
|
455
461
|
Toolbar toggle
|
462
|
+
|
463
|
+
This is a temporary workaround.
|
464
|
+
Tracking status and progress of the issue https://github.com/ckeditor/ckeditor5/issues/7383
|
465
|
+
|
466
|
+
- Render both default toolbar and toggle toolbar at init time
|
467
|
+
- Set ID for toolbar items using index:
|
468
|
+
+ From index 0 to toolbarLength - 1 is the default toolbar
|
469
|
+
+ From index toolbarLength on is the toggle toolbar
|
470
|
+
- Show/hide default and toggle toolbar by set display none to corresponding toolbar items based on ID
|
456
471
|
*/
|
457
472
|
toggleToolbarEventHandling() {
|
458
|
-
const qmsckeditor = window.document.getElementById(
|
473
|
+
const qmsckeditor = window.document.getElementById(this.editorId);
|
459
474
|
const toggleAttribute = 'isToggleToolbar';
|
460
475
|
const ckeditorTag = 'ckeditor';
|
461
476
|
if (qmsckeditor) {
|
462
477
|
const isToggleToolbar = qmsckeditor.getAttribute(toggleAttribute) == 'true';
|
463
478
|
if (isToggleToolbar) {
|
464
|
-
this.
|
479
|
+
this._setToolbarViewMode(true);
|
465
480
|
qmsckeditor.setAttribute(toggleAttribute, 'false');
|
466
481
|
}
|
467
482
|
else {
|
468
|
-
this.
|
483
|
+
this._setToolbarViewMode(false);
|
469
484
|
qmsckeditor.setAttribute(toggleAttribute, 'true');
|
470
485
|
}
|
471
|
-
const onChanged = this.onChanged.bind(this);
|
472
|
-
const onBlur = this.onBlur.bind(this);
|
473
|
-
if (this.editorInstance) {
|
474
|
-
try {
|
475
|
-
this.editorInstance.destroy();
|
476
|
-
}
|
477
|
-
catch (err) {
|
478
|
-
console.log(err);
|
479
|
-
}
|
480
|
-
}
|
481
|
-
//This is a temporary workaround.
|
482
|
-
//Tracking status and progress of the issue https://github.com/ckeditor/ckeditor5/issues/7383
|
483
|
-
const root = window.document.querySelector(ckeditorTag);
|
484
|
-
if (!!root) {
|
485
|
-
let editorElement = null;
|
486
|
-
if (root.childElementCount > 0) {
|
487
|
-
editorElement = Array.from(root.children).find(i => i.nodeName.toLowerCase() == this.ckTagname.toLowerCase());
|
488
|
-
}
|
489
|
-
else {
|
490
|
-
editorElement = window.document.createElement(this.ckTagname);
|
491
|
-
editorElement.style = 'display: none;';
|
492
|
-
root.appendChild(editorElement);
|
493
|
-
}
|
494
|
-
this.ckEditor.create(editorElement, this.ckeditorConfig).then(editor => {
|
495
|
-
this.initEditor(editor);
|
496
|
-
this.editorInstance = editor;
|
497
|
-
//Delete cache content
|
498
|
-
editorElement.innerHTML = '';
|
499
|
-
//setup editor events
|
500
|
-
const modelDocument = editor.model.document;
|
501
|
-
const viewDocument = editor.editing.view.document;
|
502
|
-
modelDocument.on('change:data', () => {
|
503
|
-
onChanged({ editor });
|
504
|
-
});
|
505
|
-
viewDocument.on('blur', () => {
|
506
|
-
onBlur({ editor });
|
507
|
-
});
|
508
|
-
});
|
509
|
-
}
|
510
486
|
}
|
511
487
|
}
|
488
|
+
_setToolbarViewMode(showToggleToolbar) {
|
489
|
+
var _a, _b, _c, _d;
|
490
|
+
const toolbarLength = ((_a = this.qmsckPlugin.itemToolbar) === null || _a === void 0 ? void 0 : _a.split(',').length) || 0;
|
491
|
+
/*
|
492
|
+
Items in toolbar are indexed:
|
493
|
+
- From index 0 to toolbarLength - 1 is the default toolbar
|
494
|
+
- From index toolbarLength on is the toggle toolbar
|
495
|
+
*/
|
496
|
+
(_b = $(`#${this.toolbarItemPrefixId}${toolbarLength - 1}`)) === null || _b === void 0 ? void 0 : _b.prevAll().each((index, element) => {
|
497
|
+
element.style.display = showToggleToolbar ? 'none' : '';
|
498
|
+
});
|
499
|
+
(_c = $(`#${this.toolbarItemPrefixId}${toolbarLength - 1}`)) === null || _c === void 0 ? void 0 : _c.css('display', showToggleToolbar ? 'none' : '');
|
500
|
+
(_d = $(`#${this.toolbarItemPrefixId}${toolbarLength - 1}`)) === null || _d === void 0 ? void 0 : _d.nextAll().each((index, element) => {
|
501
|
+
element.style.display = showToggleToolbar ? '' : 'none';
|
502
|
+
});
|
503
|
+
}
|
512
504
|
/**
|
513
505
|
* Flowchart
|
514
506
|
*/
|
@@ -608,11 +600,30 @@ export class QMSCKEditorComponent extends QMSCKEditorBaseComponent {
|
|
608
600
|
});
|
609
601
|
});
|
610
602
|
}
|
603
|
+
_setEditorInstanceObserver(editorId) {
|
604
|
+
$(document).off('DOMNodeInserted').on('DOMNodeInserted', (e) => {
|
605
|
+
if (!this.isToolbarItemsIdSet && $(e.target).has('#' + editorId)) {
|
606
|
+
this._setIdForToolbarItems();
|
607
|
+
}
|
608
|
+
});
|
609
|
+
}
|
610
|
+
_setIdForToolbarItems() {
|
611
|
+
var _a;
|
612
|
+
const toolbarItems = ((_a = document.querySelector(`${this.editorId ? '#' + this.editorId : ''} .ck-toolbar__items`)) === null || _a === void 0 ? void 0 : _a.children) || [];
|
613
|
+
if (!toolbarItems.length) {
|
614
|
+
return;
|
615
|
+
}
|
616
|
+
this.isToolbarItemsIdSet = true;
|
617
|
+
Array.from(toolbarItems).forEach((item, index) => {
|
618
|
+
item.id = `${this.toolbarItemPrefixId}${index}`;
|
619
|
+
});
|
620
|
+
this.toggleToolbarEventHandling();
|
621
|
+
}
|
611
622
|
}
|
612
623
|
QMSCKEditorComponent.decorators = [
|
613
624
|
{ type: Component, args: [{
|
614
625
|
selector: 'qms-ckeditor',
|
615
|
-
template: "<div
|
626
|
+
template: "<div class=\"qmsckeditor_container\" [id]=\"editorId\">\r\n <ckeditor class=\"qms-ckeditor\" [tagName]=\"ckTagname\" [(editor)]=\"ckEditor\" [config]=\"ckeditorConfig\"\r\n (ready)=\"onReady($event)\" [(ngModel)]=\"qmsckContentInput\" (change)=\"onChanged($event)\" (blur)=\"onBlur($event)\"\r\n [disabled]=\"isDisabled\">\r\n </ckeditor>\r\n <div class=\"sub-container\">\r\n <div class=\"\">\r\n <span>{{LANG.QMSCKEDITOR.ASSISTIVE_TEXT}}</span>\r\n </div>\r\n <div class=\"wordcount-content\"></div>\r\n </div>\r\n</div>",
|
616
627
|
providers: [
|
617
628
|
QMSCKEditorFullscreenComponent,
|
618
629
|
{
|
@@ -646,7 +657,8 @@ QMSCKEditorComponent.propDecorators = {
|
|
646
657
|
qmsckContentInput: [{ type: Input }],
|
647
658
|
isDisabled: [{ type: Input, args: ['disabled',] }],
|
648
659
|
required: [{ type: Input, args: ['required',] }],
|
660
|
+
editorId: [{ type: Input }],
|
649
661
|
qmsckContentOutput: [{ type: Output }],
|
650
662
|
onMessage: [{ type: HostListener, args: ['window:message', ['$event'],] }]
|
651
663
|
};
|
652
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicW1zLWNrZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Ftcy1hbmd1bGFyL3NyYy9saWIvcW1zLWNrZWRpdG9yLWNvbXBvbmVudHMvcW1zLWNrZWRpdG9yLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0wsT0FBTyxFQUFlLGFBQWEsRUFBRSxpQkFBaUIsRUFBYSxNQUFNLGdCQUFnQixDQUFDO0FBQzFGLE9BQU8sRUFBRSxTQUFTLEVBQW1CLE1BQU0sMEJBQTBCLENBQUM7QUFDdEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxnQkFBZ0IsRUFBMEIsTUFBTSxtQ0FBbUMsQ0FBQztBQUM3RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUMvRSxPQUFPLHVCQUF1QixNQUFNLG9DQUFvQyxDQUFDO0FBR3pFLE9BQU8sZUFBZSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDREQUE0RCxDQUFDO0FBQ3RHLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHdFQUF3RSxDQUFDO0FBQ3hILE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLG9FQUFvRSxDQUFDO0FBQ2xILE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDREQUE0RCxDQUFDO0FBQ3RHLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLDhFQUE4RSxDQUFD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QixFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztvQkFDekcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztpQkFDM0I7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7O1lBMXBCRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGNBQWM7Z0JBQ3hCLG1qQkFBNEM7Z0JBRTVDLFNBQVMsRUFBRTtvQkFDVCw4QkFBOEI7b0JBQzlCO3dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7d0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsb0JBQW9CLENBQUM7d0JBQ25ELEtBQUssRUFBRSxJQUFJO3FCQUNaO29CQUNEO3dCQUNFLE9BQU8sRUFBRSxhQUFhO3dCQUN0QixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLG9CQUFvQixDQUFDO3dCQUNuRCxLQUFLLEVBQUUsSUFBSTtxQkFDWjtpQkFDRjtnQkFDRCxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtnQkFDckMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07O2FBQ2hEOzs7WUFqRFEsU0FBUztZQUVULHVCQUF1QjtZQWtCdkIsd0JBQXdCO1lBT3hCLHNCQUFzQjtZQWpCdEIsOEJBQThCO1lBWmdHLFNBQVM7WUFBcEYsVUFBVTs7O3dCQXFEbkUsS0FBSzswQkFDTCxLQUFLO2dDQUNMLEtBQUs7eUJBQ0wsS0FBSyxTQUFDLFVBQVU7dUJBQ2hCLEtBQUssU0FBQyxVQUFVO2lDQUNoQixNQUFNO3dCQVlOLFlBQVksU0FBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgZm9yd2FyZFJlZiwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFJlbmRlcmVyMiwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIE5HX1ZBTElEQVRPUlMsIE5HX1ZBTFVFX0FDQ0VTU09SLCBWYWxpZGF0b3IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE1hdERpYWxvZywgTWF0RGlhbG9nQ29uZmlnIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVMaWJyYXJ5U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3RyYW5zbGF0aW9uLXJlZ2lzdHJ5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBRbXNVcGxvYWRBZGFwdGVyLCBRbXNVcGxvYWRBZGFwdGVyQ29uZmlnIH0gZnJvbSAnLi9jb21tb24vY2xhc3Nlcy9xbXNVcGxvYWRBZGFwdGVyJztcclxuaW1wb3J0IHsgQ0tFZGl0b3JFdmVudENvbnN0IH0gZnJvbSAnLi9jb21tb24vY29uc3RhbnRzL2NrZWRpdG9yRXZlbnQuY29uc3RhbnQnO1xyXG5pbXBvcnQgQ0tFZGl0b3JDb21tb25GdW5jdGlvbnMgZnJvbSAnLi9jb21tb24vZnVuY3Rpb25zL2NvbW1vbi5mdW5jdGlvbic7XHJcbmltcG9ydCB7IFFNU0NLRWRpdG9yRGF0YSB9IGZyb20gJy4vY29tbW9uL21vZGVscy9xbXMtY2tlZGl0b3ItZGF0YS5tb2RlbCc7XHJcbmltcG9ydCB7IFFNU0NLRWRpdG9yUGx1Z2luIH0gZnJvbSAnLi9jb21tb24vbW9kZWxzL3Ftcy1ja2VkaXRvci1wbHVnaW4ubW9kZWwnO1xyXG5pbXBvcnQgUU1TQ0tFZGl0b3JMaW5rIGZyb20gJy4vY29tbW9uL21vZGVscy9xbXMtY2tlZGl0b3ItdXJsLm1vZGVsJztcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JCcG1uQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3Ftcy1ja2VkaXRvci1icG1uL3Ftcy1ja2VkaXRvci1icG1uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFFNU0NLRWRpdG9yRnVsbHNjcmVlbkNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9xbXMtY2tlZGl0b3ItZnVsbHNjcmVlbi9xbXMtY2tlZGl0b3ItZnVsbHNjcmVlbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBRTVNDS0VkaXRvckltYWdlTWFwQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3Ftcy1ja2VkaXRvci1pbWFnZW1hcC9xbXMtY2tlZGl0b3ItaW1hZ2VtYXAuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JMaW5rQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3Ftcy1ja2VkaXRvci1saW5rL3Ftcy1ja2VkaXRvci1saW5rLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFFNU0NLRWRpdG9yTG9hZFRlbXBsYXRlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3Ftcy1ja2VkaXRvci1sb2FkLXRlbXBsYXRlL3Ftcy1ja2VkaXRvci1sb2FkLXRlbXBsYXRlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFFNU0NLRWRpdG9yVGVtcGxhdGVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcW1zLWNrZWRpdG9yLXRlbXBsYXRlL3Ftcy1ja2VkaXRvci10ZW1wbGF0ZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBRTVNDS0VkaXRvclRvb2x0aXBDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcW1zLWNrZWRpdG9yLXRvb2x0aXAvcW1zLWNrZWRpdG9yLXRvb2x0aXAuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JJbWFnZU1hcCB9IGZyb20gJy4vbW9kZWxzL3Ftcy1ja2VkaXRvci1pbWFnZW1hcC5tb2RlbCc7XHJcbmltcG9ydCB7IFFNU0NLRWRpdG9yVGVtcGxhdGUgfSBmcm9tICcuL21vZGVscy9xbXMtY2tlZGl0b3ItdGVtcGxhdGUubW9kZWwnO1xyXG5pbXBvcnQgeyBRTVNDS0VkaXRvclRvb2x0aXAgfSBmcm9tICcuL21vZGVscy9xbXMtY2tlZGl0b3ItdG9vbHRpcC5tb2RlbCc7XHJcbmltcG9ydCB7IFFNU0NLRWRpdG9yQmFzZUNvbXBvbmVudCB9IGZyb20gJy4vcW1zLWNrZWRpdG9yLWJhc2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JHbG9iYWxTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9xbXMtY2tlZGl0b3ItZ2xvYmFsLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBRTVNDS0VkaXRvckFib3V0Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3Ftcy1ja2VkaXRvci1hYm91dC9xbXMtY2tlZGl0b3ItYWJvdXQuY29tcG9uZW50JztcclxuLy9pbXBvcnQgeyBDS0VkaXRvcjUgfSBmcm9tICdAY2tlZGl0b3IvY2tlZGl0b3I1LWFuZ3VsYXIvY2tlZGl0b3InO1xyXG5pbXBvcnQgeyBRTVNDS0VkaXRvckJwbW5EYXRhIH0gZnJvbSAnLi9tb2RlbHMvcW1zLWNrZWRpdG9yLWJwbW4tZGF0YS5tb2RlbCc7XHJcbmltcG9ydCB7IERhdGFUeXBlIH0gZnJvbSAnLi4vY29tcG9uZW50cy9yZWxhdGVkL2NvbW1vbi9kYXRhLXR5cGUuZW51bSc7XHJcbmltcG9ydCB7IFBvcHVwRGF0YSB9IGZyb20gJy4uL2NvbXBvbmVudHMvcmVsYXRlZC9tb2RlbC9wb3B1cC1kYXRhLm1vZGVsJztcclxuaW1wb3J0IHsgUmVsYXRlZFBvcHVwQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9yZWxhdGVkL3BvcHVwL3JlbGF0ZWQtcG9wdXAuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JUcmVlU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvcW1zLWNrZWRpdG9yLXRyZWUuc2VydmljZSc7XHJcbmltcG9ydCB7IFFNU0NLRWRpdG9yRmxvd2NoYXJ0Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3Ftcy1ja2VkaXRvci1mbG93Y2hhcnQvcW1zLWNrZWRpdG9yLWZsb3djaGFydC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBRbXNDa2VkaXRvckxpbmtTaW1wbGVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcW1zLWNrZWRpdG9yLWxpbmstc2ltcGxlL3Ftcy1ja2VkaXRvci1saW5rLXNpbXBsZS5jb21wb25lbnQnO1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3Ftcy1ja2VkaXRvcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3Ftcy1ja2VkaXRvci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vcW1zLWNrZWRpdG9yLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICBRTVNDS0VkaXRvckZ1bGxzY3JlZW5Db21wb25lbnQsXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBRTVNDS0VkaXRvckNvbXBvbmVudCksXHJcbiAgICAgIG11bHRpOiB0cnVlXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxyXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBRTVNDS0VkaXRvckNvbXBvbmVudCksXHJcbiAgICAgIG11bHRpOiB0cnVlXHJcbiAgICB9XHJcbiAgXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBRTVNDS0VkaXRvckNvbXBvbmVudCBleHRlbmRzIFFNU0NLRWRpdG9yQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgVmFsaWRhdG9yIHtcclxuICBASW5wdXQoKSBxbXNja0RhdGE6IFFNU0NLRWRpdG9yRGF0YTtcclxuICBASW5wdXQoKSBxbXNja1BsdWdpbjogUU1TQ0tFZGl0b3JQbHVnaW47XHJcbiAgQElucHV0KCkgcW1zY2tDb250ZW50SW5wdXQ6IHN0cmluZztcclxuICBASW5wdXQoJ2Rpc2FibGVkJykgaXNEaXNhYmxlZDogYm9vbGVhbjtcclxuICBASW5wdXQoJ3JlcXVpcmVkJykgcmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBAT3V0cHV0KCkgcW1zY2tDb250ZW50T3V0cHV0OiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgTEFORzogYW55O1xyXG4gIGNrRWRpdG9yOiBhbnk7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIGNrZWRpdG9yQ29uZmlnOiBhbnk7XHJcbiAgY2tFZGl0b3JFdmVudENvbnN0ID0gQ0tFZGl0b3JFdmVudENvbnN0O1xyXG4gIGNvdW50V29yZDogbnVtYmVyO1xyXG4gIGNvdW50Q2hhcjogbnVtYmVyO1xyXG4gIGVkaXRvckluc3RhbmNlOiBhbnk7XHJcbiAgY2tUYWduYW1lOiBzdHJpbmc7XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzptZXNzYWdlJywgWyckZXZlbnQnXSlcclxuICBvbk1lc3NhZ2UoZXZlbnQpIHtcclxuICAgIHN3aXRjaCAoZXZlbnQuZGF0YS5ldmVudE5hbWUpIHtcclxuICAgICAgY2FzZSB0aGlzLmNrRWRpdG9yRXZlbnRDb25zdC5RTVNDS19URU1QTEFURV9QTFVHSU5fTVNHOlxyXG4gICAgICAgIHRoaXMudGVtcGxhdGVFdmVudEhhbmRsaW5nKCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgdGhpcy5ja0VkaXRvckV2ZW50Q29uc3QuUU1TQ0tfTE9BRF9URU1QTEFURV9QTFVHSU5fTVNHOlxyXG4gICAgICAgIHRoaXMubG9hZFRlbXBsYXRlRXZlbnRIYW5kbGluZygpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIHRoaXMuY2tFZGl0b3JFdmVudENvbnN0LlFNU0NLX0xJTktfUExVR0lOX01TRzpcclxuICAgICAgICB0aGlzLmxpbmtFdmVudEhhbmRsaW5nKGV2ZW50LmRhdGEudmFsdWUpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIHRoaXMuY2tFZGl0b3JFdmVudENvbnN0LlFNU0NLX1RPT0xUSVBfUExVR0lOX01TRzpcclxuICAgICAgICB0aGlzLnRvb2x0aXBFdmVudEhhbmRsaW5nKGV2ZW50LmRhdGEudmFsdWUpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIHRoaXMuY2tFZGl0b3JFdmVudENvbnN0LlFNU0NLX0lNQUdFTUFQX1BMVUdJTl9NU0c6XHJcbiAgICAgICAgdGhpcy5pbWFnZU1hcEV2ZW50SGFuZGxpbmcoZXZlbnQuZGF0YS52YWx1ZSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgdGhpcy5ja0VkaXRvckV2ZW50Q29uc3QuUU1TQ0tfQlBNTl9QTFVHSU5fTVNHOlxyXG4gICAgICAgIHRoaXMuYnBtbkV2ZW50SGFuZGxpbmcoZXZlbnQuZGF0YS52YWx1ZSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgdGhpcy5ja0VkaXRvckV2ZW50Q29uc3QuUU1TQ0tfQUJPVVRfQ0tFRElUT1JfUExVR0lOX01TRzpcclxuICAgICAgICB0aGlzLmFib3V0Q0tFZGl0b3JFdmVudEhhbmRsaW5nKGV2ZW50LmRhdGEudmFsdWUpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIHRoaXMuY2tFZGl0b3JFdmVudENvbnN0LlFNU0NLX0ZMT1dDSEFSVF9QTFVHSU5fTVNHOlxyXG4gICAgICAgIHRoaXMuZmxvd2NoYXJ0RXZlbnRIYW5kbGluZyhldmVudC5kYXRhLnZhbHVlKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSB0aGlzLmNrRWRpdG9yRXZlbnRDb25zdC5RTVNDS19UT0dHTEVfVE9PTEJBUl9NU0c6XHJcbiAgICAgICAgdGhpcy50b2dnbGVUb29sYmFyRXZlbnRIYW5kbGluZygpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIHRoaXMuY2tFZGl0b3JFdmVudENvbnN0LlFNU0NLX0JST1dTRV9WSURFT19NU0c6XHJcbiAgICAgICAgdGhpcy5icm93c2VWaWRlb0V2ZW50SGFuZGxpbmcoZXZlbnQuZGF0YS52YWx1ZSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDb25zdHJ1Y3RvclxyXG4gICAqL1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgZGlhbG9nOiBNYXREaWFsb2csXHJcbiAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlTGlicmFyeVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGdsb2JhbFNlcnZpY2U6IFFNU0NLRWRpdG9yR2xvYmFsU2VydmljZSxcclxuICAgIHByaXZhdGUgdHJlZVNlcnZpY2U6IFFNU0NLRWRpdG9yVHJlZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHFtc0NLRWRpdG9yRnVsbHNjcmVlbkNvbXBvbmVudDogUU1TQ0tFZGl0b3JGdWxsc2NyZWVuQ29tcG9uZW50LFxyXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxyXG4gICAgcHJpdmF0ZSBlbFJlZjogRWxlbWVudFJlZlxyXG4gICkge1xyXG4gICAgc3VwZXIoKTtcclxuICAgIHRoaXMuY2tUYWduYW1lID0gJ2Rpdic7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMubmFtZSA9ICdDS0VkaXRvciBjdXN0b20gYnVpbGQnO1xyXG4gICAgdGhpcy5ja0VkaXRvciA9IHRoaXMucW1zY2tQbHVnaW4ucGx1Z2luT2JqZWN0O1xyXG4gICAgdGhpcy50cmFuc2xhdGUuZ2V0TGFuZ3VhZ2VTdWJqZWN0JC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJjcmliZSkpLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgIGlmIChyZXMpIHtcclxuICAgICAgICB0aGlzLkxBTkcgPSB0aGlzLnRyYW5zbGF0ZS5nZXRPYmplY3RMYW5nKHJlcyk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5ja2VkaXRvckNvbmZpZyA9IENLRWRpdG9yQ29tbW9uRnVuY3Rpb25zLmdldENLRWRpdG9yQ29uZmlndXJhdGlvbih0aGlzLnFtc2NrUGx1Z2luLml0ZW1Ub29sYmFyKTtcclxuICAgIHRoaXMuZ2xvYmFsU2VydmljZS5zZXRBcGlVcmwodGhpcy5xbXNja0RhdGEuYXBpVXJsKTtcclxuICAgIGlmICh0aGlzLmlzRW5hYmxlZE1hdGh0eXBlQ29uZmlnKCkpIHtcclxuICAgICAgdGhpcy5hZGRNYXRoVHlwZUNvbmZpZygpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmlzRW5hYmxlZFRpbWVzdGFtcENvbmZpZygpKSB7XHJcbiAgICAgIHRoaXMuYWRkVGltZXN0YW1wQ29uZmlnKCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5pc0VuYWJsZWRUb2dnbGVUb29sYmFyKCkpIHtcclxuICAgICAgdGhpcy5hZGRUb2dnbGVUb29sYmFyQ29uZmlnKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuaXNFbmFibGVkV1Byb29mcmVhZGVyKCkpIHtcclxuICAgICAgdGhpcy5hZGRXUHJvb2ZyZWFkZXJDb25maWcoKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmlzRW5hYmxlZFRPQ1Rvb2xiYXIoKSkge1xyXG4gICAgICB0aGlzLmFkZFRvZ2dsZVRPQ0NvbmZpZygpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuaXNFbmFibGVkRnVsbFNjcmVlbkNvbmZpZygpKSB7XHJcbiAgICAgIHRoaXMuYWRkRnVsbFNjcmVlbkNvbmZpZygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICBpZiAodGhpcy5lZGl0b3JJbnN0YW5jZSkge1xyXG4gICAgICB0aGlzLmVkaXRvckluc3RhbmNlLmRlc3Ryb3koKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uQ2hhbmdlOiAoY29udGVudDogYW55KSA9PiB2b2lkO1xyXG4gIG9uVG91Y2hlZDogKCkgPT4gdm9pZDtcclxuXHJcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XHJcbiAgfVxyXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICBpZiAodGhpcy5pc0Rpc2FibGVkKSB7XHJcbiAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LCAnY2stZGlzYWJsZWQnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGlzRW5hYmxlZFdQcm9vZnJlYWRlcigpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IHBhdHRlcm4gPSAvKHdwcm9vZnJlYWRlcikvZ21pO1xyXG4gICAgcmV0dXJuICEhdGhpcy5xbXNja0RhdGEud3Byb29mcmVhZGVyXHJcbiAgICAgICYmICEhdGhpcy5xbXNja0RhdGEud3Byb29mcmVhZGVyLnNyY1VybFxyXG4gICAgICAmJiAhIXRoaXMucW1zY2tQbHVnaW4uaXRlbVRvb2xiYXJcclxuICAgICAgJiYgdGhpcy5xbXNja1BsdWdpbi5pdGVtVG9vbGJhci5zZWFyY2gocGF0dGVybikgPiAtMTtcclxuICB9XHJcblxyXG4gIGFkZFdQcm9vZnJlYWRlckNvbmZpZygpIHtcclxuICAgIGNvbnN0IHdwcm9vZnJlYWRlckNvbmZpZyA9IHtcclxuICAgICAgd3Byb29mcmVhZGVyOiB7XHJcbiAgICAgICAgLi4udGhpcy5xbXNja0RhdGEud3Byb29mcmVhZGVyXHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgICBpZiAoIXRoaXMucW1zY2tEYXRhLndwcm9vZnJlYWRlci5zZXJ2aWNlSWQgfHwgdGhpcy5xbXNja0RhdGEud3Byb29mcmVhZGVyLnNlcnZpY2VJZC5sZW5ndGggPT0gMCkge1xyXG4gICAgICAvL0ZhbGxiYWNrIHZhbHVlIG9mIHNlcnZpY2VJZCBwcm9wZXJ0eSB0byBkZW1vIHNlcnZpY2VJZFxyXG4gICAgICB0aGlzLnFtc2NrRGF0YS53cHJvb2ZyZWFkZXIuc2VydmljZUlkID0gJzE6S3BrdlEyLTZLTlVqLUwxVzN1Mi1DOWowSzEtWnYydFkxLUNmRE94LVdmR1JnMi1xWHRjaS1ZeXlFMzQtajA5SDQyLWIwYUN0My1kOWEnO1xyXG4gICAgfVxyXG4gICAgdGhpcy5ja0VkaXRvci5kZWZhdWx0Q29uZmlnID0gT2JqZWN0LmFzc2lnbih0aGlzLmNrRWRpdG9yLmRlZmF1bHRDb25maWcgfHwge30sIHdwcm9vZnJlYWRlckNvbmZpZyk7XHJcbiAgfVxyXG5cclxuICBpc0VuYWJsZWRUb2dnbGVUb29sYmFyKCk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgcGF0dGVybiA9IC8odG9nZ2xlVG9vbGJhcikvZ21pO1xyXG4gICAgcmV0dXJuICEhdGhpcy5xbXNja0RhdGEudG9nZ2xlVG9vbGJhclxyXG4gICAgICAmJiAhIXRoaXMucW1zY2tQbHVnaW4uaXRlbVRvb2xiYXJcclxuICAgICAgJiYgdGhpcy5xbXNja1BsdWdpbi5pdGVtVG9vbGJhci5zZWFyY2gocGF0dGVybikgPiAtMTtcclxuICB9XHJcblxyXG4gIGFkZFRvZ2dsZVRvb2xiYXJDb25maWcoKSB7XHJcbiAgICBjb25zdCBpdGVtcyA9IHRoaXMucW1zY2tEYXRhLnRvZ2dsZVRvb2xiYXIuc3BsaXQoJywnKTtcclxuICAgIGNvbnN0IHRvZ2dsZVRvb2xiYXJDb25maWcgPSB7XHJcbiAgICAgIHRvZ2dsZVRvb2xiYXJDb25maWc6IHtcclxuICAgICAgICB0b29sYmFyOiBpdGVtc1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgdGhpcy5ja0VkaXRvci5kZWZhdWx0Q29uZmlnID0gT2JqZWN0LmFzc2lnbih0aGlzLmNrRWRpdG9yLmRlZmF1bHRDb25maWcgfHwge30sIHRvZ2dsZVRvb2xiYXJDb25maWcpO1xyXG4gIH1cclxuXHJcbiAgaXNFbmFibGVkRnVsbFNjcmVlbkNvbmZpZygpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IHBhdHRlcm4gPSAvKHFtc0Z1bGxzY3JlZW4pL2dtaTtcclxuICAgIHJldHVybiAhIXRoaXMucW1zY2tQbHVnaW4uaXRlbVRvb2xiYXJcclxuICAgICAgJiYgISF0aGlzLnFtc2NrRGF0YS5mdWxsU2NyZWVuQ2xhc3NcclxuICAgICAgJiYgdGhpcy5xbXNja1BsdWdpbi5pdGVtVG9vbGJhci5zZWFyY2gocGF0dGVybikgPiAtMTtcclxuICB9XHJcblxyXG4gIGFkZEZ1bGxTY3JlZW5Db25maWcoKSB7XHJcbiAgICBjb25zdCBmdWxsU2NyZWVuQ29uZmlnID0ge1xyXG4gICAgICBmdWxsU2NyZWVuQ29uZmlnOiB7XHJcbiAgICAgICAgY2xhc3M6IHRoaXMucW1zY2tEYXRhLmZ1bGxTY3JlZW5DbGFzc1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLmNrRWRpdG9yLmRlZmF1bHRDb25maWcgPSBPYmplY3QuYXNzaWduKHRoaXMuY2tFZGl0b3IuZGVmYXVsdENvbmZpZyB8fCB7fSwgZnVsbFNjcmVlbkNvbmZpZyk7XHJcbiAgfVxyXG5cclxuICBpc0VuYWJsZWRUT0NUb29sYmFyKCk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgcGF0dGVybiA9IC8odGFibGVPZkNvbnRlbnRzKS9nbWk7XHJcbiAgICByZXR1cm4gISF0aGlzLnFtc2NrRGF0YS50YWJsZU9mQ29udGVudEhlYWRpbmdzXHJcbiAgICAgICYmICEhdGhpcy5xbXNja1BsdWdpbi5pdGVtVG9vbGJhclxyXG4gICAgICAmJiB0aGlzLnFtc2NrUGx1Z2luLml0ZW1Ub29sYmFyLnNlYXJjaChwYXR0ZXJuKSA+IC0xO1xyXG4gIH1cclxuXHJcbiAgYWRkVG9nZ2xlVE9DQ29uZmlnKCkge1xyXG4gICAgY29uc3QgaXRlbXMgPSB0aGlzLnFtc2NrRGF0YS50YWJsZU9mQ29udGVudEhlYWRpbmdzLnNwbGl0KCcsJyk7XHJcbiAgICBjb25zdCB0YWJsZU9mQ29udGVudHMgPSB7XHJcbiAgICAgIHRhYmxlT2ZDb250ZW50czoge1xyXG4gICAgICAgIHN1cHBvcnRlZEhlYWRpbmdzOiBpdGVtc1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgdGhpcy5ja0VkaXRvci5kZWZhdWx0Q29uZmlnID0gT2JqZWN0LmFzc2lnbih0aGlzLmNrRWRpdG9yLmRlZmF1bHRDb25maWcgfHwge30sIHRhYmxlT2ZDb250ZW50cyk7XHJcbiAgfVxyXG5cclxuICBpc0VuYWJsZWRUaW1lc3RhbXBDb25maWcoKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBwYXR0ZXJuID0gLyh0aW1lc3RhbXApL2dtaTtcclxuICAgIHJldHVybiAhIXRoaXMucW1zY2tEYXRhLnRpbWVzdGFtcEZvcm1hdFxyXG4gICAgICAmJiAhIXRoaXMucW1zY2tQbHVnaW4uaXRlbVRvb2xiYXJcclxuICAgICAgJiYgdGhpcy5xbXNja1BsdWdpbi5pdGVtVG9vbGJhci5zZWFyY2gocGF0dGVybikgPiAtMTtcclxuICB9XHJcblxyXG4gIGFkZFRpbWVzdGFtcENvbmZpZygpIHtcclxuICAgIGNvbnN0IHRpbWVzdGFtcENvbmZpZyA9IHtcclxuICAgICAgdGltZXN0YW1wQ29uZmlnOiB7XHJcbiAgICAgICAgZGF0ZXRpbWVGb3JtYXQ6IHRoaXMucW1zY2tEYXRhLnRpbWVzdGFtcEZvcm1hdFxyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgdGhpcy5ja0VkaXRvci5kZWZhdWx0Q29uZmlnID0gT2JqZWN0LmFzc2lnbih0aGlzLmNrRWRpdG9yLmRlZmF1bHRDb25maWcgfHwge30sIHRpbWVzdGFtcENvbmZpZyk7XHJcbiAgfVxyXG5cclxuICBpc0VuYWJsZWRNYXRodHlwZUNvbmZpZygpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IHBhdHRlcm4gPSAvKE1hdGhUeXBlKXwoQ2hlbVR5cGUpL2dtaTtcclxuICAgIHJldHVybiAhIXRoaXMucW1zY2tEYXRhLm1hdGh0eXBlU2VydmljZVVybFxyXG4gICAgICAmJiAhIXRoaXMucW1zY2tQbHVnaW4uaXRlbVRvb2xiYXJcclxuICAgICAgJiYgdGhpcy5xbXNja1BsdWdpbi5pdGVtVG9vbGJhci5zZWFyY2gocGF0dGVybikgPiAtMTtcclxuICB9XHJcblxyXG4gIGFkZE1hdGhUeXBlQ29uZmlnKCkge1xyXG4gICAgY29uc3QgbWF0aFR5cGVDb25maWcgPSB7XHJcbiAgICAgIG1hdGhUeXBlUGFyYW1ldGVyczoge1xyXG4gICAgICAgIHNlcnZpY2VQcm92aWRlclByb3BlcnRpZXM6IHtcclxuICAgICAgICAgIFVSSTogdGhpcy5xbXNja0RhdGEubWF0aHR5cGVTZXJ2aWNlVXJsLFxyXG4gICAgICAgICAgc2VydmVyOiAnYXNweCdcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgICB0aGlzLmNrRWRpdG9yLmRlZmF1bHRDb25maWcgPSBPYmplY3QuYXNzaWduKHRoaXMuY2tFZGl0b3IuZGVmYXVsdENvbmZpZyB8fCB7fSwgbWF0aFR5cGVDb25maWcpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uQ2hhbmdlZCh7IGVkaXRvciB9KSB7XHJcbiAgICAvL3RoaXMucW1zY2tDb250ZW50SW5wdXQgPSBlZGl0b3IuZ2V0RGF0YSgpO1xyXG4gICAgdGhpcy5xbXNja0NvbnRlbnRPdXRwdXQuZW1pdCh0aGlzLnFtc2NrQ29udGVudElucHV0KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkJsdXIoeyBlZGl0b3IgfSkge1xyXG4gICAgdGhpcy5xbXNja0NvbnRlbnRJbnB1dCA9IGVkaXRvci5nZXREYXRhKCk7XHJcbiAgICB0aGlzLnFtc2NrQ29udGVudE91dHB1dC5lbWl0KHRoaXMucW1zY2tDb250ZW50SW5wdXQpO1xyXG4gIH1cclxuXHJcbiAgdmFsaWRhdGUoYzogRm9ybUNvbnRyb2wpIHtcclxuICAgIGlmICghdGhpcy5yZXF1aXJlZCkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIHJldHVybiAodGhpcy5xbXNja0NvbnRlbnRJbnB1dCAmJiAhdGhpcy5yZXF1aXJlZCkgPyBudWxsIDoge1xyXG4gICAgICB0eXBlOiB7XHJcbiAgICAgICAgdmFsaWQ6IGZhbHNlLFxyXG4gICAgICAgIGFjdHVhbDogYy52YWx1ZVxyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogb25SZWFkeVxyXG4gICAqL1xyXG4gIHB1YmxpYyBvblJlYWR5KGVkaXRvcikge1xyXG4gICAgdGhpcy5lZGl0b3JJbnN0YW5jZSA9IGVkaXRvcjtcclxuICAgIGlmICh0aGlzLnFtc2NrQ29udGVudElucHV0KSB7XHJcbiAgICAgIGVkaXRvci5zZXREYXRhKHRoaXMucW1zY2tDb250ZW50SW5wdXQpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5pbml0RWRpdG9yKGVkaXRvcik7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGluaXRFZGl0b3IoZWRpdG9yKSB7XHJcbiAgICBjb25zdCBpbWFnZVVwbG9hZFR5cGVzID0gZWRpdG9yLmNvbmZpZy5nZXQoJ2ltYWdlLnVwbG9hZC50eXBlcycpO1xyXG4gICAgY29uc3QgbWF4RmlsZVNpemVNQiA9IHRoaXMucW1zY2tEYXRhLm1heEZpbGVTaXplTUI7XHJcbiAgICBjb25zdCBjb25maWc6IFFtc1VwbG9hZEFkYXB0ZXJDb25maWcgPSB7IGFwaVVybDogdGhpcy5xbXNja0RhdGEuYXBpVXJsLCBMQU5HOiB0aGlzLkxBTkcsIGltYWdlVXBsb2FkVHlwZXMsIG1heEZpbGVTaXplTUIgfTtcclxuICAgIGVkaXRvci5wbHVnaW5zLmdldChcIkZpbGVSZXBvc2l0b3J5XCIpLmNyZWF0ZVVwbG9hZEFkYXB0ZXIgPSAobG9hZGVyKSA9PiB7XHJcbiAgICAgIHJldHVybiBuZXcgUW1zVXBsb2FkQWRhcHRlcihsb2FkZXIsIGNvbmZpZyk7XHJcbiAgICB9O1xyXG5cclxuICAgIGVkaXRvci51aVxyXG4gICAgICAuZ2V0RWRpdGFibGVFbGVtZW50KClcclxuICAgICAgLnBhcmVudEVsZW1lbnQuaW5zZXJ0QmVmb3JlKGVkaXRvci51aS52aWV3LnRvb2xiYXIuZWxlbWVudCwgZWRpdG9yLnVpLmdldEVkaXRhYmxlRWxlbWVudCgpKTtcclxuXHJcbiAgICAvLyBBcHBlZCBXb3JkY291bnQgdG8gQ0tlZGl0b3JcclxuICAgIGVkaXRvci5wbHVnaW5zLmdldCgnV29yZENvdW50Jykub24oJ3VwZGF0ZScsIChldnQsIHN0YXRzKSA9PiB7XHJcbiAgICAgIC8vIFByaW50cyB0aGUgY3VycmVudCBjb250ZW50IHN0YXRpc3RpY3MuXHJcbiAgICAgIGNvbnN0IHdvcmRzQm94ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLndvcmRjb3VudC1jb250ZW50Jyk7XHJcbiAgICAgIGlmICghIXdvcmRzQm94KSB7XHJcbiAgICAgICAgd29yZHNCb3gudGV4dENvbnRlbnQgPSBgJHt0aGlzLkxBTkcuUU1TQ0tFRElUT1IuV09SRFN9OiAke3N0YXRzLndvcmRzfSAvICR7dGhpcy5MQU5HLlFNU0NLRURJVE9SLkNIQVJBQ1RFUlN9OiAke3N0YXRzLmNoYXJhY3RlcnN9YDtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBZGQgdGVtcGxhdGUgLSBMb2FkIHRlbXBsYXRlXHJcbiAgICovXHJcbiAgcHVibGljIHRlbXBsYXRlRXZlbnRIYW5kbGluZygpIHtcclxuICAgIGNvbnN0IGRhdGE6IFFNU0NLRWRpdG9yVGVtcGxhdGUgPSBuZXcgUU1TQ0tFZGl0b3JUZW1wbGF0ZSgpO1xyXG4gICAgZGF0YS5pZCA9IDA7XHJcbiAgICBkYXRhLmNvbnRlbnQgPSB0aGlzLnFtc2NrQ29udGVudElucHV0O1xyXG4gICAgZGF0YS5lZGl0ID0gZmFsc2U7XHJcbiAgICBjb25zdCBkaWFsb2dUZW1wbGF0ZSA9IHRoaXMuZGlhbG9nLm9wZW4oUU1TQ0tFZGl0b3JUZW1wbGF0ZUNvbXBvbmVudCwge1xyXG4gICAgICB3aWR0aDogJzY1MHB4JyxcclxuICAgICAgaGVpZ2h0OiAnNTIwcHgnLFxyXG4gICAgICBkYXRhLFxyXG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWVcclxuICAgIH0pO1xyXG4gICAgZGlhbG9nVGVtcGxhdGVcclxuICAgICAgLmFmdGVyQ2xvc2VkKClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSlcclxuICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgLy8gVERPXHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFkZCB0ZW1wbGF0ZSAtIExvYWQgdGVtcGxhdGVcclxuICAgKi9cclxuICBwdWJsaWMgbG9hZFRlbXBsYXRlRXZlbnRIYW5kbGluZygpIHtcclxuICAgIGNvbnN0IGRpYWxvZ1RlbXBsYXRlID0gdGhpcy5kaWFsb2cub3BlbihRTVNDS0VkaXRvckxvYWRUZW1wbGF0ZUNvbXBvbmVudCwge1xyXG4gICAgICB3aWR0aDogJzY1MHB4JyxcclxuICAgICAgaGVpZ2h0OiAnNzAwcHgnLFxyXG4gICAgICBkYXRhOiB0aGlzLnFtc2NrQ29udGVudElucHV0LFxyXG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWVcclxuICAgIH0pO1xyXG4gICAgZGlhbG9nVGVtcGxhdGVcclxuICAgICAgLmFmdGVyQ2xvc2VkKClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSlcclxuICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgY29uc3QgZXZ0ID0gbmV3IEN1c3RvbUV2ZW50KHRoaXMuY2tFZGl0b3JFdmVudENvbnN0LlFNU0NLX0xPQURfVEVNUExBVEVfUExVR0lOX1JFU1AsIHtcclxuICAgICAgICAgICAgZGV0YWlsOiByZXN1bHRcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgd2luZG93LmRpc3BhdGNoRXZlbnQoZXZ0KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQW5jaG9yIC0gTGluayAtIEltYWdlIG1hcHBpbmdcclxuICAgKi9cclxuICBwdWJsaWMgbGlua0V2ZW50SGFuZGxpbmcobGluaykge1xyXG4gICAgbGV0IGRhdGEgPSBuZXcgUU1TQ0tFZGl0b3JMaW5rKCk7XHJcbiAgICBkYXRhID0gbGluaztcclxuICAgIGRhdGEuZWRpdG9yQ29udGVudCA9IHRoaXMucW1zY2tDb250ZW50SW5wdXQ7XHJcbiAgICBkYXRhLm1vZHVsZSA9IHRoaXMucW1zY2tEYXRhLm1vZHVsZTtcclxuICAgIGRhdGEuZW50aXR5SWQgPSB0aGlzLnFtc2NrRGF0YS5lbnRpdHlJZDtcclxuICAgIGxldCBkaWFsb2dUZW1wbGF0ZVxyXG4gICAgaWYoIXRoaXMucW1zY2tQbHVnaW4uc2ltcGxlTW9kZSkge1xyXG4gICAgICBkaWFsb2dUZW1wbGF0ZSA9IHRoaXMuZGlhbG9nLm9wZW4oUU1TQ0tFZGl0b3JMaW5rQ29tcG9uZW50LCB7XHJcbiAgICAgICAgd2lkdGg6ICc2NTBweCcsXHJcbiAgICAgICAgaGVpZ2h0OiAnNjYwcHgnLFxyXG4gICAgICAgIGRhdGEsXHJcbiAgICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlXHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHsgXHJcbiAgICAgIGRpYWxvZ1RlbXBsYXRlID0gdGhpcy5kaWFsb2cub3BlbihRbXNDa2VkaXRvckxpbmtTaW1wbGVDb21wb25lbnQsIHtcclxuICAgICAgICB3aWR0aDogJzY1MHB4JyxcclxuICAgICAgICBoZWlnaHQ6ICcyMDBweCcsXHJcbiAgICAgICAgZGF0YSxcclxuICAgICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsXHJcbiAgICAgICAgYXV0b0ZvY3VzOiBmYWxzZSxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBkaWFsb2dUZW1wbGF0ZVxyXG4gICAgICAuYWZ0ZXJDbG9zZWQoKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3ViY3JpYmUpKVxyXG4gICAgICAuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgICBjb25zdCBldnQgPSBuZXcgQ3VzdG9tRXZlbnQodGhpcy5ja0VkaXRvckV2ZW50Q29uc3QuUU1TQ0tfTElOS19QTFVHSU5fUkVTUCwge1xyXG4gICAgICAgICAgICBkZXRhaWw6IHJlc3VsdFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChldnQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUb29sdGlwIG1hcHBpbmdcclxuICAgKi9cclxuICBwdWJsaWMgdG9vbHRpcEV2ZW50SGFuZGxpbmcodmFsdWUpIHtcclxuICAgIGxldCBkYXRhID0gbmV3IFFNU0NLRWRpdG9yVG9vbHRpcCgpO1xyXG4gICAgZGF0YS50ZXh0ID0gdmFsdWUudGV4dDtcclxuICAgIGRhdGEuY29udGVudCA9IHZhbHVlLmNvbnRlbnQ7XHJcbiAgICBkYXRhLmNrRWRpdG9yID0gdGhpcy5xbXNja1BsdWdpbi5wbHVnaW5PYmplY3Q7XHJcblxyXG4gICAgY29uc3QgZGlhbG9nVGVtcGxhdGUgPSB0aGlzLmRpYWxvZy5vcGVuKFFNU0NLRWRpdG9yVG9vbHRpcENvbXBvbmVudCwge1xyXG4gICAgICB3aWR0aDogJzY1MHB4JyxcclxuICAgICAgaGVpZ2h0OiAnNTU1cHgnLFxyXG4gICAgICBkYXRhLFxyXG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWVcclxuICAgIH0pO1xyXG4gICAgZGlhbG9nVGVtcGxhdGVcclxuICAgICAgLmFmdGVyQ2xvc2VkKClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSlcclxuICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgY29uc3QgZXZ0ID0gbmV3IEN1c3RvbUV2ZW50KHRoaXMuY2tFZGl0b3JFdmVudENvbnN0LlFNU0NLX1RPT0xUSVBfUExVR0lOX1JFU1AsIHtcclxuICAgICAgICAgICAgZGV0YWlsOiByZXN1bHRcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgd2luZG93LmRpc3BhdGNoRXZlbnQoZXZ0KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAqIEltYWdlTWFwIG1hcHBpbmdcclxuICovXHJcbiAgcHVibGljIGltYWdlTWFwRXZlbnRIYW5kbGluZyh2YWx1ZSkge1xyXG4gICAgbGV0IGRhdGEgPSBuZXcgUU1TQ0tFZGl0b3JJbWFnZU1hcCgpO1xyXG4gICAgZGF0YS5uYW1lID0gdmFsdWUubmFtZTtcclxuICAgIGRhdGEuYXJlYXMgPSB2YWx1ZS5hcmVhcztcclxuICAgIGRhdGEuaW1hZ2VVcmwgPSB2YWx1ZS5pbWFnZVVybDtcclxuICAgIGRhdGEuaW1hZ2VXaWR0aCA9IHZhbHVlLmltYWdlV2lkdGg7XHJcbiAgICBkYXRhLmltYWdlSGVpZ2h0ID0gdmFsdWUuaW1hZ2VIZWlnaHQ7XHJcbiAgICBkYXRhLm1vZHVsZSA9IHRoaXMucW1zY2tEYXRhLm1vZHVsZTtcclxuICAgIGRhdGEuZW50aXR5SWQgPSB0aGlzLnFtc2NrRGF0YS5lbnRpdHlJZDtcclxuICAgIGRhdGEuZWRpdG9yQ29udGVudCA9IHRoaXMucW1zY2tDb250ZW50SW5wdXQ7XHJcbiAgICBkYXRhLmxpbmtKYXZhU2NyaXB0TGlua3NBbGxvd2VkID0gdGhpcy5xbXNja0RhdGEubGlua0phdmFTY3JpcHRMaW5rc0FsbG93ZWQ7XHJcbiAgICBjb25zdCBkaWFsb2dUZW1wbGF0ZSA9IHRoaXMuZGlhbG9nLm9wZW4oUU1TQ0tFZGl0b3JJbWFnZU1hcENvbXBvbmVudCwge1xyXG4gICAgICBkYXRhLFxyXG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWVcclxuICAgIH0pO1xyXG4gICAgZGlhbG9nVGVtcGxhdGVcclxuICAgICAgLmFmdGVyQ2xvc2VkKClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSlcclxuICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgY29uc3QgZXZ0ID0gbmV3IEN1c3RvbUV2ZW50KHRoaXMuY2tFZGl0b3JFdmVudENvbnN0LlFNU0NLX0lNQUdFTUFQX1BMVUdJTl9SRVNQLCB7XHJcbiAgICAgICAgICAgIGRldGFpbDogcmVzdWx0XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHdpbmRvdy5kaXNwYXRjaEV2ZW50KGV2dCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qXHJcbiAgICBCdXNpbmVzcyBQcm9jZXNzIE1vZGVsIGFuZCBOb3RhdGlvblxyXG4gICovXHJcbiAgcHVibGljIGJwbW5FdmVudEhhbmRsaW5nKGlkOiBzdHJpbmcpIHtcclxuICAgIGxldCBkYXRhID0gbmV3IFFNU0NLRWRpdG9yQnBtbkRhdGEoKTtcclxuICAgIGRhdGEuaWQgPSBpZDtcclxuICAgIGRhdGEubW9kdWxlID0gdGhpcy5xbXNja0RhdGEubW9kdWxlO1xyXG4gICAgZGF0YS5lbnRpdHlJZCA9IHRoaXMucW1zY2tEYXRhLmVudGl0eUlkO1xyXG4gICAgZGF0YS5lZGl0b3JDb250ZW50ID0gdGhpcy5xbXNja0NvbnRlbnRJbnB1dDtcclxuICAgIGNvbnN0IGRpYWxvZ1RlbXBsYXRlID0gdGhpcy5kaWFsb2cub3BlbihRTVNDS0VkaXRvckJwbW5Db21wb25lbnQsIHtcclxuICAgICAgd2lkdGg6ICc4OXZ3JyxcclxuICAgICAgbWF4V2lkdGg6ICcxMDB2dycsXHJcbiAgICAgIGhlaWdodDogJzcwMHB4JyxcclxuICAgICAgbWF4SGVpZ2h0OiAnMTAwdncnLFxyXG4gICAgICBkYXRhOiBkYXRhLFxyXG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWVcclxuICAgIH0pO1xyXG4gICAgZGlhbG9nVGVtcGxhdGVcclxuICAgICAgLmFmdGVyQ2xvc2VkKClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSlcclxuICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgY29uc3QgZXZ0ID0gbmV3IEN1c3RvbUV2ZW50KHRoaXMuY2tFZGl0b3JFdmVudENvbnN0LlFNU0NLX0JQTU5fUExVR0lOX1JFU1AsIHtcclxuICAgICAgICAgICAgZGV0YWlsOiByZXN1bHRcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgd2luZG93LmRpc3BhdGNoRXZlbnQoZXZ0KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuICAvKlxyXG4gICBBYm91dCBDS0VkaXRvclxyXG4gKi9cclxuICBwdWJsaWMgYWJvdXRDS0VkaXRvckV2ZW50SGFuZGxpbmcodmVyc2lvbjogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBkaWFsb2dUZW1wbGF0ZSA9IHRoaXMuZGlhbG9nLm9wZW4oUU1TQ0tFZGl0b3JBYm91dENvbXBvbmVudCwge1xyXG4gICAgICB3aWR0aDogJzUwMHB4JyxcclxuICAgICAgZGF0YTogdmVyc2lvbixcclxuICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlXHJcbiAgICB9KTtcclxuICAgIGRpYWxvZ1RlbXBsYXRlXHJcbiAgICAgIC5hZnRlckNsb3NlZCgpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJjcmliZSkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG5cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKlxyXG4gICAgVG9vbGJhciB0b2dnbGVcclxuICAqL1xyXG4gIHB1YmxpYyB0b2dnbGVUb29sYmFyRXZlbnRIYW5kbGluZygpIHtcclxuICAgIGNvbnN0IHFtc2NrZWRpdG9yID0gd2luZG93LmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdxbXNja2VkaXRvcicpO1xyXG4gICAgY29uc3QgdG9nZ2xlQXR0cmlidXRlID0gJ2lzVG9nZ2xlVG9vbGJhcic7XHJcbiAgICBjb25zdCBja2VkaXRvclRhZyA9ICdja2VkaXRvcic7XHJcblxyXG4gICAgaWYgKHFtc2NrZWRpdG9yKSB7XHJcbiAgICAgIGNvbnN0IGlzVG9nZ2xlVG9vbGJhciA9IHFtc2NrZWRpdG9yLmdldEF0dHJpYnV0ZSh0b2dnbGVBdHRyaWJ1dGUpID09ICd0cnVlJztcclxuICAgICAgaWYgKGlzVG9nZ2xlVG9vbGJhcikge1xyXG4gICAgICAgIHRoaXMuY2tlZGl0b3JDb25maWcgPSBDS0VkaXRvckNvbW1vbkZ1bmN0aW9ucy5nZXRDS0VkaXRvckNvbmZpZ3VyYXRpb24odGhpcy5xbXNja1BsdWdpbi5pdGVtVG9vbGJhcik7XHJcbiAgICAgICAgcW1zY2tlZGl0b3Iuc2V0QXR0cmlidXRlKHRvZ2dsZUF0dHJpYnV0ZSwgJ2ZhbHNlJyk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy5ja2VkaXRvckNvbmZpZyA9IENLRWRpdG9yQ29tbW9uRnVuY3Rpb25zLmdldENLRWRpdG9yQ29uZmlndXJhdGlvbih0aGlzLnFtc2NrRGF0YS50b2dnbGVUb29sYmFyKTtcclxuICAgICAgICBxbXNja2VkaXRvci5zZXRBdHRyaWJ1dGUodG9nZ2xlQXR0cmlidXRlLCAndHJ1ZScpXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IG9uQ2hhbmdlZCA9IHRoaXMub25DaGFuZ2VkLmJpbmQodGhpcyk7XHJcbiAgICAgIGNvbnN0IG9uQmx1ciA9IHRoaXMub25CbHVyLmJpbmQodGhpcyk7XHJcblxyXG4gICAgICBpZiAodGhpcy5lZGl0b3JJbnN0YW5jZSkge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICB0aGlzLmVkaXRvckluc3RhbmNlLmRlc3Ryb3koKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2ggKGVycikge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coZXJyKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vVGhpcyBpcyBhIHRlbXBvcmFyeSB3b3JrYXJvdW5kLlxyXG4gICAgICAvL1RyYWNraW5nIHN0YXR1cyBhbmQgcHJvZ3Jlc3Mgb2YgdGhlIGlzc3VlIGh0dHBzOi8vZ2l0aHViLmNvbS9ja2VkaXRvci9ja2VkaXRvcjUvaXNzdWVzLzczODNcclxuICAgICAgY29uc3Qgcm9vdCA9IHdpbmRvdy5kb2N1bWVudC5xdWVyeVNlbGVjdG9yKGNrZWRpdG9yVGFnKTtcclxuICAgICAgaWYgKCEhcm9vdCkge1xyXG4gICAgICAgIGxldCBlZGl0b3JFbGVtZW50ID0gbnVsbDtcclxuICAgICAgICBpZiAocm9vdC5jaGlsZEVsZW1lbnRDb3VudCA+IDApIHtcclxuICAgICAgICAgIGVkaXRvckVsZW1lbnQgPSBBcnJheS5mcm9tKHJvb3QuY2hpbGRyZW4pLmZpbmQoaSA9PiBpLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT0gdGhpcy5ja1RhZ25hbWUudG9Mb3dlckNhc2UoKSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGVkaXRvckVsZW1lbnQgPSB3aW5kb3cuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0aGlzLmNrVGFnbmFtZSk7XHJcbiAgICAgICAgICBlZGl0b3JFbGVtZW50LnN0eWxlID0gJ2Rpc3BsYXk6IG5vbmU7JztcclxuICAgICAgICAgIHJvb3QuYXBwZW5kQ2hpbGQoZWRpdG9yRWxlbWVudCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmNrRWRpdG9yLmNyZWF0ZShlZGl0b3JFbGVtZW50LCB0aGlzLmNrZWRpdG9yQ29uZmlnKS50aGVuKGVkaXRvciA9PiB7XHJcbiAgICAgICAgICB0aGlzLmluaXRFZGl0b3IoZWRpdG9yKTtcclxuICAgICAgICAgIHRoaXMuZWRpdG9ySW5zdGFuY2UgPSBlZGl0b3I7XHJcblxyXG4gICAgICAgICAgLy9EZWxldGUgY2FjaGUgY29udGVudFxyXG4gICAgICAgICAgZWRpdG9yRWxlbWVudC5pbm5lckhUTUwgPSAnJztcclxuXHJcbiAgICAgICAgICAvL3NldHVwIGVkaXRvciBldmVudHNcclxuICAgICAgICAgIGNvbnN0IG1vZGVsRG9jdW1lbnQgPSBlZGl0b3IubW9kZWwuZG9jdW1lbnQ7XHJcbiAgICAgICAgICBjb25zdCB2aWV3RG9jdW1lbnQgPSBlZGl0b3IuZWRpdGluZy52aWV3LmRvY3VtZW50O1xyXG4gICAgICAgICAgbW9kZWxEb2N1bWVudC5vbignY2hhbmdlOmRhdGEnLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIG9uQ2hhbmdlZCh7IGVkaXRvciB9KTtcclxuICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgIHZpZXdEb2N1bWVudC5vbignYmx1cicsICgpID0+IHtcclxuICAgICAgICAgICAgb25CbHVyKHsgZWRpdG9yIH0pO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gKiBGbG93Y2hhcnRcclxuICovXHJcbiAgcHVibGljIGZsb3djaGFydEV2ZW50SGFuZGxpbmcoaWQ6IHN0cmluZykge1xyXG4gICAgY29uc3QgZGlhbG9nVGVtcGxhdGUgPSB0aGlzLmRpYWxvZy5vcGVuKFFNU0NLRWRpdG9yRmxvd2NoYXJ0Q29tcG9uZW50LCB7XHJcbiAgICAgIHdpZHRoOiAnODl2dycsXHJcbiAgICAgIG1heFdpZHRoOiAnMTAwdncnLFxyXG4gICAgICBoZWlnaHQ6ICc3MjVweCcsXHJcbiAgICAgIG1heEhlaWdodDogJzEwMHZ3JyxcclxuICAgICAgZGF0YTogaWQsXHJcbiAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZVxyXG4gICAgfSk7XHJcbiAgICBkaWFsb2dUZW1wbGF0ZVxyXG4gICAgICAuYWZ0ZXJDbG9zZWQoKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3ViY3JpYmUpKVxyXG4gICAgICAuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGV2dCA9IG5ldyBDdXN0b21FdmVudCh0aGlzLmNrRWRpdG9yRXZlbnRDb25zdC5RTVNDS19GTE9XQ0hBUlRfUExVR0lOX1JFU1AsIHtcclxuICAgICAgICAgICAgICBkZXRhaWw6IHJlc3VsdFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgd2luZG93LmRpc3BhdGNoRXZlbnQoZXZ0KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQnJvd3NlIFZpZGVvXHJcbiAgICovXHJcbiAgcHVibGljIGJyb3dzZVZpZGVvRXZlbnRIYW5kbGluZyh2YWx1ZSkge1xyXG4gICAgdGhpcy50cmVlU2VydmljZVxyXG4gICAgICAuZ2V0VXBsb2FkVmlkZW9MaXN0KClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSlcclxuICAgICAgLnN1YnNjcmliZSgocmVzcG9uc2UpID0+IHtcclxuICAgICAgICBjb25zdCB2aWRlb3MgPSByZXNwb25zZSB8fCBbXTtcclxuICAgICAgICBjb25zdCBjb25maWcgPSB7XHJcbiAgICAgICAgICBhbGxvd1NlbGVjdEZvbGRlcjogZmFsc2UsXHJcbiAgICAgICAgICBhcmVhT2ZDdXJyZW50UHJvY2VzczogJycsXHJcbiAgICAgICAgICBzaG93Q2hlY2tCb3g6IHRydWUsXHJcbiAgICAgICAgICBhbGxvd011bHRpcGxlQ2hlY2s6IHZhbHVlLmFsbG93TXVsdGlwbGVGaWxlcyxcclxuICAgICAgICAgIG9ubHlDaGVja0JveEZvckNoaWxkOiB0cnVlLFxyXG4gICAgICAgICAgbW9kdWxlSWQ6IERhdGFUeXBlLmRvY3VtZW50LFxyXG4gICAgICAgICAgb3Blbkljb246ICdmb2xkZXJfb3BlbicsXHJcbiAgICAgICAgICBvcGVuSWNvbkNvbG9yOiAnIzE5NTRBOScsXHJcbiAgICAgICAgICBjbG9zZUljb246ICdmb2xkZXJfZmlsbGVkJyxcclxuICAgICAgICAgIGNsb3NlSWNvbkNvbG9yOiAnIzRhY2FmZicsXHJcbiAgICAgICAgICBpdGVtSWNvbjogJ2luc2VydF9kcml2ZV9maWxlJyxcclxuICAgICAgICAgIGl0ZW1JY29uUGF0aDogJycsXHJcbiAgICAgICAgICBpdGVtSWNvbkJhc2U2NDogJycsXHJcbiAgICAgICAgICBzaW5nbGVTZWxlY3RlZE5vZGU6IHRydWUsXHJcbiAgICAgICAgICBleHBhbmRBbGw6IHRydWVcclxuICAgICAgICB9O1xyXG4gICAgICAgIGNvbnN0IGRhdGE6IFBvcHVwRGF0YSA9IG5ldyBQb3B1cERhdGEoKTtcclxuICAgICAgICBkYXRhLm1vZHVsZUlkID0gMjtcclxuICAgICAgICBkYXRhLm1vZHVsZU5hbWUgPSB0aGlzLkxBTkcuUU1TQ0tFRElUT1IuU0VMRUNUX1ZJREVPX0ZST01fQVJDSElWRTtcclxuICAgICAgICBkYXRhLnRyZWVEYXRhMSA9IHZpZGVvcy5tYXAoKGl0ZW0pID0+IHtcclxuICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHJvb3RJZDogaXRlbS5yb290SWQsXHJcbiAgICAgICAgICAgIHBhcmVudElkOiBpdGVtLnBhcmVudElkLFxyXG4gICAgICAgICAgICByb290TmFtZTogaXRlbS5yb290TmFtZSxcclxuICAgICAgICAgICAgc3ViTmFtZTogaXRlbS5zdWJOYW1lLFxyXG4gICAgICAgICAgICBjaGlsZElkOiBpdGVtLmNoaWxkSWQsXHJcbiAgICAgICAgICAgIGNoaWxkTmFtZTogaXRlbS5jaGlsZE5hbWUsXHJcbiAgICAgICAgICAgIHN0YXR1c0lkOiBpdGVtLnN0YXR1c0lkLFxyXG4gICAgICAgICAgICBkaXNwbGF5SWQ6IGl0ZW0uZGlzcGxheUlkLFxyXG4gICAgICAgICAgICBjb250ZW50VHlwZTogaXRlbS5jb250ZW50VHlwZSxcclxuICAgICAgICAgICAgdXJsOiBpdGVtLnVybFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBkYXRhLnRyZWVEYXRhMiA9IFtdO1xyXG4gICAgICAgIGRhdGEudHJlZUNvbmZpZzEgPSBjb25maWc7XHJcbiAgICAgICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihSZWxhdGVkUG9wdXBDb21wb25lbnQsIHtcclxuICAgICAgICAgIG1pbldpZHRoOiAnNDUwcHgnLFxyXG4gICAgICAgICAgbWF4V2lkdGg6ICc4MDBweCcsXHJcbiAgICAgICAgICBtaW5IZWlnaHQ6ICc2MjBweCcsXHJcbiAgICAgICAgICBkYXRhLFxyXG4gICAgICAgICAgcGFuZWxDbGFzczogJ3Ftc2NrZWRpdG9yLWJyb3dzZS12aWRlby1wb3B1cCdcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBzZWFyY2hCb3ggPSB3aW5kb3cuZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnFtc2NrZWRpdG9yLWJyb3dzZS12aWRlby1wb3B1cCAjcW1zbGliX3JlbGF0ZWRfcG9wdXBfc2VhcmNoJykgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICAgICAgICBpZiAoc2VhcmNoQm94KSB7XHJcbiAgICAgICAgICAgIHNlYXJjaEJveC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sIDEwMCk7XHJcblxyXG4gICAgICAgIGRpYWxvZ1JlZlxyXG4gICAgICAgICAgLmFmdGVyQ2xvc2VkKClcclxuICAgICAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgICAgICAgY29uc3QgaWRzID0gcmVzdWx0LnJlZHVjZSgocmVzdWx0LCBpdGVtKSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXN1bHRbaXRlbS5pZC50b1N0cmluZygpXSA9IGl0ZW0uaWQ7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgICAgICAgICAgIH0sIHt9KTtcclxuICAgICAgICAgICAgICBjb25zdCB1cmxzID0gdmlkZW9zLmZpbHRlcihpID0+IGkuY2hpbGRJZCAmJiAhIWlkc1tpLmNoaWxkSWQudG9TdHJpbmcoKV0pLm1hcChpID0+IGkudXJsKTtcclxuICAgICAgICAgICAgICBjb25zdCBldnQgPSBuZXcgQ3VzdG9tRXZlbnQodGhpcy5ja0VkaXRvckV2ZW50Q29uc3QuUU1TQ0tfQlJPV1NFX1ZJREVPX1JFU1AsIHsgZGV0YWlsOiB7IHVybHM6IHVybHMgfSB9KTtcclxuICAgICAgICAgICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChldnQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
664
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicW1zLWNrZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Ftcy1hbmd1bGFyL3NyYy9saWIvcW1zLWNrZWRpdG9yLWNvbXBvbmVudHMvcW1zLWNrZWRpdG9yLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBYSxTQUFTLEVBQTJCLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9OLE9BQU8sRUFBZSxhQUFhLEVBQUUsaUJBQWlCLEVBQWEsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxRixPQUFPLEVBQUUsU0FBUyxFQUFtQixNQUFNLDBCQUEwQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNuRixPQUFPLEVBQUUsZ0JBQWdCLEVBQTBCLE1BQU0sbUNBQW1DLENBQUM7QUFDN0YsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDL0UsT0FBTyx1QkFBdUIsTUFBTSxvQ0FBb0MsQ0FBQztBQUd6RSxPQUFPLGVBQWUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw0REFBNEQsQ0FBQztBQUN0RyxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSx3RUFBd0UsQ0FBQztBQUN4SCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxvRUFBb0UsQ0FBQztBQUNsSCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw0REFBNEQsQ0FBQztBQUN0RyxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSw4RUFBOEUsQ0FBQztBQUNoSSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxvRUFBb0UsQ0FBQztBQUNsSCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxrRUFBa0UsQ0FBQztBQUMvRyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNsRixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw4REFBOEQsQ0FBQztBQUN6RyxtRUFBbUU7QUFDbkUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDNUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUN6RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUM1RixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxzRUFBc0UsQ0FBQztBQUNySCxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSwwRUFBMEUsQ0FBQztBQXFCMUgsTUFBTSxPQUFPLG9CQUFxQixTQUFRLHdCQUF3QjtJQTJEaEU7O09BRUc7SUFFSCxZQUNVLE1BQWlCLEVBQ2pCLFNBQWtDLEVBQ2xDLGFBQXVDLEVBQ3ZDLFdBQW1DLEVBQ25DLDhCQUE4RCxFQUM5RCxRQUFtQixFQUNuQixLQUFpQjtRQUV6QixLQUFLLEVBQUUsQ0FBQztRQVJBLFdBQU0sR0FBTixNQUFNLENBQVc7UUFDakIsY0FBUyxHQUFULFNBQVMsQ0FBeUI7UUFDbEMsa0JBQWEsR0FBYixhQUFhLENBQTBCO1FBQ3ZDLGdCQUFXLEdBQVgsV0FBVyxDQUF3QjtRQUNuQyxtQ0FBOEIsR0FBOUIsOEJBQThCLENBQWdDO1FBQzlELGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsVUFBSyxHQUFMLEtBQUssQ0FBWTtRQWpFUixhQUFRLEdBQVksS0FBSyxDQUFDO1FBQ3BDLGFBQVEsR0FBRyxhQUFhLENBQUM7UUFDeEIsdUJBQWtCLEdBQXlCLElBQUksWUFBWSxFQUFFLENBQUM7UUFNeEUsdUJBQWtCLEdBQUcsa0JBQWtCLENBQUM7UUFNeEMsd0JBQW1CLEdBQVksS0FBSyxDQUFDO1FBc0RuQyxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUN6QixDQUFDO0lBcERELFNBQVMsQ0FBQyxLQUFLO1FBQ2IsUUFBUSxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUM1QixLQUFLLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyx5QkFBeUI7Z0JBQ3BELElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO2dCQUM3QixNQUFNO1lBQ1IsS0FBSyxJQUFJLENBQUMsa0JBQWtCLENBQUMsOEJBQThCO2dCQUN6RCxJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQztnQkFDakMsTUFBTTtZQUNSLEtBQUssSUFBSSxDQUFDLGtCQUFrQixDQUFDLHFCQUFxQjtnQkFDaEQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3pDLE1BQU07WUFDUixLQUFLLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyx3QkFBd0I7Z0JBQ25ELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUM1QyxNQUFNO1lBQ1IsS0FBSyxJQUFJLENBQUMsa0JBQWtCLENBQUMseUJBQXlCO2dCQUNwRCxJQUFJLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDN0MsTUFBTTtZQUNSLEtBQUssSUFBSSxDQUFDLGtCQUFrQixDQUFDLHFCQUFxQjtnQkFDaEQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3pDLE1BQU07WUFDUixLQUFLLElBQUksQ0FBQyxrQkFBa0IsQ0FBQywrQkFBK0I7Z0JBQzFELElBQUksQ0FBQywwQkFBMEIsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNsRCxNQUFNO1lBQ1IsS0FBSyxJQUFJLENBQUMsa0JBQWtCLENBQUMsMEJBQTBCO2dCQUNyRCxJQUFJLENBQUMsc0JBQXNCLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDOUMsTUFBTTtZQUNSLEtBQUssSUFBSSxDQUFDLGtCQUFrQixDQUFDLHdCQUF3QjtnQkFDbkQsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7Z0JBQ2xDLE1BQU07WUFDUixLQUFLLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxzQkFBc0I7Z0JBQ2pELElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNoRCxNQUFNO1lBQ1I7Z0JBQ0UsTUFBTTtTQUNUO0lBQ0gsQ0FBQztJQW1CRCxRQUFRO1FBQ04sSUFBSSxDQUFDLG1CQUFtQixHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsZ0JBQWdCLENBQUM7UUFDNUQsSUFBSSxDQUFDLElBQUksR0FBRyx1QkFBdUIsQ0FBQztRQUNwQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDO1FBQzlDLElBQUksQ0FBQyxTQUFTLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUN0RixJQUFJLEdBQUcsRUFBRTtnQkFDUCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQy9DO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLFlBQVksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQztRQUNoRCxJQUFJLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsbUJBQW1CLEVBQUU7WUFDdkUsWUFBWSxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLG1CQUFtQixDQUFDO1NBQzFEO1FBRUQsSUFBSSxDQUFDLGNBQWMsR0FBRyx1QkFBdUIsQ0FBQyx3QkFBd0IsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNyRixJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3BELElBQUksSUFBSSxDQUFDLHVCQUF1QixFQUFFLEVBQUU7WUFDbEMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7U0FDMUI7UUFFRCxJQUFJLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxFQUFFO1lBQ25DLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1NBQzNCO1FBRUQsSUFBSSxJQUFJLENBQUMscUJBQXFCLEVBQUUsRUFBRTtZQUNoQyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztTQUM5QjtRQUNELElBQUksSUFBSSxDQUFDLG1CQUFtQixFQUFFLEVBQUU7WUFDOUIsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7U0FDM0I7UUFDRCxJQUFJLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxFQUFFO1lBQ3BDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1NBQzVCO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDdkIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztTQUMvQjtRQUNELENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBS0QsZ0JBQWdCLENBQUMsRUFBTztRQUN0QixJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBQ0QsaUJBQWlCLENBQUMsRUFBTztRQUN2QixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNuQixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxhQUFhLENBQUMsQ0FBQztTQUNqRTtJQUNILENBQUM7SUFFRCxxQkFBcUI7UUFDbkIsTUFBTSxPQUFPLEdBQUcsbUJBQW1CLENBQUM7UUFDcEMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZO2VBQy9CLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxNQUFNO2VBQ3BDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVc7ZUFDOUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRCxxQkFBcUI7UUFDbkIsTUFBTSxrQkFBa0IsR0FBRztZQUN6QixZQUFZLG9CQUNQLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUMvQjtTQUNGLENBQUM7UUFDRixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO1lBQy9GLHdEQUF3RDtZQUN4RCxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxTQUFTLEdBQUcsaUZBQWlGLENBQUM7U0FDM0g7UUFDRCxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxJQUFJLEVBQUUsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO0lBQ3JHLENBQUM7SUFFRCxzQkFBc0I7UUFDcEIsTUFBTSxPQUFPLEdBQUcsb0JBQW9CLENBQUM7UUFDckMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxtQkFBbUI7ZUFDdEMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVztlQUM5QixJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVELHNCQUFzQjtRQUNwQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM1RCxNQUFNLG1CQUFtQixHQUFHO1lBQzFCLG1CQUFtQixFQUFFO2dCQUNuQixPQUFPLEVBQUUsS0FBSzthQUNmO1NBQ0YsQ0FBQztRQUNGLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLElBQUksRUFBRSxFQUFFLG1CQUFtQixDQUFDLENBQUM7SUFDdEcsQ0FBQztJQUVELHlCQUF5QjtRQUN2QixNQUFNLE9BQU8sR0FBRyxvQkFBb0IsQ0FBQztRQUNyQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVc7ZUFDaEMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsZUFBZTtlQUNoQyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVELG1CQUFtQjtRQUNqQixNQUFNLGdCQUFnQixHQUFHO1lBQ3ZCLGdCQUFnQixFQUFFO2dCQUNoQixLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxlQUFlO2FBQ3RDO1NBQ0YsQ0FBQTtRQUNELElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLElBQUksRUFBRSxFQUFFLGdCQUFnQixDQUFDLENBQUM7SUFDbkcsQ0FBQztJQUVELG1CQUFtQjtRQUNqQixNQUFNLE9BQU8sR0FBRyxzQkFBc0IsQ0FBQztRQUN2QyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLHNCQUFzQjtlQUN6QyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXO2VBQzlCLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsc0JBQXNCLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQy9ELE1BQU0sZUFBZSxHQUFHO1lBQ3RCLGVBQWUsRUFBRTtnQkFDZixpQkFBaUIsRUFBRSxLQUFLO2FBQ3pCO1NBQ0YsQ0FBQztRQUNGLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLElBQUksRUFBRSxFQUFFLGVBQWUsQ0FBQyxDQUFDO0lBQ2xHLENBQUM7SUFFRCx3QkFBd0I7UUFDdEIsTUFBTSxPQUFPLEdBQUcsZ0JBQWdCLENBQUM7UUFDakMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxlQUFlO2VBQ2xDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVc7ZUFDOUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsTUFBTSxlQUFlLEdBQUc7WUFDdEIsZUFBZSxFQUFFO2dCQUNmLGNBQWMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLGVBQWU7YUFDL0M7U0FDRixDQUFDO1FBQ0YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsSUFBSSxFQUFFLEVBQUUsZUFBZSxDQUFDLENBQUM7SUFDbEcsQ0FBQztJQUVELHVCQUF1QjtRQUNyQixNQUFNLE9BQU8sR0FBRywwQkFBMEIsQ0FBQztRQUMzQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGtCQUFrQjtlQUNyQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXO2VBQzlCLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsTUFBTSxjQUFjLEdBQUc7WUFDckIsa0JBQWtCLEVBQUU7Z0JBQ2xCLHlCQUF5QixFQUFFO29CQUN6QixHQUFHLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxrQkFBa0I7b0JBQ3RDLE1BQU0sRUFBRSxNQUFNO2lCQUNmO2FBQ0Y7U0FDRixDQUFDO1FBQ0YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsSUFBSSxFQUFFLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDakcsQ0FBQztJQUVNLFNBQVMsQ0FBQyxFQUFFLE1BQU0sRUFBRTtRQUN6Qiw0Q0FBNEM7UUFDNUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRU0sTUFBTSxDQUFDLEVBQUUsTUFBTSxFQUFFO1FBQ3RCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDMUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQsUUFBUSxDQUFDLENBQWM7UUFDckIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDbEIsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUNELE9BQU8sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDekQsSUFBSSxFQUFFO2dCQUNKLEtBQUssRUFBRSxLQUFLO2dCQUNaLE1BQU0sRUFBRSxDQUFDLENBQUMsS0FBSzthQUNoQjtTQUNGLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSSxPQUFPLENBQUMsTUFBTTtRQUNuQixJQUFJLENBQUMsY0FBYyxHQUFHLE1BQU0sQ0FBQztRQUM3QixJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUMxQixNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1NBQ3hDO1FBQ0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRU8sVUFBVSxDQUFDLE1BQU07UUFDdkIsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ2pFLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDO1FBQ25ELE1BQU0sTUFBTSxHQUEyQixFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsQ0FBQztRQUMzSCxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLG1CQUFtQixHQUFHLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDcEUsT0FBTyxJQUFJLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUM5QyxDQUFDLENBQUM7UUFFRixNQUFNLENBQUMsRUFBRTthQUNOLGtCQUFrQixFQUFFO2FBQ3BCLGFBQWEsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQztRQUU5Riw4QkFBOEI7UUFDOUIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUMxRCx5Q0FBeUM7WUFDekMsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1lBQzlELElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRTtnQkFDZCxRQUFRLENBQUMsV0FBVyxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxLQUFLLEtBQUssQ0FBQyxLQUFLLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxLQUFLLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQzthQUNwSTtRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLDBCQUEwQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxxQkFBcUI7UUFDMUIsTUFBTSxJQUFJLEdBQXdCLElBQUksbUJBQW1CLEVBQUUsQ0FBQztRQUM1RCxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNaLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDO1FBQ3RDLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLDRCQUE0QixFQUFFO1lBQ3BFLEtBQUssRUFBRSxPQUFPO1lBQ2QsTUFBTSxFQUFFLE9BQU87WUFDZixJQUFJO1lBQ0osWUFBWSxFQUFFLElBQUk7U0FDbkIsQ0FBQyxDQUFDO1FBQ0gsY0FBYzthQUNYLFdBQVcsRUFBRTthQUNiLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO2FBQ2xDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQ3BCLElBQUksTUFBTSxFQUFFO2dCQUNWLE1BQU07YUFDUDtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVEOztPQUVHO0lBQ0kseUJBQXlCO1FBQzlCLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGdDQUFnQyxFQUFFO1lBQ3hFLEtBQUssRUFBRSxPQUFPO1lBQ2QsTUFBTSxFQUFFLE9BQU87WUFDZixJQUFJLEVBQUUsSUFBSSxDQUFDLGlCQUFpQjtZQUM1QixZQUFZLEVBQUUsSUFBSTtTQUNuQixDQUFDLENBQUM7UUFDSCxjQUFjO2FBQ1gsV0FBVyxFQUFFO2FBQ2IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7YUFDbEMsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDcEIsSUFBSSxNQUFNLEVBQUU7Z0JBQ1YsTUFBTSxHQUFHLEdBQUcsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLCtCQUErQixFQUFFO29CQUNuRixNQUFNLEVBQUUsTUFBTTtpQkFDZixDQUFDLENBQUM7Z0JBQ0gsTUFBTSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUMzQjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVEOztPQUVHO0lBQ0ksaUJBQWlCLENBQUMsSUFBSTtRQUMzQixJQUFJLElBQUksR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO1FBQ2pDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDWixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztRQUM1QyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUM7UUFDeEMsSUFBSSxjQUFjLENBQUE7UUFDbEIsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxFQUFFO1lBQ2hDLGNBQWMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyx3QkFBd0IsRUFBRTtnQkFDMUQsS0FBSyxFQUFFLE9BQU87Z0JBQ2QsTUFBTSxFQUFFLE9BQU87Z0JBQ2YsSUFBSTtnQkFDSixZQUFZLEVBQUUsSUFBSTthQUNuQixDQUFDLENBQUM7U0FDSjthQUFNO1lBQ0wsY0FBYyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLDhCQUE4QixFQUFFO2dCQUNoRSxLQUFLLEVBQUUsT0FBTztnQkFDZCxNQUFNLEVBQUUsT0FBTztnQkFDZixJQUFJO2dCQUNKLFlBQVksRUFBRSxJQUFJO2dCQUNsQixTQUFTLEVBQUUsS0FBSzthQUNqQixDQUFDLENBQUM7U0FDSjtRQUNELGNBQWM7YUFDWCxXQUFXLEVBQUU7YUFDYixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQzthQUNsQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUNwQixJQUFJLE1BQU0sRUFBRTtnQkFDVixNQUFNLEdBQUcsR0FBRyxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsc0JBQXNCLEVBQUU7b0JBQzFFLE1BQU0sRUFBRSxNQUFNO2lCQUNmLENBQUMsQ0FBQztnQkFDSCxNQUFNLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQzNCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxvQkFBb0IsQ0FBQyxLQUFLO1FBQy9CLElBQUksSUFBSSxHQUFHLElBQUksa0JBQWtCLEVBQUUsQ0FBQztRQUNwQyxJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUM7UUFDdkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO1FBQzdCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUM7UUFFOUMsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsMkJBQTJCLEVBQUU7WUFDbkUsS0FBSyxFQUFFLE9BQU87WUFDZCxNQUFNLEVBQUUsT0FBTztZQUNmLElBQUk7WUFDSixZQUFZLEVBQUUsSUFBSTtTQUNuQixDQUFDLENBQUM7UUFDSCxjQUFjO2FBQ1gsV0FBVyxFQUFFO2FBQ2IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7YUFDbEMsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDcEIsSUFBSSxNQUFNLEVBQUU7Z0JBQ1YsTUFBTSxHQUFHLEdBQUcsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLHlCQUF5QixFQUFFO29CQUM3RSxNQUFNLEVBQUUsTUFBTTtpQkFDZixDQUFDLENBQUM7Z0JBQ0gsTUFBTSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUMzQjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVEOztLQUVDO0lBQ00scUJBQXFCLENBQUMsS0FBSztRQUNoQyxJQUFJLElBQUksR0FBRyxJQUFJLG1CQUFtQixFQUFFLENBQUM7UUFDckMsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztRQUN6QixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUM7UUFDL0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDO1FBQ25DLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQztRQUNyQyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUM7UUFDeEMsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUM7UUFDNUMsSUFBSSxDQUFDLDBCQUEwQixHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsMEJBQTBCLENBQUM7UUFDNUUsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsNEJBQTRCLEVBQUU7WUFDcEUsSUFBSTtZQUNKLFlBQVksRUFBRSxJQUFJO1NBQ25CLENBQUMsQ0FBQztRQUNILGNBQWM7YUFDWCxXQUFXLEVBQUU7YUFDYixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQzthQUNsQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUNwQixJQUFJLE1BQU0sRUFBRTtnQkFDVixNQUFNLEdBQUcsR0FBRyxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsMEJBQTBCLEVBQUU7b0JBQzlFLE1BQU0sRUFBRSxNQUFNO2lCQUNmLENBQUMsQ0FBQztnQkFDSCxNQUFNLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQzNCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQ7O01BRUU7SUFDSyxpQkFBaUIsQ0FBQyxFQUFVO1FBQ2pDLElBQUksSUFBSSxHQUFHLElBQUksbUJBQW1CLEVBQUUsQ0FBQztRQUNyQyxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQztRQUNiLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUM7UUFDcEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQztRQUN4QyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztRQUM1QyxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyx3QkFBd0IsRUFBRTtZQUNoRSxLQUFLLEVBQUUsTUFBTTtZQUNiLFFBQVEsRUFBRSxPQUFPO1lBQ2pCLE1BQU0sRUFBRSxPQUFPO1lBQ2YsU0FBUyxFQUFFLE9BQU87WUFDbEIsSUFBSSxFQUFFLElBQUk7WUFDVixZQUFZLEVBQUUsSUFBSTtTQUNuQixDQUFDLENBQUM7UUFDSCxjQUFjO2FBQ1gsV0FBVyxFQUFFO2FBQ2IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7YUFDbEMsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDcEIsSUFBSSxNQUFNLEVBQUU7Z0JBQ1YsTUFBTSxHQUFHLEdBQUcsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLHNCQUFzQixFQUFFO29CQUMxRSxNQUFNLEVBQUUsTUFBTTtpQkFDZixDQUFDLENBQUM7Z0JBQ0gsTUFBTSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUMzQjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUNEOztLQUVDO0lBQ00sMEJBQTBCLENBQUMsT0FBZTtRQUMvQyxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyx5QkFBeUIsRUFBRTtZQUNqRSxLQUFLLEVBQUUsT0FBTztZQUNkLElBQUksRUFBRSxPQUFPO1lBQ2IsWUFBWSxFQUFFLElBQUk7U0FDbkIsQ0FBQyxDQUFDO1FBQ0gsY0FBYzthQUNYLFdBQVcsRUFBRTthQUNiLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO2FBQ2xDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1FBRXRCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVEOzs7Ozs7Ozs7OztNQVdFO0lBQ0ssMEJBQTBCO1FBQy9CLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNsRSxNQUFNLGVBQWUsR0FBRyxpQkFBaUIsQ0FBQztRQUMxQyxNQUFNLFdBQVcsR0FBRyxVQUFVLENBQUM7UUFFL0IsSUFBSSxXQUFXLEVBQUU7WUFDZixNQUFNLGVBQWUsR0FBRyxXQUFXLENBQUMsWUFBWSxDQUFDLGVBQWUsQ0FBQyxJQUFJLE1BQU0sQ0FBQztZQUM1RSxJQUFJLGVBQWUsRUFBRTtnQkFDbkIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUMvQixXQUFXLENBQUMsWUFBWSxDQUFDLGVBQWUsRUFBRSxPQUFPLENBQUMsQ0FBQzthQUNwRDtpQkFDSTtnQkFDSCxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ2hDLFdBQVcsQ0FBQyxZQUFZLENBQUMsZUFBZSxFQUFFLE1BQU0sQ0FBQyxDQUFBO2FBQ2xEO1NBQ0Y7SUFDSCxDQUFDO0lBRU8sbUJBQW1CLENBQUMsaUJBQTBCOztRQUNwRCxNQUFNLGFBQWEsR0FBRyxDQUFBLE1BQUEsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLDBDQUFFLEtBQUssQ0FBQyxHQUFHLEVBQUUsTUFBTSxLQUFJLENBQUMsQ0FBQztRQUMzRTs7OztVQUlFO1FBQ0YsTUFBQSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsbUJBQW1CLEdBQUcsYUFBYSxHQUFHLENBQUMsRUFBRSxDQUFDLDBDQUFFLE9BQU8sR0FBRyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUU7WUFDdkYsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQzFELENBQUMsQ0FBQyxDQUFBO1FBRUYsTUFBQSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsbUJBQW1CLEdBQUcsYUFBYSxHQUFHLENBQUMsRUFBRSxDQUFDLDBDQUFFLEdBQUcsQ0FBQyxTQUFTLEVBQUUsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFdkcsTUFBQSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsbUJBQW1CLEdBQUcsYUFBYSxHQUFHLENBQUMsRUFBRSxDQUFDLDBDQUFFLE9BQU8sR0FBRyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUU7WUFDdkYsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO1FBQzFELENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVEOztLQUVDO0lBQ00sc0JBQXNCLENBQUMsRUFBVTtRQUN0QyxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyw2QkFBNkIsRUFBRTtZQUNyRSxLQUFLLEVBQUUsTUFBTTtZQUNiLFFBQVEsRUFBRSxPQUFPO1lBQ2pCLE1BQU0sRUFBRSxPQUFPO1lBQ2YsU0FBUyxFQUFFLE9BQU87WUFDbEIsSUFBSSxFQUFFLEVBQUU7WUFDUixZQUFZLEVBQUUsSUFBSTtTQUNuQixDQUFDLENBQUM7UUFDSCxjQUFjO2FBQ1gsV0FBVyxFQUFFO2FBQ2IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7YUFDbEMsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDcEIsSUFBSSxNQUFNLEVBQUU7Z0JBQ1YsSUFBSSxNQUFNLEVBQUU7b0JBQ1YsTUFBTSxHQUFHLEdBQUcsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLDJCQUEyQixFQUFFO3dCQUMvRSxNQUFNLEVBQUUsTUFBTTtxQkFDZixDQUFDLENBQUM7b0JBQ0gsTUFBTSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztpQkFDM0I7YUFDRjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVEOztPQUVHO0lBQ0ksd0JBQXdCLENBQUMsS0FBSztRQUNuQyxJQUFJLENBQUMsV0FBVzthQUNiLGtCQUFrQixFQUFFO2FBQ3BCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO2FBQ2xDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ3RCLE1BQU0sTUFBTSxHQUFHLFFBQVEsSUFBSSxFQUFFLENBQUM7WUFDOUIsTUFBTSxNQUFNLEdBQUc7Z0JBQ2IsaUJBQWlCLEVBQUUsS0FBSztnQkFDeEIsb0JBQW9CLEVBQUUsRUFBRTtnQkFDeEIsWUFBWSxFQUFFLElBQUk7Z0JBQ2xCLGtCQUFrQixFQUFFLEtBQUssQ0FBQyxrQkFBa0I7Z0JBQzVDLG9CQUFvQixFQUFFLElBQUk7Z0JBQzFCLFFBQVEsRUFBRSxRQUFRLENBQUMsUUFBUTtnQkFDM0IsUUFBUSxFQUFFLGFBQWE7Z0JBQ3ZCLGFBQWEsRUFBRSxTQUFTO2dCQUN4QixTQUFTLEVBQUUsZUFBZTtnQkFDMUIsY0FBYyxFQUFFLFNBQVM7Z0JBQ3pCLFFBQVEsRUFBRSxtQkFBbUI7Z0JBQzdCLFlBQVksRUFBRSxFQUFFO2dCQUNoQixjQUFjLEVBQUUsRUFBRTtnQkFDbEIsa0JBQWtCLEVBQUUsSUFBSTtnQkFDeEIsU0FBUyxFQUFFLElBQUk7YUFDaEIsQ0FBQztZQUNGLE1BQU0sSUFBSSxHQUFjLElBQUksU0FBUyxFQUFFLENBQUM7WUFDeEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7WUFDbEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyx5QkFBeUIsQ0FBQztZQUNsRSxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtnQkFDbkMsT0FBTztvQkFDTCxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07b0JBQ25CLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtvQkFDdkIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO29CQUN2QixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87b0JBQ3JCLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztvQkFDckIsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO29CQUN6QixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7b0JBQ3ZCLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztvQkFDekIsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXO29CQUM3QixHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUc7aUJBQ2QsQ0FBQztZQUNKLENBQUMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUM7WUFDMUIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMscUJBQXFCLEVBQUU7Z0JBQ3hELFFBQVEsRUFBRSxPQUFPO2dCQUNqQixRQUFRLEVBQUUsT0FBTztnQkFDakIsU0FBUyxFQUFFLE9BQU87Z0JBQ2xCLElBQUk7Z0JBQ0osVUFBVSxFQUFFLGdDQUFnQzthQUM3QyxDQUFDLENBQUM7WUFFSCxVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUNkLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLDhEQUE4RCxDQUFnQixDQUFDO2dCQUMvSCxJQUFJLFNBQVMsRUFBRTtvQkFDYixTQUFTLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7aUJBQ2xDO1lBQ0gsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBRVIsU0FBUztpQkFDTixXQUFXLEVBQUU7aUJBQ2IsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7Z0JBQ3BCLElBQUksTUFBTSxFQUFFO29CQUNWLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUU7d0JBQ3pDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQzt3QkFDckMsT0FBTyxNQUFNLENBQUM7b0JBQ2hCLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztvQkFDUCxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDMUYsTUFBTSxHQUFHLEdBQUcsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLHVCQUF1QixFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztvQkFDekcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztpQkFDM0I7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVPLDBCQUEwQixDQUFDLFFBQWdCO1FBQ2pELENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxFQUFFLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUM3RCxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxRQUFRLENBQUMsRUFBRTtnQkFDaEUsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7YUFDOUI7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxxQkFBcUI7O1FBQzNCLE1BQU0sWUFBWSxHQUFHLENBQUEsTUFBQSxRQUFRLENBQUMsYUFBYSxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUscUJBQXFCLENBQUMsMENBQUUsUUFBUSxLQUFJLEVBQUUsQ0FBQztRQUM5SCxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRTtZQUN4QixPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO1FBQy9CLEtBQUssQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUNsRSxJQUFJLENBQUMsRUFBRSxHQUFHLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEtBQUssRUFBRSxDQUFDO1FBQ2xELENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7SUFDcEMsQ0FBQzs7O1lBdHFCRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGNBQWM7Z0JBQ3hCLDhpQkFBNEM7Z0JBRTVDLFNBQVMsRUFBRTtvQkFDVCw4QkFBOEI7b0JBQzlCO3dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7d0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsb0JBQW9CLENBQUM7d0JBQ25ELEtBQUssRUFBRSxJQUFJO3FCQUNaO29CQUNEO3dCQUNFLE9BQU8sRUFBRSxhQUFhO3dCQUN0QixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLG9CQUFvQixDQUFDO3dCQUNuRCxLQUFLLEVBQUUsSUFBSTtxQkFDWjtpQkFDRjtnQkFDRCxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtnQkFDckMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07O2FBQ2hEOzs7WUFqRFEsU0FBUztZQUVULHVCQUF1QjtZQWtCdkIsd0JBQXdCO1lBT3hCLHNCQUFzQjtZQWpCdEIsOEJBQThCO1lBWjJHLFNBQVM7WUFBL0YsVUFBVTs7O3dCQXFEbkUsS0FBSzswQkFDTCxLQUFLO2dDQUNMLEtBQUs7eUJBQ0wsS0FBSyxTQUFDLFVBQVU7dUJBQ2hCLEtBQUssU0FBQyxVQUFVO3VCQUNoQixLQUFLO2lDQUNMLE1BQU07d0JBY04sWUFBWSxTQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBmb3J3YXJkUmVmLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgUXVlcnlMaXN0LCBSZW5kZXJlcjIsIFZpZXdDaGlsZCwgVmlld0NoaWxkcmVuLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgTkdfVkFMSURBVE9SUywgTkdfVkFMVUVfQUNDRVNTT1IsIFZhbGlkYXRvciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nLCBNYXREaWFsb2dDb25maWcgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZUxpYnJhcnlTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvdHJhbnNsYXRpb24tcmVnaXN0cnkuc2VydmljZSc7XHJcbmltcG9ydCB7IFFtc1VwbG9hZEFkYXB0ZXIsIFFtc1VwbG9hZEFkYXB0ZXJDb25maWcgfSBmcm9tICcuL2NvbW1vbi9jbGFzc2VzL3Ftc1VwbG9hZEFkYXB0ZXInO1xyXG5pbXBvcnQgeyBDS0VkaXRvckV2ZW50Q29uc3QgfSBmcm9tICcuL2NvbW1vbi9jb25zdGFudHMvY2tlZGl0b3JFdmVudC5jb25zdGFudCc7XHJcbmltcG9ydCBDS0VkaXRvckNvbW1vbkZ1bmN0aW9ucyBmcm9tICcuL2NvbW1vbi9mdW5jdGlvbnMvY29tbW9uLmZ1bmN0aW9uJztcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JEYXRhIH0gZnJvbSAnLi9jb21tb24vbW9kZWxzL3Ftcy1ja2VkaXRvci1kYXRhLm1vZGVsJztcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JQbHVnaW4gfSBmcm9tICcuL2NvbW1vbi9tb2RlbHMvcW1zLWNrZWRpdG9yLXBsdWdpbi5tb2RlbCc7XHJcbmltcG9ydCBRTVNDS0VkaXRvckxpbmsgZnJvbSAnLi9jb21tb24vbW9kZWxzL3Ftcy1ja2VkaXRvci11cmwubW9kZWwnO1xyXG5pbXBvcnQgeyBRTVNDS0VkaXRvckJwbW5Db21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcW1zLWNrZWRpdG9yLWJwbW4vcW1zLWNrZWRpdG9yLWJwbW4uY29tcG9uZW50JztcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JGdWxsc2NyZWVuQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3Ftcy1ja2VkaXRvci1mdWxsc2NyZWVuL3Ftcy1ja2VkaXRvci1mdWxsc2NyZWVuLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFFNU0NLRWRpdG9ySW1hZ2VNYXBDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcW1zLWNrZWRpdG9yLWltYWdlbWFwL3Ftcy1ja2VkaXRvci1pbWFnZW1hcC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBRTVNDS0VkaXRvckxpbmtDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcW1zLWNrZWRpdG9yLWxpbmsvcW1zLWNrZWRpdG9yLWxpbmsuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JMb2FkVGVtcGxhdGVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcW1zLWNrZWRpdG9yLWxvYWQtdGVtcGxhdGUvcW1zLWNrZWRpdG9yLWxvYWQtdGVtcGxhdGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JUZW1wbGF0ZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9xbXMtY2tlZGl0b3ItdGVtcGxhdGUvcW1zLWNrZWRpdG9yLXRlbXBsYXRlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFFNU0NLRWRpdG9yVG9vbHRpcENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9xbXMtY2tlZGl0b3ItdG9vbHRpcC9xbXMtY2tlZGl0b3ItdG9vbHRpcC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBRTVNDS0VkaXRvckltYWdlTWFwIH0gZnJvbSAnLi9tb2RlbHMvcW1zLWNrZWRpdG9yLWltYWdlbWFwLm1vZGVsJztcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JUZW1wbGF0ZSB9IGZyb20gJy4vbW9kZWxzL3Ftcy1ja2VkaXRvci10ZW1wbGF0ZS5tb2RlbCc7XHJcbmltcG9ydCB7IFFNU0NLRWRpdG9yVG9vbHRpcCB9IGZyb20gJy4vbW9kZWxzL3Ftcy1ja2VkaXRvci10b29sdGlwLm1vZGVsJztcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi9xbXMtY2tlZGl0b3ItYmFzZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBRTVNDS0VkaXRvckdsb2JhbFNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3Ftcy1ja2VkaXRvci1nbG9iYWwuc2VydmljZSc7XHJcbmltcG9ydCB7IFFNU0NLRWRpdG9yQWJvdXRDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcW1zLWNrZWRpdG9yLWFib3V0L3Ftcy1ja2VkaXRvci1hYm91dC5jb21wb25lbnQnO1xyXG4vL2ltcG9ydCB7IENLRWRpdG9yNSB9IGZyb20gJ0Bja2VkaXRvci9ja2VkaXRvcjUtYW5ndWxhci9ja2VkaXRvcic7XHJcbmltcG9ydCB7IFFNU0NLRWRpdG9yQnBtbkRhdGEgfSBmcm9tICcuL21vZGVscy9xbXMtY2tlZGl0b3ItYnBtbi1kYXRhLm1vZGVsJztcclxuaW1wb3J0IHsgRGF0YVR5cGUgfSBmcm9tICcuLi9jb21wb25lbnRzL3JlbGF0ZWQvY29tbW9uL2RhdGEtdHlwZS5lbnVtJztcclxuaW1wb3J0IHsgUG9wdXBEYXRhIH0gZnJvbSAnLi4vY29tcG9uZW50cy9yZWxhdGVkL21vZGVsL3BvcHVwLWRhdGEubW9kZWwnO1xyXG5pbXBvcnQgeyBSZWxhdGVkUG9wdXBDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnRzL3JlbGF0ZWQvcG9wdXAvcmVsYXRlZC1wb3B1cC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBRTVNDS0VkaXRvclRyZWVTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9xbXMtY2tlZGl0b3ItdHJlZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JGbG93Y2hhcnRDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcW1zLWNrZWRpdG9yLWZsb3djaGFydC9xbXMtY2tlZGl0b3ItZmxvd2NoYXJ0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFFtc0NrZWRpdG9yTGlua1NpbXBsZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9xbXMtY2tlZGl0b3ItbGluay1zaW1wbGUvcW1zLWNrZWRpdG9yLWxpbmstc2ltcGxlLmNvbXBvbmVudCc7XHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAncW1zLWNrZWRpdG9yJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcW1zLWNrZWRpdG9yLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9xbXMtY2tlZGl0b3IuY29tcG9uZW50LnNjc3MnXSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIFFNU0NLRWRpdG9yRnVsbHNjcmVlbkNvbXBvbmVudCxcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFFNU0NLRWRpdG9yQ29tcG9uZW50KSxcclxuICAgICAgbXVsdGk6IHRydWVcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFFNU0NLRWRpdG9yQ29tcG9uZW50KSxcclxuICAgICAgbXVsdGk6IHRydWVcclxuICAgIH1cclxuICBdLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxufSlcclxuZXhwb3J0IGNsYXNzIFFNU0NLRWRpdG9yQ29tcG9uZW50IGV4dGVuZHMgUU1TQ0tFZGl0b3JCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBWYWxpZGF0b3Ige1xyXG4gIEBJbnB1dCgpIHFtc2NrRGF0YTogUU1TQ0tFZGl0b3JEYXRhO1xyXG4gIEBJbnB1dCgpIHFtc2NrUGx1Z2luOiBRTVNDS0VkaXRvclBsdWdpbjtcclxuICBASW5wdXQoKSBxbXNja0NvbnRlbnRJbnB1dDogc3RyaW5nO1xyXG4gIEBJbnB1dCgnZGlzYWJsZWQnKSBpc0Rpc2FibGVkOiBib29sZWFuO1xyXG4gIEBJbnB1dCgncmVxdWlyZWQnKSByZXF1aXJlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGVkaXRvcklkID0gJ3Ftc2NrZWRpdG9yJztcclxuICBAT3V0cHV0KCkgcW1zY2tDb250ZW50T3V0cHV0OiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgTEFORzogYW55O1xyXG4gIGNrRWRpdG9yOiBhbnk7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIGNrZWRpdG9yQ29uZmlnOiBhbnk7XHJcbiAgY2tFZGl0b3JFdmVudENvbnN0ID0gQ0tFZGl0b3JFdmVudENvbnN0O1xyXG4gIGNvdW50V29yZDogbnVtYmVyO1xyXG4gIGNvdW50Q2hhcjogbnVtYmVyO1xyXG4gIGVkaXRvckluc3RhbmNlOiBhbnk7XHJcbiAgY2tUYWduYW1lOiBzdHJpbmc7XHJcbiAgdG9vbGJhckl0ZW1QcmVmaXhJZDogc3RyaW5nO1xyXG4gIGlzVG9vbGJhckl0ZW1zSWRTZXQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93Om1lc3NhZ2UnLCBbJyRldmVudCddKVxyXG4gIG9uTWVzc2FnZShldmVudCkge1xyXG4gICAgc3dpdGNoIChldmVudC5kYXRhLmV2ZW50TmFtZSkge1xyXG4gICAgICBjYXNlIHRoaXMuY2tFZGl0b3JFdmVudENvbnN0LlFNU0NLX1RFTVBMQVRFX1BMVUdJTl9NU0c6XHJcbiAgICAgICAgdGhpcy50ZW1wbGF0ZUV2ZW50SGFuZGxpbmcoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSB0aGlzLmNrRWRpdG9yRXZlbnRDb25zdC5RTVNDS19MT0FEX1RFTVBMQVRFX1BMVUdJTl9NU0c6XHJcbiAgICAgICAgdGhpcy5sb2FkVGVtcGxhdGVFdmVudEhhbmRsaW5nKCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgdGhpcy5ja0VkaXRvckV2ZW50Q29uc3QuUU1TQ0tfTElOS19QTFVHSU5fTVNHOlxyXG4gICAgICAgIHRoaXMubGlua0V2ZW50SGFuZGxpbmcoZXZlbnQuZGF0YS52YWx1ZSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgdGhpcy5ja0VkaXRvckV2ZW50Q29uc3QuUU1TQ0tfVE9PTFRJUF9QTFVHSU5fTVNHOlxyXG4gICAgICAgIHRoaXMudG9vbHRpcEV2ZW50SGFuZGxpbmcoZXZlbnQuZGF0YS52YWx1ZSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgdGhpcy5ja0VkaXRvckV2ZW50Q29uc3QuUU1TQ0tfSU1BR0VNQVBfUExVR0lOX01TRzpcclxuICAgICAgICB0aGlzLmltYWdlTWFwRXZlbnRIYW5kbGluZyhldmVudC5kYXRhLnZhbHVlKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSB0aGlzLmNrRWRpdG9yRXZlbnRDb25zdC5RTVNDS19CUE1OX1BMVUdJTl9NU0c6XHJcbiAgICAgICAgdGhpcy5icG1uRXZlbnRIYW5kbGluZyhldmVudC5kYXRhLnZhbHVlKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSB0aGlzLmNrRWRpdG9yRXZlbnRDb25zdC5RTVNDS19BQk9VVF9DS0VESVRPUl9QTFVHSU5fTVNHOlxyXG4gICAgICAgIHRoaXMuYWJvdXRDS0VkaXRvckV2ZW50SGFuZGxpbmcoZXZlbnQuZGF0YS52YWx1ZSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgdGhpcy5ja0VkaXRvckV2ZW50Q29uc3QuUU1TQ0tfRkxPV0NIQVJUX1BMVUdJTl9NU0c6XHJcbiAgICAgICAgdGhpcy5mbG93Y2hhcnRFdmVudEhhbmRsaW5nKGV2ZW50LmRhdGEudmFsdWUpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIHRoaXMuY2tFZGl0b3JFdmVudENvbnN0LlFNU0NLX1RPR0dMRV9UT09MQkFSX01TRzpcclxuICAgICAgICB0aGlzLnRvZ2dsZVRvb2xiYXJFdmVudEhhbmRsaW5nKCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgdGhpcy5ja0VkaXRvckV2ZW50Q29uc3QuUU1TQ0tfQlJPV1NFX1ZJREVPX01TRzpcclxuICAgICAgICB0aGlzLmJyb3dzZVZpZGVvRXZlbnRIYW5kbGluZyhldmVudC5kYXRhLnZhbHVlKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbnN0cnVjdG9yXHJcbiAgICovXHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBkaWFsb2c6IE1hdERpYWxvZyxcclxuICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVMaWJyYXJ5U2VydmljZSxcclxuICAgIHByaXZhdGUgZ2xvYmFsU2VydmljZTogUU1TQ0tFZGl0b3JHbG9iYWxTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB0cmVlU2VydmljZTogUU1TQ0tFZGl0b3JUcmVlU2VydmljZSxcclxuICAgIHByaXZhdGUgcW1zQ0tFZGl0b3JGdWxsc2NyZWVuQ29tcG9uZW50OiBRTVNDS0VkaXRvckZ1bGxzY3JlZW5Db21wb25lbnQsXHJcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXHJcbiAgICBwcml2YXRlIGVsUmVmOiBFbGVtZW50UmVmXHJcbiAgKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gICAgdGhpcy5ja1RhZ25hbWUgPSAnZGl2JztcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy50b29sYmFySXRlbVByZWZpeElkID0gYCR7dGhpcy5lZGl0b3JJZH1fdG9vbGJhcl9pdGVtX2A7XHJcbiAgICB0aGlzLm5hbWUgPSAnQ0tFZGl0b3IgY3VzdG9tIGJ1aWxkJztcclxuICAgIHRoaXMuY2tFZGl0b3IgPSB0aGlzLnFtc2NrUGx1Z2luLnBsdWdpbk9iamVjdDtcclxuICAgIHRoaXMudHJhbnNsYXRlLmdldExhbmd1YWdlU3ViamVjdCQucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3ViY3JpYmUpKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICBpZiAocmVzKSB7XHJcbiAgICAgICAgdGhpcy5MQU5HID0gdGhpcy50cmFuc2xhdGUuZ2V0T2JqZWN0TGFuZyhyZXMpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIGxldCB0b29sYmFySXRlbXMgPSB0aGlzLnFtc2NrUGx1Z2luLml0ZW1Ub29sYmFyO1xyXG4gICAgaWYgKHRoaXMuaXNFbmFibGVkVG9nZ2xlVG9vbGJhcigpICYmIHRoaXMucW1zY2tEYXRhLnRvZ2dsZWRUb29sYmFySXRlbXMpIHtcclxuICAgICAgdG9vbGJhckl0ZW1zICs9ICcsJyArIHRoaXMucW1zY2tEYXRhLnRvZ2dsZWRUb29sYmFySXRlbXM7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5ja2VkaXRvckNvbmZpZyA9IENLRWRpdG9yQ29tbW9uRnVuY3Rpb25zLmdldENLRWRpdG9yQ29uZmlndXJhdGlvbih0b29sYmFySXRlbXMpO1xyXG4gICAgdGhpcy5nbG9iYWxTZXJ2aWNlLnNldEFwaVVybCh0aGlzLnFtc2NrRGF0YS5hcGlVcmwpO1xyXG4gICAgaWYgKHRoaXMuaXNFbmFibGVkTWF0aHR5cGVDb25maWcoKSkge1xyXG4gICAgICB0aGlzLmFkZE1hdGhUeXBlQ29uZmlnKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuaXNFbmFibGVkVGltZXN0YW1wQ29uZmlnKCkpIHtcclxuICAgICAgdGhpcy5hZGRUaW1lc3RhbXBDb25maWcoKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5pc0VuYWJsZWRXUHJvb2ZyZWFkZXIoKSkge1xyXG4gICAgICB0aGlzLmFkZFdQcm9vZnJlYWRlckNvbmZpZygpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuaXNFbmFibGVkVE9DVG9vbGJhcigpKSB7XHJcbiAgICAgIHRoaXMuYWRkVG9nZ2xlVE9DQ29uZmlnKCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5pc0VuYWJsZWRGdWxsU2NyZWVuQ29uZmlnKCkpIHtcclxuICAgICAgdGhpcy5hZGRGdWxsU2NyZWVuQ29uZmlnKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIGlmICh0aGlzLmVkaXRvckluc3RhbmNlKSB7XHJcbiAgICAgIHRoaXMuZWRpdG9ySW5zdGFuY2UuZGVzdHJveSgpO1xyXG4gICAgfVxyXG4gICAgJChkb2N1bWVudCkub2ZmKCk7XHJcbiAgfVxyXG5cclxuICBvbkNoYW5nZTogKGNvbnRlbnQ6IGFueSkgPT4gdm9pZDtcclxuICBvblRvdWNoZWQ6ICgpID0+IHZvaWQ7XHJcblxyXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xyXG4gIH1cclxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgaWYgKHRoaXMuaXNEaXNhYmxlZCkge1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudCwgJ2NrLWRpc2FibGVkJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpc0VuYWJsZWRXUHJvb2ZyZWFkZXIoKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBwYXR0ZXJuID0gLyh3cHJvb2ZyZWFkZXIpL2dtaTtcclxuICAgIHJldHVybiAhIXRoaXMucW1zY2tEYXRhLndwcm9vZnJlYWRlclxyXG4gICAgICAmJiAhIXRoaXMucW1zY2tEYXRhLndwcm9vZnJlYWRlci5zcmNVcmxcclxuICAgICAgJiYgISF0aGlzLnFtc2NrUGx1Z2luLml0ZW1Ub29sYmFyXHJcbiAgICAgICYmIHRoaXMucW1zY2tQbHVnaW4uaXRlbVRvb2xiYXIuc2VhcmNoKHBhdHRlcm4pID4gLTE7XHJcbiAgfVxyXG5cclxuICBhZGRXUHJvb2ZyZWFkZXJDb25maWcoKSB7XHJcbiAgICBjb25zdCB3cHJvb2ZyZWFkZXJDb25maWcgPSB7XHJcbiAgICAgIHdwcm9vZnJlYWRlcjoge1xyXG4gICAgICAgIC4uLnRoaXMucW1zY2tEYXRhLndwcm9vZnJlYWRlclxyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgaWYgKCF0aGlzLnFtc2NrRGF0YS53cHJvb2ZyZWFkZXIuc2VydmljZUlkIHx8IHRoaXMucW1zY2tEYXRhLndwcm9vZnJlYWRlci5zZXJ2aWNlSWQubGVuZ3RoID09IDApIHtcclxuICAgICAgLy9GYWxsYmFjayB2YWx1ZSBvZiBzZXJ2aWNlSWQgcHJvcGVydHkgdG8gZGVtbyBzZXJ2aWNlSWRcclxuICAgICAgdGhpcy5xbXNja0RhdGEud3Byb29mcmVhZGVyLnNlcnZpY2VJZCA9ICcxOktwa3ZRMi02S05Vai1MMVczdTItQzlqMEsxLVp2MnRZMS1DZkRPeC1XZkdSZzItcVh0Y2ktWXl5RTM0LWowOUg0Mi1iMGFDdDMtZDlhJztcclxuICAgIH1cclxuICAgIHRoaXMuY2tFZGl0b3IuZGVmYXVsdENvbmZpZyA9IE9iamVjdC5hc3NpZ24odGhpcy5ja0VkaXRvci5kZWZhdWx0Q29uZmlnIHx8IHt9LCB3cHJvb2ZyZWFkZXJDb25maWcpO1xyXG4gIH1cclxuXHJcbiAgaXNFbmFibGVkVG9nZ2xlVG9vbGJhcigpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IHBhdHRlcm4gPSAvKHRvZ2dsZVRvb2xiYXIpL2dtaTtcclxuICAgIHJldHVybiAhIXRoaXMucW1zY2tEYXRhLnRvZ2dsZWRUb29sYmFySXRlbXNcclxuICAgICAgJiYgISF0aGlzLnFtc2NrUGx1Z2luLml0ZW1Ub29sYmFyXHJcbiAgICAgICYmIHRoaXMucW1zY2tQbHVnaW4uaXRlbVRvb2xiYXIuc2VhcmNoKHBhdHRlcm4pID4gLTE7XHJcbiAgfVxyXG5cclxuICBhZGRUb2dnbGVUb29sYmFyQ29uZmlnKCkge1xyXG4gICAgY29uc3QgaXRlbXMgPSB0aGlzLnFtc2NrRGF0YS50b2dnbGVkVG9vbGJhckl0ZW1zLnNwbGl0KCcsJyk7XHJcbiAgICBjb25zdCB0b2dnbGVUb29sYmFyQ29uZmlnID0ge1xyXG4gICAgICB0b2dnbGVUb29sYmFyQ29uZmlnOiB7XHJcbiAgICAgICAgdG9vbGJhcjogaXRlbXNcclxuICAgICAgfVxyXG4gICAgfTtcclxuICAgIHRoaXMuY2tFZGl0b3IuZGVmYXVsdENvbmZpZyA9IE9iamVjdC5hc3NpZ24odGhpcy5ja0VkaXRvci5kZWZhdWx0Q29uZmlnIHx8IHt9LCB0b2dnbGVUb29sYmFyQ29uZmlnKTtcclxuICB9XHJcblxyXG4gIGlzRW5hYmxlZEZ1bGxTY3JlZW5Db25maWcoKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBwYXR0ZXJuID0gLyhxbXNGdWxsc2NyZWVuKS9nbWk7XHJcbiAgICByZXR1cm4gISF0aGlzLnFtc2NrUGx1Z2luLml0ZW1Ub29sYmFyXHJcbiAgICAgICYmICEhdGhpcy5xbXNja0RhdGEuZnVsbFNjcmVlbkNsYXNzXHJcbiAgICAgICYmIHRoaXMucW1zY2tQbHVnaW4uaXRlbVRvb2xiYXIuc2VhcmNoKHBhdHRlcm4pID4gLTE7XHJcbiAgfVxyXG5cclxuICBhZGRGdWxsU2NyZWVuQ29uZmlnKCkge1xyXG4gICAgY29uc3QgZnVsbFNjcmVlbkNvbmZpZyA9IHtcclxuICAgICAgZnVsbFNjcmVlbkNvbmZpZzoge1xyXG4gICAgICAgIGNsYXNzOiB0aGlzLnFtc2NrRGF0YS5mdWxsU2NyZWVuQ2xhc3NcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5ja0VkaXRvci5kZWZhdWx0Q29uZmlnID0gT2JqZWN0LmFzc2lnbih0aGlzLmNrRWRpdG9yLmRlZmF1bHRDb25maWcgfHwge30sIGZ1bGxTY3JlZW5Db25maWcpO1xyXG4gIH1cclxuXHJcbiAgaXNFbmFibGVkVE9DVG9vbGJhcigpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IHBhdHRlcm4gPSAvKHRhYmxlT2ZDb250ZW50cykvZ21pO1xyXG4gICAgcmV0dXJuICEhdGhpcy5xbXNja0RhdGEudGFibGVPZkNvbnRlbnRIZWFkaW5nc1xyXG4gICAgICAmJiAhIXRoaXMucW1zY2tQbHVnaW4uaXRlbVRvb2xiYXJcclxuICAgICAgJiYgdGhpcy5xbXNja1BsdWdpbi5pdGVtVG9vbGJhci5zZWFyY2gocGF0dGVybikgPiAtMTtcclxuICB9XHJcblxyXG4gIGFkZFRvZ2dsZVRPQ0NvbmZpZygpIHtcclxuICAgIGNvbnN0IGl0ZW1zID0gdGhpcy5xbXNja0RhdGEudGFibGVPZkNvbnRlbnRIZWFkaW5ncy5zcGxpdCgnLCcpO1xyXG4gICAgY29uc3QgdGFibGVPZkNvbnRlbnRzID0ge1xyXG4gICAgICB0YWJsZU9mQ29udGVudHM6IHtcclxuICAgICAgICBzdXBwb3J0ZWRIZWFkaW5nczogaXRlbXNcclxuICAgICAgfVxyXG4gICAgfTtcclxuICAgIHRoaXMuY2tFZGl0b3IuZGVmYXVsdENvbmZpZyA9IE9iamVjdC5hc3NpZ24odGhpcy5ja0VkaXRvci5kZWZhdWx0Q29uZmlnIHx8IHt9LCB0YWJsZU9mQ29udGVudHMpO1xyXG4gIH1cclxuXHJcbiAgaXNFbmFibGVkVGltZXN0YW1wQ29uZmlnKCk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgcGF0dGVybiA9IC8odGltZXN0YW1wKS9nbWk7XHJcbiAgICByZXR1cm4gISF0aGlzLnFtc2NrRGF0YS50aW1lc3RhbXBGb3JtYXRcclxuICAgICAgJiYgISF0aGlzLnFtc2NrUGx1Z2luLml0ZW1Ub29sYmFyXHJcbiAgICAgICYmIHRoaXMucW1zY2tQbHVnaW4uaXRlbVRvb2xiYXIuc2VhcmNoKHBhdHRlcm4pID4gLTE7XHJcbiAgfVxyXG5cclxuICBhZGRUaW1lc3RhbXBDb25maWcoKSB7XHJcbiAgICBjb25zdCB0aW1lc3RhbXBDb25maWcgPSB7XHJcbiAgICAgIHRpbWVzdGFtcENvbmZpZzoge1xyXG4gICAgICAgIGRhdGV0aW1lRm9ybWF0OiB0aGlzLnFtc2NrRGF0YS50aW1lc3RhbXBGb3JtYXRcclxuICAgICAgfVxyXG4gICAgfTtcclxuICAgIHRoaXMuY2tFZGl0b3IuZGVmYXVsdENvbmZpZyA9IE9iamVjdC5hc3NpZ24odGhpcy5ja0VkaXRvci5kZWZhdWx0Q29uZmlnIHx8IHt9LCB0aW1lc3RhbXBDb25maWcpO1xyXG4gIH1cclxuXHJcbiAgaXNFbmFibGVkTWF0aHR5cGVDb25maWcoKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBwYXR0ZXJuID0gLyhNYXRoVHlwZSl8KENoZW1UeXBlKS9nbWk7XHJcbiAgICByZXR1cm4gISF0aGlzLnFtc2NrRGF0YS5tYXRodHlwZVNlcnZpY2VVcmxcclxuICAgICAgJiYgISF0aGlzLnFtc2NrUGx1Z2luLml0ZW1Ub29sYmFyXHJcbiAgICAgICYmIHRoaXMucW1zY2tQbHVnaW4uaXRlbVRvb2xiYXIuc2VhcmNoKHBhdHRlcm4pID4gLTE7XHJcbiAgfVxyXG5cclxuICBhZGRNYXRoVHlwZUNvbmZpZygpIHtcclxuICAgIGNvbnN0IG1hdGhUeXBlQ29uZmlnID0ge1xyXG4gICAgICBtYXRoVHlwZVBhcmFtZXRlcnM6IHtcclxuICAgICAgICBzZXJ2aWNlUHJvdmlkZXJQcm9wZXJ0aWVzOiB7XHJcbiAgICAgICAgICBVUkk6IHRoaXMucW1zY2tEYXRhLm1hdGh0eXBlU2VydmljZVVybCxcclxuICAgICAgICAgIHNlcnZlcjogJ2FzcHgnXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgdGhpcy5ja0VkaXRvci5kZWZhdWx0Q29uZmlnID0gT2JqZWN0LmFzc2lnbih0aGlzLmNrRWRpdG9yLmRlZmF1bHRDb25maWcgfHwge30sIG1hdGhUeXBlQ29uZmlnKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkNoYW5nZWQoeyBlZGl0b3IgfSkge1xyXG4gICAgLy90aGlzLnFtc2NrQ29udGVudElucHV0ID0gZWRpdG9yLmdldERhdGEoKTtcclxuICAgIHRoaXMucW1zY2tDb250ZW50T3V0cHV0LmVtaXQodGhpcy5xbXNja0NvbnRlbnRJbnB1dCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25CbHVyKHsgZWRpdG9yIH0pIHtcclxuICAgIHRoaXMucW1zY2tDb250ZW50SW5wdXQgPSBlZGl0b3IuZ2V0RGF0YSgpO1xyXG4gICAgdGhpcy5xbXNja0NvbnRlbnRPdXRwdXQuZW1pdCh0aGlzLnFtc2NrQ29udGVudElucHV0KTtcclxuICB9XHJcblxyXG4gIHZhbGlkYXRlKGM6IEZvcm1Db250cm9sKSB7XHJcbiAgICBpZiAoIXRoaXMucmVxdWlyZWQpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gKHRoaXMucW1zY2tDb250ZW50SW5wdXQgJiYgIXRoaXMucmVxdWlyZWQpID8gbnVsbCA6IHtcclxuICAgICAgdHlwZToge1xyXG4gICAgICAgIHZhbGlkOiBmYWxzZSxcclxuICAgICAgICBhY3R1YWw6IGMudmFsdWVcclxuICAgICAgfVxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIG9uUmVhZHlcclxuICAgKi9cclxuICBwdWJsaWMgb25SZWFkeShlZGl0b3IpIHtcclxuICAgIHRoaXMuZWRpdG9ySW5zdGFuY2UgPSBlZGl0b3I7XHJcbiAgICBpZiAodGhpcy5xbXNja0NvbnRlbnRJbnB1dCkge1xyXG4gICAgICBlZGl0b3Iuc2V0RGF0YSh0aGlzLnFtc2NrQ29udGVudElucHV0KTtcclxuICAgIH1cclxuICAgIHRoaXMuaW5pdEVkaXRvcihlZGl0b3IpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0RWRpdG9yKGVkaXRvcikge1xyXG4gICAgY29uc3QgaW1hZ2VVcGxvYWRUeXBlcyA9IGVkaXRvci5jb25maWcuZ2V0KCdpbWFnZS51cGxvYWQudHlwZXMnKTtcclxuICAgIGNvbnN0IG1heEZpbGVTaXplTUIgPSB0aGlzLnFtc2NrRGF0YS5tYXhGaWxlU2l6ZU1CO1xyXG4gICAgY29uc3QgY29uZmlnOiBRbXNVcGxvYWRBZGFwdGVyQ29uZmlnID0geyBhcGlVcmw6IHRoaXMucW1zY2tEYXRhLmFwaVVybCwgTEFORzogdGhpcy5MQU5HLCBpbWFnZVVwbG9hZFR5cGVzLCBtYXhGaWxlU2l6ZU1CIH07XHJcbiAgICBlZGl0b3IucGx1Z2lucy5nZXQoXCJGaWxlUmVwb3NpdG9yeVwiKS5jcmVhdGVVcGxvYWRBZGFwdGVyID0gKGxvYWRlcikgPT4ge1xyXG4gICAgICByZXR1cm4gbmV3IFFtc1VwbG9hZEFkYXB0ZXIobG9hZGVyLCBjb25maWcpO1xyXG4gICAgfTtcclxuXHJcbiAgICBlZGl0b3IudWlcclxuICAgICAgLmdldEVkaXRhYmxlRWxlbWVudCgpXHJcbiAgICAgIC5wYXJlbnRFbGVtZW50Lmluc2VydEJlZm9yZShlZGl0b3IudWkudmlldy50b29sYmFyLmVsZW1lbnQsIGVkaXRvci51aS5nZXRFZGl0YWJsZUVsZW1lbnQoKSk7XHJcblxyXG4gICAgLy8gQXBwZWQgV29yZGNvdW50IHRvIENLZWRpdG9yXHJcbiAgICBlZGl0b3IucGx1Z2lucy5nZXQoJ1dvcmRDb3VudCcpLm9uKCd1cGRhdGUnLCAoZXZ0LCBzdGF0cykgPT4ge1xyXG4gICAgICAvLyBQcmludHMgdGhlIGN1cnJlbnQgY29udGVudCBzdGF0aXN0aWNzLlxyXG4gICAgICBjb25zdCB3b3Jkc0JveCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy53b3JkY291bnQtY29udGVudCcpO1xyXG4gICAgICBpZiAoISF3b3Jkc0JveCkge1xyXG4gICAgICAgIHdvcmRzQm94LnRleHRDb250ZW50ID0gYCR7dGhpcy5MQU5HLlFNU0NLRURJVE9SLldPUkRTfTogJHtzdGF0cy53b3Jkc30gLyAke3RoaXMuTEFORy5RTVNDS0VESVRPUi5DSEFSQUNURVJTfTogJHtzdGF0cy5jaGFyYWN0ZXJzfWA7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuX3NldEVkaXRvckluc3RhbmNlT2JzZXJ2ZXIodGhpcy5lZGl0b3JJZCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBZGQgdGVtcGxhdGUgLSBMb2FkIHRlbXBsYXRlXHJcbiAgICovXHJcbiAgcHVibGljIHRlbXBsYXRlRXZlbnRIYW5kbGluZygpIHtcclxuICAgIGNvbnN0IGRhdGE6IFFNU0NLRWRpdG9yVGVtcGxhdGUgPSBuZXcgUU1TQ0tFZGl0b3JUZW1wbGF0ZSgpO1xyXG4gICAgZGF0YS5pZCA9IDA7XHJcbiAgICBkYXRhLmNvbnRlbnQgPSB0aGlzLnFtc2NrQ29udGVudElucHV0O1xyXG4gICAgZGF0YS5lZGl0ID0gZmFsc2U7XHJcbiAgICBjb25zdCBkaWFsb2dUZW1wbGF0ZSA9IHRoaXMuZGlhbG9nLm9wZW4oUU1TQ0tFZGl0b3JUZW1wbGF0ZUNvbXBvbmVudCwge1xyXG4gICAgICB3aWR0aDogJzY1MHB4JyxcclxuICAgICAgaGVpZ2h0OiAnNTIwcHgnLFxyXG4gICAgICBkYXRhLFxyXG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWVcclxuICAgIH0pO1xyXG4gICAgZGlhbG9nVGVtcGxhdGVcclxuICAgICAgLmFmdGVyQ2xvc2VkKClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSlcclxuICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgLy8gVERPXHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFkZCB0ZW1wbGF0ZSAtIExvYWQgdGVtcGxhdGVcclxuICAgKi9cclxuICBwdWJsaWMgbG9hZFRlbXBsYXRlRXZlbnRIYW5kbGluZygpIHtcclxuICAgIGNvbnN0IGRpYWxvZ1RlbXBsYXRlID0gdGhpcy5kaWFsb2cub3BlbihRTVNDS0VkaXRvckxvYWRUZW1wbGF0ZUNvbXBvbmVudCwge1xyXG4gICAgICB3aWR0aDogJzY1MHB4JyxcclxuICAgICAgaGVpZ2h0OiAnNzAwcHgnLFxyXG4gICAgICBkYXRhOiB0aGlzLnFtc2NrQ29udGVudElucHV0LFxyXG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWVcclxuICAgIH0pO1xyXG4gICAgZGlhbG9nVGVtcGxhdGVcclxuICAgICAgLmFmdGVyQ2xvc2VkKClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSlcclxuICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgY29uc3QgZXZ0ID0gbmV3IEN1c3RvbUV2ZW50KHRoaXMuY2tFZGl0b3JFdmVudENvbnN0LlFNU0NLX0xPQURfVEVNUExBVEVfUExVR0lOX1JFU1AsIHtcclxuICAgICAgICAgICAgZGV0YWlsOiByZXN1bHRcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgd2luZG93LmRpc3BhdGNoRXZlbnQoZXZ0KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQW5jaG9yIC0gTGluayAtIEltYWdlIG1hcHBpbmdcclxuICAgKi9cclxuICBwdWJsaWMgbGlua0V2ZW50SGFuZGxpbmcobGluaykge1xyXG4gICAgbGV0IGRhdGEgPSBuZXcgUU1TQ0tFZGl0b3JMaW5rKCk7XHJcbiAgICBkYXRhID0gbGluaztcclxuICAgIGRhdGEuZWRpdG9yQ29udGVudCA9IHRoaXMucW1zY2tDb250ZW50SW5wdXQ7XHJcbiAgICBkYXRhLm1vZHVsZSA9IHRoaXMucW1zY2tEYXRhLm1vZHVsZTtcclxuICAgIGRhdGEuZW50aXR5SWQgPSB0aGlzLnFtc2NrRGF0YS5lbnRpdHlJZDtcclxuICAgIGxldCBkaWFsb2dUZW1wbGF0ZVxyXG4gICAgaWYgKCF0aGlzLnFtc2NrUGx1Z2luLnNpbXBsZU1vZGUpIHtcclxuICAgICAgZGlhbG9nVGVtcGxhdGUgPSB0aGlzLmRpYWxvZy5vcGVuKFFNU0NLRWRpdG9yTGlua0NvbXBvbmVudCwge1xyXG4gICAgICAgIHdpZHRoOiAnNjUwcHgnLFxyXG4gICAgICAgIGhlaWdodDogJzY2MHB4JyxcclxuICAgICAgICBkYXRhLFxyXG4gICAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZVxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGRpYWxvZ1RlbXBsYXRlID0gdGhpcy5kaWFsb2cub3BlbihRbXNDa2VkaXRvckxpbmtTaW1wbGVDb21wb25lbnQsIHtcclxuICAgICAgICB3aWR0aDogJzY1MHB4JyxcclxuICAgICAgICBoZWlnaHQ6ICcyMDBweCcsXHJcbiAgICAgICAgZGF0YSxcclxuICAgICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsXHJcbiAgICAgICAgYXV0b0ZvY3VzOiBmYWxzZSxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBkaWFsb2dUZW1wbGF0ZVxyXG4gICAgICAuYWZ0ZXJDbG9zZWQoKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3ViY3JpYmUpKVxyXG4gICAgICAuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgICBjb25zdCBldnQgPSBuZXcgQ3VzdG9tRXZlbnQodGhpcy5ja0VkaXRvckV2ZW50Q29uc3QuUU1TQ0tfTElOS19QTFVHSU5fUkVTUCwge1xyXG4gICAgICAgICAgICBkZXRhaWw6IHJlc3VsdFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChldnQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUb29sdGlwIG1hcHBpbmdcclxuICAgKi9cclxuICBwdWJsaWMgdG9vbHRpcEV2ZW50SGFuZGxpbmcodmFsdWUpIHtcclxuICAgIGxldCBkYXRhID0gbmV3IFFNU0NLRWRpdG9yVG9vbHRpcCgpO1xyXG4gICAgZGF0YS50ZXh0ID0gdmFsdWUudGV4dDtcclxuICAgIGRhdGEuY29udGVudCA9IHZhbHVlLmNvbnRlbnQ7XHJcbiAgICBkYXRhLmNrRWRpdG9yID0gdGhpcy5xbXNja1BsdWdpbi5wbHVnaW5PYmplY3Q7XHJcblxyXG4gICAgY29uc3QgZGlhbG9nVGVtcGxhdGUgPSB0aGlzLmRpYWxvZy5vcGVuKFFNU0NLRWRpdG9yVG9vbHRpcENvbXBvbmVudCwge1xyXG4gICAgICB3aWR0aDogJzY1MHB4JyxcclxuICAgICAgaGVpZ2h0OiAnNTU1cHgnLFxyXG4gICAgICBkYXRhLFxyXG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWVcclxuICAgIH0pO1xyXG4gICAgZGlhbG9nVGVtcGxhdGVcclxuICAgICAgLmFmdGVyQ2xvc2VkKClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSlcclxuICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgY29uc3QgZXZ0ID0gbmV3IEN1c3RvbUV2ZW50KHRoaXMuY2tFZGl0b3JFdmVudENvbnN0LlFNU0NLX1RPT0xUSVBfUExVR0lOX1JFU1AsIHtcclxuICAgICAgICAgICAgZGV0YWlsOiByZXN1bHRcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgd2luZG93LmRpc3BhdGNoRXZlbnQoZXZ0KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAqIEltYWdlTWFwIG1hcHBpbmdcclxuICovXHJcbiAgcHVibGljIGltYWdlTWFwRXZlbnRIYW5kbGluZyh2YWx1ZSkge1xyXG4gICAgbGV0IGRhdGEgPSBuZXcgUU1TQ0tFZGl0b3JJbWFnZU1hcCgpO1xyXG4gICAgZGF0YS5uYW1lID0gdmFsdWUubmFtZTtcclxuICAgIGRhdGEuYXJlYXMgPSB2YWx1ZS5hcmVhcztcclxuICAgIGRhdGEuaW1hZ2VVcmwgPSB2YWx1ZS5pbWFnZVVybDtcclxuICAgIGRhdGEuaW1hZ2VXaWR0aCA9IHZhbHVlLmltYWdlV2lkdGg7XHJcbiAgICBkYXRhLmltYWdlSGVpZ2h0ID0gdmFsdWUuaW1hZ2VIZWlnaHQ7XHJcbiAgICBkYXRhLm1vZHVsZSA9IHRoaXMucW1zY2tEYXRhLm1vZHVsZTtcclxuICAgIGRhdGEuZW50aXR5SWQgPSB0aGlzLnFtc2NrRGF0YS5lbnRpdHlJZDtcclxuICAgIGRhdGEuZWRpdG9yQ29udGVudCA9IHRoaXMucW1zY2tDb250ZW50SW5wdXQ7XHJcbiAgICBkYXRhLmxpbmtKYXZhU2NyaXB0TGlua3NBbGxvd2VkID0gdGhpcy5xbXNja0RhdGEubGlua0phdmFTY3JpcHRMaW5rc0FsbG93ZWQ7XHJcbiAgICBjb25zdCBkaWFsb2dUZW1wbGF0ZSA9IHRoaXMuZGlhbG9nLm9wZW4oUU1TQ0tFZGl0b3JJbWFnZU1hcENvbXBvbmVudCwge1xyXG4gICAgICBkYXRhLFxyXG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWVcclxuICAgIH0pO1xyXG4gICAgZGlhbG9nVGVtcGxhdGVcclxuICAgICAgLmFmdGVyQ2xvc2VkKClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSlcclxuICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgY29uc3QgZXZ0ID0gbmV3IEN1c3RvbUV2ZW50KHRoaXMuY2tFZGl0b3JFdmVudENvbnN0LlFNU0NLX0lNQUdFTUFQX1BMVUdJTl9SRVNQLCB7XHJcbiAgICAgICAgICAgIGRldGFpbDogcmVzdWx0XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHdpbmRvdy5kaXNwYXRjaEV2ZW50KGV2dCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qXHJcbiAgICBCdXNpbmVzcyBQcm9jZXNzIE1vZGVsIGFuZCBOb3RhdGlvblxyXG4gICovXHJcbiAgcHVibGljIGJwbW5FdmVudEhhbmRsaW5nKGlkOiBzdHJpbmcpIHtcclxuICAgIGxldCBkYXRhID0gbmV3IFFNU0NLRWRpdG9yQnBtbkRhdGEoKTtcclxuICAgIGRhdGEuaWQgPSBpZDtcclxuICAgIGRhdGEubW9kdWxlID0gdGhpcy5xbXNja0RhdGEubW9kdWxlO1xyXG4gICAgZGF0YS5lbnRpdHlJZCA9IHRoaXMucW1zY2tEYXRhLmVudGl0eUlkO1xyXG4gICAgZGF0YS5lZGl0b3JDb250ZW50ID0gdGhpcy5xbXNja0NvbnRlbnRJbnB1dDtcclxuICAgIGNvbnN0IGRpYWxvZ1RlbXBsYXRlID0gdGhpcy5kaWFsb2cub3BlbihRTVNDS0VkaXRvckJwbW5Db21wb25lbnQsIHtcclxuICAgICAgd2lkdGg6ICc4OXZ3JyxcclxuICAgICAgbWF4V2lkdGg6ICcxMDB2dycsXHJcbiAgICAgIGhlaWdodDogJzcwMHB4JyxcclxuICAgICAgbWF4SGVpZ2h0OiAnMTAwdncnLFxyXG4gICAgICBkYXRhOiBkYXRhLFxyXG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWVcclxuICAgIH0pO1xyXG4gICAgZGlhbG9nVGVtcGxhdGVcclxuICAgICAgLmFmdGVyQ2xvc2VkKClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSlcclxuICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgY29uc3QgZXZ0ID0gbmV3IEN1c3RvbUV2ZW50KHRoaXMuY2tFZGl0b3JFdmVudENvbnN0LlFNU0NLX0JQTU5fUExVR0lOX1JFU1AsIHtcclxuICAgICAgICAgICAgZGV0YWlsOiByZXN1bHRcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgd2luZG93LmRpc3BhdGNoRXZlbnQoZXZ0KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuICAvKlxyXG4gICBBYm91dCBDS0VkaXRvclxyXG4gKi9cclxuICBwdWJsaWMgYWJvdXRDS0VkaXRvckV2ZW50SGFuZGxpbmcodmVyc2lvbjogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBkaWFsb2dUZW1wbGF0ZSA9IHRoaXMuZGlhbG9nLm9wZW4oUU1TQ0tFZGl0b3JBYm91dENvbXBvbmVudCwge1xyXG4gICAgICB3aWR0aDogJzUwMHB4JyxcclxuICAgICAgZGF0YTogdmVyc2lvbixcclxuICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlXHJcbiAgICB9KTtcclxuICAgIGRpYWxvZ1RlbXBsYXRlXHJcbiAgICAgIC5hZnRlckNsb3NlZCgpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJjcmliZSkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG5cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKlxyXG4gICAgVG9vbGJhciB0b2dnbGVcclxuXHJcbiAgICBUaGlzIGlzIGEgdGVtcG9yYXJ5IHdvcmthcm91bmQuXHJcbiAgICBUcmFja2luZyBzdGF0dXMgYW5kIHByb2dyZXNzIG9mIHRoZSBpc3N1ZSBodHRwczovL2dpdGh1Yi5jb20vY2tlZGl0b3IvY2tlZGl0b3I1L2lzc3Vlcy83MzgzXHJcblxyXG4gICAgLSBSZW5kZXIgYm90aCBkZWZhdWx0IHRvb2xiYXIgYW5kIHRvZ2dsZSB0b29sYmFyIGF0IGluaXQgdGltZVxyXG4gICAgLSBTZXQgSUQgZm9yIHRvb2xiYXIgaXRlbXMgdXNpbmcgaW5kZXg6XHJcbiAgICAgICsgRnJvbSBpbmRleCAwIHRvIHRvb2xiYXJMZW5ndGggLSAxIGlzIHRoZSBkZWZhdWx0IHRvb2xiYXJcclxuICAgICAgKyBGcm9tIGluZGV4IHRvb2xiYXJMZW5ndGggb24gaXMgdGhlIHRvZ2dsZSB0b29sYmFyXHJcbiAgICAtIFNob3cvaGlkZSBkZWZhdWx0IGFuZCB0b2dnbGUgdG9vbGJhciBieSBzZXQgZGlzcGxheSBub25lIHRvIGNvcnJlc3BvbmRpbmcgdG9vbGJhciBpdGVtcyBiYXNlZCBvbiBJRFxyXG4gICovXHJcbiAgcHVibGljIHRvZ2dsZVRvb2xiYXJFdmVudEhhbmRsaW5nKCkge1xyXG4gICAgY29uc3QgcW1zY2tlZGl0b3IgPSB3aW5kb3cuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5lZGl0b3JJZCk7XHJcbiAgICBjb25zdCB0b2dnbGVBdHRyaWJ1dGUgPSAnaXNUb2dnbGVUb29sYmFyJztcclxuICAgIGNvbnN0IGNrZWRpdG9yVGFnID0gJ2NrZWRpdG9yJztcclxuXHJcbiAgICBpZiAocW1zY2tlZGl0b3IpIHtcclxuICAgICAgY29uc3QgaXNUb2dnbGVUb29sYmFyID0gcW1zY2tlZGl0b3IuZ2V0QXR0cmlidXRlKHRvZ2dsZUF0dHJpYnV0ZSkgPT0gJ3RydWUnO1xyXG4gICAgICBpZiAoaXNUb2dnbGVUb29sYmFyKSB7XHJcbiAgICAgICAgdGhpcy5fc2V0VG9vbGJhclZpZXdNb2RlKHRydWUpO1xyXG4gICAgICAgIHFtc2NrZWRpdG9yLnNldEF0dHJpYnV0ZSh0b2dnbGVBdHRyaWJ1dGUsICdmYWxzZScpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRoaXMuX3NldFRvb2xiYXJWaWV3TW9kZShmYWxzZSk7XHJcbiAgICAgICAgcW1zY2tlZGl0b3Iuc2V0QXR0cmlidXRlKHRvZ2dsZUF0dHJpYnV0ZSwgJ3RydWUnKVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9zZXRUb29sYmFyVmlld01vZGUoc2hvd1RvZ2dsZVRvb2xiYXI6IGJvb2xlYW4pIHtcclxuICAgIGNvbnN0IHRvb2xiYXJMZW5ndGggPSB0aGlzLnFtc2NrUGx1Z2luLml0ZW1Ub29sYmFyPy5zcGxpdCgnLCcpLmxlbmd0aCB8fCAwO1xyXG4gICAgLypcclxuICAgICAgSXRlbXMgaW4gdG9vbGJhciBhcmUgaW5kZXhlZDpcclxuICAgICAgLSBGcm9tIGluZGV4IDAgdG8gdG9vbGJhckxlbmd0aCAtIDEgaXMgdGhlIGRlZmF1bHQgdG9vbGJhclxyXG4gICAgICAtIEZyb20gaW5kZXggdG9vbGJhckxlbmd0aCBvbiBpcyB0aGUgdG9nZ2xlIHRvb2xiYXJcclxuICAgICovXHJcbiAgICAkKGAjJHt0aGlzLnRvb2xiYXJJdGVtUHJlZml4SWR9JHt0b29sYmFyTGVuZ3RoIC0gMX1gKT8ucHJldkFsbCgpLmVhY2goKGluZGV4LCBlbGVtZW50KSA9PiB7XHJcbiAgICAgIGVsZW1lbnQuc3R5bGUuZGlzcGxheSA9IHNob3dUb2dnbGVUb29sYmFyID8gJ25vbmUnIDogJyc7XHJcbiAgICB9KVxyXG5cclxuICAgICQoYCMke3RoaXMudG9vbGJhckl0ZW1QcmVmaXhJZH0ke3Rvb2xiYXJMZW5ndGggLSAxfWApPy5jc3MoJ2Rpc3BsYXknLCBzaG93VG9nZ2xlVG9vbGJhciA/ICdub25lJyA6ICcnKTtcclxuXHJcbiAgICAkKGAjJHt0aGlzLnRvb2xiYXJJdGVtUHJlZml4SWR9JHt0b29sYmFyTGVuZ3RoIC0gMX1gKT8ubmV4dEFsbCgpLmVhY2goKGluZGV4LCBlbGVtZW50KSA9PiB7XHJcbiAgICAgIGVsZW1lbnQuc3R5bGUuZGlzcGxheSA9IHNob3dUb2dnbGVUb29sYmFyID8gJycgOiAnbm9uZSc7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAqIEZsb3djaGFydFxyXG4gKi9cclxuICBwdWJsaWMgZmxvd2NoYXJ0RXZlbnRIYW5kbGluZyhpZDogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBkaWFsb2dUZW1wbGF0ZSA9IHRoaXMuZGlhbG9nLm9wZW4oUU1TQ0tFZGl0b3JGbG93Y2hhcnRDb21wb25lbnQsIHtcclxuICAgICAgd2lkdGg6ICc4OXZ3JyxcclxuICAgICAgbWF4V2lkdGg6ICcxMDB2dycsXHJcbiAgICAgIGhlaWdodDogJzcyNXB4JyxcclxuICAgICAgbWF4SGVpZ2h0OiAnMTAwdncnLFxyXG4gICAgICBkYXRhOiBpZCxcclxuICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlXHJcbiAgICB9KTtcclxuICAgIGRpYWxvZ1RlbXBsYXRlXHJcbiAgICAgIC5hZnRlckNsb3NlZCgpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJjcmliZSkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICAgICAgY29uc3QgZXZ0ID0gbmV3IEN1c3RvbUV2ZW50KHRoaXMuY2tFZGl0b3JFdmVudENvbnN0LlFNU0NLX0ZMT1dDSEFSVF9QTFVHSU5fUkVTUCwge1xyXG4gICAgICAgICAgICAgIGRldGFpbDogcmVzdWx0XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChldnQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBCcm93c2UgVmlkZW9cclxuICAgKi9cclxuICBwdWJsaWMgYnJvd3NlVmlkZW9FdmVudEhhbmRsaW5nKHZhbHVlKSB7XHJcbiAgICB0aGlzLnRyZWVTZXJ2aWNlXHJcbiAgICAgIC5nZXRVcGxvYWRWaWRlb0xpc3QoKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3ViY3JpYmUpKVxyXG4gICAgICAuc3Vic2NyaWJlKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHZpZGVvcyA9IHJlc3BvbnNlIHx8IFtdO1xyXG4gICAgICAgIGNvbnN0IGNvbmZpZyA9IHtcclxuICAgICAgICAgIGFsbG93U2VsZWN0Rm9sZGVyOiBmYWxzZSxcclxuICAgICAgICAgIGFyZWFPZkN1cnJlbnRQcm9jZXNzOiAnJyxcclxuICAgICAgICAgIHNob3dDaGVja0JveDogdHJ1ZSxcclxuICAgICAgICAgIGFsbG93TXVsdGlwbGVDaGVjazogdmFsdWUuYWxsb3dNdWx0aXBsZUZpbGVzLFxyXG4gICAgICAgICAgb25seUNoZWNrQm94Rm9yQ2hpbGQ6IHRydWUsXHJcbiAgICAgICAgICBtb2R1bGVJZDogRGF0YVR5cGUuZG9jdW1lbnQsXHJcbiAgICAgICAgICBvcGVuSWNvbjogJ2ZvbGRlcl9vcGVuJyxcclxuICAgICAgICAgIG9wZW5JY29uQ29sb3I6ICcjMTk1NEE5JyxcclxuICAgICAgICAgIGNsb3NlSWNvbjogJ2ZvbGRlcl9maWxsZWQnLFxyXG4gICAgICAgICAgY2xvc2VJY29uQ29sb3I6ICcjNGFjYWZmJyxcclxuICAgICAgICAgIGl0ZW1JY29uOiAnaW5zZXJ0X2RyaXZlX2ZpbGUnLFxyXG4gICAgICAgICAgaXRlbUljb25QYXRoOiAnJyxcclxuICAgICAgICAgIGl0ZW1JY29uQmFzZTY0OiAnJyxcclxuICAgICAgICAgIHNpbmdsZVNlbGVjdGVkTm9kZTogdHJ1ZSxcclxuICAgICAgICAgIGV4cGFuZEFsbDogdHJ1ZVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgY29uc3QgZGF0YTogUG9wdXBEYXRhID0gbmV3IFBvcHVwRGF0YSgpO1xyXG4gICAgICAgIGRhdGEubW9kdWxlSWQgPSAyO1xyXG4gICAgICAgIGRhdGEubW9kdWxlTmFtZSA9IHRoaXMuTEFORy5RTVNDS0VESVRPUi5TRUxFQ1RfVklERU9fRlJPTV9BUkNISVZFO1xyXG4gICAgICAgIGRhdGEudHJlZURhdGExID0gdmlkZW9zLm1hcCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgcm9vdElkOiBpdGVtLnJvb3RJZCxcclxuICAgICAgICAgICAgcGFyZW50SWQ6IGl0ZW0ucGFyZW50SWQsXHJcbiAgICAgICAgICAgIHJvb3ROYW1lOiBpdGVtLnJvb3ROYW1lLFxyXG4gICAgICAgICAgICBzdWJOYW1lOiBpdGVtLnN1Yk5hbWUsXHJcbiAgICAgICAgICAgIGNoaWxkSWQ6IGl0ZW0uY2hpbGRJZCxcclxuICAgICAgICAgICAgY2hpbGROYW1lOiBpdGVtLmNoaWxkTmFtZSxcclxuICAgICAgICAgICAgc3RhdHVzSWQ6IGl0ZW0uc3RhdHVzSWQsXHJcbiAgICAgICAgICAgIGRpc3BsYXlJZDogaXRlbS5kaXNwbGF5SWQsXHJcbiAgICAgICAgICAgIGNvbnRlbnRUeXBlOiBpdGVtLmNvbnRlbnRUeXBlLFxyXG4gICAgICAgICAgICB1cmw6IGl0ZW0udXJsXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGRhdGEudHJlZURhdGEyID0gW107XHJcbiAgICAgICAgZGF0YS50cmVlQ29uZmlnMSA9IGNvbmZpZztcclxuICAgICAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKFJlbGF0ZWRQb3B1cENvbXBvbmVudCwge1xyXG4gICAgICAgICAgbWluV2lkdGg6ICc0NTBweCcsXHJcbiAgICAgICAgICBtYXhXaWR0aDogJzgwMHB4JyxcclxuICAgICAgICAgIG1pbkhlaWdodDogJzYyMHB4JyxcclxuICAgICAgICAgIGRhdGEsXHJcbiAgICAgICAgICBwYW5lbENsYXNzOiAncW1zY2tlZGl0b3ItYnJvd3NlLXZpZGVvLXBvcHVwJ1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgIGNvbnN0IHNlYXJjaEJveCA9IHdpbmRvdy5kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcucW1zY2tlZGl0b3ItYnJvd3NlLXZpZGVvLXBvcHVwICNxbXNsaWJfcmVsYXRlZF9wb3B1cF9zZWFyY2gnKSBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgICAgIGlmIChzZWFyY2hCb3gpIHtcclxuICAgICAgICAgICAgc2VhcmNoQm94LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSwgMTAwKTtcclxuXHJcbiAgICAgICAgZGlhbG9nUmVmXHJcbiAgICAgICAgICAuYWZ0ZXJDbG9zZWQoKVxyXG4gICAgICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICAgICAgICBjb25zdCBpZHMgPSByZXN1bHQucmVkdWNlKChyZXN1bHQsIGl0ZW0pID0+IHtcclxuICAgICAgICAgICAgICAgIHJlc3VsdFtpdGVtLmlkLnRvU3RyaW5nKCldID0gaXRlbS5pZDtcclxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICAgICAgICAgICAgfSwge30pO1xyXG4gICAgICAgICAgICAgIGNvbnN0IHVybHMgPSB2aWRlb3MuZmlsdGVyKGkgPT4gaS5jaGlsZElkICYmICEhaWRzW2kuY2hpbGRJZC50b1N0cmluZygpXSkubWFwKGkgPT4gaS51cmwpO1xyXG4gICAgICAgICAgICAgIGNvbnN0IGV2dCA9IG5ldyBDdXN0b21FdmVudCh0aGlzLmNrRWRpdG9yRXZlbnRDb25zdC5RTVNDS19CUk9XU0VfVklERU9fUkVTUCwgeyBkZXRhaWw6IHsgdXJsczogdXJscyB9IH0pO1xyXG4gICAgICAgICAgICAgIHdpbmRvdy5kaXNwYXRjaEV2ZW50KGV2dCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3NldEVkaXRvckluc3RhbmNlT2JzZXJ2ZXIoZWRpdG9ySWQ6IHN0cmluZykge1xyXG4gICAgJChkb2N1bWVudCkub2ZmKCdET01Ob2RlSW5zZXJ0ZWQnKS5vbignRE9NTm9kZUluc2VydGVkJywgKGUpID0+IHtcclxuICAgICAgaWYgKCF0aGlzLmlzVG9vbGJhckl0ZW1zSWRTZXQgJiYgJChlLnRhcmdldCkuaGFzKCcjJyArIGVkaXRvcklkKSkge1xyXG4gICAgICAgIHRoaXMuX3NldElkRm9yVG9vbGJhckl0ZW1zKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfc2V0SWRGb3JUb29sYmFySXRlbXMoKSB7XHJcbiAgICBjb25zdCB0b29sYmFySXRlbXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAke3RoaXMuZWRpdG9ySWQgPyAnIycgKyB0aGlzLmVkaXRvcklkIDogJyd9IC5jay10b29sYmFyX19pdGVtc2ApPy5jaGlsZHJlbiB8fCBbXTtcclxuICAgIGlmICghdG9vbGJhckl0ZW1zLmxlbmd0aCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLmlzVG9vbGJhckl0ZW1zSWRTZXQgPSB0cnVlO1xyXG4gICAgKEFycmF5LmZyb20odG9vbGJhckl0ZW1zKSBhcyBIVE1MRWxlbWVudFtdKS5mb3JFYWNoKChpdGVtLCBpbmRleCkgPT4ge1xyXG4gICAgICBpdGVtLmlkID0gYCR7dGhpcy50b29sYmFySXRlbVByZWZpeElkfSR7aW5kZXh9YDtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMudG9nZ2xlVG9vbGJhckV2ZW50SGFuZGxpbmcoKTtcclxuICB9XHJcbn1cclxuIl19
|