@superblocksteam/util 2.0.158 → 2.0.159-next.0

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 (86) hide show
  1. package/package.json +1 -1
  2. package/.turbo/turbo-build.log +0 -4
  3. package/dist/api-files/api.d.mts +0 -8
  4. package/dist/api-files/api.d.mts.map +0 -1
  5. package/dist/api-files/api.mjs +0 -262
  6. package/dist/api-files/api.mjs.map +0 -1
  7. package/dist/api-files/constants.d.ts +0 -6
  8. package/dist/api-files/constants.d.ts.map +0 -1
  9. package/dist/api-files/constants.js +0 -9
  10. package/dist/api-files/constants.js.map +0 -1
  11. package/dist/api-files/index.d.ts +0 -8
  12. package/dist/api-files/index.d.ts.map +0 -1
  13. package/dist/api-files/index.js +0 -18
  14. package/dist/api-files/index.js.map +0 -1
  15. package/dist/api-files/types.d.ts +0 -115
  16. package/dist/api-files/types.d.ts.map +0 -1
  17. package/dist/api-files/types.js +0 -14
  18. package/dist/api-files/types.js.map +0 -1
  19. package/dist/component-configs.d.ts +0 -6
  20. package/dist/component-configs.d.ts.map +0 -1
  21. package/dist/component-configs.js +0 -178
  22. package/dist/component-configs.js.map +0 -1
  23. package/dist/constants.d.ts +0 -18
  24. package/dist/constants.d.ts.map +0 -1
  25. package/dist/constants.js +0 -37
  26. package/dist/constants.js.map +0 -1
  27. package/dist/data-types.d.ts +0 -8
  28. package/dist/data-types.d.ts.map +0 -1
  29. package/dist/data-types.js +0 -22
  30. package/dist/data-types.js.map +0 -1
  31. package/dist/events.d.ts +0 -13
  32. package/dist/events.d.ts.map +0 -1
  33. package/dist/events.js +0 -17
  34. package/dist/events.js.map +0 -1
  35. package/dist/file-uploader.d.ts +0 -3
  36. package/dist/file-uploader.d.ts.map +0 -1
  37. package/dist/file-uploader.js +0 -41
  38. package/dist/file-uploader.js.map +0 -1
  39. package/dist/file-uploader.test.d.ts +0 -2
  40. package/dist/file-uploader.test.d.ts.map +0 -1
  41. package/dist/file-uploader.test.js +0 -43
  42. package/dist/file-uploader.test.js.map +0 -1
  43. package/dist/generate-component-types.d.ts +0 -3
  44. package/dist/generate-component-types.d.ts.map +0 -1
  45. package/dist/generate-component-types.js +0 -45
  46. package/dist/generate-component-types.js.map +0 -1
  47. package/dist/identifiers.d.ts +0 -9
  48. package/dist/identifiers.d.ts.map +0 -1
  49. package/dist/identifiers.js +0 -68
  50. package/dist/identifiers.js.map +0 -1
  51. package/dist/index.d.ts +0 -17
  52. package/dist/index.d.ts.map +0 -1
  53. package/dist/index.js.map +0 -1
  54. package/dist/localGitRepoState.d.ts +0 -20
  55. package/dist/localGitRepoState.d.ts.map +0 -1
  56. package/dist/localGitRepoState.js +0 -3
  57. package/dist/localGitRepoState.js.map +0 -1
  58. package/dist/login.d.ts +0 -17
  59. package/dist/login.d.ts.map +0 -1
  60. package/dist/login.js +0 -74
  61. package/dist/login.js.map +0 -1
  62. package/dist/mask-unix-signals.d.ts +0 -28
  63. package/dist/mask-unix-signals.d.ts.map +0 -1
  64. package/dist/mask-unix-signals.js +0 -81
  65. package/dist/mask-unix-signals.js.map +0 -1
  66. package/dist/resource-configs.d.ts +0 -73
  67. package/dist/resource-configs.d.ts.map +0 -1
  68. package/dist/resource-configs.js +0 -224
  69. package/dist/resource-configs.js.map +0 -1
  70. package/dist/token-manager.d.ts +0 -22
  71. package/dist/token-manager.d.ts.map +0 -1
  72. package/dist/token-manager.js +0 -3
  73. package/dist/token-manager.js.map +0 -1
  74. package/dist/types.d.ts +0 -105
  75. package/dist/types.d.ts.map +0 -1
  76. package/dist/types.js +0 -3
  77. package/dist/types.js.map +0 -1
  78. package/dist/unreachable.d.ts +0 -2
  79. package/dist/unreachable.d.ts.map +0 -1
  80. package/dist/unreachable.js +0 -7
  81. package/dist/unreachable.js.map +0 -1
  82. package/dist/validation.d.ts +0 -5
  83. package/dist/validation.d.ts.map +0 -1
  84. package/dist/validation.js +0 -152
  85. package/dist/validation.js.map +0 -1
  86. package/tsconfig.tsbuildinfo +0 -1
