maidraw 0.12.18 → 0.12.20

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.
@@ -16,13 +16,14 @@ jobs:
16
16
  id-token: write
17
17
  steps:
18
18
  - name: Checkout
19
- uses: actions/checkout@v4
19
+ uses: actions/checkout@v6
20
20
 
21
21
  - name: Setup Node.js
22
- uses: actions/setup-node@v4
22
+ uses: actions/setup-node@v6
23
23
  with:
24
24
  node-version: 24
25
25
  registry-url: 'https://registry.npmjs.org'
26
+ package-manager-cache: false
26
27
 
27
28
  - name: Install dependencies
28
29
  run: npm ci
@@ -0,0 +1,231 @@
1
+ {
2
+ "displayName": "舞萌DX 2026, Landscape",
3
+ "name": "cn-2026-landscape",
4
+ "width": 2560,
5
+ "height": 1440,
6
+ "elements": [
7
+ {
8
+ "type": "image",
9
+ "x": 0,
10
+ "y": -480,
11
+ "width": 2560,
12
+ "height": 1920,
13
+ "path": "../../prismplus/assets/background.webp"
14
+ },
15
+ {
16
+ "type": "image",
17
+ "x": 534,
18
+ "y": 70,
19
+ "width": 720,
20
+ "height": 633,
21
+ "path": "../../prismplus/assets/chara.webp"
22
+ },
23
+ {
24
+ "type": "image",
25
+ "x": 368,
26
+ "y": -3,
27
+ "width": 287,
28
+ "height": 212,
29
+ "path": "../../prismplus/assets/laundry.webp"
30
+ },
31
+ {
32
+ "type": "image",
33
+ "x": 232,
34
+ "y": 116,
35
+ "width": 557,
36
+ "height": 231,
37
+ "path": "../assets/logo.webp"
38
+ },
39
+ {
40
+ "type": "score-grid",
41
+ "x": 70,
42
+ "y": 500,
43
+ "horizontalSize": 3,
44
+ "verticalSize": 5,
45
+ "region": "new",
46
+ "index": 0,
47
+ "scoreBubble": {
48
+ "width": 280,
49
+ "height": 155,
50
+ "margin": 10,
51
+ "gap": 20,
52
+ "color": {
53
+ "basic": "#70E262",
54
+ "advanced": "#FFBB00",
55
+ "expert": "#FF4A5A",
56
+ "master": "#A04FDA",
57
+ "remaster": "#DDBDF5",
58
+ "utage": "#70E262"
59
+ }
60
+ },
61
+ "sprites": {
62
+ "achievement": {
63
+ "d": "../../prism/assets/achievement/d.webp",
64
+ "c": "../../prism/assets/achievement/c.webp",
65
+ "b": "../../prism/assets/achievement/b.webp",
66
+ "bb": "../../prism/assets/achievement/bb.webp",
67
+ "bbb": "../../prism/assets/achievement/bbb.webp",
68
+ "a": "../../prism/assets/achievement/a.webp",
69
+ "aa": "../../prism/assets/achievement/aa.webp",
70
+ "aaa": "../../prism/assets/achievement/aaa.webp",
71
+ "s": "../../prism/assets/achievement/s.webp",
72
+ "sp": "../../prism/assets/achievement/sp.webp",
73
+ "ss": "../../prism/assets/achievement/ss.webp",
74
+ "ssp": "../../prism/assets/achievement/ssp.webp",
75
+ "sss": "../../prism/assets/achievement/sss.webp",
76
+ "sssp": "../../prism/assets/achievement/sssp.webp"
77
+ },
78
+ "mode": {
79
+ "standard": "../../versionless/mode/jp/standard.webp",
80
+ "dx": "../../versionless/mode/jp/dx.webp"
81
+ },
82
+ "milestone": {
83
+ "ap": "../../versionless/milestone/ap.webp",
84
+ "app": "../../versionless/milestone/app.webp",
85
+ "fc": "../../versionless/milestone/fc.webp",
86
+ "fcp": "../../versionless/milestone/fcp.webp",
87
+ "fdx": "../../versionless/milestone/fdx.webp",
88
+ "fdxp": "../../versionless/milestone/fdxp.webp",
89
+ "fs": "../../versionless/milestone/fs.webp",
90
+ "fsp": "../../versionless/milestone/fsp.webp",
91
+ "sync": "../../versionless/milestone/sync.webp",
92
+ "none": "../../versionless/milestone/none.webp"
93
+ }
94
+ }
95
+ },
96
+ {
97
+ "type": "score-grid",
98
+ "x": 1010,
99
+ "y": 150,
100
+ "horizontalSize": 5,
101
+ "verticalSize": 7,
102
+ "region": "old",
103
+ "index": 0,
104
+ "scoreBubble": {
105
+ "width": 280,
106
+ "height": 155,
107
+ "margin": 10,
108
+ "gap": 20,
109
+ "color": {
110
+ "basic": "#70E262",
111
+ "advanced": "#FFBB00",
112
+ "expert": "#FF4A5A",
113
+ "master": "#A04FDA",
114
+ "remaster": "#DDBDF5",
115
+ "utage": "#70E262"
116
+ }
117
+ },
118
+ "sprites": {
119
+ "achievement": {
120
+ "d": "../../prism/assets/achievement/d.webp",
121
+ "c": "../../prism/assets/achievement/c.webp",
122
+ "b": "../../prism/assets/achievement/b.webp",
123
+ "bb": "../../prism/assets/achievement/bb.webp",
124
+ "bbb": "../../prism/assets/achievement/bbb.webp",
125
+ "a": "../../prism/assets/achievement/a.webp",
126
+ "aa": "../../prism/assets/achievement/aa.webp",
127
+ "aaa": "../../prism/assets/achievement/aaa.webp",
128
+ "s": "../../prism/assets/achievement/s.webp",
129
+ "sp": "../../prism/assets/achievement/sp.webp",
130
+ "ss": "../../prism/assets/achievement/ss.webp",
131
+ "ssp": "../../prism/assets/achievement/ssp.webp",
132
+ "sss": "../../prism/assets/achievement/sss.webp",
133
+ "sssp": "../../prism/assets/achievement/sssp.webp"
134
+ },
135
+ "mode": {
136
+ "standard": "../../versionless/mode/jp/standard.webp",
137
+ "dx": "../../versionless/mode/jp/dx.webp"
138
+ },
139
+ "milestone": {
140
+ "ap": "../../versionless/milestone/ap.webp",
141
+ "app": "../../versionless/milestone/app.webp",
142
+ "fc": "../../versionless/milestone/fc.webp",
143
+ "fcp": "../../versionless/milestone/fcp.webp",
144
+ "fdx": "../../versionless/milestone/fdx.webp",
145
+ "fdxp": "../../versionless/milestone/fdxp.webp",
146
+ "fs": "../../versionless/milestone/fs.webp",
147
+ "fsp": "../../versionless/milestone/fsp.webp",
148
+ "sync": "../../versionless/milestone/sync.webp",
149
+ "none": "../../versionless/milestone/none.webp"
150
+ }
151
+ }
152
+ },
153
+ {
154
+ "type": "profile",
155
+ "x": 110,
156
+ "y": 345,
157
+ "height": 129,
158
+ "sprites": {
159
+ "dxRating": {
160
+ "white": "../../versionless/dxRating/jp/white.webp",
161
+ "blue": "../../versionless/dxRating/jp/blue.webp",
162
+ "green": "../../versionless/dxRating/jp/green.webp",
163
+ "yellow": "../../versionless/dxRating/jp/yellow.webp",
164
+ "red": "../../versionless/dxRating/jp/red.webp",
165
+ "purple": "../../versionless/dxRating/jp/purple.webp",
166
+ "bronze": "../../versionless/dxRating/jp/bronze.webp",
167
+ "silver": "../../versionless/dxRating/jp/silver.webp",
168
+ "gold": "../../versionless/dxRating/jp/gold.webp",
169
+ "platinum": "../../versionless/dxRating/jp/platinum.webp",
170
+ "rainbow": "../../versionless/dxRating/jp/rainbow.webp"
171
+ },
172
+ "dxRatingNumberMap": "../../versionless/dxRating/numberMap.webp",
173
+ "profile": {
174
+ "nameplate": "../../versionless/nameplate.webp",
175
+ "icon": "../../versionless/icon.webp"
176
+ }
177
+ }
178
+ },
179
+ {
180
+ "type": "text",
181
+ "size": 32,
182
+ "x": 2480,
183
+ "y": 1407,
184
+ "borderColor": "#226180",
185
+ "align": "right",
186
+ "content": "Generated by saltbot | maimaidx.cab/discord | maimaidx.cab/invite"
187
+ },
188
+ {
189
+ "type": "text",
190
+ "size": 24,
191
+ "x": 1030,
192
+ "y": 100,
193
+ "borderColor": "#226180",
194
+ "align": "left",
195
+ "content": "{newScoreRatingAvgString}\n{oldScoreRatingAvgString}"
196
+ },
197
+ {
198
+ "type": "text",
199
+ "size": 24,
200
+ "x": 1355,
201
+ "y": 100,
202
+ "borderColor": "#226180",
203
+ "align": "left",
204
+ "content": "{newScoreMilestone}\n{oldScoreMilestone}"
205
+ },
206
+ {
207
+ "type": "hitokoto",
208
+ "size": 24,
209
+ "x": 80,
210
+ "y": 1403,
211
+ "width": 1000,
212
+ "linebreak": true,
213
+ "borderColor": "#226180",
214
+ "align": "left",
215
+ "probability": 0.1,
216
+ "customLines": [
217
+ "../../../../../hitokoto/general.json",
218
+ "../../../../../hitokoto/support/maimaidx.json"
219
+ ]
220
+ },
221
+ {
222
+ "type": "text",
223
+ "size": 32,
224
+ "x": 40,
225
+ "y": 72,
226
+ "borderColor": "#226180",
227
+ "align": "left",
228
+ "content": "{dateTime}"
229
+ }
230
+ ]
231
+ }
@@ -0,0 +1,258 @@
1
+ {
2
+ "displayName": "舞萌DX 2026, Portrait",
3
+ "name": "cn-2026-portrait",
4
+ "width": 1560,
5
+ "height": 2315,
6
+ "elements": [
7
+ {
8
+ "type": "image",
9
+ "x": -763,
10
+ "y": 0,
11
+ "width": 3086,
12
+ "height": 2315,
13
+ "path": "../../prismplus/assets/background.webp"
14
+ },
15
+ {
16
+ "type": "image",
17
+ "x": 980,
18
+ "y": 200,
19
+ "width": 600,
20
+ "height": 527,
21
+ "path": "../../prismplus/assets/chara.webp"
22
+ },
23
+ {
24
+ "type": "image",
25
+ "x": 189,
26
+ "y": -20,
27
+ "width": 282,
28
+ "height": 208,
29
+ "path": "../../prismplus/assets/laundry.webp"
30
+ },
31
+ {
32
+ "type": "image",
33
+ "x": 53,
34
+ "y": 100,
35
+ "width": 554,
36
+ "height": 230,
37
+ "path": "../assets/logo.webp"
38
+ },
39
+ {
40
+ "type": "score-grid",
41
+ "x": 40,
42
+ "y": 440,
43
+ "horizontalSize": 5,
44
+ "verticalSize": 3,
45
+ "region": "new",
46
+ "index": 0,
47
+ "scoreBubble": {
48
+ "width": 280,
49
+ "height": 155,
50
+ "margin": 10,
51
+ "gap": 20,
52
+ "color": {
53
+ "basic": "#70E262",
54
+ "advanced": "#FFBB00",
55
+ "expert": "#FF4A5A",
56
+ "master": "#A04FDA",
57
+ "remaster": "#DDBDF5",
58
+ "utage": "#70E262"
59
+ }
60
+ },
61
+ "sprites": {
62
+ "achievement": {
63
+ "d": "../../prism/assets/achievement/d.webp",
64
+ "c": "../../prism/assets/achievement/c.webp",
65
+ "b": "../../prism/assets/achievement/b.webp",
66
+ "bb": "../../prism/assets/achievement/bb.webp",
67
+ "bbb": "../../prism/assets/achievement/bbb.webp",
68
+ "a": "../../prism/assets/achievement/a.webp",
69
+ "aa": "../../prism/assets/achievement/aa.webp",
70
+ "aaa": "../../prism/assets/achievement/aaa.webp",
71
+ "s": "../../prism/assets/achievement/s.webp",
72
+ "sp": "../../prism/assets/achievement/sp.webp",
73
+ "ss": "../../prism/assets/achievement/ss.webp",
74
+ "ssp": "../../prism/assets/achievement/ssp.webp",
75
+ "sss": "../../prism/assets/achievement/sss.webp",
76
+ "sssp": "../../prism/assets/achievement/sssp.webp"
77
+ },
78
+ "mode": {
79
+ "standard": "../../versionless/mode/jp/standard.webp",
80
+ "dx": "../../versionless/mode/jp/dx.webp"
81
+ },
82
+ "milestone": {
83
+ "ap": "../../versionless/milestone/ap.webp",
84
+ "app": "../../versionless/milestone/app.webp",
85
+ "fc": "../../versionless/milestone/fc.webp",
86
+ "fcp": "../../versionless/milestone/fcp.webp",
87
+ "fdx": "../../versionless/milestone/fdx.webp",
88
+ "fdxp": "../../versionless/milestone/fdxp.webp",
89
+ "fs": "../../versionless/milestone/fs.webp",
90
+ "fsp": "../../versionless/milestone/fsp.webp",
91
+ "sync": "../../versionless/milestone/sync.webp",
92
+ "none": "../../versionless/milestone/none.webp"
93
+ }
94
+ }
95
+ },
96
+ {
97
+ "type": "score-grid",
98
+ "x": 40,
99
+ "y": 1015,
100
+ "horizontalSize": 5,
101
+ "verticalSize": 7,
102
+ "region": "old",
103
+ "index": 0,
104
+ "scoreBubble": {
105
+ "width": 280,
106
+ "height": 155,
107
+ "margin": 10,
108
+ "gap": 20,
109
+ "color": {
110
+ "basic": "#70E262",
111
+ "advanced": "#FFBB00",
112
+ "expert": "#FF4A5A",
113
+ "master": "#A04FDA",
114
+ "remaster": "#DDBDF5",
115
+ "utage": "#70E262"
116
+ }
117
+ },
118
+ "sprites": {
119
+ "achievement": {
120
+ "d": "../../prism/assets/achievement/d.webp",
121
+ "c": "../../prism/assets/achievement/c.webp",
122
+ "b": "../../prism/assets/achievement/b.webp",
123
+ "bb": "../../prism/assets/achievement/bb.webp",
124
+ "bbb": "../../prism/assets/achievement/bbb.webp",
125
+ "a": "../../prism/assets/achievement/a.webp",
126
+ "aa": "../../prism/assets/achievement/aa.webp",
127
+ "aaa": "../../prism/assets/achievement/aaa.webp",
128
+ "s": "../../prism/assets/achievement/s.webp",
129
+ "sp": "../../prism/assets/achievement/sp.webp",
130
+ "ss": "../../prism/assets/achievement/ss.webp",
131
+ "ssp": "../../prism/assets/achievement/ssp.webp",
132
+ "sss": "../../prism/assets/achievement/sss.webp",
133
+ "sssp": "../../prism/assets/achievement/sssp.webp"
134
+ },
135
+ "mode": {
136
+ "standard": "../../versionless/mode/jp/standard.webp",
137
+ "dx": "../../versionless/mode/jp/dx.webp"
138
+ },
139
+ "milestone": {
140
+ "ap": "../../versionless/milestone/ap.webp",
141
+ "app": "../../versionless/milestone/app.webp",
142
+ "fc": "../../versionless/milestone/fc.webp",
143
+ "fcp": "../../versionless/milestone/fcp.webp",
144
+ "fdx": "../../versionless/milestone/fdx.webp",
145
+ "fdxp": "../../versionless/milestone/fdxp.webp",
146
+ "fs": "../../versionless/milestone/fs.webp",
147
+ "fsp": "../../versionless/milestone/fsp.webp",
148
+ "sync": "../../versionless/milestone/sync.webp",
149
+ "none": "../../versionless/milestone/none.webp"
150
+ }
151
+ }
152
+ },
153
+ {
154
+ "type": "profile",
155
+ "x": 580,
156
+ "y": 145,
157
+ "height": 150,
158
+ "sprites": {
159
+ "dxRating": {
160
+ "white": "../../versionless/dxRating/jp/white.webp",
161
+ "blue": "../../versionless/dxRating/jp/blue.webp",
162
+ "green": "../../versionless/dxRating/jp/green.webp",
163
+ "yellow": "../../versionless/dxRating/jp/yellow.webp",
164
+ "red": "../../versionless/dxRating/jp/red.webp",
165
+ "purple": "../../versionless/dxRating/jp/purple.webp",
166
+ "bronze": "../../versionless/dxRating/jp/bronze.webp",
167
+ "silver": "../../versionless/dxRating/jp/silver.webp",
168
+ "gold": "../../versionless/dxRating/jp/gold.webp",
169
+ "platinum": "../../versionless/dxRating/jp/platinum.webp",
170
+ "rainbow": "../../versionless/dxRating/jp/rainbow.webp"
171
+ },
172
+ "dxRatingNumberMap": "../../versionless/dxRating/numberMap.webp",
173
+ "profile": {
174
+ "nameplate": "../../versionless/nameplate.webp",
175
+ "icon": "../../versionless/icon.webp"
176
+ }
177
+ }
178
+ },
179
+ {
180
+ "type": "text",
181
+ "size": 32,
182
+ "x": 60,
183
+ "y": 2280,
184
+ "borderColor": "#226180",
185
+ "align": "left",
186
+ "content": "Generated by saltbot |"
187
+ },
188
+ {
189
+ "type": "text",
190
+ "size": 28,
191
+ "x": 445,
192
+ "y": 2260,
193
+ "borderColor": "#226180",
194
+ "align": "left",
195
+ "content": "maimaidx.cab/invite\nmaimaidx.cab/discord"
196
+ },
197
+ {
198
+ "type": "text",
199
+ "size": 24,
200
+ "x": 50,
201
+ "y": 390,
202
+ "borderColor": "#226180",
203
+ "align": "left",
204
+ "content": "{newScoreRatingAvgString}\n{oldScoreRatingAvgString}"
205
+ },
206
+ {
207
+ "type": "text",
208
+ "size": 24,
209
+ "x": 370,
210
+ "y": 390,
211
+ "borderColor": "#226180",
212
+ "align": "left",
213
+ "content": "{newScoreMilestone}\n{oldScoreMilestone}"
214
+ },
215
+ {
216
+ "type": "text",
217
+ "size": 30,
218
+ "x": 780,
219
+ "y": 370,
220
+ "borderColor": "#226180",
221
+ "align": "center",
222
+ "content": "{level50Title}"
223
+ },
224
+ {
225
+ "type": "text",
226
+ "size": 18,
227
+ "x": 780,
228
+ "y": 400,
229
+ "borderColor": "#226180",
230
+ "align": "center",
231
+ "content": "{level50Subtitle}"
232
+ },
233
+ {
234
+ "type": "hitokoto",
235
+ "size": 24,
236
+ "x": 1500,
237
+ "y": 2260,
238
+ "borderColor": "#226180",
239
+ "align": "right",
240
+ "width": 580,
241
+ "linebreak": true,
242
+ "probability": 0.1,
243
+ "customLines": [
244
+ "../../../../../hitokoto/general.json",
245
+ "../../../../../hitokoto/support/maimaidx.json"
246
+ ]
247
+ },
248
+ {
249
+ "type": "text",
250
+ "size": 32,
251
+ "x": 1500,
252
+ "y": 125,
253
+ "borderColor": "#226180",
254
+ "align": "right",
255
+ "content": "{dateTime}"
256
+ }
257
+ ]
258
+ }
@@ -9,8 +9,8 @@
9
9
  "x": 1280,
