@stabilitydao/host 0.2.1 → 0.2.2

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 (62) hide show
  1. package/out/activity/builder.d.ts +135 -0
  2. package/out/activity/builder.d.ts.map +1 -0
  3. package/out/activity/builder.js +17 -0
  4. package/out/activity/builder.js.map +1 -0
  5. package/out/activity/index.d.ts +18 -0
  6. package/out/activity/index.d.ts.map +1 -0
  7. package/out/activity/index.js +31 -0
  8. package/out/activity/index.js.map +1 -0
  9. package/out/agents.d.ts +21 -0
  10. package/out/agents.d.ts.map +1 -0
  11. package/out/agents.js +16 -0
  12. package/out/agents.js.map +1 -0
  13. package/out/api.d.ts +47 -0
  14. package/out/api.d.ts.map +1 -0
  15. package/out/api.js +3 -0
  16. package/out/api.js.map +1 -0
  17. package/out/assets.d.ts +13 -0
  18. package/out/assets.d.ts.map +1 -0
  19. package/out/assets.js +1515 -0
  20. package/out/assets.js.map +1 -0
  21. package/out/chains.d.ts +105 -0
  22. package/out/chains.d.ts.map +1 -0
  23. package/out/chains.js +591 -0
  24. package/out/chains.js.map +1 -0
  25. package/out/host.d.ts +407 -0
  26. package/out/host.d.ts.map +1 -0
  27. package/out/host.js +765 -0
  28. package/out/host.js.map +1 -0
  29. package/out/index.d.ts +10 -0
  30. package/out/index.d.ts.map +1 -0
  31. package/out/index.js.map +1 -0
  32. package/out/storage/daoMetaData.d.ts +5 -0
  33. package/out/storage/daoMetaData.d.ts.map +1 -0
  34. package/out/storage/daoMetaData.js +311 -0
  35. package/out/storage/daoMetaData.js.map +1 -0
  36. package/out/storage/daos.d.ts +3 -0
  37. package/out/storage/daos.d.ts.map +1 -0
  38. package/out/storage/daos.js +303 -0
  39. package/out/storage/daos.js.map +1 -0
  40. package/package.json +7 -1
  41. package/.github/workflows/npm.yml +0 -19
  42. package/.github/workflows/prettier.yml +0 -25
  43. package/.github/workflows/test.yml +0 -29
  44. package/.prettierignore +0 -4
  45. package/.prettierrc +0 -1
  46. package/jest.config.js +0 -9
  47. package/logo.png +0 -0
  48. package/src/activity/builder.ts +0 -141
  49. package/src/activity/index.ts +0 -34
  50. package/src/agents.ts +0 -31
  51. package/src/api.ts +0 -51
  52. package/src/assets.ts +0 -1579
  53. package/src/chains.ts +0 -604
  54. package/src/host.ts +0 -1212
  55. package/src/index.ts +0 -36
  56. package/src/storage/daoMetaData.ts +0 -312
  57. package/src/storage/daos.ts +0 -306
  58. package/tests/assets.test.ts +0 -61
  59. package/tests/chains.test.ts +0 -22
  60. package/tests/host.test.ts +0 -811
  61. package/tsconfig.json +0 -18
  62. /package/{src → out}/tokenlist.json +0 -0
