@aoi-js/aka 0.0.11 → 0.0.12

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.
@@ -1,8 +1,3 @@
1
- import { IRanklist } from '../client.js';
2
- import { IRanklistSyncOptions, RanklistCalculator } from './base.js';
3
- export declare class BasicCalculator extends RanklistCalculator {
4
- topstars: number;
5
- warnings: string;
6
- loadConfig(dict: Record<string, string>): Promise<IRanklistSyncOptions>;
7
- calculate(contestId: string, taskId: string, key: string): Promise<IRanklist>;
1
+ import { PlusCalculator } from './plus.js';
2
+ export declare class BasicCalculator extends PlusCalculator {
8
3
  }
package/lib/calc/basic.js CHANGED
@@ -1,103 +1,4 @@
1
- import { RanklistCalculator } from './base.js';
2
- export class BasicCalculator extends RanklistCalculator {
3
- topstars = 0;
4
- warnings = '';
5
- async loadConfig(dict) {
6
- const topstars = +dict.topstars;
7
- if (!Number.isInteger(topstars) || topstars < 0 || topstars > 20) {
8
- this.warnings += 'topstars must be an integer between 0 and 20\n';
9
- }
10
- else {
11
- this.topstars = topstars;
12
- }
13
- return {
14
- shouldSyncParticipants: true,
15
- shouldSyncSolutions: !!this.topstars
16
- };
17
- }
18
- async calculate(contestId, taskId, key) {
19
- const problems = await this.client.problems(contestId, taskId);
20
- problems.sort((a, b) => a.settings.slug.localeCompare(b.settings.slug));
21
- const problemIdList = problems.map((p) => p._id);
22
- const problemScoreList = problems.map((p) => p.settings.score);
23
- const participants = await this.db.participants.find({ contestId }).toArray();
24
- const participantRecords = participants
25
- .map(({ userId, tags, results }) => ({
26
- userId,
27
- tags,
28
- scores: problemIdList
29
- .map((pid) => results[pid]?.lastSolution.score ?? 0)
30
- .map((score, i) => (score * problemScoreList[i]) / 100)
31
- }))
32
- .map((record) => ({
33
- ...record,
34
- totalScore: record.scores.reduce((a, b) => a + b, 0)
35
- }))
36
- .sort((a, b) => b.totalScore - a.totalScore)
37
- .map((record, index) => ({
38
- ...record,
39
- rank: index + 1
40
- }));
41
- participantRecords.forEach((record, index, arr) => {
42
- if (index > 0 && record.totalScore === arr[index - 1].totalScore) {
43
- record.rank = arr[index - 1].rank;
44
- }
45
- });
46
- let topstar;
47
- if (this.topstars) {
48
- const topstarUserIdList = participantRecords
49
- .slice(0, this.topstars)
50
- .filter((record) => record.totalScore > 0)
51
- .map((p) => p.userId);
52
- topstar = {
53
- list: await Promise.all(topstarUserIdList.map(async (userId) => {
54
- const solutions = await this.db.solutions
55
- .find({ contestId, userId })
56
- .sort({ submittedAt: 1 })
57
- .toArray();
58
- const currentScores = Object.create(null);
59
- const mutations = [];
60
- for (const { problemId, score, submittedAt } of solutions) {
61
- currentScores[problemId] = score;
62
- mutations.push({
63
- score: problemIdList
64
- .map((pid, i) => ((currentScores[pid] ?? 0) * problemScoreList[i]) / 100)
65
- .reduce((a, b) => a + b, 0),
66
- ts: submittedAt
67
- });
68
- }
69
- return { userId, mutations };
70
- }))
71
- };
72
- }
73
- if (this.warnings) {
74
- this.logger.warn({ contestId, taskId, key }, this.warnings);
75
- }
76
- return {
77
- topstar,
78
- participant: {
79
- list: participantRecords.map(({ userId, rank, tags, scores, totalScore }) => ({
80
- userId,
81
- rank,
82
- tags,
83
- columns: [
84
- ...scores.map((score) => ({ content: `${score}` })),
85
- { content: `${totalScore}` }
86
- ]
87
- })),
88
- columns: [
89
- ...problems.map(({ title, settings: { slug } }) => ({
90
- name: slug,
91
- description: title
92
- })),
93
- { name: 'Total', description: 'Total Score' }
94
- ]
95
- },
96
- metadata: {
97
- generatedAt: Date.now(),
98
- description: 'Basic ranklist generated'
99
- }
100
- };
101
- }
1
+ import { PlusCalculator } from './plus.js';
2
+ export class BasicCalculator extends PlusCalculator {
102
3
  }
103
4
  //# sourceMappingURL=basic.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"basic.js","sourceRoot":"","sources":["../../src/calc/basic.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"basic.js","sourceRoot":"","sources":["../../src/calc/basic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAE1C,MAAM,OAAO,eAAgB,SAAQ,cAAc;CAAG"}
@@ -21,17 +21,14 @@ export declare class PlusCalculator extends RanklistCalculator {
21
21
  showProblemScore: boolean;
22
22
  showLastSubmission: boolean;
23
23
  sameRankForSameScore: boolean;
24
- additionalFilter: {
25
- submittedAt?: {
26
- $gte?: number;
27
- $lt?: number;
28
- };
29
- };
24
+ submittedBefore: number;
25
+ submittedAfter: number;
30
26
  loadConfig(dict: Record<string, string>): Promise<IRanklistSyncOptions>;
31
27
  private _loadRenderConfig;
32
28
  private _loadTotalReduceConfig;
33
29
  private _loadScoreReduceConfig;
34
30
  private _loadFilterConfig;
31
+ private _getContest;
35
32
  private _getProblems;
36
33
  private _getParticipants;
37
34
  private _renderParticipantItemColumn;
@@ -40,6 +37,5 @@ export declare class PlusCalculator extends RanklistCalculator {
40
37
  calculate(contestId: string, taskId: string, key: string): Promise<IRanklist>;
41
38
  private _calculateTopstars;
42
39
  private _calculateScores;
43
- private _calculateLastSubmission;
44
40
  }
45
41
  export {};
package/lib/calc/plus.js CHANGED
@@ -18,7 +18,8 @@ export class PlusCalculator extends RanklistCalculator {
18
18
  showProblemScore = false;
19
19
  showLastSubmission = false;
20
20
  sameRankForSameScore = false;
21
- additionalFilter = {};
21
+ submittedBefore = Date.parse('2124-12-31T23:59:59Z');
22
+ submittedAfter = 0;
22
23
  async loadConfig(dict) {
23
24
  const topstars = +dict.topstars;
24
25
  if (!Number.isInteger(topstars) || topstars < 0 || topstars > 20) {
@@ -117,8 +118,7 @@ export class PlusCalculator extends RanklistCalculator {
117
118
  this.warnings += 'submittedBefore is not a valid timestamp\n';
118
119
  }
119
120
  else {
120
- this.additionalFilter.submittedAt ??= {};
121
- this.additionalFilter.submittedAt.$lt = submittedBefore;
121
+ this.submittedBefore = submittedBefore;
122
122
  }
123
123
  }
124
124
  if (dict.submittedAfter) {
@@ -127,11 +127,13 @@ export class PlusCalculator extends RanklistCalculator {
127
127
  this.warnings += 'submittedAfter is not a valid timestamp\n';
128
128
  }
129
129
  else {
130
- this.additionalFilter.submittedAt ??= {};
131
- this.additionalFilter.submittedAt.$gte = submittedAfter;
130
+ this.submittedAfter = submittedAfter;
132
131
  }
133
132
  }
134
133
  }
134
+ async _getContest(contestId, taskId) {
135
+ return this.client.contest(contestId, taskId);
136
+ }
135
137
  async _getProblems(contestId, taskId) {
136
138
  let problems = await this.client.problems(contestId, taskId);
137
139
  const { problemTagWhitelist, problemTagBlacklist, problemSlugFilter, problemTitleFilter } = this;
@@ -160,10 +162,19 @@ export class PlusCalculator extends RanklistCalculator {
160
162
  }
161
163
  return participants;
162
164
  }
163
- _renderParticipantItemColumn(score, problemScore) {
164
- if (this.showProblemScore)
165
- return { content: `\`${score}/${problemScore}\`` };
166
- return { content: `${score}` };
165
+ _renderParticipantItemColumn(score, problemScore, solutionId) {
166
+ const cell = Object.create(null);
167
+ if (this.showProblemScore) {
168
+ // return { content: `\`${score}/${problemScore}\`` }
169
+ cell.content = `${score}/${problemScore}`;
170
+ }
171
+ else {
172
+ cell.content = `${score}`;
173
+ }
174
+ if (solutionId) {
175
+ cell.solutionId = solutionId;
176
+ }
177
+ return cell;
167
178
  }
168
179
  _formatDate(ts) {
169
180
  const date = new Date(ts);
@@ -176,20 +187,22 @@ export class PlusCalculator extends RanklistCalculator {
176
187
  async calculate(contestId, taskId, key) {
177
188
  const logger = this.logger.child({ contestId, taskId, key });
178
189
  logger.info('Start to calculate ranklist');
190
+ const contest = await this._getContest(contestId, taskId);
191
+ logger.info(`Loaded contest ${contest.slug} (${contest.title})`);
179
192
  const problems = await this._getProblems(contestId, taskId);
180
193
  problems.sort((a, b) => a.settings.slug.localeCompare(b.settings.slug));
181
194
  const problemIdList = problems.map((p) => p._id);
182
195
  const problemScoreList = problems.map((p) => p.settings.score);
183
196
  const participants = await this._getParticipants(contestId);
184
- const participantsWithScores = participants.map(({ userId, tags, results }) => ({
197
+ const participantsWithScores = participants.map(({ userId, tags }) => ({
185
198
  userId,
186
199
  tags,
187
- scores: problemIdList.map((pid) => results[pid]?.lastSolution.score ?? 0),
200
+ scores: problemIdList.map(() => 0),
201
+ lastSubmissionIds: problemIdList.map(() => ''),
188
202
  lastSubmission: 0
189
203
  }));
190
204
  logger.info(`Loaded ${problems.length} problems and ${participants.length} participants`);
191
- await this._calculateLastSubmission(logger, contestId, problemIdList, participantsWithScores);
192
- await this._calculateScores(logger, contestId, problemIdList, participantsWithScores);
205
+ await this._calculateScores(logger, contestId, problemIdList, participantsWithScores, contest.stages);
193
206
  if (!this.showOriginalScore) {
194
207
  for (const participant of participantsWithScores) {
195
208
  participant.scores = participant.scores.map((score, i) => (score * problemScoreList[i]) / 100);
@@ -220,7 +233,7 @@ export class PlusCalculator extends RanklistCalculator {
220
233
  }
221
234
  let topstar;
222
235
  if (this.topstars) {
223
- topstar = await this._calculateTopstars(logger, participantRecords, contestId, problemIdList, problemScoreList);
236
+ topstar = await this._calculateTopstars(logger, participantRecords, contestId, problemIdList, problemScoreList, contest.stages);
224
237
  }
225
238
  const now = performance.now();
226
239
  logger.info(`Start to generate ranklist object`);
@@ -233,13 +246,13 @@ export class PlusCalculator extends RanklistCalculator {
233
246
  const ranklist = {
234
247
  topstar,
235
248
  participant: {
236
- list: participantRecords.map(({ userId, rank, tags, scores, totalScore, lastSubmission }) => ({
249
+ list: participantRecords.map(({ userId, rank, tags, scores, lastSubmissionIds, totalScore, lastSubmission }) => ({
237
250
  userId,
238
251
  rank,
239
252
  tags,
240
253
  columns: [
241
- ...scores.map((score, i) => this._renderParticipantItemColumn(score, this.showOriginalScore ? 100 : problemScoreList[i])),
242
- this._renderParticipantItemColumn(totalScore, problemTotalScore),
254
+ ...scores.map((score, i) => this._renderParticipantItemColumn(score, this.showOriginalScore ? 100 : problemScoreList[i], lastSubmissionIds[i])),
255
+ this._renderParticipantItemColumn(totalScore, problemTotalScore, ''),
243
256
  ...(this.showLastSubmission ? [{ content: this._renderDate(lastSubmission) }] : [])
244
257
  ]
245
258
  })),
@@ -262,24 +275,36 @@ export class PlusCalculator extends RanklistCalculator {
262
275
  logger.info(`Generated ranklist object in ${performance.now() - now}ms`);
263
276
  return ranklist;
264
277
  }
265
- async _calculateTopstars(logger, participantRecords, contestId, problemIdList, problemScoreList) {
266
- const now = Date.now();
278
+ async _calculateTopstars(logger, participantRecords, contestId, problemIdList, problemScoreList, stages) {
267
279
  logger.info('Calculating topstars');
280
+ const start = performance.now();
281
+ // Filter out topstars' userId list
268
282
  const topstarUserIdList = participantRecords
269
283
  .slice(0, this.topstars)
270
284
  .filter((record) => record.totalScore > 0)
271
285
  .map((p) => p.userId);
286
+ // Generate topstar info
272
287
  const topstar = {
273
288
  list: await Promise.all(topstarUserIdList.map(async (userId) => {
274
- const solutions = await this.db.solutions
289
+ // For each topstar, find all effective solutions
290
+ let solutions = await this.db.solutions
275
291
  .find({
276
292
  contestId,
277
293
  userId,
278
294
  problemId: { $in: problemIdList },
279
- ...this.additionalFilter
295
+ submittedAt: {
296
+ $gte: this.submittedAfter,
297
+ $lt: this.submittedBefore
298
+ }
280
299
  }, { ignoreUndefined: true })
281
300
  .sort({ submittedAt: 1 })
282
301
  .toArray();
302
+ // Filter out solutions that should be skipped
303
+ solutions = solutions.filter((solution) => {
304
+ const stage = stages.findLast((s) => s.start <= solution.submittedAt);
305
+ return !stage?.settings.ranklistSkipCalculation;
306
+ });
307
+ // Calculate score mutations
283
308
  const currentScores = Object.create(null);
284
309
  const mutations = [];
285
310
  for (const { problemId, score, submittedAt } of solutions) {
@@ -299,59 +324,54 @@ export class PlusCalculator extends RanklistCalculator {
299
324
  return { userId, mutations };
300
325
  }))
301
326
  };
302
- logger.info(`Calculated topstars in ${Date.now() - now}ms`);
327
+ logger.info(`Calculated topstars in ${performance.now() - start}ms`);
303
328
  return topstar;
304
329
  }
305
- async _calculateScores(logger, contestId, problemIdList, participantsWithScores) {
330
+ async _calculateScores(logger, contestId, problemIdList, participantsWithScores, stages) {
306
331
  logger.info('Calculating scores');
307
332
  const start = performance.now();
308
333
  const scores = new Map();
334
+ const lastSubmissions = new Map();
335
+ const lastSubmissionIds = new Map();
309
336
  const cursor = this.db.solutions.find({
310
337
  contestId,
311
338
  problemId: { $in: problemIdList },
312
- ...this.additionalFilter
339
+ submittedAt: {
340
+ $gte: this.submittedAfter,
341
+ $lt: this.submittedBefore
342
+ }
313
343
  }, { ignoreUndefined: true });
344
+ // Iterate through all solutions and calculate scores
314
345
  for await (const solution of cursor) {
315
- const { userId, problemId, score } = solution;
316
- if (!scores.has(userId)) {
317
- scores.set(userId, Object.create(null));
318
- }
319
- const userScores = scores.get(userId);
346
+ const { _id, userId, problemId, score, submittedAt } = solution;
347
+ const stage = stages.findLast((s) => s.start <= submittedAt);
348
+ // If ranklistSkipCalculation is set for the corresponding stage,
349
+ // skip lastSubmission calculation
350
+ if (stage?.settings.ranklistSkipCalculation)
351
+ continue;
352
+ // Update participant's score using _reduceScore
353
+ const userScores = scores.get(userId) ?? Object.create(null);
320
354
  if (Object.hasOwn(userScores, problemId)) {
321
355
  userScores[problemId] = this._reduceScore(userScores[problemId], score);
322
356
  }
323
357
  else {
324
358
  userScores[problemId] = score;
325
359
  }
360
+ scores.set(userId, userScores);
361
+ // Update lastSubmission timestamp and id
362
+ lastSubmissions.set(userId, Math.max(lastSubmissions.get(userId) ?? 0, submittedAt));
363
+ const userLastSubmissionIds = lastSubmissionIds.get(userId) ?? Object.create(null);
364
+ userLastSubmissionIds[problemId] = _id;
365
+ lastSubmissionIds.set(userId, userLastSubmissionIds);
326
366
  }
327
367
  for (const participant of participantsWithScores) {
328
- const userScores = scores.get(participant.userId) ?? Object.create(null);
329
- participant.scores = problemIdList.map((pid) => userScores[pid] ?? 0);
330
- }
331
- logger.info(`Calculated scores in ${performance.now() - start}ms`);
332
- }
333
- async _calculateLastSubmission(logger, contestId, problemIdList, participantsWithScores) {
334
- logger.info('Calculating lastSubmission');
335
- const start = performance.now();
336
- const lastSubmissions = new Map();
337
- const cursor = this.db.solutions.find({
338
- contestId,
339
- problemId: { $in: problemIdList },
340
- ...this.additionalFilter
341
- }, { ignoreUndefined: true });
342
- for await (const solution of cursor) {
343
- const { userId, submittedAt } = solution;
344
- if (lastSubmissions.has(userId)) {
345
- lastSubmissions.set(userId, Math.max(lastSubmissions.get(userId), submittedAt));
346
- }
347
- else {
348
- lastSubmissions.set(userId, submittedAt);
349
- }
350
- }
351
- for (const participant of participantsWithScores) {
368
+ const userScores = scores.get(participant.userId);
369
+ participant.scores = problemIdList.map((pid) => userScores?.[pid] ?? 0);
370
+ const userLastSubmissionIds = lastSubmissionIds.get(participant.userId);
371
+ participant.lastSubmissionIds = problemIdList.map((pid) => userLastSubmissionIds?.[pid] ?? '');
352
372
  participant.lastSubmission = lastSubmissions.get(participant.userId) ?? 0;
353
373
  }
354
- logger.info(`Calculated lastSubmission in ${performance.now() - start}ms`);
374
+ logger.info(`Calculated scores in ${performance.now() - start}ms`);
355
375
  }
356
376
  }
357
377
  //# sourceMappingURL=plus.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"plus.js","sourceRoot":"","sources":["../../src/calc/plus.ts"],"names":[],"mappings":"AASA,OAAO,EAAwB,kBAAkB,EAAE,MAAM,WAAW,CAAA;AAEpE,MAAM,aAAa,GAAG,CAAC,UAAU,EAAE,KAAK,EAAE,KAAK,CAAU,CAAA;AAGzD,MAAM,kBAAkB,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAU,CAAA;AAGzD,MAAM,OAAO,cAAe,SAAQ,kBAAkB;IACpD,QAAQ,GAAG,CAAC,CAAA;IACZ,QAAQ,GAAG,EAAE,CAAA;IACb,uBAAuB,CAAW;IAClC,uBAAuB,CAAW;IAClC,mBAAmB,CAAW;IAC9B,mBAAmB,CAAW;IAC9B,iBAAiB,CAAS;IAC1B,kBAAkB,CAAS;IAC3B,iBAAiB,GAAiB,UAAU,CAAA;IAC5C,iBAAiB,GAAsB,KAAK,CAAA;IACpC,YAAY,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE,CAAC,CAAC,CAAA;IAC1C,YAAY,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAA;IACtD,iBAAiB,GAAG,KAAK,CAAA;IACzB,gBAAgB,GAAG,KAAK,CAAA;IACxB,kBAAkB,GAAG,KAAK,CAAA;IAC1B,oBAAoB,GAAG,KAAK,CAAA;IAC5B,gBAAgB,GAKZ,EAAE,CAAA;IAEG,KAAK,CAAC,UAAU,CAAC,IAA4B;QACpD,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAA;QAC/B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,QAAQ,GAAG,CAAC,IAAI,QAAQ,GAAG,EAAE,EAAE,CAAC;YACjE,IAAI,CAAC,QAAQ,IAAI,gDAAgD,CAAA;QACnE,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;QAC1B,CAAC;QAED,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAA;QAC5B,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAA;QACjC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAA;QACjC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAA;QAE5B,OAAO;YACL,sBAAsB,EAAE,IAAI;YAC5B,mBAAmB,EAAE,IAAI;SAC1B,CAAA;IACH,CAAC;IAEO,iBAAiB,CAAC,IAA4B;QACpD,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC3B,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAA;QACpD,CAAC;QACD,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC1B,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAA;QAClD,CAAC;QACD,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC5B,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAA;QACtD,CAAC;QACD,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC9B,IAAI,CAAC,oBAAoB,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAA;QAC1D,CAAC;IACH,CAAC;IAEO,sBAAsB,CAAC,IAA4B;QACzD,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC3B,IAAI,kBAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC,iBAAsC,CAAC,EAAE,CAAC;gBAC7E,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAsC,CAAA;gBACpE,QAAQ,IAAI,CAAC,iBAAiB,EAAE,CAAC;oBAC/B,KAAK,KAAK;wBACR,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAA;wBACnC,MAAK;oBACP,KAAK,KAAK;wBACR,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAA;wBAC5B,MAAK;oBACP,KAAK,KAAK;wBACR,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAA;wBAC5B,MAAK;gBACT,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,QAAQ,IAAI,oCAAoC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAA;YACxF,CAAC;QACH,CAAC;IACH,CAAC;IAEO,sBAAsB,CAAC,IAA4B;QACzD,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC3B,IAAI,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,iBAAiC,CAAC,EAAE,CAAC;gBACnE,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiC,CAAA;gBAC/D,QAAQ,IAAI,CAAC,iBAAiB,EAAE,CAAC;oBAC/B,KAAK,UAAU;wBACb,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;wBAC/B,MAAK;oBACP,KAAK,KAAK;wBACR,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAA;wBAC5B,MAAK;oBACP,KAAK,KAAK;wBACR,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAA;wBAC5B,MAAK;gBACT,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,QAAQ,IAAI,oCAAoC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAA;YACnF,CAAC;QACH,CAAC;IACH,CAAC;IAEO,iBAAiB,CAAC,IAA4B;QACpD,IAAI,IAAI,CAAC,uBAAuB,EAAE,CAAC;YACjC,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACxE,CAAC;QACD,IAAI,IAAI,CAAC,uBAAuB,EAAE,CAAC;YACjC,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACxE,CAAC;QACD,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC7B,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAChE,CAAC;QACD,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC7B,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAChE,CAAC;QACD,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC3B,IAAI,CAAC,iBAAiB,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;QAC7D,CAAC;QACD,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC5B,IAAI,CAAC,kBAAkB,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;QAC/D,CAAC;QACD,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;YACxD,IAAI,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,CAAC;gBAClC,IAAI,CAAC,QAAQ,IAAI,4CAA4C,CAAA;YAC/D,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,gBAAgB,CAAC,WAAW,KAAK,EAAE,CAAA;gBACxC,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,GAAG,GAAG,eAAe,CAAA;YACzD,CAAC;QACH,CAAC;QACD,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;YACtD,IAAI,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC;gBACjC,IAAI,CAAC,QAAQ,IAAI,2CAA2C,CAAA;YAC9D,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,gBAAgB,CAAC,WAAW,KAAK,EAAE,CAAA;gBACxC,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,IAAI,GAAG,cAAc,CAAA;YACzD,CAAC;QACH,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,YAAY,CAAC,SAAiB,EAAE,MAAc;QAC1D,IAAI,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;QAC5D,MAAM,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,GAAG,IAAI,CAAA;QAChG,IAAI,mBAAmB,EAAE,CAAC;YACxB,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QACxF,CAAC;QACD,IAAI,mBAAmB,EAAE,CAAC;YACxB,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QACzF,CAAC;QACD,IAAI,iBAAiB,EAAE,CAAC;YACtB,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAA;QAC5E,CAAC;QACD,IAAI,kBAAkB,EAAE,CAAC;YACvB,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAA;QACrE,CAAC;QACD,OAAO,QAAQ,CAAA;IACjB,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAAC,SAAiB;QAC9C,IAAI,YAAY,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,CAAA;QAC3E,MAAM,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,GAAG,IAAI,CAAA;QACjE,IAAI,uBAAuB,EAAE,CAAC;YAC5B,YAAY,GAAG,YAAY,CAAC,MAAM,CAChC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,uBAAwB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAC1E,CAAA;QACH,CAAC;QACD,IAAI,uBAAuB,EAAE,CAAC;YAC5B,YAAY,GAAG,YAAY,CAAC,MAAM,CAChC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,uBAAwB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAC5E,CAAA;QACH,CAAC;QACD,OAAO,YAAY,CAAA;IACrB,CAAC;IAEO,4BAA4B,CAClC,KAAa,EACb,YAAoB;QAEpB,IAAI,IAAI,CAAC,gBAAgB;YAAE,OAAO,EAAE,OAAO,EAAE,KAAK,KAAK,IAAI,YAAY,IAAI,EAAE,CAAA;QAC7E,OAAO,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,EAAE,CAAA;IAChC,CAAC;IAEO,WAAW,CAAC,EAAU;QAC5B,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,CAAA;QACzB,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,iBAAiB,EAAE,GAAG,KAAK,CAAC,CAAC,WAAW,EAAE,CAAA;QACrF,OAAO,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IAC7D,CAAC;IAEO,WAAW,CAAC,EAAU;QAC5B,OAAO,KAAK,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,IAAI,CAAA;IACtC,CAAC;IAEQ,KAAK,CAAC,SAAS,CAAC,SAAiB,EAAE,MAAc,EAAE,GAAW;QACrE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAA;QAC5D,MAAM,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAA;QAE1C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;QAC3D,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAA;QACvE,MAAM,aAAa,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;QAChD,MAAM,gBAAgB,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;QAC9D,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAA;QAC3D,MAAM,sBAAsB,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;YAC9E,MAAM;YACN,IAAI;YACJ,MAAM,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,YAAY,CAAC,KAAK,IAAI,CAAC,CAAC;YACzE,cAAc,EAAE,CAAC;SAClB,CAAC,CAAC,CAAA;QACH,MAAM,CAAC,IAAI,CAAC,UAAU,QAAQ,CAAC,MAAM,iBAAiB,YAAY,CAAC,MAAM,eAAe,CAAC,CAAA;QAEzF,MAAM,IAAI,CAAC,wBAAwB,CAAC,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,sBAAsB,CAAC,CAAA;QAC7F,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,sBAAsB,CAAC,CAAA;QAErF,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC5B,KAAK,MAAM,WAAW,IAAI,sBAAsB,EAAE,CAAC;gBACjD,WAAW,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,GAAG,CACzC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAClD,CAAA;YACH,CAAC;QACH,CAAC;QAED,MAAM,kBAAkB,GAAG,sBAAsB;aAC9C,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YAChB,GAAG,MAAM;YACT,UAAU,EAAE,CAAC,IAAI,CAAC,iBAAiB;gBACjC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;gBACtE,CAAC,CAAC,MAAM,CAAC,MAAM,CAChB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;SAC/C,CAAC,CAAC;aACF,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACb,uDAAuD;QACvD,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC,UAAU;YAC3B,CAAC,CAAC,CAAC,CAAC,cAAc,GAAG,CAAC,CAAC,cAAc;YACrC,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAChC;aACA,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;YACvB,GAAG,MAAM;YACT,IAAI,EAAE,KAAK,GAAG,CAAC;SAChB,CAAC,CAAC,CAAA;QAEL,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC9B,kBAAkB,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;gBAChD,IAAI,KAAK,GAAG,CAAC,IAAI,MAAM,CAAC,UAAU,KAAK,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;oBACjE,MAAM,CAAC,IAAI,GAAG,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAA;gBACnC,CAAC;YACH,CAAC,CAAC,CAAA;QACJ,CAAC;QAED,IAAI,OAAqC,CAAA;QACzC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,OAAO,GAAG,MAAM,IAAI,CAAC,kBAAkB,CACrC,MAAM,EACN,kBAAkB,EAClB,SAAS,EACT,aAAa,EACb,gBAAgB,CACjB,CAAA;QACH,CAAC;QAED,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,CAAA;QAC7B,MAAM,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAA;QAEhD,IAAI,WAAW,GAAG,uCAAuC,CAAA;QACzD,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,6BAA6B,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAA;YAC1F,WAAW,IAAI,sBAAsB,IAAI,CAAC,QAAQ,QAAQ,CAAA;QAC5D,CAAC;QAED,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QAEvF,MAAM,QAAQ,GAAc;YAC1B,OAAO;YACP,WAAW,EAAE;gBACX,IAAI,EAAE,kBAAkB,CAAC,GAAG,CAC1B,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,cAAc,EAAE,EAAE,EAAE,CAC7D,CAAC;oBACC,MAAM;oBACN,IAAI;oBACJ,IAAI;oBACJ,OAAO,EAAE;wBACP,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CACzB,IAAI,CAAC,4BAA4B,CAC/B,KAAK,EACL,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CACnD,CACF;wBACD,IAAI,CAAC,4BAA4B,CAAC,UAAU,EAAE,iBAAiB,CAAC;wBAChE,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;qBACpF;iBACF,CAAoC,CACxC;gBACD,OAAO,EAAE;oBACP,GAAG,QAAQ,CAAC,GAAG,CACb,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,CAChC,CAAC;wBACC,IAAI,EAAE,IAAI;wBACV,WAAW,EAAE,KAAK;qBACnB,CAAsC,CAC1C;oBACD,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE;oBAC7C,GAAG,CAAC,IAAI,CAAC,kBAAkB;wBACzB,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,sBAAsB,EAAE,CAAC;wBAChE,CAAC,CAAC,EAAE,CAAC;iBACR;aACF;YACD,QAAQ,EAAE;gBACR,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE;gBACvB,WAAW;aACZ;SACF,CAAA;QAED,MAAM,CAAC,IAAI,CAAC,gCAAgC,WAAW,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI,CAAC,CAAA;QAExE,OAAO,QAAQ,CAAA;IACjB,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAC9B,MAAc,EACd,kBAOG,EACH,SAAiB,EACjB,aAAuB,EACvB,gBAA0B;QAE1B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACtB,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAA;QAEnC,MAAM,iBAAiB,GAAG,kBAAkB;aACzC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC;aACvB,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,GAAG,CAAC,CAAC;aACzC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;QACvB,MAAM,OAAO,GAAqB;YAChC,IAAI,EAAE,MAAM,OAAO,CAAC,GAAG,CACrB,iBAAiB,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;gBACrC,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,SAAS;qBACtC,IAAI,CACH;oBACE,SAAS;oBACT,MAAM;oBACN,SAAS,EAAE,EAAE,GAAG,EAAE,aAAa,EAAE;oBACjC,GAAG,IAAI,CAAC,gBAAgB;iBACzB,EACD,EAAE,eAAe,EAAE,IAAI,EAAE,CAC1B;qBACA,IAAI,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC;qBACxB,OAAO,EAAE,CAAA;gBACZ,MAAM,aAAa,GAA2B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;gBACjE,MAAM,SAAS,GAAmC,EAAE,CAAA;gBACpD,KAAK,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,SAAS,EAAE,CAAC;oBAC1D,IAAI,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,SAAS,CAAC,EAAE,CAAC;wBAC5C,aAAa,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,CAAA;oBAC/E,CAAC;yBAAM,CAAC;wBACN,aAAa,CAAC,SAAS,CAAC,GAAG,KAAK,CAAA;oBAClC,CAAC;oBACD,SAAS,CAAC,IAAI,CAAC;wBACb,KAAK,EAAE,aAAa;6BACjB,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;6BACxE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;wBAC/C,EAAE,EAAE,WAAW;qBAChB,CAAC,CAAA;gBACJ,CAAC;gBACD,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAA;YAC9B,CAAC,CAAC,CACH;SACF,CAAA;QACD,MAAM,CAAC,IAAI,CAAC,0BAA0B,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI,CAAC,CAAA;QAC3D,OAAO,OAAO,CAAA;IAChB,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAC5B,MAAc,EACd,SAAiB,EACjB,aAAuB,EACvB,sBAKG;QAEH,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAA;QACjC,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAA;QAC/B,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkC,CAAA;QACxD,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CACnC;YACE,SAAS;YACT,SAAS,EAAE,EAAE,GAAG,EAAE,aAAa,EAAE;YACjC,GAAG,IAAI,CAAC,gBAAgB;SACzB,EACD,EAAE,eAAe,EAAE,IAAI,EAAE,CAC1B,CAAA;QACD,IAAI,KAAK,EAAE,MAAM,QAAQ,IAAI,MAAM,EAAE,CAAC;YACpC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,QAAQ,CAAA;YAC7C,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBACxB,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;YACzC,CAAC;YACD,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAE,CAAA;YACtC,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC,EAAE,CAAC;gBACzC,UAAU,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,CAAA;YACzE,CAAC;iBAAM,CAAC;gBACN,UAAU,CAAC,SAAS,CAAC,GAAG,KAAK,CAAA;YAC/B,CAAC;QACH,CAAC;QACD,KAAK,MAAM,WAAW,IAAI,sBAAsB,EAAE,CAAC;YACjD,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;YACxE,WAAW,CAAC,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAA;QACvE,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,wBAAwB,WAAW,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC,CAAA;IACpE,CAAC;IAEO,KAAK,CAAC,wBAAwB,CACpC,MAAc,EACd,SAAiB,EACjB,aAAuB,EACvB,sBAKG;QAEH,MAAM,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAA;QACzC,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAA;QAC/B,MAAM,eAAe,GAAG,IAAI,GAAG,EAAkB,CAAA;QACjD,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CACnC;YACE,SAAS;YACT,SAAS,EAAE,EAAE,GAAG,EAAE,aAAa,EAAE;YACjC,GAAG,IAAI,CAAC,gBAAgB;SACzB,EACD,EAAE,eAAe,EAAE,IAAI,EAAE,CAC1B,CAAA;QACD,IAAI,KAAK,EAAE,MAAM,QAAQ,IAAI,MAAM,EAAE,CAAC;YACpC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,QAAQ,CAAA;YACxC,IAAI,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBAChC,eAAe,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAE,EAAE,WAAW,CAAC,CAAC,CAAA;YAClF,CAAC;iBAAM,CAAC;gBACN,eAAe,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;YAC1C,CAAC;QACH,CAAC;QACD,KAAK,MAAM,WAAW,IAAI,sBAAsB,EAAE,CAAC;YACjD,WAAW,CAAC,cAAc,GAAG,eAAe,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QAC3E,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,gCAAgC,WAAW,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC,CAAA;IAC5E,CAAC;CACF"}
1
+ {"version":3,"file":"plus.js","sourceRoot":"","sources":["../../src/calc/plus.ts"],"names":[],"mappings":"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"}
package/lib/client.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import { type KyInstance } from 'ky';
2
+ import type { IContestStage } from '@aoi-js/server';
2
3
  export interface IAkaClientConfig {
3
4
  server: string;
4
5
  runnerId: string;
@@ -53,6 +54,7 @@ export interface IRanklistParticipantColumn {
53
54
  }
54
55
  export interface IRanklistParticipantItemColumn {
55
56
  content: string;
57
+ solutionId?: string;
56
58
  }
57
59
  export interface IRanklistParticipantItem {
58
60
  rank: number;
@@ -94,6 +96,13 @@ export declare class AkaClient {
94
96
  complete(contestId: string, taskId: string, payload: {
95
97
  ranklistUpdatedAt: number;
96
98
  }): Promise<void>;
99
+ contest(contestId: string, taskId: string): Promise<{
100
+ slug: string;
101
+ title: string;
102
+ description: string;
103
+ tags: string[];
104
+ stages: IContestStage[];
105
+ }>;
97
106
  problems(contestId: string, taskId: string): Promise<{
98
107
  _id: string;
99
108
  title: string;
package/lib/client.js CHANGED
@@ -22,6 +22,9 @@ export class AkaClient {
22
22
  .post(`api/runner/ranklist/task/${contestId}/${taskId}/complete`, { json: payload })
23
23
  .json();
24
24
  }
25
+ async contest(contestId, taskId) {
26
+ return this.http.get(`api/runner/ranklist/task/${contestId}/${taskId}/contest`).json();
27
+ }
25
28
  async problems(contestId, taskId) {
26
29
  return this.http.get(`api/runner/ranklist/task/${contestId}/${taskId}/problems`).json();
27
30
  }
package/lib/client.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,MAAM,IAAI,CAAA;AACxC,OAAO,QAAQ,MAAM,iBAAiB,CAAC,SAAS,IAAI,EAAE,MAAM,EAAE,CAAA;AA2F9D,MAAM,OAAO,SAAS;IAEA;IADpB,IAAI,CAAY;IAChB,YAAoB,MAAwB;QAAxB,WAAM,GAAN,MAAM,CAAkB;QAC1C,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,MAAM,CAAC;YACpB,SAAS,EAAE,MAAM,CAAC,MAAM;YACxB,OAAO,EAAE;gBACP,iBAAiB,EAAE,MAAM,CAAC,QAAQ;gBAClC,kBAAkB,EAAE,MAAM,CAAC,SAAS;gBACpC,YAAY,EAAE,OAAO,QAAQ,CAAC,OAAO,EAAE;aACxC;SACF,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,IAAI;QACR,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,IAAI,EAalD,CAAA;IACN,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,SAAiB,EAAE,MAAc,EAAE,OAAsC;QACtF,OAAO,IAAI,CAAC,IAAI;aACb,IAAI,CAAC,4BAA4B,SAAS,IAAI,MAAM,WAAW,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;aACnF,IAAI,EAAQ,CAAA;IACjB,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,SAAiB,EAAE,MAAc;QAC9C,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,4BAA4B,SAAS,IAAI,MAAM,WAAW,CAAC,CAAC,IAAI,EAYlF,CAAA;IACL,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,SAAiB,EAAE,MAAc,EAAE,KAAa,EAAE,MAAc;QACjF,OAAO,IAAI,CAAC,IAAI;aACb,GAAG,CAAC,4BAA4B,SAAS,IAAI,MAAM,eAAe,EAAE;YACnE,YAAY,EAAE;gBACZ,KAAK;gBACL,MAAM;aACP;SACF,CAAC;aACD,IAAI,EAAkB,CAAA;IAC3B,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,SAAiB,EAAE,MAAc,EAAE,KAAa,EAAE,MAAc;QAC9E,OAAO,IAAI,CAAC,IAAI;aACb,GAAG,CAAC,4BAA4B,SAAS,IAAI,MAAM,YAAY,EAAE;YAChE,YAAY,EAAE;gBACZ,KAAK;gBACL,MAAM;aACP;SACF,CAAC;aACD,IAAI,EAAe,CAAA;IACxB,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,SAAiB,EAAE,MAAc;QAChD,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,4BAA4B,SAAS,IAAI,MAAM,aAAa,CAAC,CAAC,IAAI,EAKpF,CAAA;IACL,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,GAAW,EAAE,QAAmB;QACnD,OAAO,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE;YACjB,IAAI,EAAE,QAAQ;SACf,CAAC,CAAA;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,MAAM,IAAI,CAAA;AACxC,OAAO,QAAQ,MAAM,iBAAiB,CAAC,SAAS,IAAI,EAAE,MAAM,EAAE,CAAA;AA6F9D,MAAM,OAAO,SAAS;IAEA;IADpB,IAAI,CAAY;IAChB,YAAoB,MAAwB;QAAxB,WAAM,GAAN,MAAM,CAAkB;QAC1C,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,MAAM,CAAC;YACpB,SAAS,EAAE,MAAM,CAAC,MAAM;YACxB,OAAO,EAAE;gBACP,iBAAiB,EAAE,MAAM,CAAC,QAAQ;gBAClC,kBAAkB,EAAE,MAAM,CAAC,SAAS;gBACpC,YAAY,EAAE,OAAO,QAAQ,CAAC,OAAO,EAAE;aACxC;SACF,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,IAAI;QACR,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,IAAI,EAalD,CAAA;IACN,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,SAAiB,EAAE,MAAc,EAAE,OAAsC;QACtF,OAAO,IAAI,CAAC,IAAI;aACb,IAAI,CAAC,4BAA4B,SAAS,IAAI,MAAM,WAAW,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;aACnF,IAAI,EAAQ,CAAA;IACjB,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,SAAiB,EAAE,MAAc;QAC7C,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,4BAA4B,SAAS,IAAI,MAAM,UAAU,CAAC,CAAC,IAAI,EAMhF,CAAA;IACN,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,SAAiB,EAAE,MAAc;QAC9C,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,4BAA4B,SAAS,IAAI,MAAM,WAAW,CAAC,CAAC,IAAI,EAYlF,CAAA;IACL,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,SAAiB,EAAE,MAAc,EAAE,KAAa,EAAE,MAAc;QACjF,OAAO,IAAI,CAAC,IAAI;aACb,GAAG,CAAC,4BAA4B,SAAS,IAAI,MAAM,eAAe,EAAE;YACnE,YAAY,EAAE;gBACZ,KAAK;gBACL,MAAM;aACP;SACF,CAAC;aACD,IAAI,EAAkB,CAAA;IAC3B,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,SAAiB,EAAE,MAAc,EAAE,KAAa,EAAE,MAAc;QAC9E,OAAO,IAAI,CAAC,IAAI;aACb,GAAG,CAAC,4BAA4B,SAAS,IAAI,MAAM,YAAY,EAAE;YAChE,YAAY,EAAE;gBACZ,KAAK;gBACL,MAAM;aACP;SACF,CAAC;aACD,IAAI,EAAe,CAAA;IACxB,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,SAAiB,EAAE,MAAc;QAChD,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,4BAA4B,SAAS,IAAI,MAAM,aAAa,CAAC,CAAC,IAAI,EAKpF,CAAA;IACL,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,GAAW,EAAE,QAAmB;QACnD,OAAO,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE;YACjB,IAAI,EAAE,QAAQ;SACf,CAAC,CAAA;IACJ,CAAC;CACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aoi-js/aka",
3
- "version": "0.0.11",
3
+ "version": "0.0.12",
4
4
  "packageManager": "yarn@4.3.1",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -24,6 +24,7 @@
24
24
  ],
25
25
  "bin": "bin/aka.js",
26
26
  "devDependencies": {
27
+ "@aoi-js/server": "^1.1.7",
27
28
  "@types/node": "^20.11.5",
28
29
  "@typescript-eslint/eslint-plugin": "^6.19.0",
29
30
  "@typescript-eslint/parser": "^6.19.0",