@paulirish/trace_engine 0.0.44 → 0.0.46

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.
Files changed (272) hide show
  1. package/.tmp/tsbuildinfo/tsconfig.tsbuildinfo +1 -1
  2. package/core/platform/ArrayUtilities.d.ts +1 -1
  3. package/core/platform/ArrayUtilities.js.map +1 -1
  4. package/core/platform/DOMUtilities.js +1 -1
  5. package/core/platform/DOMUtilities.js.map +1 -1
  6. package/core/platform/MimeType.js.map +1 -1
  7. package/core/platform/NumberUtilities.js.map +1 -1
  8. package/core/platform/ServerTiming.d.ts +2 -2
  9. package/core/platform/ServerTiming.js.map +1 -1
  10. package/core/platform/StringUtilities.js +1 -1
  11. package/core/platform/StringUtilities.js.map +1 -1
  12. package/core/platform/Timing.d.ts +0 -1
  13. package/core/platform/Timing.js +0 -3
  14. package/core/platform/Timing.js.map +1 -1
  15. package/core/platform/TypedArrayUtilities.js +3 -2
  16. package/core/platform/TypedArrayUtilities.js.map +1 -1
  17. package/generated/protocol.d.ts +71 -4
  18. package/locales/af.json +544 -1
  19. package/locales/am.json +544 -1
  20. package/locales/ar.json +544 -1
  21. package/locales/as.json +544 -1
  22. package/locales/az.json +544 -1
  23. package/locales/be.json +544 -1
  24. package/locales/bg.json +544 -1
  25. package/locales/bn.json +544 -1
  26. package/locales/bs.json +544 -1
  27. package/locales/ca.json +544 -1
  28. package/locales/cs.json +544 -1
  29. package/locales/cy.json +544 -1
  30. package/locales/da.json +544 -1
  31. package/locales/de.json +544 -1
  32. package/locales/el.json +544 -1
  33. package/locales/en-GB.json +544 -1
  34. package/locales/en-US.json +561 -15
  35. package/locales/en-XL.json +561 -15
  36. package/locales/es-419.json +544 -1
  37. package/locales/es.json +544 -1
  38. package/locales/et.json +544 -1
  39. package/locales/eu.json +544 -1
  40. package/locales/fa.json +544 -1
  41. package/locales/fi.json +544 -1
  42. package/locales/fil.json +544 -1
  43. package/locales/fr-CA.json +544 -1
  44. package/locales/fr.json +544 -1
  45. package/locales/gl.json +544 -1
  46. package/locales/gu.json +544 -1
  47. package/locales/he.json +545 -2
  48. package/locales/hi.json +544 -1
  49. package/locales/hr.json +544 -1
  50. package/locales/hu.json +544 -1
  51. package/locales/hy.json +544 -1
  52. package/locales/id.json +544 -1
  53. package/locales/is.json +544 -1
  54. package/locales/it.json +544 -1
  55. package/locales/ja.json +544 -1
  56. package/locales/ka.json +544 -1
  57. package/locales/kk.json +544 -1
  58. package/locales/km.json +544 -1
  59. package/locales/kn.json +544 -1
  60. package/locales/ko.json +544 -1
  61. package/locales/ky.json +544 -1
  62. package/locales/lo.json +544 -1
  63. package/locales/lt.json +544 -1
  64. package/locales/lv.json +544 -1
  65. package/locales/mk.json +544 -1
  66. package/locales/ml.json +544 -1
  67. package/locales/mn.json +544 -1
  68. package/locales/mr.json +544 -1
  69. package/locales/ms.json +544 -1
  70. package/locales/my.json +544 -1
  71. package/locales/ne.json +544 -1
  72. package/locales/nl.json +544 -1
  73. package/locales/no.json +544 -1
  74. package/locales/or.json +544 -1
  75. package/locales/pa.json +544 -1
  76. package/locales/pl.json +544 -1
  77. package/locales/pt-PT.json +544 -1
  78. package/locales/pt.json +544 -1
  79. package/locales/ro.json +544 -1
  80. package/locales/ru.json +544 -1
  81. package/locales/si.json +544 -1
  82. package/locales/sk.json +544 -1
  83. package/locales/sl.json +544 -1
  84. package/locales/sq.json +544 -1
  85. package/locales/sr-Latn.json +544 -1
  86. package/locales/sr.json +544 -1
  87. package/locales/sv.json +544 -1
  88. package/locales/sw.json +544 -1
  89. package/locales/ta.json +544 -1
  90. package/locales/te.json +544 -1
  91. package/locales/th.json +544 -1
  92. package/locales/tr.json +544 -1
  93. package/locales/uk.json +544 -1
  94. package/locales/ur.json +544 -1
  95. package/locales/uz.json +544 -1
  96. package/locales/vi.json +544 -1
  97. package/locales/zh-HK.json +544 -1
  98. package/locales/zh-TW.json +544 -1
  99. package/locales/zh.json +544 -1
  100. package/locales/zu.json +544 -1
  101. package/models/cpu_profile/CPUProfileDataModel.js +10 -10
  102. package/models/cpu_profile/CPUProfileDataModel.js.map +1 -1
  103. package/models/trace/LanternComputationData.js.map +1 -1
  104. package/models/trace/ModelImpl.d.ts +1 -0
  105. package/models/trace/ModelImpl.js +1 -0
  106. package/models/trace/ModelImpl.js.map +1 -1
  107. package/models/trace/Processor.js +16 -11
  108. package/models/trace/Processor.js.map +1 -1
  109. package/models/trace/extras/FetchNodes.d.ts +1 -1
  110. package/models/trace/extras/FetchNodes.js +3 -3
  111. package/models/trace/extras/FetchNodes.js.map +1 -1
  112. package/models/trace/extras/ScriptDuplication.d.ts +34 -0
  113. package/models/trace/extras/ScriptDuplication.js +178 -0
  114. package/models/trace/extras/ScriptDuplication.js.map +1 -0
  115. package/models/trace/extras/StackTraceForEvent.js +25 -44
  116. package/models/trace/extras/StackTraceForEvent.js.map +1 -1
  117. package/models/trace/extras/ThirdParties.js +1 -0
  118. package/models/trace/extras/ThirdParties.js.map +1 -1
  119. package/models/trace/extras/TraceTree.d.ts +5 -2
  120. package/models/trace/extras/TraceTree.js +47 -17
  121. package/models/trace/extras/TraceTree.js.map +1 -1
  122. package/models/trace/extras/extras-tsconfig.json +1 -1
  123. package/models/trace/extras/extras.d.ts +1 -0
  124. package/models/trace/extras/extras.js +1 -0
  125. package/models/trace/extras/extras.js.map +1 -1
  126. package/models/trace/handlers/AnimationFramesHandler.js.map +1 -1
  127. package/models/trace/handlers/AsyncJSCallsHandler.js.map +1 -1
  128. package/models/trace/handlers/AuctionWorkletsHandler.js.map +1 -1
  129. package/models/trace/handlers/ExtensionTraceDataHandler.d.ts +1 -1
  130. package/models/trace/handlers/ExtensionTraceDataHandler.js +2 -1
  131. package/models/trace/handlers/ExtensionTraceDataHandler.js.map +1 -1
  132. package/models/trace/handlers/FramesHandler.js.map +1 -1
  133. package/models/trace/handlers/ImagePaintingHandler.js +1 -1
  134. package/models/trace/handlers/ImagePaintingHandler.js.map +1 -1
  135. package/models/trace/handlers/InitiatorsHandler.js.map +1 -1
  136. package/models/trace/handlers/InvalidationsHandler.js.map +1 -1
  137. package/models/trace/handlers/LayoutShiftsHandler.js.map +1 -1
  138. package/models/trace/handlers/MetaHandler.d.ts +2 -2
  139. package/models/trace/handlers/MetaHandler.js +4 -6
  140. package/models/trace/handlers/MetaHandler.js.map +1 -1
  141. package/models/trace/handlers/ModelHandlers.d.ts +1 -0
  142. package/models/trace/handlers/ModelHandlers.js +1 -0
  143. package/models/trace/handlers/ModelHandlers.js.map +1 -1
  144. package/models/trace/handlers/NetworkRequestsHandler.d.ts +9 -0
  145. package/models/trace/handlers/NetworkRequestsHandler.js +6 -6
  146. package/models/trace/handlers/NetworkRequestsHandler.js.map +1 -1
  147. package/models/trace/handlers/PageLoadMetricsHandler.js +1 -1
  148. package/models/trace/handlers/PageLoadMetricsHandler.js.map +1 -1
  149. package/models/trace/handlers/RendererHandler.js +3 -4
  150. package/models/trace/handlers/RendererHandler.js.map +1 -1
  151. package/models/trace/handlers/ScriptsHandler.d.ts +22 -0
  152. package/models/trace/handlers/ScriptsHandler.js +116 -0
  153. package/models/trace/handlers/ScriptsHandler.js.map +1 -0
  154. package/models/trace/handlers/UserTimingsHandler.d.ts +5 -0
  155. package/models/trace/handlers/UserTimingsHandler.js +16 -0
  156. package/models/trace/handlers/UserTimingsHandler.js.map +1 -1
  157. package/models/trace/handlers/WorkersHandler.js.map +1 -1
  158. package/models/trace/handlers/handlers-tsconfig.json +1 -0
  159. package/models/trace/handlers/helpers.d.ts +5 -1
  160. package/models/trace/handlers/helpers.js +28 -4
  161. package/models/trace/handlers/helpers.js.map +1 -1
  162. package/models/trace/helpers/Network.d.ts +1 -0
  163. package/models/trace/helpers/Network.js +8 -3
  164. package/models/trace/helpers/Network.js.map +1 -1
  165. package/models/trace/helpers/SamplesIntegrator.d.ts +8 -1
  166. package/models/trace/helpers/SamplesIntegrator.js +42 -2
  167. package/models/trace/helpers/SamplesIntegrator.js.map +1 -1
  168. package/models/trace/helpers/Timing.js.map +1 -1
  169. package/models/trace/helpers/Trace.d.ts +7 -10
  170. package/models/trace/helpers/Trace.js +25 -10
  171. package/models/trace/helpers/Trace.js.map +1 -1
  172. package/models/trace/insights/CLSCulprits.d.ts +12 -12
  173. package/models/trace/insights/CLSCulprits.js +15 -4
  174. package/models/trace/insights/CLSCulprits.js.map +1 -1
  175. package/models/trace/insights/Common.d.ts +7 -1
  176. package/models/trace/insights/Common.js +9 -3
  177. package/models/trace/insights/Common.js.map +1 -1
  178. package/models/trace/insights/DOMSize.d.ts +8 -8
  179. package/models/trace/insights/DOMSize.js +2 -1
  180. package/models/trace/insights/DOMSize.js.map +1 -1
  181. package/models/trace/insights/DocumentLatency.d.ts +11 -11
  182. package/models/trace/insights/DocumentLatency.js +2 -1
  183. package/models/trace/insights/DocumentLatency.js.map +1 -1
  184. package/models/trace/insights/DuplicateJavaScript.d.ts +18 -0
  185. package/models/trace/insights/DuplicateJavaScript.js +49 -0
  186. package/models/trace/insights/DuplicateJavaScript.js.map +1 -0
  187. package/models/trace/insights/FontDisplay.d.ts +4 -4
  188. package/models/trace/insights/FontDisplay.js +2 -1
  189. package/models/trace/insights/FontDisplay.js.map +1 -1
  190. package/models/trace/insights/ForcedReflow.d.ts +5 -5
  191. package/models/trace/insights/ForcedReflow.js +4 -1
  192. package/models/trace/insights/ForcedReflow.js.map +1 -1
  193. package/models/trace/insights/ImageDelivery.d.ts +19 -15
  194. package/models/trace/insights/ImageDelivery.js +26 -20
  195. package/models/trace/insights/ImageDelivery.js.map +1 -1
  196. package/models/trace/insights/InteractionToNextPaint.d.ts +8 -8
  197. package/models/trace/insights/InteractionToNextPaint.js +3 -2
  198. package/models/trace/insights/InteractionToNextPaint.js.map +1 -1
  199. package/models/trace/insights/LCPDiscovery.d.ts +9 -9
  200. package/models/trace/insights/LCPDiscovery.js +6 -3
  201. package/models/trace/insights/LCPDiscovery.js.map +1 -1
  202. package/models/trace/insights/LCPPhases.d.ts +15 -10
  203. package/models/trace/insights/LCPPhases.js +11 -4
  204. package/models/trace/insights/LCPPhases.js.map +1 -1
  205. package/models/trace/insights/Models.d.ts +2 -1
  206. package/models/trace/insights/Models.js +2 -1
  207. package/models/trace/insights/Models.js.map +1 -1
  208. package/models/trace/insights/NetworkDependencyTree.d.ts +33 -0
  209. package/models/trace/insights/NetworkDependencyTree.js +141 -0
  210. package/models/trace/insights/NetworkDependencyTree.js.map +1 -0
  211. package/models/trace/insights/RenderBlocking.d.ts +5 -5
  212. package/models/trace/insights/RenderBlocking.js +2 -1
  213. package/models/trace/insights/RenderBlocking.js.map +1 -1
  214. package/models/trace/insights/SlowCSSSelector.d.ts +8 -8
  215. package/models/trace/insights/SlowCSSSelector.js +4 -2
  216. package/models/trace/insights/SlowCSSSelector.js.map +1 -1
  217. package/models/trace/insights/ThirdParties.d.ts +6 -6
  218. package/models/trace/insights/ThirdParties.js +8 -5
  219. package/models/trace/insights/ThirdParties.js.map +1 -1
  220. package/models/trace/insights/Viewport.d.ts +2 -2
  221. package/models/trace/insights/Viewport.js +2 -1
  222. package/models/trace/insights/Viewport.js.map +1 -1
  223. package/models/trace/insights/insights-tsconfig.json +2 -1
  224. package/models/trace/insights/types.d.ts +25 -3
  225. package/models/trace/insights/types.js.map +1 -1
  226. package/models/trace/lantern/core/NetworkAnalyzer.d.ts +2 -2
  227. package/models/trace/lantern/core/NetworkAnalyzer.js +2 -2
  228. package/models/trace/lantern/core/NetworkAnalyzer.js.map +1 -1
  229. package/models/trace/lantern/graph/BaseNode.d.ts +1 -1
  230. package/models/trace/lantern/graph/BaseNode.js.map +1 -1
  231. package/models/trace/lantern/graph/CPUNode.js +1 -1
  232. package/models/trace/lantern/graph/CPUNode.js.map +1 -1
  233. package/models/trace/lantern/graph/NetworkNode.js +1 -1
  234. package/models/trace/lantern/graph/NetworkNode.js.map +1 -1
  235. package/models/trace/lantern/graph/PageDependencyGraph.d.ts +2 -2
  236. package/models/trace/lantern/graph/PageDependencyGraph.js.map +1 -1
  237. package/models/trace/lantern/metrics/Metric.js.map +1 -1
  238. package/models/trace/lantern/metrics/TotalBlockingTime.d.ts +2 -2
  239. package/models/trace/lantern/metrics/TotalBlockingTime.js.map +1 -1
  240. package/models/trace/lantern/types/Lantern.d.ts +2 -2
  241. package/models/trace/lantern/types/Lantern.js.map +1 -1
  242. package/models/trace/trace-tsconfig.json +3 -3
  243. package/models/trace/trace.d.ts +1 -2
  244. package/models/trace/trace.js +1 -2
  245. package/models/trace/trace.js.map +1 -1
  246. package/models/trace/types/Configuration.d.ts +10 -0
  247. package/models/trace/types/Configuration.js.map +1 -1
  248. package/models/trace/types/Extensions.d.ts +1 -1
  249. package/models/trace/types/Extensions.js.map +1 -1
  250. package/models/trace/types/TraceEvents.d.ts +87 -4
  251. package/models/trace/types/TraceEvents.js +20 -0
  252. package/models/trace/types/TraceEvents.js.map +1 -1
  253. package/package.json +1 -1
  254. package/test/test-trace-engine.mjs +3 -2
  255. package/models/trace/extras/TimelineJSProfile.d.ts +0 -13
  256. package/models/trace/extras/TimelineJSProfile.js +0 -60
  257. package/models/trace/extras/TimelineJSProfile.js.map +0 -1
  258. package/models/trace/insights/LongCriticalNetworkTree.d.ts +0 -22
  259. package/models/trace/insights/LongCriticalNetworkTree.js +0 -40
  260. package/models/trace/insights/LongCriticalNetworkTree.js.map +0 -1
  261. package/models/trace/root-causes/LayoutShift.d.ts +0 -125
  262. package/models/trace/root-causes/LayoutShift.js +0 -519
  263. package/models/trace/root-causes/LayoutShift.js.map +0 -1
  264. package/models/trace/root-causes/RootCauses.d.ts +0 -15
  265. package/models/trace/root-causes/RootCauses.js +0 -12
  266. package/models/trace/root-causes/RootCauses.js.map +0 -1
  267. package/models/trace/root-causes/bundle-tsconfig.json +0 -1
  268. package/models/trace/root-causes/devtools_entrypoint-bundle-typescript-tsconfig.json +0 -43
  269. package/models/trace/root-causes/root-causes-tsconfig.json +0 -56
  270. package/models/trace/root-causes/root-causes.d.ts +0 -1
  271. package/models/trace/root-causes/root-causes.js +0 -5
  272. package/models/trace/root-causes/root-causes.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"RootCauses.js","sourceRoot":"","sources":["../../../../../../../front_end/models/trace/root-causes/RootCauses.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,yEAAyE;AACzE,6BAA6B;AAI7B,OAAO,EAAC,qBAAqB,EAAC,MAAM,kBAAkB,CAAC;AAWvD,MAAM,OAAO,UAAU;IACZ,YAAY,CAAwB;IAE7C,YAAY,iBAA6C;QACvD,IAAI,CAAC,YAAY,GAAG,IAAI,qBAAqB,CAAC,iBAAiB,CAAC,CAAC;IACnE,CAAC;CACF;AAED,OAAO,EAAC,qBAAqB,EAAC,MAAM,kBAAkB,CAAC","sourcesContent":["// Copyright 2023 The Chromium Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style license that can be\n// found in the LICENSE file.\n\nimport type * as Protocol from '../../../generated/protocol.js';\n\nimport {LayoutShiftRootCauses} from './LayoutShift.js';\n\nexport interface RootCauseProtocolInterface {\n getInitiatorForRequest(url: string): Protocol.Network.Initiator|null;\n pushNodesByBackendIdsToFrontend(backendNodeIds: Protocol.DOM.BackendNodeId[]): Promise<Protocol.DOM.NodeId[]>;\n getNode(nodeId: Protocol.DOM.NodeId): Promise<Protocol.DOM.Node|null>;\n getComputedStyleForNode(nodeId: Protocol.DOM.NodeId): Promise<Protocol.CSS.CSSComputedStyleProperty[]>;\n getMatchedStylesForNode(nodeId: Protocol.DOM.NodeId): Promise<Protocol.CSS.GetMatchedStylesForNodeResponse>;\n fontFaceForSource(url: string): Protocol.CSS.FontFace|undefined;\n}\n\nexport class RootCauses {\n readonly layoutShifts: LayoutShiftRootCauses;\n\n constructor(protocolInterface: RootCauseProtocolInterface) {\n this.layoutShifts = new LayoutShiftRootCauses(protocolInterface);\n }\n}\n\nexport {LayoutShiftRootCauses} from './LayoutShift.js';\n"]}
