@whisk/steakhouse 0.0.4 → 0.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 (156) hide show
  1. package/dist/client.d.ts +1 -12
  2. package/dist/client.js +1 -10
  3. package/dist/client.js.map +1 -1
  4. package/dist/index.d.ts +6 -5
  5. package/dist/index.js +1 -4
  6. package/dist/index.js.map +1 -1
  7. package/dist/metadata/generated/vaults.d.ts +7 -0
  8. package/dist/metadata/generated/vaults.js +468 -0
  9. package/dist/metadata/generated/vaults.js.map +1 -0
  10. package/dist/metadata/index.d.ts +3 -3
  11. package/dist/metadata/index.js +4 -8
  12. package/dist/metadata/index.js.map +1 -1
  13. package/dist/metadata/types.d.ts +10 -9
  14. package/dist/metadata/types.js +4 -0
  15. package/dist/metadata/types.js.map +1 -1
  16. package/dist/queries/fragments/vaultDetail.d.ts +265 -0
  17. package/dist/queries/fragments/vaultDetail.js +148 -0
  18. package/dist/queries/fragments/vaultDetail.js.map +1 -0
  19. package/dist/queries/getDetailedVault.d.ts +591 -0
  20. package/dist/queries/getDetailedVault.js +92 -0
  21. package/dist/queries/getDetailedVault.js.map +1 -0
  22. package/dist/queries/getVaults.d.ts +274 -13
  23. package/dist/queries/getVaults.js +34 -10
  24. package/dist/queries/getVaults.js.map +1 -1
  25. package/dist/queries/index.d.ts +6 -5
  26. package/dist/queries/index.js +6 -8
  27. package/dist/queries/index.js.map +1 -1
  28. package/dist/queries/steakhouseMetadata.d.ts +14 -0
  29. package/dist/queries/steakhouseMetadata.js +12 -0
  30. package/dist/queries/steakhouseMetadata.js.map +1 -0
  31. package/dist/queries/types.d.ts +2 -4
  32. package/dist/react/hooks/index.d.ts +8 -5
  33. package/dist/react/hooks/index.js +2 -0
  34. package/dist/react/hooks/index.js.map +1 -1
  35. package/dist/react/hooks/useDetailedVault.d.ts +12 -0
  36. package/dist/react/hooks/useDetailedVault.js +16 -0
  37. package/dist/react/hooks/useDetailedVault.js.map +1 -0
  38. package/dist/react/hooks/useSteakhouseQuery.d.ts +2 -4
  39. package/dist/react/hooks/useSteakhouseQuery.js +1 -1
  40. package/dist/react/hooks/useSteakhouseQuery.js.map +1 -1
  41. package/dist/react/hooks/useVaults.d.ts +7 -14
  42. package/dist/react/hooks/useVaults.js +3 -1
  43. package/dist/react/hooks/useVaults.js.map +1 -1
  44. package/dist/react/index.d.ts +8 -5
  45. package/dist/react/index.js +1 -8
  46. package/dist/react/index.js.map +1 -1
  47. package/dist/react/provider.d.ts +3 -5
  48. package/package.json +16 -8
  49. package/src/client.ts +3 -19
  50. package/src/index.ts +1 -2
  51. package/src/metadata/README.md +93 -0
  52. package/src/metadata/generated/vaults.ts +470 -0
  53. package/src/metadata/index.ts +5 -3
  54. package/src/metadata/types.ts +9 -10
  55. package/src/metadata/vaults/arbitrum/high-yield-turbo-usdc.md +6 -0
  56. package/src/metadata/vaults/arbitrum/high-yield-usdc-v1.md +6 -0
  57. package/src/metadata/vaults/arbitrum/high-yield-usdc-v2.md +6 -0
  58. package/src/metadata/vaults/arbitrum/high-yield-usdt-v2.md +6 -0
  59. package/src/metadata/vaults/base/deblock-eurc.md +6 -0
  60. package/src/metadata/vaults/base/eth-v1.md +6 -0
  61. package/src/metadata/vaults/base/eura.md +6 -0
  62. package/src/metadata/vaults/base/eurc-v1.md +6 -0
  63. package/src/metadata/vaults/base/high-yield-instant-usdc.md +6 -0
  64. package/src/metadata/vaults/base/high-yield-turbo-eth.md +6 -0
  65. package/src/metadata/vaults/base/high-yield-usdc-v1-1.md +6 -0
  66. package/src/metadata/vaults/base/high-yield-usdc.md +6 -0
  67. package/src/metadata/vaults/base/prime-instant-usdc.md +6 -0
  68. package/src/metadata/vaults/base/safe-x-eth-2.md +6 -0
  69. package/src/metadata/vaults/base/safe-x-eth.md +6 -0
  70. package/src/metadata/vaults/base/safe-x-usdc.md +6 -0
  71. package/src/metadata/vaults/base/smokehouse-usdc.md +6 -0
  72. package/src/metadata/vaults/base/susds.md +6 -0
  73. package/src/metadata/vaults/base/usda.md +6 -0
  74. package/src/metadata/vaults/base/usdc-rwa.md +6 -0
  75. package/src/metadata/vaults/base/usdc-v1.md +6 -0
  76. package/src/metadata/vaults/katana/high-yield-ausd.md +6 -0
  77. package/src/metadata/vaults/katana/high-yield-usdc.md +6 -0
  78. package/src/metadata/vaults/katana/prime-ausd.md +6 -0
  79. package/src/metadata/vaults/katana/prime-usdc.md +6 -0
  80. package/src/metadata/vaults/mainnet/3f-x-steakhouse.md +6 -0
  81. package/src/metadata/vaults/mainnet/coinshift-usdc.md +6 -0
  82. package/src/metadata/vaults/mainnet/coinshift-usdl.md +6 -0
  83. package/src/metadata/vaults/mainnet/eth-v1.md +6 -0
  84. package/src/metadata/vaults/mainnet/ethena-usdt.md +6 -0
  85. package/src/metadata/vaults/mainnet/ethena-usdtb.md +6 -0
  86. package/src/metadata/vaults/mainnet/eurcv-v1.md +6 -0
  87. package/src/metadata/vaults/mainnet/high-yield-instant-ausd-v2.md +6 -0
  88. package/src/metadata/vaults/mainnet/high-yield-instant-usdc-v2.md +6 -0
  89. package/src/metadata/vaults/mainnet/high-yield-instant-usdt-v2.md +6 -0
  90. package/src/metadata/vaults/mainnet/high-yield-term-usdc.md +6 -0
  91. package/src/metadata/vaults/mainnet/high-yield-turbo-cbbtc-v2.md +6 -0
  92. package/src/metadata/vaults/mainnet/high-yield-turbo-eth-v2.md +6 -0
  93. package/src/metadata/vaults/mainnet/high-yield-turbo-usdt-v2.md +6 -0
  94. package/src/metadata/vaults/mainnet/infinifi-usdc.md +6 -0
  95. package/src/metadata/vaults/mainnet/level-usdc.md +6 -0
  96. package/src/metadata/vaults/mainnet/m-v1.md +6 -0
  97. package/src/metadata/vaults/mainnet/paxg-v1.md +6 -0
  98. package/src/metadata/vaults/mainnet/peaty-usdc.md +6 -0
  99. package/src/metadata/vaults/mainnet/prime-instant-eth-v2.md +6 -0
  100. package/src/metadata/vaults/mainnet/prime-instant-eurcv-v2.md +6 -0
  101. package/src/metadata/vaults/mainnet/prime-instant-pyusd-v2.md +6 -0
  102. package/src/metadata/vaults/mainnet/prime-instant-usdc-v2.md +6 -0
  103. package/src/metadata/vaults/mainnet/prime-instant-usdt-v2.md +6 -0
  104. package/src/metadata/vaults/mainnet/pyusd-high-yield-instant.md +6 -0
  105. package/src/metadata/vaults/mainnet/pyusd-v1.md +6 -0
  106. package/src/metadata/vaults/mainnet/rusd-v1.md +6 -0
  107. package/src/metadata/vaults/mainnet/safe-x-eth.md +6 -0
  108. package/src/metadata/vaults/mainnet/safe-x-smokehouse-usdc.md +6 -0
  109. package/src/metadata/vaults/mainnet/safe-x-smokehouse-usdt.md +6 -0
  110. package/src/metadata/vaults/mainnet/safe-x-smokehouse-wbtc.md +6 -0
  111. package/src/metadata/vaults/mainnet/safe-x-smokehouse-wsteth.md +6 -0
  112. package/src/metadata/vaults/mainnet/safe-x-usdc.md +6 -0
  113. package/src/metadata/vaults/mainnet/safe-x-usdt.md +6 -0
  114. package/src/metadata/vaults/mainnet/smokehouse-cbbtc.md +6 -0
  115. package/src/metadata/vaults/mainnet/smokehouse-dai.md +6 -0
  116. package/src/metadata/vaults/mainnet/smokehouse-eth.md +6 -0
  117. package/src/metadata/vaults/mainnet/smokehouse-usdc.md +6 -0
  118. package/src/metadata/vaults/mainnet/smokehouse-usdt.md +6 -0
  119. package/src/metadata/vaults/mainnet/smokehouse-wsteth.md +6 -0
  120. package/src/metadata/vaults/mainnet/usdc-rwa.md +6 -0
  121. package/src/metadata/vaults/mainnet/usdc-v1.md +6 -0
  122. package/src/metadata/vaults/mainnet/usdq.md +6 -0
  123. package/src/metadata/vaults/mainnet/usdr.md +6 -0
  124. package/src/metadata/vaults/mainnet/usdt-lite.md +6 -0
  125. package/src/metadata/vaults/mainnet/usdt-v1.md +6 -0
  126. package/src/metadata/vaults/mainnet/vault-bridge-usdc.md +6 -0
  127. package/src/metadata/vaults/mainnet/wbtc-v1.md +6 -0
  128. package/src/metadata/vaults/monad/ausd-v2.md +6 -0
  129. package/src/metadata/vaults/monad/usdc-v2.md +6 -0
  130. package/src/metadata/vaults/unichain/eth.md +6 -0
  131. package/src/metadata/vaults/unichain/wsteth.md +6 -0
  132. package/src/queries/fragments/vaultDetail.ts +151 -0
  133. package/src/queries/getDetailedVault.test.ts +202 -0
  134. package/src/queries/getDetailedVault.ts +131 -0
  135. package/src/queries/getVaults.test.ts +167 -0
  136. package/src/queries/getVaults.ts +62 -13
  137. package/src/queries/index.ts +9 -7
  138. package/src/queries/steakhouseMetadata.ts +19 -0
  139. package/src/react/hooks/index.ts +1 -0
  140. package/src/react/hooks/useDetailedVault.ts +19 -0
  141. package/src/react/hooks/useSteakhouseQuery.ts +3 -3
  142. package/src/react/hooks/useVaults.ts +7 -2
  143. package/src/react/index.ts +1 -6
  144. package/dist/metadata/chains.d.ts +0 -7
  145. package/dist/metadata/chains.js +0 -15
  146. package/dist/metadata/chains.js.map +0 -1
  147. package/dist/metadata/vaults.d.ts +0 -7
  148. package/dist/metadata/vaults.js +0 -24
  149. package/dist/metadata/vaults.js.map +0 -1
  150. package/dist/queries/fragments/vault.d.ts +0 -19
  151. package/dist/queries/fragments/vault.js +0 -16
  152. package/dist/queries/fragments/vault.js.map +0 -1
  153. package/src/client.test.ts +0 -27
  154. package/src/metadata/chains.ts +0 -13
  155. package/src/metadata/vaults.ts +0 -27
  156. package/src/queries/fragments/vault.ts +0 -15
