ngx-material-entity 1.0.0 → 1.0.5
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/README.md +11 -5
- package/capsulation/reflect.utilities.d.ts +1 -1
- package/classes/date.utilities.d.ts +3 -3
- package/classes/entity.model.d.ts +1 -1
- package/classes/entity.utilities.d.ts +2 -1
- package/components/input/array/array-string-autocomplete-chips/array-string-autocomplete-chips.component.d.ts +1 -2
- package/components/input/array/array-string-chips-input/array-string-chips-input.component.d.ts +1 -3
- package/components/input/array/array-table.class.d.ts +4 -5
- package/components/input/base-input.component.d.ts +29 -3
- package/components/input/boolean/boolean-checkbox-input/boolean-checkbox-input.component.d.ts +1 -1
- package/components/input/boolean/boolean-dropdown-input/boolean-dropdown-input.component.d.ts +1 -1
- package/components/input/boolean/boolean-toggle-input/boolean-toggle-input.component.d.ts +1 -1
- package/components/input/custom/custom.component.d.ts +3 -3
- package/components/input/date/date-input/date-input.component.d.ts +1 -3
- package/components/input/date/date-range-input/date-range-input.component.d.ts +2 -3
- package/components/input/date/date-time-input/date-time-input.component.d.ts +2 -3
- package/components/input/file/file-default-input/file-default-input.component.d.ts +1 -1
- package/components/input/file/file-image-input/file-image-input.component.d.ts +1 -1
- package/components/input/file/file-input/file-input.component.d.ts +2 -1
- package/components/input/input.component.d.ts +13 -1
- package/components/input/input.module.d.ts +37 -34
- package/components/input/number/number-dropdown-input/number-dropdown-input.component.d.ts +1 -1
- package/components/input/number/number-input/number-input.component.d.ts +1 -1
- package/components/input/number/number-slider-input/number-slider-input.component.d.ts +9 -0
- package/components/input/string/string-autocomplete-input/string-autocomplete-input.component.d.ts +2 -2
- package/components/input/string/string-dropdown-input/string-dropdown-input.component.d.ts +1 -1
- package/components/input/string/string-input/string-input.component.d.ts +1 -1
- package/components/input/string/string-password-input/string-password-input.component.d.ts +15 -0
- package/components/input/string/string-textbox-input/string-textbox-input.component.d.ts +1 -1
- package/components/table/edit-dialog/edit-entity-dialog-data.d.ts +4 -0
- package/components/table/edit-dialog/edit-entity-dialog.builder.d.ts +2 -1
- package/components/table/edit-dialog/edit-entity-dialog.component.d.ts +1 -0
- package/components/table/table-data.builder.d.ts +4 -3
- package/components/table/table-data.d.ts +12 -4
- package/decorators/base/decorator-types.enum.d.ts +5 -3
- package/decorators/custom/custom-decorator.data.d.ts +4 -0
- package/decorators/number/number-decorator-internal.data.d.ts +20 -1
- package/decorators/number/number-decorator.data.d.ts +27 -1
- package/decorators/number/number.decorator.d.ts +2 -2
- package/decorators/string/string-decorator-internal.data.d.ts +14 -1
- package/decorators/string/string-decorator.data.d.ts +37 -1
- package/decorators/string/string.decorator.d.ts +2 -2
- package/esm2020/capsulation/reflect.utilities.mjs +1 -1
- package/esm2020/classes/date.utilities.mjs +3 -3
- package/esm2020/classes/entity.model.mjs +1 -1
- package/esm2020/classes/entity.utilities.mjs +28 -6
- package/esm2020/classes/file.utilities.mjs +3 -2
- package/esm2020/components/input/array/array-date-input/array-date-input.component.mjs +6 -6
- package/esm2020/components/input/array/array-date-range-input/array-date-range-input.component.mjs +5 -5
- package/esm2020/components/input/array/array-date-time-input/array-date-time-input.component.mjs +6 -6
- package/esm2020/components/input/array/array-string-autocomplete-chips/array-string-autocomplete-chips.component.mjs +9 -25
- package/esm2020/components/input/array/array-string-chips-input/array-string-chips-input.component.mjs +9 -28
- package/esm2020/components/input/array/array-table.class.mjs +9 -12
- package/esm2020/components/input/base-input.component.mjs +28 -2
- package/esm2020/components/input/boolean/boolean-checkbox-input/boolean-checkbox-input.component.mjs +4 -6
- package/esm2020/components/input/boolean/boolean-dropdown-input/boolean-dropdown-input.component.mjs +3 -3
- package/esm2020/components/input/boolean/boolean-toggle-input/boolean-toggle-input.component.mjs +4 -6
- package/esm2020/components/input/custom/custom.component.mjs +2 -1
- package/esm2020/components/input/date/date-input/date-input.component.mjs +3 -4
- package/esm2020/components/input/date/date-range-input/date-range-input.component.mjs +6 -6
- package/esm2020/components/input/date/date-time-input/date-time-input.component.mjs +13 -13
- package/esm2020/components/input/file/file-default-input/file-default-input.component.mjs +4 -5
- package/esm2020/components/input/file/file-image-input/file-image-input.component.mjs +21 -16
- package/esm2020/components/input/file/file-input/file-input.component.mjs +7 -5
- package/esm2020/components/input/input.component.mjs +32 -27
- package/esm2020/components/input/input.module.mjs +14 -4
- package/esm2020/components/input/number/number-dropdown-input/number-dropdown-input.component.mjs +3 -3
- package/esm2020/components/input/number/number-input/number-input.component.mjs +3 -3
- package/esm2020/components/input/number/number-slider-input/number-slider-input.component.mjs +17 -0
- package/esm2020/components/input/string/string-autocomplete-input/string-autocomplete-input.component.mjs +5 -7
- package/esm2020/components/input/string/string-dropdown-input/string-dropdown-input.component.mjs +3 -3
- package/esm2020/components/input/string/string-input/string-input.component.mjs +3 -3
- package/esm2020/components/input/string/string-password-input/string-password-input.component.mjs +36 -0
- package/esm2020/components/input/string/string-textbox-input/string-textbox-input.component.mjs +3 -3
- package/esm2020/components/table/create-dialog/create-entity-dialog.component.mjs +1 -1
- package/esm2020/components/table/edit-dialog/edit-entity-dialog-data.mjs +1 -1
- package/esm2020/components/table/edit-dialog/edit-entity-dialog.builder.mjs +4 -3
- package/esm2020/components/table/edit-dialog/edit-entity-dialog.component.mjs +5 -4
- package/esm2020/components/table/table-data.builder.mjs +13 -10
- package/esm2020/components/table/table-data.mjs +1 -1
- package/esm2020/components/table/table.component.mjs +16 -14
- package/esm2020/decorators/base/base-property.decorator.mjs +1 -1
- package/esm2020/decorators/base/decorator-types.enum.mjs +3 -1
- package/esm2020/decorators/custom/custom-decorator.data.mjs +1 -1
- package/esm2020/decorators/number/number-decorator-internal.data.mjs +24 -1
- package/esm2020/decorators/number/number-decorator.data.mjs +1 -1
- package/esm2020/decorators/number/number.decorator.mjs +9 -7
- package/esm2020/decorators/string/string-decorator-internal.data.mjs +16 -1
- package/esm2020/decorators/string/string-decorator.data.mjs +1 -1
- package/esm2020/decorators/string/string.decorator.mjs +13 -13
- package/fesm2015/ngx-material-entity.mjs +330 -214
- package/fesm2015/ngx-material-entity.mjs.map +1 -1
- package/fesm2020/ngx-material-entity.mjs +314 -206
- package/fesm2020/ngx-material-entity.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -31,15 +31,16 @@ export declare class BaseDataInternal<EntityType extends BaseEntityType<EntityTy
|
|
|
31
31
|
searchLabel: string;
|
|
32
32
|
createButtonLabel: string;
|
|
33
33
|
searchString: (entity: EntityType) => string;
|
|
34
|
-
allowCreate: boolean;
|
|
35
|
-
|
|
34
|
+
allowCreate: () => boolean;
|
|
35
|
+
allowRead: (entity: EntityType) => boolean;
|
|
36
|
+
allowUpdate: (entity: EntityType) => boolean;
|
|
36
37
|
allowDelete: (entity: EntityType) => boolean;
|
|
37
38
|
multiSelectActions: MultiSelectAction<EntityType>[];
|
|
38
39
|
multiSelectLabel: string;
|
|
39
40
|
EntityClass?: EntityClassNewable<EntityType>;
|
|
40
41
|
edit?: (entity: EntityType) => unknown;
|
|
41
42
|
create?: (entity: EntityType) => unknown;
|
|
42
|
-
constructor(title: string, displayColumns: DisplayColumn<EntityType>[], EntityServiceClass: new (httpClient: HttpClient) => EntityService<EntityType>, searchLabel: string, createButtonLabel: string, searchString: (entity: EntityType) => string, allowCreate: boolean,
|
|
43
|
+
constructor(title: string, displayColumns: DisplayColumn<EntityType>[], EntityServiceClass: new (httpClient: HttpClient) => EntityService<EntityType>, searchLabel: string, createButtonLabel: string, searchString: (entity: EntityType) => string, allowCreate: () => boolean, allowRead: (entity: EntityType) => boolean, allowUpdate: (entity: EntityType) => boolean, allowDelete: (entity: EntityType) => boolean, multiSelectActions: MultiSelectAction<EntityType>[], multiSelectLabel: string, EntityClass?: EntityClassNewable<EntityType>, edit?: (entity: EntityType) => unknown, create?: (entity: EntityType) => unknown);
|
|
43
44
|
}
|
|
44
45
|
/**
|
|
45
46
|
* The Builder for the complete TableData. Sets default values and validates user input.
|
|
@@ -93,17 +93,25 @@ export interface BaseData<EntityType extends BaseEntityType<EntityType>> {
|
|
|
93
93
|
/**
|
|
94
94
|
* Defines whether or not the user can add new entities.
|
|
95
95
|
*
|
|
96
|
-
* @default true
|
|
96
|
+
* @default () => true
|
|
97
|
+
*/
|
|
98
|
+
allowCreate?: () => boolean;
|
|
99
|
+
/**
|
|
100
|
+
* Defines whether or not the user can view the specific entity.
|
|
101
|
+
*
|
|
102
|
+
* @default () => true
|
|
97
103
|
*/
|
|
98
|
-
|
|
104
|
+
allowRead?: (entity: EntityType) => boolean;
|
|
99
105
|
/**
|
|
100
|
-
* Defines whether or not the user can edit
|
|
106
|
+
* Defines whether or not the user can edit the specific entity.
|
|
101
107
|
*
|
|
102
108
|
* @default () => true
|
|
103
109
|
*/
|
|
104
|
-
|
|
110
|
+
allowUpdate?: (entity: EntityType) => boolean;
|
|
105
111
|
/**
|
|
106
112
|
* Whether or not the user can delete this specific entity.
|
|
113
|
+
*
|
|
114
|
+
* @default () => true
|
|
107
115
|
*/
|
|
108
116
|
allowDelete?: (entity: EntityType) => boolean;
|
|
109
117
|
/**
|
|
@@ -3,9 +3,9 @@ import { CheckboxBooleanDecoratorConfigInternal, DropdownBooleanDecoratorConfigI
|
|
|
3
3
|
import { CustomDecoratorConfigInternal } from '../custom/custom-decorator-internal.data';
|
|
4
4
|
import { DateRangeDateDecoratorConfigInternal, DateTimeDateDecoratorConfigInternal, DefaultDateDecoratorConfigInternal } from '../date/date-decorator-internal.data';
|
|
5
5
|
import { DefaultFileDecoratorConfigInternal, ImageFileDecoratorConfigInternal } from '../file/file-decorator-internal.data';
|
|
6
|
-
import { DefaultNumberDecoratorConfigInternal, DropdownNumberDecoratorConfigInternal } from '../number/number-decorator-internal.data';
|
|
6
|
+
import { DefaultNumberDecoratorConfigInternal, DropdownNumberDecoratorConfigInternal, SliderNumberDecoratorConfigInternal } from '../number/number-decorator-internal.data';
|
|
7
7
|
import { DefaultObjectDecoratorConfigInternal } from '../object/object-decorator-internal.data';
|
|
8
|
-
import { AutocompleteStringDecoratorConfigInternal, DefaultStringDecoratorConfigInternal, DropdownStringDecoratorConfigInternal, TextboxStringDecoratorConfigInternal } from '../string/string-decorator-internal.data';
|
|
8
|
+
import { AutocompleteStringDecoratorConfigInternal, DefaultStringDecoratorConfigInternal, DropdownStringDecoratorConfigInternal, PasswordStringDecoratorConfigInternal, TextboxStringDecoratorConfigInternal } from '../string/string-decorator-internal.data';
|
|
9
9
|
/**
|
|
10
10
|
* The enum Values for all the different DecoratorTypes.
|
|
11
11
|
*/
|
|
@@ -14,8 +14,10 @@ export declare enum DecoratorTypes {
|
|
|
14
14
|
STRING_DROPDOWN = "stringDropdown",
|
|
15
15
|
STRING_AUTOCOMPLETE = "stringAutocomplete",
|
|
16
16
|
STRING_TEXTBOX = "stringTextbox",
|
|
17
|
+
STRING_PASSWORD = "stringPassword",
|
|
17
18
|
NUMBER = "number",
|
|
18
19
|
NUMBER_DROPDOWN = "numberDropdown",
|
|
20
|
+
NUMBER_SLIDER = "numberSlider",
|
|
19
21
|
BOOLEAN_CHECKBOX = "boolean",
|
|
20
22
|
BOOLEAN_TOGGLE = "booleanToggle",
|
|
21
23
|
BOOLEAN_DROPDOWN = "booleanDropdown",
|
|
@@ -36,4 +38,4 @@ export declare enum DecoratorTypes {
|
|
|
36
38
|
/**
|
|
37
39
|
* Gives the metadata-config Type based on the DecoratorTypes enum.
|
|
38
40
|
*/
|
|
39
|
-
export declare type DecoratorType<T, CustomMetadataType extends Record<string, unknown>> = T extends DecoratorTypes.STRING ? DefaultStringDecoratorConfigInternal : T extends DecoratorTypes.STRING_TEXTBOX ? TextboxStringDecoratorConfigInternal : T extends DecoratorTypes.STRING_DROPDOWN ? DropdownStringDecoratorConfigInternal : T extends DecoratorTypes.STRING_AUTOCOMPLETE ? AutocompleteStringDecoratorConfigInternal : T extends DecoratorTypes.NUMBER ? DefaultNumberDecoratorConfigInternal : T extends DecoratorTypes.NUMBER_DROPDOWN ? DropdownNumberDecoratorConfigInternal : T extends DecoratorTypes.BOOLEAN_CHECKBOX ? CheckboxBooleanDecoratorConfigInternal : T extends DecoratorTypes.BOOLEAN_TOGGLE ? ToggleBooleanDecoratorConfigInternal : T extends DecoratorTypes.BOOLEAN_DROPDOWN ? DropdownBooleanDecoratorConfigInternal : T extends DecoratorTypes.OBJECT ? DefaultObjectDecoratorConfigInternal<any> : T extends DecoratorTypes.ARRAY ? EntityArrayDecoratorConfigInternal<any> : T extends DecoratorTypes.ARRAY_DATE ? DateArrayDecoratorConfigInternal : T extends DecoratorTypes.ARRAY_DATE_TIME ? DateTimeArrayDecoratorConfigInternal : T extends DecoratorTypes.ARRAY_DATE_RANGE ? DateRangeArrayDecoratorConfigInternal : T extends DecoratorTypes.ARRAY_STRING_CHIPS ? StringChipsArrayDecoratorConfigInternal : T extends DecoratorTypes.ARRAY_STRING_AUTOCOMPLETE_CHIPS ? AutocompleteStringChipsArrayDecoratorConfigInternal : T extends DecoratorTypes.DATE ? DefaultDateDecoratorConfigInternal : T extends DecoratorTypes.DATE_RANGE ? DateRangeDateDecoratorConfigInternal : T extends DecoratorTypes.DATE_TIME ? DateTimeDateDecoratorConfigInternal : T extends DecoratorTypes.FILE_DEFAULT ? DefaultFileDecoratorConfigInternal : T extends DecoratorTypes.FILE_IMAGE ? ImageFileDecoratorConfigInternal : T extends DecoratorTypes.CUSTOM ? CustomDecoratorConfigInternal<any, any, CustomMetadataType, any> : never;
|
|
41
|
+
export declare type DecoratorType<T, CustomMetadataType extends Record<string, unknown>> = T extends DecoratorTypes.STRING ? DefaultStringDecoratorConfigInternal : T extends DecoratorTypes.STRING_TEXTBOX ? TextboxStringDecoratorConfigInternal : T extends DecoratorTypes.STRING_DROPDOWN ? DropdownStringDecoratorConfigInternal : T extends DecoratorTypes.STRING_AUTOCOMPLETE ? AutocompleteStringDecoratorConfigInternal : T extends DecoratorTypes.STRING_PASSWORD ? PasswordStringDecoratorConfigInternal : T extends DecoratorTypes.NUMBER ? DefaultNumberDecoratorConfigInternal : T extends DecoratorTypes.NUMBER_DROPDOWN ? DropdownNumberDecoratorConfigInternal : T extends DecoratorTypes.NUMBER_SLIDER ? SliderNumberDecoratorConfigInternal : T extends DecoratorTypes.BOOLEAN_CHECKBOX ? CheckboxBooleanDecoratorConfigInternal : T extends DecoratorTypes.BOOLEAN_TOGGLE ? ToggleBooleanDecoratorConfigInternal : T extends DecoratorTypes.BOOLEAN_DROPDOWN ? DropdownBooleanDecoratorConfigInternal : T extends DecoratorTypes.OBJECT ? DefaultObjectDecoratorConfigInternal<any> : T extends DecoratorTypes.ARRAY ? EntityArrayDecoratorConfigInternal<any> : T extends DecoratorTypes.ARRAY_DATE ? DateArrayDecoratorConfigInternal : T extends DecoratorTypes.ARRAY_DATE_TIME ? DateTimeArrayDecoratorConfigInternal : T extends DecoratorTypes.ARRAY_DATE_RANGE ? DateRangeArrayDecoratorConfigInternal : T extends DecoratorTypes.ARRAY_STRING_CHIPS ? StringChipsArrayDecoratorConfigInternal : T extends DecoratorTypes.ARRAY_STRING_AUTOCOMPLETE_CHIPS ? AutocompleteStringChipsArrayDecoratorConfigInternal : T extends DecoratorTypes.DATE ? DefaultDateDecoratorConfigInternal : T extends DecoratorTypes.DATE_RANGE ? DateRangeDateDecoratorConfigInternal : T extends DecoratorTypes.DATE_TIME ? DateTimeDateDecoratorConfigInternal : T extends DecoratorTypes.FILE_DEFAULT ? DefaultFileDecoratorConfigInternal : T extends DecoratorTypes.FILE_IMAGE ? ImageFileDecoratorConfigInternal : T extends DecoratorTypes.CUSTOM ? CustomDecoratorConfigInternal<any, any, CustomMetadataType, any> : never;
|
|
@@ -16,6 +16,8 @@ export interface CustomDecoratorConfig<EntityType extends BaseEntityType<EntityT
|
|
|
16
16
|
* Used in addition to default checks like required etc.
|
|
17
17
|
* Needed for the edit and create dialogs.
|
|
18
18
|
*
|
|
19
|
+
* TIP: If you need additional data for checking if the value is valid, you can define them as metadata directly on the value.
|
|
20
|
+
*
|
|
19
21
|
* @default () => true
|
|
20
22
|
*/
|
|
21
23
|
isValid?: (value: ValueType, omit: 'create' | 'update') => boolean;
|
|
@@ -23,6 +25,8 @@ export interface CustomDecoratorConfig<EntityType extends BaseEntityType<EntityT
|
|
|
23
25
|
* The function that defines whether or not two of your custom values are equal.
|
|
24
26
|
* Needed for the edit and create dialogs.
|
|
25
27
|
*
|
|
28
|
+
* TIP: If you need additional data for checking if the value is valid, you can define them as metadata directly on the values.
|
|
29
|
+
*
|
|
26
30
|
* @default (value: ValueType, valuePriorChanges: ValueType) => LodashUtilities.isEqual(value, valuePriorChanges)
|
|
27
31
|
*/
|
|
28
32
|
isEqual?: (value: ValueType, valuePriorChanges: ValueType, metadata: CustomDecoratorConfig<EntityType, ValueType, MetadataType, ComponentType>) => boolean;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { DropdownValue } from '../base/dropdown-value.interface';
|
|
2
2
|
import { PropertyDecoratorConfigInternal } from '../base/property-decorator-internal.data';
|
|
3
|
-
import { DefaultNumberDecoratorConfig, DropdownNumberDecoratorConfig } from './number-decorator.data';
|
|
3
|
+
import { DefaultNumberDecoratorConfig, DropdownNumberDecoratorConfig, SliderNumberDecoratorConfig } from './number-decorator.data';
|
|
4
4
|
/**
|
|
5
5
|
* The internal DefaultNumberDecoratorConfig. Sets default values.
|
|
6
6
|
*/
|
|
@@ -18,3 +18,22 @@ export declare class DropdownNumberDecoratorConfigInternal extends PropertyDecor
|
|
|
18
18
|
dropdownValues: DropdownValue<number>[];
|
|
19
19
|
constructor(data: DropdownNumberDecoratorConfig);
|
|
20
20
|
}
|
|
21
|
+
/**
|
|
22
|
+
* The internal SliderNumberDecoratorConfig. Sets default values.
|
|
23
|
+
*/
|
|
24
|
+
export declare class SliderNumberDecoratorConfigInternal extends PropertyDecoratorConfigInternal implements SliderNumberDecoratorConfig {
|
|
25
|
+
displayStyle: 'slider';
|
|
26
|
+
min?: number;
|
|
27
|
+
max?: number;
|
|
28
|
+
step?: number;
|
|
29
|
+
formatThumbLabelValue: (value: number) => string | number;
|
|
30
|
+
tickInterval?: number | 'auto';
|
|
31
|
+
constructor(data: SliderNumberDecoratorConfig);
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* The default function to format values for the number slider thumb label.
|
|
35
|
+
*
|
|
36
|
+
* @param value - The value of the slider.
|
|
37
|
+
* @returns Just the value without any formatting done.
|
|
38
|
+
*/
|
|
39
|
+
export declare function defaultFormatThumbLabelValue(value: number): number;
|
|
@@ -7,7 +7,7 @@ declare abstract class NumberDecoratorConfig extends PropertyDecoratorConfig {
|
|
|
7
7
|
/**
|
|
8
8
|
* Whether to display the number in a single line or as a dropdown.
|
|
9
9
|
*/
|
|
10
|
-
displayStyle: 'line' | 'dropdown';
|
|
10
|
+
displayStyle: 'line' | 'dropdown' | 'slider';
|
|
11
11
|
}
|
|
12
12
|
/**
|
|
13
13
|
* The configuration options for a number property displayed in a default number input.
|
|
@@ -33,4 +33,30 @@ export interface DropdownNumberDecoratorConfig extends NumberDecoratorConfig {
|
|
|
33
33
|
*/
|
|
34
34
|
dropdownValues: DropdownValue<number>[];
|
|
35
35
|
}
|
|
36
|
+
/**
|
|
37
|
+
* The configuration options for a number property displayed as a slider input.
|
|
38
|
+
*/
|
|
39
|
+
export interface SliderNumberDecoratorConfig extends NumberDecoratorConfig {
|
|
40
|
+
displayStyle: 'slider';
|
|
41
|
+
/**
|
|
42
|
+
* The minimum value of the number.
|
|
43
|
+
*/
|
|
44
|
+
min?: number;
|
|
45
|
+
/**
|
|
46
|
+
* The maximum value of the number.
|
|
47
|
+
*/
|
|
48
|
+
max?: number;
|
|
49
|
+
/**
|
|
50
|
+
* How big a single step is at which the thumb label will snap.
|
|
51
|
+
*/
|
|
52
|
+
step?: number;
|
|
53
|
+
/**
|
|
54
|
+
* Function that transforms the value to display inside the thumb label.
|
|
55
|
+
*/
|
|
56
|
+
formatThumbLabelValue?: (value: number) => string | number;
|
|
57
|
+
/**
|
|
58
|
+
* How often ticks should be displayed.
|
|
59
|
+
*/
|
|
60
|
+
tickInterval?: 'auto' | number;
|
|
61
|
+
}
|
|
36
62
|
export {};
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { DefaultNumberDecoratorConfig, DropdownNumberDecoratorConfig } from './number-decorator.data';
|
|
1
|
+
import { DefaultNumberDecoratorConfig, DropdownNumberDecoratorConfig, SliderNumberDecoratorConfig } from './number-decorator.data';
|
|
2
2
|
/**
|
|
3
3
|
* Decorator for setting and getting number property metadata.
|
|
4
4
|
*
|
|
5
5
|
* @param metadata - The metadata of the number property.
|
|
6
6
|
* @returns The method that defines the metadata.
|
|
7
7
|
*/
|
|
8
|
-
export declare function number(metadata: DefaultNumberDecoratorConfig | DropdownNumberDecoratorConfig): (target: object, propertyKey: string) => void;
|
|
8
|
+
export declare function number(metadata: DefaultNumberDecoratorConfig | DropdownNumberDecoratorConfig | SliderNumberDecoratorConfig): (target: object, propertyKey: string) => void;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { DropdownValue } from '../base/dropdown-value.interface';
|
|
2
2
|
import { PropertyDecoratorConfigInternal } from '../base/property-decorator-internal.data';
|
|
3
|
-
import { AutocompleteStringDecoratorConfig, DefaultStringDecoratorConfig, DropdownStringDecoratorConfig, TextboxStringDecoratorConfig } from './string-decorator.data';
|
|
3
|
+
import { AutocompleteStringDecoratorConfig, DefaultStringDecoratorConfig, DropdownStringDecoratorConfig, PasswordStringDecoratorConfig, TextboxStringDecoratorConfig } from './string-decorator.data';
|
|
4
4
|
/**
|
|
5
5
|
* The internal DropdownStringDecoratorConfig. Sets default values.
|
|
6
6
|
*/
|
|
@@ -39,3 +39,16 @@ export declare class AutocompleteStringDecoratorConfigInternal extends PropertyD
|
|
|
39
39
|
regex?: RegExp;
|
|
40
40
|
constructor(data: AutocompleteStringDecoratorConfig);
|
|
41
41
|
}
|
|
42
|
+
/**
|
|
43
|
+
* The internal PasswordStringDecoratorConfig. Sets default values.
|
|
44
|
+
*/
|
|
45
|
+
export declare class PasswordStringDecoratorConfigInternal extends PropertyDecoratorConfigInternal implements PasswordStringDecoratorConfig {
|
|
46
|
+
displayStyle: 'password';
|
|
47
|
+
minLength?: number;
|
|
48
|
+
maxLength?: number;
|
|
49
|
+
regex?: RegExp;
|
|
50
|
+
needsConfirmation: boolean;
|
|
51
|
+
confirmationDisplayName: string;
|
|
52
|
+
passwordsDontMatchErrorMessage: string;
|
|
53
|
+
constructor(data: PasswordStringDecoratorConfig);
|
|
54
|
+
}
|
|
@@ -7,7 +7,7 @@ declare abstract class StringDecoratorConfig extends PropertyDecoratorConfig {
|
|
|
7
7
|
/**
|
|
8
8
|
* How to display the string.
|
|
9
9
|
*/
|
|
10
|
-
displayStyle: 'line' | 'textbox' | 'autocomplete' | 'dropdown';
|
|
10
|
+
displayStyle: 'line' | 'textbox' | 'autocomplete' | 'dropdown' | 'password';
|
|
11
11
|
}
|
|
12
12
|
/**
|
|
13
13
|
* The configuration options for a string property displayed as a dropdown.
|
|
@@ -74,4 +74,40 @@ export interface AutocompleteStringDecoratorConfig extends StringDecoratorConfig
|
|
|
74
74
|
*/
|
|
75
75
|
regex?: RegExp;
|
|
76
76
|
}
|
|
77
|
+
/**
|
|
78
|
+
* The configuration options for a string property displayed in a password input.
|
|
79
|
+
*/
|
|
80
|
+
export interface PasswordStringDecoratorConfig extends StringDecoratorConfig {
|
|
81
|
+
displayStyle: 'password';
|
|
82
|
+
/**
|
|
83
|
+
* The minimum required length of the password.
|
|
84
|
+
*/
|
|
85
|
+
minLength?: number;
|
|
86
|
+
/**
|
|
87
|
+
* The maximum required length of the password.
|
|
88
|
+
*/
|
|
89
|
+
maxLength?: number;
|
|
90
|
+
/**
|
|
91
|
+
* A regex used for validation.
|
|
92
|
+
*/
|
|
93
|
+
regex?: RegExp;
|
|
94
|
+
/**
|
|
95
|
+
* Whether or not the password needs to be retyped.
|
|
96
|
+
*
|
|
97
|
+
* @default true
|
|
98
|
+
*/
|
|
99
|
+
needsConfirmation?: boolean;
|
|
100
|
+
/**
|
|
101
|
+
* The display name of the confirmation password input.
|
|
102
|
+
*
|
|
103
|
+
* @default 'Confirm Password'
|
|
104
|
+
*/
|
|
105
|
+
confirmationDisplayName?: string;
|
|
106
|
+
/**
|
|
107
|
+
* The error message to display when the password and the confirm password don't match.
|
|
108
|
+
*
|
|
109
|
+
* @default 'Passwords need to match!'
|
|
110
|
+
*/
|
|
111
|
+
passwordsDontMatchErrorMessage?: string;
|
|
112
|
+
}
|
|
77
113
|
export {};
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { AutocompleteStringDecoratorConfig, DefaultStringDecoratorConfig, DropdownStringDecoratorConfig, TextboxStringDecoratorConfig } from './string-decorator.data';
|
|
1
|
+
import { AutocompleteStringDecoratorConfig, DefaultStringDecoratorConfig, DropdownStringDecoratorConfig, PasswordStringDecoratorConfig, TextboxStringDecoratorConfig } from './string-decorator.data';
|
|
2
2
|
/**
|
|
3
3
|
* Decorator for setting and getting string Property metadata.
|
|
4
4
|
*
|
|
5
5
|
* @param metadata - The metadata of the string property.
|
|
6
6
|
* @returns The method that defines the metadata.
|
|
7
7
|
*/
|
|
8
|
-
export declare function string(metadata: DropdownStringDecoratorConfig | AutocompleteStringDecoratorConfig | DefaultStringDecoratorConfig | TextboxStringDecoratorConfig): (target: object, propertyKey: string) => void;
|
|
8
|
+
export declare function string(metadata: DropdownStringDecoratorConfig | AutocompleteStringDecoratorConfig | DefaultStringDecoratorConfig | TextboxStringDecoratorConfig | PasswordStringDecoratorConfig): (target: object, propertyKey: string) => void;
|
|
@@ -66,4 +66,4 @@ export class ReflectUtilities {
|
|
|
66
66
|
Reflect.defineMetadata(metadataKey, metadataValue, target, propertyKey);
|
|
67
67
|
}
|
|
68
68
|
}
|
|
69
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
69
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmbGVjdC51dGlsaXRpZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWF0ZXJpYWwtZW50aXR5L3NyYy9jYXBzdWxhdGlvbi9yZWZsZWN0LnV0aWxpdGllcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQTs7R0FFRztBQUNILE1BQU0sT0FBZ0IsZ0JBQWdCO0lBQ2xDOzs7Ozs7O09BT0c7SUFDSCxNQUFNLENBQUMsV0FBVyxDQUFtQixXQUFtQixFQUFFLE1BQVMsRUFBRSxXQUFvQjtRQUNyRixPQUFPLE9BQU8sQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLE1BQU0sRUFBRSxXQUFxQixDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILE1BQU0sQ0FBQyxPQUFPLENBQW1CLE1BQVM7UUFDdEMsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBZ0IsQ0FBQztJQUNsRCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsTUFBTSxDQUFDLEdBQUcsQ0FBbUIsTUFBUyxFQUFFLFdBQW9CO1FBQ3hELE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxNQUFNLENBQUMsR0FBRyxDQUFtQixNQUFTLEVBQUUsV0FBb0IsRUFBRSxLQUFjO1FBQ3hFLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxNQUFNLENBQUMsR0FBRyxDQUFtQixNQUFTLEVBQUUsV0FBb0I7UUFDeEQsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILE1BQU0sQ0FBQyxjQUFjLENBQ2pCLFdBQW9CLEVBQ3BCLGFBQXNCLEVBQ3RCLE1BQVMsRUFDVCxXQUFvQjtRQUVwQixPQUFPLENBQUMsY0FBYyxDQUFDLFdBQVcsRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLFdBQXFCLENBQUMsQ0FBQztJQUN0RixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJcbi8qKlxuICogRW5jYXBzdWxhdGVzIGFsbCBmdW5jdGlvbmFsaXR5IG9mIFJlZmxlY3QuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBSZWZsZWN0VXRpbGl0aWVzIHtcbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBtZXRhZGF0YSB2YWx1ZSBmb3IgdGhlIHByb3ZpZGVkIG1ldGFkYXRhIGtleSBvbiB0aGUgdGFyZ2V0IG9iamVjdCBvciBpdHMgcHJvdG90eXBlIGNoYWluLlxuICAgICAqXG4gICAgICogQHBhcmFtIG1ldGFkYXRhS2V5IC0gQSBrZXkgdXNlZCB0byBzdG9yZSBhbmQgcmV0cmlldmUgbWV0YWRhdGEuXG4gICAgICogQHBhcmFtIHRhcmdldCAtIFRoZSB0YXJnZXQgb2JqZWN0IG9uIHdoaWNoIHRoZSBtZXRhZGF0YSBpcyBkZWZpbmVkLlxuICAgICAqIEBwYXJhbSBwcm9wZXJ0eUtleSAtIFRoZSBwcm9wZXJ0eSBrZXkgZm9yIHRoZSB0YXJnZXQuXG4gICAgICogQHJldHVybnMgVGhlIG1ldGFkYXRhIHZhbHVlIGZvciB0aGUgbWV0YWRhdGEga2V5IGlmIGZvdW5kOyBvdGhlcndpc2UsIHVuZGVmaW5lZC5cbiAgICAgKi9cbiAgICBzdGF0aWMgZ2V0TWV0YWRhdGE8VCBleHRlbmRzIG9iamVjdD4obWV0YWRhdGFLZXk6IHN0cmluZywgdGFyZ2V0OiBULCBwcm9wZXJ0eUtleToga2V5b2YgVCk6IHVua25vd24ge1xuICAgICAgICByZXR1cm4gUmVmbGVjdC5nZXRNZXRhZGF0YShtZXRhZGF0YUtleSwgdGFyZ2V0LCBwcm9wZXJ0eUtleSBhcyBzdHJpbmcpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHN0cmluZyBhbmQgc3ltYm9sIGtleXMgb2YgdGhlIG93biBwcm9wZXJ0aWVzIG9mIGFuIG9iamVjdC4gVGhlIG93biBwcm9wZXJ0aWVzIG9mIGFuIG9iamVjdFxuICAgICAqIGFyZSB0aG9zZSB0aGF0IGFyZSBkZWZpbmVkIGRpcmVjdGx5IG9uIHRoYXQgb2JqZWN0LCBhbmQgYXJlIG5vdCBpbmhlcml0ZWQgZnJvbSB0aGUgb2JqZWN0J3MgcHJvdG90eXBlLlxuICAgICAqXG4gICAgICogQHBhcmFtIHRhcmdldCAtIE9iamVjdCB0aGF0IGNvbnRhaW5zIHRoZSBvd24gcHJvcGVydGllcy5cbiAgICAgKiBAcmV0dXJucyBUaGUga2V5cyBvZiB0aGUgZ2l2ZW4gb2JqZWN0LlxuICAgICAqL1xuICAgIHN0YXRpYyBvd25LZXlzPFQgZXh0ZW5kcyBvYmplY3Q+KHRhcmdldDogVCk6IChrZXlvZiBUKVtdIHtcbiAgICAgICAgcmV0dXJuIFJlZmxlY3Qub3duS2V5cyh0YXJnZXQpIGFzIChrZXlvZiBUKVtdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIHByb3BlcnR5IG9mIHRhcmdldCwgZXF1aXZhbGVudCB0byBgdGFyZ2V0W3Byb3BlcnR5S2V5XWAuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdGFyZ2V0IC0gT2JqZWN0IHRoYXQgY29udGFpbnMgdGhlIHByb3BlcnR5IG9uIGl0c2VsZiBvciBpbiBpdHMgcHJvdG90eXBlIGNoYWluLlxuICAgICAqIEBwYXJhbSBwcm9wZXJ0eUtleSAtIFRoZSBwcm9wZXJ0eSBuYW1lLlxuICAgICAqIEByZXR1cm5zIFRoZSBwcm9wZXJ0eSBvZiB0aGUgdGFyZ2V0IG9mIHRoZSBnaXZlbiBrZXkuXG4gICAgICovXG4gICAgc3RhdGljIGdldDxUIGV4dGVuZHMgb2JqZWN0Pih0YXJnZXQ6IFQsIHByb3BlcnR5S2V5OiBrZXlvZiBUKTogdW5rbm93biB7XG4gICAgICAgIHJldHVybiBSZWZsZWN0LmdldCh0YXJnZXQsIHByb3BlcnR5S2V5KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBwcm9wZXJ0eSBvZiB0YXJnZXQsIGVxdWl2YWxlbnQgdG8gYHRhcmdldFtwcm9wZXJ0eUtleV0gPSB2YWx1ZWAuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdGFyZ2V0IC0gT2JqZWN0IHRoYXQgY29udGFpbnMgdGhlIHByb3BlcnR5IG9uIGl0c2VsZiBvciBpbiBpdHMgcHJvdG90eXBlIGNoYWluLlxuICAgICAqIEBwYXJhbSBwcm9wZXJ0eUtleSAtIFRoZSBwcm9wZXJ0eSBuYW1lLlxuICAgICAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBzZXQgdGhlIHByb3BlcnR5IHRvLlxuICAgICAqIEByZXR1cm5zIElmIHNldHRpbmcgdGhlIHZhbHVlIHdhcyBzdWNjZXNzZnVsLlxuICAgICAqL1xuICAgIHN0YXRpYyBzZXQ8VCBleHRlbmRzIG9iamVjdD4odGFyZ2V0OiBULCBwcm9wZXJ0eUtleToga2V5b2YgVCwgdmFsdWU6IHVua25vd24pOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIFJlZmxlY3Quc2V0KHRhcmdldCwgcHJvcGVydHlLZXksIHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFcXVpdmFsZW50IHRvIGBwcm9wZXJ0eUtleSBpbiB0YXJnZXRgLlxuICAgICAqXG4gICAgICogQHBhcmFtIHRhcmdldCAtIE9iamVjdCB0aGF0IGNvbnRhaW5zIHRoZSBwcm9wZXJ0eSBvbiBpdHNlbGYgb3IgaW4gaXRzIHByb3RvdHlwZSBjaGFpbi5cbiAgICAgKiBAcGFyYW0gcHJvcGVydHlLZXkgLSBOYW1lIG9mIHRoZSBwcm9wZXJ0eS5cbiAgICAgKiBAcmV0dXJucyBXaGV0aGVyIG9yIG5vdCB0aGUgZ2l2ZW4gdGFyZ2V0IGhhcyB0aGUga2V5LlxuICAgICAqL1xuICAgIHN0YXRpYyBoYXM8VCBleHRlbmRzIG9iamVjdD4odGFyZ2V0OiBULCBwcm9wZXJ0eUtleToga2V5b2YgVCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gUmVmbGVjdC5oYXModGFyZ2V0LCBwcm9wZXJ0eUtleSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGVmaW5lIGEgdW5pcXVlIG1ldGFkYXRhIGVudHJ5IG9uIHRoZSB0YXJnZXQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbWV0YWRhdGFLZXkgLSBBIGtleSB1c2VkIHRvIHN0b3JlIGFuZCByZXRyaWV2ZSBtZXRhZGF0YS5cbiAgICAgKiBAcGFyYW0gbWV0YWRhdGFWYWx1ZSAtIEEgdmFsdWUgdGhhdCBjb250YWlucyBhdHRhY2hlZCBtZXRhZGF0YS5cbiAgICAgKiBAcGFyYW0gdGFyZ2V0IC0gVGhlIHRhcmdldCBvYmplY3Qgb24gd2hpY2ggdG8gZGVmaW5lIG1ldGFkYXRhLlxuICAgICAqIEBwYXJhbSBwcm9wZXJ0eUtleSAtIFRoZSBwcm9wZXJ0eSBrZXkgZm9yIHRoZSB0YXJnZXQuXG4gICAgICovXG4gICAgc3RhdGljIGRlZmluZU1ldGFkYXRhPFQgZXh0ZW5kcyBvYmplY3Q+KFxuICAgICAgICBtZXRhZGF0YUtleTogdW5rbm93bixcbiAgICAgICAgbWV0YWRhdGFWYWx1ZTogdW5rbm93bixcbiAgICAgICAgdGFyZ2V0OiBULFxuICAgICAgICBwcm9wZXJ0eUtleToga2V5b2YgVFxuICAgICk6IHZvaWQge1xuICAgICAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlLCB0YXJnZXQsIHByb3BlcnR5S2V5IGFzIHN0cmluZyk7XG4gICAgfVxufSJdfQ==
|
|
@@ -104,14 +104,14 @@ export class DateUtilities {
|
|
|
104
104
|
/**
|
|
105
105
|
* Get all valid times for the dropdown of a datetime property.
|
|
106
106
|
*
|
|
107
|
-
* @param date - The date of the datetime.
|
|
108
107
|
* @param times - All given times to filter.
|
|
108
|
+
* @param date - The date of the datetime.
|
|
109
109
|
* @param min - The function that defines the minimum time.
|
|
110
110
|
* @param max - The function that defines the maximum time.
|
|
111
111
|
* @param filter - A filter function to do more specific time filtering. This could be e.g. The removal of lunch breaks.
|
|
112
112
|
* @returns All valid dropdown values for the datetime property.
|
|
113
113
|
*/
|
|
114
|
-
static getValidTimesForDropdown(
|
|
114
|
+
static getValidTimesForDropdown(times, date, min, max, filter) {
|
|
115
115
|
if (min) {
|
|
116
116
|
const minTime = min(date);
|
|
117
117
|
times = times.filter(t => !t.value
|
|
@@ -155,4 +155,4 @@ export class DateUtilities {
|
|
|
155
155
|
* The default filter function to user when none was provided by the user.
|
|
156
156
|
*/
|
|
157
157
|
DateUtilities.defaultDateFilter = () => true;
|
|
158
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS51dGlsaXRpZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWF0ZXJpYWwtZW50aXR5L3NyYy9jbGFzc2VzL2RhdGUudXRpbGl0aWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUdsRSxNQUFNLFNBQVMsR0FBRyxJQUFJLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7QUFPdEM7O0dBRUc7QUFDSCxNQUFNLE9BQWdCLGFBQWE7SUFPL0I7Ozs7O09BS0c7SUFDSCxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQWM7UUFDeEIsT0FBTyxLQUFhLENBQUM7SUFDekIsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILE1BQU0sQ0FBQyxlQUFlLENBQUMsU0FBa0IsRUFBRSxFQUFFLGNBQTJCLEVBQUU7UUFDdEUsTUFBTSxHQUFHLEdBQTBCLENBQUMsRUFBRSxXQUFXLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxTQUE0QixFQUFDLENBQUMsQ0FBQztRQUM5RixLQUFLLElBQUksSUFBSSxHQUFHLENBQUMsRUFBRSxJQUFJLEdBQUcsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFO1lBQ2xDLEtBQUssSUFBSSxNQUFNLEdBQUcsQ0FBQyxFQUFFLE1BQU0sR0FBRyxFQUFFLEVBQUUsTUFBTSxJQUFJLFdBQVcsRUFBRTtnQkFDckQsR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsb0JBQW9CLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO2FBQ3RFO1NBQ0o7UUFDRCxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7SUFFTyxNQUFNLENBQUMsb0JBQW9CLENBQUMsTUFBZSxFQUFFLElBQVksRUFBRSxNQUFjO1FBQzdFLE1BQU0sV0FBVyxHQUFXLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxN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QUssQ0FBQztlQUN4QixJQUFJLENBQUMsT0FBTyxJQUFJLElBQUk7ZUFDcEIsT0FBTyxJQUFJLENBQUMsT0FBTyxLQUFLLFFBQVE7ZUFDaEMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQy9CO1lBQ0UsT0FBTyxJQUFJLENBQUM7U0FDZjtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7O0FBckxEOztHQUVHO0FBQ0ksK0JBQWlCLEdBQTBDLEdBQVksRUFBRSxDQUFDLElBQUksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRpbWUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRGF0ZUZpbHRlckZuIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGF0ZXBpY2tlcic7XG5pbXBvcnQgeyBMb2Rhc2hVdGlsaXRpZXMgfSBmcm9tICcuLi9jYXBzdWxhdGlvbi9sb2Rhc2gudXRpbGl0aWVzJztcbmltcG9ydCB7IERyb3Bkb3duVmFsdWUgfSBmcm9tICcuLi9kZWNvcmF0b3JzL2Jhc2UvZHJvcGRvd24tdmFsdWUuaW50ZXJmYWNlJztcblxuY29uc3QgREFZX0lOX01TID0gMTAwMCAqIDYwICogNjAgKiAyNDtcblxuLyoqXG4gKiBWYWxpZCBzdGVwcyBmcm9tIG9uZSB0aW1lIHZhbHVlIHRvIHRoZSBuZXh0LiBOZWVkcyB0byBiZSBhYmxlIHRvIGRpdmlkZSA2MCBtaW51dGVzIHdpdGhvdXQgcmVtYWluZGVyLlxuICovXG50eXBlIE1pbnV0ZVN0ZXBzID0gMSB8IDIgfCAzIHwgNCB8IDUgfCA2IHwgMTAgfCAxMiB8IDE1IHwgMjAgfCAzMCB8IDYwO1xuXG4vKipcbiAqIENvbnRhaW5zIEhlbHBlciBGdW5jdGlvbnMgZm9yIGhhbmRsaW5nIGRhdGUgcHJvcGVydGllcy5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIERhdGVVdGlsaXRpZXMge1xuXG4gICAgLyoqXG4gICAgICogVGhlIGRlZmF1bHQgZmlsdGVyIGZ1bmN0aW9uIHRvIHVzZXIgd2hlbiBub25lIHdhcyBwcm92aWRlZCBieSB0aGUgdXNlci5cbiAgICAgKi9cbiAgICBzdGF0aWMgZGVmYXVsdERhdGVGaWx0ZXI6IERhdGVGaWx0ZXJGbjxEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZD4gPSAoKTogYm9vbGVhbiA9PiB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgZ2l2ZW4gdmFsdWUgYXMgYSBkYXRlIHZhbHVlLlxuICAgICAqXG4gICAgICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIGdldCBhcyBhIGRhdGUuXG4gICAgICogQHJldHVybnMgVGhlIGdpdmVuIHZhbHVlIGFzIGEgZGF0ZS5cbiAgICAgKi9cbiAgICBzdGF0aWMgYXNEYXRlKHZhbHVlOiB1bmtub3duKTogRGF0ZSB7XG4gICAgICAgIHJldHVybiB2YWx1ZSBhcyBEYXRlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGRlZmF1bHQgdGltZXMgdXNlZCBieSB0aGUgRGF0ZVRpbWUgcGlja2VyIHdoZW4gbm90aGluZyBpcyBzcGVjaWZpZWQgYnkgdGhlIHVzZXIuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZm9ybWF0IC0gVGhlIHRpbWUgZm9ybWF0LiBEZWZhdWx0cyB0byAyNC5cbiAgICAgKiBAcGFyYW0gbWludXRlU3RlcHMgLSBUaGUgc3RlcHMgZnJvbSBvbmUgdGltZSB2YWx1ZSB0byB0aGUgbmV4dC4gRGVmYXVsdHMgdG8gMzAuXG4gICAgICogQHJldHVybnMgVGltZXMgaW4gdGhlIDI0IGhvdXIgZm9ybWF0IGZyb20gMDowMCB1bnRpbCAyMzozMCBpbiAzMCBtaW51dGUgc3RlcHMuXG4gICAgICovXG4gICAgc3RhdGljIGdldERlZmF1bHRUaW1lcyhmb3JtYXQ6IDEyIHwgMjQgPSAyNCwgbWludXRlU3RlcHM6IE1pbnV0ZVN0ZXBzID0gMzApOiBEcm9wZG93blZhbHVlPFRpbWU+W10ge1xuICAgICAgICBjb25zdCByZXM6IERyb3Bkb3duVmFsdWU8VGltZT5bXSA9IFt7IGRpc3BsYXlOYW1lOiAnLScsIHZhbHVlOiB1bmRlZmluZWQgYXMgdW5rbm93biBhcyBUaW1lfV07XG4gICAgICAgIGZvciAobGV0IGhvdXIgPSAwOyBob3VyIDwgMjQ7IGhvdXIrKykge1xuICAgICAgICAgICAgZm9yIChsZXQgbWludXRlID0gMDsgbWludXRlIDwgNjA7IG1pbnV0ZSArPSBtaW51dGVTdGVwcykge1xuICAgICAgICAgICAgICAgIHJlcy5wdXNoKERhdGVVdGlsaXRpZXMuZ2V0VGltZURyb3Bkb3duVmFsdWUoZm9ybWF0LCBob3VyLCBtaW51dGUpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIGdldFRpbWVEcm9wZG93blZhbHVlKGZvcm1hdDogMTIgfCAyNCwgaG91cjogbnVtYmVyLCBtaW51dGU6IG51bWJlcik6IERyb3Bkb3duVmFsdWU8VGltZT4ge1xuICAgICAgICBjb25zdCBkaXNwbGF5SG91cjogbnVtYmVyID0gRGF0ZVV0aWxpdGllcy5nZXRGb3JtYXR0ZWRIb3VyKGZvcm1hdCwgTG9kYXNoVXRpbGl0aWVzLmNsb25lRGVlcChob3VyKSk7XG4gICAgICAgIGNvbnN0IGRpc3BsYXlNaW51dGU6IHN0cmluZyA9IERhdGVVdGlsaXRpZXMuZ2V0Rm9ybWF0dGVkTWludXRlKGZvcm1hdCwgaG91ciwgbWludXRlKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGRpc3BsYXlOYW1lOiBgJHtkaXNwbGF5SG91cn06JHtkaXNwbGF5TWludXRlfWAsXG4gICAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgICAgIGhvdXJzOiBob3VyLFxuICAgICAgICAgICAgICAgIG1pbnV0ZXM6IG1pbnV0ZVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIGdldEZvcm1hdHRlZEhvdXIoZm9ybWF0OiAxMiB8IDI0LCBob3VyOiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICBpZiAoZm9ybWF0ID09PSAxMiAmJiBob3VyID4gMTIpIHtcbiAgICAgICAgICAgIGhvdXIgLT0gMTI7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGhvdXI7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgZ2V0Rm9ybWF0dGVkTWludXRlKGZvcm1hdDogMTIgfCAyNCwgaG91cjogbnVtYmVyLCBtaW51dGU6IG51bWJlcik6IHN0cmluZyB7XG4gICAgICAgIGxldCByZXMgPSBgJHttaW51dGV9YDtcbiAgICAgICAgaWYgKGZvcm1hdCA9PT0gMTIpIHtcbiAgICAgICAgICAgIGlmIChob3VyID4gMTIpIHtcbiAgICAgICAgICAgICAgICByZXMgPSBgJHttaW51dGV9IFBNYDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlcyA9IGAke21pbnV0ZX0gQU1gO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChtaW51dGUudG9TdHJpbmcoKS5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIHJlcyA9ICcwJy5jb25jYXQocmVzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIFRpbWUgb2JqZWN0IGZyb20gdGhlIGdpdmVuIGRhdGUuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdmFsdWUgLSBUaGUgZGF0ZSB0byBnZXQgdGhlIHRpbWUgb2JqZWN0IGZyb20uXG4gICAgICogQHJldHVybnMgVGhlIFRpbWUgb2JqZWN0IGJ1aWxkIGZyb20gdGhlIGRhdGUgdmFsdWUuXG4gICAgICovXG4gICAgc3RhdGljIGdldFRpbWVGcm9tRGF0ZSh2YWx1ZTogRGF0ZSk6IFRpbWUgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoISh2YWx1ZSBhcyBEYXRlIHwgdW5kZWZpbmVkKSkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgaG91cnM6IG5ldyBEYXRlKHZhbHVlKS5nZXRIb3VycygpLFxuICAgICAgICAgICAgICAgIG1pbnV0ZXM6IG5ldyBEYXRlKHZhbHVlKS5nZXRNaW51dGVzKClcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBkYXRlcyBiZXR3ZWVuIHRoZSB0d28gZ2l2ZW4gZ2F0ZXMuIERvZXMgYWRkaXRpb25hbCBmaWx0ZXJpbmcgYmFzZWQgb24gdGhlIHByb3ZpZGVkIERhdGVSYW5nZSBtZXRhZGF0YS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBzdGFydERhdGUgLSBUaGUgc3RhcnQgZGF0ZS5cbiAgICAgKiBAcGFyYW0gZW5kRGF0ZSAtIFRoZSBlbmQgZGF0ZS5cbiAgICAgKiBAcGFyYW0gZmlsdGVyIC0gVGhlIGN1c3RvbSBmaWx0ZXIgZnJvbSB0aGUgbWV0YWRhdGEuXG4gICAgICogQHJldHVybnMgQWxsIGRhdGVzIGJldHdlZW4gdGhlIHR3byBwcm92aWRlZCBkYXRlcy4gSW5jbHVkZXMgc3RhcnQgYW5kIGVuZCBkYXRlLlxuICAgICAqL1xuICAgIHN0YXRpYyBnZXREYXRlc0JldHdlZW4oXG4gICAgICAgIHN0YXJ0RGF0ZTogRGF0ZSxcbiAgICAgICAgZW5kRGF0ZTogRGF0ZSxcbiAgICAgICAgZmlsdGVyPzogRGF0ZUZpbHRlckZuPERhdGU+XG4gICAgKTogRGF0ZVtdIHtcbiAgICAgICAgY29uc3QgcmVzOiBEYXRlW10gPSBbXTtcbiAgICAgICAgd2hpbGUgKFxuICAgICAgICAgICAgc3RhcnREYXRlLmdldEZ1bGxZZWFyKCkgPCBlbmREYXRlLmdldEZ1bGxZZWFyKClcbiAgICAgICAgICAgIHx8IHN0YXJ0RGF0ZS5nZXRNb250aCgpIDwgZW5kRGF0ZS5nZXRNb250aCgpXG4gICAgICAgICAgICB8fCBzdGFydERhdGUuZ2V0RGF0ZSgpIDw9IGVuZERhdGUuZ2V0RGF0ZSgpXG4gICAgICAgICkge1xuICAgICAgICAgICAgcmVzLnB1c2gobmV3IERhdGUoc3RhcnREYXRlKSk7XG4gICAgICAgICAgICBzdGFydERhdGUuc2V0VGltZShzdGFydERhdGUuZ2V0VGltZSgpICsgREFZX0lOX01TKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZmlsdGVyKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzLmZpbHRlcihkID0+IGZpbHRlcihkKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IGFsbCB2YWxpZCB0aW1lcyBmb3IgdGhlIGRyb3Bkb3duIG9mIGEgZGF0ZXRpbWUgcHJvcGVydHkuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZGF0ZSAtIFRoZSBkYXRlIG9mIHRoZSBkYXRldGltZS5cbiAgICAgKiBAcGFyYW0gdGltZXMgLSBBbGwgZ2l2ZW4gdGltZXMgdG8gZmlsdGVyLlxuICAgICAqIEBwYXJhbSBtaW4gLSBUaGUgZnVuY3Rpb24gdGhhdCBkZWZpbmVzIHRoZSBtaW5pbXVtIHRpbWUuXG4gICAgICogQHBhcmFtIG1heCAtIFRoZSBmdW5jdGlvbiB0aGF0IGRlZmluZXMgdGhlIG1heGltdW0gdGltZS5cbiAgICAgKiBAcGFyYW0gZmlsdGVyIC0gQSBmaWx0ZXIgZnVuY3Rpb24gdG8gZG8gbW9yZSBzcGVjaWZpYyB0aW1lIGZpbHRlcmluZy4gVGhpcyBjb3VsZCBiZSBlLmcuIFRoZSByZW1vdmFsIG9mIGx1bmNoIGJyZWFrcy5cbiAgICAgKiBAcmV0dXJucyBBbGwgdmFsaWQgZHJvcGRvd24gdmFsdWVzIGZvciB0aGUgZGF0ZXRpbWUgcHJvcGVydHkuXG4gICAgICovXG4gICAgc3RhdGljIGdldFZhbGlkVGltZXNGb3JEcm9wZG93bihcbiAgICAgICAgZGF0ZTogRGF0ZSxcbiAgICAgICAgdGltZXM6IERyb3Bkb3duVmFsdWU8VGltZT5bXSxcbiAgICAgICAgbWluPzogKGRhdGU/OiBEYXRlKSA9PiBUaW1lLFxuICAgICAgICBtYXg/OiAoZGF0ZT86IERhdGUpID0+IFRpbWUsXG4gICAgICAgIGZpbHRlcj86ICgodGltZTogVGltZSkgPT4gYm9vbGVhbikgfCAoKCkgPT4gYm9vbGVhbilcbiAgICApOiBEcm9wZG93blZhbHVlPFRpbWU+W10ge1xuICAgICAgICBpZiAobWluKSB7XG4gICAgICAgICAgICBjb25zdCBtaW5UaW1lOiBUaW1lID0gbWluKGRhdGUpO1xuICAgICAgICAgICAgdGltZXMgPSB0aW1lcy5maWx0ZXIodCA9PlxuICAgICAgICAgICAgICAgICEodC52YWx1ZSBhcyBUaW1lIHwgdW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgIHx8IHQudmFsdWUuaG91cnMgPiBtaW5UaW1lLmhvdXJzXG4gICAgICAgICAgICAgICAgfHwgKFxuICAgICAgICAgICAgICAgICAgICB0LnZhbHVlLmhvdXJzID09PSBtaW5UaW1lLmhvdXJzXG4gICAgICAgICAgICAgICAgICAgICYmIHQudmFsdWUubWludXRlcyA+PSBtaW5UaW1lLm1pbnV0ZXNcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChtYXgpIHtcbiAgICAgICAgICAgIGNvbnN0IG1heFRpbWU6IFRpbWUgPSBtYXgoZGF0ZSk7XG4gICAgICAgICAgICB0aW1lcyA9IHRpbWVzLmZpbHRlcih0ID0+XG4gICAgICAgICAgICAgICAgISh0LnZhbHVlIGFzIFRpbWUgfCB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgfHwgdC52YWx1ZS5ob3VycyA8IG1heFRpbWUuaG91cnNcbiAgICAgICAgICAgICAgICB8fCAoXG4gICAgICAgICAgICAgICAgICAgIHQudmFsdWUuaG91cnMgPT09IG1heFRpbWUuaG91cnNcbiAgICAgICAgICAgICAgICAgICAgJiYgdC52YWx1ZS5taW51dGVzIDw9IG1heFRpbWUubWludXRlc1xuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZpbHRlcikge1xuICAgICAgICAgICAgdGltZXMgPSB0aW1lcy5maWx0ZXIodCA9PiAhKHQudmFsdWUgYXMgVGltZSB8IHVuZGVmaW5lZCkgfHwgZmlsdGVyKHQudmFsdWUpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aW1lcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgdGhlIHRpbWUgb2JqZWN0IGhhcyBwcm9jZXNzYWJsZSBob3VycyBhbmQgbWludXRlcyBwcm9wZXJ0aWVzLlxuICAgICAqIERvZXNuJ3QgY2hlY2sgY3VzdG9tIHZhbGlkYXRvcnMgbGlrZSBtaW4vbWF4IGZyb20gdGhlIG1ldGFkYXRhIGNvbmZpZ3VyYXRpb24uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdGltZSAtIFRoZSB0aW1lIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIFdoZXRoZXIgb3Igbm90IHRoZSB0aW1lIG9iamVjdCBpcyB1bnByb2Nlc3NhYmxlLlxuICAgICAqL1xuICAgIHN0YXRpYyB0aW1lSXNVbnByb2Nlc3NhYmxlKHRpbWU/OiBUaW1lKTogYm9vbGVhbiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgICF0aW1lXG4gICAgICAgICAgICB8fCB0aW1lLmhvdXJzID09IG51bGxcbiAgICAgICAgICAgIHx8IHR5cGVvZiB0aW1lLmhvdXJzICE9PSAnbnVtYmVyJ1xuICAgICAgICAgICAgfHwgTnVtYmVyLmlzTmFOKHRpbWUuaG91cnMpXG4gICAgICAgICAgICB8fCB0aW1lLm1pbnV0ZXMgPT0gbnVsbFxuICAgICAgICAgICAgfHwgdHlwZW9mIHRpbWUubWludXRlcyAhPT0gJ251bWJlcidcbiAgICAgICAgICAgIHx8IE51bWJlci5pc05hTih0aW1lLm1pbnV0ZXMpXG4gICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbn0iXX0=
|
|
158
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS51dGlsaXRpZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWF0ZXJpYWwtZW50aXR5L3NyYy9jbGFzc2VzL2RhdGUudXRpbGl0aWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUdsRSxNQUFNLFNBQVMsR0FBRyxJQUFJLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7QUFPdEM7O0dBRUc7QUFDSCxNQUFNLE9BQWdCLGFBQWE7SUFPL0I7Ozs7O09BS0c7SUFDSCxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQWM7UUFDeEIsT0FBTyxLQUFhLENBQUM7SUFDekIsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILE1BQU0sQ0FBQyxlQUFlLENBQUMsU0FBa0IsRUFBRSxFQUFFLGNBQTJCLEVBQUU7UUFDdEUsTUFBTSxHQUFHLEdBQTBCLENBQUMsRUFBRSxXQUFXLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxTQUE0QixFQUFDLENBQUMsQ0FBQztRQUM5RixLQUFLLElBQUksSUFBSSxHQUFHLENBQUMsRUFBRSxJQUFJLEdBQUcsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFO1lBQ2xDLEtBQUssSUFBSSxNQUFNLEdBQUcsQ0FBQyxFQUFFLE1BQU0sR0FBRyxFQUFFLEVBQUUsTUFBTSxJQUFJLFdBQVcsRUFBRTtnQkFDckQsR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsb0JBQW9CLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO2FBQ3RFO1NBQ0o7UUFDRCxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7SUFFTyxNQUFNLENBQUMsb0JBQW9CLENBQUMsTUFBZSxFQUFFLElBQVksRUFBRSxNQUFjO1FBQzdFLE1BQU0sV0FBVyxHQUFXLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxN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LENBQUM7ZUFDeEIsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJO2VBQ3BCLE9BQU8sSUFBSSxDQUFDLE9BQU8sS0FBSyxRQUFRO2VBQ2hDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUMvQjtZQUNFLE9BQU8sSUFBSSxDQUFDO1NBQ2Y7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDOztBQXJMRDs7R0FFRztBQUNJLCtCQUFpQixHQUEwQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUaW1lIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IERhdGVGaWx0ZXJGbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RhdGVwaWNrZXInO1xuaW1wb3J0IHsgTG9kYXNoVXRpbGl0aWVzIH0gZnJvbSAnLi4vY2Fwc3VsYXRpb24vbG9kYXNoLnV0aWxpdGllcyc7XG5pbXBvcnQgeyBEcm9wZG93blZhbHVlIH0gZnJvbSAnLi4vZGVjb3JhdG9ycy9iYXNlL2Ryb3Bkb3duLXZhbHVlLmludGVyZmFjZSc7XG5cbmNvbnN0IERBWV9JTl9NUyA9IDEwMDAgKiA2MCAqIDYwICogMjQ7XG5cbi8qKlxuICogVmFsaWQgc3RlcHMgZnJvbSBvbmUgdGltZSB2YWx1ZSB0byB0aGUgbmV4dC4gTmVlZHMgdG8gYmUgYWJsZSB0byBkaXZpZGUgNjAgbWludXRlcyB3aXRob3V0IHJlbWFpbmRlci5cbiAqL1xudHlwZSBNaW51dGVTdGVwcyA9IDEgfCAyIHwgMyB8IDQgfCA1IHwgNiB8IDEwIHwgMTIgfCAxNSB8IDIwIHwgMzAgfCA2MDtcblxuLyoqXG4gKiBDb250YWlucyBIZWxwZXIgRnVuY3Rpb25zIGZvciBoYW5kbGluZyBkYXRlIHByb3BlcnRpZXMuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBEYXRlVXRpbGl0aWVzIHtcblxuICAgIC8qKlxuICAgICAqIFRoZSBkZWZhdWx0IGZpbHRlciBmdW5jdGlvbiB0byB1c2VyIHdoZW4gbm9uZSB3YXMgcHJvdmlkZWQgYnkgdGhlIHVzZXIuXG4gICAgICovXG4gICAgc3RhdGljIGRlZmF1bHREYXRlRmlsdGVyOiBEYXRlRmlsdGVyRm48RGF0ZSB8IG51bGwgfCB1bmRlZmluZWQ+ID0gKCkgPT4gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGdpdmVuIHZhbHVlIGFzIGEgZGF0ZSB2YWx1ZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBnZXQgYXMgYSBkYXRlLlxuICAgICAqIEByZXR1cm5zIFRoZSBnaXZlbiB2YWx1ZSBhcyBhIGRhdGUuXG4gICAgICovXG4gICAgc3RhdGljIGFzRGF0ZSh2YWx1ZTogdW5rbm93bik6IERhdGUge1xuICAgICAgICByZXR1cm4gdmFsdWUgYXMgRGF0ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBkZWZhdWx0IHRpbWVzIHVzZWQgYnkgdGhlIERhdGVUaW1lIHBpY2tlciB3aGVuIG5vdGhpbmcgaXMgc3BlY2lmaWVkIGJ5IHRoZSB1c2VyLlxuICAgICAqXG4gICAgICogQHBhcmFtIGZvcm1hdCAtIFRoZSB0aW1lIGZvcm1hdC4gRGVmYXVsdHMgdG8gMjQuXG4gICAgICogQHBhcmFtIG1pbnV0ZVN0ZXBzIC0gVGhlIHN0ZXBzIGZyb20gb25lIHRpbWUgdmFsdWUgdG8gdGhlIG5leHQuIERlZmF1bHRzIHRvIDMwLlxuICAgICAqIEByZXR1cm5zIFRpbWVzIGluIHRoZSAyNCBob3VyIGZvcm1hdCBmcm9tIDA6MDAgdW50aWwgMjM6MzAgaW4gMzAgbWludXRlIHN0ZXBzLlxuICAgICAqL1xuICAgIHN0YXRpYyBnZXREZWZhdWx0VGltZXMoZm9ybWF0OiAxMiB8IDI0ID0gMjQsIG1pbnV0ZVN0ZXBzOiBNaW51dGVTdGVwcyA9IDMwKTogRHJvcGRvd25WYWx1ZTxUaW1lPltdIHtcbiAgICAgICAgY29uc3QgcmVzOiBEcm9wZG93blZhbHVlPFRpbWU+W10gPSBbeyBkaXNwbGF5TmFtZTogJy0nLCB2YWx1ZTogdW5kZWZpbmVkIGFzIHVua25vd24gYXMgVGltZX1dO1xuICAgICAgICBmb3IgKGxldCBob3VyID0gMDsgaG91ciA8IDI0OyBob3VyKyspIHtcbiAgICAgICAgICAgIGZvciAobGV0IG1pbnV0ZSA9IDA7IG1pbnV0ZSA8IDYwOyBtaW51dGUgKz0gbWludXRlU3RlcHMpIHtcbiAgICAgICAgICAgICAgICByZXMucHVzaChEYXRlVXRpbGl0aWVzLmdldFRpbWVEcm9wZG93blZhbHVlKGZvcm1hdCwgaG91ciwgbWludXRlKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBnZXRUaW1lRHJvcGRvd25WYWx1ZShmb3JtYXQ6IDEyIHwgMjQsIGhvdXI6IG51bWJlciwgbWludXRlOiBudW1iZXIpOiBEcm9wZG93blZhbHVlPFRpbWU+IHtcbiAgICAgICAgY29uc3QgZGlzcGxheUhvdXI6IG51bWJlciA9IERhdGVVdGlsaXRpZXMuZ2V0Rm9ybWF0dGVkSG91cihmb3JtYXQsIExvZGFzaFV0aWxpdGllcy5jbG9uZURlZXAoaG91cikpO1xuICAgICAgICBjb25zdCBkaXNwbGF5TWludXRlOiBzdHJpbmcgPSBEYXRlVXRpbGl0aWVzLmdldEZvcm1hdHRlZE1pbnV0ZShmb3JtYXQsIGhvdXIsIG1pbnV0ZSk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBkaXNwbGF5TmFtZTogYCR7ZGlzcGxheUhvdXJ9OiR7ZGlzcGxheU1pbnV0ZX1gLFxuICAgICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgICAgICBob3VyczogaG91cixcbiAgICAgICAgICAgICAgICBtaW51dGVzOiBtaW51dGVcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBnZXRGb3JtYXR0ZWRIb3VyKGZvcm1hdDogMTIgfCAyNCwgaG91cjogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgaWYgKGZvcm1hdCA9PT0gMTIgJiYgaG91ciA+IDEyKSB7XG4gICAgICAgICAgICBob3VyIC09IDEyO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBob3VyO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIGdldEZvcm1hdHRlZE1pbnV0ZShmb3JtYXQ6IDEyIHwgMjQsIGhvdXI6IG51bWJlciwgbWludXRlOiBudW1iZXIpOiBzdHJpbmcge1xuICAgICAgICBsZXQgcmVzID0gYCR7bWludXRlfWA7XG4gICAgICAgIGlmIChmb3JtYXQgPT09IDEyKSB7XG4gICAgICAgICAgICBpZiAoaG91ciA+IDEyKSB7XG4gICAgICAgICAgICAgICAgcmVzID0gYCR7bWludXRlfSBQTWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXMgPSBgJHttaW51dGV9IEFNYDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAobWludXRlLnRvU3RyaW5nKCkubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICByZXMgPSAnMCcuY29uY2F0KHJlcyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBUaW1lIG9iamVjdCBmcm9tIHRoZSBnaXZlbiBkYXRlLlxuICAgICAqXG4gICAgICogQHBhcmFtIHZhbHVlIC0gVGhlIGRhdGUgdG8gZ2V0IHRoZSB0aW1lIG9iamVjdCBmcm9tLlxuICAgICAqIEByZXR1cm5zIFRoZSBUaW1lIG9iamVjdCBidWlsZCBmcm9tIHRoZSBkYXRlIHZhbHVlLlxuICAgICAqL1xuICAgIHN0YXRpYyBnZXRUaW1lRnJvbURhdGUodmFsdWU/OiBEYXRlKTogVGltZSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGhvdXJzOiBuZXcgRGF0ZSh2YWx1ZSkuZ2V0SG91cnMoKSxcbiAgICAgICAgICAgICAgICBtaW51dGVzOiBuZXcgRGF0ZSh2YWx1ZSkuZ2V0TWludXRlcygpXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgZGF0ZXMgYmV0d2VlbiB0aGUgdHdvIGdpdmVuIGdhdGVzLiBEb2VzIGFkZGl0aW9uYWwgZmlsdGVyaW5nIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBEYXRlUmFuZ2UgbWV0YWRhdGEuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gc3RhcnREYXRlIC0gVGhlIHN0YXJ0IGRhdGUuXG4gICAgICogQHBhcmFtIGVuZERhdGUgLSBUaGUgZW5kIGRhdGUuXG4gICAgICogQHBhcmFtIGZpbHRlciAtIFRoZSBjdXN0b20gZmlsdGVyIGZyb20gdGhlIG1ldGFkYXRhLlxuICAgICAqIEByZXR1cm5zIEFsbCBkYXRlcyBiZXR3ZWVuIHRoZSB0d28gcHJvdmlkZWQgZGF0ZXMuIEluY2x1ZGVzIHN0YXJ0IGFuZCBlbmQgZGF0ZS5cbiAgICAgKi9cbiAgICBzdGF0aWMgZ2V0RGF0ZXNCZXR3ZWVuKFxuICAgICAgICBzdGFydERhdGU6IERhdGUsXG4gICAgICAgIGVuZERhdGU6IERhdGUsXG4gICAgICAgIGZpbHRlcj86IERhdGVGaWx0ZXJGbjxEYXRlPlxuICAgICk6IERhdGVbXSB7XG4gICAgICAgIGNvbnN0IHJlczogRGF0ZVtdID0gW107XG4gICAgICAgIHdoaWxlIChcbiAgICAgICAgICAgIHN0YXJ0RGF0ZS5nZXRGdWxsWWVhcigpIDwgZW5kRGF0ZS5nZXRGdWxsWWVhcigpXG4gICAgICAgICAgICB8fCBzdGFydERhdGUuZ2V0TW9udGgoKSA8IGVuZERhdGUuZ2V0TW9udGgoKVxuICAgICAgICAgICAgfHwgc3RhcnREYXRlLmdldERhdGUoKSA8PSBlbmREYXRlLmdldERhdGUoKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHJlcy5wdXNoKG5ldyBEYXRlKHN0YXJ0RGF0ZSkpO1xuICAgICAgICAgICAgc3RhcnREYXRlLnNldFRpbWUoc3RhcnREYXRlLmdldFRpbWUoKSArIERBWV9JTl9NUyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZpbHRlcikge1xuICAgICAgICAgICAgcmV0dXJuIHJlcy5maWx0ZXIoZCA9PiBmaWx0ZXIoZCkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCBhbGwgdmFsaWQgdGltZXMgZm9yIHRoZSBkcm9wZG93biBvZiBhIGRhdGV0aW1lIHByb3BlcnR5LlxuICAgICAqXG4gICAgICogQHBhcmFtIHRpbWVzIC0gQWxsIGdpdmVuIHRpbWVzIHRvIGZpbHRlci5cbiAgICAgKiBAcGFyYW0gZGF0ZSAtIFRoZSBkYXRlIG9mIHRoZSBkYXRldGltZS5cbiAgICAgKiBAcGFyYW0gbWluIC0gVGhlIGZ1bmN0aW9uIHRoYXQgZGVmaW5lcyB0aGUgbWluaW11bSB0aW1lLlxuICAgICAqIEBwYXJhbSBtYXggLSBUaGUgZnVuY3Rpb24gdGhhdCBkZWZpbmVzIHRoZSBtYXhpbXVtIHRpbWUuXG4gICAgICogQHBhcmFtIGZpbHRlciAtIEEgZmlsdGVyIGZ1bmN0aW9uIHRvIGRvIG1vcmUgc3BlY2lmaWMgdGltZSBmaWx0ZXJpbmcuIFRoaXMgY291bGQgYmUgZS5nLiBUaGUgcmVtb3ZhbCBvZiBsdW5jaCBicmVha3MuXG4gICAgICogQHJldHVybnMgQWxsIHZhbGlkIGRyb3Bkb3duIHZhbHVlcyBmb3IgdGhlIGRhdGV0aW1lIHByb3BlcnR5LlxuICAgICAqL1xuICAgIHN0YXRpYyBnZXRWYWxpZFRpbWVzRm9yRHJvcGRvd24oXG4gICAgICAgIHRpbWVzOiBEcm9wZG93blZhbHVlPFRpbWU+W10sXG4gICAgICAgIGRhdGU/OiBEYXRlLFxuICAgICAgICBtaW4/OiAoZGF0ZT86IERhdGUpID0+IFRpbWUsXG4gICAgICAgIG1heD86IChkYXRlPzogRGF0ZSkgPT4gVGltZSxcbiAgICAgICAgZmlsdGVyPzogKCh0aW1lOiBUaW1lKSA9PiBib29sZWFuKSB8ICgoKSA9PiBib29sZWFuKVxuICAgICk6IERyb3Bkb3duVmFsdWU8VGltZT5bXSB7XG4gICAgICAgIGlmIChtaW4pIHtcbiAgICAgICAgICAgIGNvbnN0IG1pblRpbWU6IFRpbWUgPSBtaW4oZGF0ZSk7XG4gICAgICAgICAgICB0aW1lcyA9IHRpbWVzLmZpbHRlcih0ID0+XG4gICAgICAgICAgICAgICAgISh0LnZhbHVlIGFzIFRpbWUgfCB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgfHwgdC52YWx1ZS5ob3VycyA+IG1pblRpbWUuaG91cnNcbiAgICAgICAgICAgICAgICB8fCAoXG4gICAgICAgICAgICAgICAgICAgIHQudmFsdWUuaG91cnMgPT09IG1pblRpbWUuaG91cnNcbiAgICAgICAgICAgICAgICAgICAgJiYgdC52YWx1ZS5taW51dGVzID49IG1pblRpbWUubWludXRlc1xuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1heCkge1xuICAgICAgICAgICAgY29uc3QgbWF4VGltZTogVGltZSA9IG1heChkYXRlKTtcbiAgICAgICAgICAgIHRpbWVzID0gdGltZXMuZmlsdGVyKHQgPT5cbiAgICAgICAgICAgICAgICAhKHQudmFsdWUgYXMgVGltZSB8IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICB8fCB0LnZhbHVlLmhvdXJzIDwgbWF4VGltZS5ob3Vyc1xuICAgICAgICAgICAgICAgIHx8IChcbiAgICAgICAgICAgICAgICAgICAgdC52YWx1ZS5ob3VycyA9PT0gbWF4VGltZS5ob3Vyc1xuICAgICAgICAgICAgICAgICAgICAmJiB0LnZhbHVlLm1pbnV0ZXMgPD0gbWF4VGltZS5taW51dGVzXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZmlsdGVyKSB7XG4gICAgICAgICAgICB0aW1lcyA9IHRpbWVzLmZpbHRlcih0ID0+ICEodC52YWx1ZSBhcyBUaW1lIHwgdW5kZWZpbmVkKSB8fCBmaWx0ZXIodC52YWx1ZSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRpbWVzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiB0aGUgdGltZSBvYmplY3QgaGFzIHByb2Nlc3NhYmxlIGhvdXJzIGFuZCBtaW51dGVzIHByb3BlcnRpZXMuXG4gICAgICogRG9lc24ndCBjaGVjayBjdXN0b20gdmFsaWRhdG9ycyBsaWtlIG1pbi9tYXggZnJvbSB0aGUgbWV0YWRhdGEgY29uZmlndXJhdGlvbi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB0aW1lIC0gVGhlIHRpbWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMgV2hldGhlciBvciBub3QgdGhlIHRpbWUgb2JqZWN0IGlzIHVucHJvY2Vzc2FibGUuXG4gICAgICovXG4gICAgc3RhdGljIHRpbWVJc1VucHJvY2Vzc2FibGUodGltZT86IFRpbWUpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgIXRpbWVcbiAgICAgICAgICAgIHx8IHRpbWUuaG91cnMgPT0gbnVsbFxuICAgICAgICAgICAgfHwgdHlwZW9mIHRpbWUuaG91cnMgIT09ICdudW1iZXInXG4gICAgICAgICAgICB8fCBOdW1iZXIuaXNOYU4odGltZS5ob3VycylcbiAgICAgICAgICAgIHx8IHRpbWUubWludXRlcyA9PSBudWxsXG4gICAgICAgICAgICB8fCB0eXBlb2YgdGltZS5taW51dGVzICE9PSAnbnVtYmVyJ1xuICAgICAgICAgICAgfHwgTnVtYmVyLmlzTmFOKHRpbWUubWludXRlcylcbiAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxufSJdfQ==
|
|
@@ -20,4 +20,4 @@ __decorate([
|
|
|
20
20
|
}),
|
|
21
21
|
__metadata("design:type", String)
|
|
22
22
|
], Entity.prototype, "id", void 0);
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5Lm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW1hdGVyaWFsLWVudGl0eS9zcmMvY2xhc3Nlcy9lbnRpdHkubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUMvRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFZckQ7O0dBRUc7QUFDSCxNQUFNLE9BQWdCLE1BQU07SUFjeEIsWUFBWSxNQUFlO1FBQ3ZCLGVBQWUsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3RDLENBQUM7Q0FDSjtBQUxHO0lBUkMsTUFBTSxDQUFDO1FBQ0osYUFBYSxFQUFFLElBQUk7UUFDbkIsYUFBYSxFQUFFLElBQUk7UUFDbkIsT0FBTyxFQUFFLEtBQUs7UUFDZCxZQUFZLEVBQUUsTUFBTTtRQUNwQixXQUFXLEVBQUUsSUFBSTtRQUNqQixRQUFRLEVBQUUsSUFBSTtLQUNqQixDQUFDOztrQ0FDbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzdHJpbmcgfSBmcm9tICcuLi9kZWNvcmF0b3JzL3N0cmluZy9zdHJpbmcuZGVjb3JhdG9yJztcbmltcG9ydCB7IEVudGl0eVV0aWxpdGllcyB9IGZyb20gJy4vZW50aXR5LnV0aWxpdGllcyc7XG5cbi8qKlxuICogVGhlIG5ld2FibGUgdHlwZSB1c2VkIHdoZW5ldmVyIGFuIGVudGl0eSBjbGFzcyBpcyBwYXNzZWQgdG8gY3JlYXRlIGFuIGVudGl0eSBhbmQgaW5pdGlhbGl6ZSBpdHMgbWV0YWRhdGEuXG4gKi9cbmV4cG9ydCB0eXBlIEVudGl0eUNsYXNzTmV3YWJsZTxFbnRpdHlUeXBlIGV4dGVuZHMgQmFzZUVudGl0eVR5cGU8RW50aXR5VHlwZT4+ID0gbmV3KGRhdGE/OiBFbnRpdHlUeXBlKSA9PiBFbnRpdHlUeXBlO1xuXG4vKipcbiAqIFRoZSBHZW5lcmljIEJhc2UgRW50aXR5VHlwZS5cbiAqL1xuZXhwb3J0IHR5cGUgQmFzZUVudGl0eVR5cGU8VD4gPSB7IFtLIGluIGtleW9mIFRdOiB1bmtub3duIH07XG5cbi8qKlxuICogQSBiYXNlIEVudGl0eSBjbGFzcyB3aXRoIGEgYnVpbHRpbiBpZC5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEVudGl0eSB7XG4gICAgLyoqXG4gICAgICogQSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIEVudGl0eS5cbiAgICAgKi9cbiAgICBAc3RyaW5nKHtcbiAgICAgICAgb21pdEZvckNyZWF0ZTogdHJ1ZSxcbiAgICAgICAgb21pdEZvclVwZGF0ZTogdHJ1ZSxcbiAgICAgICAgZGlzcGxheTogZmFsc2UsXG4gICAgICAgIGRpc3BsYXlTdHlsZTogJ2xpbmUnLFxuICAgICAgICBkaXNwbGF5TmFtZTogJ0lEJyxcbiAgICAgICAgcmVxdWlyZWQ6IHRydWVcbiAgICB9KVxuICAgIHJlYWRvbmx5IGlkITogc3RyaW5nO1xuXG4gICAgY29uc3RydWN0b3IoZW50aXR5PzogRW50aXR5KSB7XG4gICAgICAgIEVudGl0eVV0aWxpdGllcy5uZXcodGhpcywgZW50aXR5KTtcbiAgICB9XG59Il19
|