@decaf-ts/for-angular 0.0.9 → 0.0.10
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/dist/{lib/components → components}/empty-state/empty-state.component.d.ts +3 -3
- package/dist/{lib/components → components}/fieldset/fieldset.component.d.ts +1 -1
- package/dist/{lib/components → components}/filter/filter.component.d.ts +2 -2
- package/dist/{lib/components → components}/layout/layout.component.d.ts +2 -2
- package/dist/{lib/components → components}/list/list.component.d.ts +3 -3
- package/dist/{lib/components → components}/list-item/list-item.component.d.ts +3 -3
- package/dist/{lib/components → components}/model-renderer/model-renderer.component.d.ts +1 -1
- package/dist/{lib/components → components}/pagination/constants.d.ts +1 -1
- package/dist/{lib/components → components}/pagination/pagination.component.d.ts +2 -2
- package/dist/{lib/components → components}/searchbar/searchbar.component.d.ts +2 -2
- package/dist/{lib/engine → engine}/NgxBaseComponent.d.ts +1 -1
- package/dist/{lib/esm2022 → esm2022}/components/component-renderer/component-renderer.component.mjs +3 -3
- package/dist/esm2022/components/crud-field/crud-field.component.mjs +301 -0
- package/dist/esm2022/components/crud-form/constants.mjs +14 -0
- package/dist/esm2022/components/crud-form/crud-form.component.mjs +139 -0
- package/dist/esm2022/components/crud-form/types.mjs +2 -0
- package/dist/esm2022/components/empty-state/empty-state.component.mjs +348 -0
- package/dist/esm2022/components/fieldset/fieldset.component.mjs +225 -0
- package/dist/esm2022/components/filter/filter.component.mjs +689 -0
- package/dist/esm2022/components/for-angular-components.module.mjs +71 -0
- package/dist/esm2022/components/index.mjs +20 -0
- package/dist/esm2022/components/layout/layout.component.mjs +176 -0
- package/dist/esm2022/components/list/constants.mjs +6 -0
- package/dist/esm2022/components/list/list.component.mjs +1236 -0
- package/dist/{lib/esm2022 → esm2022}/components/list-item/list-item.component.mjs +6 -6
- package/dist/esm2022/components/model-renderer/model-renderer.component.mjs +138 -0
- package/dist/esm2022/components/pagination/constants.mjs +2 -0
- package/dist/esm2022/components/pagination/pagination.component.mjs +323 -0
- package/dist/esm2022/components/searchbar/searchbar.component.mjs +493 -0
- package/dist/esm2022/decaf-ts-for-angular.mjs +5 -0
- package/dist/esm2022/directives/collapsable.directive.mjs +28 -0
- package/dist/esm2022/directives/index.mjs +2 -0
- package/dist/esm2022/engine/DynamicModule.mjs +18 -0
- package/dist/esm2022/engine/NgxBaseComponent.mjs +539 -0
- package/dist/esm2022/engine/NgxCrudFormField.mjs +125 -0
- package/dist/esm2022/engine/NgxFormService.mjs +315 -0
- package/dist/esm2022/engine/NgxRenderingEngine.mjs +192 -0
- package/dist/esm2022/engine/NgxRenderingEngine2.mjs +332 -0
- package/dist/esm2022/engine/ValidatorFactory.mjs +102 -0
- package/dist/esm2022/engine/constants.mjs +160 -0
- package/dist/esm2022/engine/decorators.mjs +38 -0
- package/dist/esm2022/engine/index.mjs +17 -0
- package/dist/esm2022/engine/types.mjs +4 -0
- package/dist/esm2022/for-angular.module.mjs +118 -0
- package/dist/esm2022/helpers/index.mjs +13 -0
- package/dist/esm2022/helpers/utils.mjs +415 -0
- package/dist/esm2022/interfaces.mjs +2 -0
- package/dist/esm2022/public-apis.mjs +14 -0
- package/dist/{lib/fesm2022 → fesm2022}/decaf-ts-for-angular.mjs +3029 -3036
- package/dist/fesm2022/decaf-ts-for-angular.mjs.map +1 -0
- package/package.json +4 -2
- package/dist/lib/esm2022/components/crud-field/crud-field.component.mjs +0 -301
- package/dist/lib/esm2022/components/crud-form/constants.mjs +0 -14
- package/dist/lib/esm2022/components/crud-form/crud-form.component.mjs +0 -139
- package/dist/lib/esm2022/components/crud-form/types.mjs +0 -2
- package/dist/lib/esm2022/components/empty-state/empty-state.component.mjs +0 -348
- package/dist/lib/esm2022/components/fieldset/fieldset.component.mjs +0 -225
- package/dist/lib/esm2022/components/filter/filter.component.mjs +0 -689
- package/dist/lib/esm2022/components/for-angular-components.module.mjs +0 -71
- package/dist/lib/esm2022/components/index.mjs +0 -20
- package/dist/lib/esm2022/components/layout/layout.component.mjs +0 -176
- package/dist/lib/esm2022/components/list/constants.mjs +0 -6
- package/dist/lib/esm2022/components/list/list.component.mjs +0 -1236
- package/dist/lib/esm2022/components/model-renderer/model-renderer.component.mjs +0 -138
- package/dist/lib/esm2022/components/pagination/constants.mjs +0 -2
- package/dist/lib/esm2022/components/pagination/pagination.component.mjs +0 -323
- package/dist/lib/esm2022/components/searchbar/searchbar.component.mjs +0 -493
- package/dist/lib/esm2022/decaf-ts-for-angular.mjs +0 -5
- package/dist/lib/esm2022/directives/collapsable.directive.mjs +0 -28
- package/dist/lib/esm2022/directives/index.mjs +0 -2
- package/dist/lib/esm2022/engine/DynamicModule.mjs +0 -18
- package/dist/lib/esm2022/engine/NgxBaseComponent.mjs +0 -540
- package/dist/lib/esm2022/engine/NgxCrudFormField.mjs +0 -125
- package/dist/lib/esm2022/engine/NgxFormService.mjs +0 -315
- package/dist/lib/esm2022/engine/NgxRenderingEngine.mjs +0 -192
- package/dist/lib/esm2022/engine/NgxRenderingEngine2.mjs +0 -332
- package/dist/lib/esm2022/engine/ValidatorFactory.mjs +0 -102
- package/dist/lib/esm2022/engine/constants.mjs +0 -160
- package/dist/lib/esm2022/engine/decorators.mjs +0 -38
- package/dist/lib/esm2022/engine/index.mjs +0 -17
- package/dist/lib/esm2022/engine/types.mjs +0 -4
- package/dist/lib/esm2022/for-angular.module.mjs +0 -118
- package/dist/lib/esm2022/helpers/index.mjs +0 -13
- package/dist/lib/esm2022/helpers/utils.mjs +0 -415
- package/dist/lib/esm2022/interfaces.mjs +0 -2
- package/dist/lib/esm2022/public-apis.mjs +0 -14
- package/dist/lib/fesm2022/decaf-ts-for-angular.mjs.map +0 -1
- /package/dist/{lib/README.md → README.md} +0 -0
- /package/dist/{lib/assets → assets}/i18n/en.json +0 -0
- /package/dist/{lib/assets → assets}/images/angular-logo.svg +0 -0
- /package/dist/{lib/assets → assets}/images/decaf-logo-black.svg +0 -0
- /package/dist/{lib/assets → assets}/images/decaf-logo-lw.svg +0 -0
- /package/dist/{lib/assets → assets}/images/decaf-logo-white.svg +0 -0
- /package/dist/{lib/assets → assets}/images/decaf-logo.svg +0 -0
- /package/dist/{lib/components → components}/component-renderer/component-renderer.component.d.ts +0 -0
- /package/dist/{lib/components → components}/crud-field/crud-field.component.d.ts +0 -0
- /package/dist/{lib/components → components}/crud-form/constants.d.ts +0 -0
- /package/dist/{lib/components → components}/crud-form/crud-form.component.d.ts +0 -0
- /package/dist/{lib/components → components}/crud-form/types.d.ts +0 -0
- /package/dist/{lib/components → components}/for-angular-components.module.d.ts +0 -0
- /package/dist/{lib/components → components}/index.d.ts +0 -0
- /package/dist/{lib/components → components}/list/constants.d.ts +0 -0
- /package/dist/{lib/directives → directives}/collapsable.directive.d.ts +0 -0
- /package/dist/{lib/directives → directives}/index.d.ts +0 -0
- /package/dist/{lib/engine → engine}/DynamicModule.d.ts +0 -0
- /package/dist/{lib/engine → engine}/NgxCrudFormField.d.ts +0 -0
- /package/dist/{lib/engine → engine}/NgxFormService.d.ts +0 -0
- /package/dist/{lib/engine → engine}/NgxRenderingEngine.d.ts +0 -0
- /package/dist/{lib/engine → engine}/NgxRenderingEngine2.d.ts +0 -0
- /package/dist/{lib/engine → engine}/ValidatorFactory.d.ts +0 -0
- /package/dist/{lib/engine → engine}/constants.d.ts +0 -0
- /package/dist/{lib/engine → engine}/decorators.d.ts +0 -0
- /package/dist/{lib/engine → engine}/index.d.ts +0 -0
- /package/dist/{lib/engine → engine}/types.d.ts +0 -0
- /package/dist/{lib/for-angular.module.d.ts → for-angular.module.d.ts} +0 -0
- /package/dist/{lib/helpers → helpers}/index.d.ts +0 -0
- /package/dist/{lib/helpers → helpers}/utils.d.ts +0 -0
- /package/dist/{lib/index.d.ts → index.d.ts} +0 -0
- /package/dist/{lib/interfaces.d.ts → interfaces.d.ts} +0 -0
- /package/dist/{lib/public-apis.d.ts → public-apis.d.ts} +0 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@decaf-ts/for-angular",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.10",
|
|
4
4
|
"scripts": {
|
|
5
5
|
"ng": "ng",
|
|
6
6
|
"decaf": "npx decaf angular generate",
|
|
@@ -37,7 +37,9 @@
|
|
|
37
37
|
"storybook:build": "ng run for-angular:build-storybook",
|
|
38
38
|
"playwright": "npx playwright test --config=./playwright.config.ts",
|
|
39
39
|
"playwright-ui": "npx playwright test --config=./playwright.config.ts --ui",
|
|
40
|
-
"playwright-setup": "npm init playwright@latest"
|
|
40
|
+
"playwright-setup": "npm init playwright@latest",
|
|
41
|
+
"link": "npm run unlink && npm run build:new && cd dist && npm link && npm ls -g --depth=0 --link=true",
|
|
42
|
+
"unlink": "npm rm --global @decaf-ts/for-angular && npm ls -g --depth=0 --link=true"
|
|
41
43
|
},
|
|
42
44
|
"files": [
|
|
43
45
|
"dist"
|
|
@@ -1,301 +0,0 @@
|
|
|
1
|
-
import { __decorate } from "tslib";
|
|
2
|
-
import { Component, CUSTOM_ELEMENTS_SCHEMA, ElementRef, Input, ViewChild, } from '@angular/core';
|
|
3
|
-
import { FormControl } from '@angular/forms';
|
|
4
|
-
import { OperationKeys } from '@decaf-ts/db-decorators';
|
|
5
|
-
import { NgxCrudFormField } from '../../engine/NgxCrudFormField';
|
|
6
|
-
import { Dynamic } from '../../engine/decorators';
|
|
7
|
-
import { ForAngularModule } from 'src/lib/for-angular.module';
|
|
8
|
-
import { IonCheckbox, IonIcon, IonInput, IonItem, IonLabel, IonRadio, IonRadioGroup, IonSelect, IonSelectOption, IonText, IonTextarea, } from '@ionic/angular/standalone';
|
|
9
|
-
import { HTML5InputTypes } from '@decaf-ts/ui-decorators';
|
|
10
|
-
import { addIcons } from 'ionicons';
|
|
11
|
-
import { chevronDownOutline, chevronUpOutline } from 'ionicons/icons';
|
|
12
|
-
import * as i0 from "@angular/core";
|
|
13
|
-
import * as i1 from "@ionic/angular/standalone";
|
|
14
|
-
import * as i2 from "@angular/forms";
|
|
15
|
-
import * as i3 from "@ngx-translate/core";
|
|
16
|
-
/**
|
|
17
|
-
* @description A dynamic form field component for CRUD operations.
|
|
18
|
-
* @summary The CrudFieldComponent is a versatile form field component that adapts to different
|
|
19
|
-
* input types and CRUD operations. It extends NgxCrudFormField to inherit form handling capabilities
|
|
20
|
-
* and implements lifecycle hooks to properly initialize, render, and clean up. This component
|
|
21
|
-
* supports various input types (text, number, date, select, etc.), validation rules, and styling
|
|
22
|
-
* options, making it suitable for building dynamic forms for create, read, update, and delete
|
|
23
|
-
* operations.
|
|
24
|
-
*
|
|
25
|
-
* @param {CrudOperations} operation - The CRUD operation being performed (create, read, update, delete)
|
|
26
|
-
* @param {string} name - The field name, used as form control identifier
|
|
27
|
-
* @param {PossibleInputTypes} type - The input type (text, number, date, select, etc.)
|
|
28
|
-
* @param {string|number|Date} value - The initial value of the field
|
|
29
|
-
* @param {boolean} disabled - Whether the field is disabled
|
|
30
|
-
* @param {string} label - The display label for the field
|
|
31
|
-
* @param {string} placeholder - Placeholder text when field is empty
|
|
32
|
-
* @param {string} format - Format pattern for the field value
|
|
33
|
-
* @param {boolean} hidden - Whether the field should be hidden
|
|
34
|
-
* @param {number|Date} max - Maximum allowed value
|
|
35
|
-
* @param {number} maxlength - Maximum allowed length
|
|
36
|
-
* @param {number|Date} min - Minimum allowed value
|
|
37
|
-
* @param {number} minlength - Minimum allowed length
|
|
38
|
-
* @param {string} pattern - Validation pattern
|
|
39
|
-
* @param {boolean} readonly - Whether the field is read-only
|
|
40
|
-
* @param {boolean} required - Whether the field is required
|
|
41
|
-
* @param {number} step - Step value for number inputs
|
|
42
|
-
* @param {FormGroup} formGroup - The parent form group
|
|
43
|
-
* @param {StringOrBoolean} translatable - Whether field labels should be translated
|
|
44
|
-
*
|
|
45
|
-
* @component CrudFieldComponent
|
|
46
|
-
* @example
|
|
47
|
-
* <ngx-decaf-crud-field
|
|
48
|
-
* operation="create"
|
|
49
|
-
* name="firstName"
|
|
50
|
-
* type="text"
|
|
51
|
-
* label="<NAME>"
|
|
52
|
-
* placeholder="<NAME>"
|
|
53
|
-
* [value]="model.firstName"
|
|
54
|
-
* [disabled]="model.readOnly">
|
|
55
|
-
*
|
|
56
|
-
*
|
|
57
|
-
* @memberOf module:for-angular
|
|
58
|
-
*/
|
|
59
|
-
let CrudFieldComponent = class CrudFieldComponent extends NgxCrudFormField {
|
|
60
|
-
constructor() {
|
|
61
|
-
super(...arguments);
|
|
62
|
-
/**
|
|
63
|
-
* @description The parent field path, if this field is nested.
|
|
64
|
-
* @summary Specifies the full dot-delimited path of the parent field. This is only set when the field is nested.
|
|
65
|
-
*
|
|
66
|
-
* @type {string}
|
|
67
|
-
* @memberOf CrudFieldComponent
|
|
68
|
-
*/
|
|
69
|
-
this.childOf = '';
|
|
70
|
-
/**
|
|
71
|
-
* @description The initial value of the field.
|
|
72
|
-
* @summary Sets the initial value of the form field. This can be a string, number, or Date
|
|
73
|
-
* depending on the field type. For select fields, this should match one of the option values.
|
|
74
|
-
*
|
|
75
|
-
* @type {string | number | Date}
|
|
76
|
-
* @default ''
|
|
77
|
-
* @memberOf CrudFieldComponent
|
|
78
|
-
*/
|
|
79
|
-
this.value = '';
|
|
80
|
-
/**
|
|
81
|
-
* @description Interface style for select inputs.
|
|
82
|
-
* @summary Specifies the interface style for select inputs, such as 'alert', 'action-sheet', or 'popover'.
|
|
83
|
-
* This determines how the select options are presented to the user.
|
|
84
|
-
*
|
|
85
|
-
* @type {SelectInterface}
|
|
86
|
-
* @memberOf CrudFieldComponent
|
|
87
|
-
*/
|
|
88
|
-
this.interface = 'popover';
|
|
89
|
-
/**
|
|
90
|
-
* @description Spellcheck attribute for text inputs.
|
|
91
|
-
* @summary Enables or disables spellchecking for text inputs.
|
|
92
|
-
* When true, the browser will check the spelling of the input text.
|
|
93
|
-
*
|
|
94
|
-
* @type {boolean}
|
|
95
|
-
* @default false
|
|
96
|
-
* @memberOf CrudFieldComponent
|
|
97
|
-
*/
|
|
98
|
-
this.spellcheck = false;
|
|
99
|
-
/**
|
|
100
|
-
* @description Input mode for text inputs.
|
|
101
|
-
* @summary Hints at the type of data that might be entered by the user while editing the element.
|
|
102
|
-
* This can affect the virtual keyboard layout on mobile devices.
|
|
103
|
-
*
|
|
104
|
-
* @type {'none' | 'text' | 'tel' | 'url' | 'email' | 'numeric' | 'decimal' | 'search'}
|
|
105
|
-
* @default 'none'
|
|
106
|
-
* @memberOf CrudFieldComponent
|
|
107
|
-
*/
|
|
108
|
-
this.inputmode = 'none';
|
|
109
|
-
/**
|
|
110
|
-
* @description Autocomplete behavior for the field.
|
|
111
|
-
* @summary Specifies whether and how the browser should automatically complete the input.
|
|
112
|
-
* This can improve user experience by suggesting previously entered values.
|
|
113
|
-
*
|
|
114
|
-
* @type {AutocompleteTypes}
|
|
115
|
-
* @default 'off'
|
|
116
|
-
* @memberOf CrudFieldComponent
|
|
117
|
-
*/
|
|
118
|
-
this.autocomplete = 'off';
|
|
119
|
-
/**
|
|
120
|
-
* @description Fill style for the field.
|
|
121
|
-
* @summary Determines the fill style of the field, such as 'outline' or 'solid'.
|
|
122
|
-
* This affects the border and background of the field.
|
|
123
|
-
*
|
|
124
|
-
* @type {'outline' | 'solid'}
|
|
125
|
-
* @default 'outline'
|
|
126
|
-
* @memberOf CrudFieldComponent
|
|
127
|
-
*/
|
|
128
|
-
this.fill = 'outline';
|
|
129
|
-
/**
|
|
130
|
-
* @description Placement of the label relative to the field.
|
|
131
|
-
* @summary Specifies where the label should be placed relative to the field.
|
|
132
|
-
* Options include 'start', 'end', 'floating', 'stacked', and 'fixed'.
|
|
133
|
-
*
|
|
134
|
-
* @type {'start' | 'end' | 'floating' | 'stacked' | 'fixed'}
|
|
135
|
-
* @default 'floating'
|
|
136
|
-
* @memberOf CrudFieldComponent
|
|
137
|
-
*/
|
|
138
|
-
this.labelPlacement = 'floating';
|
|
139
|
-
/**
|
|
140
|
-
* @description Update mode for the field.
|
|
141
|
-
* @summary Determines when the field value should be updated in the form model.
|
|
142
|
-
* Options include 'change', 'blur', and 'submit'.
|
|
143
|
-
*
|
|
144
|
-
* @type {FieldUpdateMode}
|
|
145
|
-
* @default 'change'
|
|
146
|
-
* @memberOf CrudFieldComponent
|
|
147
|
-
*/
|
|
148
|
-
this.updateOn = 'change';
|
|
149
|
-
/**
|
|
150
|
-
* @description Translatability of field labels.
|
|
151
|
-
* @summary Indicates whether the field labels should be translated based on the current language settings.
|
|
152
|
-
* This is useful for applications supporting multiple languages.
|
|
153
|
-
*
|
|
154
|
-
* @type {StringOrBoolean}
|
|
155
|
-
* @default true
|
|
156
|
-
* @memberOf CrudFieldComponent
|
|
157
|
-
*/
|
|
158
|
-
this.translatable = true;
|
|
159
|
-
}
|
|
160
|
-
// constructor() {
|
|
161
|
-
// }
|
|
162
|
-
ngOnInit() {
|
|
163
|
-
// super.onInit(this.updateOn);
|
|
164
|
-
if ([OperationKeys.READ, OperationKeys.DELETE].includes(this.operation)) {
|
|
165
|
-
this.formGroup = undefined;
|
|
166
|
-
}
|
|
167
|
-
else {
|
|
168
|
-
addIcons({ chevronDownOutline, chevronUpOutline });
|
|
169
|
-
if (this.type === HTML5InputTypes.RADIO && !this.value)
|
|
170
|
-
this.formGroup?.get(this.name)?.setValue(this.options[0].value); // TODO: migrate to RenderingEngine
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
ngAfterViewInit() {
|
|
174
|
-
if ([OperationKeys.READ, OperationKeys.DELETE].includes(this.operation))
|
|
175
|
-
super.afterViewInit();
|
|
176
|
-
}
|
|
177
|
-
ngOnDestroy() {
|
|
178
|
-
if ([OperationKeys.READ, OperationKeys.DELETE].includes(this.operation))
|
|
179
|
-
this.onDestroy();
|
|
180
|
-
}
|
|
181
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CrudFieldComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
182
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: CrudFieldComponent, isStandalone: true, selector: "ngx-decaf-crud-field", inputs: { operation: "operation", name: "name", path: "path", childOf: "childOf", type: "type", value: "value", disabled: "disabled", label: "label", placeholder: "placeholder", format: "format", hidden: "hidden", max: "max", maxlength: "maxlength", min: "min", minlength: "minlength", pattern: "pattern", readonly: "readonly", required: "required", step: "step", equals: "equals", different: "different", lessThan: "lessThan", lessThanOrEqual: "lessThanOrEqual", greaterThan: "greaterThan", greaterThanOrEqual: "greaterThanOrEqual", cols: "cols", rows: "rows", alignment: "alignment", checked: "checked", justify: "justify", cancelText: "cancelText", interface: "interface", options: "options", mode: "mode", spellcheck: "spellcheck", inputmode: "inputmode", autocomplete: "autocomplete", fill: "fill", labelPlacement: "labelPlacement", updateOn: "updateOn", formGroup: "formGroup", formControl: "formControl", translatable: "translatable", uid: "uid" }, viewQueries: [{ propertyName: "component", first: true, predicate: ["component"], descendants: true, read: ElementRef }], usesInheritance: true, ngImport: i0, template: "@if(operation === 'read' || operation === 'delete') {\n <ng-container #component>\n <div [class]=\"'dcf-input-item ' + operation\">\n <ion-item>\n <ion-label>\n {{ label | translate }}<br />\n @if(value) {\n <ion-text [innerHTML]=\"type === 'password' ? '********' : value\"></ion-text>\n } @else {\n <br />\n }\n </ion-label>\n </ion-item>\n </div>\n </ng-container>\n} @else {\n <ng-container #component [formGroup]=\"formGroup\">\n <div #container [class]=\"'dcf-input-item ' + (operation || 'create')\">\n @if(type === 'textarea') {\n <ion-textarea\n [mode]=\"mode\"\n [hidden]=\"hidden\"\n [required]=\"required !== undefined ? required : null\"\n [minlength]=\"minlength !== undefined ? minlength : null\"\n [maxlength]=\"maxlength !== undefined ? maxlength : null\"\n [readonly]=\"readonly !== undefined ? readonly : null\"\n [inputmode]=\"inputmode\"\n [spellcheck]=\"spellcheck\"\n [rows]=\"rows\"\n [labelPlacement]=\"labelPlacement\"\n [value]=\"value\"\n [fill]=\"fill\"\n [errorText]=\"getErrors(container)\"\n [placeholder]=\"translatable ? (placeholder | translate) : placeholder\"\n [formControlName]=\"name\"\n [label]=\"translatable ? (label | translate) : label\"\n >\n </ion-textarea>\n }\n @else if(type === 'checkbox') {\n <ion-item>\n <ion-checkbox\n #checkboxElement\n [name]=\"path\"\n [mode]=\"mode\"\n [errorText]=\"getErrors(container)\"\n [hidden]=\"hidden\"\n [labelPlacement]=\"labelPlacement\"\n [justify]=\"justify\"\n [value]=\"value\"\n [checked]=\"checked\"\n [readonly]=\"readonly\"\n (ionChange)=\"checked = !checked\"\n [formControlName]=\"name\"\n >\n <span [innerHTML]=\"label | translate\"></span>\n </ion-checkbox>\n </ion-item>\n }\n @else if(type === 'radio') {\n <ion-radio-group [formControlName]=\"name\" [name]=\"path\" [value]=\"value\" #component>\n <label class=\"dcf-radio-group-label\" [for]=\"path\">{{label | translate}}</label>\n @for(option of options; track option) {\n <ion-item>\n <ion-radio\n [errorText]=\"getErrors(container)\"\n [mode]=\"mode\"\n [hidden]=\"hidden\"\n [labelPlacement]=\"labelPlacement\"\n [alignment]=\"alignment\"\n [justify]=\"justify\"\n [readonly]=\"readonly\"\n [value]=\"option.value\"\n >{{ translatable ? (option?.text | translate) : option?.text }}</ion-radio>\n </ion-item>\n }\n </ion-radio-group>\n }\n @else if(type === 'select') {\n <ion-select\n toggleIcon=\"chevron-down-outline\"\n expandedIcon=\"chevron-up-outline\"\n [name]=\"path\"\n [mode]=\"mode\"\n [hidden]=\"hidden\"\n [labelPlacement]=\"labelPlacement\"\n [label]=\"translatable ? (label | translate) : label\"\n [value]=\"value\"\n [fill]=\"fill\"\n [placeholder]=\"translatable ? (placeholder | translate) : placeholder\"\n [formControlName]=\"name\"\n [errorText]=\"getErrors(container)\"\n [interface]=\"interface\">\n @for(option of options; track option.value) {\n <ion-select-option [value]=\"option.value\">\n {{ translatable ? (option.text | translate) : options.text }}\n </ion-select-option>\n }\n </ion-select>\n }\n @else {\n <ion-input\n [name]=\"path\"\n [type]=\"type\"\n [mode]=\"mode\"\n [hidden]=\"hidden\"\n [inputmode]=\"inputmode\"\n [labelPlacement]=\"labelPlacement\"\n [required]=\"required !== undefined ? required : false\"\n [minlength]=\"minlength !== undefined ? minlength : null\"\n [maxlength]=\"maxlength !== undefined ? maxlength : null\"\n [readonly]=\"readonly !== undefined ? readonly : null\"\n [max]=\"max !== undefined ? max : null\"\n [min]=\"min !== undefined ? min : null\"\n [pattern]=\"pattern !== undefined ? pattern : null\"\n [step]=\"step !== undefined ? step : null\"\n [fill]=\"fill\"\n [placeholder]=\"translatable ? (placeholder | translate) : placeholder\"\n [formControlName]=\"name\"\n [errorText]=\"getErrors(container)\"\n [label]=\"translatable ? (label | translate) : label\">\n </ion-input>\n }\n </div>\n </ng-container>\n}\n\n", styles: [".dcf-input-item.create,.dcf-input-item.update{margin-bottom:1.8rem;margin-top:0!important}.dcf-input-item.create.checkbox+.checkbox,.dcf-input-item.update.checkbox+.checkbox{margin-top:-.25rem!important}.dcf-input-item.create ion-item,.dcf-input-item.update ion-item{--border-color: transparent}.dcf-input-item.create ion-item.dcf-text-wrap ion-label>*,.dcf-input-item.update ion-item.dcf-text-wrap ion-label>*{white-space:wrap!important;word-break:break-all!important}.dcf-input-item.read ion-label,.dcf-input-item.delete ion-label{font-weight:600;color:var(--ion-color-gray-7)}.dcf-input-item.read ion-text,.dcf-input-item.delete ion-text{display:block;margin-top:.5rem!important;color:var(--ion-color-gray-5)}.dcf-input-item ion-item{--padding-end: 0rem;--padding-start: 0px !important;--padding-top: 0px !important;--background: transparent;--background-hover-opacity: .1;--background-hover: var(--ion-color-primary);--background-activated-opacity: .15;--background-focused: var(--ion-color-primary);--background-focused-opacity: .15;--border-color: var(--ion-color-gray-2)}.dcf-input-item ion-item span,.dcf-input-item ion-item ion-text{font-weight:400!important;font-size:.925rem;min-height:.5rem!important}.dcf-input-item ion-item span:not(.dcf-display-block),.dcf-input-item ion-item ion-text:not(.dcf-display-block){display:inline-block}.dcf-input-item ion-item span.dcf-display-block,.dcf-input-item ion-item ion-text.dcf-display-block{display:block!important}ion-textarea textarea{scrollbar-width:thin!important;margin-bottom:.5rem!important}ion-select.dcf-select-label-placement-floating::part(label){line-height:1.2rem!important}.dcf-proccessing,.dcf-proccessing *{pointer-events:none;touch-action:none;cursor:text}ion-checkbox{--size: 1.5rem;--checkbox-background-checked: var(--ion-color-primary);--checkmark-width: 2px}ion-item{--inner-padding-start: .75rem}ion-checkbox::part(container){border-radius:50%;border:2px solid var(--ion-color-primary);padding:3px}ion-item .dcf-radio-group-label,ion-radio-group .dcf-radio-group-label{font-weight:600}ion-item .dcf-radio-group-label~ion-item,ion-radio-group .dcf-radio-group-label~ion-item{margin-top:.5rem;--inner-padding-start: .75rem}ion-item+.dcf-helper,ion-radio-group+.dcf-helper{padding-left:.75rem;position:relative}.dcf-error{position:absolute;color:var(--ion-color-danger)!important;font-size:.8rem!important;font-weight:600!important;line-height:1.1rem;box-sizing:border-box;z-index:9999;margin-top:0;animation-duration:.1s;animation-timing-function:ease-out;animation-fill-mode:both;animation-name:fadeTopSmallAnimation;display:flex;align-items:flex-start;gap:.25rem}.dcf-error .ti,.dcf-error ion-icon{position:relative;top:2px!important;min-width:20px;font-size:1rem!important;text-align:left}.dcf-helper{font-size:.875rem!important;font-weight:500;margin-top:.25rem;margin-bottom:-.75rem}.dcf-helper.dcf-has-action{cursor:pointer;color:var(--ion-color-gray-7)!important;text-decoration:underline}.dcf-error+.dcf-helper{padding-top:1rem}@keyframes fadeTopSmallAnimation{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeBottomSmallAnimation{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeTopMediumAnimation{0%{opacity:0;transform:translateY(-50px)}to{opacity:1;transform:translateY(0)}}\n"], dependencies: [{ kind: "ngmodule", type: ForAngularModule }, { kind: "component", type: i1.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2.MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: ["minlength"] }, { kind: "directive", type: i2.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i2.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }, { kind: "component", type: IonInput, selector: "ion-input", inputs: ["accept", "autocapitalize", "autocomplete", "autocorrect", "autofocus", "clearInput", "clearOnEdit", "color", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "max", "maxlength", "min", "minlength", "mode", "multiple", "name", "pattern", "placeholder", "readonly", "required", "shape", "size", "spellcheck", "step", "type", "value"] }, { kind: "component", type: IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: IonCheckbox, selector: "ion-checkbox", inputs: ["checked", "color", "disabled", "errorText", "helperText", "indeterminate", "justify", "labelPlacement", "mode", "name", "value"] }, { kind: "component", type: IonRadioGroup, selector: "ion-radio-group", inputs: ["allowEmptySelection", "compareWith", "errorText", "helperText", "name", "value"] }, { kind: "component", type: IonRadio, selector: "ion-radio", inputs: ["alignment", "color", "disabled", "justify", "labelPlacement", "mode", "name", "value"] }, { kind: "component", type: IonSelect, selector: "ion-select", inputs: ["cancelText", "color", "compareWith", "disabled", "errorText", "expandedIcon", "fill", "helperText", "interface", "interfaceOptions", "justify", "label", "labelPlacement", "mode", "multiple", "name", "okText", "placeholder", "selectedText", "shape", "toggleIcon", "value"] }, { kind: "component", type: IonSelectOption, selector: "ion-select-option", inputs: ["disabled", "value"] }, { kind: "component", type: IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: IonTextarea, selector: "ion-textarea", inputs: ["autoGrow", "autocapitalize", "autofocus", "clearOnEdit", "color", "cols", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "maxlength", "minlength", "mode", "name", "placeholder", "readonly", "required", "rows", "shape", "spellcheck", "value", "wrap"] }] }); }
|
|
183
|
-
};
|
|
184
|
-
CrudFieldComponent = __decorate([
|
|
185
|
-
Dynamic()
|
|
186
|
-
], CrudFieldComponent);
|
|
187
|
-
export { CrudFieldComponent };
|
|
188
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CrudFieldComponent, decorators: [{
|
|
189
|
-
type: Component,
|
|
190
|
-
args: [{ standalone: true, imports: [
|
|
191
|
-
ForAngularModule,
|
|
192
|
-
IonInput,
|
|
193
|
-
IonItem,
|
|
194
|
-
IonCheckbox,
|
|
195
|
-
IonRadioGroup,
|
|
196
|
-
IonRadio,
|
|
197
|
-
IonSelect,
|
|
198
|
-
IonSelectOption,
|
|
199
|
-
IonLabel,
|
|
200
|
-
IonText,
|
|
201
|
-
IonTextarea,
|
|
202
|
-
IonIcon
|
|
203
|
-
], selector: 'ngx-decaf-crud-field', schemas: [CUSTOM_ELEMENTS_SCHEMA], template: "@if(operation === 'read' || operation === 'delete') {\n <ng-container #component>\n <div [class]=\"'dcf-input-item ' + operation\">\n <ion-item>\n <ion-label>\n {{ label | translate }}<br />\n @if(value) {\n <ion-text [innerHTML]=\"type === 'password' ? '********' : value\"></ion-text>\n } @else {\n <br />\n }\n </ion-label>\n </ion-item>\n </div>\n </ng-container>\n} @else {\n <ng-container #component [formGroup]=\"formGroup\">\n <div #container [class]=\"'dcf-input-item ' + (operation || 'create')\">\n @if(type === 'textarea') {\n <ion-textarea\n [mode]=\"mode\"\n [hidden]=\"hidden\"\n [required]=\"required !== undefined ? required : null\"\n [minlength]=\"minlength !== undefined ? minlength : null\"\n [maxlength]=\"maxlength !== undefined ? maxlength : null\"\n [readonly]=\"readonly !== undefined ? readonly : null\"\n [inputmode]=\"inputmode\"\n [spellcheck]=\"spellcheck\"\n [rows]=\"rows\"\n [labelPlacement]=\"labelPlacement\"\n [value]=\"value\"\n [fill]=\"fill\"\n [errorText]=\"getErrors(container)\"\n [placeholder]=\"translatable ? (placeholder | translate) : placeholder\"\n [formControlName]=\"name\"\n [label]=\"translatable ? (label | translate) : label\"\n >\n </ion-textarea>\n }\n @else if(type === 'checkbox') {\n <ion-item>\n <ion-checkbox\n #checkboxElement\n [name]=\"path\"\n [mode]=\"mode\"\n [errorText]=\"getErrors(container)\"\n [hidden]=\"hidden\"\n [labelPlacement]=\"labelPlacement\"\n [justify]=\"justify\"\n [value]=\"value\"\n [checked]=\"checked\"\n [readonly]=\"readonly\"\n (ionChange)=\"checked = !checked\"\n [formControlName]=\"name\"\n >\n <span [innerHTML]=\"label | translate\"></span>\n </ion-checkbox>\n </ion-item>\n }\n @else if(type === 'radio') {\n <ion-radio-group [formControlName]=\"name\" [name]=\"path\" [value]=\"value\" #component>\n <label class=\"dcf-radio-group-label\" [for]=\"path\">{{label | translate}}</label>\n @for(option of options; track option) {\n <ion-item>\n <ion-radio\n [errorText]=\"getErrors(container)\"\n [mode]=\"mode\"\n [hidden]=\"hidden\"\n [labelPlacement]=\"labelPlacement\"\n [alignment]=\"alignment\"\n [justify]=\"justify\"\n [readonly]=\"readonly\"\n [value]=\"option.value\"\n >{{ translatable ? (option?.text | translate) : option?.text }}</ion-radio>\n </ion-item>\n }\n </ion-radio-group>\n }\n @else if(type === 'select') {\n <ion-select\n toggleIcon=\"chevron-down-outline\"\n expandedIcon=\"chevron-up-outline\"\n [name]=\"path\"\n [mode]=\"mode\"\n [hidden]=\"hidden\"\n [labelPlacement]=\"labelPlacement\"\n [label]=\"translatable ? (label | translate) : label\"\n [value]=\"value\"\n [fill]=\"fill\"\n [placeholder]=\"translatable ? (placeholder | translate) : placeholder\"\n [formControlName]=\"name\"\n [errorText]=\"getErrors(container)\"\n [interface]=\"interface\">\n @for(option of options; track option.value) {\n <ion-select-option [value]=\"option.value\">\n {{ translatable ? (option.text | translate) : options.text }}\n </ion-select-option>\n }\n </ion-select>\n }\n @else {\n <ion-input\n [name]=\"path\"\n [type]=\"type\"\n [mode]=\"mode\"\n [hidden]=\"hidden\"\n [inputmode]=\"inputmode\"\n [labelPlacement]=\"labelPlacement\"\n [required]=\"required !== undefined ? required : false\"\n [minlength]=\"minlength !== undefined ? minlength : null\"\n [maxlength]=\"maxlength !== undefined ? maxlength : null\"\n [readonly]=\"readonly !== undefined ? readonly : null\"\n [max]=\"max !== undefined ? max : null\"\n [min]=\"min !== undefined ? min : null\"\n [pattern]=\"pattern !== undefined ? pattern : null\"\n [step]=\"step !== undefined ? step : null\"\n [fill]=\"fill\"\n [placeholder]=\"translatable ? (placeholder | translate) : placeholder\"\n [formControlName]=\"name\"\n [errorText]=\"getErrors(container)\"\n [label]=\"translatable ? (label | translate) : label\">\n </ion-input>\n }\n </div>\n </ng-container>\n}\n\n", styles: [".dcf-input-item.create,.dcf-input-item.update{margin-bottom:1.8rem;margin-top:0!important}.dcf-input-item.create.checkbox+.checkbox,.dcf-input-item.update.checkbox+.checkbox{margin-top:-.25rem!important}.dcf-input-item.create ion-item,.dcf-input-item.update ion-item{--border-color: transparent}.dcf-input-item.create ion-item.dcf-text-wrap ion-label>*,.dcf-input-item.update ion-item.dcf-text-wrap ion-label>*{white-space:wrap!important;word-break:break-all!important}.dcf-input-item.read ion-label,.dcf-input-item.delete ion-label{font-weight:600;color:var(--ion-color-gray-7)}.dcf-input-item.read ion-text,.dcf-input-item.delete ion-text{display:block;margin-top:.5rem!important;color:var(--ion-color-gray-5)}.dcf-input-item ion-item{--padding-end: 0rem;--padding-start: 0px !important;--padding-top: 0px !important;--background: transparent;--background-hover-opacity: .1;--background-hover: var(--ion-color-primary);--background-activated-opacity: .15;--background-focused: var(--ion-color-primary);--background-focused-opacity: .15;--border-color: var(--ion-color-gray-2)}.dcf-input-item ion-item span,.dcf-input-item ion-item ion-text{font-weight:400!important;font-size:.925rem;min-height:.5rem!important}.dcf-input-item ion-item span:not(.dcf-display-block),.dcf-input-item ion-item ion-text:not(.dcf-display-block){display:inline-block}.dcf-input-item ion-item span.dcf-display-block,.dcf-input-item ion-item ion-text.dcf-display-block{display:block!important}ion-textarea textarea{scrollbar-width:thin!important;margin-bottom:.5rem!important}ion-select.dcf-select-label-placement-floating::part(label){line-height:1.2rem!important}.dcf-proccessing,.dcf-proccessing *{pointer-events:none;touch-action:none;cursor:text}ion-checkbox{--size: 1.5rem;--checkbox-background-checked: var(--ion-color-primary);--checkmark-width: 2px}ion-item{--inner-padding-start: .75rem}ion-checkbox::part(container){border-radius:50%;border:2px solid var(--ion-color-primary);padding:3px}ion-item .dcf-radio-group-label,ion-radio-group .dcf-radio-group-label{font-weight:600}ion-item .dcf-radio-group-label~ion-item,ion-radio-group .dcf-radio-group-label~ion-item{margin-top:.5rem;--inner-padding-start: .75rem}ion-item+.dcf-helper,ion-radio-group+.dcf-helper{padding-left:.75rem;position:relative}.dcf-error{position:absolute;color:var(--ion-color-danger)!important;font-size:.8rem!important;font-weight:600!important;line-height:1.1rem;box-sizing:border-box;z-index:9999;margin-top:0;animation-duration:.1s;animation-timing-function:ease-out;animation-fill-mode:both;animation-name:fadeTopSmallAnimation;display:flex;align-items:flex-start;gap:.25rem}.dcf-error .ti,.dcf-error ion-icon{position:relative;top:2px!important;min-width:20px;font-size:1rem!important;text-align:left}.dcf-helper{font-size:.875rem!important;font-weight:500;margin-top:.25rem;margin-bottom:-.75rem}.dcf-helper.dcf-has-action{cursor:pointer;color:var(--ion-color-gray-7)!important;text-decoration:underline}.dcf-error+.dcf-helper{padding-top:1rem}@keyframes fadeTopSmallAnimation{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeBottomSmallAnimation{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeTopMediumAnimation{0%{opacity:0;transform:translateY(-50px)}to{opacity:1;transform:translateY(0)}}\n"] }]
|
|
204
|
-
}], propDecorators: { operation: [{
|
|
205
|
-
type: Input,
|
|
206
|
-
args: [{ required: true }]
|
|
207
|
-
}], name: [{
|
|
208
|
-
type: Input,
|
|
209
|
-
args: [{ required: true }]
|
|
210
|
-
}], path: [{
|
|
211
|
-
type: Input,
|
|
212
|
-
args: [{ required: true }]
|
|
213
|
-
}], childOf: [{
|
|
214
|
-
type: Input
|
|
215
|
-
}], type: [{
|
|
216
|
-
type: Input,
|
|
217
|
-
args: [{ required: true }]
|
|
218
|
-
}], value: [{
|
|
219
|
-
type: Input
|
|
220
|
-
}], disabled: [{
|
|
221
|
-
type: Input
|
|
222
|
-
}], label: [{
|
|
223
|
-
type: Input,
|
|
224
|
-
args: [{ required: true }]
|
|
225
|
-
}], placeholder: [{
|
|
226
|
-
type: Input
|
|
227
|
-
}], format: [{
|
|
228
|
-
type: Input
|
|
229
|
-
}], hidden: [{
|
|
230
|
-
type: Input
|
|
231
|
-
}], max: [{
|
|
232
|
-
type: Input
|
|
233
|
-
}], maxlength: [{
|
|
234
|
-
type: Input
|
|
235
|
-
}], min: [{
|
|
236
|
-
type: Input
|
|
237
|
-
}], minlength: [{
|
|
238
|
-
type: Input
|
|
239
|
-
}], pattern: [{
|
|
240
|
-
type: Input
|
|
241
|
-
}], readonly: [{
|
|
242
|
-
type: Input
|
|
243
|
-
}], required: [{
|
|
244
|
-
type: Input
|
|
245
|
-
}], step: [{
|
|
246
|
-
type: Input
|
|
247
|
-
}], equals: [{
|
|
248
|
-
type: Input
|
|
249
|
-
}], different: [{
|
|
250
|
-
type: Input
|
|
251
|
-
}], lessThan: [{
|
|
252
|
-
type: Input
|
|
253
|
-
}], lessThanOrEqual: [{
|
|
254
|
-
type: Input
|
|
255
|
-
}], greaterThan: [{
|
|
256
|
-
type: Input
|
|
257
|
-
}], greaterThanOrEqual: [{
|
|
258
|
-
type: Input
|
|
259
|
-
}], cols: [{
|
|
260
|
-
type: Input
|
|
261
|
-
}], rows: [{
|
|
262
|
-
type: Input
|
|
263
|
-
}], alignment: [{
|
|
264
|
-
type: Input
|
|
265
|
-
}], checked: [{
|
|
266
|
-
type: Input
|
|
267
|
-
}], justify: [{
|
|
268
|
-
type: Input
|
|
269
|
-
}], cancelText: [{
|
|
270
|
-
type: Input
|
|
271
|
-
}], interface: [{
|
|
272
|
-
type: Input
|
|
273
|
-
}], options: [{
|
|
274
|
-
type: Input
|
|
275
|
-
}], mode: [{
|
|
276
|
-
type: Input
|
|
277
|
-
}], spellcheck: [{
|
|
278
|
-
type: Input
|
|
279
|
-
}], inputmode: [{
|
|
280
|
-
type: Input
|
|
281
|
-
}], autocomplete: [{
|
|
282
|
-
type: Input
|
|
283
|
-
}], fill: [{
|
|
284
|
-
type: Input
|
|
285
|
-
}], labelPlacement: [{
|
|
286
|
-
type: Input
|
|
287
|
-
}], updateOn: [{
|
|
288
|
-
type: Input
|
|
289
|
-
}], component: [{
|
|
290
|
-
type: ViewChild,
|
|
291
|
-
args: ['component', { read: ElementRef }]
|
|
292
|
-
}], formGroup: [{
|
|
293
|
-
type: Input
|
|
294
|
-
}], formControl: [{
|
|
295
|
-
type: Input
|
|
296
|
-
}], translatable: [{
|
|
297
|
-
type: Input
|
|
298
|
-
}], uid: [{
|
|
299
|
-
type: Input
|
|
300
|
-
}] } });
|
|
301
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3J1ZC1maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvY3J1ZC1maWVsZC9jcnVkLWZpZWxkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9jcnVkLWZpZWxkL2NydWQtZmllbGQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFFTCxTQUFTLEVBQ1Qsc0JBQXNCLEVBQ3RCLFVBQVUsRUFDVixLQUFLLEVBR0wsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQWEsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4RCxPQUFPLEVBQWtCLGFBQWEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVsRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEVBQ0wsV0FBVyxFQUNYLE9BQU8sRUFDUCxRQUFRLEVBQ1IsT0FBTyxFQUNQLFFBQVEsRUFDUixRQUFRLEVBQ1IsYUFBYSxFQUNiLFNBQVMsRUFDVCxlQUFlLEVBQ2YsT0FBTyxFQUNQLFdBQVcsR0FDWixNQUFNLDJCQUEyQixDQUFDO0FBQ25DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7OztBQUV0RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMENHO0FBdUJJLElBQU0sa0JB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O3NCQURILEtBQUs7Z0JBYU4sY0FBYztzQkFEYixLQUFLO2dCQWNOLFFBQVE7c0JBRFAsS0FBSztnQkFXRyxTQUFTO3NCQURqQixTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBWW5DLFNBQVM7c0JBRGpCLEtBQUs7Z0JBSUcsV0FBVztzQkFEbkIsS0FBSztnQkFhTixZQUFZO3NCQURYLEtBQUs7Z0JBV04sR0FBRztzQkFERixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ29tcG9uZW50LFxuICBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLFxuICBFbGVtZW50UmVmLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQXV0b2NvbXBsZXRlVHlwZXMsIFNlbGVjdEludGVyZmFjZSB9IGZyb20gJ0Bpb25pYy9jb3JlJztcbmltcG9ydCB7IENydWRPcGVyYXRpb25zLCBPcGVyYXRpb25LZXlzIH0gZnJvbSAnQGRlY2FmLXRzL2RiLWRlY29yYXRvcnMnO1xuaW1wb3J0IHsgTmd4Q3J1ZEZvcm1GaWVsZCB9IGZyb20gJy4uLy4uL2VuZ2luZS9OZ3hDcnVkRm9ybUZpZWxkJztcbmltcG9ydCB7IER5bmFtaWMgfSBmcm9tICcuLi8uLi9lbmdpbmUvZGVjb3JhdG9ycyc7XG5pbXBvcnQgeyBGaWVsZFVwZGF0ZU1vZGUsIFBvc3NpYmxlSW5wdXRUeXBlcywgUmFkaW9PcHRpb24sIFNlbGVjdE9wdGlvbiwgU3RyaW5nT3JCb29sZWFuIH0gZnJvbSAnLi4vLi4vZW5naW5lL3R5cGVzJztcbmltcG9ydCB7IEZvckFuZ3VsYXJNb2R1bGUgfSBmcm9tICdzcmMvbGliL2Zvci1hbmd1bGFyLm1vZHVsZSc7XG5pbXBvcnQge1xuICBJb25DaGVja2JveCxcbiAgSW9uSWNvbixcbiAgSW9uSW5wdXQsXG4gIElvbkl0ZW0sXG4gIElvbkxhYmVsLFxuICBJb25SYWRpbyxcbiAgSW9uUmFkaW9Hcm91cCxcbiAgSW9uU2VsZWN0LFxuICBJb25TZWxlY3RPcHRpb24sXG4gIElvblRleHQsXG4gIElvblRleHRhcmVhLFxufSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IEhUTUw1SW5wdXRUeXBlcyB9IGZyb20gJ0BkZWNhZi10cy91aS1kZWNvcmF0b3JzJztcbmltcG9ydCB7IGFkZEljb25zIH0gZnJvbSAnaW9uaWNvbnMnO1xuaW1wb3J0IHsgY2hldnJvbkRvd25PdXRsaW5lLCBjaGV2cm9uVXBPdXRsaW5lIH0gZnJvbSAnaW9uaWNvbnMvaWNvbnMnO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBBIGR5bmFtaWMgZm9ybSBmaWVsZCBjb21wb25lbnQgZm9yIENSVUQgb3BlcmF0aW9ucy5cbiAqIEBzdW1tYXJ5IFRoZSBDcnVkRmllbGRDb21wb25lbnQgaXMgYSB2ZXJzYXRpbGUgZm9ybSBmaWVsZCBjb21wb25lbnQgdGhhdCBhZGFwdHMgdG8gZGlmZmVyZW50XG4gKiBpbnB1dCB0eXBlcyBhbmQgQ1JVRCBvcGVyYXRpb25zLiBJdCBleHRlbmRzIE5neENydWRGb3JtRmllbGQgdG8gaW5oZXJpdCBmb3JtIGhhbmRsaW5nIGNhcGFiaWxpdGllc1xuICogYW5kIGltcGxlbWVudHMgbGlmZWN5Y2xlIGhvb2tzIHRvIHByb3Blcmx5IGluaXRpYWxpemUsIHJlbmRlciwgYW5kIGNsZWFuIHVwLiBUaGlzIGNvbXBvbmVudFxuICogc3VwcG9ydHMgdmFyaW91cyBpbnB1dCB0eXBlcyAodGV4dCwgbnVtYmVyLCBkYXRlLCBzZWxlY3QsIGV0Yy4pLCB2YWxpZGF0aW9uIHJ1bGVzLCBhbmQgc3R5bGluZ1xuICogb3B0aW9ucywgbWFraW5nIGl0IHN1aXRhYmxlIGZvciBidWlsZGluZyBkeW5hbWljIGZvcm1zIGZvciBjcmVhdGUsIHJlYWQsIHVwZGF0ZSwgYW5kIGRlbGV0ZVxuICogb3BlcmF0aW9ucy5cbiAqXG4gKiBAcGFyYW0ge0NydWRPcGVyYXRpb25zfSBvcGVyYXRpb24gLSBUaGUgQ1JVRCBvcGVyYXRpb24gYmVpbmcgcGVyZm9ybWVkIChjcmVhdGUsIHJlYWQsIHVwZGF0ZSwgZGVsZXRlKVxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBUaGUgZmllbGQgbmFtZSwgdXNlZCBhcyBmb3JtIGNvbnRyb2wgaWRlbnRpZmllclxuICogQHBhcmFtIHtQb3NzaWJsZUlucHV0VHlwZXN9IHR5cGUgLSBUaGUgaW5wdXQgdHlwZSAodGV4dCwgbnVtYmVyLCBkYXRlLCBzZWxlY3QsIGV0Yy4pXG4gKiBAcGFyYW0ge3N0cmluZ3xudW1iZXJ8RGF0ZX0gdmFsdWUgLSBUaGUgaW5pdGlhbCB2YWx1ZSBvZiB0aGUgZmllbGRcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gZGlzYWJsZWQgLSBXaGV0aGVyIHRoZSBmaWVsZCBpcyBkaXNhYmxlZFxuICogQHBhcmFtIHtzdHJpbmd9IGxhYmVsIC0gVGhlIGRpc3BsYXkgbGFiZWwgZm9yIHRoZSBmaWVsZFxuICogQHBhcmFtIHtzdHJpbmd9IHBsYWNlaG9sZGVyIC0gUGxhY2Vob2xkZXIgdGV4dCB3aGVuIGZpZWxkIGlzIGVtcHR5XG4gKiBAcGFyYW0ge3N0cmluZ30gZm9ybWF0IC0gRm9ybWF0IHBhdHRlcm4gZm9yIHRoZSBmaWVsZCB2YWx1ZVxuICogQHBhcmFtIHtib29sZWFufSBoaWRkZW4gLSBXaGV0aGVyIHRoZSBmaWVsZCBzaG91bGQgYmUgaGlkZGVuXG4gKiBAcGFyYW0ge251bWJlcnxEYXRlfSBtYXggLSBNYXhpbXVtIGFsbG93ZWQgdmFsdWVcbiAqIEBwYXJhbSB7bnVtYmVyfSBtYXhsZW5ndGggLSBNYXhpbXVtIGFsbG93ZWQgbGVuZ3RoXG4gKiBAcGFyYW0ge251bWJlcnxEYXRlfSBtaW4gLSBNaW5pbXVtIGFsbG93ZWQgdmFsdWVcbiAqIEBwYXJhbSB7bnVtYmVyfSBtaW5sZW5ndGggLSBNaW5pbXVtIGFsbG93ZWQgbGVuZ3RoXG4gKiBAcGFyYW0ge3N0cmluZ30gcGF0dGVybiAtIFZhbGlkYXRpb24gcGF0dGVyblxuICogQHBhcmFtIHtib29sZWFufSByZWFkb25seSAtIFdoZXRoZXIgdGhlIGZpZWxkIGlzIHJlYWQtb25seVxuICogQHBhcmFtIHtib29sZWFufSByZXF1aXJlZCAtIFdoZXRoZXIgdGhlIGZpZWxkIGlzIHJlcXVpcmVkXG4gKiBAcGFyYW0ge251bWJlcn0gc3RlcCAtIFN0ZXAgdmFsdWUgZm9yIG51bWJlciBpbnB1dHNcbiAqIEBwYXJhbSB7Rm9ybUdyb3VwfSBmb3JtR3JvdXAgLSBUaGUgcGFyZW50IGZvcm0gZ3JvdXBcbiAqIEBwYXJhbSB7U3RyaW5nT3JCb29sZWFufSB0cmFuc2xhdGFibGUgLSBXaGV0aGVyIGZpZWxkIGxhYmVscyBzaG91bGQgYmUgdHJhbnNsYXRlZFxuICpcbiAqIEBjb21wb25lbnQgQ3J1ZEZpZWxkQ29tcG9uZW50XG4gKiBAZXhhbXBsZVxuICogPG5neC1kZWNhZi1jcnVkLWZpZWxkXG4gKiAgIG9wZXJhdGlvbj1cImNyZWF0ZVwiXG4gKiAgIG5hbWU9XCJmaXJzdE5hbWVcIlxuICogICB0eXBlPVwidGV4dFwiXG4gKiAgIGxhYmVsPVwiPE5BTUU+XCJcbiAqICAgcGxhY2Vob2xkZXI9XCI8TkFNRT5cIlxuICogICBbdmFsdWVdPVwibW9kZWwuZmlyc3ROYW1lXCJcbiAqICAgW2Rpc2FibGVkXT1cIm1vZGVsLnJlYWRPbmx5XCI+XG4gKlxuICpcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Zm9yLWFuZ3VsYXJcbiAqL1xuQER5bmFtaWMoKVxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBGb3JBbmd1bGFyTW9kdWxlLFxuICAgIElvbklucHV0LFxuICAgIElvbkl0ZW0sXG4gICAgSW9uQ2hlY2tib3gsXG4gICAgSW9uUmFkaW9Hcm91cCxcbiAgICBJb25SYWRpbyxcbiAgICBJb25TZWxlY3QsXG4gICAgSW9uU2VsZWN0T3B0aW9uLFxuICAgIElvbkxhYmVsLFxuICAgIElvblRleHQsXG4gICAgSW9uVGV4dGFyZWEsXG4gICAgSW9uSWNvblxuICBdLFxuICBzZWxlY3RvcjogJ25neC1kZWNhZi1jcnVkLWZpZWxkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NydWQtZmllbGQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vY3J1ZC1maWVsZC5jb21wb25lbnQuc2NzcycsXG4gIHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcbn0pXG5leHBvcnQgY2xhc3MgQ3J1ZEZpZWxkQ29tcG9uZW50IGV4dGVuZHMgTmd4Q3J1ZEZvcm1GaWVsZCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFRoZSBDUlVEIG9wZXJhdGlvbiBiZWluZyBwZXJmb3JtZWQuXG4gICAqIEBzdW1tYXJ5IFNwZWNpZmllcyB3aGljaCBDUlVEIG9wZXJhdGlvbiAoQ3JlYXRlLCBSZWFkLCBVcGRhdGUsIERlbGV0ZSkgdGhlIGZpZWxkIGlzIGJlaW5nIHVzZWQgZm9yLlxuICAgKiBUaGlzIGFmZmVjdHMgaG93IHRoZSBmaWVsZCBiZWhhdmVzIGFuZCBpcyByZW5kZXJlZC4gRm9yIGV4YW1wbGUsIGZpZWxkcyBtaWdodCBiZSByZWFkLW9ubHkgaW5cbiAgICogJ3JlYWQnIG1vZGUgYnV0IGVkaXRhYmxlIGluICdjcmVhdGUnIG9yICd1cGRhdGUnIG1vZGVzLlxuICAgKlxuICAgKiBAdHlwZSB7Q3J1ZE9wZXJhdGlvbnN9XG4gICAqIEBtZW1iZXJPZiBDcnVkRmllbGRDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pXG4gIG92ZXJyaWRlIG9wZXJhdGlvbiE6IENydWRPcGVyYXRpb25zO1xuXG4gIC8qKlxuICAgKiBAc3VtbWFyeSAgVGhlIGZsYXQgZmllbGQgbmFtZSB1c2VkIGFzIHRoZSBmb3JtIGNvbnRyb2wgaWRlbnRpZmllciBpbiBpbW1lZGlhdGUgcGFyZW50IEZvcm1Hcm91cC5cbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFNwZWNpZmllcyB0aGUgbmFtZSBvZiB0aGUgZmllbGQsIHdoaWNoIGlzIHVzZWQgYXMgdGhlIEZvcm1Db250cm9sIGlkZW50aWZpZXIgaW4gaW1tZWRpYXRlIHBhcmVudCBGb3JtR3JvdXAuXG4gICAqIFRoaXMgdmFsdWUgbXVzdCBiZSB1bmlxdWUgd2l0aGluIHRoZSBpbW1lZGlhdGUgcGFyZW50IEZvcm1Hcm91cCBjb250ZXh0IGFuZCBzaG91bGQgbm90IGNvbnRhaW4gZG90cyBvciBuZXN0aW5nLlxuICAgKlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKiBAbWVtYmVyT2YgQ3J1ZEZpZWxkQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KVxuICBvdmVycmlkZSBuYW1lITogc3RyaW5nO1xuXG5cbiAgLyoqXG4gICAqIEBzdW1tYXJ5IFRoZSBmdWxsIGZpZWxkIHBhdGggdXNlZCBmb3IgZm9ybSBjb250cm9sIHJlc29sdXRpb24uXG4gICAqIEBkZXNjcmlwdGlvbiBTcGVjaWZpZXMgdGhlIGhpZXJhcmNoaWNhbCBwYXRoIG9mIHRoZSBmaWVsZCwgdXNlZCB0byByZXNvbHZlIGl0cyBsb2NhdGlvbiB3aXRoaW4gdGhlIHBhcmVudCBGb3JtR3JvdXAgKG9yIG5lc3RlZCBGb3JtR3JvdXBzKS5cbiAgICogSXQgaXMgdXNlZCBhcyB0aGUgaWRlbnRpZmllciBpbiB0aGUgcmVuZGVyZWQgSFRNTCwgYW5kIG1heSBpbmNsdWRlIG5lc3RpbmcgKGUuZy4sICdhZGRyZXNzLmJpbGxpbmcuc3RyZWV0JykgYW5kXG4gICAqIHNob3VsZCBtYXRjaCB0aGUgc3RydWN0dXJlIG9mIHRoZSBkYXRhIG1vZGVsXG4gICAqXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqIEBtZW1iZXJPZiBDcnVkRmllbGRDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pXG4gIG92ZXJyaWRlIHBhdGghOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBUaGUgcGFyZW50IGZpZWxkIHBhdGgsIGlmIHRoaXMgZmllbGQgaXMgbmVzdGVkLlxuICAgKiBAc3VtbWFyeSBTcGVjaWZpZXMgdGhlIGZ1bGwgZG90LWRlbGltaXRlZCBwYXRoIG9mIHRoZSBwYXJlbnQgZmllbGQuIFRoaXMgaXMgb25seSBzZXQgd2hlbiB0aGUgZmllbGQgaXMgbmVzdGVkLlxuICAgKlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKiBAbWVtYmVyT2YgQ3J1ZEZpZWxkQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKVxuICBvdmVycmlkZSBjaGlsZE9mOiBzdHJpbmcgPSAnJztcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFRoZSBpbnB1dCB0eXBlIG9mIHRoZSBmaWVsZC5cbiAgICogQHN1bW1hcnkgRGVmaW5lcyB0aGUgdHlwZSBvZiBpbnB1dCB0byByZW5kZXIsIHN1Y2ggYXMgdGV4dCwgbnVtYmVyLCBkYXRlLCBzZWxlY3QsIGV0Yy5cbiAgICogVGhpcyBkZXRlcm1pbmVzIHdoaWNoIElvbmljIGZvcm0gY29tcG9uZW50IHdpbGwgYmUgdXNlZCB0byByZW5kZXIgdGhlIGZpZWxkIGFuZCBob3dcbiAgICogdGhlIGRhdGEgd2lsbCBiZSBmb3JtYXR0ZWQgYW5kIHZhbGlkYXRlZC5cbiAgICpcbiAgICogQHR5cGUge1Bvc3NpYmxlSW5wdXRUeXBlc31cbiAgICogQG1lbWJlck9mIENydWRGaWVsZENvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcbiAgb3ZlcnJpZGUgdHlwZSE6IFBvc3NpYmxlSW5wdXRUeXBlcztcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFRoZSBpbml0aWFsIHZhbHVlIG9mIHRoZSBmaWVsZC5cbiAgICogQHN1bW1hcnkgU2V0cyB0aGUgaW5pdGlhbCB2YWx1ZSBvZiB0aGUgZm9ybSBmaWVsZC4gVGhpcyBjYW4gYmUgYSBzdHJpbmcsIG51bWJlciwgb3IgRGF0ZVxuICAgKiBkZXBlbmRpbmcgb24gdGhlIGZpZWxkIHR5cGUuIEZvciBzZWxlY3QgZmllbGRzLCB0aGlzIHNob3VsZCBtYXRjaCBvbmUgb2YgdGhlIG9wdGlvbiB2YWx1ZXMuXG4gICAqXG4gICAqIEB0eXBlIHtzdHJpbmcgfCBudW1iZXIgfCBEYXRlfVxuICAgKiBAZGVmYXVsdCAnJ1xuICAgKiBAbWVtYmVyT2YgQ3J1ZEZpZWxkQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKVxuICBvdmVycmlkZSB2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIHwgRGF0ZSA9ICcnO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gV2hldGhlciB0aGUgZmllbGQgaXMgZGlzYWJsZWQuXG4gICAqIEBzdW1tYXJ5IFdoZW4gdHJ1ZSwgdGhlIGZpZWxkIHdpbGwgYmUgcmVuZGVyZWQgaW4gYSBkaXNhYmxlZCBzdGF0ZSwgcHJldmVudGluZyB1c2VyIGludGVyYWN0aW9uLlxuICAgKiBEaXNhYmxlZCBmaWVsZHMgYXJlIHN0aWxsIGluY2x1ZGVkIGluIHRoZSBmb3JtIG1vZGVsIGJ1dCBjYW5ub3QgYmUgZWRpdGVkIGJ5IHRoZSB1c2VyLlxuICAgKlxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICogQG1lbWJlck9mIENydWRGaWVsZENvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KClcbiAgb3ZlcnJpZGUgZGlzYWJsZWQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gVGhlIGRpc3BsYXkgbGFiZWwgZm9yIHRoZSBmaWVsZC5cbiAgICogQHN1bW1hcnkgVGhlIHRleHQgbGFiZWwgZGlzcGxheWVkIGFsb25nc2lkZSB0aGUgZmllbGQgdG8gaWRlbnRpZnkgaXQgdG8gdGhlIHVzZXIuXG4gICAqIFRoaXMgbGFiZWwgY2FuIGJlIHRyYW5zbGF0ZWQgaWYgdGhlIHRyYW5zbGF0YWJsZSBwcm9wZXJ0eSBpcyBzZXQgdG8gdHJ1ZS5cbiAgICpcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICogQG1lbWJlck9mIENydWRGaWVsZENvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcbiAgbGFiZWwhOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBQbGFjZWhvbGRlciB0ZXh0IHdoZW4gZmllbGQgaXMgZW1wdHkuXG4gICAqIEBzdW1tYXJ5IFRleHQgdGhhdCBhcHBlYXJzIGluIHRoZSBpbnB1dCB3aGVuIGl0IGhhcyBubyB2YWx1ZS4gVGhpcyBwcm92aWRlcyBhIGhpbnQgdG8gdGhlIHVzZXJcbiAgICogYWJvdXQgd2hhdCBraW5kIG9mIGRhdGEgaXMgZXhwZWN0ZWQuIFRoZSBwbGFjZWhvbGRlciBkaXNhcHBlYXJzIHdoZW4gdGhlIHVzZXIgc3RhcnRzIHR5cGluZy5cbiAgICpcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICogQG1lbWJlck9mIENydWRGaWVsZENvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KClcbiAgcGxhY2Vob2xkZXIhOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBGb3JtYXQgcGF0dGVybiBmb3IgdGhlIGZpZWxkIHZhbHVlLlxuICAgKiBAc3VtbWFyeSBTcGVjaWZpZXMgYSBmb3JtYXQgcGF0dGVybiBmb3IgdGhlIGZpZWxkIHZhbHVlLCB3aGljaCBjYW4gYmUgdXNlZCBmb3IgZGF0ZSBmb3JtYXR0aW5nLFxuICAgKiBudW1iZXIgZm9ybWF0dGluZywgb3Igb3RoZXIgdHlwZS1zcGVjaWZpYyBmb3JtYXR0aW5nIHJlcXVpcmVtZW50cy5cbiAgICpcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICogQG1lbWJlck9mIENydWRGaWVsZENvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KClcbiAgb3ZlcnJpZGUgZm9ybWF0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gV2hldGhlciB0aGUgZmllbGQgc2hvdWxkIGJlIGhpZGRlbi5cbiAgICogQHN1bW1hcnkgV2hlbiB0cnVlLCB0aGUgZmllbGQgd2lsbCBub3QgYmUgdmlzaWJsZSBpbiB0aGUgVUkgYnV0IHdpbGwgc3RpbGwgYmUgcGFydCBvZiB0aGUgZm9ybSBtb2RlbC5cbiAgICogVGhpcyBpcyB1c2VmdWwgZm9yIGZpZWxkcyB0aGF0IG5lZWQgdG8gYmUgaW5jbHVkZWQgaW4gZm9ybSBzdWJtaXNzaW9uIGJ1dCBzaG91bGQgbm90IGJlIGRpc3BsYXllZCB0byB0aGUgdXNlci5cbiAgICpcbiAgICogQHR5cGUge2Jvb2xlYW59XG4gICAqIEBtZW1iZXJPZiBDcnVkRmllbGRDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpXG4gIG92ZXJyaWRlIGhpZGRlbj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBNYXhpbXVtIGFsbG93ZWQgdmFsdWUgZm9yIHRoZSBmaWVsZC5cbiAgICogQHN1bW1hcnkgRm9yIG51bWJlciBpbnB1dHMsIHRoaXMgc2V0cyB0aGUgbWF4aW11bSBhbGxvd2VkIG51bWVyaWMgdmFsdWUuXG4gICAqIEZvciBkYXRlIGlucHV0cywgdGhpcyBzZXRzIHRoZSBsYXRlc3QgYWxsb3dlZCBkYXRlLlxuICAgKlxuICAgKiBAdHlwZSB7bnVtYmVyIHwgRGF0ZX1cbiAgICogQG1lbWJlck9mIENydWRGaWVsZENvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KClcbiAgb3ZlcnJpZGUgbWF4PzogbnVtYmVyIHwgRGF0ZTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIE1heGltdW0gYWxsb3dlZCBsZW5ndGggZm9yIHRleHQgaW5wdXQuXG4gICAqIEBzdW1tYXJ5IEZvciB0ZXh0IGlucHV0cywgdGhpcyBzZXRzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBjaGFyYWN0ZXJzIGFsbG93ZWQuXG4gICAqIFRoaXMgaXMgdXNlZCBmb3IgdmFsaWRhdGlvbiBhbmQgbWF5IGFsc28gYmUgdXNlZCB0byBsaW1pdCBpbnB1dCBpbiB0aGUgVUkuXG4gICAqXG4gICAqIEB0eXBlIHtudW1iZXJ9XG4gICAqIEBtZW1iZXJPZiBDcnVkRmllbGRDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpXG4gIG92ZXJyaWRlIG1heGxlbmd0aD86IG51bWJlcjtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIE1pbmltdW0gYWxsb3dlZCB2YWx1ZSBmb3IgdGhlIGZpZWxkLlxuICAgKiBAc3VtbWFyeSBGb3IgbnVtYmVyIGlucHV0cywgdGhpcyBzZXRzIHRoZSBtaW5pbXVtIGFsbG93ZWQgbnVtZXJpYyB2YWx1ZS5cbiAgICogRm9yIGRhdGUgaW5wdXRzLCB0aGlzIHNldHMgdGhlIGVhcmxpZXN0IGFsbG93ZWQgZGF0ZS5cbiAgICpcbiAgICogQHR5cGUge251bWJlciB8IERhdGV9XG4gICAqIEBtZW1iZXJPZiBDcnVkRmllbGRDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpXG4gIG92ZXJyaWRlIG1pbj86IG51bWJlciB8IERhdGU7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBNaW5pbXVtIGFsbG93ZWQgbGVuZ3RoIGZvciB0ZXh0IGlucHV0LlxuICAgKiBAc3VtbWFyeSBGb3IgdGV4dCBpbnB1dHMsIHRoaXMgc2V0cyB0aGUgbWluaW11bSBudW1iZXIgb2YgY2hhcmFjdGVycyByZXF1aXJlZC5cbiAgICogVGhpcyBpcyB1c2VkIGZvciB2YWxpZGF0aW9uIHRvIGVuc3VyZSB0aGUgaW5wdXQgbWVldHMgYSBtaW5pbXVtIGxlbmd0aCByZXF1aXJlbWVudC5cbiAgICpcbiAgICogQHR5cGUge251bWJlcn1cbiAgICogQG1lbWJlck9mIENydWRGaWVsZENvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KClcbiAgb3ZlcnJpZGUgbWlubGVuZ3RoPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gVmFsaWRhdGlvbiBwYXR0ZXJuIGZvciB0ZXh0IGlucHV0LlxuICAgKiBAc3VtbWFyeSBBIHJlZ3VsYXIgZXhwcmVzc2lvbiBwYXR0ZXJuIHVzZWQgdG8gdmFsaWRhdGUgdGV4dCBpbnB1dC5cbiAgICogVGhlIGlucHV0IHZhbHVlIG11c3QgbWF0Y2ggdGhpcyBwYXR0ZXJuIHRvIGJlIGNvbnNpZGVyZWQgdmFsaWQuXG4gICAqXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqIEBtZW1iZXJPZiBDcnVkRmllbGRDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpXG4gIG92ZXJyaWRlIHBhdHRlcm4/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBXaGV0aGVyIHRoZSBmaWVsZCBpcyByZWFkLW9ubHkuXG4gICAqIEBzdW1tYXJ5IFdoZW4gdHJ1ZSwgdGhlIGZpZWxkIHdpbGwgYmUgcmVuZGVyZWQgaW4gYSByZWFkLW9ubHkgc3RhdGUuIFVubGlrZSBkaXNhYmxlZCBmaWVsZHMsXG4gICAqIHJlYWQtb25seSBmaWVsZHMgYXJlIHN0aWxsIGZvY3VzYWJsZSBidXQgY2Fubm90IGJlIG1vZGlmaWVkIGJ5IHRoZSB1c2VyLlxuICAgKlxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICogQG1lbWJlck9mIENydWRGaWVsZENvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KClcbiAgb3ZlcnJpZGUgcmVhZG9ubHk/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gV2hldGhlciB0aGUgZmllbGQgaXMgcmVxdWlyZWQuXG4gICAqIEBzdW1tYXJ5IFdoZW4gdHJ1ZSwgdGhlIGZpZWxkIG11c3QgaGF2ZSBhIHZhbHVlIGZvciB0aGUgZm9ybSB0byBiZSB2YWxpZC5cbiAgICogUmVxdWlyZWQgZmllbGRzIGFyZSB0eXBpY2FsbHkgbWFya2VkIHdpdGggYW4gaW5kaWNhdG9yIGluIHRoZSBVSS5cbiAgICpcbiAgICogQHR5cGUge2Jvb2xlYW59XG4gICAqIEBtZW1iZXJPZiBDcnVkRmllbGRDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpXG4gIG92ZXJyaWRlIHJlcXVpcmVkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFN0ZXAgdmFsdWUgZm9yIG51bWJlciBpbnB1dHMuXG4gICAqIEBzdW1tYXJ5IEZvciBudW1iZXIgaW5wdXRzLCB0aGlzIHNldHMgdGhlIGluY3JlbWVudC9kZWNyZW1lbnQgc3RlcCB3aGVuIHVzaW5nXG4gICAqIHRoZSB1cC9kb3duIGFycm93cyBvciB3aGVuIHVzaW5nIGEgcmFuZ2Ugc2xpZGVyLlxuICAgKlxuICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgKiBAbWVtYmVyT2YgQ3J1ZEZpZWxkQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKVxuICBvdmVycmlkZSBzdGVwPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gRmllbGQgbmFtZSBmb3IgZXF1YWxzIGNvbXBhcmlzb24uXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqIEBtZW1iZXJPZiBDcnVkRmllbGRDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpXG4gIG92ZXJyaWRlIGVxdWFscz86IHN0cmluZztcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEZpZWxkIG5hbWUgZm9yIGRpZmZlcmVudCBjb21wYXJpc29uLlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKiBAbWVtYmVyT2YgQ3J1ZEZpZWxkQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKVxuICBvdmVycmlkZSBkaWZmZXJlbnQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBGaWVsZCBuYW1lIGZvciBsZXNzIHRoYW4gY29tcGFyaXNvbi5cbiAgICogQHR5cGUge3N0cmluZ31cbiAgICogQG1lbWJlck9mIENydWRGaWVsZENvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KClcbiAgb3ZlcnJpZGUgbGVzc1RoYW4/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBGaWVsZCBuYW1lIGZvciBsZXNzIHRoYW4gb3IgZXF1YWwgY29tcGFyaXNvbi5cbiAgICogQHR5cGUge3N0cmluZ31cbiAgICogQG1lbWJlck9mIENydWRGaWVsZENvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KClcbiAgb3ZlcnJpZGUgbGVzc1RoYW5PckVxdWFsPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gRmllbGQgbmFtZSBmb3IgZ3JlYXRlciB0aGFuIGNvbXBhcmlzb24uXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqIEBtZW1iZXJPZiBDcnVkRmllbGRDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpXG4gIG92ZXJyaWRlIGdyZWF0ZXJUaGFuPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gRmllbGQgbmFtZSBmb3IgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIGNvbXBhcmlzb24uXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqIEBtZW1iZXJPZiBDcnVkRmllbGRDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpXG4gIG92ZXJyaWRlIGdyZWF0ZXJUaGFuT3JFcXVhbD86IHN0cmluZztcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIE51bWJlciBvZiBjb2x1bW5zIGZvciB0ZXh0YXJlYSBpbnB1dHMuXG4gICAqIEBzdW1tYXJ5IEZvciB0ZXh0YXJlYSBpbnB1dHMsIHRoaXMgc2V0cyB0aGUgdmlzaWJsZSB3aWR0aCBvZiB0aGUgdGV4dCBhcmVhIGluIGF2ZXJhZ2UgY2hhcmFjdGVyIHdpZHRocy5cbiAgICogVGhpcyBpcyB1c2VkIGFsb25nc2lkZSByb3dzIHRvIGRlZmluZSB0aGUgZGltZW5zaW9ucyBvZiB0aGUgdGV4dGFyZWEuXG4gICAqXG4gICAqIEB0eXBlIHtudW1iZXJ9XG4gICAqIEBtZW1iZXJPZiBDcnVkRmllbGRDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpXG4gIGNvbHM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBOdW1iZXIgb2Ygcm93cyBmb3IgdGV4dGFyZWEgaW5wdXRzLlxuICAgKiBAc3VtbWFyeSBGb3IgdGV4dGFyZWEgaW5wdXRzLCB0aGlzIHNldHMgdGhlIHZpc2libGUgaGVpZ2h0IG9mIHRoZSB0ZXh0IGFyZWEgaW4gbGluZXMgb2YgdGV4dC5cbiAgICogVGhpcyBpcyB1c2VkIGFsb25nc2lkZSBjb2xzIHRvIGRlZmluZSB0aGUgZGltZW5zaW9ucyBvZiB0aGUgdGV4dGFyZWEuXG4gICAqXG4gICAqIEB0eXBlIHtudW1iZXJ9XG4gICAqIEBtZW1iZXJPZiBDcnVkRmllbGRDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpXG4gIHJvd3M/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBBbGlnbm1lbnQgb2YgdGhlIGZpZWxkIGNvbnRlbnQuXG4gICAqIEBzdW1tYXJ5IENvbnRyb2xzIHRoZSBob3Jpem9udGFsIGFsaWdubWVudCBvZiB0aGUgZmllbGQgY29udGVudC5cbiAgICogVGhpcyBhZmZlY3RzIGhvdyB0aGUgY29udGVudCBpcyBwb3NpdGlvbmVkIHdpdGhpbiB0aGUgZmllbGQgY29udGFpbmVyLlxuICAgKlxuICAgKiBAdHlwZSB7J3N0YXJ0JyB8ICdjZW50ZXInfVxuICAgKiBAbWVtYmVyT2YgQ3J1ZEZpZWxkQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKVxuICBhbGlnbm1lbnQ/OiAnc3RhcnQnIHwgJ2NlbnRlcic7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBJbml0aWFsIGNoZWNrZWQgc3RhdGUgZm9yIGNoZWNrYm94IG9yIHRvZ2dsZSBpbnB1dHMuXG4gICAqIEBzdW1tYXJ5IEZvciBjaGVja2JveCBvciB0b2dnbGUgaW5wdXRzLCB0aGlzIHNldHMgdGhlIGluaXRpYWwgY2hlY2tlZCBzdGF0ZS5cbiAgICogV2hlbiB0cnVlLCB0aGUgY2hlY2tib3ggb3IgdG9nZ2xlIHdpbGwgYmUgaW5pdGlhbGx5IGNoZWNrZWQuXG4gICAqXG4gICAqIEB0eXBlIHtib29sZWFufVxuICAgKiBAbWVtYmVyT2YgQ3J1ZEZpZWxkQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKVxuICBjaGVja2VkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEp1c3RpZmljYXRpb24gb2YgaXRlbXMgd2l0aGluIHRoZSBmaWVsZC5cbiAgICogQHN1bW1hcnkgQ29udHJvbHMgaG93IGl0ZW1zIGFyZSBqdXN0aWZpZWQgd2l0aGluIHRoZSBmaWVsZCBjb250YWluZXIuXG4gICAqIFRoaXMgaXMgcGFydGljdWxhcmx5IHVzZWZ1bCBmb3IgZmllbGRzIHdpdGggbXVsdGlwbGUgZWxlbWVudHMsIHN1Y2ggYXMgcmFkaW8gZ3JvdXBzLlxuICAgKlxuICAgKiBAdHlwZSB7J3N0YXJ0JyB8ICdlbmQnIHwgJ3NwYWNlLWJldHdlZW4nfVxuICAgKiBAbWVtYmVyT2YgQ3J1ZEZpZWxkQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKVxuICBqdXN0aWZ5PzogJ3N0YXJ0JyB8ICdlbmQnIHwgJ3NwYWNlLWJldHdlZW4nO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gVGV4dCBmb3IgdGhlIGNhbmNlbCBidXR0b24gaW4gc2VsZWN0IGlucHV0cy5cbiAgICogQHN1bW1hcnkgRm9yIHNlbGVjdCBpbnB1dHMgd2l0aCBhIGNhbmNlbCBidXR0b24sIHRoaXMgc2V0cyB0aGUgdGV4dCBkaXNwbGF5ZWQgb24gdGhlIGNhbmNlbCBidXR0b24uXG4gICAqIFRoaXMgaXMgdHlwaWNhbGx5IHVzZWQgaW4gc2VsZWN0IGRpYWxvZ3MgdG8gcHJvdmlkZSBhIHdheSBmb3IgdXNlcnMgdG8gZGlzbWlzcyB0aGUgc2VsZWN0aW9uIHdpdGhvdXQgbWFraW5nIGEgY2hhbmdlLlxuICAgKlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKiBAbWVtYmVyT2YgQ3J1ZEZpZWxkQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKVxuICBjYW5jZWxUZXh0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gSW50ZXJmYWNlIHN0eWxlIGZvciBzZWxlY3QgaW5wdXRzLlxuICAgKiBAc3VtbWFyeSBTcGVjaWZpZXMgdGhlIGludGVyZmFjZSBzdHlsZSBmb3Igc2VsZWN0IGlucHV0cywgc3VjaCBhcyAnYWxlcnQnLCAnYWN0aW9uLXNoZWV0Jywgb3IgJ3BvcG92ZXInLlxuICAgKiBUaGlzIGRldGVybWluZXMgaG93IHRoZSBzZWxlY3Qgb3B0aW9ucyBhcmUgcHJlc2VudGVkIHRvIHRoZSB1c2VyLlxuICAgKlxuICAgKiBAdHlwZSB7U2VsZWN0SW50ZXJmYWNlfVxuICAgKiBAbWVtYmVyT2YgQ3J1ZEZpZWxkQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKVxuICBpbnRlcmZhY2U6IFNlbGVjdEludGVyZmFjZSA9ICdwb3BvdmVyJztcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIE9wdGlvbnMgZm9yIHNlbGVjdCBvciByYWRpbyBpbnB1dHMuXG4gICAqIEBzdW1tYXJ5IFByb3ZpZGVzIHRoZSBsaXN0IG9mIG9wdGlvbnMgZm9yIHNlbGVjdCBvciByYWRpbyBpbnB1dHMuIEVhY2ggb3B0aW9uIGNhbiBoYXZlIGEgdmFsdWUgYW5kIGEgbGFiZWwuXG4gICAqIFRoaXMgaXMgdXNlZCB0byBwb3B1bGF0ZSB0aGUgZHJvcGRvd24gb3IgcmFkaW8gZ3JvdXAgd2l0aCBjaG9pY2VzLlxuICAgKlxuICAgKiBAdHlwZSB7U2VsZWN0T3B0aW9uW10gfCBSYWRpb09wdGlvbltdfVxuICAgKiBAbWVtYmVyT2YgQ3J1ZEZpZWxkQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKVxuICBvcHRpb25zITogU2VsZWN0T3B0aW9uW10gfCBSYWRpb09wdGlvbltdO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gTW9kZSBvZiB0aGUgZmllbGQuXG4gICAqIEBzdW1tYXJ5IFNwZWNpZmllcyB0aGUgdmlzdWFsIG1vZGUgb2YgdGhlIGZpZWxkLCBzdWNoIGFzICdpb3MnIG9yICdtZCcuXG4gICAqIFRoaXMgYWZmZWN0cyB0aGUgc3R5bGluZyBhbmQgYXBwZWFyYW5jZSBvZiB0aGUgZmllbGQgdG8gbWF0Y2ggdGhlIHBsYXRmb3JtIHN0eWxlLlxuICAgKlxuICAgKiBAdHlwZSB7J2lvcycgfCAnbWQnfVxuICAgKiBAbWVtYmVyT2YgQ3J1ZEZpZWxkQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKVxuICBtb2RlPzogJ2lvcycgfCAnbWQnO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gU3BlbGxjaGVjayBhdHRyaWJ1dGUgZm9yIHRleHQgaW5wdXRzLlxuICAgKiBAc3VtbWFyeSBFbmFibGVzIG9yIGRpc2FibGVzIHNwZWxsY2hlY2tpbmcgZm9yIHRleHQgaW5wdXRzLlxuICAgKiBXaGVuIHRydWUsIHRoZSBicm93c2VyIHdpbGwgY2hlY2sgdGhlIHNwZWxsaW5nIG9mIHRoZSBpbnB1dCB0ZXh0LlxuICAgKlxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICogQG1lbWJlck9mIENydWRGaWVsZENvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KClcbiAgc3BlbGxjaGVjazogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gSW5wdXQgbW9kZSBmb3IgdGV4dCBpbnB1dHMuXG4gICAqIEBzdW1tYXJ5IEhpbnRzIGF0IHRoZSB0eXBlIG9mIGRhdGEgdGhhdCBtaWdodCBiZSBlbnRlcmVkIGJ5IHRoZSB1c2VyIHdoaWxlIGVkaXRpbmcgdGhlIGVsZW1lbnQuXG4gICAqIFRoaXMgY2FuIGFmZmVjdCB0aGUgdmlydHVhbCBrZXlib2FyZCBsYXlvdXQgb24gbW9iaWxlIGRldmljZXMuXG4gICAqXG4gICAqIEB0eXBlIHsnbm9uZScgfCAndGV4dCcgfCAndGVsJyB8ICd1cmwnIHwgJ2VtYWlsJyB8ICdudW1lcmljJyB8ICdkZWNpbWFsJyB8ICdzZWFyY2gnfVxuICAgKiBAZGVmYXVsdCAnbm9uZSdcbiAgICogQG1lbWJlck9mIENydWRGaWVsZENvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KClcbiAgaW5wdXRtb2RlOlxuICAgIHwgJ25vbmUnXG4gICAgfCAndGV4dCdcbiAgICB8ICd0ZWwnXG4gICAgfCAndXJsJ1xuICAgIHwgJ2VtYWlsJ1xuICAgIHwgJ251bWVyaWMnXG4gICAgfCAnZGVjaW1hbCdcbiAgICB8ICdzZWFyY2gnID0gJ25vbmUnO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQXV0b2NvbXBsZXRlIGJlaGF2aW9yIGZvciB0aGUgZmllbGQuXG4gICAqIEBzdW1tYXJ5IFNwZWNpZmllcyB3aGV0aGVyIGFuZCBob3cgdGhlIGJyb3dzZXIgc2hvdWxkIGF1dG9tYXRpY2FsbHkgY29tcGxldGUgdGhlIGlucHV0LlxuICAgKiBUaGlzIGNhbiBpbXByb3ZlIHVzZXIgZXhwZXJpZW5jZSBieSBzdWdnZXN0aW5nIHByZXZpb3VzbHkgZW50ZXJlZCB2YWx1ZXMuXG4gICAqXG4gICAqIEB0eXBlIHtBdXRvY29tcGxldGVUeXBlc31cbiAgICogQGRlZmF1bHQgJ29mZidcbiAgICogQG1lbWJlck9mIENydWRGaWVsZENvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KClcbiAgYXV0b2NvbXBsZXRlOiBBdXRvY29tcGxldGVUeXBlcyA9ICdvZmYnO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gRmlsbCBzdHlsZSBmb3IgdGhlIGZpZWxkLlxuICAgKiBAc3VtbWFyeSBEZXRlcm1pbmVzIHRoZSBmaWxsIHN0eWxlIG9mIHRoZSBmaWVsZCwgc3VjaCBhcyAnb3V0bGluZScgb3IgJ3NvbGlkJy5cbiAgICogVGhpcyBhZmZlY3RzIHRoZSBib3JkZXIgYW5kIGJhY2tncm91bmQgb2YgdGhlIGZpZWxkLlxuICAgKlxuICAgKiBAdHlwZSB7J291dGxpbmUnIHwgJ3NvbGlkJ31cbiAgICogQGRlZmF1bHQgJ291dGxpbmUnXG4gICAqIEBtZW1iZXJPZiBDcnVkRmllbGRDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpXG4gIGZpbGw6ICdvdXRsaW5lJyB8ICdzb2xpZCcgPSAnb3V0bGluZSc7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBQbGFjZW1lbnQgb2YgdGhlIGxhYmVsIHJlbGF0aXZlIHRvIHRoZSBmaWVsZC5cbiAgICogQHN1bW1hcnkgU3BlY2lmaWVzIHdoZXJlIHRoZSBsYWJlbCBzaG91bGQgYmUgcGxhY2VkIHJlbGF0aXZlIHRvIHRoZSBmaWVsZC5cbiAgICogT3B0aW9ucyBpbmNsdWRlICdzdGFydCcsICdlbmQnLCAnZmxvYXRpbmcnLCAnc3RhY2tlZCcsIGFuZCAnZml4ZWQnLlxuICAgKlxuICAgKiBAdHlwZSB7J3N0YXJ0JyB8ICdlbmQnIHwgJ2Zsb2F0aW5nJyB8ICdzdGFja2VkJyB8ICdmaXhlZCd9XG4gICAqIEBkZWZhdWx0ICdmbG9hdGluZydcbiAgICogQG1lbWJlck9mIENydWRGaWVsZENvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KClcbiAgbGFiZWxQbGFjZW1lbnQ6ICdzdGFydCcgfCAnZW5kJyB8ICdmbG9hdGluZycgfCAnc3RhY2tlZCcgfCAnZml4ZWQnID1cbiAgICAnZmxvYXRpbmcnO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gVXBkYXRlIG1vZGUgZm9yIHRoZSBmaWVsZC5cbiAgICogQHN1bW1hcnkgRGV0ZXJtaW5lcyB3aGVuIHRoZSBmaWVsZCB2YWx1ZSBzaG91bGQgYmUgdXBkYXRlZCBpbiB0aGUgZm9ybSBtb2RlbC5cbiAgICogT3B0aW9ucyBpbmNsdWRlICdjaGFuZ2UnLCAnYmx1cicsIGFuZCAnc3VibWl0Jy5cbiAgICpcbiAgICogQHR5cGUge0ZpZWxkVXBkYXRlTW9kZX1cbiAgICogQGRlZmF1bHQgJ2NoYW5nZSdcbiAgICogQG1lbWJlck9mIENydWRGaWVsZENvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KClcbiAgdXBkYXRlT246IEZpZWxkVXBkYXRlTW9kZSA9ICdjaGFuZ2UnO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUmVmZXJlbmNlIHRvIHRoZSBmaWVsZCBjb21wb25lbnQuXG4gICAqIEBzdW1tYXJ5IFByb3ZpZGVzIGEgcmVmZXJlbmNlIHRvIHRoZSBmaWVsZCBjb21wb25lbnQgZWxlbWVudCwgYWxsb3dpbmcgZGlyZWN0IGFjY2VzcyB0byBpdHMgcHJvcGVydGllcyBhbmQgbWV0aG9kcy5cbiAgICpcbiAgICogQHR5cGUge0VsZW1lbnRSZWZ9XG4gICAqIEBtZW1iZXJPZiBDcnVkRmllbGRDb21wb25lbnRcbiAgICovXG4gIEBWaWV3Q2hpbGQoJ2NvbXBvbmVudCcsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICBvdmVycmlkZSBjb21wb25lbnQhOiBFbGVtZW50UmVmO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUGFyZW50IGZvcm0gZ3JvdXAuXG4gICAqIEBzdW1tYXJ5IFJlZmVyZW5jZXMgdGhlIHBhcmVudCBmb3JtIGdyb3VwIHRvIHdoaWNoIHRoaXMgZmllbGQgYmVsb25ncy5cbiAgICogVGhpcyBpcyBuZWNlc3NhcnkgZm9yIGludGVncmF0aW5nIHRoZSBmaWVsZCB3aXRoIEFuZ3VsYXIncyByZWFjdGl2ZSBmb3Jtcy5cbiAgICpcbiAgICogQHR5cGUge0Zvcm1Hcm91cH1cbiAgICogQG1lbWJlck9mIENydWRGaWVsZENvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KClcbiAgb3ZlcnJpZGUgZm9ybUdyb3VwOiBGb3JtR3JvdXAgfCB1bmRlZmluZWQ7XG5cbiAgQElucHV0KClcbiAgb3ZlcnJpZGUgZm9ybUNvbnRyb2whOiBGb3JtQ29udHJvbDtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFRyYW5zbGF0YWJpbGl0eSBvZiBmaWVsZCBsYWJlbHMuXG4gICAqIEBzdW1tYXJ5IEluZGljYXRlcyB3aGV0aGVyIHRoZSBmaWVsZCBsYWJlbHMgc2hvdWxkIGJlIHRyYW5zbGF0ZWQgYmFzZWQgb24gdGhlIGN1cnJlbnQgbGFuZ3VhZ2Ugc2V0dGluZ3MuXG4gICAqIFRoaXMgaXMgdXNlZnVsIGZvciBhcHBsaWNhdGlvbnMgc3VwcG9ydGluZyBtdWx0aXBsZSBsYW5ndWFnZXMuXG4gICAqXG4gICAqIEB0eXBlIHtTdHJpbmdPckJvb2xlYW59XG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICogQG1lbWJlck9mIENydWRGaWVsZENvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KClcbiAgdHJhbnNsYXRhYmxlOiBTdHJpbmdPckJvb2xlYW4gPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBjdXJyZW50IHJlY29yZC5cbiAgICogQHN1bW1hcnkgQSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIGN1cnJlbnQgcmVjb3JkIGJlaW5nIGRpc3BsYXllZCBvciBtYW5pcHVsYXRlZC5cbiAgICogVGhpcyBpcyB0eXBpY2FsbHkgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIHRoZSBwcmltYXJ5IGtleSBmb3Igb3BlcmF0aW9ucyBvbiBzcGVjaWZpYyByZWNvcmRzLlxuICAgKlxuICAgKiBAdHlwZSB7c3RyaW5nIHwgbnVtYmVyfVxuICAgKi9cbiAgQElucHV0KClcbiAgdWlkITogc3RyaW5nIHwgbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gIC8vIGNvbnN0cnVjdG9yKCkge1xuXG4gIC8vIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAvLyBzdXBlci5vbkluaXQodGhpcy51cGRhdGVPbik7XG4gICAgaWYgKFtPcGVyYXRpb25LZXlzLlJFQUQsIE9wZXJhdGlvbktleXMuREVMRVRFXS5pbmNsdWRlcyh0aGlzLm9wZXJhdGlvbikpIHtcblxuICAgICAgdGhpcy5mb3JtR3JvdXAgPSB1bmRlZmluZWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgIGFkZEljb25zKHtjaGV2cm9uRG93bk91dGxpbmUsIGNoZXZyb25VcE91dGxpbmV9KVxuICAgICAgaWYgKHRoaXMudHlwZSA9PT0gSFRNTDVJbnB1dFR5cGVzLlJBRElPICYmICF0aGlzLnZhbHVlKVxuICAgICAgICB0aGlzLmZvcm1Hcm91cD8uZ2V0KHRoaXMubmFtZSk/LnNldFZhbHVlKHRoaXMub3B0aW9uc1swXS52YWx1ZSk7IC8vIFRPRE86IG1pZ3JhdGUgdG8gUmVuZGVyaW5nRW5naW5lXG4gICAgfVxuXG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgaWYgKFtPcGVyYXRpb25LZXlzLlJFQUQsIE9wZXJhdGlvbktleXMuREVMRVRFXS5pbmNsdWRlcyh0aGlzLm9wZXJhdGlvbikpXG4gICAgICBzdXBlci5hZnRlclZpZXdJbml0KCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAoW09wZXJhdGlvbktleXMuUkVBRCwgT3BlcmF0aW9uS2V5cy5ERUxFVEVdLmluY2x1ZGVzKHRoaXMub3BlcmF0aW9uKSlcbiAgICAgIHRoaXMub25EZXN0cm95KCk7XG4gIH1cbn1cbiIsIkBpZihvcGVyYXRpb24gPT09ICdyZWFkJyB8fCBvcGVyYXRpb24gPT09ICdkZWxldGUnKSB7XG4gIDxuZy1jb250YWluZXIgI2NvbXBvbmVudD5cbiAgICA8ZGl2IFtjbGFzc109XCInZGNmLWlucHV0LWl0ZW0gJyArIG9wZXJhdGlvblwiPlxuICAgICAgPGlvbi1pdGVtPlxuICAgICAgICA8aW9uLWxhYmVsPlxuICAgICAgICAgIHt7IGxhYmVsIHwgdHJhbnNsYXRlIH19PGJyIC8+XG4gICAgICAgICAgQGlmKHZhbHVlKSB7XG4gICAgICAgICAgICA8aW9uLXRleHQgIFtpbm5lckhUTUxdPVwidHlwZSA9PT0gJ3Bhc3N3b3JkJyA/ICcqKioqKioqKicgOiB2YWx1ZVwiPjwvaW9uLXRleHQ+XG4gICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICA8YnIgLz5cbiAgICAgICAgICB9XG4gICAgICAgIDwvaW9uLWxhYmVsPlxuICAgICAgPC9pb24taXRlbT5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG59IEBlbHNlIHtcbiAgPG5nLWNvbnRhaW5lciAjY29tcG9uZW50IFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwXCI+XG4gICAgPGRpdiAjY29udGFpbmVyIFtjbGFzc109XCInZGNmLWlucHV0LWl0ZW0gJyArIChvcGVyYXRpb24gfHwgJ2NyZWF0ZScpXCI+XG4gICAgICAgIEBpZih0eXBlID09PSAndGV4dGFyZWEnKSB7XG4gICAgICAgICAgPGlvbi10ZXh0YXJlYVxuICAgICAgICAgICAgW21vZGVdPVwibW9kZVwiXG4gICAgICAgICAgICBbaGlkZGVuXT1cImhpZGRlblwiXG4gICAgICAgICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWQgIT09IHVuZGVmaW5lZCA/IHJlcXVpcmVkIDogbnVsbFwiXG4gICAgICAgICAgICBbbWlubGVuZ3RoXT1cIm1pbmxlbmd0aCAhPT0gdW5kZWZpbmVkID8gbWlubGVuZ3RoIDogbnVsbFwiXG4gICAgICAgICAgICBbbWF4bGVuZ3RoXT1cIm1heGxlbmd0aCAhPT0gdW5kZWZpbmVkID8gbWF4bGVuZ3RoIDogbnVsbFwiXG4gICAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHkgIT09IHVuZGVmaW5lZCA/IHJlYWRvbmx5IDogbnVsbFwiXG4gICAgICAgICAgICBbaW5wdXRtb2RlXT1cImlucHV0bW9kZVwiXG4gICAgICAgICAgICBbc3BlbGxjaGVja109XCJzcGVsbGNoZWNrXCJcbiAgICAgICAgICAgIFtyb3dzXT1cInJvd3NcIlxuICAgICAgICAgICAgW2xhYmVsUGxhY2VtZW50XT1cImxhYmVsUGxhY2VtZW50XCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJ2YWx1ZVwiXG4gICAgICAgICAgICBbZmlsbF09XCJmaWxsXCJcbiAgICAgICAgICAgIFtlcnJvclRleHRdPVwiZ2V0RXJyb3JzKGNvbnRhaW5lcilcIlxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInRyYW5zbGF0YWJsZSA/IChwbGFjZWhvbGRlciB8IHRyYW5zbGF0ZSkgOiBwbGFjZWhvbGRlclwiXG4gICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cIm5hbWVcIlxuICAgICAgICAgICAgW2xhYmVsXT1cInRyYW5zbGF0YWJsZSA/IChsYWJlbCB8IHRyYW5zbGF0ZSkgOiBsYWJlbFwiXG4gICAgICAgICAgPlxuICAgICAgICAgIDwvaW9uLXRleHRhcmVhPlxuICAgICAgICB9XG4gICAgICAgIEBlbHNlIGlmKHR5cGUgPT09ICdjaGVja2JveCcpIHtcbiAgICAgICAgICA8aW9uLWl0ZW0+XG4gICAgICAgICAgICA8aW9uLWNoZWNrYm94XG4gICAgICAgICAgICAgICNjaGVja2JveEVsZW1lbnRcbiAgICAgICAgICAgICAgW25hbWVdPVwicGF0aFwiXG4gICAgICAgICAgICAgIFttb2RlXT1cIm1vZGVcIlxuICAgICAgICAgICAgICBbZXJyb3JUZXh0XT1cImdldEVycm9ycyhjb250YWluZXIpXCJcbiAgICAgICAgICAgICAgW2hpZGRlbl09XCJoaWRkZW5cIlxuICAgICAgICAgICAgICBbbGFiZWxQbGFjZW1lbnRdPVwibGFiZWxQbGFjZW1lbnRcIlxuICAgICAgICAgICAgICBbanVzdGlmeV09XCJqdXN0aWZ5XCJcbiAgICAgICAgICAgICAgW3ZhbHVlXT1cInZhbHVlXCJcbiAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiY2hlY2tlZFwiXG4gICAgICAgICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXG4gICAgICAgICAgICAgIChpb25DaGFuZ2UpPVwiY2hlY2tlZCA9ICFjaGVja2VkXCJcbiAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJuYW1lXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJsYWJlbCB8IHRyYW5zbGF0ZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgIDwvaW9uLWNoZWNrYm94PlxuICAgICAgICAgIDwvaW9uLWl0ZW0+XG4gICAgICAgIH1cbiAgICAgICAgQGVsc2UgaWYodHlwZSA9PT0gJ3JhZGlvJykge1xuICAgICAgICAgIDxpb24tcmFkaW8tZ3JvdXAgW2Zvcm1Db250cm9sTmFtZV09XCJuYW1lXCIgW25hbWVdPVwicGF0aFwiIFt2YWx1ZV09XCJ2YWx1ZVwiICNjb21wb25lbnQ+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJkY2YtcmFkaW8tZ3JvdXAtbGFiZWxcIiBbZm9yXT1cInBhdGhcIj57e2xhYmVsIHwgdHJhbnNsYXRlfX08L2xhYmVsPlxuICAgICAgICAgICAgQGZvcihvcHRpb24gb2Ygb3B0aW9uczsgdHJhY2sgb3B0aW9uKSB7XG4gICAgICAgICAgICAgIDxpb24taXRlbT5cbiAgICAgICAgICAgICAgICA8aW9uLXJhZGlvXG4gICAgICAgICAgICAgICAgICBbZXJyb3JUZXh0XT1cImdldEVycm9ycyhjb250YWluZXIpXCJcbiAgICAgICAgICAgICAgICAgIFttb2RlXT1cIm1vZGVcIlxuICAgICAgICAgICAgICAgICAgW2hpZGRlbl09XCJoaWRkZW5cIlxuICAgICAgICAgICAgICAgICAgW2xhYmVsUGxhY2VtZW50XT1cImxhYmVsUGxhY2VtZW50XCJcbiAgICAgICAgICAgICAgICAgIFthbGlnbm1lbnRdPVwiYWxpZ25tZW50XCJcbiAgICAgICAgICAgICAgICAgIFtqdXN0aWZ5XT1cImp1c3RpZnlcIlxuICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcbiAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJvcHRpb24udmFsdWVcIlxuICAgICAgICAgICAgICAgID57eyB0cmFuc2xhdGFibGUgPyAgKG9wdGlvbj8udGV4dCB8IHRyYW5zbGF0ZSkgOiBvcHRpb24/LnRleHQgfX08L2lvbi1yYWRpbz5cbiAgICAgICAgICAgICAgPC9pb24taXRlbT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2lvbi1yYWRpby1ncm91cD5cbiAgICAgICAgfVxuICAgICAgICBAZWxzZSBpZih0eXBlID09PSAnc2VsZWN0Jykge1xuICAgICAgICAgICAgPGlvbi1zZWxlY3RcbiAgICAgICAgICAgICAgdG9nZ2xlSWNvbj1cImNoZXZyb24tZG93bi1vdXRsaW5lXCJcbiAgICAgICAgICAgICAgZXhwYW5kZWRJY29uPVwiY2hldnJvbi11cC1vdXRsaW5lXCJcbiAgICAgICAgICAgICAgW25hbWVdPVwicGF0aFwiXG4gICAgICAgICAgICAgIFttb2RlXT1cIm1vZGVcIlxuICAgICAgICAgICAgICBbaGlkZGVuXT1cImhpZGRlblwiXG4gICAgICAgICAgICAgIFtsYWJlbFBsYWNlbWVudF09XCJsYWJlbFBsYWNlbWVudFwiXG4gICAgICAgICAgICAgIFtsYWJlbF09XCJ0cmFuc2xhdGFibGUgPyAobGFiZWwgfCB0cmFuc2xhdGUpIDogbGFiZWxcIlxuICAgICAgICAgICAgICBbdmFsdWVdPVwidmFsdWVcIlxuICAgICAgICAgICAgICBbZmlsbF09XCJmaWxsXCJcbiAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInRyYW5zbGF0YWJsZSA/IChwbGFjZWhvbGRlciB8IHRyYW5zbGF0ZSkgOiBwbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwibmFtZVwiXG4gICAgICAgICAgICAgIFtlcnJvclRleHRdPVwiZ2V0RXJyb3JzKGNvbnRhaW5lcilcIlxuICAgICAgICAgICAgICBbaW50ZXJmYWNlXT1cImludGVyZmFjZVwiPlxuICAgICAgICAgICAgICBAZm9yKG9wdGlvbiBvZiBvcHRpb25zOyB0cmFjayBvcHRpb24udmFsdWUpIHtcbiAgICAgICAgICAgICAgICA8aW9uLXNlbGVjdC1vcHRpb24gW3ZhbHVlXT1cIm9wdGlvbi52YWx1ZVwiPlxuICAgICAgICAgICAgICAgICAge3sgdHJhbnNsYXRhYmxlID8gKG9wdGlvbi50ZXh0IHwgdHJhbnNsYXRlKSA6IG9wdGlvbnMudGV4dCB9fVxuICAgICAgICAgICAgICAgIDwvaW9uLXNlbGVjdC1vcHRpb24+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvaW9uLXNlbGVjdD5cbiAgICAgICAgfVxuICAgICAgICBAZWxzZSB7XG4gICAgICAgICAgPGlvbi1pbnB1dFxuICAgICAgICAgICAgW25hbWVdPVwicGF0aFwiXG4gICAgICAgICAgICBbdHlwZV09XCJ0eXBlXCJcbiAgICAgICAgICAgIFttb2RlXT1cIm1vZGVcIlxuICAgICAgICAgICAgW2hpZGRlbl09XCJoaWRkZW5cIlxuICAgICAgICAgICAgW2lucHV0bW9kZV09XCJpbnB1dG1vZGVcIlxuICAgICAgICAgICAgW2xhYmVsUGxhY2VtZW50XT1cImxhYmVsUGxhY2VtZW50XCJcbiAgICAgICAgICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZCAhPT0gdW5kZWZpbmVkID8gcmVxdWlyZWQgOiBmYWxzZVwiXG4gICAgICAgICAgICBbbWlubGVuZ3RoXT1cIm1pbmxlbmd0aCAhPT0gdW5kZWZpbmVkID8gbWlubGVuZ3RoIDogbnVsbFwiXG4gICAgICAgICAgICBbbWF4bGVuZ3RoXT1cIm1heGxlbmd0aCAhPT0gdW5kZWZpbmVkID8gbWF4bGVuZ3RoIDogbnVsbFwiXG4gICAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHkgIT09IHVuZGVmaW5lZCA/IHJlYWRvbmx5IDogbnVsbFwiXG4gICAgICAgICAgICBbbWF4XT1cIm1heCAhPT0gdW5kZWZpbmVkID8gbWF4IDogbnVsbFwiXG4gICAgICAgICAgICBbbWluXT1cIm1pbiAhPT0gdW5kZWZpbmVkID8gbWluIDogbnVsbFwiXG4gICAgICAgICAgICBbcGF0dGVybl09XCJwYXR0ZXJuICE9PSB1bmRlZmluZWQgPyBwYXR0ZXJuIDogbnVsbFwiXG4gICAgICAgICAgICBbc3RlcF09XCJzdGVwICE9PSB1bmRlZmluZWQgPyBzdGVwIDogbnVsbFwiXG4gICAgICAgICAgICBbZmlsbF09XCJmaWxsXCJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJ0cmFuc2xhdGFibGUgPyAocGxhY2Vob2xkZXIgfCB0cmFuc2xhdGUpIDogcGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJuYW1lXCJcbiAgICAgICAgICAgIFtlcnJvclRleHRdPVwiZ2V0RXJyb3JzKGNvbnRhaW5lcilcIlxuICAgICAgICAgICAgW2xhYmVsXT1cInRyYW5zbGF0YWJsZSA/IChsYWJlbCB8IHRyYW5zbGF0ZSkgOiBsYWJlbFwiPlxuICAgICAgICAgIDwvaW9uLWlucHV0PlxuICAgICAgICB9XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxufVxuXG4iXX0=
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
export const CssClasses = {
|
|
2
|
-
BUTTONS_CONTAINER: 'buttons-container',
|
|
3
|
-
};
|
|
4
|
-
export const DefaultFormReactiveOptions = {
|
|
5
|
-
buttons: {
|
|
6
|
-
submit: {
|
|
7
|
-
text: 'Submit',
|
|
8
|
-
},
|
|
9
|
-
clear: {
|
|
10
|
-
text: 'Clear',
|
|
11
|
-
},
|
|
12
|
-
},
|
|
13
|
-
};
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2NydWQtZm9ybS9jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLGlCQUFpQixFQUFFLG1CQUFtQjtDQUN2QyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQW9CO0lBQ3pELE9BQU8sRUFBRTtRQUNQLE1BQU0sRUFBRTtZQUNOLElBQUksRUFBRSxRQUFRO1NBQ2Y7UUFDRCxLQUFLLEVBQUU7WUFDTCxJQUFJLEVBQUUsT0FBTztTQUNkO0tBQ0Y7Q0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ3J1ZEZvcm1PcHRpb25zIH0gZnJvbSAnLi90eXBlcyc7XG5cbmV4cG9ydCBjb25zdCBDc3NDbGFzc2VzID0ge1xuICBCVVRUT05TX0NPTlRBSU5FUjogJ2J1dHRvbnMtY29udGFpbmVyJyxcbn07XG5cbmV4cG9ydCBjb25zdCBEZWZhdWx0Rm9ybVJlYWN0aXZlT3B0aW9uczogQ3J1ZEZvcm1PcHRpb25zID0ge1xuICBidXR0b25zOiB7XG4gICAgc3VibWl0OiB7XG4gICAgICB0ZXh0OiAnU3VibWl0JyxcbiAgICB9LFxuICAgIGNsZWFyOiB7XG4gICAgICB0ZXh0OiAnQ2xlYXInLFxuICAgIH0sXG4gIH0sXG59O1xuIl19
|