package/out/host.d.ts ADDED
@@ -0,0 +1,407 @@
1
+ /**
2
+ Host prototype.
3
+ */
4
+ import { ChainName } from "./chains";
5
+ import { IAgent } from "./agents";
6
+ import { IBuilderActivity } from "./activity/builder";
7
+ import { Activity } from "./activity";
8
+ import { IDAOAPIData } from "./api";
9
+ export declare const HOST_DESCRIPTION = "A Cozy Home for DAOs";
10
+ /**
11
+ Represents a DAO running on Host.
12
+
13
+ todo: Optimize for cross-chain
14
+ host-contracts: `IHost.DAOData`
15
+
16
+ @version 0.2.0
17
+ @alpha
18
+ @interface
19
+ */
20
+ export interface IDAOData {
21
+ /** SEGMENT 1: ON-CHAIN on all chains where Host deployed */
22
+ /**
23
+ * Tradeable interchain ERC-20 token symbol.
24
+ * Lowercased used as slug.
25
+ * While token symbol is SYM then additional DAO tokens symbols are:
26
+ * seedSYM, saleSYM, xSYM, SYM_DAO
27
+ *
28
+ * host-contracts: HostLib.OsStorage.usedSymbols
29
+ */
30
+ symbol: string;
31
+ /** SEGMENT 2: ON-CHAIN on chains where DAO bridged */
32
+ /** Unique ID of DAO */
33
+ uid?: string;
34
+ /** Name of the DAO, used in token names. Without DAO word. */
35
+ name: string;
36
+ /**
37
+ DAO lifecycle phase.
38
+ Changes permissionless when next phase start timestamp reached.
39
+ */
40
+ phase: LifecyclePhase;
41
+ /**
42
+ Deployed smart-contracts.
43
+ host-contracts: deployments of current instance chain only.
44
+ */
45
+ deployments: IDAODeployments;
46
+ /** Settings of DAO for current chain. This is the only place to save settings of DAO for chains. */
47
+ chainSettings: IDAOChainSettings;
48
+ /** IDs of Units running on current chain */
49
+ unitIds?: string[];
50
+ /** On-chain DAO parameters for tokenomics and revenue sharing */
51
+ params: IDAOParameters;
52
+ /** SEGMENT 3: ON-CHAIN on initial chain of DAO */
53
+ /** Where initial deployment became */
54
+ initialChain: ChainName;
55
+ /** Community socials. Update by `Host.updateSocials` */
56
+ socials: string[];
57
+ /** Activities of the organization. */
58
+ activity: Activity[];
59
+ /** Images of tokens. Absolute or relative from stabilitydao/.github repo /os/ folder. */
60
+ images: IDAOImages;
61
+ /** Revenue generating units owned by the organization. */
62
+ units: IUnit[];
63
+ /** Fundraising */
64
+ funding: IFunding[];
65
+ /** Vesting allocations */
66
+ vesting: IVesting[];
67
+ /** Settings of DAO Governance */
68
+ governanceSettings: IGovernanceSettings;
69
+ /** Deployer of a DAO have power only at DRAFT phase. */
70
+ deployer: string;
71
+ /** DAO custom metadata stored off-chain. */
72
+ daoMetaDataLocation?: string;
73
+ /** SEGMENT 4: OFF-CHAIN emitted data */
74
+ unitsMetaData: IUnitMetaData[];
75
+ /** SEGMENT 5: OFF-CHAIN custom data managed by DAO */
76
+ /** Storage for BUILDER activity and Agents data. */
77
+ daoMetaData?: IDAOMetaData;
78
+ /** SEGMENT 6: API data of DAO */
79
+ /** Hot data updates each minute */
80
+ api?: IDAOAPIData;
81
+ }
82
+ export interface IDAOMetaData {
83
+ /** DAOs engaging BUILDER activity settings */
84
+ builderActivity?: IBuilderActivity;
85
+ /** Operating agents managed by the organization. */
86
+ agents?: IAgent[];
87
+ }
88
+ /** Images of tokens. Absolute or relative from stabilitydao/.github repo /os/ folder. */
89
+ export interface IDAOImages {
90
+ seedToken?: string;
91
+ tgeToken?: string;
92
+ token?: string;
93
+ xToken?: string;
94
+ daoToken?: string;
95
+ }
96
+ /**
97
+ Lifecycle phase represents DAO tokenomics stage.
98
+ */
99
+ export declare enum LifecyclePhase {
100
+ /** Created */
101
+ DRAFT = "DRAFT",
102
+ /**
103
+ Initial funding. DAO project passed requirements.
104
+ Since SEED started a DAO become real DAO:
105
+ - noncustodial
106
+ - tokenized share holdings
107
+ - collective management via voting
108
+ */
109
+ SEED = "SEED",
110
+ /** Seed was not success. Raised funds sent back to seeders. */
111
+ SEED_FAILED = "SEED_FAILED",
112
+ /** Using SEED funds to launch MVP / Unit generating */
113
+ DEVELOPMENT = "DEVELOPMENT",
114
+ /** TGE is funding event for token liquidity and DAO developments (optionally) */
115
+ TGE = "TGE",
116
+ /** Delay before any vesting allocation started */
117
+ LIVE_CLIFF = "LIVE_CLIFF",
118
+ /** Vesting period active */
119
+ LIVE_VESTING = "LIVE_VESTING",
120
+ /** Vesting ended - token fully distributed */
121
+ LIVE = "LIVE"
122
+ }
123
+ /**
124
+ Parameters of VE-tokenomics and revenue sharing.
125
+ @interface
126
+ */
127
+ export interface IDAOParameters {
128
+ /** Vested Escrow period, days. */
129
+ vePeriod: number;
130
+ /** Instant exit fee, percent */
131
+ pvpFee: number;
132
+ /** Minimal power (min stake amount) to be a holder of DAO */
133
+ minPower?: number;
134
+ /** Share of total DAO revenue going to accidents compensations, percent */
135
+ recoveryShare?: number;
136
+ }
137
+ export interface IDAOChainSettings {
138
+ bbRate: number;
139
+ }
140
+ export interface IGovernanceSettings {
141
+ /** Minimal total voting power (self and delegated) need to create a proposal */
142
+ proposalThreshold?: number;
143
+ /** Bribe share for Tokenomics Transactions (vested funds spending), percent */
144
+ ttBribe?: number;
145
+ }
146
+ export interface IFunding {
147
+ type: FundingType;
148
+ start: number;
149
+ end: number;
150
+ minRaise: number;
151
+ maxRaise: number;
152
+ raised: number;
153
+ claim?: number;
154
+ }
155
+ export declare enum FundingType {
156
+ SEED = "SEED",
157
+ TGE = "TGE"
158
+ }
159
+ /**
160
+ Vesting allocation data
161
+ @interface
162
+ */
163
+ export interface IVesting {
164
+ /** Short name of vesting allocation */
165
+ name: string;
166
+ /** How must be spent */
167
+ description?: string;
168
+ /** Vesting supply. 10 == 10e18 TOKEN */
169
+ allocation: number;
170
+ /** Start timestamp */
171
+ start: number;
172
+ /** End timestamp */
173
+ end: number;
174
+ }
175
+ /**
176
+ Deployments of running DAO on blockchains.
177
+
178
+ @interface
179
+ */
180
+ export interface IDAODeployments {
181
+ [chainId: string]: {
182
+ /** Seed round receipt token. */
183
+ seedToken?: `0x${string}`;
184
+ /** TGE pre-sale receipt token. */
185
+ tgeToken?: `0x${string}`;
186
+ /** Main tradable DAO token. */
187
+ token?: `0x${string}`;
188
+ /** VE-tokenomics entry token. */
189
+ xToken?: `0x${string}`;
190
+ /** Staking contract. */
191
+ staking?: `0x${string}`;
192
+ /** Governance token. */
193
+ daoToken?: `0x${string}`;
194
+ /** Revenue utilization and distributing contract. */
195
+ revenueRouter?: `0x${string}`;
196
+ /** Accident recovery system contract. */
197
+ recovery?: `0x${string}`;
198
+ /** Set of vesting contracts. */
199
+ vesting?: {
200
+ [name: string]: `0x${string}`;
201
+ };
202
+ /** Bridge for Token */
203
+ tokenBridge?: `0x${string}`;
204
+ /** Bridge for XToken */
205
+ xTokenBridge?: `0x${string}`;
206
+ /** Bridge for Governance token */
207
+ daoTokenBridge?: `0x${string}`;
208
+ };
209
+ }
210
+ /**
211
+ Revenue generating unit owned by a DAO.
212
+ @interface
213
+ */
214
+ export interface IUnit {
215
+ /** Unique unit string id. For DeFi protocol its defiOrg:protocolKey. */
216
+ unitId: string;
217
+ /** Blockchains where Unit deployed. Filled only for initial DAO chain Host instance. */
218
+ chainIds?: string[];
219
+ /** DAO UID of Unit Developer (Pool tasks solver) */
220
+ developerUid?: string;
221
+ }
222
+ /** Unit data that emitted, indexed and saved, translated by Host API later. */
223
+ export interface IUnitMetaData {
224
+ /** Short name of the unit */
225
+ name: string;
226
+ /** Status of unit changes appear when unit starting to work and starting earning revenue */
227
+ status: UnitStatus;
228
+ /** Supported type of the Unit */
229
+ type: UnitType;
230
+ /** The share of a Unit's profit received by the DAO to which it belongs. 100 - 100%. */
231
+ revenueShare: number;
232
+ /** A unique emoji for the shortest possible representation of a Unit. */
233
+ emoji?: string;
234
+ /** Frontend endpoints of Unit */
235
+ ui?: IUnitUILink[];
236
+ /** Links to API of the Unit */
237
+ api?: string[];
238
+ }
239
+ /** Supported unit types */
240
+ export declare enum UnitType {
241
+ /** VE-token early exit fees */
242
+ PVP = "PVP",
243
+ /** Decentralized finance protocol */
244
+ DEFI_PROTOCOL = "DEFI_PROTOCOL",
245
+ /** Maximum Extractable Value opportunities searcher and submitter. */
246
+ MEV_SEARCHER = "MEV_SEARCHER"
247
+ }
248
+ /** Unit status can be changed automatically on DAO lifecycle phase changes or manually by DAO holders */
249
+ export declare enum UnitStatus {
250
+ RESEARCH = "RESEARCH",
251
+ BUILDING = "BUILDING",
252
+ LIVE = "LIVE"
253
+ }
254
+ /** Supported categories of running units. */
255
+ export declare enum UnitComponentCategory {
256
+ CHAIN_SUPPORT = "CHAIN_SUPPORT",
257
+ ENGINE_SUPPORT = "ENGINE_SUPPORT",
258
+ DEFI_STRATEGY = "DEFI_STRATEGY",
259
+ MEV_STRATEGY = "MEV_STRATEGY"
260
+ }
261
+ export interface IUnitUILink {
262
+ href: `https://${string}`;
263
+ title: string;
264
+ }
265
+ /**
266
+ Typescript implementation of the Host
267
+ Object of this class is Host instance deployed on a single blockchain.
268
+
269
+ @class
270
+ */
271
+ export declare class Host {
272
+ /** Chain ID where instance deployed */
273
+ chainId: string;
274
+ /** Chain block timestamp */
275
+ blockTimestamp: number;
276
+ /** Local DAOs storage (in form of a mapping) */
277
+ daos: {
278
+ [symbol: string]: IDAOData;
279
+ };
280
+ /** Actual DAO symbols at all blockchains */
281
+ usedSymbols: {
282
+ [name: string]: boolean;
283
+ };
284
+ /** All emitted events */
285
+ events: string[];
286
+ /** Governance proposals. Can be created only at initialChain of DAO. */
287
+ proposals: {
288
+ [proposalId: string]: IProposal;
289
+ };
290
+ /** Current user address */
291
+ from: string;
292
+ settings: IOSSettings;
293
+ constructor(chainId: string);
294
+ static getTokensNaming(name: string, symbol: string): {
295
+ seedName: string;
296
+ seedSymbol: string;
297
+ tgeName: string;
298
+ tgeSymbol: string;
299
+ tokenName: string;
300
+ tokenSymbol: string;
301
+ xName: string;
302
+ xSymbol: string;
303
+ daoName: string;
304
+ daoSymbol: string;
305
+ };
306
+ static isLiveDAO(phase: LifecyclePhase): boolean;
307
+ /**
308
+ * Create new DAO
309
+ * @throws Error
310
+ */
311
+ createDAO(name: string, symbol: string, activity: Activity[], params: IDAOParameters, funding: IFunding[], metaDataLocation?: string): IDAOData;
312
+ /** Add live compatible DAO */
313
+ addLiveDAO(dao: IDAOData): void;
314
+ getDAOMetaData(daoMetaData: {
315
+ [symbolLowerCase: string]: IDAOMetaData;
316
+ }, symbol: string): IDAOMetaData;
317
+ /** Change lifecycle phase of a DAO */
318
+ changePhase(symbol: string): void;
319
+ /** @throws Error */
320
+ updateImages(symbol: string, images: IDAOImages): string | true;
321
+ /** @throws Error */
322
+ updateSocials(symbol: string, socials: string[]): string | true;
323
+ /** @throws Error */
324
+ updateUnits(symbol: string, units: IUnit[], unitsMetaData: IUnitMetaData[]): string | true;
325
+ /** @throws Error */
326
+ updateFunding(symbol: string, funding: IFunding): string | true;
327
+ private _updateSocials;
328
+ private _updateUnits;
329
+ private _updateFunding;
330
+ updateVesting(symbol: string, vestings: IVesting[]): string | true;
331
+ fund(symbol: string, amount: number): void;
332
+ receiveVotingResults(proposalId: string, succeed: boolean): void;
333
+ /** OFF-CHAIN only **/
334
+ /** @throws Error */
335
+ roadmap(symbol: string): IRoadmapItem[];
336
+ /** @throws Error */
337
+ tasks(symbol: string): ITask[];
338
+ /** Strict on-chain validation */
339
+ /** @throws Error */
340
+ validate(dao: IDAOData): void;
341
+ /** @throws Error */
342
+ getDAO(symbol: string): IDAOData;
343
+ getDaoOwner(symbol: string): string;
344
+ getFundingIndex(symbol: string, type: FundingType): number;
345
+ warpDays(days?: number): void;
346
+ /** @throws Error */
347
+ private _onlyOwnerOf;
348
+ private _emit;
349
+ private _validateName;
350
+ private _validateSymbol;
351
+ private _validatePvpFee;
352
+ private _validateFunding;
353
+ private _validateVesting;
354
+ private _sendCrossChainMessage;
355
+ private _proposeAction;
356
+ private _updateImages;
357
+ private _updateVesting;
358
+ }
359
+ export declare enum DAOAction {
360
+ UPDATE_IMAGES = 0,
361
+ UPDATE_SOCIALS = 1,
362
+ UPDATE_NAMING = 2,
363
+ UPDATE_UNITS = 3,
364
+ UPDATE_FUNDING = 4,
365
+ UPDATE_VESTING = 5
366
+ }
367
+ interface IOSSettings {
368
+ priceDao: number;
369
+ priceUnit: number;
370
+ priceOracle: number;
371
+ priceBridge: number;
372
+ minNameLength: number;
373
+ maxNameLength: number;
374
+ minSymbolLength: number;
375
+ maxSymbolLength: number;
376
+ minVePeriod: number;
377
+ maxVePeriod: number;
378
+ minPvPFee: number;
379
+ maxPvPFee: number;
380
+ minFundingDuration: number;
381
+ maxFundingDuration: number;
382
+ }
383
+ declare enum VotingStatus {
384
+ VOTING = 0,
385
+ APPROVED = 1,
386
+ REJECTED = 2
387
+ }
388
+ interface ITask {
389
+ name: string;
390
+ }
391
+ interface IProposal {
392
+ id: string;
393
+ created: number;
394
+ symbol: string;
395
+ action: DAOAction;
396
+ payload: any;
397
+ status: VotingStatus;
398
+ }
399
+ interface IRoadmapItem {
400
+ phase: LifecyclePhase;
401
+ start: number;
402
+ end?: number;
403
+ }
404
+ export declare function getDAOUnit(daos: IDAOData[], symbol: string, unitId: string): IUnit | undefined;
405
+ export declare function getDAOUnitMetaData(daos: IDAOData[], symbol: string, unitId: string): IUnitMetaData | undefined;
406
+ export {};
407
+ //# sourceMappingURL=host.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"host.d.ts","sourceRoot":"","sources":["../src/host.ts"],"names":[],"mappings":"AAAA;;EAEE;AAEF,OAAO,EAAE,SAAS,EAA0B,MAAM,UAAU,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAEpC,eAAO,MAAM,gBAAgB,yBAAyB,CAAC;AAEvD;;;;;;;;;GASG;AACH,MAAM,WAAW,QAAQ;IACvB,4DAA4D;IAE5D;;;;;;;OAOG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf,sDAAsD;IAEtD,uBAAuB;IACvB,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb,8DAA8D;IAC9D,IAAI,EAAE,MAAM,CAAC;IAEb;;;OAGG;IACH,KAAK,EAAE,cAAc,CAAC;IAEtB;;;MAGE;IACF,WAAW,EAAE,eAAe,CAAC;IAE7B,oGAAoG;IACpG,aAAa,EAAE,iBAAiB,CAAC;IAEjC,4CAA4C;IAC5C,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAEnB,iEAAiE;IACjE,MAAM,EAAE,cAAc,CAAC;IAEvB,kDAAkD;IAElD,sCAAsC;IACtC,YAAY,EAAE,SAAS,CAAC;IAExB,wDAAwD;IACxD,OAAO,EAAE,MAAM,EAAE,CAAC;IAElB,sCAAsC;IACtC,QAAQ,EAAE,QAAQ,EAAE,CAAC;IAErB,0FAA0F;IAC1F,MAAM,EAAE,UAAU,CAAC;IAEnB,0DAA0D;IAC1D,KAAK,EAAE,KAAK,EAAE,CAAC;IAEf,kBAAkB;IAClB,OAAO,EAAE,QAAQ,EAAE,CAAC;IAEpB,2BAA2B;IAC3B,OAAO,EAAE,QAAQ,EAAE,CAAC;IAEpB,iCAAiC;IACjC,kBAAkB,EAAE,mBAAmB,CAAC;IAExC,wDAAwD;IACxD,QAAQ,EAAE,MAAM,CAAC;IAEjB,4CAA4C;IAC5C,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAE7B,wCAAwC;IAExC,aAAa,EAAE,aAAa,EAAE,CAAC;IAE/B,sDAAsD;IAEtD,oDAAoD;IACpD,WAAW,CAAC,EAAE,YAAY,CAAC;IAE3B,iCAAiC;IAEjC,mCAAmC;IACnC,GAAG,CAAC,EAAE,WAAW,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,+CAA+C;IAC/C,eAAe,CAAC,EAAE,gBAAgB,CAAC;IAEnC,oDAAoD;IACpD,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,0FAA0F;AAC1F,MAAM,WAAW,UAAU;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,oBAAY,cAAc;IACxB,cAAc;IACd,KAAK,UAAU;IAEf;;;;;;OAMG;IACH,IAAI,SAAS;IAEb,+DAA+D;IAC/D,WAAW,gBAAgB;IAE3B,uDAAuD;IACvD,WAAW,gBAAgB;IAE3B,iFAAiF;IACjF,GAAG,QAAQ;IAEX,kDAAkD;IAClD,UAAU,eAAe;IAEzB,4BAA4B;IAC5B,YAAY,iBAAiB;IAE7B,8CAA8C;IAC9C,IAAI,SAAS;CACd;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,kCAAkC;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,gCAAgC;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,2EAA2E;IAC3E,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,mBAAmB;IAClC,gFAAgF;IAChF,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,+EAA+E;IAC/E,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,WAAW,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,oBAAY,WAAW;IACrB,IAAI,SAAS;IACb,GAAG,QAAQ;CACZ;AAED;;;GAGG;AACH,MAAM,WAAW,QAAQ;IACvB,uCAAuC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,wBAAwB;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wCAAwC;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,sBAAsB;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,oBAAoB;IACpB,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,CAAC,OAAO,EAAE,MAAM,GAAG;QACjB,gCAAgC;QAChC,SAAS,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;QAC1B,kCAAkC;QAClC,QAAQ,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;QACzB,+BAA+B;QAC/B,KAAK,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;QACtB,iCAAiC;QACjC,MAAM,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;QACvB,wBAAwB;QACxB,OAAO,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;QACxB,wBAAwB;QACxB,QAAQ,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;QACzB,qDAAqD;QACrD,aAAa,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;QAC9B,yCAAyC;QACzC,QAAQ,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;QACzB,gCAAgC;QAChC,OAAO,CAAC,EAAE;YAAE,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,MAAM,EAAE,CAAA;SAAE,CAAC;QAC5C,uBAAuB;QACvB,WAAW,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;QAC5B,wBAAwB;QACxB,YAAY,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;QAC7B,kCAAkC;QAClC,cAAc,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;KAChC,CAAC;CACH;AAED;;;EAGE;AACF,MAAM,WAAW,KAAK;IACpB,wEAAwE;IACxE,MAAM,EAAE,MAAM,CAAC;IACf,wFAAwF;IACxF,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,oDAAoD;IACpD,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,+EAA+E;AAC/E,MAAM,WAAW,aAAa;IAC5B,6BAA6B;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,4FAA4F;IAC5F,MAAM,EAAE,UAAU,CAAC;IACnB,iCAAiC;IACjC,IAAI,EAAE,QAAQ,CAAC;IACf,wFAAwF;IACxF,YAAY,EAAE,MAAM,CAAC;IACrB,yEAAyE;IACzE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iCAAiC;IACjC,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC;IACnB,+BAA+B;IAC/B,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;CAGhB;AAED,2BAA2B;AAC3B,oBAAY,QAAQ;IAClB,+BAA+B;IAC/B,GAAG,QAAQ;IACX,qCAAqC;IACrC,aAAa,kBAAkB;IAC/B,sEAAsE;IACtE,YAAY,iBAAiB;CAG9B;AAED,yGAAyG;AACzG,oBAAY,UAAU;IACpB,QAAQ,aAAa;IACrB,QAAQ,aAAa;IACrB,IAAI,SAAS;CACd;AAED,6CAA6C;AAC7C,oBAAY,qBAAqB;IAC/B,aAAa,kBAAkB;IAC/B,cAAc,mBAAmB;IACjC,aAAa,kBAAkB;IAC/B,YAAY,iBAAiB;CAC9B;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,WAAW,MAAM,EAAE,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;CACf;AAID;;;;;GAKG;AACH,qBAAa,IAAI;IACf,uCAAuC;IACvC,OAAO,EAAE,MAAM,CAAC;IAEhB,4BAA4B;IAC5B,cAAc,EAAE,MAAM,CAA2C;IAEjE,gDAAgD;IAChD,IAAI,EAAE;QAAE,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,CAAA;KAAE,CAAM;IAE1C,4CAA4C;IAC5C,WAAW,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAM;IAE9C,yBAAyB;IACzB,MAAM,EAAE,MAAM,EAAE,CAAM;IAEtB,wEAAwE;IACxE,SAAS,EAAE;QAAE,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAA;KAAE,CAAM;IAEpD,2BAA2B;IAC3B,IAAI,EAAE,MAAM,CAAU;IAEtB,QAAQ,EAAE,WAAW,CAenB;gBAEU,OAAO,EAAE,MAAM;IAI3B,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;;;;;;;;;;;;IAenD,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,cAAc;IAQtC;;;OAGG;IACH,SAAS,CACP,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,EAAE,EACpB,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,QAAQ,EAAE,EACnB,gBAAgB,CAAC,EAAE,MAAM,GACxB,QAAQ;IAkCX,8BAA8B;IAC9B,UAAU,CAAC,GAAG,EAAE,QAAQ;IAWxB,cAAc,CACZ,WAAW,EAAE;QAAE,CAAC,eAAe,EAAE,MAAM,GAAG,YAAY,CAAA;KAAE,EACxD,MAAM,EAAE,MAAM,GACb,YAAY;IAQf,sCAAsC;IACtC,WAAW,CAAC,MAAM,EAAE,MAAM;IAkH1B,oBAAoB;IACpB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU;IAiB/C,oBAAoB;IACpB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE;IAiB/C,oBAAoB;IACpB,WAAW,CACT,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,KAAK,EAAE,EACd,aAAa,EAAE,aAAa,EAAE,GAC7B,MAAM,GAAG,IAAI;IAkBhB,oBAAoB;IACpB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,GAAG,MAAM,GAAG,IAAI;IAoB/D,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,YAAY;IAUpB,OAAO,CAAC,cAAc;IAetB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE;IAoBlD,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAqCnC,oBAAoB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO;IAoCzD,sBAAsB;IACtB,oBAAoB;IACpB,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,EAAE;IA8DvC,oBAAoB;IACpB,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,EAAE;IA4F9B,iCAAiC;IACjC,oBAAoB;IACpB,QAAQ,CAAC,GAAG,EAAE,QAAQ;IAoBtB,oBAAoB;IACpB,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ;IAOhC,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAqBnC,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW;IAUjD,QAAQ,CAAC,IAAI,GAAE,MAAU;IAIzB,oBAAoB;IACpB,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,KAAK;IAIb,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,eAAe;IAYvB,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,gBAAgB;IA2BxB,OAAO,CAAC,gBAAgB;IAexB,OAAO,CAAC,sBAAsB;IAI9B,OAAO,CAAC,cAAc;IA0BtB,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,cAAc;CAIvB;AAED,oBAAY,SAAS;IACnB,aAAa,IAAI;IACjB,cAAc,IAAA;IACd,aAAa,IAAA;IACb,YAAY,IAAA;IACZ,cAAc,IAAA;IACd,cAAc,IAAA;CACf;AAED,UAAU,WAAW;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED,aAAK,YAAY;IACf,MAAM,IAAI;IACV,QAAQ,IAAA;IACR,QAAQ,IAAA;CACT;AAQD,UAAU,KAAK;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,UAAU,SAAS;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,SAAS,CAAC;IAClB,OAAO,EAAE,GAAG,CAAC;IACb,MAAM,EAAE,YAAY,CAAC;CACtB;AAED,UAAU,YAAY;IACpB,KAAK,EAAE,cAAc,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,wBAAgB,UAAU,CACxB,IAAI,EAAE,QAAQ,EAAE,EAChB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,GACb,KAAK,GAAG,SAAS,CAUnB;AAED,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,QAAQ,EAAE,EAChB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,GACb,aAAa,GAAG,SAAS,CAW3B"}