@arizeai/openinference-instrumentation-openai 0.0.2 → 0.0.4
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/README.md +2 -2
- package/dist/esm/instrumentation.d.ts.map +1 -1
- package/dist/esm/instrumentation.js +107 -10
- package/dist/esm/instrumentation.js.map +1 -1
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/dist/esm/version.d.ts +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/esnext/instrumentation.d.ts.map +1 -1
- package/dist/esnext/instrumentation.js +102 -10
- package/dist/esnext/instrumentation.js.map +1 -1
- package/dist/esnext/tsconfig.esnext.tsbuildinfo +1 -1
- package/dist/esnext/version.d.ts +1 -1
- package/dist/esnext/version.js +1 -1
- package/dist/src/instrumentation.d.ts.map +1 -1
- package/dist/src/instrumentation.js +102 -10
- package/dist/src/instrumentation.js.map +1 -1
- package/dist/src/version.d.ts +1 -1
- package/dist/src/version.js +1 -1
- package/dist/test/openai.test.js +46 -15
- package/dist/test/openai.test.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +7 -2
- package/src/instrumentation.ts +297 -166
- package/src/version.ts +1 -1
package/README.md
CHANGED
|
@@ -17,7 +17,7 @@ To load the OpenAI instrumentation, specify it in the registerInstrumentations c
|
|
|
17
17
|
```typescript
|
|
18
18
|
const { NodeTracerProvider } = require("@opentelemetry/sdk-trace-node");
|
|
19
19
|
const {
|
|
20
|
-
|
|
20
|
+
OpenAIInstrumentation,
|
|
21
21
|
} = require("@arizeai/openinference-instrumentation-openai");
|
|
22
22
|
const { registerInstrumentations } = require("@opentelemetry/instrumentation");
|
|
23
23
|
|
|
@@ -25,7 +25,7 @@ const provider = new NodeTracerProvider();
|
|
|
25
25
|
provider.register();
|
|
26
26
|
|
|
27
27
|
registerInstrumentations({
|
|
28
|
-
|
|
28
|
+
instrumentations: [new OpenAIInstrumentation()],
|
|
29
29
|
});
|
|
30
30
|
```
|
|
31
31
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instrumentation.d.ts","sourceRoot":"","sources":["../../src/instrumentation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,
|
|
1
|
+
{"version":3,"file":"instrumentation.d.ts","sourceRoot":"","sources":["../../src/instrumentation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,+BAA+B,EAGhC,MAAM,gCAAgC,CAAC;AA4BxC,qBAAa,qBAAsB,SAAQ,mBAAmB,CAAC,OAAO,MAAM,CAAC;gBAC/D,MAAM,CAAC,EAAE,qBAAqB;IAQ1C,SAAS,CAAC,IAAI,IAAI,+BAA+B,CAAC,OAAO,MAAM,CAAC;IAShE;;OAEG;IACH,OAAO,CAAC,KAAK;IAgKb;;OAEG;IACH,OAAO,CAAC,OAAO;CAKhB"}
|
|
@@ -57,9 +57,12 @@ var OpenAIInstrumentation = /** @class */ (function (_super) {
|
|
|
57
57
|
if (module === null || module === void 0 ? void 0 : module.openInferencePatched) {
|
|
58
58
|
return module;
|
|
59
59
|
}
|
|
60
|
+
// eslint-disable-next-line @typescript-eslint/no-this-alias
|
|
60
61
|
var instrumentation = this;
|
|
61
62
|
// Patch create chat completions
|
|
62
|
-
this._wrap(module.OpenAI.Chat.Completions.prototype, "create",
|
|
63
|
+
this._wrap(module.OpenAI.Chat.Completions.prototype, "create",
|
|
64
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
65
|
+
function (original) {
|
|
63
66
|
return function patchedCreate() {
|
|
64
67
|
var _a;
|
|
65
68
|
var _this = this;
|
|
@@ -68,9 +71,9 @@ var OpenAIInstrumentation = /** @class */ (function (_super) {
|
|
|
68
71
|
args[_i] = arguments[_i];
|
|
69
72
|
}
|
|
70
73
|
var body = args[0];
|
|
71
|
-
var
|
|
74
|
+
var _messages = body.messages, invocationParameters = __rest(body, ["messages"]);
|
|
72
75
|
var span = instrumentation.tracer.startSpan("OpenAI Chat Completions", {
|
|
73
|
-
kind: SpanKind.
|
|
76
|
+
kind: SpanKind.INTERNAL,
|
|
74
77
|
attributes: __assign((_a = {}, _a[SemanticConventions.OPENINFERENCE_SPAN_KIND] = OpenInferenceSpanKind.LLM, _a[SemanticConventions.LLM_MODEL_NAME] = body.model, _a[SemanticConventions.INPUT_VALUE] = JSON.stringify(body), _a[SemanticConventions.INPUT_MIME_TYPE] = MimeType.JSON, _a[SemanticConventions.LLM_INVOCATION_PARAMETERS] = JSON.stringify(invocationParameters), _a), getLLMInputMessagesAttributes(body)),
|
|
75
78
|
});
|
|
76
79
|
var execContext = trace.setSpan(context.active(), span);
|
|
@@ -82,13 +85,69 @@ var OpenAIInstrumentation = /** @class */ (function (_super) {
|
|
|
82
85
|
// Push the error to the span
|
|
83
86
|
if (error) {
|
|
84
87
|
span.recordException(error);
|
|
88
|
+
span.setStatus({
|
|
89
|
+
code: SpanStatusCode.ERROR,
|
|
90
|
+
message: error.message,
|
|
91
|
+
});
|
|
92
|
+
span.end();
|
|
85
93
|
}
|
|
86
94
|
});
|
|
87
95
|
var wrappedPromise = execPromise.then(function (result) {
|
|
88
96
|
var _a;
|
|
89
97
|
if (result) {
|
|
90
98
|
// Record the results
|
|
91
|
-
span.setAttributes(__assign(__assign((_a = {}, _a[SemanticConventions.OUTPUT_VALUE] = JSON.stringify(result), _a[SemanticConventions.OUTPUT_MIME_TYPE] = MimeType.JSON, _a
|
|
99
|
+
span.setAttributes(__assign(__assign((_a = {}, _a[SemanticConventions.OUTPUT_VALUE] = JSON.stringify(result), _a[SemanticConventions.OUTPUT_MIME_TYPE] = MimeType.JSON, _a[SemanticConventions.LLM_MODEL_NAME] = isChatCompletionResponse(result)
|
|
100
|
+
? result.model
|
|
101
|
+
: body.model, _a), getLLMOutputMessagesAttributes(result)), getUsageAttributes(result)));
|
|
102
|
+
}
|
|
103
|
+
span.setStatus({ code: SpanStatusCode.OK });
|
|
104
|
+
span.end();
|
|
105
|
+
return result;
|
|
106
|
+
});
|
|
107
|
+
return context.bind(execContext, wrappedPromise);
|
|
108
|
+
};
|
|
109
|
+
});
|
|
110
|
+
this._wrap(module.OpenAI.Embeddings.prototype, "create",
|
|
111
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
112
|
+
function (original) {
|
|
113
|
+
return function patchedEmbeddingCreate() {
|
|
114
|
+
var _a;
|
|
115
|
+
var _this = this;
|
|
116
|
+
var args = [];
|
|
117
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
118
|
+
args[_i] = arguments[_i];
|
|
119
|
+
}
|
|
120
|
+
var body = args[0];
|
|
121
|
+
var input = body.input;
|
|
122
|
+
var isStringInput = typeof input == "string";
|
|
123
|
+
var span = instrumentation.tracer.startSpan("OpenAI Embeddings", {
|
|
124
|
+
kind: SpanKind.INTERNAL,
|
|
125
|
+
attributes: __assign((_a = {}, _a[SemanticConventions.OPENINFERENCE_SPAN_KIND] = OpenInferenceSpanKind.EMBEDDING, _a[SemanticConventions.EMBEDDING_MODEL_NAME] = body.model, _a[SemanticConventions.INPUT_VALUE] = isStringInput
|
|
126
|
+
? input
|
|
127
|
+
: JSON.stringify(input), _a[SemanticConventions.INPUT_MIME_TYPE] = isStringInput
|
|
128
|
+
? MimeType.TEXT
|
|
129
|
+
: MimeType.JSON, _a), getEmbeddingTextAttributes(body)),
|
|
130
|
+
});
|
|
131
|
+
var execContext = trace.setSpan(context.active(), span);
|
|
132
|
+
var execPromise = safeExecuteInTheMiddle(function () {
|
|
133
|
+
return context.with(execContext, function () {
|
|
134
|
+
return original.apply(_this, args);
|
|
135
|
+
});
|
|
136
|
+
}, function (error) {
|
|
137
|
+
// Push the error to the span
|
|
138
|
+
if (error) {
|
|
139
|
+
span.recordException(error);
|
|
140
|
+
span.setStatus({
|
|
141
|
+
code: SpanStatusCode.ERROR,
|
|
142
|
+
message: error.message,
|
|
143
|
+
});
|
|
144
|
+
span.end();
|
|
145
|
+
}
|
|
146
|
+
});
|
|
147
|
+
var wrappedPromise = execPromise.then(function (result) {
|
|
148
|
+
if (result) {
|
|
149
|
+
// Record the results
|
|
150
|
+
span.setAttributes(__assign({}, getEmbeddingEmbeddingsAttributes(result)));
|
|
92
151
|
}
|
|
93
152
|
span.setStatus({ code: SpanStatusCode.OK });
|
|
94
153
|
span.end();
|
|
@@ -106,10 +165,17 @@ var OpenAIInstrumentation = /** @class */ (function (_super) {
|
|
|
106
165
|
OpenAIInstrumentation.prototype.unpatch = function (moduleExports, moduleVersion) {
|
|
107
166
|
diag.debug("Removing patch for ".concat(MODULE_NAME, "@").concat(moduleVersion));
|
|
108
167
|
this._unwrap(moduleExports.OpenAI.Chat.Completions.prototype, "create");
|
|
168
|
+
this._unwrap(moduleExports.OpenAI.Embeddings.prototype, "create");
|
|
109
169
|
};
|
|
110
170
|
return OpenAIInstrumentation;
|
|
111
171
|
}(InstrumentationBase));
|
|
112
172
|
export { OpenAIInstrumentation };
|
|
173
|
+
/**
|
|
174
|
+
* type-guard that checks if the response is a chat completion response
|
|
175
|
+
*/
|
|
176
|
+
function isChatCompletionResponse(response) {
|
|
177
|
+
return "choices" in response;
|
|
178
|
+
}
|
|
113
179
|
/**
|
|
114
180
|
* Converts the body of the request to LLM input messages
|
|
115
181
|
*/
|
|
@@ -126,7 +192,7 @@ function getLLMInputMessagesAttributes(body) {
|
|
|
126
192
|
*/
|
|
127
193
|
function getUsageAttributes(response) {
|
|
128
194
|
var _a;
|
|
129
|
-
if (
|
|
195
|
+
if (Object.prototype.hasOwnProperty.call(response, "usage")) {
|
|
130
196
|
var completion = response;
|
|
131
197
|
if (completion.usage) {
|
|
132
198
|
return _a = {},
|
|
@@ -143,7 +209,7 @@ function getUsageAttributes(response) {
|
|
|
143
209
|
*/
|
|
144
210
|
function getLLMOutputMessagesAttributes(response) {
|
|
145
211
|
// Handle chat completion
|
|
146
|
-
if (
|
|
212
|
+
if (Object.prototype.hasOwnProperty.call(response, "choices")) {
|
|
147
213
|
var completion = response;
|
|
148
214
|
// Right now support just the first choice
|
|
149
215
|
var choice = completion.choices[0];
|
|
@@ -152,13 +218,44 @@ function getLLMOutputMessagesAttributes(response) {
|
|
|
152
218
|
}
|
|
153
219
|
return [choice.message].reduce(function (acc, message, index) {
|
|
154
220
|
var index_prefix = "".concat(SemanticConventions.LLM_OUTPUT_MESSAGES, ".").concat(index);
|
|
155
|
-
acc["".concat(index_prefix, ".").concat(SemanticConventions.MESSAGE_CONTENT)] =
|
|
156
|
-
|
|
157
|
-
acc["".concat(index_prefix, ".").concat(SemanticConventions.MESSAGE_ROLE)] =
|
|
158
|
-
message.role;
|
|
221
|
+
acc["".concat(index_prefix, ".").concat(SemanticConventions.MESSAGE_CONTENT)] = String(message.content);
|
|
222
|
+
acc["".concat(index_prefix, ".").concat(SemanticConventions.MESSAGE_ROLE)] = message.role;
|
|
159
223
|
return acc;
|
|
160
224
|
}, {});
|
|
161
225
|
}
|
|
162
226
|
return {};
|
|
163
227
|
}
|
|
228
|
+
/**
|
|
229
|
+
* Converts the embedding result payload to embedding attributes
|
|
230
|
+
*/
|
|
231
|
+
function getEmbeddingTextAttributes(request) {
|
|
232
|
+
var _a;
|
|
233
|
+
if (typeof request.input == "string") {
|
|
234
|
+
return _a = {},
|
|
235
|
+
_a["".concat(SemanticConventions.EMBEDDING_EMBEDDINGS, ".0.").concat(SemanticConventions.EMBEDDING_TEXT)] = request.input,
|
|
236
|
+
_a;
|
|
237
|
+
}
|
|
238
|
+
else if (Array.isArray(request.input) &&
|
|
239
|
+
request.input.length > 0 &&
|
|
240
|
+
typeof request.input[0] == "string") {
|
|
241
|
+
return request.input.reduce(function (acc, input, index) {
|
|
242
|
+
var index_prefix = "".concat(SemanticConventions.EMBEDDING_EMBEDDINGS, ".").concat(index);
|
|
243
|
+
acc["".concat(index_prefix, ".").concat(SemanticConventions.EMBEDDING_TEXT)] = input;
|
|
244
|
+
return acc;
|
|
245
|
+
}, {});
|
|
246
|
+
}
|
|
247
|
+
// Ignore other cases where input is a number or an array of numbers
|
|
248
|
+
return {};
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* Converts the embedding result payload to embedding attributes
|
|
252
|
+
*/
|
|
253
|
+
function getEmbeddingEmbeddingsAttributes(response) {
|
|
254
|
+
return response.data.reduce(function (acc, embedding, index) {
|
|
255
|
+
var index_prefix = "".concat(SemanticConventions.EMBEDDING_EMBEDDINGS, ".").concat(index);
|
|
256
|
+
acc["".concat(index_prefix, ".").concat(SemanticConventions.EMBEDDING_VECTOR)] =
|
|
257
|
+
embedding.embedding;
|
|
258
|
+
return acc;
|
|
259
|
+
}, {});
|
|
260
|
+
}
|
|
164
261
|
//# sourceMappingURL=instrumentation.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instrumentation.js","sourceRoot":"","sources":["../../src/instrumentation.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"instrumentation.js","sourceRoot":"","sources":["../../src/instrumentation.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,OAAO,EACL,mBAAmB,EAGnB,mCAAmC,EACnC,sBAAsB,GACvB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,IAAI,EACJ,OAAO,EACP,KAAK,EACL,QAAQ,EAER,cAAc,GACf,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,QAAQ,GACT,MAAM,6CAA6C,CAAC;AAYrD,IAAM,WAAW,GAAG,QAAQ,CAAC;AAE7B;IAA2C,yCAAkC;IAC3E,+BAAY,MAA8B;QACxC,OAAA,MAAK,YACH,+CAA+C,EAC/C,OAAO,EACP,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAC1B,SAAC;IACJ,CAAC;IAES,oCAAI,GAAd;QACE,IAAM,MAAM,GAAG,IAAI,mCAAmC,CACpD,QAAQ,EACR,CAAC,QAAQ,CAAC,EACV,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EACrB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CACxB,CAAC;QACF,OAAO,MAAM,CAAC;IAChB,CAAC;IACD;;OAEG;IACK,qCAAK,GAAb,UACE,MAA0D,EAC1D,aAAsB;QAEtB,IAAI,CAAC,KAAK,CAAC,6BAAsB,WAAW,cAAI,aAAa,CAAE,CAAC,CAAC;QACjE,IAAI,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,oBAAoB,EAAE,CAAC;YACjC,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,4DAA4D;QAC5D,IAAM,eAAe,GAA0B,IAAI,CAAC;QAIpD,gCAAgC;QAChC,IAAI,CAAC,KAAK,CACR,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,EACxC,QAAQ;QACR,8DAA8D;QAC9D,UAAC,QAA8B;YAC7B,OAAO,SAAS,aAAa;;gBAAtB,iBAkEN;gBAhEC,cAEC;qBAFD,UAEC,EAFD,qBAEC,EAFD,IAEC;oBAFD,yBAEC;;gBAED,IAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;gBACb,IAAU,SAAS,GAA8B,IAAI,SAAlC,EAAK,oBAAoB,UAAK,IAAI,EAAvD,YAAgD,CAAF,CAAU;gBAC9D,IAAM,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,SAAS,CAC3C,yBAAyB,EACzB;oBACE,IAAI,EAAE,QAAQ,CAAC,QAAQ;oBACvB,UAAU,wBACP,mBAAmB,CAAC,uBAAuB,IAC1C,qBAAqB,CAAC,GAAG,KAC1B,mBAAmB,CAAC,cAAc,IAAG,IAAI,CAAC,KAAK,KAC/C,mBAAmB,CAAC,WAAW,IAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KACtD,mBAAmB,CAAC,eAAe,IAAG,QAAQ,CAAC,IAAI,KACnD,mBAAmB,CAAC,yBAAyB,IAC5C,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC,OACnC,6BAA6B,CAAC,IAAI,CAAC,CACvC;iBACF,CACF,CAAC;gBACF,IAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,CAAC;gBAC1D,IAAM,WAAW,GAAG,sBAAsB,CAGxC;oBACE,OAAO,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE;wBAC/B,OAAO,QAAQ,CAAC,KAAK,CAAC,KAAI,EAAE,IAAI,CAAC,CAAC;oBACpC,CAAC,CAAC,CAAC;gBACL,CAAC,EACD,UAAC,KAAK;oBACJ,6BAA6B;oBAC7B,IAAI,KAAK,EAAE,CAAC;wBACV,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;wBAC5B,IAAI,CAAC,SAAS,CAAC;4BACb,IAAI,EAAE,cAAc,CAAC,KAAK;4BAC1B,OAAO,EAAE,KAAK,CAAC,OAAO;yBACvB,CAAC,CAAC;wBACH,IAAI,CAAC,GAAG,EAAE,CAAC;oBACb,CAAC;gBACH,CAAC,CACF,CAAC;gBACF,IAAM,cAAc,GAAG,WAAW,CAAC,IAAI,CAAC,UAAC,MAAM;;oBAC7C,IAAI,MAAM,EAAE,CAAC;wBACX,qBAAqB;wBACrB,IAAI,CAAC,aAAa,gCACf,mBAAmB,CAAC,YAAY,IAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KACzD,mBAAmB,CAAC,gBAAgB,IAAG,QAAQ,CAAC,IAAI,KAEpD,mBAAmB,CAAC,cAAc,IAAG,wBAAwB,CAC5D,MAAM,CACP;4BACC,CAAC,CAAC,MAAM,CAAC,KAAK;4BACd,CAAC,CAAC,IAAI,CAAC,KAAK,OACX,8BAA8B,CAAC,MAAM,CAAC,GACtC,kBAAkB,CAAC,MAAM,CAAC,EAC7B,CAAC;oBACL,CAAC;oBACD,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,EAAE,CAAC,CAAC;oBAC5C,IAAI,CAAC,GAAG,EAAE,CAAC;oBACX,OAAO,MAAM,CAAC;gBAChB,CAAC,CAAC,CAAC;gBACH,OAAO,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;YACnD,CAAC,CAAC;QACJ,CAAC,CACF,CAAC;QAKF,IAAI,CAAC,KAAK,CACR,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,EAClC,QAAQ;QACR,8DAA8D;QAC9D,UAAC,QAA8B;YAC7B,OAAO,SAAS,sBAAsB;;gBAA/B,iBAwDN;gBAtDC,cAAqE;qBAArE,UAAqE,EAArE,qBAAqE,EAArE,IAAqE;oBAArE,yBAAqE;;gBAErE,IAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;gBACb,IAAA,KAAK,GAAK,IAAI,MAAT,CAAU;gBACvB,IAAM,aAAa,GAAG,OAAO,KAAK,IAAI,QAAQ,CAAC;gBAC/C,IAAM,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC,mBAAmB,EAAE;oBACjE,IAAI,EAAE,QAAQ,CAAC,QAAQ;oBACvB,UAAU,wBACP,mBAAmB,CAAC,uBAAuB,IAC1C,qBAAqB,CAAC,SAAS,KAChC,mBAAmB,CAAC,oBAAoB,IAAG,IAAI,CAAC,KAAK,KACrD,mBAAmB,CAAC,WAAW,IAAG,aAAa;wBAC9C,CAAC,CAAC,KAAK;wBACP,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KACxB,mBAAmB,CAAC,eAAe,IAAG,aAAa;wBAClD,CAAC,CAAC,QAAQ,CAAC,IAAI;wBACf,CAAC,CAAC,QAAQ,CAAC,IAAI,OACd,0BAA0B,CAAC,IAAI,CAAC,CACpC;iBACF,CAAC,CAAC;gBACH,IAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,CAAC;gBAC1D,IAAM,WAAW,GAAG,sBAAsB,CAGxC;oBACE,OAAO,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE;wBAC/B,OAAO,QAAQ,CAAC,KAAK,CAAC,KAAI,EAAE,IAAI,CAAC,CAAC;oBACpC,CAAC,CAAC,CAAC;gBACL,CAAC,EACD,UAAC,KAAK;oBACJ,6BAA6B;oBAC7B,IAAI,KAAK,EAAE,CAAC;wBACV,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;wBAC5B,IAAI,CAAC,SAAS,CAAC;4BACb,IAAI,EAAE,cAAc,CAAC,KAAK;4BAC1B,OAAO,EAAE,KAAK,CAAC,OAAO;yBACvB,CAAC,CAAC;wBACH,IAAI,CAAC,GAAG,EAAE,CAAC;oBACb,CAAC;gBACH,CAAC,CACF,CAAC;gBACF,IAAM,cAAc,GAAG,WAAW,CAAC,IAAI,CAAC,UAAC,MAAM;oBAC7C,IAAI,MAAM,EAAE,CAAC;wBACX,qBAAqB;wBACrB,IAAI,CAAC,aAAa,cAEb,gCAAgC,CAAC,MAAM,CAAC,EAC3C,CAAC;oBACL,CAAC;oBACD,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,EAAE,CAAC,CAAC;oBAC5C,IAAI,CAAC,GAAG,EAAE,CAAC;oBACX,OAAO,MAAM,CAAC;gBAChB,CAAC,CAAC,CAAC;gBACH,OAAO,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;YACnD,CAAC,CAAC;QACJ,CAAC,CACF,CAAC;QAEF,MAAM,CAAC,oBAAoB,GAAG,IAAI,CAAC;QACnC,OAAO,MAAM,CAAC;IAChB,CAAC;IACD;;OAEG;IACK,uCAAO,GAAf,UAAgB,aAA4B,EAAE,aAAsB;QAClE,IAAI,CAAC,KAAK,CAAC,6BAAsB,WAAW,cAAI,aAAa,CAAE,CAAC,CAAC;QACjE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QACxE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IACpE,CAAC;IACH,4BAAC;AAAD,CAAC,AA7LD,CAA2C,mBAAmB,GA6L7D;;AAED;;GAEG;AACH,SAAS,wBAAwB,CAC/B,QAAsD;IAEtD,OAAO,SAAS,IAAI,QAAQ,CAAC;AAC/B,CAAC;AAED;;GAEG;AACH,SAAS,6BAA6B,CACpC,IAAoC;IAEpC,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAC,GAAG,EAAE,OAAO,EAAE,KAAK;QAC9C,IAAM,YAAY,GAAG,UAAG,mBAAmB,CAAC,kBAAkB,cAAI,KAAK,CAAE,CAAC;QAC1E,GAAG,CAAC,UAAG,YAAY,cAAI,mBAAmB,CAAC,eAAe,CAAE,CAAC,GAAG,MAAM,CACpE,OAAO,CAAC,OAAO,CAChB,CAAC;QACF,GAAG,CAAC,UAAG,YAAY,cAAI,mBAAmB,CAAC,YAAY,CAAE,CAAC,GAAG,MAAM,CACjE,OAAO,CAAC,IAAI,CACb,CAAC;QACF,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,EAAgB,CAAC,CAAC;AACvB,CAAC;AAED;;GAEG;AACH,SAAS,kBAAkB,CACzB,QAAsD;;IAEtD,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,CAAC;QAC5D,IAAM,UAAU,GAAG,QAA0B,CAAC;QAC9C,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC;YACrB;gBACE,GAAC,mBAAmB,CAAC,0BAA0B,IAC7C,UAAU,CAAC,KAAK,CAAC,iBAAiB;gBACpC,GAAC,mBAAmB,CAAC,sBAAsB,IACzC,UAAU,CAAC,KAAK,CAAC,aAAa;gBAChC,GAAC,mBAAmB,CAAC,qBAAqB,IACxC,UAAU,CAAC,KAAK,CAAC,YAAY;mBAC/B;QACJ,CAAC;IACH,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED;;GAEG;AACH,SAAS,8BAA8B,CACrC,QAAsD;IAEtD,yBAAyB;IACzB,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,CAAC;QAC9D,IAAM,UAAU,GAAG,QAA0B,CAAC;QAC9C,0CAA0C;QAC1C,IAAM,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACrC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,UAAC,GAAG,EAAE,OAAO,EAAE,KAAK;YACjD,IAAM,YAAY,GAAG,UAAG,mBAAmB,CAAC,mBAAmB,cAAI,KAAK,CAAE,CAAC;YAC3E,GAAG,CAAC,UAAG,YAAY,cAAI,mBAAmB,CAAC,eAAe,CAAE,CAAC,GAAG,MAAM,CACpE,OAAO,CAAC,OAAO,CAChB,CAAC;YACF,GAAG,CAAC,UAAG,YAAY,cAAI,mBAAmB,CAAC,YAAY,CAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;YAC1E,OAAO,GAAG,CAAC;QACb,CAAC,EAAE,EAAgB,CAAC,CAAC;IACvB,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED;;GAEG;AACH,SAAS,0BAA0B,CACjC,OAA8B;;IAE9B,IAAI,OAAO,OAAO,CAAC,KAAK,IAAI,QAAQ,EAAE,CAAC;QACrC;YACE,GAAC,UAAG,mBAAmB,CAAC,oBAAoB,gBAAM,mBAAmB,CAAC,cAAc,CAAE,IACpF,OAAO,CAAC,KAAK;eACf;IACJ,CAAC;SAAM,IACL,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;QAC5B,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;QACxB,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,QAAQ,EACnC,CAAC;QACD,OAAO,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,UAAC,GAAG,EAAE,KAAK,EAAE,KAAK;YAC5C,IAAM,YAAY,GAAG,UAAG,mBAAmB,CAAC,oBAAoB,cAAI,KAAK,CAAE,CAAC;YAC5E,GAAG,CAAC,UAAG,YAAY,cAAI,mBAAmB,CAAC,cAAc,CAAE,CAAC,GAAG,KAAK,CAAC;YACrE,OAAO,GAAG,CAAC;QACb,CAAC,EAAE,EAAgB,CAAC,CAAC;IACvB,CAAC;IACD,oEAAoE;IACpE,OAAO,EAAE,CAAC;AACZ,CAAC;AAED;;GAEG;AACH,SAAS,gCAAgC,CACvC,QAAiC;IAEjC,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,UAAC,GAAG,EAAE,SAAS,EAAE,KAAK;QAChD,IAAM,YAAY,GAAG,UAAG,mBAAmB,CAAC,oBAAoB,cAAI,KAAK,CAAE,CAAC;QAC5E,GAAG,CAAC,UAAG,YAAY,cAAI,mBAAmB,CAAC,gBAAgB,CAAE,CAAC;YAC5D,SAAS,CAAC,SAAS,CAAC;QACtB,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,EAAgB,CAAC,CAAC;AACvB,CAAC"}
|