@digdir/designsystemet 1.0.4 → 1.0.6

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 (44) hide show
  1. package/LICENSE +7 -0
  2. package/dist/bin/designsystemet.js +623 -593
  3. package/dist/src/colors/index.js +32 -0
  4. package/dist/src/colors/theme.js +1 -0
  5. package/dist/src/colors/utils.d.ts +13 -0
  6. package/dist/src/colors/utils.d.ts.map +1 -1
  7. package/dist/src/colors/utils.js +32 -0
  8. package/dist/src/config.js +1 -0
  9. package/dist/src/index.js +196 -142
  10. package/dist/src/scripts/createJsonSchema.js +39 -38
  11. package/dist/src/scripts/update-design-tokens.js +1 -0
  12. package/dist/src/tokens/build.d.ts.map +1 -1
  13. package/dist/src/tokens/build.js +353 -590
  14. package/dist/src/tokens/create/generators/$designsystemet.js +22 -19
  15. package/dist/src/tokens/create/generators/$themes.js +10 -10
  16. package/dist/src/tokens/create/generators/color.js +1 -0
  17. package/dist/src/tokens/create/write.js +32 -29
  18. package/dist/src/tokens/create.js +1 -0
  19. package/dist/src/tokens/format.d.ts +4 -5
  20. package/dist/src/tokens/format.d.ts.map +1 -1
  21. package/dist/src/tokens/format.js +165 -143
  22. package/dist/src/tokens/index.js +165 -142
  23. package/dist/src/tokens/process/configs/color.js +26 -22
  24. package/dist/src/tokens/process/configs/semantic.js +16 -12
  25. package/dist/src/tokens/process/configs/shared.js +16 -12
  26. package/dist/src/tokens/process/configs/storefront.js +16 -12
  27. package/dist/src/tokens/process/configs/typography.js +16 -12
  28. package/dist/src/tokens/process/configs.js +26 -22
  29. package/dist/src/tokens/process/formats/css/color.js +16 -12
  30. package/dist/src/tokens/process/formats/css/semantic.js +16 -12
  31. package/dist/src/tokens/process/formats/css.js +16 -12
  32. package/dist/src/tokens/process/formats/js-tokens.js +16 -12
  33. package/dist/src/tokens/process/platform.js +27 -23
  34. package/dist/src/tokens/process/theme.d.ts +27 -0
  35. package/dist/src/tokens/process/theme.d.ts.map +1 -0
  36. package/dist/src/tokens/process/theme.js +174 -0
  37. package/dist/src/tokens/process/transformers.js +16 -12
  38. package/dist/src/tokens/process/utils/getMultidimensionalThemes.js +26 -22
  39. package/dist/src/tokens/types.d.ts +4 -0
  40. package/dist/src/tokens/types.d.ts.map +1 -1
  41. package/dist/src/tokens/utils.d.ts +2 -2
  42. package/dist/src/tokens/utils.d.ts.map +1 -1
  43. package/dist/src/tokens/utils.js +16 -12
  44. package/package.json +31 -28
@@ -3,7 +3,7 @@ import { writeFile } from "node:fs/promises";
3
3
  import { resolve } from "node:path";
4
4
  import { z as z2 } from "zod";
5
5
 
6
- // ../../node_modules/zod-to-json-schema/dist/esm/Options.js
6
+ // ../../node_modules/.pnpm/zod-to-json-schema@3.24.5_zod@3.24.4/node_modules/zod-to-json-schema/dist/esm/Options.js
7
7
  var ignoreOverride = Symbol("Let zodToJsonSchema decide on which parser to use");
