clarity-js 0.7.58 → 0.7.60
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/build/clarity.extended.js +1 -1
- package/build/clarity.insight.js +1 -1
- package/build/clarity.js +87 -33
- package/build/clarity.min.js +1 -1
- package/build/clarity.module.js +87 -33
- package/build/clarity.performance.js +1 -1
- package/package.json +1 -1
- package/src/core/history.ts +2 -0
- package/src/core/index.ts +2 -0
- package/src/core/measure.ts +3 -1
- package/src/diagnostic/index.ts +2 -0
- package/src/diagnostic/script.ts +2 -0
- package/src/interaction/change.ts +2 -0
- package/src/interaction/click.ts +2 -0
- package/src/interaction/clipboard.ts +2 -0
- package/src/interaction/index.ts +2 -0
- package/src/interaction/input.ts +2 -0
- package/src/interaction/pointer.ts +14 -3
- package/src/interaction/resize.ts +2 -0
- package/src/interaction/scroll.ts +3 -0
- package/src/interaction/selection.ts +2 -0
- package/src/interaction/submit.ts +2 -0
- package/src/interaction/unload.ts +2 -0
- package/src/interaction/visibility.ts +2 -0
- package/src/layout/document.ts +2 -0
- package/src/layout/index.ts +2 -0
- package/src/layout/mutation.ts +22 -0
- package/src/layout/region.ts +2 -0
- package/src/layout/style.ts +32 -30
- package/src/performance/index.ts +2 -0
- package/src/performance/observer.ts +3 -0
- package/types/data.d.ts +4 -2
- package/types/layout.d.ts +3 -1
- package/types/performance.d.ts +32 -0
package/build/clarity.module.js
CHANGED
|
@@ -1719,6 +1719,7 @@ function compute$9() {
|
|
|
1719
1719
|
encode$4(8 /* Event.Document */);
|
|
1720
1720
|
}
|
|
1721
1721
|
}
|
|
1722
|
+
compute$9.dn = 19 /* FunctionNames.DocumentCompute */;
|
|
1722
1723
|
function stop$v() {
|
|
1723
1724
|
reset$k();
|
|
1724
1725
|
}
|
|
@@ -1739,6 +1740,7 @@ function recompute$8(evt) {
|
|
|
1739
1740
|
schedule$1(encode$3.bind(this, 42 /* Event.Change */));
|
|
1740
1741
|
}
|
|
1741
1742
|
}
|
|
1743
|
+
recompute$8.dn = 5 /* FunctionNames.ChangeRecompute */;
|
|
1742
1744
|
function reset$j() {
|
|
1743
1745
|
state$9 = [];
|
|
1744
1746
|
}
|
|
@@ -1819,6 +1821,7 @@ function handler$3(event, root, evt) {
|
|
|
1819
1821
|
schedule$1(encode$3.bind(this, event));
|
|
1820
1822
|
}
|
|
1821
1823
|
}
|
|
1824
|
+
handler$3.dn = 6 /* FunctionNames.ClickHandler */;
|
|
1822
1825
|
function link(node) {
|
|
1823
1826
|
while (node && node !== document) {
|
|
1824
1827
|
if (node.nodeType === Node.ELEMENT_NODE) {
|
|
@@ -1905,6 +1908,7 @@ function recompute$7(action, evt) {
|
|
|
1905
1908
|
state$7.push({ time: time(evt), event: 38 /* Event.Clipboard */, data: { target: target(evt), action: action } });
|
|
1906
1909
|
schedule$1(encode$3.bind(this, 38 /* Event.Clipboard */));
|
|
1907
1910
|
}
|
|
1911
|
+
recompute$7.dn = 7 /* FunctionNames.ClipboardRecompute */;
|
|
1908
1912
|
function reset$h() {
|
|
1909
1913
|
state$7 = [];
|
|
1910
1914
|
}
|
|
@@ -1942,6 +1946,7 @@ function recompute$6(evt) {
|
|
|
1942
1946
|
timeout$6 = setTimeout(process$7, 1000 /* Setting.InputLookAhead */, 27 /* Event.Input */);
|
|
1943
1947
|
}
|
|
1944
1948
|
}
|
|
1949
|
+
recompute$6.dn = 9 /* FunctionNames.InputRecompute */;
|
|
1945
1950
|
function process$7(event) {
|
|
1946
1951
|
schedule$1(encode$3.bind(this, event));
|
|
1947
1952
|
}
|
|
@@ -1955,7 +1960,8 @@ function stop$r() {
|
|
|
1955
1960
|
|
|
1956
1961
|
var state$5 = [];
|
|
1957
1962
|
var timeout$5 = null;
|
|
1958
|
-
var
|
|
1963
|
+
var hasPrimaryTouch = false;
|
|
1964
|
+
var primaryTouchId = 0;
|
|
1959
1965
|
var activeTouchPointIds = new Set();
|
|
1960
1966
|
function start$s() {
|
|
1961
1967
|
reset$f();
|
|
@@ -1987,6 +1993,7 @@ function mouse(event, root, evt) {
|
|
|
1987
1993
|
handler$2({ time: time(evt), event: event, data: { target: target(evt), x: x, y: y } });
|
|
1988
1994
|
}
|
|
1989
1995
|
}
|
|
1996
|
+
mouse.dn = 10 /* FunctionNames.PointerMouse */;
|
|
1990
1997
|
function touch(event, root, evt) {
|
|
1991
1998
|
var frame = iframe(root);
|
|
1992
1999
|
var d = frame ? frame.contentDocument.documentElement : document.documentElement;
|
|
@@ -2005,7 +2012,9 @@ function touch(event, root, evt) {
|
|
|
2005
2012
|
switch (event) {
|
|
2006
2013
|
case 17 /* Event.TouchStart */:
|
|
2007
2014
|
if (activeTouchPointIds.size === 0) {
|
|
2008
|
-
|
|
2015
|
+
// Track presence of primary touch separately to handle scenarios when same id is repeated
|
|
2016
|
+
hasPrimaryTouch = true;
|
|
2017
|
+
primaryTouchId = id;
|
|
2009
2018
|
}
|
|
2010
2019
|
activeTouchPointIds.add(id);
|
|
2011
2020
|
break;
|
|
@@ -2014,14 +2023,21 @@ function touch(event, root, evt) {
|
|
|
2014
2023
|
activeTouchPointIds.delete(id);
|
|
2015
2024
|
break;
|
|
2016
2025
|
}
|
|
2017
|
-
var isPrimary =
|
|
2026
|
+
var isPrimary = hasPrimaryTouch && primaryTouchId === id;
|
|
2018
2027
|
// Check for null values before processing this event
|
|
2019
2028
|
if (x !== null && y !== null) {
|
|
2020
2029
|
handler$2({ time: t, event: event, data: { target: target(evt), x: x, y: y, id: id, isPrimary: isPrimary } });
|
|
2021
2030
|
}
|
|
2031
|
+
// Reset primary touch point id once touch event ends
|
|
2032
|
+
if (event === 20 /* Event.TouchCancel */ || event === 18 /* Event.TouchEnd */) {
|
|
2033
|
+
if (primaryTouchId === id) {
|
|
2034
|
+
hasPrimaryTouch = false;
|
|
2035
|
+
}
|
|
2036
|
+
}
|
|
2022
2037
|
}
|
|
2023
2038
|
}
|
|
2024
2039
|
}
|
|
2040
|
+
touch.dn = 11 /* FunctionNames.PointerTouch */;
|
|
2025
2041
|
function handler$2(current) {
|
|
2026
2042
|
switch (current.event) {
|
|
2027
2043
|
case 12 /* Event.MouseMove */:
|
|
@@ -2089,6 +2105,7 @@ function recompute$5() {
|
|
|
2089
2105
|
initialStateLogged = true;
|
|
2090
2106
|
}
|
|
2091
2107
|
}
|
|
2108
|
+
recompute$5.dn = 12 /* FunctionNames.ResizeRecompute */;
|
|
2092
2109
|
function process$5(event) {
|
|
2093
2110
|
schedule$1(encode$3.bind(this, event));
|
|
2094
2111
|
}
|
|
@@ -2153,6 +2170,7 @@ function recompute$4(event) {
|
|
|
2153
2170
|
clearTimeout(timeout$3);
|
|
2154
2171
|
timeout$3 = setTimeout(process$4, 500 /* Setting.LookAhead */, 10 /* Event.Scroll */);
|
|
2155
2172
|
}
|
|
2173
|
+
recompute$4.dn = 13 /* FunctionNames.ScrollRecompute */;
|
|
2156
2174
|
function getPositionNode(x, y) {
|
|
2157
2175
|
var _a, _b;
|
|
2158
2176
|
var node;
|
|
@@ -2194,6 +2212,7 @@ function compute$8() {
|
|
|
2194
2212
|
log(32 /* Dimension.InitialScrollBottom */, (_b = bottom === null || bottom === void 0 ? void 0 : bottom.hash) === null || _b === void 0 ? void 0 : _b.join("." /* Constant.Dot */));
|
|
2195
2213
|
}
|
|
2196
2214
|
}
|
|
2215
|
+
compute$8.dn = 14 /* FunctionNames.ScrollCompute */;
|
|
2197
2216
|
function stop$o() {
|
|
2198
2217
|
clearTimeout(timeout$3);
|
|
2199
2218
|
state$4 = [];
|
|
@@ -2241,6 +2260,7 @@ function recompute$3(root) {
|
|
|
2241
2260
|
clearTimeout(timeout$2);
|
|
2242
2261
|
timeout$2 = setTimeout(process$3, 500 /* Setting.LookAhead */, 21 /* Event.Selection */);
|
|
2243
2262
|
}
|
|
2263
|
+
recompute$3.dn = 15 /* FunctionNames.SelectionRecompute */;
|
|
2244
2264
|
function process$3(event) {
|
|
2245
2265
|
schedule$1(encode$3.bind(this, event));
|
|
2246
2266
|
}
|
|
@@ -2264,6 +2284,7 @@ function recompute$2(evt) {
|
|
|
2264
2284
|
state$3.push({ time: time(evt), event: 39 /* Event.Submit */, data: { target: target(evt) } });
|
|
2265
2285
|
schedule$1(encode$3.bind(this, 39 /* Event.Submit */));
|
|
2266
2286
|
}
|
|
2287
|
+
recompute$2.dn = 16 /* FunctionNames.SubmitRecompute */;
|
|
2267
2288
|
function reset$b() {
|
|
2268
2289
|
state$3 = [];
|
|
2269
2290
|
}
|
|
@@ -2280,6 +2301,7 @@ function recompute$1(evt) {
|
|
|
2280
2301
|
encode$3(26 /* Event.Unload */, time(evt));
|
|
2281
2302
|
stop();
|
|
2282
2303
|
}
|
|
2304
|
+
recompute$1.dn = 17 /* FunctionNames.UnloadRecompute */;
|
|
2283
2305
|
function reset$a() {
|
|
2284
2306
|
data$9 = null;
|
|
2285
2307
|
}
|
|
@@ -2297,6 +2319,7 @@ function recompute(evt) {
|
|
|
2297
2319
|
data$8 = { visible: "visibilityState" in document ? document.visibilityState : "default" };
|
|
2298
2320
|
encode$3(28 /* Event.Visibility */, time(evt));
|
|
2299
2321
|
}
|
|
2322
|
+
recompute.dn = 18 /* FunctionNames.VisibilityRecompute */;
|
|
2300
2323
|
function reset$9() {
|
|
2301
2324
|
data$8 = null;
|
|
2302
2325
|
}
|
|
@@ -2318,6 +2341,7 @@ function start$l() {
|
|
|
2318
2341
|
start$o();
|
|
2319
2342
|
start$n();
|
|
2320
2343
|
}
|
|
2344
|
+
start$l.dn = 8 /* FunctionNames.InteractionStart */;
|
|
2321
2345
|
function stop$j() {
|
|
2322
2346
|
stop$e();
|
|
2323
2347
|
stop$t();
|
|
@@ -2470,6 +2494,7 @@ function start$k() {
|
|
|
2470
2494
|
}
|
|
2471
2495
|
}
|
|
2472
2496
|
}
|
|
2497
|
+
start$k.dn = 21 /* FunctionNames.MutationStart */;
|
|
2473
2498
|
function observe$3(node) {
|
|
2474
2499
|
// Create a new observer for every time a new DOM tree (e.g. root document or shadowdom root) is discovered on the page
|
|
2475
2500
|
// In the case of shadow dom, any mutations that happen within the shadow dom are not bubbled up to the host document
|
|
@@ -2523,6 +2548,7 @@ function handle$1(m) {
|
|
|
2523
2548
|
measure(compute$6)();
|
|
2524
2549
|
});
|
|
2525
2550
|
}
|
|
2551
|
+
handle$1.dn = 22 /* FunctionNames.MutationHandle */;
|
|
2526
2552
|
function processMutation(timer, mutation, instance, timestamp) {
|
|
2527
2553
|
return __awaiter(this, void 0, void 0, function () {
|
|
2528
2554
|
var state, target, type;
|
|
@@ -2603,12 +2629,27 @@ function process$2() {
|
|
|
2603
2629
|
_d.sent();
|
|
2604
2630
|
_d.label = 5;
|
|
2605
2631
|
case 5:
|
|
2632
|
+
cleanHistory();
|
|
2606
2633
|
stop$w(timer);
|
|
2607
2634
|
return [2 /*return*/];
|
|
2608
2635
|
}
|
|
2609
2636
|
});
|
|
2610
2637
|
});
|
|
2611
2638
|
}
|
|
2639
|
+
function cleanHistory() {
|
|
2640
|
+
var now = time();
|
|
2641
|
+
if (Object.keys(history$4).length > 10000 /* Setting.MaxMutationHistoryCount */) {
|
|
2642
|
+
history$4 = {};
|
|
2643
|
+
count$1(38 /* Metric.HistoryClear */);
|
|
2644
|
+
}
|
|
2645
|
+
for (var _i = 0, _a = Object.keys(history$4); _i < _a.length; _i++) {
|
|
2646
|
+
var key = _a[_i];
|
|
2647
|
+
var h = history$4[key];
|
|
2648
|
+
if (now > h[1] + 30000 /* Setting.MaxMutationHistoryTime */) {
|
|
2649
|
+
delete history$4[key];
|
|
2650
|
+
}
|
|
2651
|
+
}
|
|
2652
|
+
}
|
|
2612
2653
|
function track$5(m, timer, instance, timestamp) {
|
|
2613
2654
|
var value = m.target ? get(m.target.parentNode) : null;
|
|
2614
2655
|
// Check if the parent is already discovered and that the parent is not the document root
|
|
@@ -2736,7 +2777,8 @@ function generate(target, type) {
|
|
|
2736
2777
|
target: target,
|
|
2737
2778
|
type: type
|
|
2738
2779
|
}]);
|
|
2739
|
-
}
|
|
2780
|
+
}
|
|
2781
|
+
generate.dn = 23 /* FunctionNames.MutationGenerate */;
|
|
2740
2782
|
|
|
2741
2783
|
var digitsRegex = /[^0-9\.]/g;
|
|
2742
2784
|
/* JSON+LD (Linked Data) Recursive Parser */
|
|
@@ -3066,35 +3108,37 @@ var styleSheetMap = {};
|
|
|
3066
3108
|
var styleTimeMap = {};
|
|
3067
3109
|
var documentNodes = [];
|
|
3068
3110
|
function start$j() {
|
|
3069
|
-
if (
|
|
3070
|
-
replace
|
|
3071
|
-
|
|
3072
|
-
|
|
3073
|
-
|
|
3074
|
-
|
|
3075
|
-
|
|
3076
|
-
|
|
3077
|
-
|
|
3078
|
-
|
|
3111
|
+
if (window['CSSStyleSheet'] && CSSStyleSheet.prototype) {
|
|
3112
|
+
if (replace === null) {
|
|
3113
|
+
replace = CSSStyleSheet.prototype.replace;
|
|
3114
|
+
CSSStyleSheet.prototype.replace = function () {
|
|
3115
|
+
if (active()) {
|
|
3116
|
+
max(36 /* Metric.ConstructedStyles */, 1);
|
|
3117
|
+
// if we haven't seen this stylesheet on this page yet, wait until the checkDocumentStyles has found it
|
|
3118
|
+
// and attached the sheet to a document. This way the timestamp of the style sheet creation will align
|
|
3119
|
+
// to when it is used in the document rather than potentially being misaligned during the traverse process.
|
|
3120
|
+
if (this[styleSheetPageNum] === data$2.pageNum) {
|
|
3121
|
+
trackStyleChange(time(), this[styleSheetId], 1 /* StyleSheetOperation.Replace */, arguments[0]);
|
|
3122
|
+
}
|
|
3079
3123
|
}
|
|
3080
|
-
|
|
3081
|
-
|
|
3082
|
-
}
|
|
3083
|
-
|
|
3084
|
-
|
|
3085
|
-
|
|
3086
|
-
|
|
3087
|
-
|
|
3088
|
-
|
|
3089
|
-
|
|
3090
|
-
|
|
3091
|
-
|
|
3092
|
-
|
|
3093
|
-
|
|
3124
|
+
return replace.apply(this, arguments);
|
|
3125
|
+
};
|
|
3126
|
+
}
|
|
3127
|
+
if (replaceSync === null) {
|
|
3128
|
+
replaceSync = CSSStyleSheet.prototype.replaceSync;
|
|
3129
|
+
CSSStyleSheet.prototype.replaceSync = function () {
|
|
3130
|
+
if (active()) {
|
|
3131
|
+
max(36 /* Metric.ConstructedStyles */, 1);
|
|
3132
|
+
// if we haven't seen this stylesheet on this page yet, wait until the checkDocumentStyles has found it
|
|
3133
|
+
// and attached the sheet to a document. This way the timestamp of the style sheet creation will align
|
|
3134
|
+
// to when it is used in the document rather than potentially being misaligned during the traverse process.
|
|
3135
|
+
if (this[styleSheetPageNum] === data$2.pageNum) {
|
|
3136
|
+
trackStyleChange(time(), this[styleSheetId], 2 /* StyleSheetOperation.ReplaceSync */, arguments[0]);
|
|
3137
|
+
}
|
|
3094
3138
|
}
|
|
3095
|
-
|
|
3096
|
-
|
|
3097
|
-
}
|
|
3139
|
+
return replaceSync.apply(this, arguments);
|
|
3140
|
+
};
|
|
3141
|
+
}
|
|
3098
3142
|
}
|
|
3099
3143
|
}
|
|
3100
3144
|
function checkDocumentStyles(documentNode, timestamp) {
|
|
@@ -3543,6 +3587,7 @@ function compute$6() {
|
|
|
3543
3587
|
encode$4(7 /* Event.Region */);
|
|
3544
3588
|
}
|
|
3545
3589
|
}
|
|
3590
|
+
compute$6.dn = 24 /* FunctionNames.RegionCompute */;
|
|
3546
3591
|
function handler$1(entries) {
|
|
3547
3592
|
for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {
|
|
3548
3593
|
var entry = entries_1[_i];
|
|
@@ -4191,7 +4236,8 @@ function handler(error) {
|
|
|
4191
4236
|
encode$2(31 /* Event.ScriptError */);
|
|
4192
4237
|
}
|
|
4193
4238
|
return true;
|
|
4194
|
-
}
|
|
4239
|
+
}
|
|
4240
|
+
handler.dn = 4 /* FunctionNames.ScriptHandler */;
|
|
4195
4241
|
|
|
4196
4242
|
function encode$2 (type) {
|
|
4197
4243
|
return __awaiter(this, void 0, void 0, function () {
|
|
@@ -5077,6 +5123,7 @@ function measure (method) {
|
|
|
5077
5123
|
if (duration > config$2.longTask) {
|
|
5078
5124
|
count$1(7 /* Metric.LongTaskCount */);
|
|
5079
5125
|
max(6 /* Metric.ThreadBlockedTime */, duration);
|
|
5126
|
+
log$1(9 /* Code.FunctionExecutionTime */, 0 /* Severity.Info */, "".concat(method.dn || method.name, "-").concat(duration));
|
|
5080
5127
|
}
|
|
5081
5128
|
};
|
|
5082
5129
|
}
|
|
@@ -5150,6 +5197,7 @@ function compute$1() {
|
|
|
5150
5197
|
window.setTimeout(restart$1, 250 /* Setting.RestartDelay */);
|
|
5151
5198
|
}
|
|
5152
5199
|
}
|
|
5200
|
+
compute$1.dn = 1 /* FunctionNames.HistoryCompute */;
|
|
5153
5201
|
function restart$1() {
|
|
5154
5202
|
start();
|
|
5155
5203
|
max(29 /* Metric.SinglePage */, 1 /* BooleanFlag.True */);
|
|
@@ -5229,13 +5277,15 @@ function suspend() {
|
|
|
5229
5277
|
function restart() {
|
|
5230
5278
|
start();
|
|
5231
5279
|
event("clarity" /* Constant.Clarity */, "restart" /* Constant.Restart */);
|
|
5232
|
-
}
|
|
5280
|
+
}
|
|
5281
|
+
restart.dn = 2 /* FunctionNames.Restart */;
|
|
5233
5282
|
|
|
5234
5283
|
function start$5() {
|
|
5235
5284
|
start$A();
|
|
5236
5285
|
start$e();
|
|
5237
5286
|
start$d();
|
|
5238
5287
|
}
|
|
5288
|
+
start$5.dn = 3 /* FunctionNames.DiagnosticStart */;
|
|
5239
5289
|
function stop$4() {
|
|
5240
5290
|
stop$c();
|
|
5241
5291
|
}
|
|
@@ -5295,6 +5345,7 @@ function start$3() {
|
|
|
5295
5345
|
start$j();
|
|
5296
5346
|
start$i();
|
|
5297
5347
|
}
|
|
5348
|
+
start$3.dn = 20 /* FunctionNames.LayoutStart */;
|
|
5298
5349
|
function stop$3() {
|
|
5299
5350
|
stop$f();
|
|
5300
5351
|
stop$x();
|
|
@@ -5515,9 +5566,11 @@ function observe() {
|
|
|
5515
5566
|
log$1(3 /* Code.PerformanceObserver */, 1 /* Severity.Warning */);
|
|
5516
5567
|
}
|
|
5517
5568
|
}
|
|
5569
|
+
observe.dn = 26 /* FunctionNames.ObserverObserve */;
|
|
5518
5570
|
function handle(entries) {
|
|
5519
5571
|
process(entries.getEntries());
|
|
5520
5572
|
}
|
|
5573
|
+
handle.dn = 27 /* FunctionNames.ObserverHandle */;
|
|
5521
5574
|
function process(entries) {
|
|
5522
5575
|
var visible = "visibilityState" in document ? document.visibilityState === "visible" : true;
|
|
5523
5576
|
for (var i = 0; i < entries.length; i++) {
|
|
@@ -5579,6 +5632,7 @@ function start$1() {
|
|
|
5579
5632
|
reset();
|
|
5580
5633
|
start$2();
|
|
5581
5634
|
}
|
|
5635
|
+
start$1.dn = 25 /* FunctionNames.PerformanceStart */;
|
|
5582
5636
|
function stop$1() {
|
|
5583
5637
|
stop$2();
|
|
5584
5638
|
reset();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(){"use strict";var t=Object.freeze({__proto__:null,get queue(){return gt},get start(){return vt},get stop(){return mt},get track(){return st}}),n=Object.freeze({__proto__:null,get check(){return Et},get compute(){return Mt},get data(){return lt},get start(){return _t},get stop(){return Ot},get trigger(){return It}}),e=Object.freeze({__proto__:null,get compute(){return qt},get data(){return Tt},get log(){return At},get reset(){return Nt},get start(){return zt},get stop(){return Ct},get updates(){return xt}}),r=Object.freeze({__proto__:null,get callback(){return Zt},get callbacks(){return Rt},get clear(){return Jt},get consent(){return Wt},get data(){return Pt},get electron(){return Ut},get id(){return Xt},get metadata(){return Bt},get save(){return Gt},get shortid(){return Kt},get start(){return Lt},get stop(){return Vt}}),o=Object.freeze({__proto__:null,get data(){return on},get envelope(){return un},get start(){return an},get stop(){return cn}}),a={projectId:null,delay:1e3,lean:!1,track:!0,content:!0,drop:[],mask:[],unmask:[],regions:[],cookies:[],fraud:!0,checksum:[],report:null,upload:null,fallback:null,upgrade:null,action:null,dob:null,delayDom:!1,throttleDom:!0,conversions:!1,longTask:30,includeSubdomains:!0};function i(t){return window.Zone&&"__symbol__"in window.Zone?window.Zone.__symbol__(t):t}var c=0;function u(t){void 0===t&&(t=null);var n=t&&t.timeStamp>0?t.timeStamp:performance.now(),e=t&&t.view?t.view.performance.timeOrigin:performance.timeOrigin;return Math.max(Math.round(n+e-c),0)}var s="0.7.58";var l=!0,d=null,f=null;function p(t,n,e){return function(){if(l&&null===d)try{d=new RegExp("\\p{N}","gu"),f=new RegExp("\\p{L}","gu"),new RegExp("\\p{Sc}","gu")}catch(t){l=!1}}(),t?t.replace(f,n).replace(d,e):t}var h=[],v=null;function g(){}var m=[];function y(){}function b(){}var w=Object.freeze({__proto__:null,checkDocumentStyles:function(t){},compute:function(){},data:v,hashText:y,keys:m,log:g,observe:function(){},reset:function(){},sheetAdoptionState:[],sheetUpdateState:[],start:function(){},state:h,stop:function(){},trigger:b}),k=null;function S(t,n){An()&&t&&"string"==typeof t&&t.length<255&&(k=n&&"string"==typeof n&&n.length<255?{key:t,value:n}:{value:t},St(24))}var _,E=null,I=null;function M(t){t in E||(E[t]=0),t in I||(I[t]=0),E[t]++,I[t]++}function O(t,n){null!==n&&(t in E||(E[t]=0),t in I||(I[t]=0),E[t]+=n,I[t]+=n)}function T(t,n){null!==n&&!1===isNaN(n)&&(t in E||(E[t]=0),(n>E[t]||0===E[t])&&(I[t]=n,E[t]=n))}function x(t,n,e){return window.setTimeout(dn(t),n,e)}function j(t){return window.clearTimeout(t)}var z=0,C=0,A=null;function q(){A&&j(A),A=x(N,C),z=u()}function N(){var t=u();_={gap:t-z},St(25),_.gap<3e5?A=x(N,C):jn&&(S("clarity","suspend"),ne(),["mousemove","touchstart"].forEach((function(t){return pn(document,t,qn)})),["resize","scroll","pageshow"].forEach((function(t){return pn(window,t,qn)})))}var D=Object.freeze({__proto__:null,get data(){return _},reset:q,start:function(){C=6e4,z=0},stop:function(){j(A),z=0,C=0}}),P=null;function R(t){An()&&a.lean&&(a.lean=!1,P={key:t},Zt(),Gt(),a.upgrade&&a.upgrade(t),St(3))}var U=Object.freeze({__proto__:null,get data(){return P},start:function(){!a.lean&&a.upgrade&&a.upgrade("Config"),P=null},stop:function(){P=null},upgrade:R});function H(t,n,e,r){return new(e||(e=Promise))((function(o,a){function i(t){try{u(r.next(t))}catch(t){a(t)}}function c(t){try{u(r.throw(t))}catch(t){a(t)}}function u(t){var n;t.done?o(t.value):(n=t.value,n instanceof e?n:new e((function(t){t(n)}))).then(i,c)}u((r=r.apply(t,n||[])).next())}))}function L(t,n){var e,r,o,a,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return a={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function c(c){return function(u){return function(c){if(e)throw new TypeError("Generator is already executing.");for(;a&&(a=0,c[0]&&(i=0)),i;)try{if(e=1,r&&(o=2&c[0]?r.return:c[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,c[1])).done)return o;switch(r=0,o&&(c=[2&c[0],o.value]),c[0]){case 0:case 1:o=c;break;case 4:return i.label++,{value:c[1],done:!1};case 5:i.label++,r=c[1],c=[0];continue;case 7:c=i.ops.pop(),i.trys.pop();continue;default:if(!(o=i.trys,(o=o.length>0&&o[o.length-1])||6!==c[0]&&2!==c[0])){i=0;continue}if(3===c[0]&&(!o||c[1]>o[0]&&c[1]<o[3])){i.label=c[1];break}if(6===c[0]&&i.label<o[1]){i.label=o[1],o=c;break}if(o&&i.label<o[2]){i.label=o[2],i.ops.push(c);break}o[2]&&i.ops.pop(),i.trys.pop();continue}c=n.call(t,i)}catch(t){c=[6,t],r=0}finally{e=o=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}([c,u])}}}var V=null;function B(t,n){W(t,"string"==typeof n?[n]:n)}function X(t,n,e,r){return void 0===n&&(n=null),void 0===e&&(e=null),void 0===r&&(r=null),H(this,void 0,void 0,(function(){var o,a;return L(this,(function(i){switch(i.label){case 0:return a={},[4,G(t)];case 1:return a.userId=i.sent(),a.userHint=r||((c=t)&&c.length>=5?"".concat(c.substring(0,2)).concat(p(c.substring(2),"*","*")):p(c,"*","*")),W("userId",[(o=a).userId]),W("userHint",[o.userHint]),W("userType",[F(t)]),n&&(W("sessionId",[n]),o.sessionId=n),e&&(W("pageId",[e]),o.pageId=e),[2,o]}var c}))}))}function W(t,n){if(An()&&t&&n&&"string"==typeof t&&t.length<255){for(var e=(t in V?V[t]:[]),r=0;r<n.length;r++)"string"==typeof n[r]&&n[r].length<255&&e.push(n[r]);V[t]=e}}function J(){St(34)}function Z(){V={}}function G(t){return H(this,void 0,void 0,(function(){var n;return L(this,(function(e){switch(e.label){case 0:return e.trys.push([0,4,,5]),crypto&&t?[4,crypto.subtle.digest("SHA-256",(new TextEncoder).encode(t))]:[3,2];case 1:return n=e.sent(),[2,Array.prototype.map.call(new Uint8Array(n),(function(t){return("00"+t.toString(16)).slice(-2)})).join("")];case 2:return[2,""];case 3:return[3,5];case 4:return e.sent(),[2,""];case 5:return[2]}}))}))}function F(t){return t&&t.indexOf("@")>0?"email":"string"}var Y="CompressionStream"in window;function K(t){return H(this,void 0,void 0,(function(){var n,e;return L(this,(function(r){switch(r.label){case 0:return r.trys.push([0,3,,4]),Y?(n=new ReadableStream({start:function(n){return H(this,void 0,void 0,(function(){return L(this,(function(e){return n.enqueue(t),n.close(),[2]}))}))}}).pipeThrough(new TextEncoderStream).pipeThrough(new window.CompressionStream("gzip")),e=Uint8Array.bind,[4,Q(n)]):[3,2];case 1:return[2,new(e.apply(Uint8Array,[void 0,r.sent()]))];case 2:return[3,4];case 3:return r.sent(),[3,4];case 4:return[2,null]}}))}))}function Q(t){return H(this,void 0,void 0,(function(){var n,e,r,o,a;return L(this,(function(i){switch(i.label){case 0:n=t.getReader(),e=[],r=!1,o=[],i.label=1;case 1:return r?[3,3]:[4,n.read()];case 2:return a=i.sent(),r=a.done,o=a.value,r?[2,e]:(e.push.apply(e,o),[3,1]);case 3:return[2,e]}}))}))}var $=null;function tt(t){try{if(!$)return;var n=function(t){try{return JSON.parse(t)}catch(t){return[]}}(t);n.forEach((function(t){$(t)}))}catch(t){}}var nt=[w,e,Object.freeze({__proto__:null,compute:J,get data(){return V},identify:X,reset:Z,set:B,start:function(){Z()},stop:function(){Z()}}),n,w,r,o,t,D,U,w];function et(){E={},I={},M(5),nt.forEach((function(t){return dn(t.start)()}))}function rt(){nt.slice().reverse().forEach((function(t){return dn(t.stop)()})),E={},I={}}function ot(){J(),qt(),St(0),Mt()}var at,it,ct,ut,st,lt,dt=0,ft=0,pt=null,ht=0;function vt(){ut=!0,dt=0,ft=0,ht=0,at=[],it=[],ct={},st=null}function gt(t,n){if(void 0===n&&(n=!0),ut){var e=u(),r=t.length>1?t[1]:null,o=JSON.stringify(t);switch(r){case 5:dt+=o.length;case 37:case 6:case 43:case 45:case 46:ft+=o.length,at.push(o);break;default:it.push(o)}M(25);var i=function(){var t=!1===a.lean&&dt>0?100:on.sequence*a.delay;return"string"==typeof a.upload?Math.max(Math.min(t,3e4),100):a.delay}();e-ht>2*i&&(j(pt),pt=null),n&&null===pt&&(25!==r&&q(),pt=x(yt,i),ht=e,Et(ft))}}function mt(){j(pt),yt(!0),dt=0,ft=0,ht=0,at=[],it=[],ct={},st=null,ut=!1}function yt(t){return void 0===t&&(t=!1),H(this,void 0,void 0,(function(){var n,e,r,o,i,c,u,s;return L(this,(function(l){switch(l.label){case 0:return pt=null,(n=!1===a.lean&&ft>0&&(ft<1048576||on.sequence>0))&&T(1,1),ot(),e=!0===t,r=JSON.stringify(un(e)),o="[".concat(it.join(),"]"),i=n?"[".concat(at.join(),"]"):"",c=function(t){return t.p.length>0?'{"e":'.concat(t.e,',"a":').concat(t.a,',"p":').concat(t.p,"}"):'{"e":'.concat(t.e,',"a":').concat(t.a,"}")}({e:r,a:o,p:i}),e?(s=null,[3,3]):[3,1];case 1:return[4,K(c)];case 2:s=l.sent(),l.label=3;case 3:return O(2,(u=s)?u.length:c.length),bt(c,u,on.sequence,e),it=[],n&&(at=[],ft=0,dt=0),[2]}}))}))}function bt(t,n,e,r){if(void 0===r&&(r=!1),"string"==typeof a.upload){var o=a.upload,i=!1;if(r&&"sendBeacon"in navigator)try{(i=navigator.sendBeacon.bind(navigator)(o,t))&&kt(e)}catch(t){}if(!1===i){e in ct?ct[e].attempts++:ct[e]={data:t,attempts:1};var c=new XMLHttpRequest;c.open("POST",o,!0),c.timeout=15e3,c.ontimeout=function(){ln(new Error("".concat("Timeout"," : ").concat(o)))},null!==e&&(c.onreadystatechange=function(){dn(wt)(c,e)}),c.withCredentials=!0,n?(c.setRequestHeader("Accept","application/x-clarity-gzip"),c.send(n)):c.send(t)}}else if(a.upload){(0,a.upload)(t),kt(e)}}function wt(t,n){var e=ct[n];t&&4===t.readyState&&e&&((t.status<200||t.status>208)&&e.attempts<=1?t.status>=400&&t.status<500?It(6):(0===t.status&&(a.upload=a.fallback?a.fallback:a.upload),bt(e.data,null,n)):(st={sequence:n,attempts:e.attempts,status:t.status},e.attempts>1&&St(2),200===t.status&&t.responseText&&function(t){for(var n=t&&t.length>0?t.split("\n"):[],e=0,r=n;e<r.length;e++){var o=r[e],i=o&&o.length>0?o.split(/ (.*)/):[""];switch(i[0]){case"END":It(6);break;case"UPGRADE":R("Auto");break;case"ACTION":a.action&&i.length>1&&a.action(i[1]);break;case"EXTRACT":i.length>1&&i[1];break;case"SIGNAL":i.length>1&&tt(i[1])}}}(t.responseText),0===t.status&&(bt(e.data,null,n,!0),It(3)),t.status>=200&&t.status<=208&&kt(n),delete ct[n]))}function kt(t){1===t&&(Gt(),Zt())}function St(t){var n=[u(),t];switch(t){case 4:var e=h;e&&((n=[e.time,e.event]).push(e.data.visible),n.push(e.data.docWidth),n.push(e.data.docHeight),n.push(e.data.screenWidth),n.push(e.data.screenHeight),n.push(e.data.scrollX),n.push(e.data.scrollY),n.push(e.data.pointerX),n.push(e.data.pointerY),n.push(e.data.activityTime),n.push(e.data.scrollTime),gt(n,!1));break;case 25:n.push(_.gap),gt(n);break;case 35:n.push(lt.check),gt(n,!1);break;case 3:n.push(P.key),gt(n);break;case 2:n.push(st.sequence),n.push(st.attempts),n.push(st.status),gt(n,!1);break;case 24:k.key&&n.push(k.key),n.push(k.value),gt(n);break;case 34:var r=Object.keys(V);if(r.length>0){for(var o=0,a=r;o<a.length;o++){var i=a[o];n.push(i),n.push(V[i])}Z(),gt(n,!1)}break;case 0:var c=Object.keys(I);if(c.length>0){for(var s=0,l=c;s<l.length;s++){var d=l[s],f=parseInt(d,10);n.push(f),n.push(Math.round(I[d]))}I={},gt(n,!1)}break;case 1:var p=Object.keys(xt);if(p.length>0){for(var g=0,y=p;g<y.length;g++){var b=y[g];f=parseInt(b,10);n.push(f),n.push(xt[b])}Nt(),gt(n,!1)}break;case 36:var w=Object.keys(v);if(w.length>0){for(var S=0,E=w;S<E.length;S++){var M=E[S];f=parseInt(M,10);n.push(f),n.push([].concat.apply([],v[M]))}gt(n,!1)}break;case 40:m.forEach((function(t){n.push(t);var e=[];for(var r in v[t]){var o=parseInt(r,10);e.push(o),e.push(v[t][r])}n.push(e)})),gt(n,!1)}}function _t(){lt={check:0}}function Et(t){if(0===lt.check){var n=lt.check;n=on.sequence>=128?1:n,n=on.pageNum>=128?7:n,n=u()>72e5?2:n,(n=t>10485760?2:n)!==lt.check&&It(n)}}function It(t){lt.check=t,5!==t&&(Jt(),ne())}function Mt(){0!==lt.check&&St(35)}function Ot(){lt=null}var Tt=null,xt=null,jt=!1;function zt(){Tt={},xt={},jt=!1}function Ct(){Tt={},xt={},jt=!1}function At(t,n){if(n&&(n="".concat(n),t in Tt||(Tt[t]=[]),Tt[t].indexOf(n)<0)){if(Tt[t].length>128)return void(jt||(jt=!0,It(5)));Tt[t].push(n),t in xt||(xt[t]=[]),xt[t].push(n)}}function qt(){St(1)}function Nt(){xt={},jt=!1}function Dt(t){At(36,t.toString())}var Pt=null,Rt=[],Ut=0,Ht=null;function Lt(){var t,n,e;Ht=null;var r=navigator&&"userAgent"in navigator?navigator.userAgent:"",o=null!==(e=null===(n=null===(t=null===Intl||void 0===Intl?void 0:Intl.DateTimeFormat())||void 0===t?void 0:t.resolvedOptions())||void 0===n?void 0:n.timeZone)&&void 0!==e?e:"",i=(new Date).getTimezoneOffset().toString(),c=window.location.ancestorOrigins?Array.from(window.location.ancestorOrigins).toString():"",u=document&&document.title?document.title:"";Ut=r.indexOf("Electron")>0?1:0;var s,l=function(){var t={session:Kt(),ts:Math.round(Date.now()),count:1,upgrade:null,upload:""},n=tn("_clsk",!a.includeSubdomains);if(n){var e=n.split("|");e.length>=5&&t.ts-Qt(e[1])<18e5&&(t.session=e[0],t.count=Qt(e[2])+1,t.upgrade=Qt(e[3]),t.upload=e.length>=6?"".concat("https://").concat(e[5],"/").concat(e[4]):"".concat("https://").concat(e[4]))}return t}(),d=$t(),f=a.projectId||function(t,n){void 0===n&&(n=null);for(var e,r=5381,o=r,a=0;a<t.length;a+=2)r=(r<<5)+r^t.charCodeAt(a),a+1<t.length&&(o=(o<<5)+o^t.charCodeAt(a+1));return e=Math.abs(r+11579*o),(n?e%Math.pow(2,n):e).toString(36)}(location.host);Pt={projectId:f,userId:d.id,sessionId:l.session,pageNum:l.count},a.lean=a.track&&null!==l.upgrade?0===l.upgrade:a.lean,a.upload=a.track&&"string"==typeof a.upload&&l.upload&&l.upload.length>"https://".length?l.upload:a.upload,At(0,r),At(3,u),At(1,function(t,n){if(void 0===n&&(n=!1),n)return"".concat("https://").concat("Electron");var e=a.drop;if(e&&e.length>0&&t&&t.indexOf("?")>0){var r=t.split("?");return r[0]+"?"+r[1].split("&").map((function(t){return e.some((function(n){return 0===t.indexOf("".concat(n,"="))}))?"".concat(t.split("=")[0],"=").concat("*na*"):t})).join("&")}return t}(location.href,!!Ut)),At(2,document.referrer),At(15,function(){var t=Kt();if(a.track&&Ft(window,"sessionStorage")){var n=sessionStorage.getItem("_cltk");t=n||t,sessionStorage.setItem("_cltk",t)}return t}()),At(16,document.documentElement.lang),At(17,document.dir),At(26,"".concat(window.devicePixelRatio)),At(28,d.dob.toString()),At(29,d.version.toString()),At(33,c),At(34,o),At(35,i),T(0,l.ts),T(1,0),T(35,Ut),navigator&&(At(9,navigator.language),T(33,navigator.hardwareConcurrency),T(32,navigator.maxTouchPoints),T(34,Math.round(navigator.deviceMemory)),(s=navigator.userAgentData)&&s.getHighEntropyValues?s.getHighEntropyValues(["model","platform","platformVersion","uaFullVersion"]).then((function(t){var n;At(22,t.platform),At(23,t.platformVersion),null===(n=t.brands)||void 0===n||n.forEach((function(t){At(24,t.name+"~"+t.version)})),At(25,t.model),T(27,t.mobile?1:0)})):At(22,navigator.platform)),screen&&(T(14,Math.round(screen.width)),T(15,Math.round(screen.height)),T(16,Math.round(screen.colorDepth)));for(var p=0,h=a.cookies;p<h.length;p++){var v=h[p],g=tn(v);g&&B(v,g)}!function(t){Dt(t?1:0)}(a.track),Yt(d)}function Vt(){Ht=null,Pt=null,Rt.forEach((function(t){t.called=!1}))}function Bt(t,n,e){void 0===n&&(n=!0),void 0===e&&(e=!1);var r=a.lean?0:1,o=!1;Pt&&(r||!1===n)&&(t(Pt,!a.lean),o=!0),!e&&o||Rt.push({callback:t,wait:n,recall:e,called:o})}function Xt(){return Pt?[Pt.userId,Pt.sessionId,Pt.pageNum].join("."):""}function Wt(t){if(void 0===t&&(t=!0),!t)return a.track=!1,en("_clsk","",-Number.MAX_VALUE),en("_clck","",-Number.MAX_VALUE),ne(),void window.setTimeout(te,250);An()&&(a.track=!0,Yt($t(),1),Gt(),Dt(2))}function Jt(){en("_clsk","",0)}function Zt(){!function(t){if(Rt.length>0)for(var n=0;n<Rt.length;n++){var e=Rt[n];!e.callback||e.called||e.wait&&!t||(e.callback(Pt,!a.lean),e.called=!0,e.recall||(Rt.splice(n,1),n--))}}(a.lean?0:1)}function Gt(){if(Pt){var t=Math.round(Date.now()),n=a.upload&&"string"==typeof a.upload?a.upload.replace("https://",""):"",e=a.lean?0:1;en("_clsk",[Pt.sessionId,t,Pt.pageNum,e,n].join("|"),1)}}function Ft(t,n){try{return!!t[n]}catch(t){return!1}}function Yt(t,n){void 0===n&&(n=null),n=null===n?t.consent:n;var e=Math.ceil((Date.now()+31536e6)/864e5),r=0===t.dob?null===a.dob?0:a.dob:t.dob;(null===t.expiry||Math.abs(e-t.expiry)>=1||t.consent!==n||t.dob!==r)&&en("_clck",[Pt.userId,2,e.toString(36),n,r].join("|"),365)}function Kt(){var t=Math.floor(Math.random()*Math.pow(2,32));return window&&window.crypto&&window.crypto.getRandomValues&&Uint32Array&&(t=window.crypto.getRandomValues(new Uint32Array(1))[0]),t.toString(36)}function Qt(t,n){return void 0===n&&(n=10),parseInt(t,n)}function $t(){var t={id:Kt(),version:0,expiry:null,consent:0,dob:0},n=tn("_clck",!a.includeSubdomains);if(n&&n.length>0){for(var e=n.split("|"),r=0,o=0,i=document.cookie.split(";");o<i.length;o++){r+="_clck"===i[o].split("=")[0].trim()?1:0}if(1===e.length||r>1){var c="".concat(";").concat("expires=").concat(new Date(0).toUTCString()).concat(";path=/");document.cookie="".concat("_clck","=").concat(c),document.cookie="".concat("_clsk","=").concat(c)}e.length>1&&(t.version=Qt(e[1])),e.length>2&&(t.expiry=Qt(e[2],36)),e.length>3&&1===Qt(e[3])&&(t.consent=1),e.length>4&&Qt(e[1])>1&&(t.dob=Qt(e[4])),a.track=a.track||1===t.consent,t.id=a.track?e[0]:t.id}return t}function tn(t,n){var e;if(void 0===n&&(n=!1),Ft(document,"cookie")){var r=document.cookie.split(";");if(r)for(var o=0;o<r.length;o++){var a=r[o].split("=");if(a.length>1&&a[0]&&a[0].trim()===t){for(var i=nn(a[1]),c=i[0],u=i[1];c;)c=(e=nn(u))[0],u=e[1];return n?u.endsWith("".concat("~","1"))?u.substring(0,u.length-2):null:u}}}return null}function nn(t){try{var n=decodeURIComponent(t);return[n!=t,n]}catch(t){}return[!1,t]}function en(t,n,e){if((a.track||""==n)&&(navigator&&navigator.cookieEnabled||Ft(document,"cookie"))){var r=function(t){return encodeURIComponent(t)}(n),o=new Date;o.setDate(o.getDate()+e);var i=o?"expires="+o.toUTCString():"",c="".concat(t,"=").concat(r).concat(";").concat(i).concat(";path=/");try{if(null===Ht){for(var u=location.hostname?location.hostname.split("."):[],s=u.length-1;s>=0;s--)if(Ht=".".concat(u[s]).concat(Ht||""),s<u.length-1&&(document.cookie="".concat(c).concat(";").concat("domain=").concat(Ht),tn(t)===n))return;Ht=""}}catch(t){Ht=""}document.cookie=Ht?"".concat(c).concat(";").concat("domain=").concat(Ht):c}}var rn,on=null;function an(){var t=Pt;on={version:s,sequence:0,start:0,duration:0,projectId:t.projectId,userId:t.userId,sessionId:t.sessionId,pageNum:t.pageNum,upload:0,end:0}}function cn(){on=null}function un(t){return on.start=on.start+on.duration,on.duration=u()-on.start,on.sequence++,on.upload=t&&"sendBeacon"in navigator?1:0,on.end=t?1:0,[on.version,on.sequence,on.start,on.duration,on.projectId,on.userId,on.sessionId,on.pageNum,on.upload,on.end]}function sn(){rn=[]}function ln(t){if(rn&&-1===rn.indexOf(t.message)){var n=a.report;if(n&&n.length>0){var e={v:on.version,p:on.projectId,u:on.userId,s:on.sessionId,n:on.pageNum};t.message&&(e.m=t.message),t.stack&&(e.e=t.stack);var r=new XMLHttpRequest;r.open("POST",n,!0),r.send(JSON.stringify(e)),rn.push(t.message)}}return t}function dn(t){return function(){var n=performance.now();try{t.apply(this,arguments)}catch(t){throw ln(t)}var e=performance.now()-n;O(4,e),e>a.longTask&&(M(7),T(6,e))}}var fn=[];function pn(t,n,e,r){void 0===r&&(r=!1),e=dn(e);try{t[i("addEventListener")](n,e,r),fn.push({event:n,target:t,listener:e,capture:r})}catch(t){}}function hn(){for(var t=0,n=fn;t<n.length;t++){var e=n[t];try{e.target[i("removeEventListener")](e.event,e.listener,e.capture)}catch(t){}}fn=[]}var vn=null,gn=null,mn=null,yn=0;function bn(){return!(yn++>20)}function wn(){yn=0,mn!==Sn()&&(ne(),window.setTimeout(kn,250))}function kn(){te(),T(29,1)}function Sn(){return location.href?location.href.replace(location.hash,""):location.href}var _n=[],En=null,In=null,Mn=null;function On(){In&&(Mn(),In=null,null===En&&xn())}function Tn(){_n=[],En=null,In=null}function xn(){var t=_n.shift();t&&(En=t,t.task().then((function(){t.id===Xt()&&(t.resolve(),En=null,xn())})).catch((function(n){t.id===Xt()&&(n&&(n.name,n.message,n.stack),En=null,xn())})))}var jn=!1;function zn(){jn=!0,c=performance.now()+performance.timeOrigin,Tn(),hn(),sn(),mn=Sn(),yn=0,pn(window,"popstate",wn),null===vn&&(vn=history.pushState,history.pushState=function(){vn.apply(this,arguments),An()&&bn()&&wn()}),null===gn&&(gn=history.replaceState,history.replaceState=function(){gn.apply(this,arguments),An()&&bn()&&wn()})}function Cn(){mn=null,yn=0,sn(),hn(),Tn(),c=0,jn=!1}function An(){return jn}function qn(){te(),S("clarity","restart")}var Nn=null;function Dn(){Nn=null}function Pn(t){Nn={fetchStart:Math.round(t.fetchStart),connectStart:Math.round(t.connectStart),connectEnd:Math.round(t.connectEnd),requestStart:Math.round(t.requestStart),responseStart:Math.round(t.responseStart),responseEnd:Math.round(t.responseEnd),domInteractive:Math.round(t.domInteractive),domComplete:Math.round(t.domComplete),loadEventStart:Math.round(t.loadEventStart),loadEventEnd:Math.round(t.loadEventEnd),redirectCount:Math.round(t.redirectCount),size:t.transferSize?t.transferSize:0,type:t.type,protocol:t.nextHopProtocol,encodedSize:t.encodedBodySize?t.encodedBodySize:0,decodedSize:t.decodedBodySize?t.decodedBodySize:0},function(t){H(this,void 0,void 0,(function(){var n,e;return L(this,(function(r){return n=u(),e=[n,t],29===t&&(e.push(Nn.fetchStart),e.push(Nn.connectStart),e.push(Nn.connectEnd),e.push(Nn.requestStart),e.push(Nn.responseStart),e.push(Nn.responseEnd),e.push(Nn.domInteractive),e.push(Nn.domComplete),e.push(Nn.loadEventStart),e.push(Nn.loadEventEnd),e.push(Nn.redirectCount),e.push(Nn.size),e.push(Nn.type),e.push(Nn.protocol),e.push(Nn.encodedSize),e.push(Nn.decodedSize),Dn(),gt(e)),[2]}))}))}(29)}var Rn,Un=0,Hn=1/0,Ln=0,Vn=0,Bn=[],Xn=new Map,Wn=function(){return Un||0},Jn=function(){if(!Bn.length)return-1;var t=Math.min(Bn.length-1,Math.floor((Wn()-Vn)/50));return Bn[t].latency},Zn=function(){Vn=Wn(),Bn.length=0,Xn.clear()},Gn=function(t){if(t.interactionId&&!(t.duration<40)){!function(t){"interactionCount"in performance?Un=performance.interactionCount:t.interactionId&&(Hn=Math.min(Hn,t.interactionId),Ln=Math.max(Ln,t.interactionId),Un=Ln?(Ln-Hn)/7+1:0)}(t);var n=Bn[Bn.length-1],e=Xn.get(t.interactionId);if(e||Bn.length<10||t.duration>(null==n?void 0:n.latency)){if(e)t.duration>e.latency&&(e.latency=t.duration);else{var r={id:t.interactionId,latency:t.duration};Xn.set(r.id,r),Bn.push(r)}Bn.sort((function(t,n){return n.latency-t.latency})),Bn.length>10&&Bn.splice(10).forEach((function(t){return Xn.delete(t.id)}))}}},Fn=["navigation","resource","longtask","first-input","layout-shift","largest-contentful-paint","event"];function Yn(){try{Rn&&Rn.disconnect(),Rn=new PerformanceObserver(dn(Kn));for(var t=0,n=Fn;t<n.length;t++){var e=n[t];PerformanceObserver.supportedEntryTypes.indexOf(e)>=0&&("layout-shift"===e&&O(9,0),Rn.observe({type:e,buffered:!0}))}}catch(t){}}function Kn(t){!function(t){for(var n=(!("visibilityState"in document)||"visible"===document.visibilityState),e=0;e<t.length;e++){var r=t[e];switch(r.entryType){case"navigation":Pn(r);break;case"resource":var o=r.name;At(4,Qn(o)),o!==a.upload&&o!==a.fallback||T(28,r.duration);break;case"longtask":M(7);break;case"first-input":n&&T(10,r.processingStart-r.startTime);break;case"event":n&&"PerformanceEventTiming"in window&&"interactionId"in PerformanceEventTiming.prototype&&(Gn(r),At(37,Jn().toString()));break;case"layout-shift":n&&!r.hadRecentInput&&O(9,1e3*r.value);break;case"largest-contentful-paint":n&&T(8,r.startTime)}}}(t.getEntries())}function Qn(t){var n=document.createElement("a");return n.href=t,n.host}var $n=[w,w,w,Object.freeze({__proto__:null,start:function(){Dn(),function(){navigator&&"connection"in navigator&&At(27,navigator.connection.effectiveType),window.PerformanceObserver&&PerformanceObserver.supportedEntryTypes&&("complete"!==document.readyState?pn(window,"load",x.bind(this,Yn,0)):Yn())}()},stop:function(){Rn&&Rn.disconnect(),Rn=null,Zn(),Dn()}})];function te(t){void 0===t&&(t=null),function(){try{var t=navigator&&"globalPrivacyControl"in navigator&&1==navigator.globalPrivacyControl;return!1===jn&&"undefined"!=typeof Promise&&window.MutationObserver&&document.createTreeWalker&&"now"in Date&&"now"in performance&&"undefined"!=typeof WeakMap&&!t}catch(t){return!1}}()&&(!function(t){if(null===t||jn)return!1;for(var n in t)n in a&&(a[n]=t[n])}(t),zn(),et(),$n.forEach((function(t){return dn(t.start)()})),null===t&&ae())}function ne(){An()&&($n.slice().reverse().forEach((function(t){return dn(t.stop)()})),rt(),Cn(),void 0!==re&&(re[oe]=function(){(re[oe].q=re[oe].q||[]).push(arguments),"start"===arguments[0]&&re[oe].q.unshift(re[oe].q.pop())&&ae()}))}var ee=Object.freeze({__proto__:null,consent:Wt,event:S,hashText:y,identify:X,metadata:Bt,pause:function(){An()&&(S("clarity","pause"),null===In&&(In=new Promise((function(t){Mn=t}))))},resume:function(){An()&&(On(),S("clarity","resume"))},set:B,signal:function(t){$=t},start:te,stop:ne,upgrade:R,version:s}),re=window,oe="clarity";function ae(){if(void 0!==re){if(re[oe]&&re[oe].v)return console.warn("Error CL001: Multiple Clarity tags detected.");var t=re[oe]&&re[oe].q||[];for(re[oe]=function(t){for(var n=[],e=1;e<arguments.length;e++)n[e-1]=arguments[e];return ee[t].apply(ee,n)},re[oe].v=s;t.length>0;)re[oe].apply(re,t.shift())}}ae()}();
|
|
1
|
+
!function(){"use strict";var t=Object.freeze({__proto__:null,get queue(){return gt},get start(){return vt},get stop(){return mt},get track(){return st}}),n=Object.freeze({__proto__:null,get check(){return Et},get compute(){return Mt},get data(){return lt},get start(){return _t},get stop(){return Ot},get trigger(){return It}}),e=Object.freeze({__proto__:null,get compute(){return qt},get data(){return Tt},get log(){return At},get reset(){return Nt},get start(){return zt},get stop(){return Ct},get updates(){return xt}}),r=Object.freeze({__proto__:null,get callback(){return Zt},get callbacks(){return Rt},get clear(){return Jt},get consent(){return Wt},get data(){return Pt},get electron(){return Ut},get id(){return Xt},get metadata(){return Bt},get save(){return Gt},get shortid(){return Kt},get start(){return Lt},get stop(){return Vt}}),o=Object.freeze({__proto__:null,get data(){return on},get envelope(){return un},get start(){return an},get stop(){return cn}}),a={projectId:null,delay:1e3,lean:!1,track:!0,content:!0,drop:[],mask:[],unmask:[],regions:[],cookies:[],fraud:!0,checksum:[],report:null,upload:null,fallback:null,upgrade:null,action:null,dob:null,delayDom:!1,throttleDom:!0,conversions:!1,longTask:30,includeSubdomains:!0};function i(t){return window.Zone&&"__symbol__"in window.Zone?window.Zone.__symbol__(t):t}var c=0;function u(t){void 0===t&&(t=null);var n=t&&t.timeStamp>0?t.timeStamp:performance.now(),e=t&&t.view?t.view.performance.timeOrigin:performance.timeOrigin;return Math.max(Math.round(n+e-c),0)}var s="0.7.58";var l=!0,d=null,f=null;function p(t,n,e){return function(){if(l&&null===d)try{d=new RegExp("\\p{N}","gu"),f=new RegExp("\\p{L}","gu"),new RegExp("\\p{Sc}","gu")}catch(t){l=!1}}(),t?t.replace(f,n).replace(d,e):t}var h=[],v=null;function g(){}var m=[];function y(){}function b(){}var w=Object.freeze({__proto__:null,checkDocumentStyles:function(t){},compute:function(){},data:v,hashText:y,keys:m,log:g,observe:function(){},reset:function(){},sheetAdoptionState:[],sheetUpdateState:[],start:function(){},state:h,stop:function(){},trigger:b}),k=null;function S(t,n){An()&&t&&"string"==typeof t&&t.length<255&&(k=n&&"string"==typeof n&&n.length<255?{key:t,value:n}:{value:t},St(24))}var _,E=null,I=null;function M(t){t in E||(E[t]=0),t in I||(I[t]=0),E[t]++,I[t]++}function O(t,n){null!==n&&(t in E||(E[t]=0),t in I||(I[t]=0),E[t]+=n,I[t]+=n)}function T(t,n){null!==n&&!1===isNaN(n)&&(t in E||(E[t]=0),(n>E[t]||0===E[t])&&(I[t]=n,E[t]=n))}function x(t,n,e){return window.setTimeout(dn(t),n,e)}function j(t){return window.clearTimeout(t)}var z=0,C=0,A=null;function q(){A&&j(A),A=x(N,C),z=u()}function N(){var t=u();_={gap:t-z},St(25),_.gap<3e5?A=x(N,C):jn&&(S("clarity","suspend"),ee(),["mousemove","touchstart"].forEach((function(t){return pn(document,t,qn)})),["resize","scroll","pageshow"].forEach((function(t){return pn(window,t,qn)})))}var D=Object.freeze({__proto__:null,get data(){return _},reset:q,start:function(){C=6e4,z=0},stop:function(){j(A),z=0,C=0}}),P=null;function R(t){An()&&a.lean&&(a.lean=!1,P={key:t},Zt(),Gt(),a.upgrade&&a.upgrade(t),St(3))}var U=Object.freeze({__proto__:null,get data(){return P},start:function(){!a.lean&&a.upgrade&&a.upgrade("Config"),P=null},stop:function(){P=null},upgrade:R});function H(t,n,e,r){return new(e||(e=Promise))((function(o,a){function i(t){try{u(r.next(t))}catch(t){a(t)}}function c(t){try{u(r.throw(t))}catch(t){a(t)}}function u(t){var n;t.done?o(t.value):(n=t.value,n instanceof e?n:new e((function(t){t(n)}))).then(i,c)}u((r=r.apply(t,n||[])).next())}))}function L(t,n){var e,r,o,a,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return a={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function c(c){return function(u){return function(c){if(e)throw new TypeError("Generator is already executing.");for(;a&&(a=0,c[0]&&(i=0)),i;)try{if(e=1,r&&(o=2&c[0]?r.return:c[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,c[1])).done)return o;switch(r=0,o&&(c=[2&c[0],o.value]),c[0]){case 0:case 1:o=c;break;case 4:return i.label++,{value:c[1],done:!1};case 5:i.label++,r=c[1],c=[0];continue;case 7:c=i.ops.pop(),i.trys.pop();continue;default:if(!(o=i.trys,(o=o.length>0&&o[o.length-1])||6!==c[0]&&2!==c[0])){i=0;continue}if(3===c[0]&&(!o||c[1]>o[0]&&c[1]<o[3])){i.label=c[1];break}if(6===c[0]&&i.label<o[1]){i.label=o[1],o=c;break}if(o&&i.label<o[2]){i.label=o[2],i.ops.push(c);break}o[2]&&i.ops.pop(),i.trys.pop();continue}c=n.call(t,i)}catch(t){c=[6,t],r=0}finally{e=o=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}([c,u])}}}var V=null;function B(t,n){W(t,"string"==typeof n?[n]:n)}function X(t,n,e,r){return void 0===n&&(n=null),void 0===e&&(e=null),void 0===r&&(r=null),H(this,void 0,void 0,(function(){var o,a;return L(this,(function(i){switch(i.label){case 0:return a={},[4,G(t)];case 1:return a.userId=i.sent(),a.userHint=r||((c=t)&&c.length>=5?"".concat(c.substring(0,2)).concat(p(c.substring(2),"*","*")):p(c,"*","*")),W("userId",[(o=a).userId]),W("userHint",[o.userHint]),W("userType",[F(t)]),n&&(W("sessionId",[n]),o.sessionId=n),e&&(W("pageId",[e]),o.pageId=e),[2,o]}var c}))}))}function W(t,n){if(An()&&t&&n&&"string"==typeof t&&t.length<255){for(var e=(t in V?V[t]:[]),r=0;r<n.length;r++)"string"==typeof n[r]&&n[r].length<255&&e.push(n[r]);V[t]=e}}function J(){St(34)}function Z(){V={}}function G(t){return H(this,void 0,void 0,(function(){var n;return L(this,(function(e){switch(e.label){case 0:return e.trys.push([0,4,,5]),crypto&&t?[4,crypto.subtle.digest("SHA-256",(new TextEncoder).encode(t))]:[3,2];case 1:return n=e.sent(),[2,Array.prototype.map.call(new Uint8Array(n),(function(t){return("00"+t.toString(16)).slice(-2)})).join("")];case 2:return[2,""];case 3:return[3,5];case 4:return e.sent(),[2,""];case 5:return[2]}}))}))}function F(t){return t&&t.indexOf("@")>0?"email":"string"}var Y="CompressionStream"in window;function K(t){return H(this,void 0,void 0,(function(){var n,e;return L(this,(function(r){switch(r.label){case 0:return r.trys.push([0,3,,4]),Y?(n=new ReadableStream({start:function(n){return H(this,void 0,void 0,(function(){return L(this,(function(e){return n.enqueue(t),n.close(),[2]}))}))}}).pipeThrough(new TextEncoderStream).pipeThrough(new window.CompressionStream("gzip")),e=Uint8Array.bind,[4,Q(n)]):[3,2];case 1:return[2,new(e.apply(Uint8Array,[void 0,r.sent()]))];case 2:return[3,4];case 3:return r.sent(),[3,4];case 4:return[2,null]}}))}))}function Q(t){return H(this,void 0,void 0,(function(){var n,e,r,o,a;return L(this,(function(i){switch(i.label){case 0:n=t.getReader(),e=[],r=!1,o=[],i.label=1;case 1:return r?[3,3]:[4,n.read()];case 2:return a=i.sent(),r=a.done,o=a.value,r?[2,e]:(e.push.apply(e,o),[3,1]);case 3:return[2,e]}}))}))}var $=null;function tt(t){try{if(!$)return;var n=function(t){try{return JSON.parse(t)}catch(t){return[]}}(t);n.forEach((function(t){$(t)}))}catch(t){}}var nt=[w,e,Object.freeze({__proto__:null,compute:J,get data(){return V},identify:X,reset:Z,set:B,start:function(){Z()},stop:function(){Z()}}),n,w,r,o,t,D,U,w];function et(){E={},I={},M(5),nt.forEach((function(t){return dn(t.start)()}))}function rt(){nt.slice().reverse().forEach((function(t){return dn(t.stop)()})),E={},I={}}function ot(){J(),qt(),St(0),Mt()}var at,it,ct,ut,st,lt,dt=0,ft=0,pt=null,ht=0;function vt(){ut=!0,dt=0,ft=0,ht=0,at=[],it=[],ct={},st=null}function gt(t,n){if(void 0===n&&(n=!0),ut){var e=u(),r=t.length>1?t[1]:null,o=JSON.stringify(t);switch(r){case 5:dt+=o.length;case 37:case 6:case 43:case 45:case 46:ft+=o.length,at.push(o);break;default:it.push(o)}M(25);var i=function(){var t=!1===a.lean&&dt>0?100:on.sequence*a.delay;return"string"==typeof a.upload?Math.max(Math.min(t,3e4),100):a.delay}();e-ht>2*i&&(j(pt),pt=null),n&&null===pt&&(25!==r&&q(),pt=x(yt,i),ht=e,Et(ft))}}function mt(){j(pt),yt(!0),dt=0,ft=0,ht=0,at=[],it=[],ct={},st=null,ut=!1}function yt(t){return void 0===t&&(t=!1),H(this,void 0,void 0,(function(){var n,e,r,o,i,c,u,s;return L(this,(function(l){switch(l.label){case 0:return pt=null,(n=!1===a.lean&&ft>0&&(ft<1048576||on.sequence>0))&&T(1,1),ot(),e=!0===t,r=JSON.stringify(un(e)),o="[".concat(it.join(),"]"),i=n?"[".concat(at.join(),"]"):"",c=function(t){return t.p.length>0?'{"e":'.concat(t.e,',"a":').concat(t.a,',"p":').concat(t.p,"}"):'{"e":'.concat(t.e,',"a":').concat(t.a,"}")}({e:r,a:o,p:i}),e?(s=null,[3,3]):[3,1];case 1:return[4,K(c)];case 2:s=l.sent(),l.label=3;case 3:return O(2,(u=s)?u.length:c.length),bt(c,u,on.sequence,e),it=[],n&&(at=[],ft=0,dt=0),[2]}}))}))}function bt(t,n,e,r){if(void 0===r&&(r=!1),"string"==typeof a.upload){var o=a.upload,i=!1;if(r&&"sendBeacon"in navigator)try{(i=navigator.sendBeacon.bind(navigator)(o,t))&&kt(e)}catch(t){}if(!1===i){e in ct?ct[e].attempts++:ct[e]={data:t,attempts:1};var c=new XMLHttpRequest;c.open("POST",o,!0),c.timeout=15e3,c.ontimeout=function(){ln(new Error("".concat("Timeout"," : ").concat(o)))},null!==e&&(c.onreadystatechange=function(){dn(wt)(c,e)}),c.withCredentials=!0,n?(c.setRequestHeader("Accept","application/x-clarity-gzip"),c.send(n)):c.send(t)}}else if(a.upload){(0,a.upload)(t),kt(e)}}function wt(t,n){var e=ct[n];t&&4===t.readyState&&e&&((t.status<200||t.status>208)&&e.attempts<=1?t.status>=400&&t.status<500?It(6):(0===t.status&&(a.upload=a.fallback?a.fallback:a.upload),bt(e.data,null,n)):(st={sequence:n,attempts:e.attempts,status:t.status},e.attempts>1&&St(2),200===t.status&&t.responseText&&function(t){for(var n=t&&t.length>0?t.split("\n"):[],e=0,r=n;e<r.length;e++){var o=r[e],i=o&&o.length>0?o.split(/ (.*)/):[""];switch(i[0]){case"END":It(6);break;case"UPGRADE":R("Auto");break;case"ACTION":a.action&&i.length>1&&a.action(i[1]);break;case"EXTRACT":i.length>1&&i[1];break;case"SIGNAL":i.length>1&&tt(i[1])}}}(t.responseText),0===t.status&&(bt(e.data,null,n,!0),It(3)),t.status>=200&&t.status<=208&&kt(n),delete ct[n]))}function kt(t){1===t&&(Gt(),Zt())}function St(t){var n=[u(),t];switch(t){case 4:var e=h;e&&((n=[e.time,e.event]).push(e.data.visible),n.push(e.data.docWidth),n.push(e.data.docHeight),n.push(e.data.screenWidth),n.push(e.data.screenHeight),n.push(e.data.scrollX),n.push(e.data.scrollY),n.push(e.data.pointerX),n.push(e.data.pointerY),n.push(e.data.activityTime),n.push(e.data.scrollTime),gt(n,!1));break;case 25:n.push(_.gap),gt(n);break;case 35:n.push(lt.check),gt(n,!1);break;case 3:n.push(P.key),gt(n);break;case 2:n.push(st.sequence),n.push(st.attempts),n.push(st.status),gt(n,!1);break;case 24:k.key&&n.push(k.key),n.push(k.value),gt(n);break;case 34:var r=Object.keys(V);if(r.length>0){for(var o=0,a=r;o<a.length;o++){var i=a[o];n.push(i),n.push(V[i])}Z(),gt(n,!1)}break;case 0:var c=Object.keys(I);if(c.length>0){for(var s=0,l=c;s<l.length;s++){var d=l[s],f=parseInt(d,10);n.push(f),n.push(Math.round(I[d]))}I={},gt(n,!1)}break;case 1:var p=Object.keys(xt);if(p.length>0){for(var g=0,y=p;g<y.length;g++){var b=y[g];f=parseInt(b,10);n.push(f),n.push(xt[b])}Nt(),gt(n,!1)}break;case 36:var w=Object.keys(v);if(w.length>0){for(var S=0,E=w;S<E.length;S++){var M=E[S];f=parseInt(M,10);n.push(f),n.push([].concat.apply([],v[M]))}gt(n,!1)}break;case 40:m.forEach((function(t){n.push(t);var e=[];for(var r in v[t]){var o=parseInt(r,10);e.push(o),e.push(v[t][r])}n.push(e)})),gt(n,!1)}}function _t(){lt={check:0}}function Et(t){if(0===lt.check){var n=lt.check;n=on.sequence>=128?1:n,n=on.pageNum>=128?7:n,n=u()>72e5?2:n,(n=t>10485760?2:n)!==lt.check&&It(n)}}function It(t){lt.check=t,5!==t&&(Jt(),ee())}function Mt(){0!==lt.check&&St(35)}function Ot(){lt=null}var Tt=null,xt=null,jt=!1;function zt(){Tt={},xt={},jt=!1}function Ct(){Tt={},xt={},jt=!1}function At(t,n){if(n&&(n="".concat(n),t in Tt||(Tt[t]=[]),Tt[t].indexOf(n)<0)){if(Tt[t].length>128)return void(jt||(jt=!0,It(5)));Tt[t].push(n),t in xt||(xt[t]=[]),xt[t].push(n)}}function qt(){St(1)}function Nt(){xt={},jt=!1}function Dt(t){At(36,t.toString())}var Pt=null,Rt=[],Ut=0,Ht=null;function Lt(){var t,n,e;Ht=null;var r=navigator&&"userAgent"in navigator?navigator.userAgent:"",o=null!==(e=null===(n=null===(t=null===Intl||void 0===Intl?void 0:Intl.DateTimeFormat())||void 0===t?void 0:t.resolvedOptions())||void 0===n?void 0:n.timeZone)&&void 0!==e?e:"",i=(new Date).getTimezoneOffset().toString(),c=window.location.ancestorOrigins?Array.from(window.location.ancestorOrigins).toString():"",u=document&&document.title?document.title:"";Ut=r.indexOf("Electron")>0?1:0;var s,l=function(){var t={session:Kt(),ts:Math.round(Date.now()),count:1,upgrade:null,upload:""},n=tn("_clsk",!a.includeSubdomains);if(n){var e=n.split("|");e.length>=5&&t.ts-Qt(e[1])<18e5&&(t.session=e[0],t.count=Qt(e[2])+1,t.upgrade=Qt(e[3]),t.upload=e.length>=6?"".concat("https://").concat(e[5],"/").concat(e[4]):"".concat("https://").concat(e[4]))}return t}(),d=$t(),f=a.projectId||function(t,n){void 0===n&&(n=null);for(var e,r=5381,o=r,a=0;a<t.length;a+=2)r=(r<<5)+r^t.charCodeAt(a),a+1<t.length&&(o=(o<<5)+o^t.charCodeAt(a+1));return e=Math.abs(r+11579*o),(n?e%Math.pow(2,n):e).toString(36)}(location.host);Pt={projectId:f,userId:d.id,sessionId:l.session,pageNum:l.count},a.lean=a.track&&null!==l.upgrade?0===l.upgrade:a.lean,a.upload=a.track&&"string"==typeof a.upload&&l.upload&&l.upload.length>"https://".length?l.upload:a.upload,At(0,r),At(3,u),At(1,function(t,n){if(void 0===n&&(n=!1),n)return"".concat("https://").concat("Electron");var e=a.drop;if(e&&e.length>0&&t&&t.indexOf("?")>0){var r=t.split("?");return r[0]+"?"+r[1].split("&").map((function(t){return e.some((function(n){return 0===t.indexOf("".concat(n,"="))}))?"".concat(t.split("=")[0],"=").concat("*na*"):t})).join("&")}return t}(location.href,!!Ut)),At(2,document.referrer),At(15,function(){var t=Kt();if(a.track&&Ft(window,"sessionStorage")){var n=sessionStorage.getItem("_cltk");t=n||t,sessionStorage.setItem("_cltk",t)}return t}()),At(16,document.documentElement.lang),At(17,document.dir),At(26,"".concat(window.devicePixelRatio)),At(28,d.dob.toString()),At(29,d.version.toString()),At(33,c),At(34,o),At(35,i),T(0,l.ts),T(1,0),T(35,Ut),navigator&&(At(9,navigator.language),T(33,navigator.hardwareConcurrency),T(32,navigator.maxTouchPoints),T(34,Math.round(navigator.deviceMemory)),(s=navigator.userAgentData)&&s.getHighEntropyValues?s.getHighEntropyValues(["model","platform","platformVersion","uaFullVersion"]).then((function(t){var n;At(22,t.platform),At(23,t.platformVersion),null===(n=t.brands)||void 0===n||n.forEach((function(t){At(24,t.name+"~"+t.version)})),At(25,t.model),T(27,t.mobile?1:0)})):At(22,navigator.platform)),screen&&(T(14,Math.round(screen.width)),T(15,Math.round(screen.height)),T(16,Math.round(screen.colorDepth)));for(var p=0,h=a.cookies;p<h.length;p++){var v=h[p],g=tn(v);g&&B(v,g)}!function(t){Dt(t?1:0)}(a.track),Yt(d)}function Vt(){Ht=null,Pt=null,Rt.forEach((function(t){t.called=!1}))}function Bt(t,n,e){void 0===n&&(n=!0),void 0===e&&(e=!1);var r=a.lean?0:1,o=!1;Pt&&(r||!1===n)&&(t(Pt,!a.lean),o=!0),!e&&o||Rt.push({callback:t,wait:n,recall:e,called:o})}function Xt(){return Pt?[Pt.userId,Pt.sessionId,Pt.pageNum].join("."):""}function Wt(t){if(void 0===t&&(t=!0),!t)return a.track=!1,en("_clsk","",-Number.MAX_VALUE),en("_clck","",-Number.MAX_VALUE),ee(),void window.setTimeout(ne,250);An()&&(a.track=!0,Yt($t(),1),Gt(),Dt(2))}function Jt(){en("_clsk","",0)}function Zt(){!function(t){if(Rt.length>0)for(var n=0;n<Rt.length;n++){var e=Rt[n];!e.callback||e.called||e.wait&&!t||(e.callback(Pt,!a.lean),e.called=!0,e.recall||(Rt.splice(n,1),n--))}}(a.lean?0:1)}function Gt(){if(Pt){var t=Math.round(Date.now()),n=a.upload&&"string"==typeof a.upload?a.upload.replace("https://",""):"",e=a.lean?0:1;en("_clsk",[Pt.sessionId,t,Pt.pageNum,e,n].join("|"),1)}}function Ft(t,n){try{return!!t[n]}catch(t){return!1}}function Yt(t,n){void 0===n&&(n=null),n=null===n?t.consent:n;var e=Math.ceil((Date.now()+31536e6)/864e5),r=0===t.dob?null===a.dob?0:a.dob:t.dob;(null===t.expiry||Math.abs(e-t.expiry)>=1||t.consent!==n||t.dob!==r)&&en("_clck",[Pt.userId,2,e.toString(36),n,r].join("|"),365)}function Kt(){var t=Math.floor(Math.random()*Math.pow(2,32));return window&&window.crypto&&window.crypto.getRandomValues&&Uint32Array&&(t=window.crypto.getRandomValues(new Uint32Array(1))[0]),t.toString(36)}function Qt(t,n){return void 0===n&&(n=10),parseInt(t,n)}function $t(){var t={id:Kt(),version:0,expiry:null,consent:0,dob:0},n=tn("_clck",!a.includeSubdomains);if(n&&n.length>0){for(var e=n.split("|"),r=0,o=0,i=document.cookie.split(";");o<i.length;o++){r+="_clck"===i[o].split("=")[0].trim()?1:0}if(1===e.length||r>1){var c="".concat(";").concat("expires=").concat(new Date(0).toUTCString()).concat(";path=/");document.cookie="".concat("_clck","=").concat(c),document.cookie="".concat("_clsk","=").concat(c)}e.length>1&&(t.version=Qt(e[1])),e.length>2&&(t.expiry=Qt(e[2],36)),e.length>3&&1===Qt(e[3])&&(t.consent=1),e.length>4&&Qt(e[1])>1&&(t.dob=Qt(e[4])),a.track=a.track||1===t.consent,t.id=a.track?e[0]:t.id}return t}function tn(t,n){var e;if(void 0===n&&(n=!1),Ft(document,"cookie")){var r=document.cookie.split(";");if(r)for(var o=0;o<r.length;o++){var a=r[o].split("=");if(a.length>1&&a[0]&&a[0].trim()===t){for(var i=nn(a[1]),c=i[0],u=i[1];c;)c=(e=nn(u))[0],u=e[1];return n?u.endsWith("".concat("~","1"))?u.substring(0,u.length-2):null:u}}}return null}function nn(t){try{var n=decodeURIComponent(t);return[n!=t,n]}catch(t){}return[!1,t]}function en(t,n,e){if((a.track||""==n)&&(navigator&&navigator.cookieEnabled||Ft(document,"cookie"))){var r=function(t){return encodeURIComponent(t)}(n),o=new Date;o.setDate(o.getDate()+e);var i=o?"expires="+o.toUTCString():"",c="".concat(t,"=").concat(r).concat(";").concat(i).concat(";path=/");try{if(null===Ht){for(var u=location.hostname?location.hostname.split("."):[],s=u.length-1;s>=0;s--)if(Ht=".".concat(u[s]).concat(Ht||""),s<u.length-1&&(document.cookie="".concat(c).concat(";").concat("domain=").concat(Ht),tn(t)===n))return;Ht=""}}catch(t){Ht=""}document.cookie=Ht?"".concat(c).concat(";").concat("domain=").concat(Ht):c}}var rn,on=null;function an(){var t=Pt;on={version:s,sequence:0,start:0,duration:0,projectId:t.projectId,userId:t.userId,sessionId:t.sessionId,pageNum:t.pageNum,upload:0,end:0}}function cn(){on=null}function un(t){return on.start=on.start+on.duration,on.duration=u()-on.start,on.sequence++,on.upload=t&&"sendBeacon"in navigator?1:0,on.end=t?1:0,[on.version,on.sequence,on.start,on.duration,on.projectId,on.userId,on.sessionId,on.pageNum,on.upload,on.end]}function sn(){rn=[]}function ln(t){if(rn&&-1===rn.indexOf(t.message)){var n=a.report;if(n&&n.length>0){var e={v:on.version,p:on.projectId,u:on.userId,s:on.sessionId,n:on.pageNum};t.message&&(e.m=t.message),t.stack&&(e.e=t.stack);var r=new XMLHttpRequest;r.open("POST",n,!0),r.send(JSON.stringify(e)),rn.push(t.message)}}return t}function dn(t){return function(){var n=performance.now();try{t.apply(this,arguments)}catch(t){throw ln(t)}var e=performance.now()-n;O(4,e),e>a.longTask&&(M(7),T(6,e),"".concat(t.dn||t.name,"-").concat(e))}}var fn=[];function pn(t,n,e,r){void 0===r&&(r=!1),e=dn(e);try{t[i("addEventListener")](n,e,r),fn.push({event:n,target:t,listener:e,capture:r})}catch(t){}}function hn(){for(var t=0,n=fn;t<n.length;t++){var e=n[t];try{e.target[i("removeEventListener")](e.event,e.listener,e.capture)}catch(t){}}fn=[]}var vn=null,gn=null,mn=null,yn=0;function bn(){return!(yn++>20)}function wn(){yn=0,mn!==Sn()&&(ee(),window.setTimeout(kn,250))}function kn(){ne(),T(29,1)}function Sn(){return location.href?location.href.replace(location.hash,""):location.href}wn.dn=1;var _n=[],En=null,In=null,Mn=null;function On(){In&&(Mn(),In=null,null===En&&xn())}function Tn(){_n=[],En=null,In=null}function xn(){var t=_n.shift();t&&(En=t,t.task().then((function(){t.id===Xt()&&(t.resolve(),En=null,xn())})).catch((function(n){t.id===Xt()&&(n&&(n.name,n.message,n.stack),En=null,xn())})))}var jn=!1;function zn(){jn=!0,c=performance.now()+performance.timeOrigin,Tn(),hn(),sn(),mn=Sn(),yn=0,pn(window,"popstate",wn),null===vn&&(vn=history.pushState,history.pushState=function(){vn.apply(this,arguments),An()&&bn()&&wn()}),null===gn&&(gn=history.replaceState,history.replaceState=function(){gn.apply(this,arguments),An()&&bn()&&wn()})}function Cn(){mn=null,yn=0,sn(),hn(),Tn(),c=0,jn=!1}function An(){return jn}function qn(){ne(),S("clarity","restart")}qn.dn=2;var Nn=null;function Dn(){Nn=null}function Pn(t){Nn={fetchStart:Math.round(t.fetchStart),connectStart:Math.round(t.connectStart),connectEnd:Math.round(t.connectEnd),requestStart:Math.round(t.requestStart),responseStart:Math.round(t.responseStart),responseEnd:Math.round(t.responseEnd),domInteractive:Math.round(t.domInteractive),domComplete:Math.round(t.domComplete),loadEventStart:Math.round(t.loadEventStart),loadEventEnd:Math.round(t.loadEventEnd),redirectCount:Math.round(t.redirectCount),size:t.transferSize?t.transferSize:0,type:t.type,protocol:t.nextHopProtocol,encodedSize:t.encodedBodySize?t.encodedBodySize:0,decodedSize:t.decodedBodySize?t.decodedBodySize:0},function(t){H(this,void 0,void 0,(function(){var n,e;return L(this,(function(r){return n=u(),e=[n,t],29===t&&(e.push(Nn.fetchStart),e.push(Nn.connectStart),e.push(Nn.connectEnd),e.push(Nn.requestStart),e.push(Nn.responseStart),e.push(Nn.responseEnd),e.push(Nn.domInteractive),e.push(Nn.domComplete),e.push(Nn.loadEventStart),e.push(Nn.loadEventEnd),e.push(Nn.redirectCount),e.push(Nn.size),e.push(Nn.type),e.push(Nn.protocol),e.push(Nn.encodedSize),e.push(Nn.decodedSize),Dn(),gt(e)),[2]}))}))}(29)}var Rn,Un=0,Hn=1/0,Ln=0,Vn=0,Bn=[],Xn=new Map,Wn=function(){return Un||0},Jn=function(){if(!Bn.length)return-1;var t=Math.min(Bn.length-1,Math.floor((Wn()-Vn)/50));return Bn[t].latency},Zn=function(){Vn=Wn(),Bn.length=0,Xn.clear()},Gn=function(t){if(t.interactionId&&!(t.duration<40)){!function(t){"interactionCount"in performance?Un=performance.interactionCount:t.interactionId&&(Hn=Math.min(Hn,t.interactionId),Ln=Math.max(Ln,t.interactionId),Un=Ln?(Ln-Hn)/7+1:0)}(t);var n=Bn[Bn.length-1],e=Xn.get(t.interactionId);if(e||Bn.length<10||t.duration>(null==n?void 0:n.latency)){if(e)t.duration>e.latency&&(e.latency=t.duration);else{var r={id:t.interactionId,latency:t.duration};Xn.set(r.id,r),Bn.push(r)}Bn.sort((function(t,n){return n.latency-t.latency})),Bn.length>10&&Bn.splice(10).forEach((function(t){return Xn.delete(t.id)}))}}},Fn=["navigation","resource","longtask","first-input","layout-shift","largest-contentful-paint","event"];function Yn(){try{Rn&&Rn.disconnect(),Rn=new PerformanceObserver(dn(Kn));for(var t=0,n=Fn;t<n.length;t++){var e=n[t];PerformanceObserver.supportedEntryTypes.indexOf(e)>=0&&("layout-shift"===e&&O(9,0),Rn.observe({type:e,buffered:!0}))}}catch(t){}}function Kn(t){!function(t){for(var n=(!("visibilityState"in document)||"visible"===document.visibilityState),e=0;e<t.length;e++){var r=t[e];switch(r.entryType){case"navigation":Pn(r);break;case"resource":var o=r.name;At(4,Qn(o)),o!==a.upload&&o!==a.fallback||T(28,r.duration);break;case"longtask":M(7);break;case"first-input":n&&T(10,r.processingStart-r.startTime);break;case"event":n&&"PerformanceEventTiming"in window&&"interactionId"in PerformanceEventTiming.prototype&&(Gn(r),At(37,Jn().toString()));break;case"layout-shift":n&&!r.hadRecentInput&&O(9,1e3*r.value);break;case"largest-contentful-paint":n&&T(8,r.startTime)}}}(t.getEntries())}function Qn(t){var n=document.createElement("a");return n.href=t,n.host}function $n(){Dn(),function(){navigator&&"connection"in navigator&&At(27,navigator.connection.effectiveType),window.PerformanceObserver&&PerformanceObserver.supportedEntryTypes&&("complete"!==document.readyState?pn(window,"load",x.bind(this,Yn,0)):Yn())}()}Yn.dn=26,Kn.dn=27,$n.dn=25;var te=[w,w,w,Object.freeze({__proto__:null,start:$n,stop:function(){Rn&&Rn.disconnect(),Rn=null,Zn(),Dn()}})];function ne(t){void 0===t&&(t=null),function(){try{var t=navigator&&"globalPrivacyControl"in navigator&&1==navigator.globalPrivacyControl;return!1===jn&&"undefined"!=typeof Promise&&window.MutationObserver&&document.createTreeWalker&&"now"in Date&&"now"in performance&&"undefined"!=typeof WeakMap&&!t}catch(t){return!1}}()&&(!function(t){if(null===t||jn)return!1;for(var n in t)n in a&&(a[n]=t[n])}(t),zn(),et(),te.forEach((function(t){return dn(t.start)()})),null===t&&ie())}function ee(){An()&&(te.slice().reverse().forEach((function(t){return dn(t.stop)()})),rt(),Cn(),void 0!==oe&&(oe[ae]=function(){(oe[ae].q=oe[ae].q||[]).push(arguments),"start"===arguments[0]&&oe[ae].q.unshift(oe[ae].q.pop())&&ie()}))}var re=Object.freeze({__proto__:null,consent:Wt,event:S,hashText:y,identify:X,metadata:Bt,pause:function(){An()&&(S("clarity","pause"),null===In&&(In=new Promise((function(t){Mn=t}))))},resume:function(){An()&&(On(),S("clarity","resume"))},set:B,signal:function(t){$=t},start:ne,stop:ee,upgrade:R,version:s}),oe=window,ae="clarity";function ie(){if(void 0!==oe){if(oe[ae]&&oe[ae].v)return console.warn("Error CL001: Multiple Clarity tags detected.");var t=oe[ae]&&oe[ae].q||[];for(oe[ae]=function(t){for(var n=[],e=1;e<arguments.length;e++)n[e-1]=arguments[e];return re[t].apply(re,n)},oe[ae].v=s;t.length>0;)oe[ae].apply(oe,t.shift())}}ie()}();
|
package/package.json
CHANGED
package/src/core/history.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { BooleanFlag, Code, Constant, Metric, Setting, Severity } from "@clarity-types/data";
|
|
2
|
+
import { FunctionNames } from "@clarity-types/performance";
|
|
2
3
|
import * as clarity from "@src/clarity";
|
|
3
4
|
import * as core from "@src/core"
|
|
4
5
|
import { bind } from "@src/core/event";
|
|
@@ -55,6 +56,7 @@ function compute(): void {
|
|
|
55
56
|
window.setTimeout(restart, Setting.RestartDelay);
|
|
56
57
|
}
|
|
57
58
|
}
|
|
59
|
+
compute.dn = FunctionNames.HistoryCompute;
|
|
58
60
|
|
|
59
61
|
function restart(): void {
|
|
60
62
|
clarity.start();
|
package/src/core/index.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Config } from "@clarity-types/core";
|
|
2
2
|
import { Constant } from "@clarity-types/data";
|
|
3
|
+
import { FunctionNames } from "@clarity-types/performance";
|
|
3
4
|
import configuration from "@src/core/config";
|
|
4
5
|
import * as event from "@src/core/event";
|
|
5
6
|
import * as history from "@src/core/history";
|
|
@@ -79,3 +80,4 @@ function restart(): void {
|
|
|
79
80
|
clarity.start();
|
|
80
81
|
custom.event(Constant.Clarity, Constant.Restart);
|
|
81
82
|
}
|
|
83
|
+
restart.dn = FunctionNames.Restart;
|
package/src/core/measure.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { Metric } from "@clarity-types/data";
|
|
1
|
+
import { Code, Metric, Severity } from "@clarity-types/data";
|
|
2
2
|
import { report } from "@src/core/report";
|
|
3
3
|
import * as metric from "@src/data/metric";
|
|
4
|
+
import * as internal from "@src/diagnostic/internal";
|
|
4
5
|
import config from "./config";
|
|
5
6
|
|
|
6
7
|
// tslint:disable-next-line: ban-types
|
|
@@ -13,6 +14,7 @@ export default function (method: Function): Function {
|
|
|
13
14
|
if (duration > config.longTask) {
|
|
14
15
|
metric.count(Metric.LongTaskCount);
|
|
15
16
|
metric.max(Metric.ThreadBlockedTime, duration);
|
|
17
|
+
internal.log(Code.FunctionExecutionTime, Severity.Info, `${method.dn || method.name}-${duration}`);
|
|
16
18
|
}
|
|
17
19
|
};
|
|
18
20
|
}
|
package/src/diagnostic/index.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { FunctionNames } from "@clarity-types/performance";
|
|
1
2
|
import * as fraud from "@src/diagnostic/fraud";
|
|
2
3
|
import * as internal from "@src/diagnostic/internal";
|
|
3
4
|
import * as script from "@src/diagnostic/script";
|
|
@@ -7,6 +8,7 @@ export function start(): void {
|
|
|
7
8
|
script.start();
|
|
8
9
|
internal.start();
|
|
9
10
|
}
|
|
11
|
+
start.dn = FunctionNames.DiagnosticStart;
|
|
10
12
|
|
|
11
13
|
export function stop(): void {
|
|
12
14
|
internal.stop();
|
package/src/diagnostic/script.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Event, Setting } from "@clarity-types/data";
|
|
2
2
|
import { ScriptErrorData } from "@clarity-types/diagnostic";
|
|
3
|
+
import { FunctionNames } from "@clarity-types/performance";
|
|
3
4
|
import { bind } from "@src/core/event";
|
|
4
5
|
import encode from "./encode";
|
|
5
6
|
|
|
@@ -33,3 +34,4 @@ function handler(error: ErrorEvent): boolean {
|
|
|
33
34
|
|
|
34
35
|
return true;
|
|
35
36
|
}
|
|
37
|
+
handler.dn = FunctionNames.ScriptHandler;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Constant, Event, Setting } from "@clarity-types/data";
|
|
2
2
|
import { ChangeState } from "@clarity-types/interaction";
|
|
3
|
+
import { FunctionNames } from "@clarity-types/performance";
|
|
3
4
|
import config from "@src/core/config";
|
|
4
5
|
import { bind } from "@src/core/event";
|
|
5
6
|
import hash from "@src/core/hash";
|
|
@@ -28,6 +29,7 @@ function recompute(evt: UIEvent): void {
|
|
|
28
29
|
schedule(encode.bind(this, Event.Change));
|
|
29
30
|
}
|
|
30
31
|
}
|
|
32
|
+
recompute.dn = FunctionNames.ChangeRecompute;
|
|
31
33
|
|
|
32
34
|
export function reset(): void {
|
|
33
35
|
state = [];
|
package/src/interaction/click.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { BooleanFlag, Constant, Event, Setting } from "@clarity-types/data";
|
|
2
2
|
import { BrowsingContext, ClickState } from "@clarity-types/interaction";
|
|
3
3
|
import { Box } from "@clarity-types/layout";
|
|
4
|
+
import { FunctionNames } from "@clarity-types/performance";
|
|
4
5
|
import { bind } from "@src/core/event";
|
|
5
6
|
import { schedule } from "@src/core/task";
|
|
6
7
|
import { time } from "@src/core/time";
|
|
@@ -72,6 +73,7 @@ function handler(event: Event, root: Node, evt: MouseEvent): void {
|
|
|
72
73
|
schedule(encode.bind(this, event));
|
|
73
74
|
}
|
|
74
75
|
}
|
|
76
|
+
handler.dn = FunctionNames.ClickHandler;
|
|
75
77
|
|
|
76
78
|
function link(node: Node): HTMLAnchorElement {
|
|
77
79
|
while (node && node !== document) {
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Event } from "@clarity-types/data";
|
|
2
2
|
import { Clipboard, ClipboardState } from "@clarity-types/interaction";
|
|
3
|
+
import { FunctionNames } from "@clarity-types/performance";
|
|
3
4
|
import { bind } from "@src/core/event";
|
|
4
5
|
import { schedule } from "@src/core/task";
|
|
5
6
|
import { time } from "@src/core/time";
|
|
@@ -22,6 +23,7 @@ function recompute(action: Clipboard, evt: UIEvent): void {
|
|
|
22
23
|
state.push({ time: time(evt), event: Event.Clipboard, data: { target: target(evt), action } });
|
|
23
24
|
schedule(encode.bind(this, Event.Clipboard));
|
|
24
25
|
}
|
|
26
|
+
recompute.dn = FunctionNames.ClipboardRecompute;
|
|
25
27
|
|
|
26
28
|
export function reset(): void {
|
|
27
29
|
state = [];
|
package/src/interaction/index.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { FunctionNames } from "@clarity-types/performance";
|
|
1
2
|
import * as change from "@src/interaction/change";
|
|
2
3
|
import * as click from "@src/interaction/click";
|
|
3
4
|
import * as clipboard from "@src/interaction/clipboard";
|
|
@@ -25,6 +26,7 @@ export function start(): void {
|
|
|
25
26
|
submit.start();
|
|
26
27
|
unload.start();
|
|
27
28
|
}
|
|
29
|
+
start.dn = FunctionNames.InteractionStart;
|
|
28
30
|
|
|
29
31
|
export function stop(): void {
|
|
30
32
|
timeline.stop();
|
package/src/interaction/input.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Event } from "@clarity-types/data";
|
|
2
2
|
import { InputData, InputState, Setting } from "@clarity-types/interaction";
|
|
3
|
+
import { FunctionNames } from "@clarity-types/performance";
|
|
3
4
|
import { bind } from "@src/core/event";
|
|
4
5
|
import { schedule } from "@src/core/task";
|
|
5
6
|
import { time } from "@src/core/time";
|
|
@@ -43,6 +44,7 @@ function recompute(evt: UIEvent): void {
|
|
|
43
44
|
timeout = setTimeout(process, Setting.InputLookAhead, Event.Input);
|
|
44
45
|
}
|
|
45
46
|
}
|
|
47
|
+
recompute.dn = FunctionNames.InputRecompute;
|
|
46
48
|
|
|
47
49
|
function process(event: Event): void {
|
|
48
50
|
schedule(encode.bind(this, event));
|