@magic-xpa/gui 4.800.0-dev480.94 → 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} +126 -127
- 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} +2 -1
- 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/esm2020/src/gui/low/Style.mjs +47 -0
- package/esm2020/src/management/RuntimeContextBase.mjs +52 -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} +2 -1
- 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/esm2020/src/management/gui/PIC.mjs +1178 -0
- package/esm2020/src/management/gui/PropDefaults.mjs +230 -0
- package/{esm2015/src/management/gui/PropInterface.js → esm2020/src/management/gui/PropInterface.mjs} +2 -4
- 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/esm2020/src/management/tasks/TaskDefinitionId.mjs +54 -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} +305 -365
- 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/Commands.d.ts +1 -0
- package/src/Events.d.ts +2 -2
- package/src/EventsProcessor.d.ts +1 -1
- package/src/GuiEnums.d.ts +125 -126
- package/src/IFlowMonitorQueue.d.ts +1 -1
- package/src/Manager.d.ts +2 -3
- package/src/env/IEnvironment.d.ts +1 -0
- package/src/gui/low/GuiInteractive.d.ts +3 -1
- package/src/gui/low/Style.d.ts +0 -3
- package/src/management/RuntimeContextBase.d.ts +2 -0
- package/src/management/data/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/ExpressionInterface.d.ts +1 -0
- 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 +4 -5
- package/src/management/gui/MgFormBase.d.ts +1 -1
- package/src/management/gui/PropInterface.d.ts +2 -4
- package/src/management/gui/PropTable.d.ts +1 -1
- package/src/management/gui/Property.d.ts +3 -3
- package/src/management/tasks/GuiTaskBase.d.ts +3 -8
- package/src/management/tasks/TaskDefinitionId.d.ts +1 -0
- package/src/util/ProcessLauncher.d.ts +1 -3
- package/bundles/magic-xpa-gui.umd.js +0 -19459
- 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 -185
- 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 -539
- package/esm2015/src/gui/low/Style.js +0 -50
- package/esm2015/src/management/RuntimeContextBase.js +0 -50
- 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 -1979
- package/esm2015/src/management/gui/MgFormBase.js +0 -763
- package/esm2015/src/management/gui/PIC.js +0 -1176
- package/esm2015/src/management/gui/PropDefaults.js +0 -232
- package/esm2015/src/management/gui/PropTable.js +0 -224
- package/esm2015/src/management/gui/Property.js +0 -1409
- package/esm2015/src/management/tasks/GuiTaskBase.js +0 -533
- package/esm2015/src/management/tasks/MgTimer.js +0 -21
- package/esm2015/src/management/tasks/TaskDefinitionId.js +0 -47
- 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
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
import { NString, StackFrame } from "@magic-xpa/mscorelib";
|
|
2
|
+
import { UtilImeJpn, UtilStrByteMode } from "@magic-xpa/utils";
|
|
3
|
+
import { GuiMgControl } from "./gui/GuiMgControl";
|
|
4
|
+
import { Commands } from "./Commands";
|
|
5
|
+
import { CommandType, HtmlProperties } from "./GuiEnums";
|
|
6
|
+
import { Events } from "./Events";
|
|
7
|
+
import { GuiMgForm } from "./gui/GuiMgForm";
|
|
8
|
+
import { PropInterface } from "./management/gui/PropInterface";
|
|
9
|
+
import { GuiEnvironment } from "./GuiEnvironment";
|
|
10
|
+
export class Manager {
|
|
11
|
+
static SetCurrentContextID(contextID) {
|
|
12
|
+
Manager._currentContextID = contextID;
|
|
13
|
+
}
|
|
14
|
+
static GetCurrentContextID() {
|
|
15
|
+
return Manager._currentContextID;
|
|
16
|
+
}
|
|
17
|
+
static GetDelayWait() {
|
|
18
|
+
return Manager._delayWait;
|
|
19
|
+
}
|
|
20
|
+
static CanFocus() {
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
static Init(startupImageFileName) {
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
static Abort(form) {
|
|
27
|
+
if (form.getSubFormCtrl() === null && form.Opened) {
|
|
28
|
+
if (form.isDialog()) {
|
|
29
|
+
this.IsOverlayOpen = false;
|
|
30
|
+
let topMostFrameForm = form.getTopMostFrameForm();
|
|
31
|
+
if (topMostFrameForm !== null)
|
|
32
|
+
topMostFrameForm.UpdateModalFormsCount(form, false);
|
|
33
|
+
}
|
|
34
|
+
Commands.addCloseForm(form, "0", form.getTask().getTaskTag());
|
|
35
|
+
Commands.beginInvoke();
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
static GetCtrlVal(ctrl) {
|
|
39
|
+
return Commands.getValue(ctrl, ctrl.getDisplayLine(true));
|
|
40
|
+
}
|
|
41
|
+
static async SetReadOnlyControl(ctrl, isReadOnly) {
|
|
42
|
+
if (ctrl.isTextControl() || ctrl.IsRepeatable) {
|
|
43
|
+
if (UtilStrByteMode.isLocaleDefLangDBCS()) {
|
|
44
|
+
if (await ctrl.getForm().getTask().checkProp(PropInterface.PROP_TYPE_ALLOW_LOCATE_IN_QUERY, false))
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
Commands.addOperationWithLine(CommandType.SET_PROPERTY, ctrl, ctrl.getDisplayLine(false), HtmlProperties.ReadOnly, isReadOnly);
|
|
48
|
+
Commands.beginInvoke();
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
static OpenForm(mgForm) {
|
|
52
|
+
if (!mgForm.Opened && (mgForm.getTask().IsInteractive || mgForm.getTask().isOpenWin())) {
|
|
53
|
+
if (!mgForm.isSubForm()) {
|
|
54
|
+
if (mgForm.isDialog()) {
|
|
55
|
+
this.IsOverlayOpen = true;
|
|
56
|
+
let topMostFrameForm = mgForm.getTopMostFrameForm();
|
|
57
|
+
if (topMostFrameForm !== null)
|
|
58
|
+
topMostFrameForm.UpdateModalFormsCount(mgForm, true);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
mgForm.Opened = true;
|
|
62
|
+
Commands.beginInvoke();
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
static async DoFirstRefreshTable(mgForm) {
|
|
66
|
+
if (mgForm !== null && !mgForm.ignoreFirstRefreshTable) {
|
|
67
|
+
mgForm.ignoreFirstRefreshTable = true;
|
|
68
|
+
await mgForm.firstTableRefresh();
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
static CaretPosGet(ctrl) {
|
|
72
|
+
let caretPos = 0;
|
|
73
|
+
if (ctrl.isTextControl())
|
|
74
|
+
caretPos = Commands.caretPosGet(ctrl, ctrl.getDisplayLine(true));
|
|
75
|
+
return caretPos;
|
|
76
|
+
}
|
|
77
|
+
static ClearStatusBar(task) {
|
|
78
|
+
let currentParkedControl = task.getLastParkedCtrl();
|
|
79
|
+
if (currentParkedControl !== null && !NString.IsNullOrEmpty(currentParkedControl.PromptHelp))
|
|
80
|
+
task.WriteToMessagePane(currentParkedControl.PromptHelp);
|
|
81
|
+
else
|
|
82
|
+
Manager.CleanMessagePane(task);
|
|
83
|
+
}
|
|
84
|
+
static CleanMessagePane(task) {
|
|
85
|
+
task.WriteToMessagePane(Manager.GetCurrentRuntimeContext().DefaultStatusMsg);
|
|
86
|
+
}
|
|
87
|
+
static GetMessage(msg) {
|
|
88
|
+
if (msg === null)
|
|
89
|
+
msg = "";
|
|
90
|
+
else if (msg.length > 0) {
|
|
91
|
+
let idxOfCarriage = msg.indexOf("\r");
|
|
92
|
+
if (idxOfCarriage !== -1)
|
|
93
|
+
msg = msg.substr(0, idxOfCarriage);
|
|
94
|
+
let idxOfNewLine = msg.indexOf("\n");
|
|
95
|
+
if (idxOfNewLine !== -1)
|
|
96
|
+
msg = msg.substr(0, idxOfNewLine);
|
|
97
|
+
}
|
|
98
|
+
return msg;
|
|
99
|
+
}
|
|
100
|
+
static SetEditText(ctrl, text) {
|
|
101
|
+
Commands.setEditText(ctrl, ctrl.getDisplayLine(true), text);
|
|
102
|
+
}
|
|
103
|
+
static InsertEditText(ctrl, startPosition, textToInsert) {
|
|
104
|
+
Commands.insertEditText(ctrl, ctrl.getDisplayLine(true), startPosition, textToInsert);
|
|
105
|
+
}
|
|
106
|
+
static GetTooltipTimeout() {
|
|
107
|
+
return GuiEnvironment.Environment.GetTooltipTimeout();
|
|
108
|
+
}
|
|
109
|
+
static GetSpecialEditLeftAlign() {
|
|
110
|
+
return GuiEnvironment.Environment.GetSpecialEditLeftAlign();
|
|
111
|
+
}
|
|
112
|
+
static GetDefaultDateFormat() {
|
|
113
|
+
let dateFormat = "";
|
|
114
|
+
let dateSeperator = GuiEnvironment.Environment.GetDate();
|
|
115
|
+
switch (GuiEnvironment.Environment.GetDateMode(0)) {
|
|
116
|
+
case 'S':
|
|
117
|
+
dateFormat = "YYYY" + dateSeperator + "MM" + dateSeperator + "DD";
|
|
118
|
+
break;
|
|
119
|
+
case 'B':
|
|
120
|
+
case 'E':
|
|
121
|
+
dateFormat = "DD" + dateSeperator + "MM" + dateSeperator + "YYYY";
|
|
122
|
+
break;
|
|
123
|
+
case 'A':
|
|
124
|
+
dateFormat = "MM" + dateSeperator + "DD" + dateSeperator + "YYYY";
|
|
125
|
+
break;
|
|
126
|
+
}
|
|
127
|
+
return dateFormat;
|
|
128
|
+
}
|
|
129
|
+
static GetDefaultTimeFormat() {
|
|
130
|
+
let timeSeperator = GuiEnvironment.Environment.GetTime();
|
|
131
|
+
let timeFormat = "HH" + timeSeperator + "MM" + timeSeperator + "SS";
|
|
132
|
+
return timeFormat;
|
|
133
|
+
}
|
|
134
|
+
static GetCurrentRuntimeContext() {
|
|
135
|
+
return Events.GetRuntimeContext(Manager.GetCurrentContextID());
|
|
136
|
+
}
|
|
137
|
+
static GetContextID(mgObject) {
|
|
138
|
+
let guiMgForm = null;
|
|
139
|
+
if (mgObject instanceof GuiMgControl)
|
|
140
|
+
guiMgForm = mgObject.GuiMgForm;
|
|
141
|
+
else if (mgObject instanceof GuiMgForm)
|
|
142
|
+
guiMgForm = mgObject;
|
|
143
|
+
return Events.GetContextID(guiMgForm);
|
|
144
|
+
}
|
|
145
|
+
static ShowWindowHelp(filePath, helpCmd, helpKey) {
|
|
146
|
+
}
|
|
147
|
+
static GetSpecialValNewPolicy() {
|
|
148
|
+
return GuiEnvironment.Environment.GetSpecialValNewPolicy();
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
Manager.IsOverlayOpen = false;
|
|
152
|
+
Manager._delayWait = new Object();
|
|
153
|
+
Manager._clipboardData = "";
|
|
154
|
+
Manager._currentContextID = '\0';
|
|
155
|
+
Manager.DefaultProtocol = null;
|
|
156
|
+
Manager.DefaultServerName = null;
|
|
157
|
+
Manager.UtilImeJpn = (UtilStrByteMode.isLocaleDefLangJPN() ? new UtilImeJpn() : null);
|
|
158
|
+
Manager.EventsManager = null;
|
|
159
|
+
export class ContextIDGuard {
|
|
160
|
+
constructor(contextID) {
|
|
161
|
+
this._prevContextID = '\0';
|
|
162
|
+
this._fileName = null;
|
|
163
|
+
if (arguments.length === 0) {
|
|
164
|
+
this.constructor_0();
|
|
165
|
+
return;
|
|
166
|
+
}
|
|
167
|
+
this.constructor_1(contextID);
|
|
168
|
+
}
|
|
169
|
+
constructor_0() {
|
|
170
|
+
this._prevContextID = Manager.GetCurrentContextID();
|
|
171
|
+
this.SaveFilename();
|
|
172
|
+
}
|
|
173
|
+
constructor_1(contextID) {
|
|
174
|
+
this.SetCurrent(contextID);
|
|
175
|
+
this.SaveFilename();
|
|
176
|
+
}
|
|
177
|
+
SetCurrent(contextID) {
|
|
178
|
+
if (contextID !== this._prevContextID) {
|
|
179
|
+
this._prevContextID = contextID;
|
|
180
|
+
Manager.SetCurrentContextID(contextID);
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
SaveFilename() {
|
|
184
|
+
let stackFrame = new StackFrame(1);
|
|
185
|
+
this._fileName = stackFrame.GetFileName();
|
|
186
|
+
}
|
|
187
|
+
Dispose() {
|
|
188
|
+
if (this._prevContextID !== Manager.GetCurrentContextID())
|
|
189
|
+
Manager.SetCurrentContextID(this._prevContextID);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2d1aS9zcmMvTWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUMsT0FBTyxFQUFFLFVBQVUsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBYyxVQUFVLEVBQUUsZUFBZSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFFMUUsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBR2hELE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxZQUFZLENBQUM7QUFFcEMsT0FBTyxFQUFDLFdBQVcsRUFBRSxjQUFjLEVBQUMsTUFBTSxZQUFZLENBQUM7QUFDdkQsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUVoQyxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQzdELE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUdoRCxNQUFNLE9BQU8sT0FBTztJQW1CbEIsTUFBTSxDQUFDLG1CQUFtQixDQUFDLFNBQWlCO1FBQzFDLE9BQU8sQ0FBQyxpQkFBaUIsR0FBRyxTQUFTLENBQUM7SUFDeEMsQ0FBQztJQU1ELE1BQU0sQ0FBQyxtQkFBbUI7UUFDeEIsT0FBTyxPQUFPLENBQUMsaUJBQWlCLENBQUM7SUFDbkMsQ0FBQztJQU1ELE1BQU0sQ0FBQyxZQUFZO1FBQ2pCLE9BQU8sT0FBTyxDQUFDLFVBQVUsQ0FBQztJQUM1QixDQUFDO0lBT0QsTUFBTSxDQUFDLFFBQVE7UUFDYixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFHRCxNQUFNLENBQUMsSUFBSSxDQUFDLG9CQUE0QjtRQUN0QyxPQUFPO0lBQ1QsQ0FBQztJQVFELE1BQU0sQ0FBQyxLQUFLLENBQUMs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QUMsY0FBYyxLQUFLLE9BQU8sQ0FBQyxtQkFBbUIsRUFBRTtZQUN2RCxPQUFPLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3JELENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8vLyA8c3VtbWFyeT5cclxuLy8vIE1nR3VpLmRsbCdzIG1hbmFnZXIgLSBhc3NlbWJseSBsZXZlbCBwcm9wZXJ0aWVzIGFuZCBtZXRob2RzLlxyXG4vLy8gPC9zdW1tYXJ5PlxyXG5pbXBvcnQge05TdHJpbmcsIFN0YWNrRnJhbWV9IGZyb20gXCJAbWFnaWMteHBhL21zY29yZWxpYlwiO1xyXG5pbXBvcnQge0hlbHBDb21tYW5kLCBVdGlsSW1lSnBuLCBVdGlsU3RyQnl0ZU1vZGV9IGZyb20gXCJAbWFnaWMteHBhL3V0aWxzXCI7XHJcbmltcG9ydCB7SUd1aUV2ZW50c01hbmFnZXJ9IGZyb20gXCIuL21hbmFnZW1lbnQvZXZlbnRzL0lHdWlFdmVudHNNYW5hZ2VyXCI7XHJcbmltcG9ydCB7R3VpTWdDb250cm9sfSBmcm9tIFwiLi9ndWkvR3VpTWdDb250cm9sXCI7XHJcbmltcG9ydCB7R3VpVGFza0Jhc2V9IGZyb20gXCIuL21hbmFnZW1lbnQvdGFza3MvR3VpVGFza0Jhc2VcIjtcclxuaW1wb3J0IHtNZ0NvbnRyb2xCYXNlfSBmcm9tIFwiLi9tYW5hZ2VtZW50L2d1aS9NZ0NvbnRyb2xCYXNlXCI7XHJcbmltcG9ydCB7Q29tbWFuZHN9IGZyb20gXCIuL0NvbW1hbmRzXCI7XHJcbmltcG9ydCB7TWdGb3JtQmFzZX0gZnJvbSBcIi4vbWFuYWdlbWVudC9ndWkvTWdGb3JtQmFzZVwiO1xyXG5pbXBvcnQge0NvbW1hbmRUeXBlLCBIdG1sUHJvcGVydGllc30gZnJvbSBcIi4vR3VpRW51bXNcIjtcclxuaW1wb3J0IHtFdmVudHN9IGZyb20gXCIuL0V2ZW50c1wiO1xyXG5pbXBvcnQge1J1bnRpbWVDb250ZXh0QmFzZX0gZnJvbSBcIi4vbWFuYWdlbWVudC9SdW50aW1lQ29udGV4dEJhc2VcIjtcclxuaW1wb3J0IHtHdWlNZ0Zvcm19IGZyb20gXCIuL2d1aS9HdWlNZ0Zvcm1cIjtcclxuaW1wb3J0IHtQcm9wSW50ZXJmYWNlfSBmcm9tIFwiLi9tYW5hZ2VtZW50L2d1aS9Qcm9wSW50ZXJmYWNlXCI7XHJcbmltcG9ydCB7R3VpRW52aXJvbm1lbnR9IGZyb20gXCIuL0d1aUVudmlyb25tZW50XCI7XHJcblxyXG5cclxuZXhwb3J0IGNsYXNzIE1hbmFnZXIge1xyXG4gIHN0YXRpYyBJc092ZXJsYXlPcGVuOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgX2RlbGF5V2FpdDogT2JqZWN0ID0gbmV3IE9iamVjdCgpOyAvLyB0aGlzIG9iamVjdCBpcyB1c2VkIGZvciBleGVjdXRpb24gYW5kIGludGVycnVwdGluZyBkZWxheSBjb21tYW5kXHJcbiAgcHJpdmF0ZSBzdGF0aWMgX2NsaXBib2FyZERhdGE6IHN0cmluZyA9IFwiXCI7IC8vIERhdGEgdG8gYmUgd3JpdHRlbiB0byB0aGUgY2xpcGJvYXJkLlxyXG5cclxuICAvLyBUaGlzIHdpbGwgaG9sZCB0aGUgY29udGV4dElEIGZvciBhIGN1cnJlbnQgdGhyZWFkLlxyXG4gIC8vIFRocmVhZCBzdGF0aWMgaXMgYSBzZXBhcmF0ZSBmb3IgZWFjaCB0aHJlYWQgKGkuZS46IHZhbHVlIG9mIGEgc3RhdGljIGZpZWxkIGlzIHVuaXF1ZSBmb3IgZWFjaCB0aHJlYWQpLlxyXG4gIC8vIGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9zeXN0ZW0udGhyZWFkc3RhdGljYXR0cmlidXRlLmFzcHhcclxuICBwcml2YXRlIHN0YXRpYyBfY3VycmVudENvbnRleHRJRDogc3RyaW5nID0gJ1xcMCc7XHJcblxyXG4gIHN0YXRpYyBEZWZhdWx0UHJvdG9jb2w6IHN0cmluZyA9IG51bGw7IC8vIGRlZmF1bHQgcHJvdG9jb2wgKGh0dHAvaHR0cHMpIGFuZCBzZXJ2ZXIgbmFtZSB0byBiZSB1c2VkIGZvciBhbnkgcmVsYXRpdmUgdXJsXHJcbiAgc3RhdGljIERlZmF1bHRTZXJ2ZXJOYW1lOiBzdHJpbmcgPSBudWxsO1xyXG4gIHN0YXRpYyBVdGlsSW1lSnBuOiBVdGlsSW1lSnBuID0gKFV0aWxTdHJCeXRlTW9kZS5pc0xvY2FsZURlZkxhbmdKUE4oKSA/IG5ldyBVdGlsSW1lSnBuKCkgOiBudWxsKTsgLy8gSlBOOiBJTUUgc3VwcG9ydFxyXG4gIHN0YXRpYyBFdmVudHNNYW5hZ2VyOiBJR3VpRXZlbnRzTWFuYWdlciA9IG51bGw7XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4ocHVibGljKVxyXG4gIC8vLyBTZXQgdGhlIGNvbnRleHQgSUQgZm9yIGEgY3VycmVudCB0aHJlYWRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImNvbnRleHRJRFwiPjwvcGFyYW0+XHJcbiAgc3RhdGljIFNldEN1cnJlbnRDb250ZXh0SUQoY29udGV4dElEOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIE1hbmFnZXIuX2N1cnJlbnRDb250ZXh0SUQgPSBjb250ZXh0SUQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIEdldCB0aGUgY29udGV4dCBJRCBmb3IgYSBjdXJyZW50IHRocmVhZFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPmN1cnJlbnQgdGhyZWFkJ3MgY29udGV4dElEPC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBHZXRDdXJyZW50Q29udGV4dElEKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gTWFuYWdlci5fY3VycmVudENvbnRleHRJRDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBnZXQgb2JqZWN0IHRoYXQgaXMgdXNlZCBmb3IgZXhlY3V0aW9uIGFuZCBpbnRlcnJ1cHRpbmcgZGVsYXkgY29tbWFuZC5cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgc3RhdGljIEdldERlbGF5V2FpdCgpOiBhbnkge1xyXG4gICAgcmV0dXJuIE1hbmFnZXIuX2RlbGF5V2FpdDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBjaGVjayBpZiBkb3QgbmV0IGNvbnRyb2wgY2FuIGJlIGZvY3VzZWRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiZ3VpTWdDb250cm9sXCI+PC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBDYW5Gb2N1cygpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG5cclxuICBzdGF0aWMgSW5pdChzdGFydHVwSW1hZ2VGaWxlTmFtZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgY2xvc2UgdGhlIHRhc2tcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiZm9ybVwiPiA8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cIm1haW5QcmdUYXNrXCI+PC9wYXJhbT5cclxuICBzdGF0aWMgQWJvcnQoZm9ybTogTWdGb3JtQmFzZSk6IHZvaWQge1xyXG5cclxuICAgIGlmIChmb3JtLmdldFN1YkZvcm1DdHJsKCkgPT09IG51bGwgJiYgZm9ybS5PcGVuZWQpIHtcclxuICAgICAgLy8gaWYgdGhlIGNsb3NpbmcgZm9ybSBpcyAnb3BlbmVkIGFzIGEgbW9kYWwnIHRoZW4gZGVjcmVtZW50IHRoZSBtb2RhbCBjb3VudCBvbiBpdHMgZnJhbWUgd2luZG93LlxyXG4gICAgICBpZiAoZm9ybS5pc0RpYWxvZygpKSB7XHJcbiAgICAgICAgdGhpcy5Jc092ZXJsYXlPcGVuID0gZmFsc2U7XHJcblxyXG4gICAgICAgIGxldCB0b3BNb3N0RnJhbWVGb3JtOiBNZ0Zvcm1CYXNlID0gZm9ybS5nZXRUb3BNb3N0RnJhbWVGb3JtKCk7XHJcbiAgICAgICAgaWYgKHRvcE1vc3RGcmFtZUZvcm0gIT09IG51bGwpXHJcbiAgICAgICAgICB0b3BNb3N0RnJhbWVGb3JtLlVwZGF0ZU1vZGFsRm9ybXNDb3VudChmb3JtLCBmYWxzZSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIENvbW1hbmRzLmFkZENsb3NlRm9ybShmb3JtLCBcIjBcIiwgZm9ybS5nZXRUYXNrKCkuZ2V0VGFza1RhZygpKTtcclxuXHJcbiAgICAgIENvbW1hbmRzLmJlZ2luSW52b2tlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgY29udHJvbFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJjdHJsXCI+Y29udHJvbCB0byBnZXQgdmFsdWUgPC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+IHZhbHVlIG9mIHRoZSBjb250cm9sIDwvcmV0dXJucz5cclxuICBzdGF0aWMgR2V0Q3RybFZhbChjdHJsOiBNZ0NvbnRyb2xCYXNlKTogc3RyaW5nIHtcclxuICAgIC8vIFFDUiAjNzQ1MTE3OiBNYWtlIHN1cmUgdGhhdCBpZiB0aGUgY29udGVudHMgb2YgYSBjb250cm9sIHdlcmUgY2hhbmdlZFxyXG4gICAgLy8gdGhlbiB0aGUgY2hhbmdlcyBhcmUgYXBwbGllZCBiZWZvcmUgZXhhbWluaW5nIGl0cyB2YWx1ZS5cclxuICAgIHJldHVybiBDb21tYW5kcy5nZXRWYWx1ZShjdHJsLCBjdHJsLmdldERpc3BsYXlMaW5lKHRydWUpKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBTZXQgcmVhZCBvbmx5IGZvciBjb250cm9sc1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJjdHJsXCI+dGhlIGNvbnRyb2wgdG8gY2hhbmdlIGl0cyBwcm9wZXJ0eSA8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiaXNSZWFkT25seVwiPmJvb2xlYW4gPC9wYXJhbT5cclxuICBzdGF0aWMgYXN5bmMgU2V0UmVhZE9ubHlDb250cm9sKGN0cmw6IE1nQ29udHJvbEJhc2UsIGlzUmVhZE9ubHk6IGJvb2xlYW4pOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGlmIChjdHJsLmlzVGV4dENvbnRyb2woKSB8fCBjdHJsLklzUmVwZWF0YWJsZSkgLy8gRGVmZWN0IDEzMTgwMjogU2V0IFJlYWRPbmx5IGZvciBSaWNoIFRleHQgY29udHJvbCBpbiBUYWJsZSBIZWFkZXIgYW5kIGRlZmVjdCAxMzE3MDQ6IGluIGdlbmVyYWwgZm9yIFJpY2ggVGV4dC5cclxuICAgIHtcclxuICAgICAgLy8gSlBOOiBJTUUgc3VwcG9ydCAoZW5hYmxlIElNRSBpbiBxdWVyeSBtb2RlKVxyXG4gICAgICBpZiAoVXRpbFN0ckJ5dGVNb2RlLmlzTG9jYWxlRGVmTGFuZ0RCQ1MoKSkge1xyXG4gICAgICAgIGlmIChhd2FpdCBjdHJsLmdldEZvcm0oKS5nZXRUYXNrKCkuY2hlY2tQcm9wKFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX0FMTE9XX0xPQ0FURV9JTl9RVUVSWSwgZmFsc2UpKVxyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIENvbW1hbmRzLmFkZE9wZXJhdGlvbldpdGhMaW5lKENvbW1hbmRUeXBlLlNFVF9QUk9QRVJUWSwgY3RybCwgY3RybC5nZXREaXNwbGF5TGluZShmYWxzZSksIEh0bWxQcm9wZXJ0aWVzLlJlYWRPbmx5LCBpc1JlYWRPbmx5KTtcclxuXHJcbiAgICAgIENvbW1hbmRzLmJlZ2luSW52b2tlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiBPcGVuIHRoZSBmb3JtLiA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwibWdGb3JtXCI+Zm9ybSB0byBiZSBvcGVuZWQuPC9wYXJhbT5cclxuICBzdGF0aWMgT3BlbkZvcm0obWdGb3JtOiBNZ0Zvcm1CYXNlKTogdm9pZCB7XHJcbiAgICAvLyBub24gaW50ZXJhY3RpdmUgY2FuIGNob29zZSBub3QgdG8gb3BlbiB0aGUgd2luZG93LlxyXG4gICAgaWYgKCFtZ0Zvcm0uT3BlbmVkICYmIChtZ0Zvcm0uZ2V0VGFzaygpLklzSW50ZXJhY3RpdmUgfHwgbWdGb3JtLmdldFRhc2soKS5pc09wZW5XaW4oKSkpIHtcclxuICAgICAgaWYgKCFtZ0Zvcm0uaXNTdWJGb3JtKCkpIHtcclxuICAgICAgICAvLyBpZiB0aGUgZm9ybSBpcyB0byBiZSBvcGVuZWQgYXMgYSBtb2RhbCwgdGhlbiBpbmNyZW1lbnQgdGhlIG1vZGFsIGNvdW50IG9uIGl0cyBmcmFtZSB3aW5kb3cuXHJcbiAgICAgICAgaWYgKG1nRm9ybS5pc0RpYWxvZygpKSB7XHJcbiAgICAgICAgICB0aGlzLklzT3ZlcmxheU9wZW4gPSB0cnVlO1xyXG5cclxuICAgICAgICAgIGxldCB0b3BNb3N0RnJhbWVGb3JtOiBNZ0Zvcm1CYXNlID0gbWdGb3JtLmdldFRvcE1vc3RGcmFtZUZvcm0oKTtcclxuICAgICAgICAgIGlmICh0b3BNb3N0RnJhbWVGb3JtICE9PSBudWxsKVxyXG4gICAgICAgICAgICB0b3BNb3N0RnJhbWVGb3JtLlVwZGF0ZU1vZGFsRm9ybXNDb3VudChtZ0Zvcm0sIHRydWUpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIH1cclxuICAgICAgLy8gaWYgKCFtZ0Zvcm0uaXNTdWJGb3JtKCkpIHtcclxuICAgICAgLy8gICBsZXQgZm9ybU5hbWU6IHN0cmluZyA9IG1nRm9ybS5VbmlxdWVOYW1lO1xyXG4gICAgICAvLyAgIFVJQnJpZGdlLmdldEluc3RhbmNlKCkuT3BlbkZvcm0oZm9ybU5hbWUpO1xyXG5cclxuICAgICAgLy8gfVxyXG4gICAgICAvLyBlbHNlIHtcclxuICAgICAgLy8gICBsZXQgaW5wdXRDb250cm9scyA9IG1nRm9ybS5HZXRMaXN0T2ZJbnB1dENvbnRyb2xzKCk7XHJcbiAgICAgIC8vIC8vXHJcbiAgICAgIC8vIC8vICAgSlNCcmlkZ2UuSW5zdGFuY2UuT3BlblN1YkZvcm0odGhpcy5nZXRTdWJGb3JtQ3RybCgpLmdldE5hbWUoKSwgUGFyZW50Rm9ybS5nZXRUYXNrKCkuZ2V0VGFza1RhZygpLCBnZXRQcm9wKFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX0ZPUk1fTkFNRSkuZ2V0VmFsdWUoKSwgX3Rhc2suZ2V0VGFza1RhZygpLCBpbnB1dENvbnRyb2xzKTtcclxuICAgICAgLy8gLy8gfVxyXG4gICAgICAvLyB9XHJcblxyXG4gICAgICBtZ0Zvcm0uT3BlbmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgIENvbW1hbmRzLmJlZ2luSW52b2tlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+IFBlcmZvcm1zIGZpcnN0IHJlZnJlc2ggZm9yIHRoZSB0YWJsZSBjb250cm9sIDwvc3VtbWFyeT5cclxuICBzdGF0aWMgYXN5bmMgRG9GaXJzdFJlZnJlc2hUYWJsZShtZ0Zvcm06IE1nRm9ybUJhc2UpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGlmIChtZ0Zvcm0gIT09IG51bGwgJiYgIW1nRm9ybS5pZ25vcmVGaXJzdFJlZnJlc2hUYWJsZSkge1xyXG4gICAgICBtZ0Zvcm0uaWdub3JlRmlyc3RSZWZyZXNoVGFibGUgPSB0cnVlO1xyXG4gICAgICBhd2FpdCBtZ0Zvcm0uZmlyc3RUYWJsZVJlZnJlc2goKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXRyaWV2ZSB0aGUgbG9jYXRpb24gb2YgdGhlIGNhcmV0LCB3aXRoaW4gdGhlIGN1cnJlbnRseSBzZWxlY3RlZCB0ZXh0XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImN0cmxcIj50aGUgY29udHJvbCB3aGljaCBpcyBhc3N1bWVkIHRvIGNvbnRhaW4gdGhlIHNlbGVjdGVkIHRleHQgPC9wYXJhbT5cclxuICBzdGF0aWMgQ2FyZXRQb3NHZXQoY3RybDogTWdDb250cm9sQmFzZSk6IG51bWJlciB7XHJcbiAgICBsZXQgY2FyZXRQb3M6IG51bWJlciA9IDA7XHJcblxyXG4gICAgaWYgKGN0cmwuaXNUZXh0Q29udHJvbCgpKVxyXG4gICAgICBjYXJldFBvcyA9IENvbW1hbmRzLmNhcmV0UG9zR2V0KGN0cmwsIGN0cmwuZ2V0RGlzcGxheUxpbmUodHJ1ZSkpO1xyXG5cclxuICAgIHJldHVybiBjYXJldFBvcztcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gQ2xlYXIgdGhlIHN0YXR1cyBiYXIgZGVwZW5kaW5nIG9uIHRoZSBjb250cm9sIHNwZWNpZmljIHN0YXR1cyBtZXNzYWdlIG9yIGZvcm0gc3BlY2lmaWMgc3RhdHVzIG1lc3NhZ2VcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInRhc2tcIj50YXNrPC9wYXJhbT5cclxuICBzdGF0aWMgQ2xlYXJTdGF0dXNCYXIodGFzazogR3VpVGFza0Jhc2UpOiB2b2lkIHtcclxuICAgIGxldCBjdXJyZW50UGFya2VkQ29udHJvbDogTWdDb250cm9sQmFzZSA9IHRhc2suZ2V0TGFzdFBhcmtlZEN0cmwoKTtcclxuXHJcbiAgICBpZiAoY3VycmVudFBhcmtlZENvbnRyb2wgIT09IG51bGwgJiYgIU5TdHJpbmcuSXNOdWxsT3JFbXB0eShjdXJyZW50UGFya2VkQ29udHJvbC5Qcm9tcHRIZWxwKSlcclxuICAgICAgdGFzay5Xcml0ZVRvTWVzc2FnZVBhbmUoY3VycmVudFBhcmtlZENvbnRyb2wuUHJvbXB0SGVscCk7XHJcbiAgICBlbHNlXHJcbiAgICAgIE1hbmFnZXIuQ2xlYW5NZXNzYWdlUGFuZSh0YXNrKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBjbGVhbiB0aGUgc3RhdHVzIGJhclxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJ0YXNrXCI+PC9wYXJhbT5cclxuICBzdGF0aWMgQ2xlYW5NZXNzYWdlUGFuZSh0YXNrOiBHdWlUYXNrQmFzZSk6IHZvaWQge1xyXG4gICAgdGFzay5Xcml0ZVRvTWVzc2FnZVBhbmUoTWFuYWdlci5HZXRDdXJyZW50UnVudGltZUNvbnRleHQoKS5EZWZhdWx0U3RhdHVzTXNnKTtcclxuICB9XHJcblxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgTWVzc2FnZSBzdHJpbmcgdG8gYmUgZGlzcGxheWVkIG9uIHN0YXR1cyBiYXIgb3IgaW4gTWVzc2FnZSBib3hcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwibXNnXCI+IGlucHV0IG1lc3NhZ2Ugc3RyaW5nIDwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPiBvdXRwdXQgbWVzc2FnZSBzdHJpbmcgPC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBHZXRNZXNzYWdlKG1zZzogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGlmIChtc2cgPT09IG51bGwpXHJcbiAgICAgIG1zZyA9IFwiXCI7XHJcbiAgICBlbHNlIGlmIChtc2cubGVuZ3RoID4gMCkge1xyXG4gICAgICBsZXQgaWR4T2ZDYXJyaWFnZTogbnVtYmVyID0gbXNnLmluZGV4T2YoXCJcXHJcIik7XHJcbiAgICAgIGlmIChpZHhPZkNhcnJpYWdlICE9PSAtMSlcclxuICAgICAgICBtc2cgPSBtc2cuc3Vic3RyKDAsIGlkeE9mQ2FycmlhZ2UpO1xyXG5cclxuICAgICAgbGV0IGlkeE9mTmV3TGluZTogbnVtYmVyID0gbXNnLmluZGV4T2YoXCJcXG5cIik7XHJcbiAgICAgIGlmIChpZHhPZk5ld0xpbmUgIT09IC0xKVxyXG4gICAgICAgIG1zZyA9IG1zZy5zdWJzdHIoMCwgaWR4T2ZOZXdMaW5lKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbXNnO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIFVzZWQgdG8gcHV0IHRoZSB0ZXh0IG9uIGEgdGV4dCBjb250cm9sXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImN0cmxcIj4gPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInRleHRcIj4gPC9wYXJhbT5cclxuICBzdGF0aWMgU2V0RWRpdFRleHQoY3RybDogTWdDb250cm9sQmFzZSwgdGV4dDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBDb21tYW5kcy5zZXRFZGl0VGV4dChjdHJsLCBjdHJsLmdldERpc3BsYXlMaW5lKHRydWUpLCB0ZXh0KTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gSW5zZXJ0IHRleHQgdG8gYSB0ZXh0IGNvbnRyb2wgYXQgYSBnaXZlbiBwb3NpdGlvblxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiY3RybFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwic3RhcnRQb3NpdGlvblwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwidGV4dFRvSW5zZXJ0XCI+PC9wYXJhbT5cclxuICBzdGF0aWMgSW5zZXJ0RWRpdFRleHQoY3RybDogTWdDb250cm9sQmFzZSwgc3RhcnRQb3NpdGlvbjogbnVtYmVyLCB0ZXh0VG9JbnNlcnQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgQ29tbWFuZHMuaW5zZXJ0RWRpdFRleHQoY3RybCwgY3RybC5nZXREaXNwbGF5TGluZSh0cnVlKSwgc3RhcnRQb3NpdGlvbiwgdGV4dFRvSW5zZXJ0KTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXR1cm4gVG9vbHRpcFRpbWVvdXRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz4gcmV0dXJucyBUb29sdGlwVGltZW91dDwvcmV0dXJucz5cclxuICBzdGF0aWMgR2V0VG9vbHRpcFRpbWVvdXQoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiBHdWlFbnZpcm9ubWVudC5FbnZpcm9ubWVudC5HZXRUb29sdGlwVGltZW91dCgpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyByZXR1cm4gU3BlY2lhbEVkaXRMZWZ0QWxpZ25cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgc3RhdGljIEdldFNwZWNpYWxFZGl0TGVmdEFsaWduKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIEd1aUVudmlyb25tZW50LkVudmlyb25tZW50LkdldFNwZWNpYWxFZGl0TGVmdEFsaWduKCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgUmV0dXJucyBkZWZhdWx0IGRhdGUgZm9ybWF0IGRlcGVuZGluZyBvbiBkYXRlIG1vZGUgYW5kIGRhdGUgc2VwYXJhdG9yLlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPiBTdHJpbmcgZGVmYXVsdCBkYXRlIGZvcm1hdDwvcmV0dXJucz5cclxuICBzdGF0aWMgR2V0RGVmYXVsdERhdGVGb3JtYXQoKTogc3RyaW5nIHtcclxuICAgIGxldCBkYXRlRm9ybWF0OiBzdHJpbmcgPSBcIlwiO1xyXG4gICAgbGV0IGRhdGVTZXBlcmF0b3I6IHN0cmluZyA9IEd1aUVudmlyb25tZW50LkVudmlyb25tZW50LkdldERhdGUoKTtcclxuXHJcbiAgICAvLyBBcnJhbmdlIGRhdGUgZm9ybWF0IGFjY29yZGluZyB0byB0aGUgZGF0ZSBtb2RlLlxyXG4gICAgc3dpdGNoIChHdWlFbnZpcm9ubWVudC5FbnZpcm9ubWVudC5HZXREYXRlTW9kZSgwKSkge1xyXG4gICAgICBjYXNlICdTJzogLy8gU2NhbmRpbmF2aWFuXHJcbiAgICAgICAgZGF0ZUZvcm1hdCA9IFwiWVlZWVwiICsgZGF0ZVNlcGVyYXRvciArIFwiTU1cIiArIGRhdGVTZXBlcmF0b3IgKyBcIkREXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlICdCJzogLy8gQnVkZGhpc3RcclxuXHJcbiAgICAgIGNhc2UgJ0UnOiAvLyBFdXJvcGVhblxyXG4gICAgICAgIGRhdGVGb3JtYXQgPSBcIkREXCIgKyBkYXRlU2VwZXJhdG9yICsgXCJNTVwiICsgZGF0ZVNlcGVyYXRvciArIFwiWVlZWVwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSAnQSc6IC8vIEFtZXJpY2FuXHJcbiAgICAgICAgZGF0ZUZvcm1hdCA9IFwiTU1cIiArIGRhdGVTZXBlcmF0b3IgKyBcIkREXCIgKyBkYXRlU2VwZXJhdG9yICsgXCJZWVlZXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZGF0ZUZvcm1hdDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBSZXR1cm4gZGVmYXVsdCB0aW1lIGZvcm1hdCB1c2luZyB0aW1lIHNlcGFyYXRvci5cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgc3RhdGljIEdldERlZmF1bHRUaW1lRm9ybWF0KCk6IHN0cmluZyB7XHJcbiAgICBsZXQgdGltZVNlcGVyYXRvcjogc3RyaW5nID0gR3VpRW52aXJvbm1lbnQuRW52aXJvbm1lbnQuR2V0VGltZSgpO1xyXG4gICAgbGV0IHRpbWVGb3JtYXQ6IHN0cmluZyA9IFwiSEhcIiArIHRpbWVTZXBlcmF0b3IgKyBcIk1NXCIgKyB0aW1lU2VwZXJhdG9yICsgXCJTU1wiO1xyXG4gICAgcmV0dXJuIHRpbWVGb3JtYXQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIEdldHMgdGhlIHJ1bnRpbWUgY29udGV4dCBiZWxvbmdzIHRvIHRoZSBjdXJyZW50IHRocmVhZC5cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz5SdW50aW1lQ29udGV4dEJhc2U8L3JldHVybnM+XHJcbiAgc3RhdGljIEdldEN1cnJlbnRSdW50aW1lQ29udGV4dCgpOiBSdW50aW1lQ29udGV4dEJhc2Uge1xyXG4gICAgcmV0dXJuIEV2ZW50cy5HZXRSdW50aW1lQ29udGV4dChNYW5hZ2VyLkdldEN1cnJlbnRDb250ZXh0SUQoKSk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIEdldHMgdGhlIGNvbnRleHRJRCB1c2luZyB0aGUgR3VpTWdGb3JtLlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwibWdPYmplY3RcIj5NYWdpYyBPYmplY3QgLSBHdWlNZ0Zvcm0vR3VpTWdDb250cm9sL0xvZ2ljYWwgY29udHJvbDwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPmNvbnRleHRJRDwvcmV0dXJucz5cclxuICBzdGF0aWMgR2V0Q29udGV4dElEKG1nT2JqZWN0OiBhbnkpOiBudW1iZXIge1xyXG4gICAgbGV0IGd1aU1nRm9ybTogR3VpTWdGb3JtID0gbnVsbDtcclxuXHJcbiAgICBpZiAobWdPYmplY3QgaW5zdGFuY2VvZiBHdWlNZ0NvbnRyb2wpXHJcbiAgICAgIGd1aU1nRm9ybSA9ICg8R3VpTWdDb250cm9sPm1nT2JqZWN0KS5HdWlNZ0Zvcm07XHJcbiAgICBlbHNlIGlmIChtZ09iamVjdCBpbnN0YW5jZW9mIEd1aU1nRm9ybSlcclxuICAgICAgZ3VpTWdGb3JtID0gPEd1aU1nRm9ybT5tZ09iamVjdDtcclxuXHJcbiAgICByZXR1cm4gRXZlbnRzLkdldENvbnRleHRJRChndWlNZ0Zvcm0pO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBTaG93cyB3aW5kb3dzIGhlbHAuXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJmaWxlUGF0aFwiPnBhdGggb2YgdGhlIGhlbHAgZmlsZS48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImhlbHBDbWRcIj5oZWxwIGNvbW1hbmQuPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJoZWxwS2V5XCI+c2VhcmNoIGtleSB3b3JkLjwvcGFyYW0+XHJcbiAgc3RhdGljIFNob3dXaW5kb3dIZWxwKGZpbGVQYXRoOiBzdHJpbmcsIGhlbHBDbWQ6IEhlbHBDb21tYW5kLCBoZWxwS2V5OiBzdHJpbmcpOiB2b2lkIHtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gcmV0dXJuIFNwZWNpYWxWYWxOZXdQb2xpY3lcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgcHVibGljIHN0YXRpYyBHZXRTcGVjaWFsVmFsTmV3UG9saWN5KCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIEd1aUVudmlyb25tZW50LkVudmlyb25tZW50LkdldFNwZWNpYWxWYWxOZXdQb2xpY3koKTtcclxuICB9XHJcbn1cclxuXHJcbi8vLyA8c3VtbWFyeT5cclxuLy8vIGhlbHBlciBjbGFzcyBmb3Igc2V0dGluZy9yZXNldHRpbmcgdGhlIGN1cnJlbnQgY29udGV4dCBJRC5cclxuLy8vIFdlIHJlcXVpcmUgdGhpcyBjbGFzcyBzcGVjaWZpY2FsbHkgZm9yIE1vZGFsIHdpbmRvd3MuIFdoZW4gd2Ugb3BlbiBhIG1vZGFsIHdpbmRvdyB0aGVuXHJcbi8vLyBpdCB3YWl0cyBpbiBHdWlUaHJlYWQuIE1lYW4gd2hpbGUgR3VpVGhyZWFkIGNhbiByZWNlaXZlIHRoZSBldmVudHMgb2Ygb3RoZXIgY29udGV4dCBhbmRcclxuLy8vIGFmdGVyIHByb2Nlc3NpbmcgdGhlc2UgZXZlbnRzLCB3ZSBzaG91bGQgcmVzZXQgdGhlIGNvbnRleHRJRCBvZiB0aGUgTW9kYWwgd2luZG93cyBiZWNhdXNlXHJcbi8vLyBpdCB3aWxsIGJlIHVzZWQgZm9yIGxvZ2dpbmcgdGhlIGV2ZW50cyB3aGVuIHdlIGNsb3NlIHRoZSBtb2RhbCB3aW5kb3cuXHJcbi8vLyA8L3N1bW1hcnk+XHJcbmV4cG9ydCBjbGFzcyBDb250ZXh0SURHdWFyZCB7XHJcbiAgcHJpdmF0ZSBfcHJldkNvbnRleHRJRDogc3RyaW5nID0gJ1xcMCc7XHJcblxyXG4gIC8vIEZvciBkZWJ1Z2dpbmcgcHVycG9zZSBvbmx5LlxyXG4gIC8vIEl0IHdpbGwgaG9sZCB0aGUgZmlsZSBuYW1lIGZyb20gd2hpY2ggdGhlIG9iamVjdCBvZiBDb250ZXh0SURHdWFyZCBpcyBjcmVhdGVkLlxyXG4gIHByaXZhdGUgX2ZpbGVOYW1lOiBzdHJpbmcgPSBudWxsO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpO1xyXG4gIGNvbnN0cnVjdG9yKGNvbnRleHRJRDogc3RyaW5nKTtcclxuICBjb25zdHJ1Y3Rvcihjb250ZXh0SUQ/OiBzdHJpbmcpIHtcclxuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHRoaXMuY29uc3RydWN0b3JfMCgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLmNvbnN0cnVjdG9yXzEoY29udGV4dElEKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY29uc3RydWN0b3JfMCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX3ByZXZDb250ZXh0SUQgPSBNYW5hZ2VyLkdldEN1cnJlbnRDb250ZXh0SUQoKTtcclxuICAgIHRoaXMuU2F2ZUZpbGVuYW1lKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNvbnN0cnVjdG9yXzEoY29udGV4dElEOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuU2V0Q3VycmVudChjb250ZXh0SUQpO1xyXG4gICAgdGhpcy5TYXZlRmlsZW5hbWUoKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gc2V0cyB0aGUgY29udGV4dCBJRCB0byAnZ3VhcmQnLlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiY29udGV4dElEXCI+bmV3IGNvbnRleHQgSUQgdG8gJ2d1YXJkJy48L3BhcmFtPlxyXG4gIFNldEN1cnJlbnQoY29udGV4dElEOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGlmIChjb250ZXh0SUQgIT09IHRoaXMuX3ByZXZDb250ZXh0SUQpIHtcclxuICAgICAgdGhpcy5fcHJldkNvbnRleHRJRCA9IGNvbnRleHRJRDtcclxuICAgICAgTWFuYWdlci5TZXRDdXJyZW50Q29udGV4dElEKGNvbnRleHRJRCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIEdldCB0aGUgZmlsZSBuYW1lIGZyb20gd2hpY2ggdGhlIENvbnRleHRJREd1YXJkIGlzIGJlaW5nIGNyZWF0ZWQuXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBwcml2YXRlIFNhdmVGaWxlbmFtZSgpOiB2b2lkIHtcclxuICAgIGxldCBzdGFja0ZyYW1lOiBTdGFja0ZyYW1lID0gbmV3IFN0YWNrRnJhbWUoMSk7XHJcbiAgICB0aGlzLl9maWxlTmFtZSA9IHN0YWNrRnJhbWUuR2V0RmlsZU5hbWUoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBEaXNwb3NlKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuX3ByZXZDb250ZXh0SUQgIT09IE1hbmFnZXIuR2V0Q3VycmVudENvbnRleHRJRCgpKVxyXG4gICAgICBNYW5hZ2VyLlNldEN1cnJlbnRDb250ZXh0SUQodGhpcy5fcHJldkNvbnRleHRJRCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
File without changes
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSUVudmlyb25tZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ3VpL3NyYy9lbnYvSUVudmlyb25tZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbmNvZGluZyB9IGZyb20gXCJAbWFnaWMteHBhL21zY29yZWxpYlwiO1xyXG5cclxuLy8vIDxzdW1tYXJ5PlxyXG4vLy8gZnVuY3Rpb25hbGl0eSByZXF1aXJlZCBieSB0aGUgR1VJIG5hbWVzcGFjZSBmcm9tIHRoZSBFbnZpcm9ubWVudCBjbGFzcy5cclxuLy8vIDwvc3VtbWFyeT5cclxuZXhwb3J0IGludGVyZmFjZSBJRW52aXJvbm1lbnQge1xyXG5cclxuICBMYW5ndWFnZTogc3RyaW5nO1xyXG5cclxuICBTcGVjaWFsTnVtcGFkUGx1c0NoYXI6IGJvb2xlYW47XHJcblxyXG4gIFNwZWNpYWxPbGRab3JkZXI6IGJvb2xlYW47XHJcblxyXG4gIFNwZWNpYWxSZXN0b3JlTWF4aW1pemVkRm9ybTogYm9vbGVhbjtcclxuXHJcbiAgU3BlY2lhbElnbm9yZUJHaW5Nb2RpZnk6IGJvb2xlYW47XHJcblxyXG4gIElnbm9yZVJlcGxhY2VEZWNpbWFsU2VwYXJhdG9yOiBib29sZWFuO1xyXG5cclxuICAvLyBpbnN0cnVjdCBob3cgdG8gcmVmZXIgYSBmb3J3YXJkIHNsYXNoIC0gZWl0aGVyIGFzIGEgcmVsYXRpdmUgd2ViIHVybCwgb3IgYXMgYSBmaWxlIGluIHRoZSBmaWxlIHN5c3RlbS5cclxuICBGb3J3YXJkU2xhc2hVc2FnZTogc3RyaW5nO1xyXG5cclxuICBHZXREYXRlTW9kZShjb21wSWR4OiBudW1iZXIpOiBzdHJpbmc7XHJcblxyXG4gIEdldENlbnR1cnkoY29tcElkeDogbnVtYmVyKTogbnVtYmVyO1xyXG5cclxuICBHZXREYXRlKCk6IHN0cmluZztcclxuXHJcbiAgR2V0VGltZSgpOiBzdHJpbmc7XHJcblxyXG4gIEdldERlY2ltYWwoKTogc3RyaW5nO1xyXG5cclxuICBDYW5SZXBsYWNlRGVjaW1hbFNlcGFyYXRvcigpOiBib29sZWFuO1xyXG5cclxuICBHZXRUaG91c2FuZHMoKTogc3RyaW5nO1xyXG5cclxuICBHZXREZWZhdWx0Q29sb3IoKTogbnVtYmVyO1xyXG5cclxuICBHZXREZWZhdWx0Rm9jdXNDb2xvcigpOiBudW1iZXI7XHJcblxyXG4gIEdldFRvb2x0aXBUaW1lb3V0KCk6IG51bWJlcjtcclxuXHJcbiAgR2V0U3BlY2lhbEVkaXRMZWZ0QWxpZ24oKTogYm9vbGVhbjtcclxuXHJcbiAgR2V0R1VJRCgpOiBzdHJpbmc7XHJcblxyXG4gIEdldENvbnRyb2xzUGVyc2lzdGVuY3lQYXRoKCk6IHN0cmluZztcclxuXHJcbiAgR2V0SW1lQXV0b09mZigpOiBib29sZWFuO1xyXG5cclxuICBHZXRMb2NhbEFzNDAwU2V0KCk6IGJvb2xlYW47XHJcblxyXG4gIHNldERlY2ltYWxTZXBhcmF0b3IodmFsdWU6IHN0cmluZykgOiB2b2lkO1xyXG5cclxuICBzZXRUaG91c2FuZHNTZXBhcmF0b3IodmFsdWU6IHN0cmluZykgOiB2b2lkO1xyXG5cclxuICBHZXRMb2NhbEZsYWcoZjogc3RyaW5nKTogYm9vbGVhbjtcclxuXHJcbiAgR2V0U2lnbmlmaWNhbnROdW1TaXplKCk6IG51bWJlcjtcclxuXHJcbiAgR2V0RGVidWdMZXZlbCgpOiBudW1iZXI7XHJcblxyXG4gIEdldEVuY29kaW5nKCk6IEVuY29kaW5nO1xyXG5cclxuICBHZXREcm9wVXNlckZvcm1hdHMoKTogc3RyaW5nO1xyXG5cclxuICBHZXRTcGVjaWFsRW5nTG9nb24oKTogYm9vbGVhbjtcclxuXHJcbiAgR2V0U3BlY2lhbElnbm9yZUJ1dHRvbkZvcm1hdCgpOiBib29sZWFuO1xyXG5cclxuICBHZXRTcGVjaWFsU3dmQ29udHJvbE5hbWVQcm9wZXJ0eSgpOiBib29sZWFuO1xyXG5cclxuICBHZXRTcGVjaWFsTG9nSW50ZXJuYWxFeGNlcHRpb25zKCk6IGJvb2xlYW47XHJcblxyXG4gIEdldFNwZWNpYWxUZXh0U2l6ZUZhY3RvcmluZygpOiBib29sZWFuO1xyXG5cclxuICBHZXRTcGVjaWFsRmxhdEVkaXRPbkNsYXNzaWNUaGVtZSgpOiBib29sZWFuO1xyXG5cclxuICBHZXRTcGVjaWFsRGlzYWJsZU1vdXNlV2hlZWwoKTogYm9vbGVhbjtcclxuXHJcbiAgZ2V0Q29udGV4dEluYWN0aXZpdHlUaW1lb3V0KCk6IG51bWJlcjtcclxuXHJcbiAgZ2V0Q2xpZW50Q29udGV4dEluYWN0aXZpdHlUaW1lb3V0KCk6IG51bWJlcjtcclxuXHJcbiAgZ2V0Q29udGV4dEluYWN0aXZpdHlXYXJuaW5nVGltZSgpOiBudW1iZXI7XHJcblxyXG4gIGdldElkbGVUaW1lKGNvbXBJZHg6IG51bWJlcik6IG51bWJlcjtcclxuXHJcbiAgR2V0U3BlY2lhbFZhbE5ld1BvbGljeSgpOiBib29sZWFuO1xyXG4gIEdldFNwZWNpYWxDYW5jZWxPbkNyZWF0ZSgpOiBib29sZWFuO1xyXG59XHJcbiJdfQ==
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -1 +1,2 @@
|
|
|
1
|
+
export {};
|
|
1
2
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHJvcFBhcmVudEludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2d1aS9zcmMvZ3VpL1Byb3BQYXJlbnRJbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UHJvcGVydHl9IGZyb20gXCIuLi9tYW5hZ2VtZW50L2d1aS9Qcm9wZXJ0eVwiO1xyXG5pbXBvcnQge01nRm9ybUJhc2V9IGZyb20gXCIuLi9tYW5hZ2VtZW50L2d1aS9NZ0Zvcm1CYXNlXCI7XHJcbmltcG9ydCB7U3RvcmFnZUF0dHJpYnV0ZX0gZnJvbSBcIkBtYWdpYy14cGEvdXRpbHNcIjtcclxuaW1wb3J0IHtSZWZQYXJhbX0gZnJvbSBcIkBtYWdpYy14cGEvbXNjb3JlbGliXCI7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFByb3BQYXJlbnRJbnRlcmZhY2Uge1xyXG4gIGdldENvbXBJZHgoKTogbnVtYmVyO1xyXG5cclxuICBnZXRQcm9wKHByb3BJZDogbnVtYmVyKTogUHJvcGVydHk7XHJcblxyXG4gIGNoZWNrSWZFeGlzdFByb3AocHJvcElkOiBudW1iZXIpOiBib29sZWFuO1xyXG5cclxuICBnZXRGb3JtKCk6IE1nRm9ybUJhc2U7XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXR1cm4gdHJ1ZSBpZiB0aGlzIGlzIGZpcnN0IHJlZnJlc2hcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgSXNGaXJzdFJlZnJlc2hPZlByb3BzKCk6IGJvb2xlYW47XHJcblxyXG4gIEV2YWx1YXRlRXhwcmVzc2lvbihleHBJZDogbnVtYmVyLCByZXNUeXBlOiBTdG9yYWdlQXR0cmlidXRlLCBsZW5ndGg6IG51bWJlciwgY29udGVudFR5cGVVbmljb2RlOiBib29sZWFuLCByZXNDZWxsVHlwZTogU3RvcmFnZUF0dHJpYnV0ZSwgYWx3YXlzRXZhbHVhdGU6IGJvb2xlYW4sIHdhc0V2YWx1YXRlZDogUmVmUGFyYW08Ym9vbGVhbj4pOiBQcm9taXNlPHN0cmluZz47XHJcblxyXG4gIEdldEV4cHJlc3Npb25TdG9yYWdlKGV4cElkOiBudW1iZXIpOiBTdG9yYWdlQXR0cmlidXRlO1xyXG59XHJcbiJdfQ==
|
|
File without changes
|
|
File without changes
|
|
File without changes
|