@microsoft/applicationinsights-perfmarkmeasure-js 3.0.7 → 3.0.9
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/browser/es5/{ai.prfmm-mgr.3.0.7.cjs.js → ai.prfmm-mgr.3.0.9.cjs.js} +101 -79
- package/browser/es5/ai.prfmm-mgr.3.0.9.cjs.js.map +1 -0
- package/browser/es5/ai.prfmm-mgr.3.0.9.cjs.min.js +6 -0
- package/browser/es5/ai.prfmm-mgr.3.0.9.cjs.min.js.map +1 -0
- package/browser/es5/{ai.prfmm-mgr.3.0.7.gbl.js → ai.prfmm-mgr.3.0.9.gbl.js} +103 -81
- package/browser/es5/ai.prfmm-mgr.3.0.9.gbl.js.map +1 -0
- package/browser/es5/ai.prfmm-mgr.3.0.9.gbl.min.js +6 -0
- package/browser/es5/ai.prfmm-mgr.3.0.9.gbl.min.js.map +1 -0
- package/browser/es5/ai.prfmm-mgr.3.0.9.integrity.json +66 -0
- package/browser/es5/{ai.prfmm-mgr.3.0.7.js → ai.prfmm-mgr.3.0.9.js} +103 -81
- package/browser/es5/ai.prfmm-mgr.3.0.9.js.map +1 -0
- package/browser/es5/ai.prfmm-mgr.3.0.9.min.js +6 -0
- package/browser/es5/ai.prfmm-mgr.3.0.9.min.js.map +1 -0
- package/browser/es5/ai.prfmm-mgr.3.cjs.js +100 -78
- package/browser/es5/ai.prfmm-mgr.3.cjs.js.map +1 -1
- package/browser/es5/ai.prfmm-mgr.3.cjs.min.js +2 -2
- package/browser/es5/ai.prfmm-mgr.3.cjs.min.js.map +1 -1
- package/browser/es5/ai.prfmm-mgr.3.gbl.js +102 -80
- package/browser/es5/ai.prfmm-mgr.3.gbl.js.map +1 -1
- package/browser/es5/ai.prfmm-mgr.3.gbl.min.js +2 -2
- package/browser/es5/ai.prfmm-mgr.3.gbl.min.js.map +1 -1
- package/browser/es5/ai.prfmm-mgr.3.integrity.json +25 -25
- package/browser/es5/ai.prfmm-mgr.3.js +102 -80
- package/browser/es5/ai.prfmm-mgr.3.js.map +1 -1
- package/browser/es5/ai.prfmm-mgr.3.min.js +2 -2
- package/browser/es5/ai.prfmm-mgr.3.min.js.map +1 -1
- package/dist/es5/applicationinsights-perfmarkmeasure-js.js +100 -78
- package/dist/es5/applicationinsights-perfmarkmeasure-js.js.map +1 -1
- package/dist/es5/applicationinsights-perfmarkmeasure-js.min.js +2 -2
- package/dist/es5/applicationinsights-perfmarkmeasure-js.min.js.map +1 -1
- package/dist-es5/PerfMarkMeasureManager.js +1 -1
- package/dist-es5/__DynamicConstants.js +1 -1
- package/dist-es5/applicationinsights-perfmarkmeasure-js.js +1 -1
- package/dist-es5/interfaces/IPerfMarkMeasureConfiguration.js +1 -1
- package/package.json +65 -62
- package/types/applicationinsights-perfmarkmeasure-js.d.ts +7 -2
- package/types/applicationinsights-perfmarkmeasure-js.namespaced.d.ts +518 -14
- package/browser/es5/ai.prfmm-mgr.3.0.7.cjs.js.map +0 -1
- package/browser/es5/ai.prfmm-mgr.3.0.7.cjs.min.js +0 -6
- package/browser/es5/ai.prfmm-mgr.3.0.7.cjs.min.js.map +0 -1
- package/browser/es5/ai.prfmm-mgr.3.0.7.gbl.js.map +0 -1
- package/browser/es5/ai.prfmm-mgr.3.0.7.gbl.min.js +0 -6
- package/browser/es5/ai.prfmm-mgr.3.0.7.gbl.min.js.map +0 -1
- package/browser/es5/ai.prfmm-mgr.3.0.7.integrity.json +0 -66
- package/browser/es5/ai.prfmm-mgr.3.0.7.js.map +0 -1
- package/browser/es5/ai.prfmm-mgr.3.0.7.min.js +0 -6
- package/browser/es5/ai.prfmm-mgr.3.0.7.min.js.map +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Application Insights JavaScript SDK - Performance Mark and Measure Manager plugin, 3.0.
|
|
2
|
+
* Application Insights JavaScript SDK - Performance Mark and Measure Manager plugin, 3.0.9
|
|
3
3
|
* Copyright (c) Microsoft and contributors. All rights reserved.
|
|
4
4
|
*/
|
|
5
5
|
(function (global, factory) {
|
|
@@ -16,46 +16,43 @@
|
|
|
16
16
|
var NULL_VALUE = null;
|
|
17
17
|
var EMPTY = "";
|
|
18
18
|
var FUNCTION = "function";
|
|
19
|
-
var NUMBER = "number";
|
|
20
19
|
var OBJECT = "object";
|
|
21
20
|
var PROTOTYPE = "prototype";
|
|
22
21
|
var UNDEFINED = "undefined";
|
|
23
|
-
var
|
|
22
|
+
var CALL = "call";
|
|
23
|
+
var TO_STRING = "toString";
|
|
24
24
|
var ObjClass = Object;
|
|
25
25
|
var ObjProto = ObjClass[PROTOTYPE];
|
|
26
|
+
var StrCls = String;
|
|
26
27
|
var ArrCls = Array;
|
|
27
28
|
|
|
28
|
-
function
|
|
29
|
-
var result = defValue;
|
|
29
|
+
function safe(func, argArray) {
|
|
30
30
|
try {
|
|
31
|
-
|
|
31
|
+
return {
|
|
32
|
+
v: func.apply(this, argArray)
|
|
33
|
+
};
|
|
32
34
|
}
|
|
33
35
|
catch (e) {
|
|
36
|
+
return { e: e };
|
|
34
37
|
}
|
|
35
|
-
return result;
|
|
36
38
|
}
|
|
37
39
|
|
|
40
|
+
/*#__NO_SIDE_EFFECTS__*/
|
|
38
41
|
function _createIs(theType) {
|
|
39
42
|
return function (value) {
|
|
40
43
|
return typeof value === theType;
|
|
41
44
|
};
|
|
42
45
|
}
|
|
43
|
-
|
|
44
|
-
var theType = "[object " + theName + "]";
|
|
45
|
-
return function (value) {
|
|
46
|
-
return !!(value && objToString(value) === theType);
|
|
47
|
-
};
|
|
48
|
-
}
|
|
49
|
-
function objToString(value) {
|
|
50
|
-
return ObjProto.toString.call(value);
|
|
51
|
-
}
|
|
46
|
+
/*#__NO_SIDE_EFFECTS__*/
|
|
52
47
|
function isUndefined(value) {
|
|
53
48
|
return typeof value === UNDEFINED || value === UNDEFINED;
|
|
54
49
|
}
|
|
50
|
+
/*#__NO_SIDE_EFFECTS__*/
|
|
55
51
|
function isNullOrUndefined(value) {
|
|
56
52
|
return value === NULL_VALUE || isUndefined(value);
|
|
57
53
|
}
|
|
58
|
-
var isFunction = _createIs(FUNCTION);
|
|
54
|
+
var isFunction = ( /*#__PURE__*/_createIs(FUNCTION));
|
|
55
|
+
/*#__NO_SIDE_EFFECTS__*/
|
|
59
56
|
function isObject(value) {
|
|
60
57
|
if (!value && isNullOrUndefined(value)) {
|
|
61
58
|
return false;
|
|
@@ -63,16 +60,16 @@
|
|
|
63
60
|
return !!value && typeof value === OBJECT;
|
|
64
61
|
}
|
|
65
62
|
var isArray = ArrCls.isArray;
|
|
66
|
-
var isNumber = _createIs(NUMBER);
|
|
67
|
-
var isError = _createObjIs("Error");
|
|
68
63
|
|
|
69
64
|
var objGetOwnPropertyDescriptor = ObjClass.getOwnPropertyDescriptor;
|
|
70
65
|
|
|
66
|
+
/*#__NO_SIDE_EFFECTS__*/
|
|
71
67
|
function objHasOwnProperty(obj, prop) {
|
|
72
|
-
return obj && ObjProto.hasOwnProperty
|
|
68
|
+
return !!obj && ObjProto.hasOwnProperty[CALL](obj, prop);
|
|
73
69
|
}
|
|
74
70
|
|
|
75
71
|
var objHasOwn = ObjClass["hasOwn"] || polyObjHasOwn;
|
|
72
|
+
/*#__NO_SIDE_EFFECTS__*/
|
|
76
73
|
function polyObjHasOwn(obj, prop) {
|
|
77
74
|
return objHasOwnProperty(obj, prop) || !!objGetOwnPropertyDescriptor(obj, prop);
|
|
78
75
|
}
|
|
@@ -81,7 +78,7 @@
|
|
|
81
78
|
if (theObject && isObject(theObject)) {
|
|
82
79
|
for (var prop in theObject) {
|
|
83
80
|
if (objHasOwn(theObject, prop)) {
|
|
84
|
-
if (callbackfn
|
|
81
|
+
if (callbackfn[CALL](thisArg || theObject, prop, theObject[prop]) === -1) {
|
|
85
82
|
break;
|
|
86
83
|
}
|
|
87
84
|
}
|
|
@@ -93,8 +90,11 @@
|
|
|
93
90
|
throw new TypeError(message);
|
|
94
91
|
}
|
|
95
92
|
|
|
93
|
+
var asString = StrCls;
|
|
94
|
+
|
|
96
95
|
var GLOBAL_CONFIG_KEY = "__tsUtils$gblCfg";
|
|
97
96
|
var _globalCfg;
|
|
97
|
+
/*#__NO_SIDE_EFFECTS__*/
|
|
98
98
|
function _getGlobalValue() {
|
|
99
99
|
var result;
|
|
100
100
|
if (typeof globalThis !== UNDEFINED) {
|
|
@@ -111,38 +111,42 @@
|
|
|
111
111
|
}
|
|
112
112
|
return result;
|
|
113
113
|
}
|
|
114
|
+
/*#__NO_SIDE_EFFECTS__*/
|
|
114
115
|
function _getGlobalConfig() {
|
|
115
116
|
if (!_globalCfg) {
|
|
116
|
-
var gbl = _getGlobalValue
|
|
117
|
+
var gbl = safe(_getGlobalValue).v || {};
|
|
117
118
|
_globalCfg = gbl[GLOBAL_CONFIG_KEY] = gbl[GLOBAL_CONFIG_KEY] || {};
|
|
118
119
|
}
|
|
119
120
|
return _globalCfg;
|
|
120
121
|
}
|
|
121
122
|
|
|
123
|
+
var ERROR_TYPE = "[object Error]";
|
|
124
|
+
/*#__NO_SIDE_EFFECTS__*/
|
|
122
125
|
function dumpObj(object, format) {
|
|
123
126
|
var propertyValueDump = EMPTY;
|
|
124
|
-
|
|
125
|
-
|
|
127
|
+
var objType = ObjProto[TO_STRING][CALL](object);
|
|
128
|
+
if (objType === ERROR_TYPE) {
|
|
129
|
+
object = { stack: asString(object.stack), message: asString(object.message), name: asString(object.name) };
|
|
126
130
|
}
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
}
|
|
131
|
+
try {
|
|
132
|
+
propertyValueDump = JSON.stringify(object, NULL_VALUE, format ? ((typeof format === "number") ? format : 4) : UNDEF_VALUE);
|
|
133
|
+
propertyValueDump = (propertyValueDump && propertyValueDump.replace(/"(\w+)"\s*:\s{0,1}/g, "$1: ")) || asString(object);
|
|
134
|
+
}
|
|
135
|
+
catch (e) {
|
|
136
|
+
propertyValueDump = " - " + dumpObj(e, format);
|
|
134
137
|
}
|
|
135
|
-
return
|
|
138
|
+
return objType + ": " + propertyValueDump;
|
|
136
139
|
}
|
|
137
140
|
|
|
138
141
|
var propMap = {
|
|
139
142
|
e: "enumerable",
|
|
140
143
|
c: "configurable",
|
|
141
|
-
v:
|
|
144
|
+
v: "value",
|
|
142
145
|
w: "writable",
|
|
143
146
|
g: "get",
|
|
144
147
|
s: "set"
|
|
145
148
|
};
|
|
149
|
+
/*#__NO_SIDE_EFFECTS__*/
|
|
146
150
|
function _createProp(value) {
|
|
147
151
|
var prop = {};
|
|
148
152
|
prop[propMap["c"]] = true;
|
|
@@ -167,13 +171,13 @@
|
|
|
167
171
|
}
|
|
168
172
|
|
|
169
173
|
var _globalLazyTestHooks;
|
|
170
|
-
|
|
174
|
+
function _initTestHooks() {
|
|
171
175
|
_globalLazyTestHooks = _getGlobalConfig();
|
|
172
|
-
|
|
173
|
-
|
|
176
|
+
}
|
|
177
|
+
/*#__NO_SIDE_EFFECTS__*/
|
|
174
178
|
function getLazy(cb) {
|
|
175
179
|
var lazyValue = {};
|
|
176
|
-
|
|
180
|
+
!_globalLazyTestHooks && _initTestHooks();
|
|
177
181
|
lazyValue.b = _globalLazyTestHooks.lzy;
|
|
178
182
|
objDefineProp(lazyValue, "v", {
|
|
179
183
|
configurable: true,
|
|
@@ -183,72 +187,86 @@
|
|
|
183
187
|
objDefineProp(lazyValue, "v", {
|
|
184
188
|
value: result
|
|
185
189
|
});
|
|
186
|
-
if (lazyValue.b) {
|
|
187
|
-
delete lazyValue.b;
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
|
-
if (_globalLazyTestHooks.lzy && lazyValue.b !== _globalLazyTestHooks.lzy) {
|
|
191
|
-
lazyValue.b = _globalLazyTestHooks.lzy;
|
|
192
190
|
}
|
|
191
|
+
lazyValue.b = _globalLazyTestHooks.lzy;
|
|
193
192
|
return result;
|
|
194
193
|
}
|
|
195
194
|
});
|
|
196
195
|
return lazyValue;
|
|
197
196
|
}
|
|
198
197
|
|
|
199
|
-
|
|
200
|
-
|
|
198
|
+
/*#__NO_SIDE_EFFECTS__*/
|
|
199
|
+
function createCachedValue(value) {
|
|
200
|
+
return objDefineProp({
|
|
201
|
+
toJSON: function () { return value; }
|
|
202
|
+
}, "v", { value: value });
|
|
201
203
|
}
|
|
202
204
|
|
|
203
205
|
var WINDOW = "window";
|
|
204
206
|
var _cachedGlobal;
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
207
|
+
function _getGlobalInstFn(getFn, theArgs) {
|
|
208
|
+
var cachedValue;
|
|
209
|
+
return function () {
|
|
210
|
+
!_globalLazyTestHooks && _initTestHooks();
|
|
211
|
+
(!cachedValue || _globalLazyTestHooks.lzy) && (cachedValue = createCachedValue(safe(getFn, theArgs).v));
|
|
212
|
+
return cachedValue.v;
|
|
213
|
+
};
|
|
214
|
+
}
|
|
215
|
+
/*#__NO_SIDE_EFFECTS__*/
|
|
216
|
+
function lazySafeGetInst(name) {
|
|
217
|
+
return getLazy(function () { return safe((getInst), [name]).v || UNDEF_VALUE; });
|
|
218
|
+
}
|
|
219
|
+
/*#__NO_SIDE_EFFECTS__*/
|
|
220
|
+
function getGlobal(useCached) {
|
|
221
|
+
!_globalLazyTestHooks && _initTestHooks();
|
|
222
|
+
(!_cachedGlobal || useCached === false || _globalLazyTestHooks.lzy) && (_cachedGlobal = createCachedValue(safe(_getGlobalValue).v || NULL_VALUE));
|
|
209
223
|
return _cachedGlobal.v;
|
|
210
|
-
}
|
|
211
|
-
|
|
224
|
+
}
|
|
225
|
+
/*#__NO_SIDE_EFFECTS__*/
|
|
226
|
+
function getInst(name, useCached) {
|
|
212
227
|
var gbl = (!_cachedGlobal || useCached === false) ? getGlobal(useCached) : _cachedGlobal.v;
|
|
213
228
|
if (gbl && gbl[name]) {
|
|
214
229
|
return gbl[name];
|
|
215
230
|
}
|
|
216
|
-
if (name === WINDOW
|
|
217
|
-
return
|
|
231
|
+
if (name === WINDOW) {
|
|
232
|
+
return getWindow();
|
|
218
233
|
}
|
|
219
234
|
return NULL_VALUE;
|
|
220
|
-
}
|
|
235
|
+
}
|
|
236
|
+
var getWindow = ( /*#__PURE__*/_getGlobalInstFn(getInst, [WINDOW]));
|
|
221
237
|
|
|
222
|
-
var
|
|
223
|
-
|
|
238
|
+
var objCreate = ObjClass["create"] || polyObjCreate;
|
|
239
|
+
/*#__NO_SIDE_EFFECTS__*/
|
|
224
240
|
function polyObjCreate(obj) {
|
|
225
241
|
if (!obj) {
|
|
226
242
|
return {};
|
|
227
243
|
}
|
|
228
244
|
var type = typeof obj;
|
|
229
245
|
if (type !== OBJECT && type !== FUNCTION) {
|
|
230
|
-
|
|
246
|
+
throwTypeError("Prototype must be an Object or function: " + dumpObj(obj));
|
|
231
247
|
}
|
|
232
248
|
function tempFunc() { }
|
|
233
249
|
tempFunc[PROTOTYPE] = obj;
|
|
234
250
|
return new tempFunc();
|
|
235
251
|
}
|
|
236
252
|
|
|
253
|
+
/*#__NO_SIDE_EFFECTS__*/
|
|
237
254
|
function utcNow() {
|
|
238
255
|
return (Date.now || polyUtcNow)();
|
|
239
256
|
}
|
|
257
|
+
/*#__NO_SIDE_EFFECTS__*/
|
|
240
258
|
function polyUtcNow() {
|
|
241
259
|
return new Date().getTime();
|
|
242
260
|
}
|
|
243
261
|
|
|
244
262
|
var _perf;
|
|
263
|
+
/*#__NO_SIDE_EFFECTS__*/
|
|
245
264
|
function getPerformance() {
|
|
246
|
-
|
|
265
|
+
!_globalLazyTestHooks && _initTestHooks();
|
|
266
|
+
(!_perf || (!_perf.b && _globalLazyTestHooks.lzy)) && (_perf = lazySafeGetInst("performance"));
|
|
247
267
|
return _perf.v;
|
|
248
268
|
}
|
|
249
269
|
|
|
250
|
-
(getGlobal() || {})["Symbol"];
|
|
251
|
-
(getGlobal() || {})["Reflect"];
|
|
252
270
|
var strHasOwnProperty = "hasOwnProperty";
|
|
253
271
|
var extendStaticsFn = function (d, b) {
|
|
254
272
|
extendStaticsFn = ObjClass$1["setPrototypeOf"] ||
|
|
@@ -345,13 +363,13 @@
|
|
|
345
363
|
}
|
|
346
364
|
}
|
|
347
365
|
function _isDynamicCandidate(target, funcName, skipOwn) {
|
|
348
|
-
return (funcName !== Constructor && typeof target[funcName] === strFunction && (skipOwn || objHasOwnProperty(target, funcName)));
|
|
366
|
+
return (funcName !== Constructor && typeof target[funcName] === strFunction && (skipOwn || objHasOwnProperty(target, funcName)) && funcName !== str__Proto && funcName !== Prototype);
|
|
349
367
|
}
|
|
350
368
|
function _throwTypeError(message) {
|
|
351
369
|
throwTypeError("DynamicProto: " + message);
|
|
352
370
|
}
|
|
353
371
|
function _getInstanceFuncs(thisTarget) {
|
|
354
|
-
var instFuncs =
|
|
372
|
+
var instFuncs = objCreate(null);
|
|
355
373
|
_forEachProp(thisTarget, function (name) {
|
|
356
374
|
if (!instFuncs[name] && _isDynamicCandidate(thisTarget, name, false)) {
|
|
357
375
|
instFuncs[name] = thisTarget[name];
|
|
@@ -380,7 +398,7 @@
|
|
|
380
398
|
return theFunc.apply(target, arguments);
|
|
381
399
|
};
|
|
382
400
|
}
|
|
383
|
-
var baseFuncs =
|
|
401
|
+
var baseFuncs = objCreate(null);
|
|
384
402
|
_forEachProp(instFuncs, function (name) {
|
|
385
403
|
baseFuncs[name] = _instFuncProxy(thisTarget, instFuncs, name);
|
|
386
404
|
});
|
|
@@ -400,8 +418,8 @@
|
|
|
400
418
|
function _getInstFunc(target, funcName, proto, currentDynProtoProxy) {
|
|
401
419
|
var instFunc = null;
|
|
402
420
|
if (target && objHasOwnProperty(proto, DynClassName)) {
|
|
403
|
-
var instFuncTable = target[DynInstFuncTable] ||
|
|
404
|
-
instFunc = (instFuncTable[proto[DynClassName]] ||
|
|
421
|
+
var instFuncTable = target[DynInstFuncTable] || objCreate(null);
|
|
422
|
+
instFunc = (instFuncTable[proto[DynClassName]] || objCreate(null))[funcName];
|
|
405
423
|
if (!instFunc) {
|
|
406
424
|
_throwTypeError("Missing [" + funcName + "] " + strFunction);
|
|
407
425
|
}
|
|
@@ -451,20 +469,24 @@
|
|
|
451
469
|
return dynProtoProxy;
|
|
452
470
|
}
|
|
453
471
|
if (!_isObjectOrArrayPrototype(proto)) {
|
|
454
|
-
var instFuncTable = target[DynInstFuncTable] = target[DynInstFuncTable] ||
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
instFuncTable[DynAllowInstChkTag]
|
|
458
|
-
|
|
459
|
-
_forEachProp(target, function (name) {
|
|
460
|
-
if (_isDynamicCandidate(target, name, false) && target[name] !== baseInstFuncs[name]) {
|
|
461
|
-
instFuncs_1[name] = target[name];
|
|
462
|
-
delete target[name];
|
|
463
|
-
if (!objHasOwnProperty(proto, name) || (proto[name] && !proto[name][DynProxyTag])) {
|
|
464
|
-
proto[name] = _createDynamicPrototype(proto, name);
|
|
465
|
-
}
|
|
472
|
+
var instFuncTable = target[DynInstFuncTable] = target[DynInstFuncTable] || objCreate(null);
|
|
473
|
+
if (!_isObjectOrArrayPrototype(instFuncTable)) {
|
|
474
|
+
var instFuncs_1 = instFuncTable[className] = (instFuncTable[className] || objCreate(null));
|
|
475
|
+
if (instFuncTable[DynAllowInstChkTag] !== false) {
|
|
476
|
+
instFuncTable[DynAllowInstChkTag] = !!setInstanceFunc;
|
|
466
477
|
}
|
|
467
|
-
|
|
478
|
+
if (!_isObjectOrArrayPrototype(instFuncs_1)) {
|
|
479
|
+
_forEachProp(target, function (name) {
|
|
480
|
+
if (_isDynamicCandidate(target, name, false) && target[name] !== baseInstFuncs[name]) {
|
|
481
|
+
instFuncs_1[name] = target[name];
|
|
482
|
+
delete target[name];
|
|
483
|
+
if (!objHasOwnProperty(proto, name) || (proto[name] && !proto[name][DynProxyTag])) {
|
|
484
|
+
proto[name] = _createDynamicPrototype(proto, name);
|
|
485
|
+
}
|
|
486
|
+
}
|
|
487
|
+
});
|
|
488
|
+
}
|
|
489
|
+
}
|
|
468
490
|
}
|
|
469
491
|
}
|
|
470
492
|
function _checkPrototype(classProto, thisTarget) {
|