@@ -0,0 +1,265 @@
1
+ import * as gql_tada from 'gql.tada';
2
+ import { FragmentOf } from '@whisk/graphql';
3
+
4
+ /**
5
+ * Full fragment for vault detail view.
6
+ * Uses inline fragments to handle both MorphoVault (v1) and MorphoVaultV2.
7
+ */
8
+ declare const vaultDetailFragment: gql_tada.TadaDocumentNode<{
9
+ __typename?: "MorphoVault";
10
+ chain: {
11
+ id: number;
12
+ name: string;
13
+ icon: string;
14
+ };
15
+ vaultAddress: `0x${string}`;
16
+ name: string;
17
+ symbol: string;
18
+ decimals: number;
19
+ asset: {
20
+ address: `0x${string}`;
21
+ symbol: string;
22
+ name: string;
23
+ icon: string | null;
24
+ priceUsd: number | null;
25
+ decimals: number;
26
+ };
27
+ totalAssets: {
28
+ raw: bigint;
29
+ formatted: string;
30
+ usd: number | null;
31
+ };
32
+ apy: {
33
+ base: number;
34
+ total: number;
35
+ rewards: {
36
+ asset: {
37
+ symbol: string;
38
+ icon: string | null;
39
+ };
40
+ apr: number;
41
+ }[];
42
+ fee: number;
43
+ };
44
+ totalLiquidity: {
45
+ formatted: string;
46
+ usd: number | null;
47
+ };
48
+ v1PerformanceFee: number;
49
+ feeRecipientAddress: `0x${string}` | null;
50
+ ownerAddress: `0x${string}`;
51
+ curatorAddress: `0x${string}`;
52
+ guardianAddress: `0x${string}`;
53
+ metadata: {
54
+ description: string | null;
55
+ image: string | null;
56
+ forumLink: string | null;
57
+ curator: {
58
+ name: string;
59
+ image: string;
60
+ url: string;
61
+ } | null;
62
+ curators: {
63
+ name: string;
64
+ image: string;
65
+ url: string;
66
+ }[];
67
+ } | null;
68
+ marketAllocations: {
69
+ market: {
70
+ marketId: `0x${string}`;
71
+ name: string;
72
+ loanAsset: {
73
+ symbol: string;
74
+ icon: string | null;
75
+ };
76
+ collateralAsset: {
77
+ symbol: string;
78
+ icon: string | null;
79
+ } | null;
80
+ isIdle: boolean;
81
+ };
82
+ enabled: boolean;
83
+ supplyCap: {
84
+ formatted: string;
85
+ usd: number | null;
86
+ };
87
+ vaultSupplyShare: number;
88
+ marketSupplyShare: number;
89
+ position: {
90
+ supplyAmount: {
91
+ formatted: string;
92
+ usd: number | null;
93
+ };
94
+ };
95
+ }[];
96
+ riskAssessment: {
97
+ steakhouse: {
98
+ score: number;
99
+ rating: string;
100
+ } | null;
101
+ };
102
+ } | {
103
+ __typename?: "MorphoVaultV2";
104
+ chain: {
105
+ id: number;
106
+ name: string;
107
+ icon: string;
108
+ };
109
+ vaultAddress: `0x${string}`;
110
+ name: string;
111
+ symbol: string;
112
+ decimals: number;
113
+ asset: {
114
+ address: `0x${string}`;
115
+ symbol: string;
116
+ name: string;
117
+ icon: string | null;
118
+ priceUsd: number | null;
119
+ decimals: number;
120
+ };
121
+ totalAssets: {
122
+ raw: bigint;
123
+ formatted: string;
124
+ usd: number | null;
125
+ };
126
+ apy: {
127
+ base: number;
128
+ total: number;
129
+ rewards: {
130
+ asset: {
131
+ symbol: string;
132
+ icon: string | null;
133
+ };
134
+ apr: number;
135
+ }[];
136
+ fee: number;
137
+ };
138
+ curatorAddress: `0x${string}`;
139
+ ownerAddress: `0x${string}`;
140
+ metadata: {
141
+ description: string | null;
142
+ image: string | null;
143
+ forumLink: string | null;
144
+ curator: {
145
+ name: string;
146
+ image: string;
147
+ url: string;
148
+ } | null;
149
+ curators: {
150
+ name: string;
151
+ image: string;
152
+ url: string;
153
+ }[];
154
+ } | null;
155
+ liquidityAssets: {
156
+ formatted: string;
157
+ usd: number | null;
158
+ };
159
+ idleAssets: {
160
+ formatted: string;
161
+ usd: number | null;
162
+ };
163
+ v2PerformanceFee: {
164
+ formatted: string;
165
+ };
166
+ managementFee: {
167
+ formatted: string;
168
+ };
169
+ adapters: ({
170
+ __typename?: "MarketV1Adapter";
171
+ adapterAddress: `0x${string}`;
172
+ name: string | null;
173
+ } | {
174
+ __typename?: "BoxVaultAdapter";
175
+ } | {
176
+ __typename?: "UnknownAdapter";
177
+ } | {
178
+ __typename?: "VaultV1Adapter";
179
+ })[];
180
+ riskAssessment: {
181
+ steakhouse: {
182
+ score: number;
183
+ rating: string;
184
+ } | null;
185
+ };
186
+ } | {
187
+ __typename?: "BoxVault";
188
+ chain: {
189
+ id: number;
190
+ name: string;
191
+ icon: string;
192
+ };
193
+ vaultAddress: `0x${string}`;
194
+ name: string;
195
+ symbol: string;
196
+ decimals: number;
197
+ asset: {
198
+ address: `0x${string}`;
199
+ symbol: string;
200
+ name: string;
201
+ icon: string | null;
202
+ priceUsd: number | null;
203
+ decimals: number;
204
+ };
205
+ totalAssets: {
206
+ raw: bigint;
207
+ formatted: string;
208
+ usd: number | null;
209
+ };
210
+ apy: {
211
+ base: number;
212
+ total: number;
213
+ rewards: {
214
+ asset: {
215
+ symbol: string;
216
+ icon: string | null;
217
+ };
218
+ apr: number;
219
+ }[];
220
+ fee: number;
221
+ };
222
+ } | {
223
+ __typename?: "GenericErc4626Vault";
224
+ chain: {
225
+ id: number;
226
+ name: string;
227
+ icon: string;
228
+ };
229
+ vaultAddress: `0x${string}`;
230
+ name: string;
231
+ symbol: string;
232
+ decimals: number;
233
+ asset: {
234
+ address: `0x${string}`;
235
+ symbol: string;
236
+ name: string;
237
+ icon: string | null;
238
+ priceUsd: number | null;
239
+ decimals: number;
240
+ };
241
+ totalAssets: {
242
+ raw: bigint;
243
+ formatted: string;
244
+ usd: number | null;
245
+ };
246
+ apy: {
247
+ base: number;
248
+ total: number;
249
+ rewards: {
250
+ asset: {
251
+ symbol: string;
252
+ icon: string | null;
253
+ };
254
+ apr: number;
255
+ }[];
256
+ fee: number;
257
+ };
258
+ }, {}, {
259
+ fragment: "VaultDetailFragment";
260
+ on: "Erc4626Vault";
261
+ masked: false;
262
+ }>;
263
+ type VaultDetail = FragmentOf<typeof vaultDetailFragment>;
264
+
265
+ export { type VaultDetail, vaultDetailFragment };
@@ -0,0 +1,148 @@
1
+ import { graphql } from "@whisk/graphql";
2
+ const vaultDetailFragment = graphql(`
3
+ fragment VaultDetailFragment on Erc4626Vault {
4
+ chain {
5
+ id
6
+ name
7
+ icon
8
+ }
9
+ vaultAddress
10
+ name
11
+ symbol
12
+ decimals
13
+ asset {
14
+ address
15
+ symbol
16
+ name
17
+ icon
18
+ priceUsd
19
+ decimals
20
+ }
21
+ totalAssets {
22
+ raw
23
+ formatted
24
+ usd
25
+ }
26
+ apy(timeframe: seven_days) {
27
+ base
28
+ total
29
+ rewards {
30
+ asset {
31
+ symbol
32
+ icon
33
+ }
34
+ apr
35
+ }
36
+ fee
37
+ }
38
+ ... on MorphoVault {
39
+ totalLiquidity {
40
+ formatted
41
+ usd
42
+ }
43
+ v1PerformanceFee: performanceFee
44
+ feeRecipientAddress
45
+ ownerAddress
46
+ curatorAddress
47
+ guardianAddress
48
+ metadata {
49
+ description
50
+ image
51
+ forumLink
52
+ curator {
53
+ name
54
+ image
55
+ url
56
+ }
57
+ curators {
58
+ name
59
+ image
60
+ url
61
+ }
62
+ }
63
+ marketAllocations {
64
+ market {
65
+ marketId
66
+ name
67
+ loanAsset {
68
+ symbol
69
+ icon
70
+ }
71
+ collateralAsset {
72
+ symbol
73
+ icon
74
+ }
75
+ isIdle
76
+ }
77
+ enabled
78
+ supplyCap {
79
+ formatted
80
+ usd
81
+ }
82
+ vaultSupplyShare
83
+ marketSupplyShare
84
+ position {
85
+ supplyAmount {
86
+ formatted
87
+ usd
88
+ }
89
+ }
90
+ }
91
+ riskAssessment {
92
+ steakhouse {
93
+ score
94
+ rating
95
+ }
96
+ }
97
+ }
98
+ ... on MorphoVaultV2 {
99
+ curatorAddress
100
+ ownerAddress
101
+ metadata {
102
+ description
103
+ image
104
+ forumLink
105
+ curator {
106
+ name
107
+ image
108
+ url
109
+ }
110
+ curators {
111
+ name
112
+ image
113
+ url
114
+ }
115
+ }
116
+ liquidityAssets {
117
+ formatted
118
+ usd
119
+ }
120
+ idleAssets {
121
+ formatted
122
+ usd
123
+ }
124
+ v2PerformanceFee: performanceFee {
125
+ formatted
126
+ }
127
+ managementFee {
128
+ formatted
129
+ }
130
+ adapters {
131
+ ... on MarketV1Adapter {
132
+ adapterAddress
133
+ name
134
+ }
135
+ }
136
+ riskAssessment {
137
+ steakhouse {
138
+ score
139
+ rating
140
+ }
141
+ }
142
+ }
143
+ }
144
+ `);
145
+ export {
146
+ vaultDetailFragment
147
+ };
148
+ //# sourceMappingURL=vaultDetail.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/queries/fragments/vaultDetail.ts"],"sourcesContent":["import { type FragmentOf, graphql } from \"@whisk/graphql\"\n\n/**\n * Full fragment for vault detail view.\n * Uses inline fragments to handle both MorphoVault (v1) and MorphoVaultV2.\n */\nexport const vaultDetailFragment = graphql(`\n fragment VaultDetailFragment on Erc4626Vault {\n chain {\n id\n name\n icon\n }\n vaultAddress\n name\n symbol\n decimals\n asset {\n address\n symbol\n name\n icon\n priceUsd\n decimals\n }\n totalAssets {\n raw\n formatted\n usd\n }\n apy(timeframe: seven_days) {\n base\n total\n rewards {\n asset {\n symbol\n icon\n }\n apr\n }\n fee\n }\n ... on MorphoVault {\n totalLiquidity {\n formatted\n usd\n }\n v1PerformanceFee: performanceFee\n feeRecipientAddress\n ownerAddress\n curatorAddress\n guardianAddress\n metadata {\n description\n image\n forumLink\n curator {\n name\n image\n url\n }\n curators {\n name\n image\n url\n }\n }\n marketAllocations {\n market {\n marketId\n name\n loanAsset {\n symbol\n icon\n }\n collateralAsset {\n symbol\n icon\n }\n isIdle\n }\n enabled\n supplyCap {\n formatted\n usd\n }\n vaultSupplyShare\n marketSupplyShare\n position {\n supplyAmount {\n formatted\n usd\n }\n }\n }\n riskAssessment {\n steakhouse {\n score\n rating\n }\n }\n }\n ... on MorphoVaultV2 {\n curatorAddress\n ownerAddress\n metadata {\n description\n image\n forumLink\n curator {\n name\n image\n url\n }\n curators {\n name\n image\n url\n }\n }\n liquidityAssets {\n formatted\n usd\n }\n idleAssets {\n formatted\n usd\n }\n v2PerformanceFee: performanceFee {\n formatted\n }\n managementFee {\n formatted\n }\n adapters {\n ... on MarketV1Adapter {\n adapterAddress\n name\n }\n }\n riskAssessment {\n steakhouse {\n score\n rating\n }\n }\n }\n }\n`)\n\nexport type VaultDetail = FragmentOf<typeof vaultDetailFragment>\n"],"mappings":"AAAA,SAA0B,eAAe;AAMlC,MAAM,sBAAsB,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CA8I1C;","names":[]}