@tamagui/static 1.0.1-beta.61 → 1.0.1-beta.62

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.
@@ -4,6 +4,7 @@ import { relative } from "path";
4
4
  import traverse from "@babel/traverse";
5
5
  import * as t from "@babel/types";
6
6
  import {
7
+ expandStyles,
7
8
  getSplitStyles,
8
9
  mediaQueryConfig,
9
10
  normalizeStyleObject,
@@ -342,7 +343,7 @@ function createExtractor() {
342
343
  let keys = [name];
343
344
  let out = null;
344
345
  if (staticConfig.propMapper) {
345
- out = staticConfig.propMapper(name, styleValue, defaultTheme, staticConfig.defaultProps, { resolveVariablesAs: "auto" });
346
+ out = staticConfig.propMapper(name, styleValue, defaultTheme, staticConfig.defaultProps, { resolveVariablesAs: "auto" }, void 0, shouldPrintDebug);
346
347
  if (out) {
347
348
  if (!Array.isArray(out)) {
348
349
  console.warn(`Error expected array but got`, out);
@@ -371,7 +372,7 @@ function createExtractor() {
371
372
  attr: path.node
372
373
  };
373
374
  }
374
- if (validHTMLAttributes[key]) {
375
+ if (validHTMLAttributes[key] || key.startsWith("aria-") || key.startsWith("data-")) {
375
376
  return attr;
376
377
  }
377
378
  if (shouldPrintDebug) {
@@ -994,35 +995,47 @@ function createExtractor() {
994
995
  press: false,
995
996
  pressIn: false
996
997
  };
997
- const completeStaticProps = Object.keys(attrs).reduce((acc, index) => {
998
- const cur = attrs[index];
998
+ let foundStaticProps = {};
999
+ for (const key in attrs) {
1000
+ const cur = attrs[key];
999
1001
  if (cur.type === "style") {
1000
1002
  normalizeStyleObject(cur.value);
1001
- Object.assign(acc, cur.value);
1003
+ foundStaticProps = {
1004
+ ...foundStaticProps,
1005
+ ...expandStyles(cur.value)
1006
+ };
1007
+ continue;
1002
1008
  }
1003
1009
  if (cur.type === "attr") {
1004
1010
  if (t.isJSXSpreadAttribute(cur.value)) {
1005
- return acc;
1011
+ continue;
1006
1012
  }
1007
1013
  if (!t.isJSXIdentifier(cur.value.name)) {
1008
- return acc;
1014
+ continue;
1009
1015
  }
1010
- const key = cur.value.name.name;
1016
+ const key2 = cur.value.name.name;
1011
1017
  const value = attemptEvalSafe(cur.value.value || t.booleanLiteral(true));
1012
- if (value === FAILED_EVAL) {
1013
- return acc;
1018
+ if (value !== FAILED_EVAL) {
1019
+ foundStaticProps = {
1020
+ ...foundStaticProps,
1021
+ [key2]: value
1022
+ };
1014
1023
  }
1015
- acc[key] = value;
1016
1024
  }
1017
- return acc;
1018
- }, {});
1019
- const completeProps = {
1020
- ...staticConfig.defaultProps,
1021
- ...completeStaticProps
1022
- };
1025
+ }
1026
+ const completeProps = {};
1027
+ for (const key in staticConfig.defaultProps) {
1028
+ if (!(key in foundStaticProps)) {
1029
+ completeProps[key] = staticConfig.defaultProps[key];
1030
+ }
1031
+ }
1032
+ for (const key in foundStaticProps) {
1033
+ completeProps[key] = foundStaticProps[key];
1034
+ }
1023
1035
  if (shouldPrintDebug) {
1024
1036
  console.log(" - attrs (combined \u{1F500}): \n", logLines(attrs.map(attrStr).join(", ")));
1025
1037
  console.log(" - defaultProps: \n", logLines(objToStr(staticConfig.defaultProps)));
1038
+ console.log(" - foundStaticProps: \n", logLines(objToStr(foundStaticProps)));
1026
1039
  console.log(" - completeProps: \n", logLines(objToStr(completeProps)));
1027
1040
  }
1028
1041
  const getStyles = /* @__PURE__ */ __name((props2, debugName = "") => {
@@ -1044,7 +1057,7 @@ function createExtractor() {
1044
1057
  const out = getSplitStyles(props2, staticConfig, defaultTheme, {
1045
1058
  ...state,
1046
1059
  fallbackProps: completeProps
1047
- });
1060
+ }, void 0, props2["debug"]);
1048
1061
  const outStyle = {
1049
1062
  ...out.style,
1050
1063
  ...out.pseudos
@@ -1068,7 +1081,7 @@ function createExtractor() {
1068
1081
  if (!completeStyles) {
1069
1082
  throw new Error(`Impossible, no styles`);
1070
1083
  }
1071
- const addInitialStyleKeys = shouldFlatten ? difference(Object.keys(completeStyles), Object.keys(completeStaticProps)) : [];
1084
+ const addInitialStyleKeys = shouldFlatten ? difference(Object.keys(completeStyles), Object.keys(foundStaticProps)) : [];
1072
1085
  if (addInitialStyleKeys.length) {
1073
1086
  const toAdd = pick(completeStyles, ...addInitialStyleKeys);
1074
1087
  const firstGroup = attrs.find((x) => x.type === "style");
@@ -1084,14 +1097,11 @@ function createExtractor() {
1084
1097
  }
1085
1098
  if (shouldPrintDebug) {
1086
1099
  console.log(" -- addInitialStyleKeys", addInitialStyleKeys.join(", "), { shouldFlatten });
1087
- console.log(" -- completeStaticProps:\n", logLines(objToStr(completeStaticProps)));
1088
1100
  console.log(" -- completeStyles:\n", logLines(objToStr(completeStyles)));
1089
1101
  }
1090
1102
  let getStyleError = null;
1091
1103
  for (const attr of attrs) {
1092
1104
  try {
1093
- if (shouldPrintDebug)
1094
- console.log(" *", attrStr(attr));
1095
1105
  switch (attr.type) {
1096
1106
  case "ternary":
1097
1107
  const a = getStyles(attr.value.alternate, "ternary.alternate");
@@ -1105,7 +1115,7 @@ function createExtractor() {
1105
1115
  continue;
1106
1116
  case "style":
1107
1117
  if (shouldPrintDebug)
1108
- console.log(" * styles in", logLines(objToStr(attr.value)));
1118
+ console.log(" * styles in", attr.value);
1109
1119
  const styles = getStyles(attr.value, "style");
1110
1120
  if (shouldPrintDebug)
1111
1121
  console.log(" * styles out", logLines(objToStr(styles)));
@@ -1118,6 +1128,9 @@ function createExtractor() {
1118
1128
  getStyleError = err;
1119
1129
  }
1120
1130
  }
1131
+ if (shouldPrintDebug) {
1132
+ console.log(" - attrs (ternaries/combined):\n", logLines(attrs.map(attrStr).join(", ")));
1133
+ }
1121
1134
  tm.mark("jsx-element-styles", shouldPrintDebug === "verbose");
1122
1135
  if (getStyleError) {
1123
1136
  console.log(" \u26A0\uFE0F postprocessing error, deopt", getStyleError);
@@ -43,7 +43,7 @@ function extractMediaStyle(ternary, jsxPath, tamaguiConfig, sourcePath, importan
43
43
  const screenStr = negate ? "not all" : "screen";
44
44
  const mediaQuery = `${screenStr} and ${mediaSelector}`;
45
45
  const precendencePrefix = mediaKeyPrecendence[key];
46
- const styleInner = style.rules[0].replace(style.identifier, identifier);
46
+ const styleInner = style.rules.map((rule) => rule.replace(style.identifier, identifier)).join(";");
47
47
  let styleRule = "";
48
48
  if (styleInner.includes("@media")) {
49
49
  styleRule = styleInner.replace("{", ` and ${mediaQuery} {`);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tamagui/static",
3
- "version": "1.0.1-beta.61",
3
+ "version": "1.0.1-beta.62",
4
4
  "source": "src/index.ts",
5
5
  "types": "./types/index.d.ts",
6
6
  "main": "dist/cjs",
@@ -36,11 +36,11 @@
36
36
  "@babel/parser": "^7.15.7",
37
37
  "@babel/traverse": "^7.15.4",
38
38
  "@expo/match-media": "^0.3.0",
39
- "@tamagui/build": "^1.0.1-beta.61",
40
- "@tamagui/core-node": "^1.0.1-beta.61",
41
- "@tamagui/fake-react-native": "^1.0.1-beta.61",
42
- "@tamagui/helpers": "^1.0.1-beta.61",
43
- "@tamagui/proxy-worm": "^1.0.1-beta.61",
39
+ "@tamagui/build": "^1.0.1-beta.62",
40
+ "@tamagui/core-node": "^1.0.1-beta.62",
41
+ "@tamagui/fake-react-native": "^1.0.1-beta.62",
42
+ "@tamagui/helpers": "^1.0.1-beta.62",
43
+ "@tamagui/proxy-worm": "^1.0.1-beta.62",
44
44
  "babel-literal-to-ast": "^2.1.0",
45
45
  "esbuild": "^0.14.36",
46
46
  "esbuild-register": "^3.3.2",
@@ -48,7 +48,7 @@
48
48
  "fs-extra": "^9.1.0",
49
49
  "invariant": "^2.2.4",
50
50
  "lodash": "^4.17.21",
51
- "tamagui": "^1.0.1-beta.61"
51
+ "tamagui": "^1.0.1-beta.62"
52
52
  },
53
53
  "devDependencies": {
54
54
  "@babel/plugin-syntax-typescript": "^7.14.5",
@@ -6,6 +6,7 @@ import {
6
6
  PseudoStyles,
7
7
  StaticConfigParsed,
8
8
  TamaguiInternalConfig,
9
+ expandStyles,
9
10
  getSplitStyles,
10
11
  mediaQueryConfig,
11
12
  normalizeStyleObject,
@@ -735,7 +736,9 @@ export function createExtractor() {
735
736
  styleValue,
736
737
  defaultTheme,
737
738
  staticConfig.defaultProps,
738
- { resolveVariablesAs: 'auto' }
739
+ { resolveVariablesAs: 'auto' },
740
+ undefined,
741
+ shouldPrintDebug
739
742
  )
740
743
  if (out) {
741
744
  if (!Array.isArray(out)) {
@@ -769,7 +772,11 @@ export function createExtractor() {
769
772
  attr: path.node,
770
773
  } as const
771
774
  }
772
- if (validHTMLAttributes[key]) {
775
+ if (
776
+ validHTMLAttributes[key] ||
777
+ key.startsWith('aria-') ||
778
+ key.startsWith('data-')
779
+ ) {
773
780
  return attr
774
781
  }
775
782
  if (shouldPrintDebug) {
@@ -1404,38 +1411,52 @@ export function createExtractor() {
1404
1411
  }
1405
1412
 
1406
1413
  // evaluates all static attributes into a simple object
1407
- const completeStaticProps = Object.keys(attrs).reduce((acc, index) => {
1408
- const cur = attrs[index] as ExtractedAttr
1414
+ let foundStaticProps = {}
1415
+ for (const key in attrs) {
1416
+ const cur = attrs[key]
1409
1417
  if (cur.type === 'style') {
1410
1418
  normalizeStyleObject(cur.value)
1411
- Object.assign(acc, cur.value)
1419
+ foundStaticProps = {
1420
+ ...foundStaticProps,
1421
+ ...expandStyles(cur.value),
1422
+ }
1423
+ continue
1412
1424
  }
1413
1425
  if (cur.type === 'attr') {
1414
1426
  if (t.isJSXSpreadAttribute(cur.value)) {
1415
- return acc
1427
+ continue
1416
1428
  }
1417
1429
  if (!t.isJSXIdentifier(cur.value.name)) {
1418
- return acc
1430
+ continue
1419
1431
  }
1420
1432
  const key = cur.value.name.name
1421
1433
  // undefined = boolean true
1422
1434
  const value = attemptEvalSafe(cur.value.value || t.booleanLiteral(true))
1423
- if (value === FAILED_EVAL) {
1424
- return acc
1435
+ if (value !== FAILED_EVAL) {
1436
+ foundStaticProps = {
1437
+ ...foundStaticProps,
1438
+ [key]: value,
1439
+ }
1425
1440
  }
1426
- acc[key] = value
1427
1441
  }
1428
- return acc
1429
- }, {})
1442
+ }
1430
1443
 
1431
- const completeProps = {
1432
- ...staticConfig.defaultProps,
1433
- ...completeStaticProps,
1444
+ // must preserve exact order
1445
+ const completeProps = {}
1446
+ for (const key in staticConfig.defaultProps) {
1447
+ if (!(key in foundStaticProps)) {
1448
+ completeProps[key] = staticConfig.defaultProps[key]
1449
+ }
1450
+ }
1451
+ for (const key in foundStaticProps) {
1452
+ completeProps[key] = foundStaticProps[key]
1434
1453
  }
1435
1454
 
1436
1455
  if (shouldPrintDebug) {
1437
1456
  console.log(' - attrs (combined 🔀): \n', logLines(attrs.map(attrStr).join(', ')))
1438
1457
  console.log(' - defaultProps: \n', logLines(objToStr(staticConfig.defaultProps)))
1458
+ // prettier-ignore
1459
+ console.log(' - foundStaticProps: \n', logLines(objToStr(foundStaticProps)))
1439
1460
  console.log(' - completeProps: \n', logLines(objToStr(completeProps)))
1440
1461
  }
1441
1462
 
@@ -1454,10 +1475,17 @@ export function createExtractor() {
1454
1475
  }
1455
1476
  }
1456
1477
  try {
1457
- const out = getSplitStyles(props, staticConfig, defaultTheme, {
1458
- ...state,
1459
- fallbackProps: completeProps,
1460
- })
1478
+ const out = getSplitStyles(
1479
+ props,
1480
+ staticConfig,
1481
+ defaultTheme,
1482
+ {
1483
+ ...state,
1484
+ fallbackProps: completeProps,
1485
+ },
1486
+ undefined,
1487
+ props['debug']
1488
+ )
1461
1489
  const outStyle = {
1462
1490
  ...out.style,
1463
1491
  ...out.pseudos,
@@ -1503,7 +1531,7 @@ export function createExtractor() {
1503
1531
 
1504
1532
  // any extra styles added in postprocess should be added to first group as they wont be overriden
1505
1533
  const addInitialStyleKeys = shouldFlatten
1506
- ? difference(Object.keys(completeStyles), Object.keys(completeStaticProps))
1534
+ ? difference(Object.keys(completeStyles), Object.keys(foundStaticProps))
1507
1535
  : []
1508
1536
 
1509
1537
  if (addInitialStyleKeys.length) {
@@ -1525,8 +1553,6 @@ export function createExtractor() {
1525
1553
  // prettier-ignore
1526
1554
  console.log(' -- addInitialStyleKeys', addInitialStyleKeys.join(', '), { shouldFlatten })
1527
1555
  // prettier-ignore
1528
- console.log(' -- completeStaticProps:\n', logLines(objToStr(completeStaticProps)))
1529
- // prettier-ignore
1530
1556
  console.log(' -- completeStyles:\n', logLines(objToStr(completeStyles)))
1531
1557
  }
1532
1558
 
@@ -1535,7 +1561,6 @@ export function createExtractor() {
1535
1561
  // fix up ternaries, combine final style values
1536
1562
  for (const attr of attrs) {
1537
1563
  try {
1538
- if (shouldPrintDebug) console.log(' *', attrStr(attr))
1539
1564
  switch (attr.type) {
1540
1565
  case 'ternary':
1541
1566
  const a = getStyles(attr.value.alternate, 'ternary.alternate')
@@ -1545,8 +1570,7 @@ export function createExtractor() {
1545
1570
  if (shouldPrintDebug) console.log(' => tern ', attrStr(attr))
1546
1571
  continue
1547
1572
  case 'style':
1548
- // prettier-ignore
1549
- if (shouldPrintDebug) console.log(' * styles in', logLines(objToStr(attr.value)))
1573
+ if (shouldPrintDebug) console.log(' * styles in', attr.value)
1550
1574
  // expand variants and such
1551
1575
  // get the keys we need
1552
1576
  const styles = getStyles(attr.value, 'style')
@@ -1567,6 +1591,11 @@ export function createExtractor() {
1567
1591
  }
1568
1592
  }
1569
1593
 
1594
+ if (shouldPrintDebug) {
1595
+ // prettier-ignore
1596
+ console.log(' - attrs (ternaries/combined):\n', logLines(attrs.map(attrStr).join(', ')))
1597
+ }
1598
+
1570
1599
  tm.mark('jsx-element-styles', shouldPrintDebug === 'verbose')
1571
1600
 
1572
1601
  if (getStyleError) {
@@ -60,7 +60,9 @@ export function extractMediaStyle(
60
60
  const screenStr = negate ? 'not all' : 'screen'
61
61
  const mediaQuery = `${screenStr} and ${mediaSelector}`
62
62
  const precendencePrefix = mediaKeyPrecendence[key]
63
- const styleInner = style.rules[0].replace(style.identifier, identifier)
63
+ const styleInner = style.rules
64
+ .map((rule) => rule.replace(style.identifier, identifier))
65
+ .join(';')
64
66
  // combines media queries if they already exist
65
67
  let styleRule = ''
66
68
  if (styleInner.includes('@media')) {
@@ -1 +1 @@
1
- {"version":3,"file":"createExtractor.d.ts","sourceRoot":"","sources":["../../src/extractor/createExtractor.ts"],"names":[],"mappings":"AAEA,OAAiB,EAAE,QAAQ,EAAW,MAAM,iBAAiB,CAAA;AAC7D,OAAO,KAAK,CAAC,MAAM,cAAc,CAAA;AACjC,OAAO,EAGL,qBAAqB,EAQtB,MAAM,oBAAoB,CAAA;AAK3B,OAAO,EAIL,mBAAmB,EAEpB,MAAM,UAAU,CAAA;AAqCjB,oBAAY,SAAS,GAAG,UAAU,CAAC,OAAO,eAAe,CAAC,CAAA;AAI1D,wBAAgB,eAAe;;;;;;;;;;;;;;wBAqBb,SAAS,EAAE,OAAO,CAAC,GAAG,MAAM,0PAkBrC,mBAAmB;;;;;;EAqjD3B"}
1
+ {"version":3,"file":"createExtractor.d.ts","sourceRoot":"","sources":["../../src/extractor/createExtractor.ts"],"names":[],"mappings":"AAEA,OAAiB,EAAE,QAAQ,EAAW,MAAM,iBAAiB,CAAA;AAC7D,OAAO,KAAK,CAAC,MAAM,cAAc,CAAA;AACjC,OAAO,EAGL,qBAAqB,EAStB,MAAM,oBAAoB,CAAA;AAK3B,OAAO,EAIL,mBAAmB,EAEpB,MAAM,UAAU,CAAA;AAqCjB,oBAAY,SAAS,GAAG,UAAU,CAAC,OAAO,eAAe,CAAC,CAAA;AAI1D,wBAAgB,eAAe;;;;;;;;;;;;;;wBAqBb,SAAS,EAAE,OAAO,CAAC,GAAG,MAAM,0PAkBrC,mBAAmB;;;;;;EAilD3B"}
@@ -1 +1 @@
1
- {"version":3,"file":"extractMediaStyle.d.ts","sourceRoot":"","sources":["../../src/extractor/extractMediaStyle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAC1C,OAAO,KAAK,CAAC,MAAM,cAAc,CAAA;AACjC,OAAO,EAAE,qBAAqB,EAAwC,MAAM,oBAAoB,CAAA;AAIhG,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAG/C,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,EAC/B,aAAa,EAAE,qBAAqB,EACpC,UAAU,EAAE,MAAM,EAClB,UAAU,SAAI,EACd,gBAAgB,GAAE,OAAO,GAAG,SAAiB;;;SAyE9C;AAiFD,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,EAC/B,IAAI,EAAE,CAAC,CAAC,UAAU,EAClB,UAAU,EAAE,MAAM,WAiBnB"}
1
+ {"version":3,"file":"extractMediaStyle.d.ts","sourceRoot":"","sources":["../../src/extractor/extractMediaStyle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAC1C,OAAO,KAAK,CAAC,MAAM,cAAc,CAAA;AACjC,OAAO,EAAE,qBAAqB,EAAwC,MAAM,oBAAoB,CAAA;AAIhG,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAG/C,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,EAC/B,aAAa,EAAE,qBAAqB,EACpC,UAAU,EAAE,MAAM,EAClB,UAAU,SAAI,EACd,gBAAgB,GAAE,OAAO,GAAG,SAAiB;;;SA2E9C;AAiFD,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,EAC/B,IAAI,EAAE,CAAC,CAAC,UAAU,EAClB,UAAU,EAAE,MAAM,WAiBnB"}
@@ -1 +1 @@
1
- {"version":3,"file":"extractToClassNames.d.ts","sourceRoot":"","sources":["../../src/extractor/extractToClassNames.ts"],"names":[],"mappings":";AAKA,OAAO,KAAK,CAAC,MAAM,cAAc,CAAA;AAKjC,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAGvC,OAAO,EAAgC,cAAc,EAAW,MAAM,UAAU,CAAA;AAGhF,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAiB7C,oBAAY,iBAAiB,GAAG;IAC9B,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,GAAG,EAAE,CAAC,CAAC,IAAI,CAAA;IACX,GAAG,EAAE,GAAG,CAAA;CACT,CAAA;AAED,wBAAgB,mBAAmB,CAAC,EAClC,MAAM,EACN,SAAS,EACT,MAAM,EACN,UAAU,EACV,OAAO,EACP,gBAAgB,EAChB,aAAa,EACb,QAAQ,EACR,OAAO,GACR,EAAE;IACD,MAAM,EAAE,aAAa,CAAC,GAAG,CAAC,CAAA;IAC1B,aAAa,EAAE,MAAM,CAAA;IACrB,SAAS,EAAE,SAAS,CAAA;IACpB,MAAM,EAAE,MAAM,GAAG,MAAM,CAAA;IACvB,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,cAAc,CAAA;IACvB,gBAAgB,EAAE,OAAO,GAAG,SAAS,CAAA;IACrC,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,GAAG,iBAAiB,GAAG,IAAI,CAyY3B"}
1
+ {"version":3,"file":"extractToClassNames.d.ts","sourceRoot":"","sources":["../../src/extractor/extractToClassNames.ts"],"names":[],"mappings":";AAKA,OAAO,KAAK,CAAC,MAAM,cAAc,CAAA;AAKjC,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAGvC,OAAO,EAAgC,cAAc,EAAW,MAAM,UAAU,CAAA;AAGhF,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAiB7C,oBAAY,iBAAiB,GAAG;IAC9B,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,GAAG,EAAE,CAAC,CAAC,IAAI,CAAA;IACX,GAAG,EAAE,GAAG,CAAA;CACT,CAAA;AAED,wBAAgB,mBAAmB,CAAC,EAClC,MAAM,EACN,SAAS,EACT,MAAM,EACN,UAAU,EACV,OAAO,EACP,gBAAgB,EAChB,aAAa,EACb,QAAQ,EACR,OAAO,GACR,EAAE;IACD,MAAM,EAAE,aAAa,CAAC,GAAG,CAAC,CAAA;IAC1B,aAAa,EAAE,MAAM,CAAA;IACrB,SAAS,EAAE,SAAS,CAAA;IACpB,MAAM,EAAE,MAAM,GAAG,MAAM,CAAA;IACvB,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,cAAc,CAAA;IACvB,gBAAgB,EAAE,OAAO,GAAG,SAAS,CAAA;IACrC,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,GAAG,iBAAiB,GAAG,IAAI,CA4W3B"}