package/dist/types.d.ts DELETED
@@ -1,105 +0,0 @@
1
- import type { UUID } from "node:crypto";
2
- import type { DataType } from "./data-types.js";
3
- interface PropertiesPanelDisplay<T extends DataType> {
4
- /**
5
- * Determines what form item type is shown in the Superblocks properties panel.
6
- *
7
- * Only booleans are allowed to use the "switch" control
8
- */
9
- controlType: T extends "boolean" ? "text" | "js-expr" | "switch" : "text" | "js-expr";
10
- /**
11
- * Determines form item label in the Superblocks properties panel.
12
- */
13
- label: string;
14
- /**
15
- * Placeholder text appears as gray text in the properties panel. This only applies
16
- * to text-like inputs.
17
- */
18
- placeholder?: string;
19
- /**
20
- * This shows up in the popover as a user types into the properties panel.
21
- * This is a documentation field that helps users understand what type of data is accepted
22
- * by this property. You should give a specific example, not a generic type
23
- *
24
- * @example {
25
- * label: "My Label",
26
- * value: "myValue"
27
- * }
28
- */
29
- exampleData?: string;
30
- /**
31
- * This shows up in the popover as a user types into the properties panel.
32
- * This is a documentation field that helps users understand what type of data is accepted
33
- * by this property. Typescript notation is recommended.
34
- *
35
- * @example "Array<{ label: string; value: string; }>"
36
- */
37
- expectedType?: string;
38
- /**
39
- * The default value should match the dataType of the property.
40
- */
41
- defaultValue?: T;
42
- /**
43
- * The default value to use when adding a property.
44
- */
45
- defaultOnAdd?: T;
46
- }
47
- interface PropertyForData<T extends DataType> {
48
- path: string;
49
- dataType: T;
50
- /**
51
- * The presence of this object determines whether or not this property
52
- * shows up in the Superblocks properties panel.
53
- **/
54
- propertiesPanelDisplay?: PropertiesPanelDisplay<T>;
55
- /**
56
- * A description of this property. This is used in the Superblocks properties panel
57
- * as well as in the custom component's autocomplete.
58
- **/
59
- description?: string;
60
- /**
61
- * By default, all your properties are readable from anywhere in Superblocks using dot notation
62
- * (e.g. `myComponent.myProperty`). If you want to hide a property from the outside world,
63
- * set this to true
64
- * @default false
65
- */
66
- isExternallyReadable?: boolean;
67
- /**
68
- * By default, all properties can have be used with Set Component Property and Reset Component to Default.
69
- * @default true
70
- **/
71
- isExternallySettable?: boolean;
72
- }
73
- export type Property = PropertyForData<"string"> | PropertyForData<"number"> | PropertyForData<"boolean"> | PropertyForData<"any">;
74
- export interface ComponentConfig {
75
- id: UUID;
76
- /**
77
- * @example: "myComponent"
78
- */
79
- name: string;
80
- /**
81
- * @example "My Component"
82
- */
83
- displayName: string;
84
- /**
85
- * @example "components/myComponent/component.tsx"
86
- */
87
- componentPath: string;
88
- properties: Array<PropertyForData<"string"> | PropertyForData<"number"> | PropertyForData<"boolean"> | PropertyForData<"any">>;
89
- /**
90
- * @example [{
91
- * label: "On Click",
92
- * path: "onClick",
93
- * }]
94
- */
95
- events: Array<{
96
- label: string;
97
- path: string;
98
- }>;
99
- gridDimensions?: {
100
- initialColumns: number;
101
- initialRows: number;
102
- };
103
- }
104
- export {};
105
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAExC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEhD,UAAU,sBAAsB,CAAC,CAAC,SAAS,QAAQ;IACjD;;;;OAIG;IACH,WAAW,EAAE,CAAC,SAAS,SAAS,GAC5B,MAAM,GAAG,SAAS,GAAG,QAAQ,GAC7B,MAAM,GAAG,SAAS,CAAC;IAEvB;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;;;;;;;OASG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,YAAY,CAAC,EAAE,CAAC,CAAC;IAEjB;;OAEG;IACH,YAAY,CAAC,EAAE,CAAC,CAAC;CAClB;AAED,UAAU,eAAe,CAAC,CAAC,SAAS,QAAQ;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,CAAC,CAAC;IAEZ;;;QAGI;IACJ,sBAAsB,CAAC,EAAE,sBAAsB,CAAC,CAAC,CAAC,CAAC;IAEnD;;;QAGI;IACJ,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;;;OAKG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAE/B;;;QAGI;IACJ,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;AAED,MAAM,MAAM,QAAQ,GAChB,eAAe,CAAC,QAAQ,CAAC,GACzB,eAAe,CAAC,QAAQ,CAAC,GACzB,eAAe,CAAC,SAAS,CAAC,GAC1B,eAAe,CAAC,KAAK,CAAC,CAAC;AAE3B,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,IAAI,CAAC;IAET;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC;IAEtB,UAAU,EAAE,KAAK,CAIb,eAAe,CAAC,QAAQ,CAAC,GACzB,eAAe,CAAC,QAAQ,CAAC,GACzB,eAAe,CAAC,SAAS,CAAC,GAC1B,eAAe,CAAC,KAAK,CAAC,CACzB,CAAC;IAEF;;;;;OAKG;IACH,MAAM,EAAE,KAAK,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;KACd,CAAC,CAAC;IAEH,cAAc,CAAC,EAAE;QACf,cAAc,EAAE,MAAM,CAAC;QACvB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;CACH"}
package/dist/types.js DELETED
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=types.js.map
package/dist/types.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
@@ -1,2 +0,0 @@
1
- export declare function unreachable(value: never, errMsg?: string): never;
2
- //# sourceMappingURL=unreachable.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"unreachable.d.ts","sourceRoot":"","sources":["../src/unreachable.ts"],"names":[],"mappings":"AAAA,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,CAIhE"}
@@ -1,7 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.unreachable = unreachable;
4
- function unreachable(value, errMsg) {
5
- throw new TypeError(errMsg ?? "Encountered impossible value: " + JSON.stringify(value));
6
- }
7
- //# sourceMappingURL=unreachable.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"unreachable.js","sourceRoot":"","sources":["../src/unreachable.ts"],"names":[],"mappings":";;AAAA,kCAIC;AAJD,SAAgB,WAAW,CAAC,KAAY,EAAE,MAAe;IACvD,MAAM,IAAI,SAAS,CACjB,MAAM,IAAI,gCAAgC,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CACnE,CAAC;AACJ,CAAC"}
@@ -1,5 +0,0 @@
1
- export declare function validateCustomComponents(data: any): {
2
- valid: boolean;
3
- message?: string;
4
- };
5
- //# sourceMappingURL=validation.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"AA4IA,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,GAAG,GAAG;IACnD,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAWA"}
@@ -1,152 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.validateCustomComponents = validateCustomComponents;
7
- const ajv_1 = __importDefault(require("ajv"));
8
- const better_ajv_errors_1 = __importDefault(require("better-ajv-errors"));
9
- const identifiers_js_1 = require("./identifiers.js");
10
- const ajv = new ajv_1.default();
11
- ajv.addKeyword({
12
- keyword: "stringFormat",
13
- compile: (schema) => {
14
- let validateFunc;
15
- // schema is the value assigned to stringFormat in the schema
16
- if (schema === "identifier") {
17
- validateFunc = (data) => {
18
- if (typeof data != "string")
19
- return false;
20
- if (!(0, identifiers_js_1.isValidIdentifier)(data)) {
21
- validateFunc.errors = [
22
- {
23
- keyword: "format",
24
- message: "must be a valid identifier starting with a-z or underscore and containing only a-z, 0-9, and underscores",
25
- },
26
- ];
27
- return false;
28
- }
29
- if ((0, identifiers_js_1.isReservedPropertyName)(data)) {
30
- validateFunc.errors = [
31
- {
32
- keyword: "format",
33
- message: "must not match a reserved property path",
34
- },
35
- ];
36
- return false;
37
- }
38
- return true;
39
- };
40
- }
41
- else {
42
- throw new Error(`Unknown stringFormat: ${schema}`);
43
- }
44
- return validateFunc;
45
- },
46
- errors: true,
47
- });
48
- const componentSchema = {
49
- type: "object",
50
- properties: {
51
- id: { type: "string" },
52
- name: { type: "string" },
53
- displayName: { type: "string" },
54
- componentPath: { type: "string" },
55
- properties: {
56
- type: "array",
57
- items: {
58
- $ref: "#/definitions/Property",
59
- },
60
- },
61
- events: {
62
- type: "array",
63
- items: {
64
- $ref: "#/definitions/EventHandler",
65
- },
66
- },
67
- gridDimensions: {
68
- type: "object",
69
- properties: {
70
- initialColumns: { type: "number" },
71
- initialRows: { type: "number" },
72
- },
73
- additionalProperties: false,
74
- required: ["initialColumns", "initialRows"],
75
- },
76
- },
77
- required: [
78
- "id",
79
- "name",
80
- "displayName",
81
- "componentPath",
82
- "properties",
83
- "events",
84
- ],
85
- additionalProperties: false,
86
- definitions: {
87
- Property: {
88
- properties: {
89
- path: { $ref: "#/definitions/Identifier" },
90
- dataType: { enum: ["number", "boolean", "string", "any"] },
91
- propertiesPanelDisplay: {
92
- type: "object",
93
- properties: {
94
- label: { type: "string" },
95
- controlType: { enum: ["text", "js-expr", "switch"] },
96
- defaultValue: {
97
- oneOf: [
98
- {
99
- type: "string",
100
- },
101
- {
102
- type: "boolean",
103
- },
104
- {
105
- type: "number",
106
- },
107
- ],
108
- },
109
- placeholder: { type: "string" },
110
- exampleData: { type: "string" },
111
- expectedType: { type: "string" },
112
- },
113
- required: ["controlType", "label"],
114
- additionalProperties: false,
115
- },
116
- description: { type: "string" },
117
- isExternallySettable: { type: "boolean" },
118
- isExternallyReadable: { type: "boolean" },
119
- },
120
- type: "object",
121
- additionalProperties: false,
122
- required: ["path", "dataType"],
123
- },
124
- EventHandler: {
125
- properties: {
126
- label: { type: "string" },
127
- path: { $ref: "#/definitions/Identifier" },
128
- },
129
- type: "object",
130
- additionalProperties: false,
131
- required: ["label", "path"],
132
- },
133
- Identifier: {
134
- type: "string",
135
- stringFormat: "identifier",
136
- },
137
- },
138
- };
139
- const validate = ajv.compile(componentSchema);
140
- function validateCustomComponents(data) {
141
- const valid = validate(data);
142
- if (!valid) {
143
- return {
144
- valid: false,
145
- message: (0, better_ajv_errors_1.default)(componentSchema, data, validate.errors, {
146
- indent: 2,
147
- }),
148
- };
149
- }
150
- return { valid: true };
151
- }
152
- //# sourceMappingURL=validation.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"validation.js","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":";;;;;AA4IA,4DAcC;AA1JD,8CAAsB;AAGtB,0EAAgD;AAEhD,qDAA6E;AAE7E,MAAM,GAAG,GAAG,IAAI,aAAG,EAAE,CAAC;AAEtB,GAAG,CAAC,UAAU,CAAC;IACb,OAAO,EAAE,cAAc;IACvB,OAAO,EAAE,CAAC,MAAW,EAAE,EAAE;QACvB,IAAI,YAAkC,CAAC;QACvC,6DAA6D;QAC7D,IAAI,MAAM,KAAK,YAAY,EAAE,CAAC;YAC5B,YAAY,GAAG,CAAC,IAAS,EAAE,EAAE;gBAC3B,IAAI,OAAO,IAAI,IAAI,QAAQ;oBAAE,OAAO,KAAK,CAAC;gBAC1C,IAAI,CAAC,IAAA,kCAAiB,EAAC,IAAI,CAAC,EAAE,CAAC;oBAC7B,YAAY,CAAC,MAAM,GAAG;wBACpB;4BACE,OAAO,EAAE,QAAQ;4BACjB,OAAO,EACL,0GAA0G;yBAC7G;qBACF,CAAC;oBACF,OAAO,KAAK,CAAC;gBACf,CAAC;gBACD,IAAI,IAAA,uCAAsB,EAAC,IAAI,CAAC,EAAE,CAAC;oBACjC,YAAY,CAAC,MAAM,GAAG;wBACpB;4BACE,OAAO,EAAE,QAAQ;4BACjB,OAAO,EAAE,yCAAyC;yBACnD;qBACF,CAAC;oBACF,OAAO,KAAK,CAAC;gBACf,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,yBAAyB,MAAM,EAAE,CAAC,CAAC;QACrD,CAAC;QACD,OAAO,YAAY,CAAC;IACtB,CAAC;IACD,MAAM,EAAE,IAAI;CACb,CAAC,CAAC;AAEH,MAAM,eAAe,GAAW;IAC9B,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACV,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QACtB,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QACxB,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC/B,aAAa,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QACjC,UAAU,EAAE;YACV,IAAI,EAAE,OAAO;YACb,KAAK,EAAE;gBACL,IAAI,EAAE,wBAAwB;aAC/B;SACF;QACD,MAAM,EAAE;YACN,IAAI,EAAE,OAAO;YACb,KAAK,EAAE;gBACL,IAAI,EAAE,4BAA4B;aACnC;SACF;QACD,cAAc,EAAE;YACd,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,cAAc,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBAClC,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;aAChC;YACD,oBAAoB,EAAE,KAAK;YAC3B,QAAQ,EAAE,CAAC,gBAAgB,EAAE,aAAa,CAAC;SAC5C;KACF;IACD,QAAQ,EAAE;QACR,IAAI;QACJ,MAAM;QACN,aAAa;QACb,eAAe;QACf,YAAY;QACZ,QAAQ;KACT;IACD,oBAAoB,EAAE,KAAK;IAC3B,WAAW,EAAE;QACX,QAAQ,EAAE;YACR,UAAU,EAAE;gBACV,IAAI,EAAE,EAAE,IAAI,EAAE,0BAA0B,EAAE;gBAC1C,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE;gBAC1D,sBAAsB,EAAE;oBACtB,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE;wBACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;wBACzB,WAAW,EAAE,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE;wBACpD,YAAY,EAAE;4BACZ,KAAK,EAAE;gCACL;oCACE,IAAI,EAAE,QAAQ;iCACf;gCACD;oCACE,IAAI,EAAE,SAAS;iCAChB;gCACD;oCACE,IAAI,EAAE,QAAQ;iCACf;6BACF;yBACF;wBACD,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;wBAC/B,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;wBAC/B,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;qBACjC;oBACD,QAAQ,EAAE,CAAC,aAAa,EAAE,OAAO,CAAC;oBAClC,oBAAoB,EAAE,KAAK;iBAC5B;gBACD,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBAC/B,oBAAoB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;gBACzC,oBAAoB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;aAC1C;YACD,IAAI,EAAE,QAAQ;YACd,oBAAoB,EAAE,KAAK;YAC3B,QAAQ,EAAE,CAAC,MAAM,EAAE,UAAU,CAAC;SAC/B;QACD,YAAY,EAAE;YACZ,UAAU,EAAE;gBACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACzB,IAAI,EAAE,EAAE,IAAI,EAAE,0BAA0B,EAAE;aAC3C;YACD,IAAI,EAAE,QAAQ;YACd,oBAAoB,EAAE,KAAK;YAC3B,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;SAC5B;QACD,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,YAAY,EAAE,YAAY;SAC3B;KACF;CACF,CAAC;AAEF,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;AAE9C,SAAgB,wBAAwB,CAAC,IAAS;IAIhD,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC7B,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,OAAO,EAAE,IAAA,2BAAe,EAAC,eAAe,EAAE,IAAI,EAAE,QAAQ,CAAC,MAAa,EAAE;gBACtE,MAAM,EAAE,CAAC;aACV,CAAC;SACH,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AACzB,CAAC"}