ca-components 1.0.78 → 1.0.80
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/ca-components.module.mjs +16 -4
- package/esm2022/lib/components/ca-activity-log-list/ca-activity-log-list.component.mjs +1 -1
- package/esm2022/lib/components/ca-app-tooltip-v2/ca-app-tooltip-v2.component.mjs +1 -1
- package/esm2022/lib/components/ca-filters/components/ca-dispatcher-filter/ca-dispatcher-filter.component.mjs +2 -2
- package/esm2022/lib/components/ca-filters/components/ca-money-filter/ca-money-filter.component.mjs +2 -2
- package/esm2022/lib/components/ca-filters/components/ca-state-filter/ca-state-filter.component.mjs +2 -2
- package/esm2022/lib/components/ca-filters/components/ca-trailer-type-filter/ca-trailer-type-filter.component.mjs +1 -1
- package/esm2022/lib/components/ca-filters/components/ca-truck-type-filter/ca-truck-type-filter.component.mjs +1 -1
- package/esm2022/lib/components/ca-filters/components/ca-user-filter/ca-user-filter.component.mjs +2 -2
- package/esm2022/lib/components/ca-input/base-classes/ca-input-base-helpres.mjs +237 -0
- package/esm2022/lib/components/ca-input/base-classes/ca-input-base.mjs +1020 -0
- package/esm2022/lib/components/ca-input/base-classes/ca-input-event-manager.mjs +24 -0
- package/esm2022/lib/components/ca-input/ca-input.component.mjs +53 -163
- package/esm2022/lib/components/ca-input/components/ca-input-clear/ca-input-clear.component.mjs +4 -4
- package/esm2022/lib/components/ca-input/components/ca-input-placeholder-icon/ca-input-placeholder-icon.component.mjs +11 -17
- package/esm2022/lib/components/ca-input/config/ca-input.config.mjs +1 -1
- package/esm2022/lib/components/ca-input/directives/caps-lock.directive.mjs +50 -0
- package/esm2022/lib/components/ca-input/directives/index.mjs +5 -1
- package/esm2022/lib/components/ca-input/directives/input-max-value.directive.mjs +53 -0
- package/esm2022/lib/components/ca-input/directives/min-max-value.directive.mjs +1 -1
- package/esm2022/lib/components/ca-input/directives/price_format.directive.mjs +41 -0
- package/esm2022/lib/components/ca-input/directives/restrict-input.directive.mjs +98 -0
- package/esm2022/lib/components/ca-input/enums/input-text-transform.enum.mjs +9 -0
- package/esm2022/lib/components/ca-input/input-test/input-test.component.mjs +175 -0
- package/esm2022/lib/components/ca-input/pipes/input-container-class.pipe.mjs +16 -16
- package/esm2022/lib/components/ca-input/pipes/input-datetime-picker-class.pipe.mjs +1 -1
- package/esm2022/lib/components/ca-input/pipes/input-error.pipe.mjs +18 -15
- package/esm2022/lib/components/ca-input/pipes/input-pattern.pipe.mjs +322 -0
- package/esm2022/lib/components/ca-input/services/index.mjs +1 -2
- package/esm2022/lib/components/ca-input/utils/constants/input-constants.mjs +102 -1
- package/esm2022/lib/components/ca-input-address-dropdown/ca-input-address-dropdown.component.mjs +2 -2
- package/esm2022/lib/components/ca-input-datetime-picker/ca-input-datetime-picker.component.mjs +809 -0
- package/esm2022/lib/components/ca-input-dropdown/ca-input-dropdown.component.mjs +18 -18
- package/esm2022/lib/components/ca-rating-review/ca-rating-review.component.mjs +2 -2
- package/esm2022/lib/components/ca-rating-review/components/ca-ratings-reviews-popup/ca-ratings-reviews-popup.component.mjs +1 -1
- package/esm2022/lib/components/ca-upload-files/components/ca-upload-file/ca-upload-file.component.mjs +1 -1
- package/esm2022/public-api.mjs +3 -1
- package/fesm2022/ca-components.mjs +7690 -7171
- package/fesm2022/ca-components.mjs.map +1 -1
- package/lib/ca-components.module.d.ts +32 -30
- package/lib/components/ca-filters/ca-filter.component.d.ts +2 -2
- package/lib/components/ca-input/base-classes/ca-input-base-helpres.d.ts +29 -0
- package/lib/components/ca-input/base-classes/ca-input-base.d.ts +82 -0
- package/lib/components/ca-input/base-classes/ca-input-event-manager.d.ts +16 -0
- package/lib/components/ca-input/ca-input.component.d.ts +30 -48
- package/lib/components/ca-input/components/ca-input-placeholder-icon/ca-input-placeholder-icon.component.d.ts +3 -7
- package/lib/components/ca-input/config/ca-input.config.d.ts +10 -1
- package/lib/components/ca-input/directives/caps-lock.directive.d.ts +14 -0
- package/lib/components/ca-input/directives/index.d.ts +4 -0
- package/lib/components/ca-input/directives/input-max-value.directive.d.ts +12 -0
- package/lib/components/ca-input/directives/price_format.directive.d.ts +11 -0
- package/lib/components/ca-input/directives/restrict-input.directive.d.ts +15 -0
- package/lib/components/ca-input/enums/input-text-transform.enum.d.ts +6 -0
- package/lib/components/ca-input/input-test/input-test.component.d.ts +47 -0
- package/lib/components/ca-input/pipes/input-container-class.pipe.d.ts +3 -3
- package/lib/components/ca-input/pipes/input-datetime-picker-class.pipe.d.ts +1 -1
- package/lib/components/ca-input/pipes/input-pattern.pipe.d.ts +25 -0
- package/lib/components/ca-input/services/index.d.ts +0 -1
- package/lib/components/ca-input/utils/constants/input-constants.d.ts +11 -0
- package/lib/components/ca-input-datetime-picker/ca-input-datetime-picker.component.d.ts +99 -0
- package/package.json +1 -1
- package/public-api.d.ts +2 -0
- package/esm2022/lib/components/ca-input/components/ca-input-datetime-picker/ca-input-datetime-picker.component.mjs +0 -100
- package/esm2022/lib/components/ca-input/services/ca-input-state.service.mjs +0 -2173
- package/lib/components/ca-input/components/ca-input-datetime-picker/ca-input-datetime-picker.component.d.ts +0 -48
- package/lib/components/ca-input/services/ca-input-state.service.d.ts +0 -196
package/esm2022/lib/components/ca-filters/components/ca-user-filter/ca-user-filter.component.mjs
CHANGED
|
@@ -203,7 +203,7 @@ export class CaUserFilterComponent {
|
|
|
203
203
|
// modules
|
|
204
204
|
CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: HttpClientModule }, { kind: "ngmodule", type: AngularSvgIconModule }, { kind: "component", type: i3.SvgIconComponent, selector: "svg-icon", inputs: ["src", "name", "stretch", "applyClass", "applyCss", "svgClass", "class", "viewBox", "svgAriaLabel", "svgStyle"] }, { kind: "ngmodule", type: NgbTooltipModule }, { kind: "directive", type: i4.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "component", type:
|
|
205
205
|
// components
|
|
206
|
-
CaInputComponent, selector: "app-ca-input", inputs: ["inputConfig", "incorrectValue", "selectedDropdownLabelColor", "template"], outputs: ["incorrectEvent", "blurInput", "focusInput", "change", "commandEvent", "clear", "showHideDropdown", "dropDownKeyNavigation"] }, { kind: "component", type: CaProfileImageComponent, selector: "app-ca-profile-image", inputs: ["indx", "avatarImg", "avatarColor", "textShortName", "name", "isRound", "size", "height", "fontSize", "isHoverEffect"] }, { kind: "component", type: CaAppTooltipV2Component, selector: "mainCaTooltip, [mainCaTooltip]", inputs: ["mainCaTooltip", "position", "openTooltipDelay", "tooltipBackground", "tooltipColor", "tooltipTextAlign", "tooltipMarginTop", "disableTooltip"] }, { kind: "pipe", type:
|
|
206
|
+
CaInputComponent, selector: "app-ca-input", inputs: ["inputConfig", "dateTimePopover", "incorrectValue", "selectedDropdownLabelColor", "template"], outputs: ["handleToggleDropdownOptions", "incorrectEvent", "blurInput", "focusInput", "change", "commandEvent", "clear", "showHideDropdown", "dropDownKeyNavigation"] }, { kind: "component", type: CaProfileImageComponent, selector: "app-ca-profile-image", inputs: ["indx", "avatarImg", "avatarColor", "textShortName", "name", "isRound", "size", "height", "fontSize", "isHoverEffect"] }, { kind: "component", type: CaAppTooltipV2Component, selector: "mainCaTooltip, [mainCaTooltip]", inputs: ["mainCaTooltip", "position", "openTooltipDelay", "tooltipBackground", "tooltipColor", "tooltipTextAlign", "tooltipMarginTop", "disableTooltip"] }, { kind: "pipe", type:
|
|
207
207
|
// pipes
|
|
208
208
|
FilterSelectedItemsPipe, name: "filterSelectedItems" }, { kind: "pipe", type: GroupSelectionStatePipe, name: "groupSelectionState" }, { kind: "pipe", type: SelectedUsersPipe, name: "selectedUser" }], animations: [
|
|
209
209
|
inOutAnimation('inOutAnimation'),
|
|
@@ -248,4 +248,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
248
248
|
}], isSearchExpanded: [{
|
|
249
249
|
type: Input
|
|
250
250
|
}] } });
|
|
251
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2EtdXNlci1maWx0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2EtZmlsdGVycy9jb21wb25lbnRzL2NhLXVzZXItZmlsdGVyL2NhLXVzZXItZmlsdGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NhLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2NhLWZpbHRlcnMvY29tcG9uZW50cy9jYS11c2VyLWZpbHRlci9jYS11c2VyLWZpbHRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFHTCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCxtQkFBbUIsR0FHcEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUxQyxVQUFVO0FBQ1YsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDOUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFeEQsYUFBYTtBQUNiLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFFdEUsUUFBUTtBQUNSLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxr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LFNBQVM7K0JBQ0Usb0JBQW9CLGNBQ2xCLElBQUksaUJBQ0QsaUJBQWlCLENBQUMsSUFBSSxXQUc1Qjt3QkFDUCxVQUFVO3dCQUNWLFlBQVk7d0JBQ1osbUJBQW1CO3dCQUNuQixnQkFBZ0I7d0JBQ2hCLG9CQUFvQjt3QkFDcEIsZ0JBQWdCO3dCQUNoQixhQUFhO3dCQUNiLGdCQUFnQjt3QkFDaEIsdUJBQXVCO3dCQUN2Qix1QkFBdUI7d0JBQ3ZCLFFBQVE7d0JBQ1IsdUJBQXVCO3dCQUN2Qix1QkFBdUI7d0JBQ3ZCLGlCQUFpQjtxQkFDcEIsY0FDYTt3QkFDVixjQUFjLENBQUMsZ0JBQWdCLENBQUM7d0JBQ2hDLGFBQWEsQ0FBQyxlQUFlLENBQUM7d0JBQzlCLFNBQVMsQ0FBQyxXQUFXLENBQUM7cUJBQ3ZCO3VGQUdRLElBQUk7c0JBQVosS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPbkRlc3Ryb3ksXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICBVbnR5cGVkRm9ybUJ1aWxkZXIsXG4gIFVudHlwZWRGb3JtR3JvdXAsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuXG4vLyBtb2R1bGVzXG5pbXBvcnQgeyBIdHRwQ2xpZW50TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgTmdiVG9vbHRpcE1vZHVsZSB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcbmltcG9ydCB7IEFuZ3VsYXJTdmdJY29uTW9kdWxlIH0gZnJvbSAnYW5ndWxhci1zdmctaWNvbic7XG5cbi8vIGFuaW1hdGlvbnNcbmltcG9ydCB7IGluT3V0QW5pbWF0aW9uIH0gZnJvbSAnLi4vLi4vLi4vLi4vYW5pbWF0aW9ucy9pbi1vdXQuYW5pbWF0aW9uJztcbmltcG9ydCB7IHNob3dBbmltYXRpb24gfSBmcm9tICcuLi8uLi8uLi8uLi9hbmltYXRpb25zL3Nob3cuYW5pbWF0aW9uJztcblxuLy8gZW51bXNcbmltcG9ydCB7IExvYWRTdGF0dXNFbnVtIH0gZnJvbSAnLi4vLi4vLi4vLi4vZW51bXMvbG9hZC1zdGF0dXMuZW51bSc7XG5pbXBvcnQgeyBUb29sYmFyRmlsdGVyU3RyaW5nRW51bSB9IGZyb20gJy4uLy4uLy4uL2NhLW1hcC9lbnVtcy90b29sYmFyLWZpbHRlci1zdHJpbmcuZW51bSc7XG5cbi8vIG1vZGVsc1xuaW1wb3J0IHsgZmlsdGVyT3V0cHV0IH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzL2ZpbHRlci1vdXRwdXQubW9kZWwnO1xuaW1wb3J0IHsgZmlsdGVyT3V0cHV0V2l0aFBhcmFtcyB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscy9maWx0ZXItb3V0cHV0LXBhcmFtcy5tb2RlbCc7XG5pbXBvcnQgeyBVc2VyRGF0YSB9IGZyb20gJy4vbW9kZWxzL2NhLXVzZXItZGF0YS5tb2RlbCc7XG5pbXBvcnQgeyBVc2VyR3JvdXAgfSBmcm9tICcuL21vZGVscy9jYS11c2VyLWdyb3VwLm1vZGVsJztcblxuLy8gY29tcG9uZW50c1xuaW1wb3J0IHsgQ2FJbnB1dENvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2NhLWlucHV0L2NhLWlucHV0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYVByb2ZpbGVJbWFnZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2NhLXByb2ZpbGUtaW1hZ2UvY2EtcHJvZmlsZS1pbWFnZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FBcHBUb29sdGlwVjJDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9jYS1hcHAtdG9vbHRpcC12Mi9jYS1hcHAtdG9vbHRpcC12Mi5jb21wb25lbnQnO1xuXG4vLyBwaXBlc1xuaW1wb3J0IHsgRmlsdGVyU2VsZWN0ZWRJdGVtc1BpcGUgfSBmcm9tICcuL3BpcGVzL2ZpbHRlci1zZWxlY3RlZC1pdGVtcy5waXBlJztcbmltcG9ydCB7IEdyb3VwU2VsZWN0aW9uU3RhdGVQaXBlIH0gZnJvbSAnLi9waXBlcy9ncm91cC1zZWxlY3Rpb24tc3RhdGUucGlwZSc7XG5pbXBvcnQgeyBTZWxlY3RlZFVzZXJzUGlwZSB9IGZyb20gJy4vcGlwZXMvc2VsZWN0ZWQtdXNlcnMucGlwZSc7XG5cbi8vIGFuaW1hdGlvbnNcbmltcG9ydCB7IGNsb3NlRm9ybSB9IGZyb20gJy4uLy4uLy4uLy4uL2FuaW1hdGlvbnMvY2xvc2UtZm9ybS5hbmltYXRpb24nO1xuXG4vLyB1dGlsc1xuaW1wb3J0IHsgQ2FGaWx0ZXJzU3ZnUm91dGVzIH0gZnJvbSAnLi4vLi4vdXRpbHMvc3ZnLXJvdXRlcy9jYS1maWx0ZXJzLXN2Zy1yb3V0ZXMnO1xuXG4vLyBoZWxwZXJzXG5pbXBvcnQgeyBGaWx0ZXJIZWxwZXIgfSBmcm9tICcuLi8uLi91dGlscy9oZWxwZXJzL2ZpbHRlci5oZWxwZXInO1xuXG4vLyBjb25maWdzXG5pbXBvcnQgeyBJQ2FJbnB1dCB9IGZyb20gJy4uLy4uLy4uL2NhLWlucHV0L2NvbmZpZy9jYS1pbnB1dC5jb25maWcnO1xuaW1wb3J0IHsgQ2FVc2VyRmlsdGVyQ29uZmlnIH0gZnJvbSAnLi9jb25maWcvY2EtdXNlci1maWx0ZXIuY29uZmlnJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWNhLXVzZXItZmlsdGVyJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgdGVtcGxhdGVVcmw6ICcuL2NhLXVzZXItZmlsdGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2EtdXNlci1maWx0ZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgaW1wb3J0czogW1xuICAgIC8vIG1vZHVsZXNcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBIdHRwQ2xpZW50TW9kdWxlLFxuICAgIEFuZ3VsYXJTdmdJY29uTW9kdWxlLFxuICAgIE5nYlRvb2x0aXBNb2R1bGUsXG4gICAgLy8gY29tcG9uZW50c1xuICAgIENhSW5wdXRDb21wb25lbnQsXG4gICAgQ2FQcm9maWxlSW1hZ2VDb21wb25lbnQsXG4gICAgQ2FBcHBUb29sdGlwVjJDb21wb25lbnQsXG4gICAgLy8gcGlwZXNcbiAgICBGaWx0ZXJTZWxlY3RlZEl0ZW1zUGlwZSxcbiAgICBHcm91cFNlbGVjdGlvblN0YXRlUGlwZSxcbiAgICBTZWxlY3RlZFVzZXJzUGlwZVxuXSxcbiAgYW5pbWF0aW9uczogW1xuICAgIGluT3V0QW5pbWF0aW9uKCdpbk91dEFuaW1hdGlvbicpLFxuICAgIHNob3dBbmltYXRpb24oJ3Nob3dBbmltYXRpb24nKSxcbiAgICBjbG9zZUZvcm0oJ2Nsb3NlRm9ybScpLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBDYVVzZXJGaWx0ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIHR5cGUhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGlzRmlsdGVyQWN0aXZlOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGZpbHRlclRpdGxlITogc3RyaW5nO1xuICBASW5wdXQoKSBoYXNMZWZ0U2lkZUljb246IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgdG9Eb1N1YlR5cGUhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHVzZXJHcm91cCE6IFVzZXJHcm91cFtdO1xuICBASW5wdXQoKSBpc1NlYXJjaEV4cGFuZGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgcHVibGljIGxvYWRTdGF0dXNFbnVtID0gTG9hZFN0YXR1c0VudW07XG4gIHB1YmxpYyBzZWFyY2hGb3JtITogVW50eXBlZEZvcm1Hcm91cDtcbiAgcHVibGljIHNlYXJjaElucHV0VmFsdWUhOiBzdHJpbmc7XG5cbiAgcHVibGljIHVuc2VsZWN0ZWRWaXNpYmxlQ291bnQ6IG51bWJlciA9IDA7XG4gIHB1YmxpYyBjYUZpbHRlcnNTdmdSb3V0ZXM6IENhRmlsdGVyc1N2Z1JvdXRlcyA9IENhRmlsdGVyc1N2Z1JvdXRlcztcblxuICBwdWJsaWMgc2VsZWN0ZWRVc2VyR3JvdXA6IFVzZXJHcm91cFtdID0gW107XG4gIHB1YmxpYyBmaWx0ZXJBY3RpdmVBcnJheTogVXNlckdyb3VwW10gPSBbXTtcbiAgcHVibGljIGlzQXNjZW5kaW5nU29ydE9yZGVyOiBib29sZWFuID0gdHJ1ZTtcbiAgcHVibGljIGlzQnV0dG9uQXZhaWxhYmxlOiBib29sZWFuID0gZmFsc2U7XG4gIHB1YmxpYyBoYXNTZWxlY3RlZFVzZXJzOiBib29sZWFuID0gZmFsc2U7XG4gIHB1YmxpYyB0b3RhbEZpbHRlcnNOdW06IG51bWJlciA9IDA7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBmb3JtQnVpbGRlcjogVW50eXBlZEZvcm1CdWlsZGVyKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuY3JlYXRlRm9ybSgpO1xuXG4gICAgdGhpcy53YXRjaFNlYXJjaEZvcm1WYWx1ZUNoYW5nZXMoKTtcbiAgfVxuXG4gIGdldCB1c2VyU2VhcmNoKCk6IElDYUlucHV0IHtcbiAgICBzd2l0Y2ggKHRoaXMudHlwZSkge1xuICAgICAgY2FzZSBUb29sYmFyRmlsdGVyU3RyaW5nRW51bS5VU0VSX0ZJTFRFUjpcbiAgICAgIGNhc2UgVG9vbGJhckZpbHRlclN0cmluZ0VudW0uTU9EVUxFX0ZJTFRFUjpcbiAgICAgICAgcmV0dXJuIENhVXNlckZpbHRlckNvbmZpZy5nZXRVc2VyU2VhcmNoKCk7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignVW5rbm93biBmaWx0ZXIgdHlwZScpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRJbml0aWFscyhuYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQpOiBzdHJpbmcge1xuICAgIHJldHVybiBGaWx0ZXJIZWxwZXIuZ2V0SW5pdGlhbHMobmFtZSk7XG4gIH1cblxuICBwdWJsaWMgb25Hcm91cFN3aXRjaFN0YXRlKGdyb3VwOiBVc2VyR3JvdXApOiB2b2lkIHtcbiAgICBncm91cC5pc09wZW4gPSAhZ3JvdXAuaXNPcGVuO1xuICB9XG5cbiAgcHVibGljIG9uQ2hlY2tib3hTZWxlY3QoZXZlbnQ6IEV2ZW50LCBncm91cDogVXNlckdyb3VwKTogdm9pZCB7XG4gICAgaWYgKGV2ZW50KSBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgIGNvbnN0IHRvdGFsSXRlbXMgPSBncm91cC5pdGVtcy5sZW5ndGg7XG4gICAgY29uc3Qgc2VsZWN0ZWRJdGVtcyA9IGdyb3VwLml0ZW1zLmZpbHRlcigoaXRlbSkgPT4gaXRlbS5pc1NlbGVjdGVkKS5sZW5ndGg7XG5cbiAgICBncm91cC5pdGVtcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICBpZiAoc2VsZWN0ZWRJdGVtcyA9PT0gdG90YWxJdGVtcykgaXRlbS5pc1NlbGVjdGVkID0gZmFsc2U7XG4gICAgICBlbHNlIGl0ZW0uaXNTZWxlY3RlZCA9IHRydWU7XG4gICAgfSk7XG5cbiAgICB0aGlzLmhhc1NlbGVjdGVkVXNlcnMgPSBzZWxlY3RlZEl0ZW1zICE9PSB0b3RhbEl0ZW1zO1xuICB9XG5cbiAgcHVibGljIG9uRmlsdGVyQ2xvc2UoKTogdm9pZCB7XG4gICAgRmlsdGVySGVscGVyLmhhbmRsZUdyb3VwRmlsdGVyQ2xvc2UoXG4gICAgICB0aGlzLnVzZXJHcm91cCxcbiAgICAgIHRoaXMuc2VsZWN0ZWRVc2VyR3JvdXAsXG4gICAgICB0aGlzLnJlbW92ZUZyb21TZWxlY3RlZFVzZXIuYmluZCh0aGlzKSxcbiAgICAgIHRoaXMuYWRkVG9TZWxlY3RlZFVzZXIuYmluZCh0aGlzKVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgc2V0RmlsdGVyVmFsdWUoXG4gICAgZXZlbnQ6IEV2ZW50XG4gICk6IGZpbHRlck91dHB1dCB8IGZpbHRlck91dHB1dFdpdGhQYXJhbXMgfCB1bmRlZmluZWQge1xuICAgIHRoaXMuZmlsdGVyQWN0aXZlQXJyYXkgPSBbLi4udGhpcy51c2VyR3JvdXBdO1xuICAgIGNvbnN0IHNlbGVjdGVkVXNlcnNJZEFycmF5OiBudW1iZXJbXSA9IFtdO1xuICAgIHRoaXMudG90YWxGaWx0ZXJzTnVtID0gdGhpcy5maWx0ZXJBY3RpdmVBcnJheS5sZW5ndGg7XG5cbiAgICBjb25zdCBtYWluQXJyYXkgPSB0aGlzLnVzZXJHcm91cDtcbiAgICBsZXQgcXVlcnlQYXJhbXMgPSB7fTtcbiAgICBsZXQgc3ViVHlwZTogc3RyaW5nID0gVG9vbGJhckZpbHRlclN0cmluZ0VudW0uRU1QVFlfU1RSSU5HX1BMQUNFSE9MREVSO1xuXG4gICAgbWFpbkFycmF5LmZvckVhY2goKGRhdGE6IFVzZXJHcm91cCkgPT4ge1xuICAgICAgZGF0YS5pdGVtcy5mb3JFYWNoKChpdGVtOiBVc2VyRGF0YSkgPT4ge1xuICAgICAgICBpZiAoaXRlbS5pc1NlbGVjdGVkKSBzZWxlY3RlZFVzZXJzSWRBcnJheS5wdXNoKGl0ZW0uaWQhKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaWYgKCFzZWxlY3RlZFVzZXJzSWRBcnJheS5sZW5ndGgpIHtcbiAgICAgIHRoaXMuY2xlYXJBbGwoZXZlbnQpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHF1ZXJ5UGFyYW1zID0gc2VsZWN0ZWRVc2Vyc0lkQXJyYXk7XG4gICAgc3ViVHlwZSA9XG4gICAgICB0aGlzLnRvRG9TdWJUeXBlID8/IFRvb2xiYXJGaWx0ZXJTdHJpbmdFbnVtLkVNUFRZX1NUUklOR19QTEFDRUhPTERFUjtcblxuICAgIGNvbnN0IGFjdGlvbiA9ICdTZXQnO1xuICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICBmaWx0ZXJUeXBlOiB0aGlzLnR5cGUsXG4gICAgICBhY3Rpb24sXG4gICAgICBxdWVyeVBhcmFtcyxcbiAgICAgIHN1YlR5cGUsXG4gICAgfTtcblxuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgcHVibGljIGNsZWFyQWxsKGV2ZW50PzogRXZlbnQpOiBmaWx0ZXJPdXRwdXQgfCBmaWx0ZXJPdXRwdXRXaXRoUGFyYW1zIHtcbiAgICBpZiAoZXZlbnQpIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgdGhpcy5zZWxlY3RlZFVzZXJHcm91cCA9IFtdO1xuICAgIHRoaXMuZmlsdGVyQWN0aXZlQXJyYXkgPSBbXTtcbiAgICB0aGlzLnRvdGFsRmlsdGVyc051bSA9IDA7XG4gICAgdGhpcy5oYXNTZWxlY3RlZFVzZXJzID0gZmFsc2U7XG5cbiAgICB0aGlzLnVzZXJHcm91cC5mb3JFYWNoKChncm91cCkgPT4ge1xuICAgICAgZ3JvdXAuaXRlbXMuZm9yRWFjaCgoaXRlbTogVXNlckRhdGEpID0+IHtcbiAgICAgICAgaXRlbS5pc1NlbGVjdGVkID0gZmFsc2U7XG4gICAgICAgIGl0ZW0uY3VycmVudFNldCA9IGZhbHNlO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBjb25zdCBhY3Rpb24gPSAnQ2xlYXInO1xuICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICBhY3Rpb24sXG4gICAgICB0eXBlOiB0aGlzLnR5cGUsXG4gICAgICBmaWx0ZXJUeXBlOiB0aGlzLnR5cGUsXG4gICAgfTtcbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIHB1YmxpYyB0cmFja0J5SWRlbnRpdHkoaW5kZXg6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIGluZGV4O1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVGb3JtKCk6IHZvaWQge1xuICAgIHRoaXMuc2VhcmNoRm9ybSA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgc2VhcmNoOiBudWxsLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGhhbmRsZVNlbGVjdGVkVXNlcnMoaXRlbTogVXNlckRhdGEsIGluZHg6IG51bWJlciwgaW5keDI6IG51bWJlcikge1xuICAgIGlmIChpdGVtLmlzU2VsZWN0ZWQpIHRoaXMucmVtb3ZlRnJvbVNlbGVjdGVkVXNlcihpdGVtLCBpbmR4LCBpbmR4Mik7XG4gICAgZWxzZSB0aGlzLmFkZFRvU2VsZWN0ZWRVc2VyKGl0ZW0sIGluZHgsIGluZHgyKTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRUb1NlbGVjdGVkVXNlcihpdGVtOiBVc2VyRGF0YSwgaW5keDogbnVtYmVyLCBpbmR4MjogbnVtYmVyKSB7XG4gICAgY29uc3QgeyBoYXNTZWxlY3RlZFVzZXJzLCB1bnNlbGVjdGVkVmlzaWJsZUNvdW50LCBncm91cEFycmF5IH0gPVxuICAgICAgRmlsdGVySGVscGVyLmFkZE9yUmVtb3ZlRnJvbUdyb3VwKFxuICAgICAgICAnYWRkJyxcbiAgICAgICAgdGhpcy51c2VyR3JvdXAsXG4gICAgICAgIGl0ZW0sXG4gICAgICAgIGluZHgsXG4gICAgICAgIGluZHgyXG4gICAgICApO1xuXG4gICAgdGhpcy5oYXNTZWxlY3RlZFVzZXJzID0gaGFzU2VsZWN0ZWRVc2VycztcbiAgICB0aGlzLnVuc2VsZWN0ZWRWaXNpYmxlQ291bnQgPSB1bnNlbGVjdGVkVmlzaWJsZUNvdW50O1xuICAgIHRoaXMudXNlckdyb3VwID0gWy4uLmdyb3VwQXJyYXldO1xuXG4gICAgdGhpcy5jaGVja0ZpbHRlckFjdGl2ZVZhbHVlKCk7XG4gIH1cblxuICBwdWJsaWMgcmVtb3ZlRnJvbVNlbGVjdGVkVXNlcihcbiAgICBpdGVtOiBVc2VyRGF0YSxcbiAgICBpbmR4OiBudW1iZXIsXG4gICAgaW5keDI6IG51bWJlclxuICApOiB2b2lkIHtcbiAgICBjb25zdCB7IGhhc1NlbGVjdGVkVXNlcnMsIHVuc2VsZWN0ZWRWaXNpYmxlQ291bnQsIGdyb3VwQXJyYXkgfSA9XG4gICAgICBGaWx0ZXJIZWxwZXIuYWRkT3JSZW1vdmVGcm9tR3JvdXAoXG4gICAgICAgICdyZW1vdmUnLFxuICAgICAgICB0aGlzLnVzZXJHcm91cCxcbiAgICAgICAgaXRlbSxcbiAgICAgICAgaW5keCxcbiAgICAgICAgaW5keDJcbiAgICAgICk7XG5cbiAgICB0aGlzLmhhc1NlbGVjdGVkVXNlcnMgPSBoYXNTZWxlY3RlZFVzZXJzO1xuICAgIHRoaXMudW5zZWxlY3RlZFZpc2libGVDb3VudCA9IHVuc2VsZWN0ZWRWaXNpYmxlQ291bnQ7XG4gICAgdGhpcy51c2VyR3JvdXAgPSBncm91cEFycmF5O1xuXG4gICAgdGhpcy5jaGVja0ZpbHRlckFjdGl2ZVZhbHVlKCk7XG4gIH1cblxuICBwdWJsaWMgY2hlY2tGaWx0ZXJBY3RpdmVWYWx1ZSgpOiB2b2lkIHtcbiAgICBjb25zdCBmaWx0ZXJDaGVjayA9IEZpbHRlckhlbHBlci5jaGVja0dyb3VwRmlsdGVyQWN0aXZlVmFsdWUoXG4gICAgICB0aGlzLmZpbHRlckFjdGl2ZUFycmF5LFxuICAgICAgdGhpcy5pc0J1dHRvbkF2YWlsYWJsZVxuICAgICk7XG5cbiAgICB0aGlzLmlzQnV0dG9uQXZhaWxhYmxlID0gZmlsdGVyQ2hlY2suaXNCdXR0b25BdmFpbGFibGU7XG4gIH1cblxuICBwcml2YXRlIHdhdGNoU2VhcmNoRm9ybVZhbHVlQ2hhbmdlcygpOiB2b2lkIHtcbiAgICB0aGlzLnNlYXJjaEZvcm0udmFsdWVDaGFuZ2VzXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAuc3Vic2NyaWJlKChjaGFuZ2VzKSA9PiB7XG4gICAgICAgIGNvbnN0IGlucHV0VmFsdWUgPSBjaGFuZ2VzLnNlYXJjaD8udG9Mb3dlckNhc2UoKSB8fCAnJztcblxuICAgICAgICB0aGlzLnVzZXJHcm91cC5mb3JFYWNoKChncm91cCkgPT4gKHtcbiAgICAgICAgICAuLi5ncm91cCxcbiAgICAgICAgICBpdGVtczogZ3JvdXAuaXRlbXMubWFwKChpdGVtKSA9PiAoe1xuICAgICAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgICAgIGhpZGRlbjpcbiAgICAgICAgICAgICAgKHRoaXMudHlwZSA9PT0gVG9vbGJhckZpbHRlclN0cmluZ0VudW0uVVNFUl9GSUxURVIgfHxcbiAgICAgICAgICAgICAgICB0aGlzLnR5cGUgPT09IFRvb2xiYXJGaWx0ZXJTdHJpbmdFbnVtLk1PRFVMRV9GSUxURVIpICYmXG4gICAgICAgICAgICAgIGlucHV0VmFsdWUgJiZcbiAgICAgICAgICAgICAgIWl0ZW0ubmFtZSEudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhpbnB1dFZhbHVlKSxcbiAgICAgICAgICB9KSksXG4gICAgICAgIH0pKTtcblxuICAgICAgICB0aGlzLnNlYXJjaElucHV0VmFsdWUgPVxuICAgICAgICAgIGlucHV0VmFsdWUgfHwgVG9vbGJhckZpbHRlclN0cmluZ0VudW0uRU1QVFlfU1RSSU5HX1BMQUNFSE9MREVSO1xuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgc29ydEl0ZW1zKCk6IHZvaWQge1xuICAgIGNvbnN0IHNvcnRSZXN1bHQgPSBGaWx0ZXJIZWxwZXIuc29ydEdyb3VwSXRlbXNDb3VudChcbiAgICAgIHRoaXMudXNlckdyb3VwLFxuICAgICAgdGhpcy5zZWxlY3RlZFVzZXJHcm91cCxcbiAgICAgIHRoaXMuaXNBc2NlbmRpbmdTb3J0T3JkZXJcbiAgICApO1xuXG4gICAgdGhpcy51c2VyR3JvdXAgPSBzb3J0UmVzdWx0LnNvcnRlZEZpbHRlckFycmF5O1xuICAgIHRoaXMuc2VsZWN0ZWRVc2VyR3JvdXAgPSBzb3J0UmVzdWx0LnNvcnRlZFNlbGVjdGVkRmlsdGVyQXJyYXk7XG4gICAgdGhpcy5pc0FzY2VuZGluZ1NvcnRPcmRlciA9IHNvcnRSZXN1bHQuaXNBc2NlbmRpbmdTb3J0T3JkZXI7XG4gIH1cblxuICBwdWJsaWMgZ2V0U3ZnUGF0aChwcm9wZXJ0eU5hbWU6IGtleW9mIHR5cGVvZiBDYUZpbHRlcnNTdmdSb3V0ZXMpOiBzdHJpbmcge1xuICAgIHJldHVybiBGaWx0ZXJIZWxwZXIuZ2V0U3ZnUGF0aChwcm9wZXJ0eU5hbWUpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwidHlwZSA9PT0gJ3VzZXJGaWx0ZXInIHx8IHR5cGUgPT09ICdtb2R1bGVGaWx0ZXInXCI+XG4gIDxkaXYgY2xhc3M9XCJib3JkZXItZmlsdGVyXCI+PC9kaXY+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0eXBlID09PSAndXNlckZpbHRlcidcIj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cInNlYXJjaC1pbnB1dC1oZWFkZXJcIlxuICAgICAgW2NsYXNzLmFjdGl2ZVNlYXJjaF09XCJpc1NlYXJjaEV4cGFuZGVkXCJcbiAgICAgIFtjbGFzcy5pbmFjdGl2ZVNlYXJjaF09XCIhaXNTZWFyY2hFeHBhbmRlZFwiXG4gICAgICBbZm9ybUdyb3VwXT1cInNlYXJjaEZvcm1cIlxuICAgID5cbiAgICAgIDxhcHAtY2EtaW5wdXRcbiAgICAgICAgY2xhc3M9XCJpbnB1dC1mb3JtLWhvbGRlclwiXG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cInNlYXJjaFwiXG4gICAgICAgIFtpbnB1dENvbmZpZ109XCJ1c2VyU2VhcmNoXCJcbiAgICAgID48L2FwcC1jYS1pbnB1dD5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxkaXZcbiAgICBjbGFzcz1cImZpbHRlci11c2VyLWhvbGRlciBkLWZsZXgganVzdGlmeS1jb250ZW50LXN0YXJ0IGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uXCJcbiAgPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICpuZ0Zvcj1cIlxuICAgICAgICBsZXQgZ3JvdXAgb2YgdXNlckdyb3VwO1xuICAgICAgICBsZXQgaW5keCA9IGluZGV4O1xuICAgICAgICB0cmFja0J5OiB0cmFja0J5SWRlbnRpdHlcbiAgICAgIFwiXG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInVzZXItaXRlbXMtaG9sZGVyIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAoY2xpY2spPVwib25Hcm91cFN3aXRjaFN0YXRlKGdyb3VwKVwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja2JveC1ob2xkZXIgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICBjbGFzcz1cImNoZWNrYm94LXRvb2x0aXBcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBuZ2JUb29sdGlwXG4gICAgICAgICAgICBbbWFpbkNhVG9vbHRpcF09XCJcbiAgICAgICAgICAgICAgKGdyb3VwIHwgZ3JvdXBTZWxlY3Rpb25TdGF0ZSkuc29tZVNlbGVjdGVkXG4gICAgICAgICAgICAgICAgPyAnQ2xlYXIgc2VsZWN0ZWQnXG4gICAgICAgICAgICAgICAgOiAnQ2xlYXIgZ3JvdXAnXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgdG9vbHRpcEJhY2tncm91bmQ9XCIjQ0NDQ0NDXCJcbiAgICAgICAgICAgIHRvb2x0aXBDb2xvcj1cIiMyRjJGMkZcIlxuICAgICAgICAgICAgcG9zaXRpb249XCJib3R0b21cIlxuICAgICAgICAgICAgY3VzdG9tQ2xhc3M9XCJtdC0xXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgY2xhc3M9XCJ0YWJsZS1jaGVja2JveFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgIGlkPVwiY2hlY2tib3h7eyBpbmR4IH19XCJcbiAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiKGdyb3VwIHwgZ3JvdXBTZWxlY3Rpb25TdGF0ZSkuYWxsU2VsZWN0ZWRcIlxuICAgICAgICAgICAgICBbaW5kZXRlcm1pbmF0ZV09XCIoZ3JvdXAgfCBncm91cFNlbGVjdGlvblN0YXRlKS5zb21lU2VsZWN0ZWRcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwib25DaGVja2JveFNlbGVjdCgkZXZlbnQsIGdyb3VwKVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICAgIGNsYXNzPVwidGFibGUtY2hlY2tib3gtbGFiZWxcIlxuICAgICAgICAgICAgICBmb3I9XCJjaGVja2JveHt7IGluZHggfX1cIlxuICAgICAgICAgICAgPjwvbGFiZWw+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiaGlkZS11c2VyLWdyb3VwXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgc3ZnX3JvdGF0ZTogIWdyb3VwLmlzT3BlbixcbiAgICAgICAgICAgICAgcm90YXRlX2JhY2s6IGdyb3VwLmlzT3BlbixcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzdmctaWNvbiBbc3JjXT1cImdldFN2Z1BhdGgoJ2Fycm93RmlsdGVyJylcIj48L3N2Zy1pY29uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwidXNlci10aXRsZS10ZXh0IGNvdW50ZXItcGFkZC10aXRsZSBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGNhLWZvbnQtYm9sZFwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBncm91cC5sYWJlbC50b1VwcGVyQ2FzZSgpIH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJ1c2VyLWZpbHRlci1ib3ggZC1mbGV4IGZsZXgtY29sdW1uIGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGNhLWZvbnQtYm9sZCBtcy0xXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGdyb3VwLml0ZW1zIHwgZmlsdGVyU2VsZWN0ZWRJdGVtcyB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInVzZXItZ3JvdXAtaG9sZGVyXCJcbiAgICAgICAgW2NsYXNzLnVzZXItZ3JvdXAtcmVkdWNlZC1ob2xkZXJdPVwidHlwZSA9PT0gJ3VzZXJGaWx0ZXInXCJcbiAgICAgICAgW0BjbG9zZUZvcm1dPVwiZ3JvdXAuaXNPcGVuXCJcbiAgICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgbGV0IGl0ZW0gb2YgZ3JvdXAuaXRlbXMgfCBzZWxlY3RlZFVzZXI7XG4gICAgICAgICAgICBsZXQgaW5keDIgPSBpbmRleDtcbiAgICAgICAgICAgIHRyYWNrQnk6IHRyYWNrQnlJZGVudGl0eVxuICAgICAgICAgIFwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IFtAaW5PdXRBbmltYXRpb25dPVwiJ2luJ1wiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgIHVzZXJUZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICBjb250ZXh0OiB7IGl0ZW06IGl0ZW0sIGluZHg6IGluZHgsIGluZHgyOiBpbmR4MiB9XG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIoZ3JvdXAgfCBncm91cFNlbGVjdGlvblN0YXRlKS5zb21lU2VsZWN0ZWRcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm9yZGVyLWZpbHRlciBib3JkZXItdGhyaXJkLW1hcmdpblwiPjwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICBsZXQgaXRlbSBvZiBncm91cC5pdGVtcyB8IHNlbGVjdGVkVXNlcjogdHJ1ZTtcbiAgICAgICAgICAgIGxldCBpbmR4MiA9IGluZGV4O1xuICAgICAgICAgICAgdHJhY2tCeTogdHJhY2tCeUlkZW50aXR5XG4gICAgICAgICAgXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgW0Bpbk91dEFuaW1hdGlvbl09XCInaW4nXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgdXNlclRlbXBsYXRlO1xuICAgICAgICAgICAgICAgIGNvbnRleHQ6IHsgaXRlbTogaXRlbSwgaW5keDogaW5keCwgaW5keDI6IGluZHgyIH1cbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJ1c2VyR3JvdXA/Lmxlbmd0aCAhPT0gc2VsZWN0ZWRVc2VyR3JvdXA/Lmxlbmd0aFwiPlxuICAgIDxkaXYgY2xhc3M9XCJib3JkZXItZmlsdGVyXCI+PC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy10ZW1wbGF0ZSAjdXNlclRlbXBsYXRlIGxldC1pdGVtPVwiaXRlbVwiIGxldC1pbmR4PVwiaW5keFwiIGxldC1pbmR4Mj1cImluZHgyXCI+XG4gIDxkaXZcbiAgICBjbGFzcz1cImQtZmxleFwiXG4gICAgW25nQ2xhc3NdPVwiXG4gICAgICBpdGVtLmlzU2VsZWN0ZWRcbiAgICAgICAgPyAnc2VsZWN0ZWQtdXNlci1ob2xkZXIganVzdGlmeS1jb250ZW50LXN0YXJ0IGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uJ1xuICAgICAgICA6ICd1c2VyLWZyYW1lLWhvbGRlciBhbGlnbi1pdGVtcy1jZW50ZXInXG4gICAgXCJcbiAgPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXRlbS5oaWRkZW5cIj5cbiAgICAgIDxkaXZcbiAgICAgICAgKGNsaWNrKT1cImhhbmRsZVNlbGVjdGVkVXNlcnMoaXRlbSwgaW5keCwgaW5keDIpXCJcbiAgICAgICAgY2xhc3M9XCJ1c2VyLW1haW4taG9sZGVyIHVzZXItZnJhbWUtaG9sZGVyIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiXG4gICAgICAgIFtjbGFzcy51c2VyX3N2Z19pY29uX2hvbGRlcl09XCJ0eXBlICE9PSAndXNlckZpbHRlcidcIlxuICAgICAgPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidHlwZSA9PT0gJ3VzZXJGaWx0ZXInOyBlbHNlIHN2Z0ljb25UZW1wbGF0ZVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1c2VyLXByb2ZpbGUtaW1nIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXRlbS5hdmF0YXI7IGVsc2UgYXZhdGFyVGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgPGFwcC1jYS1wcm9maWxlLWltYWdlXG4gICAgICAgICAgICAgICAgW2luZHhdPVwiaW5keDJcIlxuICAgICAgICAgICAgICAgIFt0ZXh0U2hvcnROYW1lXT1cImdldEluaXRpYWxzKGl0ZW0ubmFtZSlcIlxuICAgICAgICAgICAgICAgIFtzaXplXT1cIidzbWFsbCdcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvYXBwLWNhLXByb2ZpbGUtaW1hZ2U+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNhdmF0YXJUZW1wbGF0ZT5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidXNlcl9hdmF0YXJcIlxuICAgICAgICAgICAgICAgIHN0eWxlLmJhY2tncm91bmQtaW1hZ2U9XCJ1cmwoJ3t7IGl0ZW0uYXZhdGFyIH19JylcIlxuICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNzdmdJY29uVGVtcGxhdGU+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInR5cGUtaWNvbiBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICA8c3ZnLWljb24gc3JjPVwie3sgaXRlbS5pY29uIH19XCI+PC9zdmctaWNvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwiaXRlbS5pc1NlbGVjdGVkID8gJ3NlbGVjdGVkLXVzZXItZnJhbWUnIDogJ3VzZXItZnJhbWUnXCJcbiAgICAgICAgICBbY2xhc3MudXNlci1mcmFtZS1uby1pY29uXT1cInR5cGUgIT09ICd1c2VyRmlsdGVyJ1wiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0ZWQtbmFtZS10ZXh0IGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxzcGFuPiB7eyBpdGVtLm5hbWUgfX0gPC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtPy5jb3VudDsgZWxzZSBub0NvdW50XCI+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICBjbGFzcz1cImNvdW50LWhvbGRlciBkLWlubGluZS1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIlxuICAgICAgICAgICAgICBbY2xhc3MuYWN0aXZlQ291bnRdPVwiaXRlbS5pc1NlbGVjdGVkXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgaXRlbS5jb3VudCB9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNub0NvdW50PlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIm5vQ291bnRUZW1wbGF0ZTsgY29udGV4dDogeyBpdGVtOiBpdGVtIH1cIlxuICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbS5pc1NlbGVjdGVkXCI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmVGcm9tU2VsZWN0ZWRVc2VyKGl0ZW0sIGluZHgsIGluZHgyKVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiaWNvbi1kZWxldGUgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmNvdW50ZXJNYXJnaW5dPVwiaXRlbS5jb3VudFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpY29uLWRlbGV0ZS1ob2xkXCI+PC9kaXY+XG4gICAgICAgICAgICAgIDxzdmctaWNvbiBbc3JjXT1cImdldFN2Z1BhdGgoJ3JlbW92ZVNlbGVjdGVkVmFsdWUnKVwiPjwvc3ZnLWljb24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuPCEtLSBpZiBubyBjb3VudCBmb3VuZCAtLT5cbjxuZy10ZW1wbGF0ZSAjbm9Db3VudFRlbXBsYXRlIGxldC1pdGVtPVwiaXRlbVwiPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWl0ZW0uY291bnQ7IGVsc2Ugbm9Db3VudGVyXCI+XG4gICAgPGRpdiBjbGFzcz1cInNlbGVjdGVkLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICA8c3ZnLWljb24gW3NyY109XCJnZXRTdmdQYXRoKCdpY29uQ29uZmlybScpXCI+PC9zdmctaWNvbj5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxuZy10ZW1wbGF0ZSAjbm9Db3VudGVyPlxuICAgIDxkaXYgY2xhc3M9XCJjb3VudGVyLWhvbGRlciBhY3RpdmVDb3VudGVyXCI+MDwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
251
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2EtdXNlci1maWx0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2EtZmlsdGVycy9jb21wb25lbnRzL2NhLXVzZXItZmlsdGVyL2NhLXVzZXItZmlsdGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NhLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2NhLWZpbHRlcnMvY29tcG9uZW50cy9jYS11c2VyLWZpbHRlci9jYS11c2VyLWZpbHRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFHTCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCxtQkFBbUIsR0FHcEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUxQyxVQUFVO0FBQ1YsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDOUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFeEQsYUFBYTtBQUNiLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFFdEUsUUFBUTtBQUNSLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxr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LFNBQVM7K0JBQ0Usb0JBQW9CLGNBQ2xCLElBQUksaUJBQ0QsaUJBQWlCLENBQUMsSUFBSSxXQUc1Qjt3QkFDUCxVQUFVO3dCQUNWLFlBQVk7d0JBQ1osbUJBQW1CO3dCQUNuQixnQkFBZ0I7d0JBQ2hCLG9CQUFvQjt3QkFDcEIsZ0JBQWdCO3dCQUNoQixhQUFhO3dCQUNiLGdCQUFnQjt3QkFDaEIsdUJBQXVCO3dCQUN2Qix1QkFBdUI7d0JBQ3ZCLFFBQVE7d0JBQ1IsdUJBQXVCO3dCQUN2Qix1QkFBdUI7d0JBQ3ZCLGlCQUFpQjtxQkFDcEIsY0FDYTt3QkFDVixjQUFjLENBQUMsZ0JBQWdCLENBQUM7d0JBQ2hDLGFBQWEsQ0FBQyxlQUFlLENBQUM7d0JBQzlCLFNBQVMsQ0FBQyxXQUFXLENBQUM7cUJBQ3ZCO3VGQUdRLElBQUk7c0JBQVosS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPbkRlc3Ryb3ksXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICBVbnR5cGVkRm9ybUJ1aWxkZXIsXG4gIFVudHlwZWRGb3JtR3JvdXAsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuXG4vLyBtb2R1bGVzXG5pbXBvcnQgeyBIdHRwQ2xpZW50TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgTmdiVG9vbHRpcE1vZHVsZSB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcbmltcG9ydCB7IEFuZ3VsYXJTdmdJY29uTW9kdWxlIH0gZnJvbSAnYW5ndWxhci1zdmctaWNvbic7XG5cbi8vIGFuaW1hdGlvbnNcbmltcG9ydCB7IGluT3V0QW5pbWF0aW9uIH0gZnJvbSAnLi4vLi4vLi4vLi4vYW5pbWF0aW9ucy9pbi1vdXQuYW5pbWF0aW9uJztcbmltcG9ydCB7IHNob3dBbmltYXRpb24gfSBmcm9tICcuLi8uLi8uLi8uLi9hbmltYXRpb25zL3Nob3cuYW5pbWF0aW9uJztcblxuLy8gZW51bXNcbmltcG9ydCB7IExvYWRTdGF0dXNFbnVtIH0gZnJvbSAnLi4vLi4vLi4vLi4vZW51bXMvbG9hZC1zdGF0dXMuZW51bSc7XG5pbXBvcnQgeyBUb29sYmFyRmlsdGVyU3RyaW5nRW51bSB9IGZyb20gJy4uLy4uLy4uL2NhLW1hcC9lbnVtcy90b29sYmFyLWZpbHRlci1zdHJpbmcuZW51bSc7XG5cbi8vIG1vZGVsc1xuaW1wb3J0IHsgZmlsdGVyT3V0cHV0IH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzL2ZpbHRlci1vdXRwdXQubW9kZWwnO1xuaW1wb3J0IHsgZmlsdGVyT3V0cHV0V2l0aFBhcmFtcyB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscy9maWx0ZXItb3V0cHV0LXBhcmFtcy5tb2RlbCc7XG5pbXBvcnQgeyBVc2VyRGF0YSB9IGZyb20gJy4vbW9kZWxzL2NhLXVzZXItZGF0YS5tb2RlbCc7XG5pbXBvcnQgeyBVc2VyR3JvdXAgfSBmcm9tICcuL21vZGVscy9jYS11c2VyLWdyb3VwLm1vZGVsJztcblxuLy8gY29tcG9uZW50c1xuaW1wb3J0IHsgQ2FJbnB1dENvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2NhLWlucHV0L2NhLWlucHV0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYVByb2ZpbGVJbWFnZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2NhLXByb2ZpbGUtaW1hZ2UvY2EtcHJvZmlsZS1pbWFnZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FBcHBUb29sdGlwVjJDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9jYS1hcHAtdG9vbHRpcC12Mi9jYS1hcHAtdG9vbHRpcC12Mi5jb21wb25lbnQnO1xuXG4vLyBwaXBlc1xuaW1wb3J0IHsgRmlsdGVyU2VsZWN0ZWRJdGVtc1BpcGUgfSBmcm9tICcuL3BpcGVzL2ZpbHRlci1zZWxlY3RlZC1pdGVtcy5waXBlJztcbmltcG9ydCB7IEdyb3VwU2VsZWN0aW9uU3RhdGVQaXBlIH0gZnJvbSAnLi9waXBlcy9ncm91cC1zZWxlY3Rpb24tc3RhdGUucGlwZSc7XG5pbXBvcnQgeyBTZWxlY3RlZFVzZXJzUGlwZSB9IGZyb20gJy4vcGlwZXMvc2VsZWN0ZWQtdXNlcnMucGlwZSc7XG5cbi8vIGFuaW1hdGlvbnNcbmltcG9ydCB7IGNsb3NlRm9ybSB9IGZyb20gJy4uLy4uLy4uLy4uL2FuaW1hdGlvbnMvY2xvc2UtZm9ybS5hbmltYXRpb24nO1xuXG4vLyB1dGlsc1xuaW1wb3J0IHsgQ2FGaWx0ZXJzU3ZnUm91dGVzIH0gZnJvbSAnLi4vLi4vdXRpbHMvc3ZnLXJvdXRlcy9jYS1maWx0ZXJzLXN2Zy1yb3V0ZXMnO1xuXG4vLyBoZWxwZXJzXG5pbXBvcnQgeyBGaWx0ZXJIZWxwZXIgfSBmcm9tICcuLi8uLi91dGlscy9oZWxwZXJzL2ZpbHRlci5oZWxwZXInO1xuXG4vLyBjb25maWdzXG5pbXBvcnQgeyBJQ2FJbnB1dCB9IGZyb20gJy4uLy4uLy4uL2NhLWlucHV0L2NvbmZpZy9jYS1pbnB1dC5jb25maWcnO1xuaW1wb3J0IHsgQ2FVc2VyRmlsdGVyQ29uZmlnIH0gZnJvbSAnLi9jb25maWcvY2EtdXNlci1maWx0ZXIuY29uZmlnJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWNhLXVzZXItZmlsdGVyJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgdGVtcGxhdGVVcmw6ICcuL2NhLXVzZXItZmlsdGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2EtdXNlci1maWx0ZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgaW1wb3J0czogW1xuICAgIC8vIG1vZHVsZXNcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBIdHRwQ2xpZW50TW9kdWxlLFxuICAgIEFuZ3VsYXJTdmdJY29uTW9kdWxlLFxuICAgIE5nYlRvb2x0aXBNb2R1bGUsXG4gICAgLy8gY29tcG9uZW50c1xuICAgIENhSW5wdXRDb21wb25lbnQsXG4gICAgQ2FQcm9maWxlSW1hZ2VDb21wb25lbnQsXG4gICAgQ2FBcHBUb29sdGlwVjJDb21wb25lbnQsXG4gICAgLy8gcGlwZXNcbiAgICBGaWx0ZXJTZWxlY3RlZEl0ZW1zUGlwZSxcbiAgICBHcm91cFNlbGVjdGlvblN0YXRlUGlwZSxcbiAgICBTZWxlY3RlZFVzZXJzUGlwZVxuXSxcbiAgYW5pbWF0aW9uczogW1xuICAgIGluT3V0QW5pbWF0aW9uKCdpbk91dEFuaW1hdGlvbicpLFxuICAgIHNob3dBbmltYXRpb24oJ3Nob3dBbmltYXRpb24nKSxcbiAgICBjbG9zZUZvcm0oJ2Nsb3NlRm9ybScpLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBDYVVzZXJGaWx0ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIHR5cGUhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGlzRmlsdGVyQWN0aXZlOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGZpbHRlclRpdGxlITogc3RyaW5nO1xuICBASW5wdXQoKSBoYXNMZWZ0U2lkZUljb246IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgdG9Eb1N1YlR5cGUhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHVzZXJHcm91cCE6IFVzZXJHcm91cFtdO1xuICBASW5wdXQoKSBpc1NlYXJjaEV4cGFuZGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgcHVibGljIGxvYWRTdGF0dXNFbnVtID0gTG9hZFN0YXR1c0VudW07XG4gIHB1YmxpYyBzZWFyY2hGb3JtITogVW50eXBlZEZvcm1Hcm91cDtcbiAgcHVibGljIHNlYXJjaElucHV0VmFsdWUhOiBzdHJpbmc7XG5cbiAgcHVibGljIHVuc2VsZWN0ZWRWaXNpYmxlQ291bnQ6IG51bWJlciA9IDA7XG4gIHB1YmxpYyBjYUZpbHRlcnNTdmdSb3V0ZXM6IENhRmlsdGVyc1N2Z1JvdXRlcyA9IENhRmlsdGVyc1N2Z1JvdXRlcztcblxuICBwdWJsaWMgc2VsZWN0ZWRVc2VyR3JvdXA6IFVzZXJHcm91cFtdID0gW107XG4gIHB1YmxpYyBmaWx0ZXJBY3RpdmVBcnJheTogVXNlckdyb3VwW10gPSBbXTtcbiAgcHVibGljIGlzQXNjZW5kaW5nU29ydE9yZGVyOiBib29sZWFuID0gdHJ1ZTtcbiAgcHVibGljIGlzQnV0dG9uQXZhaWxhYmxlOiBib29sZWFuID0gZmFsc2U7XG4gIHB1YmxpYyBoYXNTZWxlY3RlZFVzZXJzOiBib29sZWFuID0gZmFsc2U7XG4gIHB1YmxpYyB0b3RhbEZpbHRlcnNOdW06IG51bWJlciA9IDA7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBmb3JtQnVpbGRlcjogVW50eXBlZEZvcm1CdWlsZGVyKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuY3JlYXRlRm9ybSgpO1xuXG4gICAgdGhpcy53YXRjaFNlYXJjaEZvcm1WYWx1ZUNoYW5nZXMoKTtcbiAgfVxuXG4gIGdldCB1c2VyU2VhcmNoKCk6IElDYUlucHV0IHtcbiAgICBzd2l0Y2ggKHRoaXMudHlwZSkge1xuICAgICAgY2FzZSBUb29sYmFyRmlsdGVyU3RyaW5nRW51bS5VU0VSX0ZJTFRFUjpcbiAgICAgIGNhc2UgVG9vbGJhckZpbHRlclN0cmluZ0VudW0uTU9EVUxFX0ZJTFRFUjpcbiAgICAgICAgcmV0dXJuIENhVXNlckZpbHRlckNvbmZpZy5nZXRVc2VyU2VhcmNoKCk7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignVW5rbm93biBmaWx0ZXIgdHlwZScpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRJbml0aWFscyhuYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQpOiBzdHJpbmcge1xuICAgIHJldHVybiBGaWx0ZXJIZWxwZXIuZ2V0SW5pdGlhbHMobmFtZSk7XG4gIH1cblxuICBwdWJsaWMgb25Hcm91cFN3aXRjaFN0YXRlKGdyb3VwOiBVc2VyR3JvdXApOiB2b2lkIHtcbiAgICBncm91cC5pc09wZW4gPSAhZ3JvdXAuaXNPcGVuO1xuICB9XG5cbiAgcHVibGljIG9uQ2hlY2tib3hTZWxlY3QoZXZlbnQ6IEV2ZW50LCBncm91cDogVXNlckdyb3VwKTogdm9pZCB7XG4gICAgaWYgKGV2ZW50KSBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgIGNvbnN0IHRvdGFsSXRlbXMgPSBncm91cC5pdGVtcy5sZW5ndGg7XG4gICAgY29uc3Qgc2VsZWN0ZWRJdGVtcyA9IGdyb3VwLml0ZW1zLmZpbHRlcigoaXRlbSkgPT4gaXRlbS5pc1NlbGVjdGVkKS5sZW5ndGg7XG5cbiAgICBncm91cC5pdGVtcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICBpZiAoc2VsZWN0ZWRJdGVtcyA9PT0gdG90YWxJdGVtcykgaXRlbS5pc1NlbGVjdGVkID0gZmFsc2U7XG4gICAgICBlbHNlIGl0ZW0uaXNTZWxlY3RlZCA9IHRydWU7XG4gICAgfSk7XG5cbiAgICB0aGlzLmhhc1NlbGVjdGVkVXNlcnMgPSBzZWxlY3RlZEl0ZW1zICE9PSB0b3RhbEl0ZW1zO1xuICB9XG5cbiAgcHVibGljIG9uRmlsdGVyQ2xvc2UoKTogdm9pZCB7XG4gICAgRmlsdGVySGVscGVyLmhhbmRsZUdyb3VwRmlsdGVyQ2xvc2UoXG4gICAgICB0aGlzLnVzZXJHcm91cCxcbiAgICAgIHRoaXMuc2VsZWN0ZWRVc2VyR3JvdXAsXG4gICAgICB0aGlzLnJlbW92ZUZyb21TZWxlY3RlZFVzZXIuYmluZCh0aGlzKSxcbiAgICAgIHRoaXMuYWRkVG9TZWxlY3RlZFVzZXIuYmluZCh0aGlzKVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgc2V0RmlsdGVyVmFsdWUoXG4gICAgZXZlbnQ6IEV2ZW50XG4gICk6IGZpbHRlck91dHB1dCB8IGZpbHRlck91dHB1dFdpdGhQYXJhbXMgfCB1bmRlZmluZWQge1xuICAgIHRoaXMuZmlsdGVyQWN0aXZlQXJyYXkgPSBbLi4udGhpcy51c2VyR3JvdXBdO1xuICAgIGNvbnN0IHNlbGVjdGVkVXNlcnNJZEFycmF5OiBudW1iZXJbXSA9IFtdO1xuICAgIHRoaXMudG90YWxGaWx0ZXJzTnVtID0gdGhpcy5maWx0ZXJBY3RpdmVBcnJheS5sZW5ndGg7XG5cbiAgICBjb25zdCBtYWluQXJyYXkgPSB0aGlzLnVzZXJHcm91cDtcbiAgICBsZXQgcXVlcnlQYXJhbXMgPSB7fTtcbiAgICBsZXQgc3ViVHlwZTogc3RyaW5nID0gVG9vbGJhckZpbHRlclN0cmluZ0VudW0uRU1QVFlfU1RSSU5HX1BMQUNFSE9MREVSO1xuXG4gICAgbWFpbkFycmF5LmZvckVhY2goKGRhdGE6IFVzZXJHcm91cCkgPT4ge1xuICAgICAgZGF0YS5pdGVtcy5mb3JFYWNoKChpdGVtOiBVc2VyRGF0YSkgPT4ge1xuICAgICAgICBpZiAoaXRlbS5pc1NlbGVjdGVkKSBzZWxlY3RlZFVzZXJzSWRBcnJheS5wdXNoKGl0ZW0uaWQhKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaWYgKCFzZWxlY3RlZFVzZXJzSWRBcnJheS5sZW5ndGgpIHtcbiAgICAgIHRoaXMuY2xlYXJBbGwoZXZlbnQpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHF1ZXJ5UGFyYW1zID0gc2VsZWN0ZWRVc2Vyc0lkQXJyYXk7XG4gICAgc3ViVHlwZSA9XG4gICAgICB0aGlzLnRvRG9TdWJUeXBlID8/IFRvb2xiYXJGaWx0ZXJTdHJpbmdFbnVtLkVNUFRZX1NUUklOR19QTEFDRUhPTERFUjtcblxuICAgIGNvbnN0IGFjdGlvbiA9ICdTZXQnO1xuICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICBmaWx0ZXJUeXBlOiB0aGlzLnR5cGUsXG4gICAgICBhY3Rpb24sXG4gICAgICBxdWVyeVBhcmFtcyxcbiAgICAgIHN1YlR5cGUsXG4gICAgfTtcblxuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgcHVibGljIGNsZWFyQWxsKGV2ZW50PzogRXZlbnQpOiBmaWx0ZXJPdXRwdXQgfCBmaWx0ZXJPdXRwdXRXaXRoUGFyYW1zIHtcbiAgICBpZiAoZXZlbnQpIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgdGhpcy5zZWxlY3RlZFVzZXJHcm91cCA9IFtdO1xuICAgIHRoaXMuZmlsdGVyQWN0aXZlQXJyYXkgPSBbXTtcbiAgICB0aGlzLnRvdGFsRmlsdGVyc051bSA9IDA7XG4gICAgdGhpcy5oYXNTZWxlY3RlZFVzZXJzID0gZmFsc2U7XG5cbiAgICB0aGlzLnVzZXJHcm91cC5mb3JFYWNoKChncm91cCkgPT4ge1xuICAgICAgZ3JvdXAuaXRlbXMuZm9yRWFjaCgoaXRlbTogVXNlckRhdGEpID0+IHtcbiAgICAgICAgaXRlbS5pc1NlbGVjdGVkID0gZmFsc2U7XG4gICAgICAgIGl0ZW0uY3VycmVudFNldCA9IGZhbHNlO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBjb25zdCBhY3Rpb24gPSAnQ2xlYXInO1xuICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICBhY3Rpb24sXG4gICAgICB0eXBlOiB0aGlzLnR5cGUsXG4gICAgICBmaWx0ZXJUeXBlOiB0aGlzLnR5cGUsXG4gICAgfTtcbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIHB1YmxpYyB0cmFja0J5SWRlbnRpdHkoaW5kZXg6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIGluZGV4O1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVGb3JtKCk6IHZvaWQge1xuICAgIHRoaXMuc2VhcmNoRm9ybSA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgc2VhcmNoOiBudWxsLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGhhbmRsZVNlbGVjdGVkVXNlcnMoaXRlbTogVXNlckRhdGEsIGluZHg6IG51bWJlciwgaW5keDI6IG51bWJlcikge1xuICAgIGlmIChpdGVtLmlzU2VsZWN0ZWQpIHRoaXMucmVtb3ZlRnJvbVNlbGVjdGVkVXNlcihpdGVtLCBpbmR4LCBpbmR4Mik7XG4gICAgZWxzZSB0aGlzLmFkZFRvU2VsZWN0ZWRVc2VyKGl0ZW0sIGluZHgsIGluZHgyKTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRUb1NlbGVjdGVkVXNlcihpdGVtOiBVc2VyRGF0YSwgaW5keDogbnVtYmVyLCBpbmR4MjogbnVtYmVyKSB7XG4gICAgY29uc3QgeyBoYXNTZWxlY3RlZFVzZXJzLCB1bnNlbGVjdGVkVmlzaWJsZUNvdW50LCBncm91cEFycmF5IH0gPVxuICAgICAgRmlsdGVySGVscGVyLmFkZE9yUmVtb3ZlRnJvbUdyb3VwKFxuICAgICAgICAnYWRkJyxcbiAgICAgICAgdGhpcy51c2VyR3JvdXAsXG4gICAgICAgIGl0ZW0sXG4gICAgICAgIGluZHgsXG4gICAgICAgIGluZHgyXG4gICAgICApO1xuXG4gICAgdGhpcy5oYXNTZWxlY3RlZFVzZXJzID0gaGFzU2VsZWN0ZWRVc2VycztcbiAgICB0aGlzLnVuc2VsZWN0ZWRWaXNpYmxlQ291bnQgPSB1bnNlbGVjdGVkVmlzaWJsZUNvdW50O1xuICAgIHRoaXMudXNlckdyb3VwID0gWy4uLmdyb3VwQXJyYXldO1xuXG4gICAgdGhpcy5jaGVja0ZpbHRlckFjdGl2ZVZhbHVlKCk7XG4gIH1cblxuICBwdWJsaWMgcmVtb3ZlRnJvbVNlbGVjdGVkVXNlcihcbiAgICBpdGVtOiBVc2VyRGF0YSxcbiAgICBpbmR4OiBudW1iZXIsXG4gICAgaW5keDI6IG51bWJlclxuICApOiB2b2lkIHtcbiAgICBjb25zdCB7IGhhc1NlbGVjdGVkVXNlcnMsIHVuc2VsZWN0ZWRWaXNpYmxlQ291bnQsIGdyb3VwQXJyYXkgfSA9XG4gICAgICBGaWx0ZXJIZWxwZXIuYWRkT3JSZW1vdmVGcm9tR3JvdXAoXG4gICAgICAgICdyZW1vdmUnLFxuICAgICAgICB0aGlzLnVzZXJHcm91cCxcbiAgICAgICAgaXRlbSxcbiAgICAgICAgaW5keCxcbiAgICAgICAgaW5keDJcbiAgICAgICk7XG5cbiAgICB0aGlzLmhhc1NlbGVjdGVkVXNlcnMgPSBoYXNTZWxlY3RlZFVzZXJzO1xuICAgIHRoaXMudW5zZWxlY3RlZFZpc2libGVDb3VudCA9IHVuc2VsZWN0ZWRWaXNpYmxlQ291bnQ7XG4gICAgdGhpcy51c2VyR3JvdXAgPSBncm91cEFycmF5O1xuXG4gICAgdGhpcy5jaGVja0ZpbHRlckFjdGl2ZVZhbHVlKCk7XG4gIH1cblxuICBwdWJsaWMgY2hlY2tGaWx0ZXJBY3RpdmVWYWx1ZSgpOiB2b2lkIHtcbiAgICBjb25zdCBmaWx0ZXJDaGVjayA9IEZpbHRlckhlbHBlci5jaGVja0dyb3VwRmlsdGVyQWN0aXZlVmFsdWUoXG4gICAgICB0aGlzLmZpbHRlckFjdGl2ZUFycmF5LFxuICAgICAgdGhpcy5pc0J1dHRvbkF2YWlsYWJsZVxuICAgICk7XG5cbiAgICB0aGlzLmlzQnV0dG9uQXZhaWxhYmxlID0gZmlsdGVyQ2hlY2suaXNCdXR0b25BdmFpbGFibGU7XG4gIH1cblxuICBwcml2YXRlIHdhdGNoU2VhcmNoRm9ybVZhbHVlQ2hhbmdlcygpOiB2b2lkIHtcbiAgICB0aGlzLnNlYXJjaEZvcm0udmFsdWVDaGFuZ2VzXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAuc3Vic2NyaWJlKChjaGFuZ2VzKSA9PiB7XG4gICAgICAgIGNvbnN0IGlucHV0VmFsdWUgPSBjaGFuZ2VzLnNlYXJjaD8udG9Mb3dlckNhc2UoKSB8fCAnJztcblxuICAgICAgICB0aGlzLnVzZXJHcm91cC5mb3JFYWNoKChncm91cCkgPT4gKHtcbiAgICAgICAgICAuLi5ncm91cCxcbiAgICAgICAgICBpdGVtczogZ3JvdXAuaXRlbXMubWFwKChpdGVtKSA9PiAoe1xuICAgICAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgICAgIGhpZGRlbjpcbiAgICAgICAgICAgICAgKHRoaXMudHlwZSA9PT0gVG9vbGJhckZpbHRlclN0cmluZ0VudW0uVVNFUl9GSUxURVIgfHxcbiAgICAgICAgICAgICAgICB0aGlzLnR5cGUgPT09IFRvb2xiYXJGaWx0ZXJTdHJpbmdFbnVtLk1PRFVMRV9GSUxURVIpICYmXG4gICAgICAgICAgICAgIGlucHV0VmFsdWUgJiZcbiAgICAgICAgICAgICAgIWl0ZW0ubmFtZSEudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhpbnB1dFZhbHVlKSxcbiAgICAgICAgICB9KSksXG4gICAgICAgIH0pKTtcblxuICAgICAgICB0aGlzLnNlYXJjaElucHV0VmFsdWUgPVxuICAgICAgICAgIGlucHV0VmFsdWUgfHwgVG9vbGJhckZpbHRlclN0cmluZ0VudW0uRU1QVFlfU1RSSU5HX1BMQUNFSE9MREVSO1xuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgc29ydEl0ZW1zKCk6IHZvaWQge1xuICAgIGNvbnN0IHNvcnRSZXN1bHQgPSBGaWx0ZXJIZWxwZXIuc29ydEdyb3VwSXRlbXNDb3VudChcbiAgICAgIHRoaXMudXNlckdyb3VwLFxuICAgICAgdGhpcy5zZWxlY3RlZFVzZXJHcm91cCxcbiAgICAgIHRoaXMuaXNBc2NlbmRpbmdTb3J0T3JkZXJcbiAgICApO1xuXG4gICAgdGhpcy51c2VyR3JvdXAgPSBzb3J0UmVzdWx0LnNvcnRlZEZpbHRlckFycmF5O1xuICAgIHRoaXMuc2VsZWN0ZWRVc2VyR3JvdXAgPSBzb3J0UmVzdWx0LnNvcnRlZFNlbGVjdGVkRmlsdGVyQXJyYXk7XG4gICAgdGhpcy5pc0FzY2VuZGluZ1NvcnRPcmRlciA9IHNvcnRSZXN1bHQuaXNBc2NlbmRpbmdTb3J0T3JkZXI7XG4gIH1cblxuICBwdWJsaWMgZ2V0U3ZnUGF0aChwcm9wZXJ0eU5hbWU6IGtleW9mIHR5cGVvZiBDYUZpbHRlcnNTdmdSb3V0ZXMpOiBzdHJpbmcge1xuICAgIHJldHVybiBGaWx0ZXJIZWxwZXIuZ2V0U3ZnUGF0aChwcm9wZXJ0eU5hbWUpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwidHlwZSA9PT0gJ3VzZXJGaWx0ZXInIHx8IHR5cGUgPT09ICdtb2R1bGVGaWx0ZXInXCI+XG4gIDxkaXYgY2xhc3M9XCJib3JkZXItZmlsdGVyXCI+PC9kaXY+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0eXBlID09PSAndXNlckZpbHRlcidcIj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cInNlYXJjaC1pbnB1dC1oZWFkZXJcIlxuICAgICAgW2NsYXNzLmFjdGl2ZVNlYXJjaF09XCJpc1NlYXJjaEV4cGFuZGVkXCJcbiAgICAgIFtjbGFzcy5pbmFjdGl2ZVNlYXJjaF09XCIhaXNTZWFyY2hFeHBhbmRlZFwiXG4gICAgICBbZm9ybUdyb3VwXT1cInNlYXJjaEZvcm1cIlxuICAgID5cbiAgICAgIDxhcHAtY2EtaW5wdXRcbiAgICAgICAgY2xhc3M9XCJpbnB1dC1mb3JtLWhvbGRlclwiXG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cInNlYXJjaFwiXG4gICAgICAgIFtpbnB1dENvbmZpZ109XCJ1c2VyU2VhcmNoXCJcbiAgICAgID48L2FwcC1jYS1pbnB1dD5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxkaXZcbiAgICBjbGFzcz1cImZpbHRlci11c2VyLWhvbGRlciBkLWZsZXgganVzdGlmeS1jb250ZW50LXN0YXJ0IGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uXCJcbiAgPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICpuZ0Zvcj1cIlxuICAgICAgICBsZXQgZ3JvdXAgb2YgdXNlckdyb3VwO1xuICAgICAgICBsZXQgaW5keCA9IGluZGV4O1xuICAgICAgICB0cmFja0J5OiB0cmFja0J5SWRlbnRpdHlcbiAgICAgIFwiXG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInVzZXItaXRlbXMtaG9sZGVyIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAoY2xpY2spPVwib25Hcm91cFN3aXRjaFN0YXRlKGdyb3VwKVwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja2JveC1ob2xkZXIgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICBjbGFzcz1cImNoZWNrYm94LXRvb2x0aXBcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBuZ2JUb29sdGlwXG4gICAgICAgICAgICBbbWFpbkNhVG9vbHRpcF09XCJcbiAgICAgICAgICAgICAgKGdyb3VwIHwgZ3JvdXBTZWxlY3Rpb25TdGF0ZSkuc29tZVNlbGVjdGVkXG4gICAgICAgICAgICAgICAgPyAnQ2xlYXIgc2VsZWN0ZWQnXG4gICAgICAgICAgICAgICAgOiAnQ2xlYXIgZ3JvdXAnXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgdG9vbHRpcEJhY2tncm91bmQ9XCIjQ0NDQ0NDXCJcbiAgICAgICAgICAgIHRvb2x0aXBDb2xvcj1cIiMyRjJGMkZcIlxuICAgICAgICAgICAgcG9zaXRpb249XCJib3R0b21cIlxuICAgICAgICAgICAgY3VzdG9tQ2xhc3M9XCJtdC0xXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgY2xhc3M9XCJ0YWJsZS1jaGVja2JveFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgIGlkPVwiY2hlY2tib3h7eyBpbmR4IH19XCJcbiAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiKGdyb3VwIHwgZ3JvdXBTZWxlY3Rpb25TdGF0ZSkuYWxsU2VsZWN0ZWRcIlxuICAgICAgICAgICAgICBbaW5kZXRlcm1pbmF0ZV09XCIoZ3JvdXAgfCBncm91cFNlbGVjdGlvblN0YXRlKS5zb21lU2VsZWN0ZWRcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwib25DaGVja2JveFNlbGVjdCgkZXZlbnQsIGdyb3VwKVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICAgIGNsYXNzPVwidGFibGUtY2hlY2tib3gtbGFiZWxcIlxuICAgICAgICAgICAgICBmb3I9XCJjaGVja2JveHt7IGluZHggfX1cIlxuICAgICAgICAgICAgPjwvbGFiZWw+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiaGlkZS11c2VyLWdyb3VwXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgc3ZnX3JvdGF0ZTogIWdyb3VwLmlzT3BlbixcbiAgICAgICAgICAgICAgcm90YXRlX2JhY2s6IGdyb3VwLmlzT3BlbixcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzdmctaWNvbiBbc3JjXT1cImdldFN2Z1BhdGgoJ2Fycm93RmlsdGVyJylcIj48L3N2Zy1pY29uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwidXNlci10aXRsZS10ZXh0IGNvdW50ZXItcGFkZC10aXRsZSBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGNhLWZvbnQtYm9sZFwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBncm91cC5sYWJlbC50b1VwcGVyQ2FzZSgpIH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJ1c2VyLWZpbHRlci1ib3ggZC1mbGV4IGZsZXgtY29sdW1uIGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGNhLWZvbnQtYm9sZCBtcy0xXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGdyb3VwLml0ZW1zIHwgZmlsdGVyU2VsZWN0ZWRJdGVtcyB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInVzZXItZ3JvdXAtaG9sZGVyXCJcbiAgICAgICAgW2NsYXNzLnVzZXItZ3JvdXAtcmVkdWNlZC1ob2xkZXJdPVwidHlwZSA9PT0gJ3VzZXJGaWx0ZXInXCJcbiAgICAgICAgW0BjbG9zZUZvcm1dPVwiZ3JvdXAuaXNPcGVuXCJcbiAgICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgbGV0IGl0ZW0gb2YgZ3JvdXAuaXRlbXMgfCBzZWxlY3RlZFVzZXI7XG4gICAgICAgICAgICBsZXQgaW5keDIgPSBpbmRleDtcbiAgICAgICAgICAgIHRyYWNrQnk6IHRyYWNrQnlJZGVudGl0eVxuICAgICAgICAgIFwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IFtAaW5PdXRBbmltYXRpb25dPVwiJ2luJ1wiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgIHVzZXJUZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICBjb250ZXh0OiB7IGl0ZW06IGl0ZW0sIGluZHg6IGluZHgsIGluZHgyOiBpbmR4MiB9XG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIoZ3JvdXAgfCBncm91cFNlbGVjdGlvblN0YXRlKS5zb21lU2VsZWN0ZWRcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm9yZGVyLWZpbHRlciBib3JkZXItdGhyaXJkLW1hcmdpblwiPjwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICBsZXQgaXRlbSBvZiBncm91cC5pdGVtcyB8IHNlbGVjdGVkVXNlcjogdHJ1ZTtcbiAgICAgICAgICAgIGxldCBpbmR4MiA9IGluZGV4O1xuICAgICAgICAgICAgdHJhY2tCeTogdHJhY2tCeUlkZW50aXR5XG4gICAgICAgICAgXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgW0Bpbk91dEFuaW1hdGlvbl09XCInaW4nXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgdXNlclRlbXBsYXRlO1xuICAgICAgICAgICAgICAgIGNvbnRleHQ6IHsgaXRlbTogaXRlbSwgaW5keDogaW5keCwgaW5keDI6IGluZHgyIH1cbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJ1c2VyR3JvdXA/Lmxlbmd0aCAhPT0gc2VsZWN0ZWRVc2VyR3JvdXA/Lmxlbmd0aFwiPlxuICAgIDxkaXYgY2xhc3M9XCJib3JkZXItZmlsdGVyXCI+PC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy10ZW1wbGF0ZSAjdXNlclRlbXBsYXRlIGxldC1pdGVtPVwiaXRlbVwiIGxldC1pbmR4PVwiaW5keFwiIGxldC1pbmR4Mj1cImluZHgyXCI+XG4gIDxkaXZcbiAgICBjbGFzcz1cImQtZmxleFwiXG4gICAgW25nQ2xhc3NdPVwiXG4gICAgICBpdGVtLmlzU2VsZWN0ZWRcbiAgICAgICAgPyAnc2VsZWN0ZWQtdXNlci1ob2xkZXIganVzdGlmeS1jb250ZW50LXN0YXJ0IGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uJ1xuICAgICAgICA6ICd1c2VyLWZyYW1lLWhvbGRlciBhbGlnbi1pdGVtcy1jZW50ZXInXG4gICAgXCJcbiAgPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXRlbS5oaWRkZW5cIj5cbiAgICAgIDxkaXZcbiAgICAgICAgKGNsaWNrKT1cImhhbmRsZVNlbGVjdGVkVXNlcnMoaXRlbSwgaW5keCwgaW5keDIpXCJcbiAgICAgICAgY2xhc3M9XCJ1c2VyLW1haW4taG9sZGVyIHVzZXItZnJhbWUtaG9sZGVyIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiXG4gICAgICAgIFtjbGFzcy51c2VyX3N2Z19pY29uX2hvbGRlcl09XCJ0eXBlICE9PSAndXNlckZpbHRlcidcIlxuICAgICAgPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidHlwZSA9PT0gJ3VzZXJGaWx0ZXInOyBlbHNlIHN2Z0ljb25UZW1wbGF0ZVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1c2VyLXByb2ZpbGUtaW1nIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXRlbS5hdmF0YXI7IGVsc2UgYXZhdGFyVGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgPGFwcC1jYS1wcm9maWxlLWltYWdlXG4gICAgICAgICAgICAgICAgW2luZHhdPVwiaW5keDJcIlxuICAgICAgICAgICAgICAgIFt0ZXh0U2hvcnROYW1lXT1cImdldEluaXRpYWxzKGl0ZW0ubmFtZSlcIlxuICAgICAgICAgICAgICAgIFtzaXplXT1cIidzbWFsbCdcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvYXBwLWNhLXByb2ZpbGUtaW1hZ2U+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNhdmF0YXJUZW1wbGF0ZT5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidXNlcl9hdmF0YXJcIlxuICAgICAgICAgICAgICAgIHN0eWxlLmJhY2tncm91bmQtaW1hZ2U9XCJ1cmwoJ3t7IGl0ZW0uYXZhdGFyIH19JylcIlxuICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNzdmdJY29uVGVtcGxhdGU+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInR5cGUtaWNvbiBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICA8c3ZnLWljb24gc3JjPVwie3sgaXRlbS5pY29uIH19XCI+PC9zdmctaWNvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwiaXRlbS5pc1NlbGVjdGVkID8gJ3NlbGVjdGVkLXVzZXItZnJhbWUnIDogJ3VzZXItZnJhbWUnXCJcbiAgICAgICAgICBbY2xhc3MudXNlci1mcmFtZS1uby1pY29uXT1cInR5cGUgIT09ICd1c2VyRmlsdGVyJ1wiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0ZWQtbmFtZS10ZXh0IGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxzcGFuPiB7eyBpdGVtLm5hbWUgfX0gPC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtPy5jb3VudDsgZWxzZSBub0NvdW50XCI+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICBjbGFzcz1cImNvdW50LWhvbGRlciBkLWlubGluZS1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIlxuICAgICAgICAgICAgICBbY2xhc3MuYWN0aXZlQ291bnRdPVwiaXRlbS5pc1NlbGVjdGVkXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgaXRlbS5jb3VudCB9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNub0NvdW50PlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIm5vQ291bnRUZW1wbGF0ZTsgY29udGV4dDogeyBpdGVtOiBpdGVtIH1cIlxuICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbS5pc1NlbGVjdGVkXCI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmVGcm9tU2VsZWN0ZWRVc2VyKGl0ZW0sIGluZHgsIGluZHgyKVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiaWNvbi1kZWxldGUgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmNvdW50ZXJNYXJnaW5dPVwiaXRlbS5jb3VudFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpY29uLWRlbGV0ZS1ob2xkXCI+PC9kaXY+XG4gICAgICAgICAgICAgIDxzdmctaWNvbiBbc3JjXT1cImdldFN2Z1BhdGgoJ3JlbW92ZVNlbGVjdGVkVmFsdWUnKVwiPjwvc3ZnLWljb24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuPCEtLSBpZiBubyBjb3VudCBmb3VuZCAtLT5cbjxuZy10ZW1wbGF0ZSAjbm9Db3VudFRlbXBsYXRlIGxldC1pdGVtPVwiaXRlbVwiPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWl0ZW0uY291bnQ7IGVsc2Ugbm9Db3VudGVyXCI+XG4gICAgPGRpdiBjbGFzcz1cInNlbGVjdGVkLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICA8c3ZnLWljb24gW3NyY109XCJnZXRTdmdQYXRoKCdpY29uQ29uZmlybScpXCI+PC9zdmctaWNvbj5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxuZy10ZW1wbGF0ZSAjbm9Db3VudGVyPlxuICAgIDxkaXYgY2xhc3M9XCJjb3VudGVyLWhvbGRlciBhY3RpdmVDb3VudGVyXCI+MDwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
import { InputCommandsAction } from '../enums';
|
|
2
|
+
import { MethodsCalculationsHelper } from '../../../utils/helpers/methods-calculations.helper';
|
|
3
|
+
export class CaInputBaseHelpersComponent {
|
|
4
|
+
constructor() {
|
|
5
|
+
// Number of points
|
|
6
|
+
this.numberOfConsecutivelyPoints = 0;
|
|
7
|
+
this.numberOfPoints = 0;
|
|
8
|
+
this.oneSpaceOnlyCounter = 0;
|
|
9
|
+
// #endregion
|
|
10
|
+
}
|
|
11
|
+
// #region DisableConsecutivelySpaces
|
|
12
|
+
disableConsecutivelySpaces(event) {
|
|
13
|
+
const inputElement = this.input.nativeElement;
|
|
14
|
+
// Get cursor position
|
|
15
|
+
const cursorPosition = inputElement.selectionStart;
|
|
16
|
+
// If the cursor is in the middle of a word, allow spaces
|
|
17
|
+
if (cursorPosition > 0 &&
|
|
18
|
+
!/\s/.test(inputElement.value[cursorPosition - 1]) &&
|
|
19
|
+
!/\s/.test(inputElement.value[cursorPosition])) {
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
// If the user is typing a space and the previous character is a space, prevent the default behavior
|
|
23
|
+
if (event.key === ' ' &&
|
|
24
|
+
/\s/.test(inputElement.value[cursorPosition - 1])) {
|
|
25
|
+
event.preventDefault();
|
|
26
|
+
}
|
|
27
|
+
// Save the cursor position for the next input event
|
|
28
|
+
this.lastCursorSpacePosition = cursorPosition;
|
|
29
|
+
}
|
|
30
|
+
// #endregion
|
|
31
|
+
// #region DisableConsecutivelyPoints
|
|
32
|
+
disableConsecutivelyPoints(event) {
|
|
33
|
+
if (/^[.]*$/.test(String.fromCharCode(event.charCode))) {
|
|
34
|
+
this.numberOfConsecutivelyPoints++;
|
|
35
|
+
if (this.numberOfConsecutivelyPoints > 1) {
|
|
36
|
+
event.preventDefault();
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
this.numberOfConsecutivelyPoints = 0;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
// #endregion
|
|
45
|
+
// #region DisableMultiplePoints
|
|
46
|
+
disableMultiplePoints(event) {
|
|
47
|
+
if (/^[.]*$/.test(String.fromCharCode(event.charCode))) {
|
|
48
|
+
if (!this.superControl.control?.value) {
|
|
49
|
+
event.preventDefault();
|
|
50
|
+
return false;
|
|
51
|
+
}
|
|
52
|
+
if (this.superControl.control?.value?.toString().includes('.')) {
|
|
53
|
+
event.preventDefault();
|
|
54
|
+
return false;
|
|
55
|
+
}
|
|
56
|
+
this.numberOfPoints++;
|
|
57
|
+
if (this.numberOfPoints > 1) {
|
|
58
|
+
event.preventDefault();
|
|
59
|
+
return false;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
this.numberOfPoints = 0;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
// endregion
|
|
67
|
+
// #region EnableOneSpaceOnly
|
|
68
|
+
enableOneSpaceOnly(event) {
|
|
69
|
+
if (/^\s*$/.test(String.fromCharCode(event.charCode)) ||
|
|
70
|
+
this.superControl.control?.value?.includes(' ')) {
|
|
71
|
+
this.oneSpaceOnlyCounter++;
|
|
72
|
+
}
|
|
73
|
+
if (this.oneSpaceOnlyCounter > 1 &&
|
|
74
|
+
/^\s*$/.test(String.fromCharCode(event.charCode))) {
|
|
75
|
+
event.preventDefault();
|
|
76
|
+
return false;
|
|
77
|
+
}
|
|
78
|
+
return true;
|
|
79
|
+
}
|
|
80
|
+
// #endregion
|
|
81
|
+
// #region HandlePmIncrementDecrement
|
|
82
|
+
handlePmIncrementDecrement(action) {
|
|
83
|
+
const value = MethodsCalculationsHelper.convertThousanSepInNumber(this.superControl.control?.value);
|
|
84
|
+
switch (action) {
|
|
85
|
+
case InputCommandsAction.DECREMENT:
|
|
86
|
+
this.decrementPmValue(value);
|
|
87
|
+
break;
|
|
88
|
+
case InputCommandsAction.INCREMENT:
|
|
89
|
+
this.incrementPmValue(value);
|
|
90
|
+
break;
|
|
91
|
+
case InputCommandsAction.RESET:
|
|
92
|
+
this.resetPmValue();
|
|
93
|
+
break;
|
|
94
|
+
default:
|
|
95
|
+
break;
|
|
96
|
+
}
|
|
97
|
+
this.setInputCursorAtTheEnd(this.input.nativeElement);
|
|
98
|
+
}
|
|
99
|
+
// #endregion
|
|
100
|
+
// #region DecrementPmValue
|
|
101
|
+
decrementPmValue(value) {
|
|
102
|
+
if (value >= 10000 && value < 20000) {
|
|
103
|
+
this.superControl.control?.patchValue(MethodsCalculationsHelper.convertNumberInThousandSep(value - 1000));
|
|
104
|
+
}
|
|
105
|
+
else if (value >= 20001 && value < 50000) {
|
|
106
|
+
this.superControl.control?.patchValue(MethodsCalculationsHelper.convertNumberInThousandSep(value - 3000));
|
|
107
|
+
}
|
|
108
|
+
else if (value >= 50001 && value < 100000) {
|
|
109
|
+
this.superControl.control?.patchValue(MethodsCalculationsHelper.convertNumberInThousandSep(value - 5000));
|
|
110
|
+
}
|
|
111
|
+
else if (value >= 10000) {
|
|
112
|
+
this.superControl.control?.patchValue(MethodsCalculationsHelper.convertNumberInThousandSep(value - 10000));
|
|
113
|
+
}
|
|
114
|
+
else if (value >= 1000) {
|
|
115
|
+
this.superControl.control?.patchValue(MethodsCalculationsHelper.convertNumberInThousandSep(value - 500));
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
// #endregion
|
|
119
|
+
// #region ResetPmValue
|
|
120
|
+
resetPmValue() {
|
|
121
|
+
if (this._inputConfig?.defaultValue) {
|
|
122
|
+
this.superControl.control?.patchValue(this._inputConfig?.defaultValue);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
// #endregion
|
|
126
|
+
// #region ResetPmValue
|
|
127
|
+
incrementPmValue(value) {
|
|
128
|
+
if (value > 10000 && value < 20000) {
|
|
129
|
+
this.superControl.control?.patchValue(MethodsCalculationsHelper.convertNumberInThousandSep(value + 1000));
|
|
130
|
+
}
|
|
131
|
+
else if (value >= 20001 && value < 50000) {
|
|
132
|
+
this.superControl.control?.patchValue(MethodsCalculationsHelper.convertNumberInThousandSep(value + 3000));
|
|
133
|
+
}
|
|
134
|
+
else if (value >= 50001 && value < 100000) {
|
|
135
|
+
this.superControl.control?.patchValue(MethodsCalculationsHelper.convertNumberInThousandSep(value + 5000));
|
|
136
|
+
}
|
|
137
|
+
else if (value >= 10000) {
|
|
138
|
+
this.superControl.control?.patchValue(MethodsCalculationsHelper.convertNumberInThousandSep(value + 10000));
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
this.superControl.control?.patchValue(MethodsCalculationsHelper.convertNumberInThousandSep(value + 500));
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
// #endregion
|
|
145
|
+
// #region SetInputCursorAtTheEnd
|
|
146
|
+
setInputCursorAtTheEnd(input, time = 120) {
|
|
147
|
+
const selectionEnd = input.selectionEnd;
|
|
148
|
+
if (input.setSelectionRange) {
|
|
149
|
+
input.setSelectionRange(selectionEnd, selectionEnd);
|
|
150
|
+
}
|
|
151
|
+
setTimeout(() => {
|
|
152
|
+
input.focus();
|
|
153
|
+
}, time);
|
|
154
|
+
}
|
|
155
|
+
// #endregion
|
|
156
|
+
// #region HandleIncrementDecrement
|
|
157
|
+
handleIncrementDecrement(action) {
|
|
158
|
+
clearTimeout(this.inputCommandsTimeout);
|
|
159
|
+
switch (action) {
|
|
160
|
+
case InputCommandsAction.DECREMENT:
|
|
161
|
+
this.superControl.control?.patchValue((this.superControl.control?.value
|
|
162
|
+
? parseInt(this.superControl.control?.value)
|
|
163
|
+
: 0) - 1);
|
|
164
|
+
break;
|
|
165
|
+
case InputCommandsAction.INCREMENT:
|
|
166
|
+
this.superControl.control?.patchValue((this.superControl.control?.value
|
|
167
|
+
? parseInt(this.superControl.control?.value)
|
|
168
|
+
: 0) + 1);
|
|
169
|
+
break;
|
|
170
|
+
default:
|
|
171
|
+
break;
|
|
172
|
+
}
|
|
173
|
+
this.setInputCursorAtTheEnd(this.input.nativeElement);
|
|
174
|
+
}
|
|
175
|
+
// #endregion
|
|
176
|
+
// #region
|
|
177
|
+
handleMonths(action) {
|
|
178
|
+
clearTimeout(this.inputCommandsTimeout);
|
|
179
|
+
switch (action) {
|
|
180
|
+
case InputCommandsAction.MINUS:
|
|
181
|
+
this.decrementMonth();
|
|
182
|
+
break;
|
|
183
|
+
case InputCommandsAction.PLUS:
|
|
184
|
+
this.incrementMonth();
|
|
185
|
+
break;
|
|
186
|
+
default:
|
|
187
|
+
break;
|
|
188
|
+
}
|
|
189
|
+
if (parseInt(this.superControl.control?.value) < 1 ||
|
|
190
|
+
parseInt(this.superControl.control?.value) > 12) {
|
|
191
|
+
this.superControl.control?.setErrors({ invalid: true });
|
|
192
|
+
}
|
|
193
|
+
else {
|
|
194
|
+
this.superControl.control?.setErrors(null);
|
|
195
|
+
}
|
|
196
|
+
this.setInputCursorAtTheEnd(this.input.nativeElement);
|
|
197
|
+
}
|
|
198
|
+
// #endregion
|
|
199
|
+
// #region DecrementMonth
|
|
200
|
+
decrementMonth() {
|
|
201
|
+
if (parseInt(this.superControl.control?.value) === 1 ||
|
|
202
|
+
!this.superControl.control?.value) {
|
|
203
|
+
this.blurOnCommands();
|
|
204
|
+
return;
|
|
205
|
+
}
|
|
206
|
+
this.superControl.control?.patchValue((this.superControl.control?.value
|
|
207
|
+
? parseInt(this.superControl.control?.value)
|
|
208
|
+
: 0) - 1);
|
|
209
|
+
}
|
|
210
|
+
// #endregion
|
|
211
|
+
// #region IncrementMonth
|
|
212
|
+
incrementMonth() {
|
|
213
|
+
if (parseInt(this.superControl.control?.value) === 12) {
|
|
214
|
+
this.blurOnCommands();
|
|
215
|
+
return;
|
|
216
|
+
}
|
|
217
|
+
this.superControl.control?.patchValue((this.superControl.control?.value
|
|
218
|
+
? parseInt(this.superControl.control?.value)
|
|
219
|
+
: 0) + 1);
|
|
220
|
+
}
|
|
221
|
+
// #endregion
|
|
222
|
+
// #region
|
|
223
|
+
blurOnCommands() {
|
|
224
|
+
this.inputCommandsTimeout = setTimeout(() => {
|
|
225
|
+
this._inputConfig.commands.active = false;
|
|
226
|
+
// this.setIsVisibleCommands(false);
|
|
227
|
+
this._inputConfig.blackInput = false;
|
|
228
|
+
this.cdRef.detectChanges();
|
|
229
|
+
}, 200);
|
|
230
|
+
}
|
|
231
|
+
// #endregion
|
|
232
|
+
// #region CheckNameArray
|
|
233
|
+
checkNameArray(array, name) {
|
|
234
|
+
return array.includes(name);
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2EtaW5wdXQtYmFzZS1oZWxwcmVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2EtaW5wdXQvYmFzZS1jbGFzc2VzL2NhLWlucHV0LWJhc2UtaGVscHJlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsbUJBQW1CLEVBQW1CLE1BQU0sVUFBVSxDQUFDO0FBRWhFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBRS9GLE1BQU0sT0FBZ0IsMkJBQTJCO0lBQWpEO1FBU0UsbUJBQW1CO1FBQ1osZ0NBQTJCLEdBQVcsQ0FBQyxDQUFDO1FBQ3hDLG1CQUFjLEdBQVcsQ0FBQyxDQUFDO1FBQzNCLHdCQUFtQixHQUFXLENBQUMsQ0FBQztRQTZTdkMsYUFBYTtJQUNmLENBQUM7SUExU0MscUNBQXFDO0lBQzlCLDBCQUEwQixDQUFDLEtBQVU7UUFDMUMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFpQyxDQUFDO1FBRWxFLHNCQUFzQjtRQUN0QixNQUFNLGNBQWMsR0FBRyxZQUFZLENBQUMsY0FBd0IsQ0FBQztRQUU3RCx5REFBeUQ7UUFDekQsSUFDRSxjQUFjLEdBQUcsQ0FBQztZQUNsQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxjQUFjLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDbEQsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUMsRUFDOUMsQ0FBQztZQUNELE9BQU87UUFDVCxDQUFDO1FBRUQsb0dBQW9HO1FBQ3BHLElBQ0UsS0FBSyxDQUFDLEdBQUcsS0FBSyxHQUFHO1lBQ2pCLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxjQUFjLEdB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LE9BQU8sRUFBRSxLQUFLLENBQUM7WUFDNUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FDWCxDQUFDO0lBQ0osQ0FBQztJQUVELGFBQWE7SUFFYixVQUFVO0lBQ0gsY0FBYztRQUNuQixJQUFJLENBQUMsb0JBQW9CLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUMxQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVMsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1lBQzNDLG9DQUFvQztZQUNwQyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7WUFDckMsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUM3QixDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDVixDQUFDO0lBQ0QsYUFBYTtJQUViLHlCQUF5QjtJQUNsQixjQUFjLENBQUMsS0FBZSxFQUFFLElBQVk7UUFDakQsT0FBTyxLQUFLLENBQUMsUUFBUSxDQUFrQixJQUFJLENBQUMsQ0FBQztJQUMvQyxDQUFDO0NBRUYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmdDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgSW5wdXRDb21tYW5kc0FjdGlvbiwgSW5wdXRTdHJpbmdFbnVtIH0gZnJvbSAnLi4vZW51bXMnO1xuaW1wb3J0IHsgSUNhSW5wdXQgfSBmcm9tICcuLi9jb25maWcnO1xuaW1wb3J0IHsgTWV0aG9kc0NhbGN1bGF0aW9uc0hlbHBlciB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2hlbHBlcnMvbWV0aG9kcy1jYWxjdWxhdGlvbnMuaGVscGVyJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIENhSW5wdXRCYXNlSGVscGVyc0NvbXBvbmVudCB7XG4gIGFic3RyYWN0IGlucHV0OiBFbGVtZW50UmVmO1xuXG4gIGFic3RyYWN0IGxhc3RDdXJzb3JTcGFjZVBvc2l0aW9uOiBudW1iZXI7XG4gIGFic3RyYWN0IHN1cGVyQ29udHJvbDogTmdDb250cm9sO1xuICBhYnN0cmFjdCBfaW5wdXRDb25maWc6IElDYUlucHV0O1xuXG4gIGFic3RyYWN0IGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZjtcblxuICAvLyBOdW1iZXIgb2YgcG9pbnRzXG4gIHB1YmxpYyBudW1iZXJPZkNvbnNlY3V0aXZlbHlQb2ludHM6IG51bWJlciA9IDA7XG4gIHB1YmxpYyBudW1iZXJPZlBvaW50czogbnVtYmVyID0gMDtcbiAgcHVibGljIG9uZVNwYWNlT25seUNvdW50ZXI6IG51bWJlciA9IDA7XG5cbiAgcHVibGljIGlucHV0Q29tbWFuZHNUaW1lb3V0ITogTm9kZUpTLlRpbWVvdXQgfCBudW1iZXI7XG5cbiAgLy8gI3JlZ2lvbiBEaXNhYmxlQ29uc2VjdXRpdmVseVNwYWNlc1xuICBwdWJsaWMgZGlzYWJsZUNvbnNlY3V0aXZlbHlTcGFjZXMoZXZlbnQ6IGFueSkge1xuICAgIGNvbnN0IGlucHV0RWxlbWVudCA9IHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuXG4gICAgLy8gR2V0IGN1cnNvciBwb3NpdGlvblxuICAgIGNvbnN0IGN1cnNvclBvc2l0aW9uID0gaW5wdXRFbGVtZW50LnNlbGVjdGlvblN0YXJ0IGFzIG51bWJlcjtcblxuICAgIC8vIElmIHRoZSBjdXJzb3IgaXMgaW4gdGhlIG1pZGRsZSBvZiBhIHdvcmQsIGFsbG93IHNwYWNlc1xuICAgIGlmIChcbiAgICAgIGN1cnNvclBvc2l0aW9uID4gMCAmJlxuICAgICAgIS9cXHMvLnRlc3QoaW5wdXRFbGVtZW50LnZhbHVlW2N1cnNvclBvc2l0aW9uIC0gMV0pICYmXG4gICAgICAhL1xccy8udGVzdChpbnB1dEVsZW1lbnQudmFsdWVbY3Vyc29yUG9zaXRpb25dKVxuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIElmIHRoZSB1c2VyIGlzIHR5cGluZyBhIHNwYWNlIGFuZCB0aGUgcHJldmlvdXMgY2hhcmFjdGVyIGlzIGEgc3BhY2UsIHByZXZlbnQgdGhlIGRlZmF1bHQgYmVoYXZpb3JcbiAgICBpZiAoXG4gICAgICBldmVudC5rZXkgPT09ICcgJyAmJlxuICAgICAgL1xccy8udGVzdChpbnB1dEVsZW1lbnQudmFsdWVbY3Vyc29yUG9zaXRpb24gLSAxXSlcbiAgICApIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgLy8gU2F2ZSB0aGUgY3Vyc29yIHBvc2l0aW9uIGZvciB0aGUgbmV4dCBpbnB1dCBldmVudFxuICAgIHRoaXMubGFzdEN1cnNvclNwYWNlUG9zaXRpb24gPSBjdXJzb3JQb3NpdGlvbjtcbiAgfVxuXG4gIC8vICNlbmRyZWdpb25cblxuICAvLyAjcmVnaW9uIERpc2FibGVDb25zZWN1dGl2ZWx5UG9pbnRzXG5cbiAgcHVibGljIGRpc2FibGVDb25zZWN1dGl2ZWx5UG9pbnRzKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB8IGJvb2xlYW4ge1xuICAgIGlmICgvXlsuXSokLy50ZXN0KFN0cmluZy5mcm9tQ2hhckNvZGUoZXZlbnQuY2hhckNvZGUpKSkge1xuICAgICAgdGhpcy5udW1iZXJPZkNvbnNlY3V0aXZlbHlQb2ludHMrKztcbiAgICAgIGlmICh0aGlzLm51bWJlck9mQ29uc2VjdXRpdmVseVBvaW50cyA+IDEpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm51bWJlck9mQ29uc2VjdXRpdmVseVBvaW50cyA9IDA7XG4gICAgfVxuICB9XG5cbiAgLy8gI2VuZHJlZ2lvblxuXG4gIC8vICNyZWdpb24gRGlzYWJsZU11bHRpcGxlUG9pbnRzXG5cbiAgcHVibGljIGRpc2FibGVNdWx0aXBsZVBvaW50cyhldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQgfCBib29sZWFuIHtcbiAgICBpZiAoL15bLl0qJC8udGVzdChTdHJpbmcuZnJvbUNoYXJDb2RlKGV2ZW50LmNoYXJDb2RlKSkpIHtcbiAgICAgIGlmICghdGhpcy5zdXBlckNvbnRyb2wuY29udHJvbD8udmFsdWUpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5zdXBlckNvbnRyb2wuY29udHJvbD8udmFsdWU/LnRvU3RyaW5nKCkuaW5jbHVkZXMoJy4nKSkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIHRoaXMubnVtYmVyT2ZQb2ludHMrKztcbiAgICAgIGlmICh0aGlzLm51bWJlck9mUG9pbnRzID4gMSkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubnVtYmVyT2ZQb2ludHMgPSAwO1xuICAgIH1cbiAgfVxuXG4gIC8vIGVuZHJlZ2lvblxuXG4gIC8vICNyZWdpb24gRW5hYmxlT25lU3BhY2VPbmx5XG4gIHB1YmxpYyBlbmFibGVPbmVTcGFjZU9ubHkoZXZlbnQ6IGFueSkge1xuICAgIGlmIChcbiAgICAgIC9eXFxzKiQvLnRlc3QoU3RyaW5nLmZyb21DaGFyQ29kZShldmVudC5jaGFyQ29kZSkpIHx8XG4gICAgICB0aGlzLnN1cGVyQ29udHJvbC5jb250cm9sPy52YWx1ZT8uaW5jbHVkZXMoJyAnKVxuICAgICkge1xuICAgICAgdGhpcy5vbmVTcGFjZU9ubHlDb3VudGVyKys7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgdGhpcy5vbmVTcGFjZU9ubHlDb3VudGVyID4gMSAmJlxuICAgICAgL15cXHMqJC8udGVzdChTdHJpbmcuZnJvbUNoYXJDb2RlKGV2ZW50LmNoYXJDb2RlKSlcbiAgICApIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvLyAjZW5kcmVnaW9uXG5cbiAgLy8gI3JlZ2lvbiBIYW5kbGVQbUluY3JlbWVudERlY3JlbWVudFxuICBwdWJsaWMgaGFuZGxlUG1JbmNyZW1lbnREZWNyZW1lbnQoYWN0aW9uOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCB2YWx1ZSA9IE1ldGhvZHNDYWxjdWxhdGlvbnNIZWxwZXIuY29udmVydFRob3VzYW5TZXBJbk51bWJlcihcbiAgICAgIHRoaXMuc3VwZXJDb250cm9sLmNvbnRyb2w/LnZhbHVlXG4gICAgKTtcblxuICAgIHN3aXRjaCAoYWN0aW9uKSB7XG4gICAgICBjYXNlIElucHV0Q29tbWFuZHNBY3Rpb24uREVDUkVNRU5UOlxuICAgICAgICB0aGlzLmRlY3JlbWVudFBtVmFsdWUodmFsdWUpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgSW5wdXRDb21tYW5kc0FjdGlvbi5JTkNSRU1FTlQ6XG4gICAgICAgIHRoaXMuaW5jcmVtZW50UG1WYWx1ZSh2YWx1ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBJbnB1dENvbW1hbmRzQWN0aW9uLlJFU0VUOlxuICAgICAgICB0aGlzLnJlc2V0UG1WYWx1ZSgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHRoaXMuc2V0SW5wdXRDdXJzb3JBdFRoZUVuZCh0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQpO1xuICB9XG5cbiAgLy8gI2VuZHJlZ2lvblxuXG4gIC8vICNyZWdpb24gRGVjcmVtZW50UG1WYWx1ZVxuICBwcml2YXRlIGRlY3JlbWVudFBtVmFsdWUodmFsdWU6IG51bWJlcik6IHZvaWQge1xuICAgIGlmICh2YWx1ZSA+PSAxMDAwMCAmJiB2YWx1ZSA8IDIwMDAwKSB7XG4gICAgICB0aGlzLnN1cGVyQ29udHJvbC5jb250cm9sPy5wYXRjaFZhbHVlKFxuICAgICAgICBNZXRob2RzQ2FsY3VsYXRpb25zSGVscGVyLmNvbnZlcnROdW1iZXJJblRob3VzYW5kU2VwKHZhbHVlIC0gMTAwMClcbiAgICAgICk7XG4gICAgfSBlbHNlIGlmICh2YWx1ZSA+PSAyMDAwMSAmJiB2YWx1ZSA8IDUwMDAwKSB7XG4gICAgICB0aGlzLnN1cGVyQ29udHJvbC5jb250cm9sPy5wYXRjaFZhbHVlKFxuICAgICAgICBNZXRob2RzQ2FsY3VsYXRpb25zSGVscGVyLmNvbnZlcnROdW1iZXJJblRob3VzYW5kU2VwKHZhbHVlIC0gMzAwMClcbiAgICAgICk7XG4gICAgfSBlbHNlIGlmICh2YWx1ZSA+PSA1MDAwMSAmJiB2YWx1ZSA8IDEwMDAwMCkge1xuICAgICAgdGhpcy5zdXBlckNvbnRyb2wuY29udHJvbD8ucGF0Y2hWYWx1ZShcbiAgICAgICAgTWV0aG9kc0NhbGN1bGF0aW9uc0hlbHBlci5jb252ZXJ0TnVtYmVySW5UaG91c2FuZFNlcCh2YWx1ZSAtIDUwMDApXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAodmFsdWUgPj0gMTAwMDApIHtcbiAgICAgIHRoaXMuc3VwZXJDb250cm9sLmNvbnRyb2w/LnBhdGNoVmFsdWUoXG4gICAgICAgIE1ldGhvZHNDYWxjdWxhdGlvbnNIZWxwZXIuY29udmVydE51bWJlckluVGhvdXNhbmRTZXAodmFsdWUgLSAxMDAwMClcbiAgICAgICk7XG4gICAgfSBlbHNlIGlmICh2YWx1ZSA+PSAxMDAwKSB7XG4gICAgICB0aGlzLnN1cGVyQ29udHJvbC5jb250cm9sPy5wYXRjaFZhbHVlKFxuICAgICAgICBNZXRob2RzQ2FsY3VsYXRpb25zSGVscGVyLmNvbnZlcnROdW1iZXJJblRob3VzYW5kU2VwKHZhbHVlIC0gNTAwKVxuICAgICAgKTtcbiAgICB9XG4gIH1cbiAgLy8gI2VuZHJlZ2lvblxuXG4gIC8vICNyZWdpb24gUmVzZXRQbVZhbHVlXG4gIHByaXZhdGUgcmVzZXRQbVZhbHVlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9pbnB1dENvbmZpZz8uZGVmYXVsdFZhbHVlKSB7XG4gICAgICB0aGlzLnN1cGVyQ29udHJvbC5jb250cm9sPy5wYXRjaFZhbHVlKHRoaXMuX2lucHV0Q29uZmlnPy5kZWZhdWx0VmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIC8vICNlbmRyZWdpb25cblxuICAvLyAjcmVnaW9uIFJlc2V0UG1WYWx1ZVxuICBwcml2YXRlIGluY3JlbWVudFBtVmFsdWUodmFsdWU6IG51bWJlcik6IHZvaWQge1xuICAgIGlmICh2YWx1ZSA+IDEwMDAwICYmIHZhbHVlIDwgMjAwMDApIHtcbiAgICAgIHRoaXMuc3VwZXJDb250cm9sLmNvbnRyb2w/LnBhdGNoVmFsdWUoXG4gICAgICAgIE1ldGhvZHNDYWxjdWxhdGlvbnNIZWxwZXIuY29udmVydE51bWJlckluVGhvdXNhbmRTZXAodmFsdWUgKyAxMDAwKVxuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlID49IDIwMDAxICYmIHZhbHVlIDwgNTAwMDApIHtcbiAgICAgIHRoaXMuc3VwZXJDb250cm9sLmNvbnRyb2w/LnBhdGNoVmFsdWUoXG4gICAgICAgIE1ldGhvZHNDYWxjdWxhdGlvbnNIZWxwZXIuY29udmVydE51bWJlckluVGhvdXNhbmRTZXAodmFsdWUgKyAzMDAwKVxuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlID49IDUwMDAxICYmIHZhbHVlIDwgMTAwMDAwKSB7XG4gICAgICB0aGlzLnN1cGVyQ29udHJvbC5jb250cm9sPy5wYXRjaFZhbHVlKFxuICAgICAgICBNZXRob2RzQ2FsY3VsYXRpb25zSGVscGVyLmNvbnZlcnROdW1iZXJJblRob3VzYW5kU2VwKHZhbHVlICsgNTAwMClcbiAgICAgICk7XG4gICAgfSBlbHNlIGlmICh2YWx1ZSA+PSAxMDAwMCkge1xuICAgICAgdGhpcy5zdXBlckNvbnRyb2wuY29udHJvbD8ucGF0Y2hWYWx1ZShcbiAgICAgICAgTWV0aG9kc0NhbGN1bGF0aW9uc0hlbHBlci5jb252ZXJ0TnVtYmVySW5UaG91c2FuZFNlcCh2YWx1ZSArIDEwMDAwKVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zdXBlckNvbnRyb2wuY29udHJvbD8ucGF0Y2hWYWx1ZShcbiAgICAgICAgTWV0aG9kc0NhbGN1bGF0aW9uc0hlbHBlci5jb252ZXJ0TnVtYmVySW5UaG91c2FuZFNlcCh2YWx1ZSArIDUwMClcbiAgICAgICk7XG4gICAgfVxuICB9XG4gIC8vICNlbmRyZWdpb25cblxuICAvLyAjcmVnaW9uIFNldElucHV0Q3Vyc29yQXRUaGVFbmRcbiAgcHVibGljIHNldElucHV0Q3Vyc29yQXRUaGVFbmQoaW5wdXQ6IGFueSwgdGltZTogbnVtYmVyID0gMTIwKTogdm9pZCB7XG4gICAgY29uc3Qgc2VsZWN0aW9uRW5kID0gaW5wdXQuc2VsZWN0aW9uRW5kO1xuICAgIGlmIChpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSkge1xuICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2Uoc2VsZWN0aW9uRW5kLCBzZWxlY3Rpb25FbmQpO1xuICAgIH1cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlucHV0LmZvY3VzKCk7XG4gICAgfSwgdGltZSk7XG4gIH1cbiAgLy8gI2VuZHJlZ2lvblxuXG4gIC8vICNyZWdpb24gSGFuZGxlSW5jcmVtZW50RGVjcmVtZW50XG4gIHB1YmxpYyBoYW5kbGVJbmNyZW1lbnREZWNyZW1lbnQoYWN0aW9uOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjbGVhclRpbWVvdXQodGhpcy5pbnB1dENvbW1hbmRzVGltZW91dCk7XG4gICAgc3dpdGNoIChhY3Rpb24pIHtcbiAgICAgIGNhc2UgSW5wdXRDb21tYW5kc0FjdGlvbi5ERUNSRU1FTlQ6XG4gICAgICAgIHRoaXMuc3VwZXJDb250cm9sLmNvbnRyb2w/LnBhdGNoVmFsdWUoXG4gICAgICAgICAgKHRoaXMuc3VwZXJDb250cm9sLmNvbnRyb2w/LnZhbHVlXG4gICAgICAgICAgICA/IHBhcnNlSW50KHRoaXMuc3VwZXJDb250cm9sLmNvbnRyb2w/LnZhbHVlKVxuICAgICAgICAgICAgOiAwKSAtIDFcbiAgICAgICAgKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIElucHV0Q29tbWFuZHNBY3Rpb24uSU5DUkVNRU5UOlxuICAgICAgICB0aGlzLnN1cGVyQ29udHJvbC5jb250cm9sPy5wYXRjaFZhbHVlKFxuICAgICAgICAgICh0aGlzLnN1cGVyQ29udHJvbC5jb250cm9sPy52YWx1ZVxuICAgICAgICAgICAgPyBwYXJzZUludCh0aGlzLnN1cGVyQ29udHJvbC5jb250cm9sPy52YWx1ZSlcbiAgICAgICAgICAgIDogMCkgKyAxXG4gICAgICAgICk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgdGhpcy5zZXRJbnB1dEN1cnNvckF0VGhlRW5kKHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudCk7XG4gIH1cbiAgLy8gI2VuZHJlZ2lvblxuXG4gIC8vICNyZWdpb25cblxuICBwdWJsaWMgaGFuZGxlTW9udGhzKGFjdGlvbjogc3RyaW5nKTogdm9pZCB7XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMuaW5wdXRDb21tYW5kc1RpbWVvdXQpO1xuXG4gICAgc3dpdGNoIChhY3Rpb24pIHtcbiAgICAgIGNhc2UgSW5wdXRDb21tYW5kc0FjdGlvbi5NSU5VUzpcbiAgICAgICAgdGhpcy5kZWNyZW1lbnRNb250aCgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgSW5wdXRDb21tYW5kc0FjdGlvbi5QTFVTOlxuICAgICAgICB0aGlzLmluY3JlbWVudE1vbnRoKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgcGFyc2VJbnQodGhpcy5zdXBlckNvbnRyb2wuY29udHJvbD8udmFsdWUpIDwgMSB8fFxuICAgICAgcGFyc2VJbnQodGhpcy5zdXBlckNvbnRyb2wuY29udHJvbD8udmFsdWUpID4gMTJcbiAgICApIHtcbiAgICAgIHRoaXMuc3VwZXJDb250cm9sLmNvbnRyb2w/LnNldEVycm9ycyh7IGludmFsaWQ6IHRydWUgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc3VwZXJDb250cm9sLmNvbnRyb2w/LnNldEVycm9ycyhudWxsKTtcbiAgICB9XG5cbiAgICB0aGlzLnNldElucHV0Q3Vyc29yQXRUaGVFbmQodGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50KTtcbiAgfVxuICAvLyAjZW5kcmVnaW9uXG5cbiAgLy8gI3JlZ2lvbiBEZWNyZW1lbnRNb250aFxuICBwcml2YXRlIGRlY3JlbWVudE1vbnRoKCk6IHZvaWQge1xuICAgIGlmIChcbiAgICAgIHBhcnNlSW50KHRoaXMuc3VwZXJDb250cm9sLmNvbnRyb2w/LnZhbHVlKSA9PT0gMSB8fFxuICAgICAgIXRoaXMuc3VwZXJDb250cm9sLmNvbnRyb2w/LnZhbHVlXG4gICAgKSB7XG4gICAgICB0aGlzLmJsdXJPbkNvbW1hbmRzKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zdXBlckNvbnRyb2wuY29udHJvbD8ucGF0Y2hWYWx1ZShcbiAgICAgICh0aGlzLnN1cGVyQ29udHJvbC5jb250cm9sPy52YWx1ZVxuICAgICAgICA/IHBhcnNlSW50KHRoaXMuc3VwZXJDb250cm9sLmNvbnRyb2w/LnZhbHVlKVxuICAgICAgICA6IDApIC0gMVxuICAgICk7XG4gIH1cblxuICAvLyAjZW5kcmVnaW9uXG5cbiAgLy8gI3JlZ2lvbiBJbmNyZW1lbnRNb250aFxuICBwcml2YXRlIGluY3JlbWVudE1vbnRoKCk6IHZvaWQge1xuICAgIGlmIChwYXJzZUludCh0aGlzLnN1cGVyQ29udHJvbC5jb250cm9sPy52YWx1ZSkgPT09IDEyKSB7XG4gICAgICB0aGlzLmJsdXJPbkNvbW1hbmRzKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zdXBlckNvbnRyb2wuY29udHJvbD8ucGF0Y2hWYWx1ZShcbiAgICAgICh0aGlzLnN1cGVyQ29udHJvbC5jb250cm9sPy52YWx1ZVxuICAgICAgICA/IHBhcnNlSW50KHRoaXMuc3VwZXJDb250cm9sLmNvbnRyb2w/LnZhbHVlKVxuICAgICAgICA6IDApICsgMVxuICAgICk7XG4gIH1cblxuICAvLyAjZW5kcmVnaW9uXG5cbiAgLy8gI3JlZ2lvblxuICBwdWJsaWMgYmx1ck9uQ29tbWFuZHMoKTogdm9pZCB7XG4gICAgdGhpcy5pbnB1dENvbW1hbmRzVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5faW5wdXRDb25maWcuY29tbWFuZHMhLmFjdGl2ZSA9IGZhbHNlO1xuICAgICAgLy8gdGhpcy5zZXRJc1Zpc2libGVDb21tYW5kcyhmYWxzZSk7XG4gICAgICB0aGlzLl9pbnB1dENvbmZpZy5ibGFja0lucHV0ID0gZmFsc2U7XG4gICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICB9LCAyMDApO1xuICB9XG4gIC8vICNlbmRyZWdpb25cblxuICAvLyAjcmVnaW9uIENoZWNrTmFtZUFycmF5XG4gIHB1YmxpYyBjaGVja05hbWVBcnJheShhcnJheTogc3RyaW5nW10sIG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBhcnJheS5pbmNsdWRlcyg8SW5wdXRTdHJpbmdFbnVtPm5hbWUpO1xuICB9XG4gIC8vICNlbmRyZWdpb25cbn1cbiJdfQ==
|