10
10
  "y": 720,
11
11
  "anchor": "cm",
12
- "width": 2610,
13
- "height": 1490,
12
+ "width": 2560,
13
+ "height": 1440,
14
14
  "path": "../assets/background/landscape.webp"
15
15
  },
16
16
  {
@@ -9,8 +9,8 @@
9
9
  "x": 780,
10
10
  "y": 1157,
11
11
  "anchor": "cm",
12
- "width": 1640,
13
- "height": 2395,
12
+ "width": 1560,
13
+ "height": 2315,
14
14
  "path": "../assets/background/portrait.webp"
15
15
  },
16
16
  {
@@ -113,7 +113,8 @@
113
113
  "20": "../versionless/logo/cn/220.webp",
114
114
  "30": "../versionless/logo/cn/230.webp",
115
115
  "40": "../versionless/logo/cn/240.webp",
116
- "50": "../versionless/logo/cn/250.webp"
116
+ "50": "../versionless/logo/cn/250.webp",
117
+ "55": "../versionless/logo/cn/255.webp"
117
118
  }
118
119
  }
119
120
  }
@@ -8,8 +8,8 @@
8
8
  "type": "image",
9
9
  "x": 1280,
10
10
  "y": 720,
11
- "width": 2610,
12
- "height": 1490,
11
+ "width": 2560,
12
+ "height": 1440,
13
13
  "anchor": "mm",