8
8
  var defaultOptions = {
9
9
  name: void 0,
@@ -36,7 +36,7 @@ var getDefaultOptions = (options) => typeof options === "string" ? {
36
36
  ...options
37
37
  };
38
38
 
39
- // ../../node_modules/zod-to-json-schema/dist/esm/Refs.js
39
+ // ../../node_modules/.pnpm/zod-to-json-schema@3.24.5_zod@3.24.4/node_modules/zod-to-json-schema/dist/esm/Refs.js
40
40
  var getRefs = (options) => {
41
41
  const _options = getDefaultOptions(options);
42
42
  const currentPath = _options.name !== void 0 ? [..._options.basePath, _options.definitionPath, _options.name] : _options.basePath;
@@ -56,7 +56,7 @@ var getRefs = (options) => {
56
56
  };
57
57
  };
58
58
 
59
- // ../../node_modules/zod-to-json-schema/dist/esm/errorMessages.js
59
+ // ../../node_modules/.pnpm/zod-to-json-schema@3.24.5_zod@3.24.4/node_modules/zod-to-json-schema/dist/esm/errorMessages.js
60
60
  function addErrorMessage(res, key, errorMessage, refs) {
61
61
  if (!refs?.errorMessages)
62
62
  return;
@@ -72,15 +72,15 @@ function setResponseValueAndErrors(res, key, value, errorMessage, refs) {
72
72
  addErrorMessage(res, key, errorMessage, refs);
73
73
  }
74
74
 
75
- // ../../node_modules/zod-to-json-schema/dist/esm/selectParser.js
75
+ // ../../node_modules/.pnpm/zod-to-json-schema@3.24.5_zod@3.24.4/node_modules/zod-to-json-schema/dist/esm/selectParser.js
76
76
  import { ZodFirstPartyTypeKind as ZodFirstPartyTypeKind3 } from "zod";
77
77
 
78
- // ../../node_modules/zod-to-json-schema/dist/esm/parsers/any.js
78
+ // ../../node_modules/.pnpm/zod-to-json-schema@3.24.5_zod@3.24.4/node_modules/zod-to-json-schema/dist/esm/parsers/any.js
79
79
  function parseAnyDef() {
80
80
  return {};
81
81
  }
82
82
 
83
- // ../../node_modules/zod-to-json-schema/dist/esm/parsers/array.js
83
+ // ../../node_modules/.pnpm/zod-to-json-schema@3.24.5_zod@3.24.4/node_modules/zod-to-json-schema/dist/esm/parsers/array.js
84
84
  import { ZodFirstPartyTypeKind } from "zod";
85
85
  function parseArrayDef(def, refs) {
86
86
  const res = {
@@ -105,7 +105,7 @@ function parseArrayDef(def, refs) {
105
105
  return res;
106
106
  }
107
107
 
108
- // ../../node_modules/zod-to-json-schema/dist/esm/parsers/bigint.js
108
+ // ../../node_modules/.pnpm/zod-to-json-schema@3.24.5_zod@3.24.4/node_modules/zod-to-json-schema/dist/esm/parsers/bigint.js
109
109
  function parseBigintDef(def, refs) {
110
110
  const res = {
111
111
  type: "integer",
@@ -151,24 +151,24 @@ function parseBigintDef(def, refs) {
151
151
  return res;
152
152
  }
153
153
 
154
- // ../../node_modules/zod-to-json-schema/dist/esm/parsers/boolean.js
154
+ // ../../node_modules/.pnpm/zod-to-json-schema@3.24.5_zod@3.24.4/node_modules/zod-to-json-schema/dist/esm/parsers/boolean.js
155
155
  function parseBooleanDef() {
156
156
  return {
157
157
  type: "boolean"
158
158
  };
159
159
  }
160
160
 
161
- // ../../node_modules/zod-to-json-schema/dist/esm/parsers/branded.js
161
+ // ../../node_modules/.pnpm/zod-to-json-schema@3.24.5_zod@3.24.4/node_modules/zod-to-json-schema/dist/esm/parsers/branded.js
162
162
  function parseBrandedDef(_def, refs) {
163
163
  return parseDef(_def.type._def, refs);
164
164
  }
165
165
 
166
- // ../../node_modules/zod-to-json-schema/dist/esm/parsers/catch.js
166
+ // ../../node_modules/.pnpm/zod-to-json-schema@3.24.5_zod@3.24.4/node_modules/zod-to-json-schema/dist/esm/parsers/catch.js
167
167
  var parseCatchDef = (def, refs) => {
168
168
  return parseDef(def.innerType._def, refs);
169
169
  };
170
170
 
171
- // ../../node_modules/zod-to-json-schema/dist/esm/parsers/date.js
171
+ // ../../node_modules/.pnpm/zod-to-json-schema@3.24.5_zod@3.24.4/node_modules/zod-to-json-schema/dist/esm/parsers/date.js
172
172
  function parseDateDef(def, refs, overrideDateStrategy) {
173
173
  const strategy = overrideDateStrategy ?? refs.dateStrategy;
174
174
  if (Array.isArray(strategy)) {
@@ -227,7 +227,7 @@ var integerDateParser = (def, refs) => {
227
227
  return res;
228
228
  };
229
229
 
230
- // ../../node_modules/zod-to-json-schema/dist/esm/parsers/default.js
230
+ // ../../node_modules/.pnpm/zod-to-json-schema@3.24.5_zod@3.24.4/node_modules/zod-to-json-schema/dist/esm/parsers/default.js
231
231
  function parseDefaultDef(_def, refs) {
232
232
  return {
233
233
  ...parseDef(_def.innerType._def, refs),
@@ -235,12 +235,12 @@ function parseDefaultDef(_def, refs) {
235
235
  };
236
236
  }
237
237
 
238
- // ../../node_modules/zod-to-json-schema/dist/esm/parsers/effects.js
238
+ // ../../node_modules/.pnpm/zod-to-json-schema@3.24.5_zod@3.24.4/node_modules/zod-to-json-schema/dist/esm/parsers/effects.js
239
239
  function parseEffectsDef(_def, refs) {
240
240
  return refs.effectStrategy === "input" ? parseDef(_def.schema._def, refs) : {};
241
241
  }
242
242
 
243
- // ../../node_modules/zod-to-json-schema/dist/esm/parsers/enum.js
243
+ // ../../node_modules/.pnpm/zod-to-json-schema@3.24.5_zod@3.24.4/node_modules/zod-to-json-schema/dist/esm/parsers/enum.js
244
244
  function parseEnumDef(def) {
245
245
  return {
246
246
  type: "string",
@@ -248,7 +248,7 @@ function parseEnumDef(def) {
248
248
  };
249
249
  }
250
250
 
251
- // ../../node_modules/zod-to-json-schema/dist/esm/parsers/intersection.js
251
+ // ../../node_modules/.pnpm/zod-to-json-schema@3.24.5_zod@3.24.4/node_modules/zod-to-json-schema/dist/esm/parsers/intersection.js
252
252
  var isJsonSchema7AllOfType = (type) => {
253
253
  if ("type" in type && type.type === "string")
254
254
  return false;
@@ -290,7 +290,7 @@ function parseIntersectionDef(def, refs) {
290
290
  } : void 0;
291
291
  }
292
292
 
293
- // ../../node_modules/zod-to-json-schema/dist/esm/parsers/literal.js
293
+ // ../../node_modules/.pnpm/zod-to-json-schema@3.24.5_zod@3.24.4/node_modules/zod-to-json-schema/dist/esm/parsers/literal.js
294
294
  function parseLiteralDef(def, refs) {
295
295
  const parsedType = typeof def.value;
296
296
  if (parsedType !== "bigint" && parsedType !== "number" && parsedType !== "boolean" && parsedType !== "string") {
@@ -310,10 +310,10 @@ function parseLiteralDef(def, refs) {
310
310
  };
311
311
  }
312
312
 
313
- // ../../node_modules/zod-to-json-schema/dist/esm/parsers/record.js
313
+ // ../../node_modules/.pnpm/zod-to-json-schema@3.24.5_zod@3.24.4/node_modules/zod-to-json-schema/dist/esm/parsers/record.js
314
314
  import { ZodFirstPartyTypeKind as ZodFirstPartyTypeKind2 } from "zod";
315
315
 
316
- // ../../node_modules/zod-to-json-schema/dist/esm/parsers/string.js
316
+ // ../../node_modules/.pnpm/zod-to-json-schema@3.24.5_zod@3.24.4/node_modules/zod-to-json-schema/dist/esm/parsers/string.js
317
317
  var emojiRegex = void 0;
318
318
  var zodPatterns = {
319
319
  /**
@@ -638,7 +638,7 @@ function stringifyRegExpWithFlags(regex, refs) {
638
638
  return pattern;
639
639
  }
640
640
 
641
- // ../../node_modules/zod-to-json-schema/dist/esm/parsers/record.js
641
+ // ../../node_modules/.pnpm/zod-to-json-schema@3.24.5_zod@3.24.4/node_modules/zod-to-json-schema/dist/esm/parsers/record.js
642
642
  function parseRecordDef(def, refs) {
643
643
  if (refs.target === "openAi") {
644
644
  console.warn("Warning: OpenAI may not support records in schemas! Try an array of key-value pairs instead.");
@@ -690,7 +690,7 @@ function parseRecordDef(def, refs) {
690
690
  return schema2;
691
691
  }
692
692
 
693
- // ../../node_modules/zod-to-json-schema/dist/esm/parsers/map.js
693
+ // ../../node_modules/.pnpm/zod-to-json-schema@3.24.5_zod@3.24.4/node_modules/zod-to-json-schema/dist/esm/parsers/map.js
694
694
  function parseMapDef(def, refs) {
695
695
  if (refs.mapStrategy === "record") {
696
696
  return parseRecordDef(def, refs);
@@ -715,7 +715,7 @@ function parseMapDef(def, refs) {
715
715
  };
716
716
  }
717
717
 
718
- // ../../node_modules/zod-to-json-schema/dist/esm/parsers/nativeEnum.js
718
+ // ../../node_modules/.pnpm/zod-to-json-schema@3.24.5_zod@3.24.4/node_modules/zod-to-json-schema/dist/esm/parsers/nativeEnum.js
719
719
  function parseNativeEnumDef(def) {
720
720
  const object = def.values;
721
721
  const actualKeys = Object.keys(def.values).filter((key) => {
@@ -729,14 +729,14 @@ function parseNativeEnumDef(def) {
729
729
  };
730
730
  }
731
731
 
732
- // ../../node_modules/zod-to-json-schema/dist/esm/parsers/never.js
732
+ // ../../node_modules/.pnpm/zod-to-json-schema@3.24.5_zod@3.24.4/node_modules/zod-to-json-schema/dist/esm/parsers/never.js
733
733
  function parseNeverDef() {
734
734
  return {
735
735
  not: {}
736
736
  };
737
737
  }
738
738
 
739
- // ../../node_modules/zod-to-json-schema/dist/esm/parsers/null.js
739
+ // ../../node_modules/.pnpm/zod-to-json-schema@3.24.5_zod@3.24.4/node_modules/zod-to-json-schema/dist/esm/parsers/null.js
740
740
  function parseNullDef(refs) {
741
741
  return refs.target === "openApi3" ? {
742
742
  enum: ["null"],
@@ -746,7 +746,7 @@ function parseNullDef(refs) {
746
746
  };
747
747
  }
748
748
 
749
- // ../../node_modules/zod-to-json-schema/dist/esm/parsers/union.js
749
+ // ../../node_modules/.pnpm/zod-to-json-schema@3.24.5_zod@3.24.4/node_modules/zod-to-json-schema/dist/esm/parsers/union.js
750
750
  var primitiveMappings = {
751
751
  ZodString: "string",
752
752
  ZodNumber: "number",
@@ -814,7 +814,7 @@ var asAnyOf = (def, refs) => {
814
814
  return anyOf.length ? { anyOf } : void 0;
815
815
  };
816
816
 
817
- // ../../node_modules/zod-to-json-schema/dist/esm/parsers/nullable.js
817
+ // ../../node_modules/.pnpm/zod-to-json-schema@3.24.5_zod@3.24.4/node_modules/zod-to-json-schema/dist/esm/parsers/nullable.js
818
818
  function parseNullableDef(def, refs) {
819
819
  if (["ZodString", "ZodNumber", "ZodBigInt", "ZodBoolean", "ZodNull"].includes(def.innerType._def.typeName) && (!def.innerType._def.checks || !def.innerType._def.checks.length)) {
820
820
  if (refs.target === "openApi3") {
@@ -846,7 +846,7 @@ function parseNullableDef(def, refs) {
846
846
  return base && { anyOf: [base, { type: "null" }] };
847
847
  }
848
848
 
849
- // ../../node_modules/zod-to-json-schema/dist/esm/parsers/number.js
849
+ // ../../node_modules/.pnpm/zod-to-json-schema@3.24.5_zod@3.24.4/node_modules/zod-to-json-schema/dist/esm/parsers/number.js
850
850
  function parseNumberDef(def, refs) {
851
851
  const res = {
852
852
  type: "number"
@@ -895,7 +895,7 @@ function parseNumberDef(def, refs) {
895
895
  return res;
896
896
  }
897
897
 
898
- // ../../node_modules/zod-to-json-schema/dist/esm/parsers/object.js
898
+ // ../../node_modules/.pnpm/zod-to-json-schema@3.24.5_zod@3.24.4/node_modules/zod-to-json-schema/dist/esm/parsers/object.js
899
899
  import { ZodOptional } from "zod";
900
900
  function parseObjectDef(def, refs) {
901
901
  const forceOptionalIntoNullable = refs.target === "openAi";
@@ -966,7 +966,7 @@ function safeIsOptional(schema2) {
966
966
  }
967
967
  }
968
968
 
969
- // ../../node_modules/zod-to-json-schema/dist/esm/parsers/optional.js
969
+ // ../../node_modules/.pnpm/zod-to-json-schema@3.24.5_zod@3.24.4/node_modules/zod-to-json-schema/dist/esm/parsers/optional.js
970
970
  var parseOptionalDef = (def, refs) => {
971
971
  if (refs.currentPath.toString() === refs.propertyPath?.toString()) {
972
972
  return parseDef(def.innerType._def, refs);
@@ -985,7 +985,7 @@ var parseOptionalDef = (def, refs) => {
985
985
  } : {};
986
986
  };
987
987
 
988
- // ../../node_modules/zod-to-json-schema/dist/esm/parsers/pipeline.js
988
+ // ../../node_modules/.pnpm/zod-to-json-schema@3.24.5_zod@3.24.4/node_modules/zod-to-json-schema/dist/esm/parsers/pipeline.js
989
989
  var parsePipelineDef = (def, refs) => {
990
990
  if (refs.pipeStrategy === "input") {
991
991
  return parseDef(def.in._def, refs);
@@ -1005,12 +1005,12 @@ var parsePipelineDef = (def, refs) => {
1005
1005
  };
1006
1006
  };
1007
1007
 
1008
- // ../../node_modules/zod-to-json-schema/dist/esm/parsers/promise.js
1008
+ // ../../node_modules/.pnpm/zod-to-json-schema@3.24.5_zod@3.24.4/node_modules/zod-to-json-schema/dist/esm/parsers/promise.js
1009
1009
  function parsePromiseDef(def, refs) {
1010
1010
  return parseDef(def.type._def, refs);
1011
1011
  }
1012
1012
 
1013
- // ../../node_modules/zod-to-json-schema/dist/esm/parsers/set.js
1013
+ // ../../node_modules/.pnpm/zod-to-json-schema@3.24.5_zod@3.24.4/node_modules/zod-to-json-schema/dist/esm/parsers/set.js
1014
1014
  function parseSetDef(def, refs) {
1015
1015
  const items = parseDef(def.valueType._def, {
1016
1016
  ...refs,
@@ -1030,7 +1030,7 @@ function parseSetDef(def, refs) {
1030
1030
  return schema2;
1031
1031
  }
1032
1032
 
1033
- // ../../node_modules/zod-to-json-schema/dist/esm/parsers/tuple.js
1033
+ // ../../node_modules/.pnpm/zod-to-json-schema@3.24.5_zod@3.24.4/node_modules/zod-to-json-schema/dist/esm/parsers/tuple.js
1034
1034
  function parseTupleDef(def, refs) {
1035
1035
  if (def.rest) {
1036
1036
  return {
@@ -1058,24 +1058,24 @@ function parseTupleDef(def, refs) {
1058
1058
  }
1059
1059
  }
1060
1060
 
1061
- // ../../node_modules/zod-to-json-schema/dist/esm/parsers/undefined.js
1061
+ // ../../node_modules/.pnpm/zod-to-json-schema@3.24.5_zod@3.24.4/node_modules/zod-to-json-schema/dist/esm/parsers/undefined.js
1062
1062
  function parseUndefinedDef() {
1063
1063
  return {
1064
1064
  not: {}
1065
1065
  };
1066
1066
  }
1067
1067
 
1068
- // ../../node_modules/zod-to-json-schema/dist/esm/parsers/unknown.js
1068
+ // ../../node_modules/.pnpm/zod-to-json-schema@3.24.5_zod@3.24.4/node_modules/zod-to-json-schema/dist/esm/parsers/unknown.js
1069
1069
  function parseUnknownDef() {
1070
1070
  return {};
1071
1071
  }
1072
1072
 
1073
- // ../../node_modules/zod-to-json-schema/dist/esm/parsers/readonly.js
1073
+ // ../../node_modules/.pnpm/zod-to-json-schema@3.24.5_zod@3.24.4/node_modules/zod-to-json-schema/dist/esm/parsers/readonly.js
1074
1074
  var parseReadonlyDef = (def, refs) => {
1075
1075
  return parseDef(def.innerType._def, refs);
1076
1076
  };
1077
1077
 
1078
- // ../../node_modules/zod-to-json-schema/dist/esm/selectParser.js
1078
+ // ../../node_modules/.pnpm/zod-to-json-schema@3.24.5_zod@3.24.4/node_modules/zod-to-json-schema/dist/esm/selectParser.js
1079
1079
  var selectParser = (def, typeName, refs) => {
1080
1080
  switch (typeName) {
1081
1081
  case ZodFirstPartyTypeKind3.ZodString:
@@ -1151,7 +1151,7 @@ var selectParser = (def, typeName, refs) => {
1151
1151
  }
1152
1152
  };
1153
1153
 
1154
- // ../../node_modules/zod-to-json-schema/dist/esm/parseDef.js
1154
+ // ../../node_modules/.pnpm/zod-to-json-schema@3.24.5_zod@3.24.4/node_modules/zod-to-json-schema/dist/esm/parseDef.js
1155
1155
  function parseDef(def, refs, forceResolution = false) {
1156
1156
  const seenItem = refs.seen.get(def);
1157
1157
  if (refs.override) {
@@ -1215,7 +1215,7 @@ var addMeta = (def, refs, jsonSchema) => {
1215
1215
  return jsonSchema;
1216
1216
  };
1217
1217
 
1218
- // ../../node_modules/zod-to-json-schema/dist/esm/zodToJsonSchema.js
1218
+ // ../../node_modules/.pnpm/zod-to-json-schema@3.24.5_zod@3.24.4/node_modules/zod-to-json-schema/dist/esm/zodToJsonSchema.js
1219
1219
  var zodToJsonSchema = (schema2, options) => {
1220
1220
  const refs = getRefs(options);
1221
1221
  const definitions = typeof options === "object" && options.definitions ? Object.entries(options.definitions).reduce((acc, [name2, schema3]) => ({
@@ -1265,6 +1265,7 @@ import { z } from "zod";
1265
1265
 
1266
1266
  // src/colors/utils.ts
1267
1267
  import chroma from "chroma-js";
1268
+ import Colorjs from "colorjs.io";
1268
1269
  import { Hsluv } from "hsluv";
1269
1270
  var convertToHex = (color) => {
1270
1271
  if (!color) {
@@ -31,6 +31,7 @@ async function updateDesignTokens() {
31
31
  await cp(path.join(INTERNAL, "primitives/globals.json"), path.join(TARGET, "primitives/globals.json"));
32
32
  await cp(path.join(INTERNAL, "semantic"), path.join(TARGET, "semantic"));
33
33
  await cp(path.join(INTERNAL, "themes"), path.join(TARGET, "themes"));
34
+ await cp(path.join(INTERNAL, "$designsystemet.json"), path.join(TARGET, "$designsystemet.json"));
34
35
  console.log("\u2705 Finished copying design tokens");
35
36
  }
36
37
  await updateDesignTokens();
@@ -1 +1 @@
1
- {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../src/tokens/build.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,YAAY,EAAmB,MAAM,uBAAuB,CAAC;AAiB3E,eAAO,MAAM,WAAW,GAAU,SAAS,IAAI,CAAC,YAAY,EAAE,SAAS,GAAG,SAAS,CAAC,2DAuCnF,CAAC"}
1
+ {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../src/tokens/build.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,KAAK,YAAY,EAAmB,MAAM,uBAAuB,CAAC;AAiB3E,eAAO,MAAM,WAAW,GAAU,SAAS,IAAI,CAAC,YAAY,EAAE,SAAS,GAAG,SAAS,CAAC,2DAiDnF,CAAC"}