@magic-xpa/gui 4.1100.0-dev4110.24 → 4.1100.0-dev4110.240
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/{esm2020 → esm2022}/index.mjs +71 -71
- package/{esm2020 → esm2022}/magic-xpa-gui.mjs +1 -1
- package/esm2022/src/Commands.mjs +184 -0
- package/esm2022/src/Events.mjs +425 -0
- package/esm2022/src/EventsProcessor.mjs +67 -0
- package/esm2022/src/FocusManager.mjs +34 -0
- package/esm2022/src/GuiConstants.mjs +68 -0
- package/{esm2020 → esm2022}/src/GuiEnums.mjs +299 -299
- package/esm2022/src/GuiEnvironment.mjs +4 -0
- package/{esm2020 → esm2022}/src/IFlowMonitorQueue.mjs +1 -1
- package/{esm2020 → esm2022}/src/Manager.mjs +91 -91
- package/esm2022/src/UIBridge.mjs +33 -0
- package/{esm2020 → esm2022}/src/env/IEnvironment.mjs +1 -1
- package/{esm2020 → esm2022}/src/gui/ControlBase.mjs +2 -2
- package/esm2022/src/gui/GuiMgControl.mjs +123 -0
- package/{esm2020 → esm2022}/src/gui/GuiMgForm.mjs +3 -3
- package/esm2022/src/gui/KeyboardItem.mjs +135 -0
- package/esm2022/src/gui/LastFocusedVal.mjs +11 -0
- package/esm2022/src/gui/MgValue.mjs +16 -0
- package/{esm2020 → esm2022}/src/gui/PropParentInterface.mjs +1 -1
- package/{esm2020 → esm2022}/src/gui/low/DialogHandler.mjs +6 -6
- package/esm2022/src/gui/low/GuiCommand.mjs +68 -0
- package/esm2022/src/gui/low/GuiCommandQueue.mjs +35 -0
- package/esm2022/src/gui/low/GuiInteractive.mjs +177 -0
- package/esm2022/src/gui/low/Style.mjs +20 -0
- package/esm2022/src/management/RuntimeContextBase.mjs +42 -0
- package/esm2022/src/management/data/BlobType.mjs +281 -0
- package/{esm2020 → esm2022}/src/management/data/DcValues.mjs +214 -214
- package/esm2022/src/management/data/DcValuesBuilderBase.mjs +96 -0
- package/esm2022/src/management/data/FieldDef.mjs +331 -0
- package/esm2022/src/management/data/FieldsTable.mjs +54 -0
- package/esm2022/src/management/data/GuiDataViewBase.mjs +88 -0
- package/esm2022/src/management/data/GuiFieldBase.mjs +82 -0
- package/{esm2020 → esm2022}/src/management/data/IRecord.mjs +1 -1
- package/{esm2020 → esm2022}/src/management/data/IReferencedObject.mjs +1 -1
- package/esm2022/src/management/data/NUM_TYPE.mjs +1739 -0
- package/esm2022/src/management/data/ObjectReferenceBase.mjs +48 -0
- package/esm2022/src/management/data/ObjectReferencesCollection.mjs +27 -0
- package/esm2022/src/management/data/RecordUtils.mjs +361 -0
- package/esm2022/src/management/data/VectorType.mjs +612 -0
- package/esm2022/src/management/data/VectorTypeBase.mjs +88 -0
- package/{esm2020 → esm2022}/src/management/events/IActionManager.mjs +1 -1
- package/{esm2020 → esm2022}/src/management/events/IGuiEventsManager.mjs +1 -1
- package/esm2022/src/management/exp/ExpressionInterface.mjs +244 -0
- package/{esm2020 → esm2022}/src/management/exp/GuiExpressionEvaluator.mjs +305 -307
- package/esm2022/src/management/gui/ControlTable.mjs +118 -0
- package/esm2022/src/management/gui/DisplayConvertor.mjs +1649 -0
- package/esm2022/src/management/gui/FieldValidator.mjs +711 -0
- package/esm2022/src/management/gui/GuiControlPropertyAdapter.mjs +24 -0
- package/{esm2020 → esm2022}/src/management/gui/GuiFormPropertyAdapter.mjs +10 -10
- package/esm2022/src/management/gui/HebrewDate.mjs +278 -0
- package/esm2022/src/management/gui/Helps.mjs +237 -0
- package/esm2022/src/management/gui/MgControlBase.mjs +1859 -0
- package/esm2022/src/management/gui/MgFormBase.mjs +741 -0
- package/esm2022/src/management/gui/PIC.mjs +1185 -0
- package/esm2022/src/management/gui/PropDefaults.mjs +230 -0
- package/{esm2020 → esm2022}/src/management/gui/PropInterface.mjs +246 -245
- package/esm2022/src/management/gui/PropTable.mjs +221 -0
- package/esm2022/src/management/gui/Property.mjs +1362 -0
- package/esm2022/src/management/gui/ValidationDetails.mjs +248 -0
- package/esm2022/src/management/gui/ValidationDetailsBase.mjs +93 -0
- package/esm2022/src/management/gui/WrongFormatException.mjs +29 -0
- package/esm2022/src/management/tasks/GuiDataCollection.mjs +4 -0
- package/esm2022/src/management/tasks/GuiTaskBase.mjs +511 -0
- package/{esm2020 → esm2022}/src/management/tasks/IMGDataTable.mjs +1 -1
- package/{esm2020 → esm2022}/src/management/tasks/ITask.mjs +1 -1
- package/esm2022/src/management/tasks/MgTimer.mjs +21 -0
- package/esm2022/src/management/tasks/TaskDefinitionId.mjs +54 -0
- package/esm2022/src/management/tasks/TaskDefinitionIdTableSaxHandler.mjs +41 -0
- package/esm2022/src/util/MemoryUtil.mjs +35 -0
- package/{esm2020 → esm2022}/src/util/ObjectReference.mjs +36 -36
- package/esm2022/src/util/UsernamePasswordCredentials.mjs +52 -0
- package/{fesm2020 → fesm2022}/magic-xpa-gui.mjs +16074 -16074
- package/fesm2022/magic-xpa-gui.mjs.map +1 -0
- package/index.d.ts +70 -70
- package/package.json +6 -12
- package/src/Commands.d.ts +40 -39
- package/src/Events.d.ts +157 -155
- package/src/EventsProcessor.d.ts +13 -13
- package/src/FocusManager.d.ts +8 -8
- package/src/GuiConstants.d.ts +65 -65
- package/src/GuiEnums.d.ts +282 -282
- package/src/GuiEnvironment.d.ts +4 -4
- package/src/IFlowMonitorQueue.d.ts +3 -3
- package/src/Manager.d.ts +26 -26
- package/src/UIBridge.d.ts +16 -16
- package/src/env/IEnvironment.d.ts +31 -31
- package/src/gui/ControlBase.d.ts +4 -4
- package/src/gui/GuiMgControl.d.ts +38 -38
- package/src/gui/GuiMgForm.d.ts +3 -3
- package/src/gui/KeyboardItem.d.ts +18 -18
- package/src/gui/LastFocusedVal.d.ts +7 -7
- package/src/gui/MgValue.d.ts +15 -15
- package/src/gui/PropParentInterface.d.ts +13 -13
- package/src/gui/low/DialogHandler.d.ts +4 -4
- package/src/gui/low/GuiCommand.d.ts +37 -37
- package/src/gui/low/GuiCommandQueue.d.ts +13 -13
- package/src/gui/low/GuiInteractive.d.ts +55 -53
- package/src/gui/low/Style.d.ts +19 -19
- package/src/management/RuntimeContextBase.d.ts +23 -23
- package/src/management/data/BlobType.d.ts +29 -29
- package/src/management/data/DcValues.d.ts +33 -33
- package/src/management/data/DcValuesBuilderBase.d.ts +17 -17
- package/src/management/data/FieldDef.d.ts +53 -53
- package/src/management/data/FieldsTable.d.ts +16 -16
- package/src/management/data/GuiDataViewBase.d.ts +27 -27
- package/src/management/data/GuiFieldBase.d.ts +17 -17
- package/src/management/data/IRecord.d.ts +12 -12
- package/src/management/data/IReferencedObject.d.ts +5 -5
- package/src/management/data/NUM_TYPE.d.ts +103 -103
- package/src/management/data/ObjectReferenceBase.d.ts +16 -16
- package/src/management/data/ObjectReferencesCollection.d.ts +10 -10
- package/src/management/data/RecordUtils.d.ts +21 -21
- package/src/management/data/VectorType.d.ts +52 -52
- package/src/management/data/VectorTypeBase.d.ts +8 -8
- package/src/management/events/IActionManager.d.ts +7 -7
- package/src/management/events/IGuiEventsManager.d.ts +20 -20
- package/src/management/exp/ExpressionInterface.d.ts +242 -242
- package/src/management/exp/GuiExpressionEvaluator.d.ts +47 -47
- package/src/management/gui/ControlTable.d.ts +28 -28
- package/src/management/gui/DisplayConvertor.d.ts +103 -103
- package/src/management/gui/FieldValidator.d.ts +35 -35
- package/src/management/gui/GuiControlPropertyAdapter.d.ts +40 -40
- package/src/management/gui/GuiFormPropertyAdapter.d.ts +17 -17
- package/src/management/gui/HebrewDate.d.ts +46 -46
- package/src/management/gui/Helps.d.ts +51 -51
- package/src/management/gui/MgControlBase.d.ts +223 -223
- package/src/management/gui/MgFormBase.d.ts +160 -160
- package/src/management/gui/PIC.d.ts +108 -108
- package/src/management/gui/PropDefaults.d.ts +7 -7
- package/src/management/gui/PropInterface.d.ts +244 -243
- package/src/management/gui/PropTable.d.ts +33 -33
- package/src/management/gui/Property.d.ts +121 -121
- package/src/management/gui/ValidationDetails.d.ts +52 -52
- package/src/management/gui/ValidationDetailsBase.d.ts +14 -14
- package/src/management/gui/WrongFormatException.d.ts +9 -9
- package/src/management/tasks/GuiDataCollection.d.ts +4 -4
- package/src/management/tasks/GuiTaskBase.d.ts +150 -150
- package/src/management/tasks/IMGDataTable.d.ts +10 -10
- package/src/management/tasks/ITask.d.ts +6 -6
- package/src/management/tasks/MgTimer.d.ts +8 -8
- package/src/management/tasks/TaskDefinitionId.d.ts +16 -16
- package/src/management/tasks/TaskDefinitionIdTableSaxHandler.d.ts +7 -7
- package/src/util/MemoryUtil.d.ts +6 -6
- package/src/util/ObjectReference.d.ts +9 -9
- package/src/util/UsernamePasswordCredentials.d.ts +18 -18
- package/esm2020/src/Commands.mjs +0 -177
- package/esm2020/src/Events.mjs +0 -420
- package/esm2020/src/EventsProcessor.mjs +0 -67
- package/esm2020/src/FocusManager.mjs +0 -34
- package/esm2020/src/GuiConstants.mjs +0 -68
- package/esm2020/src/GuiEnvironment.mjs +0 -4
- package/esm2020/src/UIBridge.mjs +0 -32
- package/esm2020/src/gui/GuiMgControl.mjs +0 -125
- package/esm2020/src/gui/KeyboardItem.mjs +0 -135
- package/esm2020/src/gui/LastFocusedVal.mjs +0 -11
- package/esm2020/src/gui/MgValue.mjs +0 -16
- package/esm2020/src/gui/low/GuiCommand.mjs +0 -66
- package/esm2020/src/gui/low/GuiCommandQueue.mjs +0 -35
- package/esm2020/src/gui/low/GuiInteractive.mjs +0 -165
- package/esm2020/src/gui/low/Style.mjs +0 -20
- package/esm2020/src/management/RuntimeContextBase.mjs +0 -43
- package/esm2020/src/management/data/BlobType.mjs +0 -281
- package/esm2020/src/management/data/DcValuesBuilderBase.mjs +0 -96
- package/esm2020/src/management/data/FieldDef.mjs +0 -331
- package/esm2020/src/management/data/FieldsTable.mjs +0 -54
- package/esm2020/src/management/data/GuiDataViewBase.mjs +0 -90
- package/esm2020/src/management/data/GuiFieldBase.mjs +0 -82
- package/esm2020/src/management/data/NUM_TYPE.mjs +0 -1741
- package/esm2020/src/management/data/ObjectReferenceBase.mjs +0 -48
- package/esm2020/src/management/data/ObjectReferencesCollection.mjs +0 -29
- package/esm2020/src/management/data/RecordUtils.mjs +0 -361
- package/esm2020/src/management/data/VectorType.mjs +0 -612
- package/esm2020/src/management/data/VectorTypeBase.mjs +0 -88
- package/esm2020/src/management/exp/ExpressionInterface.mjs +0 -244
- package/esm2020/src/management/gui/ControlTable.mjs +0 -118
- package/esm2020/src/management/gui/DisplayConvertor.mjs +0 -1679
- package/esm2020/src/management/gui/FieldValidator.mjs +0 -711
- package/esm2020/src/management/gui/GuiControlPropertyAdapter.mjs +0 -22
- package/esm2020/src/management/gui/HebrewDate.mjs +0 -278
- package/esm2020/src/management/gui/Helps.mjs +0 -237
- package/esm2020/src/management/gui/MgControlBase.mjs +0 -1858
- package/esm2020/src/management/gui/MgFormBase.mjs +0 -738
- package/esm2020/src/management/gui/PIC.mjs +0 -1185
- package/esm2020/src/management/gui/PropDefaults.mjs +0 -230
- package/esm2020/src/management/gui/PropTable.mjs +0 -221
- package/esm2020/src/management/gui/Property.mjs +0 -1356
- package/esm2020/src/management/gui/ValidationDetails.mjs +0 -248
- package/esm2020/src/management/gui/ValidationDetailsBase.mjs +0 -93
- package/esm2020/src/management/gui/WrongFormatException.mjs +0 -29
- package/esm2020/src/management/tasks/GuiDataCollection.mjs +0 -4
- package/esm2020/src/management/tasks/GuiTaskBase.mjs +0 -510
- package/esm2020/src/management/tasks/MgTimer.mjs +0 -21
- package/esm2020/src/management/tasks/TaskDefinitionId.mjs +0 -54
- package/esm2020/src/management/tasks/TaskDefinitionIdTableSaxHandler.mjs +0 -41
- package/esm2020/src/util/MemoryUtil.mjs +0 -35
- package/esm2020/src/util/UsernamePasswordCredentials.mjs +0 -52
- package/fesm2015/magic-xpa-gui.mjs +0 -16364
- package/fesm2015/magic-xpa-gui.mjs.map +0 -1
- package/fesm2020/magic-xpa-gui.mjs.map +0 -1
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { XMLConstants } from '@magic-xpa/utils';
|
|
2
|
+
import { MgControlBase } from './MgControlBase';
|
|
3
|
+
import { List, NString } from '@magic-xpa/mscorelib';
|
|
4
|
+
export class ControlTable {
|
|
5
|
+
_controls = null;
|
|
6
|
+
_mgForm = null;
|
|
7
|
+
constructor() {
|
|
8
|
+
this._controls = new List();
|
|
9
|
+
}
|
|
10
|
+
fillData(mgForm, parser) {
|
|
11
|
+
this._mgForm = mgForm;
|
|
12
|
+
while (this.initInnerObjects(parser.getNextTag(), parser)) {
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
initInnerObjects(foundTagName, parser) {
|
|
16
|
+
if (foundTagName === null)
|
|
17
|
+
return false;
|
|
18
|
+
if (foundTagName === XMLConstants.MG_TAG_CONTROL) {
|
|
19
|
+
let control = this._mgForm.ConstructMgControl();
|
|
20
|
+
control.fillData(this._mgForm, this._controls.length, parser);
|
|
21
|
+
this._controls.push(control);
|
|
22
|
+
}
|
|
23
|
+
else if (foundTagName === ("/" + XMLConstants.MG_TAG_CONTROL)) {
|
|
24
|
+
parser.setCurrIndex2EndOfTag();
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
else
|
|
28
|
+
return false;
|
|
29
|
+
return true;
|
|
30
|
+
}
|
|
31
|
+
getSize() {
|
|
32
|
+
return this._controls.length;
|
|
33
|
+
}
|
|
34
|
+
getCtrl(idxOrCtrlName) {
|
|
35
|
+
if (arguments.length === 1 && (idxOrCtrlName === null || typeof idxOrCtrlName === "undefined" || idxOrCtrlName.constructor === Number)) {
|
|
36
|
+
return this.getCtrl_0(idxOrCtrlName);
|
|
37
|
+
}
|
|
38
|
+
return this.getCtrl_1(idxOrCtrlName);
|
|
39
|
+
}
|
|
40
|
+
getCtrl_0(idx) {
|
|
41
|
+
if (idx < this.getSize())
|
|
42
|
+
return this._controls.get_Item(idx);
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
getCtrl_1(ctrlName) {
|
|
46
|
+
if (!NString.IsNullOrEmpty(ctrlName)) {
|
|
47
|
+
return this._controls.find(ctrl => {
|
|
48
|
+
return (NString.Equals(ctrlName, ctrl.getName(), true) ||
|
|
49
|
+
NString.Equals(ctrlName, ctrl.Name, true));
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
return null;
|
|
53
|
+
}
|
|
54
|
+
getCtrlByName(ctrlName, ctrlType) {
|
|
55
|
+
if (!NString.IsNullOrEmpty(ctrlName)) {
|
|
56
|
+
return this._controls.find(ctrl => {
|
|
57
|
+
return ((ctrl.Type === ctrlType) && NString.Equals(ctrlName, ctrl.getName(), true) ||
|
|
58
|
+
NString.Equals(ctrlName, ctrl.Name, true));
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
63
|
+
GetControlByIsn(isn) {
|
|
64
|
+
let ctrlByIsn = null;
|
|
65
|
+
ctrlByIsn = this._controls.find(ctrl => {
|
|
66
|
+
return (ctrl.ControlIsn === isn);
|
|
67
|
+
});
|
|
68
|
+
return ctrlByIsn;
|
|
69
|
+
}
|
|
70
|
+
GetControl(predicate) {
|
|
71
|
+
return this._controls.find(predicate);
|
|
72
|
+
}
|
|
73
|
+
filter(callackFuntion) {
|
|
74
|
+
return this._controls.filter(callackFuntion);
|
|
75
|
+
}
|
|
76
|
+
contains(ctrl) {
|
|
77
|
+
let contains = false;
|
|
78
|
+
if (ctrl !== null)
|
|
79
|
+
contains = this._controls.Contains(ctrl);
|
|
80
|
+
return contains;
|
|
81
|
+
}
|
|
82
|
+
addControl(ctrl) {
|
|
83
|
+
this._controls.push(ctrl);
|
|
84
|
+
}
|
|
85
|
+
setControlAt(ctrl, index) {
|
|
86
|
+
if (this._controls.length <= index)
|
|
87
|
+
this._controls.SetSize(index + 1);
|
|
88
|
+
this._controls.set_Item(index, ctrl);
|
|
89
|
+
}
|
|
90
|
+
deleteControlAt(index) {
|
|
91
|
+
this._controls.set_Item(index, null);
|
|
92
|
+
}
|
|
93
|
+
Remove(ctrlOrIdx) {
|
|
94
|
+
if (arguments.length === 1 && (ctrlOrIdx === null || ctrlOrIdx instanceof MgControlBase)) {
|
|
95
|
+
return this.Remove_0(ctrlOrIdx);
|
|
96
|
+
}
|
|
97
|
+
this.Remove_1(ctrlOrIdx);
|
|
98
|
+
}
|
|
99
|
+
Remove_0(ctrl) {
|
|
100
|
+
this._controls.Remove(ctrl);
|
|
101
|
+
return this._controls.Contains(ctrl);
|
|
102
|
+
}
|
|
103
|
+
Remove_1(idx) {
|
|
104
|
+
this._controls.RemoveAt(idx);
|
|
105
|
+
}
|
|
106
|
+
getControlIdx(inCtrl, includeSubs) {
|
|
107
|
+
let counter = 0;
|
|
108
|
+
for (let i = 0; i < this._controls.length; i++) {
|
|
109
|
+
let ctrl = this._controls.get_Item(i);
|
|
110
|
+
if (inCtrl === ctrl)
|
|
111
|
+
return counter;
|
|
112
|
+
else if (includeSubs || !ctrl.isSubform())
|
|
113
|
+
counter++;
|
|
114
|
+
}
|
|
115
|
+
return -1;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29udHJvbFRhYmxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ3VpL3NyYy9tYW5hZ2VtZW50L2d1aS9Db250cm9sVGFibGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixZQUFZLEVBQWEsTUFBTSxrQkFBa0IsQ0FBQztBQUUxRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVyRCxNQUFNLE9BQU8sWUFBWTtJQUNmLFNBQVMsR0FBd0IsSUFBSSxDQUFDO0lBQ3RDLE9BQU8sR0FBZSxJQUFJLENBQUM7SUFHbkM7UUFDRSxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUdELFFBQVEsQ0FBQyxNQUFrQixFQUFFLE1BQWlCO1FBRTVDLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDO1FBQzVELENBQUM7SUFDSCxDQUFDO0lBS08sZ0JBQWdCLENBQUMsWUFBb0IsRUFBRSxNQUFpQjtRQUM5RCxJQUFJLFlBQVksS0FBSyxJQUFJO1lBQ3ZCLE9BQU8sS0FBSyxDQUFDO1FBRWYsSUFBSSxZQUFZLEtBQUssWUFBWSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ2pELElBQUksT0FBTyxHQUFrQixJQUFJLENBQUMsT0FBTyxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDL0QsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQzlELElBQUksQ0FBQyxTQUFTLENB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T0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBSU8sUUFBUSxDQUFDLEdBQVc7UUFDMUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUtELGFBQWEsQ0FBQyxNQUFxQixFQUFFLFdBQW9CO1FBQ3ZELElBQUksT0FBTyxHQUFXLENBQUMsQ0FBQztRQUN4QixLQUFLLElBQUksQ0FBQyxHQUFXLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUN2RCxJQUFJLElBQUksR0FBa0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDckQsSUFBSSxNQUFNLEtBQUssSUFBSTtnQkFDakIsT0FBTyxPQUFPLENBQUM7aUJBQ1osSUFBSSxXQUFXLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFO2dCQUN2QyxPQUFPLEVBQUUsQ0FBQztRQUNkLENBQUM7UUFDRCxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ1osQ0FBQztDQUdGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWdDb250cm9sVHlwZSwgWE1MQ29uc3RhbnRzLCBYbWxQYXJzZXIgfSBmcm9tICdAbWFnaWMteHBhL3V0aWxzJztcclxuaW1wb3J0IHsgTWdGb3JtQmFzZSB9IGZyb20gJy4vTWdGb3JtQmFzZSc7XHJcbmltcG9ydCB7IE1nQ29udHJvbEJhc2UgfSBmcm9tICcuL01nQ29udHJvbEJhc2UnO1xyXG5pbXBvcnQgeyBMaXN0LCBOU3RyaW5nIH0gZnJvbSAnQG1hZ2ljLXhwYS9tc2NvcmVsaWInO1xyXG5cclxuZXhwb3J0IGNsYXNzIENvbnRyb2xUYWJsZSB7XHJcbiAgcHJpdmF0ZSBfY29udHJvbHM6IExpc3Q8TWdDb250cm9sQmFzZT4gPSBudWxsO1xyXG4gIHByaXZhdGUgX21nRm9ybTogTWdGb3JtQmFzZSA9IG51bGw7XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5DVE9SPC9zdW1tYXJ5PlxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgdGhpcy5fY29udHJvbHMgPSBuZXcgTGlzdCgpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PnBhcnNlIGlucHV0IHN0cmluZyBhbmQgZmlsbCBpbm5lciBkYXRhPC9zdW1tYXJ5PlxyXG4gIGZpbGxEYXRhKG1nRm9ybTogTWdGb3JtQmFzZSwgcGFyc2VyOiBYbWxQYXJzZXIpOiB2b2lkIHtcclxuXHJcbiAgICB0aGlzLl9tZ0Zvcm0gPSBtZ0Zvcm07XHJcbiAgICB3aGlsZSAodGhpcy5pbml0SW5uZXJPYmplY3RzKHBhcnNlci5nZXROZXh0VGFnKCksIHBhcnNlcikpIHtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5UbyBhbGxvY2F0ZSBhbmQgZmlsbCBpbm5lciBvYmplY3RzIG9mIHRoZSBjbGFzczwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImZvdW5kVGFnTmFtZVwiPm5hbWUgb2YgdGFnLCBvZiBvYmplY3QsIHdoaWNoIG5lZWQgYmUgYWxsb2NhdGVkPC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+IGJvb2xlYW4gaWYgaW5uZXIgdGFncyBmaW5pc2hlZDwvcmV0dXJucz5cclxuICBwcml2YXRlIGluaXRJbm5lck9iamVjdHMoZm91bmRUYWdOYW1lOiBzdHJpbmcsIHBhcnNlcjogWG1sUGFyc2VyKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoZm91bmRUYWdOYW1lID09PSBudWxsKVxyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgaWYgKGZvdW5kVGFnTmFtZSA9PT0gWE1MQ29uc3RhbnRzLk1HX1RBR19DT05UUk9MKSB7XHJcbiAgICAgIGxldCBjb250cm9sOiBNZ0NvbnRyb2xCYXNlID0gdGhpcy5fbWdGb3JtLkNvbnN0cnVjdE1nQ29udHJvbCgpO1xyXG4gICAgICBjb250cm9sLmZpbGxEYXRhKHRoaXMuX21nRm9ybSwgdGhpcy5fY29udHJvbHMubGVuZ3RoLCBwYXJzZXIpO1xyXG4gICAgICB0aGlzLl9jb250cm9scy5wdXNoKGNvbnRyb2wpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoZm91bmRUYWdOYW1lID09PSAoXCIvXCIgKyBYTUxDb25zdGFudHMuTUdfVEFHX0NPTlRST0wpKSB7XHJcbiAgICAgICAgcGFyc2VyLnNldEN1cnJJbmRleDJFbmRPZlRhZygpO1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIGVsc2VcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PmdldCB0aGUgc2l6ZSBvZiB0aGUgdGFibGU8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPiB0aGUgc2l6ZSBvZiB0aGUgdGFibGU8L3JldHVybnM+XHJcbiAgZ2V0U2l6ZSgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NvbnRyb2xzLmxlbmd0aDtcclxuICB9XHJcblxyXG4gIGdldEN0cmwoaWR4OiBudW1iZXIpOiBNZ0NvbnRyb2xCYXNlO1xyXG4gIGdldEN0cmwoY3RybE5hbWU6IHN0cmluZyk6IE1nQ29udHJvbEJhc2U7XHJcbiAgZ2V0Q3RybChpZHhPckN0cmxOYW1lOiBhbnkpOiBNZ0NvbnRyb2xCYXNlIHtcclxuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAxICYmIChpZHhPckN0cmxOYW1lID09PSBudWxsIHx8IHR5cGVvZiBpZHhPckN0cmxOYW1lID09PSBcInVuZGVmaW5lZFwiIHx8IGlkeE9yQ3RybE5hbWUuY29uc3RydWN0b3IgPT09IE51bWJlcikpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZ2V0Q3RybF8wKGlkeE9yQ3RybE5hbWUpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuZ2V0Q3RybF8xKGlkeE9yQ3RybE5hbWUpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PmdldCBjb250cm9sIGJ5IGl0cyBpbmRleDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImlkeFwiPmlzIHRoZSBpbmRleCBvZiB0aGUgY29udHJvbCBpbiB0aGUgdGFibGU8L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz4gdGhlIHJlcXVlc3RlZCBjb250cm9sIG9iamVjdDwvcmV0dXJucz5cclxuICBwcml2YXRlIGdldEN0cmxfMChpZHg6IG51bWJlcik6IE1nQ29udHJvbEJhc2Uge1xyXG4gICAgaWYgKGlkeCA8IHRoaXMuZ2V0U2l6ZSgpKVxyXG4gICAgICByZXR1cm4gdGhpcy5fY29udHJvbHMuZ2V0X0l0ZW0oaWR4KTtcclxuXHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG5cclxuICAvLy8gPHN1bW1hcnk+Z2V0IGNvbnRyb2wgYnkgaXRzIG5hbWU8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJjdHJsTmFtZVwiPmlzIHRoZSByZXF1ZXN0ZWQgY29udHJvbHMgbmFtZTwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPiB0aGUgcmVxdWVzdGVkIGNvbnRyb2wgb2JqZWN0PC9yZXR1cm5zPlxyXG4gIHByaXZhdGUgZ2V0Q3RybF8xKGN0cmxOYW1lOiBzdHJpbmcpOiBNZ0NvbnRyb2xCYXNlIHtcclxuICAgIGlmICghTlN0cmluZy5Jc051bGxPckVtcHR5KGN0cmxOYW1lKSkge1xyXG5cclxuICAgICAgcmV0dXJuIHRoaXMuX2NvbnRyb2xzLmZpbmQoY3RybCA9PiB7XHJcbiAgICAgICAgcmV0dXJuIChOU3RyaW5nLkVxdWFscyhjdHJsTmFtZSwgY3RybC5nZXROYW1lKCksIHRydWUpIHx8XHJcbiAgICAgICAgICBOU3RyaW5nLkVxdWFscyhjdHJsTmFtZSwgY3RybC5OYW1lLCB0cnVlKSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PmdldCBjb250cm9sICh3aGljaCBpcyBub3QgdGhlIGZyYW1lIGZvcm0pIGJ5IGl0cyBuYW1lPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiY3RybE5hbWVcIj5pcyB0aGUgcmVxdWVzdGVkIGNvbnRyb2xzIG5hbWU8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImN0cmxUeXBlXCI+PC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+IHRoZSByZXF1ZXN0ZWQgY29udHJvbCBvYmplY3Q8L3JldHVybnM+XHJcbiAgZ2V0Q3RybEJ5TmFtZShjdHJsTmFtZTogc3RyaW5nLCBjdHJsVHlwZTogTWdDb250cm9sVHlwZSk6IE1nQ29udHJvbEJhc2Uge1xyXG4gICAgaWYgKCFOU3RyaW5nLklzTnVsbE9yRW1wdHkoY3RybE5hbWUpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLl9jb250cm9scy5maW5kKGN0cmwgPT4ge1xyXG4gICAgICAgIHJldHVybiAoKGN0cmwuVHlwZSA9PT0gY3RybFR5cGUpICYmIE5TdHJpbmcuRXF1YWxzKGN0cmxOYW1lLCBjdHJsLmdldE5hbWUoKSwgdHJ1ZSkgfHxcclxuICAgICAgICAgIE5TdHJpbmcuRXF1YWxzKGN0cmxOYW1lLCBjdHJsLk5hbWUsIHRydWUpKVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBnZXQgYSBjb250cm9sIGJ5IGl0cyBJU05cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImlzblwiPjwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBHZXRDb250cm9sQnlJc24oaXNuOiBudW1iZXIpOiBNZ0NvbnRyb2xCYXNlIHtcclxuICAgIGxldCBjdHJsQnlJc246IE1nQ29udHJvbEJhc2UgPSBudWxsO1xyXG4gICAgY3RybEJ5SXNuID0gdGhpcy5fY29udHJvbHMuZmluZChjdHJsID0+IHtcclxuICAgICAgcmV0dXJuIChjdHJsLkNvbnRyb2xJc24gPT09IGlzbilcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBjdHJsQnlJc247XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIGdldCBhIGNvbnRyb2wgbWF0aGNoaW5nIHRoZSBwcmVkaWNhdGVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInByZWRpY2F0ZVwiPjwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBHZXRDb250cm9sKHByZWRpY2F0ZTogKHZhbHVlOiBNZ0NvbnRyb2xCYXNlKSA9PiBib29sZWFuKTogTWdDb250cm9sQmFzZSB7XHJcbiAgICByZXR1cm4gdGhpcy5fY29udHJvbHMuZmluZChwcmVkaWNhdGUpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGZpbHRlcihjYWxsYWNrRnVudGlvbjogKGl0ZW0sIGluZGV4LCBhcnJheSkgPT4gYm9vbGVhbik6IGFueSB7XHJcbiAgICByZXR1cm4gdGhpcy5fY29udHJvbHMuZmlsdGVyKGNhbGxhY2tGdW50aW9uKTtcclxuXHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+cmV0dXJucyB0cnVlIGlmIHRoaXMgdGFibGUgY29udGFpbnMgdGhlIGdpdmVuIGNvbnRyb2w8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJjdHJsXCI+dGhlIGNvbnRyb2wgdG8gbG9vayBmb3I8L3BhcmFtPlxyXG4gIGNvbnRhaW5zKGN0cmw6IE1nQ29udHJvbEJhc2UpOiBib29sZWFuIHtcclxuICAgIGxldCBjb250YWluczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgaWYgKGN0cmwgIT09IG51bGwpXHJcbiAgICAgIGNvbnRhaW5zID0gdGhpcy5fY29udHJvbHMuQ29udGFpbnMoY3RybCk7XHJcbiAgICByZXR1cm4gY29udGFpbnM7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+YWRkIGEgY29udHJvbCB0byB0aGUgdGFibGU8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJjdHJsXCI+aXMgdGhlIGNvbnRyb2wgdG8gYmUgYWRkZWQ8L3BhcmFtPlxyXG4gIGFkZENvbnRyb2woY3RybDogTWdDb250cm9sQmFzZSk6IHZvaWQge1xyXG4gICAgdGhpcy5fY29udHJvbHMucHVzaChjdHJsKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5zZXQgYSBjb250cm9sIHRvIGEgY2VsbCBpbiB0aGUgdGFibGU8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJjdHJsXCI+aXMgdGhlIGNvbnRyb2wgdG8gYmUgYWRkZWQ8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiaW5kZXhcIj53aGVyZSB0byBzZXQgdGhlIGNvbnRyb2w8L3BhcmFtPlxyXG4gIHNldENvbnRyb2xBdChjdHJsOiBNZ0NvbnRyb2xCYXNlLCBpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5fY29udHJvbHMubGVuZ3RoIDw9IGluZGV4KVxyXG4gICAgICB0aGlzLl9jb250cm9scy5TZXRTaXplKGluZGV4ICsgMSk7XHJcbiAgICB0aGlzLl9jb250cm9scy5zZXRfSXRlbShpbmRleCwgY3RybCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+cmVwbGFjZSBhIGNvbnRyb2wgaW4gdGhlIGNvbnRyb2wgdGFibGUgd2l0aCBudWxsPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiaW5kZXhcIj5vZiBjb250cm9sIHRvIGJlIGRlbGV0ZWQ8L3BhcmFtPlxyXG4gIGRlbGV0ZUNvbnRyb2xBdChpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLl9jb250cm9scy5zZXRfSXRlbShpbmRleCwgbnVsbCk7XHJcbiAgfVxyXG5cclxuICBSZW1vdmUoY3RybDogTWdDb250cm9sQmFzZSk6IGJvb2xlYW47XHJcbiAgUmVtb3ZlKGlkeDogbnVtYmVyKTtcclxuICBSZW1vdmUoY3RybE9ySWR4OiBhbnkpOiBib29sZWFuIHtcclxuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAxICYmIChjdHJsT3JJZHggPT09IG51bGwgfHwgY3RybE9ySWR4IGluc3RhbmNlb2YgTWdDb250cm9sQmFzZSkpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuUmVtb3ZlXzAoY3RybE9ySWR4KTtcclxuICAgIH1cclxuICAgIHRoaXMuUmVtb3ZlXzEoY3RybE9ySWR4KTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5yZW1vdmVzIGEgY29udHJvbCBmcm9tIHRoZSB0YWJsZSBhbmQgcmV0dXJucyB0cnVlIG9uIHN1Y2Nlc3M8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJjdHJsXCI+dGhlIGNvbnRyb2wgdG8gcmVtb3ZlPC9wYXJhbT5cclxuICBwcml2YXRlIFJlbW92ZV8wKGN0cmw6IE1nQ29udHJvbEJhc2UpOiBib29sZWFuIHtcclxuICAgIHRoaXMuX2NvbnRyb2xzLlJlbW92ZShjdHJsKTtcclxuICAgIHJldHVybiB0aGlzLl9jb250cm9scy5Db250YWlucyhjdHJsKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5yZW1vdmVzIGEgY29udHJvbCBmcm9tIHRoZSB0YWJsZSBieSBpbmRleC48L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJpZHhcIj50aGUgaWR4IG9mIHRoZSBjb250cm9sIHRvIGJlIHJlbW92ZWQ8L3BhcmFtPlxyXG4gIHByaXZhdGUgUmVtb3ZlXzEoaWR4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuX2NvbnRyb2xzLlJlbW92ZUF0KGlkeCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImluQ3RybFwiPnRoZSBjb250cm9sIHdob3NlIGluZGV4IHdlIG5lZWQ8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImluY2x1ZGVTdWJzXCI+PC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+IGlkeCBvZiBhIGNvbnRyb2wgaW4gdGhlIHRhYmxlLCBleGNsdWRpbmcgc3ViZm9ybXMgY29udHJvbDwvcmV0dXJucz5cclxuICBnZXRDb250cm9sSWR4KGluQ3RybDogTWdDb250cm9sQmFzZSwgaW5jbHVkZVN1YnM6IGJvb2xlYW4pOiBudW1iZXIge1xyXG4gICAgbGV0IGNvdW50ZXI6IG51bWJlciA9IDA7XHJcbiAgICBmb3IgKGxldCBpOiBudW1iZXIgPSAwOyBpIDwgdGhpcy5fY29udHJvbHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IGN0cmw6IE1nQ29udHJvbEJhc2UgPSB0aGlzLl9jb250cm9scy5nZXRfSXRlbShpKTtcclxuICAgICAgaWYgKGluQ3RybCA9PT0gY3RybClcclxuICAgICAgICByZXR1cm4gY291bnRlcjtcclxuICAgICAgZWxzZSBpZiAoaW5jbHVkZVN1YnMgfHwgIWN0cmwuaXNTdWJmb3JtKCkpXHJcbiAgICAgICAgY291bnRlcisrO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIC0xO1xyXG4gIH1cclxuXHJcblxyXG59XHJcbiJdfQ==
|