115 lines
181 KiB
JavaScript
115 lines
181 KiB
JavaScript
"use strict";
|
|
/*
|
|
* ATTENTION: An "eval-source-map" devtool has been used.
|
|
* This devtool is neither made for production nor for readable output files.
|
|
* It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools.
|
|
* If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
|
|
* or disable the default devtool with "devtool: false".
|
|
* If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
|
|
*/
|
|
exports.id = "vendor-chunks/@opentelemetry+instrumentation-mongoose@0.60.0_@opentelemetry+api@1.9.1";
|
|
exports.ids = ["vendor-chunks/@opentelemetry+instrumentation-mongoose@0.60.0_@opentelemetry+api@1.9.1"];
|
|
exports.modules = {
|
|
|
|
/***/ "(rsc)/./node_modules/.pnpm/@opentelemetry+instrumentation-mongoose@0.60.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-mongoose/build/src/index.js":
|
|
/*!****************************************************************************************************************************************************************************!*\
|
|
!*** ./node_modules/.pnpm/@opentelemetry+instrumentation-mongoose@0.60.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-mongoose/build/src/index.js ***!
|
|
\****************************************************************************************************************************************************************************/
|
|
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
|
|
eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.MongooseInstrumentation = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar mongoose_1 = __webpack_require__(/*! ./mongoose */ \"(rsc)/./node_modules/.pnpm/@opentelemetry+instrumentation-mongoose@0.60.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-mongoose/build/src/mongoose.js\");\nObject.defineProperty(exports, \"MongooseInstrumentation\", ({ enumerable: true, get: function () { return mongoose_1.MongooseInstrumentation; } }));\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvLnBucG0vQG9wZW50ZWxlbWV0cnkraW5zdHJ1bWVudGF0aW9uLW1vbmdvb3NlQDAuNjAuMF9Ab3BlbnRlbGVtZXRyeSthcGlAMS45LjEvbm9kZV9tb2R1bGVzL0BvcGVudGVsZW1ldHJ5L2luc3RydW1lbnRhdGlvbi1tb25nb29zZS9idWlsZC9zcmMvaW5kZXguanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkMsRUFBRSxhQUFhLEVBQUM7QUFDN0QsK0JBQStCO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixtQkFBTyxDQUFDLGlNQUFZO0FBQ3JDLDJEQUEwRCxFQUFFLHFDQUFxQyw4Q0FBOEMsRUFBQztBQUNoSiIsInNvdXJjZXMiOlsiL1VzZXJzL21hcmNtaW50ZWwvUHJvamVjdHMvZS10aWIuY29tL25vZGVfbW9kdWxlcy8ucG5wbS9Ab3BlbnRlbGVtZXRyeStpbnN0cnVtZW50YXRpb24tbW9uZ29vc2VAMC42MC4wX0BvcGVudGVsZW1ldHJ5K2FwaUAxLjkuMS9ub2RlX21vZHVsZXMvQG9wZW50ZWxlbWV0cnkvaW5zdHJ1bWVudGF0aW9uLW1vbmdvb3NlL2J1aWxkL3NyYy9pbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuTW9uZ29vc2VJbnN0cnVtZW50YXRpb24gPSB2b2lkIDA7XG4vKlxuICogQ29weXJpZ2h0IFRoZSBPcGVuVGVsZW1ldHJ5IEF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xudmFyIG1vbmdvb3NlXzEgPSByZXF1aXJlKFwiLi9tb25nb29zZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIk1vbmdvb3NlSW5zdHJ1bWVudGF0aW9uXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBtb25nb29zZV8xLk1vbmdvb3NlSW5zdHJ1bWVudGF0aW9uOyB9IH0pO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/.pnpm/@opentelemetry+instrumentation-mongoose@0.60.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-mongoose/build/src/index.js\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(rsc)/./node_modules/.pnpm/@opentelemetry+instrumentation-mongoose@0.60.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-mongoose/build/src/mongoose.js":
|
|
/*!*******************************************************************************************************************************************************************************!*\
|
|
!*** ./node_modules/.pnpm/@opentelemetry+instrumentation-mongoose@0.60.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-mongoose/build/src/mongoose.js ***!
|
|
\*******************************************************************************************************************************************************************************/
|
|
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
|
|
eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.MongooseInstrumentation = exports._ALREADY_INSTRUMENTED = exports._STORED_PARENT_SPAN = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst api_1 = __webpack_require__(/*! @opentelemetry/api */ \"(rsc)/./node_modules/.pnpm/@opentelemetry+api@1.9.1/node_modules/@opentelemetry/api/build/esm/index.js\");\nconst core_1 = __webpack_require__(/*! @opentelemetry/core */ \"(rsc)/./node_modules/.pnpm/@opentelemetry+core@2.6.1_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/core/build/esm/index.js\");\nconst utils_1 = __webpack_require__(/*! ./utils */ \"(rsc)/./node_modules/.pnpm/@opentelemetry+instrumentation-mongoose@0.60.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-mongoose/build/src/utils.js\");\nconst instrumentation_1 = __webpack_require__(/*! @opentelemetry/instrumentation */ \"(rsc)/./node_modules/.pnpm/@opentelemetry+instrumentation@0.214.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation/build/esm/index.js\");\n/** @knipignore */\nconst version_1 = __webpack_require__(/*! ./version */ \"(rsc)/./node_modules/.pnpm/@opentelemetry+instrumentation-mongoose@0.60.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-mongoose/build/src/version.js\");\nconst semconv_1 = __webpack_require__(/*! ./semconv */ \"(rsc)/./node_modules/.pnpm/@opentelemetry+instrumentation-mongoose@0.60.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-mongoose/build/src/semconv.js\");\nconst semantic_conventions_1 = __webpack_require__(/*! @opentelemetry/semantic-conventions */ \"(rsc)/./node_modules/.pnpm/@opentelemetry+semantic-conventions@1.40.0/node_modules/@opentelemetry/semantic-conventions/build/esm/index.js\");\nconst contextCaptureFunctionsCommon = [\n 'deleteOne',\n 'deleteMany',\n 'find',\n 'findOne',\n 'estimatedDocumentCount',\n 'countDocuments',\n 'distinct',\n 'where',\n '$where',\n 'findOneAndUpdate',\n 'findOneAndDelete',\n 'findOneAndReplace',\n];\nconst contextCaptureFunctions6 = [\n 'remove',\n 'count',\n 'findOneAndRemove',\n ...contextCaptureFunctionsCommon,\n];\nconst contextCaptureFunctions7 = [\n 'count',\n 'findOneAndRemove',\n ...contextCaptureFunctionsCommon,\n];\nconst contextCaptureFunctions8 = [...contextCaptureFunctionsCommon];\nfunction getContextCaptureFunctions(moduleVersion) {\n /* istanbul ignore next */\n if (!moduleVersion) {\n return contextCaptureFunctionsCommon;\n }\n else if (moduleVersion.startsWith('6.') || moduleVersion.startsWith('5.')) {\n return contextCaptureFunctions6;\n }\n else if (moduleVersion.startsWith('7.')) {\n return contextCaptureFunctions7;\n }\n else {\n return contextCaptureFunctions8;\n }\n}\nfunction instrumentRemove(moduleVersion) {\n return ((moduleVersion &&\n (moduleVersion.startsWith('5.') || moduleVersion.startsWith('6.'))) ||\n false);\n}\n/**\n * 8.21.0 changed Document.updateOne/deleteOne so that the Query is not fully built when Query.exec() is called.\n * @param moduleVersion\n */\nfunction needsDocumentMethodPatch(moduleVersion) {\n if (!moduleVersion || !moduleVersion.startsWith('8.')) {\n return false;\n }\n const minor = parseInt(moduleVersion.split('.')[1], 10);\n return minor >= 21;\n}\n// when mongoose functions are called, we store the original call context\n// and then set it as the parent for the spans created by Query/Aggregate exec()\n// calls. this bypass the unlinked spans issue on thenables await operations.\nexports._STORED_PARENT_SPAN = Symbol('stored-parent-span');\n// Prevents double-instrumentation when doc.updateOne/deleteOne (Mongoose 8.21.0+)\n// creates a span and returns a Query that also calls exec()\nexports._ALREADY_INSTRUMENTED = Symbol('already-instrumented');\nclass MongooseInstrumentation extends instrumentation_1.InstrumentationBase {\n _netSemconvStability;\n _dbSemconvStability;\n constructor(config = {}) {\n super(version_1.PACKAGE_NAME, version_1.PACKAGE_VERSION, config);\n this._setSemconvStabilityFromEnv();\n }\n // Used for testing.\n _setSemconvStabilityFromEnv() {\n this._netSemconvStability = (0, instrumentation_1.semconvStabilityFromStr)('http', process.env.OTEL_SEMCONV_STABILITY_OPT_IN);\n this._dbSemconvStability = (0, instrumentation_1.semconvStabilityFromStr)('database', process.env.OTEL_SEMCONV_STABILITY_OPT_IN);\n }\n init() {\n const module = new instrumentation_1.InstrumentationNodeModuleDefinition('mongoose', ['>=5.9.7 <10'], this.patch.bind(this), this.unpatch.bind(this));\n return module;\n }\n patch(module, moduleVersion) {\n const moduleExports = module[Symbol.toStringTag] === 'Module'\n ? module.default // ESM\n : module; // CommonJS\n this._wrap(moduleExports.Model.prototype, 'save', this.patchOnModelMethods('save', moduleVersion));\n // mongoose applies this code on module require:\n // Model.prototype.$save = Model.prototype.save;\n // which captures the save function before it is patched.\n // so we need to apply the same logic after instrumenting the save function.\n moduleExports.Model.prototype.$save = moduleExports.Model.prototype.save;\n if (instrumentRemove(moduleVersion)) {\n this._wrap(moduleExports.Model.prototype, 'remove', this.patchOnModelMethods('remove', moduleVersion));\n }\n // Mongoose 8.21.0+ changed Document.updateOne()/deleteOne() so that the Query is not fully built when Query.exec() is called.\n //\n // See https://github.com/Automattic/mongoose/blob/7dbda12dca1bd7adb9e270d7de8ac5229606ce72/lib/document.js#L861.\n // - `this` is a Query object\n // - the update happens in a pre-hook that gets called when Query.exec() is already running.\n // - when we instrument Query.exec(), we don't have access to the options yet as they get set during Query.exec() only.\n //\n // Unfortunately, after Query.exec() is finished, the options are left modified by the library, so just delaying\n // attaching the attributes after the span is done is not an option. Therefore, we patch Model methods\n // and grab the data directly where the user provides it.\n //\n // ref: https://github.com/Automattic/mongoose/pull/15908 (introduced this behavior)\n if (needsDocumentMethodPatch(moduleVersion)) {\n this._wrap(moduleExports.Model.prototype, 'updateOne', this._patchDocumentUpdateMethods('updateOne', moduleVersion));\n this._wrap(moduleExports.Model.prototype, 'deleteOne', this._patchDocumentUpdateMethods('deleteOne', moduleVersion));\n }\n this._wrap(moduleExports.Query.prototype, 'exec', this.patchQueryExec(moduleVersion));\n this._wrap(moduleExports.Aggregate.prototype, 'exec', this.patchAggregateExec(moduleVersion));\n const contextCaptureFunctions = getContextCaptureFunctions(moduleVersion);\n contextCaptureFunctions.forEach((funcName) => {\n this._wrap(moduleExports.Query.prototype, funcName, this.patchAndCaptureSpanContext(funcName));\n });\n this._wrap(moduleExports.Model, 'aggregate', this.patchModelAggregate());\n this._wrap(moduleExports.Model, 'insertMany', this.patchModelStatic('insertMany', moduleVersion));\n this._wrap(moduleExports.Model, 'bulkWrite', this.patchModelStatic('bulkWrite', moduleVersion));\n return moduleExports;\n }\n unpatch(module, moduleVersion) {\n const moduleExports = module[Symbol.toStringTag] === 'Module'\n ? module.default // ESM\n : module; // CommonJS\n const contextCaptureFunctions = getContextCaptureFunctions(moduleVersion);\n this._unwrap(moduleExports.Model.prototype, 'save');\n // revert the patch for $save which we applied by aliasing it to patched `save`\n moduleExports.Model.prototype.$save = moduleExports.Model.prototype.save;\n if (instrumentRemove(moduleVersion)) {\n this._unwrap(moduleExports.Model.prototype, 'remove');\n }\n if (needsDocumentMethodPatch(moduleVersion)) {\n this._unwrap(moduleExports.Model.prototype, 'updateOne');\n this._unwrap(moduleExports.Model.prototype, 'deleteOne');\n }\n this._unwrap(moduleExports.Query.prototype, 'exec');\n this._unwrap(moduleExports.Aggregate.prototype, 'exec');\n contextCaptureFunctions.forEach((funcName) => {\n this._unwrap(moduleExports.Query.prototype, funcName);\n });\n this._unwrap(moduleExports.Model, 'aggregate');\n this._unwrap(moduleExports.Model, 'insertMany');\n this._unwrap(moduleExports.Model, 'bulkWrite');\n }\n patchAggregateExec(moduleVersion) {\n const self = this;\n return (originalAggregate) => {\n return function exec(callback) {\n if (self.getConfig().requireParentSpan &&\n api_1.trace.getSpan(api_1.context.active()) === undefined) {\n return originalAggregate.apply(this, arguments);\n }\n const parentSpan = this[exports._STORED_PARENT_SPAN];\n const attributes = {};\n const { dbStatementSerializer } = self.getConfig();\n if (dbStatementSerializer) {\n const statement = dbStatementSerializer('aggregate', {\n options: this.options,\n aggregatePipeline: this._pipeline,\n });\n if (self._dbSemconvStability & instrumentation_1.SemconvStability.OLD) {\n attributes[semconv_1.ATTR_DB_STATEMENT] = statement;\n }\n if (self._dbSemconvStability & instrumentation_1.SemconvStability.STABLE) {\n attributes[semantic_conventions_1.ATTR_DB_QUERY_TEXT] = statement;\n }\n }\n const span = self._startSpan(this._model.collection, this._model?.modelName, 'aggregate', attributes, parentSpan);\n return self._handleResponse(span, originalAggregate, this, arguments, callback, moduleVersion);\n };\n };\n }\n patchQueryExec(moduleVersion) {\n const self = this;\n return (originalExec) => {\n return function exec(callback) {\n // Skip if already instrumented by document instance method patch\n if (this[exports._ALREADY_INSTRUMENTED]) {\n return originalExec.apply(this, arguments);\n }\n if (self.getConfig().requireParentSpan &&\n api_1.trace.getSpan(api_1.context.active()) === undefined) {\n return originalExec.apply(this, arguments);\n }\n const parentSpan = this[exports._STORED_PARENT_SPAN];\n const attributes = {};\n const { dbStatementSerializer } = self.getConfig();\n if (dbStatementSerializer) {\n const statement = dbStatementSerializer(this.op, {\n // Use public API methods (getFilter/getOptions) for better compatibility\n condition: this.getFilter?.() ?? this._conditions,\n updates: this._update,\n options: this.getOptions?.() ?? this.options,\n fields: this._fields,\n });\n if (self._dbSemconvStability & instrumentation_1.SemconvStability.OLD) {\n attributes[semconv_1.ATTR_DB_STATEMENT] = statement;\n }\n if (self._dbSemconvStability & instrumentation_1.SemconvStability.STABLE) {\n attributes[semantic_conventions_1.ATTR_DB_QUERY_TEXT] = statement;\n }\n }\n const span = self._startSpan(this.mongooseCollection, this.model.modelName, this.op, attributes, parentSpan);\n return self._handleResponse(span, originalExec, this, arguments, callback, moduleVersion);\n };\n };\n }\n patchOnModelMethods(op, moduleVersion) {\n const self = this;\n return (originalOnModelFunction) => {\n return function method(options, callback) {\n if (self.getConfig().requireParentSpan &&\n api_1.trace.getSpan(api_1.context.active()) === undefined) {\n return originalOnModelFunction.apply(this, arguments);\n }\n const serializePayload = { document: this };\n if (options && !(options instanceof Function)) {\n serializePayload.options = options;\n }\n const attributes = {};\n const { dbStatementSerializer } = self.getConfig();\n if (dbStatementSerializer) {\n const statement = dbStatementSerializer(op, serializePayload);\n if (self._dbSemconvStability & instrumentation_1.SemconvStability.OLD) {\n attributes[semconv_1.ATTR_DB_STATEMENT] = statement;\n }\n if (self._dbSemconvStability & instrumentation_1.SemconvStability.STABLE) {\n attributes[semantic_conventions_1.ATTR_DB_QUERY_TEXT] = statement;\n }\n }\n const span = self._startSpan(this.constructor.collection, this.constructor.modelName, op, attributes);\n if (options instanceof Function) {\n callback = options;\n options = undefined;\n }\n return self._handleResponse(span, originalOnModelFunction, this, arguments, callback, moduleVersion);\n };\n };\n }\n // Patch document instance methods (doc.updateOne/deleteOne) for Mongoose 8.21.0+.\n _patchDocumentUpdateMethods(op, moduleVersion) {\n const self = this;\n return (originalMethod) => {\n return function method(update, options, callback) {\n if (self.getConfig().requireParentSpan &&\n api_1.trace.getSpan(api_1.context.active()) === undefined) {\n return originalMethod.apply(this, arguments);\n }\n // determine actual callback since different argument patterns are allowed\n let actualCallback = callback;\n let actualUpdate = update;\n let actualOptions = options;\n if (typeof update === 'function') {\n actualCallback = update;\n actualUpdate = undefined;\n actualOptions = undefined;\n }\n else if (typeof options === 'function') {\n actualCallback = options;\n actualOptions = undefined;\n }\n const attributes = {};\n const dbStatementSerializer = self.getConfig().dbStatementSerializer;\n if (dbStatementSerializer) {\n const statement = dbStatementSerializer(op, {\n // Document instance methods automatically use the document's _id as filter\n condition: { _id: this._id },\n updates: actualUpdate,\n options: actualOptions,\n });\n if (self._dbSemconvStability & instrumentation_1.SemconvStability.OLD) {\n attributes[semconv_1.ATTR_DB_STATEMENT] = statement;\n }\n if (self._dbSemconvStability & instrumentation_1.SemconvStability.STABLE) {\n attributes[semantic_conventions_1.ATTR_DB_QUERY_TEXT] = statement;\n }\n }\n const span = self._startSpan(this.constructor.collection, this.constructor.modelName, op, attributes);\n const result = self._handleResponse(span, originalMethod, this, arguments, actualCallback, moduleVersion);\n // Mark returned Query to prevent double-instrumentation when exec() is eventually called\n if (result && typeof result === 'object') {\n result[exports._ALREADY_INSTRUMENTED] = true;\n }\n return result;\n };\n };\n }\n patchModelStatic(op, moduleVersion) {\n const self = this;\n return (original) => {\n return function patchedStatic(docsOrOps, options, callback) {\n if (self.getConfig().requireParentSpan &&\n api_1.trace.getSpan(api_1.context.active()) === undefined) {\n return original.apply(this, arguments);\n }\n if (typeof options === 'function') {\n callback = options;\n options = undefined;\n }\n const serializePayload = {};\n switch (op) {\n case 'insertMany':\n serializePayload.documents = docsOrOps;\n break;\n case 'bulkWrite':\n serializePayload.operations = docsOrOps;\n break;\n default:\n serializePayload.document = docsOrOps;\n break;\n }\n if (options !== undefined) {\n serializePayload.options = options;\n }\n const attributes = {};\n const { dbStatementSerializer } = self.getConfig();\n if (dbStatementSerializer) {\n const statement = dbStatementSerializer(op, serializePayload);\n if (self._dbSemconvStability & instrumentation_1.SemconvStability.OLD) {\n attributes[semconv_1.ATTR_DB_STATEMENT] = statement;\n }\n if (self._dbSemconvStability & instrumentation_1.SemconvStability.STABLE) {\n attributes[semantic_conventions_1.ATTR_DB_QUERY_TEXT] = statement;\n }\n }\n const span = self._startSpan(this.collection, this.modelName, op, attributes);\n return self._handleResponse(span, original, this, arguments, callback, moduleVersion);\n };\n };\n }\n // we want to capture the otel span on the object which is calling exec.\n // in the special case of aggregate, we need have no function to path\n // on the Aggregate object to capture the context on, so we patch\n // the aggregate of Model, and set the context on the Aggregate object\n patchModelAggregate() {\n const self = this;\n return (original) => {\n return function captureSpanContext() {\n const currentSpan = api_1.trace.getSpan(api_1.context.active());\n const aggregate = self._callOriginalFunction(() => original.apply(this, arguments));\n if (aggregate)\n aggregate[exports._STORED_PARENT_SPAN] = currentSpan;\n return aggregate;\n };\n };\n }\n patchAndCaptureSpanContext(funcName) {\n const self = this;\n return (original) => {\n return function captureSpanContext() {\n this[exports._STORED_PARENT_SPAN] = api_1.trace.getSpan(api_1.context.active());\n return self._callOriginalFunction(() => original.apply(this, arguments));\n };\n };\n }\n _startSpan(collection, modelName, operation, attributes, parentSpan) {\n const finalAttributes = {\n ...attributes,\n ...(0, utils_1.getAttributesFromCollection)(collection, this._dbSemconvStability, this._netSemconvStability),\n };\n if (this._dbSemconvStability & instrumentation_1.SemconvStability.OLD) {\n finalAttributes[semconv_1.ATTR_DB_OPERATION] = operation;\n finalAttributes[semconv_1.ATTR_DB_SYSTEM] = 'mongoose'; // keep for backwards compatibility\n }\n if (this._dbSemconvStability & instrumentation_1.SemconvStability.STABLE) {\n finalAttributes[semantic_conventions_1.ATTR_DB_OPERATION_NAME] = operation;\n finalAttributes[semantic_conventions_1.ATTR_DB_SYSTEM_NAME] = semconv_1.DB_SYSTEM_NAME_VALUE_MONGODB; // actual db system name\n }\n const spanName = this._dbSemconvStability & instrumentation_1.SemconvStability.STABLE\n ? `${operation} ${collection.name}`\n : `mongoose.${modelName}.${operation}`;\n return this.tracer.startSpan(spanName, {\n kind: api_1.SpanKind.CLIENT,\n attributes: finalAttributes,\n }, parentSpan ? api_1.trace.setSpan(api_1.context.active(), parentSpan) : undefined);\n }\n _handleResponse(span, exec, originalThis, args, callback, moduleVersion = undefined) {\n const self = this;\n if (callback instanceof Function) {\n return self._callOriginalFunction(() => (0, utils_1.handleCallbackResponse)(callback, exec, originalThis, span, args, self.getConfig().responseHook, moduleVersion));\n }\n else {\n const response = self._callOriginalFunction(() => exec.apply(originalThis, args));\n return (0, utils_1.handlePromiseResponse)(response, span, self.getConfig().responseHook, moduleVersion);\n }\n }\n _callOriginalFunction(originalFunction) {\n if (this.getConfig().suppressInternalInstrumentation) {\n return api_1.context.with((0, core_1.suppressTracing)(api_1.context.active()), originalFunction);\n }\n else {\n return originalFunction();\n }\n }\n}\nexports.MongooseInstrumentation = MongooseInstrumentation;\n//# sourceMappingURL=mongoose.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvLnBucG0vQG9wZW50ZWxlbWV0cnkraW5zdHJ1bWVudGF0aW9uLW1vbmdvb3NlQDAuNjAuMF9Ab3BlbnRlbGVtZXRyeSthcGlAMS45LjEvbm9kZV9tb2R1bGVzL0BvcGVudGVsZW1ldHJ5L2luc3RydW1lbnRhdGlvbi1tb25nb29zZS9idWlsZC9zcmMvbW9uZ29vc2UuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkMsRUFBRSxhQUFhLEVBQUM7QUFDN0QsK0JBQStCLEdBQUcsNkJBQTZCLEdBQUcsMkJBQTJCO0FBQzdGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsbUJBQU8sQ0FBQyxrSUFBb0I7QUFDMUMsZUFBZSxtQkFBTyxDQUFDLDhKQUFxQjtBQUM1QyxnQkFBZ0IsbUJBQU8sQ0FBQywyTEFBUztBQUNqQywwQkFBMEIsbUJBQU8sQ0FBQyxpTUFBZ0M7QUFDbEU7QUFDQSxrQkFBa0IsbUJBQU8sQ0FBQywrTEFBVztBQUNyQyxrQkFBa0IsbUJBQU8sQ0FBQywrTEFBVztBQUNyQywrQkFBK0IsbUJBQU8sQ0FBQyxzTEFBcUM7QUFDNUU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCO0FBQzNCO0FBQ0E7QUFDQSw2QkFBNkI7QUFDN0I7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQjtBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQjtBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3Qix3QkFBd0I7QUFDaEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3Qix3QkFBd0I7QUFDaEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJDQUEyQztBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3Qix3QkFBd0I7QUFDaEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUNBQXFDLGVBQWU7QUFDcEQ7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0Isd0JBQXdCO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0VBQW9FO0FBQ3BFO0FBQ0E7QUFDQTtBQUNBLGtIQUFrSDtBQUNsSDtBQUNBO0FBQ0EsaUJBQWlCLFdBQVcsRUFBRSxnQkFBZ0I7QUFDOUMsMEJBQTBCLFVBQVUsR0FBRyxVQUFVO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0JBQStCO0FBQy9CIiwic291cmNlcyI6WyIvVXNlcnMvbWFyY21pbnRlbC9Qcm9qZWN0cy9lLXRpYi5jb20vbm9kZV9tb2R1bGVzLy5wbnBtL0BvcGVudGVsZW1ldHJ5K2luc3RydW1lbnRhdGlvbi1tb25nb29zZUAwLjYwLjBfQG9wZW50ZWxlbWV0cnkrYXBpQDEuOS4xL25vZGVfbW9kdWxlcy9Ab3BlbnRlbGVtZXRyeS9pbnN0cnVtZW50YXRpb24tbW9uZ29vc2UvYnVpbGQvc3JjL21vbmdvb3NlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5Nb25nb29zZUluc3RydW1lbnRhdGlvbiA9IGV4cG9ydHMuX0FMUkVBRFlfSU5TVFJVTUVOVEVEID0gZXhwb3J0cy5fU1RPUkVEX1BBUkVOVF9TUEFOID0gdm9pZCAwO1xuLypcbiAqIENvcHlyaWdodCBUaGUgT3BlblRlbGVtZXRyeSBBdXRob3JzXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmNvbnN0IGFwaV8xID0gcmVxdWlyZShcIkBvcGVudGVsZW1ldHJ5L2FwaVwiKTtcbmNvbnN0IGNvcmVfMSA9IHJlcXVpcmUoXCJAb3BlbnRlbGVtZXRyeS9jb3JlXCIpO1xuY29uc3QgdXRpbHNfMSA9IHJlcXVpcmUoXCIuL3V0aWxzXCIpO1xuY29uc3QgaW5zdHJ1bWVudGF0aW9uXzEgPSByZXF1aXJlKFwiQG9wZW50ZWxlbWV0cnkvaW5zdHJ1bWVudGF0aW9uXCIpO1xuLyoqIEBrbmlwaWdub3JlICovXG5jb25zdCB2ZXJzaW9uXzEgPSByZXF1aXJlKFwiLi92ZXJzaW9uXCIpO1xuY29uc3Qgc2VtY29udl8xID0gcmVxdWlyZShcIi4vc2VtY29udlwiKTtcbmNvbnN0IHNlbWFudGljX2NvbnZlbnRpb25zXzEgPSByZXF1aXJlKFwiQG9wZW50ZWxlbWV0cnkvc2VtYW50aWMtY29udmVudGlvbnNcIik7XG5jb25zdCBjb250ZXh0Q2FwdHVyZUZ1bmN0aW9uc0NvbW1vbiA9IFtcbiAgICAnZGVsZXRlT25lJyxcbiAgICAnZGVsZXRlTWFueScsXG4gICAgJ2ZpbmQnLFxuICAgICdmaW5kT25lJyxcbiAgICAnZXN0aW1hdGVkRG9jdW1lbnRDb3VudCcsXG4gICAgJ2NvdW50RG9jdW1lbnRzJyxcbiAgICAnZGlzdGluY3QnLFxuICAgICd3aGVyZScsXG4gICAgJyR3aGVyZScsXG4gICAgJ2ZpbmRPbmVBbmRVcGRhdGUnLFxuICAgICdmaW5kT25lQW5kRGVsZXRlJyxcbiAgICAnZmluZE9uZUFuZFJlcGxhY2UnLFxuXTtcbmNvbnN0IGNvbnRleHRDYXB0dXJlRnVuY3Rpb25zNiA9IFtcbiAgICAncmVtb3ZlJyxcbiAgICAnY291bnQnLFxuICAgICdmaW5kT25lQW5kUmVtb3ZlJyxcbiAgICAuLi5jb250ZXh0Q2FwdHVyZUZ1bmN0aW9uc0NvbW1vbixcbl07XG5jb25zdCBjb250ZXh0Q2FwdHVyZUZ1bmN0aW9uczcgPSBbXG4gICAgJ2NvdW50JyxcbiAgICAnZmluZE9uZUFuZFJlbW92ZScsXG4gICAgLi4uY29udGV4dENhcHR1cmVGdW5jdGlvbnNDb21tb24sXG5dO1xuY29uc3QgY29udGV4dENhcHR1cmVGdW5jdGlvbnM4ID0gWy4uLmNvbnRleHRDYXB0dXJlRnVuY3Rpb25zQ29tbW9uXTtcbmZ1bmN0aW9uIGdldENvbnRleHRDYXB0dXJlRnVuY3Rpb25zKG1vZHVsZVZlcnNpb24pIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIGlmICghbW9kdWxlVmVyc2lvbikge1xuICAgICAgICByZXR1cm4gY29udGV4dENhcHR1cmVGdW5jdGlvbnNDb21tb247XG4gICAgfVxuICAgIGVsc2UgaWYgKG1vZHVsZVZlcnNpb24uc3RhcnRzV2l0aCgnNi4nKSB8fCBtb2R1bGVWZXJzaW9uLnN0YXJ0c1dpdGgoJzUuJykpIHtcbiAgICAgICAgcmV0dXJuIGNvbnRleHRDYXB0dXJlRnVuY3Rpb25zNjtcbiAgICB9XG4gICAgZWxzZSBpZiAobW9kdWxlVmVyc2lvbi5zdGFydHNXaXRoKCc3LicpKSB7XG4gICAgICAgIHJldHVybiBjb250ZXh0Q2FwdHVyZUZ1bmN0aW9uczc7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByZXR1cm4gY29udGV4dENhcHR1cmVGdW5jdGlvbnM4O1xuICAgIH1cbn1cbmZ1bmN0aW9uIGluc3RydW1lbnRSZW1vdmUobW9kdWxlVmVyc2lvbikge1xuICAgIHJldHVybiAoKG1vZHVsZVZlcnNpb24gJiZcbiAgICAgICAgKG1vZHVsZVZlcnNpb24uc3RhcnRzV2l0aCgnNS4nKSB8fCBtb2R1bGVWZXJzaW9uLnN0YXJ0c1dpdGgoJzYuJykpKSB8fFxuICAgICAgICBmYWxzZSk7XG59XG4vKipcbiAqIDguMjEuMCBjaGFuZ2VkIERvY3VtZW50LnVwZGF0ZU9uZS9kZWxldGVPbmUgc28gdGhhdCB0aGUgUXVlcnkgaXMgbm90IGZ1bGx5IGJ1aWx0IHdoZW4gUXVlcnkuZXhlYygpIGlzIGNhbGxlZC5cbiAqIEBwYXJhbSBtb2R1bGVWZXJzaW9uXG4gKi9cbmZ1bmN0aW9uIG5lZWRzRG9jdW1lbnRNZXRob2RQYXRjaChtb2R1bGVWZXJzaW9uKSB7XG4gICAgaWYgKCFtb2R1bGVWZXJzaW9uIHx8ICFtb2R1bGVWZXJzaW9uLnN0YXJ0c1dpdGgoJzguJykpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCBtaW5vciA9IHBhcnNlSW50KG1vZHVsZVZlcnNpb24uc3BsaXQoJy4nKVsxXSwgMTApO1xuICAgIHJldHVybiBtaW5vciA+PSAyMTtcbn1cbi8vIHdoZW4gbW9uZ29vc2UgZnVuY3Rpb25zIGFyZSBjYWxsZWQsIHdlIHN0b3JlIHRoZSBvcmlnaW5hbCBjYWxsIGNvbnRleHRcbi8vIGFuZCB0aGVuIHNldCBpdCBhcyB0aGUgcGFyZW50IGZvciB0aGUgc3BhbnMgY3JlYXRlZCBieSBRdWVyeS9BZ2dyZWdhdGUgZXhlYygpXG4vLyBjYWxscy4gdGhpcyBieXBhc3MgdGhlIHVubGlua2VkIHNwYW5zIGlzc3VlIG9uIHRoZW5hYmxlcyBhd2FpdCBvcGVyYXRpb25zLlxuZXhwb3J0cy5fU1RPUkVEX1BBUkVOVF9TUEFOID0gU3ltYm9sKCdzdG9yZWQtcGFyZW50LXNwYW4nKTtcbi8vIFByZXZlbnRzIGRvdWJsZS1pbnN0cnVtZW50YXRpb24gd2hlbiBkb2MudXBkYXRlT25lL2RlbGV0ZU9uZSAoTW9uZ29vc2UgOC4yMS4wKylcbi8vIGNyZWF0ZXMgYSBzcGFuIGFuZCByZXR1cm5zIGEgUXVlcnkgdGhhdCBhbHNvIGNhbGxzIGV4ZWMoKVxuZXhwb3J0cy5fQUxSRUFEWV9JTlNUUlVNRU5URUQgPSBTeW1ib2woJ2FscmVhZHktaW5zdHJ1bWVudGVkJyk7XG5jbGFzcyBNb25nb29zZUluc3RydW1lbnRhdGlvbiBleHRlbmRzIGluc3RydW1lbnRhdGlvbl8xLkluc3RydW1lbnRhdGlvbkJhc2Uge1xuICAgIF9uZXRTZW1jb252U3RhYmlsaXR5O1xuICAgIF9kYlNlbWNvbnZTdGFiaWxpdHk7XG4gICAgY29uc3RydWN0b3IoY29uZmlnID0ge30pIHtcbiAgICAgICAgc3VwZXIodmVyc2lvbl8xLlBBQ0tBR0VfTkFNRSwgdmVyc2lvbl8xLlBBQ0tBR0VfVkVSU0lPTiwgY29uZmlnKTtcbiAgICAgICAgdGhpcy5fc2V0U2VtY29udlN0YWJpbGl0eUZyb21FbnYoKTtcbiAgICB9XG4gICAgLy8gVXNlZCBmb3IgdGVzdGluZy5cbiAgICBfc2V0U2VtY29udlN0YWJpbGl0eUZyb21FbnYoKSB7XG4gICAgICAgIHRoaXMuX25ldFNlbWNvbnZTdGFiaWxpdHkgPSAoMCwgaW5zdHJ1bWVudGF0aW9uXzEuc2VtY29udlN0YWJpbGl0eUZyb21TdHIpKCdodHRwJywgcHJvY2Vzcy5lbnYuT1RFTF9TRU1DT05WX1NUQUJJTElUWV9PUFRfSU4pO1xuICAgICAgICB0aGlzLl9kYlNlbWNvbnZTdGFiaWxpdHkgPSAoMCwgaW5zdHJ1bWVudGF0aW9uXzEuc2VtY29udlN0YWJpbGl0eUZyb21TdHIpKCdkYXRhYmFzZScsIHByb2Nlc3MuZW52Lk9URUxfU0VNQ09OVl9TVEFCSUxJVFlfT1BUX0lOKTtcbiAgICB9XG4gICAgaW5pdCgpIHtcbiAgICAgICAgY29uc3QgbW9kdWxlID0gbmV3IGluc3RydW1lbnRhdGlvbl8xLkluc3RydW1lbnRhdGlvbk5vZGVNb2R1bGVEZWZpbml0aW9uKCdtb25nb29zZScsIFsnPj01LjkuNyA8MTAnXSwgdGhpcy5wYXRjaC5iaW5kKHRoaXMpLCB0aGlzLnVucGF0Y2guYmluZCh0aGlzKSk7XG4gICAgICAgIHJldHVybiBtb2R1bGU7XG4gICAgfVxuICAgIHBhdGNoKG1vZHVsZSwgbW9kdWxlVmVyc2lvbikge1xuICAgICAgICBjb25zdCBtb2R1bGVFeHBvcnRzID0gbW9kdWxlW1N5bWJvbC50b1N0cmluZ1RhZ10gPT09ICdNb2R1bGUnXG4gICAgICAgICAgICA/IG1vZHVsZS5kZWZhdWx0IC8vIEVTTVxuICAgICAgICAgICAgOiBtb2R1bGU7IC8vIENvbW1vbkpTXG4gICAgICAgIHRoaXMuX3dyYXAobW9kdWxlRXhwb3J0cy5Nb2RlbC5wcm90b3R5cGUsICdzYXZlJywgdGhpcy5wYXRjaE9uTW9kZWxNZXRob2RzKCdzYXZlJywgbW9kdWxlVmVyc2lvbikpO1xuICAgICAgICAvLyBtb25nb29zZSBhcHBsaWVzIHRoaXMgY29kZSBvbiBtb2R1bGUgcmVxdWlyZTpcbiAgICAgICAgLy8gTW9kZWwucHJvdG90eXBlLiRzYXZlID0gTW9kZWwucHJvdG90eXBlLnNhdmU7XG4gICAgICAgIC8vIHdoaWNoIGNhcHR1cmVzIHRoZSBzYXZlIGZ1bmN0aW9uIGJlZm9yZSBpdCBpcyBwYXRjaGVkLlxuICAgICAgICAvLyBzbyB3ZSBuZWVkIHRvIGFwcGx5IHRoZSBzYW1lIGxvZ2ljIGFmdGVyIGluc3RydW1lbnRpbmcgdGhlIHNhdmUgZnVuY3Rpb24uXG4gICAgICAgIG1vZHVsZUV4cG9ydHMuTW9kZWwucHJvdG90eXBlLiRzYXZlID0gbW9kdWxlRXhwb3J0cy5Nb2RlbC5wcm90b3R5cGUuc2F2ZTtcbiAgICAgICAgaWYgKGluc3RydW1lbnRSZW1vdmUobW9kdWxlVmVyc2lvbikpIHtcbiAgICAgICAgICAgIHRoaXMuX3dyYXAobW9kdWxlRXhwb3J0cy5Nb2RlbC5wcm90b3R5cGUsICdyZW1vdmUnLCB0aGlzLnBhdGNoT25Nb2RlbE1ldGhvZHMoJ3JlbW92ZScsIG1vZHVsZVZlcnNpb24pKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBNb25nb29zZSA4LjIxLjArIGNoYW5nZWQgRG9jdW1lbnQudXBkYXRlT25lKCkvZGVsZXRlT25lKCkgc28gdGhhdCB0aGUgUXVlcnkgaXMgbm90IGZ1bGx5IGJ1aWx0IHdoZW4gUXVlcnkuZXhlYygpIGlzIGNhbGxlZC5cbiAgICAgICAgLy9cbiAgICAgICAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9BdXRvbWF0dGljL21vbmdvb3NlL2Jsb2IvN2RiZGExMmRjYTFiZDdhZGI5ZTI3MGQ3ZGU4YWM1MjI5NjA2Y2U3Mi9saWIvZG9jdW1lbnQuanMjTDg2MS5cbiAgICAgICAgLy8gLSBgdGhpc2AgaXMgYSBRdWVyeSBvYmplY3RcbiAgICAgICAgLy8gLSB0aGUgdXBkYXRlIGhhcHBlbnMgaW4gYSBwcmUtaG9vayB0aGF0IGdldHMgY2FsbGVkIHdoZW4gUXVlcnkuZXhlYygpIGlzIGFscmVhZHkgcnVubmluZy5cbiAgICAgICAgLy8gLSB3aGVuIHdlIGluc3RydW1lbnQgUXVlcnkuZXhlYygpLCB3ZSBkb24ndCBoYXZlIGFjY2VzcyB0byB0aGUgb3B0aW9ucyB5ZXQgYXMgdGhleSBnZXQgc2V0IGR1cmluZyBRdWVyeS5leGVjKCkgb25seS5cbiAgICAgICAgLy9cbiAgICAgICAgLy8gVW5mb3J0dW5hdGVseSwgYWZ0ZXIgUXVlcnkuZXhlYygpIGlzIGZpbmlzaGVkLCB0aGUgb3B0aW9ucyBhcmUgbGVmdCBtb2RpZmllZCBieSB0aGUgbGlicmFyeSwgc28ganVzdCBkZWxheWluZ1xuICAgICAgICAvLyBhdHRhY2hpbmcgdGhlIGF0dHJpYnV0ZXMgYWZ0ZXIgdGhlIHNwYW4gaXMgZG9uZSBpcyBub3QgYW4gb3B0aW9uLiBUaGVyZWZvcmUsIHdlIHBhdGNoIE1vZGVsIG1ldGhvZHNcbiAgICAgICAgLy8gYW5kIGdyYWIgdGhlIGRhdGEgZGlyZWN0bHkgd2hlcmUgdGhlIHVzZXIgcHJvdmlkZXMgaXQuXG4gICAgICAgIC8vXG4gICAgICAgIC8vIHJlZjogaHR0cHM6Ly9naXRodWIuY29tL0F1dG9tYXR0aWMvbW9uZ29vc2UvcHVsbC8xNTkwOCAoaW50cm9kdWNlZCB0aGlzIGJlaGF2aW9yKVxuICAgICAgICBpZiAobmVlZHNEb2N1bWVudE1ldGhvZFBhdGNoKG1vZHVsZVZlcnNpb24pKSB7XG4gICAgICAgICAgICB0aGlzLl93cmFwKG1vZHVsZUV4cG9ydHMuTW9kZWwucHJvdG90eXBlLCAndXBkYXRlT25lJywgdGhpcy5fcGF0Y2hEb2N1bWVudFVwZGF0ZU1ldGhvZHMoJ3VwZGF0ZU9uZScsIG1vZHVsZVZlcnNpb24pKTtcbiAgICAgICAgICAgIHRoaXMuX3dyYXAobW9kdWxlRXhwb3J0cy5Nb2RlbC5wcm90b3R5cGUsICdkZWxldGVPbmUnLCB0aGlzLl9wYXRjaERvY3VtZW50VXBkYXRlTWV0aG9kcygnZGVsZXRlT25lJywgbW9kdWxlVmVyc2lvbikpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3dyYXAobW9kdWxlRXhwb3J0cy5RdWVyeS5wcm90b3R5cGUsICdleGVjJywgdGhpcy5wYXRjaFF1ZXJ5RXhlYyhtb2R1bGVWZXJzaW9uKSk7XG4gICAgICAgIHRoaXMuX3dyYXAobW9kdWxlRXhwb3J0cy5BZ2dyZWdhdGUucHJvdG90eXBlLCAnZXhlYycsIHRoaXMucGF0Y2hBZ2dyZWdhdGVFeGVjKG1vZHVsZVZlcnNpb24pKTtcbiAgICAgICAgY29uc3QgY29udGV4dENhcHR1cmVGdW5jdGlvbnMgPSBnZXRDb250ZXh0Q2FwdHVyZUZ1bmN0aW9ucyhtb2R1bGVWZXJzaW9uKTtcbiAgICAgICAgY29udGV4dENhcHR1cmVGdW5jdGlvbnMuZm9yRWFjaCgoZnVuY05hbWUpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3dyYXAobW9kdWxlRXhwb3J0cy5RdWVyeS5wcm90b3R5cGUsIGZ1bmNOYW1lLCB0aGlzLnBhdGNoQW5kQ2FwdHVyZVNwYW5Db250ZXh0KGZ1bmNOYW1lKSk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLl93cmFwKG1vZHVsZUV4cG9ydHMuTW9kZWwsICdhZ2dyZWdhdGUnLCB0aGlzLnBhdGNoTW9kZWxBZ2dyZWdhdGUoKSk7XG4gICAgICAgIHRoaXMuX3dyYXAobW9kdWxlRXhwb3J0cy5Nb2RlbCwgJ2luc2VydE1hbnknLCB0aGlzLnBhdGNoTW9kZWxTdGF0aWMoJ2luc2VydE1hbnknLCBtb2R1bGVWZXJzaW9uKSk7XG4gICAgICAgIHRoaXMuX3dyYXAobW9kdWxlRXhwb3J0cy5Nb2RlbCwgJ2J1bGtXcml0ZScsIHRoaXMucGF0Y2hNb2RlbFN0YXRpYygnYnVsa1dyaXRlJywgbW9kdWxlVmVyc2lvbikpO1xuICAgICAgICByZXR1cm4gbW9kdWxlRXhwb3J0cztcbiAgICB9XG4gICAgdW5wYXRjaChtb2R1bGUsIG1vZHVsZVZlcnNpb24pIHtcbiAgICAgICAgY29uc3QgbW9kdWxlRXhwb3J0cyA9IG1vZHVsZVtTeW1ib2wudG9TdHJpbmdUYWddID09PSAnTW9kdWxlJ1xuICAgICAgICAgICAgPyBtb2R1bGUuZGVmYXVsdCAvLyBFU01cbiAgICAgICAgICAgIDogbW9kdWxlOyAvLyBDb21tb25KU1xuICAgICAgICBjb25zdCBjb250ZXh0Q2FwdHVyZUZ1bmN0aW9ucyA9IGdldENvbnRleHRDYXB0dXJlRnVuY3Rpb25zKG1vZHVsZVZlcnNpb24pO1xuICAgICAgICB0aGlzLl91bndyYXAobW9kdWxlRXhwb3J0cy5Nb2RlbC5wcm90b3R5cGUsICdzYXZlJyk7XG4gICAgICAgIC8vIHJldmVydCB0aGUgcGF0Y2ggZm9yICRzYXZlIHdoaWNoIHdlIGFwcGxpZWQgYnkgYWxpYXNpbmcgaXQgdG8gcGF0Y2hlZCBgc2F2ZWBcbiAgICAgICAgbW9kdWxlRXhwb3J0cy5Nb2RlbC5wcm90b3R5cGUuJHNhdmUgPSBtb2R1bGVFeHBvcnRzLk1vZGVsLnByb3RvdHlwZS5zYXZlO1xuICAgICAgICBpZiAoaW5zdHJ1bWVudFJlbW92ZShtb2R1bGVWZXJzaW9uKSkge1xuICAgICAgICAgICAgdGhpcy5fdW53cmFwKG1vZHVsZUV4cG9ydHMuTW9kZWwucHJvdG90eXBlLCAncmVtb3ZlJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5lZWRzRG9jdW1lbnRNZXRob2RQYXRjaChtb2R1bGVWZXJzaW9uKSkge1xuICAgICAgICAgICAgdGhpcy5fdW53cmFwKG1vZHVsZUV4cG9ydHMuTW9kZWwucHJvdG90eXBlLCAndXBkYXRlT25lJyk7XG4gICAgICAgICAgICB0aGlzLl91bndyYXAobW9kdWxlRXhwb3J0cy5Nb2RlbC5wcm90b3R5cGUsICdkZWxldGVPbmUnKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl91bndyYXAobW9kdWxlRXhwb3J0cy5RdWVyeS5wcm90b3R5cGUsICdleGVjJyk7XG4gICAgICAgIHRoaXMuX3Vud3JhcChtb2R1bGVFeHBvcnRzLkFnZ3JlZ2F0ZS5wcm90b3R5cGUsICdleGVjJyk7XG4gICAgICAgIGNvbnRleHRDYXB0dXJlRnVuY3Rpb25zLmZvckVhY2goKGZ1bmNOYW1lKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl91bndyYXAobW9kdWxlRXhwb3J0cy5RdWVyeS5wcm90b3R5cGUsIGZ1bmNOYW1lKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX3Vud3JhcChtb2R1bGVFeHBvcnRzLk1vZGVsLCAnYWdncmVnYXRlJyk7XG4gICAgICAgIHRoaXMuX3Vud3JhcChtb2R1bGVFeHBvcnRzLk1vZGVsLCAnaW5zZXJ0TWFueScpO1xuICAgICAgICB0aGlzLl91bndyYXAobW9kdWxlRXhwb3J0cy5Nb2RlbCwgJ2J1bGtXcml0ZScpO1xuICAgIH1cbiAgICBwYXRjaEFnZ3JlZ2F0ZUV4ZWMobW9kdWxlVmVyc2lvbikge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgcmV0dXJuIChvcmlnaW5hbEFnZ3JlZ2F0ZSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIGV4ZWMoY2FsbGJhY2spIHtcbiAgICAgICAgICAgICAgICBpZiAoc2VsZi5nZXRDb25maWcoKS5yZXF1aXJlUGFyZW50U3BhbiAmJlxuICAgICAgICAgICAgICAgICAgICBhcGlfMS50cmFjZS5nZXRTcGFuKGFwaV8xLmNvbnRleHQuYWN0aXZlKCkpID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9yaWdpbmFsQWdncmVnYXRlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudFNwYW4gPSB0aGlzW2V4cG9ydHMuX1NUT1JFRF9QQVJFTlRfU1BBTl07XG4gICAgICAgICAgICAgICAgY29uc3QgYXR0cmlidXRlcyA9IHt9O1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgZGJTdGF0ZW1lbnRTZXJpYWxpemVyIH0gPSBzZWxmLmdldENvbmZpZygpO1xuICAgICAgICAgICAgICAgIGlmIChkYlN0YXRlbWVudFNlcmlhbGl6ZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RhdGVtZW50ID0gZGJTdGF0ZW1lbnRTZXJpYWxpemVyKCdhZ2dyZWdhdGUnLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiB0aGlzLm9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBhZ2dyZWdhdGVQaXBlbGluZTogdGhpcy5fcGlwZWxpbmUsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZi5fZGJTZW1jb252U3RhYmlsaXR5ICYgaW5zdHJ1bWVudGF0aW9uXzEuU2VtY29udlN0YWJpbGl0eS5PTEQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXNbc2VtY29udl8xLkFUVFJfREJfU1RBVEVNRU5UXSA9IHN0YXRlbWVudDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZi5fZGJTZW1jb252U3RhYmlsaXR5ICYgaW5zdHJ1bWVudGF0aW9uXzEuU2VtY29udlN0YWJpbGl0eS5TVEFCTEUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXNbc2VtYW50aWNfY29udmVudGlvbnNfMS5BVFRSX0RCX1FVRVJZX1RFWFRdID0gc3RhdGVtZW50O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IHNwYW4gPSBzZWxmLl9zdGFydFNwYW4odGhpcy5fbW9kZWwuY29sbGVjdGlvbiwgdGhpcy5fbW9kZWw/Lm1vZGVsTmFtZSwgJ2FnZ3JlZ2F0ZScsIGF0dHJpYnV0ZXMsIHBhcmVudFNwYW4pO1xuICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9oYW5kbGVSZXNwb25zZShzcGFuLCBvcmlnaW5hbEFnZ3JlZ2F0ZSwgdGhpcywgYXJndW1lbnRzLCBjYWxsYmFjaywgbW9kdWxlVmVyc2lvbik7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9O1xuICAgIH1cbiAgICBwYXRjaFF1ZXJ5RXhlYyhtb2R1bGVWZXJzaW9uKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICByZXR1cm4gKG9yaWdpbmFsRXhlYykgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIGV4ZWMoY2FsbGJhY2spIHtcbiAgICAgICAgICAgICAgICAvLyBTa2lwIGlmIGFscmVhZHkgaW5zdHJ1bWVudGVkIGJ5IGRvY3VtZW50IGluc3RhbmNlIG1ldGhvZCBwYXRjaFxuICAgICAgICAgICAgICAgIGlmICh0aGlzW2V4cG9ydHMuX0FMUkVBRFlfSU5TVFJVTUVOVEVEXSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3JpZ2luYWxFeGVjLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChzZWxmLmdldENvbmZpZygpLnJlcXVpcmVQYXJlbnRTcGFuICYmXG4gICAgICAgICAgICAgICAgICAgIGFwaV8xLnRyYWNlLmdldFNwYW4oYXBpXzEuY29udGV4dC5hY3RpdmUoKSkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3JpZ2luYWxFeGVjLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudFNwYW4gPSB0aGlzW2V4cG9ydHMuX1NUT1JFRF9QQVJFTlRfU1BBTl07XG4gICAgICAgICAgICAgICAgY29uc3QgYXR0cmlidXRlcyA9IHt9O1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgZGJTdGF0ZW1lbnRTZXJpYWxpemVyIH0gPSBzZWxmLmdldENvbmZpZygpO1xuICAgICAgICAgICAgICAgIGlmIChkYlN0YXRlbWVudFNlcmlhbGl6ZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RhdGVtZW50ID0gZGJTdGF0ZW1lbnRTZXJpYWxpemVyKHRoaXMub3AsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFVzZSBwdWJsaWMgQVBJIG1ldGhvZHMgKGdldEZpbHRlci9nZXRPcHRpb25zKSBmb3IgYmV0dGVyIGNvbXBhdGliaWxpdHlcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbjogdGhpcy5nZXRGaWx0ZXI/LigpID8/IHRoaXMuX2NvbmRpdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVzOiB0aGlzLl91cGRhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiB0aGlzLmdldE9wdGlvbnM/LigpID8/IHRoaXMub3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkczogdGhpcy5fZmllbGRzLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGYuX2RiU2VtY29udlN0YWJpbGl0eSAmIGluc3RydW1lbnRhdGlvbl8xLlNlbWNvbnZTdGFiaWxpdHkuT0xEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzW3NlbWNvbnZfMS5BVFRSX0RCX1NUQVRFTUVOVF0gPSBzdGF0ZW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGYuX2RiU2VtY29udlN0YWJpbGl0eSAmIGluc3RydW1lbnRhdGlvbl8xLlNlbWNvbnZTdGFiaWxpdHkuU1RBQkxFKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzW3NlbWFudGljX2NvbnZlbnRpb25zXzEuQVRUUl9EQl9RVUVSWV9URVhUXSA9IHN0YXRlbWVudDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBzcGFuID0gc2VsZi5fc3RhcnRTcGFuKHRoaXMubW9uZ29vc2VDb2xsZWN0aW9uLCB0aGlzLm1vZGVsLm1vZGVsTmFtZSwgdGhpcy5vcCwgYXR0cmlidXRlcywgcGFyZW50U3Bhbik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2hhbmRsZVJlc3BvbnNlKHNwYW4sIG9yaWdpbmFsRXhlYywgdGhpcywgYXJndW1lbnRzLCBjYWxsYmFjaywgbW9kdWxlVmVyc2lvbik7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9O1xuICAgIH1cbiAgICBwYXRjaE9uTW9kZWxNZXRob2RzKG9wLCBtb2R1bGVWZXJzaW9uKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICByZXR1cm4gKG9yaWdpbmFsT25Nb2RlbEZ1bmN0aW9uKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gbWV0aG9kKG9wdGlvbnMsIGNhbGxiYWNrKSB7XG4gICAgICAgICAgICAgICAgaWYgKHNlbGYuZ2V0Q29uZmlnKCkucmVxdWlyZVBhcmVudFNwYW4gJiZcbiAgICAgICAgICAgICAgICAgICAgYXBpXzEudHJhY2UuZ2V0U3BhbihhcGlfMS5jb250ZXh0LmFjdGl2ZSgpKSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvcmlnaW5hbE9uTW9kZWxGdW5jdGlvbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBzZXJpYWxpemVQYXlsb2FkID0geyBkb2N1bWVudDogdGhpcyB9O1xuICAgICAgICAgICAgICAgIGlmIChvcHRpb25zICYmICEob3B0aW9ucyBpbnN0YW5jZW9mIEZ1bmN0aW9uKSkge1xuICAgICAgICAgICAgICAgICAgICBzZXJpYWxpemVQYXlsb2FkLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBhdHRyaWJ1dGVzID0ge307XG4gICAgICAgICAgICAgICAgY29uc3QgeyBkYlN0YXRlbWVudFNlcmlhbGl6ZXIgfSA9IHNlbGYuZ2V0Q29uZmlnKCk7XG4gICAgICAgICAgICAgICAgaWYgKGRiU3RhdGVtZW50U2VyaWFsaXplcikge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGF0ZW1lbnQgPSBkYlN0YXRlbWVudFNlcmlhbGl6ZXIob3AsIHNlcmlhbGl6ZVBheWxvYWQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZi5fZGJTZW1jb252U3RhYmlsaXR5ICYgaW5zdHJ1bWVudGF0aW9uXzEuU2VtY29udlN0YWJpbGl0eS5PTEQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXNbc2VtY29udl8xLkFUVFJfREJfU1RBVEVNRU5UXSA9IHN0YXRlbWVudDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZi5fZGJTZW1jb252U3RhYmlsaXR5ICYgaW5zdHJ1bWVudGF0aW9uXzEuU2VtY29udlN0YWJpbGl0eS5TVEFCTEUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXNbc2VtYW50aWNfY29udmVudGlvbnNfMS5BVFRSX0RCX1FVRVJZX1RFWFRdID0gc3RhdGVtZW50O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IHNwYW4gPSBzZWxmLl9zdGFydFNwYW4odGhpcy5jb25zdHJ1Y3Rvci5jb2xsZWN0aW9uLCB0aGlzLmNvbnN0cnVjdG9yLm1vZGVsTmFtZSwgb3AsIGF0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgICAgIGlmIChvcHRpb25zIGluc3RhbmNlb2YgRnVuY3Rpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2sgPSBvcHRpb25zO1xuICAgICAgICAgICAgICAgICAgICBvcHRpb25zID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5faGFuZGxlUmVzcG9uc2Uoc3Bhbiwgb3JpZ2luYWxPbk1vZGVsRnVuY3Rpb24sIHRoaXMsIGFyZ3VtZW50cywgY2FsbGJhY2ssIG1vZHVsZVZlcnNpb24pO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfTtcbiAgICB9XG4gICAgLy8gUGF0Y2ggZG9jdW1lbnQgaW5zdGFuY2UgbWV0aG9kcyAoZG9jLnVwZGF0ZU9uZS9kZWxldGVPbmUpIGZvciBNb25nb29zZSA4LjIxLjArLlxuICAgIF9wYXRjaERvY3VtZW50VXBkYXRlTWV0aG9kcyhvcCwgbW9kdWxlVmVyc2lvbikge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgcmV0dXJuIChvcmlnaW5hbE1ldGhvZCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIG1ldGhvZCh1cGRhdGUsIG9wdGlvbnMsIGNhbGxiYWNrKSB7XG4gICAgICAgICAgICAgICAgaWYgKHNlbGYuZ2V0Q29uZmlnKCkucmVxdWlyZVBhcmVudFNwYW4gJiZcbiAgICAgICAgICAgICAgICAgICAgYXBpXzEudHJhY2UuZ2V0U3BhbihhcGlfMS5jb250ZXh0LmFjdGl2ZSgpKSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvcmlnaW5hbE1ldGhvZC5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBkZXRlcm1pbmUgYWN0dWFsIGNhbGxiYWNrIHNpbmNlIGRpZmZlcmVudCBhcmd1bWVudCBwYXR0ZXJucyBhcmUgYWxsb3dlZFxuICAgICAgICAgICAgICAgIGxldCBhY3R1YWxDYWxsYmFjayA9IGNhbGxiYWNrO1xuICAgICAgICAgICAgICAgIGxldCBhY3R1YWxVcGRhdGUgPSB1cGRhdGU7XG4gICAgICAgICAgICAgICAgbGV0IGFjdHVhbE9wdGlvbnMgPSBvcHRpb25zO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdXBkYXRlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgIGFjdHVhbENhbGxiYWNrID0gdXBkYXRlO1xuICAgICAgICAgICAgICAgICAgICBhY3R1YWxVcGRhdGUgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgIGFjdHVhbE9wdGlvbnMgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHR5cGVvZiBvcHRpb25zID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgIGFjdHVhbENhbGxiYWNrID0gb3B0aW9ucztcbiAgICAgICAgICAgICAgICAgICAgYWN0dWFsT3B0aW9ucyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgYXR0cmlidXRlcyA9IHt9O1xuICAgICAgICAgICAgICAgIGNvbnN0IGRiU3RhdGVtZW50U2VyaWFsaXplciA9IHNlbGYuZ2V0Q29uZmlnKCkuZGJTdGF0ZW1lbnRTZXJpYWxpemVyO1xuICAgICAgICAgICAgICAgIGlmIChkYlN0YXRlbWVudFNlcmlhbGl6ZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RhdGVtZW50ID0gZGJTdGF0ZW1lbnRTZXJpYWxpemVyKG9wLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBEb2N1bWVudCBpbnN0YW5jZSBtZXRob2RzIGF1dG9tYXRpY2FsbHkgdXNlIHRoZSBkb2N1bWVudCdzIF9pZCBhcyBmaWx0ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbjogeyBfaWQ6IHRoaXMuX2lkIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVzOiBhY3R1YWxVcGRhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiBhY3R1YWxPcHRpb25zLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGYuX2RiU2VtY29udlN0YWJpbGl0eSAmIGluc3RydW1lbnRhdGlvbl8xLlNlbWNvbnZTdGFiaWxpdHkuT0xEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzW3NlbWNvbnZfMS5BVFRSX0RCX1NUQVRFTUVOVF0gPSBzdGF0ZW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGYuX2RiU2VtY29udlN0YWJpbGl0eSAmIGluc3RydW1lbnRhdGlvbl8xLlNlbWNvbnZTdGFiaWxpdHkuU1RBQkxFKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzW3NlbWFudGljX2NvbnZlbnRpb25zXzEuQVRUUl9EQl9RVUVSWV9URVhUXSA9IHN0YXRlbWVudDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBzcGFuID0gc2VsZi5fc3RhcnRTcGFuKHRoaXMuY29uc3RydWN0b3IuY29sbGVjdGlvbiwgdGhpcy5jb25zdHJ1Y3Rvci5tb2RlbE5hbWUsIG9wLCBhdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBzZWxmLl9oYW5kbGVSZXNwb25zZShzcGFuLCBvcmlnaW5hbE1ldGhvZCwgdGhpcywgYXJndW1lbnRzLCBhY3R1YWxDYWxsYmFjaywgbW9kdWxlVmVyc2lvbik7XG4gICAgICAgICAgICAgICAgLy8gTWFyayByZXR1cm5lZCBRdWVyeSB0byBwcmV2ZW50IGRvdWJsZS1pbnN0cnVtZW50YXRpb24gd2hlbiBleGVjKCkgaXMgZXZlbnR1YWxseSBjYWxsZWRcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0ICYmIHR5cGVvZiByZXN1bHQgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdFtleHBvcnRzLl9BTFJFQURZX0lOU1RSVU1FTlRFRF0gPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfTtcbiAgICB9XG4gICAgcGF0Y2hNb2RlbFN0YXRpYyhvcCwgbW9kdWxlVmVyc2lvbikge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgcmV0dXJuIChvcmlnaW5hbCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIHBhdGNoZWRTdGF0aWMoZG9jc09yT3BzLCBvcHRpb25zLCBjYWxsYmFjaykge1xuICAgICAgICAgICAgICAgIGlmIChzZWxmLmdldENvbmZpZygpLnJlcXVpcmVQYXJlbnRTcGFuICYmXG4gICAgICAgICAgICAgICAgICAgIGFwaV8xLnRyYWNlLmdldFNwYW4oYXBpXzEuY29udGV4dC5hY3RpdmUoKSkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3JpZ2luYWwuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBvcHRpb25zID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrID0gb3B0aW9ucztcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3Qgc2VyaWFsaXplUGF5bG9hZCA9IHt9O1xuICAgICAgICAgICAgICAgIHN3aXRjaCAob3ApIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5zZXJ0TWFueSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXJpYWxpemVQYXlsb2FkLmRvY3VtZW50cyA9IGRvY3NPck9wcztcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdidWxrV3JpdGUnOlxuICAgICAgICAgICAgICAgICAgICAgICAgc2VyaWFsaXplUGF5bG9hZC5vcGVyYXRpb25zID0gZG9jc09yT3BzO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXJpYWxpemVQYXlsb2FkLmRvY3VtZW50ID0gZG9jc09yT3BzO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChvcHRpb25zICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgc2VyaWFsaXplUGF5bG9hZC5vcHRpb25zID0gb3B0aW9ucztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgYXR0cmlidXRlcyA9IHt9O1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgZGJTdGF0ZW1lbnRTZXJpYWxpemVyIH0gPSBzZWxmLmdldENvbmZpZygpO1xuICAgICAgICAgICAgICAgIGlmIChkYlN0YXRlbWVudFNlcmlhbGl6ZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RhdGVtZW50ID0gZGJTdGF0ZW1lbnRTZXJpYWxpemVyKG9wLCBzZXJpYWxpemVQYXlsb2FkKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGYuX2RiU2VtY29udlN0YWJpbGl0eSAmIGluc3RydW1lbnRhdGlvbl8xLlNlbWNvbnZTdGFiaWxpdHkuT0xEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzW3NlbWNvbnZfMS5BVFRSX0RCX1NUQVRFTUVOVF0gPSBzdGF0ZW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGYuX2RiU2VtY29udlN0YWJpbGl0eSAmIGluc3RydW1lbnRhdGlvbl8xLlNlbWNvbnZTdGFiaWxpdHkuU1RBQkxFKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzW3NlbWFudGljX2NvbnZlbnRpb25zXzEuQVRUUl9EQl9RVUVSWV9URVhUXSA9IHN0YXRlbWVudDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBzcGFuID0gc2VsZi5fc3RhcnRTcGFuKHRoaXMuY29sbGVjdGlvbiwgdGhpcy5tb2RlbE5hbWUsIG9wLCBhdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5faGFuZGxlUmVzcG9uc2Uoc3Bhbiwgb3JpZ2luYWwsIHRoaXMsIGFyZ3VtZW50cywgY2FsbGJhY2ssIG1vZHVsZVZlcnNpb24pO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfTtcbiAgICB9XG4gICAgLy8gd2Ugd2FudCB0byBjYXB0dXJlIHRoZSBvdGVsIHNwYW4gb24gdGhlIG9iamVjdCB3aGljaCBpcyBjYWxsaW5nIGV4ZWMuXG4gICAgLy8gaW4gdGhlIHNwZWNpYWwgY2FzZSBvZiBhZ2dyZWdhdGUsIHdlIG5lZWQgaGF2ZSBubyBmdW5jdGlvbiB0byBwYXRoXG4gICAgLy8gb24gdGhlIEFnZ3JlZ2F0ZSBvYmplY3QgdG8gY2FwdHVyZSB0aGUgY29udGV4dCBvbiwgc28gd2UgcGF0Y2hcbiAgICAvLyB0aGUgYWdncmVnYXRlIG9mIE1vZGVsLCBhbmQgc2V0IHRoZSBjb250ZXh0IG9uIHRoZSBBZ2dyZWdhdGUgb2JqZWN0XG4gICAgcGF0Y2hNb2RlbEFnZ3JlZ2F0ZSgpIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIHJldHVybiAob3JpZ2luYWwpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiBjYXB0dXJlU3BhbkNvbnRleHQoKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY3VycmVudFNwYW4gPSBhcGlfMS50cmFjZS5nZXRTcGFuKGFwaV8xLmNvbnRleHQuYWN0aXZlKCkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGFnZ3JlZ2F0ZSA9IHNlbGYuX2NhbGxPcmlnaW5hbEZ1bmN0aW9uKCgpID0+IG9yaWdpbmFsLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykpO1xuICAgICAgICAgICAgICAgIGlmIChhZ2dyZWdhdGUpXG4gICAgICAgICAgICAgICAgICAgIGFnZ3JlZ2F0ZVtleHBvcnRzLl9TVE9SRURfUEFSRU5UX1NQQU5dID0gY3VycmVudFNwYW47XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFnZ3JlZ2F0ZTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH07XG4gICAgfVxuICAgIHBhdGNoQW5kQ2FwdHVyZVNwYW5Db250ZXh0KGZ1bmNOYW1lKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICByZXR1cm4gKG9yaWdpbmFsKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gY2FwdHVyZVNwYW5Db250ZXh0KCkge1xuICAgICAgICAgICAgICAgIHRoaXNbZXhwb3J0cy5fU1RPUkVEX1BBUkVOVF9TUEFOXSA9IGFwaV8xLnRyYWNlLmdldFNwYW4oYXBpXzEuY29udGV4dC5hY3RpdmUoKSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2NhbGxPcmlnaW5hbEZ1bmN0aW9uKCgpID0+IG9yaWdpbmFsLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfTtcbiAgICB9XG4gICAgX3N0YXJ0U3Bhbihjb2xsZWN0aW9uLCBtb2RlbE5hbWUsIG9wZXJhdGlvbiwgYXR0cmlidXRlcywgcGFyZW50U3Bhbikge1xuICAgICAgICBjb25zdCBmaW5hbEF0dHJpYnV0ZXMgPSB7XG4gICAgICAgICAgICAuLi5hdHRyaWJ1dGVzLFxuICAgICAgICAgICAgLi4uKDAsIHV0aWxzXzEuZ2V0QXR0cmlidXRlc0Zyb21Db2xsZWN0aW9uKShjb2xsZWN0aW9uLCB0aGlzLl9kYlNlbWNvbnZTdGFiaWxpdHksIHRoaXMuX25ldFNlbWNvbnZTdGFiaWxpdHkpLFxuICAgICAgICB9O1xuICAgICAgICBpZiAodGhpcy5fZGJTZW1jb252U3RhYmlsaXR5ICYgaW5zdHJ1bWVudGF0aW9uXzEuU2VtY29udlN0YWJpbGl0eS5PTEQpIHtcbiAgICAgICAgICAgIGZpbmFsQXR0cmlidXRlc1tzZW1jb252XzEuQVRUUl9EQl9PUEVSQVRJT05dID0gb3BlcmF0aW9uO1xuICAgICAgICAgICAgZmluYWxBdHRyaWJ1dGVzW3NlbWNvbnZfMS5BVFRSX0RCX1NZU1RFTV0gPSAnbW9uZ29vc2UnOyAvLyBrZWVwIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eVxuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLl9kYlNlbWNvbnZTdGFiaWxpdHkgJiBpbnN0cnVtZW50YXRpb25fMS5TZW1jb252U3RhYmlsaXR5LlNUQUJMRSkge1xuICAgICAgICAgICAgZmluYWxBdHRyaWJ1dGVzW3NlbWFudGljX2NvbnZlbnRpb25zXzEuQVRUUl9EQl9PUEVSQVRJT05fTkFNRV0gPSBvcGVyYXRpb247XG4gICAgICAgICAgICBmaW5hbEF0dHJpYnV0ZXNbc2VtYW50aWNfY29udmVudGlvbnNfMS5BVFRSX0RCX1NZU1RFTV9OQU1FXSA9IHNlbWNvbnZfMS5EQl9TWVNURU1fTkFNRV9WQUxVRV9NT05HT0RCOyAvLyBhY3R1YWwgZGIgc3lzdGVtIG5hbWVcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzcGFuTmFtZSA9IHRoaXMuX2RiU2VtY29udlN0YWJpbGl0eSAmIGluc3RydW1lbnRhdGlvbl8xLlNlbWNvbnZTdGFiaWxpdHkuU1RBQkxFXG4gICAgICAgICAgICA/IGAke29wZXJhdGlvbn0gJHtjb2xsZWN0aW9uLm5hbWV9YFxuICAgICAgICAgICAgOiBgbW9uZ29vc2UuJHttb2RlbE5hbWV9LiR7b3BlcmF0aW9ufWA7XG4gICAgICAgIHJldHVybiB0aGlzLnRyYWNlci5zdGFydFNwYW4oc3Bhbk5hbWUsIHtcbiAgICAgICAgICAgIGtpbmQ6IGFwaV8xLlNwYW5LaW5kLkNMSUVOVCxcbiAgICAgICAgICAgIGF0dHJpYnV0ZXM6IGZpbmFsQXR0cmlidXRlcyxcbiAgICAgICAgfSwgcGFyZW50U3BhbiA/IGFwaV8xLnRyYWNlLnNldFNwYW4oYXBpXzEuY29udGV4dC5hY3RpdmUoKSwgcGFyZW50U3BhbikgOiB1bmRlZmluZWQpO1xuICAgIH1cbiAgICBfaGFuZGxlUmVzcG9uc2Uoc3BhbiwgZXhlYywgb3JpZ2luYWxUaGlzLCBhcmdzLCBjYWxsYmFjaywgbW9kdWxlVmVyc2lvbiA9IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgaWYgKGNhbGxiYWNrIGluc3RhbmNlb2YgRnVuY3Rpb24pIHtcbiAgICAgICAgICAgIHJldHVybiBzZWxmLl9jYWxsT3JpZ2luYWxGdW5jdGlvbigoKSA9PiAoMCwgdXRpbHNfMS5oYW5kbGVDYWxsYmFja1Jlc3BvbnNlKShjYWxsYmFjaywgZXhlYywgb3JpZ2luYWxUaGlzLCBzcGFuLCBhcmdzLCBzZWxmLmdldENvbmZpZygpLnJlc3BvbnNlSG9vaywgbW9kdWxlVmVyc2lvbikpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBzZWxmLl9jYWxsT3JpZ2luYWxGdW5jdGlvbigoKSA9PiBleGVjLmFwcGx5KG9yaWdpbmFsVGhpcywgYXJncykpO1xuICAgICAgICAgICAgcmV0dXJuICgwLCB1dGlsc18xLmhhbmRsZVByb21pc2VSZXNwb25zZSkocmVzcG9uc2UsIHNwYW4sIHNlbGYuZ2V0Q29uZmlnKCkucmVzcG9uc2VIb29rLCBtb2R1bGVWZXJzaW9uKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBfY2FsbE9yaWdpbmFsRnVuY3Rpb24ob3JpZ2luYWxGdW5jdGlvbikge1xuICAgICAgICBpZiAodGhpcy5nZXRDb25maWcoKS5zdXBwcmVzc0ludGVybmFsSW5zdHJ1bWVudGF0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm4gYXBpXzEuY29udGV4dC53aXRoKCgwLCBjb3JlXzEuc3VwcHJlc3NUcmFjaW5nKShhcGlfMS5jb250ZXh0LmFjdGl2ZSgpKSwgb3JpZ2luYWxGdW5jdGlvbik7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gb3JpZ2luYWxGdW5jdGlvbigpO1xuICAgICAgICB9XG4gICAgfVxufVxuZXhwb3J0cy5Nb25nb29zZUluc3RydW1lbnRhdGlvbiA9IE1vbmdvb3NlSW5zdHJ1bWVudGF0aW9uO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9bW9uZ29vc2UuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/.pnpm/@opentelemetry+instrumentation-mongoose@0.60.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-mongoose/build/src/mongoose.js\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(rsc)/./node_modules/.pnpm/@opentelemetry+instrumentation-mongoose@0.60.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-mongoose/build/src/semconv.js":
|
|
/*!******************************************************************************************************************************************************************************!*\
|
|
!*** ./node_modules/.pnpm/@opentelemetry+instrumentation-mongoose@0.60.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-mongoose/build/src/semconv.js ***!
|
|
\******************************************************************************************************************************************************************************/
|
|
/***/ ((__unused_webpack_module, exports) => {
|
|
|
|
eval("\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.DB_SYSTEM_NAME_VALUE_MONGODB = exports.ATTR_NET_PEER_PORT = exports.ATTR_NET_PEER_NAME = exports.ATTR_DB_USER = exports.ATTR_DB_SYSTEM = exports.ATTR_DB_STATEMENT = exports.ATTR_DB_OPERATION = exports.ATTR_DB_NAME = exports.ATTR_DB_MONGODB_COLLECTION = void 0;\n/*\n * This file contains a copy of unstable semantic convention definitions\n * used by this package.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n/**\n * Deprecated, use `db.collection.name` instead.\n *\n * @example \"mytable\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.collection.name`.\n */\nexports.ATTR_DB_MONGODB_COLLECTION = 'db.mongodb.collection';\n/**\n * Deprecated, use `db.namespace` instead.\n *\n * @example customers\n * @example main\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.namespace`.\n */\nexports.ATTR_DB_NAME = 'db.name';\n/**\n * Deprecated, use `db.operation.name` instead.\n *\n * @example findAndModify\n * @example HMSET\n * @example SELECT\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.operation.name`.\n */\nexports.ATTR_DB_OPERATION = 'db.operation';\n/**\n * The database statement being executed.\n *\n * @example SELECT * FROM wuser_table\n * @example SET mykey \"WuValue\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.query.text`.\n */\nexports.ATTR_DB_STATEMENT = 'db.statement';\n/**\n * Deprecated, use `db.system.name` instead.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.system.name`.\n */\nexports.ATTR_DB_SYSTEM = 'db.system';\n/**\n * Deprecated, no replacement at this time.\n *\n * @example readonly_user\n * @example reporting_user\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Removed, no replacement at this time.\n */\nexports.ATTR_DB_USER = 'db.user';\n/**\n * Deprecated, use `server.address` on client spans and `client.address` on server spans.\n *\n * @example example.com\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` on client spans and `client.address` on server spans.\n */\nexports.ATTR_NET_PEER_NAME = 'net.peer.name';\n/**\n * Deprecated, use `server.port` on client spans and `client.port` on server spans.\n *\n * @example 8080\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.port` on client spans and `client.port` on server spans.\n */\nexports.ATTR_NET_PEER_PORT = 'net.peer.port';\n/**\n * Enum value \"mongodb\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [MongoDB](https://www.mongodb.com/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.DB_SYSTEM_NAME_VALUE_MONGODB = 'mongodb';\n//# sourceMappingURL=semconv.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvLnBucG0vQG9wZW50ZWxlbWV0cnkraW5zdHJ1bWVudGF0aW9uLW1vbmdvb3NlQDAuNjAuMF9Ab3BlbnRlbGVtZXRyeSthcGlAMS45LjEvbm9kZV9tb2R1bGVzL0BvcGVudGVsZW1ldHJ5L2luc3RydW1lbnRhdGlvbi1tb25nb29zZS9idWlsZC9zcmMvc2VtY29udi5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhDQUE2QyxFQUFFLGFBQWEsRUFBQztBQUM3RCxvQ0FBb0MsR0FBRywwQkFBMEIsR0FBRywwQkFBMEIsR0FBRyxvQkFBb0IsR0FBRyxzQkFBc0IsR0FBRyx5QkFBeUIsR0FBRyx5QkFBeUIsR0FBRyxvQkFBb0IsR0FBRyxrQ0FBa0M7QUFDbFE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQztBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQjtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQjtBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEI7QUFDMUI7QUFDQSx1Q0FBdUMsMEJBQTBCO0FBQ2pFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQ0FBb0M7QUFDcEMiLCJzb3VyY2VzIjpbIi9Vc2Vycy9tYXJjbWludGVsL1Byb2plY3RzL2UtdGliLmNvbS9ub2RlX21vZHVsZXMvLnBucG0vQG9wZW50ZWxlbWV0cnkraW5zdHJ1bWVudGF0aW9uLW1vbmdvb3NlQDAuNjAuMF9Ab3BlbnRlbGVtZXRyeSthcGlAMS45LjEvbm9kZV9tb2R1bGVzL0BvcGVudGVsZW1ldHJ5L2luc3RydW1lbnRhdGlvbi1tb25nb29zZS9idWlsZC9zcmMvc2VtY29udi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbi8qXG4gKiBDb3B5cmlnaHQgVGhlIE9wZW5UZWxlbWV0cnkgQXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLkRCX1NZU1RFTV9OQU1FX1ZBTFVFX01PTkdPREIgPSBleHBvcnRzLkFUVFJfTkVUX1BFRVJfUE9SVCA9IGV4cG9ydHMuQVRUUl9ORVRfUEVFUl9OQU1FID0gZXhwb3J0cy5BVFRSX0RCX1VTRVIgPSBleHBvcnRzLkFUVFJfREJfU1lTVEVNID0gZXhwb3J0cy5BVFRSX0RCX1NUQVRFTUVOVCA9IGV4cG9ydHMuQVRUUl9EQl9PUEVSQVRJT04gPSBleHBvcnRzLkFUVFJfREJfTkFNRSA9IGV4cG9ydHMuQVRUUl9EQl9NT05HT0RCX0NPTExFQ1RJT04gPSB2b2lkIDA7XG4vKlxuICogVGhpcyBmaWxlIGNvbnRhaW5zIGEgY29weSBvZiB1bnN0YWJsZSBzZW1hbnRpYyBjb252ZW50aW9uIGRlZmluaXRpb25zXG4gKiB1c2VkIGJ5IHRoaXMgcGFja2FnZS5cbiAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvdHJlZS9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zI3Vuc3RhYmxlLXNlbWNvbnZcbiAqL1xuLyoqXG4gKiBEZXByZWNhdGVkLCB1c2UgYGRiLmNvbGxlY3Rpb24ubmFtZWAgaW5zdGVhZC5cbiAqXG4gKiBAZXhhbXBsZSBcIm15dGFibGVcIlxuICpcbiAqIEBleHBlcmltZW50YWwgVGhpcyBhdHRyaWJ1dGUgaXMgZXhwZXJpbWVudGFsIGFuZCBpcyBzdWJqZWN0IHRvIGJyZWFraW5nIGNoYW5nZXMgaW4gbWlub3IgcmVsZWFzZXMgb2YgYEBvcGVudGVsZW1ldHJ5L3NlbWFudGljLWNvbnZlbnRpb25zYC5cbiAqXG4gKiBAZGVwcmVjYXRlZCBSZXBsYWNlZCBieSBgZGIuY29sbGVjdGlvbi5uYW1lYC5cbiAqL1xuZXhwb3J0cy5BVFRSX0RCX01PTkdPREJfQ09MTEVDVElPTiA9ICdkYi5tb25nb2RiLmNvbGxlY3Rpb24nO1xuLyoqXG4gKiBEZXByZWNhdGVkLCB1c2UgYGRiLm5hbWVzcGFjZWAgaW5zdGVhZC5cbiAqXG4gKiBAZXhhbXBsZSBjdXN0b21lcnNcbiAqIEBleGFtcGxlIG1haW5cbiAqXG4gKiBAZXhwZXJpbWVudGFsIFRoaXMgYXR0cmlidXRlIGlzIGV4cGVyaW1lbnRhbCBhbmQgaXMgc3ViamVjdCB0byBicmVha2luZyBjaGFuZ2VzIGluIG1pbm9yIHJlbGVhc2VzIG9mIGBAb3BlbnRlbGVtZXRyeS9zZW1hbnRpYy1jb252ZW50aW9uc2AuXG4gKlxuICogQGRlcHJlY2F0ZWQgUmVwbGFjZWQgYnkgYGRiLm5hbWVzcGFjZWAuXG4gKi9cbmV4cG9ydHMuQVRUUl9EQl9OQU1FID0gJ2RiLm5hbWUnO1xuLyoqXG4gKiBEZXByZWNhdGVkLCB1c2UgYGRiLm9wZXJhdGlvbi5uYW1lYCBpbnN0ZWFkLlxuICpcbiAqIEBleGFtcGxlIGZpbmRBbmRNb2RpZnlcbiAqIEBleGFtcGxlIEhNU0VUXG4gKiBAZXhhbXBsZSBTRUxFQ1RcbiAqXG4gKiBAZXhwZXJpbWVudGFsIFRoaXMgYXR0cmlidXRlIGlzIGV4cGVyaW1lbnRhbCBhbmQgaXMgc3ViamVjdCB0byBicmVha2luZyBjaGFuZ2VzIGluIG1pbm9yIHJlbGVhc2VzIG9mIGBAb3BlbnRlbGVtZXRyeS9zZW1hbnRpYy1jb252ZW50aW9uc2AuXG4gKlxuICogQGRlcHJlY2F0ZWQgUmVwbGFjZWQgYnkgYGRiLm9wZXJhdGlvbi5uYW1lYC5cbiAqL1xuZXhwb3J0cy5BVFRSX0RCX09QRVJBVElPTiA9ICdkYi5vcGVyYXRpb24nO1xuLyoqXG4gKiBUaGUgZGF0YWJhc2Ugc3RhdGVtZW50IGJlaW5nIGV4ZWN1dGVkLlxuICpcbiAqIEBleGFtcGxlIFNFTEVDVCAqIEZST00gd3VzZXJfdGFibGVcbiAqIEBleGFtcGxlIFNFVCBteWtleSBcIld1VmFsdWVcIlxuICpcbiAqIEBleHBlcmltZW50YWwgVGhpcyBhdHRyaWJ1dGUgaXMgZXhwZXJpbWVudGFsIGFuZCBpcyBzdWJqZWN0IHRvIGJyZWFraW5nIGNoYW5nZXMgaW4gbWlub3IgcmVsZWFzZXMgb2YgYEBvcGVudGVsZW1ldHJ5L3NlbWFudGljLWNvbnZlbnRpb25zYC5cbiAqXG4gKiBAZGVwcmVjYXRlZCBSZXBsYWNlZCBieSBgZGIucXVlcnkudGV4dGAuXG4gKi9cbmV4cG9ydHMuQVRUUl9EQl9TVEFURU1FTlQgPSAnZGIuc3RhdGVtZW50Jztcbi8qKlxuICogRGVwcmVjYXRlZCwgdXNlIGBkYi5zeXN0ZW0ubmFtZWAgaW5zdGVhZC5cbiAqXG4gKiBAZXhwZXJpbWVudGFsIFRoaXMgYXR0cmlidXRlIGlzIGV4cGVyaW1lbnRhbCBhbmQgaXMgc3ViamVjdCB0byBicmVha2luZyBjaGFuZ2VzIGluIG1pbm9yIHJlbGVhc2VzIG9mIGBAb3BlbnRlbGVtZXRyeS9zZW1hbnRpYy1jb252ZW50aW9uc2AuXG4gKlxuICogQGRlcHJlY2F0ZWQgUmVwbGFjZWQgYnkgYGRiLnN5c3RlbS5uYW1lYC5cbiAqL1xuZXhwb3J0cy5BVFRSX0RCX1NZU1RFTSA9ICdkYi5zeXN0ZW0nO1xuLyoqXG4gKiBEZXByZWNhdGVkLCBubyByZXBsYWNlbWVudCBhdCB0aGlzIHRpbWUuXG4gKlxuICogQGV4YW1wbGUgcmVhZG9ubHlfdXNlclxuICogQGV4YW1wbGUgcmVwb3J0aW5nX3VzZXJcbiAqXG4gKiBAZXhwZXJpbWVudGFsIFRoaXMgYXR0cmlidXRlIGlzIGV4cGVyaW1lbnRhbCBhbmQgaXMgc3ViamVjdCB0byBicmVha2luZyBjaGFuZ2VzIGluIG1pbm9yIHJlbGVhc2VzIG9mIGBAb3BlbnRlbGVtZXRyeS9zZW1hbnRpYy1jb252ZW50aW9uc2AuXG4gKlxuICogQGRlcHJlY2F0ZWQgUmVtb3ZlZCwgbm8gcmVwbGFjZW1lbnQgYXQgdGhpcyB0aW1lLlxuICovXG5leHBvcnRzLkFUVFJfREJfVVNFUiA9ICdkYi51c2VyJztcbi8qKlxuICogRGVwcmVjYXRlZCwgdXNlIGBzZXJ2ZXIuYWRkcmVzc2Agb24gY2xpZW50IHNwYW5zIGFuZCBgY2xpZW50LmFkZHJlc3NgIG9uIHNlcnZlciBzcGFucy5cbiAqXG4gKiBAZXhhbXBsZSBleGFtcGxlLmNvbVxuICpcbiAqIEBleHBlcmltZW50YWwgVGhpcyBhdHRyaWJ1dGUgaXMgZXhwZXJpbWVudGFsIGFuZCBpcyBzdWJqZWN0IHRvIGJyZWFraW5nIGNoYW5nZXMgaW4gbWlub3IgcmVsZWFzZXMgb2YgYEBvcGVudGVsZW1ldHJ5L3NlbWFudGljLWNvbnZlbnRpb25zYC5cbiAqXG4gKiBAZGVwcmVjYXRlZCBSZXBsYWNlZCBieSBgc2VydmVyLmFkZHJlc3NgIG9uIGNsaWVudCBzcGFucyBhbmQgYGNsaWVudC5hZGRyZXNzYCBvbiBzZXJ2ZXIgc3BhbnMuXG4gKi9cbmV4cG9ydHMuQVRUUl9ORVRfUEVFUl9OQU1FID0gJ25ldC5wZWVyLm5hbWUnO1xuLyoqXG4gKiBEZXByZWNhdGVkLCB1c2UgYHNlcnZlci5wb3J0YCBvbiBjbGllbnQgc3BhbnMgYW5kIGBjbGllbnQucG9ydGAgb24gc2VydmVyIHNwYW5zLlxuICpcbiAqIEBleGFtcGxlIDgwODBcbiAqXG4gKiBAZXhwZXJpbWVudGFsIFRoaXMgYXR0cmlidXRlIGlzIGV4cGVyaW1lbnRhbCBhbmQgaXMgc3ViamVjdCB0byBicmVha2luZyBjaGFuZ2VzIGluIG1pbm9yIHJlbGVhc2VzIG9mIGBAb3BlbnRlbGVtZXRyeS9zZW1hbnRpYy1jb252ZW50aW9uc2AuXG4gKlxuICogQGRlcHJlY2F0ZWQgUmVwbGFjZWQgYnkgYHNlcnZlci5wb3J0YCBvbiBjbGllbnQgc3BhbnMgYW5kIGBjbGllbnQucG9ydGAgb24gc2VydmVyIHNwYW5zLlxuICovXG5leHBvcnRzLkFUVFJfTkVUX1BFRVJfUE9SVCA9ICduZXQucGVlci5wb3J0Jztcbi8qKlxuICogRW51bSB2YWx1ZSBcIm1vbmdvZGJcIiBmb3IgYXR0cmlidXRlIHtAbGluayBBVFRSX0RCX1NZU1RFTV9OQU1FfS5cbiAqXG4gKiBbTW9uZ29EQl0oaHR0cHM6Ly93d3cubW9uZ29kYi5jb20vKVxuICpcbiAqIEBleHBlcmltZW50YWwgVGhpcyBlbnVtIHZhbHVlIGlzIGV4cGVyaW1lbnRhbCBhbmQgaXMgc3ViamVjdCB0byBicmVha2luZyBjaGFuZ2VzIGluIG1pbm9yIHJlbGVhc2VzIG9mIGBAb3BlbnRlbGVtZXRyeS9zZW1hbnRpYy1jb252ZW50aW9uc2AuXG4gKi9cbmV4cG9ydHMuREJfU1lTVEVNX05BTUVfVkFMVUVfTU9OR09EQiA9ICdtb25nb2RiJztcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXNlbWNvbnYuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/.pnpm/@opentelemetry+instrumentation-mongoose@0.60.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-mongoose/build/src/semconv.js\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(rsc)/./node_modules/.pnpm/@opentelemetry+instrumentation-mongoose@0.60.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-mongoose/build/src/utils.js":
|
|
/*!****************************************************************************************************************************************************************************!*\
|
|
!*** ./node_modules/.pnpm/@opentelemetry+instrumentation-mongoose@0.60.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-mongoose/build/src/utils.js ***!
|
|
\****************************************************************************************************************************************************************************/
|
|
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
|
|
eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.handleCallbackResponse = exports.handlePromiseResponse = exports.getAttributesFromCollection = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst api_1 = __webpack_require__(/*! @opentelemetry/api */ \"(rsc)/./node_modules/.pnpm/@opentelemetry+api@1.9.1/node_modules/@opentelemetry/api/build/esm/index.js\");\nconst instrumentation_1 = __webpack_require__(/*! @opentelemetry/instrumentation */ \"(rsc)/./node_modules/.pnpm/@opentelemetry+instrumentation@0.214.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation/build/esm/index.js\");\nconst semconv_1 = __webpack_require__(/*! ./semconv */ \"(rsc)/./node_modules/.pnpm/@opentelemetry+instrumentation-mongoose@0.60.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-mongoose/build/src/semconv.js\");\nconst semantic_conventions_1 = __webpack_require__(/*! @opentelemetry/semantic-conventions */ \"(rsc)/./node_modules/.pnpm/@opentelemetry+semantic-conventions@1.40.0/node_modules/@opentelemetry/semantic-conventions/build/esm/index.js\");\nfunction getAttributesFromCollection(collection, dbSemconvStability, netSemconvStability) {\n const attrs = {};\n if (dbSemconvStability & instrumentation_1.SemconvStability.OLD) {\n attrs[semconv_1.ATTR_DB_MONGODB_COLLECTION] = collection.name;\n attrs[semconv_1.ATTR_DB_NAME] = collection.conn.name;\n attrs[semconv_1.ATTR_DB_USER] = collection.conn.user;\n }\n if (dbSemconvStability & instrumentation_1.SemconvStability.STABLE) {\n attrs[semantic_conventions_1.ATTR_DB_COLLECTION_NAME] = collection.name;\n attrs[semantic_conventions_1.ATTR_DB_NAMESPACE] = collection.conn.name;\n // db.user has no stable replacement\n }\n if (netSemconvStability & instrumentation_1.SemconvStability.OLD) {\n attrs[semconv_1.ATTR_NET_PEER_NAME] = collection.conn.host;\n attrs[semconv_1.ATTR_NET_PEER_PORT] = collection.conn.port;\n }\n if (netSemconvStability & instrumentation_1.SemconvStability.STABLE) {\n attrs[semantic_conventions_1.ATTR_SERVER_ADDRESS] = collection.conn.host;\n attrs[semantic_conventions_1.ATTR_SERVER_PORT] = collection.conn.port;\n }\n return attrs;\n}\nexports.getAttributesFromCollection = getAttributesFromCollection;\nfunction setErrorStatus(span, error = {}) {\n span.recordException(error);\n span.setStatus({\n code: api_1.SpanStatusCode.ERROR,\n message: `${error.message} ${error.code ? `\\nMongoose Error Code: ${error.code}` : ''}`,\n });\n}\nfunction applyResponseHook(span, response, responseHook, moduleVersion = undefined) {\n if (!responseHook) {\n return;\n }\n (0, instrumentation_1.safeExecuteInTheMiddle)(() => responseHook(span, { moduleVersion, response }), e => {\n if (e) {\n api_1.diag.error('mongoose instrumentation: responseHook error', e);\n }\n }, true);\n}\nfunction handlePromiseResponse(execResponse, span, responseHook, moduleVersion = undefined) {\n if (!(execResponse instanceof Promise)) {\n applyResponseHook(span, execResponse, responseHook, moduleVersion);\n span.end();\n return execResponse;\n }\n return execResponse\n .then(response => {\n applyResponseHook(span, response, responseHook, moduleVersion);\n return response;\n })\n .catch(err => {\n setErrorStatus(span, err);\n throw err;\n })\n .finally(() => span.end());\n}\nexports.handlePromiseResponse = handlePromiseResponse;\nfunction handleCallbackResponse(callback, exec, originalThis, span, args, responseHook, moduleVersion = undefined) {\n let callbackArgumentIndex = 0;\n if (args.length === 2) {\n callbackArgumentIndex = 1;\n }\n else if (args.length === 3) {\n callbackArgumentIndex = 2;\n }\n args[callbackArgumentIndex] = (err, response) => {\n if (err) {\n setErrorStatus(span, err);\n }\n else {\n applyResponseHook(span, response, responseHook, moduleVersion);\n }\n span.end();\n return callback(err, response);\n };\n return exec.apply(originalThis, args);\n}\nexports.handleCallbackResponse = handleCallbackResponse;\n//# sourceMappingURL=utils.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvLnBucG0vQG9wZW50ZWxlbWV0cnkraW5zdHJ1bWVudGF0aW9uLW1vbmdvb3NlQDAuNjAuMF9Ab3BlbnRlbGVtZXRyeSthcGlAMS45LjEvbm9kZV9tb2R1bGVzL0BvcGVudGVsZW1ldHJ5L2luc3RydW1lbnRhdGlvbi1tb25nb29zZS9idWlsZC9zcmMvdXRpbHMuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkMsRUFBRSxhQUFhLEVBQUM7QUFDN0QsOEJBQThCLEdBQUcsNkJBQTZCLEdBQUcsbUNBQW1DO0FBQ3BHO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsbUJBQU8sQ0FBQyxrSUFBb0I7QUFDMUMsMEJBQTBCLG1CQUFPLENBQUMsaU1BQWdDO0FBQ2xFLGtCQUFrQixtQkFBTyxDQUFDLCtMQUFXO0FBQ3JDLCtCQUErQixtQkFBTyxDQUFDLHNMQUFxQztBQUM1RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQztBQUNuQyx3Q0FBd0M7QUFDeEM7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLGVBQWUsRUFBRSx1Q0FBdUMsV0FBVyxPQUFPO0FBQzlGLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkVBQTZFLHlCQUF5QjtBQUN0RztBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLDZCQUE2QjtBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBQThCO0FBQzlCIiwic291cmNlcyI6WyIvVXNlcnMvbWFyY21pbnRlbC9Qcm9qZWN0cy9lLXRpYi5jb20vbm9kZV9tb2R1bGVzLy5wbnBtL0BvcGVudGVsZW1ldHJ5K2luc3RydW1lbnRhdGlvbi1tb25nb29zZUAwLjYwLjBfQG9wZW50ZWxlbWV0cnkrYXBpQDEuOS4xL25vZGVfbW9kdWxlcy9Ab3BlbnRlbGVtZXRyeS9pbnN0cnVtZW50YXRpb24tbW9uZ29vc2UvYnVpbGQvc3JjL3V0aWxzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5oYW5kbGVDYWxsYmFja1Jlc3BvbnNlID0gZXhwb3J0cy5oYW5kbGVQcm9taXNlUmVzcG9uc2UgPSBleHBvcnRzLmdldEF0dHJpYnV0ZXNGcm9tQ29sbGVjdGlvbiA9IHZvaWQgMDtcbi8qXG4gKiBDb3B5cmlnaHQgVGhlIE9wZW5UZWxlbWV0cnkgQXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5jb25zdCBhcGlfMSA9IHJlcXVpcmUoXCJAb3BlbnRlbGVtZXRyeS9hcGlcIik7XG5jb25zdCBpbnN0cnVtZW50YXRpb25fMSA9IHJlcXVpcmUoXCJAb3BlbnRlbGVtZXRyeS9pbnN0cnVtZW50YXRpb25cIik7XG5jb25zdCBzZW1jb252XzEgPSByZXF1aXJlKFwiLi9zZW1jb252XCIpO1xuY29uc3Qgc2VtYW50aWNfY29udmVudGlvbnNfMSA9IHJlcXVpcmUoXCJAb3BlbnRlbGVtZXRyeS9zZW1hbnRpYy1jb252ZW50aW9uc1wiKTtcbmZ1bmN0aW9uIGdldEF0dHJpYnV0ZXNGcm9tQ29sbGVjdGlvbihjb2xsZWN0aW9uLCBkYlNlbWNvbnZTdGFiaWxpdHksIG5ldFNlbWNvbnZTdGFiaWxpdHkpIHtcbiAgICBjb25zdCBhdHRycyA9IHt9O1xuICAgIGlmIChkYlNlbWNvbnZTdGFiaWxpdHkgJiBpbnN0cnVtZW50YXRpb25fMS5TZW1jb252U3RhYmlsaXR5Lk9MRCkge1xuICAgICAgICBhdHRyc1tzZW1jb252XzEuQVRUUl9EQl9NT05HT0RCX0NPTExFQ1RJT05dID0gY29sbGVjdGlvbi5uYW1lO1xuICAgICAgICBhdHRyc1tzZW1jb252XzEuQVRUUl9EQl9OQU1FXSA9IGNvbGxlY3Rpb24uY29ubi5uYW1lO1xuICAgICAgICBhdHRyc1tzZW1jb252XzEuQVRUUl9EQl9VU0VSXSA9IGNvbGxlY3Rpb24uY29ubi51c2VyO1xuICAgIH1cbiAgICBpZiAoZGJTZW1jb252U3RhYmlsaXR5ICYgaW5zdHJ1bWVudGF0aW9uXzEuU2VtY29udlN0YWJpbGl0eS5TVEFCTEUpIHtcbiAgICAgICAgYXR0cnNbc2VtYW50aWNfY29udmVudGlvbnNfMS5BVFRSX0RCX0NPTExFQ1RJT05fTkFNRV0gPSBjb2xsZWN0aW9uLm5hbWU7XG4gICAgICAgIGF0dHJzW3NlbWFudGljX2NvbnZlbnRpb25zXzEuQVRUUl9EQl9OQU1FU1BBQ0VdID0gY29sbGVjdGlvbi5jb25uLm5hbWU7XG4gICAgICAgIC8vIGRiLnVzZXIgaGFzIG5vIHN0YWJsZSByZXBsYWNlbWVudFxuICAgIH1cbiAgICBpZiAobmV0U2VtY29udlN0YWJpbGl0eSAmIGluc3RydW1lbnRhdGlvbl8xLlNlbWNvbnZTdGFiaWxpdHkuT0xEKSB7XG4gICAgICAgIGF0dHJzW3NlbWNvbnZfMS5BVFRSX05FVF9QRUVSX05BTUVdID0gY29sbGVjdGlvbi5jb25uLmhvc3Q7XG4gICAgICAgIGF0dHJzW3NlbWNvbnZfMS5BVFRSX05FVF9QRUVSX1BPUlRdID0gY29sbGVjdGlvbi5jb25uLnBvcnQ7XG4gICAgfVxuICAgIGlmIChuZXRTZW1jb252U3RhYmlsaXR5ICYgaW5zdHJ1bWVudGF0aW9uXzEuU2VtY29udlN0YWJpbGl0eS5TVEFCTEUpIHtcbiAgICAgICAgYXR0cnNbc2VtYW50aWNfY29udmVudGlvbnNfMS5BVFRSX1NFUlZFUl9BRERSRVNTXSA9IGNvbGxlY3Rpb24uY29ubi5ob3N0O1xuICAgICAgICBhdHRyc1tzZW1hbnRpY19jb252ZW50aW9uc18xLkFUVFJfU0VSVkVSX1BPUlRdID0gY29sbGVjdGlvbi5jb25uLnBvcnQ7XG4gICAgfVxuICAgIHJldHVybiBhdHRycztcbn1cbmV4cG9ydHMuZ2V0QXR0cmlidXRlc0Zyb21Db2xsZWN0aW9uID0gZ2V0QXR0cmlidXRlc0Zyb21Db2xsZWN0aW9uO1xuZnVuY3Rpb24gc2V0RXJyb3JTdGF0dXMoc3BhbiwgZXJyb3IgPSB7fSkge1xuICAgIHNwYW4ucmVjb3JkRXhjZXB0aW9uKGVycm9yKTtcbiAgICBzcGFuLnNldFN0YXR1cyh7XG4gICAgICAgIGNvZGU6IGFwaV8xLlNwYW5TdGF0dXNDb2RlLkVSUk9SLFxuICAgICAgICBtZXNzYWdlOiBgJHtlcnJvci5tZXNzYWdlfSAke2Vycm9yLmNvZGUgPyBgXFxuTW9uZ29vc2UgRXJyb3IgQ29kZTogJHtlcnJvci5jb2RlfWAgOiAnJ31gLFxuICAgIH0pO1xufVxuZnVuY3Rpb24gYXBwbHlSZXNwb25zZUhvb2soc3BhbiwgcmVzcG9uc2UsIHJlc3BvbnNlSG9vaywgbW9kdWxlVmVyc2lvbiA9IHVuZGVmaW5lZCkge1xuICAgIGlmICghcmVzcG9uc2VIb29rKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgKDAsIGluc3RydW1lbnRhdGlvbl8xLnNhZmVFeGVjdXRlSW5UaGVNaWRkbGUpKCgpID0+IHJlc3BvbnNlSG9vayhzcGFuLCB7IG1vZHVsZVZlcnNpb24sIHJlc3BvbnNlIH0pLCBlID0+IHtcbiAgICAgICAgaWYgKGUpIHtcbiAgICAgICAgICAgIGFwaV8xLmRpYWcuZXJyb3IoJ21vbmdvb3NlIGluc3RydW1lbnRhdGlvbjogcmVzcG9uc2VIb29rIGVycm9yJywgZSk7XG4gICAgICAgIH1cbiAgICB9LCB0cnVlKTtcbn1cbmZ1bmN0aW9uIGhhbmRsZVByb21pc2VSZXNwb25zZShleGVjUmVzcG9uc2UsIHNwYW4sIHJlc3BvbnNlSG9vaywgbW9kdWxlVmVyc2lvbiA9IHVuZGVmaW5lZCkge1xuICAgIGlmICghKGV4ZWNSZXNwb25zZSBpbnN0YW5jZW9mIFByb21pc2UpKSB7XG4gICAgICAgIGFwcGx5UmVzcG9uc2VIb29rKHNwYW4sIGV4ZWNSZXNwb25zZSwgcmVzcG9uc2VIb29rLCBtb2R1bGVWZXJzaW9uKTtcbiAgICAgICAgc3Bhbi5lbmQoKTtcbiAgICAgICAgcmV0dXJuIGV4ZWNSZXNwb25zZTtcbiAgICB9XG4gICAgcmV0dXJuIGV4ZWNSZXNwb25zZVxuICAgICAgICAudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgIGFwcGx5UmVzcG9uc2VIb29rKHNwYW4sIHJlc3BvbnNlLCByZXNwb25zZUhvb2ssIG1vZHVsZVZlcnNpb24pO1xuICAgICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgfSlcbiAgICAgICAgLmNhdGNoKGVyciA9PiB7XG4gICAgICAgIHNldEVycm9yU3RhdHVzKHNwYW4sIGVycik7XG4gICAgICAgIHRocm93IGVycjtcbiAgICB9KVxuICAgICAgICAuZmluYWxseSgoKSA9PiBzcGFuLmVuZCgpKTtcbn1cbmV4cG9ydHMuaGFuZGxlUHJvbWlzZVJlc3BvbnNlID0gaGFuZGxlUHJvbWlzZVJlc3BvbnNlO1xuZnVuY3Rpb24gaGFuZGxlQ2FsbGJhY2tSZXNwb25zZShjYWxsYmFjaywgZXhlYywgb3JpZ2luYWxUaGlzLCBzcGFuLCBhcmdzLCByZXNwb25zZUhvb2ssIG1vZHVsZVZlcnNpb24gPSB1bmRlZmluZWQpIHtcbiAgICBsZXQgY2FsbGJhY2tBcmd1bWVudEluZGV4ID0gMDtcbiAgICBpZiAoYXJncy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgY2FsbGJhY2tBcmd1bWVudEluZGV4ID0gMTtcbiAgICB9XG4gICAgZWxzZSBpZiAoYXJncy5sZW5ndGggPT09IDMpIHtcbiAgICAgICAgY2FsbGJhY2tBcmd1bWVudEluZGV4ID0gMjtcbiAgICB9XG4gICAgYXJnc1tjYWxsYmFja0FyZ3VtZW50SW5kZXhdID0gKGVyciwgcmVzcG9uc2UpID0+IHtcbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgc2V0RXJyb3JTdGF0dXMoc3BhbiwgZXJyKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGFwcGx5UmVzcG9uc2VIb29rKHNwYW4sIHJlc3BvbnNlLCByZXNwb25zZUhvb2ssIG1vZHVsZVZlcnNpb24pO1xuICAgICAgICB9XG4gICAgICAgIHNwYW4uZW5kKCk7XG4gICAgICAgIHJldHVybiBjYWxsYmFjayhlcnIsIHJlc3BvbnNlKTtcbiAgICB9O1xuICAgIHJldHVybiBleGVjLmFwcGx5KG9yaWdpbmFsVGhpcywgYXJncyk7XG59XG5leHBvcnRzLmhhbmRsZUNhbGxiYWNrUmVzcG9uc2UgPSBoYW5kbGVDYWxsYmFja1Jlc3BvbnNlO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dXRpbHMuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/.pnpm/@opentelemetry+instrumentation-mongoose@0.60.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-mongoose/build/src/utils.js\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(rsc)/./node_modules/.pnpm/@opentelemetry+instrumentation-mongoose@0.60.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-mongoose/build/src/version.js":
|
|
/*!******************************************************************************************************************************************************************************!*\
|
|
!*** ./node_modules/.pnpm/@opentelemetry+instrumentation-mongoose@0.60.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-mongoose/build/src/version.js ***!
|
|
\******************************************************************************************************************************************************************************/
|
|
/***/ ((__unused_webpack_module, exports) => {
|
|
|
|
eval("\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.PACKAGE_NAME = exports.PACKAGE_VERSION = void 0;\n// this is autogenerated file, see scripts/version-update.js\nexports.PACKAGE_VERSION = '0.60.0';\nexports.PACKAGE_NAME = '@opentelemetry/instrumentation-mongoose';\n//# sourceMappingURL=version.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvLnBucG0vQG9wZW50ZWxlbWV0cnkraW5zdHJ1bWVudGF0aW9uLW1vbmdvb3NlQDAuNjAuMF9Ab3BlbnRlbGVtZXRyeSthcGlAMS45LjEvbm9kZV9tb2R1bGVzL0BvcGVudGVsZW1ldHJ5L2luc3RydW1lbnRhdGlvbi1tb25nb29zZS9idWlsZC9zcmMvdmVyc2lvbi5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhDQUE2QyxFQUFFLGFBQWEsRUFBQztBQUM3RCxvQkFBb0IsR0FBRyx1QkFBdUI7QUFDOUM7QUFDQSx1QkFBdUI7QUFDdkIsb0JBQW9CO0FBQ3BCIiwic291cmNlcyI6WyIvVXNlcnMvbWFyY21pbnRlbC9Qcm9qZWN0cy9lLXRpYi5jb20vbm9kZV9tb2R1bGVzLy5wbnBtL0BvcGVudGVsZW1ldHJ5K2luc3RydW1lbnRhdGlvbi1tb25nb29zZUAwLjYwLjBfQG9wZW50ZWxlbWV0cnkrYXBpQDEuOS4xL25vZGVfbW9kdWxlcy9Ab3BlbnRlbGVtZXRyeS9pbnN0cnVtZW50YXRpb24tbW9uZ29vc2UvYnVpbGQvc3JjL3ZlcnNpb24uanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG4vKlxuICogQ29weXJpZ2h0IFRoZSBPcGVuVGVsZW1ldHJ5IEF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5QQUNLQUdFX05BTUUgPSBleHBvcnRzLlBBQ0tBR0VfVkVSU0lPTiA9IHZvaWQgMDtcbi8vIHRoaXMgaXMgYXV0b2dlbmVyYXRlZCBmaWxlLCBzZWUgc2NyaXB0cy92ZXJzaW9uLXVwZGF0ZS5qc1xuZXhwb3J0cy5QQUNLQUdFX1ZFUlNJT04gPSAnMC42MC4wJztcbmV4cG9ydHMuUEFDS0FHRV9OQU1FID0gJ0BvcGVudGVsZW1ldHJ5L2luc3RydW1lbnRhdGlvbi1tb25nb29zZSc7XG4vLyMgc291cmNlTWFwcGluZ1VSTD12ZXJzaW9uLmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/.pnpm/@opentelemetry+instrumentation-mongoose@0.60.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-mongoose/build/src/version.js\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(ssr)/./node_modules/.pnpm/@opentelemetry+instrumentation-mongoose@0.60.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-mongoose/build/src/index.js":
|
|
/*!****************************************************************************************************************************************************************************!*\
|
|
!*** ./node_modules/.pnpm/@opentelemetry+instrumentation-mongoose@0.60.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-mongoose/build/src/index.js ***!
|
|
\****************************************************************************************************************************************************************************/
|
|
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
|
|
eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.MongooseInstrumentation = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar mongoose_1 = __webpack_require__(/*! ./mongoose */ \"(ssr)/./node_modules/.pnpm/@opentelemetry+instrumentation-mongoose@0.60.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-mongoose/build/src/mongoose.js\");\nObject.defineProperty(exports, \"MongooseInstrumentation\", ({ enumerable: true, get: function () { return mongoose_1.MongooseInstrumentation; } }));\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvLnBucG0vQG9wZW50ZWxlbWV0cnkraW5zdHJ1bWVudGF0aW9uLW1vbmdvb3NlQDAuNjAuMF9Ab3BlbnRlbGVtZXRyeSthcGlAMS45LjEvbm9kZV9tb2R1bGVzL0BvcGVudGVsZW1ldHJ5L2luc3RydW1lbnRhdGlvbi1tb25nb29zZS9idWlsZC9zcmMvaW5kZXguanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkMsRUFBRSxhQUFhLEVBQUM7QUFDN0QsK0JBQStCO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixtQkFBTyxDQUFDLGlNQUFZO0FBQ3JDLDJEQUEwRCxFQUFFLHFDQUFxQyw4Q0FBOEMsRUFBQztBQUNoSiIsInNvdXJjZXMiOlsiL1VzZXJzL21hcmNtaW50ZWwvUHJvamVjdHMvZS10aWIuY29tL25vZGVfbW9kdWxlcy8ucG5wbS9Ab3BlbnRlbGVtZXRyeStpbnN0cnVtZW50YXRpb24tbW9uZ29vc2VAMC42MC4wX0BvcGVudGVsZW1ldHJ5K2FwaUAxLjkuMS9ub2RlX21vZHVsZXMvQG9wZW50ZWxlbWV0cnkvaW5zdHJ1bWVudGF0aW9uLW1vbmdvb3NlL2J1aWxkL3NyYy9pbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuTW9uZ29vc2VJbnN0cnVtZW50YXRpb24gPSB2b2lkIDA7XG4vKlxuICogQ29weXJpZ2h0IFRoZSBPcGVuVGVsZW1ldHJ5IEF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xudmFyIG1vbmdvb3NlXzEgPSByZXF1aXJlKFwiLi9tb25nb29zZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIk1vbmdvb3NlSW5zdHJ1bWVudGF0aW9uXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBtb25nb29zZV8xLk1vbmdvb3NlSW5zdHJ1bWVudGF0aW9uOyB9IH0pO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/.pnpm/@opentelemetry+instrumentation-mongoose@0.60.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-mongoose/build/src/index.js\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(ssr)/./node_modules/.pnpm/@opentelemetry+instrumentation-mongoose@0.60.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-mongoose/build/src/mongoose.js":
|
|
/*!*******************************************************************************************************************************************************************************!*\
|
|
!*** ./node_modules/.pnpm/@opentelemetry+instrumentation-mongoose@0.60.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-mongoose/build/src/mongoose.js ***!
|
|
\*******************************************************************************************************************************************************************************/
|
|
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
|
|
eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.MongooseInstrumentation = exports._ALREADY_INSTRUMENTED = exports._STORED_PARENT_SPAN = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst api_1 = __webpack_require__(/*! @opentelemetry/api */ \"(ssr)/./node_modules/.pnpm/@opentelemetry+api@1.9.1/node_modules/@opentelemetry/api/build/esm/index.js\");\nconst core_1 = __webpack_require__(/*! @opentelemetry/core */ \"(ssr)/./node_modules/.pnpm/@opentelemetry+core@2.6.1_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/core/build/esm/index.js\");\nconst utils_1 = __webpack_require__(/*! ./utils */ \"(ssr)/./node_modules/.pnpm/@opentelemetry+instrumentation-mongoose@0.60.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-mongoose/build/src/utils.js\");\nconst instrumentation_1 = __webpack_require__(/*! @opentelemetry/instrumentation */ \"(ssr)/./node_modules/.pnpm/@opentelemetry+instrumentation@0.214.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation/build/esm/index.js\");\n/** @knipignore */\nconst version_1 = __webpack_require__(/*! ./version */ \"(ssr)/./node_modules/.pnpm/@opentelemetry+instrumentation-mongoose@0.60.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-mongoose/build/src/version.js\");\nconst semconv_1 = __webpack_require__(/*! ./semconv */ \"(ssr)/./node_modules/.pnpm/@opentelemetry+instrumentation-mongoose@0.60.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-mongoose/build/src/semconv.js\");\nconst semantic_conventions_1 = __webpack_require__(/*! @opentelemetry/semantic-conventions */ \"(ssr)/./node_modules/.pnpm/@opentelemetry+semantic-conventions@1.40.0/node_modules/@opentelemetry/semantic-conventions/build/esm/index.js\");\nconst contextCaptureFunctionsCommon = [\n 'deleteOne',\n 'deleteMany',\n 'find',\n 'findOne',\n 'estimatedDocumentCount',\n 'countDocuments',\n 'distinct',\n 'where',\n '$where',\n 'findOneAndUpdate',\n 'findOneAndDelete',\n 'findOneAndReplace',\n];\nconst contextCaptureFunctions6 = [\n 'remove',\n 'count',\n 'findOneAndRemove',\n ...contextCaptureFunctionsCommon,\n];\nconst contextCaptureFunctions7 = [\n 'count',\n 'findOneAndRemove',\n ...contextCaptureFunctionsCommon,\n];\nconst contextCaptureFunctions8 = [...contextCaptureFunctionsCommon];\nfunction getContextCaptureFunctions(moduleVersion) {\n /* istanbul ignore next */\n if (!moduleVersion) {\n return contextCaptureFunctionsCommon;\n }\n else if (moduleVersion.startsWith('6.') || moduleVersion.startsWith('5.')) {\n return contextCaptureFunctions6;\n }\n else if (moduleVersion.startsWith('7.')) {\n return contextCaptureFunctions7;\n }\n else {\n return contextCaptureFunctions8;\n }\n}\nfunction instrumentRemove(moduleVersion) {\n return ((moduleVersion &&\n (moduleVersion.startsWith('5.') || moduleVersion.startsWith('6.'))) ||\n false);\n}\n/**\n * 8.21.0 changed Document.updateOne/deleteOne so that the Query is not fully built when Query.exec() is called.\n * @param moduleVersion\n */\nfunction needsDocumentMethodPatch(moduleVersion) {\n if (!moduleVersion || !moduleVersion.startsWith('8.')) {\n return false;\n }\n const minor = parseInt(moduleVersion.split('.')[1], 10);\n return minor >= 21;\n}\n// when mongoose functions are called, we store the original call context\n// and then set it as the parent for the spans created by Query/Aggregate exec()\n// calls. this bypass the unlinked spans issue on thenables await operations.\nexports._STORED_PARENT_SPAN = Symbol('stored-parent-span');\n// Prevents double-instrumentation when doc.updateOne/deleteOne (Mongoose 8.21.0+)\n// creates a span and returns a Query that also calls exec()\nexports._ALREADY_INSTRUMENTED = Symbol('already-instrumented');\nclass MongooseInstrumentation extends instrumentation_1.InstrumentationBase {\n _netSemconvStability;\n _dbSemconvStability;\n constructor(config = {}) {\n super(version_1.PACKAGE_NAME, version_1.PACKAGE_VERSION, config);\n this._setSemconvStabilityFromEnv();\n }\n // Used for testing.\n _setSemconvStabilityFromEnv() {\n this._netSemconvStability = (0, instrumentation_1.semconvStabilityFromStr)('http', process.env.OTEL_SEMCONV_STABILITY_OPT_IN);\n this._dbSemconvStability = (0, instrumentation_1.semconvStabilityFromStr)('database', process.env.OTEL_SEMCONV_STABILITY_OPT_IN);\n }\n init() {\n const module = new instrumentation_1.InstrumentationNodeModuleDefinition('mongoose', ['>=5.9.7 <10'], this.patch.bind(this), this.unpatch.bind(this));\n return module;\n }\n patch(module, moduleVersion) {\n const moduleExports = module[Symbol.toStringTag] === 'Module'\n ? module.default // ESM\n : module; // CommonJS\n this._wrap(moduleExports.Model.prototype, 'save', this.patchOnModelMethods('save', moduleVersion));\n // mongoose applies this code on module require:\n // Model.prototype.$save = Model.prototype.save;\n // which captures the save function before it is patched.\n // so we need to apply the same logic after instrumenting the save function.\n moduleExports.Model.prototype.$save = moduleExports.Model.prototype.save;\n if (instrumentRemove(moduleVersion)) {\n this._wrap(moduleExports.Model.prototype, 'remove', this.patchOnModelMethods('remove', moduleVersion));\n }\n // Mongoose 8.21.0+ changed Document.updateOne()/deleteOne() so that the Query is not fully built when Query.exec() is called.\n //\n // See https://github.com/Automattic/mongoose/blob/7dbda12dca1bd7adb9e270d7de8ac5229606ce72/lib/document.js#L861.\n // - `this` is a Query object\n // - the update happens in a pre-hook that gets called when Query.exec() is already running.\n // - when we instrument Query.exec(), we don't have access to the options yet as they get set during Query.exec() only.\n //\n // Unfortunately, after Query.exec() is finished, the options are left modified by the library, so just delaying\n // attaching the attributes after the span is done is not an option. Therefore, we patch Model methods\n // and grab the data directly where the user provides it.\n //\n // ref: https://github.com/Automattic/mongoose/pull/15908 (introduced this behavior)\n if (needsDocumentMethodPatch(moduleVersion)) {\n this._wrap(moduleExports.Model.prototype, 'updateOne', this._patchDocumentUpdateMethods('updateOne', moduleVersion));\n this._wrap(moduleExports.Model.prototype, 'deleteOne', this._patchDocumentUpdateMethods('deleteOne', moduleVersion));\n }\n this._wrap(moduleExports.Query.prototype, 'exec', this.patchQueryExec(moduleVersion));\n this._wrap(moduleExports.Aggregate.prototype, 'exec', this.patchAggregateExec(moduleVersion));\n const contextCaptureFunctions = getContextCaptureFunctions(moduleVersion);\n contextCaptureFunctions.forEach((funcName) => {\n this._wrap(moduleExports.Query.prototype, funcName, this.patchAndCaptureSpanContext(funcName));\n });\n this._wrap(moduleExports.Model, 'aggregate', this.patchModelAggregate());\n this._wrap(moduleExports.Model, 'insertMany', this.patchModelStatic('insertMany', moduleVersion));\n this._wrap(moduleExports.Model, 'bulkWrite', this.patchModelStatic('bulkWrite', moduleVersion));\n return moduleExports;\n }\n unpatch(module, moduleVersion) {\n const moduleExports = module[Symbol.toStringTag] === 'Module'\n ? module.default // ESM\n : module; // CommonJS\n const contextCaptureFunctions = getContextCaptureFunctions(moduleVersion);\n this._unwrap(moduleExports.Model.prototype, 'save');\n // revert the patch for $save which we applied by aliasing it to patched `save`\n moduleExports.Model.prototype.$save = moduleExports.Model.prototype.save;\n if (instrumentRemove(moduleVersion)) {\n this._unwrap(moduleExports.Model.prototype, 'remove');\n }\n if (needsDocumentMethodPatch(moduleVersion)) {\n this._unwrap(moduleExports.Model.prototype, 'updateOne');\n this._unwrap(moduleExports.Model.prototype, 'deleteOne');\n }\n this._unwrap(moduleExports.Query.prototype, 'exec');\n this._unwrap(moduleExports.Aggregate.prototype, 'exec');\n contextCaptureFunctions.forEach((funcName) => {\n this._unwrap(moduleExports.Query.prototype, funcName);\n });\n this._unwrap(moduleExports.Model, 'aggregate');\n this._unwrap(moduleExports.Model, 'insertMany');\n this._unwrap(moduleExports.Model, 'bulkWrite');\n }\n patchAggregateExec(moduleVersion) {\n const self = this;\n return (originalAggregate) => {\n return function exec(callback) {\n if (self.getConfig().requireParentSpan &&\n api_1.trace.getSpan(api_1.context.active()) === undefined) {\n return originalAggregate.apply(this, arguments);\n }\n const parentSpan = this[exports._STORED_PARENT_SPAN];\n const attributes = {};\n const { dbStatementSerializer } = self.getConfig();\n if (dbStatementSerializer) {\n const statement = dbStatementSerializer('aggregate', {\n options: this.options,\n aggregatePipeline: this._pipeline,\n });\n if (self._dbSemconvStability & instrumentation_1.SemconvStability.OLD) {\n attributes[semconv_1.ATTR_DB_STATEMENT] = statement;\n }\n if (self._dbSemconvStability & instrumentation_1.SemconvStability.STABLE) {\n attributes[semantic_conventions_1.ATTR_DB_QUERY_TEXT] = statement;\n }\n }\n const span = self._startSpan(this._model.collection, this._model?.modelName, 'aggregate', attributes, parentSpan);\n return self._handleResponse(span, originalAggregate, this, arguments, callback, moduleVersion);\n };\n };\n }\n patchQueryExec(moduleVersion) {\n const self = this;\n return (originalExec) => {\n return function exec(callback) {\n // Skip if already instrumented by document instance method patch\n if (this[exports._ALREADY_INSTRUMENTED]) {\n return originalExec.apply(this, arguments);\n }\n if (self.getConfig().requireParentSpan &&\n api_1.trace.getSpan(api_1.context.active()) === undefined) {\n return originalExec.apply(this, arguments);\n }\n const parentSpan = this[exports._STORED_PARENT_SPAN];\n const attributes = {};\n const { dbStatementSerializer } = self.getConfig();\n if (dbStatementSerializer) {\n const statement = dbStatementSerializer(this.op, {\n // Use public API methods (getFilter/getOptions) for better compatibility\n condition: this.getFilter?.() ?? this._conditions,\n updates: this._update,\n options: this.getOptions?.() ?? this.options,\n fields: this._fields,\n });\n if (self._dbSemconvStability & instrumentation_1.SemconvStability.OLD) {\n attributes[semconv_1.ATTR_DB_STATEMENT] = statement;\n }\n if (self._dbSemconvStability & instrumentation_1.SemconvStability.STABLE) {\n attributes[semantic_conventions_1.ATTR_DB_QUERY_TEXT] = statement;\n }\n }\n const span = self._startSpan(this.mongooseCollection, this.model.modelName, this.op, attributes, parentSpan);\n return self._handleResponse(span, originalExec, this, arguments, callback, moduleVersion);\n };\n };\n }\n patchOnModelMethods(op, moduleVersion) {\n const self = this;\n return (originalOnModelFunction) => {\n return function method(options, callback) {\n if (self.getConfig().requireParentSpan &&\n api_1.trace.getSpan(api_1.context.active()) === undefined) {\n return originalOnModelFunction.apply(this, arguments);\n }\n const serializePayload = { document: this };\n if (options && !(options instanceof Function)) {\n serializePayload.options = options;\n }\n const attributes = {};\n const { dbStatementSerializer } = self.getConfig();\n if (dbStatementSerializer) {\n const statement = dbStatementSerializer(op, serializePayload);\n if (self._dbSemconvStability & instrumentation_1.SemconvStability.OLD) {\n attributes[semconv_1.ATTR_DB_STATEMENT] = statement;\n }\n if (self._dbSemconvStability & instrumentation_1.SemconvStability.STABLE) {\n attributes[semantic_conventions_1.ATTR_DB_QUERY_TEXT] = statement;\n }\n }\n const span = self._startSpan(this.constructor.collection, this.constructor.modelName, op, attributes);\n if (options instanceof Function) {\n callback = options;\n options = undefined;\n }\n return self._handleResponse(span, originalOnModelFunction, this, arguments, callback, moduleVersion);\n };\n };\n }\n // Patch document instance methods (doc.updateOne/deleteOne) for Mongoose 8.21.0+.\n _patchDocumentUpdateMethods(op, moduleVersion) {\n const self = this;\n return (originalMethod) => {\n return function method(update, options, callback) {\n if (self.getConfig().requireParentSpan &&\n api_1.trace.getSpan(api_1.context.active()) === undefined) {\n return originalMethod.apply(this, arguments);\n }\n // determine actual callback since different argument patterns are allowed\n let actualCallback = callback;\n let actualUpdate = update;\n let actualOptions = options;\n if (typeof update === 'function') {\n actualCallback = update;\n actualUpdate = undefined;\n actualOptions = undefined;\n }\n else if (typeof options === 'function') {\n actualCallback = options;\n actualOptions = undefined;\n }\n const attributes = {};\n const dbStatementSerializer = self.getConfig().dbStatementSerializer;\n if (dbStatementSerializer) {\n const statement = dbStatementSerializer(op, {\n // Document instance methods automatically use the document's _id as filter\n condition: { _id: this._id },\n updates: actualUpdate,\n options: actualOptions,\n });\n if (self._dbSemconvStability & instrumentation_1.SemconvStability.OLD) {\n attributes[semconv_1.ATTR_DB_STATEMENT] = statement;\n }\n if (self._dbSemconvStability & instrumentation_1.SemconvStability.STABLE) {\n attributes[semantic_conventions_1.ATTR_DB_QUERY_TEXT] = statement;\n }\n }\n const span = self._startSpan(this.constructor.collection, this.constructor.modelName, op, attributes);\n const result = self._handleResponse(span, originalMethod, this, arguments, actualCallback, moduleVersion);\n // Mark returned Query to prevent double-instrumentation when exec() is eventually called\n if (result && typeof result === 'object') {\n result[exports._ALREADY_INSTRUMENTED] = true;\n }\n return result;\n };\n };\n }\n patchModelStatic(op, moduleVersion) {\n const self = this;\n return (original) => {\n return function patchedStatic(docsOrOps, options, callback) {\n if (self.getConfig().requireParentSpan &&\n api_1.trace.getSpan(api_1.context.active()) === undefined) {\n return original.apply(this, arguments);\n }\n if (typeof options === 'function') {\n callback = options;\n options = undefined;\n }\n const serializePayload = {};\n switch (op) {\n case 'insertMany':\n serializePayload.documents = docsOrOps;\n break;\n case 'bulkWrite':\n serializePayload.operations = docsOrOps;\n break;\n default:\n serializePayload.document = docsOrOps;\n break;\n }\n if (options !== undefined) {\n serializePayload.options = options;\n }\n const attributes = {};\n const { dbStatementSerializer } = self.getConfig();\n if (dbStatementSerializer) {\n const statement = dbStatementSerializer(op, serializePayload);\n if (self._dbSemconvStability & instrumentation_1.SemconvStability.OLD) {\n attributes[semconv_1.ATTR_DB_STATEMENT] = statement;\n }\n if (self._dbSemconvStability & instrumentation_1.SemconvStability.STABLE) {\n attributes[semantic_conventions_1.ATTR_DB_QUERY_TEXT] = statement;\n }\n }\n const span = self._startSpan(this.collection, this.modelName, op, attributes);\n return self._handleResponse(span, original, this, arguments, callback, moduleVersion);\n };\n };\n }\n // we want to capture the otel span on the object which is calling exec.\n // in the special case of aggregate, we need have no function to path\n // on the Aggregate object to capture the context on, so we patch\n // the aggregate of Model, and set the context on the Aggregate object\n patchModelAggregate() {\n const self = this;\n return (original) => {\n return function captureSpanContext() {\n const currentSpan = api_1.trace.getSpan(api_1.context.active());\n const aggregate = self._callOriginalFunction(() => original.apply(this, arguments));\n if (aggregate)\n aggregate[exports._STORED_PARENT_SPAN] = currentSpan;\n return aggregate;\n };\n };\n }\n patchAndCaptureSpanContext(funcName) {\n const self = this;\n return (original) => {\n return function captureSpanContext() {\n this[exports._STORED_PARENT_SPAN] = api_1.trace.getSpan(api_1.context.active());\n return self._callOriginalFunction(() => original.apply(this, arguments));\n };\n };\n }\n _startSpan(collection, modelName, operation, attributes, parentSpan) {\n const finalAttributes = {\n ...attributes,\n ...(0, utils_1.getAttributesFromCollection)(collection, this._dbSemconvStability, this._netSemconvStability),\n };\n if (this._dbSemconvStability & instrumentation_1.SemconvStability.OLD) {\n finalAttributes[semconv_1.ATTR_DB_OPERATION] = operation;\n finalAttributes[semconv_1.ATTR_DB_SYSTEM] = 'mongoose'; // keep for backwards compatibility\n }\n if (this._dbSemconvStability & instrumentation_1.SemconvStability.STABLE) {\n finalAttributes[semantic_conventions_1.ATTR_DB_OPERATION_NAME] = operation;\n finalAttributes[semantic_conventions_1.ATTR_DB_SYSTEM_NAME] = semconv_1.DB_SYSTEM_NAME_VALUE_MONGODB; // actual db system name\n }\n const spanName = this._dbSemconvStability & instrumentation_1.SemconvStability.STABLE\n ? `${operation} ${collection.name}`\n : `mongoose.${modelName}.${operation}`;\n return this.tracer.startSpan(spanName, {\n kind: api_1.SpanKind.CLIENT,\n attributes: finalAttributes,\n }, parentSpan ? api_1.trace.setSpan(api_1.context.active(), parentSpan) : undefined);\n }\n _handleResponse(span, exec, originalThis, args, callback, moduleVersion = undefined) {\n const self = this;\n if (callback instanceof Function) {\n return self._callOriginalFunction(() => (0, utils_1.handleCallbackResponse)(callback, exec, originalThis, span, args, self.getConfig().responseHook, moduleVersion));\n }\n else {\n const response = self._callOriginalFunction(() => exec.apply(originalThis, args));\n return (0, utils_1.handlePromiseResponse)(response, span, self.getConfig().responseHook, moduleVersion);\n }\n }\n _callOriginalFunction(originalFunction) {\n if (this.getConfig().suppressInternalInstrumentation) {\n return api_1.context.with((0, core_1.suppressTracing)(api_1.context.active()), originalFunction);\n }\n else {\n return originalFunction();\n }\n }\n}\nexports.MongooseInstrumentation = MongooseInstrumentation;\n//# sourceMappingURL=mongoose.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvLnBucG0vQG9wZW50ZWxlbWV0cnkraW5zdHJ1bWVudGF0aW9uLW1vbmdvb3NlQDAuNjAuMF9Ab3BlbnRlbGVtZXRyeSthcGlAMS45LjEvbm9kZV9tb2R1bGVzL0BvcGVudGVsZW1ldHJ5L2luc3RydW1lbnRhdGlvbi1tb25nb29zZS9idWlsZC9zcmMvbW9uZ29vc2UuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkMsRUFBRSxhQUFhLEVBQUM7QUFDN0QsK0JBQStCLEdBQUcsNkJBQTZCLEdBQUcsMkJBQTJCO0FBQzdGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsbUJBQU8sQ0FBQyxrSUFBb0I7QUFDMUMsZUFBZSxtQkFBTyxDQUFDLDhKQUFxQjtBQUM1QyxnQkFBZ0IsbUJBQU8sQ0FBQywyTEFBUztBQUNqQywwQkFBMEIsbUJBQU8sQ0FBQyxpTUFBZ0M7QUFDbEU7QUFDQSxrQkFBa0IsbUJBQU8sQ0FBQywrTEFBVztBQUNyQyxrQkFBa0IsbUJBQU8sQ0FBQywrTEFBVztBQUNyQywrQkFBK0IsbUJBQU8sQ0FBQyxzTEFBcUM7QUFDNUU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCO0FBQzNCO0FBQ0E7QUFDQSw2QkFBNkI7QUFDN0I7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQjtBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQjtBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3Qix3QkFBd0I7QUFDaEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3Qix3QkFBd0I7QUFDaEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJDQUEyQztBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3Qix3QkFBd0I7QUFDaEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUNBQXFDLGVBQWU7QUFDcEQ7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0Isd0JBQXdCO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0VBQW9FO0FBQ3BFO0FBQ0E7QUFDQTtBQUNBLGtIQUFrSDtBQUNsSDtBQUNBO0FBQ0EsaUJBQWlCLFdBQVcsRUFBRSxnQkFBZ0I7QUFDOUMsMEJBQTBCLFVBQVUsR0FBRyxVQUFVO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0JBQStCO0FBQy9CIiwic291cmNlcyI6WyIvVXNlcnMvbWFyY21pbnRlbC9Qcm9qZWN0cy9lLXRpYi5jb20vbm9kZV9tb2R1bGVzLy5wbnBtL0BvcGVudGVsZW1ldHJ5K2luc3RydW1lbnRhdGlvbi1tb25nb29zZUAwLjYwLjBfQG9wZW50ZWxlbWV0cnkrYXBpQDEuOS4xL25vZGVfbW9kdWxlcy9Ab3BlbnRlbGVtZXRyeS9pbnN0cnVtZW50YXRpb24tbW9uZ29vc2UvYnVpbGQvc3JjL21vbmdvb3NlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5Nb25nb29zZUluc3RydW1lbnRhdGlvbiA9IGV4cG9ydHMuX0FMUkVBRFlfSU5TVFJVTUVOVEVEID0gZXhwb3J0cy5fU1RPUkVEX1BBUkVOVF9TUEFOID0gdm9pZCAwO1xuLypcbiAqIENvcHlyaWdodCBUaGUgT3BlblRlbGVtZXRyeSBBdXRob3JzXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmNvbnN0IGFwaV8xID0gcmVxdWlyZShcIkBvcGVudGVsZW1ldHJ5L2FwaVwiKTtcbmNvbnN0IGNvcmVfMSA9IHJlcXVpcmUoXCJAb3BlbnRlbGVtZXRyeS9jb3JlXCIpO1xuY29uc3QgdXRpbHNfMSA9IHJlcXVpcmUoXCIuL3V0aWxzXCIpO1xuY29uc3QgaW5zdHJ1bWVudGF0aW9uXzEgPSByZXF1aXJlKFwiQG9wZW50ZWxlbWV0cnkvaW5zdHJ1bWVudGF0aW9uXCIpO1xuLyoqIEBrbmlwaWdub3JlICovXG5jb25zdCB2ZXJzaW9uXzEgPSByZXF1aXJlKFwiLi92ZXJzaW9uXCIpO1xuY29uc3Qgc2VtY29udl8xID0gcmVxdWlyZShcIi4vc2VtY29udlwiKTtcbmNvbnN0IHNlbWFudGljX2NvbnZlbnRpb25zXzEgPSByZXF1aXJlKFwiQG9wZW50ZWxlbWV0cnkvc2VtYW50aWMtY29udmVudGlvbnNcIik7XG5jb25zdCBjb250ZXh0Q2FwdHVyZUZ1bmN0aW9uc0NvbW1vbiA9IFtcbiAgICAnZGVsZXRlT25lJyxcbiAgICAnZGVsZXRlTWFueScsXG4gICAgJ2ZpbmQnLFxuICAgICdmaW5kT25lJyxcbiAgICAnZXN0aW1hdGVkRG9jdW1lbnRDb3VudCcsXG4gICAgJ2NvdW50RG9jdW1lbnRzJyxcbiAgICAnZGlzdGluY3QnLFxuICAgICd3aGVyZScsXG4gICAgJyR3aGVyZScsXG4gICAgJ2ZpbmRPbmVBbmRVcGRhdGUnLFxuICAgICdmaW5kT25lQW5kRGVsZXRlJyxcbiAgICAnZmluZE9uZUFuZFJlcGxhY2UnLFxuXTtcbmNvbnN0IGNvbnRleHRDYXB0dXJlRnVuY3Rpb25zNiA9IFtcbiAgICAncmVtb3ZlJyxcbiAgICAnY291bnQnLFxuICAgICdmaW5kT25lQW5kUmVtb3ZlJyxcbiAgICAuLi5jb250ZXh0Q2FwdHVyZUZ1bmN0aW9uc0NvbW1vbixcbl07XG5jb25zdCBjb250ZXh0Q2FwdHVyZUZ1bmN0aW9uczcgPSBbXG4gICAgJ2NvdW50JyxcbiAgICAnZmluZE9uZUFuZFJlbW92ZScsXG4gICAgLi4uY29udGV4dENhcHR1cmVGdW5jdGlvbnNDb21tb24sXG5dO1xuY29uc3QgY29udGV4dENhcHR1cmVGdW5jdGlvbnM4ID0gWy4uLmNvbnRleHRDYXB0dXJlRnVuY3Rpb25zQ29tbW9uXTtcbmZ1bmN0aW9uIGdldENvbnRleHRDYXB0dXJlRnVuY3Rpb25zKG1vZHVsZVZlcnNpb24pIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIGlmICghbW9kdWxlVmVyc2lvbikge1xuICAgICAgICByZXR1cm4gY29udGV4dENhcHR1cmVGdW5jdGlvbnNDb21tb247XG4gICAgfVxuICAgIGVsc2UgaWYgKG1vZHVsZVZlcnNpb24uc3RhcnRzV2l0aCgnNi4nKSB8fCBtb2R1bGVWZXJzaW9uLnN0YXJ0c1dpdGgoJzUuJykpIHtcbiAgICAgICAgcmV0dXJuIGNvbnRleHRDYXB0dXJlRnVuY3Rpb25zNjtcbiAgICB9XG4gICAgZWxzZSBpZiAobW9kdWxlVmVyc2lvbi5zdGFydHNXaXRoKCc3LicpKSB7XG4gICAgICAgIHJldHVybiBjb250ZXh0Q2FwdHVyZUZ1bmN0aW9uczc7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByZXR1cm4gY29udGV4dENhcHR1cmVGdW5jdGlvbnM4O1xuICAgIH1cbn1cbmZ1bmN0aW9uIGluc3RydW1lbnRSZW1vdmUobW9kdWxlVmVyc2lvbikge1xuICAgIHJldHVybiAoKG1vZHVsZVZlcnNpb24gJiZcbiAgICAgICAgKG1vZHVsZVZlcnNpb24uc3RhcnRzV2l0aCgnNS4nKSB8fCBtb2R1bGVWZXJzaW9uLnN0YXJ0c1dpdGgoJzYuJykpKSB8fFxuICAgICAgICBmYWxzZSk7XG59XG4vKipcbiAqIDguMjEuMCBjaGFuZ2VkIERvY3VtZW50LnVwZGF0ZU9uZS9kZWxldGVPbmUgc28gdGhhdCB0aGUgUXVlcnkgaXMgbm90IGZ1bGx5IGJ1aWx0IHdoZW4gUXVlcnkuZXhlYygpIGlzIGNhbGxlZC5cbiAqIEBwYXJhbSBtb2R1bGVWZXJzaW9uXG4gKi9cbmZ1bmN0aW9uIG5lZWRzRG9jdW1lbnRNZXRob2RQYXRjaChtb2R1bGVWZXJzaW9uKSB7XG4gICAgaWYgKCFtb2R1bGVWZXJzaW9uIHx8ICFtb2R1bGVWZXJzaW9uLnN0YXJ0c1dpdGgoJzguJykpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCBtaW5vciA9IHBhcnNlSW50KG1vZHVsZVZlcnNpb24uc3BsaXQoJy4nKVsxXSwgMTApO1xuICAgIHJldHVybiBtaW5vciA+PSAyMTtcbn1cbi8vIHdoZW4gbW9uZ29vc2UgZnVuY3Rpb25zIGFyZSBjYWxsZWQsIHdlIHN0b3JlIHRoZSBvcmlnaW5hbCBjYWxsIGNvbnRleHRcbi8vIGFuZCB0aGVuIHNldCBpdCBhcyB0aGUgcGFyZW50IGZvciB0aGUgc3BhbnMgY3JlYXRlZCBieSBRdWVyeS9BZ2dyZWdhdGUgZXhlYygpXG4vLyBjYWxscy4gdGhpcyBieXBhc3MgdGhlIHVubGlua2VkIHNwYW5zIGlzc3VlIG9uIHRoZW5hYmxlcyBhd2FpdCBvcGVyYXRpb25zLlxuZXhwb3J0cy5fU1RPUkVEX1BBUkVOVF9TUEFOID0gU3ltYm9sKCdzdG9yZWQtcGFyZW50LXNwYW4nKTtcbi8vIFByZXZlbnRzIGRvdWJsZS1pbnN0cnVtZW50YXRpb24gd2hlbiBkb2MudXBkYXRlT25lL2RlbGV0ZU9uZSAoTW9uZ29vc2UgOC4yMS4wKylcbi8vIGNyZWF0ZXMgYSBzcGFuIGFuZCByZXR1cm5zIGEgUXVlcnkgdGhhdCBhbHNvIGNhbGxzIGV4ZWMoKVxuZXhwb3J0cy5fQUxSRUFEWV9JTlNUUlVNRU5URUQgPSBTeW1ib2woJ2FscmVhZHktaW5zdHJ1bWVudGVkJyk7XG5jbGFzcyBNb25nb29zZUluc3RydW1lbnRhdGlvbiBleHRlbmRzIGluc3RydW1lbnRhdGlvbl8xLkluc3RydW1lbnRhdGlvbkJhc2Uge1xuICAgIF9uZXRTZW1jb252U3RhYmlsaXR5O1xuICAgIF9kYlNlbWNvbnZTdGFiaWxpdHk7XG4gICAgY29uc3RydWN0b3IoY29uZmlnID0ge30pIHtcbiAgICAgICAgc3VwZXIodmVyc2lvbl8xLlBBQ0tBR0VfTkFNRSwgdmVyc2lvbl8xLlBBQ0tBR0VfVkVSU0lPTiwgY29uZmlnKTtcbiAgICAgICAgdGhpcy5fc2V0U2VtY29udlN0YWJpbGl0eUZyb21FbnYoKTtcbiAgICB9XG4gICAgLy8gVXNlZCBmb3IgdGVzdGluZy5cbiAgICBfc2V0U2VtY29udlN0YWJpbGl0eUZyb21FbnYoKSB7XG4gICAgICAgIHRoaXMuX25ldFNlbWNvbnZTdGFiaWxpdHkgPSAoMCwgaW5zdHJ1bWVudGF0aW9uXzEuc2VtY29udlN0YWJpbGl0eUZyb21TdHIpKCdodHRwJywgcHJvY2Vzcy5lbnYuT1RFTF9TRU1DT05WX1NUQUJJTElUWV9PUFRfSU4pO1xuICAgICAgICB0aGlzLl9kYlNlbWNvbnZTdGFiaWxpdHkgPSAoMCwgaW5zdHJ1bWVudGF0aW9uXzEuc2VtY29udlN0YWJpbGl0eUZyb21TdHIpKCdkYXRhYmFzZScsIHByb2Nlc3MuZW52Lk9URUxfU0VNQ09OVl9TVEFCSUxJVFlfT1BUX0lOKTtcbiAgICB9XG4gICAgaW5pdCgpIHtcbiAgICAgICAgY29uc3QgbW9kdWxlID0gbmV3IGluc3RydW1lbnRhdGlvbl8xLkluc3RydW1lbnRhdGlvbk5vZGVNb2R1bGVEZWZpbml0aW9uKCdtb25nb29zZScsIFsnPj01LjkuNyA8MTAnXSwgdGhpcy5wYXRjaC5iaW5kKHRoaXMpLCB0aGlzLnVucGF0Y2guYmluZCh0aGlzKSk7XG4gICAgICAgIHJldHVybiBtb2R1bGU7XG4gICAgfVxuICAgIHBhdGNoKG1vZHVsZSwgbW9kdWxlVmVyc2lvbikge1xuICAgICAgICBjb25zdCBtb2R1bGVFeHBvcnRzID0gbW9kdWxlW1N5bWJvbC50b1N0cmluZ1RhZ10gPT09ICdNb2R1bGUnXG4gICAgICAgICAgICA/IG1vZHVsZS5kZWZhdWx0IC8vIEVTTVxuICAgICAgICAgICAgOiBtb2R1bGU7IC8vIENvbW1vbkpTXG4gICAgICAgIHRoaXMuX3dyYXAobW9kdWxlRXhwb3J0cy5Nb2RlbC5wcm90b3R5cGUsICdzYXZlJywgdGhpcy5wYXRjaE9uTW9kZWxNZXRob2RzKCdzYXZlJywgbW9kdWxlVmVyc2lvbikpO1xuICAgICAgICAvLyBtb25nb29zZSBhcHBsaWVzIHRoaXMgY29kZSBvbiBtb2R1bGUgcmVxdWlyZTpcbiAgICAgICAgLy8gTW9kZWwucHJvdG90eXBlLiRzYXZlID0gTW9kZWwucHJvdG90eXBlLnNhdmU7XG4gICAgICAgIC8vIHdoaWNoIGNhcHR1cmVzIHRoZSBzYXZlIGZ1bmN0aW9uIGJlZm9yZSBpdCBpcyBwYXRjaGVkLlxuICAgICAgICAvLyBzbyB3ZSBuZWVkIHRvIGFwcGx5IHRoZSBzYW1lIGxvZ2ljIGFmdGVyIGluc3RydW1lbnRpbmcgdGhlIHNhdmUgZnVuY3Rpb24uXG4gICAgICAgIG1vZHVsZUV4cG9ydHMuTW9kZWwucHJvdG90eXBlLiRzYXZlID0gbW9kdWxlRXhwb3J0cy5Nb2RlbC5wcm90b3R5cGUuc2F2ZTtcbiAgICAgICAgaWYgKGluc3RydW1lbnRSZW1vdmUobW9kdWxlVmVyc2lvbikpIHtcbiAgICAgICAgICAgIHRoaXMuX3dyYXAobW9kdWxlRXhwb3J0cy5Nb2RlbC5wcm90b3R5cGUsICdyZW1vdmUnLCB0aGlzLnBhdGNoT25Nb2RlbE1ldGhvZHMoJ3JlbW92ZScsIG1vZHVsZVZlcnNpb24pKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBNb25nb29zZSA4LjIxLjArIGNoYW5nZWQgRG9jdW1lbnQudXBkYXRlT25lKCkvZGVsZXRlT25lKCkgc28gdGhhdCB0aGUgUXVlcnkgaXMgbm90IGZ1bGx5IGJ1aWx0IHdoZW4gUXVlcnkuZXhlYygpIGlzIGNhbGxlZC5cbiAgICAgICAgLy9cbiAgICAgICAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9BdXRvbWF0dGljL21vbmdvb3NlL2Jsb2IvN2RiZGExMmRjYTFiZDdhZGI5ZTI3MGQ3ZGU4YWM1MjI5NjA2Y2U3Mi9saWIvZG9jdW1lbnQuanMjTDg2MS5cbiAgICAgICAgLy8gLSBgdGhpc2AgaXMgYSBRdWVyeSBvYmplY3RcbiAgICAgICAgLy8gLSB0aGUgdXBkYXRlIGhhcHBlbnMgaW4gYSBwcmUtaG9vayB0aGF0IGdldHMgY2FsbGVkIHdoZW4gUXVlcnkuZXhlYygpIGlzIGFscmVhZHkgcnVubmluZy5cbiAgICAgICAgLy8gLSB3aGVuIHdlIGluc3RydW1lbnQgUXVlcnkuZXhlYygpLCB3ZSBkb24ndCBoYXZlIGFjY2VzcyB0byB0aGUgb3B0aW9ucyB5ZXQgYXMgdGhleSBnZXQgc2V0IGR1cmluZyBRdWVyeS5leGVjKCkgb25seS5cbiAgICAgICAgLy9cbiAgICAgICAgLy8gVW5mb3J0dW5hdGVseSwgYWZ0ZXIgUXVlcnkuZXhlYygpIGlzIGZpbmlzaGVkLCB0aGUgb3B0aW9ucyBhcmUgbGVmdCBtb2RpZmllZCBieSB0aGUgbGlicmFyeSwgc28ganVzdCBkZWxheWluZ1xuICAgICAgICAvLyBhdHRhY2hpbmcgdGhlIGF0dHJpYnV0ZXMgYWZ0ZXIgdGhlIHNwYW4gaXMgZG9uZSBpcyBub3QgYW4gb3B0aW9uLiBUaGVyZWZvcmUsIHdlIHBhdGNoIE1vZGVsIG1ldGhvZHNcbiAgICAgICAgLy8gYW5kIGdyYWIgdGhlIGRhdGEgZGlyZWN0bHkgd2hlcmUgdGhlIHVzZXIgcHJvdmlkZXMgaXQuXG4gICAgICAgIC8vXG4gICAgICAgIC8vIHJlZjogaHR0cHM6Ly9naXRodWIuY29tL0F1dG9tYXR0aWMvbW9uZ29vc2UvcHVsbC8xNTkwOCAoaW50cm9kdWNlZCB0aGlzIGJlaGF2aW9yKVxuICAgICAgICBpZiAobmVlZHNEb2N1bWVudE1ldGhvZFBhdGNoKG1vZHVsZVZlcnNpb24pKSB7XG4gICAgICAgICAgICB0aGlzLl93cmFwKG1vZHVsZUV4cG9ydHMuTW9kZWwucHJvdG90eXBlLCAndXBkYXRlT25lJywgdGhpcy5fcGF0Y2hEb2N1bWVudFVwZGF0ZU1ldGhvZHMoJ3VwZGF0ZU9uZScsIG1vZHVsZVZlcnNpb24pKTtcbiAgICAgICAgICAgIHRoaXMuX3dyYXAobW9kdWxlRXhwb3J0cy5Nb2RlbC5wcm90b3R5cGUsICdkZWxldGVPbmUnLCB0aGlzLl9wYXRjaERvY3VtZW50VXBkYXRlTWV0aG9kcygnZGVsZXRlT25lJywgbW9kdWxlVmVyc2lvbikpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3dyYXAobW9kdWxlRXhwb3J0cy5RdWVyeS5wcm90b3R5cGUsICdleGVjJywgdGhpcy5wYXRjaFF1ZXJ5RXhlYyhtb2R1bGVWZXJzaW9uKSk7XG4gICAgICAgIHRoaXMuX3dyYXAobW9kdWxlRXhwb3J0cy5BZ2dyZWdhdGUucHJvdG90eXBlLCAnZXhlYycsIHRoaXMucGF0Y2hBZ2dyZWdhdGVFeGVjKG1vZHVsZVZlcnNpb24pKTtcbiAgICAgICAgY29uc3QgY29udGV4dENhcHR1cmVGdW5jdGlvbnMgPSBnZXRDb250ZXh0Q2FwdHVyZUZ1bmN0aW9ucyhtb2R1bGVWZXJzaW9uKTtcbiAgICAgICAgY29udGV4dENhcHR1cmVGdW5jdGlvbnMuZm9yRWFjaCgoZnVuY05hbWUpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3dyYXAobW9kdWxlRXhwb3J0cy5RdWVyeS5wcm90b3R5cGUsIGZ1bmNOYW1lLCB0aGlzLnBhdGNoQW5kQ2FwdHVyZVNwYW5Db250ZXh0KGZ1bmNOYW1lKSk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLl93cmFwKG1vZHVsZUV4cG9ydHMuTW9kZWwsICdhZ2dyZWdhdGUnLCB0aGlzLnBhdGNoTW9kZWxBZ2dyZWdhdGUoKSk7XG4gICAgICAgIHRoaXMuX3dyYXAobW9kdWxlRXhwb3J0cy5Nb2RlbCwgJ2luc2VydE1hbnknLCB0aGlzLnBhdGNoTW9kZWxTdGF0aWMoJ2luc2VydE1hbnknLCBtb2R1bGVWZXJzaW9uKSk7XG4gICAgICAgIHRoaXMuX3dyYXAobW9kdWxlRXhwb3J0cy5Nb2RlbCwgJ2J1bGtXcml0ZScsIHRoaXMucGF0Y2hNb2RlbFN0YXRpYygnYnVsa1dyaXRlJywgbW9kdWxlVmVyc2lvbikpO1xuICAgICAgICByZXR1cm4gbW9kdWxlRXhwb3J0cztcbiAgICB9XG4gICAgdW5wYXRjaChtb2R1bGUsIG1vZHVsZVZlcnNpb24pIHtcbiAgICAgICAgY29uc3QgbW9kdWxlRXhwb3J0cyA9IG1vZHVsZVtTeW1ib2wudG9TdHJpbmdUYWddID09PSAnTW9kdWxlJ1xuICAgICAgICAgICAgPyBtb2R1bGUuZGVmYXVsdCAvLyBFU01cbiAgICAgICAgICAgIDogbW9kdWxlOyAvLyBDb21tb25KU1xuICAgICAgICBjb25zdCBjb250ZXh0Q2FwdHVyZUZ1bmN0aW9ucyA9IGdldENvbnRleHRDYXB0dXJlRnVuY3Rpb25zKG1vZHVsZVZlcnNpb24pO1xuICAgICAgICB0aGlzLl91bndyYXAobW9kdWxlRXhwb3J0cy5Nb2RlbC5wcm90b3R5cGUsICdzYXZlJyk7XG4gICAgICAgIC8vIHJldmVydCB0aGUgcGF0Y2ggZm9yICRzYXZlIHdoaWNoIHdlIGFwcGxpZWQgYnkgYWxpYXNpbmcgaXQgdG8gcGF0Y2hlZCBgc2F2ZWBcbiAgICAgICAgbW9kdWxlRXhwb3J0cy5Nb2RlbC5wcm90b3R5cGUuJHNhdmUgPSBtb2R1bGVFeHBvcnRzLk1vZGVsLnByb3RvdHlwZS5zYXZlO1xuICAgICAgICBpZiAoaW5zdHJ1bWVudFJlbW92ZShtb2R1bGVWZXJzaW9uKSkge1xuICAgICAgICAgICAgdGhpcy5fdW53cmFwKG1vZHVsZUV4cG9ydHMuTW9kZWwucHJvdG90eXBlLCAncmVtb3ZlJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5lZWRzRG9jdW1lbnRNZXRob2RQYXRjaChtb2R1bGVWZXJzaW9uKSkge1xuICAgICAgICAgICAgdGhpcy5fdW53cmFwKG1vZHVsZUV4cG9ydHMuTW9kZWwucHJvdG90eXBlLCAndXBkYXRlT25lJyk7XG4gICAgICAgICAgICB0aGlzLl91bndyYXAobW9kdWxlRXhwb3J0cy5Nb2RlbC5wcm90b3R5cGUsICdkZWxldGVPbmUnKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl91bndyYXAobW9kdWxlRXhwb3J0cy5RdWVyeS5wcm90b3R5cGUsICdleGVjJyk7XG4gICAgICAgIHRoaXMuX3Vud3JhcChtb2R1bGVFeHBvcnRzLkFnZ3JlZ2F0ZS5wcm90b3R5cGUsICdleGVjJyk7XG4gICAgICAgIGNvbnRleHRDYXB0dXJlRnVuY3Rpb25zLmZvckVhY2goKGZ1bmNOYW1lKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl91bndyYXAobW9kdWxlRXhwb3J0cy5RdWVyeS5wcm90b3R5cGUsIGZ1bmNOYW1lKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX3Vud3JhcChtb2R1bGVFeHBvcnRzLk1vZGVsLCAnYWdncmVnYXRlJyk7XG4gICAgICAgIHRoaXMuX3Vud3JhcChtb2R1bGVFeHBvcnRzLk1vZGVsLCAnaW5zZXJ0TWFueScpO1xuICAgICAgICB0aGlzLl91bndyYXAobW9kdWxlRXhwb3J0cy5Nb2RlbCwgJ2J1bGtXcml0ZScpO1xuICAgIH1cbiAgICBwYXRjaEFnZ3JlZ2F0ZUV4ZWMobW9kdWxlVmVyc2lvbikge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgcmV0dXJuIChvcmlnaW5hbEFnZ3JlZ2F0ZSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIGV4ZWMoY2FsbGJhY2spIHtcbiAgICAgICAgICAgICAgICBpZiAoc2VsZi5nZXRDb25maWcoKS5yZXF1aXJlUGFyZW50U3BhbiAmJlxuICAgICAgICAgICAgICAgICAgICBhcGlfMS50cmFjZS5nZXRTcGFuKGFwaV8xLmNvbnRleHQuYWN0aXZlKCkpID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9yaWdpbmFsQWdncmVnYXRlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudFNwYW4gPSB0aGlzW2V4cG9ydHMuX1NUT1JFRF9QQVJFTlRfU1BBTl07XG4gICAgICAgICAgICAgICAgY29uc3QgYXR0cmlidXRlcyA9IHt9O1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgZGJTdGF0ZW1lbnRTZXJpYWxpemVyIH0gPSBzZWxmLmdldENvbmZpZygpO1xuICAgICAgICAgICAgICAgIGlmIChkYlN0YXRlbWVudFNlcmlhbGl6ZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RhdGVtZW50ID0gZGJTdGF0ZW1lbnRTZXJpYWxpemVyKCdhZ2dyZWdhdGUnLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiB0aGlzLm9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBhZ2dyZWdhdGVQaXBlbGluZTogdGhpcy5fcGlwZWxpbmUsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZi5fZGJTZW1jb252U3RhYmlsaXR5ICYgaW5zdHJ1bWVudGF0aW9uXzEuU2VtY29udlN0YWJpbGl0eS5PTEQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXNbc2VtY29udl8xLkFUVFJfREJfU1RBVEVNRU5UXSA9IHN0YXRlbWVudDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZi5fZGJTZW1jb252U3RhYmlsaXR5ICYgaW5zdHJ1bWVudGF0aW9uXzEuU2VtY29udlN0YWJpbGl0eS5TVEFCTEUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXNbc2VtYW50aWNfY29udmVudGlvbnNfMS5BVFRSX0RCX1FVRVJZX1RFWFRdID0gc3RhdGVtZW50O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IHNwYW4gPSBzZWxmLl9zdGFydFNwYW4odGhpcy5fbW9kZWwuY29sbGVjdGlvbiwgdGhpcy5fbW9kZWw/Lm1vZGVsTmFtZSwgJ2FnZ3JlZ2F0ZScsIGF0dHJpYnV0ZXMsIHBhcmVudFNwYW4pO1xuICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9oYW5kbGVSZXNwb25zZShzcGFuLCBvcmlnaW5hbEFnZ3JlZ2F0ZSwgdGhpcywgYXJndW1lbnRzLCBjYWxsYmFjaywgbW9kdWxlVmVyc2lvbik7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9O1xuICAgIH1cbiAgICBwYXRjaFF1ZXJ5RXhlYyhtb2R1bGVWZXJzaW9uKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICByZXR1cm4gKG9yaWdpbmFsRXhlYykgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIGV4ZWMoY2FsbGJhY2spIHtcbiAgICAgICAgICAgICAgICAvLyBTa2lwIGlmIGFscmVhZHkgaW5zdHJ1bWVudGVkIGJ5IGRvY3VtZW50IGluc3RhbmNlIG1ldGhvZCBwYXRjaFxuICAgICAgICAgICAgICAgIGlmICh0aGlzW2V4cG9ydHMuX0FMUkVBRFlfSU5TVFJVTUVOVEVEXSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3JpZ2luYWxFeGVjLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChzZWxmLmdldENvbmZpZygpLnJlcXVpcmVQYXJlbnRTcGFuICYmXG4gICAgICAgICAgICAgICAgICAgIGFwaV8xLnRyYWNlLmdldFNwYW4oYXBpXzEuY29udGV4dC5hY3RpdmUoKSkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3JpZ2luYWxFeGVjLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudFNwYW4gPSB0aGlzW2V4cG9ydHMuX1NUT1JFRF9QQVJFTlRfU1BBTl07XG4gICAgICAgICAgICAgICAgY29uc3QgYXR0cmlidXRlcyA9IHt9O1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgZGJTdGF0ZW1lbnRTZXJpYWxpemVyIH0gPSBzZWxmLmdldENvbmZpZygpO1xuICAgICAgICAgICAgICAgIGlmIChkYlN0YXRlbWVudFNlcmlhbGl6ZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RhdGVtZW50ID0gZGJTdGF0ZW1lbnRTZXJpYWxpemVyKHRoaXMub3AsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFVzZSBwdWJsaWMgQVBJIG1ldGhvZHMgKGdldEZpbHRlci9nZXRPcHRpb25zKSBmb3IgYmV0dGVyIGNvbXBhdGliaWxpdHlcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbjogdGhpcy5nZXRGaWx0ZXI/LigpID8/IHRoaXMuX2NvbmRpdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVzOiB0aGlzLl91cGRhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiB0aGlzLmdldE9wdGlvbnM/LigpID8/IHRoaXMub3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkczogdGhpcy5fZmllbGRzLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGYuX2RiU2VtY29udlN0YWJpbGl0eSAmIGluc3RydW1lbnRhdGlvbl8xLlNlbWNvbnZTdGFiaWxpdHkuT0xEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzW3NlbWNvbnZfMS5BVFRSX0RCX1NUQVRFTUVOVF0gPSBzdGF0ZW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGYuX2RiU2VtY29udlN0YWJpbGl0eSAmIGluc3RydW1lbnRhdGlvbl8xLlNlbWNvbnZTdGFiaWxpdHkuU1RBQkxFKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzW3NlbWFudGljX2NvbnZlbnRpb25zXzEuQVRUUl9EQl9RVUVSWV9URVhUXSA9IHN0YXRlbWVudDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBzcGFuID0gc2VsZi5fc3RhcnRTcGFuKHRoaXMubW9uZ29vc2VDb2xsZWN0aW9uLCB0aGlzLm1vZGVsLm1vZGVsTmFtZSwgdGhpcy5vcCwgYXR0cmlidXRlcywgcGFyZW50U3Bhbik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2hhbmRsZVJlc3BvbnNlKHNwYW4sIG9yaWdpbmFsRXhlYywgdGhpcywgYXJndW1lbnRzLCBjYWxsYmFjaywgbW9kdWxlVmVyc2lvbik7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9O1xuICAgIH1cbiAgICBwYXRjaE9uTW9kZWxNZXRob2RzKG9wLCBtb2R1bGVWZXJzaW9uKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICByZXR1cm4gKG9yaWdpbmFsT25Nb2RlbEZ1bmN0aW9uKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gbWV0aG9kKG9wdGlvbnMsIGNhbGxiYWNrKSB7XG4gICAgICAgICAgICAgICAgaWYgKHNlbGYuZ2V0Q29uZmlnKCkucmVxdWlyZVBhcmVudFNwYW4gJiZcbiAgICAgICAgICAgICAgICAgICAgYXBpXzEudHJhY2UuZ2V0U3BhbihhcGlfMS5jb250ZXh0LmFjdGl2ZSgpKSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvcmlnaW5hbE9uTW9kZWxGdW5jdGlvbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBzZXJpYWxpemVQYXlsb2FkID0geyBkb2N1bWVudDogdGhpcyB9O1xuICAgICAgICAgICAgICAgIGlmIChvcHRpb25zICYmICEob3B0aW9ucyBpbnN0YW5jZW9mIEZ1bmN0aW9uKSkge1xuICAgICAgICAgICAgICAgICAgICBzZXJpYWxpemVQYXlsb2FkLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBhdHRyaWJ1dGVzID0ge307XG4gICAgICAgICAgICAgICAgY29uc3QgeyBkYlN0YXRlbWVudFNlcmlhbGl6ZXIgfSA9IHNlbGYuZ2V0Q29uZmlnKCk7XG4gICAgICAgICAgICAgICAgaWYgKGRiU3RhdGVtZW50U2VyaWFsaXplcikge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGF0ZW1lbnQgPSBkYlN0YXRlbWVudFNlcmlhbGl6ZXIob3AsIHNlcmlhbGl6ZVBheWxvYWQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZi5fZGJTZW1jb252U3RhYmlsaXR5ICYgaW5zdHJ1bWVudGF0aW9uXzEuU2VtY29udlN0YWJpbGl0eS5PTEQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXNbc2VtY29udl8xLkFUVFJfREJfU1RBVEVNRU5UXSA9IHN0YXRlbWVudDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZi5fZGJTZW1jb252U3RhYmlsaXR5ICYgaW5zdHJ1bWVudGF0aW9uXzEuU2VtY29udlN0YWJpbGl0eS5TVEFCTEUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXNbc2VtYW50aWNfY29udmVudGlvbnNfMS5BVFRSX0RCX1FVRVJZX1RFWFRdID0gc3RhdGVtZW50O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IHNwYW4gPSBzZWxmLl9zdGFydFNwYW4odGhpcy5jb25zdHJ1Y3Rvci5jb2xsZWN0aW9uLCB0aGlzLmNvbnN0cnVjdG9yLm1vZGVsTmFtZSwgb3AsIGF0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgICAgIGlmIChvcHRpb25zIGluc3RhbmNlb2YgRnVuY3Rpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2sgPSBvcHRpb25zO1xuICAgICAgICAgICAgICAgICAgICBvcHRpb25zID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5faGFuZGxlUmVzcG9uc2Uoc3Bhbiwgb3JpZ2luYWxPbk1vZGVsRnVuY3Rpb24sIHRoaXMsIGFyZ3VtZW50cywgY2FsbGJhY2ssIG1vZHVsZVZlcnNpb24pO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfTtcbiAgICB9XG4gICAgLy8gUGF0Y2ggZG9jdW1lbnQgaW5zdGFuY2UgbWV0aG9kcyAoZG9jLnVwZGF0ZU9uZS9kZWxldGVPbmUpIGZvciBNb25nb29zZSA4LjIxLjArLlxuICAgIF9wYXRjaERvY3VtZW50VXBkYXRlTWV0aG9kcyhvcCwgbW9kdWxlVmVyc2lvbikge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgcmV0dXJuIChvcmlnaW5hbE1ldGhvZCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIG1ldGhvZCh1cGRhdGUsIG9wdGlvbnMsIGNhbGxiYWNrKSB7XG4gICAgICAgICAgICAgICAgaWYgKHNlbGYuZ2V0Q29uZmlnKCkucmVxdWlyZVBhcmVudFNwYW4gJiZcbiAgICAgICAgICAgICAgICAgICAgYXBpXzEudHJhY2UuZ2V0U3BhbihhcGlfMS5jb250ZXh0LmFjdGl2ZSgpKSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvcmlnaW5hbE1ldGhvZC5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBkZXRlcm1pbmUgYWN0dWFsIGNhbGxiYWNrIHNpbmNlIGRpZmZlcmVudCBhcmd1bWVudCBwYXR0ZXJucyBhcmUgYWxsb3dlZFxuICAgICAgICAgICAgICAgIGxldCBhY3R1YWxDYWxsYmFjayA9IGNhbGxiYWNrO1xuICAgICAgICAgICAgICAgIGxldCBhY3R1YWxVcGRhdGUgPSB1cGRhdGU7XG4gICAgICAgICAgICAgICAgbGV0IGFjdHVhbE9wdGlvbnMgPSBvcHRpb25zO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdXBkYXRlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgIGFjdHVhbENhbGxiYWNrID0gdXBkYXRlO1xuICAgICAgICAgICAgICAgICAgICBhY3R1YWxVcGRhdGUgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgIGFjdHVhbE9wdGlvbnMgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHR5cGVvZiBvcHRpb25zID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgIGFjdHVhbENhbGxiYWNrID0gb3B0aW9ucztcbiAgICAgICAgICAgICAgICAgICAgYWN0dWFsT3B0aW9ucyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgYXR0cmlidXRlcyA9IHt9O1xuICAgICAgICAgICAgICAgIGNvbnN0IGRiU3RhdGVtZW50U2VyaWFsaXplciA9IHNlbGYuZ2V0Q29uZmlnKCkuZGJTdGF0ZW1lbnRTZXJpYWxpemVyO1xuICAgICAgICAgICAgICAgIGlmIChkYlN0YXRlbWVudFNlcmlhbGl6ZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RhdGVtZW50ID0gZGJTdGF0ZW1lbnRTZXJpYWxpemVyKG9wLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBEb2N1bWVudCBpbnN0YW5jZSBtZXRob2RzIGF1dG9tYXRpY2FsbHkgdXNlIHRoZSBkb2N1bWVudCdzIF9pZCBhcyBmaWx0ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbjogeyBfaWQ6IHRoaXMuX2lkIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVzOiBhY3R1YWxVcGRhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiBhY3R1YWxPcHRpb25zLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGYuX2RiU2VtY29udlN0YWJpbGl0eSAmIGluc3RydW1lbnRhdGlvbl8xLlNlbWNvbnZTdGFiaWxpdHkuT0xEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzW3NlbWNvbnZfMS5BVFRSX0RCX1NUQVRFTUVOVF0gPSBzdGF0ZW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGYuX2RiU2VtY29udlN0YWJpbGl0eSAmIGluc3RydW1lbnRhdGlvbl8xLlNlbWNvbnZTdGFiaWxpdHkuU1RBQkxFKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzW3NlbWFudGljX2NvbnZlbnRpb25zXzEuQVRUUl9EQl9RVUVSWV9URVhUXSA9IHN0YXRlbWVudDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBzcGFuID0gc2VsZi5fc3RhcnRTcGFuKHRoaXMuY29uc3RydWN0b3IuY29sbGVjdGlvbiwgdGhpcy5jb25zdHJ1Y3Rvci5tb2RlbE5hbWUsIG9wLCBhdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBzZWxmLl9oYW5kbGVSZXNwb25zZShzcGFuLCBvcmlnaW5hbE1ldGhvZCwgdGhpcywgYXJndW1lbnRzLCBhY3R1YWxDYWxsYmFjaywgbW9kdWxlVmVyc2lvbik7XG4gICAgICAgICAgICAgICAgLy8gTWFyayByZXR1cm5lZCBRdWVyeSB0byBwcmV2ZW50IGRvdWJsZS1pbnN0cnVtZW50YXRpb24gd2hlbiBleGVjKCkgaXMgZXZlbnR1YWxseSBjYWxsZWRcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0ICYmIHR5cGVvZiByZXN1bHQgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdFtleHBvcnRzLl9BTFJFQURZX0lOU1RSVU1FTlRFRF0gPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfTtcbiAgICB9XG4gICAgcGF0Y2hNb2RlbFN0YXRpYyhvcCwgbW9kdWxlVmVyc2lvbikge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgcmV0dXJuIChvcmlnaW5hbCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIHBhdGNoZWRTdGF0aWMoZG9jc09yT3BzLCBvcHRpb25zLCBjYWxsYmFjaykge1xuICAgICAgICAgICAgICAgIGlmIChzZWxmLmdldENvbmZpZygpLnJlcXVpcmVQYXJlbnRTcGFuICYmXG4gICAgICAgICAgICAgICAgICAgIGFwaV8xLnRyYWNlLmdldFNwYW4oYXBpXzEuY29udGV4dC5hY3RpdmUoKSkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3JpZ2luYWwuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBvcHRpb25zID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrID0gb3B0aW9ucztcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3Qgc2VyaWFsaXplUGF5bG9hZCA9IHt9O1xuICAgICAgICAgICAgICAgIHN3aXRjaCAob3ApIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5zZXJ0TWFueSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXJpYWxpemVQYXlsb2FkLmRvY3VtZW50cyA9IGRvY3NPck9wcztcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdidWxrV3JpdGUnOlxuICAgICAgICAgICAgICAgICAgICAgICAgc2VyaWFsaXplUGF5bG9hZC5vcGVyYXRpb25zID0gZG9jc09yT3BzO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXJpYWxpemVQYXlsb2FkLmRvY3VtZW50ID0gZG9jc09yT3BzO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChvcHRpb25zICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgc2VyaWFsaXplUGF5bG9hZC5vcHRpb25zID0gb3B0aW9ucztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgYXR0cmlidXRlcyA9IHt9O1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgZGJTdGF0ZW1lbnRTZXJpYWxpemVyIH0gPSBzZWxmLmdldENvbmZpZygpO1xuICAgICAgICAgICAgICAgIGlmIChkYlN0YXRlbWVudFNlcmlhbGl6ZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RhdGVtZW50ID0gZGJTdGF0ZW1lbnRTZXJpYWxpemVyKG9wLCBzZXJpYWxpemVQYXlsb2FkKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGYuX2RiU2VtY29udlN0YWJpbGl0eSAmIGluc3RydW1lbnRhdGlvbl8xLlNlbWNvbnZTdGFiaWxpdHkuT0xEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzW3NlbWNvbnZfMS5BVFRSX0RCX1NUQVRFTUVOVF0gPSBzdGF0ZW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGYuX2RiU2VtY29udlN0YWJpbGl0eSAmIGluc3RydW1lbnRhdGlvbl8xLlNlbWNvbnZTdGFiaWxpdHkuU1RBQkxFKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzW3NlbWFudGljX2NvbnZlbnRpb25zXzEuQVRUUl9EQl9RVUVSWV9URVhUXSA9IHN0YXRlbWVudDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBzcGFuID0gc2VsZi5fc3RhcnRTcGFuKHRoaXMuY29sbGVjdGlvbiwgdGhpcy5tb2RlbE5hbWUsIG9wLCBhdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5faGFuZGxlUmVzcG9uc2Uoc3Bhbiwgb3JpZ2luYWwsIHRoaXMsIGFyZ3VtZW50cywgY2FsbGJhY2ssIG1vZHVsZVZlcnNpb24pO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfTtcbiAgICB9XG4gICAgLy8gd2Ugd2FudCB0byBjYXB0dXJlIHRoZSBvdGVsIHNwYW4gb24gdGhlIG9iamVjdCB3aGljaCBpcyBjYWxsaW5nIGV4ZWMuXG4gICAgLy8gaW4gdGhlIHNwZWNpYWwgY2FzZSBvZiBhZ2dyZWdhdGUsIHdlIG5lZWQgaGF2ZSBubyBmdW5jdGlvbiB0byBwYXRoXG4gICAgLy8gb24gdGhlIEFnZ3JlZ2F0ZSBvYmplY3QgdG8gY2FwdHVyZSB0aGUgY29udGV4dCBvbiwgc28gd2UgcGF0Y2hcbiAgICAvLyB0aGUgYWdncmVnYXRlIG9mIE1vZGVsLCBhbmQgc2V0IHRoZSBjb250ZXh0IG9uIHRoZSBBZ2dyZWdhdGUgb2JqZWN0XG4gICAgcGF0Y2hNb2RlbEFnZ3JlZ2F0ZSgpIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIHJldHVybiAob3JpZ2luYWwpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiBjYXB0dXJlU3BhbkNvbnRleHQoKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY3VycmVudFNwYW4gPSBhcGlfMS50cmFjZS5nZXRTcGFuKGFwaV8xLmNvbnRleHQuYWN0aXZlKCkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGFnZ3JlZ2F0ZSA9IHNlbGYuX2NhbGxPcmlnaW5hbEZ1bmN0aW9uKCgpID0+IG9yaWdpbmFsLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykpO1xuICAgICAgICAgICAgICAgIGlmIChhZ2dyZWdhdGUpXG4gICAgICAgICAgICAgICAgICAgIGFnZ3JlZ2F0ZVtleHBvcnRzLl9TVE9SRURfUEFSRU5UX1NQQU5dID0gY3VycmVudFNwYW47XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFnZ3JlZ2F0ZTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH07XG4gICAgfVxuICAgIHBhdGNoQW5kQ2FwdHVyZVNwYW5Db250ZXh0KGZ1bmNOYW1lKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICByZXR1cm4gKG9yaWdpbmFsKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gY2FwdHVyZVNwYW5Db250ZXh0KCkge1xuICAgICAgICAgICAgICAgIHRoaXNbZXhwb3J0cy5fU1RPUkVEX1BBUkVOVF9TUEFOXSA9IGFwaV8xLnRyYWNlLmdldFNwYW4oYXBpXzEuY29udGV4dC5hY3RpdmUoKSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2NhbGxPcmlnaW5hbEZ1bmN0aW9uKCgpID0+IG9yaWdpbmFsLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfTtcbiAgICB9XG4gICAgX3N0YXJ0U3Bhbihjb2xsZWN0aW9uLCBtb2RlbE5hbWUsIG9wZXJhdGlvbiwgYXR0cmlidXRlcywgcGFyZW50U3Bhbikge1xuICAgICAgICBjb25zdCBmaW5hbEF0dHJpYnV0ZXMgPSB7XG4gICAgICAgICAgICAuLi5hdHRyaWJ1dGVzLFxuICAgICAgICAgICAgLi4uKDAsIHV0aWxzXzEuZ2V0QXR0cmlidXRlc0Zyb21Db2xsZWN0aW9uKShjb2xsZWN0aW9uLCB0aGlzLl9kYlNlbWNvbnZTdGFiaWxpdHksIHRoaXMuX25ldFNlbWNvbnZTdGFiaWxpdHkpLFxuICAgICAgICB9O1xuICAgICAgICBpZiAodGhpcy5fZGJTZW1jb252U3RhYmlsaXR5ICYgaW5zdHJ1bWVudGF0aW9uXzEuU2VtY29udlN0YWJpbGl0eS5PTEQpIHtcbiAgICAgICAgICAgIGZpbmFsQXR0cmlidXRlc1tzZW1jb252XzEuQVRUUl9EQl9PUEVSQVRJT05dID0gb3BlcmF0aW9uO1xuICAgICAgICAgICAgZmluYWxBdHRyaWJ1dGVzW3NlbWNvbnZfMS5BVFRSX0RCX1NZU1RFTV0gPSAnbW9uZ29vc2UnOyAvLyBrZWVwIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eVxuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLl9kYlNlbWNvbnZTdGFiaWxpdHkgJiBpbnN0cnVtZW50YXRpb25fMS5TZW1jb252U3RhYmlsaXR5LlNUQUJMRSkge1xuICAgICAgICAgICAgZmluYWxBdHRyaWJ1dGVzW3NlbWFudGljX2NvbnZlbnRpb25zXzEuQVRUUl9EQl9PUEVSQVRJT05fTkFNRV0gPSBvcGVyYXRpb247XG4gICAgICAgICAgICBmaW5hbEF0dHJpYnV0ZXNbc2VtYW50aWNfY29udmVudGlvbnNfMS5BVFRSX0RCX1NZU1RFTV9OQU1FXSA9IHNlbWNvbnZfMS5EQl9TWVNURU1fTkFNRV9WQUxVRV9NT05HT0RCOyAvLyBhY3R1YWwgZGIgc3lzdGVtIG5hbWVcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzcGFuTmFtZSA9IHRoaXMuX2RiU2VtY29udlN0YWJpbGl0eSAmIGluc3RydW1lbnRhdGlvbl8xLlNlbWNvbnZTdGFiaWxpdHkuU1RBQkxFXG4gICAgICAgICAgICA/IGAke29wZXJhdGlvbn0gJHtjb2xsZWN0aW9uLm5hbWV9YFxuICAgICAgICAgICAgOiBgbW9uZ29vc2UuJHttb2RlbE5hbWV9LiR7b3BlcmF0aW9ufWA7XG4gICAgICAgIHJldHVybiB0aGlzLnRyYWNlci5zdGFydFNwYW4oc3Bhbk5hbWUsIHtcbiAgICAgICAgICAgIGtpbmQ6IGFwaV8xLlNwYW5LaW5kLkNMSUVOVCxcbiAgICAgICAgICAgIGF0dHJpYnV0ZXM6IGZpbmFsQXR0cmlidXRlcyxcbiAgICAgICAgfSwgcGFyZW50U3BhbiA/IGFwaV8xLnRyYWNlLnNldFNwYW4oYXBpXzEuY29udGV4dC5hY3RpdmUoKSwgcGFyZW50U3BhbikgOiB1bmRlZmluZWQpO1xuICAgIH1cbiAgICBfaGFuZGxlUmVzcG9uc2Uoc3BhbiwgZXhlYywgb3JpZ2luYWxUaGlzLCBhcmdzLCBjYWxsYmFjaywgbW9kdWxlVmVyc2lvbiA9IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgaWYgKGNhbGxiYWNrIGluc3RhbmNlb2YgRnVuY3Rpb24pIHtcbiAgICAgICAgICAgIHJldHVybiBzZWxmLl9jYWxsT3JpZ2luYWxGdW5jdGlvbigoKSA9PiAoMCwgdXRpbHNfMS5oYW5kbGVDYWxsYmFja1Jlc3BvbnNlKShjYWxsYmFjaywgZXhlYywgb3JpZ2luYWxUaGlzLCBzcGFuLCBhcmdzLCBzZWxmLmdldENvbmZpZygpLnJlc3BvbnNlSG9vaywgbW9kdWxlVmVyc2lvbikpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBzZWxmLl9jYWxsT3JpZ2luYWxGdW5jdGlvbigoKSA9PiBleGVjLmFwcGx5KG9yaWdpbmFsVGhpcywgYXJncykpO1xuICAgICAgICAgICAgcmV0dXJuICgwLCB1dGlsc18xLmhhbmRsZVByb21pc2VSZXNwb25zZSkocmVzcG9uc2UsIHNwYW4sIHNlbGYuZ2V0Q29uZmlnKCkucmVzcG9uc2VIb29rLCBtb2R1bGVWZXJzaW9uKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBfY2FsbE9yaWdpbmFsRnVuY3Rpb24ob3JpZ2luYWxGdW5jdGlvbikge1xuICAgICAgICBpZiAodGhpcy5nZXRDb25maWcoKS5zdXBwcmVzc0ludGVybmFsSW5zdHJ1bWVudGF0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm4gYXBpXzEuY29udGV4dC53aXRoKCgwLCBjb3JlXzEuc3VwcHJlc3NUcmFjaW5nKShhcGlfMS5jb250ZXh0LmFjdGl2ZSgpKSwgb3JpZ2luYWxGdW5jdGlvbik7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gb3JpZ2luYWxGdW5jdGlvbigpO1xuICAgICAgICB9XG4gICAgfVxufVxuZXhwb3J0cy5Nb25nb29zZUluc3RydW1lbnRhdGlvbiA9IE1vbmdvb3NlSW5zdHJ1bWVudGF0aW9uO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9bW9uZ29vc2UuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/.pnpm/@opentelemetry+instrumentation-mongoose@0.60.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-mongoose/build/src/mongoose.js\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(ssr)/./node_modules/.pnpm/@opentelemetry+instrumentation-mongoose@0.60.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-mongoose/build/src/semconv.js":
|
|
/*!******************************************************************************************************************************************************************************!*\
|
|
!*** ./node_modules/.pnpm/@opentelemetry+instrumentation-mongoose@0.60.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-mongoose/build/src/semconv.js ***!
|
|
\******************************************************************************************************************************************************************************/
|
|
/***/ ((__unused_webpack_module, exports) => {
|
|
|
|
eval("\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.DB_SYSTEM_NAME_VALUE_MONGODB = exports.ATTR_NET_PEER_PORT = exports.ATTR_NET_PEER_NAME = exports.ATTR_DB_USER = exports.ATTR_DB_SYSTEM = exports.ATTR_DB_STATEMENT = exports.ATTR_DB_OPERATION = exports.ATTR_DB_NAME = exports.ATTR_DB_MONGODB_COLLECTION = void 0;\n/*\n * This file contains a copy of unstable semantic convention definitions\n * used by this package.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n/**\n * Deprecated, use `db.collection.name` instead.\n *\n * @example \"mytable\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.collection.name`.\n */\nexports.ATTR_DB_MONGODB_COLLECTION = 'db.mongodb.collection';\n/**\n * Deprecated, use `db.namespace` instead.\n *\n * @example customers\n * @example main\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.namespace`.\n */\nexports.ATTR_DB_NAME = 'db.name';\n/**\n * Deprecated, use `db.operation.name` instead.\n *\n * @example findAndModify\n * @example HMSET\n * @example SELECT\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.operation.name`.\n */\nexports.ATTR_DB_OPERATION = 'db.operation';\n/**\n * The database statement being executed.\n *\n * @example SELECT * FROM wuser_table\n * @example SET mykey \"WuValue\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.query.text`.\n */\nexports.ATTR_DB_STATEMENT = 'db.statement';\n/**\n * Deprecated, use `db.system.name` instead.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.system.name`.\n */\nexports.ATTR_DB_SYSTEM = 'db.system';\n/**\n * Deprecated, no replacement at this time.\n *\n * @example readonly_user\n * @example reporting_user\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Removed, no replacement at this time.\n */\nexports.ATTR_DB_USER = 'db.user';\n/**\n * Deprecated, use `server.address` on client spans and `client.address` on server spans.\n *\n * @example example.com\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` on client spans and `client.address` on server spans.\n */\nexports.ATTR_NET_PEER_NAME = 'net.peer.name';\n/**\n * Deprecated, use `server.port` on client spans and `client.port` on server spans.\n *\n * @example 8080\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.port` on client spans and `client.port` on server spans.\n */\nexports.ATTR_NET_PEER_PORT = 'net.peer.port';\n/**\n * Enum value \"mongodb\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [MongoDB](https://www.mongodb.com/)\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.DB_SYSTEM_NAME_VALUE_MONGODB = 'mongodb';\n//# sourceMappingURL=semconv.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvLnBucG0vQG9wZW50ZWxlbWV0cnkraW5zdHJ1bWVudGF0aW9uLW1vbmdvb3NlQDAuNjAuMF9Ab3BlbnRlbGVtZXRyeSthcGlAMS45LjEvbm9kZV9tb2R1bGVzL0BvcGVudGVsZW1ldHJ5L2luc3RydW1lbnRhdGlvbi1tb25nb29zZS9idWlsZC9zcmMvc2VtY29udi5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhDQUE2QyxFQUFFLGFBQWEsRUFBQztBQUM3RCxvQ0FBb0MsR0FBRywwQkFBMEIsR0FBRywwQkFBMEIsR0FBRyxvQkFBb0IsR0FBRyxzQkFBc0IsR0FBRyx5QkFBeUIsR0FBRyx5QkFBeUIsR0FBRyxvQkFBb0IsR0FBRyxrQ0FBa0M7QUFDbFE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQztBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQjtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQjtBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEI7QUFDMUI7QUFDQSx1Q0FBdUMsMEJBQTBCO0FBQ2pFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQ0FBb0M7QUFDcEMiLCJzb3VyY2VzIjpbIi9Vc2Vycy9tYXJjbWludGVsL1Byb2plY3RzL2UtdGliLmNvbS9ub2RlX21vZHVsZXMvLnBucG0vQG9wZW50ZWxlbWV0cnkraW5zdHJ1bWVudGF0aW9uLW1vbmdvb3NlQDAuNjAuMF9Ab3BlbnRlbGVtZXRyeSthcGlAMS45LjEvbm9kZV9tb2R1bGVzL0BvcGVudGVsZW1ldHJ5L2luc3RydW1lbnRhdGlvbi1tb25nb29zZS9idWlsZC9zcmMvc2VtY29udi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbi8qXG4gKiBDb3B5cmlnaHQgVGhlIE9wZW5UZWxlbWV0cnkgQXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLkRCX1NZU1RFTV9OQU1FX1ZBTFVFX01PTkdPREIgPSBleHBvcnRzLkFUVFJfTkVUX1BFRVJfUE9SVCA9IGV4cG9ydHMuQVRUUl9ORVRfUEVFUl9OQU1FID0gZXhwb3J0cy5BVFRSX0RCX1VTRVIgPSBleHBvcnRzLkFUVFJfREJfU1lTVEVNID0gZXhwb3J0cy5BVFRSX0RCX1NUQVRFTUVOVCA9IGV4cG9ydHMuQVRUUl9EQl9PUEVSQVRJT04gPSBleHBvcnRzLkFUVFJfREJfTkFNRSA9IGV4cG9ydHMuQVRUUl9EQl9NT05HT0RCX0NPTExFQ1RJT04gPSB2b2lkIDA7XG4vKlxuICogVGhpcyBmaWxlIGNvbnRhaW5zIGEgY29weSBvZiB1bnN0YWJsZSBzZW1hbnRpYyBjb252ZW50aW9uIGRlZmluaXRpb25zXG4gKiB1c2VkIGJ5IHRoaXMgcGFja2FnZS5cbiAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMvdHJlZS9tYWluL3NlbWFudGljLWNvbnZlbnRpb25zI3Vuc3RhYmxlLXNlbWNvbnZcbiAqL1xuLyoqXG4gKiBEZXByZWNhdGVkLCB1c2UgYGRiLmNvbGxlY3Rpb24ubmFtZWAgaW5zdGVhZC5cbiAqXG4gKiBAZXhhbXBsZSBcIm15dGFibGVcIlxuICpcbiAqIEBleHBlcmltZW50YWwgVGhpcyBhdHRyaWJ1dGUgaXMgZXhwZXJpbWVudGFsIGFuZCBpcyBzdWJqZWN0IHRvIGJyZWFraW5nIGNoYW5nZXMgaW4gbWlub3IgcmVsZWFzZXMgb2YgYEBvcGVudGVsZW1ldHJ5L3NlbWFudGljLWNvbnZlbnRpb25zYC5cbiAqXG4gKiBAZGVwcmVjYXRlZCBSZXBsYWNlZCBieSBgZGIuY29sbGVjdGlvbi5uYW1lYC5cbiAqL1xuZXhwb3J0cy5BVFRSX0RCX01PTkdPREJfQ09MTEVDVElPTiA9ICdkYi5tb25nb2RiLmNvbGxlY3Rpb24nO1xuLyoqXG4gKiBEZXByZWNhdGVkLCB1c2UgYGRiLm5hbWVzcGFjZWAgaW5zdGVhZC5cbiAqXG4gKiBAZXhhbXBsZSBjdXN0b21lcnNcbiAqIEBleGFtcGxlIG1haW5cbiAqXG4gKiBAZXhwZXJpbWVudGFsIFRoaXMgYXR0cmlidXRlIGlzIGV4cGVyaW1lbnRhbCBhbmQgaXMgc3ViamVjdCB0byBicmVha2luZyBjaGFuZ2VzIGluIG1pbm9yIHJlbGVhc2VzIG9mIGBAb3BlbnRlbGVtZXRyeS9zZW1hbnRpYy1jb252ZW50aW9uc2AuXG4gKlxuICogQGRlcHJlY2F0ZWQgUmVwbGFjZWQgYnkgYGRiLm5hbWVzcGFjZWAuXG4gKi9cbmV4cG9ydHMuQVRUUl9EQl9OQU1FID0gJ2RiLm5hbWUnO1xuLyoqXG4gKiBEZXByZWNhdGVkLCB1c2UgYGRiLm9wZXJhdGlvbi5uYW1lYCBpbnN0ZWFkLlxuICpcbiAqIEBleGFtcGxlIGZpbmRBbmRNb2RpZnlcbiAqIEBleGFtcGxlIEhNU0VUXG4gKiBAZXhhbXBsZSBTRUxFQ1RcbiAqXG4gKiBAZXhwZXJpbWVudGFsIFRoaXMgYXR0cmlidXRlIGlzIGV4cGVyaW1lbnRhbCBhbmQgaXMgc3ViamVjdCB0byBicmVha2luZyBjaGFuZ2VzIGluIG1pbm9yIHJlbGVhc2VzIG9mIGBAb3BlbnRlbGVtZXRyeS9zZW1hbnRpYy1jb252ZW50aW9uc2AuXG4gKlxuICogQGRlcHJlY2F0ZWQgUmVwbGFjZWQgYnkgYGRiLm9wZXJhdGlvbi5uYW1lYC5cbiAqL1xuZXhwb3J0cy5BVFRSX0RCX09QRVJBVElPTiA9ICdkYi5vcGVyYXRpb24nO1xuLyoqXG4gKiBUaGUgZGF0YWJhc2Ugc3RhdGVtZW50IGJlaW5nIGV4ZWN1dGVkLlxuICpcbiAqIEBleGFtcGxlIFNFTEVDVCAqIEZST00gd3VzZXJfdGFibGVcbiAqIEBleGFtcGxlIFNFVCBteWtleSBcIld1VmFsdWVcIlxuICpcbiAqIEBleHBlcmltZW50YWwgVGhpcyBhdHRyaWJ1dGUgaXMgZXhwZXJpbWVudGFsIGFuZCBpcyBzdWJqZWN0IHRvIGJyZWFraW5nIGNoYW5nZXMgaW4gbWlub3IgcmVsZWFzZXMgb2YgYEBvcGVudGVsZW1ldHJ5L3NlbWFudGljLWNvbnZlbnRpb25zYC5cbiAqXG4gKiBAZGVwcmVjYXRlZCBSZXBsYWNlZCBieSBgZGIucXVlcnkudGV4dGAuXG4gKi9cbmV4cG9ydHMuQVRUUl9EQl9TVEFURU1FTlQgPSAnZGIuc3RhdGVtZW50Jztcbi8qKlxuICogRGVwcmVjYXRlZCwgdXNlIGBkYi5zeXN0ZW0ubmFtZWAgaW5zdGVhZC5cbiAqXG4gKiBAZXhwZXJpbWVudGFsIFRoaXMgYXR0cmlidXRlIGlzIGV4cGVyaW1lbnRhbCBhbmQgaXMgc3ViamVjdCB0byBicmVha2luZyBjaGFuZ2VzIGluIG1pbm9yIHJlbGVhc2VzIG9mIGBAb3BlbnRlbGVtZXRyeS9zZW1hbnRpYy1jb252ZW50aW9uc2AuXG4gKlxuICogQGRlcHJlY2F0ZWQgUmVwbGFjZWQgYnkgYGRiLnN5c3RlbS5uYW1lYC5cbiAqL1xuZXhwb3J0cy5BVFRSX0RCX1NZU1RFTSA9ICdkYi5zeXN0ZW0nO1xuLyoqXG4gKiBEZXByZWNhdGVkLCBubyByZXBsYWNlbWVudCBhdCB0aGlzIHRpbWUuXG4gKlxuICogQGV4YW1wbGUgcmVhZG9ubHlfdXNlclxuICogQGV4YW1wbGUgcmVwb3J0aW5nX3VzZXJcbiAqXG4gKiBAZXhwZXJpbWVudGFsIFRoaXMgYXR0cmlidXRlIGlzIGV4cGVyaW1lbnRhbCBhbmQgaXMgc3ViamVjdCB0byBicmVha2luZyBjaGFuZ2VzIGluIG1pbm9yIHJlbGVhc2VzIG9mIGBAb3BlbnRlbGVtZXRyeS9zZW1hbnRpYy1jb252ZW50aW9uc2AuXG4gKlxuICogQGRlcHJlY2F0ZWQgUmVtb3ZlZCwgbm8gcmVwbGFjZW1lbnQgYXQgdGhpcyB0aW1lLlxuICovXG5leHBvcnRzLkFUVFJfREJfVVNFUiA9ICdkYi51c2VyJztcbi8qKlxuICogRGVwcmVjYXRlZCwgdXNlIGBzZXJ2ZXIuYWRkcmVzc2Agb24gY2xpZW50IHNwYW5zIGFuZCBgY2xpZW50LmFkZHJlc3NgIG9uIHNlcnZlciBzcGFucy5cbiAqXG4gKiBAZXhhbXBsZSBleGFtcGxlLmNvbVxuICpcbiAqIEBleHBlcmltZW50YWwgVGhpcyBhdHRyaWJ1dGUgaXMgZXhwZXJpbWVudGFsIGFuZCBpcyBzdWJqZWN0IHRvIGJyZWFraW5nIGNoYW5nZXMgaW4gbWlub3IgcmVsZWFzZXMgb2YgYEBvcGVudGVsZW1ldHJ5L3NlbWFudGljLWNvbnZlbnRpb25zYC5cbiAqXG4gKiBAZGVwcmVjYXRlZCBSZXBsYWNlZCBieSBgc2VydmVyLmFkZHJlc3NgIG9uIGNsaWVudCBzcGFucyBhbmQgYGNsaWVudC5hZGRyZXNzYCBvbiBzZXJ2ZXIgc3BhbnMuXG4gKi9cbmV4cG9ydHMuQVRUUl9ORVRfUEVFUl9OQU1FID0gJ25ldC5wZWVyLm5hbWUnO1xuLyoqXG4gKiBEZXByZWNhdGVkLCB1c2UgYHNlcnZlci5wb3J0YCBvbiBjbGllbnQgc3BhbnMgYW5kIGBjbGllbnQucG9ydGAgb24gc2VydmVyIHNwYW5zLlxuICpcbiAqIEBleGFtcGxlIDgwODBcbiAqXG4gKiBAZXhwZXJpbWVudGFsIFRoaXMgYXR0cmlidXRlIGlzIGV4cGVyaW1lbnRhbCBhbmQgaXMgc3ViamVjdCB0byBicmVha2luZyBjaGFuZ2VzIGluIG1pbm9yIHJlbGVhc2VzIG9mIGBAb3BlbnRlbGVtZXRyeS9zZW1hbnRpYy1jb252ZW50aW9uc2AuXG4gKlxuICogQGRlcHJlY2F0ZWQgUmVwbGFjZWQgYnkgYHNlcnZlci5wb3J0YCBvbiBjbGllbnQgc3BhbnMgYW5kIGBjbGllbnQucG9ydGAgb24gc2VydmVyIHNwYW5zLlxuICovXG5leHBvcnRzLkFUVFJfTkVUX1BFRVJfUE9SVCA9ICduZXQucGVlci5wb3J0Jztcbi8qKlxuICogRW51bSB2YWx1ZSBcIm1vbmdvZGJcIiBmb3IgYXR0cmlidXRlIHtAbGluayBBVFRSX0RCX1NZU1RFTV9OQU1FfS5cbiAqXG4gKiBbTW9uZ29EQl0oaHR0cHM6Ly93d3cubW9uZ29kYi5jb20vKVxuICpcbiAqIEBleHBlcmltZW50YWwgVGhpcyBlbnVtIHZhbHVlIGlzIGV4cGVyaW1lbnRhbCBhbmQgaXMgc3ViamVjdCB0byBicmVha2luZyBjaGFuZ2VzIGluIG1pbm9yIHJlbGVhc2VzIG9mIGBAb3BlbnRlbGVtZXRyeS9zZW1hbnRpYy1jb252ZW50aW9uc2AuXG4gKi9cbmV4cG9ydHMuREJfU1lTVEVNX05BTUVfVkFMVUVfTU9OR09EQiA9ICdtb25nb2RiJztcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXNlbWNvbnYuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/.pnpm/@opentelemetry+instrumentation-mongoose@0.60.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-mongoose/build/src/semconv.js\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(ssr)/./node_modules/.pnpm/@opentelemetry+instrumentation-mongoose@0.60.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-mongoose/build/src/utils.js":
|
|
/*!****************************************************************************************************************************************************************************!*\
|
|
!*** ./node_modules/.pnpm/@opentelemetry+instrumentation-mongoose@0.60.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-mongoose/build/src/utils.js ***!
|
|
\****************************************************************************************************************************************************************************/
|
|
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
|
|
eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.handleCallbackResponse = exports.handlePromiseResponse = exports.getAttributesFromCollection = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst api_1 = __webpack_require__(/*! @opentelemetry/api */ \"(ssr)/./node_modules/.pnpm/@opentelemetry+api@1.9.1/node_modules/@opentelemetry/api/build/esm/index.js\");\nconst instrumentation_1 = __webpack_require__(/*! @opentelemetry/instrumentation */ \"(ssr)/./node_modules/.pnpm/@opentelemetry+instrumentation@0.214.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation/build/esm/index.js\");\nconst semconv_1 = __webpack_require__(/*! ./semconv */ \"(ssr)/./node_modules/.pnpm/@opentelemetry+instrumentation-mongoose@0.60.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-mongoose/build/src/semconv.js\");\nconst semantic_conventions_1 = __webpack_require__(/*! @opentelemetry/semantic-conventions */ \"(ssr)/./node_modules/.pnpm/@opentelemetry+semantic-conventions@1.40.0/node_modules/@opentelemetry/semantic-conventions/build/esm/index.js\");\nfunction getAttributesFromCollection(collection, dbSemconvStability, netSemconvStability) {\n const attrs = {};\n if (dbSemconvStability & instrumentation_1.SemconvStability.OLD) {\n attrs[semconv_1.ATTR_DB_MONGODB_COLLECTION] = collection.name;\n attrs[semconv_1.ATTR_DB_NAME] = collection.conn.name;\n attrs[semconv_1.ATTR_DB_USER] = collection.conn.user;\n }\n if (dbSemconvStability & instrumentation_1.SemconvStability.STABLE) {\n attrs[semantic_conventions_1.ATTR_DB_COLLECTION_NAME] = collection.name;\n attrs[semantic_conventions_1.ATTR_DB_NAMESPACE] = collection.conn.name;\n // db.user has no stable replacement\n }\n if (netSemconvStability & instrumentation_1.SemconvStability.OLD) {\n attrs[semconv_1.ATTR_NET_PEER_NAME] = collection.conn.host;\n attrs[semconv_1.ATTR_NET_PEER_PORT] = collection.conn.port;\n }\n if (netSemconvStability & instrumentation_1.SemconvStability.STABLE) {\n attrs[semantic_conventions_1.ATTR_SERVER_ADDRESS] = collection.conn.host;\n attrs[semantic_conventions_1.ATTR_SERVER_PORT] = collection.conn.port;\n }\n return attrs;\n}\nexports.getAttributesFromCollection = getAttributesFromCollection;\nfunction setErrorStatus(span, error = {}) {\n span.recordException(error);\n span.setStatus({\n code: api_1.SpanStatusCode.ERROR,\n message: `${error.message} ${error.code ? `\\nMongoose Error Code: ${error.code}` : ''}`,\n });\n}\nfunction applyResponseHook(span, response, responseHook, moduleVersion = undefined) {\n if (!responseHook) {\n return;\n }\n (0, instrumentation_1.safeExecuteInTheMiddle)(() => responseHook(span, { moduleVersion, response }), e => {\n if (e) {\n api_1.diag.error('mongoose instrumentation: responseHook error', e);\n }\n }, true);\n}\nfunction handlePromiseResponse(execResponse, span, responseHook, moduleVersion = undefined) {\n if (!(execResponse instanceof Promise)) {\n applyResponseHook(span, execResponse, responseHook, moduleVersion);\n span.end();\n return execResponse;\n }\n return execResponse\n .then(response => {\n applyResponseHook(span, response, responseHook, moduleVersion);\n return response;\n })\n .catch(err => {\n setErrorStatus(span, err);\n throw err;\n })\n .finally(() => span.end());\n}\nexports.handlePromiseResponse = handlePromiseResponse;\nfunction handleCallbackResponse(callback, exec, originalThis, span, args, responseHook, moduleVersion = undefined) {\n let callbackArgumentIndex = 0;\n if (args.length === 2) {\n callbackArgumentIndex = 1;\n }\n else if (args.length === 3) {\n callbackArgumentIndex = 2;\n }\n args[callbackArgumentIndex] = (err, response) => {\n if (err) {\n setErrorStatus(span, err);\n }\n else {\n applyResponseHook(span, response, responseHook, moduleVersion);\n }\n span.end();\n return callback(err, response);\n };\n return exec.apply(originalThis, args);\n}\nexports.handleCallbackResponse = handleCallbackResponse;\n//# sourceMappingURL=utils.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvLnBucG0vQG9wZW50ZWxlbWV0cnkraW5zdHJ1bWVudGF0aW9uLW1vbmdvb3NlQDAuNjAuMF9Ab3BlbnRlbGVtZXRyeSthcGlAMS45LjEvbm9kZV9tb2R1bGVzL0BvcGVudGVsZW1ldHJ5L2luc3RydW1lbnRhdGlvbi1tb25nb29zZS9idWlsZC9zcmMvdXRpbHMuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkMsRUFBRSxhQUFhLEVBQUM7QUFDN0QsOEJBQThCLEdBQUcsNkJBQTZCLEdBQUcsbUNBQW1DO0FBQ3BHO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsbUJBQU8sQ0FBQyxrSUFBb0I7QUFDMUMsMEJBQTBCLG1CQUFPLENBQUMsaU1BQWdDO0FBQ2xFLGtCQUFrQixtQkFBTyxDQUFDLCtMQUFXO0FBQ3JDLCtCQUErQixtQkFBTyxDQUFDLHNMQUFxQztBQUM1RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQztBQUNuQyx3Q0FBd0M7QUFDeEM7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLGVBQWUsRUFBRSx1Q0FBdUMsV0FBVyxPQUFPO0FBQzlGLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkVBQTZFLHlCQUF5QjtBQUN0RztBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLDZCQUE2QjtBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBQThCO0FBQzlCIiwic291cmNlcyI6WyIvVXNlcnMvbWFyY21pbnRlbC9Qcm9qZWN0cy9lLXRpYi5jb20vbm9kZV9tb2R1bGVzLy5wbnBtL0BvcGVudGVsZW1ldHJ5K2luc3RydW1lbnRhdGlvbi1tb25nb29zZUAwLjYwLjBfQG9wZW50ZWxlbWV0cnkrYXBpQDEuOS4xL25vZGVfbW9kdWxlcy9Ab3BlbnRlbGVtZXRyeS9pbnN0cnVtZW50YXRpb24tbW9uZ29vc2UvYnVpbGQvc3JjL3V0aWxzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5oYW5kbGVDYWxsYmFja1Jlc3BvbnNlID0gZXhwb3J0cy5oYW5kbGVQcm9taXNlUmVzcG9uc2UgPSBleHBvcnRzLmdldEF0dHJpYnV0ZXNGcm9tQ29sbGVjdGlvbiA9IHZvaWQgMDtcbi8qXG4gKiBDb3B5cmlnaHQgVGhlIE9wZW5UZWxlbWV0cnkgQXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5jb25zdCBhcGlfMSA9IHJlcXVpcmUoXCJAb3BlbnRlbGVtZXRyeS9hcGlcIik7XG5jb25zdCBpbnN0cnVtZW50YXRpb25fMSA9IHJlcXVpcmUoXCJAb3BlbnRlbGVtZXRyeS9pbnN0cnVtZW50YXRpb25cIik7XG5jb25zdCBzZW1jb252XzEgPSByZXF1aXJlKFwiLi9zZW1jb252XCIpO1xuY29uc3Qgc2VtYW50aWNfY29udmVudGlvbnNfMSA9IHJlcXVpcmUoXCJAb3BlbnRlbGVtZXRyeS9zZW1hbnRpYy1jb252ZW50aW9uc1wiKTtcbmZ1bmN0aW9uIGdldEF0dHJpYnV0ZXNGcm9tQ29sbGVjdGlvbihjb2xsZWN0aW9uLCBkYlNlbWNvbnZTdGFiaWxpdHksIG5ldFNlbWNvbnZTdGFiaWxpdHkpIHtcbiAgICBjb25zdCBhdHRycyA9IHt9O1xuICAgIGlmIChkYlNlbWNvbnZTdGFiaWxpdHkgJiBpbnN0cnVtZW50YXRpb25fMS5TZW1jb252U3RhYmlsaXR5Lk9MRCkge1xuICAgICAgICBhdHRyc1tzZW1jb252XzEuQVRUUl9EQl9NT05HT0RCX0NPTExFQ1RJT05dID0gY29sbGVjdGlvbi5uYW1lO1xuICAgICAgICBhdHRyc1tzZW1jb252XzEuQVRUUl9EQl9OQU1FXSA9IGNvbGxlY3Rpb24uY29ubi5uYW1lO1xuICAgICAgICBhdHRyc1tzZW1jb252XzEuQVRUUl9EQl9VU0VSXSA9IGNvbGxlY3Rpb24uY29ubi51c2VyO1xuICAgIH1cbiAgICBpZiAoZGJTZW1jb252U3RhYmlsaXR5ICYgaW5zdHJ1bWVudGF0aW9uXzEuU2VtY29udlN0YWJpbGl0eS5TVEFCTEUpIHtcbiAgICAgICAgYXR0cnNbc2VtYW50aWNfY29udmVudGlvbnNfMS5BVFRSX0RCX0NPTExFQ1RJT05fTkFNRV0gPSBjb2xsZWN0aW9uLm5hbWU7XG4gICAgICAgIGF0dHJzW3NlbWFudGljX2NvbnZlbnRpb25zXzEuQVRUUl9EQl9OQU1FU1BBQ0VdID0gY29sbGVjdGlvbi5jb25uLm5hbWU7XG4gICAgICAgIC8vIGRiLnVzZXIgaGFzIG5vIHN0YWJsZSByZXBsYWNlbWVudFxuICAgIH1cbiAgICBpZiAobmV0U2VtY29udlN0YWJpbGl0eSAmIGluc3RydW1lbnRhdGlvbl8xLlNlbWNvbnZTdGFiaWxpdHkuT0xEKSB7XG4gICAgICAgIGF0dHJzW3NlbWNvbnZfMS5BVFRSX05FVF9QRUVSX05BTUVdID0gY29sbGVjdGlvbi5jb25uLmhvc3Q7XG4gICAgICAgIGF0dHJzW3NlbWNvbnZfMS5BVFRSX05FVF9QRUVSX1BPUlRdID0gY29sbGVjdGlvbi5jb25uLnBvcnQ7XG4gICAgfVxuICAgIGlmIChuZXRTZW1jb252U3RhYmlsaXR5ICYgaW5zdHJ1bWVudGF0aW9uXzEuU2VtY29udlN0YWJpbGl0eS5TVEFCTEUpIHtcbiAgICAgICAgYXR0cnNbc2VtYW50aWNfY29udmVudGlvbnNfMS5BVFRSX1NFUlZFUl9BRERSRVNTXSA9IGNvbGxlY3Rpb24uY29ubi5ob3N0O1xuICAgICAgICBhdHRyc1tzZW1hbnRpY19jb252ZW50aW9uc18xLkFUVFJfU0VSVkVSX1BPUlRdID0gY29sbGVjdGlvbi5jb25uLnBvcnQ7XG4gICAgfVxuICAgIHJldHVybiBhdHRycztcbn1cbmV4cG9ydHMuZ2V0QXR0cmlidXRlc0Zyb21Db2xsZWN0aW9uID0gZ2V0QXR0cmlidXRlc0Zyb21Db2xsZWN0aW9uO1xuZnVuY3Rpb24gc2V0RXJyb3JTdGF0dXMoc3BhbiwgZXJyb3IgPSB7fSkge1xuICAgIHNwYW4ucmVjb3JkRXhjZXB0aW9uKGVycm9yKTtcbiAgICBzcGFuLnNldFN0YXR1cyh7XG4gICAgICAgIGNvZGU6IGFwaV8xLlNwYW5TdGF0dXNDb2RlLkVSUk9SLFxuICAgICAgICBtZXNzYWdlOiBgJHtlcnJvci5tZXNzYWdlfSAke2Vycm9yLmNvZGUgPyBgXFxuTW9uZ29vc2UgRXJyb3IgQ29kZTogJHtlcnJvci5jb2RlfWAgOiAnJ31gLFxuICAgIH0pO1xufVxuZnVuY3Rpb24gYXBwbHlSZXNwb25zZUhvb2soc3BhbiwgcmVzcG9uc2UsIHJlc3BvbnNlSG9vaywgbW9kdWxlVmVyc2lvbiA9IHVuZGVmaW5lZCkge1xuICAgIGlmICghcmVzcG9uc2VIb29rKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgKDAsIGluc3RydW1lbnRhdGlvbl8xLnNhZmVFeGVjdXRlSW5UaGVNaWRkbGUpKCgpID0+IHJlc3BvbnNlSG9vayhzcGFuLCB7IG1vZHVsZVZlcnNpb24sIHJlc3BvbnNlIH0pLCBlID0+IHtcbiAgICAgICAgaWYgKGUpIHtcbiAgICAgICAgICAgIGFwaV8xLmRpYWcuZXJyb3IoJ21vbmdvb3NlIGluc3RydW1lbnRhdGlvbjogcmVzcG9uc2VIb29rIGVycm9yJywgZSk7XG4gICAgICAgIH1cbiAgICB9LCB0cnVlKTtcbn1cbmZ1bmN0aW9uIGhhbmRsZVByb21pc2VSZXNwb25zZShleGVjUmVzcG9uc2UsIHNwYW4sIHJlc3BvbnNlSG9vaywgbW9kdWxlVmVyc2lvbiA9IHVuZGVmaW5lZCkge1xuICAgIGlmICghKGV4ZWNSZXNwb25zZSBpbnN0YW5jZW9mIFByb21pc2UpKSB7XG4gICAgICAgIGFwcGx5UmVzcG9uc2VIb29rKHNwYW4sIGV4ZWNSZXNwb25zZSwgcmVzcG9uc2VIb29rLCBtb2R1bGVWZXJzaW9uKTtcbiAgICAgICAgc3Bhbi5lbmQoKTtcbiAgICAgICAgcmV0dXJuIGV4ZWNSZXNwb25zZTtcbiAgICB9XG4gICAgcmV0dXJuIGV4ZWNSZXNwb25zZVxuICAgICAgICAudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgIGFwcGx5UmVzcG9uc2VIb29rKHNwYW4sIHJlc3BvbnNlLCByZXNwb25zZUhvb2ssIG1vZHVsZVZlcnNpb24pO1xuICAgICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgfSlcbiAgICAgICAgLmNhdGNoKGVyciA9PiB7XG4gICAgICAgIHNldEVycm9yU3RhdHVzKHNwYW4sIGVycik7XG4gICAgICAgIHRocm93IGVycjtcbiAgICB9KVxuICAgICAgICAuZmluYWxseSgoKSA9PiBzcGFuLmVuZCgpKTtcbn1cbmV4cG9ydHMuaGFuZGxlUHJvbWlzZVJlc3BvbnNlID0gaGFuZGxlUHJvbWlzZVJlc3BvbnNlO1xuZnVuY3Rpb24gaGFuZGxlQ2FsbGJhY2tSZXNwb25zZShjYWxsYmFjaywgZXhlYywgb3JpZ2luYWxUaGlzLCBzcGFuLCBhcmdzLCByZXNwb25zZUhvb2ssIG1vZHVsZVZlcnNpb24gPSB1bmRlZmluZWQpIHtcbiAgICBsZXQgY2FsbGJhY2tBcmd1bWVudEluZGV4ID0gMDtcbiAgICBpZiAoYXJncy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgY2FsbGJhY2tBcmd1bWVudEluZGV4ID0gMTtcbiAgICB9XG4gICAgZWxzZSBpZiAoYXJncy5sZW5ndGggPT09IDMpIHtcbiAgICAgICAgY2FsbGJhY2tBcmd1bWVudEluZGV4ID0gMjtcbiAgICB9XG4gICAgYXJnc1tjYWxsYmFja0FyZ3VtZW50SW5kZXhdID0gKGVyciwgcmVzcG9uc2UpID0+IHtcbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgc2V0RXJyb3JTdGF0dXMoc3BhbiwgZXJyKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGFwcGx5UmVzcG9uc2VIb29rKHNwYW4sIHJlc3BvbnNlLCByZXNwb25zZUhvb2ssIG1vZHVsZVZlcnNpb24pO1xuICAgICAgICB9XG4gICAgICAgIHNwYW4uZW5kKCk7XG4gICAgICAgIHJldHVybiBjYWxsYmFjayhlcnIsIHJlc3BvbnNlKTtcbiAgICB9O1xuICAgIHJldHVybiBleGVjLmFwcGx5KG9yaWdpbmFsVGhpcywgYXJncyk7XG59XG5leHBvcnRzLmhhbmRsZUNhbGxiYWNrUmVzcG9uc2UgPSBoYW5kbGVDYWxsYmFja1Jlc3BvbnNlO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dXRpbHMuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/.pnpm/@opentelemetry+instrumentation-mongoose@0.60.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-mongoose/build/src/utils.js\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(ssr)/./node_modules/.pnpm/@opentelemetry+instrumentation-mongoose@0.60.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-mongoose/build/src/version.js":
|
|
/*!******************************************************************************************************************************************************************************!*\
|
|
!*** ./node_modules/.pnpm/@opentelemetry+instrumentation-mongoose@0.60.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-mongoose/build/src/version.js ***!
|
|
\******************************************************************************************************************************************************************************/
|
|
/***/ ((__unused_webpack_module, exports) => {
|
|
|
|
eval("\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.PACKAGE_NAME = exports.PACKAGE_VERSION = void 0;\n// this is autogenerated file, see scripts/version-update.js\nexports.PACKAGE_VERSION = '0.60.0';\nexports.PACKAGE_NAME = '@opentelemetry/instrumentation-mongoose';\n//# sourceMappingURL=version.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvLnBucG0vQG9wZW50ZWxlbWV0cnkraW5zdHJ1bWVudGF0aW9uLW1vbmdvb3NlQDAuNjAuMF9Ab3BlbnRlbGVtZXRyeSthcGlAMS45LjEvbm9kZV9tb2R1bGVzL0BvcGVudGVsZW1ldHJ5L2luc3RydW1lbnRhdGlvbi1tb25nb29zZS9idWlsZC9zcmMvdmVyc2lvbi5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhDQUE2QyxFQUFFLGFBQWEsRUFBQztBQUM3RCxvQkFBb0IsR0FBRyx1QkFBdUI7QUFDOUM7QUFDQSx1QkFBdUI7QUFDdkIsb0JBQW9CO0FBQ3BCIiwic291cmNlcyI6WyIvVXNlcnMvbWFyY21pbnRlbC9Qcm9qZWN0cy9lLXRpYi5jb20vbm9kZV9tb2R1bGVzLy5wbnBtL0BvcGVudGVsZW1ldHJ5K2luc3RydW1lbnRhdGlvbi1tb25nb29zZUAwLjYwLjBfQG9wZW50ZWxlbWV0cnkrYXBpQDEuOS4xL25vZGVfbW9kdWxlcy9Ab3BlbnRlbGVtZXRyeS9pbnN0cnVtZW50YXRpb24tbW9uZ29vc2UvYnVpbGQvc3JjL3ZlcnNpb24uanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG4vKlxuICogQ29weXJpZ2h0IFRoZSBPcGVuVGVsZW1ldHJ5IEF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5QQUNLQUdFX05BTUUgPSBleHBvcnRzLlBBQ0tBR0VfVkVSU0lPTiA9IHZvaWQgMDtcbi8vIHRoaXMgaXMgYXV0b2dlbmVyYXRlZCBmaWxlLCBzZWUgc2NyaXB0cy92ZXJzaW9uLXVwZGF0ZS5qc1xuZXhwb3J0cy5QQUNLQUdFX1ZFUlNJT04gPSAnMC42MC4wJztcbmV4cG9ydHMuUEFDS0FHRV9OQU1FID0gJ0BvcGVudGVsZW1ldHJ5L2luc3RydW1lbnRhdGlvbi1tb25nb29zZSc7XG4vLyMgc291cmNlTWFwcGluZ1VSTD12ZXJzaW9uLmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/.pnpm/@opentelemetry+instrumentation-mongoose@0.60.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-mongoose/build/src/version.js\n");
|
|
|
|
/***/ })
|
|
|
|
};
|
|
; |