@tamagui/static 1.0.1-beta.104 → 1.0.1-beta.107
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.
- package/dist/cjs/constants.js +4 -0
- package/dist/cjs/constants.js.map +2 -2
- package/dist/cjs/extractor/createEvaluator.js.map +1 -1
- package/dist/cjs/extractor/defaultTamaguiConfig.js +177 -0
- package/dist/cjs/extractor/defaultTamaguiConfig.js.map +7 -0
- package/dist/cjs/extractor/loadTamagui.js +45 -66
- package/dist/cjs/extractor/loadTamagui.js.map +2 -2
- package/dist/cjs/index.js +1 -0
- package/dist/cjs/index.js.map +2 -2
- package/dist/cjs/require.js +99 -0
- package/dist/cjs/require.js.map +7 -0
- package/dist/esm/constants.js +3 -0
- package/dist/esm/constants.js.map +2 -2
- package/dist/esm/extractor/createEvaluator.js.map +1 -1
- package/dist/esm/extractor/defaultTamaguiConfig.js +156 -0
- package/dist/esm/extractor/defaultTamaguiConfig.js.map +7 -0
- package/dist/esm/extractor/loadTamagui.js +45 -66
- package/dist/esm/extractor/loadTamagui.js.map +2 -2
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +2 -2
- package/dist/esm/require.js +74 -0
- package/dist/esm/require.js.map +7 -0
- package/dist/jsx/constants.js +3 -0
- package/dist/jsx/constants.js.map +2 -2
- package/dist/jsx/extractor/createEvaluator.js.map +1 -1
- package/dist/jsx/extractor/defaultTamaguiConfig.js +143 -0
- package/dist/jsx/extractor/defaultTamaguiConfig.js.map +7 -0
- package/dist/jsx/extractor/loadTamagui.js +45 -66
- package/dist/jsx/extractor/loadTamagui.js.map +2 -2
- package/dist/jsx/index.js +1 -0
- package/dist/jsx/index.js.map +2 -2
- package/dist/jsx/require.js +74 -0
- package/dist/jsx/require.js.map +7 -0
- package/package.json +9 -8
- package/src/constants.ts +2 -0
- package/src/extractor/createEvaluator.ts +1 -1
- package/src/extractor/defaultTamaguiConfig.ts +150 -0
- package/src/extractor/loadTamagui.ts +50 -85
- package/src/index.ts +1 -0
- package/src/require.ts +93 -0
- package/types/constants.d.ts +1 -0
- package/types/constants.d.ts.map +1 -1
- package/types/extractor/createEvaluator.d.ts +1 -1
- package/types/extractor/createEvaluator.d.ts.map +1 -1
- package/types/extractor/defaultTamaguiConfig.d.ts +15 -0
- package/types/extractor/defaultTamaguiConfig.d.ts.map +1 -0
- package/types/extractor/loadTamagui.d.ts +1 -1
- package/types/extractor/loadTamagui.d.ts.map +1 -1
- package/types/index.d.ts +1 -0
- package/types/index.d.ts.map +1 -1
- package/types/require.d.ts +4 -0
- package/types/require.d.ts.map +1 -0
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
import { join } from 'path'
|
|
2
2
|
|
|
3
|
-
import type { StaticConfig, TamaguiComponent, TamaguiInternalConfig } from '@tamagui/core'
|
|
3
|
+
import type { StaticConfig, TamaguiComponent, TamaguiInternalConfig } from '@tamagui/core-node'
|
|
4
4
|
import { createTamagui } from '@tamagui/core-node'
|
|
5
5
|
|
|
6
|
+
import { SHOULD_DEBUG } from '../constants'
|
|
7
|
+
import { getNameToPaths, registerRequire, unregisterRequire } from '../require'
|
|
8
|
+
import { getDefaultTamaguiConfig } from './defaultTamaguiConfig'
|
|
9
|
+
|
|
6
10
|
let loadedTamagui: any = null
|
|
7
11
|
|
|
8
12
|
type NameToPaths = {
|
|
@@ -37,102 +41,62 @@ export function loadTamagui(props: { components: string[]; config: string }): Ta
|
|
|
37
41
|
globalThis['__DEV__'] = process.env.NODE_ENV === 'development'
|
|
38
42
|
}
|
|
39
43
|
|
|
40
|
-
|
|
41
|
-
const rnw = require('react-native-web')
|
|
42
|
-
const Mod = require('module')
|
|
43
|
-
const og = Mod.prototype.require
|
|
44
|
-
const nameToPaths: NameToPaths = {}
|
|
45
|
-
|
|
46
|
-
Mod.prototype.require = function (path: string) {
|
|
47
|
-
if (path.endsWith('.css')) {
|
|
48
|
-
return {}
|
|
49
|
-
}
|
|
50
|
-
if (
|
|
51
|
-
path === '@gorhom/bottom-sheet' ||
|
|
52
|
-
path.startsWith('react-native-reanimated') ||
|
|
53
|
-
path === 'expo-linear-gradient'
|
|
54
|
-
) {
|
|
55
|
-
return proxyWorm
|
|
56
|
-
}
|
|
57
|
-
if (
|
|
58
|
-
path.startsWith('react-native') &&
|
|
59
|
-
// allow our rnw.tsx imports through
|
|
60
|
-
!path.startsWith('react-native-web/dist/cjs/exports')
|
|
61
|
-
) {
|
|
62
|
-
return rnw
|
|
63
|
-
}
|
|
64
|
-
try {
|
|
65
|
-
const out = og.apply(this, arguments)
|
|
66
|
-
if (!nameToPaths[path]) {
|
|
67
|
-
if (out && typeof out === 'object') {
|
|
68
|
-
for (const key in out) {
|
|
69
|
-
try {
|
|
70
|
-
const conf = out[key]?.staticConfig as StaticConfig
|
|
71
|
-
if (conf) {
|
|
72
|
-
if (conf.componentName) {
|
|
73
|
-
nameToPaths[conf.componentName] ??= new Set()
|
|
74
|
-
const fullName = path.startsWith('.')
|
|
75
|
-
? join(`${this.path.replace(/dist(\/cjs)?/, 'src')}`, path)
|
|
76
|
-
: path
|
|
77
|
-
nameToPaths[conf.componentName].add(fullName)
|
|
78
|
-
} else {
|
|
79
|
-
// console.log('no name component', path)
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
} catch {
|
|
83
|
-
// ok
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
return out
|
|
89
|
-
} catch (err: any) {
|
|
90
|
-
console.error('Tamagui error loading file:\n', path, err.message, '\n', err.stack)
|
|
91
|
-
// avoid infinite loops
|
|
92
|
-
process.exit(1)
|
|
93
|
-
}
|
|
94
|
-
}
|
|
44
|
+
registerRequire()
|
|
95
45
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
46
|
+
try {
|
|
47
|
+
// import config
|
|
48
|
+
const exp = require(configPath)
|
|
49
|
+
const tamaguiConfig = (exp['default'] || exp) as TamaguiInternalConfig
|
|
99
50
|
|
|
100
|
-
|
|
101
|
-
try {
|
|
51
|
+
if (!tamaguiConfig || !tamaguiConfig.parsed) {
|
|
102
52
|
const confPath = require.resolve(configPath)
|
|
103
53
|
console.log(`Received:`, tamaguiConfig)
|
|
104
54
|
throw new Error(`Can't find valid config in ${confPath}`)
|
|
105
|
-
} catch (err) {
|
|
106
|
-
throw err
|
|
107
55
|
}
|
|
108
|
-
}
|
|
109
56
|
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
57
|
+
// import components
|
|
58
|
+
const components = {}
|
|
59
|
+
for (const moduleName of props.components) {
|
|
60
|
+
const exported = require(moduleName)
|
|
61
|
+
for (const Name in exported) {
|
|
62
|
+
const val = exported[Name]
|
|
63
|
+
const staticConfig = val?.staticConfig as StaticConfig | undefined
|
|
64
|
+
if (staticConfig) {
|
|
65
|
+
// remove non-stringifyable
|
|
66
|
+
const { Component, reactNativeWebComponent, ...sc } = staticConfig
|
|
67
|
+
Object.assign(components, { [Name]: { staticConfig: sc } })
|
|
68
|
+
}
|
|
121
69
|
}
|
|
122
70
|
}
|
|
123
|
-
}
|
|
124
71
|
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
Mod.prototype.require = og
|
|
72
|
+
// undo shims
|
|
73
|
+
process.env.IS_STATIC = undefined
|
|
128
74
|
|
|
129
|
-
|
|
130
|
-
|
|
75
|
+
// set up core-node
|
|
76
|
+
createTamagui(tamaguiConfig as any)
|
|
131
77
|
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
78
|
+
loadedTamagui = {
|
|
79
|
+
components,
|
|
80
|
+
tamaguiConfig,
|
|
81
|
+
nameToPaths: getNameToPaths(),
|
|
82
|
+
}
|
|
83
|
+
} catch (err) {
|
|
84
|
+
if (err instanceof Error) {
|
|
85
|
+
console.warn(
|
|
86
|
+
`Error loading tamagui.config.ts (set DEBUG=tamagui to see full stack), running tamagui without custom config`
|
|
87
|
+
)
|
|
88
|
+
console.log(`\n\n ${err.message}\n\n`)
|
|
89
|
+
if (SHOULD_DEBUG) {
|
|
90
|
+
console.log(err.stack)
|
|
91
|
+
}
|
|
92
|
+
} else {
|
|
93
|
+
console.error(`Error loading tamagui.config.ts`, err)
|
|
94
|
+
}
|
|
95
|
+
return {
|
|
96
|
+
components: {},
|
|
97
|
+
tamaguiConfig: getDefaultTamaguiConfig(),
|
|
98
|
+
nameToPaths: {},
|
|
99
|
+
}
|
|
136
100
|
}
|
|
137
101
|
|
|
138
102
|
return loadedTamagui
|
|
@@ -141,5 +105,6 @@ export function loadTamagui(props: { components: string[]; config: string }): Ta
|
|
|
141
105
|
throw err
|
|
142
106
|
} finally {
|
|
143
107
|
unregister()
|
|
108
|
+
unregisterRequire()
|
|
144
109
|
}
|
|
145
110
|
}
|
package/src/index.ts
CHANGED
package/src/require.ts
ADDED
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { join } from 'path'
|
|
2
|
+
|
|
3
|
+
import type { StaticConfig } from '@tamagui/core-node'
|
|
4
|
+
|
|
5
|
+
import { SHOULD_DEBUG } from './constants'
|
|
6
|
+
|
|
7
|
+
const nameToPaths = {}
|
|
8
|
+
const Mod = require('module')
|
|
9
|
+
const og = Mod.prototype.require
|
|
10
|
+
globalThis['ogRequire'] = og
|
|
11
|
+
|
|
12
|
+
export const getNameToPaths = () => nameToPaths
|
|
13
|
+
|
|
14
|
+
let tries = 0
|
|
15
|
+
setInterval(() => {
|
|
16
|
+
tries = 0
|
|
17
|
+
}, 500)
|
|
18
|
+
|
|
19
|
+
export function registerRequire() {
|
|
20
|
+
if (Mod.prototype.require !== globalThis['ogRequire']) {
|
|
21
|
+
console.warn('didnt unregister before re-registering')
|
|
22
|
+
process.exit(1)
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
const proxyWorm = require('@tamagui/proxy-worm')
|
|
26
|
+
const rnw = require('react-native-web')
|
|
27
|
+
|
|
28
|
+
Mod.prototype.require = function (path: string) {
|
|
29
|
+
if (SHOULD_DEBUG) {
|
|
30
|
+
console.log('tamagui require', path)
|
|
31
|
+
}
|
|
32
|
+
if (path.endsWith('.css')) {
|
|
33
|
+
return {}
|
|
34
|
+
}
|
|
35
|
+
if (
|
|
36
|
+
path === '@gorhom/bottom-sheet' ||
|
|
37
|
+
path.startsWith('react-native-reanimated') ||
|
|
38
|
+
path === 'expo-linear-gradient'
|
|
39
|
+
) {
|
|
40
|
+
return proxyWorm
|
|
41
|
+
}
|
|
42
|
+
if (
|
|
43
|
+
path.startsWith('react-native') &&
|
|
44
|
+
// allow our rnw.tsx imports through
|
|
45
|
+
!path.startsWith('react-native-web/dist/cjs/exports')
|
|
46
|
+
) {
|
|
47
|
+
return rnw
|
|
48
|
+
// return og('react-native-web')
|
|
49
|
+
}
|
|
50
|
+
try {
|
|
51
|
+
const out = og.apply(this, arguments)
|
|
52
|
+
if (!nameToPaths[path]) {
|
|
53
|
+
if (out && typeof out === 'object') {
|
|
54
|
+
for (const key in out) {
|
|
55
|
+
try {
|
|
56
|
+
const conf = out[key]?.staticConfig as StaticConfig
|
|
57
|
+
if (conf) {
|
|
58
|
+
if (conf.componentName) {
|
|
59
|
+
nameToPaths[conf.componentName] ??= new Set()
|
|
60
|
+
const fullName = path.startsWith('.')
|
|
61
|
+
? join(`${this.path.replace(/dist(\/cjs)?/, 'src')}`, path)
|
|
62
|
+
: path
|
|
63
|
+
nameToPaths[conf.componentName].add(fullName)
|
|
64
|
+
} else {
|
|
65
|
+
// console.log('no name component', path)
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
} catch {
|
|
69
|
+
// ok
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return out
|
|
75
|
+
} catch (err: any) {
|
|
76
|
+
console.error(
|
|
77
|
+
`Tamagui failed requiring ${path} from your tamagui.config.ts file, ignoring (set DEBUG=tamagui to see stack)\n`,
|
|
78
|
+
err.message
|
|
79
|
+
)
|
|
80
|
+
if (SHOULD_DEBUG) {
|
|
81
|
+
console.log(err.stack)
|
|
82
|
+
}
|
|
83
|
+
if (++tries > 10) {
|
|
84
|
+
// avoid infinite loops
|
|
85
|
+
process.exit(1)
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
export function unregisterRequire() {
|
|
92
|
+
Mod.prototype.require = og
|
|
93
|
+
}
|
package/types/constants.d.ts
CHANGED
|
@@ -3,4 +3,5 @@ export declare const MEDIA_SEP = "_";
|
|
|
3
3
|
export declare const cacheDir: any;
|
|
4
4
|
export declare const FAILED_EVAL: unique symbol;
|
|
5
5
|
export declare const CONCAT_CLASSNAME_IMPORT = "concatClassName";
|
|
6
|
+
export declare const SHOULD_DEBUG: boolean | undefined;
|
|
6
7
|
//# sourceMappingURL=constants.d.ts.map
|
package/types/constants.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,aAAa,gBAAgB,CAAA;AAI1C,eAAO,MAAM,SAAS,MAAM,CAAA;AAG5B,eAAO,MAAM,QAAQ,KAAkD,CAAA;AAEvE,eAAO,MAAM,WAAW,eAA8B,CAAA;AACtD,eAAO,MAAM,uBAAuB,oBAAoB,CAAA"}
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,aAAa,gBAAgB,CAAA;AAI1C,eAAO,MAAM,SAAS,MAAM,CAAA;AAG5B,eAAO,MAAM,QAAQ,KAAkD,CAAA;AAEvE,eAAO,MAAM,WAAW,eAA8B,CAAA;AACtD,eAAO,MAAM,uBAAuB,oBAAoB,CAAA;AAExD,eAAO,MAAM,YAAY,qBAAwE,CAAA"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { NodePath } from '@babel/traverse';
|
|
2
2
|
import * as t from '@babel/types';
|
|
3
|
-
import type { TamaguiConfig } from '@tamagui/core';
|
|
3
|
+
import type { TamaguiConfig } from '@tamagui/core-node';
|
|
4
4
|
export declare function createEvaluator({ tamaguiConfig, staticNamespace, sourcePath, traversePath, shouldPrintDebug, }: {
|
|
5
5
|
tamaguiConfig: TamaguiConfig;
|
|
6
6
|
staticNamespace: Record<string, any>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createEvaluator.d.ts","sourceRoot":"","sources":["../../src/extractor/createEvaluator.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAC1C,OAAO,KAAK,CAAC,MAAM,cAAc,CAAA;AACjC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"createEvaluator.d.ts","sourceRoot":"","sources":["../../src/extractor/createEvaluator.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAC1C,OAAO,KAAK,CAAC,MAAM,cAAc,CAAA;AACjC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAQvD,wBAAgB,eAAe,CAAC,EAC9B,aAAa,EACb,eAAe,EACf,UAAU,EACV,YAAY,EACZ,gBAAgB,GACjB,EAAE;IACD,aAAa,EAAE,aAAa,CAAA;IAC5B,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACpC,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAA;IACrC,gBAAgB,EAAE,OAAO,GAAG,SAAS,CAAA;CACtC,OAoCY,MAAM,SAGlB;AAED,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,KAAK,GAAG,OACtD,MAAM,SAOlB"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { TamaguiInternalConfig } from '@tamagui/core-node';
|
|
2
|
+
export declare function getDefaultTamaguiConfig(): TamaguiInternalConfig<import("@tamagui/core-node").CreateTokens<import("@tamagui/core-node").VariableVal>, {
|
|
3
|
+
[key: string]: Partial<import("@tamagui/core-node").TamaguiBaseTheme> & {
|
|
4
|
+
[key: string]: import("@tamagui/core-node").VariableVal;
|
|
5
|
+
};
|
|
6
|
+
}, {}, {
|
|
7
|
+
[x: string]: {
|
|
8
|
+
[key: string]: string | number;
|
|
9
|
+
};
|
|
10
|
+
}, {
|
|
11
|
+
[key: string]: string | {
|
|
12
|
+
[key: string]: any;
|
|
13
|
+
};
|
|
14
|
+
}, import("@tamagui/core-node").GenericFonts>;
|
|
15
|
+
//# sourceMappingURL=defaultTamaguiConfig.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defaultTamaguiConfig.d.ts","sourceRoot":"","sources":["../../src/extractor/defaultTamaguiConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAA2C,MAAM,oBAAoB,CAAA;AAInG,wBAAgB,uBAAuB;;;;;;;;;;;;8CAiJtC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loadTamagui.d.ts","sourceRoot":"","sources":["../../src/extractor/loadTamagui.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAgB,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"loadTamagui.d.ts","sourceRoot":"","sources":["../../src/extractor/loadTamagui.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAgB,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AAS/F,aAAK,WAAW,GAAG;IACjB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAAA;CAC3B,CAAA;AAED,oBAAY,kBAAkB,GAAG;IAC/B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAA;IAC5C,aAAa,EAAE,qBAAqB,CAAA;IACpC,WAAW,EAAE,WAAW,CAAA;CACzB,CAAA;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE;IAAE,UAAU,EAAE,MAAM,EAAE,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,kBAAkB,CAwF/F"}
|
package/types/index.d.ts
CHANGED
package/types/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAA;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,cAAc,aAAa,CAAA;AAC3B,cAAc,iCAAiC,CAAA;AAC/C,cAAc,4BAA4B,CAAA;AAC1C,cAAc,oBAAoB,CAAA;AAClC,cAAc,yBAAyB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAA;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,cAAc,aAAa,CAAA;AAC3B,cAAc,iCAAiC,CAAA;AAC/C,cAAc,4BAA4B,CAAA;AAC1C,cAAc,oBAAoB,CAAA;AAClC,cAAc,yBAAyB,CAAA;AACvC,cAAc,WAAW,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"require.d.ts","sourceRoot":"","sources":["../src/require.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,cAAc,UAAoB,CAAA;AAO/C,wBAAgB,eAAe,SAsE9B;AAED,wBAAgB,iBAAiB,SAEhC"}
|