14
14
  "path": "../../best50/circleplus/assets/background/landscape.webp"
15
15
  },
@@ -114,7 +114,8 @@
114
114
  "20": "../versionless/logo/cn/220.webp",
115
115
  "30": "../versionless/logo/cn/230.webp",
116
116
  "40": "../versionless/logo/cn/240.webp",
117
- "50": "../versionless/logo/cn/250.webp"
117
+ "50": "../versionless/logo/cn/250.webp",
118
+ "55": "../versionless/logo/cn/255.webp"
118
119
  }
119
120
  }
120
121
  }
@@ -113,7 +113,8 @@
113
113
  "20": "../versionless/logo/cn/220.webp",
114
114
  "30": "../versionless/logo/cn/230.webp",
115
115
  "40": "../versionless/logo/cn/240.webp",
116
- "50": "../versionless/logo/cn/250.webp"
116
+ "50": "../versionless/logo/cn/250.webp",
117
+ "55": "../versionless/logo/cn/255.webp"
117
118
  }
118
119
  }
119
120
  }
@@ -113,7 +113,8 @@
113
113
  "20": "../versionless/logo/cn/220.webp",
114
114
  "30": "../versionless/logo/cn/230.webp",
115
115
  "40": "../versionless/logo/cn/240.webp",
116
- "50": "../versionless/logo/cn/250.webp"
116
+ "50": "../versionless/logo/cn/250.webp",
117
+ "55": "../versionless/logo/cn/255.webp"
117
118
  }
