Files
e-tib.com/.next/dev/server/vendor-chunks/@opentelemetry+instrumentation-express@0.62.0_@opentelemetry+api@1.9.1.js
Marc Mintel d14122005d Initial commit: E-TIB production hardening & E2E foundation
Former-commit-id: ef04fca3d76375630c05aac117bf586953f3b657
2026-04-28 19:11:38 +02:00

155 lines
183 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-express@0.62.0_@opentelemetry+api@1.9.1";
exports.ids = ["vendor-chunks/@opentelemetry+instrumentation-express@0.62.0_@opentelemetry+api@1.9.1"];
exports.modules = {
/***/ "(rsc)/./node_modules/.pnpm/@opentelemetry+instrumentation-express@0.62.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-express/build/src/enums/AttributeNames.js":
/*!*****************************************************************************************************************************************************************************************!*\
!*** ./node_modules/.pnpm/@opentelemetry+instrumentation-express@0.62.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-express/build/src/enums/AttributeNames.js ***!
\*****************************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, exports) => {
eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.AttributeNames = 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 AttributeNames;\n(function (AttributeNames) {\n AttributeNames[\"EXPRESS_TYPE\"] = \"express.type\";\n AttributeNames[\"EXPRESS_NAME\"] = \"express.name\";\n})(AttributeNames = exports.AttributeNames || (exports.AttributeNames = {}));\n//# sourceMappingURL=AttributeNames.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvLnBucG0vQG9wZW50ZWxlbWV0cnkraW5zdHJ1bWVudGF0aW9uLWV4cHJlc3NAMC42Mi4wX0BvcGVudGVsZW1ldHJ5K2FwaUAxLjkuMS9ub2RlX21vZHVsZXMvQG9wZW50ZWxlbWV0cnkvaW5zdHJ1bWVudGF0aW9uLWV4cHJlc3MvYnVpbGQvc3JjL2VudW1zL0F0dHJpYnV0ZU5hbWVzLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQTZDLEVBQUUsYUFBYSxFQUFDO0FBQzdELHNCQUFzQjtBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsOENBQThDLHNCQUFzQixLQUFLO0FBQzFFIiwic291cmNlcyI6WyIvVXNlcnMvbWFyY21pbnRlbC9Qcm9qZWN0cy9lLXRpYi5jb20vbm9kZV9tb2R1bGVzLy5wbnBtL0BvcGVudGVsZW1ldHJ5K2luc3RydW1lbnRhdGlvbi1leHByZXNzQDAuNjIuMF9Ab3BlbnRlbGVtZXRyeSthcGlAMS45LjEvbm9kZV9tb2R1bGVzL0BvcGVudGVsZW1ldHJ5L2luc3RydW1lbnRhdGlvbi1leHByZXNzL2J1aWxkL3NyYy9lbnVtcy9BdHRyaWJ1dGVOYW1lcy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuQXR0cmlidXRlTmFtZXMgPSB2b2lkIDA7XG4vKlxuICogQ29weXJpZ2h0IFRoZSBPcGVuVGVsZW1ldHJ5IEF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xudmFyIEF0dHJpYnV0ZU5hbWVzO1xuKGZ1bmN0aW9uIChBdHRyaWJ1dGVOYW1lcykge1xuICAgIEF0dHJpYnV0ZU5hbWVzW1wiRVhQUkVTU19UWVBFXCJdID0gXCJleHByZXNzLnR5cGVcIjtcbiAgICBBdHRyaWJ1dGVOYW1lc1tcIkVYUFJFU1NfTkFNRVwiXSA9IFwiZXhwcmVzcy5uYW1lXCI7XG59KShBdHRyaWJ1dGVOYW1lcyA9IGV4cG9ydHMuQXR0cmlidXRlTmFtZXMgfHwgKGV4cG9ydHMuQXR0cmlidXRlTmFtZXMgPSB7fSkpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9QXR0cmlidXRlTmFtZXMuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/.pnpm/@opentelemetry+instrumentation-express@0.62.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-express/build/src/enums/AttributeNames.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/.pnpm/@opentelemetry+instrumentation-express@0.62.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-express/build/src/enums/ExpressLayerType.js":
/*!*******************************************************************************************************************************************************************************************!*\
!*** ./node_modules/.pnpm/@opentelemetry+instrumentation-express@0.62.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-express/build/src/enums/ExpressLayerType.js ***!
\*******************************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, exports) => {
eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ExpressLayerType = 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 ExpressLayerType;\n(function (ExpressLayerType) {\n ExpressLayerType[\"ROUTER\"] = \"router\";\n ExpressLayerType[\"MIDDLEWARE\"] = \"middleware\";\n ExpressLayerType[\"REQUEST_HANDLER\"] = \"request_handler\";\n})(ExpressLayerType = exports.ExpressLayerType || (exports.ExpressLayerType = {}));\n//# sourceMappingURL=ExpressLayerType.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvLnBucG0vQG9wZW50ZWxlbWV0cnkraW5zdHJ1bWVudGF0aW9uLWV4cHJlc3NAMC42Mi4wX0BvcGVudGVsZW1ldHJ5K2FwaUAxLjkuMS9ub2RlX21vZHVsZXMvQG9wZW50ZWxlbWV0cnkvaW5zdHJ1bWVudGF0aW9uLWV4cHJlc3MvYnVpbGQvc3JjL2VudW1zL0V4cHJlc3NMYXllclR5cGUuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkMsRUFBRSxhQUFhLEVBQUM7QUFDN0Qsd0JBQXdCO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLGtEQUFrRCx3QkFBd0IsS0FBSztBQUNoRiIsInNvdXJjZXMiOlsiL1VzZXJzL21hcmNtaW50ZWwvUHJvamVjdHMvZS10aWIuY29tL25vZGVfbW9kdWxlcy8ucG5wbS9Ab3BlbnRlbGVtZXRyeStpbnN0cnVtZW50YXRpb24tZXhwcmVzc0AwLjYyLjBfQG9wZW50ZWxlbWV0cnkrYXBpQDEuOS4xL25vZGVfbW9kdWxlcy9Ab3BlbnRlbGVtZXRyeS9pbnN0cnVtZW50YXRpb24tZXhwcmVzcy9idWlsZC9zcmMvZW51bXMvRXhwcmVzc0xheWVyVHlwZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuRXhwcmVzc0xheWVyVHlwZSA9IHZvaWQgMDtcbi8qXG4gKiBDb3B5cmlnaHQgVGhlIE9wZW5UZWxlbWV0cnkgQXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG52YXIgRXhwcmVzc0xheWVyVHlwZTtcbihmdW5jdGlvbiAoRXhwcmVzc0xheWVyVHlwZSkge1xuICAgIEV4cHJlc3NMYXllclR5cGVbXCJST1VURVJcIl0gPSBcInJvdXRlclwiO1xuICAgIEV4cHJlc3NMYXllclR5cGVbXCJNSURETEVXQVJFXCJdID0gXCJtaWRkbGV3YXJlXCI7XG4gICAgRXhwcmVzc0xheWVyVHlwZVtcIlJFUVVFU1RfSEFORExFUlwiXSA9IFwicmVxdWVzdF9oYW5kbGVyXCI7XG59KShFeHByZXNzTGF5ZXJUeXBlID0gZXhwb3J0cy5FeHByZXNzTGF5ZXJUeXBlIHx8IChleHBvcnRzLkV4cHJlc3NMYXllclR5cGUgPSB7fSkpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9RXhwcmVzc0xheWVyVHlwZS5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/.pnpm/@opentelemetry+instrumentation-express@0.62.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-express/build/src/enums/ExpressLayerType.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/.pnpm/@opentelemetry+instrumentation-express@0.62.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-express/build/src/index.js":
/*!**************************************************************************************************************************************************************************!*\
!*** ./node_modules/.pnpm/@opentelemetry+instrumentation-express@0.62.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-express/build/src/index.js ***!
\**************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
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.AttributeNames = exports.ExpressLayerType = exports.ExpressInstrumentation = void 0;\nvar instrumentation_1 = __webpack_require__(/*! ./instrumentation */ \"(rsc)/./node_modules/.pnpm/@opentelemetry+instrumentation-express@0.62.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-express/build/src/instrumentation.js\");\nObject.defineProperty(exports, \"ExpressInstrumentation\", ({ enumerable: true, get: function () { return instrumentation_1.ExpressInstrumentation; } }));\nvar ExpressLayerType_1 = __webpack_require__(/*! ./enums/ExpressLayerType */ \"(rsc)/./node_modules/.pnpm/@opentelemetry+instrumentation-express@0.62.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-express/build/src/enums/ExpressLayerType.js\");\nObject.defineProperty(exports, \"ExpressLayerType\", ({ enumerable: true, get: function () { return ExpressLayerType_1.ExpressLayerType; } }));\nvar AttributeNames_1 = __webpack_require__(/*! ./enums/AttributeNames */ \"(rsc)/./node_modules/.pnpm/@opentelemetry+instrumentation-express@0.62.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-express/build/src/enums/AttributeNames.js\");\nObject.defineProperty(exports, \"AttributeNames\", ({ enumerable: true, get: function () { return AttributeNames_1.AttributeNames; } }));\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvLnBucG0vQG9wZW50ZWxlbWV0cnkraW5zdHJ1bWVudGF0aW9uLWV4cHJlc3NAMC42Mi4wX0BvcGVudGVsZW1ldHJ5K2FwaUAxLjkuMS9ub2RlX21vZHVsZXMvQG9wZW50ZWxlbWV0cnkvaW5zdHJ1bWVudGF0aW9uLWV4cHJlc3MvYnVpbGQvc3JjL2luZGV4LmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOENBQTZDLEVBQUUsYUFBYSxFQUFDO0FBQzdELHNCQUFzQixHQUFHLHdCQUF3QixHQUFHLDhCQUE4QjtBQUNsRix3QkFBd0IsbUJBQU8sQ0FBQyw2TUFBbUI7QUFDbkQsMERBQXlELEVBQUUscUNBQXFDLG9EQUFvRCxFQUFDO0FBQ3JKLHlCQUF5QixtQkFBTyxDQUFDLDJOQUEwQjtBQUMzRCxvREFBbUQsRUFBRSxxQ0FBcUMsK0NBQStDLEVBQUM7QUFDMUksdUJBQXVCLG1CQUFPLENBQUMsdU5BQXdCO0FBQ3ZELGtEQUFpRCxFQUFFLHFDQUFxQywyQ0FBMkMsRUFBQztBQUNwSSIsInNvdXJjZXMiOlsiL1VzZXJzL21hcmNtaW50ZWwvUHJvamVjdHMvZS10aWIuY29tL25vZGVfbW9kdWxlcy8ucG5wbS9Ab3BlbnRlbGVtZXRyeStpbnN0cnVtZW50YXRpb24tZXhwcmVzc0AwLjYyLjBfQG9wZW50ZWxlbWV0cnkrYXBpQDEuOS4xL25vZGVfbW9kdWxlcy9Ab3BlbnRlbGVtZXRyeS9pbnN0cnVtZW50YXRpb24tZXhwcmVzcy9idWlsZC9zcmMvaW5kZXguanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG4vKlxuICogQ29weXJpZ2h0IFRoZSBPcGVuVGVsZW1ldHJ5IEF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5BdHRyaWJ1dGVOYW1lcyA9IGV4cG9ydHMuRXhwcmVzc0xheWVyVHlwZSA9IGV4cG9ydHMuRXhwcmVzc0luc3RydW1lbnRhdGlvbiA9IHZvaWQgMDtcbnZhciBpbnN0cnVtZW50YXRpb25fMSA9IHJlcXVpcmUoXCIuL2luc3RydW1lbnRhdGlvblwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkV4cHJlc3NJbnN0cnVtZW50YXRpb25cIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGluc3RydW1lbnRhdGlvbl8xLkV4cHJlc3NJbnN0cnVtZW50YXRpb247IH0gfSk7XG52YXIgRXhwcmVzc0xheWVyVHlwZV8xID0gcmVxdWlyZShcIi4vZW51bXMvRXhwcmVzc0xheWVyVHlwZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkV4cHJlc3NMYXllclR5cGVcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIEV4cHJlc3NMYXllclR5cGVfMS5FeHByZXNzTGF5ZXJUeXBlOyB9IH0pO1xudmFyIEF0dHJpYnV0ZU5hbWVzXzEgPSByZXF1aXJlKFwiLi9lbnVtcy9BdHRyaWJ1dGVOYW1lc1wiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkF0dHJpYnV0ZU5hbWVzXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBBdHRyaWJ1dGVOYW1lc18xLkF0dHJpYnV0ZU5hbWVzOyB9IH0pO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/.pnpm/@opentelemetry+instrumentation-express@0.62.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-express/build/src/index.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/.pnpm/@opentelemetry+instrumentation-express@0.62.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-express/build/src/instrumentation.js":
/*!************************************************************************************************************************************************************************************!*\
!*** ./node_modules/.pnpm/@opentelemetry+instrumentation-express@0.62.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-express/build/src/instrumentation.js ***!
\************************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
eval(";globalThis[\"_sentryRewritesTunnelPath\"] = undefined;globalThis[\"SENTRY_RELEASE\"] = undefined;globalThis[\"_sentryBasePath\"] = undefined;globalThis[\"_sentryNextJsVersion\"] = \"16.1.6\";globalThis[\"_sentryRewriteFramesDistDir\"] = \".next\";globalThis[\"_sentryVercelCronsConfig\"] = undefined;\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.ExpressInstrumentation = void 0;\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 api_1 = __webpack_require__(/*! @opentelemetry/api */ \"(rsc)/./node_modules/.pnpm/@opentelemetry+api@1.9.1/node_modules/@opentelemetry/api/build/esm/index.js\");\nconst ExpressLayerType_1 = __webpack_require__(/*! ./enums/ExpressLayerType */ \"(rsc)/./node_modules/.pnpm/@opentelemetry+instrumentation-express@0.62.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-express/build/src/enums/ExpressLayerType.js\");\nconst AttributeNames_1 = __webpack_require__(/*! ./enums/AttributeNames */ \"(rsc)/./node_modules/.pnpm/@opentelemetry+instrumentation-express@0.62.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-express/build/src/enums/AttributeNames.js\");\nconst utils_1 = __webpack_require__(/*! ./utils */ \"(rsc)/./node_modules/.pnpm/@opentelemetry+instrumentation-express@0.62.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-express/build/src/utils.js\");\n/** @knipignore */\nconst version_1 = __webpack_require__(/*! ./version */ \"(rsc)/./node_modules/.pnpm/@opentelemetry+instrumentation-express@0.62.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-express/build/src/version.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 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 internal_types_1 = __webpack_require__(/*! ./internal-types */ \"(rsc)/./node_modules/.pnpm/@opentelemetry+instrumentation-express@0.62.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-express/build/src/internal-types.js\");\n/** Express instrumentation for OpenTelemetry */\nclass ExpressInstrumentation extends instrumentation_1.InstrumentationBase {\n constructor(config = {}) {\n super(version_1.PACKAGE_NAME, version_1.PACKAGE_VERSION, config);\n }\n init() {\n return [\n new instrumentation_1.InstrumentationNodeModuleDefinition('express', ['>=4.0.0 <6'], moduleExports => {\n const isExpressWithRouterPrototype = typeof moduleExports?.Router?.prototype?.route === 'function';\n const routerProto = isExpressWithRouterPrototype\n ? moduleExports.Router.prototype // Express v5\n : moduleExports.Router; // Express v4\n // patch express.Router.route\n if ((0, instrumentation_1.isWrapped)(routerProto.route)) {\n this._unwrap(routerProto, 'route');\n }\n this._wrap(routerProto, 'route', this._getRoutePatch());\n // patch express.Router.use\n if ((0, instrumentation_1.isWrapped)(routerProto.use)) {\n this._unwrap(routerProto, 'use');\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this._wrap(routerProto, 'use', this._getRouterUsePatch());\n // patch express.Application.use\n if ((0, instrumentation_1.isWrapped)(moduleExports.application.use)) {\n this._unwrap(moduleExports.application, 'use');\n }\n this._wrap(moduleExports.application, 'use', \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this._getAppUsePatch(isExpressWithRouterPrototype));\n return moduleExports;\n }, moduleExports => {\n if (moduleExports === undefined)\n return;\n const isExpressWithRouterPrototype = typeof moduleExports?.Router?.prototype?.route === 'function';\n const routerProto = isExpressWithRouterPrototype\n ? moduleExports.Router.prototype\n : moduleExports.Router;\n this._unwrap(routerProto, 'route');\n this._unwrap(routerProto, 'use');\n this._unwrap(moduleExports.application, 'use');\n }),\n ];\n }\n /**\n * Get the patch for Router.route function\n */\n _getRoutePatch() {\n const instrumentation = this;\n return function (original) {\n return function route_trace(...args) {\n const route = original.apply(this, args);\n const layer = this.stack[this.stack.length - 1];\n instrumentation._applyPatch(layer, (0, utils_1.getLayerPath)(args));\n return route;\n };\n };\n }\n /**\n * Get the patch for Router.use function\n */\n _getRouterUsePatch() {\n const instrumentation = this;\n return function (original) {\n return function use(...args) {\n const route = original.apply(this, args);\n const layer = this.stack[this.stack.length - 1];\n instrumentation._applyPatch(layer, (0, utils_1.getLayerPath)(args));\n return route;\n };\n };\n }\n /**\n * Get the patch for Application.use function\n */\n _getAppUsePatch(isExpressWithRouterPrototype) {\n const instrumentation = this;\n return function (original) {\n return function use(...args) {\n // If we access app.router in express 4.x we trigger an assertion error.\n // This property existed in v3, was removed in v4 and then re-added in v5.\n const router = isExpressWithRouterPrototype\n ? this.router\n : this._router;\n const route = original.apply(this, args);\n if (router) {\n const layer = router.stack[router.stack.length - 1];\n instrumentation._applyPatch(layer, (0, utils_1.getLayerPath)(args));\n }\n return route;\n };\n };\n }\n /** Patch each express layer to create span and propagate context */\n _applyPatch(layer, layerPath) {\n const instrumentation = this;\n // avoid patching multiple times the same layer\n if (layer[internal_types_1.kLayerPatched] === true)\n return;\n layer[internal_types_1.kLayerPatched] = true;\n this._wrap(layer, 'handle', original => {\n // TODO: instrument error handlers\n if (original.length === 4)\n return original;\n const patched = function (req, res) {\n const { isLayerPathStored } = (0, utils_1.storeLayerPath)(req, layerPath);\n const constructedRoute = (0, utils_1.getConstructedRoute)(req);\n const actualMatchedRoute = (0, utils_1.getActualMatchedRoute)(req);\n const attributes = {\n [semantic_conventions_1.ATTR_HTTP_ROUTE]: actualMatchedRoute,\n };\n const metadata = (0, utils_1.getLayerMetadata)(constructedRoute, layer, layerPath);\n const type = metadata.attributes[AttributeNames_1.AttributeNames.EXPRESS_TYPE];\n const rpcMetadata = (0, core_1.getRPCMetadata)(api_1.context.active());\n if (rpcMetadata?.type === core_1.RPCType.HTTP) {\n rpcMetadata.route = actualMatchedRoute;\n }\n // verify against the config if the layer should be ignored\n if ((0, utils_1.isLayerIgnored)(metadata.name, type, instrumentation.getConfig())) {\n if (type === ExpressLayerType_1.ExpressLayerType.MIDDLEWARE) {\n req[internal_types_1._LAYERS_STORE_PROPERTY].pop();\n }\n return original.apply(this, arguments);\n }\n if (api_1.trace.getSpan(api_1.context.active()) === undefined) {\n return original.apply(this, arguments);\n }\n const spanName = instrumentation._getSpanName({\n request: req,\n layerType: type,\n route: constructedRoute,\n }, metadata.name);\n const span = instrumentation.tracer.startSpan(spanName, {\n attributes: Object.assign(attributes, metadata.attributes),\n });\n const parentContext = api_1.context.active();\n let currentContext = api_1.trace.setSpan(parentContext, span);\n const { requestHook } = instrumentation.getConfig();\n if (requestHook) {\n (0, instrumentation_1.safeExecuteInTheMiddle)(() => requestHook(span, {\n request: req,\n layerType: type,\n route: constructedRoute,\n }), e => {\n if (e) {\n api_1.diag.error('express instrumentation: request hook failed', e);\n }\n }, true);\n }\n let spanHasEnded = false;\n // TODO: Fix router spans (getRouterPath does not work properly) to\n // have useful names before removing this branch\n if (metadata.attributes[AttributeNames_1.AttributeNames.EXPRESS_TYPE] ===\n ExpressLayerType_1.ExpressLayerType.ROUTER) {\n span.end();\n spanHasEnded = true;\n currentContext = parentContext;\n }\n // listener for response.on('finish')\n const onResponseFinish = () => {\n if (spanHasEnded === false) {\n spanHasEnded = true;\n span.end();\n }\n };\n // verify we have a callback\n const args = Array.from(arguments);\n const callbackIdx = args.findIndex(arg => typeof arg === 'function');\n if (callbackIdx >= 0) {\n arguments[callbackIdx] = function () {\n // express considers anything but an empty value, \"route\" or \"router\"\n // passed to its callback to be an error\n const maybeError = arguments[0];\n const isError = ![undefined, null, 'route', 'router'].includes(maybeError);\n if (!spanHasEnded && isError) {\n const [error, message] = (0, utils_1.asErrorAndMessage)(maybeError);\n span.recordException(error);\n span.setStatus({\n code: api_1.SpanStatusCode.ERROR,\n message,\n });\n }\n if (spanHasEnded === false) {\n spanHasEnded = true;\n req.res?.removeListener('finish', onResponseFinish);\n span.end();\n }\n if (!(req.route && isError) && isLayerPathStored) {\n req[internal_types_1._LAYERS_STORE_PROPERTY].pop();\n }\n const callback = args[callbackIdx];\n // Preserve the active context (which may include baggage set by middleware)\n // but restore the parent span to prevent sibling middleware spans\n // from nesting under each other\n const activeContext = api_1.context.active();\n const parentSpan = api_1.trace.getSpan(parentContext);\n const nextContext = parentSpan\n ? api_1.trace.setSpan(activeContext, parentSpan)\n : activeContext;\n return api_1.context.bind(nextContext, callback).apply(this, arguments);\n };\n }\n try {\n return api_1.context.bind(currentContext, original).apply(this, arguments);\n }\n catch (anyError) {\n const [error, message] = (0, utils_1.asErrorAndMessage)(anyError);\n span.recordException(error);\n span.setStatus({\n code: api_1.SpanStatusCode.ERROR,\n message,\n });\n throw anyError;\n }\n finally {\n /**\n * At this point if the callback wasn't called, that means either the\n * layer is asynchronous (so it will call the callback later on) or that\n * the layer directly ends the http response, so we'll hook into the \"finish\"\n * event to handle the later case.\n */\n if (!spanHasEnded) {\n res.once('finish', onResponseFinish);\n }\n }\n };\n // `handle` isn't just a regular function in some cases. It also contains\n // some properties holding metadata and state so we need to proxy them\n // through through patched function\n // ref: https://github.com/open-telemetry/opentelemetry-js-contrib/issues/1950\n // Also some apps/libs do their own patching before OTEL and have these properties\n // in the proptotype. So we use a `for...in` loop to get own properties and also\n // any enumerable prop in the prototype chain\n // ref: https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2271\n for (const key in original) {\n Object.defineProperty(patched, key, {\n get() {\n return original[key];\n },\n set(value) {\n original[key] = value;\n },\n });\n }\n return patched;\n });\n }\n _getSpanName(info, defaultName) {\n const { spanNameHook } = this.getConfig();\n if (!(spanNameHook instanceof Function)) {\n return defaultName;\n }\n try {\n return spanNameHook(info, defaultName) ?? defaultName;\n }\n catch (err) {\n api_1.diag.error('express instrumentation: error calling span name rewrite hook', err);\n return defaultName;\n }\n }\n}\nexports.ExpressInstrumentation = ExpressInstrumentation;\n//# sourceMappingURL=instrumentation.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvLnBucG0vQG9wZW50ZWxlbWV0cnkraW5zdHJ1bWVudGF0aW9uLWV4cHJlc3NAMC42Mi4wX0BvcGVudGVsZW1ldHJ5K2FwaUAxLjkuMS9ub2RlX21vZHVsZXMvQG9wZW50ZWxlbWV0cnkvaW5zdHJ1bWVudGF0aW9uLWV4cHJlc3MvYnVpbGQvc3JjL2luc3RydW1lbnRhdGlvbi5qcyIsIm1hcHBpbmdzIjoiQUFBYSxDQUFDLG9EQUFvRCx5Q0FBeUMsMENBQTBDLDhDQUE4QyxvREFBb0Q7QUFDdlA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOENBQTZDLEVBQUUsYUFBYSxFQUFDO0FBQzdELDhCQUE4QjtBQUM5QixlQUFlLG1CQUFPLENBQUMsOEpBQXFCO0FBQzVDLGNBQWMsbUJBQU8sQ0FBQyxrSUFBb0I7QUFDMUMsMkJBQTJCLG1CQUFPLENBQUMsMk5BQTBCO0FBQzdELHlCQUF5QixtQkFBTyxDQUFDLHVOQUF3QjtBQUN6RCxnQkFBZ0IsbUJBQU8sQ0FBQyx5TEFBUztBQUNqQztBQUNBLGtCQUFrQixtQkFBTyxDQUFDLDZMQUFXO0FBQ3JDLDBCQUEwQixtQkFBTyxDQUFDLGlNQUFnQztBQUNsRSwrQkFBK0IsbUJBQU8sQ0FBQyxzTEFBcUM7QUFDNUUseUJBQXlCLG1CQUFPLENBQUMsMk1BQWtCO0FBQ25EO0FBQ0E7QUFDQSwyQkFBMkI7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRDQUE0QztBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLG9CQUFvQjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQSx3QkFBd0IsY0FBYztBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckIsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLGdCQUFnQixlQUFlO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4QjtBQUM5QiIsInNvdXJjZXMiOlsiL1VzZXJzL21hcmNtaW50ZWwvUHJvamVjdHMvZS10aWIuY29tL25vZGVfbW9kdWxlcy8ucG5wbS9Ab3BlbnRlbGVtZXRyeStpbnN0cnVtZW50YXRpb24tZXhwcmVzc0AwLjYyLjBfQG9wZW50ZWxlbWV0cnkrYXBpQDEuOS4xL25vZGVfbW9kdWxlcy9Ab3BlbnRlbGVtZXRyeS9pbnN0cnVtZW50YXRpb24tZXhwcmVzcy9idWlsZC9zcmMvaW5zdHJ1bWVudGF0aW9uLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiOztnbG9iYWxUaGlzW1wiX3NlbnRyeVJld3JpdGVzVHVubmVsUGF0aFwiXSA9IHVuZGVmaW5lZDtnbG9iYWxUaGlzW1wiU0VOVFJZX1JFTEVBU0VcIl0gPSB1bmRlZmluZWQ7Z2xvYmFsVGhpc1tcIl9zZW50cnlCYXNlUGF0aFwiXSA9IHVuZGVmaW5lZDtnbG9iYWxUaGlzW1wiX3NlbnRyeU5leHRKc1ZlcnNpb25cIl0gPSBcIjE2LjEuNlwiO2dsb2JhbFRoaXNbXCJfc2VudHJ5UmV3cml0ZUZyYW1lc0Rpc3REaXJcIl0gPSBcIi5uZXh0XCI7Z2xvYmFsVGhpc1tcIl9zZW50cnlWZXJjZWxDcm9uc0NvbmZpZ1wiXSA9IHVuZGVmaW5lZDtcbi8qXG4gKiBDb3B5cmlnaHQgVGhlIE9wZW5UZWxlbWV0cnkgQXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLkV4cHJlc3NJbnN0cnVtZW50YXRpb24gPSB2b2lkIDA7XG5jb25zdCBjb3JlXzEgPSByZXF1aXJlKFwiQG9wZW50ZWxlbWV0cnkvY29yZVwiKTtcbmNvbnN0IGFwaV8xID0gcmVxdWlyZShcIkBvcGVudGVsZW1ldHJ5L2FwaVwiKTtcbmNvbnN0IEV4cHJlc3NMYXllclR5cGVfMSA9IHJlcXVpcmUoXCIuL2VudW1zL0V4cHJlc3NMYXllclR5cGVcIik7XG5jb25zdCBBdHRyaWJ1dGVOYW1lc18xID0gcmVxdWlyZShcIi4vZW51bXMvQXR0cmlidXRlTmFtZXNcIik7XG5jb25zdCB1dGlsc18xID0gcmVxdWlyZShcIi4vdXRpbHNcIik7XG4vKiogQGtuaXBpZ25vcmUgKi9cbmNvbnN0IHZlcnNpb25fMSA9IHJlcXVpcmUoXCIuL3ZlcnNpb25cIik7XG5jb25zdCBpbnN0cnVtZW50YXRpb25fMSA9IHJlcXVpcmUoXCJAb3BlbnRlbGVtZXRyeS9pbnN0cnVtZW50YXRpb25cIik7XG5jb25zdCBzZW1hbnRpY19jb252ZW50aW9uc18xID0gcmVxdWlyZShcIkBvcGVudGVsZW1ldHJ5L3NlbWFudGljLWNvbnZlbnRpb25zXCIpO1xuY29uc3QgaW50ZXJuYWxfdHlwZXNfMSA9IHJlcXVpcmUoXCIuL2ludGVybmFsLXR5cGVzXCIpO1xuLyoqIEV4cHJlc3MgaW5zdHJ1bWVudGF0aW9uIGZvciBPcGVuVGVsZW1ldHJ5ICovXG5jbGFzcyBFeHByZXNzSW5zdHJ1bWVudGF0aW9uIGV4dGVuZHMgaW5zdHJ1bWVudGF0aW9uXzEuSW5zdHJ1bWVudGF0aW9uQmFzZSB7XG4gICAgY29uc3RydWN0b3IoY29uZmlnID0ge30pIHtcbiAgICAgICAgc3VwZXIodmVyc2lvbl8xLlBBQ0tBR0VfTkFNRSwgdmVyc2lvbl8xLlBBQ0tBR0VfVkVSU0lPTiwgY29uZmlnKTtcbiAgICB9XG4gICAgaW5pdCgpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIG5ldyBpbnN0cnVtZW50YXRpb25fMS5JbnN0cnVtZW50YXRpb25Ob2RlTW9kdWxlRGVmaW5pdGlvbignZXhwcmVzcycsIFsnPj00LjAuMCA8NiddLCBtb2R1bGVFeHBvcnRzID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBpc0V4cHJlc3NXaXRoUm91dGVyUHJvdG90eXBlID0gdHlwZW9mIG1vZHVsZUV4cG9ydHM/LlJvdXRlcj8ucHJvdG90eXBlPy5yb3V0ZSA9PT0gJ2Z1bmN0aW9uJztcbiAgICAgICAgICAgICAgICBjb25zdCByb3V0ZXJQcm90byA9IGlzRXhwcmVzc1dpdGhSb3V0ZXJQcm90b3R5cGVcbiAgICAgICAgICAgICAgICAgICAgPyBtb2R1bGVFeHBvcnRzLlJvdXRlci5wcm90b3R5cGUgLy8gRXhwcmVzcyB2NVxuICAgICAgICAgICAgICAgICAgICA6IG1vZHVsZUV4cG9ydHMuUm91dGVyOyAvLyBFeHByZXNzIHY0XG4gICAgICAgICAgICAgICAgLy8gcGF0Y2ggZXhwcmVzcy5Sb3V0ZXIucm91dGVcbiAgICAgICAgICAgICAgICBpZiAoKDAsIGluc3RydW1lbnRhdGlvbl8xLmlzV3JhcHBlZCkocm91dGVyUHJvdG8ucm91dGUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3Vud3JhcChyb3V0ZXJQcm90bywgJ3JvdXRlJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuX3dyYXAocm91dGVyUHJvdG8sICdyb3V0ZScsIHRoaXMuX2dldFJvdXRlUGF0Y2goKSk7XG4gICAgICAgICAgICAgICAgLy8gcGF0Y2ggZXhwcmVzcy5Sb3V0ZXIudXNlXG4gICAgICAgICAgICAgICAgaWYgKCgwLCBpbnN0cnVtZW50YXRpb25fMS5pc1dyYXBwZWQpKHJvdXRlclByb3RvLnVzZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdW53cmFwKHJvdXRlclByb3RvLCAndXNlJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgICAgICAgICAgdGhpcy5fd3JhcChyb3V0ZXJQcm90bywgJ3VzZScsIHRoaXMuX2dldFJvdXRlclVzZVBhdGNoKCkpO1xuICAgICAgICAgICAgICAgIC8vIHBhdGNoIGV4cHJlc3MuQXBwbGljYXRpb24udXNlXG4gICAgICAgICAgICAgICAgaWYgKCgwLCBpbnN0cnVtZW50YXRpb25fMS5pc1dyYXBwZWQpKG1vZHVsZUV4cG9ydHMuYXBwbGljYXRpb24udXNlKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl91bndyYXAobW9kdWxlRXhwb3J0cy5hcHBsaWNhdGlvbiwgJ3VzZScpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLl93cmFwKG1vZHVsZUV4cG9ydHMuYXBwbGljYXRpb24sICd1c2UnLCBcbiAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICAgICAgICAgIHRoaXMuX2dldEFwcFVzZVBhdGNoKGlzRXhwcmVzc1dpdGhSb3V0ZXJQcm90b3R5cGUpKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gbW9kdWxlRXhwb3J0cztcbiAgICAgICAgICAgIH0sIG1vZHVsZUV4cG9ydHMgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChtb2R1bGVFeHBvcnRzID09PSB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICBjb25zdCBpc0V4cHJlc3NXaXRoUm91dGVyUHJvdG90eXBlID0gdHlwZW9mIG1vZHVsZUV4cG9ydHM/LlJvdXRlcj8ucHJvdG90eXBlPy5yb3V0ZSA9PT0gJ2Z1bmN0aW9uJztcbiAgICAgICAgICAgICAgICBjb25zdCByb3V0ZXJQcm90byA9IGlzRXhwcmVzc1dpdGhSb3V0ZXJQcm90b3R5cGVcbiAgICAgICAgICAgICAgICAgICAgPyBtb2R1bGVFeHBvcnRzLlJvdXRlci5wcm90b3R5cGVcbiAgICAgICAgICAgICAgICAgICAgOiBtb2R1bGVFeHBvcnRzLlJvdXRlcjtcbiAgICAgICAgICAgICAgICB0aGlzLl91bndyYXAocm91dGVyUHJvdG8sICdyb3V0ZScpO1xuICAgICAgICAgICAgICAgIHRoaXMuX3Vud3JhcChyb3V0ZXJQcm90bywgJ3VzZScpO1xuICAgICAgICAgICAgICAgIHRoaXMuX3Vud3JhcChtb2R1bGVFeHBvcnRzLmFwcGxpY2F0aW9uLCAndXNlJyk7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgXTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogR2V0IHRoZSBwYXRjaCBmb3IgUm91dGVyLnJvdXRlIGZ1bmN0aW9uXG4gICAgICovXG4gICAgX2dldFJvdXRlUGF0Y2goKSB7XG4gICAgICAgIGNvbnN0IGluc3RydW1lbnRhdGlvbiA9IHRoaXM7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAob3JpZ2luYWwpIHtcbiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiByb3V0ZV90cmFjZSguLi5hcmdzKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgcm91dGUgPSBvcmlnaW5hbC5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICAgICAgICAgICAgICBjb25zdCBsYXllciA9IHRoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgICAgICBpbnN0cnVtZW50YXRpb24uX2FwcGx5UGF0Y2gobGF5ZXIsICgwLCB1dGlsc18xLmdldExheWVyUGF0aCkoYXJncykpO1xuICAgICAgICAgICAgICAgIHJldHVybiByb3V0ZTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH07XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEdldCB0aGUgcGF0Y2ggZm9yIFJvdXRlci51c2UgZnVuY3Rpb25cbiAgICAgKi9cbiAgICBfZ2V0Um91dGVyVXNlUGF0Y2goKSB7XG4gICAgICAgIGNvbnN0IGluc3RydW1lbnRhdGlvbiA9IHRoaXM7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAob3JpZ2luYWwpIHtcbiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiB1c2UoLi4uYXJncykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJvdXRlID0gb3JpZ2luYWwuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICAgICAgICAgICAgY29uc3QgbGF5ZXIgPSB0aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoIC0gMV07XG4gICAgICAgICAgICAgICAgaW5zdHJ1bWVudGF0aW9uLl9hcHBseVBhdGNoKGxheWVyLCAoMCwgdXRpbHNfMS5nZXRMYXllclBhdGgpKGFyZ3MpKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gcm91dGU7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9O1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBHZXQgdGhlIHBhdGNoIGZvciBBcHBsaWNhdGlvbi51c2UgZnVuY3Rpb25cbiAgICAgKi9cbiAgICBfZ2V0QXBwVXNlUGF0Y2goaXNFeHByZXNzV2l0aFJvdXRlclByb3RvdHlwZSkge1xuICAgICAgICBjb25zdCBpbnN0cnVtZW50YXRpb24gPSB0aGlzO1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKG9yaWdpbmFsKSB7XG4gICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gdXNlKC4uLmFyZ3MpIHtcbiAgICAgICAgICAgICAgICAvLyBJZiB3ZSBhY2Nlc3MgYXBwLnJvdXRlciBpbiBleHByZXNzIDQueCB3ZSB0cmlnZ2VyIGFuIGFzc2VydGlvbiBlcnJvci5cbiAgICAgICAgICAgICAgICAvLyBUaGlzIHByb3BlcnR5IGV4aXN0ZWQgaW4gdjMsIHdhcyByZW1vdmVkIGluIHY0IGFuZCB0aGVuIHJlLWFkZGVkIGluIHY1LlxuICAgICAgICAgICAgICAgIGNvbnN0IHJvdXRlciA9IGlzRXhwcmVzc1dpdGhSb3V0ZXJQcm90b3R5cGVcbiAgICAgICAgICAgICAgICAgICAgPyB0aGlzLnJvdXRlclxuICAgICAgICAgICAgICAgICAgICA6IHRoaXMuX3JvdXRlcjtcbiAgICAgICAgICAgICAgICBjb25zdCByb3V0ZSA9IG9yaWdpbmFsLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgICAgICAgICAgICAgIGlmIChyb3V0ZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbGF5ZXIgPSByb3V0ZXIuc3RhY2tbcm91dGVyLnN0YWNrLmxlbmd0aCAtIDFdO1xuICAgICAgICAgICAgICAgICAgICBpbnN0cnVtZW50YXRpb24uX2FwcGx5UGF0Y2gobGF5ZXIsICgwLCB1dGlsc18xLmdldExheWVyUGF0aCkoYXJncykpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcm91dGU7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9O1xuICAgIH1cbiAgICAvKiogUGF0Y2ggZWFjaCBleHByZXNzIGxheWVyIHRvIGNyZWF0ZSBzcGFuIGFuZCBwcm9wYWdhdGUgY29udGV4dCAqL1xuICAgIF9hcHBseVBhdGNoKGxheWVyLCBsYXllclBhdGgpIHtcbiAgICAgICAgY29uc3QgaW5zdHJ1bWVudGF0aW9uID0gdGhpcztcbiAgICAgICAgLy8gYXZvaWQgcGF0Y2hpbmcgbXVsdGlwbGUgdGltZXMgdGhlIHNhbWUgbGF5ZXJcbiAgICAgICAgaWYgKGxheWVyW2ludGVybmFsX3R5cGVzXzEua0xheWVyUGF0Y2hlZF0gPT09IHRydWUpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGxheWVyW2ludGVybmFsX3R5cGVzXzEua0xheWVyUGF0Y2hlZF0gPSB0cnVlO1xuICAgICAgICB0aGlzLl93cmFwKGxheWVyLCAnaGFuZGxlJywgb3JpZ2luYWwgPT4ge1xuICAgICAgICAgICAgLy8gVE9ETzogaW5zdHJ1bWVudCBlcnJvciBoYW5kbGVyc1xuICAgICAgICAgICAgaWYgKG9yaWdpbmFsLmxlbmd0aCA9PT0gNClcbiAgICAgICAgICAgICAgICByZXR1cm4gb3JpZ2luYWw7XG4gICAgICAgICAgICBjb25zdCBwYXRjaGVkID0gZnVuY3Rpb24gKHJlcSwgcmVzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBpc0xheWVyUGF0aFN0b3JlZCB9ID0gKDAsIHV0aWxzXzEuc3RvcmVMYXllclBhdGgpKHJlcSwgbGF5ZXJQYXRoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBjb25zdHJ1Y3RlZFJvdXRlID0gKDAsIHV0aWxzXzEuZ2V0Q29uc3RydWN0ZWRSb3V0ZSkocmVxKTtcbiAgICAgICAgICAgICAgICBjb25zdCBhY3R1YWxNYXRjaGVkUm91dGUgPSAoMCwgdXRpbHNfMS5nZXRBY3R1YWxNYXRjaGVkUm91dGUpKHJlcSk7XG4gICAgICAgICAgICAgICAgY29uc3QgYXR0cmlidXRlcyA9IHtcbiAgICAgICAgICAgICAgICAgICAgW3NlbWFudGljX2NvbnZlbnRpb25zXzEuQVRUUl9IVFRQX1JPVVRFXTogYWN0dWFsTWF0Y2hlZFJvdXRlLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgY29uc3QgbWV0YWRhdGEgPSAoMCwgdXRpbHNfMS5nZXRMYXllck1ldGFkYXRhKShjb25zdHJ1Y3RlZFJvdXRlLCBsYXllciwgbGF5ZXJQYXRoKTtcbiAgICAgICAgICAgICAgICBjb25zdCB0eXBlID0gbWV0YWRhdGEuYXR0cmlidXRlc1tBdHRyaWJ1dGVOYW1lc18xLkF0dHJpYnV0ZU5hbWVzLkVYUFJFU1NfVFlQRV07XG4gICAgICAgICAgICAgICAgY29uc3QgcnBjTWV0YWRhdGEgPSAoMCwgY29yZV8xLmdldFJQQ01ldGFkYXRhKShhcGlfMS5jb250ZXh0LmFjdGl2ZSgpKTtcbiAgICAgICAgICAgICAgICBpZiAocnBjTWV0YWRhdGE/LnR5cGUgPT09IGNvcmVfMS5SUENUeXBlLkhUVFApIHtcbiAgICAgICAgICAgICAgICAgICAgcnBjTWV0YWRhdGEucm91dGUgPSBhY3R1YWxNYXRjaGVkUm91dGU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIHZlcmlmeSBhZ2FpbnN0IHRoZSBjb25maWcgaWYgdGhlIGxheWVyIHNob3VsZCBiZSBpZ25vcmVkXG4gICAgICAgICAgICAgICAgaWYgKCgwLCB1dGlsc18xLmlzTGF5ZXJJZ25vcmVkKShtZXRhZGF0YS5uYW1lLCB0eXBlLCBpbnN0cnVtZW50YXRpb24uZ2V0Q29uZmlnKCkpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlID09PSBFeHByZXNzTGF5ZXJUeXBlXzEuRXhwcmVzc0xheWVyVHlwZS5NSURETEVXQVJFKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXFbaW50ZXJuYWxfdHlwZXNfMS5fTEFZRVJTX1NUT1JFX1BST1BFUlRZXS5wb3AoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3JpZ2luYWwuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGFwaV8xLnRyYWNlLmdldFNwYW4oYXBpXzEuY29udGV4dC5hY3RpdmUoKSkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3JpZ2luYWwuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3Qgc3Bhbk5hbWUgPSBpbnN0cnVtZW50YXRpb24uX2dldFNwYW5OYW1lKHtcbiAgICAgICAgICAgICAgICAgICAgcmVxdWVzdDogcmVxLFxuICAgICAgICAgICAgICAgICAgICBsYXllclR5cGU6IHR5cGUsXG4gICAgICAgICAgICAgICAgICAgIHJvdXRlOiBjb25zdHJ1Y3RlZFJvdXRlLFxuICAgICAgICAgICAgICAgIH0sIG1ldGFkYXRhLm5hbWUpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNwYW4gPSBpbnN0cnVtZW50YXRpb24udHJhY2VyLnN0YXJ0U3BhbihzcGFuTmFtZSwge1xuICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzOiBPYmplY3QuYXNzaWduKGF0dHJpYnV0ZXMsIG1ldGFkYXRhLmF0dHJpYnV0ZXMpLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudENvbnRleHQgPSBhcGlfMS5jb250ZXh0LmFjdGl2ZSgpO1xuICAgICAgICAgICAgICAgIGxldCBjdXJyZW50Q29udGV4dCA9IGFwaV8xLnRyYWNlLnNldFNwYW4ocGFyZW50Q29udGV4dCwgc3Bhbik7XG4gICAgICAgICAgICAgICAgY29uc3QgeyByZXF1ZXN0SG9vayB9ID0gaW5zdHJ1bWVudGF0aW9uLmdldENvbmZpZygpO1xuICAgICAgICAgICAgICAgIGlmIChyZXF1ZXN0SG9vaykge1xuICAgICAgICAgICAgICAgICAgICAoMCwgaW5zdHJ1bWVudGF0aW9uXzEuc2FmZUV4ZWN1dGVJblRoZU1pZGRsZSkoKCkgPT4gcmVxdWVzdEhvb2soc3Bhbiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdDogcmVxLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJUeXBlOiB0eXBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgcm91dGU6IGNvbnN0cnVjdGVkUm91dGUsXG4gICAgICAgICAgICAgICAgICAgIH0pLCBlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBpXzEuZGlhZy5lcnJvcignZXhwcmVzcyBpbnN0cnVtZW50YXRpb246IHJlcXVlc3QgaG9vayBmYWlsZWQnLCBlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGxldCBzcGFuSGFzRW5kZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAvLyBUT0RPOiBGaXggcm91dGVyIHNwYW5zIChnZXRSb3V0ZXJQYXRoIGRvZXMgbm90IHdvcmsgcHJvcGVybHkpIHRvXG4gICAgICAgICAgICAgICAgLy8gaGF2ZSB1c2VmdWwgbmFtZXMgYmVmb3JlIHJlbW92aW5nIHRoaXMgYnJhbmNoXG4gICAgICAgICAgICAgICAgaWYgKG1ldGFkYXRhLmF0dHJpYnV0ZXNbQXR0cmlidXRlTmFtZXNfMS5BdHRyaWJ1dGVOYW1lcy5FWFBSRVNTX1RZUEVdID09PVxuICAgICAgICAgICAgICAgICAgICBFeHByZXNzTGF5ZXJUeXBlXzEuRXhwcmVzc0xheWVyVHlwZS5ST1VURVIpIHtcbiAgICAgICAgICAgICAgICAgICAgc3Bhbi5lbmQoKTtcbiAgICAgICAgICAgICAgICAgICAgc3Bhbkhhc0VuZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudENvbnRleHQgPSBwYXJlbnRDb250ZXh0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBsaXN0ZW5lciBmb3IgcmVzcG9uc2Uub24oJ2ZpbmlzaCcpXG4gICAgICAgICAgICAgICAgY29uc3Qgb25SZXNwb25zZUZpbmlzaCA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNwYW5IYXNFbmRlZCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNwYW5IYXNFbmRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBzcGFuLmVuZCgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAvLyB2ZXJpZnkgd2UgaGF2ZSBhIGNhbGxiYWNrXG4gICAgICAgICAgICAgICAgY29uc3QgYXJncyA9IEFycmF5LmZyb20oYXJndW1lbnRzKTtcbiAgICAgICAgICAgICAgICBjb25zdCBjYWxsYmFja0lkeCA9IGFyZ3MuZmluZEluZGV4KGFyZyA9PiB0eXBlb2YgYXJnID09PSAnZnVuY3Rpb24nKTtcbiAgICAgICAgICAgICAgICBpZiAoY2FsbGJhY2tJZHggPj0gMCkge1xuICAgICAgICAgICAgICAgICAgICBhcmd1bWVudHNbY2FsbGJhY2tJZHhdID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gZXhwcmVzcyBjb25zaWRlcnMgYW55dGhpbmcgYnV0IGFuIGVtcHR5IHZhbHVlLCBcInJvdXRlXCIgb3IgXCJyb3V0ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGFzc2VkIHRvIGl0cyBjYWxsYmFjayB0byBiZSBhbiBlcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF5YmVFcnJvciA9IGFyZ3VtZW50c1swXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzRXJyb3IgPSAhW3VuZGVmaW5lZCwgbnVsbCwgJ3JvdXRlJywgJ3JvdXRlciddLmluY2x1ZGVzKG1heWJlRXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzcGFuSGFzRW5kZWQgJiYgaXNFcnJvcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFtlcnJvciwgbWVzc2FnZV0gPSAoMCwgdXRpbHNfMS5hc0Vycm9yQW5kTWVzc2FnZSkobWF5YmVFcnJvcik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Bhbi5yZWNvcmRFeGNlcHRpb24oZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwYW4uc2V0U3RhdHVzKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogYXBpXzEuU3BhblN0YXR1c0NvZGUuRVJST1IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3Bhbkhhc0VuZGVkID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwYW5IYXNFbmRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxLnJlcz8ucmVtb3ZlTGlzdGVuZXIoJ2ZpbmlzaCcsIG9uUmVzcG9uc2VGaW5pc2gpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwYW4uZW5kKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShyZXEucm91dGUgJiYgaXNFcnJvcikgJiYgaXNMYXllclBhdGhTdG9yZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXFbaW50ZXJuYWxfdHlwZXNfMS5fTEFZRVJTX1NUT1JFX1BST1BFUlRZXS5wb3AoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNhbGxiYWNrID0gYXJnc1tjYWxsYmFja0lkeF07XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBQcmVzZXJ2ZSB0aGUgYWN0aXZlIGNvbnRleHQgKHdoaWNoIG1heSBpbmNsdWRlIGJhZ2dhZ2Ugc2V0IGJ5IG1pZGRsZXdhcmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBidXQgcmVzdG9yZSB0aGUgcGFyZW50IHNwYW4gdG8gcHJldmVudCBzaWJsaW5nIG1pZGRsZXdhcmUgc3BhbnNcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZyb20gbmVzdGluZyB1bmRlciBlYWNoIG90aGVyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhY3RpdmVDb250ZXh0ID0gYXBpXzEuY29udGV4dC5hY3RpdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudFNwYW4gPSBhcGlfMS50cmFjZS5nZXRTcGFuKHBhcmVudENvbnRleHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV4dENvbnRleHQgPSBwYXJlbnRTcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBhcGlfMS50cmFjZS5zZXRTcGFuKGFjdGl2ZUNvbnRleHQsIHBhcmVudFNwYW4pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBhY3RpdmVDb250ZXh0O1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFwaV8xLmNvbnRleHQuYmluZChuZXh0Q29udGV4dCwgY2FsbGJhY2spLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhcGlfMS5jb250ZXh0LmJpbmQoY3VycmVudENvbnRleHQsIG9yaWdpbmFsKS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXRjaCAoYW55RXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgW2Vycm9yLCBtZXNzYWdlXSA9ICgwLCB1dGlsc18xLmFzRXJyb3JBbmRNZXNzYWdlKShhbnlFcnJvcik7XG4gICAgICAgICAgICAgICAgICAgIHNwYW4ucmVjb3JkRXhjZXB0aW9uKGVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgc3Bhbi5zZXRTdGF0dXMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogYXBpXzEuU3BhblN0YXR1c0NvZGUuRVJST1IsXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgYW55RXJyb3I7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgICAgICogQXQgdGhpcyBwb2ludCBpZiB0aGUgY2FsbGJhY2sgd2Fzbid0IGNhbGxlZCwgdGhhdCBtZWFucyBlaXRoZXIgdGhlXG4gICAgICAgICAgICAgICAgICAgICAqIGxheWVyIGlzIGFzeW5jaHJvbm91cyAoc28gaXQgd2lsbCBjYWxsIHRoZSBjYWxsYmFjayBsYXRlciBvbikgb3IgdGhhdFxuICAgICAgICAgICAgICAgICAgICAgKiB0aGUgbGF5ZXIgZGlyZWN0bHkgZW5kcyB0aGUgaHR0cCByZXNwb25zZSwgc28gd2UnbGwgaG9vayBpbnRvIHRoZSBcImZpbmlzaFwiXG4gICAgICAgICAgICAgICAgICAgICAqIGV2ZW50IHRvIGhhbmRsZSB0aGUgbGF0ZXIgY2FzZS5cbiAgICAgICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgICAgIGlmICghc3Bhbkhhc0VuZGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXMub25jZSgnZmluaXNoJywgb25SZXNwb25zZUZpbmlzaCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgLy8gYGhhbmRsZWAgaXNuJ3QganVzdCBhIHJlZ3VsYXIgZnVuY3Rpb24gaW4gc29tZSBjYXNlcy4gSXQgYWxzbyBjb250YWluc1xuICAgICAgICAgICAgLy8gc29tZSBwcm9wZXJ0aWVzIGhvbGRpbmcgbWV0YWRhdGEgYW5kIHN0YXRlIHNvIHdlIG5lZWQgdG8gcHJveHkgdGhlbVxuICAgICAgICAgICAgLy8gdGhyb3VnaCB0aHJvdWdoIHBhdGNoZWQgZnVuY3Rpb25cbiAgICAgICAgICAgIC8vIHJlZjogaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMtY29udHJpYi9pc3N1ZXMvMTk1MFxuICAgICAgICAgICAgLy8gQWxzbyBzb21lIGFwcHMvbGlicyBkbyB0aGVpciBvd24gcGF0Y2hpbmcgYmVmb3JlIE9URUwgYW5kIGhhdmUgdGhlc2UgcHJvcGVydGllc1xuICAgICAgICAgICAgLy8gaW4gdGhlIHByb3B0b3R5cGUuIFNvIHdlIHVzZSBhIGBmb3IuLi5pbmAgbG9vcCB0byBnZXQgb3duIHByb3BlcnRpZXMgYW5kIGFsc29cbiAgICAgICAgICAgIC8vIGFueSBlbnVtZXJhYmxlIHByb3AgaW4gdGhlIHByb3RvdHlwZSBjaGFpblxuICAgICAgICAgICAgLy8gcmVmOiBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy1jb250cmliL2lzc3Vlcy8yMjcxXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBvcmlnaW5hbCkge1xuICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwYXRjaGVkLCBrZXksIHtcbiAgICAgICAgICAgICAgICAgICAgZ2V0KCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9yaWdpbmFsW2tleV07XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHNldCh2YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWxba2V5XSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHBhdGNoZWQ7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBfZ2V0U3Bhbk5hbWUoaW5mbywgZGVmYXVsdE5hbWUpIHtcbiAgICAgICAgY29uc3QgeyBzcGFuTmFtZUhvb2sgfSA9IHRoaXMuZ2V0Q29uZmlnKCk7XG4gICAgICAgIGlmICghKHNwYW5OYW1lSG9vayBpbnN0YW5jZW9mIEZ1bmN0aW9uKSkge1xuICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHROYW1lO1xuICAgICAgICB9XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4gc3Bhbk5hbWVIb29rKGluZm8sIGRlZmF1bHROYW1lKSA/PyBkZWZhdWx0TmFtZTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICBhcGlfMS5kaWFnLmVycm9yKCdleHByZXNzIGluc3RydW1lbnRhdGlvbjogZXJyb3IgY2FsbGluZyBzcGFuIG5hbWUgcmV3cml0ZSBob29rJywgZXJyKTtcbiAgICAgICAgICAgIHJldHVybiBkZWZhdWx0TmFtZTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmV4cG9ydHMuRXhwcmVzc0luc3RydW1lbnRhdGlvbiA9IEV4cHJlc3NJbnN0cnVtZW50YXRpb247XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbnN0cnVtZW50YXRpb24uanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/.pnpm/@opentelemetry+instrumentation-express@0.62.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-express/build/src/instrumentation.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/.pnpm/@opentelemetry+instrumentation-express@0.62.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-express/build/src/internal-types.js":
/*!***********************************************************************************************************************************************************************************!*\
!*** ./node_modules/.pnpm/@opentelemetry+instrumentation-express@0.62.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-express/build/src/internal-types.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._LAYERS_STORE_PROPERTY = exports.kLayerPatched = void 0;\n/**\n * This symbol is used to mark express layer as being already instrumented\n * since its possible to use a given layer multiple times (ex: middlewares)\n */\nexports.kLayerPatched = Symbol('express-layer-patched');\n/**\n * This const define where on the `request` object the Instrumentation will mount the\n * current stack of express layer.\n *\n * It is necessary because express doesn't store the different layers\n * (ie: middleware, router etc) that it called to get to the current layer.\n * Given that, the only way to know the route of a given layer is to\n * store the path of where each previous layer has been mounted.\n *\n * ex: bodyParser > auth middleware > /users router > get /:id\n * in this case the stack would be: [\"/users\", \"/:id\"]\n *\n * ex2: bodyParser > /api router > /v1 router > /users router > get /:id\n * stack: [\"/api\", \"/v1\", \"/users\", \":id\"]\n *\n */\nexports._LAYERS_STORE_PROPERTY = '__ot_middlewares';\n//# sourceMappingURL=internal-types.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvLnBucG0vQG9wZW50ZWxlbWV0cnkraW5zdHJ1bWVudGF0aW9uLWV4cHJlc3NAMC42Mi4wX0BvcGVudGVsZW1ldHJ5K2FwaUAxLjkuMS9ub2RlX21vZHVsZXMvQG9wZW50ZWxlbWV0cnkvaW5zdHJ1bWVudGF0aW9uLWV4cHJlc3MvYnVpbGQvc3JjL2ludGVybmFsLXR5cGVzLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOENBQTZDLEVBQUUsYUFBYSxFQUFDO0FBQzdELDhCQUE4QixHQUFHLHFCQUFxQjtBQUN0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4QjtBQUM5QiIsInNvdXJjZXMiOlsiL1VzZXJzL21hcmNtaW50ZWwvUHJvamVjdHMvZS10aWIuY29tL25vZGVfbW9kdWxlcy8ucG5wbS9Ab3BlbnRlbGVtZXRyeStpbnN0cnVtZW50YXRpb24tZXhwcmVzc0AwLjYyLjBfQG9wZW50ZWxlbWV0cnkrYXBpQDEuOS4xL25vZGVfbW9kdWxlcy9Ab3BlbnRlbGVtZXRyeS9pbnN0cnVtZW50YXRpb24tZXhwcmVzcy9idWlsZC9zcmMvaW50ZXJuYWwtdHlwZXMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG4vKlxuICogQ29weXJpZ2h0IFRoZSBPcGVuVGVsZW1ldHJ5IEF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5fTEFZRVJTX1NUT1JFX1BST1BFUlRZID0gZXhwb3J0cy5rTGF5ZXJQYXRjaGVkID0gdm9pZCAwO1xuLyoqXG4gKiBUaGlzIHN5bWJvbCBpcyB1c2VkIHRvIG1hcmsgZXhwcmVzcyBsYXllciBhcyBiZWluZyBhbHJlYWR5IGluc3RydW1lbnRlZFxuICogc2luY2UgaXRzIHBvc3NpYmxlIHRvIHVzZSBhIGdpdmVuIGxheWVyIG11bHRpcGxlIHRpbWVzIChleDogbWlkZGxld2FyZXMpXG4gKi9cbmV4cG9ydHMua0xheWVyUGF0Y2hlZCA9IFN5bWJvbCgnZXhwcmVzcy1sYXllci1wYXRjaGVkJyk7XG4vKipcbiAqIFRoaXMgY29uc3QgZGVmaW5lIHdoZXJlIG9uIHRoZSBgcmVxdWVzdGAgb2JqZWN0IHRoZSBJbnN0cnVtZW50YXRpb24gd2lsbCBtb3VudCB0aGVcbiAqIGN1cnJlbnQgc3RhY2sgb2YgZXhwcmVzcyBsYXllci5cbiAqXG4gKiBJdCBpcyBuZWNlc3NhcnkgYmVjYXVzZSBleHByZXNzIGRvZXNuJ3Qgc3RvcmUgdGhlIGRpZmZlcmVudCBsYXllcnNcbiAqIChpZTogbWlkZGxld2FyZSwgcm91dGVyIGV0YykgdGhhdCBpdCBjYWxsZWQgdG8gZ2V0IHRvIHRoZSBjdXJyZW50IGxheWVyLlxuICogR2l2ZW4gdGhhdCwgdGhlIG9ubHkgd2F5IHRvIGtub3cgdGhlIHJvdXRlIG9mIGEgZ2l2ZW4gbGF5ZXIgaXMgdG9cbiAqIHN0b3JlIHRoZSBwYXRoIG9mIHdoZXJlIGVhY2ggcHJldmlvdXMgbGF5ZXIgaGFzIGJlZW4gbW91bnRlZC5cbiAqXG4gKiBleDogYm9keVBhcnNlciA+IGF1dGggbWlkZGxld2FyZSA+IC91c2VycyByb3V0ZXIgPiBnZXQgLzppZFxuICogIGluIHRoaXMgY2FzZSB0aGUgc3RhY2sgd291bGQgYmU6IFtcIi91c2Vyc1wiLCBcIi86aWRcIl1cbiAqXG4gKiBleDI6IGJvZHlQYXJzZXIgPiAvYXBpIHJvdXRlciA+IC92MSByb3V0ZXIgPiAvdXNlcnMgcm91dGVyID4gZ2V0IC86aWRcbiAqICBzdGFjazogW1wiL2FwaVwiLCBcIi92MVwiLCBcIi91c2Vyc1wiLCBcIjppZFwiXVxuICpcbiAqL1xuZXhwb3J0cy5fTEFZRVJTX1NUT1JFX1BST1BFUlRZID0gJ19fb3RfbWlkZGxld2FyZXMnO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW50ZXJuYWwtdHlwZXMuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/.pnpm/@opentelemetry+instrumentation-express@0.62.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-express/build/src/internal-types.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/.pnpm/@opentelemetry+instrumentation-express@0.62.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-express/build/src/utils.js":
/*!**************************************************************************************************************************************************************************!*\
!*** ./node_modules/.pnpm/@opentelemetry+instrumentation-express@0.62.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-express/build/src/utils.js ***!
\**************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
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.getActualMatchedRoute = exports.getConstructedRoute = exports.getLayerPath = exports.asErrorAndMessage = exports.isLayerIgnored = exports.getLayerMetadata = exports.getRouterPath = exports.storeLayerPath = void 0;\nconst ExpressLayerType_1 = __webpack_require__(/*! ./enums/ExpressLayerType */ \"(rsc)/./node_modules/.pnpm/@opentelemetry+instrumentation-express@0.62.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-express/build/src/enums/ExpressLayerType.js\");\nconst AttributeNames_1 = __webpack_require__(/*! ./enums/AttributeNames */ \"(rsc)/./node_modules/.pnpm/@opentelemetry+instrumentation-express@0.62.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-express/build/src/enums/AttributeNames.js\");\nconst internal_types_1 = __webpack_require__(/*! ./internal-types */ \"(rsc)/./node_modules/.pnpm/@opentelemetry+instrumentation-express@0.62.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-express/build/src/internal-types.js\");\n/**\n * Store layers path in the request to be able to construct route later\n * @param request The request where\n * @param [value] the value to push into the array\n */\nconst storeLayerPath = (request, value) => {\n if (Array.isArray(request[internal_types_1._LAYERS_STORE_PROPERTY]) === false) {\n Object.defineProperty(request, internal_types_1._LAYERS_STORE_PROPERTY, {\n enumerable: false,\n value: [],\n });\n }\n if (value === undefined)\n return { isLayerPathStored: false };\n request[internal_types_1._LAYERS_STORE_PROPERTY].push(value);\n return { isLayerPathStored: true };\n};\nexports.storeLayerPath = storeLayerPath;\n/**\n * Recursively search the router path from layer stack\n * @param path The path to reconstruct\n * @param layer The layer to reconstruct from\n * @returns The reconstructed path\n */\nconst getRouterPath = (path, layer) => {\n const stackLayer = layer.handle?.stack?.[0];\n if (stackLayer?.route?.path) {\n return `${path}${stackLayer.route.path}`;\n }\n if (stackLayer?.handle?.stack) {\n return (0, exports.getRouterPath)(path, stackLayer);\n }\n return path;\n};\nexports.getRouterPath = getRouterPath;\n/**\n * Parse express layer context to retrieve a name and attributes.\n * @param route The route of the layer\n * @param layer Express layer\n * @param [layerPath] if present, the path on which the layer has been mounted\n */\nconst getLayerMetadata = (route, layer, layerPath) => {\n if (layer.name === 'router') {\n const maybeRouterPath = (0, exports.getRouterPath)('', layer);\n const extractedRouterPath = maybeRouterPath\n ? maybeRouterPath\n : layerPath || route || '/';\n return {\n attributes: {\n [AttributeNames_1.AttributeNames.EXPRESS_NAME]: extractedRouterPath,\n [AttributeNames_1.AttributeNames.EXPRESS_TYPE]: ExpressLayerType_1.ExpressLayerType.ROUTER,\n },\n name: `router - ${extractedRouterPath}`,\n };\n }\n else if (layer.name === 'bound dispatch' || layer.name === 'handle') {\n return {\n attributes: {\n [AttributeNames_1.AttributeNames.EXPRESS_NAME]: (route || layerPath) ?? 'request handler',\n [AttributeNames_1.AttributeNames.EXPRESS_TYPE]: ExpressLayerType_1.ExpressLayerType.REQUEST_HANDLER,\n },\n name: `request handler${layer.path ? ` - ${route || layerPath}` : ''}`,\n };\n }\n else {\n return {\n attributes: {\n [AttributeNames_1.AttributeNames.EXPRESS_NAME]: layer.name,\n [AttributeNames_1.AttributeNames.EXPRESS_TYPE]: ExpressLayerType_1.ExpressLayerType.MIDDLEWARE,\n },\n name: `middleware - ${layer.name}`,\n };\n }\n};\nexports.getLayerMetadata = getLayerMetadata;\n/**\n * Check whether the given obj match pattern\n * @param constant e.g URL of request\n * @param obj obj to inspect\n * @param pattern Match pattern\n */\nconst satisfiesPattern = (constant, pattern) => {\n if (typeof pattern === 'string') {\n return pattern === constant;\n }\n else if (pattern instanceof RegExp) {\n return pattern.test(constant);\n }\n else if (typeof pattern === 'function') {\n return pattern(constant);\n }\n else {\n throw new TypeError('Pattern is in unsupported datatype');\n }\n};\n/**\n * Check whether the given request is ignored by configuration\n * It will not re-throw exceptions from `list` provided by the client\n * @param constant e.g URL of request\n * @param [list] List of ignore patterns\n * @param [onException] callback for doing something when an exception has\n * occurred\n */\nconst isLayerIgnored = (name, type, config) => {\n if (Array.isArray(config?.ignoreLayersType) &&\n config?.ignoreLayersType?.includes(type)) {\n return true;\n }\n if (Array.isArray(config?.ignoreLayers) === false)\n return false;\n try {\n for (const pattern of config.ignoreLayers) {\n if (satisfiesPattern(name, pattern)) {\n return true;\n }\n }\n }\n catch (e) {\n /* catch block*/\n }\n return false;\n};\nexports.isLayerIgnored = isLayerIgnored;\n/**\n * Converts a user-provided error value into an error and error message pair\n *\n * @param error - User-provided error value\n * @returns Both an Error or string representation of the value and an error message\n */\nconst asErrorAndMessage = (error) => error instanceof Error\n ? [error, error.message]\n : [String(error), String(error)];\nexports.asErrorAndMessage = asErrorAndMessage;\n/**\n * Extracts the layer path from the route arguments\n *\n * @param args - Arguments of the route\n * @returns The layer path\n */\nconst getLayerPath = (args) => {\n const firstArg = args[0];\n if (Array.isArray(firstArg)) {\n return firstArg.map(arg => extractLayerPathSegment(arg) || '').join(',');\n }\n return extractLayerPathSegment(firstArg);\n};\nexports.getLayerPath = getLayerPath;\nconst extractLayerPathSegment = (arg) => {\n if (typeof arg === 'string') {\n return arg;\n }\n if (arg instanceof RegExp || typeof arg === 'number') {\n return arg.toString();\n }\n return;\n};\nfunction getConstructedRoute(req) {\n const layersStore = Array.isArray(req[internal_types_1._LAYERS_STORE_PROPERTY])\n ? req[internal_types_1._LAYERS_STORE_PROPERTY]\n : [];\n const meaningfulPaths = layersStore.filter(path => path !== '/' && path !== '/*');\n if (meaningfulPaths.length === 1 && meaningfulPaths[0] === '*') {\n return '*';\n }\n // Join parts and remove duplicate slashes\n return meaningfulPaths.join('').replace(/\\/{2,}/g, '/');\n}\nexports.getConstructedRoute = getConstructedRoute;\n/**\n * Extracts the actual matched route from Express request for OpenTelemetry instrumentation.\n * Returns the route that should be used as the http.route attribute.\n *\n * @param req - The Express request object with layers store\n * @param layersStoreProperty - The property name where layer paths are stored\n * @returns The matched route string or undefined if no valid route is found\n */\nfunction getActualMatchedRoute(req) {\n const layersStore = Array.isArray(req[internal_types_1._LAYERS_STORE_PROPERTY])\n ? req[internal_types_1._LAYERS_STORE_PROPERTY]\n : [];\n // If no layers are stored, no route can be determined\n if (layersStore.length === 0) {\n return undefined;\n }\n // Handle root path case - if all paths are root, only return root if originalUrl is also root\n // The layer store also includes root paths in case a non-existing url was requested\n if (layersStore.every(path => path === '/')) {\n return req.originalUrl === '/' ? '/' : undefined;\n }\n const constructedRoute = getConstructedRoute(req);\n if (constructedRoute === '*') {\n return constructedRoute;\n }\n // For RegExp routes or route arrays, return the constructed route\n // This handles the case where the route is defined using RegExp or an array\n if (constructedRoute.includes('/') &&\n (constructedRoute.includes(',') ||\n constructedRoute.includes('\\\\') ||\n constructedRoute.includes('*') ||\n constructedRoute.includes('['))) {\n return constructedRoute;\n }\n // Ensure route starts with '/' if it doesn't already\n const normalizedRoute = constructedRoute.startsWith('/')\n ? constructedRoute\n : `/${constructedRoute}`;\n // Validate that this appears to be a matched route\n // A route is considered matched if:\n // 1. We have a constructed route\n // 2. The original URL matches or starts with our route pattern\n const isValidRoute = normalizedRoute.length > 0 &&\n (req.originalUrl === normalizedRoute ||\n req.originalUrl.startsWith(normalizedRoute) ||\n isRoutePattern(normalizedRoute));\n return isValidRoute ? normalizedRoute : undefined;\n}\nexports.getActualMatchedRoute = getActualMatchedRoute;\n/**\n * Checks if a route contains parameter patterns (e.g., :id, :userId)\n * which are valid even if they don't exactly match the original URL\n */\nfunction isRoutePattern(route) {\n return route.includes(':') || route.includes('*');\n}\n//# sourceMappingURL=utils.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvLnBucG0vQG9wZW50ZWxlbWV0cnkraW5zdHJ1bWVudGF0aW9uLWV4cHJlc3NAMC42Mi4wX0BvcGVudGVsZW1ldHJ5K2FwaUAxLjkuMS9ub2RlX21vZHVsZXMvQG9wZW50ZWxlbWV0cnkvaW5zdHJ1bWVudGF0aW9uLWV4cHJlc3MvYnVpbGQvc3JjL3V0aWxzLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOENBQTZDLEVBQUUsYUFBYSxFQUFDO0FBQzdELDZCQUE2QixHQUFHLDJCQUEyQixHQUFHLG9CQUFvQixHQUFHLHlCQUF5QixHQUFHLHNCQUFzQixHQUFHLHdCQUF3QixHQUFHLHFCQUFxQixHQUFHLHNCQUFzQjtBQUNuTiwyQkFBMkIsbUJBQU8sQ0FBQywyTkFBMEI7QUFDN0QseUJBQXlCLG1CQUFPLENBQUMsdU5BQXdCO0FBQ3pELHlCQUF5QixtQkFBTyxDQUFDLDJNQUFrQjtBQUNuRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0EsYUFBYTtBQUNiO0FBQ0Esc0JBQXNCO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQixLQUFLLEVBQUUsc0JBQXNCO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYiw4QkFBOEIsb0JBQW9CO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiLG9DQUFvQyxtQkFBbUIsbUJBQW1CLE9BQU87QUFDakY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2Isa0NBQWtDLFdBQVc7QUFDN0M7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0I7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdEQUFnRCxHQUFHO0FBQ25EO0FBQ0EsMkJBQTJCO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxpQkFBaUI7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkI7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsiL1VzZXJzL21hcmNtaW50ZWwvUHJvamVjdHMvZS10aWIuY29tL25vZGVfbW9kdWxlcy8ucG5wbS9Ab3BlbnRlbGVtZXRyeStpbnN0cnVtZW50YXRpb24tZXhwcmVzc0AwLjYyLjBfQG9wZW50ZWxlbWV0cnkrYXBpQDEuOS4xL25vZGVfbW9kdWxlcy9Ab3BlbnRlbGVtZXRyeS9pbnN0cnVtZW50YXRpb24tZXhwcmVzcy9idWlsZC9zcmMvdXRpbHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG4vKlxuICogQ29weXJpZ2h0IFRoZSBPcGVuVGVsZW1ldHJ5IEF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5nZXRBY3R1YWxNYXRjaGVkUm91dGUgPSBleHBvcnRzLmdldENvbnN0cnVjdGVkUm91dGUgPSBleHBvcnRzLmdldExheWVyUGF0aCA9IGV4cG9ydHMuYXNFcnJvckFuZE1lc3NhZ2UgPSBleHBvcnRzLmlzTGF5ZXJJZ25vcmVkID0gZXhwb3J0cy5nZXRMYXllck1ldGFkYXRhID0gZXhwb3J0cy5nZXRSb3V0ZXJQYXRoID0gZXhwb3J0cy5zdG9yZUxheWVyUGF0aCA9IHZvaWQgMDtcbmNvbnN0IEV4cHJlc3NMYXllclR5cGVfMSA9IHJlcXVpcmUoXCIuL2VudW1zL0V4cHJlc3NMYXllclR5cGVcIik7XG5jb25zdCBBdHRyaWJ1dGVOYW1lc18xID0gcmVxdWlyZShcIi4vZW51bXMvQXR0cmlidXRlTmFtZXNcIik7XG5jb25zdCBpbnRlcm5hbF90eXBlc18xID0gcmVxdWlyZShcIi4vaW50ZXJuYWwtdHlwZXNcIik7XG4vKipcbiAqIFN0b3JlIGxheWVycyBwYXRoIGluIHRoZSByZXF1ZXN0IHRvIGJlIGFibGUgdG8gY29uc3RydWN0IHJvdXRlIGxhdGVyXG4gKiBAcGFyYW0gcmVxdWVzdCBUaGUgcmVxdWVzdCB3aGVyZVxuICogQHBhcmFtIFt2YWx1ZV0gdGhlIHZhbHVlIHRvIHB1c2ggaW50byB0aGUgYXJyYXlcbiAqL1xuY29uc3Qgc3RvcmVMYXllclBhdGggPSAocmVxdWVzdCwgdmFsdWUpID0+IHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShyZXF1ZXN0W2ludGVybmFsX3R5cGVzXzEuX0xBWUVSU19TVE9SRV9QUk9QRVJUWV0pID09PSBmYWxzZSkge1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocmVxdWVzdCwgaW50ZXJuYWxfdHlwZXNfMS5fTEFZRVJTX1NUT1JFX1BST1BFUlRZLCB7XG4gICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgIHZhbHVlOiBbXSxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKVxuICAgICAgICByZXR1cm4geyBpc0xheWVyUGF0aFN0b3JlZDogZmFsc2UgfTtcbiAgICByZXF1ZXN0W2ludGVybmFsX3R5cGVzXzEuX0xBWUVSU19TVE9SRV9QUk9QRVJUWV0ucHVzaCh2YWx1ZSk7XG4gICAgcmV0dXJuIHsgaXNMYXllclBhdGhTdG9yZWQ6IHRydWUgfTtcbn07XG5leHBvcnRzLnN0b3JlTGF5ZXJQYXRoID0gc3RvcmVMYXllclBhdGg7XG4vKipcbiAqIFJlY3Vyc2l2ZWx5IHNlYXJjaCB0aGUgcm91dGVyIHBhdGggZnJvbSBsYXllciBzdGFja1xuICogQHBhcmFtIHBhdGggVGhlIHBhdGggdG8gcmVjb25zdHJ1Y3RcbiAqIEBwYXJhbSBsYXllciBUaGUgbGF5ZXIgdG8gcmVjb25zdHJ1Y3QgZnJvbVxuICogQHJldHVybnMgVGhlIHJlY29uc3RydWN0ZWQgcGF0aFxuICovXG5jb25zdCBnZXRSb3V0ZXJQYXRoID0gKHBhdGgsIGxheWVyKSA9PiB7XG4gICAgY29uc3Qgc3RhY2tMYXllciA9IGxheWVyLmhhbmRsZT8uc3RhY2s/LlswXTtcbiAgICBpZiAoc3RhY2tMYXllcj8ucm91dGU/LnBhdGgpIHtcbiAgICAgICAgcmV0dXJuIGAke3BhdGh9JHtzdGFja0xheWVyLnJvdXRlLnBhdGh9YDtcbiAgICB9XG4gICAgaWYgKHN0YWNrTGF5ZXI/LmhhbmRsZT8uc3RhY2spIHtcbiAgICAgICAgcmV0dXJuICgwLCBleHBvcnRzLmdldFJvdXRlclBhdGgpKHBhdGgsIHN0YWNrTGF5ZXIpO1xuICAgIH1cbiAgICByZXR1cm4gcGF0aDtcbn07XG5leHBvcnRzLmdldFJvdXRlclBhdGggPSBnZXRSb3V0ZXJQYXRoO1xuLyoqXG4gKiBQYXJzZSBleHByZXNzIGxheWVyIGNvbnRleHQgdG8gcmV0cmlldmUgYSBuYW1lIGFuZCBhdHRyaWJ1dGVzLlxuICogQHBhcmFtIHJvdXRlIFRoZSByb3V0ZSBvZiB0aGUgbGF5ZXJcbiAqIEBwYXJhbSBsYXllciBFeHByZXNzIGxheWVyXG4gKiBAcGFyYW0gW2xheWVyUGF0aF0gaWYgcHJlc2VudCwgdGhlIHBhdGggb24gd2hpY2ggdGhlIGxheWVyIGhhcyBiZWVuIG1vdW50ZWRcbiAqL1xuY29uc3QgZ2V0TGF5ZXJNZXRhZGF0YSA9IChyb3V0ZSwgbGF5ZXIsIGxheWVyUGF0aCkgPT4ge1xuICAgIGlmIChsYXllci5uYW1lID09PSAncm91dGVyJykge1xuICAgICAgICBjb25zdCBtYXliZVJvdXRlclBhdGggPSAoMCwgZXhwb3J0cy5nZXRSb3V0ZXJQYXRoKSgnJywgbGF5ZXIpO1xuICAgICAgICBjb25zdCBleHRyYWN0ZWRSb3V0ZXJQYXRoID0gbWF5YmVSb3V0ZXJQYXRoXG4gICAgICAgICAgICA/IG1heWJlUm91dGVyUGF0aFxuICAgICAgICAgICAgOiBsYXllclBhdGggfHwgcm91dGUgfHwgJy8nO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICAgICAgICAgIFtBdHRyaWJ1dGVOYW1lc18xLkF0dHJpYnV0ZU5hbWVzLkVYUFJFU1NfTkFNRV06IGV4dHJhY3RlZFJvdXRlclBhdGgsXG4gICAgICAgICAgICAgICAgW0F0dHJpYnV0ZU5hbWVzXzEuQXR0cmlidXRlTmFtZXMuRVhQUkVTU19UWVBFXTogRXhwcmVzc0xheWVyVHlwZV8xLkV4cHJlc3NMYXllclR5cGUuUk9VVEVSLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5hbWU6IGByb3V0ZXIgLSAke2V4dHJhY3RlZFJvdXRlclBhdGh9YCxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgZWxzZSBpZiAobGF5ZXIubmFtZSA9PT0gJ2JvdW5kIGRpc3BhdGNoJyB8fCBsYXllci5uYW1lID09PSAnaGFuZGxlJykge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICAgICAgICAgIFtBdHRyaWJ1dGVOYW1lc18xLkF0dHJpYnV0ZU5hbWVzLkVYUFJFU1NfTkFNRV06IChyb3V0ZSB8fCBsYXllclBhdGgpID8/ICdyZXF1ZXN0IGhhbmRsZXInLFxuICAgICAgICAgICAgICAgIFtBdHRyaWJ1dGVOYW1lc18xLkF0dHJpYnV0ZU5hbWVzLkVYUFJFU1NfVFlQRV06IEV4cHJlc3NMYXllclR5cGVfMS5FeHByZXNzTGF5ZXJUeXBlLlJFUVVFU1RfSEFORExFUixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuYW1lOiBgcmVxdWVzdCBoYW5kbGVyJHtsYXllci5wYXRoID8gYCAtICR7cm91dGUgfHwgbGF5ZXJQYXRofWAgOiAnJ31gLFxuICAgICAgICB9O1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICAgICAgICBbQXR0cmlidXRlTmFtZXNfMS5BdHRyaWJ1dGVOYW1lcy5FWFBSRVNTX05BTUVdOiBsYXllci5uYW1lLFxuICAgICAgICAgICAgICAgIFtBdHRyaWJ1dGVOYW1lc18xLkF0dHJpYnV0ZU5hbWVzLkVYUFJFU1NfVFlQRV06IEV4cHJlc3NMYXllclR5cGVfMS5FeHByZXNzTGF5ZXJUeXBlLk1JRERMRVdBUkUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbmFtZTogYG1pZGRsZXdhcmUgLSAke2xheWVyLm5hbWV9YCxcbiAgICAgICAgfTtcbiAgICB9XG59O1xuZXhwb3J0cy5nZXRMYXllck1ldGFkYXRhID0gZ2V0TGF5ZXJNZXRhZGF0YTtcbi8qKlxuICogQ2hlY2sgd2hldGhlciB0aGUgZ2l2ZW4gb2JqIG1hdGNoIHBhdHRlcm5cbiAqIEBwYXJhbSBjb25zdGFudCBlLmcgVVJMIG9mIHJlcXVlc3RcbiAqIEBwYXJhbSBvYmogb2JqIHRvIGluc3BlY3RcbiAqIEBwYXJhbSBwYXR0ZXJuIE1hdGNoIHBhdHRlcm5cbiAqL1xuY29uc3Qgc2F0aXNmaWVzUGF0dGVybiA9IChjb25zdGFudCwgcGF0dGVybikgPT4ge1xuICAgIGlmICh0eXBlb2YgcGF0dGVybiA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIHBhdHRlcm4gPT09IGNvbnN0YW50O1xuICAgIH1cbiAgICBlbHNlIGlmIChwYXR0ZXJuIGluc3RhbmNlb2YgUmVnRXhwKSB7XG4gICAgICAgIHJldHVybiBwYXR0ZXJuLnRlc3QoY29uc3RhbnQpO1xuICAgIH1cbiAgICBlbHNlIGlmICh0eXBlb2YgcGF0dGVybiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gcGF0dGVybihjb25zdGFudCk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdQYXR0ZXJuIGlzIGluIHVuc3VwcG9ydGVkIGRhdGF0eXBlJyk7XG4gICAgfVxufTtcbi8qKlxuICogQ2hlY2sgd2hldGhlciB0aGUgZ2l2ZW4gcmVxdWVzdCBpcyBpZ25vcmVkIGJ5IGNvbmZpZ3VyYXRpb25cbiAqIEl0IHdpbGwgbm90IHJlLXRocm93IGV4Y2VwdGlvbnMgZnJvbSBgbGlzdGAgcHJvdmlkZWQgYnkgdGhlIGNsaWVudFxuICogQHBhcmFtIGNvbnN0YW50IGUuZyBVUkwgb2YgcmVxdWVzdFxuICogQHBhcmFtIFtsaXN0XSBMaXN0IG9mIGlnbm9yZSBwYXR0ZXJuc1xuICogQHBhcmFtIFtvbkV4Y2VwdGlvbl0gY2FsbGJhY2sgZm9yIGRvaW5nIHNvbWV0aGluZyB3aGVuIGFuIGV4Y2VwdGlvbiBoYXNcbiAqICAgICBvY2N1cnJlZFxuICovXG5jb25zdCBpc0xheWVySWdub3JlZCA9IChuYW1lLCB0eXBlLCBjb25maWcpID0+IHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShjb25maWc/Lmlnbm9yZUxheWVyc1R5cGUpICYmXG4gICAgICAgIGNvbmZpZz8uaWdub3JlTGF5ZXJzVHlwZT8uaW5jbHVkZXModHlwZSkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmIChBcnJheS5pc0FycmF5KGNvbmZpZz8uaWdub3JlTGF5ZXJzKSA9PT0gZmFsc2UpXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB0cnkge1xuICAgICAgICBmb3IgKGNvbnN0IHBhdHRlcm4gb2YgY29uZmlnLmlnbm9yZUxheWVycykge1xuICAgICAgICAgICAgaWYgKHNhdGlzZmllc1BhdHRlcm4obmFtZSwgcGF0dGVybikpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBjYXRjaCAoZSkge1xuICAgICAgICAvKiBjYXRjaCBibG9jayovXG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbn07XG5leHBvcnRzLmlzTGF5ZXJJZ25vcmVkID0gaXNMYXllcklnbm9yZWQ7XG4vKipcbiAqIENvbnZlcnRzIGEgdXNlci1wcm92aWRlZCBlcnJvciB2YWx1ZSBpbnRvIGFuIGVycm9yIGFuZCBlcnJvciBtZXNzYWdlIHBhaXJcbiAqXG4gKiBAcGFyYW0gZXJyb3IgLSBVc2VyLXByb3ZpZGVkIGVycm9yIHZhbHVlXG4gKiBAcmV0dXJucyBCb3RoIGFuIEVycm9yIG9yIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgdmFsdWUgYW5kIGFuIGVycm9yIG1lc3NhZ2VcbiAqL1xuY29uc3QgYXNFcnJvckFuZE1lc3NhZ2UgPSAoZXJyb3IpID0+IGVycm9yIGluc3RhbmNlb2YgRXJyb3JcbiAgICA/IFtlcnJvciwgZXJyb3IubWVzc2FnZV1cbiAgICA6IFtTdHJpbmcoZXJyb3IpLCBTdHJpbmcoZXJyb3IpXTtcbmV4cG9ydHMuYXNFcnJvckFuZE1lc3NhZ2UgPSBhc0Vycm9yQW5kTWVzc2FnZTtcbi8qKlxuICogRXh0cmFjdHMgdGhlIGxheWVyIHBhdGggZnJvbSB0aGUgcm91dGUgYXJndW1lbnRzXG4gKlxuICogQHBhcmFtIGFyZ3MgLSBBcmd1bWVudHMgb2YgdGhlIHJvdXRlXG4gKiBAcmV0dXJucyBUaGUgbGF5ZXIgcGF0aFxuICovXG5jb25zdCBnZXRMYXllclBhdGggPSAoYXJncykgPT4ge1xuICAgIGNvbnN0IGZpcnN0QXJnID0gYXJnc1swXTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShmaXJzdEFyZykpIHtcbiAgICAgICAgcmV0dXJuIGZpcnN0QXJnLm1hcChhcmcgPT4gZXh0cmFjdExheWVyUGF0aFNlZ21lbnQoYXJnKSB8fCAnJykuam9pbignLCcpO1xuICAgIH1cbiAgICByZXR1cm4gZXh0cmFjdExheWVyUGF0aFNlZ21lbnQoZmlyc3RBcmcpO1xufTtcbmV4cG9ydHMuZ2V0TGF5ZXJQYXRoID0gZ2V0TGF5ZXJQYXRoO1xuY29uc3QgZXh0cmFjdExheWVyUGF0aFNlZ21lbnQgPSAoYXJnKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBhcmcgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiBhcmc7XG4gICAgfVxuICAgIGlmIChhcmcgaW5zdGFuY2VvZiBSZWdFeHAgfHwgdHlwZW9mIGFyZyA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgcmV0dXJuIGFyZy50b1N0cmluZygpO1xuICAgIH1cbiAgICByZXR1cm47XG59O1xuZnVuY3Rpb24gZ2V0Q29uc3RydWN0ZWRSb3V0ZShyZXEpIHtcbiAgICBjb25zdCBsYXllcnNTdG9yZSA9IEFycmF5LmlzQXJyYXkocmVxW2ludGVybmFsX3R5cGVzXzEuX0xBWUVSU19TVE9SRV9QUk9QRVJUWV0pXG4gICAgICAgID8gcmVxW2ludGVybmFsX3R5cGVzXzEuX0xBWUVSU19TVE9SRV9QUk9QRVJUWV1cbiAgICAgICAgOiBbXTtcbiAgICBjb25zdCBtZWFuaW5nZnVsUGF0aHMgPSBsYXllcnNTdG9yZS5maWx0ZXIocGF0aCA9PiBwYXRoICE9PSAnLycgJiYgcGF0aCAhPT0gJy8qJyk7XG4gICAgaWYgKG1lYW5pbmdmdWxQYXRocy5sZW5ndGggPT09IDEgJiYgbWVhbmluZ2Z1bFBhdGhzWzBdID09PSAnKicpIHtcbiAgICAgICAgcmV0dXJuICcqJztcbiAgICB9XG4gICAgLy8gSm9pbiBwYXJ0cyBhbmQgcmVtb3ZlIGR1cGxpY2F0ZSBzbGFzaGVzXG4gICAgcmV0dXJuIG1lYW5pbmdmdWxQYXRocy5qb2luKCcnKS5yZXBsYWNlKC9cXC97Mix9L2csICcvJyk7XG59XG5leHBvcnRzLmdldENvbnN0cnVjdGVkUm91dGUgPSBnZXRDb25zdHJ1Y3RlZFJvdXRlO1xuLyoqXG4gKiBFeHRyYWN0cyB0aGUgYWN0dWFsIG1hdGNoZWQgcm91dGUgZnJvbSBFeHByZXNzIHJlcXVlc3QgZm9yIE9wZW5UZWxlbWV0cnkgaW5zdHJ1bWVudGF0aW9uLlxuICogUmV0dXJucyB0aGUgcm91dGUgdGhhdCBzaG91bGQgYmUgdXNlZCBhcyB0aGUgaHR0cC5yb3V0ZSBhdHRyaWJ1dGUuXG4gKlxuICogQHBhcmFtIHJlcSAtIFRoZSBFeHByZXNzIHJlcXVlc3Qgb2JqZWN0IHdpdGggbGF5ZXJzIHN0b3JlXG4gKiBAcGFyYW0gbGF5ZXJzU3RvcmVQcm9wZXJ0eSAtIFRoZSBwcm9wZXJ0eSBuYW1lIHdoZXJlIGxheWVyIHBhdGhzIGFyZSBzdG9yZWRcbiAqIEByZXR1cm5zIFRoZSBtYXRjaGVkIHJvdXRlIHN0cmluZyBvciB1bmRlZmluZWQgaWYgbm8gdmFsaWQgcm91dGUgaXMgZm91bmRcbiAqL1xuZnVuY3Rpb24gZ2V0QWN0dWFsTWF0Y2hlZFJvdXRlKHJlcSkge1xuICAgIGNvbnN0IGxheWVyc1N0b3JlID0gQXJyYXkuaXNBcnJheShyZXFbaW50ZXJuYWxfdHlwZXNfMS5fTEFZRVJTX1NUT1JFX1BST1BFUlRZXSlcbiAgICAgICAgPyByZXFbaW50ZXJuYWxfdHlwZXNfMS5fTEFZRVJTX1NUT1JFX1BST1BFUlRZXVxuICAgICAgICA6IFtdO1xuICAgIC8vIElmIG5vIGxheWVycyBhcmUgc3RvcmVkLCBubyByb3V0ZSBjYW4gYmUgZGV0ZXJtaW5lZFxuICAgIGlmIChsYXllcnNTdG9yZS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgLy8gSGFuZGxlIHJvb3QgcGF0aCBjYXNlIC0gaWYgYWxsIHBhdGhzIGFyZSByb290LCBvbmx5IHJldHVybiByb290IGlmIG9yaWdpbmFsVXJsIGlzIGFsc28gcm9vdFxuICAgIC8vIFRoZSBsYXllciBzdG9yZSBhbHNvIGluY2x1ZGVzIHJvb3QgcGF0aHMgaW4gY2FzZSBhIG5vbi1leGlzdGluZyB1cmwgd2FzIHJlcXVlc3RlZFxuICAgIGlmIChsYXllcnNTdG9yZS5ldmVyeShwYXRoID0+IHBhdGggPT09ICcvJykpIHtcbiAgICAgICAgcmV0dXJuIHJlcS5vcmlnaW5hbFVybCA9PT0gJy8nID8gJy8nIDogdW5kZWZpbmVkO1xuICAgIH1cbiAgICBjb25zdCBjb25zdHJ1Y3RlZFJvdXRlID0gZ2V0Q29uc3RydWN0ZWRSb3V0ZShyZXEpO1xuICAgIGlmIChjb25zdHJ1Y3RlZFJvdXRlID09PSAnKicpIHtcbiAgICAgICAgcmV0dXJuIGNvbnN0cnVjdGVkUm91dGU7XG4gICAgfVxuICAgIC8vIEZvciBSZWdFeHAgcm91dGVzIG9yIHJvdXRlIGFycmF5cywgcmV0dXJuIHRoZSBjb25zdHJ1Y3RlZCByb3V0ZVxuICAgIC8vIFRoaXMgaGFuZGxlcyB0aGUgY2FzZSB3aGVyZSB0aGUgcm91dGUgaXMgZGVmaW5lZCB1c2luZyBSZWdFeHAgb3IgYW4gYXJyYXlcbiAgICBpZiAoY29uc3RydWN0ZWRSb3V0ZS5pbmNsdWRlcygnLycpICYmXG4gICAgICAgIChjb25zdHJ1Y3RlZFJvdXRlLmluY2x1ZGVzKCcsJykgfHxcbiAgICAgICAgICAgIGNvbnN0cnVjdGVkUm91dGUuaW5jbHVkZXMoJ1xcXFwnKSB8fFxuICAgICAgICAgICAgY29uc3RydWN0ZWRSb3V0ZS5pbmNsdWRlcygnKicpIHx8XG4gICAgICAgICAgICBjb25zdHJ1Y3RlZFJvdXRlLmluY2x1ZGVzKCdbJykpKSB7XG4gICAgICAgIHJldHVybiBjb25zdHJ1Y3RlZFJvdXRlO1xuICAgIH1cbiAgICAvLyBFbnN1cmUgcm91dGUgc3RhcnRzIHdpdGggJy8nIGlmIGl0IGRvZXNuJ3QgYWxyZWFkeVxuICAgIGNvbnN0IG5vcm1hbGl6ZWRSb3V0ZSA9IGNvbnN0cnVjdGVkUm91dGUuc3RhcnRzV2l0aCgnLycpXG4gICAgICAgID8gY29uc3RydWN0ZWRSb3V0ZVxuICAgICAgICA6IGAvJHtjb25zdHJ1Y3RlZFJvdXRlfWA7XG4gICAgLy8gVmFsaWRhdGUgdGhhdCB0aGlzIGFwcGVhcnMgdG8gYmUgYSBtYXRjaGVkIHJvdXRlXG4gICAgLy8gQSByb3V0ZSBpcyBjb25zaWRlcmVkIG1hdGNoZWQgaWY6XG4gICAgLy8gMS4gV2UgaGF2ZSBhIGNvbnN0cnVjdGVkIHJvdXRlXG4gICAgLy8gMi4gVGhlIG9yaWdpbmFsIFVSTCBtYXRjaGVzIG9yIHN0YXJ0cyB3aXRoIG91ciByb3V0ZSBwYXR0ZXJuXG4gICAgY29uc3QgaXNWYWxpZFJvdXRlID0gbm9ybWFsaXplZFJvdXRlLmxlbmd0aCA+IDAgJiZcbiAgICAgICAgKHJlcS5vcmlnaW5hbFVybCA9PT0gbm9ybWFsaXplZFJvdXRlIHx8XG4gICAgICAgICAgICByZXEub3JpZ2luYWxVcmwuc3RhcnRzV2l0aChub3JtYWxpemVkUm91dGUpIHx8XG4gICAgICAgICAgICBpc1JvdXRlUGF0dGVybihub3JtYWxpemVkUm91dGUpKTtcbiAgICByZXR1cm4gaXNWYWxpZFJvdXRlID8gbm9ybWFsaXplZFJvdXRlIDogdW5kZWZpbmVkO1xufVxuZXhwb3J0cy5nZXRBY3R1YWxNYXRjaGVkUm91dGUgPSBnZXRBY3R1YWxNYXRjaGVkUm91dGU7XG4vKipcbiAqIENoZWNrcyBpZiBhIHJvdXRlIGNvbnRhaW5zIHBhcmFtZXRlciBwYXR0ZXJucyAoZS5nLiwgOmlkLCA6dXNlcklkKVxuICogd2hpY2ggYXJlIHZhbGlkIGV2ZW4gaWYgdGhleSBkb24ndCBleGFjdGx5IG1hdGNoIHRoZSBvcmlnaW5hbCBVUkxcbiAqL1xuZnVuY3Rpb24gaXNSb3V0ZVBhdHRlcm4ocm91dGUpIHtcbiAgICByZXR1cm4gcm91dGUuaW5jbHVkZXMoJzonKSB8fCByb3V0ZS5pbmNsdWRlcygnKicpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dXRpbHMuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/.pnpm/@opentelemetry+instrumentation-express@0.62.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-express/build/src/utils.js\n");
/***/ }),
/***/ "(rsc)/./node_modules/.pnpm/@opentelemetry+instrumentation-express@0.62.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-express/build/src/version.js":
/*!****************************************************************************************************************************************************************************!*\
!*** ./node_modules/.pnpm/@opentelemetry+instrumentation-express@0.62.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-express/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.62.0';\nexports.PACKAGE_NAME = '@opentelemetry/instrumentation-express';\n//# sourceMappingURL=version.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvLnBucG0vQG9wZW50ZWxlbWV0cnkraW5zdHJ1bWVudGF0aW9uLWV4cHJlc3NAMC42Mi4wX0BvcGVudGVsZW1ldHJ5K2FwaUAxLjkuMS9ub2RlX21vZHVsZXMvQG9wZW50ZWxlbWV0cnkvaW5zdHJ1bWVudGF0aW9uLWV4cHJlc3MvYnVpbGQvc3JjL3ZlcnNpb24uanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4Q0FBNkMsRUFBRSxhQUFhLEVBQUM7QUFDN0Qsb0JBQW9CLEdBQUcsdUJBQXVCO0FBQzlDO0FBQ0EsdUJBQXVCO0FBQ3ZCLG9CQUFvQjtBQUNwQiIsInNvdXJjZXMiOlsiL1VzZXJzL21hcmNtaW50ZWwvUHJvamVjdHMvZS10aWIuY29tL25vZGVfbW9kdWxlcy8ucG5wbS9Ab3BlbnRlbGVtZXRyeStpbnN0cnVtZW50YXRpb24tZXhwcmVzc0AwLjYyLjBfQG9wZW50ZWxlbWV0cnkrYXBpQDEuOS4xL25vZGVfbW9kdWxlcy9Ab3BlbnRlbGVtZXRyeS9pbnN0cnVtZW50YXRpb24tZXhwcmVzcy9idWlsZC9zcmMvdmVyc2lvbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbi8qXG4gKiBDb3B5cmlnaHQgVGhlIE9wZW5UZWxlbWV0cnkgQXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLlBBQ0tBR0VfTkFNRSA9IGV4cG9ydHMuUEFDS0FHRV9WRVJTSU9OID0gdm9pZCAwO1xuLy8gdGhpcyBpcyBhdXRvZ2VuZXJhdGVkIGZpbGUsIHNlZSBzY3JpcHRzL3ZlcnNpb24tdXBkYXRlLmpzXG5leHBvcnRzLlBBQ0tBR0VfVkVSU0lPTiA9ICcwLjYyLjAnO1xuZXhwb3J0cy5QQUNLQUdFX05BTUUgPSAnQG9wZW50ZWxlbWV0cnkvaW5zdHJ1bWVudGF0aW9uLWV4cHJlc3MnO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dmVyc2lvbi5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/.pnpm/@opentelemetry+instrumentation-express@0.62.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-express/build/src/version.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/.pnpm/@opentelemetry+instrumentation-express@0.62.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-express/build/src/enums/AttributeNames.js":
/*!*****************************************************************************************************************************************************************************************!*\
!*** ./node_modules/.pnpm/@opentelemetry+instrumentation-express@0.62.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-express/build/src/enums/AttributeNames.js ***!
\*****************************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, exports) => {
eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.AttributeNames = 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 AttributeNames;\n(function (AttributeNames) {\n AttributeNames[\"EXPRESS_TYPE\"] = \"express.type\";\n AttributeNames[\"EXPRESS_NAME\"] = \"express.name\";\n})(AttributeNames = exports.AttributeNames || (exports.AttributeNames = {}));\n//# sourceMappingURL=AttributeNames.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvLnBucG0vQG9wZW50ZWxlbWV0cnkraW5zdHJ1bWVudGF0aW9uLWV4cHJlc3NAMC42Mi4wX0BvcGVudGVsZW1ldHJ5K2FwaUAxLjkuMS9ub2RlX21vZHVsZXMvQG9wZW50ZWxlbWV0cnkvaW5zdHJ1bWVudGF0aW9uLWV4cHJlc3MvYnVpbGQvc3JjL2VudW1zL0F0dHJpYnV0ZU5hbWVzLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQTZDLEVBQUUsYUFBYSxFQUFDO0FBQzdELHNCQUFzQjtBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsOENBQThDLHNCQUFzQixLQUFLO0FBQzFFIiwic291cmNlcyI6WyIvVXNlcnMvbWFyY21pbnRlbC9Qcm9qZWN0cy9lLXRpYi5jb20vbm9kZV9tb2R1bGVzLy5wbnBtL0BvcGVudGVsZW1ldHJ5K2luc3RydW1lbnRhdGlvbi1leHByZXNzQDAuNjIuMF9Ab3BlbnRlbGVtZXRyeSthcGlAMS45LjEvbm9kZV9tb2R1bGVzL0BvcGVudGVsZW1ldHJ5L2luc3RydW1lbnRhdGlvbi1leHByZXNzL2J1aWxkL3NyYy9lbnVtcy9BdHRyaWJ1dGVOYW1lcy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuQXR0cmlidXRlTmFtZXMgPSB2b2lkIDA7XG4vKlxuICogQ29weXJpZ2h0IFRoZSBPcGVuVGVsZW1ldHJ5IEF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xudmFyIEF0dHJpYnV0ZU5hbWVzO1xuKGZ1bmN0aW9uIChBdHRyaWJ1dGVOYW1lcykge1xuICAgIEF0dHJpYnV0ZU5hbWVzW1wiRVhQUkVTU19UWVBFXCJdID0gXCJleHByZXNzLnR5cGVcIjtcbiAgICBBdHRyaWJ1dGVOYW1lc1tcIkVYUFJFU1NfTkFNRVwiXSA9IFwiZXhwcmVzcy5uYW1lXCI7XG59KShBdHRyaWJ1dGVOYW1lcyA9IGV4cG9ydHMuQXR0cmlidXRlTmFtZXMgfHwgKGV4cG9ydHMuQXR0cmlidXRlTmFtZXMgPSB7fSkpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9QXR0cmlidXRlTmFtZXMuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/.pnpm/@opentelemetry+instrumentation-express@0.62.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-express/build/src/enums/AttributeNames.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/.pnpm/@opentelemetry+instrumentation-express@0.62.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-express/build/src/enums/ExpressLayerType.js":
/*!*******************************************************************************************************************************************************************************************!*\
!*** ./node_modules/.pnpm/@opentelemetry+instrumentation-express@0.62.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-express/build/src/enums/ExpressLayerType.js ***!
\*******************************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, exports) => {
eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ExpressLayerType = 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 ExpressLayerType;\n(function (ExpressLayerType) {\n ExpressLayerType[\"ROUTER\"] = \"router\";\n ExpressLayerType[\"MIDDLEWARE\"] = \"middleware\";\n ExpressLayerType[\"REQUEST_HANDLER\"] = \"request_handler\";\n})(ExpressLayerType = exports.ExpressLayerType || (exports.ExpressLayerType = {}));\n//# sourceMappingURL=ExpressLayerType.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvLnBucG0vQG9wZW50ZWxlbWV0cnkraW5zdHJ1bWVudGF0aW9uLWV4cHJlc3NAMC42Mi4wX0BvcGVudGVsZW1ldHJ5K2FwaUAxLjkuMS9ub2RlX21vZHVsZXMvQG9wZW50ZWxlbWV0cnkvaW5zdHJ1bWVudGF0aW9uLWV4cHJlc3MvYnVpbGQvc3JjL2VudW1zL0V4cHJlc3NMYXllclR5cGUuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkMsRUFBRSxhQUFhLEVBQUM7QUFDN0Qsd0JBQXdCO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLGtEQUFrRCx3QkFBd0IsS0FBSztBQUNoRiIsInNvdXJjZXMiOlsiL1VzZXJzL21hcmNtaW50ZWwvUHJvamVjdHMvZS10aWIuY29tL25vZGVfbW9kdWxlcy8ucG5wbS9Ab3BlbnRlbGVtZXRyeStpbnN0cnVtZW50YXRpb24tZXhwcmVzc0AwLjYyLjBfQG9wZW50ZWxlbWV0cnkrYXBpQDEuOS4xL25vZGVfbW9kdWxlcy9Ab3BlbnRlbGVtZXRyeS9pbnN0cnVtZW50YXRpb24tZXhwcmVzcy9idWlsZC9zcmMvZW51bXMvRXhwcmVzc0xheWVyVHlwZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuRXhwcmVzc0xheWVyVHlwZSA9IHZvaWQgMDtcbi8qXG4gKiBDb3B5cmlnaHQgVGhlIE9wZW5UZWxlbWV0cnkgQXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG52YXIgRXhwcmVzc0xheWVyVHlwZTtcbihmdW5jdGlvbiAoRXhwcmVzc0xheWVyVHlwZSkge1xuICAgIEV4cHJlc3NMYXllclR5cGVbXCJST1VURVJcIl0gPSBcInJvdXRlclwiO1xuICAgIEV4cHJlc3NMYXllclR5cGVbXCJNSURETEVXQVJFXCJdID0gXCJtaWRkbGV3YXJlXCI7XG4gICAgRXhwcmVzc0xheWVyVHlwZVtcIlJFUVVFU1RfSEFORExFUlwiXSA9IFwicmVxdWVzdF9oYW5kbGVyXCI7XG59KShFeHByZXNzTGF5ZXJUeXBlID0gZXhwb3J0cy5FeHByZXNzTGF5ZXJUeXBlIHx8IChleHBvcnRzLkV4cHJlc3NMYXllclR5cGUgPSB7fSkpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9RXhwcmVzc0xheWVyVHlwZS5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/.pnpm/@opentelemetry+instrumentation-express@0.62.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-express/build/src/enums/ExpressLayerType.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/.pnpm/@opentelemetry+instrumentation-express@0.62.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-express/build/src/index.js":
/*!**************************************************************************************************************************************************************************!*\
!*** ./node_modules/.pnpm/@opentelemetry+instrumentation-express@0.62.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-express/build/src/index.js ***!
\**************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
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.AttributeNames = exports.ExpressLayerType = exports.ExpressInstrumentation = void 0;\nvar instrumentation_1 = __webpack_require__(/*! ./instrumentation */ \"(ssr)/./node_modules/.pnpm/@opentelemetry+instrumentation-express@0.62.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-express/build/src/instrumentation.js\");\nObject.defineProperty(exports, \"ExpressInstrumentation\", ({ enumerable: true, get: function () { return instrumentation_1.ExpressInstrumentation; } }));\nvar ExpressLayerType_1 = __webpack_require__(/*! ./enums/ExpressLayerType */ \"(ssr)/./node_modules/.pnpm/@opentelemetry+instrumentation-express@0.62.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-express/build/src/enums/ExpressLayerType.js\");\nObject.defineProperty(exports, \"ExpressLayerType\", ({ enumerable: true, get: function () { return ExpressLayerType_1.ExpressLayerType; } }));\nvar AttributeNames_1 = __webpack_require__(/*! ./enums/AttributeNames */ \"(ssr)/./node_modules/.pnpm/@opentelemetry+instrumentation-express@0.62.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-express/build/src/enums/AttributeNames.js\");\nObject.defineProperty(exports, \"AttributeNames\", ({ enumerable: true, get: function () { return AttributeNames_1.AttributeNames; } }));\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvLnBucG0vQG9wZW50ZWxlbWV0cnkraW5zdHJ1bWVudGF0aW9uLWV4cHJlc3NAMC42Mi4wX0BvcGVudGVsZW1ldHJ5K2FwaUAxLjkuMS9ub2RlX21vZHVsZXMvQG9wZW50ZWxlbWV0cnkvaW5zdHJ1bWVudGF0aW9uLWV4cHJlc3MvYnVpbGQvc3JjL2luZGV4LmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOENBQTZDLEVBQUUsYUFBYSxFQUFDO0FBQzdELHNCQUFzQixHQUFHLHdCQUF3QixHQUFHLDhCQUE4QjtBQUNsRix3QkFBd0IsbUJBQU8sQ0FBQyw2TUFBbUI7QUFDbkQsMERBQXlELEVBQUUscUNBQXFDLG9EQUFvRCxFQUFDO0FBQ3JKLHlCQUF5QixtQkFBTyxDQUFDLDJOQUEwQjtBQUMzRCxvREFBbUQsRUFBRSxxQ0FBcUMsK0NBQStDLEVBQUM7QUFDMUksdUJBQXVCLG1CQUFPLENBQUMsdU5BQXdCO0FBQ3ZELGtEQUFpRCxFQUFFLHFDQUFxQywyQ0FBMkMsRUFBQztBQUNwSSIsInNvdXJjZXMiOlsiL1VzZXJzL21hcmNtaW50ZWwvUHJvamVjdHMvZS10aWIuY29tL25vZGVfbW9kdWxlcy8ucG5wbS9Ab3BlbnRlbGVtZXRyeStpbnN0cnVtZW50YXRpb24tZXhwcmVzc0AwLjYyLjBfQG9wZW50ZWxlbWV0cnkrYXBpQDEuOS4xL25vZGVfbW9kdWxlcy9Ab3BlbnRlbGVtZXRyeS9pbnN0cnVtZW50YXRpb24tZXhwcmVzcy9idWlsZC9zcmMvaW5kZXguanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG4vKlxuICogQ29weXJpZ2h0IFRoZSBPcGVuVGVsZW1ldHJ5IEF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5BdHRyaWJ1dGVOYW1lcyA9IGV4cG9ydHMuRXhwcmVzc0xheWVyVHlwZSA9IGV4cG9ydHMuRXhwcmVzc0luc3RydW1lbnRhdGlvbiA9IHZvaWQgMDtcbnZhciBpbnN0cnVtZW50YXRpb25fMSA9IHJlcXVpcmUoXCIuL2luc3RydW1lbnRhdGlvblwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkV4cHJlc3NJbnN0cnVtZW50YXRpb25cIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGluc3RydW1lbnRhdGlvbl8xLkV4cHJlc3NJbnN0cnVtZW50YXRpb247IH0gfSk7XG52YXIgRXhwcmVzc0xheWVyVHlwZV8xID0gcmVxdWlyZShcIi4vZW51bXMvRXhwcmVzc0xheWVyVHlwZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkV4cHJlc3NMYXllclR5cGVcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIEV4cHJlc3NMYXllclR5cGVfMS5FeHByZXNzTGF5ZXJUeXBlOyB9IH0pO1xudmFyIEF0dHJpYnV0ZU5hbWVzXzEgPSByZXF1aXJlKFwiLi9lbnVtcy9BdHRyaWJ1dGVOYW1lc1wiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIkF0dHJpYnV0ZU5hbWVzXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBBdHRyaWJ1dGVOYW1lc18xLkF0dHJpYnV0ZU5hbWVzOyB9IH0pO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/.pnpm/@opentelemetry+instrumentation-express@0.62.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-express/build/src/index.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/.pnpm/@opentelemetry+instrumentation-express@0.62.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-express/build/src/instrumentation.js":
/*!************************************************************************************************************************************************************************************!*\
!*** ./node_modules/.pnpm/@opentelemetry+instrumentation-express@0.62.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-express/build/src/instrumentation.js ***!
\************************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
eval(";globalThis[\"_sentryRewritesTunnelPath\"] = undefined;globalThis[\"SENTRY_RELEASE\"] = undefined;globalThis[\"_sentryBasePath\"] = undefined;globalThis[\"_sentryNextJsVersion\"] = \"16.1.6\";globalThis[\"_sentryRewriteFramesDistDir\"] = \".next\";globalThis[\"_sentryVercelCronsConfig\"] = undefined;\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.ExpressInstrumentation = void 0;\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 api_1 = __webpack_require__(/*! @opentelemetry/api */ \"(ssr)/./node_modules/.pnpm/@opentelemetry+api@1.9.1/node_modules/@opentelemetry/api/build/esm/index.js\");\nconst ExpressLayerType_1 = __webpack_require__(/*! ./enums/ExpressLayerType */ \"(ssr)/./node_modules/.pnpm/@opentelemetry+instrumentation-express@0.62.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-express/build/src/enums/ExpressLayerType.js\");\nconst AttributeNames_1 = __webpack_require__(/*! ./enums/AttributeNames */ \"(ssr)/./node_modules/.pnpm/@opentelemetry+instrumentation-express@0.62.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-express/build/src/enums/AttributeNames.js\");\nconst utils_1 = __webpack_require__(/*! ./utils */ \"(ssr)/./node_modules/.pnpm/@opentelemetry+instrumentation-express@0.62.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-express/build/src/utils.js\");\n/** @knipignore */\nconst version_1 = __webpack_require__(/*! ./version */ \"(ssr)/./node_modules/.pnpm/@opentelemetry+instrumentation-express@0.62.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-express/build/src/version.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 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 internal_types_1 = __webpack_require__(/*! ./internal-types */ \"(ssr)/./node_modules/.pnpm/@opentelemetry+instrumentation-express@0.62.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-express/build/src/internal-types.js\");\n/** Express instrumentation for OpenTelemetry */\nclass ExpressInstrumentation extends instrumentation_1.InstrumentationBase {\n constructor(config = {}) {\n super(version_1.PACKAGE_NAME, version_1.PACKAGE_VERSION, config);\n }\n init() {\n return [\n new instrumentation_1.InstrumentationNodeModuleDefinition('express', ['>=4.0.0 <6'], moduleExports => {\n const isExpressWithRouterPrototype = typeof moduleExports?.Router?.prototype?.route === 'function';\n const routerProto = isExpressWithRouterPrototype\n ? moduleExports.Router.prototype // Express v5\n : moduleExports.Router; // Express v4\n // patch express.Router.route\n if ((0, instrumentation_1.isWrapped)(routerProto.route)) {\n this._unwrap(routerProto, 'route');\n }\n this._wrap(routerProto, 'route', this._getRoutePatch());\n // patch express.Router.use\n if ((0, instrumentation_1.isWrapped)(routerProto.use)) {\n this._unwrap(routerProto, 'use');\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this._wrap(routerProto, 'use', this._getRouterUsePatch());\n // patch express.Application.use\n if ((0, instrumentation_1.isWrapped)(moduleExports.application.use)) {\n this._unwrap(moduleExports.application, 'use');\n }\n this._wrap(moduleExports.application, 'use', \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this._getAppUsePatch(isExpressWithRouterPrototype));\n return moduleExports;\n }, moduleExports => {\n if (moduleExports === undefined)\n return;\n const isExpressWithRouterPrototype = typeof moduleExports?.Router?.prototype?.route === 'function';\n const routerProto = isExpressWithRouterPrototype\n ? moduleExports.Router.prototype\n : moduleExports.Router;\n this._unwrap(routerProto, 'route');\n this._unwrap(routerProto, 'use');\n this._unwrap(moduleExports.application, 'use');\n }),\n ];\n }\n /**\n * Get the patch for Router.route function\n */\n _getRoutePatch() {\n const instrumentation = this;\n return function (original) {\n return function route_trace(...args) {\n const route = original.apply(this, args);\n const layer = this.stack[this.stack.length - 1];\n instrumentation._applyPatch(layer, (0, utils_1.getLayerPath)(args));\n return route;\n };\n };\n }\n /**\n * Get the patch for Router.use function\n */\n _getRouterUsePatch() {\n const instrumentation = this;\n return function (original) {\n return function use(...args) {\n const route = original.apply(this, args);\n const layer = this.stack[this.stack.length - 1];\n instrumentation._applyPatch(layer, (0, utils_1.getLayerPath)(args));\n return route;\n };\n };\n }\n /**\n * Get the patch for Application.use function\n */\n _getAppUsePatch(isExpressWithRouterPrototype) {\n const instrumentation = this;\n return function (original) {\n return function use(...args) {\n // If we access app.router in express 4.x we trigger an assertion error.\n // This property existed in v3, was removed in v4 and then re-added in v5.\n const router = isExpressWithRouterPrototype\n ? this.router\n : this._router;\n const route = original.apply(this, args);\n if (router) {\n const layer = router.stack[router.stack.length - 1];\n instrumentation._applyPatch(layer, (0, utils_1.getLayerPath)(args));\n }\n return route;\n };\n };\n }\n /** Patch each express layer to create span and propagate context */\n _applyPatch(layer, layerPath) {\n const instrumentation = this;\n // avoid patching multiple times the same layer\n if (layer[internal_types_1.kLayerPatched] === true)\n return;\n layer[internal_types_1.kLayerPatched] = true;\n this._wrap(layer, 'handle', original => {\n // TODO: instrument error handlers\n if (original.length === 4)\n return original;\n const patched = function (req, res) {\n const { isLayerPathStored } = (0, utils_1.storeLayerPath)(req, layerPath);\n const constructedRoute = (0, utils_1.getConstructedRoute)(req);\n const actualMatchedRoute = (0, utils_1.getActualMatchedRoute)(req);\n const attributes = {\n [semantic_conventions_1.ATTR_HTTP_ROUTE]: actualMatchedRoute,\n };\n const metadata = (0, utils_1.getLayerMetadata)(constructedRoute, layer, layerPath);\n const type = metadata.attributes[AttributeNames_1.AttributeNames.EXPRESS_TYPE];\n const rpcMetadata = (0, core_1.getRPCMetadata)(api_1.context.active());\n if (rpcMetadata?.type === core_1.RPCType.HTTP) {\n rpcMetadata.route = actualMatchedRoute;\n }\n // verify against the config if the layer should be ignored\n if ((0, utils_1.isLayerIgnored)(metadata.name, type, instrumentation.getConfig())) {\n if (type === ExpressLayerType_1.ExpressLayerType.MIDDLEWARE) {\n req[internal_types_1._LAYERS_STORE_PROPERTY].pop();\n }\n return original.apply(this, arguments);\n }\n if (api_1.trace.getSpan(api_1.context.active()) === undefined) {\n return original.apply(this, arguments);\n }\n const spanName = instrumentation._getSpanName({\n request: req,\n layerType: type,\n route: constructedRoute,\n }, metadata.name);\n const span = instrumentation.tracer.startSpan(spanName, {\n attributes: Object.assign(attributes, metadata.attributes),\n });\n const parentContext = api_1.context.active();\n let currentContext = api_1.trace.setSpan(parentContext, span);\n const { requestHook } = instrumentation.getConfig();\n if (requestHook) {\n (0, instrumentation_1.safeExecuteInTheMiddle)(() => requestHook(span, {\n request: req,\n layerType: type,\n route: constructedRoute,\n }), e => {\n if (e) {\n api_1.diag.error('express instrumentation: request hook failed', e);\n }\n }, true);\n }\n let spanHasEnded = false;\n // TODO: Fix router spans (getRouterPath does not work properly) to\n // have useful names before removing this branch\n if (metadata.attributes[AttributeNames_1.AttributeNames.EXPRESS_TYPE] ===\n ExpressLayerType_1.ExpressLayerType.ROUTER) {\n span.end();\n spanHasEnded = true;\n currentContext = parentContext;\n }\n // listener for response.on('finish')\n const onResponseFinish = () => {\n if (spanHasEnded === false) {\n spanHasEnded = true;\n span.end();\n }\n };\n // verify we have a callback\n const args = Array.from(arguments);\n const callbackIdx = args.findIndex(arg => typeof arg === 'function');\n if (callbackIdx >= 0) {\n arguments[callbackIdx] = function () {\n // express considers anything but an empty value, \"route\" or \"router\"\n // passed to its callback to be an error\n const maybeError = arguments[0];\n const isError = ![undefined, null, 'route', 'router'].includes(maybeError);\n if (!spanHasEnded && isError) {\n const [error, message] = (0, utils_1.asErrorAndMessage)(maybeError);\n span.recordException(error);\n span.setStatus({\n code: api_1.SpanStatusCode.ERROR,\n message,\n });\n }\n if (spanHasEnded === false) {\n spanHasEnded = true;\n req.res?.removeListener('finish', onResponseFinish);\n span.end();\n }\n if (!(req.route && isError) && isLayerPathStored) {\n req[internal_types_1._LAYERS_STORE_PROPERTY].pop();\n }\n const callback = args[callbackIdx];\n // Preserve the active context (which may include baggage set by middleware)\n // but restore the parent span to prevent sibling middleware spans\n // from nesting under each other\n const activeContext = api_1.context.active();\n const parentSpan = api_1.trace.getSpan(parentContext);\n const nextContext = parentSpan\n ? api_1.trace.setSpan(activeContext, parentSpan)\n : activeContext;\n return api_1.context.bind(nextContext, callback).apply(this, arguments);\n };\n }\n try {\n return api_1.context.bind(currentContext, original).apply(this, arguments);\n }\n catch (anyError) {\n const [error, message] = (0, utils_1.asErrorAndMessage)(anyError);\n span.recordException(error);\n span.setStatus({\n code: api_1.SpanStatusCode.ERROR,\n message,\n });\n throw anyError;\n }\n finally {\n /**\n * At this point if the callback wasn't called, that means either the\n * layer is asynchronous (so it will call the callback later on) or that\n * the layer directly ends the http response, so we'll hook into the \"finish\"\n * event to handle the later case.\n */\n if (!spanHasEnded) {\n res.once('finish', onResponseFinish);\n }\n }\n };\n // `handle` isn't just a regular function in some cases. It also contains\n // some properties holding metadata and state so we need to proxy them\n // through through patched function\n // ref: https://github.com/open-telemetry/opentelemetry-js-contrib/issues/1950\n // Also some apps/libs do their own patching before OTEL and have these properties\n // in the proptotype. So we use a `for...in` loop to get own properties and also\n // any enumerable prop in the prototype chain\n // ref: https://github.com/open-telemetry/opentelemetry-js-contrib/issues/2271\n for (const key in original) {\n Object.defineProperty(patched, key, {\n get() {\n return original[key];\n },\n set(value) {\n original[key] = value;\n },\n });\n }\n return patched;\n });\n }\n _getSpanName(info, defaultName) {\n const { spanNameHook } = this.getConfig();\n if (!(spanNameHook instanceof Function)) {\n return defaultName;\n }\n try {\n return spanNameHook(info, defaultName) ?? defaultName;\n }\n catch (err) {\n api_1.diag.error('express instrumentation: error calling span name rewrite hook', err);\n return defaultName;\n }\n }\n}\nexports.ExpressInstrumentation = ExpressInstrumentation;\n//# sourceMappingURL=instrumentation.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvLnBucG0vQG9wZW50ZWxlbWV0cnkraW5zdHJ1bWVudGF0aW9uLWV4cHJlc3NAMC42Mi4wX0BvcGVudGVsZW1ldHJ5K2FwaUAxLjkuMS9ub2RlX21vZHVsZXMvQG9wZW50ZWxlbWV0cnkvaW5zdHJ1bWVudGF0aW9uLWV4cHJlc3MvYnVpbGQvc3JjL2luc3RydW1lbnRhdGlvbi5qcyIsIm1hcHBpbmdzIjoiQUFBYSxDQUFDLG9EQUFvRCx5Q0FBeUMsMENBQTBDLDhDQUE4QyxvREFBb0Q7QUFDdlA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOENBQTZDLEVBQUUsYUFBYSxFQUFDO0FBQzdELDhCQUE4QjtBQUM5QixlQUFlLG1CQUFPLENBQUMsOEpBQXFCO0FBQzVDLGNBQWMsbUJBQU8sQ0FBQyxrSUFBb0I7QUFDMUMsMkJBQTJCLG1CQUFPLENBQUMsMk5BQTBCO0FBQzdELHlCQUF5QixtQkFBTyxDQUFDLHVOQUF3QjtBQUN6RCxnQkFBZ0IsbUJBQU8sQ0FBQyx5TEFBUztBQUNqQztBQUNBLGtCQUFrQixtQkFBTyxDQUFDLDZMQUFXO0FBQ3JDLDBCQUEwQixtQkFBTyxDQUFDLGlNQUFnQztBQUNsRSwrQkFBK0IsbUJBQU8sQ0FBQyxzTEFBcUM7QUFDNUUseUJBQXlCLG1CQUFPLENBQUMsMk1BQWtCO0FBQ25EO0FBQ0E7QUFDQSwyQkFBMkI7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRDQUE0QztBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLG9CQUFvQjtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQSx3QkFBd0IsY0FBYztBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckIsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLGdCQUFnQixlQUFlO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4QjtBQUM5QiIsInNvdXJjZXMiOlsiL1VzZXJzL21hcmNtaW50ZWwvUHJvamVjdHMvZS10aWIuY29tL25vZGVfbW9kdWxlcy8ucG5wbS9Ab3BlbnRlbGVtZXRyeStpbnN0cnVtZW50YXRpb24tZXhwcmVzc0AwLjYyLjBfQG9wZW50ZWxlbWV0cnkrYXBpQDEuOS4xL25vZGVfbW9kdWxlcy9Ab3BlbnRlbGVtZXRyeS9pbnN0cnVtZW50YXRpb24tZXhwcmVzcy9idWlsZC9zcmMvaW5zdHJ1bWVudGF0aW9uLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiOztnbG9iYWxUaGlzW1wiX3NlbnRyeVJld3JpdGVzVHVubmVsUGF0aFwiXSA9IHVuZGVmaW5lZDtnbG9iYWxUaGlzW1wiU0VOVFJZX1JFTEVBU0VcIl0gPSB1bmRlZmluZWQ7Z2xvYmFsVGhpc1tcIl9zZW50cnlCYXNlUGF0aFwiXSA9IHVuZGVmaW5lZDtnbG9iYWxUaGlzW1wiX3NlbnRyeU5leHRKc1ZlcnNpb25cIl0gPSBcIjE2LjEuNlwiO2dsb2JhbFRoaXNbXCJfc2VudHJ5UmV3cml0ZUZyYW1lc0Rpc3REaXJcIl0gPSBcIi5uZXh0XCI7Z2xvYmFsVGhpc1tcIl9zZW50cnlWZXJjZWxDcm9uc0NvbmZpZ1wiXSA9IHVuZGVmaW5lZDtcbi8qXG4gKiBDb3B5cmlnaHQgVGhlIE9wZW5UZWxlbWV0cnkgQXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLkV4cHJlc3NJbnN0cnVtZW50YXRpb24gPSB2b2lkIDA7XG5jb25zdCBjb3JlXzEgPSByZXF1aXJlKFwiQG9wZW50ZWxlbWV0cnkvY29yZVwiKTtcbmNvbnN0IGFwaV8xID0gcmVxdWlyZShcIkBvcGVudGVsZW1ldHJ5L2FwaVwiKTtcbmNvbnN0IEV4cHJlc3NMYXllclR5cGVfMSA9IHJlcXVpcmUoXCIuL2VudW1zL0V4cHJlc3NMYXllclR5cGVcIik7XG5jb25zdCBBdHRyaWJ1dGVOYW1lc18xID0gcmVxdWlyZShcIi4vZW51bXMvQXR0cmlidXRlTmFtZXNcIik7XG5jb25zdCB1dGlsc18xID0gcmVxdWlyZShcIi4vdXRpbHNcIik7XG4vKiogQGtuaXBpZ25vcmUgKi9cbmNvbnN0IHZlcnNpb25fMSA9IHJlcXVpcmUoXCIuL3ZlcnNpb25cIik7XG5jb25zdCBpbnN0cnVtZW50YXRpb25fMSA9IHJlcXVpcmUoXCJAb3BlbnRlbGVtZXRyeS9pbnN0cnVtZW50YXRpb25cIik7XG5jb25zdCBzZW1hbnRpY19jb252ZW50aW9uc18xID0gcmVxdWlyZShcIkBvcGVudGVsZW1ldHJ5L3NlbWFudGljLWNvbnZlbnRpb25zXCIpO1xuY29uc3QgaW50ZXJuYWxfdHlwZXNfMSA9IHJlcXVpcmUoXCIuL2ludGVybmFsLXR5cGVzXCIpO1xuLyoqIEV4cHJlc3MgaW5zdHJ1bWVudGF0aW9uIGZvciBPcGVuVGVsZW1ldHJ5ICovXG5jbGFzcyBFeHByZXNzSW5zdHJ1bWVudGF0aW9uIGV4dGVuZHMgaW5zdHJ1bWVudGF0aW9uXzEuSW5zdHJ1bWVudGF0aW9uQmFzZSB7XG4gICAgY29uc3RydWN0b3IoY29uZmlnID0ge30pIHtcbiAgICAgICAgc3VwZXIodmVyc2lvbl8xLlBBQ0tBR0VfTkFNRSwgdmVyc2lvbl8xLlBBQ0tBR0VfVkVSU0lPTiwgY29uZmlnKTtcbiAgICB9XG4gICAgaW5pdCgpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIG5ldyBpbnN0cnVtZW50YXRpb25fMS5JbnN0cnVtZW50YXRpb25Ob2RlTW9kdWxlRGVmaW5pdGlvbignZXhwcmVzcycsIFsnPj00LjAuMCA8NiddLCBtb2R1bGVFeHBvcnRzID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBpc0V4cHJlc3NXaXRoUm91dGVyUHJvdG90eXBlID0gdHlwZW9mIG1vZHVsZUV4cG9ydHM/LlJvdXRlcj8ucHJvdG90eXBlPy5yb3V0ZSA9PT0gJ2Z1bmN0aW9uJztcbiAgICAgICAgICAgICAgICBjb25zdCByb3V0ZXJQcm90byA9IGlzRXhwcmVzc1dpdGhSb3V0ZXJQcm90b3R5cGVcbiAgICAgICAgICAgICAgICAgICAgPyBtb2R1bGVFeHBvcnRzLlJvdXRlci5wcm90b3R5cGUgLy8gRXhwcmVzcyB2NVxuICAgICAgICAgICAgICAgICAgICA6IG1vZHVsZUV4cG9ydHMuUm91dGVyOyAvLyBFeHByZXNzIHY0XG4gICAgICAgICAgICAgICAgLy8gcGF0Y2ggZXhwcmVzcy5Sb3V0ZXIucm91dGVcbiAgICAgICAgICAgICAgICBpZiAoKDAsIGluc3RydW1lbnRhdGlvbl8xLmlzV3JhcHBlZCkocm91dGVyUHJvdG8ucm91dGUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3Vud3JhcChyb3V0ZXJQcm90bywgJ3JvdXRlJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuX3dyYXAocm91dGVyUHJvdG8sICdyb3V0ZScsIHRoaXMuX2dldFJvdXRlUGF0Y2goKSk7XG4gICAgICAgICAgICAgICAgLy8gcGF0Y2ggZXhwcmVzcy5Sb3V0ZXIudXNlXG4gICAgICAgICAgICAgICAgaWYgKCgwLCBpbnN0cnVtZW50YXRpb25fMS5pc1dyYXBwZWQpKHJvdXRlclByb3RvLnVzZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdW53cmFwKHJvdXRlclByb3RvLCAndXNlJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgICAgICAgICAgdGhpcy5fd3JhcChyb3V0ZXJQcm90bywgJ3VzZScsIHRoaXMuX2dldFJvdXRlclVzZVBhdGNoKCkpO1xuICAgICAgICAgICAgICAgIC8vIHBhdGNoIGV4cHJlc3MuQXBwbGljYXRpb24udXNlXG4gICAgICAgICAgICAgICAgaWYgKCgwLCBpbnN0cnVtZW50YXRpb25fMS5pc1dyYXBwZWQpKG1vZHVsZUV4cG9ydHMuYXBwbGljYXRpb24udXNlKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl91bndyYXAobW9kdWxlRXhwb3J0cy5hcHBsaWNhdGlvbiwgJ3VzZScpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLl93cmFwKG1vZHVsZUV4cG9ydHMuYXBwbGljYXRpb24sICd1c2UnLCBcbiAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICAgICAgICAgIHRoaXMuX2dldEFwcFVzZVBhdGNoKGlzRXhwcmVzc1dpdGhSb3V0ZXJQcm90b3R5cGUpKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gbW9kdWxlRXhwb3J0cztcbiAgICAgICAgICAgIH0sIG1vZHVsZUV4cG9ydHMgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChtb2R1bGVFeHBvcnRzID09PSB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICBjb25zdCBpc0V4cHJlc3NXaXRoUm91dGVyUHJvdG90eXBlID0gdHlwZW9mIG1vZHVsZUV4cG9ydHM/LlJvdXRlcj8ucHJvdG90eXBlPy5yb3V0ZSA9PT0gJ2Z1bmN0aW9uJztcbiAgICAgICAgICAgICAgICBjb25zdCByb3V0ZXJQcm90byA9IGlzRXhwcmVzc1dpdGhSb3V0ZXJQcm90b3R5cGVcbiAgICAgICAgICAgICAgICAgICAgPyBtb2R1bGVFeHBvcnRzLlJvdXRlci5wcm90b3R5cGVcbiAgICAgICAgICAgICAgICAgICAgOiBtb2R1bGVFeHBvcnRzLlJvdXRlcjtcbiAgICAgICAgICAgICAgICB0aGlzLl91bndyYXAocm91dGVyUHJvdG8sICdyb3V0ZScpO1xuICAgICAgICAgICAgICAgIHRoaXMuX3Vud3JhcChyb3V0ZXJQcm90bywgJ3VzZScpO1xuICAgICAgICAgICAgICAgIHRoaXMuX3Vud3JhcChtb2R1bGVFeHBvcnRzLmFwcGxpY2F0aW9uLCAndXNlJyk7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgXTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogR2V0IHRoZSBwYXRjaCBmb3IgUm91dGVyLnJvdXRlIGZ1bmN0aW9uXG4gICAgICovXG4gICAgX2dldFJvdXRlUGF0Y2goKSB7XG4gICAgICAgIGNvbnN0IGluc3RydW1lbnRhdGlvbiA9IHRoaXM7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAob3JpZ2luYWwpIHtcbiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiByb3V0ZV90cmFjZSguLi5hcmdzKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgcm91dGUgPSBvcmlnaW5hbC5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICAgICAgICAgICAgICBjb25zdCBsYXllciA9IHRoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgICAgICBpbnN0cnVtZW50YXRpb24uX2FwcGx5UGF0Y2gobGF5ZXIsICgwLCB1dGlsc18xLmdldExheWVyUGF0aCkoYXJncykpO1xuICAgICAgICAgICAgICAgIHJldHVybiByb3V0ZTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH07XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEdldCB0aGUgcGF0Y2ggZm9yIFJvdXRlci51c2UgZnVuY3Rpb25cbiAgICAgKi9cbiAgICBfZ2V0Um91dGVyVXNlUGF0Y2goKSB7XG4gICAgICAgIGNvbnN0IGluc3RydW1lbnRhdGlvbiA9IHRoaXM7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAob3JpZ2luYWwpIHtcbiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiB1c2UoLi4uYXJncykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJvdXRlID0gb3JpZ2luYWwuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICAgICAgICAgICAgY29uc3QgbGF5ZXIgPSB0aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoIC0gMV07XG4gICAgICAgICAgICAgICAgaW5zdHJ1bWVudGF0aW9uLl9hcHBseVBhdGNoKGxheWVyLCAoMCwgdXRpbHNfMS5nZXRMYXllclBhdGgpKGFyZ3MpKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gcm91dGU7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9O1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBHZXQgdGhlIHBhdGNoIGZvciBBcHBsaWNhdGlvbi51c2UgZnVuY3Rpb25cbiAgICAgKi9cbiAgICBfZ2V0QXBwVXNlUGF0Y2goaXNFeHByZXNzV2l0aFJvdXRlclByb3RvdHlwZSkge1xuICAgICAgICBjb25zdCBpbnN0cnVtZW50YXRpb24gPSB0aGlzO1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKG9yaWdpbmFsKSB7XG4gICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gdXNlKC4uLmFyZ3MpIHtcbiAgICAgICAgICAgICAgICAvLyBJZiB3ZSBhY2Nlc3MgYXBwLnJvdXRlciBpbiBleHByZXNzIDQueCB3ZSB0cmlnZ2VyIGFuIGFzc2VydGlvbiBlcnJvci5cbiAgICAgICAgICAgICAgICAvLyBUaGlzIHByb3BlcnR5IGV4aXN0ZWQgaW4gdjMsIHdhcyByZW1vdmVkIGluIHY0IGFuZCB0aGVuIHJlLWFkZGVkIGluIHY1LlxuICAgICAgICAgICAgICAgIGNvbnN0IHJvdXRlciA9IGlzRXhwcmVzc1dpdGhSb3V0ZXJQcm90b3R5cGVcbiAgICAgICAgICAgICAgICAgICAgPyB0aGlzLnJvdXRlclxuICAgICAgICAgICAgICAgICAgICA6IHRoaXMuX3JvdXRlcjtcbiAgICAgICAgICAgICAgICBjb25zdCByb3V0ZSA9IG9yaWdpbmFsLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgICAgICAgICAgICAgIGlmIChyb3V0ZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbGF5ZXIgPSByb3V0ZXIuc3RhY2tbcm91dGVyLnN0YWNrLmxlbmd0aCAtIDFdO1xuICAgICAgICAgICAgICAgICAgICBpbnN0cnVtZW50YXRpb24uX2FwcGx5UGF0Y2gobGF5ZXIsICgwLCB1dGlsc18xLmdldExheWVyUGF0aCkoYXJncykpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcm91dGU7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9O1xuICAgIH1cbiAgICAvKiogUGF0Y2ggZWFjaCBleHByZXNzIGxheWVyIHRvIGNyZWF0ZSBzcGFuIGFuZCBwcm9wYWdhdGUgY29udGV4dCAqL1xuICAgIF9hcHBseVBhdGNoKGxheWVyLCBsYXllclBhdGgpIHtcbiAgICAgICAgY29uc3QgaW5zdHJ1bWVudGF0aW9uID0gdGhpcztcbiAgICAgICAgLy8gYXZvaWQgcGF0Y2hpbmcgbXVsdGlwbGUgdGltZXMgdGhlIHNhbWUgbGF5ZXJcbiAgICAgICAgaWYgKGxheWVyW2ludGVybmFsX3R5cGVzXzEua0xheWVyUGF0Y2hlZF0gPT09IHRydWUpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGxheWVyW2ludGVybmFsX3R5cGVzXzEua0xheWVyUGF0Y2hlZF0gPSB0cnVlO1xuICAgICAgICB0aGlzLl93cmFwKGxheWVyLCAnaGFuZGxlJywgb3JpZ2luYWwgPT4ge1xuICAgICAgICAgICAgLy8gVE9ETzogaW5zdHJ1bWVudCBlcnJvciBoYW5kbGVyc1xuICAgICAgICAgICAgaWYgKG9yaWdpbmFsLmxlbmd0aCA9PT0gNClcbiAgICAgICAgICAgICAgICByZXR1cm4gb3JpZ2luYWw7XG4gICAgICAgICAgICBjb25zdCBwYXRjaGVkID0gZnVuY3Rpb24gKHJlcSwgcmVzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBpc0xheWVyUGF0aFN0b3JlZCB9ID0gKDAsIHV0aWxzXzEuc3RvcmVMYXllclBhdGgpKHJlcSwgbGF5ZXJQYXRoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBjb25zdHJ1Y3RlZFJvdXRlID0gKDAsIHV0aWxzXzEuZ2V0Q29uc3RydWN0ZWRSb3V0ZSkocmVxKTtcbiAgICAgICAgICAgICAgICBjb25zdCBhY3R1YWxNYXRjaGVkUm91dGUgPSAoMCwgdXRpbHNfMS5nZXRBY3R1YWxNYXRjaGVkUm91dGUpKHJlcSk7XG4gICAgICAgICAgICAgICAgY29uc3QgYXR0cmlidXRlcyA9IHtcbiAgICAgICAgICAgICAgICAgICAgW3NlbWFudGljX2NvbnZlbnRpb25zXzEuQVRUUl9IVFRQX1JPVVRFXTogYWN0dWFsTWF0Y2hlZFJvdXRlLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgY29uc3QgbWV0YWRhdGEgPSAoMCwgdXRpbHNfMS5nZXRMYXllck1ldGFkYXRhKShjb25zdHJ1Y3RlZFJvdXRlLCBsYXllciwgbGF5ZXJQYXRoKTtcbiAgICAgICAgICAgICAgICBjb25zdCB0eXBlID0gbWV0YWRhdGEuYXR0cmlidXRlc1tBdHRyaWJ1dGVOYW1lc18xLkF0dHJpYnV0ZU5hbWVzLkVYUFJFU1NfVFlQRV07XG4gICAgICAgICAgICAgICAgY29uc3QgcnBjTWV0YWRhdGEgPSAoMCwgY29yZV8xLmdldFJQQ01ldGFkYXRhKShhcGlfMS5jb250ZXh0LmFjdGl2ZSgpKTtcbiAgICAgICAgICAgICAgICBpZiAocnBjTWV0YWRhdGE/LnR5cGUgPT09IGNvcmVfMS5SUENUeXBlLkhUVFApIHtcbiAgICAgICAgICAgICAgICAgICAgcnBjTWV0YWRhdGEucm91dGUgPSBhY3R1YWxNYXRjaGVkUm91dGU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIHZlcmlmeSBhZ2FpbnN0IHRoZSBjb25maWcgaWYgdGhlIGxheWVyIHNob3VsZCBiZSBpZ25vcmVkXG4gICAgICAgICAgICAgICAgaWYgKCgwLCB1dGlsc18xLmlzTGF5ZXJJZ25vcmVkKShtZXRhZGF0YS5uYW1lLCB0eXBlLCBpbnN0cnVtZW50YXRpb24uZ2V0Q29uZmlnKCkpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlID09PSBFeHByZXNzTGF5ZXJUeXBlXzEuRXhwcmVzc0xheWVyVHlwZS5NSURETEVXQVJFKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXFbaW50ZXJuYWxfdHlwZXNfMS5fTEFZRVJTX1NUT1JFX1BST1BFUlRZXS5wb3AoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3JpZ2luYWwuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGFwaV8xLnRyYWNlLmdldFNwYW4oYXBpXzEuY29udGV4dC5hY3RpdmUoKSkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3JpZ2luYWwuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3Qgc3Bhbk5hbWUgPSBpbnN0cnVtZW50YXRpb24uX2dldFNwYW5OYW1lKHtcbiAgICAgICAgICAgICAgICAgICAgcmVxdWVzdDogcmVxLFxuICAgICAgICAgICAgICAgICAgICBsYXllclR5cGU6IHR5cGUsXG4gICAgICAgICAgICAgICAgICAgIHJvdXRlOiBjb25zdHJ1Y3RlZFJvdXRlLFxuICAgICAgICAgICAgICAgIH0sIG1ldGFkYXRhLm5hbWUpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNwYW4gPSBpbnN0cnVtZW50YXRpb24udHJhY2VyLnN0YXJ0U3BhbihzcGFuTmFtZSwge1xuICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzOiBPYmplY3QuYXNzaWduKGF0dHJpYnV0ZXMsIG1ldGFkYXRhLmF0dHJpYnV0ZXMpLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudENvbnRleHQgPSBhcGlfMS5jb250ZXh0LmFjdGl2ZSgpO1xuICAgICAgICAgICAgICAgIGxldCBjdXJyZW50Q29udGV4dCA9IGFwaV8xLnRyYWNlLnNldFNwYW4ocGFyZW50Q29udGV4dCwgc3Bhbik7XG4gICAgICAgICAgICAgICAgY29uc3QgeyByZXF1ZXN0SG9vayB9ID0gaW5zdHJ1bWVudGF0aW9uLmdldENvbmZpZygpO1xuICAgICAgICAgICAgICAgIGlmIChyZXF1ZXN0SG9vaykge1xuICAgICAgICAgICAgICAgICAgICAoMCwgaW5zdHJ1bWVudGF0aW9uXzEuc2FmZUV4ZWN1dGVJblRoZU1pZGRsZSkoKCkgPT4gcmVxdWVzdEhvb2soc3Bhbiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdDogcmVxLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJUeXBlOiB0eXBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgcm91dGU6IGNvbnN0cnVjdGVkUm91dGUsXG4gICAgICAgICAgICAgICAgICAgIH0pLCBlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBpXzEuZGlhZy5lcnJvcignZXhwcmVzcyBpbnN0cnVtZW50YXRpb246IHJlcXVlc3QgaG9vayBmYWlsZWQnLCBlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGxldCBzcGFuSGFzRW5kZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAvLyBUT0RPOiBGaXggcm91dGVyIHNwYW5zIChnZXRSb3V0ZXJQYXRoIGRvZXMgbm90IHdvcmsgcHJvcGVybHkpIHRvXG4gICAgICAgICAgICAgICAgLy8gaGF2ZSB1c2VmdWwgbmFtZXMgYmVmb3JlIHJlbW92aW5nIHRoaXMgYnJhbmNoXG4gICAgICAgICAgICAgICAgaWYgKG1ldGFkYXRhLmF0dHJpYnV0ZXNbQXR0cmlidXRlTmFtZXNfMS5BdHRyaWJ1dGVOYW1lcy5FWFBSRVNTX1RZUEVdID09PVxuICAgICAgICAgICAgICAgICAgICBFeHByZXNzTGF5ZXJUeXBlXzEuRXhwcmVzc0xheWVyVHlwZS5ST1VURVIpIHtcbiAgICAgICAgICAgICAgICAgICAgc3Bhbi5lbmQoKTtcbiAgICAgICAgICAgICAgICAgICAgc3Bhbkhhc0VuZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudENvbnRleHQgPSBwYXJlbnRDb250ZXh0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBsaXN0ZW5lciBmb3IgcmVzcG9uc2Uub24oJ2ZpbmlzaCcpXG4gICAgICAgICAgICAgICAgY29uc3Qgb25SZXNwb25zZUZpbmlzaCA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNwYW5IYXNFbmRlZCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNwYW5IYXNFbmRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBzcGFuLmVuZCgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAvLyB2ZXJpZnkgd2UgaGF2ZSBhIGNhbGxiYWNrXG4gICAgICAgICAgICAgICAgY29uc3QgYXJncyA9IEFycmF5LmZyb20oYXJndW1lbnRzKTtcbiAgICAgICAgICAgICAgICBjb25zdCBjYWxsYmFja0lkeCA9IGFyZ3MuZmluZEluZGV4KGFyZyA9PiB0eXBlb2YgYXJnID09PSAnZnVuY3Rpb24nKTtcbiAgICAgICAgICAgICAgICBpZiAoY2FsbGJhY2tJZHggPj0gMCkge1xuICAgICAgICAgICAgICAgICAgICBhcmd1bWVudHNbY2FsbGJhY2tJZHhdID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gZXhwcmVzcyBjb25zaWRlcnMgYW55dGhpbmcgYnV0IGFuIGVtcHR5IHZhbHVlLCBcInJvdXRlXCIgb3IgXCJyb3V0ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGFzc2VkIHRvIGl0cyBjYWxsYmFjayB0byBiZSBhbiBlcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF5YmVFcnJvciA9IGFyZ3VtZW50c1swXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzRXJyb3IgPSAhW3VuZGVmaW5lZCwgbnVsbCwgJ3JvdXRlJywgJ3JvdXRlciddLmluY2x1ZGVzKG1heWJlRXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzcGFuSGFzRW5kZWQgJiYgaXNFcnJvcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFtlcnJvciwgbWVzc2FnZV0gPSAoMCwgdXRpbHNfMS5hc0Vycm9yQW5kTWVzc2FnZSkobWF5YmVFcnJvcik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Bhbi5yZWNvcmRFeGNlcHRpb24oZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwYW4uc2V0U3RhdHVzKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogYXBpXzEuU3BhblN0YXR1c0NvZGUuRVJST1IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3Bhbkhhc0VuZGVkID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwYW5IYXNFbmRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxLnJlcz8ucmVtb3ZlTGlzdGVuZXIoJ2ZpbmlzaCcsIG9uUmVzcG9uc2VGaW5pc2gpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwYW4uZW5kKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShyZXEucm91dGUgJiYgaXNFcnJvcikgJiYgaXNMYXllclBhdGhTdG9yZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXFbaW50ZXJuYWxfdHlwZXNfMS5fTEFZRVJTX1NUT1JFX1BST1BFUlRZXS5wb3AoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNhbGxiYWNrID0gYXJnc1tjYWxsYmFja0lkeF07XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBQcmVzZXJ2ZSB0aGUgYWN0aXZlIGNvbnRleHQgKHdoaWNoIG1heSBpbmNsdWRlIGJhZ2dhZ2Ugc2V0IGJ5IG1pZGRsZXdhcmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBidXQgcmVzdG9yZSB0aGUgcGFyZW50IHNwYW4gdG8gcHJldmVudCBzaWJsaW5nIG1pZGRsZXdhcmUgc3BhbnNcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZyb20gbmVzdGluZyB1bmRlciBlYWNoIG90aGVyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhY3RpdmVDb250ZXh0ID0gYXBpXzEuY29udGV4dC5hY3RpdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudFNwYW4gPSBhcGlfMS50cmFjZS5nZXRTcGFuKHBhcmVudENvbnRleHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV4dENvbnRleHQgPSBwYXJlbnRTcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBhcGlfMS50cmFjZS5zZXRTcGFuKGFjdGl2ZUNvbnRleHQsIHBhcmVudFNwYW4pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBhY3RpdmVDb250ZXh0O1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFwaV8xLmNvbnRleHQuYmluZChuZXh0Q29udGV4dCwgY2FsbGJhY2spLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhcGlfMS5jb250ZXh0LmJpbmQoY3VycmVudENvbnRleHQsIG9yaWdpbmFsKS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXRjaCAoYW55RXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgW2Vycm9yLCBtZXNzYWdlXSA9ICgwLCB1dGlsc18xLmFzRXJyb3JBbmRNZXNzYWdlKShhbnlFcnJvcik7XG4gICAgICAgICAgICAgICAgICAgIHNwYW4ucmVjb3JkRXhjZXB0aW9uKGVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgc3Bhbi5zZXRTdGF0dXMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogYXBpXzEuU3BhblN0YXR1c0NvZGUuRVJST1IsXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgYW55RXJyb3I7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgICAgICogQXQgdGhpcyBwb2ludCBpZiB0aGUgY2FsbGJhY2sgd2Fzbid0IGNhbGxlZCwgdGhhdCBtZWFucyBlaXRoZXIgdGhlXG4gICAgICAgICAgICAgICAgICAgICAqIGxheWVyIGlzIGFzeW5jaHJvbm91cyAoc28gaXQgd2lsbCBjYWxsIHRoZSBjYWxsYmFjayBsYXRlciBvbikgb3IgdGhhdFxuICAgICAgICAgICAgICAgICAgICAgKiB0aGUgbGF5ZXIgZGlyZWN0bHkgZW5kcyB0aGUgaHR0cCByZXNwb25zZSwgc28gd2UnbGwgaG9vayBpbnRvIHRoZSBcImZpbmlzaFwiXG4gICAgICAgICAgICAgICAgICAgICAqIGV2ZW50IHRvIGhhbmRsZSB0aGUgbGF0ZXIgY2FzZS5cbiAgICAgICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgICAgIGlmICghc3Bhbkhhc0VuZGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXMub25jZSgnZmluaXNoJywgb25SZXNwb25zZUZpbmlzaCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgLy8gYGhhbmRsZWAgaXNuJ3QganVzdCBhIHJlZ3VsYXIgZnVuY3Rpb24gaW4gc29tZSBjYXNlcy4gSXQgYWxzbyBjb250YWluc1xuICAgICAgICAgICAgLy8gc29tZSBwcm9wZXJ0aWVzIGhvbGRpbmcgbWV0YWRhdGEgYW5kIHN0YXRlIHNvIHdlIG5lZWQgdG8gcHJveHkgdGhlbVxuICAgICAgICAgICAgLy8gdGhyb3VnaCB0aHJvdWdoIHBhdGNoZWQgZnVuY3Rpb25cbiAgICAgICAgICAgIC8vIHJlZjogaHR0cHM6Ly9naXRodWIuY29tL29wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktanMtY29udHJpYi9pc3N1ZXMvMTk1MFxuICAgICAgICAgICAgLy8gQWxzbyBzb21lIGFwcHMvbGlicyBkbyB0aGVpciBvd24gcGF0Y2hpbmcgYmVmb3JlIE9URUwgYW5kIGhhdmUgdGhlc2UgcHJvcGVydGllc1xuICAgICAgICAgICAgLy8gaW4gdGhlIHByb3B0b3R5cGUuIFNvIHdlIHVzZSBhIGBmb3IuLi5pbmAgbG9vcCB0byBnZXQgb3duIHByb3BlcnRpZXMgYW5kIGFsc29cbiAgICAgICAgICAgIC8vIGFueSBlbnVtZXJhYmxlIHByb3AgaW4gdGhlIHByb3RvdHlwZSBjaGFpblxuICAgICAgICAgICAgLy8gcmVmOiBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1qcy1jb250cmliL2lzc3Vlcy8yMjcxXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBvcmlnaW5hbCkge1xuICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwYXRjaGVkLCBrZXksIHtcbiAgICAgICAgICAgICAgICAgICAgZ2V0KCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9yaWdpbmFsW2tleV07XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHNldCh2YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWxba2V5XSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHBhdGNoZWQ7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBfZ2V0U3Bhbk5hbWUoaW5mbywgZGVmYXVsdE5hbWUpIHtcbiAgICAgICAgY29uc3QgeyBzcGFuTmFtZUhvb2sgfSA9IHRoaXMuZ2V0Q29uZmlnKCk7XG4gICAgICAgIGlmICghKHNwYW5OYW1lSG9vayBpbnN0YW5jZW9mIEZ1bmN0aW9uKSkge1xuICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHROYW1lO1xuICAgICAgICB9XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4gc3Bhbk5hbWVIb29rKGluZm8sIGRlZmF1bHROYW1lKSA/PyBkZWZhdWx0TmFtZTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICBhcGlfMS5kaWFnLmVycm9yKCdleHByZXNzIGluc3RydW1lbnRhdGlvbjogZXJyb3IgY2FsbGluZyBzcGFuIG5hbWUgcmV3cml0ZSBob29rJywgZXJyKTtcbiAgICAgICAgICAgIHJldHVybiBkZWZhdWx0TmFtZTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmV4cG9ydHMuRXhwcmVzc0luc3RydW1lbnRhdGlvbiA9IEV4cHJlc3NJbnN0cnVtZW50YXRpb247XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbnN0cnVtZW50YXRpb24uanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/.pnpm/@opentelemetry+instrumentation-express@0.62.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-express/build/src/instrumentation.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/.pnpm/@opentelemetry+instrumentation-express@0.62.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-express/build/src/internal-types.js":
/*!***********************************************************************************************************************************************************************************!*\
!*** ./node_modules/.pnpm/@opentelemetry+instrumentation-express@0.62.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-express/build/src/internal-types.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._LAYERS_STORE_PROPERTY = exports.kLayerPatched = void 0;\n/**\n * This symbol is used to mark express layer as being already instrumented\n * since its possible to use a given layer multiple times (ex: middlewares)\n */\nexports.kLayerPatched = Symbol('express-layer-patched');\n/**\n * This const define where on the `request` object the Instrumentation will mount the\n * current stack of express layer.\n *\n * It is necessary because express doesn't store the different layers\n * (ie: middleware, router etc) that it called to get to the current layer.\n * Given that, the only way to know the route of a given layer is to\n * store the path of where each previous layer has been mounted.\n *\n * ex: bodyParser > auth middleware > /users router > get /:id\n * in this case the stack would be: [\"/users\", \"/:id\"]\n *\n * ex2: bodyParser > /api router > /v1 router > /users router > get /:id\n * stack: [\"/api\", \"/v1\", \"/users\", \":id\"]\n *\n */\nexports._LAYERS_STORE_PROPERTY = '__ot_middlewares';\n//# sourceMappingURL=internal-types.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvLnBucG0vQG9wZW50ZWxlbWV0cnkraW5zdHJ1bWVudGF0aW9uLWV4cHJlc3NAMC42Mi4wX0BvcGVudGVsZW1ldHJ5K2FwaUAxLjkuMS9ub2RlX21vZHVsZXMvQG9wZW50ZWxlbWV0cnkvaW5zdHJ1bWVudGF0aW9uLWV4cHJlc3MvYnVpbGQvc3JjL2ludGVybmFsLXR5cGVzLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOENBQTZDLEVBQUUsYUFBYSxFQUFDO0FBQzdELDhCQUE4QixHQUFHLHFCQUFxQjtBQUN0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4QjtBQUM5QiIsInNvdXJjZXMiOlsiL1VzZXJzL21hcmNtaW50ZWwvUHJvamVjdHMvZS10aWIuY29tL25vZGVfbW9kdWxlcy8ucG5wbS9Ab3BlbnRlbGVtZXRyeStpbnN0cnVtZW50YXRpb24tZXhwcmVzc0AwLjYyLjBfQG9wZW50ZWxlbWV0cnkrYXBpQDEuOS4xL25vZGVfbW9kdWxlcy9Ab3BlbnRlbGVtZXRyeS9pbnN0cnVtZW50YXRpb24tZXhwcmVzcy9idWlsZC9zcmMvaW50ZXJuYWwtdHlwZXMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG4vKlxuICogQ29weXJpZ2h0IFRoZSBPcGVuVGVsZW1ldHJ5IEF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5fTEFZRVJTX1NUT1JFX1BST1BFUlRZID0gZXhwb3J0cy5rTGF5ZXJQYXRjaGVkID0gdm9pZCAwO1xuLyoqXG4gKiBUaGlzIHN5bWJvbCBpcyB1c2VkIHRvIG1hcmsgZXhwcmVzcyBsYXllciBhcyBiZWluZyBhbHJlYWR5IGluc3RydW1lbnRlZFxuICogc2luY2UgaXRzIHBvc3NpYmxlIHRvIHVzZSBhIGdpdmVuIGxheWVyIG11bHRpcGxlIHRpbWVzIChleDogbWlkZGxld2FyZXMpXG4gKi9cbmV4cG9ydHMua0xheWVyUGF0Y2hlZCA9IFN5bWJvbCgnZXhwcmVzcy1sYXllci1wYXRjaGVkJyk7XG4vKipcbiAqIFRoaXMgY29uc3QgZGVmaW5lIHdoZXJlIG9uIHRoZSBgcmVxdWVzdGAgb2JqZWN0IHRoZSBJbnN0cnVtZW50YXRpb24gd2lsbCBtb3VudCB0aGVcbiAqIGN1cnJlbnQgc3RhY2sgb2YgZXhwcmVzcyBsYXllci5cbiAqXG4gKiBJdCBpcyBuZWNlc3NhcnkgYmVjYXVzZSBleHByZXNzIGRvZXNuJ3Qgc3RvcmUgdGhlIGRpZmZlcmVudCBsYXllcnNcbiAqIChpZTogbWlkZGxld2FyZSwgcm91dGVyIGV0YykgdGhhdCBpdCBjYWxsZWQgdG8gZ2V0IHRvIHRoZSBjdXJyZW50IGxheWVyLlxuICogR2l2ZW4gdGhhdCwgdGhlIG9ubHkgd2F5IHRvIGtub3cgdGhlIHJvdXRlIG9mIGEgZ2l2ZW4gbGF5ZXIgaXMgdG9cbiAqIHN0b3JlIHRoZSBwYXRoIG9mIHdoZXJlIGVhY2ggcHJldmlvdXMgbGF5ZXIgaGFzIGJlZW4gbW91bnRlZC5cbiAqXG4gKiBleDogYm9keVBhcnNlciA+IGF1dGggbWlkZGxld2FyZSA+IC91c2VycyByb3V0ZXIgPiBnZXQgLzppZFxuICogIGluIHRoaXMgY2FzZSB0aGUgc3RhY2sgd291bGQgYmU6IFtcIi91c2Vyc1wiLCBcIi86aWRcIl1cbiAqXG4gKiBleDI6IGJvZHlQYXJzZXIgPiAvYXBpIHJvdXRlciA+IC92MSByb3V0ZXIgPiAvdXNlcnMgcm91dGVyID4gZ2V0IC86aWRcbiAqICBzdGFjazogW1wiL2FwaVwiLCBcIi92MVwiLCBcIi91c2Vyc1wiLCBcIjppZFwiXVxuICpcbiAqL1xuZXhwb3J0cy5fTEFZRVJTX1NUT1JFX1BST1BFUlRZID0gJ19fb3RfbWlkZGxld2FyZXMnO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW50ZXJuYWwtdHlwZXMuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/.pnpm/@opentelemetry+instrumentation-express@0.62.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-express/build/src/internal-types.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/.pnpm/@opentelemetry+instrumentation-express@0.62.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-express/build/src/utils.js":
/*!**************************************************************************************************************************************************************************!*\
!*** ./node_modules/.pnpm/@opentelemetry+instrumentation-express@0.62.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-express/build/src/utils.js ***!
\**************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
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.getActualMatchedRoute = exports.getConstructedRoute = exports.getLayerPath = exports.asErrorAndMessage = exports.isLayerIgnored = exports.getLayerMetadata = exports.getRouterPath = exports.storeLayerPath = void 0;\nconst ExpressLayerType_1 = __webpack_require__(/*! ./enums/ExpressLayerType */ \"(ssr)/./node_modules/.pnpm/@opentelemetry+instrumentation-express@0.62.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-express/build/src/enums/ExpressLayerType.js\");\nconst AttributeNames_1 = __webpack_require__(/*! ./enums/AttributeNames */ \"(ssr)/./node_modules/.pnpm/@opentelemetry+instrumentation-express@0.62.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-express/build/src/enums/AttributeNames.js\");\nconst internal_types_1 = __webpack_require__(/*! ./internal-types */ \"(ssr)/./node_modules/.pnpm/@opentelemetry+instrumentation-express@0.62.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-express/build/src/internal-types.js\");\n/**\n * Store layers path in the request to be able to construct route later\n * @param request The request where\n * @param [value] the value to push into the array\n */\nconst storeLayerPath = (request, value) => {\n if (Array.isArray(request[internal_types_1._LAYERS_STORE_PROPERTY]) === false) {\n Object.defineProperty(request, internal_types_1._LAYERS_STORE_PROPERTY, {\n enumerable: false,\n value: [],\n });\n }\n if (value === undefined)\n return { isLayerPathStored: false };\n request[internal_types_1._LAYERS_STORE_PROPERTY].push(value);\n return { isLayerPathStored: true };\n};\nexports.storeLayerPath = storeLayerPath;\n/**\n * Recursively search the router path from layer stack\n * @param path The path to reconstruct\n * @param layer The layer to reconstruct from\n * @returns The reconstructed path\n */\nconst getRouterPath = (path, layer) => {\n const stackLayer = layer.handle?.stack?.[0];\n if (stackLayer?.route?.path) {\n return `${path}${stackLayer.route.path}`;\n }\n if (stackLayer?.handle?.stack) {\n return (0, exports.getRouterPath)(path, stackLayer);\n }\n return path;\n};\nexports.getRouterPath = getRouterPath;\n/**\n * Parse express layer context to retrieve a name and attributes.\n * @param route The route of the layer\n * @param layer Express layer\n * @param [layerPath] if present, the path on which the layer has been mounted\n */\nconst getLayerMetadata = (route, layer, layerPath) => {\n if (layer.name === 'router') {\n const maybeRouterPath = (0, exports.getRouterPath)('', layer);\n const extractedRouterPath = maybeRouterPath\n ? maybeRouterPath\n : layerPath || route || '/';\n return {\n attributes: {\n [AttributeNames_1.AttributeNames.EXPRESS_NAME]: extractedRouterPath,\n [AttributeNames_1.AttributeNames.EXPRESS_TYPE]: ExpressLayerType_1.ExpressLayerType.ROUTER,\n },\n name: `router - ${extractedRouterPath}`,\n };\n }\n else if (layer.name === 'bound dispatch' || layer.name === 'handle') {\n return {\n attributes: {\n [AttributeNames_1.AttributeNames.EXPRESS_NAME]: (route || layerPath) ?? 'request handler',\n [AttributeNames_1.AttributeNames.EXPRESS_TYPE]: ExpressLayerType_1.ExpressLayerType.REQUEST_HANDLER,\n },\n name: `request handler${layer.path ? ` - ${route || layerPath}` : ''}`,\n };\n }\n else {\n return {\n attributes: {\n [AttributeNames_1.AttributeNames.EXPRESS_NAME]: layer.name,\n [AttributeNames_1.AttributeNames.EXPRESS_TYPE]: ExpressLayerType_1.ExpressLayerType.MIDDLEWARE,\n },\n name: `middleware - ${layer.name}`,\n };\n }\n};\nexports.getLayerMetadata = getLayerMetadata;\n/**\n * Check whether the given obj match pattern\n * @param constant e.g URL of request\n * @param obj obj to inspect\n * @param pattern Match pattern\n */\nconst satisfiesPattern = (constant, pattern) => {\n if (typeof pattern === 'string') {\n return pattern === constant;\n }\n else if (pattern instanceof RegExp) {\n return pattern.test(constant);\n }\n else if (typeof pattern === 'function') {\n return pattern(constant);\n }\n else {\n throw new TypeError('Pattern is in unsupported datatype');\n }\n};\n/**\n * Check whether the given request is ignored by configuration\n * It will not re-throw exceptions from `list` provided by the client\n * @param constant e.g URL of request\n * @param [list] List of ignore patterns\n * @param [onException] callback for doing something when an exception has\n * occurred\n */\nconst isLayerIgnored = (name, type, config) => {\n if (Array.isArray(config?.ignoreLayersType) &&\n config?.ignoreLayersType?.includes(type)) {\n return true;\n }\n if (Array.isArray(config?.ignoreLayers) === false)\n return false;\n try {\n for (const pattern of config.ignoreLayers) {\n if (satisfiesPattern(name, pattern)) {\n return true;\n }\n }\n }\n catch (e) {\n /* catch block*/\n }\n return false;\n};\nexports.isLayerIgnored = isLayerIgnored;\n/**\n * Converts a user-provided error value into an error and error message pair\n *\n * @param error - User-provided error value\n * @returns Both an Error or string representation of the value and an error message\n */\nconst asErrorAndMessage = (error) => error instanceof Error\n ? [error, error.message]\n : [String(error), String(error)];\nexports.asErrorAndMessage = asErrorAndMessage;\n/**\n * Extracts the layer path from the route arguments\n *\n * @param args - Arguments of the route\n * @returns The layer path\n */\nconst getLayerPath = (args) => {\n const firstArg = args[0];\n if (Array.isArray(firstArg)) {\n return firstArg.map(arg => extractLayerPathSegment(arg) || '').join(',');\n }\n return extractLayerPathSegment(firstArg);\n};\nexports.getLayerPath = getLayerPath;\nconst extractLayerPathSegment = (arg) => {\n if (typeof arg === 'string') {\n return arg;\n }\n if (arg instanceof RegExp || typeof arg === 'number') {\n return arg.toString();\n }\n return;\n};\nfunction getConstructedRoute(req) {\n const layersStore = Array.isArray(req[internal_types_1._LAYERS_STORE_PROPERTY])\n ? req[internal_types_1._LAYERS_STORE_PROPERTY]\n : [];\n const meaningfulPaths = layersStore.filter(path => path !== '/' && path !== '/*');\n if (meaningfulPaths.length === 1 && meaningfulPaths[0] === '*') {\n return '*';\n }\n // Join parts and remove duplicate slashes\n return meaningfulPaths.join('').replace(/\\/{2,}/g, '/');\n}\nexports.getConstructedRoute = getConstructedRoute;\n/**\n * Extracts the actual matched route from Express request for OpenTelemetry instrumentation.\n * Returns the route that should be used as the http.route attribute.\n *\n * @param req - The Express request object with layers store\n * @param layersStoreProperty - The property name where layer paths are stored\n * @returns The matched route string or undefined if no valid route is found\n */\nfunction getActualMatchedRoute(req) {\n const layersStore = Array.isArray(req[internal_types_1._LAYERS_STORE_PROPERTY])\n ? req[internal_types_1._LAYERS_STORE_PROPERTY]\n : [];\n // If no layers are stored, no route can be determined\n if (layersStore.length === 0) {\n return undefined;\n }\n // Handle root path case - if all paths are root, only return root if originalUrl is also root\n // The layer store also includes root paths in case a non-existing url was requested\n if (layersStore.every(path => path === '/')) {\n return req.originalUrl === '/' ? '/' : undefined;\n }\n const constructedRoute = getConstructedRoute(req);\n if (constructedRoute === '*') {\n return constructedRoute;\n }\n // For RegExp routes or route arrays, return the constructed route\n // This handles the case where the route is defined using RegExp or an array\n if (constructedRoute.includes('/') &&\n (constructedRoute.includes(',') ||\n constructedRoute.includes('\\\\') ||\n constructedRoute.includes('*') ||\n constructedRoute.includes('['))) {\n return constructedRoute;\n }\n // Ensure route starts with '/' if it doesn't already\n const normalizedRoute = constructedRoute.startsWith('/')\n ? constructedRoute\n : `/${constructedRoute}`;\n // Validate that this appears to be a matched route\n // A route is considered matched if:\n // 1. We have a constructed route\n // 2. The original URL matches or starts with our route pattern\n const isValidRoute = normalizedRoute.length > 0 &&\n (req.originalUrl === normalizedRoute ||\n req.originalUrl.startsWith(normalizedRoute) ||\n isRoutePattern(normalizedRoute));\n return isValidRoute ? normalizedRoute : undefined;\n}\nexports.getActualMatchedRoute = getActualMatchedRoute;\n/**\n * Checks if a route contains parameter patterns (e.g., :id, :userId)\n * which are valid even if they don't exactly match the original URL\n */\nfunction isRoutePattern(route) {\n return route.includes(':') || route.includes('*');\n}\n//# sourceMappingURL=utils.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvLnBucG0vQG9wZW50ZWxlbWV0cnkraW5zdHJ1bWVudGF0aW9uLWV4cHJlc3NAMC42Mi4wX0BvcGVudGVsZW1ldHJ5K2FwaUAxLjkuMS9ub2RlX21vZHVsZXMvQG9wZW50ZWxlbWV0cnkvaW5zdHJ1bWVudGF0aW9uLWV4cHJlc3MvYnVpbGQvc3JjL3V0aWxzLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOENBQTZDLEVBQUUsYUFBYSxFQUFDO0FBQzdELDZCQUE2QixHQUFHLDJCQUEyQixHQUFHLG9CQUFvQixHQUFHLHlCQUF5QixHQUFHLHNCQUFzQixHQUFHLHdCQUF3QixHQUFHLHFCQUFxQixHQUFHLHNCQUFzQjtBQUNuTiwyQkFBMkIsbUJBQU8sQ0FBQywyTkFBMEI7QUFDN0QseUJBQXlCLG1CQUFPLENBQUMsdU5BQXdCO0FBQ3pELHlCQUF5QixtQkFBTyxDQUFDLDJNQUFrQjtBQUNuRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0EsYUFBYTtBQUNiO0FBQ0Esc0JBQXNCO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQixLQUFLLEVBQUUsc0JBQXNCO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYiw4QkFBOEIsb0JBQW9CO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiLG9DQUFvQyxtQkFBbUIsbUJBQW1CLE9BQU87QUFDakY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2Isa0NBQWtDLFdBQVc7QUFDN0M7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0I7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdEQUFnRCxHQUFHO0FBQ25EO0FBQ0EsMkJBQTJCO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxpQkFBaUI7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkI7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsiL1VzZXJzL21hcmNtaW50ZWwvUHJvamVjdHMvZS10aWIuY29tL25vZGVfbW9kdWxlcy8ucG5wbS9Ab3BlbnRlbGVtZXRyeStpbnN0cnVtZW50YXRpb24tZXhwcmVzc0AwLjYyLjBfQG9wZW50ZWxlbWV0cnkrYXBpQDEuOS4xL25vZGVfbW9kdWxlcy9Ab3BlbnRlbGVtZXRyeS9pbnN0cnVtZW50YXRpb24tZXhwcmVzcy9idWlsZC9zcmMvdXRpbHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG4vKlxuICogQ29weXJpZ2h0IFRoZSBPcGVuVGVsZW1ldHJ5IEF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5nZXRBY3R1YWxNYXRjaGVkUm91dGUgPSBleHBvcnRzLmdldENvbnN0cnVjdGVkUm91dGUgPSBleHBvcnRzLmdldExheWVyUGF0aCA9IGV4cG9ydHMuYXNFcnJvckFuZE1lc3NhZ2UgPSBleHBvcnRzLmlzTGF5ZXJJZ25vcmVkID0gZXhwb3J0cy5nZXRMYXllck1ldGFkYXRhID0gZXhwb3J0cy5nZXRSb3V0ZXJQYXRoID0gZXhwb3J0cy5zdG9yZUxheWVyUGF0aCA9IHZvaWQgMDtcbmNvbnN0IEV4cHJlc3NMYXllclR5cGVfMSA9IHJlcXVpcmUoXCIuL2VudW1zL0V4cHJlc3NMYXllclR5cGVcIik7XG5jb25zdCBBdHRyaWJ1dGVOYW1lc18xID0gcmVxdWlyZShcIi4vZW51bXMvQXR0cmlidXRlTmFtZXNcIik7XG5jb25zdCBpbnRlcm5hbF90eXBlc18xID0gcmVxdWlyZShcIi4vaW50ZXJuYWwtdHlwZXNcIik7XG4vKipcbiAqIFN0b3JlIGxheWVycyBwYXRoIGluIHRoZSByZXF1ZXN0IHRvIGJlIGFibGUgdG8gY29uc3RydWN0IHJvdXRlIGxhdGVyXG4gKiBAcGFyYW0gcmVxdWVzdCBUaGUgcmVxdWVzdCB3aGVyZVxuICogQHBhcmFtIFt2YWx1ZV0gdGhlIHZhbHVlIHRvIHB1c2ggaW50byB0aGUgYXJyYXlcbiAqL1xuY29uc3Qgc3RvcmVMYXllclBhdGggPSAocmVxdWVzdCwgdmFsdWUpID0+IHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShyZXF1ZXN0W2ludGVybmFsX3R5cGVzXzEuX0xBWUVSU19TVE9SRV9QUk9QRVJUWV0pID09PSBmYWxzZSkge1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocmVxdWVzdCwgaW50ZXJuYWxfdHlwZXNfMS5fTEFZRVJTX1NUT1JFX1BST1BFUlRZLCB7XG4gICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgIHZhbHVlOiBbXSxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKVxuICAgICAgICByZXR1cm4geyBpc0xheWVyUGF0aFN0b3JlZDogZmFsc2UgfTtcbiAgICByZXF1ZXN0W2ludGVybmFsX3R5cGVzXzEuX0xBWUVSU19TVE9SRV9QUk9QRVJUWV0ucHVzaCh2YWx1ZSk7XG4gICAgcmV0dXJuIHsgaXNMYXllclBhdGhTdG9yZWQ6IHRydWUgfTtcbn07XG5leHBvcnRzLnN0b3JlTGF5ZXJQYXRoID0gc3RvcmVMYXllclBhdGg7XG4vKipcbiAqIFJlY3Vyc2l2ZWx5IHNlYXJjaCB0aGUgcm91dGVyIHBhdGggZnJvbSBsYXllciBzdGFja1xuICogQHBhcmFtIHBhdGggVGhlIHBhdGggdG8gcmVjb25zdHJ1Y3RcbiAqIEBwYXJhbSBsYXllciBUaGUgbGF5ZXIgdG8gcmVjb25zdHJ1Y3QgZnJvbVxuICogQHJldHVybnMgVGhlIHJlY29uc3RydWN0ZWQgcGF0aFxuICovXG5jb25zdCBnZXRSb3V0ZXJQYXRoID0gKHBhdGgsIGxheWVyKSA9PiB7XG4gICAgY29uc3Qgc3RhY2tMYXllciA9IGxheWVyLmhhbmRsZT8uc3RhY2s/LlswXTtcbiAgICBpZiAoc3RhY2tMYXllcj8ucm91dGU/LnBhdGgpIHtcbiAgICAgICAgcmV0dXJuIGAke3BhdGh9JHtzdGFja0xheWVyLnJvdXRlLnBhdGh9YDtcbiAgICB9XG4gICAgaWYgKHN0YWNrTGF5ZXI/LmhhbmRsZT8uc3RhY2spIHtcbiAgICAgICAgcmV0dXJuICgwLCBleHBvcnRzLmdldFJvdXRlclBhdGgpKHBhdGgsIHN0YWNrTGF5ZXIpO1xuICAgIH1cbiAgICByZXR1cm4gcGF0aDtcbn07XG5leHBvcnRzLmdldFJvdXRlclBhdGggPSBnZXRSb3V0ZXJQYXRoO1xuLyoqXG4gKiBQYXJzZSBleHByZXNzIGxheWVyIGNvbnRleHQgdG8gcmV0cmlldmUgYSBuYW1lIGFuZCBhdHRyaWJ1dGVzLlxuICogQHBhcmFtIHJvdXRlIFRoZSByb3V0ZSBvZiB0aGUgbGF5ZXJcbiAqIEBwYXJhbSBsYXllciBFeHByZXNzIGxheWVyXG4gKiBAcGFyYW0gW2xheWVyUGF0aF0gaWYgcHJlc2VudCwgdGhlIHBhdGggb24gd2hpY2ggdGhlIGxheWVyIGhhcyBiZWVuIG1vdW50ZWRcbiAqL1xuY29uc3QgZ2V0TGF5ZXJNZXRhZGF0YSA9IChyb3V0ZSwgbGF5ZXIsIGxheWVyUGF0aCkgPT4ge1xuICAgIGlmIChsYXllci5uYW1lID09PSAncm91dGVyJykge1xuICAgICAgICBjb25zdCBtYXliZVJvdXRlclBhdGggPSAoMCwgZXhwb3J0cy5nZXRSb3V0ZXJQYXRoKSgnJywgbGF5ZXIpO1xuICAgICAgICBjb25zdCBleHRyYWN0ZWRSb3V0ZXJQYXRoID0gbWF5YmVSb3V0ZXJQYXRoXG4gICAgICAgICAgICA/IG1heWJlUm91dGVyUGF0aFxuICAgICAgICAgICAgOiBsYXllclBhdGggfHwgcm91dGUgfHwgJy8nO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICAgICAgICAgIFtBdHRyaWJ1dGVOYW1lc18xLkF0dHJpYnV0ZU5hbWVzLkVYUFJFU1NfTkFNRV06IGV4dHJhY3RlZFJvdXRlclBhdGgsXG4gICAgICAgICAgICAgICAgW0F0dHJpYnV0ZU5hbWVzXzEuQXR0cmlidXRlTmFtZXMuRVhQUkVTU19UWVBFXTogRXhwcmVzc0xheWVyVHlwZV8xLkV4cHJlc3NMYXllclR5cGUuUk9VVEVSLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5hbWU6IGByb3V0ZXIgLSAke2V4dHJhY3RlZFJvdXRlclBhdGh9YCxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgZWxzZSBpZiAobGF5ZXIubmFtZSA9PT0gJ2JvdW5kIGRpc3BhdGNoJyB8fCBsYXllci5uYW1lID09PSAnaGFuZGxlJykge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICAgICAgICAgIFtBdHRyaWJ1dGVOYW1lc18xLkF0dHJpYnV0ZU5hbWVzLkVYUFJFU1NfTkFNRV06IChyb3V0ZSB8fCBsYXllclBhdGgpID8/ICdyZXF1ZXN0IGhhbmRsZXInLFxuICAgICAgICAgICAgICAgIFtBdHRyaWJ1dGVOYW1lc18xLkF0dHJpYnV0ZU5hbWVzLkVYUFJFU1NfVFlQRV06IEV4cHJlc3NMYXllclR5cGVfMS5FeHByZXNzTGF5ZXJUeXBlLlJFUVVFU1RfSEFORExFUixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuYW1lOiBgcmVxdWVzdCBoYW5kbGVyJHtsYXllci5wYXRoID8gYCAtICR7cm91dGUgfHwgbGF5ZXJQYXRofWAgOiAnJ31gLFxuICAgICAgICB9O1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICAgICAgICBbQXR0cmlidXRlTmFtZXNfMS5BdHRyaWJ1dGVOYW1lcy5FWFBSRVNTX05BTUVdOiBsYXllci5uYW1lLFxuICAgICAgICAgICAgICAgIFtBdHRyaWJ1dGVOYW1lc18xLkF0dHJpYnV0ZU5hbWVzLkVYUFJFU1NfVFlQRV06IEV4cHJlc3NMYXllclR5cGVfMS5FeHByZXNzTGF5ZXJUeXBlLk1JRERMRVdBUkUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbmFtZTogYG1pZGRsZXdhcmUgLSAke2xheWVyLm5hbWV9YCxcbiAgICAgICAgfTtcbiAgICB9XG59O1xuZXhwb3J0cy5nZXRMYXllck1ldGFkYXRhID0gZ2V0TGF5ZXJNZXRhZGF0YTtcbi8qKlxuICogQ2hlY2sgd2hldGhlciB0aGUgZ2l2ZW4gb2JqIG1hdGNoIHBhdHRlcm5cbiAqIEBwYXJhbSBjb25zdGFudCBlLmcgVVJMIG9mIHJlcXVlc3RcbiAqIEBwYXJhbSBvYmogb2JqIHRvIGluc3BlY3RcbiAqIEBwYXJhbSBwYXR0ZXJuIE1hdGNoIHBhdHRlcm5cbiAqL1xuY29uc3Qgc2F0aXNmaWVzUGF0dGVybiA9IChjb25zdGFudCwgcGF0dGVybikgPT4ge1xuICAgIGlmICh0eXBlb2YgcGF0dGVybiA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIHBhdHRlcm4gPT09IGNvbnN0YW50O1xuICAgIH1cbiAgICBlbHNlIGlmIChwYXR0ZXJuIGluc3RhbmNlb2YgUmVnRXhwKSB7XG4gICAgICAgIHJldHVybiBwYXR0ZXJuLnRlc3QoY29uc3RhbnQpO1xuICAgIH1cbiAgICBlbHNlIGlmICh0eXBlb2YgcGF0dGVybiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gcGF0dGVybihjb25zdGFudCk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdQYXR0ZXJuIGlzIGluIHVuc3VwcG9ydGVkIGRhdGF0eXBlJyk7XG4gICAgfVxufTtcbi8qKlxuICogQ2hlY2sgd2hldGhlciB0aGUgZ2l2ZW4gcmVxdWVzdCBpcyBpZ25vcmVkIGJ5IGNvbmZpZ3VyYXRpb25cbiAqIEl0IHdpbGwgbm90IHJlLXRocm93IGV4Y2VwdGlvbnMgZnJvbSBgbGlzdGAgcHJvdmlkZWQgYnkgdGhlIGNsaWVudFxuICogQHBhcmFtIGNvbnN0YW50IGUuZyBVUkwgb2YgcmVxdWVzdFxuICogQHBhcmFtIFtsaXN0XSBMaXN0IG9mIGlnbm9yZSBwYXR0ZXJuc1xuICogQHBhcmFtIFtvbkV4Y2VwdGlvbl0gY2FsbGJhY2sgZm9yIGRvaW5nIHNvbWV0aGluZyB3aGVuIGFuIGV4Y2VwdGlvbiBoYXNcbiAqICAgICBvY2N1cnJlZFxuICovXG5jb25zdCBpc0xheWVySWdub3JlZCA9IChuYW1lLCB0eXBlLCBjb25maWcpID0+IHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShjb25maWc/Lmlnbm9yZUxheWVyc1R5cGUpICYmXG4gICAgICAgIGNvbmZpZz8uaWdub3JlTGF5ZXJzVHlwZT8uaW5jbHVkZXModHlwZSkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmIChBcnJheS5pc0FycmF5KGNvbmZpZz8uaWdub3JlTGF5ZXJzKSA9PT0gZmFsc2UpXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB0cnkge1xuICAgICAgICBmb3IgKGNvbnN0IHBhdHRlcm4gb2YgY29uZmlnLmlnbm9yZUxheWVycykge1xuICAgICAgICAgICAgaWYgKHNhdGlzZmllc1BhdHRlcm4obmFtZSwgcGF0dGVybikpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBjYXRjaCAoZSkge1xuICAgICAgICAvKiBjYXRjaCBibG9jayovXG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbn07XG5leHBvcnRzLmlzTGF5ZXJJZ25vcmVkID0gaXNMYXllcklnbm9yZWQ7XG4vKipcbiAqIENvbnZlcnRzIGEgdXNlci1wcm92aWRlZCBlcnJvciB2YWx1ZSBpbnRvIGFuIGVycm9yIGFuZCBlcnJvciBtZXNzYWdlIHBhaXJcbiAqXG4gKiBAcGFyYW0gZXJyb3IgLSBVc2VyLXByb3ZpZGVkIGVycm9yIHZhbHVlXG4gKiBAcmV0dXJucyBCb3RoIGFuIEVycm9yIG9yIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgdmFsdWUgYW5kIGFuIGVycm9yIG1lc3NhZ2VcbiAqL1xuY29uc3QgYXNFcnJvckFuZE1lc3NhZ2UgPSAoZXJyb3IpID0+IGVycm9yIGluc3RhbmNlb2YgRXJyb3JcbiAgICA/IFtlcnJvciwgZXJyb3IubWVzc2FnZV1cbiAgICA6IFtTdHJpbmcoZXJyb3IpLCBTdHJpbmcoZXJyb3IpXTtcbmV4cG9ydHMuYXNFcnJvckFuZE1lc3NhZ2UgPSBhc0Vycm9yQW5kTWVzc2FnZTtcbi8qKlxuICogRXh0cmFjdHMgdGhlIGxheWVyIHBhdGggZnJvbSB0aGUgcm91dGUgYXJndW1lbnRzXG4gKlxuICogQHBhcmFtIGFyZ3MgLSBBcmd1bWVudHMgb2YgdGhlIHJvdXRlXG4gKiBAcmV0dXJucyBUaGUgbGF5ZXIgcGF0aFxuICovXG5jb25zdCBnZXRMYXllclBhdGggPSAoYXJncykgPT4ge1xuICAgIGNvbnN0IGZpcnN0QXJnID0gYXJnc1swXTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShmaXJzdEFyZykpIHtcbiAgICAgICAgcmV0dXJuIGZpcnN0QXJnLm1hcChhcmcgPT4gZXh0cmFjdExheWVyUGF0aFNlZ21lbnQoYXJnKSB8fCAnJykuam9pbignLCcpO1xuICAgIH1cbiAgICByZXR1cm4gZXh0cmFjdExheWVyUGF0aFNlZ21lbnQoZmlyc3RBcmcpO1xufTtcbmV4cG9ydHMuZ2V0TGF5ZXJQYXRoID0gZ2V0TGF5ZXJQYXRoO1xuY29uc3QgZXh0cmFjdExheWVyUGF0aFNlZ21lbnQgPSAoYXJnKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBhcmcgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiBhcmc7XG4gICAgfVxuICAgIGlmIChhcmcgaW5zdGFuY2VvZiBSZWdFeHAgfHwgdHlwZW9mIGFyZyA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgcmV0dXJuIGFyZy50b1N0cmluZygpO1xuICAgIH1cbiAgICByZXR1cm47XG59O1xuZnVuY3Rpb24gZ2V0Q29uc3RydWN0ZWRSb3V0ZShyZXEpIHtcbiAgICBjb25zdCBsYXllcnNTdG9yZSA9IEFycmF5LmlzQXJyYXkocmVxW2ludGVybmFsX3R5cGVzXzEuX0xBWUVSU19TVE9SRV9QUk9QRVJUWV0pXG4gICAgICAgID8gcmVxW2ludGVybmFsX3R5cGVzXzEuX0xBWUVSU19TVE9SRV9QUk9QRVJUWV1cbiAgICAgICAgOiBbXTtcbiAgICBjb25zdCBtZWFuaW5nZnVsUGF0aHMgPSBsYXllcnNTdG9yZS5maWx0ZXIocGF0aCA9PiBwYXRoICE9PSAnLycgJiYgcGF0aCAhPT0gJy8qJyk7XG4gICAgaWYgKG1lYW5pbmdmdWxQYXRocy5sZW5ndGggPT09IDEgJiYgbWVhbmluZ2Z1bFBhdGhzWzBdID09PSAnKicpIHtcbiAgICAgICAgcmV0dXJuICcqJztcbiAgICB9XG4gICAgLy8gSm9pbiBwYXJ0cyBhbmQgcmVtb3ZlIGR1cGxpY2F0ZSBzbGFzaGVzXG4gICAgcmV0dXJuIG1lYW5pbmdmdWxQYXRocy5qb2luKCcnKS5yZXBsYWNlKC9cXC97Mix9L2csICcvJyk7XG59XG5leHBvcnRzLmdldENvbnN0cnVjdGVkUm91dGUgPSBnZXRDb25zdHJ1Y3RlZFJvdXRlO1xuLyoqXG4gKiBFeHRyYWN0cyB0aGUgYWN0dWFsIG1hdGNoZWQgcm91dGUgZnJvbSBFeHByZXNzIHJlcXVlc3QgZm9yIE9wZW5UZWxlbWV0cnkgaW5zdHJ1bWVudGF0aW9uLlxuICogUmV0dXJucyB0aGUgcm91dGUgdGhhdCBzaG91bGQgYmUgdXNlZCBhcyB0aGUgaHR0cC5yb3V0ZSBhdHRyaWJ1dGUuXG4gKlxuICogQHBhcmFtIHJlcSAtIFRoZSBFeHByZXNzIHJlcXVlc3Qgb2JqZWN0IHdpdGggbGF5ZXJzIHN0b3JlXG4gKiBAcGFyYW0gbGF5ZXJzU3RvcmVQcm9wZXJ0eSAtIFRoZSBwcm9wZXJ0eSBuYW1lIHdoZXJlIGxheWVyIHBhdGhzIGFyZSBzdG9yZWRcbiAqIEByZXR1cm5zIFRoZSBtYXRjaGVkIHJvdXRlIHN0cmluZyBvciB1bmRlZmluZWQgaWYgbm8gdmFsaWQgcm91dGUgaXMgZm91bmRcbiAqL1xuZnVuY3Rpb24gZ2V0QWN0dWFsTWF0Y2hlZFJvdXRlKHJlcSkge1xuICAgIGNvbnN0IGxheWVyc1N0b3JlID0gQXJyYXkuaXNBcnJheShyZXFbaW50ZXJuYWxfdHlwZXNfMS5fTEFZRVJTX1NUT1JFX1BST1BFUlRZXSlcbiAgICAgICAgPyByZXFbaW50ZXJuYWxfdHlwZXNfMS5fTEFZRVJTX1NUT1JFX1BST1BFUlRZXVxuICAgICAgICA6IFtdO1xuICAgIC8vIElmIG5vIGxheWVycyBhcmUgc3RvcmVkLCBubyByb3V0ZSBjYW4gYmUgZGV0ZXJtaW5lZFxuICAgIGlmIChsYXllcnNTdG9yZS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgLy8gSGFuZGxlIHJvb3QgcGF0aCBjYXNlIC0gaWYgYWxsIHBhdGhzIGFyZSByb290LCBvbmx5IHJldHVybiByb290IGlmIG9yaWdpbmFsVXJsIGlzIGFsc28gcm9vdFxuICAgIC8vIFRoZSBsYXllciBzdG9yZSBhbHNvIGluY2x1ZGVzIHJvb3QgcGF0aHMgaW4gY2FzZSBhIG5vbi1leGlzdGluZyB1cmwgd2FzIHJlcXVlc3RlZFxuICAgIGlmIChsYXllcnNTdG9yZS5ldmVyeShwYXRoID0+IHBhdGggPT09ICcvJykpIHtcbiAgICAgICAgcmV0dXJuIHJlcS5vcmlnaW5hbFVybCA9PT0gJy8nID8gJy8nIDogdW5kZWZpbmVkO1xuICAgIH1cbiAgICBjb25zdCBjb25zdHJ1Y3RlZFJvdXRlID0gZ2V0Q29uc3RydWN0ZWRSb3V0ZShyZXEpO1xuICAgIGlmIChjb25zdHJ1Y3RlZFJvdXRlID09PSAnKicpIHtcbiAgICAgICAgcmV0dXJuIGNvbnN0cnVjdGVkUm91dGU7XG4gICAgfVxuICAgIC8vIEZvciBSZWdFeHAgcm91dGVzIG9yIHJvdXRlIGFycmF5cywgcmV0dXJuIHRoZSBjb25zdHJ1Y3RlZCByb3V0ZVxuICAgIC8vIFRoaXMgaGFuZGxlcyB0aGUgY2FzZSB3aGVyZSB0aGUgcm91dGUgaXMgZGVmaW5lZCB1c2luZyBSZWdFeHAgb3IgYW4gYXJyYXlcbiAgICBpZiAoY29uc3RydWN0ZWRSb3V0ZS5pbmNsdWRlcygnLycpICYmXG4gICAgICAgIChjb25zdHJ1Y3RlZFJvdXRlLmluY2x1ZGVzKCcsJykgfHxcbiAgICAgICAgICAgIGNvbnN0cnVjdGVkUm91dGUuaW5jbHVkZXMoJ1xcXFwnKSB8fFxuICAgICAgICAgICAgY29uc3RydWN0ZWRSb3V0ZS5pbmNsdWRlcygnKicpIHx8XG4gICAgICAgICAgICBjb25zdHJ1Y3RlZFJvdXRlLmluY2x1ZGVzKCdbJykpKSB7XG4gICAgICAgIHJldHVybiBjb25zdHJ1Y3RlZFJvdXRlO1xuICAgIH1cbiAgICAvLyBFbnN1cmUgcm91dGUgc3RhcnRzIHdpdGggJy8nIGlmIGl0IGRvZXNuJ3QgYWxyZWFkeVxuICAgIGNvbnN0IG5vcm1hbGl6ZWRSb3V0ZSA9IGNvbnN0cnVjdGVkUm91dGUuc3RhcnRzV2l0aCgnLycpXG4gICAgICAgID8gY29uc3RydWN0ZWRSb3V0ZVxuICAgICAgICA6IGAvJHtjb25zdHJ1Y3RlZFJvdXRlfWA7XG4gICAgLy8gVmFsaWRhdGUgdGhhdCB0aGlzIGFwcGVhcnMgdG8gYmUgYSBtYXRjaGVkIHJvdXRlXG4gICAgLy8gQSByb3V0ZSBpcyBjb25zaWRlcmVkIG1hdGNoZWQgaWY6XG4gICAgLy8gMS4gV2UgaGF2ZSBhIGNvbnN0cnVjdGVkIHJvdXRlXG4gICAgLy8gMi4gVGhlIG9yaWdpbmFsIFVSTCBtYXRjaGVzIG9yIHN0YXJ0cyB3aXRoIG91ciByb3V0ZSBwYXR0ZXJuXG4gICAgY29uc3QgaXNWYWxpZFJvdXRlID0gbm9ybWFsaXplZFJvdXRlLmxlbmd0aCA+IDAgJiZcbiAgICAgICAgKHJlcS5vcmlnaW5hbFVybCA9PT0gbm9ybWFsaXplZFJvdXRlIHx8XG4gICAgICAgICAgICByZXEub3JpZ2luYWxVcmwuc3RhcnRzV2l0aChub3JtYWxpemVkUm91dGUpIHx8XG4gICAgICAgICAgICBpc1JvdXRlUGF0dGVybihub3JtYWxpemVkUm91dGUpKTtcbiAgICByZXR1cm4gaXNWYWxpZFJvdXRlID8gbm9ybWFsaXplZFJvdXRlIDogdW5kZWZpbmVkO1xufVxuZXhwb3J0cy5nZXRBY3R1YWxNYXRjaGVkUm91dGUgPSBnZXRBY3R1YWxNYXRjaGVkUm91dGU7XG4vKipcbiAqIENoZWNrcyBpZiBhIHJvdXRlIGNvbnRhaW5zIHBhcmFtZXRlciBwYXR0ZXJucyAoZS5nLiwgOmlkLCA6dXNlcklkKVxuICogd2hpY2ggYXJlIHZhbGlkIGV2ZW4gaWYgdGhleSBkb24ndCBleGFjdGx5IG1hdGNoIHRoZSBvcmlnaW5hbCBVUkxcbiAqL1xuZnVuY3Rpb24gaXNSb3V0ZVBhdHRlcm4ocm91dGUpIHtcbiAgICByZXR1cm4gcm91dGUuaW5jbHVkZXMoJzonKSB8fCByb3V0ZS5pbmNsdWRlcygnKicpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dXRpbHMuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/.pnpm/@opentelemetry+instrumentation-express@0.62.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-express/build/src/utils.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/.pnpm/@opentelemetry+instrumentation-express@0.62.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-express/build/src/version.js":
/*!****************************************************************************************************************************************************************************!*\
!*** ./node_modules/.pnpm/@opentelemetry+instrumentation-express@0.62.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-express/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.62.0';\nexports.PACKAGE_NAME = '@opentelemetry/instrumentation-express';\n//# sourceMappingURL=version.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvLnBucG0vQG9wZW50ZWxlbWV0cnkraW5zdHJ1bWVudGF0aW9uLWV4cHJlc3NAMC42Mi4wX0BvcGVudGVsZW1ldHJ5K2FwaUAxLjkuMS9ub2RlX21vZHVsZXMvQG9wZW50ZWxlbWV0cnkvaW5zdHJ1bWVudGF0aW9uLWV4cHJlc3MvYnVpbGQvc3JjL3ZlcnNpb24uanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4Q0FBNkMsRUFBRSxhQUFhLEVBQUM7QUFDN0Qsb0JBQW9CLEdBQUcsdUJBQXVCO0FBQzlDO0FBQ0EsdUJBQXVCO0FBQ3ZCLG9CQUFvQjtBQUNwQiIsInNvdXJjZXMiOlsiL1VzZXJzL21hcmNtaW50ZWwvUHJvamVjdHMvZS10aWIuY29tL25vZGVfbW9kdWxlcy8ucG5wbS9Ab3BlbnRlbGVtZXRyeStpbnN0cnVtZW50YXRpb24tZXhwcmVzc0AwLjYyLjBfQG9wZW50ZWxlbWV0cnkrYXBpQDEuOS4xL25vZGVfbW9kdWxlcy9Ab3BlbnRlbGVtZXRyeS9pbnN0cnVtZW50YXRpb24tZXhwcmVzcy9idWlsZC9zcmMvdmVyc2lvbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbi8qXG4gKiBDb3B5cmlnaHQgVGhlIE9wZW5UZWxlbWV0cnkgQXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLlBBQ0tBR0VfTkFNRSA9IGV4cG9ydHMuUEFDS0FHRV9WRVJTSU9OID0gdm9pZCAwO1xuLy8gdGhpcyBpcyBhdXRvZ2VuZXJhdGVkIGZpbGUsIHNlZSBzY3JpcHRzL3ZlcnNpb24tdXBkYXRlLmpzXG5leHBvcnRzLlBBQ0tBR0VfVkVSU0lPTiA9ICcwLjYyLjAnO1xuZXhwb3J0cy5QQUNLQUdFX05BTUUgPSAnQG9wZW50ZWxlbWV0cnkvaW5zdHJ1bWVudGF0aW9uLWV4cHJlc3MnO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dmVyc2lvbi5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/.pnpm/@opentelemetry+instrumentation-express@0.62.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-express/build/src/version.js\n");
/***/ })
};
;