@magic-xpa/gui 4.800.0-dev480.21 → 4.800.0-dev480.210
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/magic-xpa-gui.umd.js +1050 -7528
- package/bundles/magic-xpa-gui.umd.js.map +1 -1
- package/bundles/magic-xpa-gui.umd.min.js +1 -1
- package/bundles/magic-xpa-gui.umd.min.js.map +1 -1
- package/esm2015/index.js +1 -1
- package/esm2015/magic-xpa-gui.js +1 -4
- package/esm2015/src/Commands.js +11 -114
- package/esm2015/src/Events.js +1 -517
- package/esm2015/src/EventsProcessor.js +1 -51
- package/esm2015/src/FocusManager.js +1 -13
- package/esm2015/src/GuiConstants.js +2 -11
- package/esm2015/src/GuiEnums.js +126 -130
- package/esm2015/src/GuiEnvironment.js +1 -1
- package/esm2015/src/IFlowMonitorQueue.js +1 -1
- package/esm2015/src/Manager.js +10 -148
- package/esm2015/src/UIBridge.js +1 -6
- package/esm2015/src/env/IEnvironment.js +1 -1
- package/esm2015/src/gui/ControlBase.js +1 -1
- package/esm2015/src/gui/GuiMgControl.js +1 -94
- package/esm2015/src/gui/GuiMgForm.js +1 -1
- package/esm2015/src/gui/KeyboardItem.js +5 -46
- package/esm2015/src/gui/LastFocusedVal.js +1 -5
- package/esm2015/src/gui/MgValue.js +1 -1
- package/esm2015/src/gui/PropParentInterface.js +1 -1
- package/esm2015/src/gui/low/DialogHandler.js +1 -10
- package/esm2015/src/gui/low/GuiCommand.js +1 -12
- package/esm2015/src/gui/low/GuiCommandQueue.js +1 -66
- package/esm2015/src/gui/low/GuiInteractive.js +8 -465
- package/esm2015/src/gui/low/Style.js +1 -9
- package/esm2015/src/management/RuntimeContextBase.js +11 -14
- package/esm2015/src/management/data/BlobType.js +0 -0
- package/esm2015/src/management/data/DcValues.js +8 -67
- package/esm2015/src/management/data/DcValuesBuilderBase.js +2 -37
- package/esm2015/src/management/data/FieldDef.js +1 -95
- package/esm2015/src/management/data/FieldsTable.js +2 -28
- package/esm2015/src/management/data/GuiDataViewBase.js +33 -72
- package/esm2015/src/management/data/GuiFieldBase.js +4 -39
- package/esm2015/src/management/data/IRecord.js +1 -1
- package/esm2015/src/management/data/IReferencedObject.js +1 -8
- package/esm2015/src/management/data/NUM_TYPE.js +14 -485
- package/esm2015/src/management/data/ObjectReferenceBase.js +1 -3
- package/esm2015/src/management/data/ObjectReferencesCollection.js +1 -2
- package/esm2015/src/management/data/RecordUtils.js +6 -112
- package/esm2015/src/management/data/VectorType.js +17 -252
- package/esm2015/src/management/data/VectorTypeBase.js +1 -35
- package/esm2015/src/management/events/IActionManager.js +1 -1
- package/esm2015/src/management/events/IGuiEventsManager.js +1 -1
- package/esm2015/src/management/exp/ExpressionInterface.js +5 -3
- package/esm2015/src/management/exp/GuiExpressionEvaluator.js +38 -155
- package/esm2015/src/management/gui/ControlTable.js +18 -72
- package/esm2015/src/management/gui/DisplayConvertor.js +43 -493
- package/esm2015/src/management/gui/FieldValidator.js +58 -339
- package/esm2015/src/management/gui/GuiControlPropertyAdapter.js +1 -1
- package/esm2015/src/management/gui/GuiFormPropertyAdapter.js +1 -8
- package/esm2015/src/management/gui/HebrewDate.js +3 -140
- package/esm2015/src/management/gui/Helps.js +2 -48
- package/esm2015/src/management/gui/MgControlBase.js +143 -876
- package/esm2015/src/management/gui/MgFormBase.js +68 -407
- package/esm2015/src/management/gui/PIC.js +58 -285
- package/esm2015/src/management/gui/PropDefaults.js +13 -48
- package/esm2015/src/management/gui/PropInterface.js +2 -4
- package/esm2015/src/management/gui/PropTable.js +72 -183
- package/esm2015/src/management/gui/Property.js +35 -372
- package/esm2015/src/management/gui/ValidationDetails.js +10 -52
- package/esm2015/src/management/gui/ValidationDetailsBase.js +12 -45
- package/esm2015/src/management/gui/WrongFormatException.js +1 -15
- package/esm2015/src/management/tasks/GuiDataCollection.js +1 -1
- package/esm2015/src/management/tasks/GuiTaskBase.js +38 -383
- package/esm2015/src/management/tasks/IMGDataTable.js +1 -1
- package/esm2015/src/management/tasks/ITask.js +1 -1
- package/esm2015/src/management/tasks/MgTimer.js +1 -16
- package/esm2015/src/management/tasks/TaskDefinitionId.js +8 -18
- package/esm2015/src/management/tasks/TaskDefinitionIdTableSaxHandler.js +1 -13
- package/esm2015/src/util/AuthenticationDialogHandler.js +1 -4
- package/esm2015/src/util/MemoryUtil.js +1 -41
- package/esm2015/src/util/ObjectReference.js +1 -8
- package/esm2015/src/util/ProcessLauncher.js +3 -21
- package/esm2015/src/util/UsernamePasswordCredentials.js +1 -9
- package/fesm2015/magic-xpa-gui.js +857 -7052
- package/fesm2015/magic-xpa-gui.js.map +1 -1
- package/magic-xpa-gui.d.ts +0 -3
- package/package.json +2 -2
- package/src/Commands.d.ts +2 -0
- package/src/Events.d.ts +0 -2
- package/src/GuiEnums.d.ts +125 -128
- package/src/env/IEnvironment.d.ts +3 -0
- package/src/gui/PropParentInterface.d.ts +1 -1
- package/src/gui/low/GuiInteractive.d.ts +3 -1
- package/src/gui/low/Style.d.ts +0 -3
- package/src/management/RuntimeContextBase.d.ts +2 -0
- package/src/management/data/GuiDataViewBase.d.ts +4 -4
- package/src/management/data/IRecord.d.ts +1 -1
- package/src/management/exp/ExpressionInterface.d.ts +4 -0
- package/src/management/exp/GuiExpressionEvaluator.d.ts +4 -6
- package/src/management/gui/ControlTable.d.ts +1 -1
- package/src/management/gui/DisplayConvertor.d.ts +1 -1
- package/src/management/gui/GuiControlPropertyAdapter.d.ts +1 -1
- package/src/management/gui/MgControlBase.d.ts +7 -7
- package/src/management/gui/MgFormBase.d.ts +6 -6
- package/src/management/gui/PIC.d.ts +1 -0
- package/src/management/gui/PropInterface.d.ts +2 -4
- package/src/management/gui/PropTable.d.ts +4 -5
- package/src/management/gui/Property.d.ts +1 -1
- package/src/management/tasks/GuiTaskBase.d.ts +8 -14
- package/src/management/tasks/TaskDefinitionId.d.ts +1 -0
|
@@ -6,16 +6,14 @@ import { ValidationDetailsBase } from "./ValidationDetailsBase";
|
|
|
6
6
|
export class ValidationDetails extends ValidationDetailsBase {
|
|
7
7
|
constructor(oldvalueOrRangeStrOrVd, val, range, pic, control) {
|
|
8
8
|
super();
|
|
9
|
-
// ATTENTION !!! when you add/modify/delete a member variable don't forget to take care
|
|
10
|
-
// about the copy constructor: ValidationDetails(ValidationDetails vd)
|
|
11
9
|
this._control = null;
|
|
12
10
|
this._fieldValidator = null;
|
|
13
11
|
this._picData = null;
|
|
14
|
-
this._pictureEnable = null;
|
|
15
|
-
this._pictureReal = null;
|
|
12
|
+
this._pictureEnable = null;
|
|
13
|
+
this._pictureReal = null;
|
|
16
14
|
this._isNull = false;
|
|
17
|
-
this._oldvalue = null;
|
|
18
|
-
this._val = null;
|
|
15
|
+
this._oldvalue = null;
|
|
16
|
+
this._val = null;
|
|
19
17
|
this._validationFailed = false;
|
|
20
18
|
this.errMessage = null;
|
|
21
19
|
this.constructor_3();
|
|
@@ -37,8 +35,8 @@ export class ValidationDetails extends ValidationDetailsBase {
|
|
|
37
35
|
}
|
|
38
36
|
constructor_0(oldvalue, val, range, pic, control) {
|
|
39
37
|
this._picData = pic;
|
|
40
|
-
this._oldvalue = oldvalue;
|
|
41
|
-
this._val = val;
|
|
38
|
+
this._oldvalue = oldvalue;
|
|
39
|
+
this._val = val;
|
|
42
40
|
this._range = range;
|
|
43
41
|
this._control = control;
|
|
44
42
|
switch (pic.getAttr()) {
|
|
@@ -49,7 +47,7 @@ export class ValidationDetails extends ValidationDetailsBase {
|
|
|
49
47
|
break;
|
|
50
48
|
case StorageAttribute.BOOLEAN:
|
|
51
49
|
if (this._range == null)
|
|
52
|
-
this._range = "True,False";
|
|
50
|
+
this._range = "True,False";
|
|
53
51
|
break;
|
|
54
52
|
case StorageAttribute.DATE:
|
|
55
53
|
case StorageAttribute.TIME:
|
|
@@ -63,28 +61,16 @@ export class ValidationDetails extends ValidationDetailsBase {
|
|
|
63
61
|
this._picData.getAttr());
|
|
64
62
|
break;
|
|
65
63
|
}
|
|
66
|
-
// get Range for the picture:
|
|
67
64
|
if (this._range != null)
|
|
68
65
|
this.fillRange();
|
|
69
|
-
// free memory
|
|
70
66
|
range = null;
|
|
71
67
|
}
|
|
72
|
-
/// <summary>
|
|
73
|
-
/// constructor for range only, make parsing of Range and fill
|
|
74
|
-
/// DiscreteRangeValues and ContinuousRangeValues
|
|
75
|
-
/// (used in DisplayConventor)
|
|
76
|
-
/// </summary>
|
|
77
|
-
/// <param name = "range">string</param>
|
|
78
68
|
constructor_1(rangeStr) {
|
|
79
69
|
this.constructor_3();
|
|
80
70
|
this._range = rangeStr;
|
|
81
71
|
if (this._range !== null)
|
|
82
72
|
this.fillRange();
|
|
83
73
|
}
|
|
84
|
-
/// <summary>
|
|
85
|
-
/// Make copy of validation details,
|
|
86
|
-
/// copy constructor
|
|
87
|
-
/// </summary>
|
|
88
74
|
constructor_2(vd) {
|
|
89
75
|
this.constructor_3();
|
|
90
76
|
this._oldvalue = vd.getOldValue();
|
|
@@ -110,9 +96,6 @@ export class ValidationDetails extends ValidationDetailsBase {
|
|
|
110
96
|
constructor_3() {
|
|
111
97
|
this._fieldValidator = new FieldValidator();
|
|
112
98
|
}
|
|
113
|
-
/// <summary>
|
|
114
|
-
/// ***********************Numeric*****************************************
|
|
115
|
-
/// </summary>
|
|
116
99
|
getRealNumericPicture() {
|
|
117
100
|
let mask = this._picData.getMask();
|
|
118
101
|
let dec_ = this._picData.getDec();
|
|
@@ -124,7 +107,7 @@ export class ValidationDetails extends ValidationDetailsBase {
|
|
|
124
107
|
let isPointInserted = false;
|
|
125
108
|
let currChar = 0;
|
|
126
109
|
for (let i = 0; i < this._picData.getMaskSize(); i = i + 1) {
|
|
127
|
-
currChar = +mask.charAt(i);
|
|
110
|
+
currChar = +mask.charAt(i);
|
|
128
111
|
switch (currChar) {
|
|
129
112
|
case PICInterface.PIC_N:
|
|
130
113
|
if (isFirstPic_N) {
|
|
@@ -162,7 +145,7 @@ export class ValidationDetails extends ValidationDetailsBase {
|
|
|
162
145
|
}
|
|
163
146
|
}
|
|
164
147
|
break;
|
|
165
|
-
default:
|
|
148
|
+
default:
|
|
166
149
|
this.setPictures(currChar.toString(), '1');
|
|
167
150
|
break;
|
|
168
151
|
}
|
|
@@ -170,11 +153,6 @@ export class ValidationDetails extends ValidationDetailsBase {
|
|
|
170
153
|
Events.WriteDevToLog(this._pictureReal.ToString());
|
|
171
154
|
Events.WriteDevToLog(this._pictureEnable.ToString());
|
|
172
155
|
}
|
|
173
|
-
/// <summary>
|
|
174
|
-
/// add chars to Real and Enable String Buffers
|
|
175
|
-
/// </summary>
|
|
176
|
-
/// <param name = "real">to Real</param>
|
|
177
|
-
/// <param name = "Enable">to Enable</param>
|
|
178
156
|
setPictures(Real, Enable) {
|
|
179
157
|
this._pictureEnable.Append(Enable);
|
|
180
158
|
this._pictureReal.Append(Real);
|
|
@@ -188,25 +166,15 @@ export class ValidationDetails extends ValidationDetailsBase {
|
|
|
188
166
|
setRange(range) {
|
|
189
167
|
this._range = range;
|
|
190
168
|
}
|
|
191
|
-
/// <summary>
|
|
192
|
-
/// set the "validation failed" flag
|
|
193
|
-
/// </summary>
|
|
194
169
|
setValidationFailed(val) {
|
|
195
170
|
this._validationFailed = val;
|
|
196
171
|
}
|
|
197
|
-
/// <summary>
|
|
198
|
-
/// set isNull flag of the ValDetails
|
|
199
|
-
/// </summary>
|
|
200
172
|
setNull(isNull_) {
|
|
201
173
|
this._isNull = isNull_;
|
|
202
174
|
}
|
|
203
|
-
/// <summary>
|
|
204
|
-
/// returns the valid display value (with mask)
|
|
205
|
-
/// </summary>
|
|
206
175
|
getDispValue() {
|
|
207
176
|
if (typeof this._val === 'string') {
|
|
208
177
|
let minimumValueLength = this._picData.getMinimumValueLength();
|
|
209
|
-
// RTrim the value beyond this index
|
|
210
178
|
if (this._val.length > minimumValueLength) {
|
|
211
179
|
if (minimumValueLength > 0 || StrUtil.rtrim(this._val).length > 0) {
|
|
212
180
|
let str = this._val.substr(minimumValueLength);
|
|
@@ -233,27 +201,21 @@ export class ValidationDetails extends ValidationDetailsBase {
|
|
|
233
201
|
getPictureEnable() {
|
|
234
202
|
return this._pictureEnable.ToString();
|
|
235
203
|
}
|
|
236
|
-
// for Numeric
|
|
237
204
|
getIsNegative() {
|
|
238
205
|
return this._picData.isNegative();
|
|
239
206
|
}
|
|
240
|
-
// for Numeric
|
|
241
207
|
getIsPadFill() {
|
|
242
208
|
return this._picData.padFill();
|
|
243
209
|
}
|
|
244
|
-
// for Numeric
|
|
245
210
|
getPadFillChar() {
|
|
246
211
|
return this._picData.getPad();
|
|
247
212
|
}
|
|
248
|
-
// for Numeric, Date, Time
|
|
249
213
|
getIsZeroFill() {
|
|
250
214
|
return this._picData.zeroFill();
|
|
251
215
|
}
|
|
252
|
-
// for Numeric, Date, Time
|
|
253
216
|
getZeroFillChar() {
|
|
254
217
|
return this._picData.getZeroPad();
|
|
255
218
|
}
|
|
256
|
-
// for Numeric
|
|
257
219
|
getNegativeSignPref() {
|
|
258
220
|
return this._picData.getNegPref_();
|
|
259
221
|
}
|
|
@@ -272,10 +234,6 @@ export class ValidationDetails extends ValidationDetailsBase {
|
|
|
272
234
|
evaluate() {
|
|
273
235
|
return this._fieldValidator.checkVal(this);
|
|
274
236
|
}
|
|
275
|
-
/// <summary>
|
|
276
|
-
///
|
|
277
|
-
/// </summary>
|
|
278
|
-
/// <returns></returns>
|
|
279
237
|
CloneDiscreteRangeValues() {
|
|
280
238
|
let clone = new List();
|
|
281
239
|
clone.AddRange(this._discreteRangeValues.GetEnumerator());
|
|
@@ -287,4 +245,4 @@ export class ValidationDetails extends ValidationDetailsBase {
|
|
|
287
245
|
return clone;
|
|
288
246
|
}
|
|
289
247
|
}
|
|
290
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVmFsaWRhdGlvbkRldGFpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ndWkvc3JjL21hbmFnZW1lbnQvZ3VpL1ZhbGlkYXRpb25EZXRhaWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUVoRCxPQUFPLEVBQUMsYUFBYSxFQUFFLElBQUksRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBQyxnQkFBZ0IsRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDekUsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUNwQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUdoRSxNQUFNLE9BQU8saUJBQWtCLFNBQVEscUJBQXFCO0lBb0MxRCxZQUFZLHNCQUE0QixFQUFFLEdBQVksRUFBRSxLQUFjLEVBQUUsR0FBUyxFQUFFLE9BQXVCO1FBQ3hHLEtBQUssRUFBRSxDQUFDO1FBbkNWLHVGQUF1RjtRQUN2RixzRUFBc0U7UUFFOUQsYUFBUSxHQUFrQixJQUFJLENBQUM7UUFDL0Isb0JBQWUsR0FBbUIsSUFBSSxDQUFDO1FBQ3ZDLGFBQVEsR0FBUSxJQUFJLENBQUM7UUFDckIsbUJBQWMsR0FBa0IsSUFBSSxDQUFDLENBQUMsd0hBQXdIO1FBQzlKLGlCQUFZLEdBQWtCLElBQUksQ0FBQyxDQUFDLHVDQUF1QztRQUMzRSxZQUFPLEdBQVksS0FBSyxDQUFDO1FBQ3pCLGNBQVMsR0FBVyxJQUFJLENBQUMsQ0FBQywyQkFBMkI7UUFDckQsU0FBSSxHQUFRLElBQUksQ0FBQyxDQUFFLG1DQUFtQztRQUN0RCxzQkFBaUIsR0FBWSxLQUFLLENBQUM7UUFFbkMsZUFBVSxHQUFXLElBQUksQ0FBQztRQXVCaEMsSUFBSSxDQUFDLGFBQWEsRUFBRSxD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SyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztRQUMxRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFTywwQkFBMEI7UUFDaEMsSUFBSSxLQUFLLEdBQWlCLElBQUksSUFBSSxFQUFVLENBQUM7UUFDN0MsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztRQUM1RCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TWdDb250cm9sQmFzZX0gZnJvbSBcIi4vTWdDb250cm9sQmFzZVwiO1xyXG5pbXBvcnQge0ZpZWxkVmFsaWRhdG9yfSBmcm9tIFwiLi9GaWVsZFZhbGlkYXRvclwiO1xyXG5pbXBvcnQge1BJQ30gZnJvbSBcIi4vUElDXCI7XHJcbmltcG9ydCB7U3RyaW5nQnVpbGRlciwgTGlzdH0gZnJvbSBcIkBtYWdpYy14cGEvbXNjb3JlbGliXCI7XHJcbmltcG9ydCB7U3RvcmFnZUF0dHJpYnV0ZSwgU3RyVXRpbCwgUElDSW50ZXJmYWNlfSBmcm9tIFwiQG1hZ2ljLXhwYS91dGlsc1wiO1xyXG5pbXBvcnQge0V2ZW50c30gZnJvbSBcIi4uLy4uL0V2ZW50c1wiO1xyXG5pbXBvcnQgeyBWYWxpZGF0aW9uRGV0YWlsc0Jhc2UgfSBmcm9tIFwiLi9WYWxpZGF0aW9uRGV0YWlsc0Jhc2VcIjtcclxuXHJcblxyXG5leHBvcnQgY2xhc3MgVmFsaWRhdGlvbkRldGFpbHMgZXh0ZW5kcyBWYWxpZGF0aW9uRGV0YWlsc0Jhc2Uge1xyXG5cclxuICAvLyBBVFRFTlRJT04gISEhIHdoZW4geW91IGFkZC9tb2RpZnkvZGVsZXRlIGEgbWVtYmVyIHZhcmlhYmxlIGRvbid0IGZvcmdldCB0byB0YWtlIGNhcmVcclxuICAvLyBhYm91dCB0aGUgY29weSBjb25zdHJ1Y3RvcjogVmFsaWRhdGlvbkRldGFpbHMoVmFsaWRhdGlvbkRldGFpbHMgdmQpXHJcblxyXG4gIHByaXZhdGUgX2NvbnRyb2w6IE1nQ29udHJvbEJhc2UgPSBudWxsO1xyXG4gIHByaXZhdGUgX2ZpZWxkVmFsaWRhdG9yOiBGaWVsZFZhbGlkYXRvciA9IG51bGw7XHJcbiAgcHJpdmF0ZSBfcGljRGF0YTogUElDID0gbnVsbDtcclxuICBwcml2YXRlIF9waWN0dXJlRW5hYmxlOiBTdHJpbmdCdWlsZGVyID0gbnVsbDsgLy8gZm9yIGlubmVyIChvZiBOdW1lcmljIHR5cGUpIHVzZSBvbmx5LCBTdHJpbmcgb2YgMSdzIC0+IHBvc3NpYmxlIHRvIHdyaXRlIDsgMCdzIC0+IGltcG9zc2libGUgdG8gd3JpdGUgOyBmb3IgJ1xcJyB1c2luZ1xyXG4gIHByaXZhdGUgX3BpY3R1cmVSZWFsOiBTdHJpbmdCdWlsZGVyID0gbnVsbDsgLy8gZm9yIGlubmVyIChvZiBOdW1lcmljIHR5cGUpIHVzZSBvbmx5XHJcbiAgcHJpdmF0ZSBfaXNOdWxsOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBfb2xkdmFsdWU6IHN0cmluZyA9IG51bGw7IC8vIG9sZCB2YWx1ZSBvZiB0aGUgY29udHJvbFxyXG4gIHByaXZhdGUgX3ZhbDogYW55ID0gbnVsbDsgIC8vIG5ldyB2YWx1ZSwgaW5zZXJ0ZWQgaW50byBjb250cm9sXHJcbiAgcHJpdmF0ZSBfdmFsaWRhdGlvbkZhaWxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwcml2YXRlIGVyck1lc3NhZ2U6IHN0cmluZyA9IG51bGw7XHJcblxyXG4gIGdldCBFcnJvck1lc3NhZ2UoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmVyck1lc3NhZ2U7XHJcbiAgfVxyXG5cclxuICBzZXQgRXJyb3JNZXNzYWdlKG1zZzogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmVyck1lc3NhZ2UgPSBtc2c7XHJcbiAgfVxyXG5cclxuICBnZXQgVmFsaWRhdGlvbkZhaWxlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl92YWxpZGF0aW9uRmFpbGVkO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIENvbnN0cnVjdG9yLCB3aGljaCBzZXRzIGFsbCBtZW1iZXIgdmFsdWVzXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBjb25zdHJ1Y3RvcihvbGR2YWx1ZTogYW55LCB2YWw6IGFueSwgcmFuZ2U6IHN0cmluZywgcGljOiBQSUMsIGNvbnRyb2w6IE1nQ29udHJvbEJhc2UpO1xyXG4gIGNvbnN0cnVjdG9yKHJhbmdlU3RyOiBzdHJpbmcpO1xyXG4gIGNvbnN0cnVjdG9yKHZkOiBWYWxpZGF0aW9uRGV0YWlscyk7XHJcbiAgY29uc3RydWN0b3IoKTtcclxuICBjb25zdHJ1Y3RvcihvbGR2YWx1ZU9yUmFuZ2VTdHJPclZkPzogYW55LCB2YWw/OiBzdHJpbmcsIHJhbmdlPzogc3RyaW5nLCBwaWM/OiBQSUMsIGNvbnRyb2w/OiBNZ0NvbnRyb2xCYXNlKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gICAgdGhpcy5jb25zdHJ1Y3Rvcl8zKCk7XHJcblxyXG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDUpXHJcbiAgICAgIHRoaXMuY29uc3RydWN0b3JfMChvbGR2YWx1ZU9yUmFuZ2VTdHJPclZkLCB2YWwsIHJhbmdlLCBwaWMsIGNvbnRyb2wpO1xyXG5cclxuICAgIGVsc2UgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDEgJiYgKG9sZHZhbHVlT3JSYW5nZVN0ck9yVmQgPT09IG51bGwgfHwgb2xkdmFsdWVPclJhbmdlU3RyT3JWZC5jb25zdHJ1Y3RvciA9PT0gU3RyaW5nKSlcclxuICAgICAgdGhpcy5jb25zdHJ1Y3Rvcl8xKG9sZHZhbHVlT3JSYW5nZVN0ck9yVmQpO1xyXG5cclxuICAgIGVsc2UgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDEgJiYgKG9sZHZhbHVlT3JSYW5nZVN0ck9yVmQgPT09IG51bGwgfHwgb2xkdmFsdWVPclJhbmdlU3RyT3JWZCBpbnN0YW5jZW9mIFZhbGlkYXRpb25EZXRhaWxzKSlcclxuICAgICAgdGhpcy5jb25zdHJ1Y3Rvcl8yKG9sZHZhbHVlT3JSYW5nZVN0ck9yVmQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcl8wKG9sZHZhbHVlOiBhbnksIHZhbDogYW55LCByYW5nZTogc3RyaW5nLCBwaWM6IFBJQywgY29udHJvbDogTWdDb250cm9sQmFzZSk6IHZvaWQge1xyXG4gICAgdGhpcy5fcGljRGF0YSA9IHBpYztcclxuICAgIHRoaXMuX29sZHZhbHVlID0gb2xkdmFsdWU7IC8vIG9sZCB2YWx1ZSBvZiB0aGUgZmllbGRcclxuICAgIHRoaXMuX3ZhbCA9IHZhbDsgLy8gbmV3ICBpbnNlcnRlZCB2YWx1ZSBvZiB0aGUgZmllbGRcclxuICAgIHRoaXMuX3JhbmdlID0gcmFuZ2U7XHJcbiAgICB0aGlzLl9jb250cm9sID0gY29udHJvbDtcclxuXHJcbiAgICBzd2l0Y2ggKHBpYy5nZXRBdHRyKCkpIHtcclxuICAgICAgY2FzZSBTdG9yYWdlQXR0cmlidXRlLk5VTUVSSUM6XHJcbiAgICAgICAgdGhpcy5fcGljdHVyZVJlYWwgPSBuZXcgU3RyaW5nQnVpbGRlcih0aGlzLl9waWNEYXRhLmdldE1hc2tTaXplKCkpO1xyXG4gICAgICAgIHRoaXMuX3BpY3R1cmVFbmFibGUgPSBuZXcgU3RyaW5nQnVpbGRlcih0aGlzLl9waWNEYXRhLmdldE1hc2tTaXplKCkpO1xyXG4gICAgICAgIHRoaXMuZ2V0UmVhbE51bWVyaWNQaWN0dXJlKCk7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIFN0b3JhZ2VBdHRyaWJ1dGUuQk9PTEVBTjpcclxuICAgICAgICBpZiAodGhpcy5fcmFuZ2UgPT0gbnVsbClcclxuICAgICAgICAgIHRoaXMuX3JhbmdlID0gXCJUcnVlLEZhbHNlXCI7IC8vIGRlZmF1bHQgcmFuZ2UgdmFsdWUgZm9yIExvZ2ljYWxcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBTdG9yYWdlQXR0cmlidXRlLkRBVEU6XHJcbiAgICAgIGNhc2UgU3RvcmFnZUF0dHJpYnV0ZS5USU1FOlxyXG4gICAgICBjYXNlIFN0b3JhZ2VBdHRyaWJ1dGUuQUxQSEE6XHJcbiAgICAgIGNhc2UgU3RvcmFnZUF0dHJpYnV0ZS5CTE9COlxyXG4gICAgICBjYXNlIFN0b3JhZ2VBdHRyaWJ1dGUuQkxPQl9WRUNUT1I6XHJcbiAgICAgIGNhc2UgU3RvcmFnZUF0dHJpYnV0ZS5VTklDT0RFOlxyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBFdmVudHMuV3JpdGVFeGNlcHRpb25Ub0xvZyhcIlZhbGlkYXRpb25EZXRhaWxzLlZhbGlkYXRpb25EZXRhaWxzOiBUaGVyZSBpcyBubyB0eXBlIFwiICtcclxuICAgICAgICAgIHRoaXMuX3BpY0RhdGEuZ2V0QXR0cigpKTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIC8vIGdldCBSYW5nZSBmb3IgdGhlIHBpY3R1cmU6XHJcbiAgICBpZiAodGhpcy5fcmFuZ2UgIT0gbnVsbClcclxuICAgICAgdGhpcy5maWxsUmFuZ2UoKTtcclxuXHJcbiAgICAvLyBmcmVlIG1lbW9yeVxyXG4gICAgcmFuZ2UgPSBudWxsO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGNvbnN0cnVjdG9yIGZvciByYW5nZSBvbmx5LCBtYWtlIHBhcnNpbmcgb2YgIFJhbmdlIGFuZCBmaWxsXHJcbiAgLy8vICAgRGlzY3JldGVSYW5nZVZhbHVlcyBhbmQgQ29udGludW91c1JhbmdlVmFsdWVzXHJcbiAgLy8vICAgKHVzZWQgaW4gRGlzcGxheUNvbnZlbnRvcilcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwicmFuZ2VcIj5zdHJpbmc8L3BhcmFtPlxyXG4gIHByaXZhdGUgY29uc3RydWN0b3JfMShyYW5nZVN0cjogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLmNvbnN0cnVjdG9yXzMoKTtcclxuICAgIHRoaXMuX3JhbmdlID0gcmFuZ2VTdHI7XHJcbiAgICBpZiAodGhpcy5fcmFuZ2UgIT09IG51bGwpXHJcbiAgICAgIHRoaXMuZmlsbFJhbmdlKCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgTWFrZSBjb3B5IG9mIHZhbGlkYXRpb24gZGV0YWlscyxcclxuICAvLy8gICBjb3B5IGNvbnN0cnVjdG9yXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBwcml2YXRlIGNvbnN0cnVjdG9yXzIodmQ6IFZhbGlkYXRpb25EZXRhaWxzKTogdm9pZCB7XHJcbiAgICB0aGlzLmNvbnN0cnVjdG9yXzMoKTtcclxuICAgIHRoaXMuX29sZHZhbHVlID0gdmQuZ2V0T2xkVmFsdWUoKTtcclxuICAgIHRoaXMuX3ZhbCA9IHZkLl92YWw7XHJcbiAgICB0aGlzLl9yYW5nZSA9IHZkLmdldFJhbmdlKCk7XHJcbiAgICB0aGlzLl9jb250cm9sID0gdmQuZ2V0Q29udHJvbCgpO1xyXG4gICAgdGhpcy5fdmFsaWRhdGlvbkZhaWxlZCA9IGZhbHNlO1xyXG4gICAgaWYgKHZkLl9waWN0dXJlUmVhbCAhPT0gbnVsbCkge1xyXG4gICAgICB0aGlzLl9waWN0dXJlUmVhbCA9IG5ldyBTdHJpbmdCdWlsZGVyKHZkLl9waWN0dXJlUmVhbC5Ub1N0cmluZygpKTtcclxuICAgIH1cclxuICAgIGlmICh2ZC5fcGljdHVyZUVuYWJsZSAhPT0gbnVsbCkge1xyXG4gICAgICB0aGlzLl9waWN0dXJlRW5hYmxlID0gbmV3IFN0cmluZ0J1aWxkZXIodmQuX3BpY3R1cmVFbmFibGUuVG9TdHJpbmcoKSk7XHJcbiAgICB9XHJcbiAgICBpZiAodmQuZ2V0RGlzY3JldGVSYW5nZVZhbHVlcygpICE9PSBudWxsKSB7XHJcbiAgICAgIHRoaXMuX2Rpc2NyZXRlUmFuZ2VWYWx1ZXMgPSB2ZC5DbG9uZURpc2NyZXRlUmFuZ2VWYWx1ZXMoKTtcclxuICAgIH1cclxuICAgIGlmICh2ZC5nZXRDb250aW51b3VzUmFuZ2VWYWx1ZXMoKSAhPSBudWxsKSB7XHJcbiAgICAgIHRoaXMuX2NvbnRpbnVvdXNSYW5nZVZhbHVlcyA9IHZkLkNsb25lQ29udGludW91c1JhbmdlVmFsdWVzKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9waWNEYXRhID0gdmQuZ2V0UElDKCk7XHJcbiAgICB0aGlzLl9pc051bGwgPSB2ZC5nZXRJc051bGwoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY29uc3RydWN0b3JfMygpOiB2b2lkIHtcclxuICAgIHRoaXMuX2ZpZWxkVmFsaWRhdG9yID0gbmV3IEZpZWxkVmFsaWRhdG9yKCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgKioqKioqKioqKioqKioqKioqKioqKipOdW1lcmljKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHByaXZhdGUgZ2V0UmVhbE51bWVyaWNQaWN0dXJlKCk6IHZvaWQge1xyXG4gICAgbGV0IG1hc2s6IHN0cmluZyA9IHRoaXMuX3BpY0RhdGEuZ2V0TWFzaygpO1xyXG4gICAgbGV0IGRlY186IG51bWJlciA9IHRoaXMuX3BpY0RhdGEuZ2V0RGVjKCk7XHJcbiAgICBsZXQgd2hvbGVfOiBudW1iZXIgPSB0aGlzLl9waWNEYXRhLmdldFdob2xlcygpO1xyXG4gICAgbGV0IGRlY2ltYWxfOiBib29sZWFuID0gdGhpcy5fcGljRGF0YS53aXRoRGVjaW1hbCgpO1xyXG4gICAgbGV0IGRlY19wbnRfaW5fZmlyc3Q6IGJvb2xlYW4gPSB0aGlzLl9waWNEYXRhLmRlY0luRmlyc3RQb3MoKTtcclxuICAgIGxldCBpc05lZ2F0aXZlOiBib29sZWFuID0gdGhpcy5fcGljRGF0YS5pc05lZ2F0aXZlKCk7XHJcbiAgICBsZXQgaXNGaXJzdFBpY19OOiBib29sZWFuID0gdHJ1ZTtcclxuICAgIGxldCBpc1BvaW50SW5zZXJ0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBsZXQgY3VyckNoYXIgPSAwO1xyXG5cclxuICAgIGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCB0aGlzLl9waWNEYXRhLmdldE1hc2tTaXplKCk7IGkgPSBpICsgMSkge1xyXG4gICAgICBjdXJyQ2hhciA9ICttYXNrLmNoYXJBdChpKTsgLy8gaXQncyBBU0NJSSBvZiB0aGUgY2hhclxyXG5cclxuICAgICAgc3dpdGNoIChjdXJyQ2hhcikge1xyXG4gICAgICAgIGNhc2UgUElDSW50ZXJmYWNlLlBJQ19OOlxyXG4gICAgICAgICAgaWYgKGlzRmlyc3RQaWNfTikge1xyXG4gICAgICAgICAgICBpZiAoaXNOZWdhdGl2ZSlcclxuICAgICAgICAgICAgICB0aGlzLnNldFBpY3R1cmVzKCctJywgJzAnKTtcclxuXHJcbiAgICAgICAgICAgIGlmIChkZWNfcG50X2luX2ZpcnN0KSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRQaWN0dXJlcygnLicsICcxJyk7XHJcbiAgICAgICAgICAgICAgaXNQb2ludEluc2VydGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmICh3aG9sZV8gPiAwKSB7XHJcbiAgICAgICAgICAgICAgd2hvbGVfLS07XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRQaWN0dXJlcygnIycsICcwJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaXNGaXJzdFBpY19OID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGlmIChkZWNpbWFsXykge1xyXG4gICAgICAgICAgICBpZiAod2hvbGVfID4gMCkge1xyXG4gICAgICAgICAgICAgIHdob2xlXy0tO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2V0UGljdHVyZXMoJyMnLCAnMCcpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHdob2xlXyA9PT0gMCAmJiAhaXNQb2ludEluc2VydGVkKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRQaWN0dXJlcygnLicsICcxJyk7XHJcbiAgICAgICAgICAgICAgaXNQb2ludEluc2VydGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChkZWNfID4gMCkge1xyXG4gICAgICAgICAgICAgIGRlY18tLTtcclxuICAgICAgICAgICAgICB0aGlzLnNldFBpY3R1cmVzKCcjJywgJzAnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGlmICh3aG9sZV8gPiAwKSB7XHJcbiAgICAgICAgICAgICAgd2hvbGVfLS07XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRQaWN0dXJlcygnIycsICcwJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICBkZWZhdWx0OiAvLyBjb25zdCBzdHJpbmcgaW4gQWxwaGFcclxuICAgICAgICAgIHRoaXMuc2V0UGljdHVyZXMoY3VyckNoYXIudG9TdHJpbmcoKSwgJzEnKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBFdmVudHMuV3JpdGVEZXZUb0xvZyh0aGlzLl9waWN0dXJlUmVhbC5Ub1N0cmluZygpKTtcclxuICAgIEV2ZW50cy5Xcml0ZURldlRvTG9nKHRoaXMuX3BpY3R1cmVFbmFibGUuVG9TdHJpbmcoKSk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgYWRkIGNoYXJzIHRvIFJlYWwgYW5kIEVuYWJsZSBTdHJpbmcgQnVmZmVyc1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJyZWFsXCI+dG8gUmVhbDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJFbmFibGVcIj50byBFbmFibGU8L3BhcmFtPlxyXG4gIHByaXZhdGUgc2V0UGljdHVyZXMoUmVhbDogc3RyaW5nLCBFbmFibGU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5fcGljdHVyZUVuYWJsZS5BcHBlbmQoRW5hYmxlKTtcclxuICAgIHRoaXMuX3BpY3R1cmVSZWFsLkFwcGVuZChSZWFsKTtcclxuICB9XHJcblxyXG4gIHNldFZhbHVlKHZhbDogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLl92YWwgPSB2YWw7XHJcbiAgfVxyXG5cclxuICBzZXRPbGRWYWx1ZShvbGR2YWx1ZTogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLl9vbGR2YWx1ZSA9IG9sZHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgc2V0UmFuZ2UocmFuZ2U6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5fcmFuZ2UgPSByYW5nZTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBzZXQgdGhlIFwidmFsaWRhdGlvbiBmYWlsZWRcIiBmbGFnXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBzZXRWYWxpZGF0aW9uRmFpbGVkKHZhbDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5fdmFsaWRhdGlvbkZhaWxlZCA9IHZhbDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBzZXQgaXNOdWxsIGZsYWcgb2YgdGhlIFZhbERldGFpbHNcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHNldE51bGwoaXNOdWxsXzogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5faXNOdWxsID0gaXNOdWxsXztcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXR1cm5zIHRoZSB2YWxpZCBkaXNwbGF5IHZhbHVlICh3aXRoIG1hc2spXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBnZXREaXNwVmFsdWUoKTogc3RyaW5nIHtcclxuICAgIGlmICh0eXBlb2YgdGhpcy5fdmFsID09PSAnc3RyaW5nJykge1xyXG4gICAgICBsZXQgbWluaW11bVZhbHVlTGVuZ3RoOiBudW1iZXIgPSB0aGlzLl9waWNEYXRhLmdldE1pbmltdW1WYWx1ZUxlbmd0aCgpO1xyXG5cclxuICAgICAgLy8gUlRyaW0gdGhlIHZhbHVlIGJleW9uZCB0aGlzIGluZGV4XHJcbiAgICAgIGlmICh0aGlzLl92YWwubGVuZ3RoID4gbWluaW11bVZhbHVlTGVuZ3RoKSB7XHJcbiAgICAgICAgaWYgKG1pbmltdW1WYWx1ZUxlbmd0aCA+IDAgfHwgU3RyVXRpbC5ydHJpbSh0aGlzLl92YWwpLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIGxldCBzdHI6IHN0cmluZyA9IHRoaXMuX3ZhbC5zdWJzdHIobWluaW11bVZhbHVlTGVuZ3RoKTtcclxuICAgICAgICAgIHRoaXMuX3ZhbCA9IHRoaXMuX3ZhbC5zdWJzdHIoMCwgbWluaW11bVZhbHVlTGVuZ3RoKTtcclxuICAgICAgICAgIHRoaXMuX3ZhbCA9IHRoaXMuX3ZhbCArIFN0clV0aWwucnRyaW0oc3RyKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5fY29udHJvbCAhPSBudWxsICYmIHRoaXMuX2NvbnRyb2wuaXNDaG9pY2VDb250cm9sKCkpXHJcbiAgICAgICAgdGhpcy5fdmFsID0gdGhpcy5fdmFsLnRvU3RyaW5nKCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5fdmFsO1xyXG4gIH1cclxuXHJcbiAgZ2V0T2xkVmFsdWUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9vbGR2YWx1ZTtcclxuICB9XHJcblxyXG4gIGdldFR5cGUoKTogU3RvcmFnZUF0dHJpYnV0ZSB7XHJcbiAgICByZXR1cm4gdGhpcy5fcGljRGF0YS5nZXRBdHRyKCk7XHJcbiAgfVxyXG5cclxuICBnZXRQaWN0dXJlUmVhbCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX3BpY3R1cmVSZWFsLlRvU3RyaW5nKCk7XHJcbiAgfVxyXG5cclxuICBnZXRQaWN0dXJlRW5hYmxlKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fcGljdHVyZUVuYWJsZS5Ub1N0cmluZygpO1xyXG4gIH1cclxuXHJcbiAgLy8gZm9yIE51bWVyaWNcclxuICBnZXRJc05lZ2F0aXZlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3BpY0RhdGEuaXNOZWdhdGl2ZSgpO1xyXG4gIH1cclxuXHJcbiAgLy8gZm9yIE51bWVyaWNcclxuICBnZXRJc1BhZEZpbGwoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fcGljRGF0YS5wYWRGaWxsKCk7XHJcbiAgfVxyXG5cclxuICAvLyBmb3IgTnVtZXJpY1xyXG4gIGdldFBhZEZpbGxDaGFyKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fcGljRGF0YS5nZXRQYWQoKTtcclxuICB9XHJcblxyXG4gIC8vIGZvciBOdW1lcmljLCBEYXRlLCBUaW1lXHJcbiAgZ2V0SXNaZXJvRmlsbCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9waWNEYXRhLnplcm9GaWxsKCk7XHJcbiAgfVxyXG5cclxuICAvLyBmb3IgTnVtZXJpYywgRGF0ZSwgVGltZVxyXG4gIGdldFplcm9GaWxsQ2hhcigpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX3BpY0RhdGEuZ2V0WmVyb1BhZCgpO1xyXG4gIH1cclxuXHJcbiAgLy8gZm9yIE51bWVyaWNcclxuICBnZXROZWdhdGl2ZVNpZ25QcmVmKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fcGljRGF0YS5nZXROZWdQcmVmXygpO1xyXG4gIH1cclxuXHJcbiAgZ2V0UmFuZ2UoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9yYW5nZTtcclxuICB9XHJcblxyXG4gIGdldENvbnRyb2woKTogTWdDb250cm9sQmFzZSB7XHJcbiAgICByZXR1cm4gdGhpcy5fY29udHJvbDtcclxuICB9XHJcblxyXG4gIGdldFBJQygpOiBQSUMge1xyXG4gICAgcmV0dXJuIHRoaXMuX3BpY0RhdGE7XHJcbiAgfVxyXG5cclxuICBnZXRJc051bGwoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5faXNOdWxsO1xyXG4gIH1cclxuXHJcbiAgZXZhbHVhdGUoKTogVmFsaWRhdGlvbkRldGFpbHMge1xyXG4gICAgcmV0dXJuIHRoaXMuX2ZpZWxkVmFsaWRhdG9yLmNoZWNrVmFsKHRoaXMpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vL1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBwcml2YXRlIENsb25lRGlzY3JldGVSYW5nZVZhbHVlcygpOiBMaXN0PHN0cmluZz4ge1xyXG4gICAgbGV0IGNsb25lOiBMaXN0PHN0cmluZz4gPSBuZXcgTGlzdDxzdHJpbmc+KCk7XHJcbiAgICBjbG9uZS5BZGRSYW5nZSh0aGlzLl9kaXNjcmV0ZVJhbmdlVmFsdWVzLkdldEVudW1lcmF0b3IoKSk7XHJcbiAgICByZXR1cm4gY2xvbmU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIENsb25lQ29udGludW91c1JhbmdlVmFsdWVzKCk6IExpc3Q8c3RyaW5nPiB7XHJcbiAgICBsZXQgY2xvbmU6IExpc3Q8c3RyaW5nPiA9IG5ldyBMaXN0PHN0cmluZz4oKTtcclxuICAgIGNsb25lLkFkZFJhbmdlKHRoaXMuX2NvbnRpbnVvdXNSYW5nZVZhbHVlcy5HZXRFbnVtZXJhdG9yKCkpO1xyXG4gICAgcmV0dXJuIGNsb25lO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
248
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVmFsaWRhdGlvbkRldGFpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ndWkvc3JjL21hbmFnZW1lbnQvZ3VpL1ZhbGlkYXRpb25EZXRhaWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUVoRCxPQUFPLEVBQUMsYUFBYSxFQUFFLElBQUksRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBQyxnQkFBZ0IsRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDekUsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUNwQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUdoRSxNQUFNLE9BQU8saUJBQWtCLFNBQVEscUJBQXFCO0lBb0MxRCxZQUFZLHNCQUE0QixFQUFFLEdBQVksRUFBRSxLQUFjLEVBQUUsR0FBUyxFQUFFLE9BQXVCO1FBQ3hHLEtBQUssRUFBRSxDQUFDO1FBaENGLGFBQVEsR0FBa0IsSUFBSSxDQUFDO1FBQy9CLG9CQUFlLEdBQW1CLElBQUksQ0FBQztRQUN2QyxhQUFRLEdBQVEsSUFBSSxDQUFDO1FBQ3JCLG1CQUFjLEdBQWtCLElBQUksQ0FBQztRQUNyQyxpQkFBWSxHQUFrQixJQUFJLENBQUM7UUFDbkMsWUFBTyxHQUFZLEtBQUssQ0FBQztRQUN6QixjQUFTLEdBQVcsSUFBSSxDQUFDO1FBQ3pCLFNBQUksR0FBUSxJQUFJLENBQUM7UUFDakIsc0JBQWlCLEdBQVksS0FBSyxDQUFDO1FBRW5DLGVBQVUsR0FBVyxJQUFJLENBQUM7UUF1QmhDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUVyQixJQUFJLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQztZQUN4QixJQUFJLENBQUMsYUFBYSxDQUFDLHNCQUFz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QyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQUVELFVBQVU7UUFDUixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUVELE1BQU07UUFDSixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUVELFNBQVM7UUFDUCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQztJQUVELFFBQVE7UUFDTixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFNTyx3QkFBd0I7UUFDOUIsSUFBSSxLQUFLLEdBQWlCLElBQUksSUFBSSxFQUFVLENBQUM7UUFDN0MsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztRQUMxRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFTywwQkFBMEI7UUFDaEMsSUFBSSxLQUFLLEdBQWlCLElBQUksSUFBSSxFQUFVLENBQUM7UUFDN0MsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztRQUM1RCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TWdDb250cm9sQmFzZX0gZnJvbSBcIi4vTWdDb250cm9sQmFzZVwiO1xyXG5pbXBvcnQge0ZpZWxkVmFsaWRhdG9yfSBmcm9tIFwiLi9GaWVsZFZhbGlkYXRvclwiO1xyXG5pbXBvcnQge1BJQ30gZnJvbSBcIi4vUElDXCI7XHJcbmltcG9ydCB7U3RyaW5nQnVpbGRlciwgTGlzdH0gZnJvbSBcIkBtYWdpYy14cGEvbXNjb3JlbGliXCI7XHJcbmltcG9ydCB7U3RvcmFnZUF0dHJpYnV0ZSwgU3RyVXRpbCwgUElDSW50ZXJmYWNlfSBmcm9tIFwiQG1hZ2ljLXhwYS91dGlsc1wiO1xyXG5pbXBvcnQge0V2ZW50c30gZnJvbSBcIi4uLy4uL0V2ZW50c1wiO1xyXG5pbXBvcnQgeyBWYWxpZGF0aW9uRGV0YWlsc0Jhc2UgfSBmcm9tIFwiLi9WYWxpZGF0aW9uRGV0YWlsc0Jhc2VcIjtcclxuXHJcblxyXG5leHBvcnQgY2xhc3MgVmFsaWRhdGlvbkRldGFpbHMgZXh0ZW5kcyBWYWxpZGF0aW9uRGV0YWlsc0Jhc2Uge1xyXG5cclxuICAvLyBBVFRFTlRJT04gISEhIHdoZW4geW91IGFkZC9tb2RpZnkvZGVsZXRlIGEgbWVtYmVyIHZhcmlhYmxlIGRvbid0IGZvcmdldCB0byB0YWtlIGNhcmVcclxuICAvLyBhYm91dCB0aGUgY29weSBjb25zdHJ1Y3RvcjogVmFsaWRhdGlvbkRldGFpbHMoVmFsaWRhdGlvbkRldGFpbHMgdmQpXHJcblxyXG4gIHByaXZhdGUgX2NvbnRyb2w6IE1nQ29udHJvbEJhc2UgPSBudWxsO1xyXG4gIHByaXZhdGUgX2ZpZWxkVmFsaWRhdG9yOiBGaWVsZFZhbGlkYXRvciA9IG51bGw7XHJcbiAgcHJpdmF0ZSBfcGljRGF0YTogUElDID0gbnVsbDtcclxuICBwcml2YXRlIF9waWN0dXJlRW5hYmxlOiBTdHJpbmdCdWlsZGVyID0gbnVsbDsgLy8gZm9yIGlubmVyIChvZiBOdW1lcmljIHR5cGUpIHVzZSBvbmx5LCBTdHJpbmcgb2YgMSdzIC0+IHBvc3NpYmxlIHRvIHdyaXRlIDsgMCdzIC0+IGltcG9zc2libGUgdG8gd3JpdGUgOyBmb3IgJ1xcJyB1c2luZ1xyXG4gIHByaXZhdGUgX3BpY3R1cmVSZWFsOiBTdHJpbmdCdWlsZGVyID0gbnVsbDsgLy8gZm9yIGlubmVyIChvZiBOdW1lcmljIHR5cGUpIHVzZSBvbmx5XHJcbiAgcHJpdmF0ZSBfaXNOdWxsOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBfb2xkdmFsdWU6IHN0cmluZyA9IG51bGw7IC8vIG9sZCB2YWx1ZSBvZiB0aGUgY29udHJvbFxyXG4gIHByaXZhdGUgX3ZhbDogYW55ID0gbnVsbDsgIC8vIG5ldyB2YWx1ZSwgaW5zZXJ0ZWQgaW50byBjb250cm9sXHJcbiAgcHJpdmF0ZSBfdmFsaWRhdGlvbkZhaWxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwcml2YXRlIGVyck1lc3NhZ2U6IHN0cmluZyA9IG51bGw7XHJcblxyXG4gIGdldCBFcnJvck1lc3NhZ2UoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmVyck1lc3NhZ2U7XHJcbiAgfVxyXG5cclxuICBzZXQgRXJyb3JNZXNzYWdlKG1zZzogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmVyck1lc3NhZ2UgPSBtc2c7XHJcbiAgfVxyXG5cclxuICBnZXQgVmFsaWRhdGlvbkZhaWxlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl92YWxpZGF0aW9uRmFpbGVkO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIENvbnN0cnVjdG9yLCB3aGljaCBzZXRzIGFsbCBtZW1iZXIgdmFsdWVzXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBjb25zdHJ1Y3RvcihvbGR2YWx1ZTogYW55LCB2YWw6IGFueSwgcmFuZ2U6IHN0cmluZywgcGljOiBQSUMsIGNvbnRyb2w6IE1nQ29udHJvbEJhc2UpO1xyXG4gIGNvbnN0cnVjdG9yKHJhbmdlU3RyOiBzdHJpbmcpO1xyXG4gIGNvbnN0cnVjdG9yKHZkOiBWYWxpZGF0aW9uRGV0YWlscyk7XHJcbiAgY29uc3RydWN0b3IoKTtcclxuICBjb25zdHJ1Y3RvcihvbGR2YWx1ZU9yUmFuZ2VTdHJPclZkPzogYW55LCB2YWw/OiBzdHJpbmcsIHJhbmdlPzogc3RyaW5nLCBwaWM/OiBQSUMsIGNvbnRyb2w/OiBNZ0NvbnRyb2xCYXNlKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gICAgdGhpcy5jb25zdHJ1Y3Rvcl8zKCk7XHJcblxyXG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDUpXHJcbiAgICAgIHRoaXMuY29uc3RydWN0b3JfMChvbGR2YWx1ZU9yUmFuZ2VTdHJPclZkLCB2YWwsIHJhbmdlLCBwaWMsIGNvbnRyb2wpO1xyXG5cclxuICAgIGVsc2UgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDEgJiYgKG9sZHZhbHVlT3JSYW5nZVN0ck9yVmQgPT09IG51bGwgfHwgb2xkdmFsdWVPclJhbmdlU3RyT3JWZC5jb25zdHJ1Y3RvciA9PT0gU3RyaW5nKSlcclxuICAgICAgdGhpcy5jb25zdHJ1Y3Rvcl8xKG9sZHZhbHVlT3JSYW5nZVN0ck9yVmQpO1xyXG5cclxuICAgIGVsc2UgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDEgJiYgKG9sZHZhbHVlT3JSYW5nZVN0ck9yVmQgPT09IG51bGwgfHwgb2xkdmFsdWVPclJhbmdlU3RyT3JWZCBpbnN0YW5jZW9mIFZhbGlkYXRpb25EZXRhaWxzKSlcclxuICAgICAgdGhpcy5jb25zdHJ1Y3Rvcl8yKG9sZHZhbHVlT3JSYW5nZVN0ck9yVmQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcl8wKG9sZHZhbHVlOiBhbnksIHZhbDogYW55LCByYW5nZTogc3RyaW5nLCBwaWM6IFBJQywgY29udHJvbDogTWdDb250cm9sQmFzZSk6IHZvaWQge1xyXG4gICAgdGhpcy5fcGljRGF0YSA9IHBpYztcclxuICAgIHRoaXMuX29sZHZhbHVlID0gb2xkdmFsdWU7IC8vIG9sZCB2YWx1ZSBvZiB0aGUgZmllbGRcclxuICAgIHRoaXMuX3ZhbCA9IHZhbDsgLy8gbmV3ICBpbnNlcnRlZCB2YWx1ZSBvZiB0aGUgZmllbGRcclxuICAgIHRoaXMuX3JhbmdlID0gcmFuZ2U7XHJcbiAgICB0aGlzLl9jb250cm9sID0gY29udHJvbDtcclxuXHJcbiAgICBzd2l0Y2ggKHBpYy5nZXRBdHRyKCkpIHtcclxuICAgICAgY2FzZSBTdG9yYWdlQXR0cmlidXRlLk5VTUVSSUM6XHJcbiAgICAgICAgdGhpcy5fcGljdHVyZVJlYWwgPSBuZXcgU3RyaW5nQnVpbGRlcih0aGlzLl9waWNEYXRhLmdldE1hc2tTaXplKCkpO1xyXG4gICAgICAgIHRoaXMuX3BpY3R1cmVFbmFibGUgPSBuZXcgU3RyaW5nQnVpbGRlcih0aGlzLl9waWNEYXRhLmdldE1hc2tTaXplKCkpO1xyXG4gICAgICAgIHRoaXMuZ2V0UmVhbE51bWVyaWNQaWN0dXJlKCk7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIFN0b3JhZ2VBdHRyaWJ1dGUuQk9PTEVBTjpcclxuICAgICAgICBpZiAodGhpcy5fcmFuZ2UgPT0gbnVsbClcclxuICAgICAgICAgIHRoaXMuX3JhbmdlID0gXCJUcnVlLEZhbHNlXCI7IC8vIGRlZmF1bHQgcmFuZ2UgdmFsdWUgZm9yIExvZ2ljYWxcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBTdG9yYWdlQXR0cmlidXRlLkRBVEU6XHJcbiAgICAgIGNhc2UgU3RvcmFnZUF0dHJpYnV0ZS5USU1FOlxyXG4gICAgICBjYXNlIFN0b3JhZ2VBdHRyaWJ1dGUuQUxQSEE6XHJcbiAgICAgIGNhc2UgU3RvcmFnZUF0dHJpYnV0ZS5CTE9COlxyXG4gICAgICBjYXNlIFN0b3JhZ2VBdHRyaWJ1dGUuQkxPQl9WRUNUT1I6XHJcbiAgICAgIGNhc2UgU3RvcmFnZUF0dHJpYnV0ZS5VTklDT0RFOlxyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBFdmVudHMuV3JpdGVFeGNlcHRpb25Ub0xvZyhcIlZhbGlkYXRpb25EZXRhaWxzLlZhbGlkYXRpb25EZXRhaWxzOiBUaGVyZSBpcyBubyB0eXBlIFwiICtcclxuICAgICAgICAgIHRoaXMuX3BpY0RhdGEuZ2V0QXR0cigpKTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIC8vIGdldCBSYW5nZSBmb3IgdGhlIHBpY3R1cmU6XHJcbiAgICBpZiAodGhpcy5fcmFuZ2UgIT0gbnVsbClcclxuICAgICAgdGhpcy5maWxsUmFuZ2UoKTtcclxuXHJcbiAgICAvLyBmcmVlIG1lbW9yeVxyXG4gICAgcmFuZ2UgPSBudWxsO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGNvbnN0cnVjdG9yIGZvciByYW5nZSBvbmx5LCBtYWtlIHBhcnNpbmcgb2YgIFJhbmdlIGFuZCBmaWxsXHJcbiAgLy8vICAgRGlzY3JldGVSYW5nZVZhbHVlcyBhbmQgQ29udGludW91c1JhbmdlVmFsdWVzXHJcbiAgLy8vICAgKHVzZWQgaW4gRGlzcGxheUNvbnZlbnRvcilcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwicmFuZ2VcIj5zdHJpbmc8L3BhcmFtPlxyXG4gIHByaXZhdGUgY29uc3RydWN0b3JfMShyYW5nZVN0cjogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLmNvbnN0cnVjdG9yXzMoKTtcclxuICAgIHRoaXMuX3JhbmdlID0gcmFuZ2VTdHI7XHJcbiAgICBpZiAodGhpcy5fcmFuZ2UgIT09IG51bGwpXHJcbiAgICAgIHRoaXMuZmlsbFJhbmdlKCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgTWFrZSBjb3B5IG9mIHZhbGlkYXRpb24gZGV0YWlscyxcclxuICAvLy8gICBjb3B5IGNvbnN0cnVjdG9yXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBwcml2YXRlIGNvbnN0cnVjdG9yXzIodmQ6IFZhbGlkYXRpb25EZXRhaWxzKTogdm9pZCB7XHJcbiAgICB0aGlzLmNvbnN0cnVjdG9yXzMoKTtcclxuICAgIHRoaXMuX29sZHZhbHVlID0gdmQuZ2V0T2xkVmFsdWUoKTtcclxuICAgIHRoaXMuX3ZhbCA9IHZkLl92YWw7XHJcbiAgICB0aGlzLl9yYW5nZSA9IHZkLmdldFJhbmdlKCk7XHJcbiAgICB0aGlzLl9jb250cm9sID0gdmQuZ2V0Q29udHJvbCgpO1xyXG4gICAgdGhpcy5fdmFsaWRhdGlvbkZhaWxlZCA9IGZhbHNlO1xyXG4gICAgaWYgKHZkLl9waWN0dXJlUmVhbCAhPT0gbnVsbCkge1xyXG4gICAgICB0aGlzLl9waWN0dXJlUmVhbCA9IG5ldyBTdHJpbmdCdWlsZGVyKHZkLl9waWN0dXJlUmVhbC5Ub1N0cmluZygpKTtcclxuICAgIH1cclxuICAgIGlmICh2ZC5fcGljdHVyZUVuYWJsZSAhPT0gbnVsbCkge1xyXG4gICAgICB0aGlzLl9waWN0dXJlRW5hYmxlID0gbmV3IFN0cmluZ0J1aWxkZXIodmQuX3BpY3R1cmVFbmFibGUuVG9TdHJpbmcoKSk7XHJcbiAgICB9XHJcbiAgICBpZiAodmQuZ2V0RGlzY3JldGVSYW5nZVZhbHVlcygpICE9PSBudWxsKSB7XHJcbiAgICAgIHRoaXMuX2Rpc2NyZXRlUmFuZ2VWYWx1ZXMgPSB2ZC5DbG9uZURpc2NyZXRlUmFuZ2VWYWx1ZXMoKTtcclxuICAgIH1cclxuICAgIGlmICh2ZC5nZXRDb250aW51b3VzUmFuZ2VWYWx1ZXMoKSAhPSBudWxsKSB7XHJcbiAgICAgIHRoaXMuX2NvbnRpbnVvdXNSYW5nZVZhbHVlcyA9IHZkLkNsb25lQ29udGludW91c1JhbmdlVmFsdWVzKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9waWNEYXRhID0gdmQuZ2V0UElDKCk7XHJcbiAgICB0aGlzLl9pc051bGwgPSB2ZC5nZXRJc051bGwoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY29uc3RydWN0b3JfMygpOiB2b2lkIHtcclxuICAgIHRoaXMuX2ZpZWxkVmFsaWRhdG9yID0gbmV3IEZpZWxkVmFsaWRhdG9yKCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgKioqKioqKioqKioqKioqKioqKioqKipOdW1lcmljKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHByaXZhdGUgZ2V0UmVhbE51bWVyaWNQaWN0dXJlKCk6IHZvaWQge1xyXG4gICAgbGV0IG1hc2s6IHN0cmluZyA9IHRoaXMuX3BpY0RhdGEuZ2V0TWFzaygpO1xyXG4gICAgbGV0IGRlY186IG51bWJlciA9IHRoaXMuX3BpY0RhdGEuZ2V0RGVjKCk7XHJcbiAgICBsZXQgd2hvbGVfOiBudW1iZXIgPSB0aGlzLl9waWNEYXRhLmdldFdob2xlcygpO1xyXG4gICAgbGV0IGRlY2ltYWxfOiBib29sZWFuID0gdGhpcy5fcGljRGF0YS53aXRoRGVjaW1hbCgpO1xyXG4gICAgbGV0IGRlY19wbnRfaW5fZmlyc3Q6IGJvb2xlYW4gPSB0aGlzLl9waWNEYXRhLmRlY0luRmlyc3RQb3MoKTtcclxuICAgIGxldCBpc05lZ2F0aXZlOiBib29sZWFuID0gdGhpcy5fcGljRGF0YS5pc05lZ2F0aXZlKCk7XHJcbiAgICBsZXQgaXNGaXJzdFBpY19OOiBib29sZWFuID0gdHJ1ZTtcclxuICAgIGxldCBpc1BvaW50SW5zZXJ0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBsZXQgY3VyckNoYXIgPSAwO1xyXG5cclxuICAgIGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCB0aGlzLl9waWNEYXRhLmdldE1hc2tTaXplKCk7IGkgPSBpICsgMSkge1xyXG4gICAgICBjdXJyQ2hhciA9ICttYXNrLmNoYXJBdChpKTsgLy8gaXQncyBBU0NJSSBvZiB0aGUgY2hhclxyXG5cclxuICAgICAgc3dpdGNoIChjdXJyQ2hhcikge1xyXG4gICAgICAgIGNhc2UgUElDSW50ZXJmYWNlLlBJQ19OOlxyXG4gICAgICAgICAgaWYgKGlzRmlyc3RQaWNfTikge1xyXG4gICAgICAgICAgICBpZiAoaXNOZWdhdGl2ZSlcclxuICAgICAgICAgICAgICB0aGlzLnNldFBpY3R1cmVzKCctJywgJzAnKTtcclxuXHJcbiAgICAgICAgICAgIGlmIChkZWNfcG50X2luX2ZpcnN0KSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRQaWN0dXJlcygnLicsICcxJyk7XHJcbiAgICAgICAgICAgICAgaXNQb2ludEluc2VydGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmICh3aG9sZV8gPiAwKSB7XHJcbiAgICAgICAgICAgICAgd2hvbGVfLS07XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRQaWN0dXJlcygnIycsICcwJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaXNGaXJzdFBpY19OID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGlmIChkZWNpbWFsXykge1xyXG4gICAgICAgICAgICBpZiAod2hvbGVfID4gMCkge1xyXG4gICAgICAgICAgICAgIHdob2xlXy0tO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2V0UGljdHVyZXMoJyMnLCAnMCcpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHdob2xlXyA9PT0gMCAmJiAhaXNQb2ludEluc2VydGVkKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRQaWN0dXJlcygnLicsICcxJyk7XHJcbiAgICAgICAgICAgICAgaXNQb2ludEluc2VydGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChkZWNfID4gMCkge1xyXG4gICAgICAgICAgICAgIGRlY18tLTtcclxuICAgICAgICAgICAgICB0aGlzLnNldFBpY3R1cmVzKCcjJywgJzAnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGlmICh3aG9sZV8gPiAwKSB7XHJcbiAgICAgICAgICAgICAgd2hvbGVfLS07XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRQaWN0dXJlcygnIycsICcwJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICBkZWZhdWx0OiAvLyBjb25zdCBzdHJpbmcgaW4gQWxwaGFcclxuICAgICAgICAgIHRoaXMuc2V0UGljdHVyZXMoY3VyckNoYXIudG9TdHJpbmcoKSwgJzEnKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBFdmVudHMuV3JpdGVEZXZUb0xvZyh0aGlzLl9waWN0dXJlUmVhbC5Ub1N0cmluZygpKTtcclxuICAgIEV2ZW50cy5Xcml0ZURldlRvTG9nKHRoaXMuX3BpY3R1cmVFbmFibGUuVG9TdHJpbmcoKSk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgYWRkIGNoYXJzIHRvIFJlYWwgYW5kIEVuYWJsZSBTdHJpbmcgQnVmZmVyc1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJyZWFsXCI+dG8gUmVhbDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJFbmFibGVcIj50byBFbmFibGU8L3BhcmFtPlxyXG4gIHByaXZhdGUgc2V0UGljdHVyZXMoUmVhbDogc3RyaW5nLCBFbmFibGU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5fcGljdHVyZUVuYWJsZS5BcHBlbmQoRW5hYmxlKTtcclxuICAgIHRoaXMuX3BpY3R1cmVSZWFsLkFwcGVuZChSZWFsKTtcclxuICB9XHJcblxyXG4gIHNldFZhbHVlKHZhbDogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLl92YWwgPSB2YWw7XHJcbiAgfVxyXG5cclxuICBzZXRPbGRWYWx1ZShvbGR2YWx1ZTogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLl9vbGR2YWx1ZSA9IG9sZHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgc2V0UmFuZ2UocmFuZ2U6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5fcmFuZ2UgPSByYW5nZTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBzZXQgdGhlIFwidmFsaWRhdGlvbiBmYWlsZWRcIiBmbGFnXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBzZXRWYWxpZGF0aW9uRmFpbGVkKHZhbDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5fdmFsaWRhdGlvbkZhaWxlZCA9IHZhbDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBzZXQgaXNOdWxsIGZsYWcgb2YgdGhlIFZhbERldGFpbHNcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHNldE51bGwoaXNOdWxsXzogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5faXNOdWxsID0gaXNOdWxsXztcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXR1cm5zIHRoZSB2YWxpZCBkaXNwbGF5IHZhbHVlICh3aXRoIG1hc2spXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBnZXREaXNwVmFsdWUoKTogc3RyaW5nIHtcclxuICAgIGlmICh0eXBlb2YgdGhpcy5fdmFsID09PSAnc3RyaW5nJykge1xyXG4gICAgICBsZXQgbWluaW11bVZhbHVlTGVuZ3RoOiBudW1iZXIgPSB0aGlzLl9waWNEYXRhLmdldE1pbmltdW1WYWx1ZUxlbmd0aCgpO1xyXG5cclxuICAgICAgLy8gUlRyaW0gdGhlIHZhbHVlIGJleW9uZCB0aGlzIGluZGV4XHJcbiAgICAgIGlmICh0aGlzLl92YWwubGVuZ3RoID4gbWluaW11bVZhbHVlTGVuZ3RoKSB7XHJcbiAgICAgICAgaWYgKG1pbmltdW1WYWx1ZUxlbmd0aCA+IDAgfHwgU3RyVXRpbC5ydHJpbSh0aGlzLl92YWwpLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIGxldCBzdHI6IHN0cmluZyA9IHRoaXMuX3ZhbC5zdWJzdHIobWluaW11bVZhbHVlTGVuZ3RoKTtcclxuICAgICAgICAgIHRoaXMuX3ZhbCA9IHRoaXMuX3ZhbC5zdWJzdHIoMCwgbWluaW11bVZhbHVlTGVuZ3RoKTtcclxuICAgICAgICAgIHRoaXMuX3ZhbCA9IHRoaXMuX3ZhbCArIFN0clV0aWwucnRyaW0oc3RyKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5fY29udHJvbCAhPSBudWxsICYmIHRoaXMuX2NvbnRyb2wuaXNDaG9pY2VDb250cm9sKCkpXHJcbiAgICAgICAgdGhpcy5fdmFsID0gdGhpcy5fdmFsLnRvU3RyaW5nKCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5fdmFsO1xyXG4gIH1cclxuXHJcbiAgZ2V0T2xkVmFsdWUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9vbGR2YWx1ZTtcclxuICB9XHJcblxyXG4gIGdldFR5cGUoKTogU3RvcmFnZUF0dHJpYnV0ZSB7XHJcbiAgICByZXR1cm4gdGhpcy5fcGljRGF0YS5nZXRBdHRyKCk7XHJcbiAgfVxyXG5cclxuICBnZXRQaWN0dXJlUmVhbCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX3BpY3R1cmVSZWFsLlRvU3RyaW5nKCk7XHJcbiAgfVxyXG5cclxuICBnZXRQaWN0dXJlRW5hYmxlKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fcGljdHVyZUVuYWJsZS5Ub1N0cmluZygpO1xyXG4gIH1cclxuXHJcbiAgLy8gZm9yIE51bWVyaWNcclxuICBnZXRJc05lZ2F0aXZlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3BpY0RhdGEuaXNOZWdhdGl2ZSgpO1xyXG4gIH1cclxuXHJcbiAgLy8gZm9yIE51bWVyaWNcclxuICBnZXRJc1BhZEZpbGwoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fcGljRGF0YS5wYWRGaWxsKCk7XHJcbiAgfVxyXG5cclxuICAvLyBmb3IgTnVtZXJpY1xyXG4gIGdldFBhZEZpbGxDaGFyKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fcGljRGF0YS5nZXRQYWQoKTtcclxuICB9XHJcblxyXG4gIC8vIGZvciBOdW1lcmljLCBEYXRlLCBUaW1lXHJcbiAgZ2V0SXNaZXJvRmlsbCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9waWNEYXRhLnplcm9GaWxsKCk7XHJcbiAgfVxyXG5cclxuICAvLyBmb3IgTnVtZXJpYywgRGF0ZSwgVGltZVxyXG4gIGdldFplcm9GaWxsQ2hhcigpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX3BpY0RhdGEuZ2V0WmVyb1BhZCgpO1xyXG4gIH1cclxuXHJcbiAgLy8gZm9yIE51bWVyaWNcclxuICBnZXROZWdhdGl2ZVNpZ25QcmVmKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fcGljRGF0YS5nZXROZWdQcmVmXygpO1xyXG4gIH1cclxuXHJcbiAgZ2V0UmFuZ2UoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9yYW5nZTtcclxuICB9XHJcblxyXG4gIGdldENvbnRyb2woKTogTWdDb250cm9sQmFzZSB7XHJcbiAgICByZXR1cm4gdGhpcy5fY29udHJvbDtcclxuICB9XHJcblxyXG4gIGdldFBJQygpOiBQSUMge1xyXG4gICAgcmV0dXJuIHRoaXMuX3BpY0RhdGE7XHJcbiAgfVxyXG5cclxuICBnZXRJc051bGwoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5faXNOdWxsO1xyXG4gIH1cclxuXHJcbiAgZXZhbHVhdGUoKTogVmFsaWRhdGlvbkRldGFpbHMge1xyXG4gICAgcmV0dXJuIHRoaXMuX2ZpZWxkVmFsaWRhdG9yLmNoZWNrVmFsKHRoaXMpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vL1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBwcml2YXRlIENsb25lRGlzY3JldGVSYW5nZVZhbHVlcygpOiBMaXN0PHN0cmluZz4ge1xyXG4gICAgbGV0IGNsb25lOiBMaXN0PHN0cmluZz4gPSBuZXcgTGlzdDxzdHJpbmc+KCk7XHJcbiAgICBjbG9uZS5BZGRSYW5nZSh0aGlzLl9kaXNjcmV0ZVJhbmdlVmFsdWVzLkdldEVudW1lcmF0b3IoKSk7XHJcbiAgICByZXR1cm4gY2xvbmU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIENsb25lQ29udGludW91c1JhbmdlVmFsdWVzKCk6IExpc3Q8c3RyaW5nPiB7XHJcbiAgICBsZXQgY2xvbmU6IExpc3Q8c3RyaW5nPiA9IG5ldyBMaXN0PHN0cmluZz4oKTtcclxuICAgIGNsb25lLkFkZFJhbmdlKHRoaXMuX2NvbnRpbnVvdXNSYW5nZVZhbHVlcy5HZXRFbnVtZXJhdG9yKCkpO1xyXG4gICAgcmV0dXJuIGNsb25lO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -3,59 +3,41 @@ import { StrUtil, SEQ_2_HTML, HTML_2_STR } from "@magic-xpa/utils";
|
|
|
3
3
|
import { List, NString } from "@magic-xpa/mscorelib";
|
|
4
4
|
export class ValidationDetailsBase {
|
|
5
5
|
constructor(rangeStr) {
|
|
6
|
-
this._continuousRangeValues = null;
|
|
7
|
-
this._discreteRangeValues = null;
|
|
8
|
-
this._range = null;
|
|
6
|
+
this._continuousRangeValues = null;
|
|
7
|
+
this._discreteRangeValues = null;
|
|
8
|
+
this._range = null;
|
|
9
9
|
if (arguments.length === 1) {
|
|
10
10
|
this._range = rangeStr;
|
|
11
11
|
if (this._range !== null)
|
|
12
12
|
this.fillRange();
|
|
13
13
|
}
|
|
14
14
|
}
|
|
15
|
-
/// <summary>
|
|
16
|
-
/// ***********************Range*****************************************
|
|
17
|
-
/// </summary>
|
|
18
|
-
/// <summary>
|
|
19
|
-
/// Fill Range structures in the class
|
|
20
|
-
/// </summary>
|
|
21
15
|
fillRange() {
|
|
22
|
-
this._range = StrUtil.makePrintableTokens(this._range, SEQ_2_HTML)
|
|
23
|
-
// find delimiters ',' which has not '\,' => RealDelimeters
|
|
16
|
+
this._range = StrUtil.makePrintableTokens(this._range, SEQ_2_HTML);
|
|
24
17
|
let from = 0;
|
|
25
18
|
let prev = 0;
|
|
26
19
|
while ((from = this.findDelimeter(from, ",", this._range)) !== -1 && prev < this._range.length) {
|
|
27
20
|
this.rangeForms(this._range.substr(prev, from - prev));
|
|
28
21
|
from = (prev = from + 1);
|
|
29
22
|
}
|
|
30
|
-
// last element:
|
|
31
23
|
if (prev < this._range.length) {
|
|
32
24
|
this.rangeForms(this._range.substr(prev));
|
|
33
25
|
}
|
|
34
|
-
// range=null; // don't delete it
|
|
35
26
|
if (this._discreteRangeValues != null) {
|
|
36
|
-
StrUtil.makePrintableTokens(this._discreteRangeValues, HTML_2_STR
|
|
27
|
+
StrUtil.makePrintableTokens(this._discreteRangeValues, HTML_2_STR);
|
|
37
28
|
Events.WriteDevToLog(this._discreteRangeValues.toString());
|
|
38
29
|
}
|
|
39
30
|
if (this._continuousRangeValues !== null) {
|
|
40
|
-
StrUtil.makePrintableTokens(this._continuousRangeValues, HTML_2_STR
|
|
31
|
+
StrUtil.makePrintableTokens(this._continuousRangeValues, HTML_2_STR);
|
|
41
32
|
Events.WriteDevToLog(this._continuousRangeValues.toString());
|
|
42
33
|
}
|
|
43
34
|
}
|
|
44
|
-
/// <summary>
|
|
45
|
-
/// Fill Vectors of DiscreterangeValues and ContinuousRangeValues
|
|
46
|
-
/// DiscreteRangeValues: every member is discrete value of the range
|
|
47
|
-
/// ContinuousRangeValues: [LOW border, TOP border, ...]
|
|
48
|
-
/// </summary>
|
|
49
|
-
/// <param name = "found">- String to insert to DiscreteRangeValues, or parse to ContinuousRangeValues</param>
|
|
50
35
|
rangeForms(found) {
|
|
51
36
|
let minus;
|
|
52
|
-
if ((minus = this.findDelimeter(0, "-", found)) === -1)
|
|
53
|
-
|
|
54
|
-
{
|
|
55
|
-
found = NString.TrimStart(found); // TODO - sadhana check if this is needed
|
|
37
|
+
if ((minus = this.findDelimeter(0, "-", found)) === -1) {
|
|
38
|
+
found = NString.TrimStart(found);
|
|
56
39
|
let todel = 0;
|
|
57
40
|
while (todel < found.length && (todel = this.findDelimeter(todel, "\\", found)) !== -1) {
|
|
58
|
-
// to delete '\' and replace '\\' with '\'
|
|
59
41
|
found = found.substr(0, todel) + found.substr(todel = todel + 1);
|
|
60
42
|
todel = todel + 1;
|
|
61
43
|
}
|
|
@@ -64,7 +46,6 @@ export class ValidationDetailsBase {
|
|
|
64
46
|
this._discreteRangeValues.push(found);
|
|
65
47
|
}
|
|
66
48
|
else {
|
|
67
|
-
// index of minus found in if statement
|
|
68
49
|
let val;
|
|
69
50
|
for (let i = 0; i < 2; i = i + 1) {
|
|
70
51
|
if (i === 0) {
|
|
@@ -72,8 +53,7 @@ export class ValidationDetailsBase {
|
|
|
72
53
|
}
|
|
73
54
|
else {
|
|
74
55
|
minus = minus + 1;
|
|
75
|
-
|
|
76
|
-
while (minus < found.length && found.charAt(minus) === " " /*' '*/) {
|
|
56
|
+
while (minus < found.length && found.charAt(minus) === " ") {
|
|
77
57
|
minus = minus + 1;
|
|
78
58
|
}
|
|
79
59
|
val = found.substr(minus);
|
|
@@ -86,29 +66,16 @@ export class ValidationDetailsBase {
|
|
|
86
66
|
}
|
|
87
67
|
}
|
|
88
68
|
}
|
|
89
|
-
/// <summary>
|
|
90
|
-
/// delete String/char from the string
|
|
91
|
-
/// </summary>
|
|
92
|
-
/// <param name = "delete">String to delete</param>
|
|
93
|
-
/// <param name = "String">delete from the String</param>
|
|
94
69
|
deleteChar(stringToDelete, from) {
|
|
95
70
|
let index = 0;
|
|
96
71
|
while ((index = from.indexOf(stringToDelete, index)) !== -1)
|
|
97
72
|
from = from.substr(0, index) + from.substr(index + stringToDelete.length);
|
|
98
73
|
return from;
|
|
99
74
|
}
|
|
100
|
-
/// <summary>
|
|
101
|
-
/// Find real delimiter, there is no symbol '\' before REAL delimiter
|
|
102
|
-
/// </summary>
|
|
103
|
-
/// <param name = "start">of string, looking in</param>
|
|
104
|
-
/// <param name = "delim">to found</param>
|
|
105
|
-
/// <returns> place of found real delimiter, or -1 -> not found</returns>
|
|
106
75
|
findDelimeter(start, delim, str) {
|
|
107
76
|
let found = str.indexOf(delim, start);
|
|
108
|
-
while (found < str.length && found > 0)
|
|
109
|
-
|
|
110
|
-
{
|
|
111
|
-
if (str.charAt(found - 1) === "\\" /*'\'*/) {
|
|
77
|
+
while (found < str.length && found > 0) {
|
|
78
|
+
if (str.charAt(found - 1) === "\\") {
|
|
112
79
|
found = str.indexOf(delim, found + 1);
|
|
113
80
|
}
|
|
114
81
|
else
|
|
@@ -123,4 +90,4 @@ export class ValidationDetailsBase {
|
|
|
123
90
|
return this._continuousRangeValues;
|
|
124
91
|
}
|
|
125
92
|
}
|
|
126
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVmFsaWRhdGlvbkRldGFpbHNCYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ3VpL3NyYy9tYW5hZ2VtZW50L2d1aS9WYWxpZGF0aW9uRGV0YWlsc0Jhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN0QyxPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNuRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXJELE1BQU0sT0FBTyxxQkFBcUI7SUFRaEMsWUFBWSxRQUFpQjtRQU5uQiwyQkFBc0IsR0FBaUIsSUFBSSxDQUFDLENBQUUsbUNBQW1DO1FBQ2pGLHlCQUFvQixHQUFpQixJQUFJLENBQUMsQ0FBQyxtQ0FBbUM7UUFDOUUsV0FBTSxHQUFXLElBQUksQ0FBQyxDQUFDLG1DQUFtQztRQUtsRSxJQUFJLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQzFCLElBQUksQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDO1lBQ3ZCLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxJQUFJO2dCQUN0QixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7U0FDcEI7SUFDSCxDQUFDO0lBRUQsYUFBYTtJQUNiLDJFQUEyRTtJQUMzRSxjQUFjO0lBQ2QsYUFBYTtJQUNiLHdDQUF3QztJQUN4QyxjQUFjO0lBQ0osU0FBUztRQUNqQixJQUFJLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxDQUFBLE9BQU8sQ0FBQztRQUMxRSwyREFBMkQ7UUFDM0QsSUFBSSxJQUFJLEdBQVcsQ0FBQyxDQUFDO1FBQ3JCLElBQUksSUFBSSxHQUFXLENBQUMsQ0FBQztRQUNy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QUFDO0lBR0QsYUFBYTtJQUNiLHVFQUF1RTtJQUN2RSxjQUFjO0lBQ2QsdURBQXVEO0lBQ3ZELDBDQUEwQztJQUMxQyx5RUFBeUU7SUFDakUsYUFBYSxDQUFDLEtBQWEsRUFBRSxLQUFhLEVBQUUsR0FBVztRQUM3RCxJQUFJLEtBQUssR0FBVyxHQUFHLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM5QyxPQUFPLEtBQUssR0FBRyxHQUFHLENBQUMsTUFBTSxJQUFJLEtBQUssR0FBRyxDQUFDO1FBQ3BDLHNEQUFzRDtRQUN4RDtZQUNFLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFBLE9BQU8sRUFBRTtnQkFDekMsS0FBSyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQzthQUN2Qzs7Z0JBRUMsTUFBTTtTQUNUO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBR0Qsc0JBQXNCO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDO0lBQ25DLENBQUM7SUFFRCx3QkFBd0I7UUFDdEIsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUM7SUFDckMsQ0FBQztDQUVGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnRzIH0gZnJvbSBcIi4uLy4uL0V2ZW50c1wiO1xyXG5pbXBvcnQgeyBTdHJVdGlsLCBTRVFfMl9IVE1MLCBIVE1MXzJfU1RSIH0gZnJvbSBcIkBtYWdpYy14cGEvdXRpbHNcIjtcclxuaW1wb3J0IHsgTGlzdCwgTlN0cmluZyB9IGZyb20gXCJAbWFnaWMteHBhL21zY29yZWxpYlwiO1xyXG5cclxuZXhwb3J0IGNsYXNzIFZhbGlkYXRpb25EZXRhaWxzQmFzZSB7XHJcblxyXG4gIHByb3RlY3RlZCBfY29udGludW91c1JhbmdlVmFsdWVzOiBMaXN0PHN0cmluZz4gPSBudWxsOyAgLy8gY2FuJ3QgdXNlIExpc3Q8VD4gLSB1c2VzIENsb25lKClcclxuICBwcm90ZWN0ZWQgX2Rpc2NyZXRlUmFuZ2VWYWx1ZXM6IExpc3Q8c3RyaW5nPiA9IG51bGw7IC8vIGNhbid0IHVzZSBMaXN0PFQ+IC0gdXNlcyBDbG9uZSgpXHJcbiAgcHJvdGVjdGVkIF9yYW5nZTogc3RyaW5nID0gbnVsbDsgLy8gJ2NvbXByZXNzZWQnIHN0cmluZyBvZiB0aGUgcmFuZ2VcclxuXHJcbiAgY29uc3RydWN0b3IoKTtcclxuICBjb25zdHJ1Y3RvcihyYW5nZVN0cjogc3RyaW5nKVxyXG4gIGNvbnN0cnVjdG9yKHJhbmdlU3RyPzogc3RyaW5nKSB7XHJcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICB0aGlzLl9yYW5nZSA9IHJhbmdlU3RyO1xyXG4gICAgICBpZiAodGhpcy5fcmFuZ2UgIT09IG51bGwpXHJcbiAgICAgICAgdGhpcy5maWxsUmFuZ2UoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICAqKioqKioqKioqKioqKioqKioqKioqKlJhbmdlKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBGaWxsIFJhbmdlIHN0cnVjdHVyZXMgaW4gdGhlIGNsYXNzXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBwcm90ZWN0ZWQgZmlsbFJhbmdlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fcmFuZ2UgPSBTdHJVdGlsLm1ha2VQcmludGFibGVUb2tlbnModGhpcy5fcmFuZ2UsIFNFUV8yX0hUTUwpLyonXHUwMDAyJyovO1xyXG4gICAgLy8gZmluZCBkZWxpbWl0ZXJzICcsJyB3aGljaCBoYXMgbm90ICdcXCwnID0+IFJlYWxEZWxpbWV0ZXJzXHJcbiAgICBsZXQgZnJvbTogbnVtYmVyID0gMDtcclxuICAgIGxldCBwcmV2OiBudW1iZXIgPSAwO1xyXG4gICAgd2hpbGUgKChmcm9tID0gdGhpcy5maW5kRGVsaW1ldGVyKGZyb20sIFwiLFwiLCB0aGlzLl9yYW5nZSkpICE9PSAtMSAmJiBwcmV2IDwgdGhpcy5fcmFuZ2UubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMucmFuZ2VGb3Jtcyh0aGlzLl9yYW5nZS5zdWJzdHIocHJldiwgZnJvbSAtIHByZXYpKTtcclxuICAgICAgZnJvbSA9IChwcmV2ID0gZnJvbSArIDEpO1xyXG4gICAgfVxyXG4gICAgLy8gbGFzdCBlbGVtZW50OlxyXG4gICAgaWYgKHByZXYgPCB0aGlzLl9yYW5nZS5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5yYW5nZUZvcm1zKHRoaXMuX3JhbmdlLnN1YnN0cihwcmV2KSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gcmFuZ2U9bnVsbDsgLy8gZG9uJ3QgZGVsZXRlIGl0XHJcbiAgICBpZiAodGhpcy5fZGlzY3JldGVSYW5nZVZhbHVlcyAhPSBudWxsKSB7XHJcbiAgICAgIFN0clV0aWwubWFrZVByaW50YWJsZVRva2Vucyh0aGlzLl9kaXNjcmV0ZVJhbmdlVmFsdWVzLCBIVE1MXzJfU1RSIC8qJ1xcdTAwMDMqLyk7XHJcbiAgICAgIEV2ZW50cy5Xcml0ZURldlRvTG9nKHRoaXMuX2Rpc2NyZXRlUmFuZ2VWYWx1ZXMudG9TdHJpbmcoKSk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5fY29udGludW91c1JhbmdlVmFsdWVzICE9PSBudWxsKSB7XHJcbiAgICAgIFN0clV0aWwubWFrZVByaW50YWJsZVRva2Vucyh0aGlzLl9jb250aW51b3VzUmFuZ2VWYWx1ZXMsIEhUTUxfMl9TVFIvKidcXHUwMDAzJyovKS8qJ1x1MDAwMycqLztcclxuICAgICAgRXZlbnRzLldyaXRlRGV2VG9Mb2codGhpcy5fY29udGludW91c1JhbmdlVmFsdWVzLnRvU3RyaW5nKCkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBGaWxsIFZlY3RvcnMgb2YgRGlzY3JldGVyYW5nZVZhbHVlcyBhbmQgQ29udGludW91c1JhbmdlVmFsdWVzXHJcbiAgLy8vICAgRGlzY3JldGVSYW5nZVZhbHVlczogZXZlcnkgbWVtYmVyIGlzIGRpc2NyZXRlIHZhbHVlIG9mIHRoZSByYW5nZVxyXG4gIC8vLyAgIENvbnRpbnVvdXNSYW5nZVZhbHVlczogW0xPVyBib3JkZXIsIFRPUCBib3JkZXIsIC4uLl1cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiZm91bmRcIj4tIFN0cmluZyB0byBpbnNlcnQgdG8gRGlzY3JldGVSYW5nZVZhbHVlcywgb3IgcGFyc2UgdG8gQ29udGludW91c1JhbmdlVmFsdWVzPC9wYXJhbT5cclxuICBwcml2YXRlIHJhbmdlRm9ybXMoZm91bmQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgbGV0IG1pbnVzOiBudW1iZXI7XHJcbiAgICBpZiAoKG1pbnVzID0gdGhpcy5maW5kRGVsaW1ldGVyKDAsIFwiLVwiLCBmb3VuZCkpID09PSAtMSlcclxuICAgIC8vIG5vdCBmb3VuZCBjb250aW51b3VzIHJhbmdlOiBudW0xLW51bTJcclxuICAgIHtcclxuICAgICAgZm91bmQgPSBOU3RyaW5nLlRyaW1TdGFydChmb3VuZCk7Ly8gVE9ETyAtIHNhZGhhbmEgY2hlY2sgaWYgdGhpcyBpcyBuZWVkZWRcclxuICAgICAgbGV0IHRvZGVsOiBudW1iZXIgPSAwO1xyXG4gICAgICB3aGlsZSAodG9kZWwgPCBmb3VuZC5sZW5ndGggJiYgKHRvZGVsID0gdGhpcy5maW5kRGVsaW1ldGVyKHRvZGVsLCBcIlxcXFxcIiwgZm91bmQpKSAhPT0gLTEpIHtcclxuICAgICAgICAvLyB0byBkZWxldGUgJ1xcJyBhbmQgcmVwbGFjZSAnXFxcXCcgd2l0aCAnXFwnXHJcbiAgICAgICAgZm91bmQgPSBmb3VuZC5zdWJzdHIoMCwgdG9kZWwpICsgZm91bmQuc3Vic3RyKHRvZGVsID0gdG9kZWwgKyAxKTtcclxuICAgICAgICB0b2RlbCA9IHRvZGVsICsgMTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5fZGlzY3JldGVSYW5nZVZhbHVlcyA9PT0gbnVsbClcclxuICAgICAgICB0aGlzLl9kaXNjcmV0ZVJhbmdlVmFsdWVzID0gbmV3IExpc3Q8c3RyaW5nPigpO1xyXG4gICAgICB0aGlzLl9kaXNjcmV0ZVJhbmdlVmFsdWVzLnB1c2goZm91bmQpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIC8vIGluZGV4IG9mIG1pbnVzIGZvdW5kIGluIGlmIHN0YXRlbWVudFxyXG4gICAgICBsZXQgdmFsOiBzdHJpbmc7XHJcbiAgICAgIGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCAyOyBpID0gaSArIDEpIHtcclxuICAgICAgICBpZiAoaSA9PT0gMCkge1xyXG4gICAgICAgICAgdmFsID0gZm91bmQuc3Vic3RyKDAsIG1pbnVzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBtaW51cyA9IG1pbnVzICsgMTtcclxuICAgICAgICAgIC8vIHNraXAgYmxhbmtzIGJldHdlZW4gJy0nIGFuZCB0aGUgdmFsdWUuIEhlYWRpbmcgYmxhbmtzIGNhdXNlIHRvIHdyb25nIHZhbHVlcy5cclxuICAgICAgICAgIHdoaWxlIChtaW51cyA8IGZvdW5kLmxlbmd0aCAmJiBmb3VuZC5jaGFyQXQobWludXMpID09PSBcIiBcIi8qJyAnKi8pIHtcclxuICAgICAgICAgICAgbWludXMgPSBtaW51cyArIDE7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB2YWwgPSBmb3VuZC5zdWJzdHIobWludXMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB2YWwgPSB0aGlzLmRlbGV0ZUNoYXIoXCJcXFxcXCIsIHZhbCk7XHJcbiAgICAgICAgaWYgKHRoaXMuX2NvbnRpbnVvdXNSYW5nZVZhbHVlcyA9PT0gbnVsbCkge1xyXG4gICAgICAgICAgdGhpcy5fY29udGludW91c1JhbmdlVmFsdWVzID0gbmV3IExpc3Q8c3RyaW5nPigpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9jb250aW51b3VzUmFuZ2VWYWx1ZXMucHVzaCh2YWwpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGRlbGV0ZSBTdHJpbmcvY2hhciBmcm9tIHRoZSBzdHJpbmdcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiZGVsZXRlXCI+U3RyaW5nIHRvIGRlbGV0ZTwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJTdHJpbmdcIj5kZWxldGUgZnJvbSB0aGUgU3RyaW5nPC9wYXJhbT5cclxuICBwcml2YXRlIGRlbGV0ZUNoYXIoc3RyaW5nVG9EZWxldGU6IHN0cmluZywgZnJvbTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGxldCBpbmRleDogbnVtYmVyID0gMDtcclxuICAgIHdoaWxlICgoaW5kZXggPSBmcm9tLmluZGV4T2Yoc3RyaW5nVG9EZWxldGUsIGluZGV4KSkgIT09IC0xKVxyXG4gICAgICBmcm9tID0gZnJvbS5zdWJzdHIoMCwgaW5kZXgpICsgZnJvbS5zdWJzdHIoaW5kZXggKyBzdHJpbmdUb0RlbGV0ZS5sZW5ndGgpO1xyXG4gICAgcmV0dXJuIGZyb207XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIEZpbmQgcmVhbCBkZWxpbWl0ZXIsIHRoZXJlIGlzIG5vIHN5bWJvbCAnXFwnIGJlZm9yZSBSRUFMIGRlbGltaXRlclxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJzdGFydFwiPm9mIHN0cmluZywgbG9va2luZyBpbjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJkZWxpbVwiPnRvIGZvdW5kPC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+IHBsYWNlIG9mIGZvdW5kIHJlYWwgZGVsaW1pdGVyLCBvciAtMSAtPiBub3QgZm91bmQ8L3JldHVybnM+XHJcbiAgcHJpdmF0ZSBmaW5kRGVsaW1ldGVyKHN0YXJ0OiBudW1iZXIsIGRlbGltOiBzdHJpbmcsIHN0cjogc3RyaW5nKTogbnVtYmVyIHtcclxuICAgIGxldCBmb3VuZDogbnVtYmVyID0gc3RyLmluZGV4T2YoZGVsaW0sIHN0YXJ0KTtcclxuICAgIHdoaWxlIChmb3VuZCA8IHN0ci5sZW5ndGggJiYgZm91bmQgPiAwKVxyXG4gICAgICAvLyA9PiBmb3VuZCE9LTEobm90IGZvdW5kKTsgZm91bmQhPTAobm90IGZpcnN0IGxldHRlcilcclxuICAgIHtcclxuICAgICAgaWYgKHN0ci5jaGFyQXQoZm91bmQgLSAxKSA9PT0gXCJcXFxcXCIvKidcXCcqLykge1xyXG4gICAgICAgIGZvdW5kID0gc3RyLmluZGV4T2YoZGVsaW0sIGZvdW5kICsgMSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZvdW5kO1xyXG4gIH1cclxuXHJcblxyXG4gIGdldERpc2NyZXRlUmFuZ2VWYWx1ZXMoKTogTGlzdDxzdHJpbmc+IHtcclxuICAgIHJldHVybiB0aGlzLl9kaXNjcmV0ZVJhbmdlVmFsdWVzO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q29udGludW91c1JhbmdlVmFsdWVzKCk6IExpc3Q8c3RyaW5nPiB7XHJcbiAgICByZXR1cm4gdGhpcy5fY29udGludW91c1JhbmdlVmFsdWVzO1xyXG4gIH1cclxuXHJcbn1cclxuIl19
|
|
93
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVmFsaWRhdGlvbkRldGFpbHNCYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ3VpL3NyYy9tYW5hZ2VtZW50L2d1aS9WYWxpZGF0aW9uRGV0YWlsc0Jhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN0QyxPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNuRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXJELE1BQU0sT0FBTyxxQkFBcUI7SUFRaEMsWUFBWSxRQUFpQjtRQU5uQiwyQkFBc0IsR0FBaUIsSUFBSSxDQUFDO1FBQzVDLHlCQUFvQixHQUFpQixJQUFJLENBQUM7UUFDMUMsV0FBTSxHQUFXLElBQUksQ0FBQztRQUs5QixJQUFJLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQzFCLElBQUksQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDO1lBQ3ZCLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxJQUFJO2dCQUN0QixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7U0FDcEI7SUFDSCxDQUFDO0lBUVMsU0FBUztRQUNqQixJQUFJLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxDQUFRO1FBRTFFLElBQUksSUFBSSxHQUFXLENBQUMsQ0FBQztRQUNyQixJQUFJLElBQUksR0FBVyxDQUFDLENBQUM7UUFDckIsT0FBTyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksSUFBSSxHQUFHLElBQUks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SUFBSSxDQUFDLG9CQUFvQixDQUFDO0lBQ25DLENBQUM7SUFFRCx3QkFBd0I7UUFDdEIsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUM7SUFDckMsQ0FBQztDQUVGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnRzIH0gZnJvbSBcIi4uLy4uL0V2ZW50c1wiO1xyXG5pbXBvcnQgeyBTdHJVdGlsLCBTRVFfMl9IVE1MLCBIVE1MXzJfU1RSIH0gZnJvbSBcIkBtYWdpYy14cGEvdXRpbHNcIjtcclxuaW1wb3J0IHsgTGlzdCwgTlN0cmluZyB9IGZyb20gXCJAbWFnaWMteHBhL21zY29yZWxpYlwiO1xyXG5cclxuZXhwb3J0IGNsYXNzIFZhbGlkYXRpb25EZXRhaWxzQmFzZSB7XHJcblxyXG4gIHByb3RlY3RlZCBfY29udGludW91c1JhbmdlVmFsdWVzOiBMaXN0PHN0cmluZz4gPSBudWxsOyAgLy8gY2FuJ3QgdXNlIExpc3Q8VD4gLSB1c2VzIENsb25lKClcclxuICBwcm90ZWN0ZWQgX2Rpc2NyZXRlUmFuZ2VWYWx1ZXM6IExpc3Q8c3RyaW5nPiA9IG51bGw7IC8vIGNhbid0IHVzZSBMaXN0PFQ+IC0gdXNlcyBDbG9uZSgpXHJcbiAgcHJvdGVjdGVkIF9yYW5nZTogc3RyaW5nID0gbnVsbDsgLy8gJ2NvbXByZXNzZWQnIHN0cmluZyBvZiB0aGUgcmFuZ2VcclxuXHJcbiAgY29uc3RydWN0b3IoKTtcclxuICBjb25zdHJ1Y3RvcihyYW5nZVN0cjogc3RyaW5nKVxyXG4gIGNvbnN0cnVjdG9yKHJhbmdlU3RyPzogc3RyaW5nKSB7XHJcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICB0aGlzLl9yYW5nZSA9IHJhbmdlU3RyO1xyXG4gICAgICBpZiAodGhpcy5fcmFuZ2UgIT09IG51bGwpXHJcbiAgICAgICAgdGhpcy5maWxsUmFuZ2UoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICAqKioqKioqKioqKioqKioqKioqKioqKlJhbmdlKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBGaWxsIFJhbmdlIHN0cnVjdHVyZXMgaW4gdGhlIGNsYXNzXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBwcm90ZWN0ZWQgZmlsbFJhbmdlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fcmFuZ2UgPSBTdHJVdGlsLm1ha2VQcmludGFibGVUb2tlbnModGhpcy5fcmFuZ2UsIFNFUV8yX0hUTUwpLyonXHUwMDAyJyovO1xyXG4gICAgLy8gZmluZCBkZWxpbWl0ZXJzICcsJyB3aGljaCBoYXMgbm90ICdcXCwnID0+IFJlYWxEZWxpbWV0ZXJzXHJcbiAgICBsZXQgZnJvbTogbnVtYmVyID0gMDtcclxuICAgIGxldCBwcmV2OiBudW1iZXIgPSAwO1xyXG4gICAgd2hpbGUgKChmcm9tID0gdGhpcy5maW5kRGVsaW1ldGVyKGZyb20sIFwiLFwiLCB0aGlzLl9yYW5nZSkpICE9PSAtMSAmJiBwcmV2IDwgdGhpcy5fcmFuZ2UubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMucmFuZ2VGb3Jtcyh0aGlzLl9yYW5nZS5zdWJzdHIocHJldiwgZnJvbSAtIHByZXYpKTtcclxuICAgICAgZnJvbSA9IChwcmV2ID0gZnJvbSArIDEpO1xyXG4gICAgfVxyXG4gICAgLy8gbGFzdCBlbGVtZW50OlxyXG4gICAgaWYgKHByZXYgPCB0aGlzLl9yYW5nZS5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5yYW5nZUZvcm1zKHRoaXMuX3JhbmdlLnN1YnN0cihwcmV2KSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gcmFuZ2U9bnVsbDsgLy8gZG9uJ3QgZGVsZXRlIGl0XHJcbiAgICBpZiAodGhpcy5fZGlzY3JldGVSYW5nZVZhbHVlcyAhPSBudWxsKSB7XHJcbiAgICAgIFN0clV0aWwubWFrZVByaW50YWJsZVRva2Vucyh0aGlzLl9kaXNjcmV0ZVJhbmdlVmFsdWVzLCBIVE1MXzJfU1RSIC8qJ1xcdTAwMDMqLyk7XHJcbiAgICAgIEV2ZW50cy5Xcml0ZURldlRvTG9nKHRoaXMuX2Rpc2NyZXRlUmFuZ2VWYWx1ZXMudG9TdHJpbmcoKSk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5fY29udGludW91c1JhbmdlVmFsdWVzICE9PSBudWxsKSB7XHJcbiAgICAgIFN0clV0aWwubWFrZVByaW50YWJsZVRva2Vucyh0aGlzLl9jb250aW51b3VzUmFuZ2VWYWx1ZXMsIEhUTUxfMl9TVFIvKidcXHUwMDAzJyovKS8qJ1x1MDAwMycqLztcclxuICAgICAgRXZlbnRzLldyaXRlRGV2VG9Mb2codGhpcy5fY29udGludW91c1JhbmdlVmFsdWVzLnRvU3RyaW5nKCkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBGaWxsIFZlY3RvcnMgb2YgRGlzY3JldGVyYW5nZVZhbHVlcyBhbmQgQ29udGludW91c1JhbmdlVmFsdWVzXHJcbiAgLy8vICAgRGlzY3JldGVSYW5nZVZhbHVlczogZXZlcnkgbWVtYmVyIGlzIGRpc2NyZXRlIHZhbHVlIG9mIHRoZSByYW5nZVxyXG4gIC8vLyAgIENvbnRpbnVvdXNSYW5nZVZhbHVlczogW0xPVyBib3JkZXIsIFRPUCBib3JkZXIsIC4uLl1cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiZm91bmRcIj4tIFN0cmluZyB0byBpbnNlcnQgdG8gRGlzY3JldGVSYW5nZVZhbHVlcywgb3IgcGFyc2UgdG8gQ29udGludW91c1JhbmdlVmFsdWVzPC9wYXJhbT5cclxuICBwcml2YXRlIHJhbmdlRm9ybXMoZm91bmQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgbGV0IG1pbnVzOiBudW1iZXI7XHJcbiAgICBpZiAoKG1pbnVzID0gdGhpcy5maW5kRGVsaW1ldGVyKDAsIFwiLVwiLCBmb3VuZCkpID09PSAtMSlcclxuICAgIC8vIG5vdCBmb3VuZCBjb250aW51b3VzIHJhbmdlOiBudW0xLW51bTJcclxuICAgIHtcclxuICAgICAgZm91bmQgPSBOU3RyaW5nLlRyaW1TdGFydChmb3VuZCk7Ly8gVE9ETyAtIHNhZGhhbmEgY2hlY2sgaWYgdGhpcyBpcyBuZWVkZWRcclxuICAgICAgbGV0IHRvZGVsOiBudW1iZXIgPSAwO1xyXG4gICAgICB3aGlsZSAodG9kZWwgPCBmb3VuZC5sZW5ndGggJiYgKHRvZGVsID0gdGhpcy5maW5kRGVsaW1ldGVyKHRvZGVsLCBcIlxcXFxcIiwgZm91bmQpKSAhPT0gLTEpIHtcclxuICAgICAgICAvLyB0byBkZWxldGUgJ1xcJyBhbmQgcmVwbGFjZSAnXFxcXCcgd2l0aCAnXFwnXHJcbiAgICAgICAgZm91bmQgPSBmb3VuZC5zdWJzdHIoMCwgdG9kZWwpICsgZm91bmQuc3Vic3RyKHRvZGVsID0gdG9kZWwgKyAxKTtcclxuICAgICAgICB0b2RlbCA9IHRvZGVsICsgMTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5fZGlzY3JldGVSYW5nZVZhbHVlcyA9PT0gbnVsbClcclxuICAgICAgICB0aGlzLl9kaXNjcmV0ZVJhbmdlVmFsdWVzID0gbmV3IExpc3Q8c3RyaW5nPigpO1xyXG4gICAgICB0aGlzLl9kaXNjcmV0ZVJhbmdlVmFsdWVzLnB1c2goZm91bmQpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIC8vIGluZGV4IG9mIG1pbnVzIGZvdW5kIGluIGlmIHN0YXRlbWVudFxyXG4gICAgICBsZXQgdmFsOiBzdHJpbmc7XHJcbiAgICAgIGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCAyOyBpID0gaSArIDEpIHtcclxuICAgICAgICBpZiAoaSA9PT0gMCkge1xyXG4gICAgICAgICAgdmFsID0gZm91bmQuc3Vic3RyKDAsIG1pbnVzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBtaW51cyA9IG1pbnVzICsgMTtcclxuICAgICAgICAgIC8vIHNraXAgYmxhbmtzIGJldHdlZW4gJy0nIGFuZCB0aGUgdmFsdWUuIEhlYWRpbmcgYmxhbmtzIGNhdXNlIHRvIHdyb25nIHZhbHVlcy5cclxuICAgICAgICAgIHdoaWxlIChtaW51cyA8IGZvdW5kLmxlbmd0aCAmJiBmb3VuZC5jaGFyQXQobWludXMpID09PSBcIiBcIi8qJyAnKi8pIHtcclxuICAgICAgICAgICAgbWludXMgPSBtaW51cyArIDE7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB2YWwgPSBmb3VuZC5zdWJzdHIobWludXMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB2YWwgPSB0aGlzLmRlbGV0ZUNoYXIoXCJcXFxcXCIsIHZhbCk7XHJcbiAgICAgICAgaWYgKHRoaXMuX2NvbnRpbnVvdXNSYW5nZVZhbHVlcyA9PT0gbnVsbCkge1xyXG4gICAgICAgICAgdGhpcy5fY29udGludW91c1JhbmdlVmFsdWVzID0gbmV3IExpc3Q8c3RyaW5nPigpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9jb250aW51b3VzUmFuZ2VWYWx1ZXMucHVzaCh2YWwpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGRlbGV0ZSBTdHJpbmcvY2hhciBmcm9tIHRoZSBzdHJpbmdcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiZGVsZXRlXCI+U3RyaW5nIHRvIGRlbGV0ZTwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJTdHJpbmdcIj5kZWxldGUgZnJvbSB0aGUgU3RyaW5nPC9wYXJhbT5cclxuICBwcml2YXRlIGRlbGV0ZUNoYXIoc3RyaW5nVG9EZWxldGU6IHN0cmluZywgZnJvbTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGxldCBpbmRleDogbnVtYmVyID0gMDtcclxuICAgIHdoaWxlICgoaW5kZXggPSBmcm9tLmluZGV4T2Yoc3RyaW5nVG9EZWxldGUsIGluZGV4KSkgIT09IC0xKVxyXG4gICAgICBmcm9tID0gZnJvbS5zdWJzdHIoMCwgaW5kZXgpICsgZnJvbS5zdWJzdHIoaW5kZXggKyBzdHJpbmdUb0RlbGV0ZS5sZW5ndGgpO1xyXG4gICAgcmV0dXJuIGZyb207XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIEZpbmQgcmVhbCBkZWxpbWl0ZXIsIHRoZXJlIGlzIG5vIHN5bWJvbCAnXFwnIGJlZm9yZSBSRUFMIGRlbGltaXRlclxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJzdGFydFwiPm9mIHN0cmluZywgbG9va2luZyBpbjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJkZWxpbVwiPnRvIGZvdW5kPC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+IHBsYWNlIG9mIGZvdW5kIHJlYWwgZGVsaW1pdGVyLCBvciAtMSAtPiBub3QgZm91bmQ8L3JldHVybnM+XHJcbiAgcHJpdmF0ZSBmaW5kRGVsaW1ldGVyKHN0YXJ0OiBudW1iZXIsIGRlbGltOiBzdHJpbmcsIHN0cjogc3RyaW5nKTogbnVtYmVyIHtcclxuICAgIGxldCBmb3VuZDogbnVtYmVyID0gc3RyLmluZGV4T2YoZGVsaW0sIHN0YXJ0KTtcclxuICAgIHdoaWxlIChmb3VuZCA8IHN0ci5sZW5ndGggJiYgZm91bmQgPiAwKVxyXG4gICAgICAvLyA9PiBmb3VuZCE9LTEobm90IGZvdW5kKTsgZm91bmQhPTAobm90IGZpcnN0IGxldHRlcilcclxuICAgIHtcclxuICAgICAgaWYgKHN0ci5jaGFyQXQoZm91bmQgLSAxKSA9PT0gXCJcXFxcXCIvKidcXCcqLykge1xyXG4gICAgICAgIGZvdW5kID0gc3RyLmluZGV4T2YoZGVsaW0sIGZvdW5kICsgMSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZvdW5kO1xyXG4gIH1cclxuXHJcblxyXG4gIGdldERpc2NyZXRlUmFuZ2VWYWx1ZXMoKTogTGlzdDxzdHJpbmc+IHtcclxuICAgIHJldHVybiB0aGlzLl9kaXNjcmV0ZVJhbmdlVmFsdWVzO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q29udGludW91c1JhbmdlVmFsdWVzKCk6IExpc3Q8c3RyaW5nPiB7XHJcbiAgICByZXR1cm4gdGhpcy5fY29udGludW91c1JhbmdlVmFsdWVzO1xyXG4gIH1cclxuXHJcbn1cclxuIl19
|
|
@@ -1,16 +1,8 @@
|
|
|
1
1
|
import { Exception } from "@magic-xpa/mscorelib";
|
|
2
2
|
import { MsgInterface } from "@magic-xpa/utils";
|
|
3
|
-
/// <summary> this exception should be thrown whenever the User inserted input
|
|
4
|
-
/// to field which can not be initialized by mask/format, so
|
|
5
|
-
/// after catching the exception it needs:
|
|
6
|
-
/// set focus back to the field
|
|
7
|
-
/// return to the field old value
|
|
8
|
-
/// write in the status bar relevant message
|
|
9
|
-
/// </summary>
|
|
10
3
|
export class WrongFormatException extends Exception {
|
|
11
4
|
constructor(type) {
|
|
12
5
|
super(type);
|
|
13
|
-
// type of the field produced the exception
|
|
14
6
|
this._type = null;
|
|
15
7
|
this.name = "WrongFormatException";
|
|
16
8
|
if (arguments.length === 0) {
|
|
@@ -22,16 +14,10 @@ export class WrongFormatException extends Exception {
|
|
|
22
14
|
initialize() {
|
|
23
15
|
this._type = null;
|
|
24
16
|
}
|
|
25
|
-
/// <summary>constructor on case of wrong RANGE ONLY
|
|
26
|
-
/// to insert relevant range to the status bar
|
|
27
|
-
/// </summary>
|
|
28
17
|
constructor_0() {
|
|
29
18
|
this.initialize();
|
|
30
19
|
this._type = MsgInterface.STR_RNG_TXT;
|
|
31
20
|
}
|
|
32
|
-
/// <summary>constructor on case of wrong user input
|
|
33
|
-
/// to insert 'Bad 'type' .'message to status bar
|
|
34
|
-
/// </summary>
|
|
35
21
|
constructor_1(type) {
|
|
36
22
|
this.initialize();
|
|
37
23
|
this._type = type;
|
|
@@ -40,4 +26,4 @@ export class WrongFormatException extends Exception {
|
|
|
40
26
|
return this._type;
|
|
41
27
|
}
|
|
42
28
|
}
|
|
43
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiV3JvbmdGb3JtYXRFeGNlcHRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ndWkvc3JjL21hbmFnZW1lbnQvZ3VpL1dyb25nRm9ybWF0RXhjZXB0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUMvQyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFTOUMsTUFBTSxPQUFPLG9CQUFxQixTQUFRLFNBQVM7SUFNakQsWUFBWSxJQUFhO1FBRXZCLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUxOLFVBQUssR0FBVyxJQUFJLENBQUM7UUFPM0IsSUFBSSxDQUFDLElBQUksR0FBRyxzQkFBc0IsQ0FBQztRQUNuQyxJQUFJLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBRTFCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNyQixPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFTyxVQUFVO1FBQ2hCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO0lBQ3BCLENBQUM7SUFLTyxhQUFhO1FBQ25CLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsS0FBSyxHQUFHLFlBQVksQ0FBQyxXQUFXLENBQUM7SUFDeEMsQ0FBQztJQUtPLGFBQWEsQ0FBQyxJQUFZO1FBQ2hDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztJQUNwQixDQUFDO0lBRUQsT0FBTztRQUNMLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0V4Y2VwdGlvbn0gZnJvbSBcIkBtYWdpYy14cGEvbXNjb3JlbGliXCI7XHJcbmltcG9ydCB7TXNnSW50ZXJmYWNlfSBmcm9tIFwiQG1hZ2ljLXhwYS91dGlsc1wiO1xyXG5cclxuLy8vIDxzdW1tYXJ5PiB0aGlzIGV4Y2VwdGlvbiBzaG91bGQgYmUgdGhyb3duIHdoZW5ldmVyIHRoZSBVc2VyIGluc2VydGVkIGlucHV0XHJcbi8vLyB0byBmaWVsZCB3aGljaCBjYW4gbm90IGJlIGluaXRpYWxpemVkIGJ5IG1hc2svZm9ybWF0LCBzb1xyXG4vLy8gYWZ0ZXIgY2F0Y2hpbmcgdGhlIGV4Y2VwdGlvbiBpdCBuZWVkczpcclxuLy8vIHNldCBmb2N1cyBiYWNrIHRvIHRoZSBmaWVsZFxyXG4vLy8gcmV0dXJuIHRvIHRoZSBmaWVsZCBvbGQgdmFsdWVcclxuLy8vIHdyaXRlIGluIHRoZSBzdGF0dXMgYmFyIHJlbGV2YW50IG1lc3NhZ2VcclxuLy8vIDwvc3VtbWFyeT5cclxuZXhwb3J0IGNsYXNzIFdyb25nRm9ybWF0RXhjZXB0aW9uIGV4dGVuZHMgRXhjZXB0aW9uIHtcclxuXHJcbiAgLy8gdHlwZSBvZiB0aGUgZmllbGQgcHJvZHVjZWQgdGhlIGV4Y2VwdGlvblxyXG4gIHByaXZhdGUgX3R5cGU6IHN0cmluZyA9IG51bGw7XHJcblxyXG5cclxuICBjb25zdHJ1Y3Rvcih0eXBlPzogc3RyaW5nKSB7XHJcblxyXG4gICAgc3VwZXIodHlwZSk7XHJcblxyXG4gICAgdGhpcy5uYW1lID0gXCJXcm9uZ0Zvcm1hdEV4Y2VwdGlvblwiO1xyXG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHtcclxuXHJcbiAgICAgIHRoaXMuY29uc3RydWN0b3JfMCgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jb25zdHJ1Y3Rvcl8xKHR5cGUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0aWFsaXplKCkge1xyXG4gICAgdGhpcy5fdHlwZSA9IG51bGw7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+Y29uc3RydWN0b3Igb24gY2FzZSBvZiB3cm9uZyBSQU5HRSBPTkxZXHJcbiAgLy8vIHRvIGluc2VydCByZWxldmFudCByYW5nZSB0byB0aGUgc3RhdHVzIGJhclxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcl8wKCk6IHZvaWQge1xyXG4gICAgdGhpcy5pbml0aWFsaXplKCk7XHJcbiAgICB0aGlzLl90eXBlID0gTXNnSW50ZXJmYWNlLlNUUl9STkdfVFhUO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PmNvbnN0cnVjdG9yIG9uIGNhc2Ugb2Ygd3JvbmcgdXNlciBpbnB1dFxyXG4gIC8vLyB0byBpbnNlcnQgJ0JhZCAndHlwZScgLidtZXNzYWdlIHRvIHN0YXR1cyBiYXJcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHByaXZhdGUgY29uc3RydWN0b3JfMSh0eXBlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuaW5pdGlhbGl6ZSgpO1xyXG4gICAgdGhpcy5fdHlwZSA9IHR5cGU7XHJcbiAgfVxyXG5cclxuICBnZXRUeXBlKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fdHlwZTtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export class GuiDataCollection {
|
|
2
2
|
}
|
|
3
3
|
GuiDataCollection.MGDataTable = null;
|
|
4
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3VpRGF0YUNvbGxlY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ndWkvc3JjL21hbmFnZW1lbnQvdGFza3MvR3VpRGF0YUNvbGxlY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxPQUFPLGlCQUFpQjs7QUFFckIsNkJBQVcsR0FBaUIsSUFBSSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSU1HRGF0YVRhYmxlIH0gZnJvbSBcIi4vSU1HRGF0YVRhYmxlXCI7XHJcblxyXG5leHBvcnQgY2xhc3MgR3VpRGF0YUNvbGxlY3Rpb25cclxue1xyXG4gIHN0YXRpYyBNR0RhdGFUYWJsZTogSU1HRGF0YVRhYmxlID0gbnVsbDtcclxufVxyXG4iXX0=
|