@@ -1 +0,0 @@
1
- {"compilerOptions":{"composite":true,"outDir":".","baseUrl":".","rootDir":"../../../../../../../front_end/models/trace/root-causes"},"files":["../../../../../../../front_end/models/trace/root-causes/root-causes.ts"],"references":[{"path":"./root-causes-tsconfig.json"}]}
@@ -1,43 +0,0 @@
1
- {
2
- "compilerOptions": {
3
- "allowJs": true,
4
- "checkJs": true,
5
- "composite": true,
6
- "declaration": true,
7
- "experimentalDecorators": true,
8
- "forceConsistentCasingInFileNames": true,
9
- "inlineSources": true,
10
- "lib": [
11
- "esnext",
12
- "dom",
13
- "dom.iterable"
14
- ],
15
- "module": "esnext",
16
- "noEmitOnError": true,
17
- "noFallthroughCasesInSwitch": true,
18
- "noImplicitOverride": true,
19
- "noImplicitReturns": true,
20
- "noUnusedLocals": false,
21
- "outDir": ".",
22
- "rootDir": "../../../../../../../front_end/models/trace/root-causes",
23
- "skipLibCheck": true,
24
- "sourceMap": true,
25
- "strict": true,
26
- "target": "esnext",
27
- "tsBuildInfoFile": "devtools_entrypoint-bundle-typescript-tsconfig.json.tsbuildinfo",
28
- "typeRoots": [],
29
- "useUnknownInCatchVariables": false
30
- },
31
- "files": [
32
- "../../../../../../../front_end/models/trace/root-causes/root-causes.ts",
33
- "../../../../../../../front_end/legacy/legacy-defs.d.ts",
34
- "../../../../../../../front_end/global_typings/global_defs.d.ts",
35
- "../../../../../../../node_modules/@types/filesystem/index.d.ts",
36
- "../../../../../../../node_modules/@types/wicg-task-scheduling/index.d.ts"
37
- ],
38
- "references": [
39
- {
40
- "path": "./root-causes-tsconfig.json"
41
- }
42
- ]
43
- }
@@ -1,56 +0,0 @@
1
- {
2
- "compilerOptions": {
3
- "allowJs": true,
4
- "checkJs": true,
5
- "composite": true,
6
- "declaration": true,
7
- "experimentalDecorators": true,
8
- "forceConsistentCasingInFileNames": true,
9
- "inlineSources": true,
10
- "lib": [
11
- "esnext",
12
- "dom",
13
- "dom.iterable"
14
- ],
15
- "module": "esnext",
16
- "noEmitOnError": true,
17
- "noFallthroughCasesInSwitch": true,
18
- "noImplicitOverride": true,
19
- "noImplicitReturns": true,
20
- "noUnusedLocals": false,
21
- "outDir": ".",
22
- "rootDir": "../../../../../../../front_end/models/trace/root-causes",
23
- "skipLibCheck": true,
24
- "sourceMap": true,
25
- "strict": true,
26
- "target": "esnext",
27
- "tsBuildInfoFile": "root-causes-tsconfig.json.tsbuildinfo",
28
- "typeRoots": [],
29
- "useUnknownInCatchVariables": false
30
- },
31
- "files": [
32
- "../../../../../../../front_end/models/trace/root-causes/LayoutShift.ts",
33
- "../../../../../../../front_end/models/trace/root-causes/RootCauses.ts",
34
- "../../../../../../../front_end/legacy/legacy-defs.d.ts",
35
- "../../../../../../../front_end/global_typings/global_defs.d.ts",
36
- "../../../../../../../node_modules/@types/filesystem/index.d.ts",
37
- "../../../../../../../node_modules/@types/wicg-task-scheduling/index.d.ts"
38
- ],
39
- "references": [
40
- {
41
- "path": "../../../core/common/bundle-tsconfig.json"
42
- },
43
- {
44
- "path": "../../../core/platform/bundle-tsconfig.json"
45
- },
46
- {
47
- "path": "../../../core/root/bundle-tsconfig.json"
48
- },
49
- {
50
- "path": "../handlers/bundle-tsconfig.json"
51
- },
52
- {
53
- "path": "../types/bundle-tsconfig.json"
54
- }
55
- ]
56
- }
@@ -1 +0,0 @@
1
- export * as RootCauses from './RootCauses.js';
@@ -1,5 +0,0 @@
1
- // Copyright 2023 The Chromium Authors. All rights reserved.
2
- // Use of this source code is governed by a BSD-style license that can be
3
- // found in the LICENSE file.
4
- export * as RootCauses from './RootCauses.js';
5
- //# sourceMappingURL=root-causes.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"root-causes.js","sourceRoot":"","sources":["../../../../../../../front_end/models/trace/root-causes/root-causes.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,yEAAyE;AACzE,6BAA6B;AAE7B,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAC","sourcesContent":["// Copyright 2023 The Chromium Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style license that can be\n// found in the LICENSE file.\n\nexport * as RootCauses from './RootCauses.js';\n"]}