@magic-xpa/gui 4.800.0 → 4.801.0-dev000.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/{esm2015/index.js → esm2020/index.mjs} +0 -0
- package/{esm2015/magic-xpa-gui.js → esm2020/magic-xpa-gui.mjs} +0 -0
- package/esm2020/src/Commands.mjs +186 -0
- package/esm2020/src/Events.mjs +420 -0
- package/esm2020/src/EventsProcessor.mjs +67 -0
- package/esm2020/src/FocusManager.mjs +34 -0
- package/{esm2015/src/GuiConstants.js → esm2020/src/GuiConstants.mjs} +0 -0
- package/{esm2015/src/GuiEnums.js → esm2020/src/GuiEnums.mjs} +0 -0
- package/{esm2015/src/GuiEnvironment.js → esm2020/src/GuiEnvironment.mjs} +0 -0
- package/{esm2015/src/IFlowMonitorQueue.js → esm2020/src/IFlowMonitorQueue.mjs} +2 -1
- package/esm2020/src/Manager.mjs +192 -0
- package/{esm2015/src/UIBridge.js → esm2020/src/UIBridge.mjs} +0 -0
- package/{esm2015/src/env/IEnvironment.js → esm2020/src/env/IEnvironment.mjs} +1 -0
- package/{esm2015/src/gui/ControlBase.js → esm2020/src/gui/ControlBase.mjs} +0 -0
- package/{esm2015/src/gui/GuiMgControl.js → esm2020/src/gui/GuiMgControl.mjs} +0 -0
- package/{esm2015/src/gui/GuiMgForm.js → esm2020/src/gui/GuiMgForm.mjs} +0 -0
- package/{esm2015/src/gui/KeyboardItem.js → esm2020/src/gui/KeyboardItem.mjs} +0 -0
- package/{esm2015/src/gui/LastFocusedVal.js → esm2020/src/gui/LastFocusedVal.mjs} +0 -0
- package/{esm2015/src/gui/MgValue.js → esm2020/src/gui/MgValue.mjs} +0 -0
- package/{esm2015/src/gui/PropParentInterface.js → esm2020/src/gui/PropParentInterface.mjs} +1 -0
- package/{esm2015/src/gui/low/DialogHandler.js → esm2020/src/gui/low/DialogHandler.mjs} +0 -0
- package/{esm2015/src/gui/low/GuiCommand.js → esm2020/src/gui/low/GuiCommand.mjs} +0 -0
- package/{esm2015/src/gui/low/GuiCommandQueue.js → esm2020/src/gui/low/GuiCommandQueue.mjs} +0 -0
- package/esm2020/src/gui/low/GuiInteractive.mjs +545 -0
- package/{esm2015/src/gui/low/Style.js → esm2020/src/gui/low/Style.mjs} +0 -0
- package/{esm2015/src/management/RuntimeContextBase.js → esm2020/src/management/RuntimeContextBase.mjs} +0 -0
- package/{esm2015/src/management/data/BlobType.js → esm2020/src/management/data/BlobType.mjs} +0 -0
- package/esm2020/src/management/data/DcValues.mjs +214 -0
- package/esm2020/src/management/data/DcValuesBuilderBase.mjs +97 -0
- package/{esm2015/src/management/data/FieldDef.js → esm2020/src/management/data/FieldDef.mjs} +0 -0
- package/{esm2015/src/management/data/FieldsTable.js → esm2020/src/management/data/FieldsTable.mjs} +0 -0
- package/esm2020/src/management/data/GuiDataViewBase.mjs +90 -0
- package/esm2020/src/management/data/GuiFieldBase.mjs +82 -0
- package/{esm2015/src/management/data/IRecord.js → esm2020/src/management/data/IRecord.mjs} +1 -0
- package/{esm2015/src/management/data/IReferencedObject.js → esm2020/src/management/data/IReferencedObject.mjs} +1 -0
- package/{esm2015/src/management/data/NUM_TYPE.js → esm2020/src/management/data/NUM_TYPE.mjs} +0 -0
- package/esm2020/src/management/data/ObjectReferenceBase.mjs +48 -0
- package/{esm2015/src/management/data/ObjectReferencesCollection.js → esm2020/src/management/data/ObjectReferencesCollection.mjs} +0 -0
- package/esm2020/src/management/data/RecordUtils.mjs +361 -0
- package/{esm2015/src/management/data/VectorType.js → esm2020/src/management/data/VectorType.mjs} +0 -0
- package/{esm2015/src/management/data/VectorTypeBase.js → esm2020/src/management/data/VectorTypeBase.mjs} +0 -0
- package/{esm2015/src/management/events/IActionManager.js → esm2020/src/management/events/IActionManager.mjs} +1 -0
- package/esm2020/src/management/events/IGuiEventsManager.mjs +2 -0
- package/{esm2015/src/management/exp/ExpressionInterface.js → esm2020/src/management/exp/ExpressionInterface.mjs} +0 -0
- package/esm2020/src/management/exp/GuiExpressionEvaluator.mjs +333 -0
- package/{esm2015/src/management/gui/ControlTable.js → esm2020/src/management/gui/ControlTable.mjs} +0 -0
- package/esm2020/src/management/gui/DisplayConvertor.mjs +1706 -0
- package/esm2020/src/management/gui/FieldValidator.mjs +1507 -0
- package/esm2020/src/management/gui/GuiControlPropertyAdapter.mjs +22 -0
- package/{esm2015/src/management/gui/GuiFormPropertyAdapter.js → esm2020/src/management/gui/GuiFormPropertyAdapter.mjs} +0 -0
- package/{esm2015/src/management/gui/HebrewDate.js → esm2020/src/management/gui/HebrewDate.mjs} +0 -0
- package/{esm2015/src/management/gui/Helps.js → esm2020/src/management/gui/Helps.mjs} +0 -0
- package/esm2020/src/management/gui/MgControlBase.mjs +1873 -0
- package/esm2020/src/management/gui/MgFormBase.mjs +748 -0
- package/{esm2015/src/management/gui/PIC.js → esm2020/src/management/gui/PIC.mjs} +0 -0
- package/esm2020/src/management/gui/PropDefaults.mjs +230 -0
- package/{esm2015/src/management/gui/PropInterface.js → esm2020/src/management/gui/PropInterface.mjs} +0 -0
- package/esm2020/src/management/gui/PropTable.mjs +221 -0
- package/esm2020/src/management/gui/Property.mjs +1382 -0
- package/{esm2015/src/management/gui/ValidationDetails.js → esm2020/src/management/gui/ValidationDetails.mjs} +0 -0
- package/{esm2015/src/management/gui/ValidationDetailsBase.js → esm2020/src/management/gui/ValidationDetailsBase.mjs} +0 -0
- package/{esm2015/src/management/gui/WrongFormatException.js → esm2020/src/management/gui/WrongFormatException.mjs} +0 -0
- package/{esm2015/src/management/tasks/GuiDataCollection.js → esm2020/src/management/tasks/GuiDataCollection.mjs} +0 -0
- package/esm2020/src/management/tasks/GuiTaskBase.mjs +502 -0
- package/{esm2015/src/management/tasks/IMGDataTable.js → esm2020/src/management/tasks/IMGDataTable.mjs} +1 -0
- package/{esm2015/src/management/tasks/ITask.js → esm2020/src/management/tasks/ITask.mjs} +1 -0
- package/esm2020/src/management/tasks/MgTimer.mjs +21 -0
- package/{esm2015/src/management/tasks/TaskDefinitionId.js → esm2020/src/management/tasks/TaskDefinitionId.mjs} +0 -0
- package/esm2020/src/management/tasks/TaskDefinitionIdTableSaxHandler.mjs +41 -0
- package/{esm2015/src/util/AuthenticationDialogHandler.js → esm2020/src/util/AuthenticationDialogHandler.mjs} +0 -0
- package/{esm2015/src/util/MemoryUtil.js → esm2020/src/util/MemoryUtil.mjs} +0 -0
- package/{esm2015/src/util/ObjectReference.js → esm2020/src/util/ObjectReference.mjs} +0 -0
- package/esm2020/src/util/ProcessLauncher.mjs +32 -0
- package/esm2020/src/util/UsernamePasswordCredentials.mjs +52 -0
- package/fesm2015/{magic-xpa-gui.js → magic-xpa-gui.mjs} +133 -175
- package/fesm2015/magic-xpa-gui.mjs.map +1 -0
- package/fesm2020/magic-xpa-gui.mjs +17805 -0
- package/fesm2020/magic-xpa-gui.mjs.map +1 -0
- package/package.json +27 -14
- package/src/Events.d.ts +2 -2
- package/src/EventsProcessor.d.ts +1 -1
- package/src/IFlowMonitorQueue.d.ts +1 -1
- package/src/Manager.d.ts +2 -3
- package/src/management/data/DcValues.d.ts +1 -1
- package/src/management/data/DcValuesBuilderBase.d.ts +1 -1
- package/src/management/data/RecordUtils.d.ts +0 -3
- package/src/management/events/IGuiEventsManager.d.ts +5 -5
- package/src/management/exp/GuiExpressionEvaluator.d.ts +2 -2
- package/src/management/gui/DisplayConvertor.d.ts +6 -6
- package/src/management/gui/GuiControlPropertyAdapter.d.ts +6 -6
- package/src/management/gui/MgControlBase.d.ts +2 -4
- package/src/management/gui/MgFormBase.d.ts +1 -1
- package/src/management/gui/PropTable.d.ts +1 -1
- package/src/management/gui/Property.d.ts +2 -2
- package/src/management/tasks/GuiTaskBase.d.ts +3 -3
- package/src/util/ProcessLauncher.d.ts +1 -3
- package/bundles/magic-xpa-gui.umd.js +0 -19431
- package/bundles/magic-xpa-gui.umd.js.map +0 -1
- package/bundles/magic-xpa-gui.umd.min.js +0 -16
- package/bundles/magic-xpa-gui.umd.min.js.map +0 -1
- package/esm2015/src/Commands.js +0 -189
- package/esm2015/src/Events.js +0 -420
- package/esm2015/src/EventsProcessor.js +0 -68
- package/esm2015/src/FocusManager.js +0 -41
- package/esm2015/src/Manager.js +0 -197
- package/esm2015/src/gui/low/GuiInteractive.js +0 -545
- package/esm2015/src/management/data/DcValues.js +0 -214
- package/esm2015/src/management/data/DcValuesBuilderBase.js +0 -97
- package/esm2015/src/management/data/GuiDataViewBase.js +0 -90
- package/esm2015/src/management/data/GuiFieldBase.js +0 -85
- package/esm2015/src/management/data/ObjectReferenceBase.js +0 -48
- package/esm2015/src/management/data/RecordUtils.js +0 -447
- package/esm2015/src/management/events/IGuiEventsManager.js +0 -1
- package/esm2015/src/management/exp/GuiExpressionEvaluator.js +0 -333
- package/esm2015/src/management/gui/DisplayConvertor.js +0 -1706
- package/esm2015/src/management/gui/FieldValidator.js +0 -1507
- package/esm2015/src/management/gui/GuiControlPropertyAdapter.js +0 -4
- package/esm2015/src/management/gui/MgControlBase.js +0 -1981
- package/esm2015/src/management/gui/MgFormBase.js +0 -763
- package/esm2015/src/management/gui/PropDefaults.js +0 -230
- package/esm2015/src/management/gui/PropTable.js +0 -224
- package/esm2015/src/management/gui/Property.js +0 -1402
- package/esm2015/src/management/tasks/GuiTaskBase.js +0 -506
- package/esm2015/src/management/tasks/MgTimer.js +0 -21
- package/esm2015/src/management/tasks/TaskDefinitionIdTableSaxHandler.js +0 -41
- package/esm2015/src/util/ProcessLauncher.js +0 -32
- package/esm2015/src/util/UsernamePasswordCredentials.js +0 -52
- package/fesm2015/magic-xpa-gui.js.map +0 -1
|
@@ -1,214 +0,0 @@
|
|
|
1
|
-
import { GuiConstants } from "../../GuiConstants";
|
|
2
|
-
import { StorageAttribute, StrUtil } from "@magic-xpa/utils";
|
|
3
|
-
import { NUM_TYPE } from "./NUM_TYPE";
|
|
4
|
-
import { ApplicationException, NString } from "@magic-xpa/mscorelib";
|
|
5
|
-
import { VectorType } from "./VectorType";
|
|
6
|
-
export const EMPTY_DCREF = -2;
|
|
7
|
-
export const NOT_FOUND = GuiConstants.DEFAULT_VALUE_INT;
|
|
8
|
-
export class DcValues {
|
|
9
|
-
constructor(empty, isVector) {
|
|
10
|
-
this._id = 0;
|
|
11
|
-
this._type = StorageAttribute.NONE;
|
|
12
|
-
this._refCount = 0;
|
|
13
|
-
this._nullFlags = null;
|
|
14
|
-
this._isNumericType = false;
|
|
15
|
-
this._numVals = null;
|
|
16
|
-
this._linkVals = null;
|
|
17
|
-
this._dispVals = null;
|
|
18
|
-
if (empty) {
|
|
19
|
-
this._id = EMPTY_DCREF;
|
|
20
|
-
}
|
|
21
|
-
this._isNumericType = false;
|
|
22
|
-
}
|
|
23
|
-
get HasReferences() {
|
|
24
|
-
return this._refCount > 0;
|
|
25
|
-
}
|
|
26
|
-
GetAttr() {
|
|
27
|
-
return this._type;
|
|
28
|
-
}
|
|
29
|
-
setType(type) {
|
|
30
|
-
this._type = type;
|
|
31
|
-
if (this._type === StorageAttribute.MEMO)
|
|
32
|
-
this._type = StorageAttribute.ALPHA;
|
|
33
|
-
if (this._type === StorageAttribute.NUMERIC || this._type === StorageAttribute.DATE ||
|
|
34
|
-
this._type === StorageAttribute.TIME) {
|
|
35
|
-
this._isNumericType = true;
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
SetID(newId) {
|
|
39
|
-
this._id = newId;
|
|
40
|
-
}
|
|
41
|
-
SetDisplayValues(displayValues) {
|
|
42
|
-
if (displayValues !== null)
|
|
43
|
-
this._dispVals = displayValues.slice();
|
|
44
|
-
else
|
|
45
|
-
this._dispVals = null;
|
|
46
|
-
}
|
|
47
|
-
SetLinkValues(linkValues) {
|
|
48
|
-
if (linkValues !== null)
|
|
49
|
-
this._linkVals = linkValues.slice();
|
|
50
|
-
else
|
|
51
|
-
this._linkVals = null;
|
|
52
|
-
this.setNumericVals();
|
|
53
|
-
}
|
|
54
|
-
setNullFlags(nullFlags) {
|
|
55
|
-
if (nullFlags !== null)
|
|
56
|
-
this._nullFlags = nullFlags.slice();
|
|
57
|
-
else
|
|
58
|
-
this._nullFlags = null;
|
|
59
|
-
}
|
|
60
|
-
setNumericVals() {
|
|
61
|
-
if (this._isNumericType && this._linkVals !== null) {
|
|
62
|
-
this._numVals = new Array(this._linkVals.length);
|
|
63
|
-
for (let i = 0; i < this._linkVals.length; i = i + 1) {
|
|
64
|
-
this._numVals[i] = new NUM_TYPE(this._linkVals[i]);
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
else {
|
|
68
|
-
this._numVals = null;
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
getId() {
|
|
72
|
-
return this._id;
|
|
73
|
-
}
|
|
74
|
-
getDispVals() {
|
|
75
|
-
return this._dispVals;
|
|
76
|
-
}
|
|
77
|
-
GetLinkVals() {
|
|
78
|
-
return this._linkVals;
|
|
79
|
-
}
|
|
80
|
-
getIndexOf(mgVal, isVectorValue, isNull, extraVals, extraNums, splitCommaSeperatedVals) {
|
|
81
|
-
let result = NOT_FOUND;
|
|
82
|
-
let tmpMgVal;
|
|
83
|
-
let ctrlNumVal;
|
|
84
|
-
let trimmedVal;
|
|
85
|
-
let vals = null;
|
|
86
|
-
let nums = null;
|
|
87
|
-
let offset = 0;
|
|
88
|
-
let firstFitMatchIdx;
|
|
89
|
-
let firstFitMatchLength = -1;
|
|
90
|
-
let minLength = -1;
|
|
91
|
-
let compStr = "";
|
|
92
|
-
let indice = null;
|
|
93
|
-
let values = null;
|
|
94
|
-
if (isNull) {
|
|
95
|
-
let i = 0;
|
|
96
|
-
indice = [
|
|
97
|
-
NOT_FOUND
|
|
98
|
-
];
|
|
99
|
-
for (i = 0; this._nullFlags !== null && i < this._nullFlags.length; i++) {
|
|
100
|
-
if (this._nullFlags[i]) {
|
|
101
|
-
indice[0] = i;
|
|
102
|
-
break;
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
return indice;
|
|
106
|
-
}
|
|
107
|
-
if (!isVectorValue) {
|
|
108
|
-
if (splitCommaSeperatedVals) {
|
|
109
|
-
values = mgVal.split(',');
|
|
110
|
-
}
|
|
111
|
-
else {
|
|
112
|
-
values = [
|
|
113
|
-
mgVal
|
|
114
|
-
];
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
else {
|
|
118
|
-
let vectorType = new VectorType(mgVal);
|
|
119
|
-
values = vectorType.GetCellValues();
|
|
120
|
-
}
|
|
121
|
-
indice = new Array(values.length);
|
|
122
|
-
for (let iCtr = 0; iCtr < values.length; iCtr = iCtr + 1) {
|
|
123
|
-
result = NOT_FOUND;
|
|
124
|
-
firstFitMatchIdx = NOT_FOUND;
|
|
125
|
-
tmpMgVal = values[iCtr];
|
|
126
|
-
if (this._isNumericType || extraNums !== null) {
|
|
127
|
-
ctrlNumVal = new NUM_TYPE(tmpMgVal);
|
|
128
|
-
trimmedVal = tmpMgVal;
|
|
129
|
-
}
|
|
130
|
-
else {
|
|
131
|
-
ctrlNumVal = null;
|
|
132
|
-
trimmedVal = StrUtil.rtrim(tmpMgVal);
|
|
133
|
-
}
|
|
134
|
-
for (let i = 0; i < 2 && result === NOT_FOUND; i++) {
|
|
135
|
-
switch (i) {
|
|
136
|
-
case 0:
|
|
137
|
-
vals = extraVals;
|
|
138
|
-
nums = extraNums;
|
|
139
|
-
offset = 0;
|
|
140
|
-
break;
|
|
141
|
-
case 1:
|
|
142
|
-
default:
|
|
143
|
-
if (this._isNumericType || nums != null)
|
|
144
|
-
offset = (nums == null ? 0 : nums.length);
|
|
145
|
-
else
|
|
146
|
-
offset = (vals == null ? 0 : vals.length);
|
|
147
|
-
vals = this._linkVals;
|
|
148
|
-
nums = this._numVals;
|
|
149
|
-
break;
|
|
150
|
-
}
|
|
151
|
-
if (vals != null) {
|
|
152
|
-
for (let j = 0; j < vals.length && result === NOT_FOUND; j++) {
|
|
153
|
-
if (this._isNumericType || nums != null) {
|
|
154
|
-
if (NUM_TYPE.num_cmp(ctrlNumVal, nums[j]) === 0 || tmpMgVal === vals[j] ||
|
|
155
|
-
tmpMgVal === vals[j]) {
|
|
156
|
-
result = j + offset;
|
|
157
|
-
break;
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
else {
|
|
161
|
-
if (vals[j] === tmpMgVal || trimmedVal.length > 0 && StrUtil.rtrim(vals[j]) === trimmedVal) {
|
|
162
|
-
result = j + offset;
|
|
163
|
-
break;
|
|
164
|
-
}
|
|
165
|
-
if (trimmedVal.length === 0 && StrUtil.rtrim(vals[j]).length === 0) {
|
|
166
|
-
result = j + offset;
|
|
167
|
-
break;
|
|
168
|
-
}
|
|
169
|
-
if (result === NOT_FOUND && trimmedVal.length > 0) {
|
|
170
|
-
minLength = Math.min(trimmedVal.length, vals[j].length);
|
|
171
|
-
compStr = trimmedVal.substr(0, minLength);
|
|
172
|
-
if (compStr.length > 0 && vals[j].startsWith(compStr)) {
|
|
173
|
-
if (minLength > firstFitMatchLength) {
|
|
174
|
-
firstFitMatchIdx = j + offset;
|
|
175
|
-
firstFitMatchLength = minLength;
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
if (result === NOT_FOUND)
|
|
184
|
-
result = firstFitMatchIdx;
|
|
185
|
-
indice[iCtr] = result;
|
|
186
|
-
}
|
|
187
|
-
return indice;
|
|
188
|
-
}
|
|
189
|
-
getLinkValue(idx) {
|
|
190
|
-
let lnkVal = null;
|
|
191
|
-
if (this._linkVals !== null) {
|
|
192
|
-
lnkVal = this._linkVals[idx];
|
|
193
|
-
}
|
|
194
|
-
return lnkVal;
|
|
195
|
-
}
|
|
196
|
-
isNull(idx) {
|
|
197
|
-
if (this._nullFlags == null)
|
|
198
|
-
return false;
|
|
199
|
-
return this._nullFlags[idx];
|
|
200
|
-
}
|
|
201
|
-
AddReference() {
|
|
202
|
-
this._refCount++;
|
|
203
|
-
}
|
|
204
|
-
RemoveReference() {
|
|
205
|
-
this._refCount--;
|
|
206
|
-
if (this._refCount < 0) {
|
|
207
|
-
throw new ApplicationException("in dcVals.decrease() references count is less than zero");
|
|
208
|
-
}
|
|
209
|
-
}
|
|
210
|
-
ToString() {
|
|
211
|
-
return NString.Format("{{DCValues 0x{0:X8}, {1} refs}}", this._id, this._refCount);
|
|
212
|
-
}
|
|
213
|
-
}
|
|
214
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGNWYWx1ZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ndWkvc3JjL21hbmFnZW1lbnQvZGF0YS9EY1ZhbHVlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFDaEQsT0FBTyxFQUFDLGdCQUFnQixFQUFFLE9BQU8sRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQzNELE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxZQUFZLENBQUM7QUFDcEMsT0FBTyxFQUFDLG9CQUFvQixFQUFFLE9BQU8sRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ25FLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFHeEMsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFXLENBQUMsQ0FBQyxDQUFDO0FBQ3RDLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBVyxZQUFZLENBQUMsaUJBQWlCLENBQUM7QUFHaEUsTUFBTSxPQUFPLFFBQVE7SUFxQm5CLFlBQVksS0FBYyxFQUFFLFFBQWlCO1FBbEJyQyxRQUFHLEdBQVcsQ0FBQyxDQUFDO1FBQ2hCLFVBQUssR0FBcUIsZ0JBQWdCLENBQUMsSUFBSSxDQUFDO1FBQ2hELGNBQVMsR0FBVyxDQUFDLENBQUM7UUFDdEIsZUFBVSxHQUFjLElBQUksQ0FBQztRQUM3QixtQkFBYyxHQUFZLEtBQUssQ0FBQztRQUNoQyxhQUFRLEdBQWUsSUFBSSxDQUFDO1FBQzVCLGNBQVMsR0FBYSxJQUFJLENBQUM7UUFDM0IsY0FBUyxHQUFhLElBQUksQ0FBQztRQVlqQyxJQUFJLEtBQUssRUFBRTtZQUNULElBQUksQ0FBQyxHQUFHLEdBQUcsV0FBVyxDQUFDO1NBQ3hCO1FBQ0QsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7SUFDOUIsQ0FBQztJQWRELElBQUksYUFBYTtRQUNmLE9BQU8sSUFBSSxDQUFD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QUksSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLEVBQUU7WUFDdEIsTUFBTSxJQUFJLG9CQUFvQixDQUFDLHlEQUF5RCxDQUFDLENBQUM7U0FDM0Y7SUFDSCxDQUFDO0lBS0QsUUFBUTtRQUNOLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxpQ0FBaUMsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNyRixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0lSZWZlcmVuY2VkT2JqZWN0fSBmcm9tIFwiLi9JUmVmZXJlbmNlZE9iamVjdFwiO1xyXG5pbXBvcnQge0d1aUNvbnN0YW50c30gZnJvbSBcIi4uLy4uL0d1aUNvbnN0YW50c1wiO1xyXG5pbXBvcnQge1N0b3JhZ2VBdHRyaWJ1dGUsIFN0clV0aWx9IGZyb20gXCJAbWFnaWMteHBhL3V0aWxzXCI7XHJcbmltcG9ydCB7TlVNX1RZUEV9IGZyb20gXCIuL05VTV9UWVBFXCI7XHJcbmltcG9ydCB7QXBwbGljYXRpb25FeGNlcHRpb24sIE5TdHJpbmd9IGZyb20gXCJAbWFnaWMteHBhL21zY29yZWxpYlwiO1xyXG5pbXBvcnQge1ZlY3RvclR5cGV9IGZyb20gXCIuL1ZlY3RvclR5cGVcIjtcclxuXHJcblxyXG5leHBvcnQgY29uc3QgRU1QVFlfRENSRUY6IG51bWJlciA9IC0yO1xyXG5leHBvcnQgY29uc3QgTk9UX0ZPVU5EOiBudW1iZXIgPSBHdWlDb25zdGFudHMuREVGQVVMVF9WQUxVRV9JTlQ7XHJcblxyXG5cclxuZXhwb3J0IGNsYXNzIERjVmFsdWVzIGltcGxlbWVudHMgSVJlZmVyZW5jZWRPYmplY3Qge1xyXG5cclxuXHJcbiAgcHJpdmF0ZSBfaWQ6IG51bWJlciA9IDA7XHJcbiAgcHJpdmF0ZSBfdHlwZTogU3RvcmFnZUF0dHJpYnV0ZSA9IFN0b3JhZ2VBdHRyaWJ1dGUuTk9ORTsgLy8gQWxwaGEgfCBOdW1lcmljIHwgRGF0ZSB8IFRpbWUgfCBMb2dpY2FsXHJcbiAgcHJpdmF0ZSBfcmVmQ291bnQ6IG51bWJlciA9IDA7IC8vIHJlZmVyZW5jZXMgY291bnRlclxyXG4gIHByaXZhdGUgX251bGxGbGFnczogYm9vbGVhbltdID0gbnVsbDsgLy8gbGlua2VkIG51bGwgdmFsdWUgZmxhZ3NcclxuICBwcml2YXRlIF9pc051bWVyaWNUeXBlOiBib29sZWFuID0gZmFsc2U7IC8vIHRydWUgaWYgdGhlIHR5cGUgaXMgb25lIG9mOiBudW1lcmljLCBkYXRlLCB0aW1lXHJcbiAgcHJpdmF0ZSBfbnVtVmFsczogTlVNX1RZUEVbXSA9IG51bGw7IC8vIG51bWVyaWMgbGlua2VkIHZhbHVlc1xyXG4gIHByaXZhdGUgX2xpbmtWYWxzOiBzdHJpbmdbXSA9IG51bGw7IC8vIGxpbmtlZCB2YWx1ZXNcclxuICBwcml2YXRlIF9kaXNwVmFsczogc3RyaW5nW10gPSBudWxsOyAvLyBkaXNwbGF5IHZhbHVlc1xyXG5cclxuICBnZXQgSGFzUmVmZXJlbmNlcygpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9yZWZDb3VudCA+IDA7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJlbXB0eVwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiaXNWZWN0b3JcIj48L3BhcmFtPlxyXG4gIGNvbnN0cnVjdG9yKGVtcHR5OiBib29sZWFuLCBpc1ZlY3RvcjogYm9vbGVhbikge1xyXG4gICAgaWYgKGVtcHR5KSB7XHJcbiAgICAgIHRoaXMuX2lkID0gRU1QVFlfRENSRUY7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9pc051bWVyaWNUeXBlID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIFJldHVybnMgdGhlIGF0dHIgb2YgRGNWYWx1ZXNcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIEdldEF0dHIoKTogU3RvcmFnZUF0dHJpYnV0ZSB7XHJcbiAgICByZXR1cm4gdGhpcy5fdHlwZTtcclxuICB9XHJcblxyXG4gIHNldFR5cGUodHlwZTogU3RvcmFnZUF0dHJpYnV0ZSk6IHZvaWQge1xyXG4gICAgdGhpcy5fdHlwZSA9IHR5cGU7XHJcbiAgICBpZiAodGhpcy5fdHlwZSA9PT0gU3RvcmFnZUF0dHJpYnV0ZS5NRU1PKVxyXG4gICAgICB0aGlzLl90eXBlID0gU3RvcmFnZUF0dHJpYnV0ZS5BTFBIQTtcclxuICAgIGlmICh0aGlzLl90eXBlID09PSBTdG9yYWdlQXR0cmlidXRlLk5VTUVSSUMgfHwgdGhpcy5fdHlwZSA9PT0gU3RvcmFnZUF0dHJpYnV0ZS5EQVRFIHx8XHJcbiAgICAgIHRoaXMuX3R5cGUgPT09IFN0b3JhZ2VBdHRyaWJ1dGUuVElNRSkge1xyXG4gICAgICB0aGlzLl9pc051bWVyaWNUeXBlID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIFNldElEKG5ld0lkOiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuX2lkID0gbmV3SWQ7XHJcbiAgfVxyXG5cclxuICBTZXREaXNwbGF5VmFsdWVzKGRpc3BsYXlWYWx1ZXM6IHN0cmluZ1tdKTogdm9pZCB7XHJcbiAgICBpZiAoZGlzcGxheVZhbHVlcyAhPT0gbnVsbClcclxuICAgICAgdGhpcy5fZGlzcFZhbHMgPSBkaXNwbGF5VmFsdWVzLnNsaWNlKCk7XHJcbiAgICBlbHNlXHJcbiAgICAgIHRoaXMuX2Rpc3BWYWxzID0gbnVsbDtcclxuICB9XHJcblxyXG4gIFNldExpbmtWYWx1ZXMobGlua1ZhbHVlczogc3RyaW5nW10pOiB2b2lkIHtcclxuICAgIGlmIChsaW5rVmFsdWVzICE9PSBudWxsKVxyXG4gICAgICB0aGlzLl9saW5rVmFscyA9IGxpbmtWYWx1ZXMuc2xpY2UoKTtcclxuICAgIGVsc2VcclxuICAgICAgdGhpcy5fbGlua1ZhbHMgPSBudWxsO1xyXG5cclxuICAgIHRoaXMuc2V0TnVtZXJpY1ZhbHMoKTtcclxuICB9XHJcblxyXG4gIHNldE51bGxGbGFncyhudWxsRmxhZ3M6IGJvb2xlYW5bXSk6IHZvaWQge1xyXG4gICAgaWYgKG51bGxGbGFncyAhPT0gbnVsbClcclxuICAgICAgdGhpcy5fbnVsbEZsYWdzID0gbnVsbEZsYWdzLnNsaWNlKCk7XHJcblxyXG4gICAgZWxzZVxyXG4gICAgICB0aGlzLl9udWxsRmxhZ3MgPSBudWxsO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXROdW1lcmljVmFscygpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLl9pc051bWVyaWNUeXBlICYmIHRoaXMuX2xpbmtWYWxzICE9PSBudWxsKSB7XHJcbiAgICAgIHRoaXMuX251bVZhbHMgPSBuZXcgQXJyYXk8TlVNX1RZUEU+KHRoaXMuX2xpbmtWYWxzLmxlbmd0aCk7XHJcbiAgICAgIGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCB0aGlzLl9saW5rVmFscy5sZW5ndGg7IGkgPSBpICsgMSkge1xyXG4gICAgICAgIHRoaXMuX251bVZhbHNbaV0gPSBuZXcgTlVNX1RZUEUodGhpcy5fbGlua1ZhbHNbaV0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5fbnVtVmFscyA9IG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJucyB0aGUgaWQgb2YgdGhpcyBkY1ZhbHMgb2JqZWN0XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBnZXRJZCgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX2lkO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybiB0aGUgZGlzcGxheSB2YWx1ZXNcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGdldERpc3BWYWxzKCk6IHN0cmluZ1tdIHtcclxuICAgIHJldHVybiB0aGlzLl9kaXNwVmFscztcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gcmV0dXJuIExpbmsgZmllbGQgdmFsdWVzLlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgR2V0TGlua1ZhbHMoKTogc3RyaW5nW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2xpbmtWYWxzO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybnMgdGhlIGFycmF5IG9mIGluZGljZSBmb3IgYW4gaXRlbSBpbiB0aGUgbGlzdCBieSBjb21wYXJpbmcgdGhlIG1nVmFsIHRvIHRoZSBsaW5rZWQgdmFsdWUgb3IgKC0xKSBpZiBub25lIHdhc1xyXG4gIC8vLyAgIGZvdW5kXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcIm1nVmFsXCI+dGhlIGludGVybmFsIHZhbHVlIHRvIGxvb2sgZm9yIDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJpc1ZlY3RvclZhbHVlXCI+RGVub3RlcyB3aGV0aGVyIHRoZSB2YWx1ZSBpbiBtZ1ZhbCBzaG91bGQgYmUgdHJlYXRlZCBhcyBhIHZlY3RvciAodHJ1ZSkgb3Igbm90IChmYWxzZSkuPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImlzTnVsbFwiPnRydWUgaWYgdGhlIHZhbHVlIHRvIGxvb2sgZm9yIGlzIG51bGwgPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImV4dHJhVmFsc1wiPkFkZGl0aW9uYWwgdmFsdWVzLCBwcmVwZW5kZWQgdG8gdGhlIHNlYXJjaGVkIHZhbHVlcy48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImV4dHJhTnVtc1wiPkFkZGl0aW9uYWwgbnVtZXJpYyB2YWx1ZXMgdG8gYmUgcHJlcGVuZGVkIHRvIHRoZSBzZWFyY2hlZCB2YWx1ZXMuPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInNwbGl0Q29tbWFTZXBlcmF0ZWRWYWxzXCI+dG8gc3BsaXQgdGhlIHZhbCBvbiBjb21tYSBvciBub3QgPC9wYXJhbT5cclxuICBnZXRJbmRleE9mKG1nVmFsOiBzdHJpbmcsIGlzVmVjdG9yVmFsdWU6IGJvb2xlYW4sIGlzTnVsbDogYm9vbGVhbiwgZXh0cmFWYWxzOiBzdHJpbmdbXSwgZXh0cmFOdW1zOiBOVU1fVFlQRVtdLCBzcGxpdENvbW1hU2VwZXJhdGVkVmFsczogYm9vbGVhbik6IG51bWJlcltdIHtcclxuICAgIGxldCByZXN1bHQ6IG51bWJlciA9IE5PVF9GT1VORDtcclxuXHJcbiAgICBsZXQgdG1wTWdWYWw6IHN0cmluZztcclxuICAgIGxldCBjdHJsTnVtVmFsOiBOVU1fVFlQRTtcclxuICAgIGxldCB0cmltbWVkVmFsOiBzdHJpbmc7XHJcbiAgICBsZXQgdmFsczogc3RyaW5nW10gPSBudWxsO1xyXG4gICAgbGV0IG51bXM6IE5VTV9UWVBFW10gPSBudWxsO1xyXG4gICAgbGV0IG9mZnNldDogbnVtYmVyID0gMDtcclxuICAgIGxldCBmaXJzdEZpdE1hdGNoSWR4O1xyXG4gICAgbGV0IGZpcnN0Rml0TWF0Y2hMZW5ndGg6IG51bWJlciA9IC0xO1xyXG4gICAgbGV0IG1pbkxlbmd0aDogbnVtYmVyID0gLTE7XHJcbiAgICBsZXQgY29tcFN0cjogc3RyaW5nID0gXCJcIjtcclxuICAgIGxldCBpbmRpY2U6IG51bWJlcltdID0gbnVsbDtcclxuICAgIGxldCB2YWx1ZXM6IHN0cmluZ1tdID0gbnVsbDtcclxuXHJcbiAgICBpZiAoaXNOdWxsKSB7XHJcbiAgICAgIGxldCBpOiBudW1iZXIgPSAwO1xyXG4gICAgICBpbmRpY2UgPSBbXHJcbiAgICAgICAgTk9UX0ZPVU5EXHJcbiAgICAgIF07XHJcbiAgICAgIGZvciAoaSA9IDA7IHRoaXMuX251bGxGbGFncyAhPT0gbnVsbCAmJiBpIDwgdGhpcy5fbnVsbEZsYWdzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX251bGxGbGFnc1tpXSkge1xyXG4gICAgICAgICAgaW5kaWNlWzBdID0gaTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIGluZGljZTtcclxuICAgIH1cclxuICAgIGlmICghaXNWZWN0b3JWYWx1ZSkge1xyXG4gICAgICAvLyBzcGxpdCB0aGUgY29tbWEgc2VwYXJhdGVkIHZhbHVlcztcclxuICAgICAgaWYgKHNwbGl0Q29tbWFTZXBlcmF0ZWRWYWxzKSB7XHJcbiAgICAgICAgdmFsdWVzID0gbWdWYWwuc3BsaXQoJywnKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB2YWx1ZXMgPSBbXHJcbiAgICAgICAgICBtZ1ZhbFxyXG4gICAgICAgIF07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBsZXQgdmVjdG9yVHlwZTogVmVjdG9yVHlwZSA9IG5ldyBWZWN0b3JUeXBlKG1nVmFsKTtcclxuICAgICAgdmFsdWVzID0gdmVjdG9yVHlwZS5HZXRDZWxsVmFsdWVzKCk7XHJcbiAgICB9XHJcbiAgICBpbmRpY2UgPSBuZXcgQXJyYXk8bnVtYmVyPih2YWx1ZXMubGVuZ3RoKTtcclxuXHJcbiAgICBmb3IgKGxldCBpQ3RyOiBudW1iZXIgPSAwOyBpQ3RyIDwgdmFsdWVzLmxlbmd0aDsgaUN0ciA9IGlDdHIgKyAxKSB7XHJcbiAgICAgIHJlc3VsdCA9IE5PVF9GT1VORDtcclxuICAgICAgZmlyc3RGaXRNYXRjaElkeCA9IE5PVF9GT1VORDtcclxuXHJcbiAgICAgIHRtcE1nVmFsID0gdmFsdWVzW2lDdHJdO1xyXG5cclxuICAgICAgaWYgKHRoaXMuX2lzTnVtZXJpY1R5cGUgfHwgZXh0cmFOdW1zICE9PSBudWxsKSB7XHJcbiAgICAgICAgICBjdHJsTnVtVmFsID0gbmV3IE5VTV9UWVBFKHRtcE1nVmFsKTtcclxuICAgICAgICB0cmltbWVkVmFsID0gdG1wTWdWYWw7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgY3RybE51bVZhbCA9IG51bGw7XHJcbiAgICAgICAgdHJpbW1lZFZhbCA9IFN0clV0aWwucnRyaW0odG1wTWdWYWwpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBSdW4gdHdvIHBhc3Nlcy4gRmlyc3Qgb25lIG9uIGV4dHJhIHZhbHVlcywgc2Vjb25kIG9uZSBvbiB2YWx1ZXMgYmVsb25naW5nIHRvIHRoaXMgb2JqZWN0XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMiAmJiByZXN1bHQgPT09IE5PVF9GT1VORDsgaSsrKSB7XHJcbiAgICAgICAgc3dpdGNoIChpKSB7XHJcbiAgICAgICAgICBjYXNlIDA6XHJcbiAgICAgICAgICAgIHZhbHMgPSBleHRyYVZhbHM7XHJcbiAgICAgICAgICAgIG51bXMgPSBleHRyYU51bXM7XHJcbiAgICAgICAgICAgIG9mZnNldCA9IDA7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgIGNhc2UgMTpcclxuICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgIGlmICh0aGlzLl9pc051bWVyaWNUeXBlIHx8IG51bXMgIT0gbnVsbClcclxuICAgICAgICAgICAgICBvZmZzZXQgPSAobnVtcyA9PSBudWxsID8gMCA6IG51bXMubGVuZ3RoKTtcclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgIG9mZnNldCA9ICh2YWxzID09IG51bGwgPyAwIDogdmFscy5sZW5ndGgpO1xyXG4gICAgICAgICAgICB2YWxzID0gdGhpcy5fbGlua1ZhbHM7XHJcbiAgICAgICAgICAgIG51bXMgPSB0aGlzLl9udW1WYWxzO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh2YWxzICE9IG51bGwpIHtcclxuICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdmFscy5sZW5ndGggJiYgcmVzdWx0ID09PSBOT1RfRk9VTkQ7IGorKykge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5faXNOdW1lcmljVHlwZSB8fCBudW1zICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICBpZiAoTlVNX1RZUEUubnVtX2NtcChjdHJsTnVtVmFsLCBudW1zW2pdKSA9PT0gMCB8fCB0bXBNZ1ZhbCA9PT0gdmFsc1tqXSB8fFxyXG4gICAgICAgICAgICAgICAgdG1wTWdWYWwgPT09IHZhbHNbal0pIHtcclxuICAgICAgICAgICAgICAgIC8vIHRoZSBudW1lcmljIHR5cGUgaXMgZm91bmQgZXhhY3RseVxyXG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gaiArIG9mZnNldDtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICBpZiAodmFsc1tqXSA9PT0gdG1wTWdWYWwgfHwgdHJpbW1lZFZhbC5sZW5ndGggPiAwICYmIFN0clV0aWwucnRyaW0odmFsc1tqXSkgPT09IHRyaW1tZWRWYWwpIHtcclxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGogKyBvZmZzZXQ7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgIC8vIElmIE1hZ2ljIHNlbnQgdXMgYSBibGFuayB2YWx1ZSwgYW5kIHN1Y2ggYSB2YWx1ZSBleGlzdHMgaW4gdGhlIFwibm9uIERDIHJhbmdlXCIgc2VsZWN0IGl0LlxyXG4gICAgICAgICAgICAgIC8vIFFDUiAjIDc1MTAzNyAtIHNlYXJjaCBmb3IgYmxhbmsgdmFsdWVzIGV2ZW4gaW4gdGhlIGxpbmtlZCB2YWx1ZXMgYXJyYXkgb2YgdGhlIGRhdGEgY29udHJvbFxyXG4gICAgICAgICAgICAgIGlmICh0cmltbWVkVmFsLmxlbmd0aCA9PT0gMCAmJiBTdHJVdGlsLnJ0cmltKHZhbHNbal0pLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gaiArIG9mZnNldDtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgLy8gc2F2ZSB0aGUgZmlyc3QgZml0dGluZyByZXN1bHRcclxuICAgICAgICAgICAgICAvLyBmaXhlZCBidWcjOiA5MzUwMTUsIHRoZSBjb21wYXJpc29uIHdpbGwgYmUgYWNjb3JkaW5nIHRvIHRoZSBtaW4gbGVuZ3RoIG9mIHRoZSBkYXRhICYgdGhlIG9wdGlvbnNcclxuICAgICAgICAgICAgICBpZiAocmVzdWx0ID09PSBOT1RfRk9VTkQgJiYgdHJpbW1lZFZhbC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICBtaW5MZW5ndGggPSBNYXRoLm1pbih0cmltbWVkVmFsLmxlbmd0aCwgdmFsc1tqXS5sZW5ndGgpO1xyXG4gICAgICAgICAgICAgICAgY29tcFN0ciA9IHRyaW1tZWRWYWwuc3Vic3RyKDAsIG1pbkxlbmd0aCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoY29tcFN0ci5sZW5ndGggPiAwICYmIHZhbHNbal0uc3RhcnRzV2l0aChjb21wU3RyKSkge1xyXG4gICAgICAgICAgICAgICAgICAvLyBpZiB0aGVyZSBpcyBhIG1pbiBsZW5ndGggbWF0Y2gsIGNoZWNrIGlmIGl0IGlzIHRoZSBmaXJzdCBmaXQgbWF0Y2guXHJcbiAgICAgICAgICAgICAgICAgIC8vIGVnOiBpZiBsaXN0IGhhcyBhLGFhYSxhYWFhYSBhbmQgZmllbGQgdmFsdWUgaXMgJ2FhJyB0aGVuIGZpcnN0IGZpdCBtYXRjaCBpcyAnYWFhJy5cclxuICAgICAgICAgICAgICAgICAgLy8gaWYgbGlzdCBpcyBhLGFhYWFhLGFhYSBhbmQgZmllbGQgdmFsdWUgaXMgJ2FhJyB0aGVuIGZpcnN0IGZpdCBtYXRjaCBpcyAnYWFhYWEnLlxyXG4gICAgICAgICAgICAgICAgICAvLyBpZiBmaXJzdCBmaXQgbm90IGZvdW5kLCB0aGVuIGNsb3Nlc3QgbWF0Y2ggaXMgdXNlZCAoZWctIGlmIGZpZWxkIHZhbHVlIGlzXHJcbiAgICAgICAgICAgICAgICAgIC8vICdhYWFhYWFhYWEnIGluIGJvdGggdGhlIGFib3ZlIGxpc3QsIGNsb3Nlc3QgbWF0Y2ggd291bGQgYmUgJ2FhYWFhJykuXHJcbiAgICAgICAgICAgICAgICAgIGlmIChtaW5MZW5ndGggPiBmaXJzdEZpdE1hdGNoTGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZmlyc3RGaXRNYXRjaElkeCA9IGogKyBvZmZzZXQ7XHJcbiAgICAgICAgICAgICAgICAgICAgZmlyc3RGaXRNYXRjaExlbmd0aCA9IG1pbkxlbmd0aDtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHJlc3VsdCA9PT0gTk9UX0ZPVU5EKVxyXG4gICAgICAgIHJlc3VsdCA9IGZpcnN0Rml0TWF0Y2hJZHg7XHJcblxyXG4gICAgICAvLyBzdG9yZSBpbmRpY2UgZm91bmQgaW4gaW50ZWdlciBhcnJheS5cclxuICAgICAgaW5kaWNlW2lDdHJdID0gcmVzdWx0O1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBpbmRpY2U7XHJcbiAgfVxyXG5cclxuLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGdldHMgdGhlIHZhbHVlIG9mIGEgc3BlY2lmaWMgbGluayBpdGVtXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImlkeFwiPnRoZSBpbmRleCBvZiB0aGUgbGluayB2YWx1ZSAoMCA9IGZpcnN0IGl0ZW0pIDwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPiBNYWdpYyB2YWx1ZSBvZiB0aGUgaXRlbSA8L3JldHVybnM+XHJcbiAgZ2V0TGlua1ZhbHVlKGlkeDogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGxldCBsbmtWYWw6IHN0cmluZyA9IG51bGw7XHJcblxyXG4gICAgaWYgKHRoaXMuX2xpbmtWYWxzICE9PSBudWxsKSB7XHJcbiAgICAgIGxua1ZhbCA9IHRoaXMuX2xpbmtWYWxzW2lkeF07XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGxua1ZhbDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXR1cm5zIHRydWUsIGlmIHZhbHVlIGF0IGluZGV4IGlkeCBpcyBudWxsXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInRoZVwiPmluZGV4IG9mIGFuIGl0ZW0gaW4gdGhlIGxpc3QgPC9wYXJhbT5cclxuICBpc051bGwoaWR4OiBudW1iZXIpOiBib29sZWFuIHtcclxuICAgIGlmICh0aGlzLl9udWxsRmxhZ3MgPT0gbnVsbClcclxuICAgIC8vIGhhcHBlbnMgZm9yIG5vbi1EQyBjaG9pY2UgY29udHJvbHNcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgIHJldHVybiB0aGlzLl9udWxsRmxhZ3NbaWR4XTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBpbmNyZWFzZSB0aGUgcmVmZXJlbmNlcyBjb3VudCBieSAxXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBBZGRSZWZlcmVuY2UoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9yZWZDb3VudCsrO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGRlY3JlYXNlIHRoZSByZWZlcmVuY2VzIGNvdW50IGJ5IDFcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIFJlbW92ZVJlZmVyZW5jZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX3JlZkNvdW50LS07XHJcbiAgICBpZiAodGhpcy5fcmVmQ291bnQgPCAwKSB7XHJcbiAgICAgIHRocm93IG5ldyBBcHBsaWNhdGlvbkV4Y2VwdGlvbihcImluIGRjVmFscy5kZWNyZWFzZSgpIHJlZmVyZW5jZXMgY291bnQgaXMgbGVzcyB0aGFuIHplcm9cIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJucyB0cnVlIGlmIHRoZSByZWZlcmVuY2VzIGNvdW50IGlzIHplcm9cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIFRvU3RyaW5nKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gTlN0cmluZy5Gb3JtYXQoXCJ7e0RDVmFsdWVzIDB4ezA6WDh9LCB7MX0gcmVmc319XCIsIHRoaXMuX2lkLCB0aGlzLl9yZWZDb3VudCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
import { DcValues } from './DcValues';
|
|
2
|
-
import { List, NNumber, NumberStyles, StringBuilder } from '@magic-xpa/mscorelib';
|
|
3
|
-
import { Base64, StorageAttribute } from '@magic-xpa/utils';
|
|
4
|
-
import { RecordUtils } from './RecordUtils';
|
|
5
|
-
import { GuiEnvironment } from '../../GuiEnvironment';
|
|
6
|
-
export class DcValuesBuilderBase {
|
|
7
|
-
CreateDcValues(isVector) {
|
|
8
|
-
return new DcValues(false, isVector);
|
|
9
|
-
}
|
|
10
|
-
SetId(dcValues, newId) {
|
|
11
|
-
dcValues.SetID(newId);
|
|
12
|
-
}
|
|
13
|
-
SetType(dcValues, type) {
|
|
14
|
-
dcValues.setType(type);
|
|
15
|
-
}
|
|
16
|
-
SetDisplayValues(dcValues, displayValues) {
|
|
17
|
-
dcValues.SetDisplayValues(displayValues);
|
|
18
|
-
}
|
|
19
|
-
SetLinkValues(dcValues, linkValues) {
|
|
20
|
-
dcValues.SetLinkValues(linkValues);
|
|
21
|
-
}
|
|
22
|
-
SetNullFlags(dcValues, nullFlagsStringOrNullFlags) {
|
|
23
|
-
if (arguments.length === 2 && (dcValues === null || dcValues instanceof DcValues) && (nullFlagsStringOrNullFlags === null || nullFlagsStringOrNullFlags.constructor === String)) {
|
|
24
|
-
this.SetNullFlags_0(dcValues, nullFlagsStringOrNullFlags);
|
|
25
|
-
return;
|
|
26
|
-
}
|
|
27
|
-
this.SetNullFlags_1(dcValues, nullFlagsStringOrNullFlags);
|
|
28
|
-
}
|
|
29
|
-
SetNullFlags_0(dcValues, nullFlagsString) {
|
|
30
|
-
let nullFlags = this.ParseNullFlags(nullFlagsString);
|
|
31
|
-
dcValues.setNullFlags(nullFlags);
|
|
32
|
-
}
|
|
33
|
-
SetNullFlags_1(dcValues, nullFlags) {
|
|
34
|
-
dcValues.setNullFlags(nullFlags);
|
|
35
|
-
}
|
|
36
|
-
ParseValues(valueStr, dataType, useHex) {
|
|
37
|
-
let snumber;
|
|
38
|
-
let tmpValue = null;
|
|
39
|
-
let buffer = new List();
|
|
40
|
-
let array;
|
|
41
|
-
let len;
|
|
42
|
-
let nextIdx;
|
|
43
|
-
let endIdx;
|
|
44
|
-
let suffixBuf = null;
|
|
45
|
-
switch (dataType) {
|
|
46
|
-
case StorageAttribute.NUMERIC:
|
|
47
|
-
case StorageAttribute.DATE:
|
|
48
|
-
case StorageAttribute.TIME:
|
|
49
|
-
if (useHex)
|
|
50
|
-
len = GuiEnvironment.Environment.GetSignificantNumSize() * 2;
|
|
51
|
-
else
|
|
52
|
-
len = Math.floor((GuiEnvironment.Environment.GetSignificantNumSize() + 2) / 3) * 4;
|
|
53
|
-
break;
|
|
54
|
-
case StorageAttribute.BOOLEAN:
|
|
55
|
-
len = 1;
|
|
56
|
-
break;
|
|
57
|
-
default:
|
|
58
|
-
len = 0;
|
|
59
|
-
break;
|
|
60
|
-
}
|
|
61
|
-
nextIdx = 0;
|
|
62
|
-
while (nextIdx < valueStr.length) {
|
|
63
|
-
if (dataType === StorageAttribute.ALPHA || dataType === StorageAttribute.UNICODE ||
|
|
64
|
-
dataType === StorageAttribute.BLOB || dataType === StorageAttribute.BLOB_VECTOR) {
|
|
65
|
-
snumber = valueStr.substr(nextIdx, 4);
|
|
66
|
-
len = NNumber.Parse(snumber, NumberStyles.HexNumber);
|
|
67
|
-
nextIdx += 4;
|
|
68
|
-
}
|
|
69
|
-
if (len >= 0x8000) {
|
|
70
|
-
suffixBuf = new StringBuilder();
|
|
71
|
-
len -= 0x8000;
|
|
72
|
-
nextIdx += RecordUtils.getSpannedField(valueStr, len, nextIdx, dataType, suffixBuf, useHex);
|
|
73
|
-
buffer.push(suffixBuf.ToString());
|
|
74
|
-
}
|
|
75
|
-
else {
|
|
76
|
-
endIdx = nextIdx + len;
|
|
77
|
-
if (useHex)
|
|
78
|
-
tmpValue = valueStr.substr(nextIdx, (endIdx) - (nextIdx));
|
|
79
|
-
else
|
|
80
|
-
tmpValue = Base64.decodeToHex(valueStr.substr(nextIdx, (endIdx) - (nextIdx)));
|
|
81
|
-
buffer.push(tmpValue);
|
|
82
|
-
nextIdx = endIdx;
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
return buffer.ToArray();
|
|
86
|
-
}
|
|
87
|
-
ParseNullFlags(nullFlagsString) {
|
|
88
|
-
let array = new Array(nullFlagsString.length);
|
|
89
|
-
for (let i = 0; i < nullFlagsString.length; i = i + 1) {
|
|
90
|
-
array[i] = (nullFlagsString.charAt(i) !== '0');
|
|
91
|
-
}
|
|
92
|
-
return array;
|
|
93
|
-
}
|
|
94
|
-
constructor() {
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGNWYWx1ZXNCdWlsZGVyQmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2d1aS9zcmMvbWFuYWdlbWVudC9kYXRhL0RjVmFsdWVzQnVpbGRlckJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUN0QyxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEYsT0FBTyxFQUFFLE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzVELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBdUJ0RCxNQUFNLE9BQWdCLG1CQUFtQjtJQUl2QyxjQUFjLENBQUMsUUFBaUI7UUFDOUIsT0FBTyxJQUFJLFFBQVEsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELEtBQUssQ0FBQyxRQUFrQixFQUFFLEtBQWE7UUFDckMsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRUQsT0FBTyxDQUFDLFFBQWtCLEVBQUUsSUFBc0I7UUFDaEQsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsUUFBa0IsRUFBRSxhQUF1QjtRQUMxRCxRQUFRLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVELGFBQWEsQ0FBQyxRQUFrQixFQUFFLFVBQW9CO1FBQ3BELFFBQVEsQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUlELFlBQVksQ0FBQyxRQUFrQixFQUFF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QUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO2FBQ25DO2lCQUNJO2dCQUNILE1BQU0sR0FBRyxPQUFPLEdBQUcsR0FBRyxDQUFDO2dCQUN2QixJQUFJLE1BQU07b0JBQ1IsUUFBUSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDOztvQkFFMUQsUUFBUSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFLaEYsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDdEIsT0FBTyxHQUFHLE1BQU0sQ0FBQzthQUNsQjtTQUNGO1FBR0QsT0FBTyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELGNBQWMsQ0FBQyxlQUF1QjtRQUNwQyxJQUFJLEtBQUssR0FBYyxJQUFJLEtBQUssQ0FBVSxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbEUsS0FBSyxJQUFJLENBQUMsR0FBVyxDQUFDLEVBQUUsQ0FBQyxHQUFHLGVBQWUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDN0QsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQVEsQ0FBQztTQUN2RDtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVEO0lBQ0EsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGNWYWx1ZXMgfSBmcm9tICcuL0RjVmFsdWVzJztcclxuaW1wb3J0IHsgTGlzdCwgTk51bWJlciwgTnVtYmVyU3R5bGVzLCBTdHJpbmdCdWlsZGVyIH0gZnJvbSAnQG1hZ2ljLXhwYS9tc2NvcmVsaWInO1xyXG5pbXBvcnQgeyBCYXNlNjQsIFN0b3JhZ2VBdHRyaWJ1dGUgfSBmcm9tICdAbWFnaWMteHBhL3V0aWxzJztcclxuaW1wb3J0IHsgUmVjb3JkVXRpbHMgfSBmcm9tICcuL1JlY29yZFV0aWxzJztcclxuaW1wb3J0IHsgR3VpRW52aXJvbm1lbnQgfSBmcm9tICcuLi8uLi9HdWlFbnZpcm9ubWVudCc7XHJcblxyXG4vLy8gPHN1bW1hcnk+XHJcbi8vLyBCYXNlIGNsYXNzIGZvciBEY1ZhbHVlcyBidWlsZGVyLiBUaGUgY2xhc3MgaXMgYWJzdHJhY3QgYW5kLCB0aHVzLCBtdXN0IGJlIGluaGVyaXRlZC5cclxuLy8vIFRoZSBpbmhlcml0aW5nIGNsYXNzLCB3aGljaCB3aWxsIHVzdWFsbHkgYmUgaW4gYW5vdGhlciBwYWNrYWdlLCB3aWxsIG5vdCBiZSBhYmxlIHRvIG1vZGlmeVxyXG4vLy8gYSBEY1ZhbHVlcyBvYmplY3QgZGlyZWN0bHksIHNpbmNlIGFsbCBpdHMgc2V0dGVyIG1ldGhvZHMgYXJlICdpbnRlcm5hbCcuIFRoaXMgY2xhc3Mgd2lsbFxyXG4vLy8gcHJvdmlkZSB0aGUgc2V0dGVyIG1ldGhvZHMgZm9yIHRoZSBpbmhlcml0aW5nIGJ1aWxkZXIuXHJcbi8vLyA8cGFyYT5IZXJlJ3MgYSB1c2FnZSBleGFtcGxlOlxyXG4vLy8gPGV4YW1wbGU+XHJcbi8vLyBjbGFzcyBNeUNvbmNyZXRlQnVpbGRlciA6IERjVmFsdWVzQnVpbGRlckJhc2VcclxuLy8vIHtcclxuLy8vICAgcHVibGljIG92ZXJyaWRlIERjVmFsdWVzIEJ1aWxkKClcclxuLy8vICAge1xyXG4vLy8gICAgICB2YXIgZGNWYWx1ZXMgPSBiYXNlLkNyZWF0ZURjVmFsdWVzKGZhbHNlKTtcclxuLy8vICAgICAgU2V0SWQobmV3SWQpO1xyXG4vLy8gICAgICBTZXRUeXBlKHRoZVR5cGUpO1xyXG4vLy8gICAgICBTZXREaXNwbGF5VmFsdWVzKHRoZURpc3BsYXlWYWx1ZXMpO1xyXG4vLy8gICAgICAuLi5cclxuLy8vICAgICAgcmV0dXJuIGRjVmFsdWVzO1xyXG4vLy8gICB9XHJcbi8vLyB9XHJcbi8vLyA8L2V4YW1wbGU+XHJcbi8vLyA8L3N1bW1hcnk+XHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBEY1ZhbHVlc0J1aWxkZXJCYXNlIHtcclxuXHJcbiAgYWJzdHJhY3QgQnVpbGQoKTogRGNWYWx1ZXM7XHJcblxyXG4gIENyZWF0ZURjVmFsdWVzKGlzVmVjdG9yOiBib29sZWFuKTogRGNWYWx1ZXMge1xyXG4gICAgcmV0dXJuIG5ldyBEY1ZhbHVlcyhmYWxzZSwgaXNWZWN0b3IpO1xyXG4gIH1cclxuXHJcbiAgU2V0SWQoZGNWYWx1ZXM6IERjVmFsdWVzLCBuZXdJZDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBkY1ZhbHVlcy5TZXRJRChuZXdJZCk7XHJcbiAgfVxyXG5cclxuICBTZXRUeXBlKGRjVmFsdWVzOiBEY1ZhbHVlcywgdHlwZTogU3RvcmFnZUF0dHJpYnV0ZSk6IHZvaWQge1xyXG4gICAgZGNWYWx1ZXMuc2V0VHlwZSh0eXBlKTtcclxuICB9XHJcblxyXG4gIFNldERpc3BsYXlWYWx1ZXMoZGNWYWx1ZXM6IERjVmFsdWVzLCBkaXNwbGF5VmFsdWVzOiBzdHJpbmdbXSk6IHZvaWQge1xyXG4gICAgZGNWYWx1ZXMuU2V0RGlzcGxheVZhbHVlcyhkaXNwbGF5VmFsdWVzKTtcclxuICB9XHJcblxyXG4gIFNldExpbmtWYWx1ZXMoZGNWYWx1ZXM6IERjVmFsdWVzLCBsaW5rVmFsdWVzOiBzdHJpbmdbXSk6IHZvaWQge1xyXG4gICAgZGNWYWx1ZXMuU2V0TGlua1ZhbHVlcyhsaW5rVmFsdWVzKTtcclxuICB9XHJcblxyXG4gIFNldE51bGxGbGFncyhkY1ZhbHVlczogRGNWYWx1ZXMsIG51bGxGbGFnc1N0cmluZzogc3RyaW5nKTogdm9pZDtcclxuICBTZXROdWxsRmxhZ3MoZGNWYWx1ZXM6IERjVmFsdWVzLCBudWxsRmxhZ3M6IGJvb2xlYW5bXSk6IHZvaWQ7XHJcbiAgU2V0TnVsbEZsYWdzKGRjVmFsdWVzOiBEY1ZhbHVlcywgbnVsbEZsYWdzU3RyaW5nT3JOdWxsRmxhZ3M6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDIgJiYgKGRjVmFsdWVzID09PSBudWxsIHx8IGRjVmFsdWVzIGluc3RhbmNlb2YgRGNWYWx1ZXMpICYmIChudWxsRmxhZ3NTdHJpbmdPck51bGxGbGFncyA9PT0gbnVsbCB8fCBudWxsRmxhZ3NTdHJpbmdPck51bGxGbGFncy5jb25zdHJ1Y3RvciA9PT0gU3RyaW5nKSkge1xyXG4gICAgICB0aGlzLlNldE51bGxGbGFnc18wKGRjVmFsdWVzLCBudWxsRmxhZ3NTdHJpbmdPck51bGxGbGFncyk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuU2V0TnVsbEZsYWdzXzEoZGNWYWx1ZXMsIG51bGxGbGFnc1N0cmluZ09yTnVsbEZsYWdzKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgU2V0TnVsbEZsYWdzXzAoZGNWYWx1ZXM6IERjVmFsdWVzLCBudWxsRmxhZ3NTdHJpbmc6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgbGV0IG51bGxGbGFnczogYm9vbGVhbltdID0gdGhpcy5QYXJzZU51bGxGbGFncyhudWxsRmxhZ3NTdHJpbmcpO1xyXG4gICAgZGNWYWx1ZXMuc2V0TnVsbEZsYWdzKG51bGxGbGFncyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIFNldE51bGxGbGFnc18xKGRjVmFsdWVzOiBEY1ZhbHVlcywgbnVsbEZsYWdzOiBib29sZWFuW10pOiB2b2lkIHtcclxuICAgIGRjVmFsdWVzLnNldE51bGxGbGFncyhudWxsRmxhZ3MpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBQYXJzZSBhIHNlcmlhbGl6ZWQgdmFsdWVzIHN0cmluZyBhcyBhbiBhcnJheSBvZiB2YWx1ZXMuXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJ2YWx1ZVN0clwiPlRoaXMgaXMgc3RyaW5nIG9mIHRoZSBjb25jYXRlbmF0ZWQgdmFsdWVzLCB3aXRoIGVhY2ggdmFsdWUgcHJlY2VkZWQgd2l0aCBhIGhleCBudW1iZXIgZGVub3RpbmcgaXRzIGxlbmd0aC48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImRhdGFUeXBlXCI+VGhlIGRhdGEgdHlwZSBvZiB0aGUgdmFsdWVzLjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwidXNlSGV4XCI+PC9wYXJhbT5cclxuICBwcm90ZWN0ZWQgUGFyc2VWYWx1ZXModmFsdWVTdHI6IHN0cmluZywgZGF0YVR5cGU6IFN0b3JhZ2VBdHRyaWJ1dGUsIHVzZUhleDogYm9vbGVhbik6IHN0cmluZ1tdIHtcclxuXHJcbiAgICBsZXQgc251bWJlcjogc3RyaW5nO1xyXG4gICAgbGV0IHRtcFZhbHVlOiBzdHJpbmcgPSBudWxsO1xyXG4gICAgbGV0IGJ1ZmZlcjogTGlzdDxzdHJpbmc+ID0gbmV3IExpc3Q8c3RyaW5nPigpO1xyXG4gICAgbGV0IGFycmF5OiBzdHJpbmdbXTtcclxuICAgIGxldCBsZW46IG51bWJlcjtcclxuICAgIGxldCBuZXh0SWR4OiBudW1iZXI7XHJcbiAgICBsZXQgZW5kSWR4OiBudW1iZXI7XHJcbiAgICBsZXQgc3VmZml4QnVmOiBTdHJpbmdCdWlsZGVyID0gbnVsbDtcclxuXHJcbiAgICBzd2l0Y2ggKGRhdGFUeXBlKSB7XHJcbiAgICAgIGNhc2UgU3RvcmFnZUF0dHJpYnV0ZS5OVU1FUklDOlxyXG4gICAgICBjYXNlIFN0b3JhZ2VBdHRyaWJ1dGUuREFURTpcclxuICAgICAgY2FzZSBTdG9yYWdlQXR0cmlidXRlLlRJTUU6XHJcbiAgICAgICAgaWYgKHVzZUhleClcclxuICAgICAgICAgIGxlbiA9IEd1aUVudmlyb25tZW50LkVudmlyb25tZW50LkdldFNpZ25pZmljYW50TnVtU2l6ZSgpICogMjtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICBsZW4gPSBNYXRoLmZsb29yKChHdWlFbnZpcm9ubWVudC5FbnZpcm9ubWVudC5HZXRTaWduaWZpY2FudE51bVNpemUoKSArIDIpIC8gMykgKiA0O1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBTdG9yYWdlQXR0cmlidXRlLkJPT0xFQU46XHJcbiAgICAgICAgbGVuID0gMTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgbGVuID0gMDtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuXHJcbiAgICBuZXh0SWR4ID0gMDtcclxuICAgIHdoaWxlIChuZXh0SWR4IDwgdmFsdWVTdHIubGVuZ3RoKSB7XHJcbiAgICAgIC8vIGNvbXB1dGUgdGhlIGxlbmd0aCBvZiBhbiBhbHBoYSBkYXRhXHJcbiAgICAgIGlmIChkYXRhVHlwZSA9PT0gU3RvcmFnZUF0dHJpYnV0ZS5BTFBIQSB8fCBkYXRhVHlwZSA9PT0gU3RvcmFnZUF0dHJpYnV0ZS5VTklDT0RFIHx8XHJcbiAgICAgICAgZGF0YVR5cGUgPT09IFN0b3JhZ2VBdHRyaWJ1dGUuQkxPQiB8fCBkYXRhVHlwZSA9PT0gU3RvcmFnZUF0dHJpYnV0ZS5CTE9CX1ZFQ1RPUikge1xyXG4gICAgICAgIHNudW1iZXIgPSB2YWx1ZVN0ci5zdWJzdHIobmV4dElkeCwgNCk7XHJcbiAgICAgICAgbGVuID0gTk51bWJlci5QYXJzZShzbnVtYmVyLCBOdW1iZXJTdHlsZXMuSGV4TnVtYmVyKTtcclxuICAgICAgICBuZXh0SWR4ICs9IDQ7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIGNoZWNrIGlmIHRoZSBkYXRhIGlzIHNwYW5uZWRcclxuICAgICAgaWYgKGxlbiA+PSAweDgwMDApIHtcclxuICAgICAgICBzdWZmaXhCdWYgPSBuZXcgU3RyaW5nQnVpbGRlcigpO1xyXG4gICAgICAgIGxlbiAtPSAweDgwMDA7XHJcbiAgICAgICAgLy8gbmV4dCBzZWdtZW50IG1heSBhbHNvIGJlIHNwYW5uZWRcclxuICAgICAgICBuZXh0SWR4ICs9IFJlY29yZFV0aWxzLmdldFNwYW5uZWRGaWVsZCh2YWx1ZVN0ciwgbGVuLCBuZXh0SWR4LCBkYXRhVHlwZSwgc3VmZml4QnVmLCB1c2VIZXgpO1xyXG4gICAgICAgIGJ1ZmZlci5wdXNoKHN1ZmZpeEJ1Zi5Ub1N0cmluZygpKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBlbmRJZHggPSBuZXh0SWR4ICsgbGVuO1xyXG4gICAgICAgIGlmICh1c2VIZXgpXHJcbiAgICAgICAgICB0bXBWYWx1ZSA9IHZhbHVlU3RyLnN1YnN0cihuZXh0SWR4LCAoZW5kSWR4KSAtIChuZXh0SWR4KSk7XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgdG1wVmFsdWUgPSBCYXNlNjQuZGVjb2RlVG9IZXgodmFsdWVTdHIuc3Vic3RyKG5leHRJZHgsIChlbmRJZHgpIC0gKG5leHRJZHgpKSk7XHJcbiAgICAgICAgLy8gdGhlIGZvbGxvd2luZyB0d28gbGluZXMgYXJlIHJlZHVuZGFudCBzaW5jZSB0aGUgbWFrZVByaW50YWJsZSgpIGlzIGNhbGxlZFxyXG4gICAgICAgIC8vIGluIHRoZSBndWlNYW5hZ2VyIHdoZW4gYnVpbGRpbmcgdGhlIG9wdGlvbnNcclxuICAgICAgICAvKmlmIChkYXRhVHlwZSA9PSBEQVRBX1RZUEVfQUxQSEEpXHJcbiAgICAgICAgICAgICB0bXBWYWx1ZSA9IGd1aU1hbmFnZXIubWFrZVByaW50YWJsZSh0bXBWYWx1ZSk7Ki9cclxuICAgICAgICBidWZmZXIucHVzaCh0bXBWYWx1ZSk7XHJcbiAgICAgICAgbmV4dElkeCA9IGVuZElkeDtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIHZlY3RvciB0byBhcnJheVxyXG4gICAgcmV0dXJuIGJ1ZmZlci5Ub0FycmF5KCk7XHJcbiAgfVxyXG5cclxuICBQYXJzZU51bGxGbGFncyhudWxsRmxhZ3NTdHJpbmc6IHN0cmluZyk6IGJvb2xlYW5bXSB7XHJcbiAgICBsZXQgYXJyYXk6IGJvb2xlYW5bXSA9IG5ldyBBcnJheTxib29sZWFuPihudWxsRmxhZ3NTdHJpbmcubGVuZ3RoKTtcclxuICAgIGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCBudWxsRmxhZ3NTdHJpbmcubGVuZ3RoOyBpID0gaSArIDEpIHtcclxuICAgICAgYXJyYXlbaV0gPSAobnVsbEZsYWdzU3RyaW5nLmNoYXJBdChpKSAhPT0gJzAnLyonMCcqLyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYXJyYXk7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
import { Dictionary, List, RefParam } from "@magic-xpa/mscorelib";
|
|
2
|
-
import { DcValues, EMPTY_DCREF } from "./DcValues";
|
|
3
|
-
import { Events } from "../../Events";
|
|
4
|
-
import { StorageAttribute } from "@magic-xpa/utils";
|
|
5
|
-
import { PIC } from "../gui/PIC";
|
|
6
|
-
import { DisplayConvertor } from "../gui/DisplayConvertor";
|
|
7
|
-
import { Commands } from "../../Commands";
|
|
8
|
-
import { CommandType } from "../../GuiEnums";
|
|
9
|
-
export class GuiDataViewBase {
|
|
10
|
-
constructor() {
|
|
11
|
-
this._dcValsCollection = new Dictionary();
|
|
12
|
-
this._emptyDataview = false;
|
|
13
|
-
this._fieldsTab = null;
|
|
14
|
-
this._task = null;
|
|
15
|
-
this._emptyChoice = new DcValues(true, false);
|
|
16
|
-
this._emptyChoiceForVectors = new DcValues(true, true);
|
|
17
|
-
}
|
|
18
|
-
getField(id) {
|
|
19
|
-
if (this._fieldsTab != null)
|
|
20
|
-
return this._fieldsTab.getField(id);
|
|
21
|
-
Events.WriteExceptionToLog("in DataView.getFieldDef(int): There is no fieldsTab object");
|
|
22
|
-
return null;
|
|
23
|
-
}
|
|
24
|
-
isEmptyDataview() {
|
|
25
|
-
return this._emptyDataview;
|
|
26
|
-
}
|
|
27
|
-
setEmptyDataview(emptyDataview) {
|
|
28
|
-
this._emptyDataview = emptyDataview;
|
|
29
|
-
Commands.addBoolWithLine(CommandType.SET_EMPTY_DATAVIEW, this._task.getForm(), 0, emptyDataview);
|
|
30
|
-
}
|
|
31
|
-
getTask() {
|
|
32
|
-
return this._task;
|
|
33
|
-
}
|
|
34
|
-
getDcValues(dcId) {
|
|
35
|
-
if (dcId === EMPTY_DCREF)
|
|
36
|
-
return this.getEmptyChoice();
|
|
37
|
-
let dcValues;
|
|
38
|
-
let dcv = new RefParam(dcValues);
|
|
39
|
-
this._dcValsCollection.TryGetValue(dcId.toString(), dcv);
|
|
40
|
-
return dcv.value;
|
|
41
|
-
}
|
|
42
|
-
getEmptyChoice() {
|
|
43
|
-
return this._emptyChoice;
|
|
44
|
-
}
|
|
45
|
-
getEmptyChoiceForVectors() {
|
|
46
|
-
return this._emptyChoiceForVectors;
|
|
47
|
-
}
|
|
48
|
-
GetFieldsTab() {
|
|
49
|
-
return this._fieldsTab;
|
|
50
|
-
}
|
|
51
|
-
GetRouteParams() {
|
|
52
|
-
let params = new List();
|
|
53
|
-
for (let i = 0; i < this._fieldsTab.getSize(); i++) {
|
|
54
|
-
let field = this._fieldsTab.getField(i);
|
|
55
|
-
let val;
|
|
56
|
-
if (field.IsExposedRouteParam && !field.isNull()) {
|
|
57
|
-
switch (field.getType()) {
|
|
58
|
-
case StorageAttribute.ALPHA:
|
|
59
|
-
case StorageAttribute.UNICODE:
|
|
60
|
-
{
|
|
61
|
-
val = field.getDispValue();
|
|
62
|
-
if (field.isNull())
|
|
63
|
-
val = field.getNullDisplay();
|
|
64
|
-
params.push(val.trim());
|
|
65
|
-
}
|
|
66
|
-
break;
|
|
67
|
-
case StorageAttribute.BOOLEAN:
|
|
68
|
-
{
|
|
69
|
-
if (field.isNull())
|
|
70
|
-
params.push(false);
|
|
71
|
-
else
|
|
72
|
-
params.push(field.getDispValue().charAt(0) === '1' ? true : false);
|
|
73
|
-
}
|
|
74
|
-
break;
|
|
75
|
-
case StorageAttribute.NUMERIC: {
|
|
76
|
-
val = field.getDispValue();
|
|
77
|
-
if (field.isNull())
|
|
78
|
-
val = field.getNullDisplay();
|
|
79
|
-
let pic = new PIC(field.getPicture(), field.getType(), this.getTask().getCompIdx());
|
|
80
|
-
val = DisplayConvertor.Instance.mg2disp(val, "", pic, true, 0, false);
|
|
81
|
-
params.push(val);
|
|
82
|
-
break;
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
return (params.length > 0) ? params : null;
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3VpRGF0YVZpZXdCYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ3VpL3NyYy9tYW5hZ2VtZW50L2RhdGEvR3VpRGF0YVZpZXdCYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ2hFLE9BQU8sRUFBQyxRQUFRLEVBQUUsV0FBVyxFQUFDLE1BQU0sWUFBWSxDQUFDO0FBS2pELE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFFcEMsT0FBTyxFQUFDLGdCQUFnQixFQUFZLE1BQU0sa0JBQWtCLENBQUM7QUFDN0QsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLFlBQVksQ0FBQztBQUMvQixPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSzdDLE1BQU0sT0FBZ0IsZUFBZTtJQUFyQztRQUVFLHNCQUFpQixHQUF5QixJQUFJLFVBQVUsRUFBWSxDQUFDO1FBQzdELG1CQUFjLEdBQVksS0FBSyxDQUFDO1FBQ3hDLGVBQVUsR0FBZ0IsSUFBSSxDQUFDO1FBQy9CLFVBQUssR0FBZ0IsSUFBSSxDQUFDO1FBR2xCLGlCQUFZLEdBQWEsSUFBSSxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ25ELDJCQUFzQixHQUFhLElBQUksUUFBUSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQW1IdEUsQ0FBQztJQXJHQyxRQUFRLENBQUMsRUFBVTtRQUNqQixJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSTtZQUN6QixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMs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LENBQUMsY0FBYyxFQUFFLENBQUM7d0JBQy9CLElBQUksR0FBRyxHQUFRLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsRUFBRSxLQUFLLENBQUMsT0FBTyxFQUFFLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7d0JBQ3pGLEdBQUcsR0FBRyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7d0JBQ3RFLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7d0JBQ2pCLE1BQU07cUJBQ1A7aUJBQ0Y7YUFDRjtTQUNGO1FBQ0QsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQzdDLENBQUM7Q0FFRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RGljdGlvbmFyeSwgTGlzdCwgUmVmUGFyYW19IGZyb20gXCJAbWFnaWMteHBhL21zY29yZWxpYlwiO1xyXG5pbXBvcnQge0RjVmFsdWVzLCBFTVBUWV9EQ1JFRn0gZnJvbSBcIi4vRGNWYWx1ZXNcIjtcclxuaW1wb3J0IHtGaWVsZHNUYWJsZX0gZnJvbSBcIi4vRmllbGRzVGFibGVcIjtcclxuaW1wb3J0IHtHdWlUYXNrQmFzZX0gZnJvbSBcIi4uL3Rhc2tzL0d1aVRhc2tCYXNlXCI7XHJcbmltcG9ydCB7RmllbGREZWZ9IGZyb20gXCIuL0ZpZWxkRGVmXCI7XHJcbmltcG9ydCB7SVRhc2t9IGZyb20gXCIuLi90YXNrcy9JVGFza1wiO1xyXG5pbXBvcnQge0V2ZW50c30gZnJvbSBcIi4uLy4uL0V2ZW50c1wiO1xyXG5cclxuaW1wb3J0IHtTdG9yYWdlQXR0cmlidXRlLCBYbWxQYXJzZXJ9IGZyb20gXCJAbWFnaWMteHBhL3V0aWxzXCI7XHJcbmltcG9ydCB7UElDfSBmcm9tIFwiLi4vZ3VpL1BJQ1wiO1xyXG5pbXBvcnQge0Rpc3BsYXlDb252ZXJ0b3J9IGZyb20gXCIuLi9ndWkvRGlzcGxheUNvbnZlcnRvclwiO1xyXG5pbXBvcnQgeyBDb21tYW5kcyB9IGZyb20gXCIuLi8uLi9Db21tYW5kc1wiO1xyXG5pbXBvcnQgeyBDb21tYW5kVHlwZSB9IGZyb20gXCIuLi8uLi9HdWlFbnVtc1wiO1xyXG5cclxuLy8vIDxzdW1tYXJ5PlxyXG4vLy8gZnVuY3Rpb25hbGl0eSByZXF1aXJlZCBieSB0aGUgR1VJIG5hbWVzcGFjZSBmcm9tIHRoZSBEYXRhVmlld0Jhc2UgY2xhc3MuXHJcbi8vLyA8L3N1bW1hcnk+XHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBHdWlEYXRhVmlld0Jhc2Uge1xyXG5cclxuICBfZGNWYWxzQ29sbGVjdGlvbjogRGljdGlvbmFyeTxEY1ZhbHVlcz4gPSBuZXcgRGljdGlvbmFyeTxEY1ZhbHVlcz4oKTtcclxuICBwcml2YXRlIF9lbXB0eURhdGF2aWV3OiBib29sZWFuID0gZmFsc2U7IC8vIEluZGljYXRlcyB0aGUgdGFzayBpcyBpbiBFbXB0eSBEYXRhdmlld1xyXG4gIF9maWVsZHNUYWI6IEZpZWxkc1RhYmxlID0gbnVsbDsgLy8gPGR2aGVhZGVyPiAuLi48L2R2aGVhZGVyPiB0YWdcclxuICBfdGFzazogR3VpVGFza0Jhc2UgPSBudWxsOyAvLyBjb250YWluZXIgdGFza1xyXG5cclxuICAvLyBkdW1teSBEY1ZhbHVlcyBmb3IgdXNlIHdpdGggbm9uLURDIGNob2ljZSBjb250cm9sc1xyXG4gIHByaXZhdGUgX2VtcHR5Q2hvaWNlOiBEY1ZhbHVlcyA9IG5ldyBEY1ZhbHVlcyh0cnVlLCBmYWxzZSk7XHJcbiAgcHJpdmF0ZSBfZW1wdHlDaG9pY2VGb3JWZWN0b3JzOiBEY1ZhbHVlcyA9IG5ldyBEY1ZhbHVlcyh0cnVlLCB0cnVlKTtcclxuXHJcblxyXG4gIGFic3RyYWN0IEluaXQoKTogdm9pZDtcclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHBhcnNlIHRoZSBEVkhFQURFUiB0YWdcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGFic3RyYWN0IGZpbGxIZWFkZXJEYXRhKHBhcnNlcjogWG1sUGFyc2VyKTogdm9pZDtcclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGdldCBhIGZpZWxkIGJ5IGl0cyBpZFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJpZFwiPmZpZWxkIGlkIDwvcGFyYW0+XHJcbiAgZ2V0RmllbGQoaWQ6IG51bWJlcik6IEZpZWxkRGVmIHtcclxuICAgIGlmICh0aGlzLl9maWVsZHNUYWIgIT0gbnVsbClcclxuICAgICAgcmV0dXJuIHRoaXMuX2ZpZWxkc1RhYi5nZXRGaWVsZChpZCk7XHJcblxyXG4gICAgRXZlbnRzLldyaXRlRXhjZXB0aW9uVG9Mb2coXCJpbiBEYXRhVmlldy5nZXRGaWVsZERlZihpbnQpOiBUaGVyZSBpcyBubyBmaWVsZHNUYWIgb2JqZWN0XCIpO1xyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICAvLy8gPHJldHVybnM+IHRoZSBlbXB0eURhdGF2aWV3PC9yZXR1cm5zPlxyXG4gIGlzRW1wdHlEYXRhdmlldygpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9lbXB0eURhdGF2aWV3O1xyXG4gIH1cclxuXHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJlbXB0eURhdGF2aWV3XCI+dGhlIGVtcHR5RGF0YXZpZXcgdG8gc2V0PC9wYXJhbT5cclxuICBzZXRFbXB0eURhdGF2aWV3KGVtcHR5RGF0YXZpZXc6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuX2VtcHR5RGF0YXZpZXcgPSBlbXB0eURhdGF2aWV3O1xyXG4gICAgQ29tbWFuZHMuYWRkQm9vbFdpdGhMaW5lKENvbW1hbmRUeXBlLlNFVF9FTVBUWV9EQVRBVklFVywgdGhpcy5fdGFzay5nZXRGb3JtKCksIDAsIGVtcHR5RGF0YXZpZXcpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybiBhIHJlZmVyZW5jZSB0byB0aGUgdGFzayBvZiB0aGlzIGRhdGF2aWV3XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBnZXRUYXNrKCk6IElUYXNrIHtcclxuICAgIHJldHVybiB0aGlzLl90YXNrO1xyXG4gIH1cclxuXHJcbi8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBnZXQgZGNWYWx1ZXMgb2JqZWN0IGJ5IGl0cyBpZFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJkY0lkXCI+aWQgb2YgYSBkYXRhIGNvbnRyb2wgdmFsdWVzIDwvcGFyYW0+XHJcbiAgZ2V0RGNWYWx1ZXMoZGNJZDogbnVtYmVyKTogRGNWYWx1ZXMge1xyXG4gICAgaWYgKGRjSWQgPT09IEVNUFRZX0RDUkVGKVxyXG4gICAgICByZXR1cm4gdGhpcy5nZXRFbXB0eUNob2ljZSgpO1xyXG5cclxuICAgIGxldCBkY1ZhbHVlczogRGNWYWx1ZXM7XHJcbiAgICBsZXQgZGN2OiBSZWZQYXJhbTxEY1ZhbHVlcz4gPSBuZXcgUmVmUGFyYW08RGNWYWx1ZXM+KGRjVmFsdWVzKTtcclxuICAgIHRoaXMuX2RjVmFsc0NvbGxlY3Rpb24uVHJ5R2V0VmFsdWUoZGNJZC50b1N0cmluZygpLCBkY3YpO1xyXG4gICAgcmV0dXJuIGRjdi52YWx1ZTtcclxuICB9XHJcblxyXG4gIC8vLyA8cmV0dXJucz5kdW1teSBEY1ZhbHVlcyBmb3IgdXNlIHdpdGggbm9uLURDIGNob2ljZSBjb250cm9sczwvcmV0dXJucz5cclxuICBnZXRFbXB0eUNob2ljZSgpOiBEY1ZhbHVlcyB7XHJcbiAgICByZXR1cm4gdGhpcy5fZW1wdHlDaG9pY2U7XHJcbiAgfVxyXG5cclxuXHJcbiAgZ2V0RW1wdHlDaG9pY2VGb3JWZWN0b3JzKCk6IERjVmFsdWVzIHtcclxuICAgIHJldHVybiB0aGlzLl9lbXB0eUNob2ljZUZvclZlY3RvcnM7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgZ2V0IGZpZWxkcyB0YWJsZSAoPGR2aGVhZGVyPikgb2YgdGhlICgoRGF0YVZpZXcpZGF0YVZpZXcpXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBHZXRGaWVsZHNUYWIoKTogRmllbGRzVGFibGUge1xyXG4gICAgcmV0dXJuIHRoaXMuX2ZpZWxkc1RhYjtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBnZXQgcm91dGUgcGFyYW1zXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBHZXRSb3V0ZVBhcmFtcygpOiBMaXN0PGFueT4ge1xyXG4gICAgbGV0IHBhcmFtczogTGlzdCA8IGFueSA+ID0gbmV3IExpc3QoKTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5fZmllbGRzVGFiLmdldFNpemUoKTsgaSsrKSB7XHJcblxyXG4gICAgICBsZXQgZmllbGQ6IGFueSA9IHRoaXMuX2ZpZWxkc1RhYi5nZXRGaWVsZChpKTtcclxuICAgICAgbGV0IHZhbDogYW55O1xyXG4gICAgICBpZiAoZmllbGQuSXNFeHBvc2VkUm91dGVQYXJhbSAmJiAhZmllbGQuaXNOdWxsKCkpIHtcclxuICAgICAgICBzd2l0Y2ggKGZpZWxkLmdldFR5cGUoKSlcclxuICAgICAgICB7XHJcbiAgICAgICAgICBjYXNlIFN0b3JhZ2VBdHRyaWJ1dGUuQUxQSEE6XHJcbiAgICAgICAgICBjYXNlIFN0b3JhZ2VBdHRyaWJ1dGUuVU5JQ09ERToge1xyXG4gICAgICAgICAgICB2YWwgPSBmaWVsZC5nZXREaXNwVmFsdWUoKTtcclxuICAgICAgICAgICAgaWYgKGZpZWxkLmlzTnVsbCgpKVxyXG4gICAgICAgICAgICAgIHZhbCA9IGZpZWxkLmdldE51bGxEaXNwbGF5KCk7XHJcbiAgICAgICAgICAgIHBhcmFtcy5wdXNoKDxzdHJpbmc+dmFsLnRyaW0oKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgIGNhc2UgU3RvcmFnZUF0dHJpYnV0ZS5CT09MRUFOOiB7XHJcbiAgICAgICAgICAgIGlmIChmaWVsZC5pc051bGwoKSlcclxuICAgICAgICAgICAgICBwYXJhbXMucHVzaChmYWxzZSk7XHJcbiAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICBwYXJhbXMucHVzaChmaWVsZC5nZXREaXNwVmFsdWUoKS5jaGFyQXQoMCkgPT09ICcxJyA/IHRydWUgOiBmYWxzZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgIGNhc2UgU3RvcmFnZUF0dHJpYnV0ZS5OVU1FUklDOiB7XHJcbiAgICAgICAgICAgIHZhbCA9IGZpZWxkLmdldERpc3BWYWx1ZSgpO1xyXG4gICAgICAgICAgICBpZiAoZmllbGQuaXNOdWxsKCkpXHJcbiAgICAgICAgICAgICAgdmFsID0gZmllbGQuZ2V0TnVsbERpc3BsYXkoKTtcclxuICAgICAgICAgICAgbGV0IHBpYzogUElDID0gbmV3IFBJQyhmaWVsZC5nZXRQaWN0dXJlKCksIGZpZWxkLmdldFR5cGUoKSwgdGhpcy5nZXRUYXNrKCkuZ2V0Q29tcElkeCgpKTtcclxuICAgICAgICAgICAgdmFsID0gRGlzcGxheUNvbnZlcnRvci5JbnN0YW5jZS5tZzJkaXNwKHZhbCwgXCJcIiwgcGljLCB0cnVlLCAwLCBmYWxzZSk7XHJcbiAgICAgICAgICAgIHBhcmFtcy5wdXNoKHZhbCk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIChwYXJhbXMubGVuZ3RoID4gMCkgPyBwYXJhbXMgOiBudWxsO1xyXG4gIH1cclxuXHJcbn1cclxuIl19
|
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
import { __awaiter } from "tslib";
|
|
2
|
-
import { FieldDef } from "./FieldDef";
|
|
3
|
-
import { List, NString } from "@magic-xpa/mscorelib";
|
|
4
|
-
import { GuiConstants } from "../../GuiConstants";
|
|
5
|
-
export class GuiFieldBase extends FieldDef {
|
|
6
|
-
constructor(id) {
|
|
7
|
-
super(id);
|
|
8
|
-
this.ControlToFocus = null;
|
|
9
|
-
this._controls = null;
|
|
10
|
-
this._dataview = null;
|
|
11
|
-
}
|
|
12
|
-
getTask() {
|
|
13
|
-
return this._dataview.getTask();
|
|
14
|
-
}
|
|
15
|
-
updateDisplayWithValue(displayValue, isNull) {
|
|
16
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
17
|
-
let ctrl = null;
|
|
18
|
-
let ctrlValue = null;
|
|
19
|
-
let defaultValue = GuiConstants.DEFAULT_VALUE_INT.toString();
|
|
20
|
-
if (this._controls !== null) {
|
|
21
|
-
let firstControlValue = null;
|
|
22
|
-
let foundControlValue = false;
|
|
23
|
-
let savedControlToFocus = this.ControlToFocus;
|
|
24
|
-
for (let i = 0; i < this._controls.length; i = i + 1) {
|
|
25
|
-
ctrl = this._controls.get_Item(i);
|
|
26
|
-
if (!ctrl.getForm().inRefreshDisplay()) {
|
|
27
|
-
ctrl.resetPrevVal();
|
|
28
|
-
yield ctrl.SetAndRefreshDisplayValue(displayValue, isNull);
|
|
29
|
-
if (!ctrl.isRadio())
|
|
30
|
-
if (ctrlValue === null || ctrl.Value !== null && !(ctrl.Value === defaultValue) && ctrl === savedControlToFocus)
|
|
31
|
-
ctrlValue = ctrl;
|
|
32
|
-
else {
|
|
33
|
-
if (firstControlValue === null)
|
|
34
|
-
firstControlValue = ctrl;
|
|
35
|
-
if (ctrl.Value !== null && !(ctrl.Value === defaultValue)) {
|
|
36
|
-
if (!foundControlValue) {
|
|
37
|
-
firstControlValue = ctrl;
|
|
38
|
-
foundControlValue = true;
|
|
39
|
-
}
|
|
40
|
-
if (ctrl === savedControlToFocus)
|
|
41
|
-
ctrlValue = ctrl;
|
|
42
|
-
else if (ctrlValue === null)
|
|
43
|
-
ctrlValue = firstControlValue;
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
if (ctrlValue !== null) {
|
|
49
|
-
this.ControlToFocus = ctrlValue;
|
|
50
|
-
if (this._controls.length > 1) {
|
|
51
|
-
ctrlValue.resetPrevVal();
|
|
52
|
-
yield ctrlValue.SetAndRefreshDisplayValue(displayValue, isNull);
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
});
|
|
57
|
-
}
|
|
58
|
-
SetControl(ctrl) {
|
|
59
|
-
if (this._controls === null)
|
|
60
|
-
this._controls = new List();
|
|
61
|
-
if (!this._controls.Contains(ctrl)) {
|
|
62
|
-
this._controls.push(ctrl);
|
|
63
|
-
if (this._controls.length === 1)
|
|
64
|
-
this.ControlToFocus = ctrl;
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
RemoveControl(ctrl) {
|
|
68
|
-
this._controls.Remove(ctrl);
|
|
69
|
-
}
|
|
70
|
-
GetRadioCtrls() {
|
|
71
|
-
let list = new List();
|
|
72
|
-
if (this._controls !== null) {
|
|
73
|
-
for (let i = 0; i < this._controls.length; i = i + 1) {
|
|
74
|
-
let ctrl = this._controls[i];
|
|
75
|
-
if (ctrl.isRadio())
|
|
76
|
-
list.push(ctrl);
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
return list;
|
|
80
|
-
}
|
|
81
|
-
toString() {
|
|
82
|
-
return NString.Format("(Field {0}-{1}) in task {2}", this._id, this._varName, this.getTask());
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3VpRmllbGRCYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ3VpL3NyYy9tYW5hZ2VtZW50L2RhdGEvR3VpRmllbGRCYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sWUFBWSxDQUFDO0FBSXBDLE9BQU8sRUFBQyxJQUFJLEVBQUUsT0FBTyxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBRWhELE1BQU0sT0FBZ0IsWUFBYSxTQUFRLFFBQVE7SUFTakQsWUFBWSxFQUFVO1FBQ3BCLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztRQVRaLG1CQUFjLEdBQWtCLElBQUksQ0FBQztRQUMzQixjQUFTLEdBQXdCLElBQUksQ0FBQztRQUN0QyxjQUFTLEdBQW9CLElBQUksQ0FBQztJQVE1QyxDQUFDO0lBS0QsT0FBTztRQUNMLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBS0ssc0JBQXNCLENBQUMsWUFBb0IsRUFBRSxNQUFlOztZQUNoRSxJQUFJLElBQUksR0FBa0IsSUFBSSxDQUFDO1lBQy9CLElBQUksU0FBUyxHQUFrQixJQUFJLENBQUM7WUFDcEMsSUFBSSxZQUFZLEdBQVcsWUFBWSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsRUFBRSxDQUFDO1lBRXJFLElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxJQUFJLEVBQUU7Z0JBQzNCLElBQUksaUJBQWlCLEdBQWtCLElBQUksQ0FBQztnQkFDNUMsSUFBSSxpQkFBaUIsR0FBWSxLQUFLLENBQUM7Z0JBQ3ZDLElBQUksbUJBQW1CLEdBQWtCLElBQUksQ0FBQyxjQUFjLENBQUM7Z0JBQzdELEtBQUssSUFBSSxDQUFDLEdBQVcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENB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LENBQUM7YUFDbkI7U0FDRjtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELFFBQVE7UUFDTixPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsNkJBQTZCLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ2hHLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RmllbGREZWZ9IGZyb20gXCIuL0ZpZWxkRGVmXCI7XHJcbmltcG9ydCB7R3VpRGF0YVZpZXdCYXNlfSBmcm9tIFwiLi9HdWlEYXRhVmlld0Jhc2VcIjtcclxuaW1wb3J0IHtNZ0NvbnRyb2xCYXNlfSBmcm9tIFwiLi4vZ3VpL01nQ29udHJvbEJhc2VcIjtcclxuaW1wb3J0IHtJVGFza30gZnJvbSBcIi4uL3Rhc2tzL0lUYXNrXCI7XHJcbmltcG9ydCB7TGlzdCwgTlN0cmluZ30gZnJvbSBcIkBtYWdpYy14cGEvbXNjb3JlbGliXCI7XHJcbmltcG9ydCB7R3VpQ29uc3RhbnRzfSBmcm9tIFwiLi4vLi4vR3VpQ29uc3RhbnRzXCI7XHJcblxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgR3VpRmllbGRCYXNlIGV4dGVuZHMgRmllbGREZWYge1xyXG4gIENvbnRyb2xUb0ZvY3VzOiBNZ0NvbnRyb2xCYXNlID0gbnVsbDtcclxuICBwcm90ZWN0ZWQgX2NvbnRyb2xzOiBMaXN0PE1nQ29udHJvbEJhc2U+ID0gbnVsbDtcclxuICBwcm90ZWN0ZWQgX2RhdGF2aWV3OiBHdWlEYXRhVmlld0Jhc2UgPSBudWxsOyAvLyByZWZlcmVuY2UgdG8gdGhlIGRhdGF2aWV3IGluIG9yZGVyIHRvIGFjY2VzcyByZWNvcmQgZGF0YSAodXBkYXRpbmcsIGV0Yy4uLilcclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBDVE9SXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJpZFwiPiBpZHggaW4gRmllbGRzVGFibGUgPC9wYXJhbT5cclxuICBjb25zdHJ1Y3RvcihpZDogbnVtYmVyKSB7XHJcbiAgICBzdXBlcihpZCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIGdldCB0aGUgdGFzayB3aGljaCB0aGUgZmllbGQgYmVsb25ncyB0b1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgZ2V0VGFzaygpOiBJVGFzayB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGF0YXZpZXcuZ2V0VGFzaygpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHVwZGF0ZSB0aGUgZGlzcGxheVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgYXN5bmMgdXBkYXRlRGlzcGxheVdpdGhWYWx1ZShkaXNwbGF5VmFsdWU6IHN0cmluZywgaXNOdWxsOiBib29sZWFuKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBsZXQgY3RybDogTWdDb250cm9sQmFzZSA9IG51bGw7XHJcbiAgICBsZXQgY3RybFZhbHVlOiBNZ0NvbnRyb2xCYXNlID0gbnVsbDtcclxuICAgIGxldCBkZWZhdWx0VmFsdWU6IHN0cmluZyA9IEd1aUNvbnN0YW50cy5ERUZBVUxUX1ZBTFVFX0lOVC50b1N0cmluZygpO1xyXG5cclxuICAgIGlmICh0aGlzLl9jb250cm9scyAhPT0gbnVsbCkge1xyXG4gICAgICBsZXQgZmlyc3RDb250cm9sVmFsdWU6IE1nQ29udHJvbEJhc2UgPSBudWxsO1xyXG4gICAgICBsZXQgZm91bmRDb250cm9sVmFsdWU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgICAgbGV0IHNhdmVkQ29udHJvbFRvRm9jdXM6IE1nQ29udHJvbEJhc2UgPSB0aGlzLkNvbnRyb2xUb0ZvY3VzO1xyXG4gICAgICBmb3IgKGxldCBpOiBudW1iZXIgPSAwOyBpIDwgdGhpcy5fY29udHJvbHMubGVuZ3RoOyBpID0gaSArIDEpIHtcclxuICAgICAgICBjdHJsID0gdGhpcy5fY29udHJvbHMuZ2V0X0l0ZW0oaSk7XHJcblxyXG4gICAgICAgIGlmICghY3RybC5nZXRGb3JtKCkuaW5SZWZyZXNoRGlzcGxheSgpKSB7XHJcbiAgICAgICAgICBjdHJsLnJlc2V0UHJldlZhbCgpOyAvLyBmb3JjZSB1cGRhdGUgb2YgdGhlIGRpc3BsYXlcclxuICAgICAgICAgIGF3YWl0IGN0cmwuU2V0QW5kUmVmcmVzaERpc3BsYXlWYWx1ZShkaXNwbGF5VmFsdWUsIGlzTnVsbCk7XHJcblxyXG4gICAgICAgICAgLy8gRXZlbiBpZiB0aGUgY29udHJvbCB0aGF0IGNvbnRhaW5zIHRoZSBjb3JyZWN0IHZhbHVlIGlzIGZvdW5kIHdlIGRvbid0IGJyZWFrIHRoZSBsb29wIGJlY2F1c2U6XHJcbiAgICAgICAgICAvLyAoMSkgd2UgbmVlZCB0byByZWZyZXNoIGFsbCB0aGUgY29udHJvbHNcclxuICAgICAgICAgIC8vICgyKSB0aGUgbGFzdCBjb250cm9sIHRoYXQgd2FzIGZvY3VzIHdpdGggdGhlIGNvcnJlY3QgdmFsdWUgaXMgdGhlIG9uZSB0aGF0IHNob3VsZCBiZSBjaGVja2VkXHJcbiAgICAgICAgICBpZiAoIWN0cmwuaXNSYWRpbygpKVxyXG4gICAgICAgICAgICBpZiAoY3RybFZhbHVlID09PSBudWxsIHx8IGN0cmwuVmFsdWUgIT09IG51bGwgJiYgIShjdHJsLlZhbHVlID09PSBkZWZhdWx0VmFsdWUpICYmIGN0cmwgPT09IHNhdmVkQ29udHJvbFRvRm9jdXMpXHJcbiAgICAgICAgICAgICAgY3RybFZhbHVlID0gY3RybDtcclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAvLyBGaXhlZCBidWcjOjc4MDM1OSwgZm9yIHJhZGlvIGNvbnRyb2wgc2VsZWN0IHRoZSBjb3JyZWN0IGNvbnRyb2xcclxuICAgICAgICAgICAgLy8gaWYgbm90IGZvdW5kIGFueSBjdHJsdmFsdWUodGhlIGNvbnRyb2wgdGhhdCB3YXMgaW4gZm9jdXNlKVxyXG4gICAgICAgICAgICAvLyBzZWxlY3QgdGhlIGZpcnN0IGNvbnRyb2wgd2l0aCB0aGUgY29ycmVjdCB2YWx1ZSBpZiBub3QgZXhpc3Qgc2VsZWN0IHRoZSBmaXJzdCBjb250cm9sLlxyXG5cclxuICAgICAgICAgICAgLy8gYS4gc2F2ZSB0aGUgZmlyc3QgY29udHJvbCAod2l0aCBvciB3aXRob3V0IHRoZSBjb3JyZWN0IHZhbHVlKVxyXG4gICAgICAgICAgICBpZiAoZmlyc3RDb250cm9sVmFsdWUgPT09IG51bGwpXHJcbiAgICAgICAgICAgICAgZmlyc3RDb250cm9sVmFsdWUgPSBjdHJsO1xyXG4gICAgICAgICAgICBpZiAoY3RybC5WYWx1ZSAhPT0gbnVsbCAmJiAhKGN0cmwuVmFsdWUgPT09IGRlZmF1bHRWYWx1ZSkpIHtcclxuICAgICAgICAgICAgICAvLyBiLiBzYXZlIHRoZSBmaXJzdCBjb250cm9sIHdpdGggdGhlIGNvcnJlY3QgdmFsdWVcclxuICAgICAgICAgICAgICBpZiAoIWZvdW5kQ29udHJvbFZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICBmaXJzdENvbnRyb2xWYWx1ZSA9IGN0cmw7XHJcbiAgICAgICAgICAgICAgICBmb3VuZENvbnRyb2xWYWx1ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIC8vIGMuc2F2ZSB0aGUgY29udHJvbCB0aGF0IGJlbG9uZyB0byB0aGUgZm9jdXMgY29udHJvbFxyXG4gICAgICAgICAgICAgIGlmIChjdHJsID09PSBzYXZlZENvbnRyb2xUb0ZvY3VzKVxyXG4gICAgICAgICAgICAgICAgY3RybFZhbHVlID0gY3RybDtcclxuICAgICAgICAgICAgICBlbHNlIGlmIChjdHJsVmFsdWUgPT09IG51bGwpXHJcbiAgICAgICAgICAgICAgICBjdHJsVmFsdWUgPSBmaXJzdENvbnRyb2xWYWx1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gaWYgdGhlcmUgd2FzIGEgY29udHJvbCB0aGF0IGhhZCB0aGUgY29ycmVjdCB2YWx1ZSBhbmQgdGhpcyBmaWVsZCBpcyBsaW5rZWQgdG8gbW9yZSB0aGFuIG9uZVxyXG4gICAgICAvLyBjb250cm9sIHRoZW4gaXQgbWVhbnMgdGhhdCB0aGUgY29udHJvbCB0aGF0IGNvbnRhaW5lZCB0aGUgY29ycmVjdCB2YWx1ZSBtaWdodCBoYXZlIGJlZW4gcmVzZXQgYnlcclxuICAgICAgLy8gb25lIG9mIGl0cyBzaWJsaW5ncyBzbyB0aGVyZSBpcyBhIG5lZWQgdG8gcmVmcmVzaCBpdHMgdmFsdWUgYWdhaW4uXHJcbiAgICAgIGlmIChjdHJsVmFsdWUgIT09IG51bGwpIHtcclxuICAgICAgICAvLyBzYXZlIHRoZSBjb250cm9sIHRoYXQgYmVsb25nIHRvIHRoZSB2YWx1ZSBvbiB0aGUgZmllbGQuXHJcbiAgICAgICAgdGhpcy5Db250cm9sVG9Gb2N1cyA9IGN0cmxWYWx1ZTtcclxuICAgICAgICBpZiAodGhpcy5fY29udHJvbHMubGVuZ3RoID4gMSkge1xyXG4gICAgICAgICAgY3RybFZhbHVlLnJlc2V0UHJldlZhbCgpOyAvLyBmb3JjZSB1cGRhdGUgb2YgdGhlIGRpc3BsYXlcclxuICAgICAgICAgIGF3YWl0IGN0cmxWYWx1ZS5TZXRBbmRSZWZyZXNoRGlzcGxheVZhbHVlKGRpc3BsYXlWYWx1ZSwgaXNOdWxsKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gc2V0IGEgcmVmZXJlbmNlIHRvIGEgY29udHJvbCBhdHRhY2hlZCB0byB0aGlzIGZpZWxkXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImN0cmxcIj50aGUgY29udHJvbCB3aGljaCBpcyBhdHRhY2hlZCB0byB0aGlzIGZpZWxkPC9wYXJhbT5cclxuICBTZXRDb250cm9sKGN0cmw6IE1nQ29udHJvbEJhc2UpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLl9jb250cm9scyA9PT0gbnVsbClcclxuICAgICAgdGhpcy5fY29udHJvbHMgPSBuZXcgTGlzdDxNZ0NvbnRyb2xCYXNlPigpO1xyXG4gICAgaWYgKCF0aGlzLl9jb250cm9scy5Db250YWlucyhjdHJsKSkge1xyXG4gICAgICB0aGlzLl9jb250cm9scy5wdXNoKGN0cmwpO1xyXG5cclxuICAgICAgLy8gc2F2ZSB0aGUgZmlyc3QgY3RybFxyXG4gICAgICBpZiAodGhpcy5fY29udHJvbHMubGVuZ3RoID09PSAxKVxyXG4gICAgICAgIHRoaXMuQ29udHJvbFRvRm9jdXMgPSBjdHJsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyByZW1vdmVzIGEgcmVmZXJlbmNlIHRvIGEgY29udHJvbCBhdHRhY2hlZCB0byB0aGlzIGZpZWxkXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImN0cmxcIj50aGUgY29udHJvbCB3aGljaCBpcyBhdHRhY2hlZCB0byB0aGlzIGZpZWxkPC9wYXJhbT5cclxuICBSZW1vdmVDb250cm9sKGN0cmw6IE1nQ29udHJvbEJhc2UpOiB2b2lkIHtcclxuICAgIHRoaXMuX2NvbnRyb2xzLlJlbW92ZShjdHJsKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gUmV0dXJucyB0aGUgbGlzdCBvZiByYWRpbyBjb250cm9scyB3aGljaCBhcmUgYXR0YWNoZWQgdG8gdGhlIHNhbWUgZmllbGQgYW5kIHJlc2lkZXMgb24gdGhlIHNhbWUgdGFzay5cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIEdldFJhZGlvQ3RybHMoKTogTGlzdDxNZ0NvbnRyb2xCYXNlPiB7XHJcbiAgICBsZXQgbGlzdDogTGlzdDxNZ0NvbnRyb2xCYXNlPiA9IG5ldyBMaXN0PE1nQ29udHJvbEJhc2U+KCk7XHJcblxyXG4gICAgaWYgKHRoaXMuX2NvbnRyb2xzICE9PSBudWxsKSB7XHJcbiAgICAgIGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCB0aGlzLl9jb250cm9scy5sZW5ndGg7IGkgPSBpICsgMSkge1xyXG4gICAgICAgIGxldCBjdHJsOiBNZ0NvbnRyb2xCYXNlID0gdGhpcy5fY29udHJvbHNbaV07XHJcblxyXG4gICAgICAgIGlmIChjdHJsLmlzUmFkaW8oKSlcclxuICAgICAgICAgIGxpc3QucHVzaChjdHJsKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGxpc3Q7XHJcbiAgfVxyXG5cclxuICB0b1N0cmluZygpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIE5TdHJpbmcuRm9ybWF0KFwiKEZpZWxkIHswfS17MX0pIGluIHRhc2sgezJ9XCIsIHRoaXMuX2lkLCB0aGlzLl92YXJOYW1lLCB0aGlzLmdldFRhc2soKSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|