@po-ui/ng-components 18.7.0 → 18.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/po-field/po-lookup/po-lookup-base.component.mjs +20 -2
- package/esm2022/lib/components/po-field/po-lookup/po-lookup-modal/po-lookup-modal-base.component.mjs +21 -2
- package/esm2022/lib/components/po-field/po-lookup/po-lookup-modal/po-lookup-modal.component.mjs +4 -4
- package/esm2022/lib/components/po-field/po-lookup/po-lookup.component.mjs +3 -2
- package/esm2022/lib/components/po-field/po-lookup/services/po-lookup-modal.service.mjs +3 -2
- package/esm2022/lib/components/po-stepper/po-step/po-step.component.mjs +41 -3
- package/esm2022/lib/components/po-stepper/po-stepper-base.component.mjs +126 -4
- package/esm2022/lib/components/po-stepper/po-stepper-circle/po-stepper-circle.component.mjs +54 -18
- package/esm2022/lib/components/po-stepper/po-stepper-item.interface.mjs +1 -1
- package/esm2022/lib/components/po-stepper/po-stepper-label/po-stepper-label.component.mjs +95 -12
- package/esm2022/lib/components/po-stepper/po-stepper-step/po-stepper-step.component.mjs +120 -56
- package/esm2022/lib/components/po-stepper/po-stepper.component.mjs +185 -32
- package/esm2022/lib/components/po-stepper/po-stepper.module.mjs +6 -5
- package/esm2022/lib/components/po-table/interfaces/po-table-column.interface.mjs +1 -1
- package/esm2022/lib/components/po-table/po-table-base.component.mjs +26 -2
- package/esm2022/lib/components/po-table/po-table.component.mjs +311 -256
- package/fesm2022/po-ui-ng-components.mjs +1203 -589
- package/fesm2022/po-ui-ng-components.mjs.map +1 -1
- package/lib/components/po-field/po-lookup/po-lookup-base.component.d.ts +17 -1
- package/lib/components/po-field/po-lookup/po-lookup-modal/po-lookup-modal-base.component.d.ts +18 -1
- package/lib/components/po-field/po-lookup/services/po-lookup-modal.service.d.ts +1 -0
- package/lib/components/po-stepper/po-step/po-step.component.d.ts +37 -2
- package/lib/components/po-stepper/po-stepper-base.component.d.ts +107 -3
- package/lib/components/po-stepper/po-stepper-circle/po-stepper-circle.component.d.ts +6 -1
- package/lib/components/po-stepper/po-stepper-item.interface.d.ts +8 -1
- package/lib/components/po-stepper/po-stepper-label/po-stepper-label.component.d.ts +19 -2
- package/lib/components/po-stepper/po-stepper-step/po-stepper-step.component.d.ts +28 -15
- package/lib/components/po-stepper/po-stepper.component.d.ts +23 -0
- package/lib/components/po-stepper/po-stepper.module.d.ts +2 -1
- package/lib/components/po-table/interfaces/po-table-column.interface.d.ts +1 -0
- package/lib/components/po-table/po-table-base.component.d.ts +18 -1
- package/lib/components/po-table/po-table.component.d.ts +1 -0
- package/package.json +4 -4
- package/po-ui-ng-components-18.8.0.tgz +0 -0
- package/schematics/ng-add/index.js +1 -1
- package/schematics/ng-update/v14/index.js +1 -1
- package/schematics/ng-update/v15/index.js +1 -1
- package/schematics/ng-update/v16/index.js +1 -1
- package/schematics/ng-update/v17/index.js +1 -1
- package/schematics/ng-update/v18/index.js +2 -2
- package/schematics/ng-update/v2/index.js +1 -1
- package/schematics/ng-update/v3/index.js +1 -1
- package/schematics/ng-update/v4/index.js +1 -1
- package/schematics/ng-update/v5/index.js +1 -1
- package/schematics/ng-update/v6/index.js +1 -1
- package/po-ui-ng-components-18.7.0.tgz +0 -0
|
@@ -268,9 +268,24 @@ export class PoLookupBaseComponent {
|
|
|
268
268
|
*
|
|
269
269
|
* Esta propriedade aplica-se ao texto contido nas células da tabela.
|
|
270
270
|
*
|
|
271
|
+
* > Incompatível com `virtual-scroll`, que requer altura fixa nas linhas.
|
|
272
|
+
*
|
|
271
273
|
* @default `false`
|
|
272
274
|
*/
|
|
273
275
|
textWrap = false;
|
|
276
|
+
/**
|
|
277
|
+
* @optional
|
|
278
|
+
*
|
|
279
|
+
* @description
|
|
280
|
+
*
|
|
281
|
+
* Habilita o `virtual-scroll` na tabela para melhorar a performance com grandes volumes de dados.
|
|
282
|
+
* A altura da tabela já é pré-definida, portanto o `virtual-scroll` será ativado automaticamente.
|
|
283
|
+
*
|
|
284
|
+
* > Incompatível com `p-text-wrap` e `master-detail`, pois o `virtual-scroll` exige altura fixa nas linhas.
|
|
285
|
+
*
|
|
286
|
+
* @default `true`
|
|
287
|
+
*/
|
|
288
|
+
virtualScroll = true;
|
|
274
289
|
/**
|
|
275
290
|
* Evento será disparado quando ocorrer algum erro na requisição de busca do item.
|
|
276
291
|
* Será passado por parâmetro o objeto de erro retornado.
|
|
@@ -643,7 +658,7 @@ export class PoLookupBaseComponent {
|
|
|
643
658
|
}
|
|
644
659
|
}
|
|
645
660
|
static ɵfac = function PoLookupBaseComponent_Factory(t) { return new (t || PoLookupBaseComponent)(i0.ɵɵdirectiveInject(i1.PoLookupFilterService), i0.ɵɵdirectiveInject(Injector), i0.ɵɵdirectiveInject(i2.PoLookupModalService)); };
|
|
646
|
-
static ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: PoLookupBaseComponent, inputs: { autoFocus: [2, "p-auto-focus", "autoFocus", convertToBoolean], label: [0, "p-label", "label"], literals: [0, "p-literals", "literals"], help: [0, "p-help", "help"], placeholder: [0, "p-placeholder", "placeholder"], name: "name", fieldValue: [0, "p-field-value", "fieldValue"], fieldLabel: [0, "p-field-label", "fieldLabel"], filterParams: [0, "p-filter-params", "filterParams"], fieldFormat: [0, "p-field-format", "fieldFormat"], columns: [0, "p-columns", "columns"], optional: [0, "p-optional", "optional"], advancedFilters: [0, "p-advanced-filters", "advancedFilters"], hideColumnsManager: [2, "p-hide-columns-manager", "hideColumnsManager", convertToBoolean], infiniteScroll: [2, "p-infinite-scroll", "infiniteScroll", convertToBoolean], clean: [2, "p-clean", "clean", convertToBoolean], multiple: [2, "p-multiple", "multiple", convertToBoolean], autoHeight: [2, "p-auto-height", "autoHeight", convertToBoolean], spacing: [0, "p-spacing", "spacing"], textWrap: [2, "p-text-wrap", "textWrap", convertToBoolean], filterService: [0, "p-filter-service", "filterService"], noAutocomplete: [0, "p-no-autocomplete", "noAutocomplete"], required: [0, "p-required", "required"], showRequired: [0, "p-show-required", "showRequired"], disabled: [0, "p-disabled", "disabled"] }, outputs: { onError: "p-error", selected: "p-selected", change: "p-change", changeVisibleColumns: "p-change-visible-columns", columnRestoreManager: "p-restore-column-manager" }, features: [i0.ɵɵInputTransformsFeature, i0.ɵɵNgOnChangesFeature] });
|
|
661
|
+
static ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: PoLookupBaseComponent, inputs: { autoFocus: [2, "p-auto-focus", "autoFocus", convertToBoolean], label: [0, "p-label", "label"], literals: [0, "p-literals", "literals"], help: [0, "p-help", "help"], placeholder: [0, "p-placeholder", "placeholder"], name: "name", fieldValue: [0, "p-field-value", "fieldValue"], fieldLabel: [0, "p-field-label", "fieldLabel"], filterParams: [0, "p-filter-params", "filterParams"], fieldFormat: [0, "p-field-format", "fieldFormat"], columns: [0, "p-columns", "columns"], optional: [0, "p-optional", "optional"], advancedFilters: [0, "p-advanced-filters", "advancedFilters"], hideColumnsManager: [2, "p-hide-columns-manager", "hideColumnsManager", convertToBoolean], infiniteScroll: [2, "p-infinite-scroll", "infiniteScroll", convertToBoolean], clean: [2, "p-clean", "clean", convertToBoolean], multiple: [2, "p-multiple", "multiple", convertToBoolean], autoHeight: [2, "p-auto-height", "autoHeight", convertToBoolean], spacing: [0, "p-spacing", "spacing"], textWrap: [2, "p-text-wrap", "textWrap", convertToBoolean], virtualScroll: [2, "p-virtual-scroll", "virtualScroll", convertToBoolean], filterService: [0, "p-filter-service", "filterService"], noAutocomplete: [0, "p-no-autocomplete", "noAutocomplete"], required: [0, "p-required", "required"], showRequired: [0, "p-show-required", "showRequired"], disabled: [0, "p-disabled", "disabled"] }, outputs: { onError: "p-error", selected: "p-selected", change: "p-change", changeVisibleColumns: "p-change-visible-columns", columnRestoreManager: "p-restore-column-manager" }, features: [i0.ɵɵInputTransformsFeature, i0.ɵɵNgOnChangesFeature] });
|
|
647
662
|
}
|
|
648
663
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PoLookupBaseComponent, [{
|
|
649
664
|
type: Directive
|
|
@@ -710,6 +725,9 @@ export class PoLookupBaseComponent {
|
|
|
710
725
|
}], textWrap: [{
|
|
711
726
|
type: Input,
|
|
712
727
|
args: [{ alias: 'p-text-wrap', transform: convertToBoolean }]
|
|
728
|
+
}], virtualScroll: [{
|
|
729
|
+
type: Input,
|
|
730
|
+
args: [{ alias: 'p-virtual-scroll', transform: convertToBoolean }]
|
|
713
731
|
}], onError: [{
|
|
714
732
|
type: Output,
|
|
715
733
|
args: ['p-error']
|
|
@@ -741,4 +759,4 @@ export class PoLookupBaseComponent {
|
|
|
741
759
|
type: Input,
|
|
742
760
|
args: ['p-disabled']
|
|
743
761
|
}] }); })();
|
|
744
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tbG9va3VwLWJhc2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9jb21wb25lbnRzL3BvLWZpZWxkL3BvLWxvb2t1cC9wby1sb29rdXAtYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUVOLFFBQVEsRUFDUixLQUFLLEVBSUwsTUFBTSxFQUVQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBeUMsU0FBUyxFQUFpQyxNQUFNLGdCQUFnQixDQUFDO0FBRWpILE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUcxQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQU8vQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQzs7OztBQUVsRjs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFFSCxNQUFNLE9BQWdCLHFCQUFxQjtJQTJkL0I7SUFDa0I7SUFDbkI7SUExZFQ7Ozs7Ozs7Ozs7T0FVRztJQUM0RCxTQUFTLEdBQVksS0FBSyxDQUFDO0lBRTFGOzs7OztPQUtHO0lBQ2UsS0FBSyxDQUFVO0lBRWpDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BMkNHO0lBQ2tCLFFBQVEsQ0FBb0I7SUFFakQsK0JBQStCO0lBQ2QsSUFBSSxDQUFVO0lBRS9CLHNFQUFzRTtJQUN0RSxJQUE0QixXQUFXLENBQUMsS0FBYTtRQUNuRCxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssSUFBSSxFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVELElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLFlB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RUFBRSxnQkFBZ0IsRUFBRTtZQVlILGNBQWM7a0JBQWpGLEtBQUs7bUJBQUMsRUFBRSxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO1lBR1IsS0FBSztrQkFBOUQsS0FBSzttQkFBQyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO1lBYUssUUFBUTtrQkFBcEUsS0FBSzttQkFBQyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO1lBWUssVUFBVTtrQkFBekUsS0FBSzttQkFBQyxFQUFFLEtBQUssRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO1lBYTFDLE9BQU87a0JBQTFCLEtBQUs7bUJBQUMsV0FBVztZQWU0QyxRQUFRO2tCQUFyRSxLQUFLO21CQUFDLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7WUFNekMsT0FBTztrQkFBekIsTUFBTTttQkFBQyxTQUFTO1lBVUssUUFBUTtrQkFBN0IsTUFBTTttQkFBQyxZQUFZO1lBVUEsTUFBTTtrQkFBekIsTUFBTTttQkFBQyxVQUFVO1lBV2tCLG9CQUFvQjtrQkFBdkQsTUFBTTttQkFBQywwQkFBMEI7WUFXRSxvQkFBb0I7a0JBQXZELE1BQU07bUJBQUMsMEJBQTBCO1lBd0ZILGFBQWE7a0JBQTNDLEtBQUs7bUJBQUMsa0JBQWtCO1lBa0JPLGNBQWM7a0JBQTdDLEtBQUs7bUJBQUMsbUJBQW1CO1lBa0JELFFBQVE7a0JBQWhDLEtBQUs7bUJBQUMsWUFBWTtZQWdCTyxZQUFZO2tCQUFyQyxLQUFLO21CQUFDLGlCQUFpQjtZQVVDLFFBQVE7a0JBQWhDLEtBQUs7bUJBQUMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIERpcmVjdGl2ZSxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbmplY3QsXG4gIEluamVjdE9wdGlvbnMsXG4gIEluamVjdG9yLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBDb250cm9sVmFsdWVBY2Nlc3NvciwgTmdDb250cm9sLCBVbnR5cGVkRm9ybUNvbnRyb2wsIFZhbGlkYXRvciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmluYWxpemUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IElucHV0Qm9vbGVhbiB9IGZyb20gJy4uLy4uLy4uL2RlY29yYXRvcnMnO1xuaW1wb3J0IHsgY29udmVydFRvQm9vbGVhbiwgaXNUeXBlb2YgfSBmcm9tICcuLi8uLi8uLi91dGlscy91dGlsJztcbmltcG9ydCB7IHJlcXVpcmVkRmFpbGVkIH0gZnJvbSAnLi4vdmFsaWRhdG9ycyc7XG5pbXBvcnQgeyBQb0xvb2t1cEFkdmFuY2VkRmlsdGVyIH0gZnJvbSAnLi9pbnRlcmZhY2VzL3BvLWxvb2t1cC1hZHZhbmNlZC1maWx0ZXIuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvTG9va3VwQ29sdW1uIH0gZnJvbSAnLi9pbnRlcmZhY2VzL3BvLWxvb2t1cC1jb2x1bW4uaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvTG9va3VwRmlsdGVyIH0gZnJvbSAnLi9pbnRlcmZhY2VzL3BvLWxvb2t1cC1maWx0ZXIuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvTG9va3VwTGl0ZXJhbHMgfSBmcm9tICcuL2ludGVyZmFjZXMvcG8tbG9va3VwLWxpdGVyYWxzLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb0xvb2t1cEZpbHRlclNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3BvLWxvb2t1cC1maWx0ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBQb0xvb2t1cE1vZGFsU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvcG8tbG9va3VwLW1vZGFsLnNlcnZpY2UnO1xuaW1wb3J0IHsgUG9UYWJsZUNvbHVtblNwYWNpbmcgfSBmcm9tICcuLi8uLi9wby10YWJsZS9lbnVtcy9wby10YWJsZS1zcGFjaW5nLmVudW0nO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvblxuICpcbiAqIENvbXBvbmVudGUgdXRpbGl6YWRvIHBhcmEgYWJyaXIgdW1hIGphbmVsYSBkZSBidXNjYSBjb20gdW1hIHRhYmVsYSBxdWUgbGlzdGEgZGFkb3MgZGUgdW0gc2VydmnDp28uIE5lc3RhIGphbmVsYSDDqSBwb3Nzw612ZWwgYnVzY2FyIGVcbiAqIHNlbGVjaW9uYXIgdW0gb3UgbWFpcyByZWdpc3Ryb3MgcXVlIHNlcsOjbyBlbnZpYWRvcyBwYXJhIG8gY2FtcG8uIE8gYHBvLWxvb2t1cGAgcGVybWl0ZSBxdWUgbyB1c3XDoXJpbyBkaWdpdGUgdW0gdmFsb3IgZSBwcmVzc2lvbmUgYSB0ZWNsYSAqVEFCKiBwYXJhXG4gKiBidXNjYXIgdW0gcmVnaXN0cm8uXG4gKlxuICogPiBDYXNvIG8gY2FtcG8gc2VqYSBpbmljaWFkbyBvdSBwcmVlbmNoaWRvIGNvbSB1bSB2YWxvciBpbmV4aXN0ZW50ZSBuYSBidXNjYSwgbyBtZXNtbyBzZXLDoSBsaW1wYWRvLlxuICogTm8gc2VndW5kbyBjYXNvIG9jb3JyZXLDoSBhcMOzcyBlc3RlIHBlcmRlciBvIGZvY287IGFtYm9zIG9zIGNhc29zIG8gY2FtcG8gZmljYXLDoSBpbnbDoWxpZG8gcXVhbmRvIHJlcXVlcmlkby5cbiAqXG4gKiA+IEVucXVhbnRvIG8gY29tcG9uZW50ZSByZWFsaXphIGEgcmVxdWlzacOnw6NvIGFvIHNlcnZpZG9yLCBvIGNvbXBvbmVudGUgZmljYXLDoSBkZXNhYmlsaXRhZG8gZSBjb20gbyBzdGF0dXMgaW50ZXJubyBkb1xuICogW21vZGVsb10oaHR0cHM6Ly9hbmd1bGFyLmlvL2d1aWRlL2Zvcm0tdmFsaWRhdGlvbiNjcmVhdGluZy1hc3luY2hyb25vdXMtdmFsaWRhdG9ycykgY29tbyBgcGVuZGluZ2AuXG4gKlxuICogRXN0ZSBjb21wb25lbnRlIG7Do28gw6kgcmVjb21lbmRhZG8gcXVhbmRvIGEgYnVzY2EgZG9zIGRhZG9zIHBvc3N1aXIgcG91Y2FzIGluZm9ybWHDp8O1ZXMsIHBhcmEgaXNzbyB1dGlsaXplIG91dHJvcyBjb21wb25lbnRlcyBjb21vIG9cbiAqIGBwby1zZWxlY3RgIG91IG8gYHBvLWNvbWJvYC5cbiAqL1xuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUG9Mb29rdXBCYXNlQ29tcG9uZW50XG4gIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uRGVzdHJveSwgT25Jbml0LCBWYWxpZGF0b3IsIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlc1xue1xuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBBcGxpY2EgZm9jbyBubyBlbGVtZW50byBhbyBzZXIgaW5pY2lhZG8uXG4gICAqXG4gICAqID4gQ2FzbyBtYWlzIGRlIHVtIGVsZW1lbnRvIHNlamEgY29uZmlndXJhZG8gY29tIGVzc2EgcHJvcHJpZWRhZGUsIGFwZW5hcyBvIMO6bHRpbW8gZWxlbWVudG8gZGVjbGFyYWRvIGNvbSBlbGEgdGVyw6EgbyBmb2NvLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoeyBhbGlhczogJ3AtYXV0by1mb2N1cycsIHRyYW5zZm9ybTogY29udmVydFRvQm9vbGVhbiB9KSBhdXRvRm9jdXM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogTGFiZWwgZG8gY2FtcG8uXG4gICAqXG4gICAqID4gUXVhbmRvIHV0aWxpemFyIGVzdGEgcHJvcHJpZWRhZGUgbyBzZXUgdmFsb3Igc2Vyw6EgdXRpbGl6YWRvIGNvbW8gdMOtdHVsbyBkYSBtb2RhbCBkbyBjb21wb25lbnRlIGNhc28gbsOjbyB0ZW5oYVxuICAgKiBzaWRvIGRlZmluaWRvIHVtIGBtb2RhbFRpdGxlYCBuYSBwcm9wcmllZGFkZSBgcC1saXRlcmFsc2AuXG4gICAqL1xuICBASW5wdXQoJ3AtbGFiZWwnKSBsYWJlbD86IHN0cmluZztcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIE9iamV0byBjb20gYXMgbGl0ZXJhaXMgdXNhZGFzIG5vIGBwby1sb29rdXBgLlxuICAgKlxuICAgKiBFeGlzdGVtIGR1YXMgbWFuZWlyYXMgZGUgY3VzdG9taXphciBvIGNvbXBvbmVudGUsIHBhc3NhbmRvIHVtIG9iamV0byBjb20gdG9kYXMgYXMgbGl0ZXJhaXMgZGlzcG9uw612ZWlzOlxuICAgKlxuICAgKiBgYGBcbiAgICogIGNvbnN0IGN1c3RvbUxpdGVyYWxzOiBQb0xvb2t1cExpdGVyYWxzID0ge1xuICAgKiAgICBtb2RhbFByaW1hcnlBY3Rpb25MYWJlbDogJ1NlbGVjdCcsXG4gICAqICAgIG1vZGFsU2Vjb25kYXJ5QWN0aW9uTGFiZWw6ICdDYW5jZWwnLFxuICAgKiAgICBtb2RhbFBsYWNlaG9sZGVyOiAnU2VhcmNoIFZhbHVlJyxcbiAgICogICAgbW9kYWxUYWJsZU5vQ29sdW1uczogJ05vIGNvbHVtbnMnLFxuICAgKiAgICBtb2RhbFRhYmxlTm9EYXRhOiAnTm8gZGF0YScsXG4gICAqICAgIG1vZGFsVGFibGVMb2FkaW5nRGF0YTogJ0xvYWRpbmcgZGF0YScsXG4gICAqICAgIG1vZGFsVGFibGVMb2FkTW9yZURhdGE6ICdMb2FkIG1vcmUnLFxuICAgKiAgICBtb2RhbFRpdGxlOiAnU2VsZWN0IGEgdXNlcicsXG4gICAqICAgIG1vZGFsQWR2YW5jZWRTZWFyY2g6ICdBZHZhbmNlZCBzZWFyY2gnLFxuICAgKiAgICBtb2RhbEFkdmFuY2VkU2VhcmNoVGl0bGU6ICdBZHZhbmNlZCBzZWFyY2gnLFxuICAgKiAgICBtb2RhbEFkdmFuY2VkU2VhcmNoUHJpbWFyeUFjdGlvbkxhYmVsOiAnRmlsdGVyJyxcbiAgICogICAgbW9kYWxBZHZhbmNlZFNlYXJjaFNlY29uZGFyeUFjdGlvbkxhYmVsOiAnUmV0dXJuJyxcbiAgICogICAgbW9kYWxEaXNjbGFpbWVyR3JvdXBUaXRsZTogJ1ByZXNlbnRpbmcgcmVzdWx0cyBmaWx0ZXJlZCBieTonXG4gICAqICB9O1xuICAgKiBgYGBcbiAgICpcbiAgICogT3UgcGFzc2FuZG8gYXBlbmFzIGFzIGxpdGVyYWlzIHF1ZSBkZXNlamEgY3VzdG9taXphcjpcbiAgICpcbiAgICogYGBgXG4gICAqICBjb25zdCBjdXN0b21MaXRlcmFsczogUG9Mb29rdXBMaXRlcmFscyA9IHtcbiAgICogICAgbW9kYWxQcmltYXJ5QWN0aW9uTGFiZWw6ICdTZWxlY3QnXG4gICAqICB9O1xuICAgKiBgYGBcbiAgICpcbiAgICogRSBwYXJhIGNhcnJlZ2FyIGFzIGxpdGVyYWlzIGN1c3RvbWl6YWRhcywgYmFzdGEgYXBlbmFzIHBhc3NhciBvIG9iamV0byBwYXJhIG8gY29tcG9uZW50ZS5cbiAgICpcbiAgICogYGBgXG4gICAqIDxwby1sb29rdXBcbiAgICogICBbcC1saXRlcmFsc109XCJjdXN0b21MaXRlcmFsc1wiPlxuICAgKiA8L3BvLWxvb2t1cD5cbiAgICogYGBgXG4gICAqXG4gICAqID4gTyBvYmpldG8gcGFkcsOjbyBkZSBsaXRlcmFpcyBzZXLDoSB0cmFkdXppZG8gZGUgYWNvcmRvIGNvbSBvIGlkaW9tYSBkb1xuICAgKiBbYFBvSTE4blNlcnZpY2VgXSgvZG9jdW1lbnRhdGlvbi9wby1pMThuKSBvdSBkbyBicm93c2VyLlxuICAgKi9cbiAgQElucHV0KCdwLWxpdGVyYWxzJykgbGl0ZXJhbHM/OiBQb0xvb2t1cExpdGVyYWxzO1xuXG4gIC8qKiBUZXh0byBkZSBhcG9pbyBkbyBjYW1wby4gKi9cbiAgQElucHV0KCdwLWhlbHAnKSBoZWxwPzogc3RyaW5nO1xuXG4gIC8qKiBNZW5zYWdlbSBxdWUgYXBhcmVjZXLDoSBlbnF1YW50byBvIGNhbXBvIG7Do28gZXN0aXZlciBwcmVlbmNoaWRvLiAqL1xuICBASW5wdXQoJ3AtcGxhY2Vob2xkZXInKSBzZXQgcGxhY2Vob2xkZXIodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX3BsYWNlaG9sZGVyID0gdmFsdWUgfHwgJyc7XG4gIH1cblxuICBnZXQgcGxhY2Vob2xkZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3BsYWNlaG9sZGVyO1xuICB9XG5cbiAgLyoqIE5vbWUgZSBJZCBkbyBjb21wb25lbnRlLiAqL1xuICBASW5wdXQoJ25hbWUnKSBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBJbmRpY2EgYSBjb2x1bmEgcXVlIHNlcsOhIHV0aWxpemFkYSBjb21vIHZhbG9yIGRvIGNhbXBvLlxuICAgKlxuICAgKiA+IEF0ZW7Dp8OjbzogQ2FzbyBuw6NvIHNlamEgcGFzc2FkYSBvdSB0ZW5oYSBvIGNvbnRlw7pkbyBpbmNvcnJldG8sIG7Do28gaXLDoSBhdHVhbGl6YXIgbyBtb2RlbCBkbyBmb3JtdWzDoXJpby5cbiAgICovXG4gIEBJbnB1dCgncC1maWVsZC12YWx1ZScpIGZpZWxkVmFsdWU6IHN0cmluZztcblxuICAvKiogSW5kaWNhIGEgY29sdW5hIHF1ZSBzZXLDoSB1dGlsaXphZGEgY29tbyBkZXNjcmnDp8OjbyBkbyBjYW1wbyBlIGNvbW8gZmlsdHJvIGRlbnRybyBkYSBqYW5lbGEuICovXG4gIEBJbnB1dCgncC1maWVsZC1sYWJlbCcpIHNldCBmaWVsZExhYmVsKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9maWVsZExhYmVsID0gdmFsdWU7XG4gICAgdGhpcy5rZXlzRGVzY3JpcHRpb24gPSBbdGhpcy5maWVsZExhYmVsXTtcbiAgfVxuXG4gIGdldCBmaWVsZExhYmVsKCkge1xuICAgIHJldHVybiB0aGlzLl9maWVsZExhYmVsO1xuICB9XG5cbiAgLyoqIFZhbG9yIHF1ZSBzZXLDoSByZXBhc3NhZG8gY29tbyBwYXLDom1ldHJvIHBhcmEgYSBVUkwgb3UgYW9zIG3DqXRvZG9zIGRvIHNlcnZpw6dvIHF1ZSBpbXBsZW1lbnRhbSBhIGludGVyZmFjZSBgUG9Mb29rdXBGaWx0ZXJgLiAqL1xuICBASW5wdXQoJ3AtZmlsdGVyLXBhcmFtcycpIGZpbHRlclBhcmFtcz86IGFueTtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBGb3JtYXRvIGRlIGV4aWJpw6fDo28gZG8gY2FtcG8uXG4gICAqXG4gICAqIFJlY2ViZSB1bWEgZnVuw6fDo28gcXVlIGRldmUgcmV0b3JuYXIgdW1hICpzdHJpbmcqIGNvbSBvL29zIHZhbG9yZXMgZG8gb2JqZXRvIGZvcm1hdGFkb3MgcGFyYSBleGliacOnw6NvLCBwb3IgZXhlbXBsbzpcbiAgICpcbiAgICogYGBgXG4gICAqIGZpZWxkRm9ybWF0KG9iaikge1xuICAgKiAgIHJldHVybiBgJHtvYmouaWR9IC0gJHtvYmoubmFtZX1gO1xuICAgKiB9XG4gICAqIGBgYFxuICAgKiA+IEVzdGEgcHJvcHJpZWRhZGUgc29icmVww7VlIG8gdmFsb3IgZGEgcHJvcHJpZWRhZGUgYHAtZmllbGQtbGFiZWxgIG5hIGRlc2NyacOnw6NvIGRvIGNhbXBvLlxuICAgKlxuICAgKiBQb2RlLXNlIGluZm9ybWFyIHVtYSBsaXN0YSBkZSBwcm9wcmllZGFkZXMgcXVlIGRlc2VqYSBleGliaXIgY29tbyBkZXNjcmnDp8OjbyBkbyBjYW1wbywgUG9yIGV4ZW1wbG86XG4gICAqIGBgYFxuICAgKiA8cG8tbG9va3VwXG4gICAqICAuLi5cbiAgICogIFtwLWZpZWxkLWZvcm1hdF09XCJbJ2lkJywnbmlja25hbWUnXVwiXG4gICAqICAuLi5cbiAgICogPlxuICAgKlxuICAgKiBPYmpldG8gcmV0b3JuYWRvOlxuICAgKiAgIHtcbiAgICogICAgICBpZDoxMjMsXG4gICAqICAgICAgbmFtZTogJ0tha2Fyb3RvJyxcbiAgICogICAgICBuaWNrbmFtZTogJ0dva3UnLFxuICAgKiAgIH1cbiAgICogQXByZXNlbnRhw6fDo28gbm8gY2FtcG86IDEyMyAtIEdva3VcbiAgICogYGBgXG4gICAqXG4gICAqID4gU2Vyw6EgdXRpbGl6YWRvIGAgLSBgIGNvbW8gc2VwYXJhZG9yLlxuICAgKi9cbiAgQElucHV0KCdwLWZpZWxkLWZvcm1hdCcpIGZpZWxkRm9ybWF0PzogKCh2YWx1ZSkgPT4gc3RyaW5nKSB8IEFycmF5PHN0cmluZz47XG5cbiAgLyoqXG4gICAqIExpc3RhIGRhcyBjb2x1bmFzIGRhIHRhYmVsYS5cbiAgICogRXNzYSBwcm9wcmllZGFkZSBkZXZlIHJlY2ViZXIgdW0gYXJyYXkgZGUgb2JqZXRvcyBxdWUgaW1wbGVtZW50YW0gYSBpbnRlcmZhY2UgUG9Mb29rdXBDb2x1bW4uXG4gICAqL1xuICBASW5wdXQoJ3AtY29sdW1ucycpIGNvbHVtbnM/OiBBcnJheTxQb0xvb2t1cENvbHVtbj47XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRGVmaW5lIHNlIGEgaW5kaWNhw6fDo28gZGUgY2FtcG8gb3BjaW9uYWwgc2Vyw6EgZXhpYmlkYS5cbiAgICpcbiAgICogPiBOw6NvIHNlcsOhIGV4aWJpZGEgYSBpbmRpY2HDp8OjbyBzZTpcbiAgICogLSBPIGNhbXBvIGNvbnRlciBgcC1yZXF1aXJlZGA7XG4gICAqIC0gTsOjbyBwb3NzdWlyIGBwLWhlbHBgIGUvb3UgYHAtbGFiZWxgLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoJ3Atb3B0aW9uYWwnKSBvcHRpb25hbDogYm9vbGVhbjtcblxuICAvKipcbiAgICpcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBMaXN0YSBkZSBvYmpldG9zIGRvcyBjYW1wb3MgcXVlIHNlcsOjbyBjcmlhZG9zIG5hIGJ1c2NhIGF2YW7Dp2FkYS5cbiAgICpcbiAgICogPiBDYXNvIG7Do28gc2VqYSBwYXNzYWRvIHVtIG9iamV0byBvdSBlbnTDo28gZWxlIGVzdGVqYSBlbSBicmFuY28gbyBsaW5rIGRlIGJ1c2NhIGF2YW7Dp2FkYSBmaWNhcsOhIGVzY29uZGlkby5cbiAgICpcbiAgICogRXhlbXBsbyBkZSBVUkwgY29tIGJ1c2NhIGF2YW7Dp2FkYTpcbiAgICpcbiAgICogYGBgXG4gICAqIHVybCArID9wYWdlPTEmcGFnZVNpemU9MjAmbmFtZT1Ub255JTIwU3Rhcmsmbmlja25hbWU9SG9tZW0lMjBkZSUyMEZlcnJvXG4gICAqIGBgYFxuICAgKlxuICAgKiBDYXNvIGFsZ3VtIHBhcsOibWV0cm8gc2VqYSB1bWEgbGlzdGEsIGEgY29uY2F0ZW5hw6fDo28gw6kgZmVpdGEgdXRpbGl6YW5kbyB2w61yZ3VsYS5cbiAgICogRXhlbXBsbzpcbiAgICpcbiAgICogYGBgXG4gICAqIHVybCArID9wYWdlPTEmcGFnZVNpemU9MjAmbmFtZT1Ub255JTIwU3RhcmssUGV0ZXIlMjBQYXJrZXIsR29oYW5cbiAgICogYGBgXG4gICAqXG4gICAqL1xuICBASW5wdXQoJ3AtYWR2YW5jZWQtZmlsdGVycycpIGFkdmFuY2VkRmlsdGVyczogQXJyYXk8UG9Mb29rdXBBZHZhbmNlZEZpbHRlcj47XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogUGVybWl0ZSBxdWUgbyBnZXJlbmNpYWRvciBkZSBjb2x1bmFzLCByZXNwb25zw6F2ZWwgcGVsYSBkZWZpbmnDp8OjbyBkZSBxdWFpcyBjb2x1bmFzIHNlcsOjbyBleGliaWRhcywgc2VqYSBlc2NvbmRpZG8uXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCh7IGFsaWFzOiAncC1oaWRlLWNvbHVtbnMtbWFuYWdlcicsIHRyYW5zZm9ybTogY29udmVydFRvQm9vbGVhbiB9KVxuICBoaWRlQ29sdW1uc01hbmFnZXI6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBBdGl2YSBhIGZ1bmNpb25hbGlkYWRlIGRlIHNjcm9sbCBpbmZpbml0byBwYXJhIGEgdGFiZWxhIGV4aWJpZGEgbm8gcmV0b3JubyBkYSBjb25zdWx0YS5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KHsgYWxpYXM6ICdwLWluZmluaXRlLXNjcm9sbCcsIHRyYW5zZm9ybTogY29udmVydFRvQm9vbGVhbiB9KSBpbmZpbml0ZVNjcm9sbDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKiBFeGliZSB1bSDDrWNvbmUgcXVlIHBlcm1pdGUgbGltcGFyIG8gY2FtcG8uICovXG4gIEBJbnB1dCh7IGFsaWFzOiAncC1jbGVhbicsIHRyYW5zZm9ybTogY29udmVydFRvQm9vbGVhbiB9KSBjbGVhbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIFBlcm1pdGUgYSBzZWxlw6fDo28gZGUgbcO6bHRpcGxvcyBpdGVucy5cbiAgICpcbiAgICogPiBRdWFuZG8gaGFiaWxpdGFkbyBvIHZhbG9yIGRvIGNhbXBvIHBhc3NhcsOhIGEgc2VyIHVtYSBsaXN0YSBkZSB2YWxvcmVzLCBwb3IgZXhlbXBsbzogYFsgMTIzNDUsIDY3ODkwIF1gXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCh7IGFsaWFzOiAncC1tdWx0aXBsZScsIHRyYW5zZm9ybTogY29udmVydFRvQm9vbGVhbiB9KSBtdWx0aXBsZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIERlZmluZSBxdWUgYSBhbHR1cmEgZG8gY29tcG9uZW50ZSBzZXLDoSBhdXRvIGFqdXN0w6F2ZWwsIHBvc3N1aW5kbyB1bWEgYWx0dXJhIG1pbmltYSBwb3LDqW0gYSBhbHR1cmEgbcOheGltYSBzZXLDoSBkZSBhY29yZG9cbiAgICogY29tIG8gbsO6bWVybyBkZSBpdGVucyBzZWxlY2lvbmFkb3MgZSBhIGV4dGVuc8OjbyBkb3MgbWVzbW9zLCBtYW50ZW5kby1vcyBzZW1wcmUgdmlzw612ZWlzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoeyBhbGlhczogJ3AtYXV0by1oZWlnaHQnLCB0cmFuc2Zvcm06IGNvbnZlcnRUb0Jvb2xlYW4gfSkgYXV0b0hlaWdodDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIFJlc3BvbnPDoXZlbCBwb3IgYXBsaWNhciBlc3Bhw6dhbWVudG8gbmFzIGNvbHVuYXMgZGEgdGFiZWxhIGNvbnRpZGEgbm8gbG9va3VwLlxuICAgKlxuICAgKiBEZXZlIHJlY2ViZXIgdW0gZG9zIHZhbG9yZXMgZG8gZW51bSBgUG9UYWJsZUNvbHVtblNwYWNpbmdgLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgbWVkaXVtYFxuICAgKi9cbiAgQElucHV0KCdwLXNwYWNpbmcnKSBzcGFjaW5nOiBQb1RhYmxlQ29sdW1uU3BhY2luZyA9IFBvVGFibGVDb2x1bW5TcGFjaW5nLk1lZGl1bTtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBIYWJpbGl0YSBvdSBkZXNhYmlsaXRhIGEgcXVlYnJhIGF1dG9tw6F0aWNhIGRlIHRleHRvLiBRdWFuZG8gYXRpdmFkYSwgbyB0ZXh0byBxdWUgZXhjZWRlXG4gICAqIG8gZXNwYcOnbyBkaXNwb27DrXZlbCDDqSB0cmFuc2ZlcmlkbyBwYXJhIGEgcHLDs3hpbWEgbGluaGEgZW0gcG9udG9zIGFwcm9wcmlhZG9zIHBhcmEgdW1hXG4gICAqIGxlaXR1cmEgY2xhcmEuXG4gICAqXG4gICAqIEVzdGEgcHJvcHJpZWRhZGUgYXBsaWNhLXNlIGFvIHRleHRvIGNvbnRpZG8gbmFzIGPDqWx1bGFzIGRhIHRhYmVsYS5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KHsgYWxpYXM6ICdwLXRleHQtd3JhcCcsIHRyYW5zZm9ybTogY29udmVydFRvQm9vbGVhbiB9KSB0ZXh0V3JhcD86IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogRXZlbnRvIHNlcsOhIGRpc3BhcmFkbyBxdWFuZG8gb2NvcnJlciBhbGd1bSBlcnJvIG5hIHJlcXVpc2nDp8OjbyBkZSBidXNjYSBkbyBpdGVtLlxuICAgKiBTZXLDoSBwYXNzYWRvIHBvciBwYXLDom1ldHJvIG8gb2JqZXRvIGRlIGVycm8gcmV0b3JuYWRvLlxuICAgKi9cbiAgQE91dHB1dCgncC1lcnJvcicpIG9uRXJyb3I6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRXZlbnRvIHNlcsOhIGRpc3BhcmFkbyBxdWFuZG8gb2NvcnJlciBhbGd1bWEgc2VsZcOnw6NvLlxuICAgKiBTZXLDoSBwYXNzYWRvIHBvciBwYXLDom1ldHJvIG8gb2JqZXRvIGNvbSBvIHZhbG9yIHNlbGVjaW9uYWRvLlxuICAgKi9cbiAgQE91dHB1dCgncC1zZWxlY3RlZCcpIHNlbGVjdGVkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqICBFdmVudG8gcXVlIHNlcsOhIGRpc3BhcmFkbyBhbyBhbHRlcmFyIG8gbW9kZWwuXG4gICAqICBQb3IgcGFyw6JtZXRybyBzZXLDoSBwYXNzYWRvIG8gbm92byB2YWxvci5cbiAgICovXG4gIEBPdXRwdXQoJ3AtY2hhbmdlJykgY2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEV2ZW50byBkaXNwYXJhZG8gYW8gZmVjaGFyIG8gcG9wb3ZlciBkbyBnZXJlbmNpYWRvciBkZSBjb2x1bmFzIGFww7NzIGFsdGVyYXIgYXMgY29sdW5hcyB2aXPDrXZlaXMuXG4gICAqXG4gICAqIE8gY29tcG9uZW50ZSBlbnZpYSBjb21vIHBhcsOibWV0cm8gdW0gYXJyYXkgZGUgc3RyaW5nIGNvbSBhcyBjb2x1bmFzIHZpc8OtdmVpcyBhdHVhbGl6YWRhcy5cbiAgICogUG9yIGV4ZW1wbG86IFtcImlkQ2FyZFwiLCBcIm5hbWVcIiwgXCJoaXJlU3RhdHVzXCIsIFwiYWdlXCJdLlxuICAgKi9cbiAgQE91dHB1dCgncC1jaGFuZ2UtdmlzaWJsZS1jb2x1bW5zJykgY2hhbmdlVmlzaWJsZUNvbHVtbnMgPSBuZXcgRXZlbnRFbWl0dGVyPEFycmF5PHN0cmluZz4+KCk7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogRXZlbnRvIGRpc3BhcmFkbyBhbyBjbGljYXIgbm8gYm90w6NvIGRlIHJlc3RhdXJhciBwYWRyw6NvIG5vIGdlcmVuY2lhZG9yIGRlIGNvbHVuYXMuXG4gICAqXG4gICAqIE8gY29tcG9uZW50ZSBlbnZpYSBjb21vIHBhcsOibWV0cm8gdW0gYXJyYXkgZGUgc3RyaW5nIGNvbSBhcyBjb2x1bmFzIGNvbmZpZ3VyYWRhcyBpbmljaWFsbWVudGUuXG4gICAqIFBvciBleGVtcGxvOiBbXCJpZENhcmRcIiwgXCJuYW1lXCIsIFwiaGlyZVN0YXR1c1wiLCBcImFnZVwiXS5cbiAgICovXG4gIEBPdXRwdXQoJ3AtcmVzdG9yZS1jb2x1bW4tbWFuYWdlcicpIGNvbHVtblJlc3RvcmVNYW5hZ2VyID0gbmV3IEV2ZW50RW1pdHRlcjxBcnJheTxTdHJpbmc+PigpO1xuXG4gIHNlcnZpY2U6IGFueTtcblxuICBwcm90ZWN0ZWQgc2VsZWN0ZWRPcHRpb25zID0gW107XG4gIHByb3RlY3RlZCBnZXRTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgcHJvdGVjdGVkIGtleXNEZXNjcmlwdGlvbjogQXJyYXk8YW55PjtcbiAgcHJvdGVjdGVkIG9sZFZhbHVlOiBzdHJpbmcgPSAnJztcbiAgcHJvdGVjdGVkIHZhbHVlVG9Nb2RlbDtcbiAgcHJvdGVjdGVkIG9sZFZhbHVlVG9Nb2RlbCA9IG51bGw7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICBwcm90ZWN0ZWQgb25Ub3VjaGVkOiBhbnkgPSBudWxsO1xuICBwcm90ZWN0ZWQgcmVzaXplTGlzdGVuZXI6ICgpID0+IHZvaWQ7XG5cbiAgcHJpdmF0ZSBfZGlzYWJsZWQ/OiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX2ZpZWxkTGFiZWw6IHN0cmluZztcbiAgcHJpdmF0ZSBfZmlsdGVyU2VydmljZTogUG9Mb29rdXBGaWx0ZXIgfCBzdHJpbmc7XG4gIHByaXZhdGUgX25vQXV0b2NvbXBsZXRlOiBib29sZWFuO1xuICBwcml2YXRlIF9wbGFjZWhvbGRlcjogc3RyaW5nID0gJyc7XG4gIHByaXZhdGUgX3JlcXVpcmVkPzogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9hdXRvSGVpZ2h0OiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBhdXRvSGVpZ2h0SW5pdGlhbFZhbHVlOiBib29sZWFuO1xuICBwcml2YXRlIG9uQ2hhbmdlUHJvcGFnYXRlOiBhbnkgPSBudWxsO1xuICBwcml2YXRlIHZhbGlkYXRvckNoYW5nZTogYW55O1xuXG4gIHByaXZhdGUgY29udHJvbCE6IEFic3RyYWN0Q29udHJvbDtcblxuICBwcml2YXRlIGluamVjdE9wdGlvbnM6IEluamVjdE9wdGlvbnMgPSB7XG4gICAgc2VsZjogdHJ1ZVxuICB9O1xuXG4gIC8qKlxuICAgKiBTZXJ2acOnbyByZXNwb25zw6F2ZWwgcG9yIGJ1c2NhciBvcyBkYWRvcyBkYSB0YWJlbGEgbmEgamFuZWxhLiBQb2RlIHNlciBpbmZvcm1hZG8gdW0gc2VydmnDp28gcXVlIGltcGxlbWVudGUgYSBpbnRlcmZhY2VcbiAgICogYFBvTG9va3VwRmlsdGVyYCBvdSB1bWEgVVJMLlxuICAgKlxuICAgKiBRdWFuZG8gdXRpbGl6YWRhIHVtYSBVUkwgZGUgdW0gc2VydmnDp28sIHNlcsOhIGNvbmNhdGVuYWRhIG5lc3RhIFVSTCBvIHZhbG9yIHF1ZSBkZXNlamEtc2UgZmlsdHJhciwgcG9yIGV4ZW1wbG86XG4gICAqXG4gICAqIGBgYFxuICAgKiB1cmwgKyA/cGFnZT0xJnBhZ2VTaXplPTIwJmZpbHRlcj1QZXRlclxuICAgKiBgYGBcbiAgICpcbiAgICogQ2FzbyB1dGlsaXphciBvcmRlbmHDp8OjbywgYSBjb2x1bmEgb3JkZW5hZGEgc2Vyw6EgZW52aWFkYSBhdHJhdsOpcyBkbyBwYXLDom1ldHJvIGBvcmRlcmAsIHBvciBleGVtcGxvOlxuICAgKiAtIENvbHVuYSBkZWNyZXNjZW50ZTpcbiAgICogYGBgXG4gICAqICB1cmwgKyA/cGFnZT0xJnBhZ2VTaXplPTIwJmZpbHRlcj1QZXRlciZvcmRlcj0tbmFtZVxuICAgKiBgYGBcbiAgICpcbiAgICogLSBDb2x1bmEgYXNjZW5kZW50ZTpcbiAgICogYGBgXG4gICAqICB1cmwgKyA/cGFnZT0xJnBhZ2VTaXplPTIwJmZpbHRlcj1QZXRlciZvcmRlcj1uYW1lXG4gICAqIGBgYFxuICAgKlxuICAgKiBTZSBmb3IgZGVmaW5pZG8gYSBwcm9wcmllZGFkZSBgcC1maWx0ZXItcGFyYW1zYCwgbyBtZXNtbyB0YW1iw6ltIHNlcsOhIGNvbmNhdGVuYWRvLiBQb3IgZXhlbXBsbywgcGFyYSBvXG4gICAqIHBhcsOibWV0cm8gYHsgYWdlOiAyMyB9YCBhIFVSTCBmaWNhcmlhOlxuICAgKlxuICAgKiBgYGBcbiAgICogdXJsICsgP3BhZ2U9MSZwYWdlU2l6ZT0yMCZhZ2U9MjMmZmlsdGVyPVBldGVyXG4gICAqIGBgYFxuICAgKlxuICAgKiBBbyBpbmljaWFyIG8gY2FtcG8gY29tIHZhbG9yLCBvcyByZWdpc3Ryb3Mgc2Vyw6NvIGJ1c2NhZG9zIGRhIHNlZ3VpbnRlIGZvcm1hOlxuICAgKiBgYGBcbiAgICogbW9kZWwgPSAxMjM0O1xuICAgKlxuICAgKiBHRVQgdXJsLzEyMzRcbiAgICogYGBgXG4gICAqXG4gICAqIENhc28gZXN0aXZlciBjb20gbcO6bHRpcGxhIHNlbGXDp8OjbyBoYWJpbGl0YWRhOlxuICAgKiBgYGBcbiAgICogbW9kZWwgPSBbMTIzNCwgNTY3OF1cbiAgICpcbiAgICogR0VUIHVybD8ke2ZpZWxkVmFsdWV9PTEyMzQsNTY3OFxuICAgKiBgYGBcbiAgICpcbiAgICogPiBFc3RhIFVSTCBkZXZlIHJldG9ybmFyIGUgcmVjZWJlciBvcyBkYWRvcyBubyBwYWRyw6NvIGRlIFtBUEkgZG8gUE8gVUldKGh0dHBzOi8vcG8tdWkuaW8vZ3VpZGVzL2FwaSkgZSB1dGlsaXphIG9zIHZhbG9yZXNcbiAgICogZGVmaW5pZG9zIG5hcyBwcm9wcmllZGFkZXMgYHAtZmllbGQtbGFiZWxgIGUgYHAtZmllbGQtdmFsdWVgIHBhcmEgYSBjb25zdHJ1w6fDo28gZG8gYHBvLWxvb2t1cGAuXG4gICAqXG4gICAqIENhc28gbyB1c3XDoXJpbyBkaWdpdGUgdW0gdmFsb3IgZSBwcmVzc2lvbmUgYSB0ZWNsYSAqVEFCKiBwYXJhIHJlYWxpemFyIGEgYnVzY2EgZGUgdW0gcmVnaXN0cm8gZXNwZWPDrWZpY28sIG8gdmFsb3IgcXVlIHNlXG4gICAqIGRlc2VqYSBmaWx0cmFyIHNlcsOhIGNvZGlmaWNhZG8gdXRpbGl6YW5kbyBhIGZ1bsOnw6NvIFtlbmNvZGVVUklDb21wb25lbnRdKGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtZW5jb2RldXJpY29tcG9uZW50LXVyaWNvbXBvbmVudClcbiAgICogZSBjb25jYXRlbmFkbyBuYSBVUkwgZGEgc2VndWludGUgZm9ybWE6XG4gICAqXG4gICAqIGBgYFxuICAgKiB1cmwvdmFsb3IlMjBxdWUlMjBzZSUyMGRlc2VqYSUyMGZpbHRyYXJcbiAgICogYGBgXG4gICAqXG4gICAqID4gUXVhbmRvIGluZm9ybWFkbyB1bSBzZXJ2acOnbyBxdWUgaW1wbGVtZW50ZSBhIGludGVyZmFjZSBgUG9Mb29rdXBGaWx0ZXJgIG8gdHJhdGFtZW50byBkZSBlbmNvZGluZyBkbyB2YWxvciBhIHNlciBmaWx0cmFkbyBmaWNhcsOhIGEgY2FyZ28gZG8gZGVzZW52b2x2ZWRvci5cbiAgICpcbiAgICovXG4gIEBJbnB1dCgncC1maWx0ZXItc2VydmljZScpIHNldCBmaWx0ZXJTZXJ2aWNlKGZpbHRlclNlcnZpY2U6IFBvTG9va3VwRmlsdGVyIHwgc3RyaW5nKSB7XG4gICAgdGhpcy5fZmlsdGVyU2VydmljZSA9IGZpbHRlclNlcnZpY2U7XG4gICAgdGhpcy5zZXRTZXJ2aWNlKHRoaXMuZmlsdGVyU2VydmljZSk7XG4gIH1cblxuICBnZXQgZmlsdGVyU2VydmljZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fZmlsdGVyU2VydmljZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIERlZmluZSBhIHByb3ByaWVkYWRlIG5hdGl2YSBgYXV0b2NvbXBsZXRlYCBkbyBjYW1wbyBjb21vIGBvZmZgLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoJ3Atbm8tYXV0b2NvbXBsZXRlJykgc2V0IG5vQXV0b2NvbXBsZXRlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fbm9BdXRvY29tcGxldGUgPSBjb252ZXJ0VG9Cb29sZWFuKHZhbHVlKTtcbiAgfVxuXG4gIGdldCBub0F1dG9jb21wbGV0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fbm9BdXRvY29tcGxldGU7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBEZWZpbmUgcXVlIG8gY2FtcG8gc2Vyw6Egb2JyaWdhdMOzcmlvLlxuICAgKiA+IEVzdGEgcHJvcHJpZWRhZGUgw6kgZGVzY29uc2lkZXJhZGEgcXVhbmRvIG8gaW5wdXQgZXN0w6EgZGVzYWJpbGl0YWRvIGAocC1kaXNhYmxlZClgLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoJ3AtcmVxdWlyZWQnKSBzZXQgcmVxdWlyZWQocmVxdWlyZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9yZXF1aXJlZCA9IGNvbnZlcnRUb0Jvb2xlYW4ocmVxdWlyZWQpO1xuXG4gICAgdGhpcy52YWxpZGF0ZU1vZGVsKHRoaXMudmFsdWVUb01vZGVsKTtcbiAgfVxuXG4gIGdldCByZXF1aXJlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fcmVxdWlyZWQ7XG4gIH1cblxuICAvKipcbiAgICogRGVmaW5lIHNlIGEgaW5kaWNhw6fDo28gZGUgY2FtcG8gb2JyaWdhdMOzcmlvIHNlcsOpIGV4aWJpZGEuXG4gICAqXG4gICAqID4gTsOjbyBzZXLDoSBleGliaWRhIGEgaW5kaWNhw6fDo28gc2U6XG4gICAqIC0gTsOjbyBwb3NzdWlyIGBwLWhlbHBgIGUvb3UgYHAtbGFiZWxgLlxuICAgKi9cbiAgQElucHV0KCdwLXNob3ctcmVxdWlyZWQnKSBzaG93UmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEluZGljYSBxdWUgbyBjYW1wbyBzZXLDoSBkZXNhYmlsaXRhZG8uXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqIEBvcHRpb25hbFxuICAgKi9cbiAgQElucHV0KCdwLWRpc2FibGVkJykgc2V0IGRpc2FibGVkKGRpc2FibGVkOiBib29sZWFuKSB7XG4gICAgdGhpcy5fZGlzYWJsZWQgPSA8YW55PmRpc2FibGVkID09PSAnJyA/IHRydWUgOiBjb252ZXJ0VG9Cb29sZWFuKGRpc2FibGVkKTtcbiAgfVxuXG4gIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGRlZmF1bHRTZXJ2aWNlOiBQb0xvb2t1cEZpbHRlclNlcnZpY2UsXG4gICAgQEluamVjdChJbmplY3RvcikgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHVibGljIHBvTG9va3VwTW9kYWxTZXJ2aWNlOiBQb0xvb2t1cE1vZGFsU2VydmljZVxuICApIHt9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMuZ2V0U3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLmdldFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaW5pdGlhbGl6ZUNvbHVtbigpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc2V0Q29udHJvbCgpO1xuICB9XG5cbiAgY2xlYW5Nb2RlbCgpIHtcbiAgICB0aGlzLmNsZWFuVmlld1ZhbHVlKCk7XG4gICAgdGhpcy5jYWxsT25DaGFuZ2UodW5kZWZpbmVkKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlcy5jb2x1bW5zPy5jdXJyZW50VmFsdWUpIHtcbiAgICAgIHRoaXMuY29sdW1ucyA9IGNoYW5nZXMuY29sdW1ucy5jdXJyZW50VmFsdWU7XG4gICAgICB0aGlzLnBvTG9va3VwTW9kYWxTZXJ2aWNlPy5zZXRDaGFuZ2VDb2x1bW5zKHRoaXMuY29sdW1ucyk7XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXMubXVsdGlwbGUgJiYgaXNUeXBlb2YodGhpcy5maWx0ZXJTZXJ2aWNlLCAnc3RyaW5nJykpIHtcbiAgICAgIHRoaXMuc2VydmljZS5zZXRDb25maWcodGhpcy5maWx0ZXJTZXJ2aWNlLCB0aGlzLmZpZWxkVmFsdWUsIHRoaXMubXVsdGlwbGUpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEZ1bsOnw6NvIGltcGxlbWVudGFkYSBkbyBDb250cm9sVmFsdWVBY2Nlc3NvclxuICAvLyBVc2FkYSBwYXJhIGludGVyY2VwdGFyIG9zIGVzdGFkb3MgZGUgaGFiaWxpdGFkbyB2aWEgZm9ybXMgYXBpXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbikge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICB9XG5cbiAgcmVnaXN0ZXJPblZhbGlkYXRvckNoYW5nZShmbjogKCkgPT4gdm9pZCkge1xuICAgIHRoaXMudmFsaWRhdG9yQ2hhbmdlID0gZm47XG4gIH1cblxuICAvLyBGdW7Dp8OjbyBpbXBsZW1lbnRhZGEgZG8gQ29udHJvbFZhbHVlQWNjZXNzb3IuXG4gIC8vIFVzYWRhIHBhcmEgaW50ZXJjZXB0YXIgYXMgbXVkYW7Dp2FzIGUgbsOjbyBhdHVhbGl6YXIgYXV0b21hdGljYW1lbnRlIG8gTW9kZWwuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZnVuYzogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZVByb3BhZ2F0ZSA9IGZ1bmM7XG4gIH1cblxuICAvLyBGdW7Dp8OjbyBpbXBsZW1lbnRhZGEgZG8gQ29udHJvbFZhbHVlQWNjZXNzb3IuXG4gIC8vIFVzYWRhIHBhcmEgaW50ZXJjZXB0YXIgYXMgbXVkYW7Dp2FzIGUgbsOjbyBhdHVhbGl6YXIgYXV0b21hdGljYW1lbnRlIG8gTW9kZWwuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZ1bmM6IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkID0gZnVuYztcbiAgfVxuXG4gIC8vIFNlbGVjaW9uYSBvIHZhbG9yIGRvIG1vZGVsLlxuICBzZWxlY3RWYWx1ZSh2YWx1ZVNlbGVjdGVkOiBhbnkpIHtcbiAgICB0aGlzLnZhbHVlVG9Nb2RlbCA9IHZhbHVlU2VsZWN0ZWQ7XG4gICAgdGhpcy5tdWx0aXBsZVxuICAgICAgPyB0aGlzLmNhbGxPbkNoYW5nZSh0aGlzLnZhbHVlVG9Nb2RlbClcbiAgICAgIDogdGhpcy52YWx1ZVRvTW9kZWxcbiAgICAgICAgPyB0aGlzLmNhbGxPbkNoYW5nZSh0aGlzLnZhbHVlVG9Nb2RlbFt0aGlzLmZpZWxkVmFsdWVdKVxuICAgICAgICA6IHRoaXMuY2FsbE9uQ2hhbmdlKHVuZGVmaW5lZCk7XG4gICAgdGhpcy5zZWxlY3RlZC5lbWl0KHZhbHVlU2VsZWN0ZWQpO1xuICB9XG5cbiAgY2FsbE9uQ2hhbmdlKHZhbHVlOiBhbnkpIHtcbiAgICAvLyBRdWFuZG8gbyBpbnB1dCBuw6NvIHBvc3N1aSB1bSBmb3JtdWzDoXJpbywgZW50w6NvIGVzdGEgZnVuw6fDo28gbsOjbyDDqSByZWdpc3RyYWRhLlxuICAgIGlmICh0aGlzLm9uQ2hhbmdlUHJvcGFnYXRlKSB7XG4gICAgICB0aGlzLm9uQ2hhbmdlUHJvcGFnYXRlKHZhbHVlKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vbGRWYWx1ZVRvTW9kZWwgIT09IHRoaXMudmFsdWVUb01vZGVsKSB7XG4gICAgICB0aGlzLmNoYW5nZS5lbWl0KHZhbHVlKTtcbiAgICB9XG5cbiAgICAvLyBBcm1hemVuYXIgbyB2YWxvciBhbnRpZ28gZG8gbW9kZWxcbiAgICB0aGlzLm9sZFZhbHVlVG9Nb2RlbCA9IHRoaXMudmFsdWVUb01vZGVsO1xuICB9XG5cbiAgc2VhcmNoQnlJZCh2YWx1ZSkge1xuICAgIGxldCBjaGVja2VkVmFsdWUgPSB2YWx1ZTtcblxuICAgIGlmICh0eXBlb2YgY2hlY2tlZFZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgY2hlY2tlZFZhbHVlID0gY2hlY2tlZFZhbHVlLnRyaW0oKTtcbiAgICB9XG5cbiAgICBpZiAoY2hlY2tlZFZhbHVlICE9PSAnJykge1xuICAgICAgY29uc3Qgb2xkRGlzYWJsZSA9IHRoaXMuZGlzYWJsZWQ7XG4gICAgICB0aGlzLmRpc2FibGVkID0gdHJ1ZTtcblxuICAgICAgaWYgKHRoaXMuY29udHJvbCkge1xuICAgICAgICAvLyA6VE9ETzogUmV0aXJhciBubyBmdXR1cm8gcG9pcyBlc3NlIHNldFRpbWVvdXQgZm9pIGZlaXRvXG4gICAgICAgIC8vIHBvaXMgcXVhbmRvIG8gY2FtcG8gw6kgYWNpb25hZG8gcGVsb3MgbcOpdG9kb3Mgc2V0VmFsdWUgb3UgcGF0Y2hWYWx1ZVxuICAgICAgICAvLyBhIG11ZGFuw6dhIG7Do28gw6kgZGV0ZWN0YWRhXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5jb250cm9sLm1hcmtBc1BlbmRpbmcoKSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZ2V0U3Vic2NyaXB0aW9uID0gdGhpcy5zZXJ2aWNlXG4gICAgICAgIC5nZXRPYmplY3RCeVZhbHVlKHZhbHVlLCB0aGlzLmZpbHRlclBhcmFtcylcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgZmluYWxpemUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5kaXNhYmxlZCA9IG9sZERpc2FibGU7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmNvbnRyb2wpIHtcbiAgICAgICAgICAgICAgdGhpcy5jb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICAgZWxlbWVudCA9PiB7XG4gICAgICAgICAgICBpZiAoZWxlbWVudD8ubGVuZ3RoIHx8ICghQXJyYXkuaXNBcnJheShlbGVtZW50KSAmJiBlbGVtZW50KSkge1xuICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShlbGVtZW50KSAmJiBlbGVtZW50Lmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldERpc2NsYWltZXJzKGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVmlzaWJsZUl0ZW1zKCk7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdE1vZGVsKHRoaXMubXVsdGlwbGUgPyBlbGVtZW50IDogW2VsZW1lbnRdKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMuY2xlYW5Nb2RlbCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgZXJyb3IgPT4ge1xuICAgICAgICAgICAgdGhpcy5jbGVhbk1vZGVsKCk7XG4gICAgICAgICAgICB0aGlzLm9uRXJyb3IuZW1pdChlcnJvcik7XG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNsZWFuTW9kZWwoKTtcbiAgICB9XG4gIH1cblxuICB2YWxpZGF0ZShhYnN0cmFjdENvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IHsgW2tleTogc3RyaW5nXTogYW55IH0ge1xuICAgIGlmIChyZXF1aXJlZEZhaWxlZCh0aGlzLnJlcXVpcmVkLCB0aGlzLmRpc2FibGVkLCBhYnN0cmFjdENvbnRyb2wudmFsdWUpKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICByZXF1aXJlZDoge1xuICAgICAgICAgIHZhbGlkOiBmYWxzZVxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgIGlmICh2YWx1ZT8ubGVuZ3RoIHx8ICghQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUpKSB7XG4gICAgICAvLyBFc3RhIGNvbmRpw6fDo28gw6kgZXhlY3V0YWRhIHNvbWVudGUgcXVhbmRvIMOpIHBhc3NhZG8gbyBJRCBwYXJhIHJlYWxpemFyIGEgYnVzY2EgcGVsbyBJRC5cbiAgICAgIHRoaXMuc2VhcmNoQnlJZCh2YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY2xlYW5WaWV3VmFsdWUoKTtcbiAgICB9XG4gIH1cblxuICAvLyBSZXRvcm5hIG8gU3Vic2NyaWJlciBkYSBwcm9wcmllZGFkZSBnZXRTdWJzY3JpcHRpb24gcXVlIG9jb3JyZVxuICAvLyBubyBldmVudG8gZGUgYmx1ciBxdWUgZXhlY3V0YSBvIG3DqXRvZG8gc2VhcmNoRXZlbnQoKS5cbiAgZ2V0U3Vic2NyaXB0aW9uRnVuY3Rpb24oKTogU3Vic2NyaXB0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5nZXRTdWJzY3JpcHRpb247XG4gIH1cblxuICBwcm90ZWN0ZWQgY2xlYW5WaWV3VmFsdWUoKSB7XG4gICAgdGhpcy5zZXREaXNjbGFpbWVycyhbXSk7XG4gICAgdGhpcy5zZXRWaWV3VmFsdWUoJycsIHt9KTtcbiAgICB0aGlzLm9sZFZhbHVlID0gJyc7XG4gICAgdGhpcy52YWx1ZVRvTW9kZWwgPSBudWxsO1xuICB9XG5cbiAgLy8gRm9ybWF0YSBhIGxhYmVsIGRvIGNhbXBvLlxuICBwcm90ZWN0ZWQgZ2V0Rm9ybWF0dGVkTGFiZWwodmFsdWU6IGFueSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHZhbHVlID8gdGhpcy5rZXlzRGVzY3JpcHRpb24ubWFwKGNvbHVtbiA9PiB2YWx1ZVtjb2x1bW5dKS5qb2luKCcgLSAnKSA6ICcnO1xuICB9XG5cbiAgLy8gQ2hhbWEgbyBtw6l0b2RvIHdyaXRlVmFsdWUgZSBwcmVlbmNoZSBvIG1vZGVsLlxuICBwcm90ZWN0ZWQgc2VsZWN0TW9kZWwob3B0aW9uczogQXJyYXk8YW55Pikge1xuICAgIGlmIChvcHRpb25zLmxlbmd0aCkge1xuICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbnMgPSBbLi4ub3B0aW9uc107XG5cbiAgICAgIGNvbnN0IG5ld01vZGVsID0gdGhpcy5tdWx0aXBsZSA/IG9wdGlvbnMubWFwKG9wdGlvbiA9PiBvcHRpb25bdGhpcy5maWVsZFZhbHVlXSkgOiBvcHRpb25zWzBdO1xuICAgICAgdGhpcy5zZWxlY3RWYWx1ZShuZXdNb2RlbCk7XG5cbiAgICAgIGlmIChvcHRpb25zLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICB0aGlzLm9sZFZhbHVlID0gb3B0aW9uc1swXVt0aGlzLmZpZWxkTGFiZWxdO1xuICAgICAgICB0aGlzLnNldFZpZXdWYWx1ZSh0aGlzLmdldEZvcm1hdHRlZExhYmVsKG9wdGlvbnNbMF0pLCBvcHRpb25zWzBdKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3RWYWx1ZSh1bmRlZmluZWQpO1xuICAgICAgdGhpcy5jbGVhblZpZXdWYWx1ZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCB2YWxpZGF0ZU1vZGVsKG1vZGVsOiBhbnkpIHtcbiAgICBpZiAodGhpcy52YWxpZGF0b3JDaGFuZ2UpIHtcbiAgICAgIHRoaXMudmFsaWRhdG9yQ2hhbmdlKG1vZGVsKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldFNlcnZpY2Uoc2VydmljZTogUG9Mb29rdXBGaWx0ZXIgfCBzdHJpbmcpIHtcbiAgICBpZiAoaXNUeXBlb2Yoc2VydmljZSwgJ29iamVjdCcpKSB7XG4gICAgICB0aGlzLnNlcnZpY2UgPSA8UG9Mb29rdXBGaWx0ZXJTZXJ2aWNlPnNlcnZpY2U7XG4gICAgfVxuXG4gICAgaWYgKHNlcnZpY2UgJiYgaXNUeXBlb2Yoc2VydmljZSwgJ3N0cmluZycpKSB7XG4gICAgICB0aGlzLnNlcnZpY2UgPSB0aGlzLmRlZmF1bHRTZXJ2aWNlO1xuICAgICAgdGhpcy5zZXJ2aWNlLnNldENvbmZpZyhzZXJ2aWNlLCB0aGlzLmZpZWxkVmFsdWUsIHRoaXMubXVsdGlwbGUpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0Q29udHJvbCgpIHtcbiAgICBjb25zdCBuZ0NvbnRyb2w6IE5nQ29udHJvbCA9IHRoaXMuaW5qZWN0b3IuZ2V0KE5nQ29udHJvbCwgbnVsbCwgdGhpcy5pbmplY3RPcHRpb25zKTtcblxuICAgIGlmIChuZ0NvbnRyb2wpIHtcbiAgICAgIHRoaXMuY29udHJvbCA9IG5nQ29udHJvbC5jb250cm9sIGFzIFVudHlwZWRGb3JtQ29udHJvbDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemVDb2x1bW4oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZmllbGRMYWJlbCkge1xuICAgICAgdGhpcy5rZXlzRGVzY3JpcHRpb24gPSBbdGhpcy5maWVsZExhYmVsXTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5rZXlzRGVzY3JpcHRpb24gPSBbXTtcblxuICAgICAgdGhpcy5rZXlzRGVzY3JpcHRpb24gPSB0aGlzLmNvbHVtbnMuZmlsdGVyKGVsZW1lbnQgPT4gZWxlbWVudC5maWVsZExhYmVsKS5tYXAoZWxlbWVudCA9PiBlbGVtZW50LnByb3BlcnR5KTtcbiAgICB9XG4gIH1cblxuICAvLyBBdHJpYnVpIHVtIG91IG1haXMgdmFsb3JlcyBhbyBjYW1wby5cbiAgYWJzdHJhY3Qgc2V0Vmlld1ZhbHVlKHZhbHVlOiBhbnksIG9iamVjdDogYW55KTogdm9pZDtcblxuICAvLyBNw6l0b2RvIGNvbSBhIGltcGxlbWVudGHDp8OjbyBwYXJhIGFicmlyIG8gbG9va3VwLlxuICBhYnN0cmFjdCBvcGVuTG9va3VwKCk6IHZvaWQ7XG5cbiAgYWJzdHJhY3Qgc2V0RGlzY2xhaW1lcnMoYSk7XG4gIGFic3RyYWN0IHVwZGF0ZVZpc2libGVJdGVtcygpO1xufVxuIl19
|
|
762
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tbG9va3VwLWJhc2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9jb21wb25lbnRzL3BvLWZpZWxkL3BvLWxvb2t1cC9wby1sb29rdXAtYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUVOLFFBQVEsRUFDUixLQUFLLEVBSUwsTUFBTSxFQUVQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBeUMsU0FBUyxFQUFpQyxNQUFNLGdCQUFnQixDQUFDO0FBRWpILE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUcxQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQU8vQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQzs7OztBQUVsRjs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFFSCxNQUFNLE9BQWdCLHFCQUFxQjtJQTJlL0I7SUFDa0I7SUFDbkI7SUExZVQ7Ozs7Ozs7Ozs7T0FVRztJQUM0RCxTQUFTLEdBQVksS0FBSyxDQUFDO0lBRTFGOzs7OztPQUtHO0lBQ2UsS0FBSyxDQUFVO0lBRWpDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BMkNHO0lBQ2tCLFFBQVEsQ0FBb0I7SUFFakQsK0JBQStCO0lBQ2QsSUFBSSxDQUFVO0lBRS9CLHNFQUFzRTtJQUN0RSxJQUE0QixXQUFXLENBQUMsS0FBYTtRQUNuRCxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssSUFBSSxFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVELElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLFlB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aEMsS0FBSzttQkFBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgRGlyZWN0aXZlLFxuICBFdmVudEVtaXR0ZXIsXG4gIEluamVjdCxcbiAgSW5qZWN0T3B0aW9ucyxcbiAgSW5qZWN0b3IsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXNcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOZ0NvbnRyb2wsIFVudHlwZWRGb3JtQ29udHJvbCwgVmFsaWRhdG9yIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaW5hbGl6ZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgSW5wdXRCb29sZWFuIH0gZnJvbSAnLi4vLi4vLi4vZGVjb3JhdG9ycyc7XG5pbXBvcnQgeyBjb252ZXJ0VG9Cb29sZWFuLCBpc1R5cGVvZiB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL3V0aWwnO1xuaW1wb3J0IHsgcmVxdWlyZWRGYWlsZWQgfSBmcm9tICcuLi92YWxpZGF0b3JzJztcbmltcG9ydCB7IFBvTG9va3VwQWR2YW5jZWRGaWx0ZXIgfSBmcm9tICcuL2ludGVyZmFjZXMvcG8tbG9va3VwLWFkdmFuY2VkLWZpbHRlci5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9Mb29rdXBDb2x1bW4gfSBmcm9tICcuL2ludGVyZmFjZXMvcG8tbG9va3VwLWNvbHVtbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9Mb29rdXBGaWx0ZXIgfSBmcm9tICcuL2ludGVyZmFjZXMvcG8tbG9va3VwLWZpbHRlci5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9Mb29rdXBMaXRlcmFscyB9IGZyb20gJy4vaW50ZXJmYWNlcy9wby1sb29rdXAtbGl0ZXJhbHMuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvTG9va3VwRmlsdGVyU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvcG8tbG9va3VwLWZpbHRlci5zZXJ2aWNlJztcbmltcG9ydCB7IFBvTG9va3VwTW9kYWxTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9wby1sb29rdXAtbW9kYWwuc2VydmljZSc7XG5pbXBvcnQgeyBQb1RhYmxlQ29sdW1uU3BhY2luZyB9IGZyb20gJy4uLy4uL3BvLXRhYmxlL2VudW1zL3BvLXRhYmxlLXNwYWNpbmcuZW51bSc7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uXG4gKlxuICogQ29tcG9uZW50ZSB1dGlsaXphZG8gcGFyYSBhYnJpciB1bWEgamFuZWxhIGRlIGJ1c2NhIGNvbSB1bWEgdGFiZWxhIHF1ZSBsaXN0YSBkYWRvcyBkZSB1bSBzZXJ2acOnby4gTmVzdGEgamFuZWxhIMOpIHBvc3PDrXZlbCBidXNjYXIgZVxuICogc2VsZWNpb25hciB1bSBvdSBtYWlzIHJlZ2lzdHJvcyBxdWUgc2Vyw6NvIGVudmlhZG9zIHBhcmEgbyBjYW1wby4gTyBgcG8tbG9va3VwYCBwZXJtaXRlIHF1ZSBvIHVzdcOhcmlvIGRpZ2l0ZSB1bSB2YWxvciBlIHByZXNzaW9uZSBhIHRlY2xhICpUQUIqIHBhcmFcbiAqIGJ1c2NhciB1bSByZWdpc3Ryby5cbiAqXG4gKiA+IENhc28gbyBjYW1wbyBzZWphIGluaWNpYWRvIG91IHByZWVuY2hpZG8gY29tIHVtIHZhbG9yIGluZXhpc3RlbnRlIG5hIGJ1c2NhLCBvIG1lc21vIHNlcsOhIGxpbXBhZG8uXG4gKiBObyBzZWd1bmRvIGNhc28gb2NvcnJlcsOhIGFww7NzIGVzdGUgcGVyZGVyIG8gZm9jbzsgYW1ib3Mgb3MgY2Fzb3MgbyBjYW1wbyBmaWNhcsOhIGludsOhbGlkbyBxdWFuZG8gcmVxdWVyaWRvLlxuICpcbiAqID4gRW5xdWFudG8gbyBjb21wb25lbnRlIHJlYWxpemEgYSByZXF1aXNpw6fDo28gYW8gc2Vydmlkb3IsIG8gY29tcG9uZW50ZSBmaWNhcsOhIGRlc2FiaWxpdGFkbyBlIGNvbSBvIHN0YXR1cyBpbnRlcm5vIGRvXG4gKiBbbW9kZWxvXShodHRwczovL2FuZ3VsYXIuaW8vZ3VpZGUvZm9ybS12YWxpZGF0aW9uI2NyZWF0aW5nLWFzeW5jaHJvbm91cy12YWxpZGF0b3JzKSBjb21vIGBwZW5kaW5nYC5cbiAqXG4gKiBFc3RlIGNvbXBvbmVudGUgbsOjbyDDqSByZWNvbWVuZGFkbyBxdWFuZG8gYSBidXNjYSBkb3MgZGFkb3MgcG9zc3VpciBwb3VjYXMgaW5mb3JtYcOnw7VlcywgcGFyYSBpc3NvIHV0aWxpemUgb3V0cm9zIGNvbXBvbmVudGVzIGNvbW8gb1xuICogYHBvLXNlbGVjdGAgb3UgbyBgcG8tY29tYm9gLlxuICovXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBQb0xvb2t1cEJhc2VDb21wb25lbnRcbiAgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25EZXN0cm95LCBPbkluaXQsIFZhbGlkYXRvciwgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzXG57XG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEFwbGljYSBmb2NvIG5vIGVsZW1lbnRvIGFvIHNlciBpbmljaWFkby5cbiAgICpcbiAgICogPiBDYXNvIG1haXMgZGUgdW0gZWxlbWVudG8gc2VqYSBjb25maWd1cmFkbyBjb20gZXNzYSBwcm9wcmllZGFkZSwgYXBlbmFzIG8gw7psdGltbyBlbGVtZW50byBkZWNsYXJhZG8gY29tIGVsYSB0ZXLDoSBvIGZvY28uXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCh7IGFsaWFzOiAncC1hdXRvLWZvY3VzJywgdHJhbnNmb3JtOiBjb252ZXJ0VG9Cb29sZWFuIH0pIGF1dG9Gb2N1czogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBMYWJlbCBkbyBjYW1wby5cbiAgICpcbiAgICogPiBRdWFuZG8gdXRpbGl6YXIgZXN0YSBwcm9wcmllZGFkZSBvIHNldSB2YWxvciBzZXLDoSB1dGlsaXphZG8gY29tbyB0w610dWxvIGRhIG1vZGFsIGRvIGNvbXBvbmVudGUgY2FzbyBuw6NvIHRlbmhhXG4gICAqIHNpZG8gZGVmaW5pZG8gdW0gYG1vZGFsVGl0bGVgIG5hIHByb3ByaWVkYWRlIGBwLWxpdGVyYWxzYC5cbiAgICovXG4gIEBJbnB1dCgncC1sYWJlbCcpIGxhYmVsPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogT2JqZXRvIGNvbSBhcyBsaXRlcmFpcyB1c2FkYXMgbm8gYHBvLWxvb2t1cGAuXG4gICAqXG4gICAqIEV4aXN0ZW0gZHVhcyBtYW5laXJhcyBkZSBjdXN0b21pemFyIG8gY29tcG9uZW50ZSwgcGFzc2FuZG8gdW0gb2JqZXRvIGNvbSB0b2RhcyBhcyBsaXRlcmFpcyBkaXNwb27DrXZlaXM6XG4gICAqXG4gICAqIGBgYFxuICAgKiAgY29uc3QgY3VzdG9tTGl0ZXJhbHM6IFBvTG9va3VwTGl0ZXJhbHMgPSB7XG4gICAqICAgIG1vZGFsUHJpbWFyeUFjdGlvbkxhYmVsOiAnU2VsZWN0JyxcbiAgICogICAgbW9kYWxTZWNvbmRhcnlBY3Rpb25MYWJlbDogJ0NhbmNlbCcsXG4gICAqICAgIG1vZGFsUGxhY2Vob2xkZXI6ICdTZWFyY2ggVmFsdWUnLFxuICAgKiAgICBtb2RhbFRhYmxlTm9Db2x1bW5zOiAnTm8gY29sdW1ucycsXG4gICAqICAgIG1vZGFsVGFibGVOb0RhdGE6ICdObyBkYXRhJyxcbiAgICogICAgbW9kYWxUYWJsZUxvYWRpbmdEYXRhOiAnTG9hZGluZyBkYXRhJyxcbiAgICogICAgbW9kYWxUYWJsZUxvYWRNb3JlRGF0YTogJ0xvYWQgbW9yZScsXG4gICAqICAgIG1vZGFsVGl0bGU6ICdTZWxlY3QgYSB1c2VyJyxcbiAgICogICAgbW9kYWxBZHZhbmNlZFNlYXJjaDogJ0FkdmFuY2VkIHNlYXJjaCcsXG4gICAqICAgIG1vZGFsQWR2YW5jZWRTZWFyY2hUaXRsZTogJ0FkdmFuY2VkIHNlYXJjaCcsXG4gICAqICAgIG1vZGFsQWR2YW5jZWRTZWFyY2hQcmltYXJ5QWN0aW9uTGFiZWw6ICdGaWx0ZXInLFxuICAgKiAgICBtb2RhbEFkdmFuY2VkU2VhcmNoU2Vjb25kYXJ5QWN0aW9uTGFiZWw6ICdSZXR1cm4nLFxuICAgKiAgICBtb2RhbERpc2NsYWltZXJHcm91cFRpdGxlOiAnUHJlc2VudGluZyByZXN1bHRzIGZpbHRlcmVkIGJ5OidcbiAgICogIH07XG4gICAqIGBgYFxuICAgKlxuICAgKiBPdSBwYXNzYW5kbyBhcGVuYXMgYXMgbGl0ZXJhaXMgcXVlIGRlc2VqYSBjdXN0b21pemFyOlxuICAgKlxuICAgKiBgYGBcbiAgICogIGNvbnN0IGN1c3RvbUxpdGVyYWxzOiBQb0xvb2t1cExpdGVyYWxzID0ge1xuICAgKiAgICBtb2RhbFByaW1hcnlBY3Rpb25MYWJlbDogJ1NlbGVjdCdcbiAgICogIH07XG4gICAqIGBgYFxuICAgKlxuICAgKiBFIHBhcmEgY2FycmVnYXIgYXMgbGl0ZXJhaXMgY3VzdG9taXphZGFzLCBiYXN0YSBhcGVuYXMgcGFzc2FyIG8gb2JqZXRvIHBhcmEgbyBjb21wb25lbnRlLlxuICAgKlxuICAgKiBgYGBcbiAgICogPHBvLWxvb2t1cFxuICAgKiAgIFtwLWxpdGVyYWxzXT1cImN1c3RvbUxpdGVyYWxzXCI+XG4gICAqIDwvcG8tbG9va3VwPlxuICAgKiBgYGBcbiAgICpcbiAgICogPiBPIG9iamV0byBwYWRyw6NvIGRlIGxpdGVyYWlzIHNlcsOhIHRyYWR1emlkbyBkZSBhY29yZG8gY29tIG8gaWRpb21hIGRvXG4gICAqIFtgUG9JMThuU2VydmljZWBdKC9kb2N1bWVudGF0aW9uL3BvLWkxOG4pIG91IGRvIGJyb3dzZXIuXG4gICAqL1xuICBASW5wdXQoJ3AtbGl0ZXJhbHMnKSBsaXRlcmFscz86IFBvTG9va3VwTGl0ZXJhbHM7XG5cbiAgLyoqIFRleHRvIGRlIGFwb2lvIGRvIGNhbXBvLiAqL1xuICBASW5wdXQoJ3AtaGVscCcpIGhlbHA/OiBzdHJpbmc7XG5cbiAgLyoqIE1lbnNhZ2VtIHF1ZSBhcGFyZWNlcsOhIGVucXVhbnRvIG8gY2FtcG8gbsOjbyBlc3RpdmVyIHByZWVuY2hpZG8uICovXG4gIEBJbnB1dCgncC1wbGFjZWhvbGRlcicpIHNldCBwbGFjZWhvbGRlcih2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fcGxhY2Vob2xkZXIgPSB2YWx1ZSB8fCAnJztcbiAgfVxuXG4gIGdldCBwbGFjZWhvbGRlcigpIHtcbiAgICByZXR1cm4gdGhpcy5fcGxhY2Vob2xkZXI7XG4gIH1cblxuICAvKiogTm9tZSBlIElkIGRvIGNvbXBvbmVudGUuICovXG4gIEBJbnB1dCgnbmFtZScpIG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEluZGljYSBhIGNvbHVuYSBxdWUgc2Vyw6EgdXRpbGl6YWRhIGNvbW8gdmFsb3IgZG8gY2FtcG8uXG4gICAqXG4gICAqID4gQXRlbsOnw6NvOiBDYXNvIG7Do28gc2VqYSBwYXNzYWRhIG91IHRlbmhhIG8gY29udGXDumRvIGluY29ycmV0bywgbsOjbyBpcsOhIGF0dWFsaXphciBvIG1vZGVsIGRvIGZvcm11bMOhcmlvLlxuICAgKi9cbiAgQElucHV0KCdwLWZpZWxkLXZhbHVlJykgZmllbGRWYWx1ZTogc3RyaW5nO1xuXG4gIC8qKiBJbmRpY2EgYSBjb2x1bmEgcXVlIHNlcsOhIHV0aWxpemFkYSBjb21vIGRlc2NyacOnw6NvIGRvIGNhbXBvIGUgY29tbyBmaWx0cm8gZGVudHJvIGRhIGphbmVsYS4gKi9cbiAgQElucHV0KCdwLWZpZWxkLWxhYmVsJykgc2V0IGZpZWxkTGFiZWwodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX2ZpZWxkTGFiZWwgPSB2YWx1ZTtcbiAgICB0aGlzLmtleXNEZXNjcmlwdGlvbiA9IFt0aGlzLmZpZWxkTGFiZWxdO1xuICB9XG5cbiAgZ2V0IGZpZWxkTGFiZWwoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpZWxkTGFiZWw7XG4gIH1cblxuICAvKiogVmFsb3IgcXVlIHNlcsOhIHJlcGFzc2FkbyBjb21vIHBhcsOibWV0cm8gcGFyYSBhIFVSTCBvdSBhb3MgbcOpdG9kb3MgZG8gc2VydmnDp28gcXVlIGltcGxlbWVudGFtIGEgaW50ZXJmYWNlIGBQb0xvb2t1cEZpbHRlcmAuICovXG4gIEBJbnB1dCgncC1maWx0ZXItcGFyYW1zJykgZmlsdGVyUGFyYW1zPzogYW55O1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEZvcm1hdG8gZGUgZXhpYmnDp8OjbyBkbyBjYW1wby5cbiAgICpcbiAgICogUmVjZWJlIHVtYSBmdW7Dp8OjbyBxdWUgZGV2ZSByZXRvcm5hciB1bWEgKnN0cmluZyogY29tIG8vb3MgdmFsb3JlcyBkbyBvYmpldG8gZm9ybWF0YWRvcyBwYXJhIGV4aWJpw6fDo28sIHBvciBleGVtcGxvOlxuICAgKlxuICAgKiBgYGBcbiAgICogZmllbGRGb3JtYXQob2JqKSB7XG4gICAqICAgcmV0dXJuIGAke29iai5pZH0gLSAke29iai5uYW1lfWA7XG4gICAqIH1cbiAgICogYGBgXG4gICAqID4gRXN0YSBwcm9wcmllZGFkZSBzb2JyZXDDtWUgbyB2YWxvciBkYSBwcm9wcmllZGFkZSBgcC1maWVsZC1sYWJlbGAgbmEgZGVzY3Jpw6fDo28gZG8gY2FtcG8uXG4gICAqXG4gICAqIFBvZGUtc2UgaW5mb3JtYXIgdW1hIGxpc3RhIGRlIHByb3ByaWVkYWRlcyBxdWUgZGVzZWphIGV4aWJpciBjb21vIGRlc2NyacOnw6NvIGRvIGNhbXBvLCBQb3IgZXhlbXBsbzpcbiAgICogYGBgXG4gICAqIDxwby1sb29rdXBcbiAgICogIC4uLlxuICAgKiAgW3AtZmllbGQtZm9ybWF0XT1cIlsnaWQnLCduaWNrbmFtZSddXCJcbiAgICogIC4uLlxuICAgKiA+XG4gICAqXG4gICAqIE9iamV0byByZXRvcm5hZG86XG4gICAqICAge1xuICAgKiAgICAgIGlkOjEyMyxcbiAgICogICAgICBuYW1lOiAnS2FrYXJvdG8nLFxuICAgKiAgICAgIG5pY2tuYW1lOiAnR29rdScsXG4gICAqICAgfVxuICAgKiBBcHJlc2VudGHDp8OjbyBubyBjYW1wbzogMTIzIC0gR29rdVxuICAgKiBgYGBcbiAgICpcbiAgICogPiBTZXLDoSB1dGlsaXphZG8gYCAtIGAgY29tbyBzZXBhcmFkb3IuXG4gICAqL1xuICBASW5wdXQoJ3AtZmllbGQtZm9ybWF0JykgZmllbGRGb3JtYXQ/OiAoKHZhbHVlKSA9PiBzdHJpbmcpIHwgQXJyYXk8c3RyaW5nPjtcblxuICAvKipcbiAgICogTGlzdGEgZGFzIGNvbHVuYXMgZGEgdGFiZWxhLlxuICAgKiBFc3NhIHByb3ByaWVkYWRlIGRldmUgcmVjZWJlciB1bSBhcnJheSBkZSBvYmpldG9zIHF1ZSBpbXBsZW1lbnRhbSBhIGludGVyZmFjZSBQb0xvb2t1cENvbHVtbi5cbiAgICovXG4gIEBJbnB1dCgncC1jb2x1bW5zJykgY29sdW1ucz86IEFycmF5PFBvTG9va3VwQ29sdW1uPjtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBEZWZpbmUgc2UgYSBpbmRpY2HDp8OjbyBkZSBjYW1wbyBvcGNpb25hbCBzZXLDoSBleGliaWRhLlxuICAgKlxuICAgKiA+IE7Do28gc2Vyw6EgZXhpYmlkYSBhIGluZGljYcOnw6NvIHNlOlxuICAgKiAtIE8gY2FtcG8gY29udGVyIGBwLXJlcXVpcmVkYDtcbiAgICogLSBOw6NvIHBvc3N1aXIgYHAtaGVscGAgZS9vdSBgcC1sYWJlbGAuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCgncC1vcHRpb25hbCcpIG9wdGlvbmFsOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIExpc3RhIGRlIG9iamV0b3MgZG9zIGNhbXBvcyBxdWUgc2Vyw6NvIGNyaWFkb3MgbmEgYnVzY2EgYXZhbsOnYWRhLlxuICAgKlxuICAgKiA+IENhc28gbsOjbyBzZWphIHBhc3NhZG8gdW0gb2JqZXRvIG91IGVudMOjbyBlbGUgZXN0ZWphIGVtIGJyYW5jbyBvIGxpbmsgZGUgYnVzY2EgYXZhbsOnYWRhIGZpY2Fyw6EgZXNjb25kaWRvLlxuICAgKlxuICAgKiBFeGVtcGxvIGRlIFVSTCBjb20gYnVzY2EgYXZhbsOnYWRhOlxuICAgKlxuICAgKiBgYGBcbiAgICogdXJsICsgP3BhZ2U9MSZwYWdlU2l6ZT0yMCZuYW1lPVRvbnklMjBTdGFyayZuaWNrbmFtZT1Ib21lbSUyMGRlJTIwRmVycm9cbiAgICogYGBgXG4gICAqXG4gICAqIENhc28gYWxndW0gcGFyw6JtZXRybyBzZWphIHVtYSBsaXN0YSwgYSBjb25jYXRlbmHDp8OjbyDDqSBmZWl0YSB1dGlsaXphbmRvIHbDrXJndWxhLlxuICAgKiBFeGVtcGxvOlxuICAgKlxuICAgKiBgYGBcbiAgICogdXJsICsgP3BhZ2U9MSZwYWdlU2l6ZT0yMCZuYW1lPVRvbnklMjBTdGFyayxQZXRlciUyMFBhcmtlcixHb2hhblxuICAgKiBgYGBcbiAgICpcbiAgICovXG4gIEBJbnB1dCgncC1hZHZhbmNlZC1maWx0ZXJzJykgYWR2YW5jZWRGaWx0ZXJzOiBBcnJheTxQb0xvb2t1cEFkdmFuY2VkRmlsdGVyPjtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBQZXJtaXRlIHF1ZSBvIGdlcmVuY2lhZG9yIGRlIGNvbHVuYXMsIHJlc3BvbnPDoXZlbCBwZWxhIGRlZmluacOnw6NvIGRlIHF1YWlzIGNvbHVuYXMgc2Vyw6NvIGV4aWJpZGFzLCBzZWphIGVzY29uZGlkby5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KHsgYWxpYXM6ICdwLWhpZGUtY29sdW1ucy1tYW5hZ2VyJywgdHJhbnNmb3JtOiBjb252ZXJ0VG9Cb29sZWFuIH0pXG4gIGhpZGVDb2x1bW5zTWFuYWdlcjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEF0aXZhIGEgZnVuY2lvbmFsaWRhZGUgZGUgc2Nyb2xsIGluZmluaXRvIHBhcmEgYSB0YWJlbGEgZXhpYmlkYSBubyByZXRvcm5vIGRhIGNvbnN1bHRhLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoeyBhbGlhczogJ3AtaW5maW5pdGUtc2Nyb2xsJywgdHJhbnNmb3JtOiBjb252ZXJ0VG9Cb29sZWFuIH0pIGluZmluaXRlU2Nyb2xsOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIEV4aWJlIHVtIMOtY29uZSBxdWUgcGVybWl0ZSBsaW1wYXIgbyBjYW1wby4gKi9cbiAgQElucHV0KHsgYWxpYXM6ICdwLWNsZWFuJywgdHJhbnNmb3JtOiBjb252ZXJ0VG9Cb29sZWFuIH0pIGNsZWFuOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogUGVybWl0ZSBhIHNlbGXDp8OjbyBkZSBtw7psdGlwbG9zIGl0ZW5zLlxuICAgKlxuICAgKiA+IFF1YW5kbyBoYWJpbGl0YWRvIG8gdmFsb3IgZG8gY2FtcG8gcGFzc2Fyw6EgYSBzZXIgdW1hIGxpc3RhIGRlIHZhbG9yZXMsIHBvciBleGVtcGxvOiBgWyAxMjM0NSwgNjc4OTAgXWBcbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KHsgYWxpYXM6ICdwLW11bHRpcGxlJywgdHJhbnNmb3JtOiBjb252ZXJ0VG9Cb29sZWFuIH0pIG11bHRpcGxlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRGVmaW5lIHF1ZSBhIGFsdHVyYSBkbyBjb21wb25lbnRlIHNlcsOhIGF1dG8gYWp1c3TDoXZlbCwgcG9zc3VpbmRvIHVtYSBhbHR1cmEgbWluaW1hIHBvcsOpbSBhIGFsdHVyYSBtw6F4aW1hIHNlcsOhIGRlIGFjb3Jkb1xuICAgKiBjb20gbyBuw7ptZXJvIGRlIGl0ZW5zIHNlbGVjaW9uYWRvcyBlIGEgZXh0ZW5zw6NvIGRvcyBtZXNtb3MsIG1hbnRlbmRvLW9zIHNlbXByZSB2aXPDrXZlaXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCh7IGFsaWFzOiAncC1hdXRvLWhlaWdodCcsIHRyYW5zZm9ybTogY29udmVydFRvQm9vbGVhbiB9KSBhdXRvSGVpZ2h0OiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogUmVzcG9uc8OhdmVsIHBvciBhcGxpY2FyIGVzcGHDp2FtZW50byBuYXMgY29sdW5hcyBkYSB0YWJlbGEgY29udGlkYSBubyBsb29rdXAuXG4gICAqXG4gICAqIERldmUgcmVjZWJlciB1bSBkb3MgdmFsb3JlcyBkbyBlbnVtIGBQb1RhYmxlQ29sdW1uU3BhY2luZ2AuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBtZWRpdW1gXG4gICAqL1xuICBASW5wdXQoJ3Atc3BhY2luZycpIHNwYWNpbmc6IFBvVGFibGVDb2x1bW5TcGFjaW5nID0gUG9UYWJsZUNvbHVtblNwYWNpbmcuTWVkaXVtO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEhhYmlsaXRhIG91IGRlc2FiaWxpdGEgYSBxdWVicmEgYXV0b23DoXRpY2EgZGUgdGV4dG8uIFF1YW5kbyBhdGl2YWRhLCBvIHRleHRvIHF1ZSBleGNlZGVcbiAgICogbyBlc3Bhw6dvIGRpc3BvbsOtdmVsIMOpIHRyYW5zZmVyaWRvIHBhcmEgYSBwcsOzeGltYSBsaW5oYSBlbSBwb250b3MgYXByb3ByaWFkb3MgcGFyYSB1bWFcbiAgICogbGVpdHVyYSBjbGFyYS5cbiAgICpcbiAgICogRXN0YSBwcm9wcmllZGFkZSBhcGxpY2Etc2UgYW8gdGV4dG8gY29udGlkbyBuYXMgY8OpbHVsYXMgZGEgdGFiZWxhLlxuICAgKlxuICAgKiA+IEluY29tcGF0w612ZWwgY29tIGB2aXJ0dWFsLXNjcm9sbGAsIHF1ZSByZXF1ZXIgYWx0dXJhIGZpeGEgbmFzIGxpbmhhcy5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KHsgYWxpYXM6ICdwLXRleHQtd3JhcCcsIHRyYW5zZm9ybTogY29udmVydFRvQm9vbGVhbiB9KSB0ZXh0V3JhcD86IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBIYWJpbGl0YSBvIGB2aXJ0dWFsLXNjcm9sbGAgbmEgdGFiZWxhIHBhcmEgbWVsaG9yYXIgYSBwZXJmb3JtYW5jZSBjb20gZ3JhbmRlcyB2b2x1bWVzIGRlIGRhZG9zLlxuICAgKiBBIGFsdHVyYSBkYSB0YWJlbGEgasOhIMOpIHByw6ktZGVmaW5pZGEsIHBvcnRhbnRvIG8gYHZpcnR1YWwtc2Nyb2xsYCBzZXLDoSBhdGl2YWRvIGF1dG9tYXRpY2FtZW50ZS5cbiAgICpcbiAgICogPiBJbmNvbXBhdMOtdmVsIGNvbSBgcC10ZXh0LXdyYXBgIGUgYG1hc3Rlci1kZXRhaWxgLCBwb2lzIG8gYHZpcnR1YWwtc2Nyb2xsYCBleGlnZSBhbHR1cmEgZml4YSBuYXMgbGluaGFzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgdHJ1ZWBcbiAgICovXG4gIEBJbnB1dCh7IGFsaWFzOiAncC12aXJ0dWFsLXNjcm9sbCcsIHRyYW5zZm9ybTogY29udmVydFRvQm9vbGVhbiB9KSB2aXJ0dWFsU2Nyb2xsPzogYm9vbGVhbiA9IHRydWU7XG5cbiAgLyoqXG4gICAqIEV2ZW50byBzZXLDoSBkaXNwYXJhZG8gcXVhbmRvIG9jb3JyZXIgYWxndW0gZXJybyBuYSByZXF1aXNpw6fDo28gZGUgYnVzY2EgZG8gaXRlbS5cbiAgICogU2Vyw6EgcGFzc2FkbyBwb3IgcGFyw6JtZXRybyBvIG9iamV0byBkZSBlcnJvIHJldG9ybmFkby5cbiAgICovXG4gIEBPdXRwdXQoJ3AtZXJyb3InKSBvbkVycm9yOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEV2ZW50byBzZXLDoSBkaXNwYXJhZG8gcXVhbmRvIG9jb3JyZXIgYWxndW1hIHNlbGXDp8Ojby5cbiAgICogU2Vyw6EgcGFzc2FkbyBwb3IgcGFyw6JtZXRybyBvIG9iamV0byBjb20gbyB2YWxvciBzZWxlY2lvbmFkby5cbiAgICovXG4gIEBPdXRwdXQoJ3Atc2VsZWN0ZWQnKSBzZWxlY3RlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiAgRXZlbnRvIHF1ZSBzZXLDoSBkaXNwYXJhZG8gYW8gYWx0ZXJhciBvIG1vZGVsLlxuICAgKiAgUG9yIHBhcsOibWV0cm8gc2Vyw6EgcGFzc2FkbyBvIG5vdm8gdmFsb3IuXG4gICAqL1xuICBAT3V0cHV0KCdwLWNoYW5nZScpIGNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBFdmVudG8gZGlzcGFyYWRvIGFvIGZlY2hhciBvIHBvcG92ZXIgZG8gZ2VyZW5jaWFkb3IgZGUgY29sdW5hcyBhcMOzcyBhbHRlcmFyIGFzIGNvbHVuYXMgdmlzw612ZWlzLlxuICAgKlxuICAgKiBPIGNvbXBvbmVudGUgZW52aWEgY29tbyBwYXLDom1ldHJvIHVtIGFycmF5IGRlIHN0cmluZyBjb20gYXMgY29sdW5hcyB2aXPDrXZlaXMgYXR1YWxpemFkYXMuXG4gICAqIFBvciBleGVtcGxvOiBbXCJpZENhcmRcIiwgXCJuYW1lXCIsIFwiaGlyZVN0YXR1c1wiLCBcImFnZVwiXS5cbiAgICovXG4gIEBPdXRwdXQoJ3AtY2hhbmdlLXZpc2libGUtY29sdW1ucycpIGNoYW5nZVZpc2libGVDb2x1bW5zID0gbmV3IEV2ZW50RW1pdHRlcjxBcnJheTxzdHJpbmc+PigpO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEV2ZW50byBkaXNwYXJhZG8gYW8gY2xpY2FyIG5vIGJvdMOjbyBkZSByZXN0YXVyYXIgcGFkcsOjbyBubyBnZXJlbmNpYWRvciBkZSBjb2x1bmFzLlxuICAgKlxuICAgKiBPIGNvbXBvbmVudGUgZW52aWEgY29tbyBwYXLDom1ldHJvIHVtIGFycmF5IGRlIHN0cmluZyBjb20gYXMgY29sdW5hcyBjb25maWd1cmFkYXMgaW5pY2lhbG1lbnRlLlxuICAgKiBQb3IgZXhlbXBsbzogW1wiaWRDYXJkXCIsIFwibmFtZVwiLCBcImhpcmVTdGF0dXNcIiwgXCJhZ2VcIl0uXG4gICAqL1xuICBAT3V0cHV0KCdwLXJlc3RvcmUtY29sdW1uLW1hbmFnZXInKSBjb2x1bW5SZXN0b3JlTWFuYWdlciA9IG5ldyBFdmVudEVtaXR0ZXI8QXJyYXk8U3RyaW5nPj4oKTtcblxuICBzZXJ2aWNlOiBhbnk7XG5cbiAgcHJvdGVjdGVkIHNlbGVjdGVkT3B0aW9ucyA9IFtdO1xuICBwcm90ZWN0ZWQgZ2V0U3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHByb3RlY3RlZCBrZXlzRGVzY3JpcHRpb246IEFycmF5PGFueT47XG4gIHByb3RlY3RlZCBvbGRWYWx1ZTogc3RyaW5nID0gJyc7XG4gIHByb3RlY3RlZCB2YWx1ZVRvTW9kZWw7XG4gIHByb3RlY3RlZCBvbGRWYWx1ZVRvTW9kZWwgPSBudWxsO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgcHJvdGVjdGVkIG9uVG91Y2hlZDogYW55ID0gbnVsbDtcbiAgcHJvdGVjdGVkIHJlc2l6ZUxpc3RlbmVyOiAoKSA9PiB2b2lkO1xuXG4gIHByaXZhdGUgX2Rpc2FibGVkPzogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9maWVsZExhYmVsOiBzdHJpbmc7XG4gIHByaXZhdGUgX2ZpbHRlclNlcnZpY2U6IFBvTG9va3VwRmlsdGVyIHwgc3RyaW5nO1xuICBwcml2YXRlIF9ub0F1dG9jb21wbGV0ZTogYm9vbGVhbjtcbiAgcHJpdmF0ZSBfcGxhY2Vob2xkZXI6IHN0cmluZyA9ICcnO1xuICBwcml2YXRlIF9yZXF1aXJlZD86IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBfYXV0b0hlaWdodDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHByaXZhdGUgYXV0b0hlaWdodEluaXRpYWxWYWx1ZTogYm9vbGVhbjtcbiAgcHJpdmF0ZSBvbkNoYW5nZVByb3BhZ2F0ZTogYW55ID0gbnVsbDtcbiAgcHJpdmF0ZSB2YWxpZGF0b3JDaGFuZ2U6IGFueTtcblxuICBwcml2YXRlIGNvbnRyb2whOiBBYnN0cmFjdENvbnRyb2w7XG5cbiAgcHJpdmF0ZSBpbmplY3RPcHRpb25zOiBJbmplY3RPcHRpb25zID0ge1xuICAgIHNlbGY6IHRydWVcbiAgfTtcblxuICAvKipcbiAgICogU2VydmnDp28gcmVzcG9uc8OhdmVsIHBvciBidXNjYXIgb3MgZGFkb3MgZGEgdGFiZWxhIG5hIGphbmVsYS4gUG9kZSBzZXIgaW5mb3JtYWRvIHVtIHNlcnZpw6dvIHF1ZSBpbXBsZW1lbnRlIGEgaW50ZXJmYWNlXG4gICAqIGBQb0xvb2t1cEZpbHRlcmAgb3UgdW1hIFVSTC5cbiAgICpcbiAgICogUXVhbmRvIHV0aWxpemFkYSB1bWEgVVJMIGRlIHVtIHNlcnZpw6dvLCBzZXLDoSBjb25jYXRlbmFkYSBuZXN0YSBVUkwgbyB2YWxvciBxdWUgZGVzZWphLXNlIGZpbHRyYXIsIHBvciBleGVtcGxvOlxuICAgKlxuICAgKiBgYGBcbiAgICogdXJsICsgP3BhZ2U9MSZwYWdlU2l6ZT0yMCZmaWx0ZXI9UGV0ZXJcbiAgICogYGBgXG4gICAqXG4gICAqIENhc28gdXRpbGl6YXIgb3JkZW5hw6fDo28sIGEgY29sdW5hIG9yZGVuYWRhIHNlcsOhIGVudmlhZGEgYXRyYXbDqXMgZG8gcGFyw6JtZXRybyBgb3JkZXJgLCBwb3IgZXhlbXBsbzpcbiAgICogLSBDb2x1bmEgZGVjcmVzY2VudGU6XG4gICAqIGBgYFxuICAgKiAgdXJsICsgP3BhZ2U9MSZwYWdlU2l6ZT0yMCZmaWx0ZXI9UGV0ZXImb3JkZXI9LW5hbWVcbiAgICogYGBgXG4gICAqXG4gICAqIC0gQ29sdW5hIGFzY2VuZGVudGU6XG4gICAqIGBgYFxuICAgKiAgdXJsICsgP3BhZ2U9MSZwYWdlU2l6ZT0yMCZmaWx0ZXI9UGV0ZXImb3JkZXI9bmFtZVxuICAgKiBgYGBcbiAgICpcbiAgICogU2UgZm9yIGRlZmluaWRvIGEgcHJvcHJpZWRhZGUgYHAtZmlsdGVyLXBhcmFtc2AsIG8gbWVzbW8gdGFtYsOpbSBzZXLDoSBjb25jYXRlbmFkby4gUG9yIGV4ZW1wbG8sIHBhcmEgb1xuICAgKiBwYXLDom1ldHJvIGB7IGFnZTogMjMgfWAgYSBVUkwgZmljYXJpYTpcbiAgICpcbiAgICogYGBgXG4gICAqIHVybCArID9wYWdlPTEmcGFnZVNpemU9MjAmYWdlPTIzJmZpbHRlcj1QZXRlclxuICAgKiBgYGBcbiAgICpcbiAgICogQW8gaW5pY2lhciBvIGNhbXBvIGNvbSB2YWxvciwgb3MgcmVnaXN0cm9zIHNlcsOjbyBidXNjYWRvcyBkYSBzZWd1aW50ZSBmb3JtYTpcbiAgICogYGBgXG4gICAqIG1vZGVsID0gMTIzNDtcbiAgICpcbiAgICogR0VUIHVybC8xMjM0XG4gICAqIGBgYFxuICAgKlxuICAgKiBDYXNvIGVzdGl2ZXIgY29tIG3Dumx0aXBsYSBzZWxlw6fDo28gaGFiaWxpdGFkYTpcbiAgICogYGBgXG4gICAqIG1vZGVsID0gWzEyMzQsIDU2NzhdXG4gICAqXG4gICAqIEdFVCB1cmw/JHtmaWVsZFZhbHVlfT0xMjM0LDU2NzhcbiAgICogYGBgXG4gICAqXG4gICAqID4gRXN0YSBVUkwgZGV2ZSByZXRvcm5hciBlIHJlY2ViZXIgb3MgZGFkb3Mgbm8gcGFkcsOjbyBkZSBbQVBJIGRvIFBPIFVJXShodHRwczovL3BvLXVpLmlvL2d1aWRlcy9hcGkpIGUgdXRpbGl6YSBvcyB2YWxvcmVzXG4gICAqIGRlZmluaWRvcyBuYXMgcHJvcHJpZWRhZGVzIGBwLWZpZWxkLWxhYmVsYCBlIGBwLWZpZWxkLXZhbHVlYCBwYXJhIGEgY29uc3RydcOnw6NvIGRvIGBwby1sb29rdXBgLlxuICAgKlxuICAgKiBDYXNvIG8gdXN1w6FyaW8gZGlnaXRlIHVtIHZhbG9yIGUgcHJlc3Npb25lIGEgdGVjbGEgKlRBQiogcGFyYSByZWFsaXphciBhIGJ1c2NhIGRlIHVtIHJlZ2lzdHJvIGVzcGVjw61maWNvLCBvIHZhbG9yIHF1ZSBzZVxuICAgKiBkZXNlamEgZmlsdHJhciBzZXLDoSBjb2RpZmljYWRvIHV0aWxpemFuZG8gYSBmdW7Dp8OjbyBbZW5jb2RlVVJJQ29tcG9uZW50XShodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWVuY29kZXVyaWNvbXBvbmVudC11cmljb21wb25lbnQpXG4gICAqIGUgY29uY2F0ZW5hZG8gbmEgVVJMIGRhIHNlZ3VpbnRlIGZvcm1hOlxuICAgKlxuICAgKiBgYGBcbiAgICogdXJsL3ZhbG9yJTIwcXVlJTIwc2UlMjBkZXNlamElMjBmaWx0cmFyXG4gICAqIGBgYFxuICAgKlxuICAgKiA+IFF1YW5kbyBpbmZvcm1hZG8gdW0gc2VydmnDp28gcXVlIGltcGxlbWVudGUgYSBpbnRlcmZhY2UgYFBvTG9va3VwRmlsdGVyYCBvIHRyYXRhbWVudG8gZGUgZW5jb2RpbmcgZG8gdmFsb3IgYSBzZXIgZmlsdHJhZG8gZmljYXLDoSBhIGNhcmdvIGRvIGRlc2Vudm9sdmVkb3IuXG4gICAqXG4gICAqL1xuICBASW5wdXQoJ3AtZmlsdGVyLXNlcnZpY2UnKSBzZXQgZmlsdGVyU2VydmljZShmaWx0ZXJTZXJ2aWNlOiBQb0xvb2t1cEZpbHRlciB8IHN0cmluZykge1xuICAgIHRoaXMuX2ZpbHRlclNlcnZpY2UgPSBmaWx0ZXJTZXJ2aWNlO1xuICAgIHRoaXMuc2V0U2VydmljZSh0aGlzLmZpbHRlclNlcnZpY2UpO1xuICB9XG5cbiAgZ2V0IGZpbHRlclNlcnZpY2UoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpbHRlclNlcnZpY2U7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBEZWZpbmUgYSBwcm9wcmllZGFkZSBuYXRpdmEgYGF1dG9jb21wbGV0ZWAgZG8gY2FtcG8gY29tbyBgb2ZmYC5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KCdwLW5vLWF1dG9jb21wbGV0ZScpIHNldCBub0F1dG9jb21wbGV0ZSh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX25vQXV0b2NvbXBsZXRlID0gY29udmVydFRvQm9vbGVhbih2YWx1ZSk7XG4gIH1cblxuICBnZXQgbm9BdXRvY29tcGxldGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX25vQXV0b2NvbXBsZXRlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRGVmaW5lIHF1ZSBvIGNhbXBvIHNlcsOhIG9icmlnYXTDs3Jpby5cbiAgICogPiBFc3RhIHByb3ByaWVkYWRlIMOpIGRlc2NvbnNpZGVyYWRhIHF1YW5kbyBvIGlucHV0IGVzdMOhIGRlc2FiaWxpdGFkbyBgKHAtZGlzYWJsZWQpYC5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KCdwLXJlcXVpcmVkJykgc2V0IHJlcXVpcmVkKHJlcXVpcmVkOiBib29sZWFuKSB7XG4gICAgdGhpcy5fcmVxdWlyZWQgPSBjb252ZXJ0VG9Cb29sZWFuKHJlcXVpcmVkKTtcblxuICAgIHRoaXMudmFsaWRhdGVNb2RlbCh0aGlzLnZhbHVlVG9Nb2RlbCk7XG4gIH1cblxuICBnZXQgcmVxdWlyZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlcXVpcmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIERlZmluZSBzZSBhIGluZGljYcOnw6NvIGRlIGNhbXBvIG9icmlnYXTDs3JpbyBzZXLDqSBleGliaWRhLlxuICAgKlxuICAgKiA+IE7Do28gc2Vyw6EgZXhpYmlkYSBhIGluZGljYcOnw6NvIHNlOlxuICAgKiAtIE7Do28gcG9zc3VpciBgcC1oZWxwYCBlL291IGBwLWxhYmVsYC5cbiAgICovXG4gIEBJbnB1dCgncC1zaG93LXJlcXVpcmVkJykgc2hvd1JlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBJbmRpY2EgcXVlIG8gY2FtcG8gc2Vyw6EgZGVzYWJpbGl0YWRvLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKiBAb3B0aW9uYWxcbiAgICovXG4gIEBJbnB1dCgncC1kaXNhYmxlZCcpIHNldCBkaXNhYmxlZChkaXNhYmxlZDogYm9vbGVhbikge1xuICAgIHRoaXMuX2Rpc2FibGVkID0gPGFueT5kaXNhYmxlZCA9PT0gJycgPyB0cnVlIDogY29udmVydFRvQm9vbGVhbihkaXNhYmxlZCk7XG4gIH1cblxuICBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBkZWZhdWx0U2VydmljZTogUG9Mb29rdXBGaWx0ZXJTZXJ2aWNlLFxuICAgIEBJbmplY3QoSW5qZWN0b3IpIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHB1YmxpYyBwb0xvb2t1cE1vZGFsU2VydmljZTogUG9Mb29rdXBNb2RhbFNlcnZpY2VcbiAgKSB7fVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIGlmICh0aGlzLmdldFN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5nZXRTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmluaXRpYWxpemVDb2x1bW4oKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNldENvbnRyb2woKTtcbiAgfVxuXG4gIGNsZWFuTW9kZWwoKSB7XG4gICAgdGhpcy5jbGVhblZpZXdWYWx1ZSgpO1xuICAgIHRoaXMuY2FsbE9uQ2hhbmdlKHVuZGVmaW5lZCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXMuY29sdW1ucz8uY3VycmVudFZhbHVlKSB7XG4gICAgICB0aGlzLmNvbHVtbnMgPSBjaGFuZ2VzLmNvbHVtbnMuY3VycmVudFZhbHVlO1xuICAgICAgdGhpcy5wb0xvb2t1cE1vZGFsU2VydmljZT8uc2V0Q2hhbmdlQ29sdW1ucyh0aGlzLmNvbHVtbnMpO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VzLm11bHRpcGxlICYmIGlzVHlwZW9mKHRoaXMuZmlsdGVyU2VydmljZSwgJ3N0cmluZycpKSB7XG4gICAgICB0aGlzLnNlcnZpY2Uuc2V0Q29uZmlnKHRoaXMuZmlsdGVyU2VydmljZSwgdGhpcy5maWVsZFZhbHVlLCB0aGlzLm11bHRpcGxlKTtcbiAgICB9XG4gIH1cblxuICAvLyBGdW7Dp8OjbyBpbXBsZW1lbnRhZGEgZG8gQ29udHJvbFZhbHVlQWNjZXNzb3JcbiAgLy8gVXNhZGEgcGFyYSBpbnRlcmNlcHRhciBvcyBlc3RhZG9zIGRlIGhhYmlsaXRhZG8gdmlhIGZvcm1zIGFwaVxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxuXG4gIHJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2UoZm46ICgpID0+IHZvaWQpIHtcbiAgICB0aGlzLnZhbGlkYXRvckNoYW5nZSA9IGZuO1xuICB9XG5cbiAgLy8gRnVuw6fDo28gaW1wbGVtZW50YWRhIGRvIENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxuICAvLyBVc2FkYSBwYXJhIGludGVyY2VwdGFyIGFzIG11ZGFuw6dhcyBlIG7Do28gYXR1YWxpemFyIGF1dG9tYXRpY2FtZW50ZSBvIE1vZGVsLlxuICByZWdpc3Rlck9uQ2hhbmdlKGZ1bmM6IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2VQcm9wYWdhdGUgPSBmdW5jO1xuICB9XG5cbiAgLy8gRnVuw6fDo28gaW1wbGVtZW50YWRhIGRvIENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxuICAvLyBVc2FkYSBwYXJhIGludGVyY2VwdGFyIGFzIG11ZGFuw6dhcyBlIG7Do28gYXR1YWxpemFyIGF1dG9tYXRpY2FtZW50ZSBvIE1vZGVsLlxuICByZWdpc3Rlck9uVG91Y2hlZChmdW5jOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZ1bmM7XG4gIH1cblxuICAvLyBTZWxlY2lvbmEgbyB2YWxvciBkbyBtb2RlbC5cbiAgc2VsZWN0VmFsdWUodmFsdWVTZWxlY3RlZDogYW55KSB7XG4gICAgdGhpcy52YWx1ZVRvTW9kZWwgPSB2YWx1ZVNlbGVjdGVkO1xuICAgIHRoaXMubXVsdGlwbGVcbiAgICAgID8gdGhpcy5jYWxsT25DaGFuZ2UodGhpcy52YWx1ZVRvTW9kZWwpXG4gICAgICA6IHRoaXMudmFsdWVUb01vZGVsXG4gICAgICAgID8gdGhpcy5jYWxsT25DaGFuZ2UodGhpcy52YWx1ZVRvTW9kZWxbdGhpcy5maWVsZFZhbHVlXSlcbiAgICAgICAgOiB0aGlzLmNhbGxPbkNoYW5nZSh1bmRlZmluZWQpO1xuICAgIHRoaXMuc2VsZWN0ZWQuZW1pdCh2YWx1ZVNlbGVjdGVkKTtcbiAgfVxuXG4gIGNhbGxPbkNoYW5nZSh2YWx1ZTogYW55KSB7XG4gICAgLy8gUXVhbmRvIG8gaW5wdXQgbsOjbyBwb3NzdWkgdW0gZm9ybXVsw6FyaW8sIGVudMOjbyBlc3RhIGZ1bsOnw6NvIG7Do28gw6kgcmVnaXN0cmFkYS5cbiAgICBpZiAodGhpcy5vbkNoYW5nZVByb3BhZ2F0ZSkge1xuICAgICAgdGhpcy5vbkNoYW5nZVByb3BhZ2F0ZSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMub2xkVmFsdWVUb01vZGVsICE9PSB0aGlzLnZhbHVlVG9Nb2RlbCkge1xuICAgICAgdGhpcy5jaGFuZ2UuZW1pdCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLy8gQXJtYXplbmFyIG8gdmFsb3IgYW50aWdvIGRvIG1vZGVsXG4gICAgdGhpcy5vbGRWYWx1ZVRvTW9kZWwgPSB0aGlzLnZhbHVlVG9Nb2RlbDtcbiAgfVxuXG4gIHNlYXJjaEJ5SWQodmFsdWUpIHtcbiAgICBsZXQgY2hlY2tlZFZhbHVlID0gdmFsdWU7XG5cbiAgICBpZiAodHlwZW9mIGNoZWNrZWRWYWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGNoZWNrZWRWYWx1ZSA9IGNoZWNrZWRWYWx1ZS50cmltKCk7XG4gICAgfVxuXG4gICAgaWYgKGNoZWNrZWRWYWx1ZSAhPT0gJycpIHtcbiAgICAgIGNvbnN0IG9sZERpc2FibGUgPSB0aGlzLmRpc2FibGVkO1xuICAgICAgdGhpcy5kaXNhYmxlZCA9IHRydWU7XG5cbiAgICAgIGlmICh0aGlzLmNvbnRyb2wpIHtcbiAgICAgICAgLy8gOlRPRE86IFJldGlyYXIgbm8gZnV0dXJvIHBvaXMgZXNzZSBzZXRUaW1lb3V0IGZvaSBmZWl0b1xuICAgICAgICAvLyBwb2lzIHF1YW5kbyBvIGNhbXBvIMOpIGFjaW9uYWRvIHBlbG9zIG3DqXRvZG9zIHNldFZhbHVlIG91IHBhdGNoVmFsdWVcbiAgICAgICAgLy8gYSBtdWRhbsOnYSBuw6NvIMOpIGRldGVjdGFkYVxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuY29udHJvbC5tYXJrQXNQZW5kaW5nKCkpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmdldFN1YnNjcmlwdGlvbiA9IHRoaXMuc2VydmljZVxuICAgICAgICAuZ2V0T2JqZWN0QnlWYWx1ZSh2YWx1ZSwgdGhpcy5maWx0ZXJQYXJhbXMpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIGZpbmFsaXplKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZGlzYWJsZWQgPSBvbGREaXNhYmxlO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5jb250cm9sKSB7XG4gICAgICAgICAgICAgIHRoaXMuY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAgIGVsZW1lbnQgPT4ge1xuICAgICAgICAgICAgaWYgKGVsZW1lbnQ/Lmxlbmd0aCB8fCAoIUFycmF5LmlzQXJyYXkoZWxlbWVudCkgJiYgZWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZWxlbWVudCkgJiYgZWxlbWVudC5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXREaXNjbGFpbWVycyhlbGVtZW50KTtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVZpc2libGVJdGVtcygpO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RNb2RlbCh0aGlzLm11bHRpcGxlID8gZWxlbWVudCA6IFtlbGVtZW50XSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aGlzLmNsZWFuTW9kZWwoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIGVycm9yID0+IHtcbiAgICAgICAgICAgIHRoaXMuY2xlYW5Nb2RlbCgpO1xuICAgICAgICAgICAgdGhpcy5vbkVycm9yLmVtaXQoZXJyb3IpO1xuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jbGVhbk1vZGVsKCk7XG4gICAgfVxuICB9XG5cbiAgdmFsaWRhdGUoYWJzdHJhY3RDb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiB7IFtrZXk6IHN0cmluZ106IGFueSB9IHtcbiAgICBpZiAocmVxdWlyZWRGYWlsZWQodGhpcy5yZXF1aXJlZCwgdGhpcy5kaXNhYmxlZCwgYWJzdHJhY3RDb250cm9sLnZhbHVlKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcmVxdWlyZWQ6IHtcbiAgICAgICAgICB2YWxpZDogZmFsc2VcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAodmFsdWU/Lmxlbmd0aCB8fCAoIUFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlKSkge1xuICAgICAgLy8gRXN0YSBjb25kacOnw6NvIMOpIGV4ZWN1dGFkYSBzb21lbnRlIHF1YW5kbyDDqSBwYXNzYWRvIG8gSUQgcGFyYSByZWFsaXphciBhIGJ1c2NhIHBlbG8gSUQuXG4gICAgICB0aGlzLnNlYXJjaEJ5SWQodmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNsZWFuVmlld1ZhbHVlKCk7XG4gICAgfVxuICB9XG5cbiAgLy8gUmV0b3JuYSBvIFN1YnNjcmliZXIgZGEgcHJvcHJpZWRhZGUgZ2V0U3Vic2NyaXB0aW9uIHF1ZSBvY29ycmVcbiAgLy8gbm8gZXZlbnRvIGRlIGJsdXIgcXVlIGV4ZWN1dGEgbyBtw6l0b2RvIHNlYXJjaEV2ZW50KCkuXG4gIGdldFN1YnNjcmlwdGlvbkZ1bmN0aW9uKCk6IFN1YnNjcmlwdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0U3Vic2NyaXB0aW9uO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNsZWFuVmlld1ZhbHVlKCkge1xuICAgIHRoaXMuc2V0RGlzY2xhaW1lcnMoW10pO1xuICAgIHRoaXMuc2V0Vmlld1ZhbHVlKCcnLCB7fSk7XG4gICAgdGhpcy5vbGRWYWx1ZSA9ICcnO1xuICAgIHRoaXMudmFsdWVUb01vZGVsID0gbnVsbDtcbiAgfVxuXG4gIC8vIEZvcm1hdGEgYSBsYWJlbCBkbyBjYW1wby5cbiAgcHJvdGVjdGVkIGdldEZvcm1hdHRlZExhYmVsKHZhbHVlOiBhbnkpOiBzdHJpbmcge1xuICAgIHJldHVybiB2YWx1ZSA/IHRoaXMua2V5c0Rlc2NyaXB0aW9uLm1hcChjb2x1bW4gPT4gdmFsdWVbY29sdW1uXSkuam9pbignIC0gJykgOiAnJztcbiAgfVxuXG4gIC8vIENoYW1hIG8gbcOpdG9kbyB3cml0ZVZhbHVlIGUgcHJlZW5jaGUgbyBtb2RlbC5cbiAgcHJvdGVjdGVkIHNlbGVjdE1vZGVsKG9wdGlvbnM6IEFycmF5PGFueT4pIHtcbiAgICBpZiAob3B0aW9ucy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25zID0gWy4uLm9wdGlvbnNdO1xuXG4gICAgICBjb25zdCBuZXdNb2RlbCA9IHRoaXMubXVsdGlwbGUgPyBvcHRpb25zLm1hcChvcHRpb24gPT4gb3B0aW9uW3RoaXMuZmllbGRWYWx1ZV0pIDogb3B0aW9uc1swXTtcbiAgICAgIHRoaXMuc2VsZWN0VmFsdWUobmV3TW9kZWwpO1xuXG4gICAgICBpZiAob3B0aW9ucy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgdGhpcy5vbGRWYWx1ZSA9IG9wdGlvbnNbMF1bdGhpcy5maWVsZExhYmVsXTtcbiAgICAgICAgdGhpcy5zZXRWaWV3VmFsdWUodGhpcy5nZXRGb3JtYXR0ZWRMYWJlbChvcHRpb25zWzBdKSwgb3B0aW9uc1swXSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0VmFsdWUodW5kZWZpbmVkKTtcbiAgICAgIHRoaXMuY2xlYW5WaWV3VmFsdWUoKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgdmFsaWRhdGVNb2RlbChtb2RlbDogYW55KSB7XG4gICAgaWYgKHRoaXMudmFsaWRhdG9yQ2hhbmdlKSB7XG4gICAgICB0aGlzLnZhbGlkYXRvckNoYW5nZShtb2RlbCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRTZXJ2aWNlKHNlcnZpY2U6IFBvTG9va3VwRmlsdGVyIHwgc3RyaW5nKSB7XG4gICAgaWYgKGlzVHlwZW9mKHNlcnZpY2UsICdvYmplY3QnKSkge1xuICAgICAgdGhpcy5zZXJ2aWNlID0gPFBvTG9va3VwRmlsdGVyU2VydmljZT5zZXJ2aWNlO1xuICAgIH1cblxuICAgIGlmIChzZXJ2aWNlICYmIGlzVHlwZW9mKHNlcnZpY2UsICdzdHJpbmcnKSkge1xuICAgICAgdGhpcy5zZXJ2aWNlID0gdGhpcy5kZWZhdWx0U2VydmljZTtcbiAgICAgIHRoaXMuc2VydmljZS5zZXRDb25maWcoc2VydmljZSwgdGhpcy5maWVsZFZhbHVlLCB0aGlzLm11bHRpcGxlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldENvbnRyb2woKSB7XG4gICAgY29uc3QgbmdDb250cm9sOiBOZ0NvbnRyb2wgPSB0aGlzLmluamVjdG9yLmdldChOZ0NvbnRyb2wsIG51bGwsIHRoaXMuaW5qZWN0T3B0aW9ucyk7XG5cbiAgICBpZiAobmdDb250cm9sKSB7XG4gICAgICB0aGlzLmNvbnRyb2wgPSBuZ0NvbnRyb2wuY29udHJvbCBhcyBVbnR5cGVkRm9ybUNvbnRyb2w7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplQ29sdW1uKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmZpZWxkTGFiZWwpIHtcbiAgICAgIHRoaXMua2V5c0Rlc2NyaXB0aW9uID0gW3RoaXMuZmllbGRMYWJlbF07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMua2V5c0Rlc2NyaXB0aW9uID0gW107XG5cbiAgICAgIHRoaXMua2V5c0Rlc2NyaXB0aW9uID0gdGhpcy5jb2x1bW5zLmZpbHRlcihlbGVtZW50ID0+IGVsZW1lbnQuZmllbGRMYWJlbCkubWFwKGVsZW1lbnQgPT4gZWxlbWVudC5wcm9wZXJ0eSk7XG4gICAgfVxuICB9XG5cbiAgLy8gQXRyaWJ1aSB1bSBvdSBtYWlzIHZhbG9yZXMgYW8gY2FtcG8uXG4gIGFic3RyYWN0IHNldFZpZXdWYWx1ZSh2YWx1ZTogYW55LCBvYmplY3Q6IGFueSk6IHZvaWQ7XG5cbiAgLy8gTcOpdG9kbyBjb20gYSBpbXBsZW1lbnRhw6fDo28gcGFyYSBhYnJpciBvIGxvb2t1cC5cbiAgYWJzdHJhY3Qgb3Blbkxvb2t1cCgpOiB2b2lkO1xuXG4gIGFic3RyYWN0IHNldERpc2NsYWltZXJzKGEpO1xuICBhYnN0cmFjdCB1cGRhdGVWaXNpYmxlSXRlbXMoKTtcbn1cbiJdfQ==
|
package/esm2022/lib/components/po-field/po-lookup/po-lookup-modal/po-lookup-modal-base.component.mjs
CHANGED
|
@@ -132,8 +132,24 @@ export class PoLookupModalBaseComponent {
|
|
|
132
132
|
* Habilita ou desabilita a quebra automática de texto. Quando ativada, o texto que excede
|
|
133
133
|
* o espaço disponível é transferido para a próxima linha em pontos apropriados para uma
|
|
134
134
|
* leitura clara.
|
|
135
|
+
*
|
|
136
|
+
* > Incompatível com `virtual-scroll`, que requer altura fixa nas linhas.
|
|
137
|
+
*
|
|
135
138
|
*/
|
|
136
139
|
textWrap = false;
|
|
140
|
+
/**
|
|
141
|
+
* @optional
|
|
142
|
+
*
|
|
143
|
+
* @description
|
|
144
|
+
*
|
|
145
|
+
* Habilita o `virtual-scroll` na tabela para melhorar a performance com grandes volumes de dados.
|
|
146
|
+
* A altura da tabela já é pré-definida, portanto o `virtual-scroll` será ativado automaticamente.
|
|
147
|
+
*
|
|
148
|
+
* > Incompatível com `p-text-wrap` e `master-detail`, pois o `virtual-scroll` exige altura fixa nas linhas.
|
|
149
|
+
*
|
|
150
|
+
* @default `true`
|
|
151
|
+
*/
|
|
152
|
+
virtualScroll = true;
|
|
137
153
|
/**
|
|
138
154
|
* @optional
|
|
139
155
|
*
|
|
@@ -466,7 +482,7 @@ export class PoLookupModalBaseComponent {
|
|
|
466
482
|
let _t;
|
|
467
483
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.poModal = _t.first);
|
|
468
484
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.poTable = _t.first);
|
|
469
|
-
} }, inputs: { advancedFilters: [0, "p-advanced-filters", "advancedFilters"], columns: [0, "p-columns", "columns"], items: [0, "p-items", "items"], filterService: [0, "p-filter-service", "filterService"], filterParams: [0, "p-filter-params", "filterParams"], hideColumnsManager: [2, "p-hide-columns-manager", "hideColumnsManager", convertToBoolean], infiniteScroll: [2, "p-infinite-scroll", "infiniteScroll", convertToBoolean], multiple: [2, "p-multiple", "multiple", convertToBoolean], selectedItems: [0, "p-selected-items", "selectedItems"], fieldLabel: [0, "p-field-label", "fieldLabel"], fieldValue: [0, "p-field-value", "fieldValue"], spacing: [0, "p-spacing", "spacing"], textWrap: [2, "p-text-wrap", "textWrap", convertToBoolean], literals: [0, "p-literals", "literals"], title: [0, "p-title", "title"] }, outputs: { model: "p-change-model", changeVisibleColumns: "p-change-visible-columns", columnRestoreManager: "p-restore-column-manager" }, features: [i0.ɵɵInputTransformsFeature] });
|
|
485
|
+
} }, inputs: { advancedFilters: [0, "p-advanced-filters", "advancedFilters"], columns: [0, "p-columns", "columns"], items: [0, "p-items", "items"], filterService: [0, "p-filter-service", "filterService"], filterParams: [0, "p-filter-params", "filterParams"], hideColumnsManager: [2, "p-hide-columns-manager", "hideColumnsManager", convertToBoolean], infiniteScroll: [2, "p-infinite-scroll", "infiniteScroll", convertToBoolean], multiple: [2, "p-multiple", "multiple", convertToBoolean], selectedItems: [0, "p-selected-items", "selectedItems"], fieldLabel: [0, "p-field-label", "fieldLabel"], fieldValue: [0, "p-field-value", "fieldValue"], spacing: [0, "p-spacing", "spacing"], textWrap: [2, "p-text-wrap", "textWrap", convertToBoolean], virtualScroll: [2, "p-virtual-scroll", "virtualScroll", convertToBoolean], literals: [0, "p-literals", "literals"], title: [0, "p-title", "title"] }, outputs: { model: "p-change-model", changeVisibleColumns: "p-change-visible-columns", columnRestoreManager: "p-restore-column-manager" }, features: [i0.ɵɵInputTransformsFeature] });
|
|
470
486
|
}
|
|
471
487
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PoLookupModalBaseComponent, [{
|
|
472
488
|
type: Directive
|
|
@@ -518,6 +534,9 @@ export class PoLookupModalBaseComponent {
|
|
|
518
534
|
}], textWrap: [{
|
|
519
535
|
type: Input,
|
|
520
536
|
args: [{ alias: 'p-text-wrap', transform: convertToBoolean }]
|
|
537
|
+
}], virtualScroll: [{
|
|
538
|
+
type: Input,
|
|
539
|
+
args: [{ alias: 'p-virtual-scroll', transform: convertToBoolean }]
|
|
521
540
|
}], changeVisibleColumns: [{
|
|
522
541
|
type: Output,
|
|
523
542
|
args: ['p-change-visible-columns']
|
|
@@ -531,4 +550,4 @@ export class PoLookupModalBaseComponent {
|
|
|
531
550
|
type: Input,
|
|
532
551
|
args: ['p-title']
|
|
533
552
|
}] }); })();
|
|
534
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tbG9va3VwLW1vZGFsLWJhc2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9jb21wb25lbnRzL3BvLWZpZWxkL3BvLWxvb2t1cC9wby1sb29rdXAtbW9kYWwvcG8tbG9va3VwLW1vZGFsLWJhc2UuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFeEgsT0FBTyxFQUE0QixVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDNUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzVDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUV4RixPQUFPLEVBQUUscUJBQXFCLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDM0YsT0FBTyxFQUFFLHFCQUFxQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFaEYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFVbkYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7OztBQUUxRSxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRztJQUNyQyxFQUFFLEVBQW9CO1FBQ3BCLHVCQUF1QixFQUFFLFFBQVE7UUFDakMseUJBQXlCLEVBQUUsUUFBUTtRQUNuQyxnQkFBZ0IsRUFBRSxRQUFRO1FBQzFCLFVBQVUsRUFBRSxpQkFBaUI7UUFDN0IsbUJBQW1CLEVBQUUsc0JBQXNCLENBQUMsRUFBRSxDQUFDLFNBQVM7UUFDeEQsZ0JB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T0FBTztrQkFBMUIsS0FBSzttQkFBQyxXQUFXO1lBTzRDLFFBQVE7a0JBQXJFLEtBQUs7bUJBQUMsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtZQVd4QixvQkFBb0I7a0JBQXZELE1BQU07bUJBQUMsMEJBQTBCO1lBV0Usb0JBQW9CO2tCQUF2RCxNQUFNO21CQUFDLDBCQUEwQjtZQTJEVCxRQUFRO2tCQUFoQyxLQUFLO21CQUFDLFlBQVk7WUF1QkcsS0FBSztrQkFBMUIsS0FBSzttQkFBQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIERpcmVjdGl2ZSwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgUG9Nb2RhbEFjdGlvbiB9IGZyb20gJy4uLy4uLy4uLy4uL2NvbXBvbmVudHMvcG8tbW9kYWwnO1xuaW1wb3J0IHsgUG9Nb2RhbENvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uLy4uL2NvbXBvbmVudHMvcG8tbW9kYWwvcG8tbW9kYWwuY29tcG9uZW50JztcbmltcG9ydCB7IHBvTG9jYWxlRGVmYXVsdCB9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZpY2VzL3BvLWxhbmd1YWdlL3BvLWxhbmd1YWdlLmNvbnN0YW50JztcbmltcG9ydCB7IFBvTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2VydmljZXMvcG8tbGFuZ3VhZ2UvcG8tbGFuZ3VhZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBjYXBpdGFsaXplRmlyc3RMZXR0ZXIsIGNvbnZlcnRUb0Jvb2xlYW4sIGlzVHlwZW9mIH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbHMvdXRpbCc7XG5pbXBvcnQgeyBQb1RhYmxlQ29sdW1uU29ydFR5cGUsIFBvVGFibGVDb2x1bW5TcGFjaW5nIH0gZnJvbSAnLi4vLi4vLi4vcG8tdGFibGUnO1xuaW1wb3J0IHsgUG9UYWJsZUNvbHVtblNvcnQgfSBmcm9tICcuLi8uLi8uLi9wby10YWJsZS9pbnRlcmZhY2VzL3BvLXRhYmxlLWNvbHVtbi1zb3J0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBwb1RhYmxlTGl0ZXJhbHNEZWZhdWx0IH0gZnJvbSAnLi4vLi4vLi4vcG8tdGFibGUvcG8tdGFibGUtYmFzZS5jb21wb25lbnQnO1xuXG5pbXBvcnQgeyBQb0xvb2t1cEFkdmFuY2VkRmlsdGVyIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9wby1sb29rdXAtYWR2YW5jZWQtZmlsdGVyLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb0xvb2t1cENvbHVtbiB9IGZyb20gJy4uL2ludGVyZmFjZXMvcG8tbG9va3VwLWNvbHVtbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9Mb29rdXBGaWx0ZXIgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3BvLWxvb2t1cC1maWx0ZXIuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvTG9va3VwRmlsdGVyZWRJdGVtc1BhcmFtcyB9IGZyb20gJy4uL2ludGVyZmFjZXMvcG8tbG9va3VwLWZpbHRlcmVkLWl0ZW1zLXBhcmFtcy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9Mb29rdXBMaXRlcmFscyB9IGZyb20gJy4uL2ludGVyZmFjZXMvcG8tbG9va3VwLWxpdGVyYWxzLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb0xvb2t1cFJlc3BvbnNlQXBpIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9wby1sb29rdXAtcmVzcG9uc2UtYXBpLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb0Rpc2NsYWltZXJHcm91cCB9IGZyb20gJy4vLi4vLi4vLi4vcG8tZGlzY2xhaW1lci1ncm91cC9wby1kaXNjbGFpbWVyLWdyb3VwLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb0Rpc2NsYWltZXIgfSBmcm9tICcuLy4uLy4uLy4uL3BvLWRpc2NsYWltZXIvcG8tZGlzY2xhaW1lci5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9UYWJsZUNvbXBvbmVudCB9IGZyb20gJy4vLi4vLi4vLi4vcG8tdGFibGUvcG8tdGFibGUuY29tcG9uZW50JztcblxuZXhwb3J0IGNvbnN0IHBvTG9va3VwTGl0ZXJhbHNEZWZhdWx0ID0ge1xuICBlbjogPFBvTG9va3VwTGl0ZXJhbHM+e1xuICAgIG1vZGFsUHJpbWFyeUFjdGlvbkxhYmVsOiAnU2VsZWN0JyxcbiAgICBtb2RhbFNlY29uZGFyeUFjdGlvbkxhYmVsOiAnQ2FuY2VsJyxcbiAgICBtb2RhbFBsYWNlaG9sZGVyOiAnU2VhcmNoJyxcbiAgICBtb2RhbFRpdGxlOiAnU2VsZWN0IGEgcmVjb3JkJyxcbiAgICBtb2RhbFRhYmxlTm9Db2x1bW5zOiBwb1RhYmxlTGl0ZXJhbHNEZWZhdWx0LmVuLm5vQ29sdW1ucyxcbiAgICBtb2RhbFRhYmxlTm9EYXRhOiBwb1RhYmxlTGl0ZXJhbHNEZWZhdWx0LmVuLm5vRGF0YSxcbiAgICBtb2RhbFRhYmxlTG9hZGluZ0RhdGE6IHBvVGFibGVMaXRlcmFsc0RlZmF1bHQuZW4ubG9hZGluZ0RhdGEsXG4gICAgbW9kYWxUYWJsZUxvYWRNb3JlRGF0YTogcG9UYWJsZUxpdGVyYWxzRGVmYXVsdC5lbi5sb2FkTW9yZURhdGEsXG4gICAgbW9kYWxBZHZhbmNlZFNlYXJjaDogJ0FkdmFuY2VkIHNlYXJjaCcsXG4gICAgbW9kYWxBZHZhbmNlZFNlYXJjaFRpdGxlOiAnQWR2YW5jZWQgc2VhcmNoJyxcbiAgICBtb2RhbEFkdmFuY2VkU2VhcmNoUHJpbWFyeUFjdGlvbkxhYmVsOiAnRmlsdGVyJyxcbiAgICBtb2RhbEFkdmFuY2VkU2VhcmNoU2Vjb25kYXJ5QWN0aW9uTGFiZWw6ICdSZXR1cm4nLFxuICAgIG1vZGFsRGlzY2xhaW1lckdyb3VwVGl0bGU6ICdQcmVzZW50aW5nIHJlc3VsdHMgZmlsdGVyZWQgYnk6J1xuICB9LFxuICBlczogPFBvTG9va3VwTGl0ZXJhbHM+e1xuICAgIG1vZGFsUHJpbWFyeUFjdGlvbkxhYmVsOiAnU2VsZWNjaW9uYXInLFxuICAgIG1vZGFsU2Vjb25kYXJ5QWN0aW9uTGFiZWw6ICdDYW5jZWxhcicsXG4gICAgbW9kYWxQbGFjZWhvbGRlcjogJ0J1c2NhcicsXG4gICAgbW9kYWxUaXRsZTogJ1NlbGVjY2lvbmUgdW4gcmVnaXN0cm8nLFxuICAgIG1vZGFsVGFibGVOb0NvbHVtbnM6IHBvVGFibGVMaXRlcmFsc0RlZmF1bHQuZXMubm9Db2x1bW5zLFxuICAgIG1vZGFsVGFibGVOb0RhdGE6IHBvVGFibGVMaXRlcmFsc0RlZmF1bHQuZXMubm9EYXRhLFxuICAgIG1vZGFsVGFibGVMb2FkaW5nRGF0YTogcG9UYWJsZUxpdGVyYWxzRGVmYXVsdC5lcy5sb2FkaW5nRGF0YSxcbiAgICBtb2RhbFRhYmxlTG9hZE1vcmVEYXRhOiBwb1RhYmxlTGl0ZXJhbHNEZWZhdWx0LmVzLmxvYWRNb3JlRGF0YSxcbiAgICBtb2RhbEFkdmFuY2VkU2VhcmNoOiAnQsO6c3F1ZWRhIEF2YW56YWRhJyxcbiAgICBtb2RhbEFkdmFuY2VkU2VhcmNoVGl0bGU6ICdCw7pzcXVlZGEgQXZhbnphZGEnLFxuICAgIG1vZGFsQWR2YW5jZWRTZWFyY2hQcmltYXJ5QWN0aW9uTGFiZWw6ICdGaWx0cmFyJyxcbiAgICBtb2RhbEFkdmFuY2VkU2VhcmNoU2Vjb25kYXJ5QWN0aW9uTGFiZWw6ICdWdWVsdmUnLFxuICAgIG1vZGFsRGlzY2xhaW1lckdyb3VwVGl0bGU6ICdQcmVzZW50YXIgcmVzdWx0YWRvcyBmaWx0cmFkb3MgcG9yOidcbiAgfSxcbiAgcHQ6IDxQb0xvb2t1cExpdGVyYWxzPntcbiAgICBtb2RhbFByaW1hcnlBY3Rpb25MYWJlbDogJ1NlbGVjaW9uYXInLFxuICAgIG1vZGFsU2Vjb25kYXJ5QWN0aW9uTGFiZWw6ICdDYW5jZWxhcicsXG4gICAgbW9kYWxQbGFjZWhvbGRlcjogJ1Blc3F1aXNhcicsXG4gICAgbW9kYWxUaXRsZTogJ1NlbGVjaW9uZSB1bSByZWdpc3RybycsXG4gICAgbW9kYWxUYWJsZU5vQ29sdW1uczogcG9UYWJsZUxpdGVyYWxzRGVmYXVsdC5wdC5ub0NvbHVtbnMsXG4gICAgbW9kYWxUYWJsZU5vRGF0YTogcG9UYWJsZUxpdGVyYWxzRGVmYXVsdC5wdC5ub0RhdGEsXG4gICAgbW9kYWxUYWJsZUxvYWRpbmdEYXRhOiBwb1RhYmxlTGl0ZXJhbHNEZWZhdWx0LnB0LmxvYWRpbmdEYXRhLFxuICAgIG1vZGFsVGFibGVMb2FkTW9yZURhdGE6IHBvVGFibGVMaXRlcmFsc0RlZmF1bHQucHQubG9hZE1vcmVEYXRhLFxuICAgIG1vZGFsQWR2YW5jZWRTZWFyY2g6ICdCdXNjYSBhdmFuw6dhZGEnLFxuICAgIG1vZGFsQWR2YW5jZWRTZWFyY2hUaXRsZTogJ0J1c2NhIEF2YW7Dp2FkYScsXG4gICAgbW9kYWxBZHZhbmNlZFNlYXJjaFByaW1hcnlBY3Rpb25MYWJlbDogJ0ZpbHRyYXInLFxuICAgIG1vZGFsQWR2YW5jZWRTZWFyY2hTZWNvbmRhcnlBY3Rpb25MYWJlbDogJ1ZvbHRhcicsXG4gICAgbW9kYWxEaXNjbGFpbWVyR3JvdXBUaXRsZTogJ0FwcmVzZW50YW5kbyByZXN1bHRhZG9zIGZpbHRyYWRvcyBwb3I6J1xuICB9LFxuICBydTogPFBvTG9va3VwTGl0ZXJhbHM+e1xuICAgIG1vZGFsUHJpbWFyeUFjdGlvbkxhYmVsOiAn0JLRi9Cx0YDQsNGC0YwnLFxuICAgIG1vZGFsU2Vjb25kYXJ5QWN0aW9uTGFiZWw6ICfQntGC0LzQtdC90LjRgtGMJyxcbiAgICBtb2RhbFBsYWNlaG9sZGVyOiAn0J/QvtC40YHQuicsXG4gICAgbW9kYWxUaXRsZTogJ9CS0YvQsdC10YDQuNGC0LUg0LfQsNC/0LjRgdGMJyxcbiAgICBtb2RhbFRhYmxlTm9Db2x1bW5zOiBwb1RhYmxlTGl0ZXJhbHNEZWZhdWx0LnJ1Lm5vQ29sdW1ucyxcbiAgICBtb2RhbFRhYmxlTm9EYXRhOiBwb1RhYmxlTGl0ZXJhbHNEZWZhdWx0LnJ1Lm5vRGF0YSxcbiAgICBtb2RhbFRhYmxlTG9hZGluZ0RhdGE6IHBvVGFibGVMaXRlcmFsc0RlZmF1bHQucnUubG9hZGluZ0RhdGEsXG4gICAgbW9kYWxUYWJsZUxvYWRNb3JlRGF0YTogcG9UYWJsZUxpdGVyYWxzRGVmYXVsdC5ydS5sb2FkTW9yZURhdGEsXG4gICAgbW9kYWxBZHZhbmNlZFNlYXJjaDogJ9Cg0LDRgdGI0LjRgNC10L3QvdGL0Lkg0L/QvtC40YHQuicsXG4gICAgbW9kYWxBZHZhbmNlZFNlYXJjaFRpdGxlOiAn0KDQsNGB0YjQuNGA0LXQvdC90YvQuSDQv9C+0LjRgdC6JyxcbiAgICBtb2RhbEFkdmFuY2VkU2VhcmNoUHJpbWFyeUFjdGlvbkxhYmVsOiAn0KTQuNC70YzRgtGAJyxcbiAgICBtb2RhbEFkdmFuY2VkU2VhcmNoU2Vjb25kYXJ5QWN0aW9uTGFiZWw6ICfQndCw0LfQsNC0JyxcbiAgICBtb2RhbERpc2NsYWltZXJHcm91cFRpdGxlOiAn0J/RgNC10LTRgdGC0LDQstC70LXQvdC90YvQtSDRgNC10LfRg9C70YzRgtCw0YLRiyDQvtGC0YTQuNC70YzRgtGA0L7QstCw0L3RiyDQv9C+OidcbiAgfVxufTtcblxuLyoqXG4gKiBAZG9jc1ByaXZhdGVcbiAqXG4gKiBDbGFzc2UgYmFzZSBkbyBjb21wb25lbnRlIFBvIExvb2t1cCBNb2RhbC5cbiAqL1xuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUG9Mb29rdXBNb2RhbEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIE9uSW5pdCB7XG4gIEBWaWV3Q2hpbGQoUG9Nb2RhbENvbXBvbmVudCwgeyBzdGF0aWM6IHRydWUgfSkgcG9Nb2RhbDogUG9Nb2RhbENvbXBvbmVudDtcbiAgQFZpZXdDaGlsZChQb1RhYmxlQ29tcG9uZW50LCB7IHN0YXRpYzogdHJ1ZSB9KSBwb1RhYmxlOiBQb1RhYmxlQ29tcG9uZW50O1xuXG4gIC8qKlxuICAgKiBPYmpldG8gY29tIG9zIGNhbXBvcyBxdWUgc2Vyw6NvIGNyaWFkb3Mgbm8gYnVzY2EgYXZhbsOnYWRhLlxuICAgKlxuICAgKiA+IENhc28gbsOjbyBzZWphIHBhc3NhZG8gdW0gb2JqZXRvIG91IGVudMOjbyBlbGUgZXN0ZWphIGVtIGJyYW5jbyBvIGxpbmsgZGUgYnVzY2EgYXZhbsOnYWRhIGZpY2Fyw6EgZXNjb25kaWRvLlxuICAgKlxuICAgKiBFeGVtcGxvIGRlIFVSTCBjb20gYnVzY2EgYXZhbsOnYWRhOiBodHRwOi8vbG9jYWxob3N0OjMwMDAvdjEvaGVyb2VzP2ZpbHRlcj0mcGFnZT0xJnBhZ2VTaXplPTEwYCZuYW1lPVRvbnklMjBTdGFyayZuaWNrbmFtZT1Ib21lbSUyMGRlJTIwRmVycm8mZW1haWw9aXJubWFuQG1hcnZlbC5jb21gXG4gICAqXG4gICAqIENhc28gYWxndW0gcGFyw6JtZXRybyBzZWphIHVtYSBsaXN0YSwgYSBjb25jYXRlbmHDp8OjbyDDqSBmZWl0YSB1dGlsaXphbmRvIHZpcmd1bGEuXG4gICAqIEV4ZW1wbG86IGh0dHA6Ly9sb2NhbGhvc3Q6MzAwMC92MS9oZXJvZXM/ZmlsdGVyPSZwYWdlPTEmcGFnZVNpemU9MTBgJm5hbWU9VG9ueSUyMFN0YXJrLFBldGVyJTIwUGFya2VyLEdvaGFuYFxuICAgKlxuICAgKi9cbiAgQElucHV0KCdwLWFkdmFuY2VkLWZpbHRlcnMnKSBhZHZhbmNlZEZpbHRlcnM6IEFycmF5PFBvTG9va3VwQWR2YW5jZWRGaWx0ZXI+O1xuXG4gIC8qKlxuICAgKiBMaXN0YSBkYXMgY29sdW5hcyBkYSB0YWJlbGEuXG4gICAqIEVzc2EgcHJvcHJpZWRhZGUgZGV2ZSByZWNlYmVyIHVtIGFycmF5IGRlIG9iamV0b3MgcXVlIGltcGxlbWVudGFtIGEgaW50ZXJmYWNlIFBvTG9va3VwQ29sdW1uLlxuICAgKi9cbiAgQElucHV0KCdwLWNvbHVtbnMnKSBjb2x1bW5zOiBBcnJheTxQb0xvb2t1cENvbHVtbj47XG5cbiAgLyoqIExpc3RhIGRlIGl0ZW5zIGRhIHRhYmVsYS4gKi9cbiAgQElucHV0KCdwLWl0ZW1zJykgaXRlbXM6IEFycmF5PGFueT47XG5cbiAgLyoqIENsYXNzZSBkZSBzZXJ2acOnbyBjb20gYSBpbXBsZW1lbnRhw6fDo28gZG8gY2xpZW50ZS4gKi9cbiAgQElucHV0KCdwLWZpbHRlci1zZXJ2aWNlJykgZmlsdGVyU2VydmljZTogUG9Mb29rdXBGaWx0ZXI7XG5cbiAgLyoqIENsYXNzZSBkZSBzZXJ2acOnbyBjb20gYSBpbXBsZW1lbnRhw6fDo28gZG8gY2xpZW50ZS4gKi9cbiAgQElucHV0KCdwLWZpbHRlci1wYXJhbXMnKSBmaWx0ZXJQYXJhbXM6IGFueTtcblxuICAvKiogU2UgdmVyZGFkZWlybywgZXNjb25kZSBvIGdlcmVuY2lhZG9yIGRlIHRhcmVmYXMsIHJlc3BvbnPDoXZlbCBwZWxhIGRlZmluacOnw6NvIGRlIHF1YWlzIGNvbHVuYXMgc2Vyw6NvIGV4aWJpZGFzLiAqL1xuICBASW5wdXQoeyBhbGlhczogJ3AtaGlkZS1jb2x1bW5zLW1hbmFnZXInLCB0cmFuc2Zvcm06IGNvbnZlcnRUb0Jvb2xlYW4gfSlcbiAgaGlkZUNvbHVtbnNNYW5hZ2VyOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIFNlIHZlcmRhZGVpcm8sIGF0aXZhIGEgZnVuY2lvbmFsaWRhZGUgZGUgc2Nyb2xsIGluZmluaXRvIHBhcmEgYSB0YWJlbGEgZXhpYmlkYSBubyByZXRvcm5vIGRhIGNvbnN1bHRhLiAqL1xuICBASW5wdXQoeyBhbGlhczogJ3AtaW5maW5pdGUtc2Nyb2xsJywgdHJhbnNmb3JtOiBjb252ZXJ0VG9Cb29sZWFuIH0pIGluZmluaXRlU2Nyb2xsOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIFNlIHZlcmRhZGVpcm8sIGF0aXZhIGEgZnVuY2lvbmFsaWRhZGUgZGUgbXVsdGlwbGEgc2VsZcOnw6NvLiAqL1xuICBASW5wdXQoeyBhbGlhczogJ3AtbXVsdGlwbGUnLCB0cmFuc2Zvcm06IGNvbnZlcnRUb0Jvb2xlYW4gfSkgbXVsdGlwbGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogRXZlbnRvIHV0aWxpemFkbyBhbyBzZWxlY2lvbmFyIHVtIHJlZ2lzdHJvIGRhIHRhYmVsYS4gKi9cbiAgQE91dHB1dCgncC1jaGFuZ2UtbW9kZWwnKSBtb2RlbDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAvKiogQ2xhc3NlIGRlIHNlcnZpw6dvIGNvbSBpdGVtcyBzZWxlY2lvbmFkb3MgKi9cbiAgQElucHV0KCdwLXNlbGVjdGVkLWl0ZW1zJykgc2VsZWN0ZWRJdGVtczogYW55O1xuXG4gIC8qKiBJbmRpY2EgYSBjb2x1bmEgcXVlIHNlcsOhIHV0aWxpemFkYSBjb21vIGRlc2NyacOnw6NvIGRvIGNhbXBvIGUgY29tbyBmaWx0cm8gZGVudHJvIGRhIGphbmVsYS4gKi9cbiAgQElucHV0KCdwLWZpZWxkLWxhYmVsJykgZmllbGRMYWJlbDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogSW5kaWNhIGEgY29sdW5hIHF1ZSBzZXLDoSB1dGlsaXphZGEgY29tbyB2YWxvciBkbyBjYW1wby5cbiAgICpcbiAgICogPiBBdGVuw6fDo286IENhc28gbsOjbyBzZWphIHBhc3NhZGEgb3UgdGVuaGEgbyBjb250ZcO6ZG8gaW5jb3JyZXRvLCBuw6NvIGlyw6EgYXR1YWxpemFyIG8gbW9kZWwgZG8gZm9ybXVsw6FyaW8uXG4gICAqL1xuICBASW5wdXQoJ3AtZmllbGQtdmFsdWUnKSBmaWVsZFZhbHVlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFJlc3BvbnPDoXZlbCBwb3IgYXBsaWNhciBlc3Bhw6dhbWVudG8gbmFzIGNvbHVuYXMgZGEgdGFiZWxhIGNvbnRpZGEgbm8gbG9va3VwLlxuICAgKiBEZXZlIHJlY2ViZXIgdW0gZG9zIHZhbG9yZXMgZG8gZW51bSBgUG9UYWJsZUNvbHVtblNwYWNpbmdgLlxuICAgKi9cbiAgQElucHV0KCdwLXNwYWNpbmcnKSBzcGFjaW5nOiBQb1RhYmxlQ29sdW1uU3BhY2luZyA9IFBvVGFibGVDb2x1bW5TcGFjaW5nLk1lZGl1bTtcblxuICAvKipcbiAgICogSGFiaWxpdGEgb3UgZGVzYWJpbGl0YSBhIHF1ZWJyYSBhdXRvbcOhdGljYSBkZSB0ZXh0by4gUXVhbmRvIGF0aXZhZGEsIG8gdGV4dG8gcXVlIGV4Y2VkZVxuICAgKiBvIGVzcGHDp28gZGlzcG9uw612ZWwgw6kgdHJhbnNmZXJpZG8gcGFyYSBhIHByw7N4aW1hIGxpbmhhIGVtIHBvbnRvcyBhcHJvcHJpYWRvcyBwYXJhIHVtYVxuICAgKiBsZWl0dXJhIGNsYXJhLlxuICAgKi9cbiAgQElucHV0KHsgYWxpYXM6ICdwLXRleHQtd3JhcCcsIHRyYW5zZm9ybTogY29udmVydFRvQm9vbGVhbiB9KSB0ZXh0V3JhcD86IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBFdmVudG8gZGlzcGFyYWRvIGFvIGZlY2hhciBvIHBvcG92ZXIgZG8gZ2VyZW5jaWFkb3IgZGUgY29sdW5hcyBhcMOzcyBhbHRlcmFyIGFzIGNvbHVuYXMgdmlzw612ZWlzLlxuICAgKlxuICAgKiBPIGNvbXBvbmVudGUgZW52aWEgY29tbyBwYXLDom1ldHJvIHVtIGFycmF5IGRlIHN0cmluZyBjb20gYXMgY29sdW5hcyB2aXPDrXZlaXMgYXR1YWxpemFkYXMuXG4gICAqIFBvciBleGVtcGxvOiBbXCJpZENhcmRcIiwgXCJuYW1lXCIsIFwiaGlyZVN0YXR1c1wiLCBcImFnZVwiXS5cbiAgICovXG4gIEBPdXRwdXQoJ3AtY2hhbmdlLXZpc2libGUtY29sdW1ucycpIGNoYW5nZVZpc2libGVDb2x1bW5zID0gbmV3IEV2ZW50RW1pdHRlcjxBcnJheTxzdHJpbmc+PigpO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEV2ZW50byBkaXNwYXJhZG8gYW8gY2xpY2FyIG5vIGJvdMOjbyBkZSByZXN0YXVyYXIgcGFkcsOjbyBubyBnZXJlbmNpYWRvciBkZSBjb2x1bmFzLlxuICAgKlxuICAgKiBPIGNvbXBvbmVudGUgZW52aWEgY29tbyBwYXLDom1ldHJvIHVtIGFycmF5IGRlIHN0cmluZyBjb20gYXMgY29sdW5hcyBjb25maWd1cmFkYXMgaW5pY2lhbG1lbnRlLlxuICAgKiBQb3IgZXhlbXBsbzogW1wiaWRDYXJkXCIsIFwibmFtZVwiLCBcImhpcmVTdGF0dXNcIiwgXCJhZ2VcIl0uXG4gICAqL1xuICBAT3V0cHV0KCdwLXJlc3RvcmUtY29sdW1uLW1hbmFnZXInKSBjb2x1bW5SZXN0b3JlTWFuYWdlciA9IG5ldyBFdmVudEVtaXR0ZXI8QXJyYXk8U3RyaW5nPj4oKTtcblxuICBoYXNOZXh0ID0gdHJ1ZTtcbiAgaXNMb2FkaW5nID0gZmFsc2U7XG4gIHBhZ2UgPSAxO1xuICBwYWdlU2l6ZSA9IDEwO1xuICBzZWFyY2hWYWx1ZTogc3RyaW5nID0gJyc7XG4gIHRhYmxlTGl0ZXJhbHM6IGFueTtcblxuICAvLyBQcm9wcmllZGFkZSBkYSBtb2RhbCBkZSBidXNjYSBhdmFuw6dhZGE6XG4gIGFkdmFuY2VkRmlsdGVyTW9kYWxUaXRsZSA9ICcnO1xuICBkeW5hbWljRm9ybVZhbHVlID0ge307XG4gIGRpc2NsYWltZXIhOiBQb0Rpc2NsYWltZXI7XG4gIGRpc2NsYWltZXJHcm91cCE6IFBvRGlzY2xhaW1lckdyb3VwO1xuICBpc0FkdmFuY2VkRmlsdGVyID0gZmFsc2U7XG4gIHByaW1hcnlBY3Rpb25BZHZhbmNlZEZpbHRlciE6IFBvTW9kYWxBY3Rpb247XG4gIHNlY29uZGFyeUFjdGlvbkFkdmFuY2VkRmlsdGVyITogUG9Nb2RhbEFjdGlvbjtcbiAgc2VsZWN0ZWRzOiBBcnJheTxhbnk+ID0gW107XG5cbiAgcHJvdGVjdGVkIHNvcnQ6IFBvVGFibGVDb2x1bW5Tb3J0O1xuXG4gIHByaXZhdGUgZmlsdGVyU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgc2VhcmNoU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgc2hvd01vcmVTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSBkaXNjbGFpbWVyTGFiZWw6IHN0cmluZztcblxuICBwcml2YXRlIF9saXRlcmFsczogUG9Mb29rdXBMaXRlcmFscztcbiAgcHJpdmF0ZSBfdGl0bGU6IHN0cmluZztcbiAgcHJpdmF0ZSBsYW5ndWFnZTogc3RyaW5nID0gcG9Mb2NhbGVEZWZhdWx0O1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbWVtYmVyLW9yZGVyaW5nXG4gIHByaW1hcnlBY3Rpb246IFBvTW9kYWxBY3Rpb24gPSB7XG4gICAgYWN0aW9uOiAoKSA9PiB7XG4gICAgICBsZXQgc2VsZWN0ZWRzSXRlbXM6IEFycmF5PGFueT4gPSBbXTtcbiAgICAgIGlmICghdGhpcy5tdWx0aXBsZSkge1xuICAgICAgICB0aGlzLml0ZW1zLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICAgICAgaWYgKGVsZW1lbnRbJyRzZWxlY3RlZCddKSB7XG4gICAgICAgICAgICBzZWxlY3RlZHNJdGVtcy5wdXNoKGVsZW1lbnQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZWxlY3RlZHNJdGVtcyA9IHRoaXMuc2VsZWN0ZWRzO1xuICAgICAgfVxuICAgICAgdGhpcy5tb2RlbC5lbWl0KHNlbGVjdGVkc0l0ZW1zKTtcbiAgICAgIHRoaXMucG9Nb2RhbC5jbG9zZSgpO1xuICAgIH0sXG4gICAgbGFiZWw6IHRoaXMubGl0ZXJhbHMubW9kYWxQcmltYXJ5QWN0aW9uTGFiZWxcbiAgfTtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L21lbWJlci1vcmRlcmluZ1xuICBzZWNvbmRhcnlBY3Rpb246IFBvTW9kYWxBY3Rpb24gPSB7XG4gICAgYWN0aW9uOiAoKSA9PiB7XG4gICAgICB0aGlzLm1vZGVsLmVtaXQobnVsbCk7XG4gICAgICB0aGlzLnBvTW9kYWwuY2xvc2UoKTtcbiAgICB9LFxuICAgIGxhYmVsOiB0aGlzLmxpdGVyYWxzLm1vZGFsU2Vjb25kYXJ5QWN0aW9uTGFiZWxcbiAgfTtcblxuICAvKiogT2JqZXRvIGNvbSBhcyBsaXRlcmFpcyB1c2FkYXMgbm8gYHBvLWxvb2t1cC1tb2RhbGAuICovXG4gIEBJbnB1dCgncC1saXRlcmFscycpIHNldCBsaXRlcmFscyh2YWx1ZTogUG9Mb29rdXBMaXRlcmFscykge1xuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIE9iamVjdCAmJiAhKHZhbHVlIGluc3RhbmNlb2YgQXJyYXkpKSB7XG4gICAgICB0aGlzLl9saXRlcmFscyA9IHtcbiAgICAgICAgLi4ucG9Mb29rdXBMaXRlcmFsc0RlZmF1bHRbcG9Mb2NhbGVEZWZhdWx0XSxcbiAgICAgICAgLi4ucG9Mb29rdXBMaXRlcmFsc0RlZmF1bHRbdGhpcy5sYW5ndWFnZV0sXG4gICAgICAgIC4uLnZhbHVlXG4gICAgICB9O1xuICAgICAgaWYgKHZhbHVlLm1vZGFsVGl0bGUpIHtcbiAgICAgICAgdGhpcy50aXRsZSA9IHRoaXMubGl0ZXJhbHMubW9kYWxUaXRsZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fbGl0ZXJhbHMgPSBwb0xvb2t1cExpdGVyYWxzRGVmYXVsdFt0aGlzLmxhbmd1YWdlXTtcbiAgICB9XG4gICAgdGhpcy5wcmltYXJ5QWN0aW9uLmxhYmVsID0gdGhpcy5saXRlcmFscy5tb2RhbFByaW1hcnlBY3Rpb25MYWJlbDtcbiAgICB0aGlzLnNlY29uZGFyeUFjdGlvbi5sYWJlbCA9IHRoaXMubGl0ZXJhbHMubW9kYWxTZWNvbmRhcnlBY3Rpb25MYWJlbDtcbiAgICB0aGlzLnNldFRhYmxlTGl0ZXJhbHMoKTtcbiAgfVxuXG4gIGdldCBsaXRlcmFscygpIHtcbiAgICByZXR1cm4gdGhpcy5fbGl0ZXJhbHMgfHwgcG9Mb29rdXBMaXRlcmFsc0RlZmF1bHRbdGhpcy5sYW5ndWFnZV07XG4gIH1cblxuICAvKiogVMOtdHVsbyBkYSBtb2RhbC4gKi9cbiAgQElucHV0KCdwLXRpdGxlJykgc2V0IHRpdGxlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl90aXRsZSA9IGlzVHlwZW9mKHZhbHVlLCAnc3RyaW5nJykgPyB2YWx1ZSA6IHRoaXMubGl0ZXJhbHMubW9kYWxUaXRsZTtcbiAgfVxuXG4gIGdldCB0aXRsZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fdGl0bGU7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBsYW5ndWFnZVNlcnZpY2U6IFBvTGFuZ3VhZ2VTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgKSB7XG4gICAgdGhpcy5sYW5ndWFnZSA9IGxhbmd1YWdlU2VydmljZS5nZXRTaG9ydExhbmd1YWdlKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5maWx0ZXJTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuZmlsdGVyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc2VhcmNoU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLnNlYXJjaFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnNob3dNb3JlU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLnNob3dNb3JlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5zZXRBZHZhbmNlZEZpbHRlck1vZGFsUHJvcGVydGllcygpO1xuICAgIHRoaXMuaW5pdGlhbGl6ZURhdGEoKTtcbiAgICB0aGlzLnNldFRhYmxlTGl0ZXJhbHMoKTtcbiAgfVxuXG4gIGNyZWF0ZURpc2NsYWltZXIoKSB7XG4gICAgdGhpcy5kaXNjbGFpbWVyR3JvdXAuZGlzY2xhaW1lcnMgPSBbXTtcbiAgICB0aGlzLnNlYXJjaFZhbHVlID0gJyc7XG5cbiAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyh0aGlzLmR5bmFtaWNGb3JtVmFsdWUpKSB7XG4gICAgICB0aGlzLmFkZERpc2NsYWltZXIodmFsdWUsIGtleSk7XG4gICAgfVxuXG4gICAgaWYgKCFPYmplY3QudmFsdWVzKHRoaXMuZHluYW1pY0Zvcm1WYWx1ZSkuc29tZSh2ID0+IHYgIT09IG51bGwgJiYgdHlwZW9mIHYgIT09ICd1bmRlZmluZWQnKSkge1xuICAgICAgdGhpcy5pbml0aWFsaXplRGF0YSgpO1xuICAgIH1cbiAgfVxuXG4gIGFkZERpc2NsYWltZXIodmFsdWU6IGFueSwgcHJvcGVydHk6IHN0cmluZykge1xuICAgIHRoaXMuZGlzY2xhaW1lckxhYmVsID0gJyc7XG4gICAgY29uc3QgZmllbGRGaWx0ZXIgPSB0aGlzLmFkdmFuY2VkRmlsdGVycy5maW5kKGZpbHRlciA9PiBmaWx0ZXIucHJvcGVydHkgPT09IHByb3BlcnR5KTtcbiAgICB0aGlzLmRpc2NsYWltZXIgPSA8YW55PnsgcHJvcGVydHk6IHByb3BlcnR5IH07XG4gICAgdGhpcy5kaXNjbGFpbWVyLnZhbHVlID0gdmFsdWU7XG4gICAgY29uc3QgbGFiZWxQcm9wZXJ0eSA9IGZpZWxkRmlsdGVyLmxhYmVsIHx8IGNhcGl0YWxpemVGaXJzdExldHRlcihmaWVsZEZpbHRlci5wcm9wZXJ0eSk7XG5cbiAgICBpZiAoZmllbGRGaWx0ZXIudHlwZSA9PT0gJ2N1cnJlbmN5JyAmJiB2YWx1ZSkge1xuICAgICAgdGhpcy5mb3JtYXRWYWx1ZVRvQ3VycmVuY3koZmllbGRGaWx0ZXIsIHZhbHVlKTtcbiAgICB9XG5cbiAgICBpZiAoZmllbGRGaWx0ZXIudHlwZSA9PT0gJ2Jvb2xlYW4nICYmICh2YWx1ZSA9PT0gdHJ1ZSB8fCB2YWx1ZSA9PT0gZmFsc2UpKSB7XG4gICAgICB0aGlzLmZvcm1hdFZhbHVlVG9Cb29sZWFuKGZpZWxkRmlsdGVyLCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgaWYgKGZpZWxkRmlsdGVyLm9wdGlvbnMgJiYgdmFsdWUpIHtcbiAgICAgIHRoaXMuYXBwbHlEaXNjbGFpbWVyTGFiZWxWYWx1ZShmaWVsZEZpbHRlciwgdmFsdWUpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5kaXNjbGFpbWVyTGFiZWwpIHtcbiAgICAgIHRoaXMuZGlzY2xhaW1lckxhYmVsID0gdGhpcy5kaXNjbGFpbWVyLnZhbHVlO1xuICAgIH1cblxuICAgIHRoaXMuZGlzY2xhaW1lci5sYWJlbCA9IGAke2xhYmVsUHJvcGVydHl9OiAke3RoaXMuZGlzY2xhaW1lckxhYmVsfWA7XG4gICAgdGhpcy5kaXNjbGFpbWVyR3JvdXAuZGlzY2xhaW1lcnMgPSBbLi4udGhpcy5kaXNjbGFpbWVyR3JvdXAuZGlzY2xhaW1lcnMsIHRoaXMuZGlzY2xhaW1lcl07XG4gIH1cblxuICBvbkNoYW5nZURpc2NsYWltZXJHcm91cCgpIHtcbiAgICBpZiAoIXRoaXMuc2VhcmNoVmFsdWUpIHtcbiAgICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICAgIHRoaXMuc2VhcmNoVmFsdWUgPSAnJztcblxuICAgICAgdGhpcy5zZWFyY2hGaWx0ZXJlZEl0ZW1zKCk7XG4gICAgfVxuICB9XG5cbiAgc2VhcmNoKCk6IHZvaWQge1xuICAgIHRoaXMucGFnZSA9IDE7XG5cbiAgICBpZiAodGhpcy5zZWFyY2hWYWx1ZSkge1xuICAgICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xuICAgICAgdGhpcy5kaXNjbGFpbWVyR3JvdXAuZGlzY2xhaW1lcnMgPSBbXTtcblxuICAgICAgdGhpcy5zZWFyY2hGaWx0ZXJlZEl0ZW1zKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaW5pdGlhbGl6ZURhdGEoKTtcbiAgICB9XG4gIH1cblxuICBzZWFyY2hGaWx0ZXJlZEl0ZW1zKCk6IHZvaWQge1xuICAgIHRoaXMuc2VhcmNoU3Vic2NyaXB0aW9uID0gdGhpcy5nZXRGaWx0ZXJlZEl0ZW1zKHRoaXMuc2VhcmNoVmFsdWUpXG4gICAgICAucGlwZShcbiAgICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB7XG4gICAgICAgICAgdGhpcy5zZXRMb29rdXBSZXNwb25zZVByb3BlcnRpZXMoKTtcbiAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvcik7XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAoZGF0YTogUG9Mb29rdXBSZXNwb25zZUFwaSkgPT4gdGhpcy5zZXRMb29rdXBSZXNwb25zZVByb3BlcnRpZXMoZGF0YSksXG4gICAgICAgICgpID0+IHt9XG4gICAgICApO1xuICB9XG5cbiAgc2hvd01vcmVFdmVudCgpIHtcbiAgICB0aGlzLnBhZ2UrKztcbiAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XG5cbiAgICB0aGlzLnNob3dNb3JlU3Vic2NyaXB0aW9uID0gdGhpcy5nZXRGaWx0ZXJlZEl0ZW1zKHRoaXMuc2VhcmNoVmFsdWUpXG4gICAgICAucGlwZShcbiAgICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB7XG4gICAgICAgICAgdGhpcy5oYXNOZXh0ID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvcik7XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAoZGF0YTogUG9Mb29rdXBSZXNwb25zZUFwaSkgPT4ge1xuICAgICAgICAgIHRoaXMuaXRlbXMgPSBbLi4udGhpcy5pdGVtcywgLi4uZGF0YS5pdGVtc107XG4gICAgICAgICAgdGhpcy5oYXNOZXh0ID0gZGF0YS5oYXNOZXh0O1xuICAgICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgdGhpcy5zZXRTZWxlY3RlZEl0ZW1zKCk7XG4gICAgICAgIH0sXG4gICAgICAgICgpID0+IHt9XG4gICAgICApO1xuICB9XG5cbiAgLy9Nw6l0b2RvIHJlc3BvbnPDoXZlbCBwb3Igc2VsZWNpb25hciBhcyBsaW5oYXMgcXVhbmRvIGFicmUgbyBtb2RhbC5cbiAgc2V0U2VsZWN0ZWRJdGVtcygpIHtcbiAgICB0aGlzLnNlbGVjdGVkcy5mb3JFYWNoKHNlbGVjdGVkSXRlbSA9PiB7XG4gICAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xuICAgICAgICB0aGlzLnBvVGFibGUuc2VsZWN0Um93SXRlbShpdGVtID0+IGl0ZW1bdGhpcy5maWVsZFZhbHVlXSA9PT0gc2VsZWN0ZWRJdGVtLnZhbHVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucG9UYWJsZS5zZWxlY3RSb3dJdGVtKGl0ZW0gPT4gaXRlbVt0aGlzLmZpZWxkVmFsdWVdID09PSBzZWxlY3RlZEl0ZW1bdGhpcy5maWVsZFZhbHVlXSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvL03DqXRvZG8gcmVzcG9uc8OhdmVsIHBvciBjcmlhciBvcyBkaXNjbGFpbWVycyBxdWFuZG8gYWJyZSBvIG1vZGFsLlxuICBzZXREaXNjbGFpbWVyc0l0ZW1zKCkge1xuICAgIGlmICh0aGlzLnNlbGVjdGVkSXRlbXMgJiYgIUFycmF5LmlzQXJyYXkodGhpcy5zZWxlY3RlZEl0ZW1zKSkge1xuICAgICAgdGhpcy5tdWx0aXBsZSA/ICh0aGlzLnNlbGVjdGVkcyA9IFt7IHZhbHVlOiB0aGlzLnNlbGVjdGVkSXRlbXMgfV0pIDogKHRoaXMuc2VsZWN0ZWRzID0gW3RoaXMuc2VsZWN0ZWRJdGVtc10pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnNlbGVjdGVkcy5sZW5ndGggPT09IDAgJiYgdGhpcy5zZWxlY3RlZEl0ZW1zICYmIHRoaXMuc2VsZWN0ZWRJdGVtcy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRzID0gWy4uLnRoaXMuc2VsZWN0ZWRJdGVtc107XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhcHBseURpc2NsYWltZXJMYWJlbFZhbHVlKGZpZWxkOiBQb0xvb2t1cEFkdmFuY2VkRmlsdGVyLCBmaWx0ZXJWYWx1ZTogYW55KSB7XG4gICAgY29uc3QgdmFsdWVzID0gQXJyYXkuaXNBcnJheShmaWx0ZXJWYWx1ZSkgPyBmaWx0ZXJWYWx1ZSA6IFtmaWx0ZXJWYWx1ZV07XG4gICAgY29uc3QgbGFiZWxzID0gdmFsdWVzLm1hcChvcHRpb25WYWx1ZSA9PiB7XG4gICAgICBjb25zdCBmaW5kT3B0aW9uID0gZmllbGQub3B0aW9ucy5maW5kKG9wdGlvbiA9PiBvcHRpb24udmFsdWUgPT09IG9wdGlvblZhbHVlKTtcbiAgICAgIHJldHVybiBmaW5kT3B0aW9uLmxhYmVsO1xuICAgIH0pO1xuXG4gICAgaWYgKGxhYmVscy5qb2luKCkpIHtcbiAgICAgIHRoaXMuZGlzY2xhaW1lckxhYmVsID0gbGFiZWxzLmpvaW4oJywgJyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBmb3JtYXRWYWx1ZVRvQ3VycmVuY3koZmllbGQ6IFBvTG9va3VwQWR2YW5jZWRGaWx0ZXIsIGZpbHRlclZhbHVlOiBhbnkpIHtcbiAgICBjb25zdCBjdXJyZW5jeUxhYmVsID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KGZpZWxkLmxvY2FsZSA/IGZpZWxkLmxvY2FsZSA6IHRoaXMubGFuZ3VhZ2UsIHtcbiAgICAgIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMlxuICAgIH0pLmZvcm1hdChmaWx0ZXJWYWx1ZSk7XG4gICAgdGhpcy5kaXNjbGFpbWVyTGFiZWwgPSBjdXJyZW5jeUxhYmVsO1xuICB9XG5cbiAgcHJpdmF0ZSBmb3JtYXRWYWx1ZVRvQm9vbGVhbihmaWVsZDogUG9Mb29rdXBBZHZhbmNlZEZpbHRlciwgZmlsdGVyVmFsdWU6IGFueSkge1xuICAgIGxldCBsYWJlbEJvb2xlYW46IHN0cmluZztcblxuICAgIGlmIChmaWx0ZXJWYWx1ZSkge1xuICAgICAgbGFiZWxCb29sZWFuID0gZmllbGQuYm9vbGVhblRydWUgPyBmaWVsZC5ib29sZWFuVHJ1ZSA6IGZpbHRlclZhbHVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBsYWJlbEJvb2xlYW4gPSBmaWVsZC5ib29sZWFuRmFsc2UgPyBmaWVsZC5ib29sZWFuRmFsc2UgOiBmaWx0ZXJWYWx1ZTtcbiAgICB9XG4gICAgdGhpcy5kaXNjbGFpbWVyTGFiZWwgPSBgJHtsYWJlbEJvb2xlYW59YDtcbiAgfVxuXG4gIHByaXZhdGUgc2V0QWR2YW5jZWRGaWx0ZXJNb2RhbFByb3BlcnRpZXMoKSB7XG4gICAgdGhpcy5hZHZhbmNlZEZpbHRlck1vZGFsVGl0bGUgPSB0aGlzLmxpdGVyYWxzLm1vZGFsQWR2YW5jZWRTZWFyY2hUaXRsZTtcblxuICAgIHRoaXMuZGlzY2xhaW1lckdyb3VwID0ge1xuICAgICAgdGl0bGU6IHRoaXMubGl0ZXJhbHMubW9kYWxEaXNjbGFpbWVyR3JvdXBUaXRsZSxcbiAgICAgIGRpc2NsYWltZXJzOiBbXVxuICAgIH07XG5cbiAgICB0aGlzLnByaW1hcnlBY3Rpb25BZHZhbmNlZEZpbHRlciA9IHtcbiAgICAgIGFjdGlvbjogKCkgPT4ge1xuICAgICAgICB0aGlzLmRlc3Ryb3lEeW5hbWljRm9ybSgpO1xuICAgICAgICB0aGlzLmlzQWR2YW5jZWRGaWx0ZXIgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5wYWdlID0gMTtcbiAgICAgICAgdGhpcy5jcmVhdGVEaXNjbGFpbWVyKCk7XG4gICAgICB9LFxuICAgICAgbGFiZWw6IHRoaXMubGl0ZXJhbHMubW9kYWxBZHZhbmNlZFNlYXJjaFByaW1hcnlBY3Rpb25MYWJlbFxuICAgIH07XG5cbiAgICB0aGlzLnNlY29uZGFyeUFjdGlvbkFkdmFuY2VkRmlsdGVyID0ge1xuICAgICAgYWN0aW9uOiAoKSA9PiB7XG4gICAgICAgIHRoaXMuZGVzdHJveUR5bmFtaWNGb3JtKCk7XG4gICAgICAgIHRoaXMuaXNBZHZhbmNlZEZpbHRlciA9IGZhbHNlO1xuICAgICAgfSxcbiAgICAgIGxhYmVsOiB0aGlzLmxpdGVyYWxzLm1vZGFsQWR2YW5jZWRTZWFyY2hTZWNvbmRhcnlBY3Rpb25MYWJlbFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGdldEFkdmFuY2VkRmlsdGVycyhhZHZhbmNlZFBhcmFtczogYW55KSB7XG4gICAgaWYgKGFkdmFuY2VkUGFyYW1zICYmIGFkdmFuY2VkUGFyYW1zLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGZpbHRlcnM6IE9iamVjdCA9IHt9O1xuICAgICAgbGV0IHZhbGlkYXRlZEFkdmFjZW5kRmlsdGVyczogYW55O1xuXG4gICAgICBhZHZhbmNlZFBhcmFtcy5mb3JFYWNoKChmaWx0ZXI6IGFueSkgPT4ge1xuICAgICAgICBmaWx0ZXJzW2ZpbHRlci5wcm9wZXJ0eV0gPSBmaWx0ZXIudmFsdWUgaW5zdGFuY2VvZiBBcnJheSA/IGZpbHRlci52YWx1ZS5qb2luKCkgOiBmaWx0ZXIudmFsdWU7XG5cbiAgICAgICAgdmFsaWRhdGVkQWR2YWNlbmRGaWx0ZXJzID0geyAuLi52YWxpZGF0ZWRBZHZhY2VuZEZpbHRlcnMsIC4uLmZpbHRlcnMgfTtcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gdmFsaWRhdGVkQWR2YWNlbmRGaWx0ZXJzO1xuICAgIH1cblxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBwcml2YXRlIGdldEZpbHRlcmVkSXRlbXMoZmlsdGVyOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFBvTG9va3VwUmVzcG9uc2VBcGk+IHtcbiAgICBjb25zdCBmaWx0ZXJlZFBhcmFtczogUG9Mb29rdXBGaWx0ZXJlZEl0ZW1zUGFyYW1zID0gdGhpcy5nZXRGaWx0ZXJlZFBhcmFtcyhmaWx0ZXIpO1xuXG4gICAgcmV0dXJuIHRoaXMuZmlsdGVyU2VydmljZS5nZXRGaWx0ZXJlZEl0ZW1zKGZpbHRlcmVkUGFyYW1zKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RmlsdGVyZWRQYXJhbXMoZmlsdGVyOiBzdHJpbmcpIHtcbiAgICBjb25zdCB7IHBhZ2UsIHBhZ2VTaXplLCBmaWx0ZXJQYXJhbXMsIHNvcnQgfSA9IHRoaXM7XG5cbiAgICBjb25zdCBmaWx0ZXJlZFBhcmFtcyA9IHt9O1xuICAgIGNvbnN0IG9yZGVyID0gdGhpcy5nZXRPcmRlclBhcmFtKHNvcnQpO1xuICAgIGNvbnN0IGFkdmFuY2VkRmlsdGVycyA9IHRoaXMuZ2V0QWR2YW5jZWRGaWx0ZXJzKHRoaXMuZGlzY2xhaW1lckdyb3VwLmRpc2NsYWltZXJzKTtcbiAgICBjb25zdCBwYXJhbXMgPSB7IGZpbHRlciwgcGFnZSwgcGFnZVNpemUsIG9yZGVyLCBmaWx0ZXJQYXJhbXMsIGFkdmFuY2VkRmlsdGVycyB9O1xuXG4gICAgZm9yIChjb25zdCBrZXkgaW4gcGFyYW1zKSB7XG4gICAgICBpZiAocGFyYW1zLmhhc093blByb3BlcnR5KGtleSkgJiYgcGFyYW1zW2tleV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBmaWx0ZXJlZFBhcmFtc1trZXldID0gcGFyYW1zW2tleV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZpbHRlcmVkUGFyYW1zO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRPcmRlclBhcmFtKHNvcnQ6IFBvVGFibGVDb2x1bW5Tb3J0ID0geyB0eXBlOiB1bmRlZmluZWQgfSkge1xuICAgIGNvbnN0IHsgY29sdW1uLCB0eXBlIH0gPSBzb3J0O1xuXG4gICAgaWYgKCFjb2x1bW4pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodHlwZSA9PT0gUG9UYWJsZUNvbHVtblNvcnRUeXBlLkRlc2NlbmRpbmcpIHtcbiAgICAgIHJldHVybiBgLSR7Y29sdW1uLnByb3BlcnR5fWA7XG4gICAgfVxuXG4gICAgcmV0dXJuIGAke2NvbHVtbi5wcm9wZXJ0eX1gO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplRGF0YSgpOiB2b2lkIHtcbiAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XG5cbiAgICB0aGlzLmZpbHRlclN1YnNjcmlwdGlvbiA9IHRoaXMuZ2V0RmlsdGVyZWRJdGVtcygnJykuc3Vic2NyaWJlKGRhdGEgPT4ge1xuICAgICAgdGhpcy5zZXRMb29rdXBSZXNwb25zZVByb3BlcnRpZXMoZGF0YSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHNldExvb2t1cFJlc3BvbnNlUHJvcGVydGllcyhkYXRhPzogUG9Mb29rdXBSZXNwb25zZUFwaSkge1xuICAgIHRoaXMuaXRlbXMgPSBkYXRhPy5pdGVtcyA/PyBbXTtcbiAgICB0aGlzLmhhc05leHQgPSBkYXRhPy5oYXNOZXh0ID8/IGZhbHNlO1xuICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgdGhpcy5zZXREaXNjbGFpbWVyc0l0ZW1zKCk7XG4gICAgdGhpcy5zZXRTZWxlY3RlZEl0ZW1zKCk7XG4gIH1cblxuICBwcml2YXRlIHNldFRhYmxlTGl0ZXJhbHMoKSB7XG4gICAgdGhpcy50YWJsZUxpdGVyYWxzID0ge1xuICAgICAgJ25vQ29sdW1ucyc6IHRoaXMubGl0ZXJhbHMubW9kYWxUYWJsZU5vQ29sdW1ucyxcbiAgICAgICdub0RhdGEnOiB0aGlzLmxpdGVyYWxzLm1vZGFsVGFibGVOb0RhdGEsXG4gICAgICAnbG9hZGluZ0RhdGEnOiB0aGlzLmxpdGVyYWxzLm1vZGFsVGFibGVMb2FkaW5nRGF0YSxcbiAgICAgICdsb2FkTW9yZURhdGEnOiB0aGlzLmxpdGVyYWxzLm1vZGFsVGFibGVMb2FkTW9yZURhdGFcbiAgICB9O1xuICB9XG5cbiAgLy8gTcOpdG9kbyByZXNwb25zw6F2ZWwgcG9yIGFicmlyIGEgbW9kYWwgZGUgYnVzY2EgZGFzIGluZm9ybWHDp8O1ZXMuXG4gIGFic3RyYWN0IG9wZW5Nb2RhbCgpOiB2b2lkO1xuXG4gIC8vIE3DqXRvZG8gcmVzcG9uc8OhdmVsIHBvciBkZXN0cnVpciBvIGR5bmFtaWNGb3JtXG4gIGFic3RyYWN0IGRlc3Ryb3lEeW5hbWljRm9ybSgpOiB2b2lkO1xufVxuIl19
|
|
553
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tbG9va3VwLW1vZGFsLWJhc2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9jb21wb25lbnRzL3BvLWZpZWxkL3BvLWxvb2t1cC9wby1sb29rdXAtbW9kYWwvcG8tbG9va3VwLW1vZGFsLWJhc2UuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFeEgsT0FBTyxFQUE0QixVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDNUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzVDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUV4RixPQUFPLEVBQUUscUJBQXFCLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDM0YsT0FBTyxFQUFFLHFCQUFxQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFaEYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFVbkYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7OztBQUUxRSxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRztJQUNyQyxFQUFFLEVBQW9CO1FBQ3BCLHVCQUF1QixFQUFFLFFBQVE7UUFDakMseUJBQXlCLEVBQUUsUUFBUTtRQUNuQyxnQkFBZ0IsRUFBRSxRQUFRO1FBQzFCLFVBQVUsRUFBRSxpQkFBaUI7UUFDN0IsbUJBQW1CLEVBQUUsc0JBQXNCLENBQUMsRUFBRSxDQUFDLFNBQVM7UUFDeEQsZ0JB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VTtrQkFBakMsS0FBSzttQkFBQyxlQUFlO1lBU0UsVUFBVTtrQkFBakMsS0FBSzttQkFBQyxlQUFlO1lBTUYsT0FBTztrQkFBMUIsS0FBSzttQkFBQyxXQUFXO1lBVTRDLFFBQVE7a0JBQXJFLEtBQUs7bUJBQUMsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtZQWNPLGFBQWE7a0JBQS9FLEtBQUs7bUJBQUMsRUFBRSxLQUFLLEVBQUUsa0JBQWtCLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO1lBVzdCLG9CQUFvQjtrQkFBdkQsTUFBTTttQkFBQywwQkFBMEI7WUFXRSxvQkFBb0I7a0JBQXZELE1BQU07bUJBQUMsMEJBQTBCO1lBMkRULFFBQVE7a0JBQWhDLEtBQUs7bUJBQUMsWUFBWTtZQXVCRyxLQUFLO2tCQUExQixLQUFLO21CQUFDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgRGlyZWN0aXZlLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBQb01vZGFsQWN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29tcG9uZW50cy9wby1tb2RhbCc7XG5pbXBvcnQgeyBQb01vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vY29tcG9uZW50cy9wby1tb2RhbC9wby1tb2RhbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgcG9Mb2NhbGVEZWZhdWx0IH0gZnJvbSAnLi4vLi4vLi4vLi4vc2VydmljZXMvcG8tbGFuZ3VhZ2UvcG8tbGFuZ3VhZ2UuY29uc3RhbnQnO1xuaW1wb3J0IHsgUG9MYW5ndWFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2aWNlcy9wby1sYW5ndWFnZS9wby1sYW5ndWFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IGNhcGl0YWxpemVGaXJzdExldHRlciwgY29udmVydFRvQm9vbGVhbiwgaXNUeXBlb2YgfSBmcm9tICcuLi8uLi8uLi8uLi91dGlscy91dGlsJztcbmltcG9ydCB7IFBvVGFibGVDb2x1bW5Tb3J0VHlwZSwgUG9UYWJsZUNvbHVtblNwYWNpbmcgfSBmcm9tICcuLi8uLi8uLi9wby10YWJsZSc7XG5pbXBvcnQgeyBQb1RhYmxlQ29sdW1uU29ydCB9IGZyb20gJy4uLy4uLy4uL3BvLXRhYmxlL2ludGVyZmFjZXMvcG8tdGFibGUtY29sdW1uLXNvcnQuaW50ZXJmYWNlJztcbmltcG9ydCB7IHBvVGFibGVMaXRlcmFsc0RlZmF1bHQgfSBmcm9tICcuLi8uLi8uLi9wby10YWJsZS9wby10YWJsZS1iYXNlLmNvbXBvbmVudCc7XG5cbmltcG9ydCB7IFBvTG9va3VwQWR2YW5jZWRGaWx0ZXIgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3BvLWxvb2t1cC1hZHZhbmNlZC1maWx0ZXIuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvTG9va3VwQ29sdW1uIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9wby1sb29rdXAtY29sdW1uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb0xvb2t1cEZpbHRlciB9IGZyb20gJy4uL2ludGVyZmFjZXMvcG8tbG9va3VwLWZpbHRlci5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9Mb29rdXBGaWx0ZXJlZEl0ZW1zUGFyYW1zIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9wby1sb29rdXAtZmlsdGVyZWQtaXRlbXMtcGFyYW1zLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb0xvb2t1cExpdGVyYWxzIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9wby1sb29rdXAtbGl0ZXJhbHMuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvTG9va3VwUmVzcG9uc2VBcGkgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3BvLWxvb2t1cC1yZXNwb25zZS1hcGkuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvRGlzY2xhaW1lckdyb3VwIH0gZnJvbSAnLi8uLi8uLi8uLi9wby1kaXNjbGFpbWVyLWdyb3VwL3BvLWRpc2NsYWltZXItZ3JvdXAuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvRGlzY2xhaW1lciB9IGZyb20gJy4vLi4vLi4vLi4vcG8tZGlzY2xhaW1lci9wby1kaXNjbGFpbWVyLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb1RhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi8uLi8uLi8uLi9wby10YWJsZS9wby10YWJsZS5jb21wb25lbnQnO1xuXG5leHBvcnQgY29uc3QgcG9Mb29rdXBMaXRlcmFsc0RlZmF1bHQgPSB7XG4gIGVuOiA8UG9Mb29rdXBMaXRlcmFscz57XG4gICAgbW9kYWxQcmltYXJ5QWN0aW9uTGFiZWw6ICdTZWxlY3QnLFxuICAgIG1vZGFsU2Vjb25kYXJ5QWN0aW9uTGFiZWw6ICdDYW5jZWwnLFxuICAgIG1vZGFsUGxhY2Vob2xkZXI6ICdTZWFyY2gnLFxuICAgIG1vZGFsVGl0bGU6ICdTZWxlY3QgYSByZWNvcmQnLFxuICAgIG1vZGFsVGFibGVOb0NvbHVtbnM6IHBvVGFibGVMaXRlcmFsc0RlZmF1bHQuZW4ubm9Db2x1bW5zLFxuICAgIG1vZGFsVGFibGVOb0RhdGE6IHBvVGFibGVMaXRlcmFsc0RlZmF1bHQuZW4ubm9EYXRhLFxuICAgIG1vZGFsVGFibGVMb2FkaW5nRGF0YTogcG9UYWJsZUxpdGVyYWxzRGVmYXVsdC5lbi5sb2FkaW5nRGF0YSxcbiAgICBtb2RhbFRhYmxlTG9hZE1vcmVEYXRhOiBwb1RhYmxlTGl0ZXJhbHNEZWZhdWx0LmVuLmxvYWRNb3JlRGF0YSxcbiAgICBtb2RhbEFkdmFuY2VkU2VhcmNoOiAnQWR2YW5jZWQgc2VhcmNoJyxcbiAgICBtb2RhbEFkdmFuY2VkU2VhcmNoVGl0bGU6ICdBZHZhbmNlZCBzZWFyY2gnLFxuICAgIG1vZGFsQWR2YW5jZWRTZWFyY2hQcmltYXJ5QWN0aW9uTGFiZWw6ICdGaWx0ZXInLFxuICAgIG1vZGFsQWR2YW5jZWRTZWFyY2hTZWNvbmRhcnlBY3Rpb25MYWJlbDogJ1JldHVybicsXG4gICAgbW9kYWxEaXNjbGFpbWVyR3JvdXBUaXRsZTogJ1ByZXNlbnRpbmcgcmVzdWx0cyBmaWx0ZXJlZCBieTonXG4gIH0sXG4gIGVzOiA8UG9Mb29rdXBMaXRlcmFscz57XG4gICAgbW9kYWxQcmltYXJ5QWN0aW9uTGFiZWw6ICdTZWxlY2Npb25hcicsXG4gICAgbW9kYWxTZWNvbmRhcnlBY3Rpb25MYWJlbDogJ0NhbmNlbGFyJyxcbiAgICBtb2RhbFBsYWNlaG9sZGVyOiAnQnVzY2FyJyxcbiAgICBtb2RhbFRpdGxlOiAnU2VsZWNjaW9uZSB1biByZWdpc3RybycsXG4gICAgbW9kYWxUYWJsZU5vQ29sdW1uczogcG9UYWJsZUxpdGVyYWxzRGVmYXVsdC5lcy5ub0NvbHVtbnMsXG4gICAgbW9kYWxUYWJsZU5vRGF0YTogcG9UYWJsZUxpdGVyYWxzRGVmYXVsdC5lcy5ub0RhdGEsXG4gICAgbW9kYWxUYWJsZUxvYWRpbmdEYXRhOiBwb1RhYmxlTGl0ZXJhbHNEZWZhdWx0LmVzLmxvYWRpbmdEYXRhLFxuICAgIG1vZGFsVGFibGVMb2FkTW9yZURhdGE6IHBvVGFibGVMaXRlcmFsc0RlZmF1bHQuZXMubG9hZE1vcmVEYXRhLFxuICAgIG1vZGFsQWR2YW5jZWRTZWFyY2g6ICdCw7pzcXVlZGEgQXZhbnphZGEnLFxuICAgIG1vZGFsQWR2YW5jZWRTZWFyY2hUaXRsZTogJ0LDunNxdWVkYSBBdmFuemFkYScsXG4gICAgbW9kYWxBZHZhbmNlZFNlYXJjaFByaW1hcnlBY3Rpb25MYWJlbDogJ0ZpbHRyYXInLFxuICAgIG1vZGFsQWR2YW5jZWRTZWFyY2hTZWNvbmRhcnlBY3Rpb25MYWJlbDogJ1Z1ZWx2ZScsXG4gICAgbW9kYWxEaXNjbGFpbWVyR3JvdXBUaXRsZTogJ1ByZXNlbnRhciByZXN1bHRhZG9zIGZpbHRyYWRvcyBwb3I6J1xuICB9LFxuICBwdDogPFBvTG9va3VwTGl0ZXJhbHM+e1xuICAgIG1vZGFsUHJpbWFyeUFjdGlvbkxhYmVsOiAnU2VsZWNpb25hcicsXG4gICAgbW9kYWxTZWNvbmRhcnlBY3Rpb25MYWJlbDogJ0NhbmNlbGFyJyxcbiAgICBtb2RhbFBsYWNlaG9sZGVyOiAnUGVzcXVpc2FyJyxcbiAgICBtb2RhbFRpdGxlOiAnU2VsZWNpb25lIHVtIHJlZ2lzdHJvJyxcbiAgICBtb2RhbFRhYmxlTm9Db2x1bW5zOiBwb1RhYmxlTGl0ZXJhbHNEZWZhdWx0LnB0Lm5vQ29sdW1ucyxcbiAgICBtb2RhbFRhYmxlTm9EYXRhOiBwb1RhYmxlTGl0ZXJhbHNEZWZhdWx0LnB0Lm5vRGF0YSxcbiAgICBtb2RhbFRhYmxlTG9hZGluZ0RhdGE6IHBvVGFibGVMaXRlcmFsc0RlZmF1bHQucHQubG9hZGluZ0RhdGEsXG4gICAgbW9kYWxUYWJsZUxvYWRNb3JlRGF0YTogcG9UYWJsZUxpdGVyYWxzRGVmYXVsdC5wdC5sb2FkTW9yZURhdGEsXG4gICAgbW9kYWxBZHZhbmNlZFNlYXJjaDogJ0J1c2NhIGF2YW7Dp2FkYScsXG4gICAgbW9kYWxBZHZhbmNlZFNlYXJjaFRpdGxlOiAnQnVzY2EgQXZhbsOnYWRhJyxcbiAgICBtb2RhbEFkdmFuY2VkU2VhcmNoUHJpbWFyeUFjdGlvbkxhYmVsOiAnRmlsdHJhcicsXG4gICAgbW9kYWxBZHZhbmNlZFNlYXJjaFNlY29uZGFyeUFjdGlvbkxhYmVsOiAnVm9sdGFyJyxcbiAgICBtb2RhbERpc2NsYWltZXJHcm91cFRpdGxlOiAnQXByZXNlbnRhbmRvIHJlc3VsdGFkb3MgZmlsdHJhZG9zIHBvcjonXG4gIH0sXG4gIHJ1OiA8UG9Mb29rdXBMaXRlcmFscz57XG4gICAgbW9kYWxQcmltYXJ5QWN0aW9uTGFiZWw6ICfQktGL0LHRgNCw0YLRjCcsXG4gICAgbW9kYWxTZWNvbmRhcnlBY3Rpb25MYWJlbDogJ9Ce0YLQvNC10L3QuNGC0YwnLFxuICAgIG1vZGFsUGxhY2Vob2xkZXI6ICfQn9C+0LjRgdC6JyxcbiAgICBtb2RhbFRpdGxlOiAn0JLRi9Cx0LXRgNC40YLQtSDQt9Cw0L/QuNGB0YwnLFxuICAgIG1vZGFsVGFibGVOb0NvbHVtbnM6IHBvVGFibGVMaXRlcmFsc0RlZmF1bHQucnUubm9Db2x1bW5zLFxuICAgIG1vZGFsVGFibGVOb0RhdGE6IHBvVGFibGVMaXRlcmFsc0RlZmF1bHQucnUubm9EYXRhLFxuICAgIG1vZGFsVGFibGVMb2FkaW5nRGF0YTogcG9UYWJsZUxpdGVyYWxzRGVmYXVsdC5ydS5sb2FkaW5nRGF0YSxcbiAgICBtb2RhbFRhYmxlTG9hZE1vcmVEYXRhOiBwb1RhYmxlTGl0ZXJhbHNEZWZhdWx0LnJ1LmxvYWRNb3JlRGF0YSxcbiAgICBtb2RhbEFkdmFuY2VkU2VhcmNoOiAn0KDQsNGB0YjQuNGA0LXQvdC90YvQuSDQv9C+0LjRgdC6JyxcbiAgICBtb2RhbEFkdmFuY2VkU2VhcmNoVGl0bGU6ICfQoNCw0YHRiNC40YDQtdC90L3Ri9C5INC/0L7QuNGB0LonLFxuICAgIG1vZGFsQWR2YW5jZWRTZWFyY2hQcmltYXJ5QWN0aW9uTGFiZWw6ICfQpNC40LvRjNGC0YAnLFxuICAgIG1vZGFsQWR2YW5jZWRTZWFyY2hTZWNvbmRhcnlBY3Rpb25MYWJlbDogJ9Cd0LDQt9Cw0LQnLFxuICAgIG1vZGFsRGlzY2xhaW1lckdyb3VwVGl0bGU6ICfQn9GA0LXQtNGB0YLQsNCy0LvQtdC90L3Ri9C1INGA0LXQt9GD0LvRjNGC0LDRgtGLINC+0YLRhNC40LvRjNGC0YDQvtCy0LDQvdGLINC/0L46J1xuICB9XG59O1xuXG4vKipcbiAqIEBkb2NzUHJpdmF0ZVxuICpcbiAqIENsYXNzZSBiYXNlIGRvIGNvbXBvbmVudGUgUG8gTG9va3VwIE1vZGFsLlxuICovXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBQb0xvb2t1cE1vZGFsQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSwgT25Jbml0IHtcbiAgQFZpZXdDaGlsZChQb01vZGFsQ29tcG9uZW50LCB7IHN0YXRpYzogdHJ1ZSB9KSBwb01vZGFsOiBQb01vZGFsQ29tcG9uZW50O1xuICBAVmlld0NoaWxkKFBvVGFibGVDb21wb25lbnQsIHsgc3RhdGljOiB0cnVlIH0pIHBvVGFibGU6IFBvVGFibGVDb21wb25lbnQ7XG5cbiAgLyoqXG4gICAqIE9iamV0byBjb20gb3MgY2FtcG9zIHF1ZSBzZXLDo28gY3JpYWRvcyBubyBidXNjYSBhdmFuw6dhZGEuXG4gICAqXG4gICAqID4gQ2FzbyBuw6NvIHNlamEgcGFzc2FkbyB1bSBvYmpldG8gb3UgZW50w6NvIGVsZSBlc3RlamEgZW0gYnJhbmNvIG8gbGluayBkZSBidXNjYSBhdmFuw6dhZGEgZmljYXLDoSBlc2NvbmRpZG8uXG4gICAqXG4gICAqIEV4ZW1wbG8gZGUgVVJMIGNvbSBidXNjYSBhdmFuw6dhZGE6IGh0dHA6Ly9sb2NhbGhvc3Q6MzAwMC92MS9oZXJvZXM/ZmlsdGVyPSZwYWdlPTEmcGFnZVNpemU9MTBgJm5hbWU9VG9ueSUyMFN0YXJrJm5pY2tuYW1lPUhvbWVtJTIwZGUlMjBGZXJybyZlbWFpbD1pcm5tYW5AbWFydmVsLmNvbWBcbiAgICpcbiAgICogQ2FzbyBhbGd1bSBwYXLDom1ldHJvIHNlamEgdW1hIGxpc3RhLCBhIGNvbmNhdGVuYcOnw6NvIMOpIGZlaXRhIHV0aWxpemFuZG8gdmlyZ3VsYS5cbiAgICogRXhlbXBsbzogaHR0cDovL2xvY2FsaG9zdDozMDAwL3YxL2hlcm9lcz9maWx0ZXI9JnBhZ2U9MSZwYWdlU2l6ZT0xMGAmbmFtZT1Ub255JTIwU3RhcmssUGV0ZXIlMjBQYXJrZXIsR29oYW5gXG4gICAqXG4gICAqL1xuICBASW5wdXQoJ3AtYWR2YW5jZWQtZmlsdGVycycpIGFkdmFuY2VkRmlsdGVyczogQXJyYXk8UG9Mb29rdXBBZHZhbmNlZEZpbHRlcj47XG5cbiAgLyoqXG4gICAqIExpc3RhIGRhcyBjb2x1bmFzIGRhIHRhYmVsYS5cbiAgICogRXNzYSBwcm9wcmllZGFkZSBkZXZlIHJlY2ViZXIgdW0gYXJyYXkgZGUgb2JqZXRvcyBxdWUgaW1wbGVtZW50YW0gYSBpbnRlcmZhY2UgUG9Mb29rdXBDb2x1bW4uXG4gICAqL1xuICBASW5wdXQoJ3AtY29sdW1ucycpIGNvbHVtbnM6IEFycmF5PFBvTG9va3VwQ29sdW1uPjtcblxuICAvKiogTGlzdGEgZGUgaXRlbnMgZGEgdGFiZWxhLiAqL1xuICBASW5wdXQoJ3AtaXRlbXMnKSBpdGVtczogQXJyYXk8YW55PjtcblxuICAvKiogQ2xhc3NlIGRlIHNlcnZpw6dvIGNvbSBhIGltcGxlbWVudGHDp8OjbyBkbyBjbGllbnRlLiAqL1xuICBASW5wdXQoJ3AtZmlsdGVyLXNlcnZpY2UnKSBmaWx0ZXJTZXJ2aWNlOiBQb0xvb2t1cEZpbHRlcjtcblxuICAvKiogQ2xhc3NlIGRlIHNlcnZpw6dvIGNvbSBhIGltcGxlbWVudGHDp8OjbyBkbyBjbGllbnRlLiAqL1xuICBASW5wdXQoJ3AtZmlsdGVyLXBhcmFtcycpIGZpbHRlclBhcmFtczogYW55O1xuXG4gIC8qKiBTZSB2ZXJkYWRlaXJvLCBlc2NvbmRlIG8gZ2VyZW5jaWFkb3IgZGUgdGFyZWZhcywgcmVzcG9uc8OhdmVsIHBlbGEgZGVmaW5pw6fDo28gZGUgcXVhaXMgY29sdW5hcyBzZXLDo28gZXhpYmlkYXMuICovXG4gIEBJbnB1dCh7IGFsaWFzOiAncC1oaWRlLWNvbHVtbnMtbWFuYWdlcicsIHRyYW5zZm9ybTogY29udmVydFRvQm9vbGVhbiB9KVxuICBoaWRlQ29sdW1uc01hbmFnZXI6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogU2UgdmVyZGFkZWlybywgYXRpdmEgYSBmdW5jaW9uYWxpZGFkZSBkZSBzY3JvbGwgaW5maW5pdG8gcGFyYSBhIHRhYmVsYSBleGliaWRhIG5vIHJldG9ybm8gZGEgY29uc3VsdGEuICovXG4gIEBJbnB1dCh7IGFsaWFzOiAncC1pbmZpbml0ZS1zY3JvbGwnLCB0cmFuc2Zvcm06IGNvbnZlcnRUb0Jvb2xlYW4gfSkgaW5maW5pdGVTY3JvbGw6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogU2UgdmVyZGFkZWlybywgYXRpdmEgYSBmdW5jaW9uYWxpZGFkZSBkZSBtdWx0aXBsYSBzZWxlw6fDo28uICovXG4gIEBJbnB1dCh7IGFsaWFzOiAncC1tdWx0aXBsZScsIHRyYW5zZm9ybTogY29udmVydFRvQm9vbGVhbiB9KSBtdWx0aXBsZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKiBFdmVudG8gdXRpbGl6YWRvIGFvIHNlbGVjaW9uYXIgdW0gcmVnaXN0cm8gZGEgdGFiZWxhLiAqL1xuICBAT3V0cHV0KCdwLWNoYW5nZS1tb2RlbCcpIG1vZGVsOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIC8qKiBDbGFzc2UgZGUgc2VydmnDp28gY29tIGl0ZW1zIHNlbGVjaW9uYWRvcyAqL1xuICBASW5wdXQoJ3Atc2VsZWN0ZWQtaXRlbXMnKSBzZWxlY3RlZEl0ZW1zOiBhbnk7XG5cbiAgLyoqIEluZGljYSBhIGNvbHVuYSBxdWUgc2Vyw6EgdXRpbGl6YWRhIGNvbW8gZGVzY3Jpw6fDo28gZG8gY2FtcG8gZSBjb21vIGZpbHRybyBkZW50cm8gZGEgamFuZWxhLiAqL1xuICBASW5wdXQoJ3AtZmllbGQtbGFiZWwnKSBmaWVsZExhYmVsOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBJbmRpY2EgYSBjb2x1bmEgcXVlIHNlcsOhIHV0aWxpemFkYSBjb21vIHZhbG9yIGRvIGNhbXBvLlxuICAgKlxuICAgKiA+IEF0ZW7Dp8OjbzogQ2FzbyBuw6NvIHNlamEgcGFzc2FkYSBvdSB0ZW5oYSBvIGNvbnRlw7pkbyBpbmNvcnJldG8sIG7Do28gaXLDoSBhdHVhbGl6YXIgbyBtb2RlbCBkbyBmb3JtdWzDoXJpby5cbiAgICovXG4gIEBJbnB1dCgncC1maWVsZC12YWx1ZScpIGZpZWxkVmFsdWU6IHN0cmluZztcblxuICAvKipcbiAgICogUmVzcG9uc8OhdmVsIHBvciBhcGxpY2FyIGVzcGHDp2FtZW50byBuYXMgY29sdW5hcyBkYSB0YWJlbGEgY29udGlkYSBubyBsb29rdXAuXG4gICAqIERldmUgcmVjZWJlciB1bSBkb3MgdmFsb3JlcyBkbyBlbnVtIGBQb1RhYmxlQ29sdW1uU3BhY2luZ2AuXG4gICAqL1xuICBASW5wdXQoJ3Atc3BhY2luZycpIHNwYWNpbmc6IFBvVGFibGVDb2x1bW5TcGFjaW5nID0gUG9UYWJsZUNvbHVtblNwYWNpbmcuTWVkaXVtO1xuXG4gIC8qKlxuICAgKiBIYWJpbGl0YSBvdSBkZXNhYmlsaXRhIGEgcXVlYnJhIGF1dG9tw6F0aWNhIGRlIHRleHRvLiBRdWFuZG8gYXRpdmFkYSwgbyB0ZXh0byBxdWUgZXhjZWRlXG4gICAqIG8gZXNwYcOnbyBkaXNwb27DrXZlbCDDqSB0cmFuc2ZlcmlkbyBwYXJhIGEgcHLDs3hpbWEgbGluaGEgZW0gcG9udG9zIGFwcm9wcmlhZG9zIHBhcmEgdW1hXG4gICAqIGxlaXR1cmEgY2xhcmEuXG4gICAqXG4gICAqID4gSW5jb21wYXTDrXZlbCBjb20gYHZpcnR1YWwtc2Nyb2xsYCwgcXVlIHJlcXVlciBhbHR1cmEgZml4YSBuYXMgbGluaGFzLlxuICAgKlxuICAgKi9cbiAgQElucHV0KHsgYWxpYXM6ICdwLXRleHQtd3JhcCcsIHRyYW5zZm9ybTogY29udmVydFRvQm9vbGVhbiB9KSB0ZXh0V3JhcD86IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBIYWJpbGl0YSBvIGB2aXJ0dWFsLXNjcm9sbGAgbmEgdGFiZWxhIHBhcmEgbWVsaG9yYXIgYSBwZXJmb3JtYW5jZSBjb20gZ3JhbmRlcyB2b2x1bWVzIGRlIGRhZG9zLlxuICAgKiBBIGFsdHVyYSBkYSB0YWJlbGEgasOhIMOpIHByw6ktZGVmaW5pZGEsIHBvcnRhbnRvIG8gYHZpcnR1YWwtc2Nyb2xsYCBzZXLDoSBhdGl2YWRvIGF1dG9tYXRpY2FtZW50ZS5cbiAgICpcbiAgICogPiBJbmNvbXBhdMOtdmVsIGNvbSBgcC10ZXh0LXdyYXBgIGUgYG1hc3Rlci1kZXRhaWxgLCBwb2lzIG8gYHZpcnR1YWwtc2Nyb2xsYCBleGlnZSBhbHR1cmEgZml4YSBuYXMgbGluaGFzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgdHJ1ZWBcbiAgICovXG4gIEBJbnB1dCh7IGFsaWFzOiAncC12aXJ0dWFsLXNjcm9sbCcsIHRyYW5zZm9ybTogY29udmVydFRvQm9vbGVhbiB9KSB2aXJ0dWFsU2Nyb2xsPzogYm9vbGVhbiA9IHRydWU7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogRXZlbnRvIGRpc3BhcmFkbyBhbyBmZWNoYXIgbyBwb3BvdmVyIGRvIGdlcmVuY2lhZG9yIGRlIGNvbHVuYXMgYXDDs3MgYWx0ZXJhciBhcyBjb2x1bmFzIHZpc8OtdmVpcy5cbiAgICpcbiAgICogTyBjb21wb25lbnRlIGVudmlhIGNvbW8gcGFyw6JtZXRybyB1bSBhcnJheSBkZSBzdHJpbmcgY29tIGFzIGNvbHVuYXMgdmlzw612ZWlzIGF0dWFsaXphZGFzLlxuICAgKiBQb3IgZXhlbXBsbzogW1wiaWRDYXJkXCIsIFwibmFtZVwiLCBcImhpcmVTdGF0dXNcIiwgXCJhZ2VcIl0uXG4gICAqL1xuICBAT3V0cHV0KCdwLWNoYW5nZS12aXNpYmxlLWNvbHVtbnMnKSBjaGFuZ2VWaXNpYmxlQ29sdW1ucyA9IG5ldyBFdmVudEVtaXR0ZXI8QXJyYXk8c3RyaW5nPj4oKTtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBFdmVudG8gZGlzcGFyYWRvIGFvIGNsaWNhciBubyBib3TDo28gZGUgcmVzdGF1cmFyIHBhZHLDo28gbm8gZ2VyZW5jaWFkb3IgZGUgY29sdW5hcy5cbiAgICpcbiAgICogTyBjb21wb25lbnRlIGVudmlhIGNvbW8gcGFyw6JtZXRybyB1bSBhcnJheSBkZSBzdHJpbmcgY29tIGFzIGNvbHVuYXMgY29uZmlndXJhZGFzIGluaWNpYWxtZW50ZS5cbiAgICogUG9yIGV4ZW1wbG86IFtcImlkQ2FyZFwiLCBcIm5hbWVcIiwgXCJoaXJlU3RhdHVzXCIsIFwiYWdlXCJdLlxuICAgKi9cbiAgQE91dHB1dCgncC1yZXN0b3JlLWNvbHVtbi1tYW5hZ2VyJykgY29sdW1uUmVzdG9yZU1hbmFnZXIgPSBuZXcgRXZlbnRFbWl0dGVyPEFycmF5PFN0cmluZz4+KCk7XG5cbiAgaGFzTmV4dCA9IHRydWU7XG4gIGlzTG9hZGluZyA9IGZhbHNlO1xuICBwYWdlID0gMTtcbiAgcGFnZVNpemUgPSAxMDtcbiAgc2VhcmNoVmFsdWU6IHN0cmluZyA9ICcnO1xuICB0YWJsZUxpdGVyYWxzOiBhbnk7XG5cbiAgLy8gUHJvcHJpZWRhZGUgZGEgbW9kYWwgZGUgYnVzY2EgYXZhbsOnYWRhOlxuICBhZHZhbmNlZEZpbHRlck1vZGFsVGl0bGUgPSAnJztcbiAgZHluYW1pY0Zvcm1WYWx1ZSA9IHt9O1xuICBkaXNjbGFpbWVyITogUG9EaXNjbGFpbWVyO1xuICBkaXNjbGFpbWVyR3JvdXAhOiBQb0Rpc2NsYWltZXJHcm91cDtcbiAgaXNBZHZhbmNlZEZpbHRlciA9IGZhbHNlO1xuICBwcmltYXJ5QWN0aW9uQWR2YW5jZWRGaWx0ZXIhOiBQb01vZGFsQWN0aW9uO1xuICBzZWNvbmRhcnlBY3Rpb25BZHZhbmNlZEZpbHRlciE6IFBvTW9kYWxBY3Rpb247XG4gIHNlbGVjdGVkczogQXJyYXk8YW55PiA9IFtdO1xuXG4gIHByb3RlY3RlZCBzb3J0OiBQb1RhYmxlQ29sdW1uU29ydDtcblxuICBwcml2YXRlIGZpbHRlclN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIHNlYXJjaFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIHNob3dNb3JlU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgZGlzY2xhaW1lckxhYmVsOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBfbGl0ZXJhbHM6IFBvTG9va3VwTGl0ZXJhbHM7XG4gIHByaXZhdGUgX3RpdGxlOiBzdHJpbmc7XG4gIHByaXZhdGUgbGFuZ3VhZ2U6IHN0cmluZyA9IHBvTG9jYWxlRGVmYXVsdDtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L21lbWJlci1vcmRlcmluZ1xuICBwcmltYXJ5QWN0aW9uOiBQb01vZGFsQWN0aW9uID0ge1xuICAgIGFjdGlvbjogKCkgPT4ge1xuICAgICAgbGV0IHNlbGVjdGVkc0l0ZW1zOiBBcnJheTxhbnk+ID0gW107XG4gICAgICBpZiAoIXRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgdGhpcy5pdGVtcy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgICAgIGlmIChlbGVtZW50Wyckc2VsZWN0ZWQnXSkge1xuICAgICAgICAgICAgc2VsZWN0ZWRzSXRlbXMucHVzaChlbGVtZW50KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2VsZWN0ZWRzSXRlbXMgPSB0aGlzLnNlbGVjdGVkcztcbiAgICAgIH1cbiAgICAgIHRoaXMubW9kZWwuZW1pdChzZWxlY3RlZHNJdGVtcyk7XG4gICAgICB0aGlzLnBvTW9kYWwuY2xvc2UoKTtcbiAgICB9LFxuICAgIGxhYmVsOiB0aGlzLmxpdGVyYWxzLm1vZGFsUHJpbWFyeUFjdGlvbkxhYmVsXG4gIH07XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9tZW1iZXItb3JkZXJpbmdcbiAgc2Vjb25kYXJ5QWN0aW9uOiBQb01vZGFsQWN0aW9uID0ge1xuICAgIGFjdGlvbjogKCkgPT4ge1xuICAgICAgdGhpcy5tb2RlbC5lbWl0KG51bGwpO1xuICAgICAgdGhpcy5wb01vZGFsLmNsb3NlKCk7XG4gICAgfSxcbiAgICBsYWJlbDogdGhpcy5saXRlcmFscy5tb2RhbFNlY29uZGFyeUFjdGlvbkxhYmVsXG4gIH07XG5cbiAgLyoqIE9iamV0byBjb20gYXMgbGl0ZXJhaXMgdXNhZGFzIG5vIGBwby1sb29rdXAtbW9kYWxgLiAqL1xuICBASW5wdXQoJ3AtbGl0ZXJhbHMnKSBzZXQgbGl0ZXJhbHModmFsdWU6IFBvTG9va3VwTGl0ZXJhbHMpIHtcbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBPYmplY3QgJiYgISh2YWx1ZSBpbnN0YW5jZW9mIEFycmF5KSkge1xuICAgICAgdGhpcy5fbGl0ZXJhbHMgPSB7XG4gICAgICAgIC4uLnBvTG9va3VwTGl0ZXJhbHNEZWZhdWx0W3BvTG9jYWxlRGVmYXVsdF0sXG4gICAgICAgIC4uLnBvTG9va3VwTGl0ZXJhbHNEZWZhdWx0W3RoaXMubGFuZ3VhZ2VdLFxuICAgICAgICAuLi52YWx1ZVxuICAgICAgfTtcbiAgICAgIGlmICh2YWx1ZS5tb2RhbFRpdGxlKSB7XG4gICAgICAgIHRoaXMudGl0bGUgPSB0aGlzLmxpdGVyYWxzLm1vZGFsVGl0bGU7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2xpdGVyYWxzID0gcG9Mb29rdXBMaXRlcmFsc0RlZmF1bHRbdGhpcy5sYW5ndWFnZV07XG4gICAgfVxuICAgIHRoaXMucHJpbWFyeUFjdGlvbi5sYWJlbCA9IHRoaXMubGl0ZXJhbHMubW9kYWxQcmltYXJ5QWN0aW9uTGFiZWw7XG4gICAgdGhpcy5zZWNvbmRhcnlBY3Rpb24ubGFiZWwgPSB0aGlzLmxpdGVyYWxzLm1vZGFsU2Vjb25kYXJ5QWN0aW9uTGFiZWw7XG4gICAgdGhpcy5zZXRUYWJsZUxpdGVyYWxzKCk7XG4gIH1cblxuICBnZXQgbGl0ZXJhbHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2xpdGVyYWxzIHx8IHBvTG9va3VwTGl0ZXJhbHNEZWZhdWx0W3RoaXMubGFuZ3VhZ2VdO1xuICB9XG5cbiAgLyoqIFTDrXR1bG8gZGEgbW9kYWwuICovXG4gIEBJbnB1dCgncC10aXRsZScpIHNldCB0aXRsZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fdGl0bGUgPSBpc1R5cGVvZih2YWx1ZSwgJ3N0cmluZycpID8gdmFsdWUgOiB0aGlzLmxpdGVyYWxzLm1vZGFsVGl0bGU7XG4gIH1cblxuICBnZXQgdGl0bGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3RpdGxlO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgbGFuZ3VhZ2VTZXJ2aWNlOiBQb0xhbmd1YWdlU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmXG4gICkge1xuICAgIHRoaXMubGFuZ3VhZ2UgPSBsYW5ndWFnZVNlcnZpY2UuZ2V0U2hvcnRMYW5ndWFnZSgpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMuZmlsdGVyU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLmZpbHRlclN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnNlYXJjaFN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5zZWFyY2hTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5zaG93TW9yZVN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5zaG93TW9yZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuc2V0QWR2YW5jZWRGaWx0ZXJNb2RhbFByb3BlcnRpZXMoKTtcbiAgICB0aGlzLmluaXRpYWxpemVEYXRhKCk7XG4gICAgdGhpcy5zZXRUYWJsZUxpdGVyYWxzKCk7XG4gIH1cblxuICBjcmVhdGVEaXNjbGFpbWVyKCkge1xuICAgIHRoaXMuZGlzY2xhaW1lckdyb3VwLmRpc2NsYWltZXJzID0gW107XG4gICAgdGhpcy5zZWFyY2hWYWx1ZSA9ICcnO1xuXG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModGhpcy5keW5hbWljRm9ybVZhbHVlKSkge1xuICAgICAgdGhpcy5hZGREaXNjbGFpbWVyKHZhbHVlLCBrZXkpO1xuICAgIH1cblxuICAgIGlmICghT2JqZWN0LnZhbHVlcyh0aGlzLmR5bmFtaWNGb3JtVmFsdWUpLnNvbWUodiA9PiB2ICE9PSBudWxsICYmIHR5cGVvZiB2ICE9PSAndW5kZWZpbmVkJykpIHtcbiAgICAgIHRoaXMuaW5pdGlhbGl6ZURhdGEoKTtcbiAgICB9XG4gIH1cblxuICBhZGREaXNjbGFpbWVyKHZhbHVlOiBhbnksIHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICB0aGlzLmRpc2NsYWltZXJMYWJlbCA9ICcnO1xuICAgIGNvbnN0IGZpZWxkRmlsdGVyID0gdGhpcy5hZHZhbmNlZEZpbHRlcnMuZmluZChmaWx0ZXIgPT4gZmlsdGVyLnByb3BlcnR5ID09PSBwcm9wZXJ0eSk7XG4gICAgdGhpcy5kaXNjbGFpbWVyID0gPGFueT57IHByb3BlcnR5OiBwcm9wZXJ0eSB9O1xuICAgIHRoaXMuZGlzY2xhaW1lci52YWx1ZSA9IHZhbHVlO1xuICAgIGNvbnN0IGxhYmVsUHJvcGVydHkgPSBmaWVsZEZpbHRlci5sYWJlbCB8fCBjYXBpdGFsaXplRmlyc3RMZXR0ZXIoZmllbGRGaWx0ZXIucHJvcGVydHkpO1xuXG4gICAgaWYgKGZpZWxkRmlsdGVyLnR5cGUgPT09ICdjdXJyZW5jeScgJiYgdmFsdWUpIHtcbiAgICAgIHRoaXMuZm9ybWF0VmFsdWVUb0N1cnJlbmN5KGZpZWxkRmlsdGVyLCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgaWYgKGZpZWxkRmlsdGVyLnR5cGUgPT09ICdib29sZWFuJyAmJiAodmFsdWUgPT09IHRydWUgfHwgdmFsdWUgPT09IGZhbHNlKSkge1xuICAgICAgdGhpcy5mb3JtYXRWYWx1ZVRvQm9vbGVhbihmaWVsZEZpbHRlciwgdmFsdWUpO1xuICAgIH1cblxuICAgIGlmIChmaWVsZEZpbHRlci5vcHRpb25zICYmIHZhbHVlKSB7XG4gICAgICB0aGlzLmFwcGx5RGlzY2xhaW1lckxhYmVsVmFsdWUoZmllbGRGaWx0ZXIsIHZhbHVlKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuZGlzY2xhaW1lckxhYmVsKSB7XG4gICAgICB0aGlzLmRpc2NsYWltZXJMYWJlbCA9IHRoaXMuZGlzY2xhaW1lci52YWx1ZTtcbiAgICB9XG5cbiAgICB0aGlzLmRpc2NsYWltZXIubGFiZWwgPSBgJHtsYWJlbFByb3BlcnR5fTogJHt0aGlzLmRpc2NsYWltZXJMYWJlbH1gO1xuICAgIHRoaXMuZGlzY2xhaW1lckdyb3VwLmRpc2NsYWltZXJzID0gWy4uLnRoaXMuZGlzY2xhaW1lckdyb3VwLmRpc2NsYWltZXJzLCB0aGlzLmRpc2NsYWltZXJdO1xuICB9XG5cbiAgb25DaGFuZ2VEaXNjbGFpbWVyR3JvdXAoKSB7XG4gICAgaWYgKCF0aGlzLnNlYXJjaFZhbHVlKSB7XG4gICAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XG4gICAgICB0aGlzLnNlYXJjaFZhbHVlID0gJyc7XG5cbiAgICAgIHRoaXMuc2VhcmNoRmlsdGVyZWRJdGVtcygpO1xuICAgIH1cbiAgfVxuXG4gIHNlYXJjaCgpOiB2b2lkIHtcbiAgICB0aGlzLnBhZ2UgPSAxO1xuXG4gICAgaWYgKHRoaXMuc2VhcmNoVmFsdWUpIHtcbiAgICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICAgIHRoaXMuZGlzY2xhaW1lckdyb3VwLmRpc2NsYWltZXJzID0gW107XG5cbiAgICAgIHRoaXMuc2VhcmNoRmlsdGVyZWRJdGVtcygpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmluaXRpYWxpemVEYXRhKCk7XG4gICAgfVxuICB9XG5cbiAgc2VhcmNoRmlsdGVyZWRJdGVtcygpOiB2b2lkIHtcbiAgICB0aGlzLnNlYXJjaFN1YnNjcmlwdGlvbiA9IHRoaXMuZ2V0RmlsdGVyZWRJdGVtcyh0aGlzLnNlYXJjaFZhbHVlKVxuICAgICAgLnBpcGUoXG4gICAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4ge1xuICAgICAgICAgIHRoaXMuc2V0TG9va3VwUmVzcG9uc2VQcm9wZXJ0aWVzKCk7XG4gICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyb3IpO1xuICAgICAgICB9KVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgKGRhdGE6IFBvTG9va3VwUmVzcG9uc2VBcGkpID0+IHRoaXMuc2V0TG9va3VwUmVzcG9uc2VQcm9wZXJ0aWVzKGRhdGEpLFxuICAgICAgICAoKSA9PiB7fVxuICAgICAgKTtcbiAgfVxuXG4gIHNob3dNb3JlRXZlbnQoKSB7XG4gICAgdGhpcy5wYWdlKys7XG4gICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xuXG4gICAgdGhpcy5zaG93TW9yZVN1YnNjcmlwdGlvbiA9IHRoaXMuZ2V0RmlsdGVyZWRJdGVtcyh0aGlzLnNlYXJjaFZhbHVlKVxuICAgICAgLnBpcGUoXG4gICAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4ge1xuICAgICAgICAgIHRoaXMuaGFzTmV4dCA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyb3IpO1xuICAgICAgICB9KVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgKGRhdGE6IFBvTG9va3VwUmVzcG9uc2VBcGkpID0+IHtcbiAgICAgICAgICB0aGlzLml0ZW1zID0gWy4uLnRoaXMuaXRlbXMsIC4uLmRhdGEuaXRlbXNdO1xuICAgICAgICAgIHRoaXMuaGFzTmV4dCA9IGRhdGEuaGFzTmV4dDtcbiAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgIHRoaXMuc2V0U2VsZWN0ZWRJdGVtcygpO1xuICAgICAgICB9LFxuICAgICAgICAoKSA9PiB7fVxuICAgICAgKTtcbiAgfVxuXG4gIC8vTcOpdG9kbyByZXNwb25zw6F2ZWwgcG9yIHNlbGVjaW9uYXIgYXMgbGluaGFzIHF1YW5kbyBhYnJlIG8gbW9kYWwuXG4gIHNldFNlbGVjdGVkSXRlbXMoKSB7XG4gICAgdGhpcy5zZWxlY3RlZHMuZm9yRWFjaChzZWxlY3RlZEl0ZW0gPT4ge1xuICAgICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgdGhpcy5wb1RhYmxlLnNlbGVjdFJvd0l0ZW0oaXRlbSA9PiBpdGVtW3RoaXMuZmllbGRWYWx1ZV0gPT09IHNlbGVjdGVkSXRlbS52YWx1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnBvVGFibGUuc2VsZWN0Um93SXRlbShpdGVtID0+IGl0ZW1bdGhpcy5maWVsZFZhbHVlXSA9PT0gc2VsZWN0ZWRJdGVtW3RoaXMuZmllbGRWYWx1ZV0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLy9Nw6l0b2RvIHJlc3BvbnPDoXZlbCBwb3IgY3JpYXIgb3MgZGlzY2xhaW1lcnMgcXVhbmRvIGFicmUgbyBtb2RhbC5cbiAgc2V0RGlzY2xhaW1lcnNJdGVtcygpIHtcbiAgICBpZiAodGhpcy5zZWxlY3RlZEl0ZW1zICYmICFBcnJheS5pc0FycmF5KHRoaXMuc2VsZWN0ZWRJdGVtcykpIHtcbiAgICAgIHRoaXMubXVsdGlwbGUgPyAodGhpcy5zZWxlY3RlZHMgPSBbeyB2YWx1ZTogdGhpcy5zZWxlY3RlZEl0ZW1zIH1dKSA6ICh0aGlzLnNlbGVjdGVkcyA9IFt0aGlzLnNlbGVjdGVkSXRlbXNdKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5zZWxlY3RlZHMubGVuZ3RoID09PSAwICYmIHRoaXMuc2VsZWN0ZWRJdGVtcyAmJiB0aGlzLnNlbGVjdGVkSXRlbXMubGVuZ3RoKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkcyA9IFsuLi50aGlzLnNlbGVjdGVkSXRlbXNdO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlEaXNjbGFpbWVyTGFiZWxWYWx1ZShmaWVsZDogUG9Mb29rdXBBZHZhbmNlZEZpbHRlciwgZmlsdGVyVmFsdWU6IGFueSkge1xuICAgIGNvbnN0IHZhbHVlcyA9IEFycmF5LmlzQXJyYXkoZmlsdGVyVmFsdWUpID8gZmlsdGVyVmFsdWUgOiBbZmlsdGVyVmFsdWVdO1xuICAgIGNvbnN0IGxhYmVscyA9IHZhbHVlcy5tYXAob3B0aW9uVmFsdWUgPT4ge1xuICAgICAgY29uc3QgZmluZE9wdGlvbiA9IGZpZWxkLm9wdGlvbnMuZmluZChvcHRpb24gPT4gb3B0aW9uLnZhbHVlID09PSBvcHRpb25WYWx1ZSk7XG4gICAgICByZXR1cm4gZmluZE9wdGlvbi5sYWJlbDtcbiAgICB9KTtcblxuICAgIGlmIChsYWJlbHMuam9pbigpKSB7XG4gICAgICB0aGlzLmRpc2NsYWltZXJMYWJlbCA9IGxhYmVscy5qb2luKCcsICcpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZm9ybWF0VmFsdWVUb0N1cnJlbmN5KGZpZWxkOiBQb0xvb2t1cEFkdmFuY2VkRmlsdGVyLCBmaWx0ZXJWYWx1ZTogYW55KSB7XG4gICAgY29uc3QgY3VycmVuY3lMYWJlbCA9IG5ldyBJbnRsLk51bWJlckZvcm1hdChmaWVsZC5sb2NhbGUgPyBmaWVsZC5sb2NhbGUgOiB0aGlzLmxhbmd1YWdlLCB7XG4gICAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDJcbiAgICB9KS5mb3JtYXQoZmlsdGVyVmFsdWUpO1xuICAgIHRoaXMuZGlzY2xhaW1lckxhYmVsID0gY3VycmVuY3lMYWJlbDtcbiAgfVxuXG4gIHByaXZhdGUgZm9ybWF0VmFsdWVUb0Jvb2xlYW4oZmllbGQ6IFBvTG9va3VwQWR2YW5jZWRGaWx0ZXIsIGZpbHRlclZhbHVlOiBhbnkpIHtcbiAgICBsZXQgbGFiZWxCb29sZWFuOiBzdHJpbmc7XG5cbiAgICBpZiAoZmlsdGVyVmFsdWUpIHtcbiAgICAgIGxhYmVsQm9vbGVhbiA9IGZpZWxkLmJvb2xlYW5UcnVlID8gZmllbGQuYm9vbGVhblRydWUgOiBmaWx0ZXJWYWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGFiZWxCb29sZWFuID0gZmllbGQuYm9vbGVhbkZhbHNlID8gZmllbGQuYm9vbGVhbkZhbHNlIDogZmlsdGVyVmFsdWU7XG4gICAgfVxuICAgIHRoaXMuZGlzY2xhaW1lckxhYmVsID0gYCR7bGFiZWxCb29sZWFufWA7XG4gIH1cblxuICBwcml2YXRlIHNldEFkdmFuY2VkRmlsdGVyTW9kYWxQcm9wZXJ0aWVzKCkge1xuICAgIHRoaXMuYWR2YW5jZWRGaWx0ZXJNb2RhbFRpdGxlID0gdGhpcy5saXRlcmFscy5tb2RhbEFkdmFuY2VkU2VhcmNoVGl0bGU7XG5cbiAgICB0aGlzLmRpc2NsYWltZXJHcm91cCA9IHtcbiAgICAgIHRpdGxlOiB0aGlzLmxpdGVyYWxzLm1vZGFsRGlzY2xhaW1lckdyb3VwVGl0bGUsXG4gICAgICBkaXNjbGFpbWVyczogW11cbiAgICB9O1xuXG4gICAgdGhpcy5wcmltYXJ5QWN0aW9uQWR2YW5jZWRGaWx0ZXIgPSB7XG4gICAgICBhY3Rpb246ICgpID0+IHtcbiAgICAgICAgdGhpcy5kZXN0cm95RHluYW1pY0Zvcm0oKTtcbiAgICAgICAgdGhpcy5pc0FkdmFuY2VkRmlsdGVyID0gZmFsc2U7XG4gICAgICAgIHRoaXMucGFnZSA9IDE7XG4gICAgICAgIHRoaXMuY3JlYXRlRGlzY2xhaW1lcigpO1xuICAgICAgfSxcbiAgICAgIGxhYmVsOiB0aGlzLmxpdGVyYWxzLm1vZGFsQWR2YW5jZWRTZWFyY2hQcmltYXJ5QWN0aW9uTGFiZWxcbiAgICB9O1xuXG4gICAgdGhpcy5zZWNvbmRhcnlBY3Rpb25BZHZhbmNlZEZpbHRlciA9IHtcbiAgICAgIGFjdGlvbjogKCkgPT4ge1xuICAgICAgICB0aGlzLmRlc3Ryb3lEeW5hbWljRm9ybSgpO1xuICAgICAgICB0aGlzLmlzQWR2YW5jZWRGaWx0ZXIgPSBmYWxzZTtcbiAgICAgIH0sXG4gICAgICBsYWJlbDogdGhpcy5saXRlcmFscy5tb2RhbEFkdmFuY2VkU2VhcmNoU2Vjb25kYXJ5QWN0aW9uTGFiZWxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRBZHZhbmNlZEZpbHRlcnMoYWR2YW5jZWRQYXJhbXM6IGFueSkge1xuICAgIGlmIChhZHZhbmNlZFBhcmFtcyAmJiBhZHZhbmNlZFBhcmFtcy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBmaWx0ZXJzOiBPYmplY3QgPSB7fTtcbiAgICAgIGxldCB2YWxpZGF0ZWRBZHZhY2VuZEZpbHRlcnM6IGFueTtcblxuICAgICAgYWR2YW5jZWRQYXJhbXMuZm9yRWFjaCgoZmlsdGVyOiBhbnkpID0+IHtcbiAgICAgICAgZmlsdGVyc1tmaWx0ZXIucHJvcGVydHldID0gZmlsdGVyLnZhbHVlIGluc3RhbmNlb2YgQXJyYXkgPyBmaWx0ZXIudmFsdWUuam9pbigpIDogZmlsdGVyLnZhbHVlO1xuXG4gICAgICAgIHZhbGlkYXRlZEFkdmFjZW5kRmlsdGVycyA9IHsgLi4udmFsaWRhdGVkQWR2YWNlbmRGaWx0ZXJzLCAuLi5maWx0ZXJzIH07XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHZhbGlkYXRlZEFkdmFjZW5kRmlsdGVycztcbiAgICB9XG5cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRGaWx0ZXJlZEl0ZW1zKGZpbHRlcjogc3RyaW5nKTogT2JzZXJ2YWJsZTxQb0xvb2t1cFJlc3BvbnNlQXBpPiB7XG4gICAgY29uc3QgZmlsdGVyZWRQYXJhbXM6IFBvTG9va3VwRmlsdGVyZWRJdGVtc1BhcmFtcyA9IHRoaXMuZ2V0RmlsdGVyZWRQYXJhbXMoZmlsdGVyKTtcblxuICAgIHJldHVybiB0aGlzLmZpbHRlclNlcnZpY2UuZ2V0RmlsdGVyZWRJdGVtcyhmaWx0ZXJlZFBhcmFtcyk7XG4gIH1cblxuICBwcml2YXRlIGdldEZpbHRlcmVkUGFyYW1zKGZpbHRlcjogc3RyaW5nKSB7XG4gICAgY29uc3QgeyBwYWdlLCBwYWdlU2l6ZSwgZmlsdGVyUGFyYW1zLCBzb3J0IH0gPSB0aGlzO1xuXG4gICAgY29uc3QgZmlsdGVyZWRQYXJhbXMgPSB7fTtcbiAgICBjb25zdCBvcmRlciA9IHRoaXMuZ2V0T3JkZXJQYXJhbShzb3J0KTtcbiAgICBjb25zdCBhZHZhbmNlZEZpbHRlcnMgPSB0aGlzLmdldEFkdmFuY2VkRmlsdGVycyh0aGlzLmRpc2NsYWltZXJHcm91cC5kaXNjbGFpbWVycyk7XG4gICAgY29uc3QgcGFyYW1zID0geyBmaWx0ZXIsIHBhZ2UsIHBhZ2VTaXplLCBvcmRlciwgZmlsdGVyUGFyYW1zLCBhZHZhbmNlZEZpbHRlcnMgfTtcblxuICAgIGZvciAoY29uc3Qga2V5IGluIHBhcmFtcykge1xuICAgICAgaWYgKHBhcmFtcy5oYXNPd25Qcm9wZXJ0eShrZXkpICYmIHBhcmFtc1trZXldICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZmlsdGVyZWRQYXJhbXNba2V5XSA9IHBhcmFtc1trZXldO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmaWx0ZXJlZFBhcmFtcztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0T3JkZXJQYXJhbShzb3J0OiBQb1RhYmxlQ29sdW1uU29ydCA9IHsgdHlwZTogdW5kZWZpbmVkIH0pIHtcbiAgICBjb25zdCB7IGNvbHVtbiwgdHlwZSB9ID0gc29ydDtcblxuICAgIGlmICghY29sdW1uKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHR5cGUgPT09IFBvVGFibGVDb2x1bW5Tb3J0VHlwZS5EZXNjZW5kaW5nKSB7XG4gICAgICByZXR1cm4gYC0ke2NvbHVtbi5wcm9wZXJ0eX1gO1xuICAgIH1cblxuICAgIHJldHVybiBgJHtjb2x1bW4ucHJvcGVydHl9YDtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZURhdGEoKTogdm9pZCB7XG4gICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xuXG4gICAgdGhpcy5maWx0ZXJTdWJzY3JpcHRpb24gPSB0aGlzLmdldEZpbHRlcmVkSXRlbXMoJycpLnN1YnNjcmliZShkYXRhID0+IHtcbiAgICAgIHRoaXMuc2V0TG9va3VwUmVzcG9uc2VQcm9wZXJ0aWVzKGRhdGEpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRMb29rdXBSZXNwb25zZVByb3BlcnRpZXMoZGF0YT86IFBvTG9va3VwUmVzcG9uc2VBcGkpIHtcbiAgICB0aGlzLml0ZW1zID0gZGF0YT8uaXRlbXMgPz8gW107XG4gICAgdGhpcy5oYXNOZXh0ID0gZGF0YT8uaGFzTmV4dCA/PyBmYWxzZTtcbiAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIHRoaXMuc2V0RGlzY2xhaW1lcnNJdGVtcygpO1xuICAgIHRoaXMuc2V0U2VsZWN0ZWRJdGVtcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRUYWJsZUxpdGVyYWxzKCkge1xuICAgIHRoaXMudGFibGVMaXRlcmFscyA9IHtcbiAgICAgICdub0NvbHVtbnMnOiB0aGlzLmxpdGVyYWxzLm1vZGFsVGFibGVOb0NvbHVtbnMsXG4gICAgICAnbm9EYXRhJzogdGhpcy5saXRlcmFscy5tb2RhbFRhYmxlTm9EYXRhLFxuICAgICAgJ2xvYWRpbmdEYXRhJzogdGhpcy5saXRlcmFscy5tb2RhbFRhYmxlTG9hZGluZ0RhdGEsXG4gICAgICAnbG9hZE1vcmVEYXRhJzogdGhpcy5saXRlcmFscy5tb2RhbFRhYmxlTG9hZE1vcmVEYXRhXG4gICAgfTtcbiAgfVxuXG4gIC8vIE3DqXRvZG8gcmVzcG9uc8OhdmVsIHBvciBhYnJpciBhIG1vZGFsIGRlIGJ1c2NhIGRhcyBpbmZvcm1hw6fDtWVzLlxuICBhYnN0cmFjdCBvcGVuTW9kYWwoKTogdm9pZDtcblxuICAvLyBNw6l0b2RvIHJlc3BvbnPDoXZlbCBwb3IgZGVzdHJ1aXIgbyBkeW5hbWljRm9ybVxuICBhYnN0cmFjdCBkZXN0cm95RHluYW1pY0Zvcm0oKTogdm9pZDtcbn1cbiJdfQ==
|