118
119
  }
119
120
  }
@@ -1015,6 +1015,11 @@ var ChunithmPainterModule;
1015
1015
  return lodash_1.default.isEqual(a.data.level, b.data.level);
1016
1016
  });
1017
1017
  if (actualEvents.length === maxFitTrendCount) {
1018
+ if (actualEvents[actualEvents.length - 1] !==
1019
+ trendEvents[trendEvents.length - 1]) {
1020
+ actualEvents.splice(1, 1);
1021
+ actualEvents.push(trendEvents[trendEvents.length - 1]);
1022
+ }
1018
1023
  }
1019
1024
  else if (actualEvents.length > maxFitTrendCount) {
1020
1025
  while (actualEvents.length > maxFitTrendCount)
@@ -1053,17 +1058,20 @@ var ChunithmPainterModule;
1053
1058
  const removalEvent = chart.events.find((v) => v.type === "removal" &&
1054
1059
  v.version.region === targetRegion);
1055
1060
  if (removalEvent) {
1056
- actualEvents.pop();
1061
+ while (actualEvents.length >= maxFitTrendCount)
1062
+ actualEvents.splice(1, 1);
1057
1063
  actualEvents.push(removalEvent);
1058
1064
  }
1059
1065
  }
1060
1066
  else {
1061
1067
  actualEvents = [...trendEvents];
1062
1068
  }
1063
- if (util_1.ChunithmUtil.getNumberVersion(actualEvents[actualEvents.length - 1]
1064
- .version) < CURRENT_VER) {
1069
+ if (trendEvents.length > 0 &&
1070
+ util_1.ChunithmUtil.getNumberVersion(trendEvents[trendEvents.length - 1].version) < CURRENT_VER &&
1071
+ actualEvents[actualEvents.length - 1]?.type !==
1072
+ "removal") {
1065
1073
  while (actualEvents.length >= maxFitTrendCount)
1066
- actualEvents.pop();
1074
+ actualEvents.splice(1, 1);
1067
1075
  actualEvents.push({
1068
1076
  type: "removal",
1069
1077
  version: util_1.ChunithmUtil.Version.toEventVersion(util_1.ChunithmUtil.Version.getNextVersion(trendEvents[trendEvents.length - 1].version)),