175 lines
280 KiB
JavaScript
175 lines
280 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-pg@0.66.0_@opentelemetry+api@1.9.1";
|
|
exports.ids = ["vendor-chunks/@opentelemetry+instrumentation-pg@0.66.0_@opentelemetry+api@1.9.1"];
|
|
exports.modules = {
|
|
|
|
/***/ "(rsc)/./node_modules/.pnpm/@opentelemetry+instrumentation-pg@0.66.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-pg/build/src/enums/AttributeNames.js":
|
|
/*!*******************************************************************************************************************************************************************************!*\
|
|
!*** ./node_modules/.pnpm/@opentelemetry+instrumentation-pg@0.66.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-pg/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 */\n// Postgresql specific attributes not covered by semantic conventions\nvar AttributeNames;\n(function (AttributeNames) {\n AttributeNames[\"PG_VALUES\"] = \"db.postgresql.values\";\n AttributeNames[\"PG_PLAN\"] = \"db.postgresql.plan\";\n AttributeNames[\"IDLE_TIMEOUT_MILLIS\"] = \"db.postgresql.idle.timeout.millis\";\n AttributeNames[\"MAX_CLIENT\"] = \"db.postgresql.max.client\";\n})(AttributeNames = exports.AttributeNames || (exports.AttributeNames = {}));\n//# sourceMappingURL=AttributeNames.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvLnBucG0vQG9wZW50ZWxlbWV0cnkraW5zdHJ1bWVudGF0aW9uLXBnQDAuNjYuMF9Ab3BlbnRlbGVtZXRyeSthcGlAMS45LjEvbm9kZV9tb2R1bGVzL0BvcGVudGVsZW1ldHJ5L2luc3RydW1lbnRhdGlvbi1wZy9idWlsZC9zcmMvZW51bXMvQXR0cmlidXRlTmFtZXMuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkMsRUFBRSxhQUFhLEVBQUM7QUFDN0Qsc0JBQXNCO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyw4Q0FBOEMsc0JBQXNCLEtBQUs7QUFDMUUiLCJzb3VyY2VzIjpbIi9Vc2Vycy9tYXJjbWludGVsL1Byb2plY3RzL2UtdGliLmNvbS9ub2RlX21vZHVsZXMvLnBucG0vQG9wZW50ZWxlbWV0cnkraW5zdHJ1bWVudGF0aW9uLXBnQDAuNjYuMF9Ab3BlbnRlbGVtZXRyeSthcGlAMS45LjEvbm9kZV9tb2R1bGVzL0BvcGVudGVsZW1ldHJ5L2luc3RydW1lbnRhdGlvbi1wZy9idWlsZC9zcmMvZW51bXMvQXR0cmlidXRlTmFtZXMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLkF0dHJpYnV0ZU5hbWVzID0gdm9pZCAwO1xuLypcbiAqIENvcHlyaWdodCBUaGUgT3BlblRlbGVtZXRyeSBBdXRob3JzXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8vIFBvc3RncmVzcWwgc3BlY2lmaWMgYXR0cmlidXRlcyBub3QgY292ZXJlZCBieSBzZW1hbnRpYyBjb252ZW50aW9uc1xudmFyIEF0dHJpYnV0ZU5hbWVzO1xuKGZ1bmN0aW9uIChBdHRyaWJ1dGVOYW1lcykge1xuICAgIEF0dHJpYnV0ZU5hbWVzW1wiUEdfVkFMVUVTXCJdID0gXCJkYi5wb3N0Z3Jlc3FsLnZhbHVlc1wiO1xuICAgIEF0dHJpYnV0ZU5hbWVzW1wiUEdfUExBTlwiXSA9IFwiZGIucG9zdGdyZXNxbC5wbGFuXCI7XG4gICAgQXR0cmlidXRlTmFtZXNbXCJJRExFX1RJTUVPVVRfTUlMTElTXCJdID0gXCJkYi5wb3N0Z3Jlc3FsLmlkbGUudGltZW91dC5taWxsaXNcIjtcbiAgICBBdHRyaWJ1dGVOYW1lc1tcIk1BWF9DTElFTlRcIl0gPSBcImRiLnBvc3RncmVzcWwubWF4LmNsaWVudFwiO1xufSkoQXR0cmlidXRlTmFtZXMgPSBleHBvcnRzLkF0dHJpYnV0ZU5hbWVzIHx8IChleHBvcnRzLkF0dHJpYnV0ZU5hbWVzID0ge30pKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUF0dHJpYnV0ZU5hbWVzLmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/.pnpm/@opentelemetry+instrumentation-pg@0.66.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-pg/build/src/enums/AttributeNames.js\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(rsc)/./node_modules/.pnpm/@opentelemetry+instrumentation-pg@0.66.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-pg/build/src/enums/SpanNames.js":
|
|
/*!**************************************************************************************************************************************************************************!*\
|
|
!*** ./node_modules/.pnpm/@opentelemetry+instrumentation-pg@0.66.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-pg/build/src/enums/SpanNames.js ***!
|
|
\**************************************************************************************************************************************************************************/
|
|
/***/ ((__unused_webpack_module, exports) => {
|
|
|
|
eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SpanNames = 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 */\n// Contains span names produced by instrumentation\nvar SpanNames;\n(function (SpanNames) {\n SpanNames[\"QUERY_PREFIX\"] = \"pg.query\";\n SpanNames[\"CONNECT\"] = \"pg.connect\";\n SpanNames[\"POOL_CONNECT\"] = \"pg-pool.connect\";\n})(SpanNames = exports.SpanNames || (exports.SpanNames = {}));\n//# sourceMappingURL=SpanNames.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvLnBucG0vQG9wZW50ZWxlbWV0cnkraW5zdHJ1bWVudGF0aW9uLXBnQDAuNjYuMF9Ab3BlbnRlbGVtZXRyeSthcGlAMS45LjEvbm9kZV9tb2R1bGVzL0BvcGVudGVsZW1ldHJ5L2luc3RydW1lbnRhdGlvbi1wZy9idWlsZC9zcmMvZW51bXMvU3Bhbk5hbWVzLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQTZDLEVBQUUsYUFBYSxFQUFDO0FBQzdELGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLG9DQUFvQyxpQkFBaUIsS0FBSztBQUMzRCIsInNvdXJjZXMiOlsiL1VzZXJzL21hcmNtaW50ZWwvUHJvamVjdHMvZS10aWIuY29tL25vZGVfbW9kdWxlcy8ucG5wbS9Ab3BlbnRlbGVtZXRyeStpbnN0cnVtZW50YXRpb24tcGdAMC42Ni4wX0BvcGVudGVsZW1ldHJ5K2FwaUAxLjkuMS9ub2RlX21vZHVsZXMvQG9wZW50ZWxlbWV0cnkvaW5zdHJ1bWVudGF0aW9uLXBnL2J1aWxkL3NyYy9lbnVtcy9TcGFuTmFtZXMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLlNwYW5OYW1lcyA9IHZvaWQgMDtcbi8qXG4gKiBDb3B5cmlnaHQgVGhlIE9wZW5UZWxlbWV0cnkgQXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vLyBDb250YWlucyBzcGFuIG5hbWVzIHByb2R1Y2VkIGJ5IGluc3RydW1lbnRhdGlvblxudmFyIFNwYW5OYW1lcztcbihmdW5jdGlvbiAoU3Bhbk5hbWVzKSB7XG4gICAgU3Bhbk5hbWVzW1wiUVVFUllfUFJFRklYXCJdID0gXCJwZy5xdWVyeVwiO1xuICAgIFNwYW5OYW1lc1tcIkNPTk5FQ1RcIl0gPSBcInBnLmNvbm5lY3RcIjtcbiAgICBTcGFuTmFtZXNbXCJQT09MX0NPTk5FQ1RcIl0gPSBcInBnLXBvb2wuY29ubmVjdFwiO1xufSkoU3Bhbk5hbWVzID0gZXhwb3J0cy5TcGFuTmFtZXMgfHwgKGV4cG9ydHMuU3Bhbk5hbWVzID0ge30pKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVNwYW5OYW1lcy5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/.pnpm/@opentelemetry+instrumentation-pg@0.66.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-pg/build/src/enums/SpanNames.js\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(rsc)/./node_modules/.pnpm/@opentelemetry+instrumentation-pg@0.66.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-pg/build/src/index.js":
|
|
/*!****************************************************************************************************************************************************************!*\
|
|
!*** ./node_modules/.pnpm/@opentelemetry+instrumentation-pg@0.66.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-pg/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.PgInstrumentation = void 0;\nvar instrumentation_1 = __webpack_require__(/*! ./instrumentation */ \"(rsc)/./node_modules/.pnpm/@opentelemetry+instrumentation-pg@0.66.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-pg/build/src/instrumentation.js\");\nObject.defineProperty(exports, \"PgInstrumentation\", ({ enumerable: true, get: function () { return instrumentation_1.PgInstrumentation; } }));\nvar AttributeNames_1 = __webpack_require__(/*! ./enums/AttributeNames */ \"(rsc)/./node_modules/.pnpm/@opentelemetry+instrumentation-pg@0.66.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-pg/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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvLnBucG0vQG9wZW50ZWxlbWV0cnkraW5zdHJ1bWVudGF0aW9uLXBnQDAuNjYuMF9Ab3BlbnRlbGVtZXRyeSthcGlAMS45LjEvbm9kZV9tb2R1bGVzL0BvcGVudGVsZW1ldHJ5L2luc3RydW1lbnRhdGlvbi1wZy9idWlsZC9zcmMvaW5kZXguanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4Q0FBNkMsRUFBRSxhQUFhLEVBQUM7QUFDN0Qsc0JBQXNCLEdBQUcseUJBQXlCO0FBQ2xELHdCQUF3QixtQkFBTyxDQUFDLG1NQUFtQjtBQUNuRCxxREFBb0QsRUFBRSxxQ0FBcUMsK0NBQStDLEVBQUM7QUFDM0ksdUJBQXVCLG1CQUFPLENBQUMsNk1BQXdCO0FBQ3ZELGtEQUFpRCxFQUFFLHFDQUFxQywyQ0FBMkMsRUFBQztBQUNwSSIsInNvdXJjZXMiOlsiL1VzZXJzL21hcmNtaW50ZWwvUHJvamVjdHMvZS10aWIuY29tL25vZGVfbW9kdWxlcy8ucG5wbS9Ab3BlbnRlbGVtZXRyeStpbnN0cnVtZW50YXRpb24tcGdAMC42Ni4wX0BvcGVudGVsZW1ldHJ5K2FwaUAxLjkuMS9ub2RlX21vZHVsZXMvQG9wZW50ZWxlbWV0cnkvaW5zdHJ1bWVudGF0aW9uLXBnL2J1aWxkL3NyYy9pbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbi8qXG4gKiBDb3B5cmlnaHQgVGhlIE9wZW5UZWxlbWV0cnkgQXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLkF0dHJpYnV0ZU5hbWVzID0gZXhwb3J0cy5QZ0luc3RydW1lbnRhdGlvbiA9IHZvaWQgMDtcbnZhciBpbnN0cnVtZW50YXRpb25fMSA9IHJlcXVpcmUoXCIuL2luc3RydW1lbnRhdGlvblwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlBnSW5zdHJ1bWVudGF0aW9uXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBpbnN0cnVtZW50YXRpb25fMS5QZ0luc3RydW1lbnRhdGlvbjsgfSB9KTtcbnZhciBBdHRyaWJ1dGVOYW1lc18xID0gcmVxdWlyZShcIi4vZW51bXMvQXR0cmlidXRlTmFtZXNcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJBdHRyaWJ1dGVOYW1lc1wiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gQXR0cmlidXRlTmFtZXNfMS5BdHRyaWJ1dGVOYW1lczsgfSB9KTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/.pnpm/@opentelemetry+instrumentation-pg@0.66.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-pg/build/src/index.js\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(rsc)/./node_modules/.pnpm/@opentelemetry+instrumentation-pg@0.66.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-pg/build/src/instrumentation.js":
|
|
/*!**************************************************************************************************************************************************************************!*\
|
|
!*** ./node_modules/.pnpm/@opentelemetry+instrumentation-pg@0.66.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-pg/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;\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.PgInstrumentation = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst 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 api_1 = __webpack_require__(/*! @opentelemetry/api */ \"(rsc)/./node_modules/.pnpm/@opentelemetry+api@1.9.1/node_modules/@opentelemetry/api/build/esm/index.js\");\nconst internal_types_1 = __webpack_require__(/*! ./internal-types */ \"(rsc)/./node_modules/.pnpm/@opentelemetry+instrumentation-pg@0.66.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-pg/build/src/internal-types.js\");\nconst utils = __webpack_require__(/*! ./utils */ \"(rsc)/./node_modules/.pnpm/@opentelemetry+instrumentation-pg@0.66.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-pg/build/src/utils.js\");\nconst sql_common_1 = __webpack_require__(/*! @opentelemetry/sql-common */ \"(rsc)/./node_modules/.pnpm/@opentelemetry+sql-common@0.41.2_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/sql-common/build/src/index.js\");\n/** @knipignore */\nconst version_1 = __webpack_require__(/*! ./version */ \"(rsc)/./node_modules/.pnpm/@opentelemetry+instrumentation-pg@0.66.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-pg/build/src/version.js\");\nconst SpanNames_1 = __webpack_require__(/*! ./enums/SpanNames */ \"(rsc)/./node_modules/.pnpm/@opentelemetry+instrumentation-pg@0.66.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-pg/build/src/enums/SpanNames.js\");\nconst core_1 = __webpack_require__(/*! @opentelemetry/core */ \"(rsc)/./node_modules/.pnpm/@opentelemetry+core@2.6.1_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/core/build/esm/index.js\");\nconst 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 semconv_1 = __webpack_require__(/*! ./semconv */ \"(rsc)/./node_modules/.pnpm/@opentelemetry+instrumentation-pg@0.66.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-pg/build/src/semconv.js\");\nfunction extractModuleExports(module) {\n return module[Symbol.toStringTag] === 'Module'\n ? module.default // ESM\n : module; // CommonJS\n}\nclass PgInstrumentation extends instrumentation_1.InstrumentationBase {\n // Pool events connect, acquire, release and remove can be called\n // multiple times without changing the values of total, idle and waiting\n // connections. The _connectionsCounter is used to keep track of latest\n // values and only update the metrics _connectionsCount and _connectionPendingRequests\n // when the value change.\n _connectionsCounter = {\n used: 0,\n idle: 0,\n pending: 0,\n };\n _semconvStability;\n constructor(config = {}) {\n super(version_1.PACKAGE_NAME, version_1.PACKAGE_VERSION, config);\n this._semconvStability = (0, instrumentation_1.semconvStabilityFromStr)('database', process.env.OTEL_SEMCONV_STABILITY_OPT_IN);\n }\n _updateMetricInstruments() {\n this._operationDuration = this.meter.createHistogram(semantic_conventions_1.METRIC_DB_CLIENT_OPERATION_DURATION, {\n description: 'Duration of database client operations.',\n unit: 's',\n valueType: api_1.ValueType.DOUBLE,\n advice: {\n explicitBucketBoundaries: [\n 0.001, 0.005, 0.01, 0.05, 0.1, 0.5, 1, 5, 10,\n ],\n },\n });\n this._connectionsCounter = {\n idle: 0,\n pending: 0,\n used: 0,\n };\n this._connectionsCount = this.meter.createUpDownCounter(semconv_1.METRIC_DB_CLIENT_CONNECTION_COUNT, {\n description: 'The number of connections that are currently in state described by the state attribute.',\n unit: '{connection}',\n });\n this._connectionPendingRequests = this.meter.createUpDownCounter(semconv_1.METRIC_DB_CLIENT_CONNECTION_PENDING_REQUESTS, {\n description: 'The number of current pending requests for an open connection.',\n unit: '{connection}',\n });\n }\n init() {\n const SUPPORTED_PG_VERSIONS = ['>=8.0.3 <9'];\n const SUPPORTED_PG_POOL_VERSIONS = ['>=2.0.0 <4'];\n const modulePgNativeClient = new instrumentation_1.InstrumentationNodeModuleFile('pg/lib/native/client.js', SUPPORTED_PG_VERSIONS, this._patchPgClient.bind(this), this._unpatchPgClient.bind(this));\n const modulePgClient = new instrumentation_1.InstrumentationNodeModuleFile('pg/lib/client.js', SUPPORTED_PG_VERSIONS, this._patchPgClient.bind(this), this._unpatchPgClient.bind(this));\n const modulePG = new instrumentation_1.InstrumentationNodeModuleDefinition('pg', SUPPORTED_PG_VERSIONS, (module) => {\n const moduleExports = extractModuleExports(module);\n this._patchPgClient(moduleExports.Client);\n return module;\n }, (module) => {\n const moduleExports = extractModuleExports(module);\n this._unpatchPgClient(moduleExports.Client);\n return module;\n }, [modulePgClient, modulePgNativeClient]);\n const modulePGPool = new instrumentation_1.InstrumentationNodeModuleDefinition('pg-pool', SUPPORTED_PG_POOL_VERSIONS, (module) => {\n const moduleExports = extractModuleExports(module);\n if ((0, instrumentation_1.isWrapped)(moduleExports.prototype.connect)) {\n this._unwrap(moduleExports.prototype, 'connect');\n }\n this._wrap(moduleExports.prototype, 'connect', this._getPoolConnectPatch());\n return moduleExports;\n }, (module) => {\n const moduleExports = extractModuleExports(module);\n if ((0, instrumentation_1.isWrapped)(moduleExports.prototype.connect)) {\n this._unwrap(moduleExports.prototype, 'connect');\n }\n });\n return [modulePG, modulePGPool];\n }\n _patchPgClient(module) {\n if (!module) {\n return;\n }\n const moduleExports = extractModuleExports(module);\n if ((0, instrumentation_1.isWrapped)(moduleExports.prototype.query)) {\n this._unwrap(moduleExports.prototype, 'query');\n }\n if ((0, instrumentation_1.isWrapped)(moduleExports.prototype.connect)) {\n this._unwrap(moduleExports.prototype, 'connect');\n }\n this._wrap(moduleExports.prototype, 'query', this._getClientQueryPatch());\n this._wrap(moduleExports.prototype, 'connect', this._getClientConnectPatch());\n return module;\n }\n _unpatchPgClient(module) {\n const moduleExports = extractModuleExports(module);\n if ((0, instrumentation_1.isWrapped)(moduleExports.prototype.query)) {\n this._unwrap(moduleExports.prototype, 'query');\n }\n if ((0, instrumentation_1.isWrapped)(moduleExports.prototype.connect)) {\n this._unwrap(moduleExports.prototype, 'connect');\n }\n return module;\n }\n _getClientConnectPatch() {\n const plugin = this;\n return (original) => {\n return function connect(callback) {\n const config = plugin.getConfig();\n if (utils.shouldSkipInstrumentation(config) ||\n config.ignoreConnectSpans) {\n return original.call(this, callback);\n }\n const span = plugin.tracer.startSpan(SpanNames_1.SpanNames.CONNECT, {\n kind: api_1.SpanKind.CLIENT,\n attributes: utils.getSemanticAttributesFromConnection(this, plugin._semconvStability),\n });\n if (callback) {\n const parentSpan = api_1.trace.getSpan(api_1.context.active());\n callback = utils.patchClientConnectCallback(span, callback);\n if (parentSpan) {\n callback = api_1.context.bind(api_1.context.active(), callback);\n }\n }\n const connectResult = api_1.context.with(api_1.trace.setSpan(api_1.context.active(), span), () => {\n return original.call(this, callback);\n });\n return handleConnectResult(span, connectResult);\n };\n };\n }\n recordOperationDuration(attributes, startTime) {\n const metricsAttributes = {};\n const keysToCopy = [\n semantic_conventions_1.ATTR_DB_NAMESPACE,\n semantic_conventions_1.ATTR_ERROR_TYPE,\n semantic_conventions_1.ATTR_SERVER_PORT,\n semantic_conventions_1.ATTR_SERVER_ADDRESS,\n semantic_conventions_1.ATTR_DB_OPERATION_NAME,\n ];\n if (this._semconvStability & instrumentation_1.SemconvStability.OLD) {\n keysToCopy.push(semconv_1.ATTR_DB_SYSTEM);\n }\n if (this._semconvStability & instrumentation_1.SemconvStability.STABLE) {\n keysToCopy.push(semantic_conventions_1.ATTR_DB_SYSTEM_NAME);\n }\n keysToCopy.forEach(key => {\n if (key in attributes) {\n metricsAttributes[key] = attributes[key];\n }\n });\n const durationSeconds = (0, core_1.hrTimeToMilliseconds)((0, core_1.hrTimeDuration)(startTime, (0, core_1.hrTime)())) / 1000;\n this._operationDuration.record(durationSeconds, metricsAttributes);\n }\n _getClientQueryPatch() {\n const plugin = this;\n return (original) => {\n this._diag.debug('Patching pg.Client.prototype.query');\n return function query(...args) {\n if (utils.shouldSkipInstrumentation(plugin.getConfig())) {\n return original.apply(this, args);\n }\n const startTime = (0, core_1.hrTime)();\n // client.query(text, cb?), client.query(text, values, cb?), and\n // client.query(configObj, cb?) are all valid signatures. We construct\n // a queryConfig obj from all (valid) signatures to build the span in a\n // unified way. We verify that we at least have query text, and code\n // defensively when dealing with `queryConfig` after that (to handle all\n // the other invalid cases, like a non-array for values being provided).\n // The type casts here reflect only what we've actually validated.\n const arg0 = args[0];\n const firstArgIsString = typeof arg0 === 'string';\n const firstArgIsQueryObjectWithText = utils.isObjectWithTextString(arg0);\n // TODO: remove the `as ...` casts below when the TS version is upgraded.\n // Newer TS versions will use the result of firstArgIsQueryObjectWithText\n // to properly narrow arg0, but TS 4.3.5 does not.\n const queryConfig = firstArgIsString\n ? {\n text: arg0,\n values: Array.isArray(args[1]) ? args[1] : undefined,\n }\n : firstArgIsQueryObjectWithText\n ? {\n ...arg0,\n name: arg0.name,\n text: arg0.text,\n values: arg0.values ??\n (Array.isArray(args[1]) ? args[1] : undefined),\n }\n : undefined;\n const attributes = {\n [semconv_1.ATTR_DB_SYSTEM]: semconv_1.DB_SYSTEM_VALUE_POSTGRESQL,\n [semantic_conventions_1.ATTR_DB_NAMESPACE]: this.database,\n [semantic_conventions_1.ATTR_SERVER_PORT]: this.connectionParameters.port,\n [semantic_conventions_1.ATTR_SERVER_ADDRESS]: this.connectionParameters.host,\n };\n if (queryConfig?.text) {\n attributes[semantic_conventions_1.ATTR_DB_OPERATION_NAME] =\n utils.parseNormalizedOperationName(queryConfig?.text);\n }\n const recordDuration = () => {\n plugin.recordOperationDuration(attributes, startTime);\n };\n const instrumentationConfig = plugin.getConfig();\n const span = utils.handleConfigQuery.call(this, plugin.tracer, instrumentationConfig, plugin._semconvStability, queryConfig);\n // Modify query text w/ a tracing comment before invoking original for\n // tracing, but only if args[0] has one of our expected shapes.\n if (instrumentationConfig.addSqlCommenterCommentToQueries) {\n if (firstArgIsString) {\n args[0] = (0, sql_common_1.addSqlCommenterComment)(span, arg0);\n }\n else if (firstArgIsQueryObjectWithText && !('name' in arg0)) {\n // In the case of a query object, we need to ensure there's no name field\n // as this indicates a prepared query, where the comment would remain the same\n // for every invocation and contain an outdated trace context.\n args[0] = {\n ...arg0,\n text: (0, sql_common_1.addSqlCommenterComment)(span, arg0.text),\n };\n }\n }\n // Bind callback (if any) to parent span (if any)\n if (args.length > 0) {\n const parentSpan = api_1.trace.getSpan(api_1.context.active());\n if (typeof args[args.length - 1] === 'function') {\n // Patch ParameterQuery callback\n args[args.length - 1] = utils.patchCallback(instrumentationConfig, span, args[args.length - 1], // nb: not type safe.\n attributes, recordDuration);\n // If a parent span exists, bind the callback\n if (parentSpan) {\n args[args.length - 1] = api_1.context.bind(api_1.context.active(), args[args.length - 1]);\n }\n }\n else if (typeof queryConfig?.callback === 'function') {\n // Patch ConfigQuery callback\n let callback = utils.patchCallback(plugin.getConfig(), span, queryConfig.callback, // nb: not type safe.\n attributes, recordDuration);\n // If a parent span existed, bind the callback\n if (parentSpan) {\n callback = api_1.context.bind(api_1.context.active(), callback);\n }\n args[0].callback = callback;\n }\n }\n const { requestHook } = instrumentationConfig;\n if (typeof requestHook === 'function' && queryConfig) {\n (0, instrumentation_1.safeExecuteInTheMiddle)(() => {\n // pick keys to expose explicitly, so we're not leaking pg package\n // internals that are subject to change\n const { database, host, port, user } = this.connectionParameters;\n const connection = { database, host, port, user };\n requestHook(span, {\n connection,\n query: {\n text: queryConfig.text,\n // nb: if `client.query` is called with illegal arguments\n // (e.g., if `queryConfig.values` is passed explicitly, but a\n // non-array is given), then the type casts will be wrong. But\n // we leave it up to the queryHook to handle that, and we\n // catch and swallow any errors it throws. The other options\n // are all worse. E.g., we could leave `queryConfig.values`\n // and `queryConfig.name` as `unknown`, but then the hook body\n // would be forced to validate (or cast) them before using\n // them, which seems incredibly cumbersome given that these\n // casts will be correct 99.9% of the time -- and pg.query\n // will immediately throw during development in the other .1%\n // of cases. Alternatively, we could simply skip calling the\n // hook when `values` or `name` don't have the expected type,\n // but that would add unnecessary validation overhead to every\n // hook invocation and possibly be even more confusing/unexpected.\n values: queryConfig.values,\n name: queryConfig.name,\n },\n });\n }, err => {\n if (err) {\n plugin._diag.error('Error running query hook', err);\n }\n }, true);\n }\n let result;\n try {\n result = original.apply(this, args);\n }\n catch (e) {\n if (e instanceof Error) {\n span.recordException(utils.sanitizedErrorMessage(e));\n }\n span.setStatus({\n code: api_1.SpanStatusCode.ERROR,\n message: utils.getErrorMessage(e),\n });\n span.end();\n throw e;\n }\n // Bind promise to parent span and end the span\n if (result instanceof Promise) {\n return result\n .then((result) => {\n // Return a pass-along promise which ends the span and then goes to user's orig resolvers\n return new Promise(resolve => {\n utils.handleExecutionResult(plugin.getConfig(), span, result);\n recordDuration();\n span.end();\n resolve(result);\n });\n })\n .catch((error) => {\n return new Promise((_, reject) => {\n if (error instanceof Error) {\n span.recordException(utils.sanitizedErrorMessage(error));\n }\n span.setStatus({\n code: api_1.SpanStatusCode.ERROR,\n message: error.message,\n });\n recordDuration();\n span.end();\n reject(error);\n });\n });\n }\n // else returns void\n return result; // void\n };\n };\n }\n _setPoolConnectEventListeners(pgPool) {\n if (pgPool[internal_types_1.EVENT_LISTENERS_SET])\n return;\n const poolName = utils.getPoolName(pgPool.options);\n pgPool.on('connect', () => {\n this._connectionsCounter = utils.updateCounter(poolName, pgPool, this._connectionsCount, this._connectionPendingRequests, this._connectionsCounter);\n });\n pgPool.on('acquire', () => {\n this._connectionsCounter = utils.updateCounter(poolName, pgPool, this._connectionsCount, this._connectionPendingRequests, this._connectionsCounter);\n });\n pgPool.on('remove', () => {\n this._connectionsCounter = utils.updateCounter(poolName, pgPool, this._connectionsCount, this._connectionPendingRequests, this._connectionsCounter);\n });\n pgPool.on('release', () => {\n this._connectionsCounter = utils.updateCounter(poolName, pgPool, this._connectionsCount, this._connectionPendingRequests, this._connectionsCounter);\n });\n pgPool[internal_types_1.EVENT_LISTENERS_SET] = true;\n }\n _getPoolConnectPatch() {\n const plugin = this;\n return (originalConnect) => {\n return function connect(callback) {\n const config = plugin.getConfig();\n if (utils.shouldSkipInstrumentation(config)) {\n return originalConnect.call(this, callback);\n }\n // Still set up event listeners for metrics even when skipping spans\n plugin._setPoolConnectEventListeners(this);\n if (config.ignoreConnectSpans) {\n return originalConnect.call(this, callback);\n }\n // setup span\n const span = plugin.tracer.startSpan(SpanNames_1.SpanNames.POOL_CONNECT, {\n kind: api_1.SpanKind.CLIENT,\n attributes: utils.getSemanticAttributesFromPoolConnection(this.options, plugin._semconvStability),\n });\n if (callback) {\n const parentSpan = api_1.trace.getSpan(api_1.context.active());\n callback = utils.patchCallbackPGPool(span, callback);\n // If a parent span exists, bind the callback\n if (parentSpan) {\n callback = api_1.context.bind(api_1.context.active(), callback);\n }\n }\n const connectResult = api_1.context.with(api_1.trace.setSpan(api_1.context.active(), span), () => {\n return originalConnect.call(this, callback);\n });\n return handleConnectResult(span, connectResult);\n };\n };\n }\n}\nexports.PgInstrumentation = PgInstrumentation;\nfunction handleConnectResult(span, connectResult) {\n if (!(connectResult instanceof Promise)) {\n return connectResult;\n }\n const connectResultPromise = connectResult;\n return api_1.context.bind(api_1.context.active(), connectResultPromise\n .then(result => {\n span.end();\n return result;\n })\n .catch((error) => {\n if (error instanceof Error) {\n span.recordException(utils.sanitizedErrorMessage(error));\n }\n span.setStatus({\n code: api_1.SpanStatusCode.ERROR,\n message: utils.getErrorMessage(error),\n });\n span.end();\n return Promise.reject(error);\n }));\n}\n//# sourceMappingURL=instrumentation.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvLnBucG0vQG9wZW50ZWxlbWV0cnkraW5zdHJ1bWVudGF0aW9uLXBnQDAuNjYuMF9Ab3BlbnRlbGVtZXRyeSthcGlAMS45LjEvbm9kZV9tb2R1bGVzL0BvcGVudGVsZW1ldHJ5L2luc3RydW1lbnRhdGlvbi1wZy9idWlsZC9zcmMvaW5zdHJ1bWVudGF0aW9uLmpzIiwibWFwcGluZ3MiOiJBQUFhLENBQUMsb0RBQW9ELHlDQUF5QywwQ0FBMEMsOENBQThDLG9EQUFvRDtBQUN2UCw4Q0FBNkMsRUFBRSxhQUFhLEVBQUM7QUFDN0QseUJBQXlCO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQixtQkFBTyxDQUFDLGlNQUFnQztBQUNsRSxjQUFjLG1CQUFPLENBQUMsa0lBQW9CO0FBQzFDLHlCQUF5QixtQkFBTyxDQUFDLGlNQUFrQjtBQUNuRCxjQUFjLG1CQUFPLENBQUMsK0tBQVM7QUFDL0IscUJBQXFCLG1CQUFPLENBQUMsaUxBQTJCO0FBQ3hEO0FBQ0Esa0JBQWtCLG1CQUFPLENBQUMsbUxBQVc7QUFDckMsb0JBQW9CLG1CQUFPLENBQUMsbU1BQW1CO0FBQy9DLGVBQWUsbUJBQU8sQ0FBQyw4SkFBcUI7QUFDNUMsK0JBQStCLG1CQUFPLENBQUMsc0xBQXFDO0FBQzVFLGtCQUFrQixtQkFBTyxDQUFDLG1MQUFXO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQjtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLFdBQVc7QUFDL0IsU0FBUztBQUNUO0FBQ0E7QUFDQSxvQkFBb0IsV0FBVztBQUMvQixTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsY0FBYztBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBLGdDQUFnQyw2QkFBNkI7QUFDN0QsNkNBQTZDO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QjtBQUM3Qix5QkFBeUI7QUFDekIscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUI7QUFDekIscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkI7QUFDN0I7QUFDQTtBQUNBO0FBQ0EseUJBQXlCO0FBQ3pCLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0EsK0JBQStCO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EiLCJzb3VyY2VzIjpbIi9Vc2Vycy9tYXJjbWludGVsL1Byb2plY3RzL2UtdGliLmNvbS9ub2RlX21vZHVsZXMvLnBucG0vQG9wZW50ZWxlbWV0cnkraW5zdHJ1bWVudGF0aW9uLXBnQDAuNjYuMF9Ab3BlbnRlbGVtZXRyeSthcGlAMS45LjEvbm9kZV9tb2R1bGVzL0BvcGVudGVsZW1ldHJ5L2luc3RydW1lbnRhdGlvbi1wZy9idWlsZC9zcmMvaW5zdHJ1bWVudGF0aW9uLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiOztnbG9iYWxUaGlzW1wiX3NlbnRyeVJld3JpdGVzVHVubmVsUGF0aFwiXSA9IHVuZGVmaW5lZDtnbG9iYWxUaGlzW1wiU0VOVFJZX1JFTEVBU0VcIl0gPSB1bmRlZmluZWQ7Z2xvYmFsVGhpc1tcIl9zZW50cnlCYXNlUGF0aFwiXSA9IHVuZGVmaW5lZDtnbG9iYWxUaGlzW1wiX3NlbnRyeU5leHRKc1ZlcnNpb25cIl0gPSBcIjE2LjEuNlwiO2dsb2JhbFRoaXNbXCJfc2VudHJ5UmV3cml0ZUZyYW1lc0Rpc3REaXJcIl0gPSBcIi5uZXh0XCI7Z2xvYmFsVGhpc1tcIl9zZW50cnlWZXJjZWxDcm9uc0NvbmZpZ1wiXSA9IHVuZGVmaW5lZDtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuUGdJbnN0cnVtZW50YXRpb24gPSB2b2lkIDA7XG4vKlxuICogQ29weXJpZ2h0IFRoZSBPcGVuVGVsZW1ldHJ5IEF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuY29uc3QgaW5zdHJ1bWVudGF0aW9uXzEgPSByZXF1aXJlKFwiQG9wZW50ZWxlbWV0cnkvaW5zdHJ1bWVudGF0aW9uXCIpO1xuY29uc3QgYXBpXzEgPSByZXF1aXJlKFwiQG9wZW50ZWxlbWV0cnkvYXBpXCIpO1xuY29uc3QgaW50ZXJuYWxfdHlwZXNfMSA9IHJlcXVpcmUoXCIuL2ludGVybmFsLXR5cGVzXCIpO1xuY29uc3QgdXRpbHMgPSByZXF1aXJlKFwiLi91dGlsc1wiKTtcbmNvbnN0IHNxbF9jb21tb25fMSA9IHJlcXVpcmUoXCJAb3BlbnRlbGVtZXRyeS9zcWwtY29tbW9uXCIpO1xuLyoqIEBrbmlwaWdub3JlICovXG5jb25zdCB2ZXJzaW9uXzEgPSByZXF1aXJlKFwiLi92ZXJzaW9uXCIpO1xuY29uc3QgU3Bhbk5hbWVzXzEgPSByZXF1aXJlKFwiLi9lbnVtcy9TcGFuTmFtZXNcIik7XG5jb25zdCBjb3JlXzEgPSByZXF1aXJlKFwiQG9wZW50ZWxlbWV0cnkvY29yZVwiKTtcbmNvbnN0IHNlbWFudGljX2NvbnZlbnRpb25zXzEgPSByZXF1aXJlKFwiQG9wZW50ZWxlbWV0cnkvc2VtYW50aWMtY29udmVudGlvbnNcIik7XG5jb25zdCBzZW1jb252XzEgPSByZXF1aXJlKFwiLi9zZW1jb252XCIpO1xuZnVuY3Rpb24gZXh0cmFjdE1vZHVsZUV4cG9ydHMobW9kdWxlKSB7XG4gICAgcmV0dXJuIG1vZHVsZVtTeW1ib2wudG9TdHJpbmdUYWddID09PSAnTW9kdWxlJ1xuICAgICAgICA/IG1vZHVsZS5kZWZhdWx0IC8vIEVTTVxuICAgICAgICA6IG1vZHVsZTsgLy8gQ29tbW9uSlNcbn1cbmNsYXNzIFBnSW5zdHJ1bWVudGF0aW9uIGV4dGVuZHMgaW5zdHJ1bWVudGF0aW9uXzEuSW5zdHJ1bWVudGF0aW9uQmFzZSB7XG4gICAgLy8gUG9vbCBldmVudHMgY29ubmVjdCwgYWNxdWlyZSwgcmVsZWFzZSBhbmQgcmVtb3ZlIGNhbiBiZSBjYWxsZWRcbiAgICAvLyBtdWx0aXBsZSB0aW1lcyB3aXRob3V0IGNoYW5naW5nIHRoZSB2YWx1ZXMgb2YgdG90YWwsIGlkbGUgYW5kIHdhaXRpbmdcbiAgICAvLyBjb25uZWN0aW9ucy4gVGhlIF9jb25uZWN0aW9uc0NvdW50ZXIgaXMgdXNlZCB0byBrZWVwIHRyYWNrIG9mIGxhdGVzdFxuICAgIC8vIHZhbHVlcyBhbmQgb25seSB1cGRhdGUgdGhlIG1ldHJpY3MgX2Nvbm5lY3Rpb25zQ291bnQgYW5kIF9jb25uZWN0aW9uUGVuZGluZ1JlcXVlc3RzXG4gICAgLy8gd2hlbiB0aGUgdmFsdWUgY2hhbmdlLlxuICAgIF9jb25uZWN0aW9uc0NvdW50ZXIgPSB7XG4gICAgICAgIHVzZWQ6IDAsXG4gICAgICAgIGlkbGU6IDAsXG4gICAgICAgIHBlbmRpbmc6IDAsXG4gICAgfTtcbiAgICBfc2VtY29udlN0YWJpbGl0eTtcbiAgICBjb25zdHJ1Y3Rvcihjb25maWcgPSB7fSkge1xuICAgICAgICBzdXBlcih2ZXJzaW9uXzEuUEFDS0FHRV9OQU1FLCB2ZXJzaW9uXzEuUEFDS0FHRV9WRVJTSU9OLCBjb25maWcpO1xuICAgICAgICB0aGlzLl9zZW1jb252U3RhYmlsaXR5ID0gKDAsIGluc3RydW1lbnRhdGlvbl8xLnNlbWNvbnZTdGFiaWxpdHlGcm9tU3RyKSgnZGF0YWJhc2UnLCBwcm9jZXNzLmVudi5PVEVMX1NFTUNPTlZfU1RBQklMSVRZX09QVF9JTik7XG4gICAgfVxuICAgIF91cGRhdGVNZXRyaWNJbnN0cnVtZW50cygpIHtcbiAgICAgICAgdGhpcy5fb3BlcmF0aW9uRHVyYXRpb24gPSB0aGlzLm1ldGVyLmNyZWF0ZUhpc3RvZ3JhbShzZW1hbnRpY19jb252ZW50aW9uc18xLk1FVFJJQ19EQl9DTElFTlRfT1BFUkFUSU9OX0RVUkFUSU9OLCB7XG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogJ0R1cmF0aW9uIG9mIGRhdGFiYXNlIGNsaWVudCBvcGVyYXRpb25zLicsXG4gICAgICAgICAgICB1bml0OiAncycsXG4gICAgICAgICAgICB2YWx1ZVR5cGU6IGFwaV8xLlZhbHVlVHlwZS5ET1VCTEUsXG4gICAgICAgICAgICBhZHZpY2U6IHtcbiAgICAgICAgICAgICAgICBleHBsaWNpdEJ1Y2tldEJvdW5kYXJpZXM6IFtcbiAgICAgICAgICAgICAgICAgICAgMC4wMDEsIDAuMDA1LCAwLjAxLCAwLjA1LCAwLjEsIDAuNSwgMSwgNSwgMTAsXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLl9jb25uZWN0aW9uc0NvdW50ZXIgPSB7XG4gICAgICAgICAgICBpZGxlOiAwLFxuICAgICAgICAgICAgcGVuZGluZzogMCxcbiAgICAgICAgICAgIHVzZWQ6IDAsXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuX2Nvbm5lY3Rpb25zQ291bnQgPSB0aGlzLm1ldGVyLmNyZWF0ZVVwRG93bkNvdW50ZXIoc2VtY29udl8xLk1FVFJJQ19EQl9DTElFTlRfQ09OTkVDVElPTl9DT1VOVCwge1xuICAgICAgICAgICAgZGVzY3JpcHRpb246ICdUaGUgbnVtYmVyIG9mIGNvbm5lY3Rpb25zIHRoYXQgYXJlIGN1cnJlbnRseSBpbiBzdGF0ZSBkZXNjcmliZWQgYnkgdGhlIHN0YXRlIGF0dHJpYnV0ZS4nLFxuICAgICAgICAgICAgdW5pdDogJ3tjb25uZWN0aW9ufScsXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLl9jb25uZWN0aW9uUGVuZGluZ1JlcXVlc3RzID0gdGhpcy5tZXRlci5jcmVhdGVVcERvd25Db3VudGVyKHNlbWNvbnZfMS5NRVRSSUNfREJfQ0xJRU5UX0NPTk5FQ1RJT05fUEVORElOR19SRVFVRVNUUywge1xuICAgICAgICAgICAgZGVzY3JpcHRpb246ICdUaGUgbnVtYmVyIG9mIGN1cnJlbnQgcGVuZGluZyByZXF1ZXN0cyBmb3IgYW4gb3BlbiBjb25uZWN0aW9uLicsXG4gICAgICAgICAgICB1bml0OiAne2Nvbm5lY3Rpb259JyxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGluaXQoKSB7XG4gICAgICAgIGNvbnN0IFNVUFBPUlRFRF9QR19WRVJTSU9OUyA9IFsnPj04LjAuMyA8OSddO1xuICAgICAgICBjb25zdCBTVVBQT1JURURfUEdfUE9PTF9WRVJTSU9OUyA9IFsnPj0yLjAuMCA8NCddO1xuICAgICAgICBjb25zdCBtb2R1bGVQZ05hdGl2ZUNsaWVudCA9IG5ldyBpbnN0cnVtZW50YXRpb25fMS5JbnN0cnVtZW50YXRpb25Ob2RlTW9kdWxlRmlsZSgncGcvbGliL25hdGl2ZS9jbGllbnQuanMnLCBTVVBQT1JURURfUEdfVkVSU0lPTlMsIHRoaXMuX3BhdGNoUGdDbGllbnQuYmluZCh0aGlzKSwgdGhpcy5fdW5wYXRjaFBnQ2xpZW50LmJpbmQodGhpcykpO1xuICAgICAgICBjb25zdCBtb2R1bGVQZ0NsaWVudCA9IG5ldyBpbnN0cnVtZW50YXRpb25fMS5JbnN0cnVtZW50YXRpb25Ob2RlTW9kdWxlRmlsZSgncGcvbGliL2NsaWVudC5qcycsIFNVUFBPUlRFRF9QR19WRVJTSU9OUywgdGhpcy5fcGF0Y2hQZ0NsaWVudC5iaW5kKHRoaXMpLCB0aGlzLl91bnBhdGNoUGdDbGllbnQuYmluZCh0aGlzKSk7XG4gICAgICAgIGNvbnN0IG1vZHVsZVBHID0gbmV3IGluc3RydW1lbnRhdGlvbl8xLkluc3RydW1lbnRhdGlvbk5vZGVNb2R1bGVEZWZpbml0aW9uKCdwZycsIFNVUFBPUlRFRF9QR19WRVJTSU9OUywgKG1vZHVsZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbW9kdWxlRXhwb3J0cyA9IGV4dHJhY3RNb2R1bGVFeHBvcnRzKG1vZHVsZSk7XG4gICAgICAgICAgICB0aGlzLl9wYXRjaFBnQ2xpZW50KG1vZHVsZUV4cG9ydHMuQ2xpZW50KTtcbiAgICAgICAgICAgIHJldHVybiBtb2R1bGU7XG4gICAgICAgIH0sIChtb2R1bGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1vZHVsZUV4cG9ydHMgPSBleHRyYWN0TW9kdWxlRXhwb3J0cyhtb2R1bGUpO1xuICAgICAgICAgICAgdGhpcy5fdW5wYXRjaFBnQ2xpZW50KG1vZHVsZUV4cG9ydHMuQ2xpZW50KTtcbiAgICAgICAgICAgIHJldHVybiBtb2R1bGU7XG4gICAgICAgIH0sIFttb2R1bGVQZ0NsaWVudCwgbW9kdWxlUGdOYXRpdmVDbGllbnRdKTtcbiAgICAgICAgY29uc3QgbW9kdWxlUEdQb29sID0gbmV3IGluc3RydW1lbnRhdGlvbl8xLkluc3RydW1lbnRhdGlvbk5vZGVNb2R1bGVEZWZpbml0aW9uKCdwZy1wb29sJywgU1VQUE9SVEVEX1BHX1BPT0xfVkVSU0lPTlMsIChtb2R1bGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1vZHVsZUV4cG9ydHMgPSBleHRyYWN0TW9kdWxlRXhwb3J0cyhtb2R1bGUpO1xuICAgICAgICAgICAgaWYgKCgwLCBpbnN0cnVtZW50YXRpb25fMS5pc1dyYXBwZWQpKG1vZHVsZUV4cG9ydHMucHJvdG90eXBlLmNvbm5lY3QpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdW53cmFwKG1vZHVsZUV4cG9ydHMucHJvdG90eXBlLCAnY29ubmVjdCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5fd3JhcChtb2R1bGVFeHBvcnRzLnByb3RvdHlwZSwgJ2Nvbm5lY3QnLCB0aGlzLl9nZXRQb29sQ29ubmVjdFBhdGNoKCkpO1xuICAgICAgICAgICAgcmV0dXJuIG1vZHVsZUV4cG9ydHM7XG4gICAgICAgIH0sIChtb2R1bGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1vZHVsZUV4cG9ydHMgPSBleHRyYWN0TW9kdWxlRXhwb3J0cyhtb2R1bGUpO1xuICAgICAgICAgICAgaWYgKCgwLCBpbnN0cnVtZW50YXRpb25fMS5pc1dyYXBwZWQpKG1vZHVsZUV4cG9ydHMucHJvdG90eXBlLmNvbm5lY3QpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdW53cmFwKG1vZHVsZUV4cG9ydHMucHJvdG90eXBlLCAnY29ubmVjdCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIFttb2R1bGVQRywgbW9kdWxlUEdQb29sXTtcbiAgICB9XG4gICAgX3BhdGNoUGdDbGllbnQobW9kdWxlKSB7XG4gICAgICAgIGlmICghbW9kdWxlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbW9kdWxlRXhwb3J0cyA9IGV4dHJhY3RNb2R1bGVFeHBvcnRzKG1vZHVsZSk7XG4gICAgICAgIGlmICgoMCwgaW5zdHJ1bWVudGF0aW9uXzEuaXNXcmFwcGVkKShtb2R1bGVFeHBvcnRzLnByb3RvdHlwZS5xdWVyeSkpIHtcbiAgICAgICAgICAgIHRoaXMuX3Vud3JhcChtb2R1bGVFeHBvcnRzLnByb3RvdHlwZSwgJ3F1ZXJ5Jyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCgwLCBpbnN0cnVtZW50YXRpb25fMS5pc1dyYXBwZWQpKG1vZHVsZUV4cG9ydHMucHJvdG90eXBlLmNvbm5lY3QpKSB7XG4gICAgICAgICAgICB0aGlzLl91bndyYXAobW9kdWxlRXhwb3J0cy5wcm90b3R5cGUsICdjb25uZWN0Jyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fd3JhcChtb2R1bGVFeHBvcnRzLnByb3RvdHlwZSwgJ3F1ZXJ5JywgdGhpcy5fZ2V0Q2xpZW50UXVlcnlQYXRjaCgpKTtcbiAgICAgICAgdGhpcy5fd3JhcChtb2R1bGVFeHBvcnRzLnByb3RvdHlwZSwgJ2Nvbm5lY3QnLCB0aGlzLl9nZXRDbGllbnRDb25uZWN0UGF0Y2goKSk7XG4gICAgICAgIHJldHVybiBtb2R1bGU7XG4gICAgfVxuICAgIF91bnBhdGNoUGdDbGllbnQobW9kdWxlKSB7XG4gICAgICAgIGNvbnN0IG1vZHVsZUV4cG9ydHMgPSBleHRyYWN0TW9kdWxlRXhwb3J0cyhtb2R1bGUpO1xuICAgICAgICBpZiAoKDAsIGluc3RydW1lbnRhdGlvbl8xLmlzV3JhcHBlZCkobW9kdWxlRXhwb3J0cy5wcm90b3R5cGUucXVlcnkpKSB7XG4gICAgICAgICAgICB0aGlzLl91bndyYXAobW9kdWxlRXhwb3J0cy5wcm90b3R5cGUsICdxdWVyeScpO1xuICAgICAgICB9XG4gICAgICAgIGlmICgoMCwgaW5zdHJ1bWVudGF0aW9uXzEuaXNXcmFwcGVkKShtb2R1bGVFeHBvcnRzLnByb3RvdHlwZS5jb25uZWN0KSkge1xuICAgICAgICAgICAgdGhpcy5fdW53cmFwKG1vZHVsZUV4cG9ydHMucHJvdG90eXBlLCAnY29ubmVjdCcpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtb2R1bGU7XG4gICAgfVxuICAgIF9nZXRDbGllbnRDb25uZWN0UGF0Y2goKSB7XG4gICAgICAgIGNvbnN0IHBsdWdpbiA9IHRoaXM7XG4gICAgICAgIHJldHVybiAob3JpZ2luYWwpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiBjb25uZWN0KGNhbGxiYWNrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY29uZmlnID0gcGx1Z2luLmdldENvbmZpZygpO1xuICAgICAgICAgICAgICAgIGlmICh1dGlscy5zaG91bGRTa2lwSW5zdHJ1bWVudGF0aW9uKGNvbmZpZykgfHxcbiAgICAgICAgICAgICAgICAgICAgY29uZmlnLmlnbm9yZUNvbm5lY3RTcGFucykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3JpZ2luYWwuY2FsbCh0aGlzLCBjYWxsYmFjayk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IHNwYW4gPSBwbHVnaW4udHJhY2VyLnN0YXJ0U3BhbihTcGFuTmFtZXNfMS5TcGFuTmFtZXMuQ09OTkVDVCwge1xuICAgICAgICAgICAgICAgICAgICBraW5kOiBhcGlfMS5TcGFuS2luZC5DTElFTlQsXG4gICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHV0aWxzLmdldFNlbWFudGljQXR0cmlidXRlc0Zyb21Db25uZWN0aW9uKHRoaXMsIHBsdWdpbi5fc2VtY29udlN0YWJpbGl0eSksXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaWYgKGNhbGxiYWNrKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudFNwYW4gPSBhcGlfMS50cmFjZS5nZXRTcGFuKGFwaV8xLmNvbnRleHQuYWN0aXZlKCkpO1xuICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayA9IHV0aWxzLnBhdGNoQ2xpZW50Q29ubmVjdENhbGxiYWNrKHNwYW4sIGNhbGxiYWNrKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmVudFNwYW4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrID0gYXBpXzEuY29udGV4dC5iaW5kKGFwaV8xLmNvbnRleHQuYWN0aXZlKCksIGNhbGxiYWNrKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBjb25uZWN0UmVzdWx0ID0gYXBpXzEuY29udGV4dC53aXRoKGFwaV8xLnRyYWNlLnNldFNwYW4oYXBpXzEuY29udGV4dC5hY3RpdmUoKSwgc3BhbiksICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9yaWdpbmFsLmNhbGwodGhpcywgY2FsbGJhY2spO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiBoYW5kbGVDb25uZWN0UmVzdWx0KHNwYW4sIGNvbm5lY3RSZXN1bHQpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfTtcbiAgICB9XG4gICAgcmVjb3JkT3BlcmF0aW9uRHVyYXRpb24oYXR0cmlidXRlcywgc3RhcnRUaW1lKSB7XG4gICAgICAgIGNvbnN0IG1ldHJpY3NBdHRyaWJ1dGVzID0ge307XG4gICAgICAgIGNvbnN0IGtleXNUb0NvcHkgPSBbXG4gICAgICAgICAgICBzZW1hbnRpY19jb252ZW50aW9uc18xLkFUVFJfREJfTkFNRVNQQUNFLFxuICAgICAgICAgICAgc2VtYW50aWNfY29udmVudGlvbnNfMS5BVFRSX0VSUk9SX1RZUEUsXG4gICAgICAgICAgICBzZW1hbnRpY19jb252ZW50aW9uc18xLkFUVFJfU0VSVkVSX1BPUlQsXG4gICAgICAgICAgICBzZW1hbnRpY19jb252ZW50aW9uc18xLkFUVFJfU0VSVkVSX0FERFJFU1MsXG4gICAgICAgICAgICBzZW1hbnRpY19jb252ZW50aW9uc18xLkFUVFJfREJfT1BFUkFUSU9OX05BTUUsXG4gICAgICAgIF07XG4gICAgICAgIGlmICh0aGlzLl9zZW1jb252U3RhYmlsaXR5ICYgaW5zdHJ1bWVudGF0aW9uXzEuU2VtY29udlN0YWJpbGl0eS5PTEQpIHtcbiAgICAgICAgICAgIGtleXNUb0NvcHkucHVzaChzZW1jb252XzEuQVRUUl9EQl9TWVNURU0pO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLl9zZW1jb252U3RhYmlsaXR5ICYgaW5zdHJ1bWVudGF0aW9uXzEuU2VtY29udlN0YWJpbGl0eS5TVEFCTEUpIHtcbiAgICAgICAgICAgIGtleXNUb0NvcHkucHVzaChzZW1hbnRpY19jb252ZW50aW9uc18xLkFUVFJfREJfU1lTVEVNX05BTUUpO1xuICAgICAgICB9XG4gICAgICAgIGtleXNUb0NvcHkuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICAgICAgaWYgKGtleSBpbiBhdHRyaWJ1dGVzKSB7XG4gICAgICAgICAgICAgICAgbWV0cmljc0F0dHJpYnV0ZXNba2V5XSA9IGF0dHJpYnV0ZXNba2V5XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IGR1cmF0aW9uU2Vjb25kcyA9ICgwLCBjb3JlXzEuaHJUaW1lVG9NaWxsaXNlY29uZHMpKCgwLCBjb3JlXzEuaHJUaW1lRHVyYXRpb24pKHN0YXJ0VGltZSwgKDAsIGNvcmVfMS5oclRpbWUpKCkpKSAvIDEwMDA7XG4gICAgICAgIHRoaXMuX29wZXJhdGlvbkR1cmF0aW9uLnJlY29yZChkdXJhdGlvblNlY29uZHMsIG1ldHJpY3NBdHRyaWJ1dGVzKTtcbiAgICB9XG4gICAgX2dldENsaWVudFF1ZXJ5UGF0Y2goKSB7XG4gICAgICAgIGNvbnN0IHBsdWdpbiA9IHRoaXM7XG4gICAgICAgIHJldHVybiAob3JpZ2luYWwpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2RpYWcuZGVidWcoJ1BhdGNoaW5nIHBnLkNsaWVudC5wcm90b3R5cGUucXVlcnknKTtcbiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiBxdWVyeSguLi5hcmdzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHV0aWxzLnNob3VsZFNraXBJbnN0cnVtZW50YXRpb24ocGx1Z2luLmdldENvbmZpZygpKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3JpZ2luYWwuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IHN0YXJ0VGltZSA9ICgwLCBjb3JlXzEuaHJUaW1lKSgpO1xuICAgICAgICAgICAgICAgIC8vIGNsaWVudC5xdWVyeSh0ZXh0LCBjYj8pLCBjbGllbnQucXVlcnkodGV4dCwgdmFsdWVzLCBjYj8pLCBhbmRcbiAgICAgICAgICAgICAgICAvLyBjbGllbnQucXVlcnkoY29uZmlnT2JqLCBjYj8pIGFyZSBhbGwgdmFsaWQgc2lnbmF0dXJlcy4gV2UgY29uc3RydWN0XG4gICAgICAgICAgICAgICAgLy8gYSBxdWVyeUNvbmZpZyBvYmogZnJvbSBhbGwgKHZhbGlkKSBzaWduYXR1cmVzIHRvIGJ1aWxkIHRoZSBzcGFuIGluIGFcbiAgICAgICAgICAgICAgICAvLyB1bmlmaWVkIHdheS4gV2UgdmVyaWZ5IHRoYXQgd2UgYXQgbGVhc3QgaGF2ZSBxdWVyeSB0ZXh0LCBhbmQgY29kZVxuICAgICAgICAgICAgICAgIC8vIGRlZmVuc2l2ZWx5IHdoZW4gZGVhbGluZyB3aXRoIGBxdWVyeUNvbmZpZ2AgYWZ0ZXIgdGhhdCAodG8gaGFuZGxlIGFsbFxuICAgICAgICAgICAgICAgIC8vIHRoZSBvdGhlciBpbnZhbGlkIGNhc2VzLCBsaWtlIGEgbm9uLWFycmF5IGZvciB2YWx1ZXMgYmVpbmcgcHJvdmlkZWQpLlxuICAgICAgICAgICAgICAgIC8vIFRoZSB0eXBlIGNhc3RzIGhlcmUgcmVmbGVjdCBvbmx5IHdoYXQgd2UndmUgYWN0dWFsbHkgdmFsaWRhdGVkLlxuICAgICAgICAgICAgICAgIGNvbnN0IGFyZzAgPSBhcmdzWzBdO1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpcnN0QXJnSXNTdHJpbmcgPSB0eXBlb2YgYXJnMCA9PT0gJ3N0cmluZyc7XG4gICAgICAgICAgICAgICAgY29uc3QgZmlyc3RBcmdJc1F1ZXJ5T2JqZWN0V2l0aFRleHQgPSB1dGlscy5pc09iamVjdFdpdGhUZXh0U3RyaW5nKGFyZzApO1xuICAgICAgICAgICAgICAgIC8vIFRPRE86IHJlbW92ZSB0aGUgYGFzIC4uLmAgY2FzdHMgYmVsb3cgd2hlbiB0aGUgVFMgdmVyc2lvbiBpcyB1cGdyYWRlZC5cbiAgICAgICAgICAgICAgICAvLyBOZXdlciBUUyB2ZXJzaW9ucyB3aWxsIHVzZSB0aGUgcmVzdWx0IG9mIGZpcnN0QXJnSXNRdWVyeU9iamVjdFdpdGhUZXh0XG4gICAgICAgICAgICAgICAgLy8gdG8gcHJvcGVybHkgbmFycm93IGFyZzAsIGJ1dCBUUyA0LjMuNSBkb2VzIG5vdC5cbiAgICAgICAgICAgICAgICBjb25zdCBxdWVyeUNvbmZpZyA9IGZpcnN0QXJnSXNTdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiBhcmcwLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiBBcnJheS5pc0FycmF5KGFyZ3NbMV0pID8gYXJnc1sxXSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA6IGZpcnN0QXJnSXNRdWVyeU9iamVjdFdpdGhUZXh0XG4gICAgICAgICAgICAgICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5hcmcwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGFyZzAubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiBhcmcwLnRleHQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiBhcmcwLnZhbHVlcyA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQXJyYXkuaXNBcnJheShhcmdzWzFdKSA/IGFyZ3NbMV0gOiB1bmRlZmluZWQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgY29uc3QgYXR0cmlidXRlcyA9IHtcbiAgICAgICAgICAgICAgICAgICAgW3NlbWNvbnZfMS5BVFRSX0RCX1NZU1RFTV06IHNlbWNvbnZfMS5EQl9TWVNURU1fVkFMVUVfUE9TVEdSRVNRTCxcbiAgICAgICAgICAgICAgICAgICAgW3NlbWFudGljX2NvbnZlbnRpb25zXzEuQVRUUl9EQl9OQU1FU1BBQ0VdOiB0aGlzLmRhdGFiYXNlLFxuICAgICAgICAgICAgICAgICAgICBbc2VtYW50aWNfY29udmVudGlvbnNfMS5BVFRSX1NFUlZFUl9QT1JUXTogdGhpcy5jb25uZWN0aW9uUGFyYW1ldGVycy5wb3J0LFxuICAgICAgICAgICAgICAgICAgICBbc2VtYW50aWNfY29udmVudGlvbnNfMS5BVFRSX1NFUlZFUl9BRERSRVNTXTogdGhpcy5jb25uZWN0aW9uUGFyYW1ldGVycy5ob3N0LFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgaWYgKHF1ZXJ5Q29uZmlnPy50ZXh0KSB7XG4gICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXNbc2VtYW50aWNfY29udmVudGlvbnNfMS5BVFRSX0RCX09QRVJBVElPTl9OQU1FXSA9XG4gICAgICAgICAgICAgICAgICAgICAgICB1dGlscy5wYXJzZU5vcm1hbGl6ZWRPcGVyYXRpb25OYW1lKHF1ZXJ5Q29uZmlnPy50ZXh0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgcmVjb3JkRHVyYXRpb24gPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHBsdWdpbi5yZWNvcmRPcGVyYXRpb25EdXJhdGlvbihhdHRyaWJ1dGVzLCBzdGFydFRpbWUpO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgY29uc3QgaW5zdHJ1bWVudGF0aW9uQ29uZmlnID0gcGx1Z2luLmdldENvbmZpZygpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNwYW4gPSB1dGlscy5oYW5kbGVDb25maWdRdWVyeS5jYWxsKHRoaXMsIHBsdWdpbi50cmFjZXIsIGluc3RydW1lbnRhdGlvbkNvbmZpZywgcGx1Z2luLl9zZW1jb252U3RhYmlsaXR5LCBxdWVyeUNvbmZpZyk7XG4gICAgICAgICAgICAgICAgLy8gTW9kaWZ5IHF1ZXJ5IHRleHQgdy8gYSB0cmFjaW5nIGNvbW1lbnQgYmVmb3JlIGludm9raW5nIG9yaWdpbmFsIGZvclxuICAgICAgICAgICAgICAgIC8vIHRyYWNpbmcsIGJ1dCBvbmx5IGlmIGFyZ3NbMF0gaGFzIG9uZSBvZiBvdXIgZXhwZWN0ZWQgc2hhcGVzLlxuICAgICAgICAgICAgICAgIGlmIChpbnN0cnVtZW50YXRpb25Db25maWcuYWRkU3FsQ29tbWVudGVyQ29tbWVudFRvUXVlcmllcykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZmlyc3RBcmdJc1N0cmluZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXJnc1swXSA9ICgwLCBzcWxfY29tbW9uXzEuYWRkU3FsQ29tbWVudGVyQ29tbWVudCkoc3BhbiwgYXJnMCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZmlyc3RBcmdJc1F1ZXJ5T2JqZWN0V2l0aFRleHQgJiYgISgnbmFtZScgaW4gYXJnMCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEluIHRoZSBjYXNlIG9mIGEgcXVlcnkgb2JqZWN0LCB3ZSBuZWVkIHRvIGVuc3VyZSB0aGVyZSdzIG5vIG5hbWUgZmllbGRcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFzIHRoaXMgaW5kaWNhdGVzIGEgcHJlcGFyZWQgcXVlcnksIHdoZXJlIHRoZSBjb21tZW50IHdvdWxkIHJlbWFpbiB0aGUgc2FtZVxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gZm9yIGV2ZXJ5IGludm9jYXRpb24gYW5kIGNvbnRhaW4gYW4gb3V0ZGF0ZWQgdHJhY2UgY29udGV4dC5cbiAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3NbMF0gPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYXJnMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiAoMCwgc3FsX2NvbW1vbl8xLmFkZFNxbENvbW1lbnRlckNvbW1lbnQpKHNwYW4sIGFyZzAudGV4dCksXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIEJpbmQgY2FsbGJhY2sgKGlmIGFueSkgdG8gcGFyZW50IHNwYW4gKGlmIGFueSlcbiAgICAgICAgICAgICAgICBpZiAoYXJncy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudFNwYW4gPSBhcGlfMS50cmFjZS5nZXRTcGFuKGFwaV8xLmNvbnRleHQuYWN0aXZlKCkpO1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGFyZ3NbYXJncy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gUGF0Y2ggUGFyYW1ldGVyUXVlcnkgY2FsbGJhY2tcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3NbYXJncy5sZW5ndGggLSAxXSA9IHV0aWxzLnBhdGNoQ2FsbGJhY2soaW5zdHJ1bWVudGF0aW9uQ29uZmlnLCBzcGFuLCBhcmdzW2FyZ3MubGVuZ3RoIC0gMV0sIC8vIG5iOiBub3QgdHlwZSBzYWZlLlxuICAgICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlcywgcmVjb3JkRHVyYXRpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgYSBwYXJlbnQgc3BhbiBleGlzdHMsIGJpbmQgdGhlIGNhbGxiYWNrXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyZW50U3Bhbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3NbYXJncy5sZW5ndGggLSAxXSA9IGFwaV8xLmNvbnRleHQuYmluZChhcGlfMS5jb250ZXh0LmFjdGl2ZSgpLCBhcmdzW2FyZ3MubGVuZ3RoIC0gMV0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHR5cGVvZiBxdWVyeUNvbmZpZz8uY2FsbGJhY2sgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFBhdGNoIENvbmZpZ1F1ZXJ5IGNhbGxiYWNrXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgY2FsbGJhY2sgPSB1dGlscy5wYXRjaENhbGxiYWNrKHBsdWdpbi5nZXRDb25maWcoKSwgc3BhbiwgcXVlcnlDb25maWcuY2FsbGJhY2ssIC8vIG5iOiBub3QgdHlwZSBzYWZlLlxuICAgICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlcywgcmVjb3JkRHVyYXRpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgYSBwYXJlbnQgc3BhbiBleGlzdGVkLCBiaW5kIHRoZSBjYWxsYmFja1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmVudFNwYW4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayA9IGFwaV8xLmNvbnRleHQuYmluZChhcGlfMS5jb250ZXh0LmFjdGl2ZSgpLCBjYWxsYmFjayk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBhcmdzWzBdLmNhbGxiYWNrID0gY2FsbGJhY2s7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgeyByZXF1ZXN0SG9vayB9ID0gaW5zdHJ1bWVudGF0aW9uQ29uZmlnO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgcmVxdWVzdEhvb2sgPT09ICdmdW5jdGlvbicgJiYgcXVlcnlDb25maWcpIHtcbiAgICAgICAgICAgICAgICAgICAgKDAsIGluc3RydW1lbnRhdGlvbl8xLnNhZmVFeGVjdXRlSW5UaGVNaWRkbGUpKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBpY2sga2V5cyB0byBleHBvc2UgZXhwbGljaXRseSwgc28gd2UncmUgbm90IGxlYWtpbmcgcGcgcGFja2FnZVxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW50ZXJuYWxzIHRoYXQgYXJlIHN1YmplY3QgdG8gY2hhbmdlXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGRhdGFiYXNlLCBob3N0LCBwb3J0LCB1c2VyIH0gPSB0aGlzLmNvbm5lY3Rpb25QYXJhbWV0ZXJzO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY29ubmVjdGlvbiA9IHsgZGF0YWJhc2UsIGhvc3QsIHBvcnQsIHVzZXIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RIb29rKHNwYW4sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6IHF1ZXJ5Q29uZmlnLnRleHQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5iOiBpZiBgY2xpZW50LnF1ZXJ5YCBpcyBjYWxsZWQgd2l0aCBpbGxlZ2FsIGFyZ3VtZW50c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAoZS5nLiwgaWYgYHF1ZXJ5Q29uZmlnLnZhbHVlc2AgaXMgcGFzc2VkIGV4cGxpY2l0bHksIGJ1dCBhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5vbi1hcnJheSBpcyBnaXZlbiksIHRoZW4gdGhlIHR5cGUgY2FzdHMgd2lsbCBiZSB3cm9uZy4gQnV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdlIGxlYXZlIGl0IHVwIHRvIHRoZSBxdWVyeUhvb2sgdG8gaGFuZGxlIHRoYXQsIGFuZCB3ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXRjaCBhbmQgc3dhbGxvdyBhbnkgZXJyb3JzIGl0IHRocm93cy4gVGhlIG90aGVyIG9wdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXJlIGFsbCB3b3JzZS4gRS5nLiwgd2UgY291bGQgbGVhdmUgYHF1ZXJ5Q29uZmlnLnZhbHVlc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW5kIGBxdWVyeUNvbmZpZy5uYW1lYCBhcyBgdW5rbm93bmAsIGJ1dCB0aGVuIHRoZSBob29rIGJvZHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd291bGQgYmUgZm9yY2VkIHRvIHZhbGlkYXRlIChvciBjYXN0KSB0aGVtIGJlZm9yZSB1c2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGVtLCB3aGljaCBzZWVtcyBpbmNyZWRpYmx5IGN1bWJlcnNvbWUgZ2l2ZW4gdGhhdCB0aGVzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXN0cyB3aWxsIGJlIGNvcnJlY3QgOTkuOSUgb2YgdGhlIHRpbWUgLS0gYW5kIHBnLnF1ZXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdpbGwgaW1tZWRpYXRlbHkgdGhyb3cgZHVyaW5nIGRldmVsb3BtZW50IGluIHRoZSBvdGhlciAuMSVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb2YgY2FzZXMuIEFsdGVybmF0aXZlbHksIHdlIGNvdWxkIHNpbXBseSBza2lwIGNhbGxpbmcgdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhvb2sgd2hlbiBgdmFsdWVzYCBvciBgbmFtZWAgZG9uJ3QgaGF2ZSB0aGUgZXhwZWN0ZWQgdHlwZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYnV0IHRoYXQgd291bGQgYWRkIHVubmVjZXNzYXJ5IHZhbGlkYXRpb24gb3ZlcmhlYWQgdG8gZXZlcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaG9vayBpbnZvY2F0aW9uIGFuZCBwb3NzaWJseSBiZSBldmVuIG1vcmUgY29uZnVzaW5nL3VuZXhwZWN0ZWQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlczogcXVlcnlDb25maWcudmFsdWVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBxdWVyeUNvbmZpZy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSwgZXJyID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbHVnaW4uX2RpYWcuZXJyb3IoJ0Vycm9yIHJ1bm5pbmcgcXVlcnkgaG9vaycsIGVycik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sIHRydWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBsZXQgcmVzdWx0O1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IG9yaWdpbmFsLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzcGFuLnJlY29yZEV4Y2VwdGlvbih1dGlscy5zYW5pdGl6ZWRFcnJvck1lc3NhZ2UoZSkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHNwYW4uc2V0U3RhdHVzKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IGFwaV8xLlNwYW5TdGF0dXNDb2RlLkVSUk9SLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogdXRpbHMuZ2V0RXJyb3JNZXNzYWdlKGUpLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgc3Bhbi5lbmQoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gQmluZCBwcm9taXNlIHRvIHBhcmVudCBzcGFuIGFuZCBlbmQgdGhlIHNwYW5cbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0IGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAudGhlbigocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBSZXR1cm4gYSBwYXNzLWFsb25nIHByb21pc2Ugd2hpY2ggZW5kcyB0aGUgc3BhbiBhbmQgdGhlbiBnb2VzIHRvIHVzZXIncyBvcmlnIHJlc29sdmVyc1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHV0aWxzLmhhbmRsZUV4ZWN1dGlvblJlc3VsdChwbHVnaW4uZ2V0Q29uZmlnKCksIHNwYW4sIHJlc3VsdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3JkRHVyYXRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGFuLmVuZCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUocmVzdWx0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChfLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGFuLnJlY29yZEV4Y2VwdGlvbih1dGlscy5zYW5pdGl6ZWRFcnJvck1lc3NhZ2UoZXJyb3IpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Bhbi5zZXRTdGF0dXMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBhcGlfMS5TcGFuU3RhdHVzQ29kZS5FUlJPUixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogZXJyb3IubWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNvcmREdXJhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwYW4uZW5kKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gZWxzZSByZXR1cm5zIHZvaWRcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OyAvLyB2b2lkXG4gICAgICAgICAgICB9O1xuICAgICAgICB9O1xuICAgIH1cbiAgICBfc2V0UG9vbENvbm5lY3RFdmVudExpc3RlbmVycyhwZ1Bvb2wpIHtcbiAgICAgICAgaWYgKHBnUG9vbFtpbnRlcm5hbF90eXBlc18xLkVWRU5UX0xJU1RFTkVSU19TRVRdKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCBwb29sTmFtZSA9IHV0aWxzLmdldFBvb2xOYW1lKHBnUG9vbC5vcHRpb25zKTtcbiAgICAgICAgcGdQb29sLm9uKCdjb25uZWN0JywgKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fY29ubmVjdGlvbnNDb3VudGVyID0gdXRpbHMudXBkYXRlQ291bnRlcihwb29sTmFtZSwgcGdQb29sLCB0aGlzLl9jb25uZWN0aW9uc0NvdW50LCB0aGlzLl9jb25uZWN0aW9uUGVuZGluZ1JlcXVlc3RzLCB0aGlzLl9jb25uZWN0aW9uc0NvdW50ZXIpO1xuICAgICAgICB9KTtcbiAgICAgICAgcGdQb29sLm9uKCdhY3F1aXJlJywgKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fY29ubmVjdGlvbnNDb3VudGVyID0gdXRpbHMudXBkYXRlQ291bnRlcihwb29sTmFtZSwgcGdQb29sLCB0aGlzLl9jb25uZWN0aW9uc0NvdW50LCB0aGlzLl9jb25uZWN0aW9uUGVuZGluZ1JlcXVlc3RzLCB0aGlzLl9jb25uZWN0aW9uc0NvdW50ZXIpO1xuICAgICAgICB9KTtcbiAgICAgICAgcGdQb29sLm9uKCdyZW1vdmUnLCAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9jb25uZWN0aW9uc0NvdW50ZXIgPSB1dGlscy51cGRhdGVDb3VudGVyKHBvb2xOYW1lLCBwZ1Bvb2wsIHRoaXMuX2Nvbm5lY3Rpb25zQ291bnQsIHRoaXMuX2Nvbm5lY3Rpb25QZW5kaW5nUmVxdWVzdHMsIHRoaXMuX2Nvbm5lY3Rpb25zQ291bnRlcik7XG4gICAgICAgIH0pO1xuICAgICAgICBwZ1Bvb2wub24oJ3JlbGVhc2UnLCAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9jb25uZWN0aW9uc0NvdW50ZXIgPSB1dGlscy51cGRhdGVDb3VudGVyKHBvb2xOYW1lLCBwZ1Bvb2wsIHRoaXMuX2Nvbm5lY3Rpb25zQ291bnQsIHRoaXMuX2Nvbm5lY3Rpb25QZW5kaW5nUmVxdWVzdHMsIHRoaXMuX2Nvbm5lY3Rpb25zQ291bnRlcik7XG4gICAgICAgIH0pO1xuICAgICAgICBwZ1Bvb2xbaW50ZXJuYWxfdHlwZXNfMS5FVkVOVF9MSVNURU5FUlNfU0VUXSA9IHRydWU7XG4gICAgfVxuICAgIF9nZXRQb29sQ29ubmVjdFBhdGNoKCkge1xuICAgICAgICBjb25zdCBwbHVnaW4gPSB0aGlzO1xuICAgICAgICByZXR1cm4gKG9yaWdpbmFsQ29ubmVjdCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIGNvbm5lY3QoY2FsbGJhY2spIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjb25maWcgPSBwbHVnaW4uZ2V0Q29uZmlnKCk7XG4gICAgICAgICAgICAgICAgaWYgKHV0aWxzLnNob3VsZFNraXBJbnN0cnVtZW50YXRpb24oY29uZmlnKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3JpZ2luYWxDb25uZWN0LmNhbGwodGhpcywgY2FsbGJhY2spO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBTdGlsbCBzZXQgdXAgZXZlbnQgbGlzdGVuZXJzIGZvciBtZXRyaWNzIGV2ZW4gd2hlbiBza2lwcGluZyBzcGFuc1xuICAgICAgICAgICAgICAgIHBsdWdpbi5fc2V0UG9vbENvbm5lY3RFdmVudExpc3RlbmVycyh0aGlzKTtcbiAgICAgICAgICAgICAgICBpZiAoY29uZmlnLmlnbm9yZUNvbm5lY3RTcGFucykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3JpZ2luYWxDb25uZWN0LmNhbGwodGhpcywgY2FsbGJhY2spO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBzZXR1cCBzcGFuXG4gICAgICAgICAgICAgICAgY29uc3Qgc3BhbiA9IHBsdWdpbi50cmFjZXIuc3RhcnRTcGFuKFNwYW5OYW1lc18xLlNwYW5OYW1lcy5QT09MX0NPTk5FQ1QsIHtcbiAgICAgICAgICAgICAgICAgICAga2luZDogYXBpXzEuU3BhbktpbmQuQ0xJRU5ULFxuICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzOiB1dGlscy5nZXRTZW1hbnRpY0F0dHJpYnV0ZXNGcm9tUG9vbENvbm5lY3Rpb24odGhpcy5vcHRpb25zLCBwbHVnaW4uX3NlbWNvbnZTdGFiaWxpdHkpLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJlbnRTcGFuID0gYXBpXzEudHJhY2UuZ2V0U3BhbihhcGlfMS5jb250ZXh0LmFjdGl2ZSgpKTtcbiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2sgPSB1dGlscy5wYXRjaENhbGxiYWNrUEdQb29sKHNwYW4sIGNhbGxiYWNrKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gSWYgYSBwYXJlbnQgc3BhbiBleGlzdHMsIGJpbmQgdGhlIGNhbGxiYWNrXG4gICAgICAgICAgICAgICAgICAgIGlmIChwYXJlbnRTcGFuKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayA9IGFwaV8xLmNvbnRleHQuYmluZChhcGlfMS5jb250ZXh0LmFjdGl2ZSgpLCBjYWxsYmFjayk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgY29ubmVjdFJlc3VsdCA9IGFwaV8xLmNvbnRleHQud2l0aChhcGlfMS50cmFjZS5zZXRTcGFuKGFwaV8xLmNvbnRleHQuYWN0aXZlKCksIHNwYW4pLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvcmlnaW5hbENvbm5lY3QuY2FsbCh0aGlzLCBjYWxsYmFjayk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhhbmRsZUNvbm5lY3RSZXN1bHQoc3BhbiwgY29ubmVjdFJlc3VsdCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9O1xuICAgIH1cbn1cbmV4cG9ydHMuUGdJbnN0cnVtZW50YXRpb24gPSBQZ0luc3RydW1lbnRhdGlvbjtcbmZ1bmN0aW9uIGhhbmRsZUNvbm5lY3RSZXN1bHQoc3BhbiwgY29ubmVjdFJlc3VsdCkge1xuICAgIGlmICghKGNvbm5lY3RSZXN1bHQgaW5zdGFuY2VvZiBQcm9taXNlKSkge1xuICAgICAgICByZXR1cm4gY29ubmVjdFJlc3VsdDtcbiAgICB9XG4gICAgY29uc3QgY29ubmVjdFJlc3VsdFByb21pc2UgPSBjb25uZWN0UmVzdWx0O1xuICAgIHJldHVybiBhcGlfMS5jb250ZXh0LmJpbmQoYXBpXzEuY29udGV4dC5hY3RpdmUoKSwgY29ubmVjdFJlc3VsdFByb21pc2VcbiAgICAgICAgLnRoZW4ocmVzdWx0ID0+IHtcbiAgICAgICAgc3Bhbi5lbmQoKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9KVxuICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgICAgICBzcGFuLnJlY29yZEV4Y2VwdGlvbih1dGlscy5zYW5pdGl6ZWRFcnJvck1lc3NhZ2UoZXJyb3IpKTtcbiAgICAgICAgfVxuICAgICAgICBzcGFuLnNldFN0YXR1cyh7XG4gICAgICAgICAgICBjb2RlOiBhcGlfMS5TcGFuU3RhdHVzQ29kZS5FUlJPUixcbiAgICAgICAgICAgIG1lc3NhZ2U6IHV0aWxzLmdldEVycm9yTWVzc2FnZShlcnJvciksXG4gICAgICAgIH0pO1xuICAgICAgICBzcGFuLmVuZCgpO1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IpO1xuICAgIH0pKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluc3RydW1lbnRhdGlvbi5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/.pnpm/@opentelemetry+instrumentation-pg@0.66.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-pg/build/src/instrumentation.js\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(rsc)/./node_modules/.pnpm/@opentelemetry+instrumentation-pg@0.66.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-pg/build/src/internal-types.js":
|
|
/*!*************************************************************************************************************************************************************************!*\
|
|
!*** ./node_modules/.pnpm/@opentelemetry+instrumentation-pg@0.66.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-pg/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.EVENT_LISTENERS_SET = void 0;\nexports.EVENT_LISTENERS_SET = Symbol('opentelemetry.instrumentation.pg.eventListenersSet');\n//# sourceMappingURL=internal-types.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvLnBucG0vQG9wZW50ZWxlbWV0cnkraW5zdHJ1bWVudGF0aW9uLXBnQDAuNjYuMF9Ab3BlbnRlbGVtZXRyeSthcGlAMS45LjEvbm9kZV9tb2R1bGVzL0BvcGVudGVsZW1ldHJ5L2luc3RydW1lbnRhdGlvbi1wZy9idWlsZC9zcmMvaW50ZXJuYWwtdHlwZXMuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4Q0FBNkMsRUFBRSxhQUFhLEVBQUM7QUFDN0QsMkJBQTJCO0FBQzNCLDJCQUEyQjtBQUMzQiIsInNvdXJjZXMiOlsiL1VzZXJzL21hcmNtaW50ZWwvUHJvamVjdHMvZS10aWIuY29tL25vZGVfbW9kdWxlcy8ucG5wbS9Ab3BlbnRlbGVtZXRyeStpbnN0cnVtZW50YXRpb24tcGdAMC42Ni4wX0BvcGVudGVsZW1ldHJ5K2FwaUAxLjkuMS9ub2RlX21vZHVsZXMvQG9wZW50ZWxlbWV0cnkvaW5zdHJ1bWVudGF0aW9uLXBnL2J1aWxkL3NyYy9pbnRlcm5hbC10eXBlcy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbi8qXG4gKiBDb3B5cmlnaHQgVGhlIE9wZW5UZWxlbWV0cnkgQXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLkVWRU5UX0xJU1RFTkVSU19TRVQgPSB2b2lkIDA7XG5leHBvcnRzLkVWRU5UX0xJU1RFTkVSU19TRVQgPSBTeW1ib2woJ29wZW50ZWxlbWV0cnkuaW5zdHJ1bWVudGF0aW9uLnBnLmV2ZW50TGlzdGVuZXJzU2V0Jyk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbnRlcm5hbC10eXBlcy5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/.pnpm/@opentelemetry+instrumentation-pg@0.66.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-pg/build/src/internal-types.js\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(rsc)/./node_modules/.pnpm/@opentelemetry+instrumentation-pg@0.66.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-pg/build/src/semconv.js":
|
|
/*!******************************************************************************************************************************************************************!*\
|
|
!*** ./node_modules/.pnpm/@opentelemetry+instrumentation-pg@0.66.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-pg/build/src/semconv.js ***!
|
|
\******************************************************************************************************************************************************************/
|
|
/***/ ((__unused_webpack_module, exports) => {
|
|
|
|
eval("\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.METRIC_DB_CLIENT_CONNECTION_PENDING_REQUESTS = exports.METRIC_DB_CLIENT_CONNECTION_COUNT = exports.DB_SYSTEM_VALUE_POSTGRESQL = exports.DB_CLIENT_CONNECTION_STATE_VALUE_USED = exports.DB_CLIENT_CONNECTION_STATE_VALUE_IDLE = exports.ATTR_NET_PEER_PORT = exports.ATTR_NET_PEER_NAME = exports.ATTR_DB_USER = exports.ATTR_DB_SYSTEM = exports.ATTR_DB_STATEMENT = exports.ATTR_DB_NAME = exports.ATTR_DB_CONNECTION_STRING = exports.ATTR_DB_CLIENT_CONNECTION_STATE = exports.ATTR_DB_CLIENT_CONNECTION_POOL_NAME = void 0;\n/*\n * This file contains a copy of unstable semantic convention definitions\n * used by this package.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n/**\n * The name of the connection pool; unique within the instrumented application. In case the connection pool implementation doesn't provide a name, instrumentation **SHOULD** use a combination of parameters that would make the name unique, for example, combining attributes `server.address`, `server.port`, and `db.namespace`, formatted as `server.address:server.port/db.namespace`. Instrumentations that generate connection pool name following different patterns **SHOULD** document it.\n *\n * @example myDataSource\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_DB_CLIENT_CONNECTION_POOL_NAME = 'db.client.connection.pool.name';\n/**\n * The state of a connection in the pool\n *\n * @example idle\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_DB_CLIENT_CONNECTION_STATE = 'db.client.connection.state';\n/**\n * Deprecated, use `server.address`, `server.port` attributes instead.\n *\n * @example \"Server=(localdb)\\\\v11.0;Integrated Security=true;\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` and `server.port`.\n */\nexports.ATTR_DB_CONNECTION_STRING = 'db.connection_string';\n/**\n * Deprecated, use `db.namespace` instead.\n *\n * @example customers\n * @example main\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.namespace`.\n */\nexports.ATTR_DB_NAME = 'db.name';\n/**\n * The database statement being executed.\n *\n * @example SELECT * FROM wuser_table\n * @example SET mykey \"WuValue\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.query.text`.\n */\nexports.ATTR_DB_STATEMENT = 'db.statement';\n/**\n * Deprecated, use `db.system.name` instead.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.system.name`.\n */\nexports.ATTR_DB_SYSTEM = 'db.system';\n/**\n * Deprecated, no replacement at this time.\n *\n * @example readonly_user\n * @example reporting_user\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Removed, no replacement at this time.\n */\nexports.ATTR_DB_USER = 'db.user';\n/**\n * Deprecated, use `server.address` on client spans and `client.address` on server spans.\n *\n * @example example.com\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` on client spans and `client.address` on server spans.\n */\nexports.ATTR_NET_PEER_NAME = 'net.peer.name';\n/**\n * Deprecated, use `server.port` on client spans and `client.port` on server spans.\n *\n * @example 8080\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.port` on client spans and `client.port` on server spans.\n */\nexports.ATTR_NET_PEER_PORT = 'net.peer.port';\n/**\n * Enum value \"idle\" for attribute {@link ATTR_DB_CLIENT_CONNECTION_STATE}.\n */\nexports.DB_CLIENT_CONNECTION_STATE_VALUE_IDLE = 'idle';\n/**\n * Enum value \"used\" for attribute {@link ATTR_DB_CLIENT_CONNECTION_STATE}.\n */\nexports.DB_CLIENT_CONNECTION_STATE_VALUE_USED = 'used';\n/**\n * Enum value \"postgresql\" for attribute {@link ATTR_DB_SYSTEM}.\n */\nexports.DB_SYSTEM_VALUE_POSTGRESQL = 'postgresql';\n/**\n * The number of connections that are currently in state described by the `state` attribute\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.METRIC_DB_CLIENT_CONNECTION_COUNT = 'db.client.connection.count';\n/**\n * The number of current pending requests for an open connection\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.METRIC_DB_CLIENT_CONNECTION_PENDING_REQUESTS = 'db.client.connection.pending_requests';\n//# sourceMappingURL=semconv.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvLnBucG0vQG9wZW50ZWxlbWV0cnkraW5zdHJ1bWVudGF0aW9uLXBnQDAuNjYuMF9Ab3BlbnRlbGVtZXRyeSthcGlAMS45LjEvbm9kZV9tb2R1bGVzL0BvcGVudGVsZW1ldHJ5L2luc3RydW1lbnRhdGlvbi1wZy9idWlsZC9zcmMvc2VtY29udi5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhDQUE2QyxFQUFFLGFBQWEsRUFBQztBQUM3RCxvREFBb0QsR0FBRyx5Q0FBeUMsR0FBRyxrQ0FBa0MsR0FBRyw2Q0FBNkMsR0FBRyw2Q0FBNkMsR0FBRywwQkFBMEIsR0FBRywwQkFBMEIsR0FBRyxvQkFBb0IsR0FBRyxzQkFBc0IsR0FBRyx5QkFBeUIsR0FBRyxvQkFBb0IsR0FBRyxpQ0FBaUMsR0FBRyx1Q0FBdUMsR0FBRywyQ0FBMkM7QUFDOWY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0NBQW9DO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkM7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1Q0FBdUM7QUFDdkM7QUFDQTtBQUNBO0FBQ0EscUNBQXFDLHlCQUF5QjtBQUM5RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQjtBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEI7QUFDMUI7QUFDQSxvQ0FBb0Msc0NBQXNDO0FBQzFFO0FBQ0EsNkNBQTZDO0FBQzdDO0FBQ0Esb0NBQW9DLHNDQUFzQztBQUMxRTtBQUNBLDZDQUE2QztBQUM3QztBQUNBLDBDQUEwQyxxQkFBcUI7QUFDL0Q7QUFDQSxrQ0FBa0M7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlDQUF5QztBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0RBQW9EO0FBQ3BEIiwic291cmNlcyI6WyIvVXNlcnMvbWFyY21pbnRlbC9Qcm9qZWN0cy9lLXRpYi5jb20vbm9kZV9tb2R1bGVzLy5wbnBtL0BvcGVudGVsZW1ldHJ5K2luc3RydW1lbnRhdGlvbi1wZ0AwLjY2LjBfQG9wZW50ZWxlbWV0cnkrYXBpQDEuOS4xL25vZGVfbW9kdWxlcy9Ab3BlbnRlbGVtZXRyeS9pbnN0cnVtZW50YXRpb24tcGcvYnVpbGQvc3JjL3NlbWNvbnYuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG4vKlxuICogQ29weXJpZ2h0IFRoZSBPcGVuVGVsZW1ldHJ5IEF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5NRVRSSUNfREJfQ0xJRU5UX0NPTk5FQ1RJT05fUEVORElOR19SRVFVRVNUUyA9IGV4cG9ydHMuTUVUUklDX0RCX0NMSUVOVF9DT05ORUNUSU9OX0NPVU5UID0gZXhwb3J0cy5EQl9TWVNURU1fVkFMVUVfUE9TVEdSRVNRTCA9IGV4cG9ydHMuREJfQ0xJRU5UX0NPTk5FQ1RJT05fU1RBVEVfVkFMVUVfVVNFRCA9IGV4cG9ydHMuREJfQ0xJRU5UX0NPTk5FQ1RJT05fU1RBVEVfVkFMVUVfSURMRSA9IGV4cG9ydHMuQVRUUl9ORVRfUEVFUl9QT1JUID0gZXhwb3J0cy5BVFRSX05FVF9QRUVSX05BTUUgPSBleHBvcnRzLkFUVFJfREJfVVNFUiA9IGV4cG9ydHMuQVRUUl9EQl9TWVNURU0gPSBleHBvcnRzLkFUVFJfREJfU1RBVEVNRU5UID0gZXhwb3J0cy5BVFRSX0RCX05BTUUgPSBleHBvcnRzLkFUVFJfREJfQ09OTkVDVElPTl9TVFJJTkcgPSBleHBvcnRzLkFUVFJfREJfQ0xJRU5UX0NPTk5FQ1RJT05fU1RBVEUgPSBleHBvcnRzLkFUVFJfREJfQ0xJRU5UX0NPTk5FQ1RJT05fUE9PTF9OQU1FID0gdm9pZCAwO1xuLypcbiAqIFRoaXMgZmlsZSBjb250YWlucyBhIGNvcHkgb2YgdW5zdGFibGUgc2VtYW50aWMgY29udmVudGlvbiBkZWZpbml0aW9uc1xuICogdXNlZCBieSB0aGlzIHBhY2thZ2UuXG4gKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL3RyZWUvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucyN1bnN0YWJsZS1zZW1jb252XG4gKi9cbi8qKlxuICogVGhlIG5hbWUgb2YgdGhlIGNvbm5lY3Rpb24gcG9vbDsgdW5pcXVlIHdpdGhpbiB0aGUgaW5zdHJ1bWVudGVkIGFwcGxpY2F0aW9uLiBJbiBjYXNlIHRoZSBjb25uZWN0aW9uIHBvb2wgaW1wbGVtZW50YXRpb24gZG9lc24ndCBwcm92aWRlIGEgbmFtZSwgaW5zdHJ1bWVudGF0aW9uICoqU0hPVUxEKiogdXNlIGEgY29tYmluYXRpb24gb2YgcGFyYW1ldGVycyB0aGF0IHdvdWxkIG1ha2UgdGhlIG5hbWUgdW5pcXVlLCBmb3IgZXhhbXBsZSwgY29tYmluaW5nIGF0dHJpYnV0ZXMgYHNlcnZlci5hZGRyZXNzYCwgYHNlcnZlci5wb3J0YCwgYW5kIGBkYi5uYW1lc3BhY2VgLCBmb3JtYXR0ZWQgYXMgYHNlcnZlci5hZGRyZXNzOnNlcnZlci5wb3J0L2RiLm5hbWVzcGFjZWAuIEluc3RydW1lbnRhdGlvbnMgdGhhdCBnZW5lcmF0ZSBjb25uZWN0aW9uIHBvb2wgbmFtZSBmb2xsb3dpbmcgZGlmZmVyZW50IHBhdHRlcm5zICoqU0hPVUxEKiogZG9jdW1lbnQgaXQuXG4gKlxuICogQGV4YW1wbGUgbXlEYXRhU291cmNlXG4gKlxuICogQGV4cGVyaW1lbnRhbCBUaGlzIGF0dHJpYnV0ZSBpcyBleHBlcmltZW50YWwgYW5kIGlzIHN1YmplY3QgdG8gYnJlYWtpbmcgY2hhbmdlcyBpbiBtaW5vciByZWxlYXNlcyBvZiBgQG9wZW50ZWxlbWV0cnkvc2VtYW50aWMtY29udmVudGlvbnNgLlxuICovXG5leHBvcnRzLkFUVFJfREJfQ0xJRU5UX0NPTk5FQ1RJT05fUE9PTF9OQU1FID0gJ2RiLmNsaWVudC5jb25uZWN0aW9uLnBvb2wubmFtZSc7XG4vKipcbiAqIFRoZSBzdGF0ZSBvZiBhIGNvbm5lY3Rpb24gaW4gdGhlIHBvb2xcbiAqXG4gKiBAZXhhbXBsZSBpZGxlXG4gKlxuICogQGV4cGVyaW1lbnRhbCBUaGlzIGF0dHJpYnV0ZSBpcyBleHBlcmltZW50YWwgYW5kIGlzIHN1YmplY3QgdG8gYnJlYWtpbmcgY2hhbmdlcyBpbiBtaW5vciByZWxlYXNlcyBvZiBgQG9wZW50ZWxlbWV0cnkvc2VtYW50aWMtY29udmVudGlvbnNgLlxuICovXG5leHBvcnRzLkFUVFJfREJfQ0xJRU5UX0NPTk5FQ1RJT05fU1RBVEUgPSAnZGIuY2xpZW50LmNvbm5lY3Rpb24uc3RhdGUnO1xuLyoqXG4gKiBEZXByZWNhdGVkLCB1c2UgYHNlcnZlci5hZGRyZXNzYCwgYHNlcnZlci5wb3J0YCBhdHRyaWJ1dGVzIGluc3RlYWQuXG4gKlxuICogQGV4YW1wbGUgXCJTZXJ2ZXI9KGxvY2FsZGIpXFxcXHYxMS4wO0ludGVncmF0ZWQgU2VjdXJpdHk9dHJ1ZTtcIlxuICpcbiAqIEBleHBlcmltZW50YWwgVGhpcyBhdHRyaWJ1dGUgaXMgZXhwZXJpbWVudGFsIGFuZCBpcyBzdWJqZWN0IHRvIGJyZWFraW5nIGNoYW5nZXMgaW4gbWlub3IgcmVsZWFzZXMgb2YgYEBvcGVudGVsZW1ldHJ5L3NlbWFudGljLWNvbnZlbnRpb25zYC5cbiAqXG4gKiBAZGVwcmVjYXRlZCBSZXBsYWNlZCBieSBgc2VydmVyLmFkZHJlc3NgIGFuZCBgc2VydmVyLnBvcnRgLlxuICovXG5leHBvcnRzLkFUVFJfREJfQ09OTkVDVElPTl9TVFJJTkcgPSAnZGIuY29ubmVjdGlvbl9zdHJpbmcnO1xuLyoqXG4gKiBEZXByZWNhdGVkLCB1c2UgYGRiLm5hbWVzcGFjZWAgaW5zdGVhZC5cbiAqXG4gKiBAZXhhbXBsZSBjdXN0b21lcnNcbiAqIEBleGFtcGxlIG1haW5cbiAqXG4gKiBAZXhwZXJpbWVudGFsIFRoaXMgYXR0cmlidXRlIGlzIGV4cGVyaW1lbnRhbCBhbmQgaXMgc3ViamVjdCB0byBicmVha2luZyBjaGFuZ2VzIGluIG1pbm9yIHJlbGVhc2VzIG9mIGBAb3BlbnRlbGVtZXRyeS9zZW1hbnRpYy1jb252ZW50aW9uc2AuXG4gKlxuICogQGRlcHJlY2F0ZWQgUmVwbGFjZWQgYnkgYGRiLm5hbWVzcGFjZWAuXG4gKi9cbmV4cG9ydHMuQVRUUl9EQl9OQU1FID0gJ2RiLm5hbWUnO1xuLyoqXG4gKiBUaGUgZGF0YWJhc2Ugc3RhdGVtZW50IGJlaW5nIGV4ZWN1dGVkLlxuICpcbiAqIEBleGFtcGxlIFNFTEVDVCAqIEZST00gd3VzZXJfdGFibGVcbiAqIEBleGFtcGxlIFNFVCBteWtleSBcIld1VmFsdWVcIlxuICpcbiAqIEBleHBlcmltZW50YWwgVGhpcyBhdHRyaWJ1dGUgaXMgZXhwZXJpbWVudGFsIGFuZCBpcyBzdWJqZWN0IHRvIGJyZWFraW5nIGNoYW5nZXMgaW4gbWlub3IgcmVsZWFzZXMgb2YgYEBvcGVudGVsZW1ldHJ5L3NlbWFudGljLWNvbnZlbnRpb25zYC5cbiAqXG4gKiBAZGVwcmVjYXRlZCBSZXBsYWNlZCBieSBgZGIucXVlcnkudGV4dGAuXG4gKi9cbmV4cG9ydHMuQVRUUl9EQl9TVEFURU1FTlQgPSAnZGIuc3RhdGVtZW50Jztcbi8qKlxuICogRGVwcmVjYXRlZCwgdXNlIGBkYi5zeXN0ZW0ubmFtZWAgaW5zdGVhZC5cbiAqXG4gKiBAZXhwZXJpbWVudGFsIFRoaXMgYXR0cmlidXRlIGlzIGV4cGVyaW1lbnRhbCBhbmQgaXMgc3ViamVjdCB0byBicmVha2luZyBjaGFuZ2VzIGluIG1pbm9yIHJlbGVhc2VzIG9mIGBAb3BlbnRlbGVtZXRyeS9zZW1hbnRpYy1jb252ZW50aW9uc2AuXG4gKlxuICogQGRlcHJlY2F0ZWQgUmVwbGFjZWQgYnkgYGRiLnN5c3RlbS5uYW1lYC5cbiAqL1xuZXhwb3J0cy5BVFRSX0RCX1NZU1RFTSA9ICdkYi5zeXN0ZW0nO1xuLyoqXG4gKiBEZXByZWNhdGVkLCBubyByZXBsYWNlbWVudCBhdCB0aGlzIHRpbWUuXG4gKlxuICogQGV4YW1wbGUgcmVhZG9ubHlfdXNlclxuICogQGV4YW1wbGUgcmVwb3J0aW5nX3VzZXJcbiAqXG4gKiBAZXhwZXJpbWVudGFsIFRoaXMgYXR0cmlidXRlIGlzIGV4cGVyaW1lbnRhbCBhbmQgaXMgc3ViamVjdCB0byBicmVha2luZyBjaGFuZ2VzIGluIG1pbm9yIHJlbGVhc2VzIG9mIGBAb3BlbnRlbGVtZXRyeS9zZW1hbnRpYy1jb252ZW50aW9uc2AuXG4gKlxuICogQGRlcHJlY2F0ZWQgUmVtb3ZlZCwgbm8gcmVwbGFjZW1lbnQgYXQgdGhpcyB0aW1lLlxuICovXG5leHBvcnRzLkFUVFJfREJfVVNFUiA9ICdkYi51c2VyJztcbi8qKlxuICogRGVwcmVjYXRlZCwgdXNlIGBzZXJ2ZXIuYWRkcmVzc2Agb24gY2xpZW50IHNwYW5zIGFuZCBgY2xpZW50LmFkZHJlc3NgIG9uIHNlcnZlciBzcGFucy5cbiAqXG4gKiBAZXhhbXBsZSBleGFtcGxlLmNvbVxuICpcbiAqIEBleHBlcmltZW50YWwgVGhpcyBhdHRyaWJ1dGUgaXMgZXhwZXJpbWVudGFsIGFuZCBpcyBzdWJqZWN0IHRvIGJyZWFraW5nIGNoYW5nZXMgaW4gbWlub3IgcmVsZWFzZXMgb2YgYEBvcGVudGVsZW1ldHJ5L3NlbWFudGljLWNvbnZlbnRpb25zYC5cbiAqXG4gKiBAZGVwcmVjYXRlZCBSZXBsYWNlZCBieSBgc2VydmVyLmFkZHJlc3NgIG9uIGNsaWVudCBzcGFucyBhbmQgYGNsaWVudC5hZGRyZXNzYCBvbiBzZXJ2ZXIgc3BhbnMuXG4gKi9cbmV4cG9ydHMuQVRUUl9ORVRfUEVFUl9OQU1FID0gJ25ldC5wZWVyLm5hbWUnO1xuLyoqXG4gKiBEZXByZWNhdGVkLCB1c2UgYHNlcnZlci5wb3J0YCBvbiBjbGllbnQgc3BhbnMgYW5kIGBjbGllbnQucG9ydGAgb24gc2VydmVyIHNwYW5zLlxuICpcbiAqIEBleGFtcGxlIDgwODBcbiAqXG4gKiBAZXhwZXJpbWVudGFsIFRoaXMgYXR0cmlidXRlIGlzIGV4cGVyaW1lbnRhbCBhbmQgaXMgc3ViamVjdCB0byBicmVha2luZyBjaGFuZ2VzIGluIG1pbm9yIHJlbGVhc2VzIG9mIGBAb3BlbnRlbGVtZXRyeS9zZW1hbnRpYy1jb252ZW50aW9uc2AuXG4gKlxuICogQGRlcHJlY2F0ZWQgUmVwbGFjZWQgYnkgYHNlcnZlci5wb3J0YCBvbiBjbGllbnQgc3BhbnMgYW5kIGBjbGllbnQucG9ydGAgb24gc2VydmVyIHNwYW5zLlxuICovXG5leHBvcnRzLkFUVFJfTkVUX1BFRVJfUE9SVCA9ICduZXQucGVlci5wb3J0Jztcbi8qKlxuICogRW51bSB2YWx1ZSBcImlkbGVcIiBmb3IgYXR0cmlidXRlIHtAbGluayBBVFRSX0RCX0NMSUVOVF9DT05ORUNUSU9OX1NUQVRFfS5cbiAqL1xuZXhwb3J0cy5EQl9DTElFTlRfQ09OTkVDVElPTl9TVEFURV9WQUxVRV9JRExFID0gJ2lkbGUnO1xuLyoqXG4gKiBFbnVtIHZhbHVlIFwidXNlZFwiIGZvciBhdHRyaWJ1dGUge0BsaW5rIEFUVFJfREJfQ0xJRU5UX0NPTk5FQ1RJT05fU1RBVEV9LlxuICovXG5leHBvcnRzLkRCX0NMSUVOVF9DT05ORUNUSU9OX1NUQVRFX1ZBTFVFX1VTRUQgPSAndXNlZCc7XG4vKipcbiAqIEVudW0gdmFsdWUgXCJwb3N0Z3Jlc3FsXCIgZm9yIGF0dHJpYnV0ZSB7QGxpbmsgQVRUUl9EQl9TWVNURU19LlxuICovXG5leHBvcnRzLkRCX1NZU1RFTV9WQUxVRV9QT1NUR1JFU1FMID0gJ3Bvc3RncmVzcWwnO1xuLyoqXG4gKiBUaGUgbnVtYmVyIG9mIGNvbm5lY3Rpb25zIHRoYXQgYXJlIGN1cnJlbnRseSBpbiBzdGF0ZSBkZXNjcmliZWQgYnkgdGhlIGBzdGF0ZWAgYXR0cmlidXRlXG4gKlxuICogQGV4cGVyaW1lbnRhbCBUaGlzIG1ldHJpYyBpcyBleHBlcmltZW50YWwgYW5kIGlzIHN1YmplY3QgdG8gYnJlYWtpbmcgY2hhbmdlcyBpbiBtaW5vciByZWxlYXNlcyBvZiBgQG9wZW50ZWxlbWV0cnkvc2VtYW50aWMtY29udmVudGlvbnNgLlxuICovXG5leHBvcnRzLk1FVFJJQ19EQl9DTElFTlRfQ09OTkVDVElPTl9DT1VOVCA9ICdkYi5jbGllbnQuY29ubmVjdGlvbi5jb3VudCc7XG4vKipcbiAqIFRoZSBudW1iZXIgb2YgY3VycmVudCBwZW5kaW5nIHJlcXVlc3RzIGZvciBhbiBvcGVuIGNvbm5lY3Rpb25cbiAqXG4gKiBAZXhwZXJpbWVudGFsIFRoaXMgbWV0cmljIGlzIGV4cGVyaW1lbnRhbCBhbmQgaXMgc3ViamVjdCB0byBicmVha2luZyBjaGFuZ2VzIGluIG1pbm9yIHJlbGVhc2VzIG9mIGBAb3BlbnRlbGVtZXRyeS9zZW1hbnRpYy1jb252ZW50aW9uc2AuXG4gKi9cbmV4cG9ydHMuTUVUUklDX0RCX0NMSUVOVF9DT05ORUNUSU9OX1BFTkRJTkdfUkVRVUVTVFMgPSAnZGIuY2xpZW50LmNvbm5lY3Rpb24ucGVuZGluZ19yZXF1ZXN0cyc7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1zZW1jb252LmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/.pnpm/@opentelemetry+instrumentation-pg@0.66.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-pg/build/src/semconv.js\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(rsc)/./node_modules/.pnpm/@opentelemetry+instrumentation-pg@0.66.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-pg/build/src/utils.js":
|
|
/*!****************************************************************************************************************************************************************!*\
|
|
!*** ./node_modules/.pnpm/@opentelemetry+instrumentation-pg@0.66.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-pg/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.sanitizedErrorMessage = exports.isObjectWithTextString = exports.getErrorMessage = exports.patchClientConnectCallback = exports.patchCallbackPGPool = exports.updateCounter = exports.getPoolName = exports.patchCallback = exports.handleExecutionResult = exports.handleConfigQuery = exports.shouldSkipInstrumentation = exports.getSemanticAttributesFromPoolConnection = exports.getSemanticAttributesFromConnection = exports.getConnectionString = exports.parseAndMaskConnectionString = exports.parseNormalizedOperationName = exports.getQuerySpanName = void 0;\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 AttributeNames_1 = __webpack_require__(/*! ./enums/AttributeNames */ \"(rsc)/./node_modules/.pnpm/@opentelemetry+instrumentation-pg@0.66.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-pg/build/src/enums/AttributeNames.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 semconv_1 = __webpack_require__(/*! ./semconv */ \"(rsc)/./node_modules/.pnpm/@opentelemetry+instrumentation-pg@0.66.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-pg/build/src/semconv.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 SpanNames_1 = __webpack_require__(/*! ./enums/SpanNames */ \"(rsc)/./node_modules/.pnpm/@opentelemetry+instrumentation-pg@0.66.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-pg/build/src/enums/SpanNames.js\");\n/**\n * Helper function to get a low cardinality span name from whatever info we have\n * about the query.\n *\n * This is tricky, because we don't have most of the information (table name,\n * operation name, etc) the spec recommends using to build a low-cardinality\n * value w/o parsing. So, we use db.name and assume that, if the query's a named\n * prepared statement, those `name` values will be low cardinality. If we don't\n * have a named prepared statement, we try to parse an operation (despite the\n * spec's warnings).\n *\n * @params dbName The name of the db against which this query is being issued,\n * which could be missing if no db name was given at the time that the\n * connection was established.\n * @params queryConfig Information we have about the query being issued, typed\n * to reflect only the validation we've actually done on the args to\n * `client.query()`. This will be undefined if `client.query()` was called\n * with invalid arguments.\n */\nfunction getQuerySpanName(dbName, queryConfig) {\n // NB: when the query config is invalid, we omit the dbName too, so that\n // someone (or some tool) reading the span name doesn't misinterpret the\n // dbName as being a prepared statement or sql commit name.\n if (!queryConfig)\n return SpanNames_1.SpanNames.QUERY_PREFIX;\n // Either the name of a prepared statement; or an attempted parse\n // of the SQL command, normalized to uppercase; or unknown.\n const command = typeof queryConfig.name === 'string' && queryConfig.name\n ? queryConfig.name\n : parseNormalizedOperationName(queryConfig.text);\n return `${SpanNames_1.SpanNames.QUERY_PREFIX}:${command}${dbName ? ` ${dbName}` : ''}`;\n}\nexports.getQuerySpanName = getQuerySpanName;\nfunction parseNormalizedOperationName(queryText) {\n // Trim the query text to handle leading/trailing whitespace\n const trimmedQuery = queryText.trim();\n const indexOfFirstSpace = trimmedQuery.indexOf(' ');\n let sqlCommand = indexOfFirstSpace === -1\n ? trimmedQuery\n : trimmedQuery.slice(0, indexOfFirstSpace);\n sqlCommand = sqlCommand.toUpperCase();\n // Handle query text being \"COMMIT;\", which has an extra semicolon before the space.\n return sqlCommand.endsWith(';') ? sqlCommand.slice(0, -1) : sqlCommand;\n}\nexports.parseNormalizedOperationName = parseNormalizedOperationName;\nfunction parseAndMaskConnectionString(connectionString) {\n try {\n // Parse the connection string\n const url = new URL(connectionString);\n // Remove all auth information (username and password)\n url.username = '';\n url.password = '';\n return url.toString();\n }\n catch (e) {\n // If parsing fails, return a generic connection string\n return 'postgresql://localhost:5432/';\n }\n}\nexports.parseAndMaskConnectionString = parseAndMaskConnectionString;\nfunction getConnectionString(params) {\n if ('connectionString' in params && params.connectionString) {\n return parseAndMaskConnectionString(params.connectionString);\n }\n const host = params.host || 'localhost';\n const port = params.port || 5432;\n const database = params.database || '';\n return `postgresql://${host}:${port}/${database}`;\n}\nexports.getConnectionString = getConnectionString;\nfunction getPort(port) {\n // Port may be NaN as parseInt() is used on the value, passing null will result in NaN being parsed.\n // https://github.com/brianc/node-postgres/blob/2a8efbee09a284be12748ed3962bc9b816965e36/packages/pg/lib/connection-parameters.js#L66\n if (Number.isInteger(port)) {\n return port;\n }\n // Unable to find the default used in pg code, so falling back to 'undefined'.\n return undefined;\n}\nfunction getSemanticAttributesFromConnection(params, semconvStability) {\n let attributes = {};\n if (semconvStability & instrumentation_1.SemconvStability.OLD) {\n attributes = {\n ...attributes,\n [semconv_1.ATTR_DB_SYSTEM]: semconv_1.DB_SYSTEM_VALUE_POSTGRESQL,\n [semconv_1.ATTR_DB_NAME]: params.database,\n [semconv_1.ATTR_DB_CONNECTION_STRING]: getConnectionString(params),\n [semconv_1.ATTR_DB_USER]: params.user,\n [semconv_1.ATTR_NET_PEER_NAME]: params.host,\n [semconv_1.ATTR_NET_PEER_PORT]: getPort(params.port),\n };\n }\n if (semconvStability & instrumentation_1.SemconvStability.STABLE) {\n attributes = {\n ...attributes,\n [semantic_conventions_1.ATTR_DB_SYSTEM_NAME]: semantic_conventions_1.DB_SYSTEM_NAME_VALUE_POSTGRESQL,\n [semantic_conventions_1.ATTR_DB_NAMESPACE]: params.namespace,\n [semantic_conventions_1.ATTR_SERVER_ADDRESS]: params.host,\n [semantic_conventions_1.ATTR_SERVER_PORT]: getPort(params.port),\n };\n }\n return attributes;\n}\nexports.getSemanticAttributesFromConnection = getSemanticAttributesFromConnection;\nfunction getSemanticAttributesFromPoolConnection(params, semconvStability) {\n let url;\n try {\n url = params.connectionString\n ? new URL(params.connectionString)\n : undefined;\n }\n catch (e) {\n url = undefined;\n }\n let attributes = {\n [AttributeNames_1.AttributeNames.IDLE_TIMEOUT_MILLIS]: params.idleTimeoutMillis,\n [AttributeNames_1.AttributeNames.MAX_CLIENT]: params.maxClient,\n };\n if (semconvStability & instrumentation_1.SemconvStability.OLD) {\n attributes = {\n ...attributes,\n [semconv_1.ATTR_DB_SYSTEM]: semconv_1.DB_SYSTEM_VALUE_POSTGRESQL,\n [semconv_1.ATTR_DB_NAME]: url?.pathname.slice(1) ?? params.database,\n [semconv_1.ATTR_DB_CONNECTION_STRING]: getConnectionString(params),\n [semconv_1.ATTR_NET_PEER_NAME]: url?.hostname ?? params.host,\n [semconv_1.ATTR_NET_PEER_PORT]: Number(url?.port) || getPort(params.port),\n [semconv_1.ATTR_DB_USER]: url?.username ?? params.user,\n };\n }\n if (semconvStability & instrumentation_1.SemconvStability.STABLE) {\n attributes = {\n ...attributes,\n [semantic_conventions_1.ATTR_DB_SYSTEM_NAME]: semantic_conventions_1.DB_SYSTEM_NAME_VALUE_POSTGRESQL,\n [semantic_conventions_1.ATTR_DB_NAMESPACE]: params.namespace,\n [semantic_conventions_1.ATTR_SERVER_ADDRESS]: url?.hostname ?? params.host,\n [semantic_conventions_1.ATTR_SERVER_PORT]: Number(url?.port) || getPort(params.port),\n };\n }\n return attributes;\n}\nexports.getSemanticAttributesFromPoolConnection = getSemanticAttributesFromPoolConnection;\nfunction shouldSkipInstrumentation(instrumentationConfig) {\n return (instrumentationConfig.requireParentSpan === true &&\n api_1.trace.getSpan(api_1.context.active()) === undefined);\n}\nexports.shouldSkipInstrumentation = shouldSkipInstrumentation;\n// Create a span from our normalized queryConfig object,\n// or return a basic span if no queryConfig was given/could be created.\nfunction handleConfigQuery(tracer, instrumentationConfig, semconvStability, queryConfig) {\n // Create child span.\n const { connectionParameters } = this;\n const dbName = connectionParameters.database;\n const spanName = getQuerySpanName(dbName, queryConfig);\n const span = tracer.startSpan(spanName, {\n kind: api_1.SpanKind.CLIENT,\n attributes: getSemanticAttributesFromConnection(connectionParameters, semconvStability),\n });\n if (!queryConfig) {\n return span;\n }\n // Set attributes\n if (queryConfig.text) {\n if (semconvStability & instrumentation_1.SemconvStability.OLD) {\n span.setAttribute(semconv_1.ATTR_DB_STATEMENT, queryConfig.text);\n }\n if (semconvStability & instrumentation_1.SemconvStability.STABLE) {\n span.setAttribute(semantic_conventions_1.ATTR_DB_QUERY_TEXT, queryConfig.text);\n }\n }\n if (instrumentationConfig.enhancedDatabaseReporting &&\n Array.isArray(queryConfig.values)) {\n try {\n const convertedValues = queryConfig.values.map(value => {\n if (value == null) {\n return 'null';\n }\n else if (value instanceof Buffer) {\n return value.toString();\n }\n else if (typeof value === 'object') {\n if (typeof value.toPostgres === 'function') {\n return value.toPostgres();\n }\n return JSON.stringify(value);\n }\n else {\n //string, number\n return value.toString();\n }\n });\n span.setAttribute(AttributeNames_1.AttributeNames.PG_VALUES, convertedValues);\n }\n catch (e) {\n api_1.diag.error('failed to stringify ', queryConfig.values, e);\n }\n }\n // Set plan name attribute, if present\n if (typeof queryConfig.name === 'string') {\n span.setAttribute(AttributeNames_1.AttributeNames.PG_PLAN, queryConfig.name);\n }\n return span;\n}\nexports.handleConfigQuery = handleConfigQuery;\nfunction handleExecutionResult(config, span, pgResult) {\n if (typeof config.responseHook === 'function') {\n (0, instrumentation_1.safeExecuteInTheMiddle)(() => {\n config.responseHook(span, {\n data: pgResult,\n });\n }, err => {\n if (err) {\n api_1.diag.error('Error running response hook', err);\n }\n }, true);\n }\n}\nexports.handleExecutionResult = handleExecutionResult;\nfunction patchCallback(instrumentationConfig, span, cb, attributes, recordDuration) {\n return function patchedCallback(err, res) {\n if (err) {\n if (Object.prototype.hasOwnProperty.call(err, 'code')) {\n attributes[semantic_conventions_1.ATTR_ERROR_TYPE] = err['code'];\n }\n if (err instanceof Error) {\n span.recordException(sanitizedErrorMessage(err));\n }\n span.setStatus({\n code: api_1.SpanStatusCode.ERROR,\n message: err.message,\n });\n }\n else {\n handleExecutionResult(instrumentationConfig, span, res);\n }\n recordDuration();\n span.end();\n cb.call(this, err, res);\n };\n}\nexports.patchCallback = patchCallback;\nfunction getPoolName(pool) {\n let poolName = '';\n poolName += (pool?.host ? `${pool.host}` : 'unknown_host') + ':';\n poolName += (pool?.port ? `${pool.port}` : 'unknown_port') + '/';\n poolName += pool?.database ? `${pool.database}` : 'unknown_database';\n return poolName.trim();\n}\nexports.getPoolName = getPoolName;\nfunction updateCounter(poolName, pool, connectionCount, connectionPendingRequests, latestCounter) {\n const all = pool.totalCount;\n const pending = pool.waitingCount;\n const idle = pool.idleCount;\n const used = all - idle;\n connectionCount.add(used - latestCounter.used, {\n [semconv_1.ATTR_DB_CLIENT_CONNECTION_STATE]: semconv_1.DB_CLIENT_CONNECTION_STATE_VALUE_USED,\n [semconv_1.ATTR_DB_CLIENT_CONNECTION_POOL_NAME]: poolName,\n });\n connectionCount.add(idle - latestCounter.idle, {\n [semconv_1.ATTR_DB_CLIENT_CONNECTION_STATE]: semconv_1.DB_CLIENT_CONNECTION_STATE_VALUE_IDLE,\n [semconv_1.ATTR_DB_CLIENT_CONNECTION_POOL_NAME]: poolName,\n });\n connectionPendingRequests.add(pending - latestCounter.pending, {\n [semconv_1.ATTR_DB_CLIENT_CONNECTION_POOL_NAME]: poolName,\n });\n return { used: used, idle: idle, pending: pending };\n}\nexports.updateCounter = updateCounter;\nfunction patchCallbackPGPool(span, cb) {\n return function patchedCallback(err, res, done) {\n if (err) {\n if (err instanceof Error) {\n span.recordException(sanitizedErrorMessage(err));\n }\n span.setStatus({\n code: api_1.SpanStatusCode.ERROR,\n message: err.message,\n });\n }\n span.end();\n cb.call(this, err, res, done);\n };\n}\nexports.patchCallbackPGPool = patchCallbackPGPool;\nfunction patchClientConnectCallback(span, cb) {\n return function patchedClientConnectCallback(err) {\n if (err) {\n if (err instanceof Error) {\n span.recordException(sanitizedErrorMessage(err));\n }\n span.setStatus({\n code: api_1.SpanStatusCode.ERROR,\n message: err.message,\n });\n }\n span.end();\n cb.apply(this, arguments);\n };\n}\nexports.patchClientConnectCallback = patchClientConnectCallback;\n/**\n * Attempt to get a message string from a thrown value, while being quite\n * defensive, to recognize the fact that, in JS, any kind of value (even\n * primitives) can be thrown.\n */\nfunction getErrorMessage(e) {\n return typeof e === 'object' && e !== null && 'message' in e\n ? String(e.message)\n : undefined;\n}\nexports.getErrorMessage = getErrorMessage;\nfunction isObjectWithTextString(it) {\n return (typeof it === 'object' &&\n typeof it?.text === 'string');\n}\nexports.isObjectWithTextString = isObjectWithTextString;\n/**\n * Generates a sanitized message for the error.\n * Only includes the error type and PostgreSQL error code, omitting any sensitive details.\n */\nfunction sanitizedErrorMessage(error) {\n const name = error?.name ?? 'PostgreSQLError';\n const code = error?.code ?? 'UNKNOWN';\n return `PostgreSQL error of type '${name}' occurred (code: ${code})`;\n}\nexports.sanitizedErrorMessage = sanitizedErrorMessage;\n//# sourceMappingURL=utils.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvLnBucG0vQG9wZW50ZWxlbWV0cnkraW5zdHJ1bWVudGF0aW9uLXBnQDAuNjYuMF9Ab3BlbnRlbGVtZXRyeSthcGlAMS45LjEvbm9kZV9tb2R1bGVzL0BvcGVudGVsZW1ldHJ5L2luc3RydW1lbnRhdGlvbi1wZy9idWlsZC9zcmMvdXRpbHMuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4Q0FBNkMsRUFBRSxhQUFhLEVBQUM7QUFDN0QsNkJBQTZCLEdBQUcsOEJBQThCLEdBQUcsdUJBQXVCLEdBQUcsa0NBQWtDLEdBQUcsMkJBQTJCLEdBQUcscUJBQXFCLEdBQUcsbUJBQW1CLEdBQUcscUJBQXFCLEdBQUcsNkJBQTZCLEdBQUcseUJBQXlCLEdBQUcsaUNBQWlDLEdBQUcsK0NBQStDLEdBQUcsMkNBQTJDLEdBQUcsMkJBQTJCLEdBQUcsb0NBQW9DLEdBQUcsb0NBQW9DLEdBQUcsd0JBQXdCO0FBQ3hpQixjQUFjLG1CQUFPLENBQUMsa0lBQW9CO0FBQzFDLHlCQUF5QixtQkFBTyxDQUFDLDZNQUF3QjtBQUN6RCwrQkFBK0IsbUJBQU8sQ0FBQyxzTEFBcUM7QUFDNUUsa0JBQWtCLG1CQUFPLENBQUMsbUxBQVc7QUFDckMsMEJBQTBCLG1CQUFPLENBQUMsaU1BQWdDO0FBQ2xFLG9CQUFvQixtQkFBTyxDQUFDLG1NQUFtQjtBQUMvQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdEQUFnRDtBQUNoRCxvREFBb0Q7QUFDcEQ7QUFDQTtBQUNBO0FBQ0EsY0FBYyxtQ0FBbUMsR0FBRyxRQUFRLEVBQUUsYUFBYSxPQUFPLE9BQU87QUFDekY7QUFDQSx3QkFBd0I7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVDQUF1QztBQUN2QyxpQ0FBaUM7QUFDakM7QUFDQSxvQ0FBb0M7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQztBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQixLQUFLLEdBQUcsS0FBSyxHQUFHLFNBQVM7QUFDcEQ7QUFDQSwyQkFBMkI7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkNBQTJDO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtDQUErQztBQUMvQztBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksdUJBQXVCO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUI7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYixTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSw2QkFBNkI7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0EsaUNBQWlDLFVBQVU7QUFDM0MsaUNBQWlDLFVBQVU7QUFDM0Msb0NBQW9DLGNBQWM7QUFDbEQ7QUFDQTtBQUNBLG1CQUFtQjtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMLGFBQWE7QUFDYjtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQjtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQztBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QjtBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4QjtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdDQUF3QyxLQUFLLG9CQUFvQixLQUFLO0FBQ3RFO0FBQ0EsNkJBQTZCO0FBQzdCIiwic291cmNlcyI6WyIvVXNlcnMvbWFyY21pbnRlbC9Qcm9qZWN0cy9lLXRpYi5jb20vbm9kZV9tb2R1bGVzLy5wbnBtL0BvcGVudGVsZW1ldHJ5K2luc3RydW1lbnRhdGlvbi1wZ0AwLjY2LjBfQG9wZW50ZWxlbWV0cnkrYXBpQDEuOS4xL25vZGVfbW9kdWxlcy9Ab3BlbnRlbGVtZXRyeS9pbnN0cnVtZW50YXRpb24tcGcvYnVpbGQvc3JjL3V0aWxzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuLypcbiAqIENvcHlyaWdodCBUaGUgT3BlblRlbGVtZXRyeSBBdXRob3JzXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuc2FuaXRpemVkRXJyb3JNZXNzYWdlID0gZXhwb3J0cy5pc09iamVjdFdpdGhUZXh0U3RyaW5nID0gZXhwb3J0cy5nZXRFcnJvck1lc3NhZ2UgPSBleHBvcnRzLnBhdGNoQ2xpZW50Q29ubmVjdENhbGxiYWNrID0gZXhwb3J0cy5wYXRjaENhbGxiYWNrUEdQb29sID0gZXhwb3J0cy51cGRhdGVDb3VudGVyID0gZXhwb3J0cy5nZXRQb29sTmFtZSA9IGV4cG9ydHMucGF0Y2hDYWxsYmFjayA9IGV4cG9ydHMuaGFuZGxlRXhlY3V0aW9uUmVzdWx0ID0gZXhwb3J0cy5oYW5kbGVDb25maWdRdWVyeSA9IGV4cG9ydHMuc2hvdWxkU2tpcEluc3RydW1lbnRhdGlvbiA9IGV4cG9ydHMuZ2V0U2VtYW50aWNBdHRyaWJ1dGVzRnJvbVBvb2xDb25uZWN0aW9uID0gZXhwb3J0cy5nZXRTZW1hbnRpY0F0dHJpYnV0ZXNGcm9tQ29ubmVjdGlvbiA9IGV4cG9ydHMuZ2V0Q29ubmVjdGlvblN0cmluZyA9IGV4cG9ydHMucGFyc2VBbmRNYXNrQ29ubmVjdGlvblN0cmluZyA9IGV4cG9ydHMucGFyc2VOb3JtYWxpemVkT3BlcmF0aW9uTmFtZSA9IGV4cG9ydHMuZ2V0UXVlcnlTcGFuTmFtZSA9IHZvaWQgMDtcbmNvbnN0IGFwaV8xID0gcmVxdWlyZShcIkBvcGVudGVsZW1ldHJ5L2FwaVwiKTtcbmNvbnN0IEF0dHJpYnV0ZU5hbWVzXzEgPSByZXF1aXJlKFwiLi9lbnVtcy9BdHRyaWJ1dGVOYW1lc1wiKTtcbmNvbnN0IHNlbWFudGljX2NvbnZlbnRpb25zXzEgPSByZXF1aXJlKFwiQG9wZW50ZWxlbWV0cnkvc2VtYW50aWMtY29udmVudGlvbnNcIik7XG5jb25zdCBzZW1jb252XzEgPSByZXF1aXJlKFwiLi9zZW1jb252XCIpO1xuY29uc3QgaW5zdHJ1bWVudGF0aW9uXzEgPSByZXF1aXJlKFwiQG9wZW50ZWxlbWV0cnkvaW5zdHJ1bWVudGF0aW9uXCIpO1xuY29uc3QgU3Bhbk5hbWVzXzEgPSByZXF1aXJlKFwiLi9lbnVtcy9TcGFuTmFtZXNcIik7XG4vKipcbiAqIEhlbHBlciBmdW5jdGlvbiB0byBnZXQgYSBsb3cgY2FyZGluYWxpdHkgc3BhbiBuYW1lIGZyb20gd2hhdGV2ZXIgaW5mbyB3ZSBoYXZlXG4gKiBhYm91dCB0aGUgcXVlcnkuXG4gKlxuICogVGhpcyBpcyB0cmlja3ksIGJlY2F1c2Ugd2UgZG9uJ3QgaGF2ZSBtb3N0IG9mIHRoZSBpbmZvcm1hdGlvbiAodGFibGUgbmFtZSxcbiAqIG9wZXJhdGlvbiBuYW1lLCBldGMpIHRoZSBzcGVjIHJlY29tbWVuZHMgdXNpbmcgdG8gYnVpbGQgYSBsb3ctY2FyZGluYWxpdHlcbiAqIHZhbHVlIHcvbyBwYXJzaW5nLiBTbywgd2UgdXNlIGRiLm5hbWUgYW5kIGFzc3VtZSB0aGF0LCBpZiB0aGUgcXVlcnkncyBhIG5hbWVkXG4gKiBwcmVwYXJlZCBzdGF0ZW1lbnQsIHRob3NlIGBuYW1lYCB2YWx1ZXMgd2lsbCBiZSBsb3cgY2FyZGluYWxpdHkuIElmIHdlIGRvbid0XG4gKiBoYXZlIGEgbmFtZWQgcHJlcGFyZWQgc3RhdGVtZW50LCB3ZSB0cnkgdG8gcGFyc2UgYW4gb3BlcmF0aW9uIChkZXNwaXRlIHRoZVxuICogc3BlYydzIHdhcm5pbmdzKS5cbiAqXG4gKiBAcGFyYW1zIGRiTmFtZSBUaGUgbmFtZSBvZiB0aGUgZGIgYWdhaW5zdCB3aGljaCB0aGlzIHF1ZXJ5IGlzIGJlaW5nIGlzc3VlZCxcbiAqICAgd2hpY2ggY291bGQgYmUgbWlzc2luZyBpZiBubyBkYiBuYW1lIHdhcyBnaXZlbiBhdCB0aGUgdGltZSB0aGF0IHRoZVxuICogICBjb25uZWN0aW9uIHdhcyBlc3RhYmxpc2hlZC5cbiAqIEBwYXJhbXMgcXVlcnlDb25maWcgSW5mb3JtYXRpb24gd2UgaGF2ZSBhYm91dCB0aGUgcXVlcnkgYmVpbmcgaXNzdWVkLCB0eXBlZFxuICogICB0byByZWZsZWN0IG9ubHkgdGhlIHZhbGlkYXRpb24gd2UndmUgYWN0dWFsbHkgZG9uZSBvbiB0aGUgYXJncyB0b1xuICogICBgY2xpZW50LnF1ZXJ5KClgLiBUaGlzIHdpbGwgYmUgdW5kZWZpbmVkIGlmIGBjbGllbnQucXVlcnkoKWAgd2FzIGNhbGxlZFxuICogICB3aXRoIGludmFsaWQgYXJndW1lbnRzLlxuICovXG5mdW5jdGlvbiBnZXRRdWVyeVNwYW5OYW1lKGRiTmFtZSwgcXVlcnlDb25maWcpIHtcbiAgICAvLyBOQjogd2hlbiB0aGUgcXVlcnkgY29uZmlnIGlzIGludmFsaWQsIHdlIG9taXQgdGhlIGRiTmFtZSB0b28sIHNvIHRoYXRcbiAgICAvLyBzb21lb25lIChvciBzb21lIHRvb2wpIHJlYWRpbmcgdGhlIHNwYW4gbmFtZSBkb2Vzbid0IG1pc2ludGVycHJldCB0aGVcbiAgICAvLyBkYk5hbWUgYXMgYmVpbmcgYSBwcmVwYXJlZCBzdGF0ZW1lbnQgb3Igc3FsIGNvbW1pdCBuYW1lLlxuICAgIGlmICghcXVlcnlDb25maWcpXG4gICAgICAgIHJldHVybiBTcGFuTmFtZXNfMS5TcGFuTmFtZXMuUVVFUllfUFJFRklYO1xuICAgIC8vIEVpdGhlciB0aGUgbmFtZSBvZiBhIHByZXBhcmVkIHN0YXRlbWVudDsgb3IgYW4gYXR0ZW1wdGVkIHBhcnNlXG4gICAgLy8gb2YgdGhlIFNRTCBjb21tYW5kLCBub3JtYWxpemVkIHRvIHVwcGVyY2FzZTsgb3IgdW5rbm93bi5cbiAgICBjb25zdCBjb21tYW5kID0gdHlwZW9mIHF1ZXJ5Q29uZmlnLm5hbWUgPT09ICdzdHJpbmcnICYmIHF1ZXJ5Q29uZmlnLm5hbWVcbiAgICAgICAgPyBxdWVyeUNvbmZpZy5uYW1lXG4gICAgICAgIDogcGFyc2VOb3JtYWxpemVkT3BlcmF0aW9uTmFtZShxdWVyeUNvbmZpZy50ZXh0KTtcbiAgICByZXR1cm4gYCR7U3Bhbk5hbWVzXzEuU3Bhbk5hbWVzLlFVRVJZX1BSRUZJWH06JHtjb21tYW5kfSR7ZGJOYW1lID8gYCAke2RiTmFtZX1gIDogJyd9YDtcbn1cbmV4cG9ydHMuZ2V0UXVlcnlTcGFuTmFtZSA9IGdldFF1ZXJ5U3Bhbk5hbWU7XG5mdW5jdGlvbiBwYXJzZU5vcm1hbGl6ZWRPcGVyYXRpb25OYW1lKHF1ZXJ5VGV4dCkge1xuICAgIC8vIFRyaW0gdGhlIHF1ZXJ5IHRleHQgdG8gaGFuZGxlIGxlYWRpbmcvdHJhaWxpbmcgd2hpdGVzcGFjZVxuICAgIGNvbnN0IHRyaW1tZWRRdWVyeSA9IHF1ZXJ5VGV4dC50cmltKCk7XG4gICAgY29uc3QgaW5kZXhPZkZpcnN0U3BhY2UgPSB0cmltbWVkUXVlcnkuaW5kZXhPZignICcpO1xuICAgIGxldCBzcWxDb21tYW5kID0gaW5kZXhPZkZpcnN0U3BhY2UgPT09IC0xXG4gICAgICAgID8gdHJpbW1lZFF1ZXJ5XG4gICAgICAgIDogdHJpbW1lZFF1ZXJ5LnNsaWNlKDAsIGluZGV4T2ZGaXJzdFNwYWNlKTtcbiAgICBzcWxDb21tYW5kID0gc3FsQ29tbWFuZC50b1VwcGVyQ2FzZSgpO1xuICAgIC8vIEhhbmRsZSBxdWVyeSB0ZXh0IGJlaW5nIFwiQ09NTUlUO1wiLCB3aGljaCBoYXMgYW4gZXh0cmEgc2VtaWNvbG9uIGJlZm9yZSB0aGUgc3BhY2UuXG4gICAgcmV0dXJuIHNxbENvbW1hbmQuZW5kc1dpdGgoJzsnKSA/IHNxbENvbW1hbmQuc2xpY2UoMCwgLTEpIDogc3FsQ29tbWFuZDtcbn1cbmV4cG9ydHMucGFyc2VOb3JtYWxpemVkT3BlcmF0aW9uTmFtZSA9IHBhcnNlTm9ybWFsaXplZE9wZXJhdGlvbk5hbWU7XG5mdW5jdGlvbiBwYXJzZUFuZE1hc2tDb25uZWN0aW9uU3RyaW5nKGNvbm5lY3Rpb25TdHJpbmcpIHtcbiAgICB0cnkge1xuICAgICAgICAvLyBQYXJzZSB0aGUgY29ubmVjdGlvbiBzdHJpbmdcbiAgICAgICAgY29uc3QgdXJsID0gbmV3IFVSTChjb25uZWN0aW9uU3RyaW5nKTtcbiAgICAgICAgLy8gUmVtb3ZlIGFsbCBhdXRoIGluZm9ybWF0aW9uICh1c2VybmFtZSBhbmQgcGFzc3dvcmQpXG4gICAgICAgIHVybC51c2VybmFtZSA9ICcnO1xuICAgICAgICB1cmwucGFzc3dvcmQgPSAnJztcbiAgICAgICAgcmV0dXJuIHVybC50b1N0cmluZygpO1xuICAgIH1cbiAgICBjYXRjaCAoZSkge1xuICAgICAgICAvLyBJZiBwYXJzaW5nIGZhaWxzLCByZXR1cm4gYSBnZW5lcmljIGNvbm5lY3Rpb24gc3RyaW5nXG4gICAgICAgIHJldHVybiAncG9zdGdyZXNxbDovL2xvY2FsaG9zdDo1NDMyLyc7XG4gICAgfVxufVxuZXhwb3J0cy5wYXJzZUFuZE1hc2tDb25uZWN0aW9uU3RyaW5nID0gcGFyc2VBbmRNYXNrQ29ubmVjdGlvblN0cmluZztcbmZ1bmN0aW9uIGdldENvbm5lY3Rpb25TdHJpbmcocGFyYW1zKSB7XG4gICAgaWYgKCdjb25uZWN0aW9uU3RyaW5nJyBpbiBwYXJhbXMgJiYgcGFyYW1zLmNvbm5lY3Rpb25TdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHBhcnNlQW5kTWFza0Nvbm5lY3Rpb25TdHJpbmcocGFyYW1zLmNvbm5lY3Rpb25TdHJpbmcpO1xuICAgIH1cbiAgICBjb25zdCBob3N0ID0gcGFyYW1zLmhvc3QgfHwgJ2xvY2FsaG9zdCc7XG4gICAgY29uc3QgcG9ydCA9IHBhcmFtcy5wb3J0IHx8IDU0MzI7XG4gICAgY29uc3QgZGF0YWJhc2UgPSBwYXJhbXMuZGF0YWJhc2UgfHwgJyc7XG4gICAgcmV0dXJuIGBwb3N0Z3Jlc3FsOi8vJHtob3N0fToke3BvcnR9LyR7ZGF0YWJhc2V9YDtcbn1cbmV4cG9ydHMuZ2V0Q29ubmVjdGlvblN0cmluZyA9IGdldENvbm5lY3Rpb25TdHJpbmc7XG5mdW5jdGlvbiBnZXRQb3J0KHBvcnQpIHtcbiAgICAvLyBQb3J0IG1heSBiZSBOYU4gYXMgcGFyc2VJbnQoKSBpcyB1c2VkIG9uIHRoZSB2YWx1ZSwgcGFzc2luZyBudWxsIHdpbGwgcmVzdWx0IGluIE5hTiBiZWluZyBwYXJzZWQuXG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2JyaWFuYy9ub2RlLXBvc3RncmVzL2Jsb2IvMmE4ZWZiZWUwOWEyODRiZTEyNzQ4ZWQzOTYyYmM5YjgxNjk2NWUzNi9wYWNrYWdlcy9wZy9saWIvY29ubmVjdGlvbi1wYXJhbWV0ZXJzLmpzI0w2NlxuICAgIGlmIChOdW1iZXIuaXNJbnRlZ2VyKHBvcnQpKSB7XG4gICAgICAgIHJldHVybiBwb3J0O1xuICAgIH1cbiAgICAvLyBVbmFibGUgdG8gZmluZCB0aGUgZGVmYXVsdCB1c2VkIGluIHBnIGNvZGUsIHNvIGZhbGxpbmcgYmFjayB0byAndW5kZWZpbmVkJy5cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xufVxuZnVuY3Rpb24gZ2V0U2VtYW50aWNBdHRyaWJ1dGVzRnJvbUNvbm5lY3Rpb24ocGFyYW1zLCBzZW1jb252U3RhYmlsaXR5KSB7XG4gICAgbGV0IGF0dHJpYnV0ZXMgPSB7fTtcbiAgICBpZiAoc2VtY29udlN0YWJpbGl0eSAmIGluc3RydW1lbnRhdGlvbl8xLlNlbWNvbnZTdGFiaWxpdHkuT0xEKSB7XG4gICAgICAgIGF0dHJpYnV0ZXMgPSB7XG4gICAgICAgICAgICAuLi5hdHRyaWJ1dGVzLFxuICAgICAgICAgICAgW3NlbWNvbnZfMS5BVFRSX0RCX1NZU1RFTV06IHNlbWNvbnZfMS5EQl9TWVNURU1fVkFMVUVfUE9TVEdSRVNRTCxcbiAgICAgICAgICAgIFtzZW1jb252XzEuQVRUUl9EQl9OQU1FXTogcGFyYW1zLmRhdGFiYXNlLFxuICAgICAgICAgICAgW3NlbWNvbnZfMS5BVFRSX0RCX0NPTk5FQ1RJT05fU1RSSU5HXTogZ2V0Q29ubmVjdGlvblN0cmluZyhwYXJhbXMpLFxuICAgICAgICAgICAgW3NlbWNvbnZfMS5BVFRSX0RCX1VTRVJdOiBwYXJhbXMudXNlcixcbiAgICAgICAgICAgIFtzZW1jb252XzEuQVRUUl9ORVRfUEVFUl9OQU1FXTogcGFyYW1zLmhvc3QsXG4gICAgICAgICAgICBbc2VtY29udl8xLkFUVFJfTkVUX1BFRVJfUE9SVF06IGdldFBvcnQocGFyYW1zLnBvcnQpLFxuICAgICAgICB9O1xuICAgIH1cbiAgICBpZiAoc2VtY29udlN0YWJpbGl0eSAmIGluc3RydW1lbnRhdGlvbl8xLlNlbWNvbnZTdGFiaWxpdHkuU1RBQkxFKSB7XG4gICAgICAgIGF0dHJpYnV0ZXMgPSB7XG4gICAgICAgICAgICAuLi5hdHRyaWJ1dGVzLFxuICAgICAgICAgICAgW3NlbWFudGljX2NvbnZlbnRpb25zXzEuQVRUUl9EQl9TWVNURU1fTkFNRV06IHNlbWFudGljX2NvbnZlbnRpb25zXzEuREJfU1lTVEVNX05BTUVfVkFMVUVfUE9TVEdSRVNRTCxcbiAgICAgICAgICAgIFtzZW1hbnRpY19jb252ZW50aW9uc18xLkFUVFJfREJfTkFNRVNQQUNFXTogcGFyYW1zLm5hbWVzcGFjZSxcbiAgICAgICAgICAgIFtzZW1hbnRpY19jb252ZW50aW9uc18xLkFUVFJfU0VSVkVSX0FERFJFU1NdOiBwYXJhbXMuaG9zdCxcbiAgICAgICAgICAgIFtzZW1hbnRpY19jb252ZW50aW9uc18xLkFUVFJfU0VSVkVSX1BPUlRdOiBnZXRQb3J0KHBhcmFtcy5wb3J0KSxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIGF0dHJpYnV0ZXM7XG59XG5leHBvcnRzLmdldFNlbWFudGljQXR0cmlidXRlc0Zyb21Db25uZWN0aW9uID0gZ2V0U2VtYW50aWNBdHRyaWJ1dGVzRnJvbUNvbm5lY3Rpb247XG5mdW5jdGlvbiBnZXRTZW1hbnRpY0F0dHJpYnV0ZXNGcm9tUG9vbENvbm5lY3Rpb24ocGFyYW1zLCBzZW1jb252U3RhYmlsaXR5KSB7XG4gICAgbGV0IHVybDtcbiAgICB0cnkge1xuICAgICAgICB1cmwgPSBwYXJhbXMuY29ubmVjdGlvblN0cmluZ1xuICAgICAgICAgICAgPyBuZXcgVVJMKHBhcmFtcy5jb25uZWN0aW9uU3RyaW5nKVxuICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGNhdGNoIChlKSB7XG4gICAgICAgIHVybCA9IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgbGV0IGF0dHJpYnV0ZXMgPSB7XG4gICAgICAgIFtBdHRyaWJ1dGVOYW1lc18xLkF0dHJpYnV0ZU5hbWVzLklETEVfVElNRU9VVF9NSUxMSVNdOiBwYXJhbXMuaWRsZVRpbWVvdXRNaWxsaXMsXG4gICAgICAgIFtBdHRyaWJ1dGVOYW1lc18xLkF0dHJpYnV0ZU5hbWVzLk1BWF9DTElFTlRdOiBwYXJhbXMubWF4Q2xpZW50LFxuICAgIH07XG4gICAgaWYgKHNlbWNvbnZTdGFiaWxpdHkgJiBpbnN0cnVtZW50YXRpb25fMS5TZW1jb252U3RhYmlsaXR5Lk9MRCkge1xuICAgICAgICBhdHRyaWJ1dGVzID0ge1xuICAgICAgICAgICAgLi4uYXR0cmlidXRlcyxcbiAgICAgICAgICAgIFtzZW1jb252XzEuQVRUUl9EQl9TWVNURU1dOiBzZW1jb252XzEuREJfU1lTVEVNX1ZBTFVFX1BPU1RHUkVTUUwsXG4gICAgICAgICAgICBbc2VtY29udl8xLkFUVFJfREJfTkFNRV06IHVybD8ucGF0aG5hbWUuc2xpY2UoMSkgPz8gcGFyYW1zLmRhdGFiYXNlLFxuICAgICAgICAgICAgW3NlbWNvbnZfMS5BVFRSX0RCX0NPTk5FQ1RJT05fU1RSSU5HXTogZ2V0Q29ubmVjdGlvblN0cmluZyhwYXJhbXMpLFxuICAgICAgICAgICAgW3NlbWNvbnZfMS5BVFRSX05FVF9QRUVSX05BTUVdOiB1cmw/Lmhvc3RuYW1lID8/IHBhcmFtcy5ob3N0LFxuICAgICAgICAgICAgW3NlbWNvbnZfMS5BVFRSX05FVF9QRUVSX1BPUlRdOiBOdW1iZXIodXJsPy5wb3J0KSB8fCBnZXRQb3J0KHBhcmFtcy5wb3J0KSxcbiAgICAgICAgICAgIFtzZW1jb252XzEuQVRUUl9EQl9VU0VSXTogdXJsPy51c2VybmFtZSA/PyBwYXJhbXMudXNlcixcbiAgICAgICAgfTtcbiAgICB9XG4gICAgaWYgKHNlbWNvbnZTdGFiaWxpdHkgJiBpbnN0cnVtZW50YXRpb25fMS5TZW1jb252U3RhYmlsaXR5LlNUQUJMRSkge1xuICAgICAgICBhdHRyaWJ1dGVzID0ge1xuICAgICAgICAgICAgLi4uYXR0cmlidXRlcyxcbiAgICAgICAgICAgIFtzZW1hbnRpY19jb252ZW50aW9uc18xLkFUVFJfREJfU1lTVEVNX05BTUVdOiBzZW1hbnRpY19jb252ZW50aW9uc18xLkRCX1NZU1RFTV9OQU1FX1ZBTFVFX1BPU1RHUkVTUUwsXG4gICAgICAgICAgICBbc2VtYW50aWNfY29udmVudGlvbnNfMS5BVFRSX0RCX05BTUVTUEFDRV06IHBhcmFtcy5uYW1lc3BhY2UsXG4gICAgICAgICAgICBbc2VtYW50aWNfY29udmVudGlvbnNfMS5BVFRSX1NFUlZFUl9BRERSRVNTXTogdXJsPy5ob3N0bmFtZSA/PyBwYXJhbXMuaG9zdCxcbiAgICAgICAgICAgIFtzZW1hbnRpY19jb252ZW50aW9uc18xLkFUVFJfU0VSVkVSX1BPUlRdOiBOdW1iZXIodXJsPy5wb3J0KSB8fCBnZXRQb3J0KHBhcmFtcy5wb3J0KSxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIGF0dHJpYnV0ZXM7XG59XG5leHBvcnRzLmdldFNlbWFudGljQXR0cmlidXRlc0Zyb21Qb29sQ29ubmVjdGlvbiA9IGdldFNlbWFudGljQXR0cmlidXRlc0Zyb21Qb29sQ29ubmVjdGlvbjtcbmZ1bmN0aW9uIHNob3VsZFNraXBJbnN0cnVtZW50YXRpb24oaW5zdHJ1bWVudGF0aW9uQ29uZmlnKSB7XG4gICAgcmV0dXJuIChpbnN0cnVtZW50YXRpb25Db25maWcucmVxdWlyZVBhcmVudFNwYW4gPT09IHRydWUgJiZcbiAgICAgICAgYXBpXzEudHJhY2UuZ2V0U3BhbihhcGlfMS5jb250ZXh0LmFjdGl2ZSgpKSA9PT0gdW5kZWZpbmVkKTtcbn1cbmV4cG9ydHMuc2hvdWxkU2tpcEluc3RydW1lbnRhdGlvbiA9IHNob3VsZFNraXBJbnN0cnVtZW50YXRpb247XG4vLyBDcmVhdGUgYSBzcGFuIGZyb20gb3VyIG5vcm1hbGl6ZWQgcXVlcnlDb25maWcgb2JqZWN0LFxuLy8gb3IgcmV0dXJuIGEgYmFzaWMgc3BhbiBpZiBubyBxdWVyeUNvbmZpZyB3YXMgZ2l2ZW4vY291bGQgYmUgY3JlYXRlZC5cbmZ1bmN0aW9uIGhhbmRsZUNvbmZpZ1F1ZXJ5KHRyYWNlciwgaW5zdHJ1bWVudGF0aW9uQ29uZmlnLCBzZW1jb252U3RhYmlsaXR5LCBxdWVyeUNvbmZpZykge1xuICAgIC8vIENyZWF0ZSBjaGlsZCBzcGFuLlxuICAgIGNvbnN0IHsgY29ubmVjdGlvblBhcmFtZXRlcnMgfSA9IHRoaXM7XG4gICAgY29uc3QgZGJOYW1lID0gY29ubmVjdGlvblBhcmFtZXRlcnMuZGF0YWJhc2U7XG4gICAgY29uc3Qgc3Bhbk5hbWUgPSBnZXRRdWVyeVNwYW5OYW1lKGRiTmFtZSwgcXVlcnlDb25maWcpO1xuICAgIGNvbnN0IHNwYW4gPSB0cmFjZXIuc3RhcnRTcGFuKHNwYW5OYW1lLCB7XG4gICAgICAgIGtpbmQ6IGFwaV8xLlNwYW5LaW5kLkNMSUVOVCxcbiAgICAgICAgYXR0cmlidXRlczogZ2V0U2VtYW50aWNBdHRyaWJ1dGVzRnJvbUNvbm5lY3Rpb24oY29ubmVjdGlvblBhcmFtZXRlcnMsIHNlbWNvbnZTdGFiaWxpdHkpLFxuICAgIH0pO1xuICAgIGlmICghcXVlcnlDb25maWcpIHtcbiAgICAgICAgcmV0dXJuIHNwYW47XG4gICAgfVxuICAgIC8vIFNldCBhdHRyaWJ1dGVzXG4gICAgaWYgKHF1ZXJ5Q29uZmlnLnRleHQpIHtcbiAgICAgICAgaWYgKHNlbWNvbnZTdGFiaWxpdHkgJiBpbnN0cnVtZW50YXRpb25fMS5TZW1jb252U3RhYmlsaXR5Lk9MRCkge1xuICAgICAgICAgICAgc3Bhbi5zZXRBdHRyaWJ1dGUoc2VtY29udl8xLkFUVFJfREJfU1RBVEVNRU5ULCBxdWVyeUNvbmZpZy50ZXh0KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc2VtY29udlN0YWJpbGl0eSAmIGluc3RydW1lbnRhdGlvbl8xLlNlbWNvbnZTdGFiaWxpdHkuU1RBQkxFKSB7XG4gICAgICAgICAgICBzcGFuLnNldEF0dHJpYnV0ZShzZW1hbnRpY19jb252ZW50aW9uc18xLkFUVFJfREJfUVVFUllfVEVYVCwgcXVlcnlDb25maWcudGV4dCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKGluc3RydW1lbnRhdGlvbkNvbmZpZy5lbmhhbmNlZERhdGFiYXNlUmVwb3J0aW5nICYmXG4gICAgICAgIEFycmF5LmlzQXJyYXkocXVlcnlDb25maWcudmFsdWVzKSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgY29udmVydGVkVmFsdWVzID0gcXVlcnlDb25maWcudmFsdWVzLm1hcCh2YWx1ZSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdudWxsJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAodmFsdWUgaW5zdGFuY2VvZiBCdWZmZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZS50b1Bvc3RncmVzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUudG9Qb3N0Z3JlcygpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvL3N0cmluZywgbnVtYmVyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZS50b1N0cmluZygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgc3Bhbi5zZXRBdHRyaWJ1dGUoQXR0cmlidXRlTmFtZXNfMS5BdHRyaWJ1dGVOYW1lcy5QR19WQUxVRVMsIGNvbnZlcnRlZFZhbHVlcyk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGFwaV8xLmRpYWcuZXJyb3IoJ2ZhaWxlZCB0byBzdHJpbmdpZnkgJywgcXVlcnlDb25maWcudmFsdWVzLCBlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBTZXQgcGxhbiBuYW1lIGF0dHJpYnV0ZSwgaWYgcHJlc2VudFxuICAgIGlmICh0eXBlb2YgcXVlcnlDb25maWcubmFtZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgc3Bhbi5zZXRBdHRyaWJ1dGUoQXR0cmlidXRlTmFtZXNfMS5BdHRyaWJ1dGVOYW1lcy5QR19QTEFOLCBxdWVyeUNvbmZpZy5uYW1lKTtcbiAgICB9XG4gICAgcmV0dXJuIHNwYW47XG59XG5leHBvcnRzLmhhbmRsZUNvbmZpZ1F1ZXJ5ID0gaGFuZGxlQ29uZmlnUXVlcnk7XG5mdW5jdGlvbiBoYW5kbGVFeGVjdXRpb25SZXN1bHQoY29uZmlnLCBzcGFuLCBwZ1Jlc3VsdCkge1xuICAgIGlmICh0eXBlb2YgY29uZmlnLnJlc3BvbnNlSG9vayA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAoMCwgaW5zdHJ1bWVudGF0aW9uXzEuc2FmZUV4ZWN1dGVJblRoZU1pZGRsZSkoKCkgPT4ge1xuICAgICAgICAgICAgY29uZmlnLnJlc3BvbnNlSG9vayhzcGFuLCB7XG4gICAgICAgICAgICAgICAgZGF0YTogcGdSZXN1bHQsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSwgZXJyID0+IHtcbiAgICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgICAgICBhcGlfMS5kaWFnLmVycm9yKCdFcnJvciBydW5uaW5nIHJlc3BvbnNlIGhvb2snLCBlcnIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCB0cnVlKTtcbiAgICB9XG59XG5leHBvcnRzLmhhbmRsZUV4ZWN1dGlvblJlc3VsdCA9IGhhbmRsZUV4ZWN1dGlvblJlc3VsdDtcbmZ1bmN0aW9uIHBhdGNoQ2FsbGJhY2soaW5zdHJ1bWVudGF0aW9uQ29uZmlnLCBzcGFuLCBjYiwgYXR0cmlidXRlcywgcmVjb3JkRHVyYXRpb24pIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gcGF0Y2hlZENhbGxiYWNrKGVyciwgcmVzKSB7XG4gICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZXJyLCAnY29kZScpKSB7XG4gICAgICAgICAgICAgICAgYXR0cmlidXRlc1tzZW1hbnRpY19jb252ZW50aW9uc18xLkFUVFJfRVJST1JfVFlQRV0gPSBlcnJbJ2NvZGUnXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChlcnIgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICAgICAgICAgIHNwYW4ucmVjb3JkRXhjZXB0aW9uKHNhbml0aXplZEVycm9yTWVzc2FnZShlcnIpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNwYW4uc2V0U3RhdHVzKHtcbiAgICAgICAgICAgICAgICBjb2RlOiBhcGlfMS5TcGFuU3RhdHVzQ29kZS5FUlJPUixcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiBlcnIubWVzc2FnZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaGFuZGxlRXhlY3V0aW9uUmVzdWx0KGluc3RydW1lbnRhdGlvbkNvbmZpZywgc3BhbiwgcmVzKTtcbiAgICAgICAgfVxuICAgICAgICByZWNvcmREdXJhdGlvbigpO1xuICAgICAgICBzcGFuLmVuZCgpO1xuICAgICAgICBjYi5jYWxsKHRoaXMsIGVyciwgcmVzKTtcbiAgICB9O1xufVxuZXhwb3J0cy5wYXRjaENhbGxiYWNrID0gcGF0Y2hDYWxsYmFjaztcbmZ1bmN0aW9uIGdldFBvb2xOYW1lKHBvb2wpIHtcbiAgICBsZXQgcG9vbE5hbWUgPSAnJztcbiAgICBwb29sTmFtZSArPSAocG9vbD8uaG9zdCA/IGAke3Bvb2wuaG9zdH1gIDogJ3Vua25vd25faG9zdCcpICsgJzonO1xuICAgIHBvb2xOYW1lICs9IChwb29sPy5wb3J0ID8gYCR7cG9vbC5wb3J0fWAgOiAndW5rbm93bl9wb3J0JykgKyAnLyc7XG4gICAgcG9vbE5hbWUgKz0gcG9vbD8uZGF0YWJhc2UgPyBgJHtwb29sLmRhdGFiYXNlfWAgOiAndW5rbm93bl9kYXRhYmFzZSc7XG4gICAgcmV0dXJuIHBvb2xOYW1lLnRyaW0oKTtcbn1cbmV4cG9ydHMuZ2V0UG9vbE5hbWUgPSBnZXRQb29sTmFtZTtcbmZ1bmN0aW9uIHVwZGF0ZUNvdW50ZXIocG9vbE5hbWUsIHBvb2wsIGNvbm5lY3Rpb25Db3VudCwgY29ubmVjdGlvblBlbmRpbmdSZXF1ZXN0cywgbGF0ZXN0Q291bnRlcikge1xuICAgIGNvbnN0IGFsbCA9IHBvb2wudG90YWxDb3VudDtcbiAgICBjb25zdCBwZW5kaW5nID0gcG9vbC53YWl0aW5nQ291bnQ7XG4gICAgY29uc3QgaWRsZSA9IHBvb2wuaWRsZUNvdW50O1xuICAgIGNvbnN0IHVzZWQgPSBhbGwgLSBpZGxlO1xuICAgIGNvbm5lY3Rpb25Db3VudC5hZGQodXNlZCAtIGxhdGVzdENvdW50ZXIudXNlZCwge1xuICAgICAgICBbc2VtY29udl8xLkFUVFJfREJfQ0xJRU5UX0NPTk5FQ1RJT05fU1RBVEVdOiBzZW1jb252XzEuREJfQ0xJRU5UX0NPTk5FQ1RJT05fU1RBVEVfVkFMVUVfVVNFRCxcbiAgICAgICAgW3NlbWNvbnZfMS5BVFRSX0RCX0NMSUVOVF9DT05ORUNUSU9OX1BPT0xfTkFNRV06IHBvb2xOYW1lLFxuICAgIH0pO1xuICAgIGNvbm5lY3Rpb25Db3VudC5hZGQoaWRsZSAtIGxhdGVzdENvdW50ZXIuaWRsZSwge1xuICAgICAgICBbc2VtY29udl8xLkFUVFJfREJfQ0xJRU5UX0NPTk5FQ1RJT05fU1RBVEVdOiBzZW1jb252XzEuREJfQ0xJRU5UX0NPTk5FQ1RJT05fU1RBVEVfVkFMVUVfSURMRSxcbiAgICAgICAgW3NlbWNvbnZfMS5BVFRSX0RCX0NMSUVOVF9DT05ORUNUSU9OX1BPT0xfTkFNRV06IHBvb2xOYW1lLFxuICAgIH0pO1xuICAgIGNvbm5lY3Rpb25QZW5kaW5nUmVxdWVzdHMuYWRkKHBlbmRpbmcgLSBsYXRlc3RDb3VudGVyLnBlbmRpbmcsIHtcbiAgICAgICAgW3NlbWNvbnZfMS5BVFRSX0RCX0NMSUVOVF9DT05ORUNUSU9OX1BPT0xfTkFNRV06IHBvb2xOYW1lLFxuICAgIH0pO1xuICAgIHJldHVybiB7IHVzZWQ6IHVzZWQsIGlkbGU6IGlkbGUsIHBlbmRpbmc6IHBlbmRpbmcgfTtcbn1cbmV4cG9ydHMudXBkYXRlQ291bnRlciA9IHVwZGF0ZUNvdW50ZXI7XG5mdW5jdGlvbiBwYXRjaENhbGxiYWNrUEdQb29sKHNwYW4sIGNiKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIHBhdGNoZWRDYWxsYmFjayhlcnIsIHJlcywgZG9uZSkge1xuICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICBpZiAoZXJyIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgICAgICAgICBzcGFuLnJlY29yZEV4Y2VwdGlvbihzYW5pdGl6ZWRFcnJvck1lc3NhZ2UoZXJyKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzcGFuLnNldFN0YXR1cyh7XG4gICAgICAgICAgICAgICAgY29kZTogYXBpXzEuU3BhblN0YXR1c0NvZGUuRVJST1IsXG4gICAgICAgICAgICAgICAgbWVzc2FnZTogZXJyLm1lc3NhZ2UsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBzcGFuLmVuZCgpO1xuICAgICAgICBjYi5jYWxsKHRoaXMsIGVyciwgcmVzLCBkb25lKTtcbiAgICB9O1xufVxuZXhwb3J0cy5wYXRjaENhbGxiYWNrUEdQb29sID0gcGF0Y2hDYWxsYmFja1BHUG9vbDtcbmZ1bmN0aW9uIHBhdGNoQ2xpZW50Q29ubmVjdENhbGxiYWNrKHNwYW4sIGNiKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIHBhdGNoZWRDbGllbnRDb25uZWN0Q2FsbGJhY2soZXJyKSB7XG4gICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgIGlmIChlcnIgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICAgICAgICAgIHNwYW4ucmVjb3JkRXhjZXB0aW9uKHNhbml0aXplZEVycm9yTWVzc2FnZShlcnIpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNwYW4uc2V0U3RhdHVzKHtcbiAgICAgICAgICAgICAgICBjb2RlOiBhcGlfMS5TcGFuU3RhdHVzQ29kZS5FUlJPUixcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiBlcnIubWVzc2FnZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHNwYW4uZW5kKCk7XG4gICAgICAgIGNiLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbn1cbmV4cG9ydHMucGF0Y2hDbGllbnRDb25uZWN0Q2FsbGJhY2sgPSBwYXRjaENsaWVudENvbm5lY3RDYWxsYmFjaztcbi8qKlxuICogQXR0ZW1wdCB0byBnZXQgYSBtZXNzYWdlIHN0cmluZyBmcm9tIGEgdGhyb3duIHZhbHVlLCB3aGlsZSBiZWluZyBxdWl0ZVxuICogZGVmZW5zaXZlLCB0byByZWNvZ25pemUgdGhlIGZhY3QgdGhhdCwgaW4gSlMsIGFueSBraW5kIG9mIHZhbHVlIChldmVuXG4gKiBwcmltaXRpdmVzKSBjYW4gYmUgdGhyb3duLlxuICovXG5mdW5jdGlvbiBnZXRFcnJvck1lc3NhZ2UoZSkge1xuICAgIHJldHVybiB0eXBlb2YgZSA9PT0gJ29iamVjdCcgJiYgZSAhPT0gbnVsbCAmJiAnbWVzc2FnZScgaW4gZVxuICAgICAgICA/IFN0cmluZyhlLm1lc3NhZ2UpXG4gICAgICAgIDogdW5kZWZpbmVkO1xufVxuZXhwb3J0cy5nZXRFcnJvck1lc3NhZ2UgPSBnZXRFcnJvck1lc3NhZ2U7XG5mdW5jdGlvbiBpc09iamVjdFdpdGhUZXh0U3RyaW5nKGl0KSB7XG4gICAgcmV0dXJuICh0eXBlb2YgaXQgPT09ICdvYmplY3QnICYmXG4gICAgICAgIHR5cGVvZiBpdD8udGV4dCA9PT0gJ3N0cmluZycpO1xufVxuZXhwb3J0cy5pc09iamVjdFdpdGhUZXh0U3RyaW5nID0gaXNPYmplY3RXaXRoVGV4dFN0cmluZztcbi8qKlxuICogR2VuZXJhdGVzIGEgc2FuaXRpemVkIG1lc3NhZ2UgZm9yIHRoZSBlcnJvci5cbiAqIE9ubHkgaW5jbHVkZXMgdGhlIGVycm9yIHR5cGUgYW5kIFBvc3RncmVTUUwgZXJyb3IgY29kZSwgb21pdHRpbmcgYW55IHNlbnNpdGl2ZSBkZXRhaWxzLlxuICovXG5mdW5jdGlvbiBzYW5pdGl6ZWRFcnJvck1lc3NhZ2UoZXJyb3IpIHtcbiAgICBjb25zdCBuYW1lID0gZXJyb3I/Lm5hbWUgPz8gJ1Bvc3RncmVTUUxFcnJvcic7XG4gICAgY29uc3QgY29kZSA9IGVycm9yPy5jb2RlID8/ICdVTktOT1dOJztcbiAgICByZXR1cm4gYFBvc3RncmVTUUwgZXJyb3Igb2YgdHlwZSAnJHtuYW1lfScgb2NjdXJyZWQgKGNvZGU6ICR7Y29kZX0pYDtcbn1cbmV4cG9ydHMuc2FuaXRpemVkRXJyb3JNZXNzYWdlID0gc2FuaXRpemVkRXJyb3JNZXNzYWdlO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dXRpbHMuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/.pnpm/@opentelemetry+instrumentation-pg@0.66.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-pg/build/src/utils.js\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(rsc)/./node_modules/.pnpm/@opentelemetry+instrumentation-pg@0.66.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-pg/build/src/version.js":
|
|
/*!******************************************************************************************************************************************************************!*\
|
|
!*** ./node_modules/.pnpm/@opentelemetry+instrumentation-pg@0.66.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-pg/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.66.0';\nexports.PACKAGE_NAME = '@opentelemetry/instrumentation-pg';\n//# sourceMappingURL=version.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvLnBucG0vQG9wZW50ZWxlbWV0cnkraW5zdHJ1bWVudGF0aW9uLXBnQDAuNjYuMF9Ab3BlbnRlbGVtZXRyeSthcGlAMS45LjEvbm9kZV9tb2R1bGVzL0BvcGVudGVsZW1ldHJ5L2luc3RydW1lbnRhdGlvbi1wZy9idWlsZC9zcmMvdmVyc2lvbi5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhDQUE2QyxFQUFFLGFBQWEsRUFBQztBQUM3RCxvQkFBb0IsR0FBRyx1QkFBdUI7QUFDOUM7QUFDQSx1QkFBdUI7QUFDdkIsb0JBQW9CO0FBQ3BCIiwic291cmNlcyI6WyIvVXNlcnMvbWFyY21pbnRlbC9Qcm9qZWN0cy9lLXRpYi5jb20vbm9kZV9tb2R1bGVzLy5wbnBtL0BvcGVudGVsZW1ldHJ5K2luc3RydW1lbnRhdGlvbi1wZ0AwLjY2LjBfQG9wZW50ZWxlbWV0cnkrYXBpQDEuOS4xL25vZGVfbW9kdWxlcy9Ab3BlbnRlbGVtZXRyeS9pbnN0cnVtZW50YXRpb24tcGcvYnVpbGQvc3JjL3ZlcnNpb24uanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG4vKlxuICogQ29weXJpZ2h0IFRoZSBPcGVuVGVsZW1ldHJ5IEF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5QQUNLQUdFX05BTUUgPSBleHBvcnRzLlBBQ0tBR0VfVkVSU0lPTiA9IHZvaWQgMDtcbi8vIHRoaXMgaXMgYXV0b2dlbmVyYXRlZCBmaWxlLCBzZWUgc2NyaXB0cy92ZXJzaW9uLXVwZGF0ZS5qc1xuZXhwb3J0cy5QQUNLQUdFX1ZFUlNJT04gPSAnMC42Ni4wJztcbmV4cG9ydHMuUEFDS0FHRV9OQU1FID0gJ0BvcGVudGVsZW1ldHJ5L2luc3RydW1lbnRhdGlvbi1wZyc7XG4vLyMgc291cmNlTWFwcGluZ1VSTD12ZXJzaW9uLmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/.pnpm/@opentelemetry+instrumentation-pg@0.66.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-pg/build/src/version.js\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(ssr)/./node_modules/.pnpm/@opentelemetry+instrumentation-pg@0.66.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-pg/build/src/enums/AttributeNames.js":
|
|
/*!*******************************************************************************************************************************************************************************!*\
|
|
!*** ./node_modules/.pnpm/@opentelemetry+instrumentation-pg@0.66.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-pg/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 */\n// Postgresql specific attributes not covered by semantic conventions\nvar AttributeNames;\n(function (AttributeNames) {\n AttributeNames[\"PG_VALUES\"] = \"db.postgresql.values\";\n AttributeNames[\"PG_PLAN\"] = \"db.postgresql.plan\";\n AttributeNames[\"IDLE_TIMEOUT_MILLIS\"] = \"db.postgresql.idle.timeout.millis\";\n AttributeNames[\"MAX_CLIENT\"] = \"db.postgresql.max.client\";\n})(AttributeNames = exports.AttributeNames || (exports.AttributeNames = {}));\n//# sourceMappingURL=AttributeNames.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvLnBucG0vQG9wZW50ZWxlbWV0cnkraW5zdHJ1bWVudGF0aW9uLXBnQDAuNjYuMF9Ab3BlbnRlbGVtZXRyeSthcGlAMS45LjEvbm9kZV9tb2R1bGVzL0BvcGVudGVsZW1ldHJ5L2luc3RydW1lbnRhdGlvbi1wZy9idWlsZC9zcmMvZW51bXMvQXR0cmlidXRlTmFtZXMuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkMsRUFBRSxhQUFhLEVBQUM7QUFDN0Qsc0JBQXNCO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyw4Q0FBOEMsc0JBQXNCLEtBQUs7QUFDMUUiLCJzb3VyY2VzIjpbIi9Vc2Vycy9tYXJjbWludGVsL1Byb2plY3RzL2UtdGliLmNvbS9ub2RlX21vZHVsZXMvLnBucG0vQG9wZW50ZWxlbWV0cnkraW5zdHJ1bWVudGF0aW9uLXBnQDAuNjYuMF9Ab3BlbnRlbGVtZXRyeSthcGlAMS45LjEvbm9kZV9tb2R1bGVzL0BvcGVudGVsZW1ldHJ5L2luc3RydW1lbnRhdGlvbi1wZy9idWlsZC9zcmMvZW51bXMvQXR0cmlidXRlTmFtZXMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLkF0dHJpYnV0ZU5hbWVzID0gdm9pZCAwO1xuLypcbiAqIENvcHlyaWdodCBUaGUgT3BlblRlbGVtZXRyeSBBdXRob3JzXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8vIFBvc3RncmVzcWwgc3BlY2lmaWMgYXR0cmlidXRlcyBub3QgY292ZXJlZCBieSBzZW1hbnRpYyBjb252ZW50aW9uc1xudmFyIEF0dHJpYnV0ZU5hbWVzO1xuKGZ1bmN0aW9uIChBdHRyaWJ1dGVOYW1lcykge1xuICAgIEF0dHJpYnV0ZU5hbWVzW1wiUEdfVkFMVUVTXCJdID0gXCJkYi5wb3N0Z3Jlc3FsLnZhbHVlc1wiO1xuICAgIEF0dHJpYnV0ZU5hbWVzW1wiUEdfUExBTlwiXSA9IFwiZGIucG9zdGdyZXNxbC5wbGFuXCI7XG4gICAgQXR0cmlidXRlTmFtZXNbXCJJRExFX1RJTUVPVVRfTUlMTElTXCJdID0gXCJkYi5wb3N0Z3Jlc3FsLmlkbGUudGltZW91dC5taWxsaXNcIjtcbiAgICBBdHRyaWJ1dGVOYW1lc1tcIk1BWF9DTElFTlRcIl0gPSBcImRiLnBvc3RncmVzcWwubWF4LmNsaWVudFwiO1xufSkoQXR0cmlidXRlTmFtZXMgPSBleHBvcnRzLkF0dHJpYnV0ZU5hbWVzIHx8IChleHBvcnRzLkF0dHJpYnV0ZU5hbWVzID0ge30pKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUF0dHJpYnV0ZU5hbWVzLmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/.pnpm/@opentelemetry+instrumentation-pg@0.66.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-pg/build/src/enums/AttributeNames.js\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(ssr)/./node_modules/.pnpm/@opentelemetry+instrumentation-pg@0.66.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-pg/build/src/enums/SpanNames.js":
|
|
/*!**************************************************************************************************************************************************************************!*\
|
|
!*** ./node_modules/.pnpm/@opentelemetry+instrumentation-pg@0.66.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-pg/build/src/enums/SpanNames.js ***!
|
|
\**************************************************************************************************************************************************************************/
|
|
/***/ ((__unused_webpack_module, exports) => {
|
|
|
|
eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SpanNames = 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 */\n// Contains span names produced by instrumentation\nvar SpanNames;\n(function (SpanNames) {\n SpanNames[\"QUERY_PREFIX\"] = \"pg.query\";\n SpanNames[\"CONNECT\"] = \"pg.connect\";\n SpanNames[\"POOL_CONNECT\"] = \"pg-pool.connect\";\n})(SpanNames = exports.SpanNames || (exports.SpanNames = {}));\n//# sourceMappingURL=SpanNames.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvLnBucG0vQG9wZW50ZWxlbWV0cnkraW5zdHJ1bWVudGF0aW9uLXBnQDAuNjYuMF9Ab3BlbnRlbGVtZXRyeSthcGlAMS45LjEvbm9kZV9tb2R1bGVzL0BvcGVudGVsZW1ldHJ5L2luc3RydW1lbnRhdGlvbi1wZy9idWlsZC9zcmMvZW51bXMvU3Bhbk5hbWVzLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2IsOENBQTZDLEVBQUUsYUFBYSxFQUFDO0FBQzdELGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLG9DQUFvQyxpQkFBaUIsS0FBSztBQUMzRCIsInNvdXJjZXMiOlsiL1VzZXJzL21hcmNtaW50ZWwvUHJvamVjdHMvZS10aWIuY29tL25vZGVfbW9kdWxlcy8ucG5wbS9Ab3BlbnRlbGVtZXRyeStpbnN0cnVtZW50YXRpb24tcGdAMC42Ni4wX0BvcGVudGVsZW1ldHJ5K2FwaUAxLjkuMS9ub2RlX21vZHVsZXMvQG9wZW50ZWxlbWV0cnkvaW5zdHJ1bWVudGF0aW9uLXBnL2J1aWxkL3NyYy9lbnVtcy9TcGFuTmFtZXMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLlNwYW5OYW1lcyA9IHZvaWQgMDtcbi8qXG4gKiBDb3B5cmlnaHQgVGhlIE9wZW5UZWxlbWV0cnkgQXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vLyBDb250YWlucyBzcGFuIG5hbWVzIHByb2R1Y2VkIGJ5IGluc3RydW1lbnRhdGlvblxudmFyIFNwYW5OYW1lcztcbihmdW5jdGlvbiAoU3Bhbk5hbWVzKSB7XG4gICAgU3Bhbk5hbWVzW1wiUVVFUllfUFJFRklYXCJdID0gXCJwZy5xdWVyeVwiO1xuICAgIFNwYW5OYW1lc1tcIkNPTk5FQ1RcIl0gPSBcInBnLmNvbm5lY3RcIjtcbiAgICBTcGFuTmFtZXNbXCJQT09MX0NPTk5FQ1RcIl0gPSBcInBnLXBvb2wuY29ubmVjdFwiO1xufSkoU3Bhbk5hbWVzID0gZXhwb3J0cy5TcGFuTmFtZXMgfHwgKGV4cG9ydHMuU3Bhbk5hbWVzID0ge30pKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPVNwYW5OYW1lcy5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/.pnpm/@opentelemetry+instrumentation-pg@0.66.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-pg/build/src/enums/SpanNames.js\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(ssr)/./node_modules/.pnpm/@opentelemetry+instrumentation-pg@0.66.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-pg/build/src/index.js":
|
|
/*!****************************************************************************************************************************************************************!*\
|
|
!*** ./node_modules/.pnpm/@opentelemetry+instrumentation-pg@0.66.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-pg/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.PgInstrumentation = void 0;\nvar instrumentation_1 = __webpack_require__(/*! ./instrumentation */ \"(ssr)/./node_modules/.pnpm/@opentelemetry+instrumentation-pg@0.66.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-pg/build/src/instrumentation.js\");\nObject.defineProperty(exports, \"PgInstrumentation\", ({ enumerable: true, get: function () { return instrumentation_1.PgInstrumentation; } }));\nvar AttributeNames_1 = __webpack_require__(/*! ./enums/AttributeNames */ \"(ssr)/./node_modules/.pnpm/@opentelemetry+instrumentation-pg@0.66.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-pg/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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvLnBucG0vQG9wZW50ZWxlbWV0cnkraW5zdHJ1bWVudGF0aW9uLXBnQDAuNjYuMF9Ab3BlbnRlbGVtZXRyeSthcGlAMS45LjEvbm9kZV9tb2R1bGVzL0BvcGVudGVsZW1ldHJ5L2luc3RydW1lbnRhdGlvbi1wZy9idWlsZC9zcmMvaW5kZXguanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4Q0FBNkMsRUFBRSxhQUFhLEVBQUM7QUFDN0Qsc0JBQXNCLEdBQUcseUJBQXlCO0FBQ2xELHdCQUF3QixtQkFBTyxDQUFDLG1NQUFtQjtBQUNuRCxxREFBb0QsRUFBRSxxQ0FBcUMsK0NBQStDLEVBQUM7QUFDM0ksdUJBQXVCLG1CQUFPLENBQUMsNk1BQXdCO0FBQ3ZELGtEQUFpRCxFQUFFLHFDQUFxQywyQ0FBMkMsRUFBQztBQUNwSSIsInNvdXJjZXMiOlsiL1VzZXJzL21hcmNtaW50ZWwvUHJvamVjdHMvZS10aWIuY29tL25vZGVfbW9kdWxlcy8ucG5wbS9Ab3BlbnRlbGVtZXRyeStpbnN0cnVtZW50YXRpb24tcGdAMC42Ni4wX0BvcGVudGVsZW1ldHJ5K2FwaUAxLjkuMS9ub2RlX21vZHVsZXMvQG9wZW50ZWxlbWV0cnkvaW5zdHJ1bWVudGF0aW9uLXBnL2J1aWxkL3NyYy9pbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbi8qXG4gKiBDb3B5cmlnaHQgVGhlIE9wZW5UZWxlbWV0cnkgQXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLkF0dHJpYnV0ZU5hbWVzID0gZXhwb3J0cy5QZ0luc3RydW1lbnRhdGlvbiA9IHZvaWQgMDtcbnZhciBpbnN0cnVtZW50YXRpb25fMSA9IHJlcXVpcmUoXCIuL2luc3RydW1lbnRhdGlvblwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlBnSW5zdHJ1bWVudGF0aW9uXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBpbnN0cnVtZW50YXRpb25fMS5QZ0luc3RydW1lbnRhdGlvbjsgfSB9KTtcbnZhciBBdHRyaWJ1dGVOYW1lc18xID0gcmVxdWlyZShcIi4vZW51bXMvQXR0cmlidXRlTmFtZXNcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJBdHRyaWJ1dGVOYW1lc1wiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gQXR0cmlidXRlTmFtZXNfMS5BdHRyaWJ1dGVOYW1lczsgfSB9KTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/.pnpm/@opentelemetry+instrumentation-pg@0.66.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-pg/build/src/index.js\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(ssr)/./node_modules/.pnpm/@opentelemetry+instrumentation-pg@0.66.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-pg/build/src/instrumentation.js":
|
|
/*!**************************************************************************************************************************************************************************!*\
|
|
!*** ./node_modules/.pnpm/@opentelemetry+instrumentation-pg@0.66.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-pg/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;\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.PgInstrumentation = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst 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 api_1 = __webpack_require__(/*! @opentelemetry/api */ \"(ssr)/./node_modules/.pnpm/@opentelemetry+api@1.9.1/node_modules/@opentelemetry/api/build/esm/index.js\");\nconst internal_types_1 = __webpack_require__(/*! ./internal-types */ \"(ssr)/./node_modules/.pnpm/@opentelemetry+instrumentation-pg@0.66.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-pg/build/src/internal-types.js\");\nconst utils = __webpack_require__(/*! ./utils */ \"(ssr)/./node_modules/.pnpm/@opentelemetry+instrumentation-pg@0.66.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-pg/build/src/utils.js\");\nconst sql_common_1 = __webpack_require__(/*! @opentelemetry/sql-common */ \"(ssr)/./node_modules/.pnpm/@opentelemetry+sql-common@0.41.2_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/sql-common/build/src/index.js\");\n/** @knipignore */\nconst version_1 = __webpack_require__(/*! ./version */ \"(ssr)/./node_modules/.pnpm/@opentelemetry+instrumentation-pg@0.66.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-pg/build/src/version.js\");\nconst SpanNames_1 = __webpack_require__(/*! ./enums/SpanNames */ \"(ssr)/./node_modules/.pnpm/@opentelemetry+instrumentation-pg@0.66.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-pg/build/src/enums/SpanNames.js\");\nconst core_1 = __webpack_require__(/*! @opentelemetry/core */ \"(ssr)/./node_modules/.pnpm/@opentelemetry+core@2.6.1_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/core/build/esm/index.js\");\nconst 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 semconv_1 = __webpack_require__(/*! ./semconv */ \"(ssr)/./node_modules/.pnpm/@opentelemetry+instrumentation-pg@0.66.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-pg/build/src/semconv.js\");\nfunction extractModuleExports(module) {\n return module[Symbol.toStringTag] === 'Module'\n ? module.default // ESM\n : module; // CommonJS\n}\nclass PgInstrumentation extends instrumentation_1.InstrumentationBase {\n // Pool events connect, acquire, release and remove can be called\n // multiple times without changing the values of total, idle and waiting\n // connections. The _connectionsCounter is used to keep track of latest\n // values and only update the metrics _connectionsCount and _connectionPendingRequests\n // when the value change.\n _connectionsCounter = {\n used: 0,\n idle: 0,\n pending: 0,\n };\n _semconvStability;\n constructor(config = {}) {\n super(version_1.PACKAGE_NAME, version_1.PACKAGE_VERSION, config);\n this._semconvStability = (0, instrumentation_1.semconvStabilityFromStr)('database', process.env.OTEL_SEMCONV_STABILITY_OPT_IN);\n }\n _updateMetricInstruments() {\n this._operationDuration = this.meter.createHistogram(semantic_conventions_1.METRIC_DB_CLIENT_OPERATION_DURATION, {\n description: 'Duration of database client operations.',\n unit: 's',\n valueType: api_1.ValueType.DOUBLE,\n advice: {\n explicitBucketBoundaries: [\n 0.001, 0.005, 0.01, 0.05, 0.1, 0.5, 1, 5, 10,\n ],\n },\n });\n this._connectionsCounter = {\n idle: 0,\n pending: 0,\n used: 0,\n };\n this._connectionsCount = this.meter.createUpDownCounter(semconv_1.METRIC_DB_CLIENT_CONNECTION_COUNT, {\n description: 'The number of connections that are currently in state described by the state attribute.',\n unit: '{connection}',\n });\n this._connectionPendingRequests = this.meter.createUpDownCounter(semconv_1.METRIC_DB_CLIENT_CONNECTION_PENDING_REQUESTS, {\n description: 'The number of current pending requests for an open connection.',\n unit: '{connection}',\n });\n }\n init() {\n const SUPPORTED_PG_VERSIONS = ['>=8.0.3 <9'];\n const SUPPORTED_PG_POOL_VERSIONS = ['>=2.0.0 <4'];\n const modulePgNativeClient = new instrumentation_1.InstrumentationNodeModuleFile('pg/lib/native/client.js', SUPPORTED_PG_VERSIONS, this._patchPgClient.bind(this), this._unpatchPgClient.bind(this));\n const modulePgClient = new instrumentation_1.InstrumentationNodeModuleFile('pg/lib/client.js', SUPPORTED_PG_VERSIONS, this._patchPgClient.bind(this), this._unpatchPgClient.bind(this));\n const modulePG = new instrumentation_1.InstrumentationNodeModuleDefinition('pg', SUPPORTED_PG_VERSIONS, (module) => {\n const moduleExports = extractModuleExports(module);\n this._patchPgClient(moduleExports.Client);\n return module;\n }, (module) => {\n const moduleExports = extractModuleExports(module);\n this._unpatchPgClient(moduleExports.Client);\n return module;\n }, [modulePgClient, modulePgNativeClient]);\n const modulePGPool = new instrumentation_1.InstrumentationNodeModuleDefinition('pg-pool', SUPPORTED_PG_POOL_VERSIONS, (module) => {\n const moduleExports = extractModuleExports(module);\n if ((0, instrumentation_1.isWrapped)(moduleExports.prototype.connect)) {\n this._unwrap(moduleExports.prototype, 'connect');\n }\n this._wrap(moduleExports.prototype, 'connect', this._getPoolConnectPatch());\n return moduleExports;\n }, (module) => {\n const moduleExports = extractModuleExports(module);\n if ((0, instrumentation_1.isWrapped)(moduleExports.prototype.connect)) {\n this._unwrap(moduleExports.prototype, 'connect');\n }\n });\n return [modulePG, modulePGPool];\n }\n _patchPgClient(module) {\n if (!module) {\n return;\n }\n const moduleExports = extractModuleExports(module);\n if ((0, instrumentation_1.isWrapped)(moduleExports.prototype.query)) {\n this._unwrap(moduleExports.prototype, 'query');\n }\n if ((0, instrumentation_1.isWrapped)(moduleExports.prototype.connect)) {\n this._unwrap(moduleExports.prototype, 'connect');\n }\n this._wrap(moduleExports.prototype, 'query', this._getClientQueryPatch());\n this._wrap(moduleExports.prototype, 'connect', this._getClientConnectPatch());\n return module;\n }\n _unpatchPgClient(module) {\n const moduleExports = extractModuleExports(module);\n if ((0, instrumentation_1.isWrapped)(moduleExports.prototype.query)) {\n this._unwrap(moduleExports.prototype, 'query');\n }\n if ((0, instrumentation_1.isWrapped)(moduleExports.prototype.connect)) {\n this._unwrap(moduleExports.prototype, 'connect');\n }\n return module;\n }\n _getClientConnectPatch() {\n const plugin = this;\n return (original) => {\n return function connect(callback) {\n const config = plugin.getConfig();\n if (utils.shouldSkipInstrumentation(config) ||\n config.ignoreConnectSpans) {\n return original.call(this, callback);\n }\n const span = plugin.tracer.startSpan(SpanNames_1.SpanNames.CONNECT, {\n kind: api_1.SpanKind.CLIENT,\n attributes: utils.getSemanticAttributesFromConnection(this, plugin._semconvStability),\n });\n if (callback) {\n const parentSpan = api_1.trace.getSpan(api_1.context.active());\n callback = utils.patchClientConnectCallback(span, callback);\n if (parentSpan) {\n callback = api_1.context.bind(api_1.context.active(), callback);\n }\n }\n const connectResult = api_1.context.with(api_1.trace.setSpan(api_1.context.active(), span), () => {\n return original.call(this, callback);\n });\n return handleConnectResult(span, connectResult);\n };\n };\n }\n recordOperationDuration(attributes, startTime) {\n const metricsAttributes = {};\n const keysToCopy = [\n semantic_conventions_1.ATTR_DB_NAMESPACE,\n semantic_conventions_1.ATTR_ERROR_TYPE,\n semantic_conventions_1.ATTR_SERVER_PORT,\n semantic_conventions_1.ATTR_SERVER_ADDRESS,\n semantic_conventions_1.ATTR_DB_OPERATION_NAME,\n ];\n if (this._semconvStability & instrumentation_1.SemconvStability.OLD) {\n keysToCopy.push(semconv_1.ATTR_DB_SYSTEM);\n }\n if (this._semconvStability & instrumentation_1.SemconvStability.STABLE) {\n keysToCopy.push(semantic_conventions_1.ATTR_DB_SYSTEM_NAME);\n }\n keysToCopy.forEach(key => {\n if (key in attributes) {\n metricsAttributes[key] = attributes[key];\n }\n });\n const durationSeconds = (0, core_1.hrTimeToMilliseconds)((0, core_1.hrTimeDuration)(startTime, (0, core_1.hrTime)())) / 1000;\n this._operationDuration.record(durationSeconds, metricsAttributes);\n }\n _getClientQueryPatch() {\n const plugin = this;\n return (original) => {\n this._diag.debug('Patching pg.Client.prototype.query');\n return function query(...args) {\n if (utils.shouldSkipInstrumentation(plugin.getConfig())) {\n return original.apply(this, args);\n }\n const startTime = (0, core_1.hrTime)();\n // client.query(text, cb?), client.query(text, values, cb?), and\n // client.query(configObj, cb?) are all valid signatures. We construct\n // a queryConfig obj from all (valid) signatures to build the span in a\n // unified way. We verify that we at least have query text, and code\n // defensively when dealing with `queryConfig` after that (to handle all\n // the other invalid cases, like a non-array for values being provided).\n // The type casts here reflect only what we've actually validated.\n const arg0 = args[0];\n const firstArgIsString = typeof arg0 === 'string';\n const firstArgIsQueryObjectWithText = utils.isObjectWithTextString(arg0);\n // TODO: remove the `as ...` casts below when the TS version is upgraded.\n // Newer TS versions will use the result of firstArgIsQueryObjectWithText\n // to properly narrow arg0, but TS 4.3.5 does not.\n const queryConfig = firstArgIsString\n ? {\n text: arg0,\n values: Array.isArray(args[1]) ? args[1] : undefined,\n }\n : firstArgIsQueryObjectWithText\n ? {\n ...arg0,\n name: arg0.name,\n text: arg0.text,\n values: arg0.values ??\n (Array.isArray(args[1]) ? args[1] : undefined),\n }\n : undefined;\n const attributes = {\n [semconv_1.ATTR_DB_SYSTEM]: semconv_1.DB_SYSTEM_VALUE_POSTGRESQL,\n [semantic_conventions_1.ATTR_DB_NAMESPACE]: this.database,\n [semantic_conventions_1.ATTR_SERVER_PORT]: this.connectionParameters.port,\n [semantic_conventions_1.ATTR_SERVER_ADDRESS]: this.connectionParameters.host,\n };\n if (queryConfig?.text) {\n attributes[semantic_conventions_1.ATTR_DB_OPERATION_NAME] =\n utils.parseNormalizedOperationName(queryConfig?.text);\n }\n const recordDuration = () => {\n plugin.recordOperationDuration(attributes, startTime);\n };\n const instrumentationConfig = plugin.getConfig();\n const span = utils.handleConfigQuery.call(this, plugin.tracer, instrumentationConfig, plugin._semconvStability, queryConfig);\n // Modify query text w/ a tracing comment before invoking original for\n // tracing, but only if args[0] has one of our expected shapes.\n if (instrumentationConfig.addSqlCommenterCommentToQueries) {\n if (firstArgIsString) {\n args[0] = (0, sql_common_1.addSqlCommenterComment)(span, arg0);\n }\n else if (firstArgIsQueryObjectWithText && !('name' in arg0)) {\n // In the case of a query object, we need to ensure there's no name field\n // as this indicates a prepared query, where the comment would remain the same\n // for every invocation and contain an outdated trace context.\n args[0] = {\n ...arg0,\n text: (0, sql_common_1.addSqlCommenterComment)(span, arg0.text),\n };\n }\n }\n // Bind callback (if any) to parent span (if any)\n if (args.length > 0) {\n const parentSpan = api_1.trace.getSpan(api_1.context.active());\n if (typeof args[args.length - 1] === 'function') {\n // Patch ParameterQuery callback\n args[args.length - 1] = utils.patchCallback(instrumentationConfig, span, args[args.length - 1], // nb: not type safe.\n attributes, recordDuration);\n // If a parent span exists, bind the callback\n if (parentSpan) {\n args[args.length - 1] = api_1.context.bind(api_1.context.active(), args[args.length - 1]);\n }\n }\n else if (typeof queryConfig?.callback === 'function') {\n // Patch ConfigQuery callback\n let callback = utils.patchCallback(plugin.getConfig(), span, queryConfig.callback, // nb: not type safe.\n attributes, recordDuration);\n // If a parent span existed, bind the callback\n if (parentSpan) {\n callback = api_1.context.bind(api_1.context.active(), callback);\n }\n args[0].callback = callback;\n }\n }\n const { requestHook } = instrumentationConfig;\n if (typeof requestHook === 'function' && queryConfig) {\n (0, instrumentation_1.safeExecuteInTheMiddle)(() => {\n // pick keys to expose explicitly, so we're not leaking pg package\n // internals that are subject to change\n const { database, host, port, user } = this.connectionParameters;\n const connection = { database, host, port, user };\n requestHook(span, {\n connection,\n query: {\n text: queryConfig.text,\n // nb: if `client.query` is called with illegal arguments\n // (e.g., if `queryConfig.values` is passed explicitly, but a\n // non-array is given), then the type casts will be wrong. But\n // we leave it up to the queryHook to handle that, and we\n // catch and swallow any errors it throws. The other options\n // are all worse. E.g., we could leave `queryConfig.values`\n // and `queryConfig.name` as `unknown`, but then the hook body\n // would be forced to validate (or cast) them before using\n // them, which seems incredibly cumbersome given that these\n // casts will be correct 99.9% of the time -- and pg.query\n // will immediately throw during development in the other .1%\n // of cases. Alternatively, we could simply skip calling the\n // hook when `values` or `name` don't have the expected type,\n // but that would add unnecessary validation overhead to every\n // hook invocation and possibly be even more confusing/unexpected.\n values: queryConfig.values,\n name: queryConfig.name,\n },\n });\n }, err => {\n if (err) {\n plugin._diag.error('Error running query hook', err);\n }\n }, true);\n }\n let result;\n try {\n result = original.apply(this, args);\n }\n catch (e) {\n if (e instanceof Error) {\n span.recordException(utils.sanitizedErrorMessage(e));\n }\n span.setStatus({\n code: api_1.SpanStatusCode.ERROR,\n message: utils.getErrorMessage(e),\n });\n span.end();\n throw e;\n }\n // Bind promise to parent span and end the span\n if (result instanceof Promise) {\n return result\n .then((result) => {\n // Return a pass-along promise which ends the span and then goes to user's orig resolvers\n return new Promise(resolve => {\n utils.handleExecutionResult(plugin.getConfig(), span, result);\n recordDuration();\n span.end();\n resolve(result);\n });\n })\n .catch((error) => {\n return new Promise((_, reject) => {\n if (error instanceof Error) {\n span.recordException(utils.sanitizedErrorMessage(error));\n }\n span.setStatus({\n code: api_1.SpanStatusCode.ERROR,\n message: error.message,\n });\n recordDuration();\n span.end();\n reject(error);\n });\n });\n }\n // else returns void\n return result; // void\n };\n };\n }\n _setPoolConnectEventListeners(pgPool) {\n if (pgPool[internal_types_1.EVENT_LISTENERS_SET])\n return;\n const poolName = utils.getPoolName(pgPool.options);\n pgPool.on('connect', () => {\n this._connectionsCounter = utils.updateCounter(poolName, pgPool, this._connectionsCount, this._connectionPendingRequests, this._connectionsCounter);\n });\n pgPool.on('acquire', () => {\n this._connectionsCounter = utils.updateCounter(poolName, pgPool, this._connectionsCount, this._connectionPendingRequests, this._connectionsCounter);\n });\n pgPool.on('remove', () => {\n this._connectionsCounter = utils.updateCounter(poolName, pgPool, this._connectionsCount, this._connectionPendingRequests, this._connectionsCounter);\n });\n pgPool.on('release', () => {\n this._connectionsCounter = utils.updateCounter(poolName, pgPool, this._connectionsCount, this._connectionPendingRequests, this._connectionsCounter);\n });\n pgPool[internal_types_1.EVENT_LISTENERS_SET] = true;\n }\n _getPoolConnectPatch() {\n const plugin = this;\n return (originalConnect) => {\n return function connect(callback) {\n const config = plugin.getConfig();\n if (utils.shouldSkipInstrumentation(config)) {\n return originalConnect.call(this, callback);\n }\n // Still set up event listeners for metrics even when skipping spans\n plugin._setPoolConnectEventListeners(this);\n if (config.ignoreConnectSpans) {\n return originalConnect.call(this, callback);\n }\n // setup span\n const span = plugin.tracer.startSpan(SpanNames_1.SpanNames.POOL_CONNECT, {\n kind: api_1.SpanKind.CLIENT,\n attributes: utils.getSemanticAttributesFromPoolConnection(this.options, plugin._semconvStability),\n });\n if (callback) {\n const parentSpan = api_1.trace.getSpan(api_1.context.active());\n callback = utils.patchCallbackPGPool(span, callback);\n // If a parent span exists, bind the callback\n if (parentSpan) {\n callback = api_1.context.bind(api_1.context.active(), callback);\n }\n }\n const connectResult = api_1.context.with(api_1.trace.setSpan(api_1.context.active(), span), () => {\n return originalConnect.call(this, callback);\n });\n return handleConnectResult(span, connectResult);\n };\n };\n }\n}\nexports.PgInstrumentation = PgInstrumentation;\nfunction handleConnectResult(span, connectResult) {\n if (!(connectResult instanceof Promise)) {\n return connectResult;\n }\n const connectResultPromise = connectResult;\n return api_1.context.bind(api_1.context.active(), connectResultPromise\n .then(result => {\n span.end();\n return result;\n })\n .catch((error) => {\n if (error instanceof Error) {\n span.recordException(utils.sanitizedErrorMessage(error));\n }\n span.setStatus({\n code: api_1.SpanStatusCode.ERROR,\n message: utils.getErrorMessage(error),\n });\n span.end();\n return Promise.reject(error);\n }));\n}\n//# sourceMappingURL=instrumentation.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvLnBucG0vQG9wZW50ZWxlbWV0cnkraW5zdHJ1bWVudGF0aW9uLXBnQDAuNjYuMF9Ab3BlbnRlbGVtZXRyeSthcGlAMS45LjEvbm9kZV9tb2R1bGVzL0BvcGVudGVsZW1ldHJ5L2luc3RydW1lbnRhdGlvbi1wZy9idWlsZC9zcmMvaW5zdHJ1bWVudGF0aW9uLmpzIiwibWFwcGluZ3MiOiJBQUFhLENBQUMsb0RBQW9ELHlDQUF5QywwQ0FBMEMsOENBQThDLG9EQUFvRDtBQUN2UCw4Q0FBNkMsRUFBRSxhQUFhLEVBQUM7QUFDN0QseUJBQXlCO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQixtQkFBTyxDQUFDLGlNQUFnQztBQUNsRSxjQUFjLG1CQUFPLENBQUMsa0lBQW9CO0FBQzFDLHlCQUF5QixtQkFBTyxDQUFDLGlNQUFrQjtBQUNuRCxjQUFjLG1CQUFPLENBQUMsK0tBQVM7QUFDL0IscUJBQXFCLG1CQUFPLENBQUMsaUxBQTJCO0FBQ3hEO0FBQ0Esa0JBQWtCLG1CQUFPLENBQUMsbUxBQVc7QUFDckMsb0JBQW9CLG1CQUFPLENBQUMsbU1BQW1CO0FBQy9DLGVBQWUsbUJBQU8sQ0FBQyw4SkFBcUI7QUFDNUMsK0JBQStCLG1CQUFPLENBQUMsc0xBQXFDO0FBQzVFLGtCQUFrQixtQkFBTyxDQUFDLG1MQUFXO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQjtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLFdBQVc7QUFDL0IsU0FBUztBQUNUO0FBQ0E7QUFDQSxvQkFBb0IsV0FBVztBQUMvQixTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsY0FBYztBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBLGdDQUFnQyw2QkFBNkI7QUFDN0QsNkNBQTZDO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QjtBQUM3Qix5QkFBeUI7QUFDekIscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUI7QUFDekIscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkI7QUFDN0I7QUFDQTtBQUNBO0FBQ0EseUJBQXlCO0FBQ3pCLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0EsK0JBQStCO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EiLCJzb3VyY2VzIjpbIi9Vc2Vycy9tYXJjbWludGVsL1Byb2plY3RzL2UtdGliLmNvbS9ub2RlX21vZHVsZXMvLnBucG0vQG9wZW50ZWxlbWV0cnkraW5zdHJ1bWVudGF0aW9uLXBnQDAuNjYuMF9Ab3BlbnRlbGVtZXRyeSthcGlAMS45LjEvbm9kZV9tb2R1bGVzL0BvcGVudGVsZW1ldHJ5L2luc3RydW1lbnRhdGlvbi1wZy9idWlsZC9zcmMvaW5zdHJ1bWVudGF0aW9uLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiOztnbG9iYWxUaGlzW1wiX3NlbnRyeVJld3JpdGVzVHVubmVsUGF0aFwiXSA9IHVuZGVmaW5lZDtnbG9iYWxUaGlzW1wiU0VOVFJZX1JFTEVBU0VcIl0gPSB1bmRlZmluZWQ7Z2xvYmFsVGhpc1tcIl9zZW50cnlCYXNlUGF0aFwiXSA9IHVuZGVmaW5lZDtnbG9iYWxUaGlzW1wiX3NlbnRyeU5leHRKc1ZlcnNpb25cIl0gPSBcIjE2LjEuNlwiO2dsb2JhbFRoaXNbXCJfc2VudHJ5UmV3cml0ZUZyYW1lc0Rpc3REaXJcIl0gPSBcIi5uZXh0XCI7Z2xvYmFsVGhpc1tcIl9zZW50cnlWZXJjZWxDcm9uc0NvbmZpZ1wiXSA9IHVuZGVmaW5lZDtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuUGdJbnN0cnVtZW50YXRpb24gPSB2b2lkIDA7XG4vKlxuICogQ29weXJpZ2h0IFRoZSBPcGVuVGVsZW1ldHJ5IEF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuY29uc3QgaW5zdHJ1bWVudGF0aW9uXzEgPSByZXF1aXJlKFwiQG9wZW50ZWxlbWV0cnkvaW5zdHJ1bWVudGF0aW9uXCIpO1xuY29uc3QgYXBpXzEgPSByZXF1aXJlKFwiQG9wZW50ZWxlbWV0cnkvYXBpXCIpO1xuY29uc3QgaW50ZXJuYWxfdHlwZXNfMSA9IHJlcXVpcmUoXCIuL2ludGVybmFsLXR5cGVzXCIpO1xuY29uc3QgdXRpbHMgPSByZXF1aXJlKFwiLi91dGlsc1wiKTtcbmNvbnN0IHNxbF9jb21tb25fMSA9IHJlcXVpcmUoXCJAb3BlbnRlbGVtZXRyeS9zcWwtY29tbW9uXCIpO1xuLyoqIEBrbmlwaWdub3JlICovXG5jb25zdCB2ZXJzaW9uXzEgPSByZXF1aXJlKFwiLi92ZXJzaW9uXCIpO1xuY29uc3QgU3Bhbk5hbWVzXzEgPSByZXF1aXJlKFwiLi9lbnVtcy9TcGFuTmFtZXNcIik7XG5jb25zdCBjb3JlXzEgPSByZXF1aXJlKFwiQG9wZW50ZWxlbWV0cnkvY29yZVwiKTtcbmNvbnN0IHNlbWFudGljX2NvbnZlbnRpb25zXzEgPSByZXF1aXJlKFwiQG9wZW50ZWxlbWV0cnkvc2VtYW50aWMtY29udmVudGlvbnNcIik7XG5jb25zdCBzZW1jb252XzEgPSByZXF1aXJlKFwiLi9zZW1jb252XCIpO1xuZnVuY3Rpb24gZXh0cmFjdE1vZHVsZUV4cG9ydHMobW9kdWxlKSB7XG4gICAgcmV0dXJuIG1vZHVsZVtTeW1ib2wudG9TdHJpbmdUYWddID09PSAnTW9kdWxlJ1xuICAgICAgICA/IG1vZHVsZS5kZWZhdWx0IC8vIEVTTVxuICAgICAgICA6IG1vZHVsZTsgLy8gQ29tbW9uSlNcbn1cbmNsYXNzIFBnSW5zdHJ1bWVudGF0aW9uIGV4dGVuZHMgaW5zdHJ1bWVudGF0aW9uXzEuSW5zdHJ1bWVudGF0aW9uQmFzZSB7XG4gICAgLy8gUG9vbCBldmVudHMgY29ubmVjdCwgYWNxdWlyZSwgcmVsZWFzZSBhbmQgcmVtb3ZlIGNhbiBiZSBjYWxsZWRcbiAgICAvLyBtdWx0aXBsZSB0aW1lcyB3aXRob3V0IGNoYW5naW5nIHRoZSB2YWx1ZXMgb2YgdG90YWwsIGlkbGUgYW5kIHdhaXRpbmdcbiAgICAvLyBjb25uZWN0aW9ucy4gVGhlIF9jb25uZWN0aW9uc0NvdW50ZXIgaXMgdXNlZCB0byBrZWVwIHRyYWNrIG9mIGxhdGVzdFxuICAgIC8vIHZhbHVlcyBhbmQgb25seSB1cGRhdGUgdGhlIG1ldHJpY3MgX2Nvbm5lY3Rpb25zQ291bnQgYW5kIF9jb25uZWN0aW9uUGVuZGluZ1JlcXVlc3RzXG4gICAgLy8gd2hlbiB0aGUgdmFsdWUgY2hhbmdlLlxuICAgIF9jb25uZWN0aW9uc0NvdW50ZXIgPSB7XG4gICAgICAgIHVzZWQ6IDAsXG4gICAgICAgIGlkbGU6IDAsXG4gICAgICAgIHBlbmRpbmc6IDAsXG4gICAgfTtcbiAgICBfc2VtY29udlN0YWJpbGl0eTtcbiAgICBjb25zdHJ1Y3Rvcihjb25maWcgPSB7fSkge1xuICAgICAgICBzdXBlcih2ZXJzaW9uXzEuUEFDS0FHRV9OQU1FLCB2ZXJzaW9uXzEuUEFDS0FHRV9WRVJTSU9OLCBjb25maWcpO1xuICAgICAgICB0aGlzLl9zZW1jb252U3RhYmlsaXR5ID0gKDAsIGluc3RydW1lbnRhdGlvbl8xLnNlbWNvbnZTdGFiaWxpdHlGcm9tU3RyKSgnZGF0YWJhc2UnLCBwcm9jZXNzLmVudi5PVEVMX1NFTUNPTlZfU1RBQklMSVRZX09QVF9JTik7XG4gICAgfVxuICAgIF91cGRhdGVNZXRyaWNJbnN0cnVtZW50cygpIHtcbiAgICAgICAgdGhpcy5fb3BlcmF0aW9uRHVyYXRpb24gPSB0aGlzLm1ldGVyLmNyZWF0ZUhpc3RvZ3JhbShzZW1hbnRpY19jb252ZW50aW9uc18xLk1FVFJJQ19EQl9DTElFTlRfT1BFUkFUSU9OX0RVUkFUSU9OLCB7XG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogJ0R1cmF0aW9uIG9mIGRhdGFiYXNlIGNsaWVudCBvcGVyYXRpb25zLicsXG4gICAgICAgICAgICB1bml0OiAncycsXG4gICAgICAgICAgICB2YWx1ZVR5cGU6IGFwaV8xLlZhbHVlVHlwZS5ET1VCTEUsXG4gICAgICAgICAgICBhZHZpY2U6IHtcbiAgICAgICAgICAgICAgICBleHBsaWNpdEJ1Y2tldEJvdW5kYXJpZXM6IFtcbiAgICAgICAgICAgICAgICAgICAgMC4wMDEsIDAuMDA1LCAwLjAxLCAwLjA1LCAwLjEsIDAuNSwgMSwgNSwgMTAsXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLl9jb25uZWN0aW9uc0NvdW50ZXIgPSB7XG4gICAgICAgICAgICBpZGxlOiAwLFxuICAgICAgICAgICAgcGVuZGluZzogMCxcbiAgICAgICAgICAgIHVzZWQ6IDAsXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuX2Nvbm5lY3Rpb25zQ291bnQgPSB0aGlzLm1ldGVyLmNyZWF0ZVVwRG93bkNvdW50ZXIoc2VtY29udl8xLk1FVFJJQ19EQl9DTElFTlRfQ09OTkVDVElPTl9DT1VOVCwge1xuICAgICAgICAgICAgZGVzY3JpcHRpb246ICdUaGUgbnVtYmVyIG9mIGNvbm5lY3Rpb25zIHRoYXQgYXJlIGN1cnJlbnRseSBpbiBzdGF0ZSBkZXNjcmliZWQgYnkgdGhlIHN0YXRlIGF0dHJpYnV0ZS4nLFxuICAgICAgICAgICAgdW5pdDogJ3tjb25uZWN0aW9ufScsXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLl9jb25uZWN0aW9uUGVuZGluZ1JlcXVlc3RzID0gdGhpcy5tZXRlci5jcmVhdGVVcERvd25Db3VudGVyKHNlbWNvbnZfMS5NRVRSSUNfREJfQ0xJRU5UX0NPTk5FQ1RJT05fUEVORElOR19SRVFVRVNUUywge1xuICAgICAgICAgICAgZGVzY3JpcHRpb246ICdUaGUgbnVtYmVyIG9mIGN1cnJlbnQgcGVuZGluZyByZXF1ZXN0cyBmb3IgYW4gb3BlbiBjb25uZWN0aW9uLicsXG4gICAgICAgICAgICB1bml0OiAne2Nvbm5lY3Rpb259JyxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGluaXQoKSB7XG4gICAgICAgIGNvbnN0IFNVUFBPUlRFRF9QR19WRVJTSU9OUyA9IFsnPj04LjAuMyA8OSddO1xuICAgICAgICBjb25zdCBTVVBQT1JURURfUEdfUE9PTF9WRVJTSU9OUyA9IFsnPj0yLjAuMCA8NCddO1xuICAgICAgICBjb25zdCBtb2R1bGVQZ05hdGl2ZUNsaWVudCA9IG5ldyBpbnN0cnVtZW50YXRpb25fMS5JbnN0cnVtZW50YXRpb25Ob2RlTW9kdWxlRmlsZSgncGcvbGliL25hdGl2ZS9jbGllbnQuanMnLCBTVVBQT1JURURfUEdfVkVSU0lPTlMsIHRoaXMuX3BhdGNoUGdDbGllbnQuYmluZCh0aGlzKSwgdGhpcy5fdW5wYXRjaFBnQ2xpZW50LmJpbmQodGhpcykpO1xuICAgICAgICBjb25zdCBtb2R1bGVQZ0NsaWVudCA9IG5ldyBpbnN0cnVtZW50YXRpb25fMS5JbnN0cnVtZW50YXRpb25Ob2RlTW9kdWxlRmlsZSgncGcvbGliL2NsaWVudC5qcycsIFNVUFBPUlRFRF9QR19WRVJTSU9OUywgdGhpcy5fcGF0Y2hQZ0NsaWVudC5iaW5kKHRoaXMpLCB0aGlzLl91bnBhdGNoUGdDbGllbnQuYmluZCh0aGlzKSk7XG4gICAgICAgIGNvbnN0IG1vZHVsZVBHID0gbmV3IGluc3RydW1lbnRhdGlvbl8xLkluc3RydW1lbnRhdGlvbk5vZGVNb2R1bGVEZWZpbml0aW9uKCdwZycsIFNVUFBPUlRFRF9QR19WRVJTSU9OUywgKG1vZHVsZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbW9kdWxlRXhwb3J0cyA9IGV4dHJhY3RNb2R1bGVFeHBvcnRzKG1vZHVsZSk7XG4gICAgICAgICAgICB0aGlzLl9wYXRjaFBnQ2xpZW50KG1vZHVsZUV4cG9ydHMuQ2xpZW50KTtcbiAgICAgICAgICAgIHJldHVybiBtb2R1bGU7XG4gICAgICAgIH0sIChtb2R1bGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1vZHVsZUV4cG9ydHMgPSBleHRyYWN0TW9kdWxlRXhwb3J0cyhtb2R1bGUpO1xuICAgICAgICAgICAgdGhpcy5fdW5wYXRjaFBnQ2xpZW50KG1vZHVsZUV4cG9ydHMuQ2xpZW50KTtcbiAgICAgICAgICAgIHJldHVybiBtb2R1bGU7XG4gICAgICAgIH0sIFttb2R1bGVQZ0NsaWVudCwgbW9kdWxlUGdOYXRpdmVDbGllbnRdKTtcbiAgICAgICAgY29uc3QgbW9kdWxlUEdQb29sID0gbmV3IGluc3RydW1lbnRhdGlvbl8xLkluc3RydW1lbnRhdGlvbk5vZGVNb2R1bGVEZWZpbml0aW9uKCdwZy1wb29sJywgU1VQUE9SVEVEX1BHX1BPT0xfVkVSU0lPTlMsIChtb2R1bGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1vZHVsZUV4cG9ydHMgPSBleHRyYWN0TW9kdWxlRXhwb3J0cyhtb2R1bGUpO1xuICAgICAgICAgICAgaWYgKCgwLCBpbnN0cnVtZW50YXRpb25fMS5pc1dyYXBwZWQpKG1vZHVsZUV4cG9ydHMucHJvdG90eXBlLmNvbm5lY3QpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdW53cmFwKG1vZHVsZUV4cG9ydHMucHJvdG90eXBlLCAnY29ubmVjdCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5fd3JhcChtb2R1bGVFeHBvcnRzLnByb3RvdHlwZSwgJ2Nvbm5lY3QnLCB0aGlzLl9nZXRQb29sQ29ubmVjdFBhdGNoKCkpO1xuICAgICAgICAgICAgcmV0dXJuIG1vZHVsZUV4cG9ydHM7XG4gICAgICAgIH0sIChtb2R1bGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1vZHVsZUV4cG9ydHMgPSBleHRyYWN0TW9kdWxlRXhwb3J0cyhtb2R1bGUpO1xuICAgICAgICAgICAgaWYgKCgwLCBpbnN0cnVtZW50YXRpb25fMS5pc1dyYXBwZWQpKG1vZHVsZUV4cG9ydHMucHJvdG90eXBlLmNvbm5lY3QpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdW53cmFwKG1vZHVsZUV4cG9ydHMucHJvdG90eXBlLCAnY29ubmVjdCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIFttb2R1bGVQRywgbW9kdWxlUEdQb29sXTtcbiAgICB9XG4gICAgX3BhdGNoUGdDbGllbnQobW9kdWxlKSB7XG4gICAgICAgIGlmICghbW9kdWxlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbW9kdWxlRXhwb3J0cyA9IGV4dHJhY3RNb2R1bGVFeHBvcnRzKG1vZHVsZSk7XG4gICAgICAgIGlmICgoMCwgaW5zdHJ1bWVudGF0aW9uXzEuaXNXcmFwcGVkKShtb2R1bGVFeHBvcnRzLnByb3RvdHlwZS5xdWVyeSkpIHtcbiAgICAgICAgICAgIHRoaXMuX3Vud3JhcChtb2R1bGVFeHBvcnRzLnByb3RvdHlwZSwgJ3F1ZXJ5Jyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCgwLCBpbnN0cnVtZW50YXRpb25fMS5pc1dyYXBwZWQpKG1vZHVsZUV4cG9ydHMucHJvdG90eXBlLmNvbm5lY3QpKSB7XG4gICAgICAgICAgICB0aGlzLl91bndyYXAobW9kdWxlRXhwb3J0cy5wcm90b3R5cGUsICdjb25uZWN0Jyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fd3JhcChtb2R1bGVFeHBvcnRzLnByb3RvdHlwZSwgJ3F1ZXJ5JywgdGhpcy5fZ2V0Q2xpZW50UXVlcnlQYXRjaCgpKTtcbiAgICAgICAgdGhpcy5fd3JhcChtb2R1bGVFeHBvcnRzLnByb3RvdHlwZSwgJ2Nvbm5lY3QnLCB0aGlzLl9nZXRDbGllbnRDb25uZWN0UGF0Y2goKSk7XG4gICAgICAgIHJldHVybiBtb2R1bGU7XG4gICAgfVxuICAgIF91bnBhdGNoUGdDbGllbnQobW9kdWxlKSB7XG4gICAgICAgIGNvbnN0IG1vZHVsZUV4cG9ydHMgPSBleHRyYWN0TW9kdWxlRXhwb3J0cyhtb2R1bGUpO1xuICAgICAgICBpZiAoKDAsIGluc3RydW1lbnRhdGlvbl8xLmlzV3JhcHBlZCkobW9kdWxlRXhwb3J0cy5wcm90b3R5cGUucXVlcnkpKSB7XG4gICAgICAgICAgICB0aGlzLl91bndyYXAobW9kdWxlRXhwb3J0cy5wcm90b3R5cGUsICdxdWVyeScpO1xuICAgICAgICB9XG4gICAgICAgIGlmICgoMCwgaW5zdHJ1bWVudGF0aW9uXzEuaXNXcmFwcGVkKShtb2R1bGVFeHBvcnRzLnByb3RvdHlwZS5jb25uZWN0KSkge1xuICAgICAgICAgICAgdGhpcy5fdW53cmFwKG1vZHVsZUV4cG9ydHMucHJvdG90eXBlLCAnY29ubmVjdCcpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtb2R1bGU7XG4gICAgfVxuICAgIF9nZXRDbGllbnRDb25uZWN0UGF0Y2goKSB7XG4gICAgICAgIGNvbnN0IHBsdWdpbiA9IHRoaXM7XG4gICAgICAgIHJldHVybiAob3JpZ2luYWwpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiBjb25uZWN0KGNhbGxiYWNrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY29uZmlnID0gcGx1Z2luLmdldENvbmZpZygpO1xuICAgICAgICAgICAgICAgIGlmICh1dGlscy5zaG91bGRTa2lwSW5zdHJ1bWVudGF0aW9uKGNvbmZpZykgfHxcbiAgICAgICAgICAgICAgICAgICAgY29uZmlnLmlnbm9yZUNvbm5lY3RTcGFucykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3JpZ2luYWwuY2FsbCh0aGlzLCBjYWxsYmFjayk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IHNwYW4gPSBwbHVnaW4udHJhY2VyLnN0YXJ0U3BhbihTcGFuTmFtZXNfMS5TcGFuTmFtZXMuQ09OTkVDVCwge1xuICAgICAgICAgICAgICAgICAgICBraW5kOiBhcGlfMS5TcGFuS2luZC5DTElFTlQsXG4gICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHV0aWxzLmdldFNlbWFudGljQXR0cmlidXRlc0Zyb21Db25uZWN0aW9uKHRoaXMsIHBsdWdpbi5fc2VtY29udlN0YWJpbGl0eSksXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaWYgKGNhbGxiYWNrKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudFNwYW4gPSBhcGlfMS50cmFjZS5nZXRTcGFuKGFwaV8xLmNvbnRleHQuYWN0aXZlKCkpO1xuICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayA9IHV0aWxzLnBhdGNoQ2xpZW50Q29ubmVjdENhbGxiYWNrKHNwYW4sIGNhbGxiYWNrKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmVudFNwYW4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrID0gYXBpXzEuY29udGV4dC5iaW5kKGFwaV8xLmNvbnRleHQuYWN0aXZlKCksIGNhbGxiYWNrKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBjb25uZWN0UmVzdWx0ID0gYXBpXzEuY29udGV4dC53aXRoKGFwaV8xLnRyYWNlLnNldFNwYW4oYXBpXzEuY29udGV4dC5hY3RpdmUoKSwgc3BhbiksICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9yaWdpbmFsLmNhbGwodGhpcywgY2FsbGJhY2spO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiBoYW5kbGVDb25uZWN0UmVzdWx0KHNwYW4sIGNvbm5lY3RSZXN1bHQpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfTtcbiAgICB9XG4gICAgcmVjb3JkT3BlcmF0aW9uRHVyYXRpb24oYXR0cmlidXRlcywgc3RhcnRUaW1lKSB7XG4gICAgICAgIGNvbnN0IG1ldHJpY3NBdHRyaWJ1dGVzID0ge307XG4gICAgICAgIGNvbnN0IGtleXNUb0NvcHkgPSBbXG4gICAgICAgICAgICBzZW1hbnRpY19jb252ZW50aW9uc18xLkFUVFJfREJfTkFNRVNQQUNFLFxuICAgICAgICAgICAgc2VtYW50aWNfY29udmVudGlvbnNfMS5BVFRSX0VSUk9SX1RZUEUsXG4gICAgICAgICAgICBzZW1hbnRpY19jb252ZW50aW9uc18xLkFUVFJfU0VSVkVSX1BPUlQsXG4gICAgICAgICAgICBzZW1hbnRpY19jb252ZW50aW9uc18xLkFUVFJfU0VSVkVSX0FERFJFU1MsXG4gICAgICAgICAgICBzZW1hbnRpY19jb252ZW50aW9uc18xLkFUVFJfREJfT1BFUkFUSU9OX05BTUUsXG4gICAgICAgIF07XG4gICAgICAgIGlmICh0aGlzLl9zZW1jb252U3RhYmlsaXR5ICYgaW5zdHJ1bWVudGF0aW9uXzEuU2VtY29udlN0YWJpbGl0eS5PTEQpIHtcbiAgICAgICAgICAgIGtleXNUb0NvcHkucHVzaChzZW1jb252XzEuQVRUUl9EQl9TWVNURU0pO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLl9zZW1jb252U3RhYmlsaXR5ICYgaW5zdHJ1bWVudGF0aW9uXzEuU2VtY29udlN0YWJpbGl0eS5TVEFCTEUpIHtcbiAgICAgICAgICAgIGtleXNUb0NvcHkucHVzaChzZW1hbnRpY19jb252ZW50aW9uc18xLkFUVFJfREJfU1lTVEVNX05BTUUpO1xuICAgICAgICB9XG4gICAgICAgIGtleXNUb0NvcHkuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICAgICAgaWYgKGtleSBpbiBhdHRyaWJ1dGVzKSB7XG4gICAgICAgICAgICAgICAgbWV0cmljc0F0dHJpYnV0ZXNba2V5XSA9IGF0dHJpYnV0ZXNba2V5XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IGR1cmF0aW9uU2Vjb25kcyA9ICgwLCBjb3JlXzEuaHJUaW1lVG9NaWxsaXNlY29uZHMpKCgwLCBjb3JlXzEuaHJUaW1lRHVyYXRpb24pKHN0YXJ0VGltZSwgKDAsIGNvcmVfMS5oclRpbWUpKCkpKSAvIDEwMDA7XG4gICAgICAgIHRoaXMuX29wZXJhdGlvbkR1cmF0aW9uLnJlY29yZChkdXJhdGlvblNlY29uZHMsIG1ldHJpY3NBdHRyaWJ1dGVzKTtcbiAgICB9XG4gICAgX2dldENsaWVudFF1ZXJ5UGF0Y2goKSB7XG4gICAgICAgIGNvbnN0IHBsdWdpbiA9IHRoaXM7XG4gICAgICAgIHJldHVybiAob3JpZ2luYWwpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2RpYWcuZGVidWcoJ1BhdGNoaW5nIHBnLkNsaWVudC5wcm90b3R5cGUucXVlcnknKTtcbiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiBxdWVyeSguLi5hcmdzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHV0aWxzLnNob3VsZFNraXBJbnN0cnVtZW50YXRpb24ocGx1Z2luLmdldENvbmZpZygpKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3JpZ2luYWwuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IHN0YXJ0VGltZSA9ICgwLCBjb3JlXzEuaHJUaW1lKSgpO1xuICAgICAgICAgICAgICAgIC8vIGNsaWVudC5xdWVyeSh0ZXh0LCBjYj8pLCBjbGllbnQucXVlcnkodGV4dCwgdmFsdWVzLCBjYj8pLCBhbmRcbiAgICAgICAgICAgICAgICAvLyBjbGllbnQucXVlcnkoY29uZmlnT2JqLCBjYj8pIGFyZSBhbGwgdmFsaWQgc2lnbmF0dXJlcy4gV2UgY29uc3RydWN0XG4gICAgICAgICAgICAgICAgLy8gYSBxdWVyeUNvbmZpZyBvYmogZnJvbSBhbGwgKHZhbGlkKSBzaWduYXR1cmVzIHRvIGJ1aWxkIHRoZSBzcGFuIGluIGFcbiAgICAgICAgICAgICAgICAvLyB1bmlmaWVkIHdheS4gV2UgdmVyaWZ5IHRoYXQgd2UgYXQgbGVhc3QgaGF2ZSBxdWVyeSB0ZXh0LCBhbmQgY29kZVxuICAgICAgICAgICAgICAgIC8vIGRlZmVuc2l2ZWx5IHdoZW4gZGVhbGluZyB3aXRoIGBxdWVyeUNvbmZpZ2AgYWZ0ZXIgdGhhdCAodG8gaGFuZGxlIGFsbFxuICAgICAgICAgICAgICAgIC8vIHRoZSBvdGhlciBpbnZhbGlkIGNhc2VzLCBsaWtlIGEgbm9uLWFycmF5IGZvciB2YWx1ZXMgYmVpbmcgcHJvdmlkZWQpLlxuICAgICAgICAgICAgICAgIC8vIFRoZSB0eXBlIGNhc3RzIGhlcmUgcmVmbGVjdCBvbmx5IHdoYXQgd2UndmUgYWN0dWFsbHkgdmFsaWRhdGVkLlxuICAgICAgICAgICAgICAgIGNvbnN0IGFyZzAgPSBhcmdzWzBdO1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpcnN0QXJnSXNTdHJpbmcgPSB0eXBlb2YgYXJnMCA9PT0gJ3N0cmluZyc7XG4gICAgICAgICAgICAgICAgY29uc3QgZmlyc3RBcmdJc1F1ZXJ5T2JqZWN0V2l0aFRleHQgPSB1dGlscy5pc09iamVjdFdpdGhUZXh0U3RyaW5nKGFyZzApO1xuICAgICAgICAgICAgICAgIC8vIFRPRE86IHJlbW92ZSB0aGUgYGFzIC4uLmAgY2FzdHMgYmVsb3cgd2hlbiB0aGUgVFMgdmVyc2lvbiBpcyB1cGdyYWRlZC5cbiAgICAgICAgICAgICAgICAvLyBOZXdlciBUUyB2ZXJzaW9ucyB3aWxsIHVzZSB0aGUgcmVzdWx0IG9mIGZpcnN0QXJnSXNRdWVyeU9iamVjdFdpdGhUZXh0XG4gICAgICAgICAgICAgICAgLy8gdG8gcHJvcGVybHkgbmFycm93IGFyZzAsIGJ1dCBUUyA0LjMuNSBkb2VzIG5vdC5cbiAgICAgICAgICAgICAgICBjb25zdCBxdWVyeUNvbmZpZyA9IGZpcnN0QXJnSXNTdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiBhcmcwLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiBBcnJheS5pc0FycmF5KGFyZ3NbMV0pID8gYXJnc1sxXSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA6IGZpcnN0QXJnSXNRdWVyeU9iamVjdFdpdGhUZXh0XG4gICAgICAgICAgICAgICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5hcmcwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGFyZzAubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiBhcmcwLnRleHQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiBhcmcwLnZhbHVlcyA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQXJyYXkuaXNBcnJheShhcmdzWzFdKSA/IGFyZ3NbMV0gOiB1bmRlZmluZWQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgY29uc3QgYXR0cmlidXRlcyA9IHtcbiAgICAgICAgICAgICAgICAgICAgW3NlbWNvbnZfMS5BVFRSX0RCX1NZU1RFTV06IHNlbWNvbnZfMS5EQl9TWVNURU1fVkFMVUVfUE9TVEdSRVNRTCxcbiAgICAgICAgICAgICAgICAgICAgW3NlbWFudGljX2NvbnZlbnRpb25zXzEuQVRUUl9EQl9OQU1FU1BBQ0VdOiB0aGlzLmRhdGFiYXNlLFxuICAgICAgICAgICAgICAgICAgICBbc2VtYW50aWNfY29udmVudGlvbnNfMS5BVFRSX1NFUlZFUl9QT1JUXTogdGhpcy5jb25uZWN0aW9uUGFyYW1ldGVycy5wb3J0LFxuICAgICAgICAgICAgICAgICAgICBbc2VtYW50aWNfY29udmVudGlvbnNfMS5BVFRSX1NFUlZFUl9BRERSRVNTXTogdGhpcy5jb25uZWN0aW9uUGFyYW1ldGVycy5ob3N0LFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgaWYgKHF1ZXJ5Q29uZmlnPy50ZXh0KSB7XG4gICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXNbc2VtYW50aWNfY29udmVudGlvbnNfMS5BVFRSX0RCX09QRVJBVElPTl9OQU1FXSA9XG4gICAgICAgICAgICAgICAgICAgICAgICB1dGlscy5wYXJzZU5vcm1hbGl6ZWRPcGVyYXRpb25OYW1lKHF1ZXJ5Q29uZmlnPy50ZXh0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgcmVjb3JkRHVyYXRpb24gPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHBsdWdpbi5yZWNvcmRPcGVyYXRpb25EdXJhdGlvbihhdHRyaWJ1dGVzLCBzdGFydFRpbWUpO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgY29uc3QgaW5zdHJ1bWVudGF0aW9uQ29uZmlnID0gcGx1Z2luLmdldENvbmZpZygpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNwYW4gPSB1dGlscy5oYW5kbGVDb25maWdRdWVyeS5jYWxsKHRoaXMsIHBsdWdpbi50cmFjZXIsIGluc3RydW1lbnRhdGlvbkNvbmZpZywgcGx1Z2luLl9zZW1jb252U3RhYmlsaXR5LCBxdWVyeUNvbmZpZyk7XG4gICAgICAgICAgICAgICAgLy8gTW9kaWZ5IHF1ZXJ5IHRleHQgdy8gYSB0cmFjaW5nIGNvbW1lbnQgYmVmb3JlIGludm9raW5nIG9yaWdpbmFsIGZvclxuICAgICAgICAgICAgICAgIC8vIHRyYWNpbmcsIGJ1dCBvbmx5IGlmIGFyZ3NbMF0gaGFzIG9uZSBvZiBvdXIgZXhwZWN0ZWQgc2hhcGVzLlxuICAgICAgICAgICAgICAgIGlmIChpbnN0cnVtZW50YXRpb25Db25maWcuYWRkU3FsQ29tbWVudGVyQ29tbWVudFRvUXVlcmllcykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZmlyc3RBcmdJc1N0cmluZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXJnc1swXSA9ICgwLCBzcWxfY29tbW9uXzEuYWRkU3FsQ29tbWVudGVyQ29tbWVudCkoc3BhbiwgYXJnMCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZmlyc3RBcmdJc1F1ZXJ5T2JqZWN0V2l0aFRleHQgJiYgISgnbmFtZScgaW4gYXJnMCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEluIHRoZSBjYXNlIG9mIGEgcXVlcnkgb2JqZWN0LCB3ZSBuZWVkIHRvIGVuc3VyZSB0aGVyZSdzIG5vIG5hbWUgZmllbGRcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFzIHRoaXMgaW5kaWNhdGVzIGEgcHJlcGFyZWQgcXVlcnksIHdoZXJlIHRoZSBjb21tZW50IHdvdWxkIHJlbWFpbiB0aGUgc2FtZVxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gZm9yIGV2ZXJ5IGludm9jYXRpb24gYW5kIGNvbnRhaW4gYW4gb3V0ZGF0ZWQgdHJhY2UgY29udGV4dC5cbiAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3NbMF0gPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYXJnMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiAoMCwgc3FsX2NvbW1vbl8xLmFkZFNxbENvbW1lbnRlckNvbW1lbnQpKHNwYW4sIGFyZzAudGV4dCksXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIEJpbmQgY2FsbGJhY2sgKGlmIGFueSkgdG8gcGFyZW50IHNwYW4gKGlmIGFueSlcbiAgICAgICAgICAgICAgICBpZiAoYXJncy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudFNwYW4gPSBhcGlfMS50cmFjZS5nZXRTcGFuKGFwaV8xLmNvbnRleHQuYWN0aXZlKCkpO1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGFyZ3NbYXJncy5sZW5ndGggLSAxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gUGF0Y2ggUGFyYW1ldGVyUXVlcnkgY2FsbGJhY2tcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3NbYXJncy5sZW5ndGggLSAxXSA9IHV0aWxzLnBhdGNoQ2FsbGJhY2soaW5zdHJ1bWVudGF0aW9uQ29uZmlnLCBzcGFuLCBhcmdzW2FyZ3MubGVuZ3RoIC0gMV0sIC8vIG5iOiBub3QgdHlwZSBzYWZlLlxuICAgICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlcywgcmVjb3JkRHVyYXRpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgYSBwYXJlbnQgc3BhbiBleGlzdHMsIGJpbmQgdGhlIGNhbGxiYWNrXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyZW50U3Bhbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3NbYXJncy5sZW5ndGggLSAxXSA9IGFwaV8xLmNvbnRleHQuYmluZChhcGlfMS5jb250ZXh0LmFjdGl2ZSgpLCBhcmdzW2FyZ3MubGVuZ3RoIC0gMV0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHR5cGVvZiBxdWVyeUNvbmZpZz8uY2FsbGJhY2sgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFBhdGNoIENvbmZpZ1F1ZXJ5IGNhbGxiYWNrXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgY2FsbGJhY2sgPSB1dGlscy5wYXRjaENhbGxiYWNrKHBsdWdpbi5nZXRDb25maWcoKSwgc3BhbiwgcXVlcnlDb25maWcuY2FsbGJhY2ssIC8vIG5iOiBub3QgdHlwZSBzYWZlLlxuICAgICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlcywgcmVjb3JkRHVyYXRpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgYSBwYXJlbnQgc3BhbiBleGlzdGVkLCBiaW5kIHRoZSBjYWxsYmFja1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmVudFNwYW4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayA9IGFwaV8xLmNvbnRleHQuYmluZChhcGlfMS5jb250ZXh0LmFjdGl2ZSgpLCBjYWxsYmFjayk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBhcmdzWzBdLmNhbGxiYWNrID0gY2FsbGJhY2s7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgeyByZXF1ZXN0SG9vayB9ID0gaW5zdHJ1bWVudGF0aW9uQ29uZmlnO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgcmVxdWVzdEhvb2sgPT09ICdmdW5jdGlvbicgJiYgcXVlcnlDb25maWcpIHtcbiAgICAgICAgICAgICAgICAgICAgKDAsIGluc3RydW1lbnRhdGlvbl8xLnNhZmVFeGVjdXRlSW5UaGVNaWRkbGUpKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBpY2sga2V5cyB0byBleHBvc2UgZXhwbGljaXRseSwgc28gd2UncmUgbm90IGxlYWtpbmcgcGcgcGFja2FnZVxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW50ZXJuYWxzIHRoYXQgYXJlIHN1YmplY3QgdG8gY2hhbmdlXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGRhdGFiYXNlLCBob3N0LCBwb3J0LCB1c2VyIH0gPSB0aGlzLmNvbm5lY3Rpb25QYXJhbWV0ZXJzO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY29ubmVjdGlvbiA9IHsgZGF0YWJhc2UsIGhvc3QsIHBvcnQsIHVzZXIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RIb29rKHNwYW4sIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6IHF1ZXJ5Q29uZmlnLnRleHQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5iOiBpZiBgY2xpZW50LnF1ZXJ5YCBpcyBjYWxsZWQgd2l0aCBpbGxlZ2FsIGFyZ3VtZW50c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAoZS5nLiwgaWYgYHF1ZXJ5Q29uZmlnLnZhbHVlc2AgaXMgcGFzc2VkIGV4cGxpY2l0bHksIGJ1dCBhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5vbi1hcnJheSBpcyBnaXZlbiksIHRoZW4gdGhlIHR5cGUgY2FzdHMgd2lsbCBiZSB3cm9uZy4gQnV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdlIGxlYXZlIGl0IHVwIHRvIHRoZSBxdWVyeUhvb2sgdG8gaGFuZGxlIHRoYXQsIGFuZCB3ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXRjaCBhbmQgc3dhbGxvdyBhbnkgZXJyb3JzIGl0IHRocm93cy4gVGhlIG90aGVyIG9wdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXJlIGFsbCB3b3JzZS4gRS5nLiwgd2UgY291bGQgbGVhdmUgYHF1ZXJ5Q29uZmlnLnZhbHVlc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW5kIGBxdWVyeUNvbmZpZy5uYW1lYCBhcyBgdW5rbm93bmAsIGJ1dCB0aGVuIHRoZSBob29rIGJvZHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd291bGQgYmUgZm9yY2VkIHRvIHZhbGlkYXRlIChvciBjYXN0KSB0aGVtIGJlZm9yZSB1c2luZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGVtLCB3aGljaCBzZWVtcyBpbmNyZWRpYmx5IGN1bWJlcnNvbWUgZ2l2ZW4gdGhhdCB0aGVzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXN0cyB3aWxsIGJlIGNvcnJlY3QgOTkuOSUgb2YgdGhlIHRpbWUgLS0gYW5kIHBnLnF1ZXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdpbGwgaW1tZWRpYXRlbHkgdGhyb3cgZHVyaW5nIGRldmVsb3BtZW50IGluIHRoZSBvdGhlciAuMSVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb2YgY2FzZXMuIEFsdGVybmF0aXZlbHksIHdlIGNvdWxkIHNpbXBseSBza2lwIGNhbGxpbmcgdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhvb2sgd2hlbiBgdmFsdWVzYCBvciBgbmFtZWAgZG9uJ3QgaGF2ZSB0aGUgZXhwZWN0ZWQgdHlwZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYnV0IHRoYXQgd291bGQgYWRkIHVubmVjZXNzYXJ5IHZhbGlkYXRpb24gb3ZlcmhlYWQgdG8gZXZlcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaG9vayBpbnZvY2F0aW9uIGFuZCBwb3NzaWJseSBiZSBldmVuIG1vcmUgY29uZnVzaW5nL3VuZXhwZWN0ZWQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlczogcXVlcnlDb25maWcudmFsdWVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBxdWVyeUNvbmZpZy5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSwgZXJyID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbHVnaW4uX2RpYWcuZXJyb3IoJ0Vycm9yIHJ1bm5pbmcgcXVlcnkgaG9vaycsIGVycik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sIHRydWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBsZXQgcmVzdWx0O1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IG9yaWdpbmFsLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzcGFuLnJlY29yZEV4Y2VwdGlvbih1dGlscy5zYW5pdGl6ZWRFcnJvck1lc3NhZ2UoZSkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHNwYW4uc2V0U3RhdHVzKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IGFwaV8xLlNwYW5TdGF0dXNDb2RlLkVSUk9SLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogdXRpbHMuZ2V0RXJyb3JNZXNzYWdlKGUpLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgc3Bhbi5lbmQoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gQmluZCBwcm9taXNlIHRvIHBhcmVudCBzcGFuIGFuZCBlbmQgdGhlIHNwYW5cbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0IGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAudGhlbigocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBSZXR1cm4gYSBwYXNzLWFsb25nIHByb21pc2Ugd2hpY2ggZW5kcyB0aGUgc3BhbiBhbmQgdGhlbiBnb2VzIHRvIHVzZXIncyBvcmlnIHJlc29sdmVyc1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHV0aWxzLmhhbmRsZUV4ZWN1dGlvblJlc3VsdChwbHVnaW4uZ2V0Q29uZmlnKCksIHNwYW4sIHJlc3VsdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3JkRHVyYXRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGFuLmVuZCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUocmVzdWx0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChfLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGFuLnJlY29yZEV4Y2VwdGlvbih1dGlscy5zYW5pdGl6ZWRFcnJvck1lc3NhZ2UoZXJyb3IpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Bhbi5zZXRTdGF0dXMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBhcGlfMS5TcGFuU3RhdHVzQ29kZS5FUlJPUixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogZXJyb3IubWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNvcmREdXJhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwYW4uZW5kKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gZWxzZSByZXR1cm5zIHZvaWRcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OyAvLyB2b2lkXG4gICAgICAgICAgICB9O1xuICAgICAgICB9O1xuICAgIH1cbiAgICBfc2V0UG9vbENvbm5lY3RFdmVudExpc3RlbmVycyhwZ1Bvb2wpIHtcbiAgICAgICAgaWYgKHBnUG9vbFtpbnRlcm5hbF90eXBlc18xLkVWRU5UX0xJU1RFTkVSU19TRVRdKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCBwb29sTmFtZSA9IHV0aWxzLmdldFBvb2xOYW1lKHBnUG9vbC5vcHRpb25zKTtcbiAgICAgICAgcGdQb29sLm9uKCdjb25uZWN0JywgKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fY29ubmVjdGlvbnNDb3VudGVyID0gdXRpbHMudXBkYXRlQ291bnRlcihwb29sTmFtZSwgcGdQb29sLCB0aGlzLl9jb25uZWN0aW9uc0NvdW50LCB0aGlzLl9jb25uZWN0aW9uUGVuZGluZ1JlcXVlc3RzLCB0aGlzLl9jb25uZWN0aW9uc0NvdW50ZXIpO1xuICAgICAgICB9KTtcbiAgICAgICAgcGdQb29sLm9uKCdhY3F1aXJlJywgKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fY29ubmVjdGlvbnNDb3VudGVyID0gdXRpbHMudXBkYXRlQ291bnRlcihwb29sTmFtZSwgcGdQb29sLCB0aGlzLl9jb25uZWN0aW9uc0NvdW50LCB0aGlzLl9jb25uZWN0aW9uUGVuZGluZ1JlcXVlc3RzLCB0aGlzLl9jb25uZWN0aW9uc0NvdW50ZXIpO1xuICAgICAgICB9KTtcbiAgICAgICAgcGdQb29sLm9uKCdyZW1vdmUnLCAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9jb25uZWN0aW9uc0NvdW50ZXIgPSB1dGlscy51cGRhdGVDb3VudGVyKHBvb2xOYW1lLCBwZ1Bvb2wsIHRoaXMuX2Nvbm5lY3Rpb25zQ291bnQsIHRoaXMuX2Nvbm5lY3Rpb25QZW5kaW5nUmVxdWVzdHMsIHRoaXMuX2Nvbm5lY3Rpb25zQ291bnRlcik7XG4gICAgICAgIH0pO1xuICAgICAgICBwZ1Bvb2wub24oJ3JlbGVhc2UnLCAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9jb25uZWN0aW9uc0NvdW50ZXIgPSB1dGlscy51cGRhdGVDb3VudGVyKHBvb2xOYW1lLCBwZ1Bvb2wsIHRoaXMuX2Nvbm5lY3Rpb25zQ291bnQsIHRoaXMuX2Nvbm5lY3Rpb25QZW5kaW5nUmVxdWVzdHMsIHRoaXMuX2Nvbm5lY3Rpb25zQ291bnRlcik7XG4gICAgICAgIH0pO1xuICAgICAgICBwZ1Bvb2xbaW50ZXJuYWxfdHlwZXNfMS5FVkVOVF9MSVNURU5FUlNfU0VUXSA9IHRydWU7XG4gICAgfVxuICAgIF9nZXRQb29sQ29ubmVjdFBhdGNoKCkge1xuICAgICAgICBjb25zdCBwbHVnaW4gPSB0aGlzO1xuICAgICAgICByZXR1cm4gKG9yaWdpbmFsQ29ubmVjdCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIGNvbm5lY3QoY2FsbGJhY2spIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjb25maWcgPSBwbHVnaW4uZ2V0Q29uZmlnKCk7XG4gICAgICAgICAgICAgICAgaWYgKHV0aWxzLnNob3VsZFNraXBJbnN0cnVtZW50YXRpb24oY29uZmlnKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3JpZ2luYWxDb25uZWN0LmNhbGwodGhpcywgY2FsbGJhY2spO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBTdGlsbCBzZXQgdXAgZXZlbnQgbGlzdGVuZXJzIGZvciBtZXRyaWNzIGV2ZW4gd2hlbiBza2lwcGluZyBzcGFuc1xuICAgICAgICAgICAgICAgIHBsdWdpbi5fc2V0UG9vbENvbm5lY3RFdmVudExpc3RlbmVycyh0aGlzKTtcbiAgICAgICAgICAgICAgICBpZiAoY29uZmlnLmlnbm9yZUNvbm5lY3RTcGFucykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3JpZ2luYWxDb25uZWN0LmNhbGwodGhpcywgY2FsbGJhY2spO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBzZXR1cCBzcGFuXG4gICAgICAgICAgICAgICAgY29uc3Qgc3BhbiA9IHBsdWdpbi50cmFjZXIuc3RhcnRTcGFuKFNwYW5OYW1lc18xLlNwYW5OYW1lcy5QT09MX0NPTk5FQ1QsIHtcbiAgICAgICAgICAgICAgICAgICAga2luZDogYXBpXzEuU3BhbktpbmQuQ0xJRU5ULFxuICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzOiB1dGlscy5nZXRTZW1hbnRpY0F0dHJpYnV0ZXNGcm9tUG9vbENvbm5lY3Rpb24odGhpcy5vcHRpb25zLCBwbHVnaW4uX3NlbWNvbnZTdGFiaWxpdHkpLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJlbnRTcGFuID0gYXBpXzEudHJhY2UuZ2V0U3BhbihhcGlfMS5jb250ZXh0LmFjdGl2ZSgpKTtcbiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2sgPSB1dGlscy5wYXRjaENhbGxiYWNrUEdQb29sKHNwYW4sIGNhbGxiYWNrKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gSWYgYSBwYXJlbnQgc3BhbiBleGlzdHMsIGJpbmQgdGhlIGNhbGxiYWNrXG4gICAgICAgICAgICAgICAgICAgIGlmIChwYXJlbnRTcGFuKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayA9IGFwaV8xLmNvbnRleHQuYmluZChhcGlfMS5jb250ZXh0LmFjdGl2ZSgpLCBjYWxsYmFjayk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgY29ubmVjdFJlc3VsdCA9IGFwaV8xLmNvbnRleHQud2l0aChhcGlfMS50cmFjZS5zZXRTcGFuKGFwaV8xLmNvbnRleHQuYWN0aXZlKCksIHNwYW4pLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvcmlnaW5hbENvbm5lY3QuY2FsbCh0aGlzLCBjYWxsYmFjayk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGhhbmRsZUNvbm5lY3RSZXN1bHQoc3BhbiwgY29ubmVjdFJlc3VsdCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9O1xuICAgIH1cbn1cbmV4cG9ydHMuUGdJbnN0cnVtZW50YXRpb24gPSBQZ0luc3RydW1lbnRhdGlvbjtcbmZ1bmN0aW9uIGhhbmRsZUNvbm5lY3RSZXN1bHQoc3BhbiwgY29ubmVjdFJlc3VsdCkge1xuICAgIGlmICghKGNvbm5lY3RSZXN1bHQgaW5zdGFuY2VvZiBQcm9taXNlKSkge1xuICAgICAgICByZXR1cm4gY29ubmVjdFJlc3VsdDtcbiAgICB9XG4gICAgY29uc3QgY29ubmVjdFJlc3VsdFByb21pc2UgPSBjb25uZWN0UmVzdWx0O1xuICAgIHJldHVybiBhcGlfMS5jb250ZXh0LmJpbmQoYXBpXzEuY29udGV4dC5hY3RpdmUoKSwgY29ubmVjdFJlc3VsdFByb21pc2VcbiAgICAgICAgLnRoZW4ocmVzdWx0ID0+IHtcbiAgICAgICAgc3Bhbi5lbmQoKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9KVxuICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgICAgICBzcGFuLnJlY29yZEV4Y2VwdGlvbih1dGlscy5zYW5pdGl6ZWRFcnJvck1lc3NhZ2UoZXJyb3IpKTtcbiAgICAgICAgfVxuICAgICAgICBzcGFuLnNldFN0YXR1cyh7XG4gICAgICAgICAgICBjb2RlOiBhcGlfMS5TcGFuU3RhdHVzQ29kZS5FUlJPUixcbiAgICAgICAgICAgIG1lc3NhZ2U6IHV0aWxzLmdldEVycm9yTWVzc2FnZShlcnJvciksXG4gICAgICAgIH0pO1xuICAgICAgICBzcGFuLmVuZCgpO1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IpO1xuICAgIH0pKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluc3RydW1lbnRhdGlvbi5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/.pnpm/@opentelemetry+instrumentation-pg@0.66.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-pg/build/src/instrumentation.js\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(ssr)/./node_modules/.pnpm/@opentelemetry+instrumentation-pg@0.66.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-pg/build/src/internal-types.js":
|
|
/*!*************************************************************************************************************************************************************************!*\
|
|
!*** ./node_modules/.pnpm/@opentelemetry+instrumentation-pg@0.66.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-pg/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.EVENT_LISTENERS_SET = void 0;\nexports.EVENT_LISTENERS_SET = Symbol('opentelemetry.instrumentation.pg.eventListenersSet');\n//# sourceMappingURL=internal-types.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvLnBucG0vQG9wZW50ZWxlbWV0cnkraW5zdHJ1bWVudGF0aW9uLXBnQDAuNjYuMF9Ab3BlbnRlbGVtZXRyeSthcGlAMS45LjEvbm9kZV9tb2R1bGVzL0BvcGVudGVsZW1ldHJ5L2luc3RydW1lbnRhdGlvbi1wZy9idWlsZC9zcmMvaW50ZXJuYWwtdHlwZXMuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4Q0FBNkMsRUFBRSxhQUFhLEVBQUM7QUFDN0QsMkJBQTJCO0FBQzNCLDJCQUEyQjtBQUMzQiIsInNvdXJjZXMiOlsiL1VzZXJzL21hcmNtaW50ZWwvUHJvamVjdHMvZS10aWIuY29tL25vZGVfbW9kdWxlcy8ucG5wbS9Ab3BlbnRlbGVtZXRyeStpbnN0cnVtZW50YXRpb24tcGdAMC42Ni4wX0BvcGVudGVsZW1ldHJ5K2FwaUAxLjkuMS9ub2RlX21vZHVsZXMvQG9wZW50ZWxlbWV0cnkvaW5zdHJ1bWVudGF0aW9uLXBnL2J1aWxkL3NyYy9pbnRlcm5hbC10eXBlcy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbi8qXG4gKiBDb3B5cmlnaHQgVGhlIE9wZW5UZWxlbWV0cnkgQXV0aG9yc1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHBzOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLkVWRU5UX0xJU1RFTkVSU19TRVQgPSB2b2lkIDA7XG5leHBvcnRzLkVWRU5UX0xJU1RFTkVSU19TRVQgPSBTeW1ib2woJ29wZW50ZWxlbWV0cnkuaW5zdHJ1bWVudGF0aW9uLnBnLmV2ZW50TGlzdGVuZXJzU2V0Jyk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbnRlcm5hbC10eXBlcy5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/.pnpm/@opentelemetry+instrumentation-pg@0.66.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-pg/build/src/internal-types.js\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(ssr)/./node_modules/.pnpm/@opentelemetry+instrumentation-pg@0.66.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-pg/build/src/semconv.js":
|
|
/*!******************************************************************************************************************************************************************!*\
|
|
!*** ./node_modules/.pnpm/@opentelemetry+instrumentation-pg@0.66.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-pg/build/src/semconv.js ***!
|
|
\******************************************************************************************************************************************************************/
|
|
/***/ ((__unused_webpack_module, exports) => {
|
|
|
|
eval("\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.METRIC_DB_CLIENT_CONNECTION_PENDING_REQUESTS = exports.METRIC_DB_CLIENT_CONNECTION_COUNT = exports.DB_SYSTEM_VALUE_POSTGRESQL = exports.DB_CLIENT_CONNECTION_STATE_VALUE_USED = exports.DB_CLIENT_CONNECTION_STATE_VALUE_IDLE = exports.ATTR_NET_PEER_PORT = exports.ATTR_NET_PEER_NAME = exports.ATTR_DB_USER = exports.ATTR_DB_SYSTEM = exports.ATTR_DB_STATEMENT = exports.ATTR_DB_NAME = exports.ATTR_DB_CONNECTION_STRING = exports.ATTR_DB_CLIENT_CONNECTION_STATE = exports.ATTR_DB_CLIENT_CONNECTION_POOL_NAME = void 0;\n/*\n * This file contains a copy of unstable semantic convention definitions\n * used by this package.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n/**\n * The name of the connection pool; unique within the instrumented application. In case the connection pool implementation doesn't provide a name, instrumentation **SHOULD** use a combination of parameters that would make the name unique, for example, combining attributes `server.address`, `server.port`, and `db.namespace`, formatted as `server.address:server.port/db.namespace`. Instrumentations that generate connection pool name following different patterns **SHOULD** document it.\n *\n * @example myDataSource\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_DB_CLIENT_CONNECTION_POOL_NAME = 'db.client.connection.pool.name';\n/**\n * The state of a connection in the pool\n *\n * @example idle\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.ATTR_DB_CLIENT_CONNECTION_STATE = 'db.client.connection.state';\n/**\n * Deprecated, use `server.address`, `server.port` attributes instead.\n *\n * @example \"Server=(localdb)\\\\v11.0;Integrated Security=true;\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` and `server.port`.\n */\nexports.ATTR_DB_CONNECTION_STRING = 'db.connection_string';\n/**\n * Deprecated, use `db.namespace` instead.\n *\n * @example customers\n * @example main\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.namespace`.\n */\nexports.ATTR_DB_NAME = 'db.name';\n/**\n * The database statement being executed.\n *\n * @example SELECT * FROM wuser_table\n * @example SET mykey \"WuValue\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.query.text`.\n */\nexports.ATTR_DB_STATEMENT = 'db.statement';\n/**\n * Deprecated, use `db.system.name` instead.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.system.name`.\n */\nexports.ATTR_DB_SYSTEM = 'db.system';\n/**\n * Deprecated, no replacement at this time.\n *\n * @example readonly_user\n * @example reporting_user\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Removed, no replacement at this time.\n */\nexports.ATTR_DB_USER = 'db.user';\n/**\n * Deprecated, use `server.address` on client spans and `client.address` on server spans.\n *\n * @example example.com\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` on client spans and `client.address` on server spans.\n */\nexports.ATTR_NET_PEER_NAME = 'net.peer.name';\n/**\n * Deprecated, use `server.port` on client spans and `client.port` on server spans.\n *\n * @example 8080\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.port` on client spans and `client.port` on server spans.\n */\nexports.ATTR_NET_PEER_PORT = 'net.peer.port';\n/**\n * Enum value \"idle\" for attribute {@link ATTR_DB_CLIENT_CONNECTION_STATE}.\n */\nexports.DB_CLIENT_CONNECTION_STATE_VALUE_IDLE = 'idle';\n/**\n * Enum value \"used\" for attribute {@link ATTR_DB_CLIENT_CONNECTION_STATE}.\n */\nexports.DB_CLIENT_CONNECTION_STATE_VALUE_USED = 'used';\n/**\n * Enum value \"postgresql\" for attribute {@link ATTR_DB_SYSTEM}.\n */\nexports.DB_SYSTEM_VALUE_POSTGRESQL = 'postgresql';\n/**\n * The number of connections that are currently in state described by the `state` attribute\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.METRIC_DB_CLIENT_CONNECTION_COUNT = 'db.client.connection.count';\n/**\n * The number of current pending requests for an open connection\n *\n * @experimental This metric is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexports.METRIC_DB_CLIENT_CONNECTION_PENDING_REQUESTS = 'db.client.connection.pending_requests';\n//# sourceMappingURL=semconv.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvLnBucG0vQG9wZW50ZWxlbWV0cnkraW5zdHJ1bWVudGF0aW9uLXBnQDAuNjYuMF9Ab3BlbnRlbGVtZXRyeSthcGlAMS45LjEvbm9kZV9tb2R1bGVzL0BvcGVudGVsZW1ldHJ5L2luc3RydW1lbnRhdGlvbi1wZy9idWlsZC9zcmMvc2VtY29udi5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhDQUE2QyxFQUFFLGFBQWEsRUFBQztBQUM3RCxvREFBb0QsR0FBRyx5Q0FBeUMsR0FBRyxrQ0FBa0MsR0FBRyw2Q0FBNkMsR0FBRyw2Q0FBNkMsR0FBRywwQkFBMEIsR0FBRywwQkFBMEIsR0FBRyxvQkFBb0IsR0FBRyxzQkFBc0IsR0FBRyx5QkFBeUIsR0FBRyxvQkFBb0IsR0FBRyxpQ0FBaUMsR0FBRyx1Q0FBdUMsR0FBRywyQ0FBMkM7QUFDOWY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0NBQW9DO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkM7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1Q0FBdUM7QUFDdkM7QUFDQTtBQUNBO0FBQ0EscUNBQXFDLHlCQUF5QjtBQUM5RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQjtBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEI7QUFDMUI7QUFDQSxvQ0FBb0Msc0NBQXNDO0FBQzFFO0FBQ0EsNkNBQTZDO0FBQzdDO0FBQ0Esb0NBQW9DLHNDQUFzQztBQUMxRTtBQUNBLDZDQUE2QztBQUM3QztBQUNBLDBDQUEwQyxxQkFBcUI7QUFDL0Q7QUFDQSxrQ0FBa0M7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlDQUF5QztBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0RBQW9EO0FBQ3BEIiwic291cmNlcyI6WyIvVXNlcnMvbWFyY21pbnRlbC9Qcm9qZWN0cy9lLXRpYi5jb20vbm9kZV9tb2R1bGVzLy5wbnBtL0BvcGVudGVsZW1ldHJ5K2luc3RydW1lbnRhdGlvbi1wZ0AwLjY2LjBfQG9wZW50ZWxlbWV0cnkrYXBpQDEuOS4xL25vZGVfbW9kdWxlcy9Ab3BlbnRlbGVtZXRyeS9pbnN0cnVtZW50YXRpb24tcGcvYnVpbGQvc3JjL3NlbWNvbnYuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG4vKlxuICogQ29weXJpZ2h0IFRoZSBPcGVuVGVsZW1ldHJ5IEF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5NRVRSSUNfREJfQ0xJRU5UX0NPTk5FQ1RJT05fUEVORElOR19SRVFVRVNUUyA9IGV4cG9ydHMuTUVUUklDX0RCX0NMSUVOVF9DT05ORUNUSU9OX0NPVU5UID0gZXhwb3J0cy5EQl9TWVNURU1fVkFMVUVfUE9TVEdSRVNRTCA9IGV4cG9ydHMuREJfQ0xJRU5UX0NPTk5FQ1RJT05fU1RBVEVfVkFMVUVfVVNFRCA9IGV4cG9ydHMuREJfQ0xJRU5UX0NPTk5FQ1RJT05fU1RBVEVfVkFMVUVfSURMRSA9IGV4cG9ydHMuQVRUUl9ORVRfUEVFUl9QT1JUID0gZXhwb3J0cy5BVFRSX05FVF9QRUVSX05BTUUgPSBleHBvcnRzLkFUVFJfREJfVVNFUiA9IGV4cG9ydHMuQVRUUl9EQl9TWVNURU0gPSBleHBvcnRzLkFUVFJfREJfU1RBVEVNRU5UID0gZXhwb3J0cy5BVFRSX0RCX05BTUUgPSBleHBvcnRzLkFUVFJfREJfQ09OTkVDVElPTl9TVFJJTkcgPSBleHBvcnRzLkFUVFJfREJfQ0xJRU5UX0NPTk5FQ1RJT05fU1RBVEUgPSBleHBvcnRzLkFUVFJfREJfQ0xJRU5UX0NPTk5FQ1RJT05fUE9PTF9OQU1FID0gdm9pZCAwO1xuLypcbiAqIFRoaXMgZmlsZSBjb250YWlucyBhIGNvcHkgb2YgdW5zdGFibGUgc2VtYW50aWMgY29udmVudGlvbiBkZWZpbml0aW9uc1xuICogdXNlZCBieSB0aGlzIHBhY2thZ2UuXG4gKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXRlbGVtZXRyeS9vcGVudGVsZW1ldHJ5LWpzL3RyZWUvbWFpbi9zZW1hbnRpYy1jb252ZW50aW9ucyN1bnN0YWJsZS1zZW1jb252XG4gKi9cbi8qKlxuICogVGhlIG5hbWUgb2YgdGhlIGNvbm5lY3Rpb24gcG9vbDsgdW5pcXVlIHdpdGhpbiB0aGUgaW5zdHJ1bWVudGVkIGFwcGxpY2F0aW9uLiBJbiBjYXNlIHRoZSBjb25uZWN0aW9uIHBvb2wgaW1wbGVtZW50YXRpb24gZG9lc24ndCBwcm92aWRlIGEgbmFtZSwgaW5zdHJ1bWVudGF0aW9uICoqU0hPVUxEKiogdXNlIGEgY29tYmluYXRpb24gb2YgcGFyYW1ldGVycyB0aGF0IHdvdWxkIG1ha2UgdGhlIG5hbWUgdW5pcXVlLCBmb3IgZXhhbXBsZSwgY29tYmluaW5nIGF0dHJpYnV0ZXMgYHNlcnZlci5hZGRyZXNzYCwgYHNlcnZlci5wb3J0YCwgYW5kIGBkYi5uYW1lc3BhY2VgLCBmb3JtYXR0ZWQgYXMgYHNlcnZlci5hZGRyZXNzOnNlcnZlci5wb3J0L2RiLm5hbWVzcGFjZWAuIEluc3RydW1lbnRhdGlvbnMgdGhhdCBnZW5lcmF0ZSBjb25uZWN0aW9uIHBvb2wgbmFtZSBmb2xsb3dpbmcgZGlmZmVyZW50IHBhdHRlcm5zICoqU0hPVUxEKiogZG9jdW1lbnQgaXQuXG4gKlxuICogQGV4YW1wbGUgbXlEYXRhU291cmNlXG4gKlxuICogQGV4cGVyaW1lbnRhbCBUaGlzIGF0dHJpYnV0ZSBpcyBleHBlcmltZW50YWwgYW5kIGlzIHN1YmplY3QgdG8gYnJlYWtpbmcgY2hhbmdlcyBpbiBtaW5vciByZWxlYXNlcyBvZiBgQG9wZW50ZWxlbWV0cnkvc2VtYW50aWMtY29udmVudGlvbnNgLlxuICovXG5leHBvcnRzLkFUVFJfREJfQ0xJRU5UX0NPTk5FQ1RJT05fUE9PTF9OQU1FID0gJ2RiLmNsaWVudC5jb25uZWN0aW9uLnBvb2wubmFtZSc7XG4vKipcbiAqIFRoZSBzdGF0ZSBvZiBhIGNvbm5lY3Rpb24gaW4gdGhlIHBvb2xcbiAqXG4gKiBAZXhhbXBsZSBpZGxlXG4gKlxuICogQGV4cGVyaW1lbnRhbCBUaGlzIGF0dHJpYnV0ZSBpcyBleHBlcmltZW50YWwgYW5kIGlzIHN1YmplY3QgdG8gYnJlYWtpbmcgY2hhbmdlcyBpbiBtaW5vciByZWxlYXNlcyBvZiBgQG9wZW50ZWxlbWV0cnkvc2VtYW50aWMtY29udmVudGlvbnNgLlxuICovXG5leHBvcnRzLkFUVFJfREJfQ0xJRU5UX0NPTk5FQ1RJT05fU1RBVEUgPSAnZGIuY2xpZW50LmNvbm5lY3Rpb24uc3RhdGUnO1xuLyoqXG4gKiBEZXByZWNhdGVkLCB1c2UgYHNlcnZlci5hZGRyZXNzYCwgYHNlcnZlci5wb3J0YCBhdHRyaWJ1dGVzIGluc3RlYWQuXG4gKlxuICogQGV4YW1wbGUgXCJTZXJ2ZXI9KGxvY2FsZGIpXFxcXHYxMS4wO0ludGVncmF0ZWQgU2VjdXJpdHk9dHJ1ZTtcIlxuICpcbiAqIEBleHBlcmltZW50YWwgVGhpcyBhdHRyaWJ1dGUgaXMgZXhwZXJpbWVudGFsIGFuZCBpcyBzdWJqZWN0IHRvIGJyZWFraW5nIGNoYW5nZXMgaW4gbWlub3IgcmVsZWFzZXMgb2YgYEBvcGVudGVsZW1ldHJ5L3NlbWFudGljLWNvbnZlbnRpb25zYC5cbiAqXG4gKiBAZGVwcmVjYXRlZCBSZXBsYWNlZCBieSBgc2VydmVyLmFkZHJlc3NgIGFuZCBgc2VydmVyLnBvcnRgLlxuICovXG5leHBvcnRzLkFUVFJfREJfQ09OTkVDVElPTl9TVFJJTkcgPSAnZGIuY29ubmVjdGlvbl9zdHJpbmcnO1xuLyoqXG4gKiBEZXByZWNhdGVkLCB1c2UgYGRiLm5hbWVzcGFjZWAgaW5zdGVhZC5cbiAqXG4gKiBAZXhhbXBsZSBjdXN0b21lcnNcbiAqIEBleGFtcGxlIG1haW5cbiAqXG4gKiBAZXhwZXJpbWVudGFsIFRoaXMgYXR0cmlidXRlIGlzIGV4cGVyaW1lbnRhbCBhbmQgaXMgc3ViamVjdCB0byBicmVha2luZyBjaGFuZ2VzIGluIG1pbm9yIHJlbGVhc2VzIG9mIGBAb3BlbnRlbGVtZXRyeS9zZW1hbnRpYy1jb252ZW50aW9uc2AuXG4gKlxuICogQGRlcHJlY2F0ZWQgUmVwbGFjZWQgYnkgYGRiLm5hbWVzcGFjZWAuXG4gKi9cbmV4cG9ydHMuQVRUUl9EQl9OQU1FID0gJ2RiLm5hbWUnO1xuLyoqXG4gKiBUaGUgZGF0YWJhc2Ugc3RhdGVtZW50IGJlaW5nIGV4ZWN1dGVkLlxuICpcbiAqIEBleGFtcGxlIFNFTEVDVCAqIEZST00gd3VzZXJfdGFibGVcbiAqIEBleGFtcGxlIFNFVCBteWtleSBcIld1VmFsdWVcIlxuICpcbiAqIEBleHBlcmltZW50YWwgVGhpcyBhdHRyaWJ1dGUgaXMgZXhwZXJpbWVudGFsIGFuZCBpcyBzdWJqZWN0IHRvIGJyZWFraW5nIGNoYW5nZXMgaW4gbWlub3IgcmVsZWFzZXMgb2YgYEBvcGVudGVsZW1ldHJ5L3NlbWFudGljLWNvbnZlbnRpb25zYC5cbiAqXG4gKiBAZGVwcmVjYXRlZCBSZXBsYWNlZCBieSBgZGIucXVlcnkudGV4dGAuXG4gKi9cbmV4cG9ydHMuQVRUUl9EQl9TVEFURU1FTlQgPSAnZGIuc3RhdGVtZW50Jztcbi8qKlxuICogRGVwcmVjYXRlZCwgdXNlIGBkYi5zeXN0ZW0ubmFtZWAgaW5zdGVhZC5cbiAqXG4gKiBAZXhwZXJpbWVudGFsIFRoaXMgYXR0cmlidXRlIGlzIGV4cGVyaW1lbnRhbCBhbmQgaXMgc3ViamVjdCB0byBicmVha2luZyBjaGFuZ2VzIGluIG1pbm9yIHJlbGVhc2VzIG9mIGBAb3BlbnRlbGVtZXRyeS9zZW1hbnRpYy1jb252ZW50aW9uc2AuXG4gKlxuICogQGRlcHJlY2F0ZWQgUmVwbGFjZWQgYnkgYGRiLnN5c3RlbS5uYW1lYC5cbiAqL1xuZXhwb3J0cy5BVFRSX0RCX1NZU1RFTSA9ICdkYi5zeXN0ZW0nO1xuLyoqXG4gKiBEZXByZWNhdGVkLCBubyByZXBsYWNlbWVudCBhdCB0aGlzIHRpbWUuXG4gKlxuICogQGV4YW1wbGUgcmVhZG9ubHlfdXNlclxuICogQGV4YW1wbGUgcmVwb3J0aW5nX3VzZXJcbiAqXG4gKiBAZXhwZXJpbWVudGFsIFRoaXMgYXR0cmlidXRlIGlzIGV4cGVyaW1lbnRhbCBhbmQgaXMgc3ViamVjdCB0byBicmVha2luZyBjaGFuZ2VzIGluIG1pbm9yIHJlbGVhc2VzIG9mIGBAb3BlbnRlbGVtZXRyeS9zZW1hbnRpYy1jb252ZW50aW9uc2AuXG4gKlxuICogQGRlcHJlY2F0ZWQgUmVtb3ZlZCwgbm8gcmVwbGFjZW1lbnQgYXQgdGhpcyB0aW1lLlxuICovXG5leHBvcnRzLkFUVFJfREJfVVNFUiA9ICdkYi51c2VyJztcbi8qKlxuICogRGVwcmVjYXRlZCwgdXNlIGBzZXJ2ZXIuYWRkcmVzc2Agb24gY2xpZW50IHNwYW5zIGFuZCBgY2xpZW50LmFkZHJlc3NgIG9uIHNlcnZlciBzcGFucy5cbiAqXG4gKiBAZXhhbXBsZSBleGFtcGxlLmNvbVxuICpcbiAqIEBleHBlcmltZW50YWwgVGhpcyBhdHRyaWJ1dGUgaXMgZXhwZXJpbWVudGFsIGFuZCBpcyBzdWJqZWN0IHRvIGJyZWFraW5nIGNoYW5nZXMgaW4gbWlub3IgcmVsZWFzZXMgb2YgYEBvcGVudGVsZW1ldHJ5L3NlbWFudGljLWNvbnZlbnRpb25zYC5cbiAqXG4gKiBAZGVwcmVjYXRlZCBSZXBsYWNlZCBieSBgc2VydmVyLmFkZHJlc3NgIG9uIGNsaWVudCBzcGFucyBhbmQgYGNsaWVudC5hZGRyZXNzYCBvbiBzZXJ2ZXIgc3BhbnMuXG4gKi9cbmV4cG9ydHMuQVRUUl9ORVRfUEVFUl9OQU1FID0gJ25ldC5wZWVyLm5hbWUnO1xuLyoqXG4gKiBEZXByZWNhdGVkLCB1c2UgYHNlcnZlci5wb3J0YCBvbiBjbGllbnQgc3BhbnMgYW5kIGBjbGllbnQucG9ydGAgb24gc2VydmVyIHNwYW5zLlxuICpcbiAqIEBleGFtcGxlIDgwODBcbiAqXG4gKiBAZXhwZXJpbWVudGFsIFRoaXMgYXR0cmlidXRlIGlzIGV4cGVyaW1lbnRhbCBhbmQgaXMgc3ViamVjdCB0byBicmVha2luZyBjaGFuZ2VzIGluIG1pbm9yIHJlbGVhc2VzIG9mIGBAb3BlbnRlbGVtZXRyeS9zZW1hbnRpYy1jb252ZW50aW9uc2AuXG4gKlxuICogQGRlcHJlY2F0ZWQgUmVwbGFjZWQgYnkgYHNlcnZlci5wb3J0YCBvbiBjbGllbnQgc3BhbnMgYW5kIGBjbGllbnQucG9ydGAgb24gc2VydmVyIHNwYW5zLlxuICovXG5leHBvcnRzLkFUVFJfTkVUX1BFRVJfUE9SVCA9ICduZXQucGVlci5wb3J0Jztcbi8qKlxuICogRW51bSB2YWx1ZSBcImlkbGVcIiBmb3IgYXR0cmlidXRlIHtAbGluayBBVFRSX0RCX0NMSUVOVF9DT05ORUNUSU9OX1NUQVRFfS5cbiAqL1xuZXhwb3J0cy5EQl9DTElFTlRfQ09OTkVDVElPTl9TVEFURV9WQUxVRV9JRExFID0gJ2lkbGUnO1xuLyoqXG4gKiBFbnVtIHZhbHVlIFwidXNlZFwiIGZvciBhdHRyaWJ1dGUge0BsaW5rIEFUVFJfREJfQ0xJRU5UX0NPTk5FQ1RJT05fU1RBVEV9LlxuICovXG5leHBvcnRzLkRCX0NMSUVOVF9DT05ORUNUSU9OX1NUQVRFX1ZBTFVFX1VTRUQgPSAndXNlZCc7XG4vKipcbiAqIEVudW0gdmFsdWUgXCJwb3N0Z3Jlc3FsXCIgZm9yIGF0dHJpYnV0ZSB7QGxpbmsgQVRUUl9EQl9TWVNURU19LlxuICovXG5leHBvcnRzLkRCX1NZU1RFTV9WQUxVRV9QT1NUR1JFU1FMID0gJ3Bvc3RncmVzcWwnO1xuLyoqXG4gKiBUaGUgbnVtYmVyIG9mIGNvbm5lY3Rpb25zIHRoYXQgYXJlIGN1cnJlbnRseSBpbiBzdGF0ZSBkZXNjcmliZWQgYnkgdGhlIGBzdGF0ZWAgYXR0cmlidXRlXG4gKlxuICogQGV4cGVyaW1lbnRhbCBUaGlzIG1ldHJpYyBpcyBleHBlcmltZW50YWwgYW5kIGlzIHN1YmplY3QgdG8gYnJlYWtpbmcgY2hhbmdlcyBpbiBtaW5vciByZWxlYXNlcyBvZiBgQG9wZW50ZWxlbWV0cnkvc2VtYW50aWMtY29udmVudGlvbnNgLlxuICovXG5leHBvcnRzLk1FVFJJQ19EQl9DTElFTlRfQ09OTkVDVElPTl9DT1VOVCA9ICdkYi5jbGllbnQuY29ubmVjdGlvbi5jb3VudCc7XG4vKipcbiAqIFRoZSBudW1iZXIgb2YgY3VycmVudCBwZW5kaW5nIHJlcXVlc3RzIGZvciBhbiBvcGVuIGNvbm5lY3Rpb25cbiAqXG4gKiBAZXhwZXJpbWVudGFsIFRoaXMgbWV0cmljIGlzIGV4cGVyaW1lbnRhbCBhbmQgaXMgc3ViamVjdCB0byBicmVha2luZyBjaGFuZ2VzIGluIG1pbm9yIHJlbGVhc2VzIG9mIGBAb3BlbnRlbGVtZXRyeS9zZW1hbnRpYy1jb252ZW50aW9uc2AuXG4gKi9cbmV4cG9ydHMuTUVUUklDX0RCX0NMSUVOVF9DT05ORUNUSU9OX1BFTkRJTkdfUkVRVUVTVFMgPSAnZGIuY2xpZW50LmNvbm5lY3Rpb24ucGVuZGluZ19yZXF1ZXN0cyc7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1zZW1jb252LmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/.pnpm/@opentelemetry+instrumentation-pg@0.66.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-pg/build/src/semconv.js\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(ssr)/./node_modules/.pnpm/@opentelemetry+instrumentation-pg@0.66.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-pg/build/src/utils.js":
|
|
/*!****************************************************************************************************************************************************************!*\
|
|
!*** ./node_modules/.pnpm/@opentelemetry+instrumentation-pg@0.66.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-pg/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.sanitizedErrorMessage = exports.isObjectWithTextString = exports.getErrorMessage = exports.patchClientConnectCallback = exports.patchCallbackPGPool = exports.updateCounter = exports.getPoolName = exports.patchCallback = exports.handleExecutionResult = exports.handleConfigQuery = exports.shouldSkipInstrumentation = exports.getSemanticAttributesFromPoolConnection = exports.getSemanticAttributesFromConnection = exports.getConnectionString = exports.parseAndMaskConnectionString = exports.parseNormalizedOperationName = exports.getQuerySpanName = void 0;\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 AttributeNames_1 = __webpack_require__(/*! ./enums/AttributeNames */ \"(ssr)/./node_modules/.pnpm/@opentelemetry+instrumentation-pg@0.66.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-pg/build/src/enums/AttributeNames.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 semconv_1 = __webpack_require__(/*! ./semconv */ \"(ssr)/./node_modules/.pnpm/@opentelemetry+instrumentation-pg@0.66.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-pg/build/src/semconv.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 SpanNames_1 = __webpack_require__(/*! ./enums/SpanNames */ \"(ssr)/./node_modules/.pnpm/@opentelemetry+instrumentation-pg@0.66.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-pg/build/src/enums/SpanNames.js\");\n/**\n * Helper function to get a low cardinality span name from whatever info we have\n * about the query.\n *\n * This is tricky, because we don't have most of the information (table name,\n * operation name, etc) the spec recommends using to build a low-cardinality\n * value w/o parsing. So, we use db.name and assume that, if the query's a named\n * prepared statement, those `name` values will be low cardinality. If we don't\n * have a named prepared statement, we try to parse an operation (despite the\n * spec's warnings).\n *\n * @params dbName The name of the db against which this query is being issued,\n * which could be missing if no db name was given at the time that the\n * connection was established.\n * @params queryConfig Information we have about the query being issued, typed\n * to reflect only the validation we've actually done on the args to\n * `client.query()`. This will be undefined if `client.query()` was called\n * with invalid arguments.\n */\nfunction getQuerySpanName(dbName, queryConfig) {\n // NB: when the query config is invalid, we omit the dbName too, so that\n // someone (or some tool) reading the span name doesn't misinterpret the\n // dbName as being a prepared statement or sql commit name.\n if (!queryConfig)\n return SpanNames_1.SpanNames.QUERY_PREFIX;\n // Either the name of a prepared statement; or an attempted parse\n // of the SQL command, normalized to uppercase; or unknown.\n const command = typeof queryConfig.name === 'string' && queryConfig.name\n ? queryConfig.name\n : parseNormalizedOperationName(queryConfig.text);\n return `${SpanNames_1.SpanNames.QUERY_PREFIX}:${command}${dbName ? ` ${dbName}` : ''}`;\n}\nexports.getQuerySpanName = getQuerySpanName;\nfunction parseNormalizedOperationName(queryText) {\n // Trim the query text to handle leading/trailing whitespace\n const trimmedQuery = queryText.trim();\n const indexOfFirstSpace = trimmedQuery.indexOf(' ');\n let sqlCommand = indexOfFirstSpace === -1\n ? trimmedQuery\n : trimmedQuery.slice(0, indexOfFirstSpace);\n sqlCommand = sqlCommand.toUpperCase();\n // Handle query text being \"COMMIT;\", which has an extra semicolon before the space.\n return sqlCommand.endsWith(';') ? sqlCommand.slice(0, -1) : sqlCommand;\n}\nexports.parseNormalizedOperationName = parseNormalizedOperationName;\nfunction parseAndMaskConnectionString(connectionString) {\n try {\n // Parse the connection string\n const url = new URL(connectionString);\n // Remove all auth information (username and password)\n url.username = '';\n url.password = '';\n return url.toString();\n }\n catch (e) {\n // If parsing fails, return a generic connection string\n return 'postgresql://localhost:5432/';\n }\n}\nexports.parseAndMaskConnectionString = parseAndMaskConnectionString;\nfunction getConnectionString(params) {\n if ('connectionString' in params && params.connectionString) {\n return parseAndMaskConnectionString(params.connectionString);\n }\n const host = params.host || 'localhost';\n const port = params.port || 5432;\n const database = params.database || '';\n return `postgresql://${host}:${port}/${database}`;\n}\nexports.getConnectionString = getConnectionString;\nfunction getPort(port) {\n // Port may be NaN as parseInt() is used on the value, passing null will result in NaN being parsed.\n // https://github.com/brianc/node-postgres/blob/2a8efbee09a284be12748ed3962bc9b816965e36/packages/pg/lib/connection-parameters.js#L66\n if (Number.isInteger(port)) {\n return port;\n }\n // Unable to find the default used in pg code, so falling back to 'undefined'.\n return undefined;\n}\nfunction getSemanticAttributesFromConnection(params, semconvStability) {\n let attributes = {};\n if (semconvStability & instrumentation_1.SemconvStability.OLD) {\n attributes = {\n ...attributes,\n [semconv_1.ATTR_DB_SYSTEM]: semconv_1.DB_SYSTEM_VALUE_POSTGRESQL,\n [semconv_1.ATTR_DB_NAME]: params.database,\n [semconv_1.ATTR_DB_CONNECTION_STRING]: getConnectionString(params),\n [semconv_1.ATTR_DB_USER]: params.user,\n [semconv_1.ATTR_NET_PEER_NAME]: params.host,\n [semconv_1.ATTR_NET_PEER_PORT]: getPort(params.port),\n };\n }\n if (semconvStability & instrumentation_1.SemconvStability.STABLE) {\n attributes = {\n ...attributes,\n [semantic_conventions_1.ATTR_DB_SYSTEM_NAME]: semantic_conventions_1.DB_SYSTEM_NAME_VALUE_POSTGRESQL,\n [semantic_conventions_1.ATTR_DB_NAMESPACE]: params.namespace,\n [semantic_conventions_1.ATTR_SERVER_ADDRESS]: params.host,\n [semantic_conventions_1.ATTR_SERVER_PORT]: getPort(params.port),\n };\n }\n return attributes;\n}\nexports.getSemanticAttributesFromConnection = getSemanticAttributesFromConnection;\nfunction getSemanticAttributesFromPoolConnection(params, semconvStability) {\n let url;\n try {\n url = params.connectionString\n ? new URL(params.connectionString)\n : undefined;\n }\n catch (e) {\n url = undefined;\n }\n let attributes = {\n [AttributeNames_1.AttributeNames.IDLE_TIMEOUT_MILLIS]: params.idleTimeoutMillis,\n [AttributeNames_1.AttributeNames.MAX_CLIENT]: params.maxClient,\n };\n if (semconvStability & instrumentation_1.SemconvStability.OLD) {\n attributes = {\n ...attributes,\n [semconv_1.ATTR_DB_SYSTEM]: semconv_1.DB_SYSTEM_VALUE_POSTGRESQL,\n [semconv_1.ATTR_DB_NAME]: url?.pathname.slice(1) ?? params.database,\n [semconv_1.ATTR_DB_CONNECTION_STRING]: getConnectionString(params),\n [semconv_1.ATTR_NET_PEER_NAME]: url?.hostname ?? params.host,\n [semconv_1.ATTR_NET_PEER_PORT]: Number(url?.port) || getPort(params.port),\n [semconv_1.ATTR_DB_USER]: url?.username ?? params.user,\n };\n }\n if (semconvStability & instrumentation_1.SemconvStability.STABLE) {\n attributes = {\n ...attributes,\n [semantic_conventions_1.ATTR_DB_SYSTEM_NAME]: semantic_conventions_1.DB_SYSTEM_NAME_VALUE_POSTGRESQL,\n [semantic_conventions_1.ATTR_DB_NAMESPACE]: params.namespace,\n [semantic_conventions_1.ATTR_SERVER_ADDRESS]: url?.hostname ?? params.host,\n [semantic_conventions_1.ATTR_SERVER_PORT]: Number(url?.port) || getPort(params.port),\n };\n }\n return attributes;\n}\nexports.getSemanticAttributesFromPoolConnection = getSemanticAttributesFromPoolConnection;\nfunction shouldSkipInstrumentation(instrumentationConfig) {\n return (instrumentationConfig.requireParentSpan === true &&\n api_1.trace.getSpan(api_1.context.active()) === undefined);\n}\nexports.shouldSkipInstrumentation = shouldSkipInstrumentation;\n// Create a span from our normalized queryConfig object,\n// or return a basic span if no queryConfig was given/could be created.\nfunction handleConfigQuery(tracer, instrumentationConfig, semconvStability, queryConfig) {\n // Create child span.\n const { connectionParameters } = this;\n const dbName = connectionParameters.database;\n const spanName = getQuerySpanName(dbName, queryConfig);\n const span = tracer.startSpan(spanName, {\n kind: api_1.SpanKind.CLIENT,\n attributes: getSemanticAttributesFromConnection(connectionParameters, semconvStability),\n });\n if (!queryConfig) {\n return span;\n }\n // Set attributes\n if (queryConfig.text) {\n if (semconvStability & instrumentation_1.SemconvStability.OLD) {\n span.setAttribute(semconv_1.ATTR_DB_STATEMENT, queryConfig.text);\n }\n if (semconvStability & instrumentation_1.SemconvStability.STABLE) {\n span.setAttribute(semantic_conventions_1.ATTR_DB_QUERY_TEXT, queryConfig.text);\n }\n }\n if (instrumentationConfig.enhancedDatabaseReporting &&\n Array.isArray(queryConfig.values)) {\n try {\n const convertedValues = queryConfig.values.map(value => {\n if (value == null) {\n return 'null';\n }\n else if (value instanceof Buffer) {\n return value.toString();\n }\n else if (typeof value === 'object') {\n if (typeof value.toPostgres === 'function') {\n return value.toPostgres();\n }\n return JSON.stringify(value);\n }\n else {\n //string, number\n return value.toString();\n }\n });\n span.setAttribute(AttributeNames_1.AttributeNames.PG_VALUES, convertedValues);\n }\n catch (e) {\n api_1.diag.error('failed to stringify ', queryConfig.values, e);\n }\n }\n // Set plan name attribute, if present\n if (typeof queryConfig.name === 'string') {\n span.setAttribute(AttributeNames_1.AttributeNames.PG_PLAN, queryConfig.name);\n }\n return span;\n}\nexports.handleConfigQuery = handleConfigQuery;\nfunction handleExecutionResult(config, span, pgResult) {\n if (typeof config.responseHook === 'function') {\n (0, instrumentation_1.safeExecuteInTheMiddle)(() => {\n config.responseHook(span, {\n data: pgResult,\n });\n }, err => {\n if (err) {\n api_1.diag.error('Error running response hook', err);\n }\n }, true);\n }\n}\nexports.handleExecutionResult = handleExecutionResult;\nfunction patchCallback(instrumentationConfig, span, cb, attributes, recordDuration) {\n return function patchedCallback(err, res) {\n if (err) {\n if (Object.prototype.hasOwnProperty.call(err, 'code')) {\n attributes[semantic_conventions_1.ATTR_ERROR_TYPE] = err['code'];\n }\n if (err instanceof Error) {\n span.recordException(sanitizedErrorMessage(err));\n }\n span.setStatus({\n code: api_1.SpanStatusCode.ERROR,\n message: err.message,\n });\n }\n else {\n handleExecutionResult(instrumentationConfig, span, res);\n }\n recordDuration();\n span.end();\n cb.call(this, err, res);\n };\n}\nexports.patchCallback = patchCallback;\nfunction getPoolName(pool) {\n let poolName = '';\n poolName += (pool?.host ? `${pool.host}` : 'unknown_host') + ':';\n poolName += (pool?.port ? `${pool.port}` : 'unknown_port') + '/';\n poolName += pool?.database ? `${pool.database}` : 'unknown_database';\n return poolName.trim();\n}\nexports.getPoolName = getPoolName;\nfunction updateCounter(poolName, pool, connectionCount, connectionPendingRequests, latestCounter) {\n const all = pool.totalCount;\n const pending = pool.waitingCount;\n const idle = pool.idleCount;\n const used = all - idle;\n connectionCount.add(used - latestCounter.used, {\n [semconv_1.ATTR_DB_CLIENT_CONNECTION_STATE]: semconv_1.DB_CLIENT_CONNECTION_STATE_VALUE_USED,\n [semconv_1.ATTR_DB_CLIENT_CONNECTION_POOL_NAME]: poolName,\n });\n connectionCount.add(idle - latestCounter.idle, {\n [semconv_1.ATTR_DB_CLIENT_CONNECTION_STATE]: semconv_1.DB_CLIENT_CONNECTION_STATE_VALUE_IDLE,\n [semconv_1.ATTR_DB_CLIENT_CONNECTION_POOL_NAME]: poolName,\n });\n connectionPendingRequests.add(pending - latestCounter.pending, {\n [semconv_1.ATTR_DB_CLIENT_CONNECTION_POOL_NAME]: poolName,\n });\n return { used: used, idle: idle, pending: pending };\n}\nexports.updateCounter = updateCounter;\nfunction patchCallbackPGPool(span, cb) {\n return function patchedCallback(err, res, done) {\n if (err) {\n if (err instanceof Error) {\n span.recordException(sanitizedErrorMessage(err));\n }\n span.setStatus({\n code: api_1.SpanStatusCode.ERROR,\n message: err.message,\n });\n }\n span.end();\n cb.call(this, err, res, done);\n };\n}\nexports.patchCallbackPGPool = patchCallbackPGPool;\nfunction patchClientConnectCallback(span, cb) {\n return function patchedClientConnectCallback(err) {\n if (err) {\n if (err instanceof Error) {\n span.recordException(sanitizedErrorMessage(err));\n }\n span.setStatus({\n code: api_1.SpanStatusCode.ERROR,\n message: err.message,\n });\n }\n span.end();\n cb.apply(this, arguments);\n };\n}\nexports.patchClientConnectCallback = patchClientConnectCallback;\n/**\n * Attempt to get a message string from a thrown value, while being quite\n * defensive, to recognize the fact that, in JS, any kind of value (even\n * primitives) can be thrown.\n */\nfunction getErrorMessage(e) {\n return typeof e === 'object' && e !== null && 'message' in e\n ? String(e.message)\n : undefined;\n}\nexports.getErrorMessage = getErrorMessage;\nfunction isObjectWithTextString(it) {\n return (typeof it === 'object' &&\n typeof it?.text === 'string');\n}\nexports.isObjectWithTextString = isObjectWithTextString;\n/**\n * Generates a sanitized message for the error.\n * Only includes the error type and PostgreSQL error code, omitting any sensitive details.\n */\nfunction sanitizedErrorMessage(error) {\n const name = error?.name ?? 'PostgreSQLError';\n const code = error?.code ?? 'UNKNOWN';\n return `PostgreSQL error of type '${name}' occurred (code: ${code})`;\n}\nexports.sanitizedErrorMessage = sanitizedErrorMessage;\n//# sourceMappingURL=utils.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvLnBucG0vQG9wZW50ZWxlbWV0cnkraW5zdHJ1bWVudGF0aW9uLXBnQDAuNjYuMF9Ab3BlbnRlbGVtZXRyeSthcGlAMS45LjEvbm9kZV9tb2R1bGVzL0BvcGVudGVsZW1ldHJ5L2luc3RydW1lbnRhdGlvbi1wZy9idWlsZC9zcmMvdXRpbHMuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4Q0FBNkMsRUFBRSxhQUFhLEVBQUM7QUFDN0QsNkJBQTZCLEdBQUcsOEJBQThCLEdBQUcsdUJBQXVCLEdBQUcsa0NBQWtDLEdBQUcsMkJBQTJCLEdBQUcscUJBQXFCLEdBQUcsbUJBQW1CLEdBQUcscUJBQXFCLEdBQUcsNkJBQTZCLEdBQUcseUJBQXlCLEdBQUcsaUNBQWlDLEdBQUcsK0NBQStDLEdBQUcsMkNBQTJDLEdBQUcsMkJBQTJCLEdBQUcsb0NBQW9DLEdBQUcsb0NBQW9DLEdBQUcsd0JBQXdCO0FBQ3hpQixjQUFjLG1CQUFPLENBQUMsa0lBQW9CO0FBQzFDLHlCQUF5QixtQkFBTyxDQUFDLDZNQUF3QjtBQUN6RCwrQkFBK0IsbUJBQU8sQ0FBQyxzTEFBcUM7QUFDNUUsa0JBQWtCLG1CQUFPLENBQUMsbUxBQVc7QUFDckMsMEJBQTBCLG1CQUFPLENBQUMsaU1BQWdDO0FBQ2xFLG9CQUFvQixtQkFBTyxDQUFDLG1NQUFtQjtBQUMvQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdEQUFnRDtBQUNoRCxvREFBb0Q7QUFDcEQ7QUFDQTtBQUNBO0FBQ0EsY0FBYyxtQ0FBbUMsR0FBRyxRQUFRLEVBQUUsYUFBYSxPQUFPLE9BQU87QUFDekY7QUFDQSx3QkFBd0I7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVDQUF1QztBQUN2QyxpQ0FBaUM7QUFDakM7QUFDQSxvQ0FBb0M7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQztBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQixLQUFLLEdBQUcsS0FBSyxHQUFHLFNBQVM7QUFDcEQ7QUFDQSwyQkFBMkI7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkNBQTJDO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtDQUErQztBQUMvQztBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksdUJBQXVCO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUI7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYixTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSw2QkFBNkI7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0EsaUNBQWlDLFVBQVU7QUFDM0MsaUNBQWlDLFVBQVU7QUFDM0Msb0NBQW9DLGNBQWM7QUFDbEQ7QUFDQTtBQUNBLG1CQUFtQjtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMLGFBQWE7QUFDYjtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQjtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQztBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QjtBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4QjtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdDQUF3QyxLQUFLLG9CQUFvQixLQUFLO0FBQ3RFO0FBQ0EsNkJBQTZCO0FBQzdCIiwic291cmNlcyI6WyIvVXNlcnMvbWFyY21pbnRlbC9Qcm9qZWN0cy9lLXRpYi5jb20vbm9kZV9tb2R1bGVzLy5wbnBtL0BvcGVudGVsZW1ldHJ5K2luc3RydW1lbnRhdGlvbi1wZ0AwLjY2LjBfQG9wZW50ZWxlbWV0cnkrYXBpQDEuOS4xL25vZGVfbW9kdWxlcy9Ab3BlbnRlbGVtZXRyeS9pbnN0cnVtZW50YXRpb24tcGcvYnVpbGQvc3JjL3V0aWxzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuLypcbiAqIENvcHlyaWdodCBUaGUgT3BlblRlbGVtZXRyeSBBdXRob3JzXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuc2FuaXRpemVkRXJyb3JNZXNzYWdlID0gZXhwb3J0cy5pc09iamVjdFdpdGhUZXh0U3RyaW5nID0gZXhwb3J0cy5nZXRFcnJvck1lc3NhZ2UgPSBleHBvcnRzLnBhdGNoQ2xpZW50Q29ubmVjdENhbGxiYWNrID0gZXhwb3J0cy5wYXRjaENhbGxiYWNrUEdQb29sID0gZXhwb3J0cy51cGRhdGVDb3VudGVyID0gZXhwb3J0cy5nZXRQb29sTmFtZSA9IGV4cG9ydHMucGF0Y2hDYWxsYmFjayA9IGV4cG9ydHMuaGFuZGxlRXhlY3V0aW9uUmVzdWx0ID0gZXhwb3J0cy5oYW5kbGVDb25maWdRdWVyeSA9IGV4cG9ydHMuc2hvdWxkU2tpcEluc3RydW1lbnRhdGlvbiA9IGV4cG9ydHMuZ2V0U2VtYW50aWNBdHRyaWJ1dGVzRnJvbVBvb2xDb25uZWN0aW9uID0gZXhwb3J0cy5nZXRTZW1hbnRpY0F0dHJpYnV0ZXNGcm9tQ29ubmVjdGlvbiA9IGV4cG9ydHMuZ2V0Q29ubmVjdGlvblN0cmluZyA9IGV4cG9ydHMucGFyc2VBbmRNYXNrQ29ubmVjdGlvblN0cmluZyA9IGV4cG9ydHMucGFyc2VOb3JtYWxpemVkT3BlcmF0aW9uTmFtZSA9IGV4cG9ydHMuZ2V0UXVlcnlTcGFuTmFtZSA9IHZvaWQgMDtcbmNvbnN0IGFwaV8xID0gcmVxdWlyZShcIkBvcGVudGVsZW1ldHJ5L2FwaVwiKTtcbmNvbnN0IEF0dHJpYnV0ZU5hbWVzXzEgPSByZXF1aXJlKFwiLi9lbnVtcy9BdHRyaWJ1dGVOYW1lc1wiKTtcbmNvbnN0IHNlbWFudGljX2NvbnZlbnRpb25zXzEgPSByZXF1aXJlKFwiQG9wZW50ZWxlbWV0cnkvc2VtYW50aWMtY29udmVudGlvbnNcIik7XG5jb25zdCBzZW1jb252XzEgPSByZXF1aXJlKFwiLi9zZW1jb252XCIpO1xuY29uc3QgaW5zdHJ1bWVudGF0aW9uXzEgPSByZXF1aXJlKFwiQG9wZW50ZWxlbWV0cnkvaW5zdHJ1bWVudGF0aW9uXCIpO1xuY29uc3QgU3Bhbk5hbWVzXzEgPSByZXF1aXJlKFwiLi9lbnVtcy9TcGFuTmFtZXNcIik7XG4vKipcbiAqIEhlbHBlciBmdW5jdGlvbiB0byBnZXQgYSBsb3cgY2FyZGluYWxpdHkgc3BhbiBuYW1lIGZyb20gd2hhdGV2ZXIgaW5mbyB3ZSBoYXZlXG4gKiBhYm91dCB0aGUgcXVlcnkuXG4gKlxuICogVGhpcyBpcyB0cmlja3ksIGJlY2F1c2Ugd2UgZG9uJ3QgaGF2ZSBtb3N0IG9mIHRoZSBpbmZvcm1hdGlvbiAodGFibGUgbmFtZSxcbiAqIG9wZXJhdGlvbiBuYW1lLCBldGMpIHRoZSBzcGVjIHJlY29tbWVuZHMgdXNpbmcgdG8gYnVpbGQgYSBsb3ctY2FyZGluYWxpdHlcbiAqIHZhbHVlIHcvbyBwYXJzaW5nLiBTbywgd2UgdXNlIGRiLm5hbWUgYW5kIGFzc3VtZSB0aGF0LCBpZiB0aGUgcXVlcnkncyBhIG5hbWVkXG4gKiBwcmVwYXJlZCBzdGF0ZW1lbnQsIHRob3NlIGBuYW1lYCB2YWx1ZXMgd2lsbCBiZSBsb3cgY2FyZGluYWxpdHkuIElmIHdlIGRvbid0XG4gKiBoYXZlIGEgbmFtZWQgcHJlcGFyZWQgc3RhdGVtZW50LCB3ZSB0cnkgdG8gcGFyc2UgYW4gb3BlcmF0aW9uIChkZXNwaXRlIHRoZVxuICogc3BlYydzIHdhcm5pbmdzKS5cbiAqXG4gKiBAcGFyYW1zIGRiTmFtZSBUaGUgbmFtZSBvZiB0aGUgZGIgYWdhaW5zdCB3aGljaCB0aGlzIHF1ZXJ5IGlzIGJlaW5nIGlzc3VlZCxcbiAqICAgd2hpY2ggY291bGQgYmUgbWlzc2luZyBpZiBubyBkYiBuYW1lIHdhcyBnaXZlbiBhdCB0aGUgdGltZSB0aGF0IHRoZVxuICogICBjb25uZWN0aW9uIHdhcyBlc3RhYmxpc2hlZC5cbiAqIEBwYXJhbXMgcXVlcnlDb25maWcgSW5mb3JtYXRpb24gd2UgaGF2ZSBhYm91dCB0aGUgcXVlcnkgYmVpbmcgaXNzdWVkLCB0eXBlZFxuICogICB0byByZWZsZWN0IG9ubHkgdGhlIHZhbGlkYXRpb24gd2UndmUgYWN0dWFsbHkgZG9uZSBvbiB0aGUgYXJncyB0b1xuICogICBgY2xpZW50LnF1ZXJ5KClgLiBUaGlzIHdpbGwgYmUgdW5kZWZpbmVkIGlmIGBjbGllbnQucXVlcnkoKWAgd2FzIGNhbGxlZFxuICogICB3aXRoIGludmFsaWQgYXJndW1lbnRzLlxuICovXG5mdW5jdGlvbiBnZXRRdWVyeVNwYW5OYW1lKGRiTmFtZSwgcXVlcnlDb25maWcpIHtcbiAgICAvLyBOQjogd2hlbiB0aGUgcXVlcnkgY29uZmlnIGlzIGludmFsaWQsIHdlIG9taXQgdGhlIGRiTmFtZSB0b28sIHNvIHRoYXRcbiAgICAvLyBzb21lb25lIChvciBzb21lIHRvb2wpIHJlYWRpbmcgdGhlIHNwYW4gbmFtZSBkb2Vzbid0IG1pc2ludGVycHJldCB0aGVcbiAgICAvLyBkYk5hbWUgYXMgYmVpbmcgYSBwcmVwYXJlZCBzdGF0ZW1lbnQgb3Igc3FsIGNvbW1pdCBuYW1lLlxuICAgIGlmICghcXVlcnlDb25maWcpXG4gICAgICAgIHJldHVybiBTcGFuTmFtZXNfMS5TcGFuTmFtZXMuUVVFUllfUFJFRklYO1xuICAgIC8vIEVpdGhlciB0aGUgbmFtZSBvZiBhIHByZXBhcmVkIHN0YXRlbWVudDsgb3IgYW4gYXR0ZW1wdGVkIHBhcnNlXG4gICAgLy8gb2YgdGhlIFNRTCBjb21tYW5kLCBub3JtYWxpemVkIHRvIHVwcGVyY2FzZTsgb3IgdW5rbm93bi5cbiAgICBjb25zdCBjb21tYW5kID0gdHlwZW9mIHF1ZXJ5Q29uZmlnLm5hbWUgPT09ICdzdHJpbmcnICYmIHF1ZXJ5Q29uZmlnLm5hbWVcbiAgICAgICAgPyBxdWVyeUNvbmZpZy5uYW1lXG4gICAgICAgIDogcGFyc2VOb3JtYWxpemVkT3BlcmF0aW9uTmFtZShxdWVyeUNvbmZpZy50ZXh0KTtcbiAgICByZXR1cm4gYCR7U3Bhbk5hbWVzXzEuU3Bhbk5hbWVzLlFVRVJZX1BSRUZJWH06JHtjb21tYW5kfSR7ZGJOYW1lID8gYCAke2RiTmFtZX1gIDogJyd9YDtcbn1cbmV4cG9ydHMuZ2V0UXVlcnlTcGFuTmFtZSA9IGdldFF1ZXJ5U3Bhbk5hbWU7XG5mdW5jdGlvbiBwYXJzZU5vcm1hbGl6ZWRPcGVyYXRpb25OYW1lKHF1ZXJ5VGV4dCkge1xuICAgIC8vIFRyaW0gdGhlIHF1ZXJ5IHRleHQgdG8gaGFuZGxlIGxlYWRpbmcvdHJhaWxpbmcgd2hpdGVzcGFjZVxuICAgIGNvbnN0IHRyaW1tZWRRdWVyeSA9IHF1ZXJ5VGV4dC50cmltKCk7XG4gICAgY29uc3QgaW5kZXhPZkZpcnN0U3BhY2UgPSB0cmltbWVkUXVlcnkuaW5kZXhPZignICcpO1xuICAgIGxldCBzcWxDb21tYW5kID0gaW5kZXhPZkZpcnN0U3BhY2UgPT09IC0xXG4gICAgICAgID8gdHJpbW1lZFF1ZXJ5XG4gICAgICAgIDogdHJpbW1lZFF1ZXJ5LnNsaWNlKDAsIGluZGV4T2ZGaXJzdFNwYWNlKTtcbiAgICBzcWxDb21tYW5kID0gc3FsQ29tbWFuZC50b1VwcGVyQ2FzZSgpO1xuICAgIC8vIEhhbmRsZSBxdWVyeSB0ZXh0IGJlaW5nIFwiQ09NTUlUO1wiLCB3aGljaCBoYXMgYW4gZXh0cmEgc2VtaWNvbG9uIGJlZm9yZSB0aGUgc3BhY2UuXG4gICAgcmV0dXJuIHNxbENvbW1hbmQuZW5kc1dpdGgoJzsnKSA/IHNxbENvbW1hbmQuc2xpY2UoMCwgLTEpIDogc3FsQ29tbWFuZDtcbn1cbmV4cG9ydHMucGFyc2VOb3JtYWxpemVkT3BlcmF0aW9uTmFtZSA9IHBhcnNlTm9ybWFsaXplZE9wZXJhdGlvbk5hbWU7XG5mdW5jdGlvbiBwYXJzZUFuZE1hc2tDb25uZWN0aW9uU3RyaW5nKGNvbm5lY3Rpb25TdHJpbmcpIHtcbiAgICB0cnkge1xuICAgICAgICAvLyBQYXJzZSB0aGUgY29ubmVjdGlvbiBzdHJpbmdcbiAgICAgICAgY29uc3QgdXJsID0gbmV3IFVSTChjb25uZWN0aW9uU3RyaW5nKTtcbiAgICAgICAgLy8gUmVtb3ZlIGFsbCBhdXRoIGluZm9ybWF0aW9uICh1c2VybmFtZSBhbmQgcGFzc3dvcmQpXG4gICAgICAgIHVybC51c2VybmFtZSA9ICcnO1xuICAgICAgICB1cmwucGFzc3dvcmQgPSAnJztcbiAgICAgICAgcmV0dXJuIHVybC50b1N0cmluZygpO1xuICAgIH1cbiAgICBjYXRjaCAoZSkge1xuICAgICAgICAvLyBJZiBwYXJzaW5nIGZhaWxzLCByZXR1cm4gYSBnZW5lcmljIGNvbm5lY3Rpb24gc3RyaW5nXG4gICAgICAgIHJldHVybiAncG9zdGdyZXNxbDovL2xvY2FsaG9zdDo1NDMyLyc7XG4gICAgfVxufVxuZXhwb3J0cy5wYXJzZUFuZE1hc2tDb25uZWN0aW9uU3RyaW5nID0gcGFyc2VBbmRNYXNrQ29ubmVjdGlvblN0cmluZztcbmZ1bmN0aW9uIGdldENvbm5lY3Rpb25TdHJpbmcocGFyYW1zKSB7XG4gICAgaWYgKCdjb25uZWN0aW9uU3RyaW5nJyBpbiBwYXJhbXMgJiYgcGFyYW1zLmNvbm5lY3Rpb25TdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHBhcnNlQW5kTWFza0Nvbm5lY3Rpb25TdHJpbmcocGFyYW1zLmNvbm5lY3Rpb25TdHJpbmcpO1xuICAgIH1cbiAgICBjb25zdCBob3N0ID0gcGFyYW1zLmhvc3QgfHwgJ2xvY2FsaG9zdCc7XG4gICAgY29uc3QgcG9ydCA9IHBhcmFtcy5wb3J0IHx8IDU0MzI7XG4gICAgY29uc3QgZGF0YWJhc2UgPSBwYXJhbXMuZGF0YWJhc2UgfHwgJyc7XG4gICAgcmV0dXJuIGBwb3N0Z3Jlc3FsOi8vJHtob3N0fToke3BvcnR9LyR7ZGF0YWJhc2V9YDtcbn1cbmV4cG9ydHMuZ2V0Q29ubmVjdGlvblN0cmluZyA9IGdldENvbm5lY3Rpb25TdHJpbmc7XG5mdW5jdGlvbiBnZXRQb3J0KHBvcnQpIHtcbiAgICAvLyBQb3J0IG1heSBiZSBOYU4gYXMgcGFyc2VJbnQoKSBpcyB1c2VkIG9uIHRoZSB2YWx1ZSwgcGFzc2luZyBudWxsIHdpbGwgcmVzdWx0IGluIE5hTiBiZWluZyBwYXJzZWQuXG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2JyaWFuYy9ub2RlLXBvc3RncmVzL2Jsb2IvMmE4ZWZiZWUwOWEyODRiZTEyNzQ4ZWQzOTYyYmM5YjgxNjk2NWUzNi9wYWNrYWdlcy9wZy9saWIvY29ubmVjdGlvbi1wYXJhbWV0ZXJzLmpzI0w2NlxuICAgIGlmIChOdW1iZXIuaXNJbnRlZ2VyKHBvcnQpKSB7XG4gICAgICAgIHJldHVybiBwb3J0O1xuICAgIH1cbiAgICAvLyBVbmFibGUgdG8gZmluZCB0aGUgZGVmYXVsdCB1c2VkIGluIHBnIGNvZGUsIHNvIGZhbGxpbmcgYmFjayB0byAndW5kZWZpbmVkJy5cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xufVxuZnVuY3Rpb24gZ2V0U2VtYW50aWNBdHRyaWJ1dGVzRnJvbUNvbm5lY3Rpb24ocGFyYW1zLCBzZW1jb252U3RhYmlsaXR5KSB7XG4gICAgbGV0IGF0dHJpYnV0ZXMgPSB7fTtcbiAgICBpZiAoc2VtY29udlN0YWJpbGl0eSAmIGluc3RydW1lbnRhdGlvbl8xLlNlbWNvbnZTdGFiaWxpdHkuT0xEKSB7XG4gICAgICAgIGF0dHJpYnV0ZXMgPSB7XG4gICAgICAgICAgICAuLi5hdHRyaWJ1dGVzLFxuICAgICAgICAgICAgW3NlbWNvbnZfMS5BVFRSX0RCX1NZU1RFTV06IHNlbWNvbnZfMS5EQl9TWVNURU1fVkFMVUVfUE9TVEdSRVNRTCxcbiAgICAgICAgICAgIFtzZW1jb252XzEuQVRUUl9EQl9OQU1FXTogcGFyYW1zLmRhdGFiYXNlLFxuICAgICAgICAgICAgW3NlbWNvbnZfMS5BVFRSX0RCX0NPTk5FQ1RJT05fU1RSSU5HXTogZ2V0Q29ubmVjdGlvblN0cmluZyhwYXJhbXMpLFxuICAgICAgICAgICAgW3NlbWNvbnZfMS5BVFRSX0RCX1VTRVJdOiBwYXJhbXMudXNlcixcbiAgICAgICAgICAgIFtzZW1jb252XzEuQVRUUl9ORVRfUEVFUl9OQU1FXTogcGFyYW1zLmhvc3QsXG4gICAgICAgICAgICBbc2VtY29udl8xLkFUVFJfTkVUX1BFRVJfUE9SVF06IGdldFBvcnQocGFyYW1zLnBvcnQpLFxuICAgICAgICB9O1xuICAgIH1cbiAgICBpZiAoc2VtY29udlN0YWJpbGl0eSAmIGluc3RydW1lbnRhdGlvbl8xLlNlbWNvbnZTdGFiaWxpdHkuU1RBQkxFKSB7XG4gICAgICAgIGF0dHJpYnV0ZXMgPSB7XG4gICAgICAgICAgICAuLi5hdHRyaWJ1dGVzLFxuICAgICAgICAgICAgW3NlbWFudGljX2NvbnZlbnRpb25zXzEuQVRUUl9EQl9TWVNURU1fTkFNRV06IHNlbWFudGljX2NvbnZlbnRpb25zXzEuREJfU1lTVEVNX05BTUVfVkFMVUVfUE9TVEdSRVNRTCxcbiAgICAgICAgICAgIFtzZW1hbnRpY19jb252ZW50aW9uc18xLkFUVFJfREJfTkFNRVNQQUNFXTogcGFyYW1zLm5hbWVzcGFjZSxcbiAgICAgICAgICAgIFtzZW1hbnRpY19jb252ZW50aW9uc18xLkFUVFJfU0VSVkVSX0FERFJFU1NdOiBwYXJhbXMuaG9zdCxcbiAgICAgICAgICAgIFtzZW1hbnRpY19jb252ZW50aW9uc18xLkFUVFJfU0VSVkVSX1BPUlRdOiBnZXRQb3J0KHBhcmFtcy5wb3J0KSxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIGF0dHJpYnV0ZXM7XG59XG5leHBvcnRzLmdldFNlbWFudGljQXR0cmlidXRlc0Zyb21Db25uZWN0aW9uID0gZ2V0U2VtYW50aWNBdHRyaWJ1dGVzRnJvbUNvbm5lY3Rpb247XG5mdW5jdGlvbiBnZXRTZW1hbnRpY0F0dHJpYnV0ZXNGcm9tUG9vbENvbm5lY3Rpb24ocGFyYW1zLCBzZW1jb252U3RhYmlsaXR5KSB7XG4gICAgbGV0IHVybDtcbiAgICB0cnkge1xuICAgICAgICB1cmwgPSBwYXJhbXMuY29ubmVjdGlvblN0cmluZ1xuICAgICAgICAgICAgPyBuZXcgVVJMKHBhcmFtcy5jb25uZWN0aW9uU3RyaW5nKVxuICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGNhdGNoIChlKSB7XG4gICAgICAgIHVybCA9IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgbGV0IGF0dHJpYnV0ZXMgPSB7XG4gICAgICAgIFtBdHRyaWJ1dGVOYW1lc18xLkF0dHJpYnV0ZU5hbWVzLklETEVfVElNRU9VVF9NSUxMSVNdOiBwYXJhbXMuaWRsZVRpbWVvdXRNaWxsaXMsXG4gICAgICAgIFtBdHRyaWJ1dGVOYW1lc18xLkF0dHJpYnV0ZU5hbWVzLk1BWF9DTElFTlRdOiBwYXJhbXMubWF4Q2xpZW50LFxuICAgIH07XG4gICAgaWYgKHNlbWNvbnZTdGFiaWxpdHkgJiBpbnN0cnVtZW50YXRpb25fMS5TZW1jb252U3RhYmlsaXR5Lk9MRCkge1xuICAgICAgICBhdHRyaWJ1dGVzID0ge1xuICAgICAgICAgICAgLi4uYXR0cmlidXRlcyxcbiAgICAgICAgICAgIFtzZW1jb252XzEuQVRUUl9EQl9TWVNURU1dOiBzZW1jb252XzEuREJfU1lTVEVNX1ZBTFVFX1BPU1RHUkVTUUwsXG4gICAgICAgICAgICBbc2VtY29udl8xLkFUVFJfREJfTkFNRV06IHVybD8ucGF0aG5hbWUuc2xpY2UoMSkgPz8gcGFyYW1zLmRhdGFiYXNlLFxuICAgICAgICAgICAgW3NlbWNvbnZfMS5BVFRSX0RCX0NPTk5FQ1RJT05fU1RSSU5HXTogZ2V0Q29ubmVjdGlvblN0cmluZyhwYXJhbXMpLFxuICAgICAgICAgICAgW3NlbWNvbnZfMS5BVFRSX05FVF9QRUVSX05BTUVdOiB1cmw/Lmhvc3RuYW1lID8/IHBhcmFtcy5ob3N0LFxuICAgICAgICAgICAgW3NlbWNvbnZfMS5BVFRSX05FVF9QRUVSX1BPUlRdOiBOdW1iZXIodXJsPy5wb3J0KSB8fCBnZXRQb3J0KHBhcmFtcy5wb3J0KSxcbiAgICAgICAgICAgIFtzZW1jb252XzEuQVRUUl9EQl9VU0VSXTogdXJsPy51c2VybmFtZSA/PyBwYXJhbXMudXNlcixcbiAgICAgICAgfTtcbiAgICB9XG4gICAgaWYgKHNlbWNvbnZTdGFiaWxpdHkgJiBpbnN0cnVtZW50YXRpb25fMS5TZW1jb252U3RhYmlsaXR5LlNUQUJMRSkge1xuICAgICAgICBhdHRyaWJ1dGVzID0ge1xuICAgICAgICAgICAgLi4uYXR0cmlidXRlcyxcbiAgICAgICAgICAgIFtzZW1hbnRpY19jb252ZW50aW9uc18xLkFUVFJfREJfU1lTVEVNX05BTUVdOiBzZW1hbnRpY19jb252ZW50aW9uc18xLkRCX1NZU1RFTV9OQU1FX1ZBTFVFX1BPU1RHUkVTUUwsXG4gICAgICAgICAgICBbc2VtYW50aWNfY29udmVudGlvbnNfMS5BVFRSX0RCX05BTUVTUEFDRV06IHBhcmFtcy5uYW1lc3BhY2UsXG4gICAgICAgICAgICBbc2VtYW50aWNfY29udmVudGlvbnNfMS5BVFRSX1NFUlZFUl9BRERSRVNTXTogdXJsPy5ob3N0bmFtZSA/PyBwYXJhbXMuaG9zdCxcbiAgICAgICAgICAgIFtzZW1hbnRpY19jb252ZW50aW9uc18xLkFUVFJfU0VSVkVSX1BPUlRdOiBOdW1iZXIodXJsPy5wb3J0KSB8fCBnZXRQb3J0KHBhcmFtcy5wb3J0KSxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIGF0dHJpYnV0ZXM7XG59XG5leHBvcnRzLmdldFNlbWFudGljQXR0cmlidXRlc0Zyb21Qb29sQ29ubmVjdGlvbiA9IGdldFNlbWFudGljQXR0cmlidXRlc0Zyb21Qb29sQ29ubmVjdGlvbjtcbmZ1bmN0aW9uIHNob3VsZFNraXBJbnN0cnVtZW50YXRpb24oaW5zdHJ1bWVudGF0aW9uQ29uZmlnKSB7XG4gICAgcmV0dXJuIChpbnN0cnVtZW50YXRpb25Db25maWcucmVxdWlyZVBhcmVudFNwYW4gPT09IHRydWUgJiZcbiAgICAgICAgYXBpXzEudHJhY2UuZ2V0U3BhbihhcGlfMS5jb250ZXh0LmFjdGl2ZSgpKSA9PT0gdW5kZWZpbmVkKTtcbn1cbmV4cG9ydHMuc2hvdWxkU2tpcEluc3RydW1lbnRhdGlvbiA9IHNob3VsZFNraXBJbnN0cnVtZW50YXRpb247XG4vLyBDcmVhdGUgYSBzcGFuIGZyb20gb3VyIG5vcm1hbGl6ZWQgcXVlcnlDb25maWcgb2JqZWN0LFxuLy8gb3IgcmV0dXJuIGEgYmFzaWMgc3BhbiBpZiBubyBxdWVyeUNvbmZpZyB3YXMgZ2l2ZW4vY291bGQgYmUgY3JlYXRlZC5cbmZ1bmN0aW9uIGhhbmRsZUNvbmZpZ1F1ZXJ5KHRyYWNlciwgaW5zdHJ1bWVudGF0aW9uQ29uZmlnLCBzZW1jb252U3RhYmlsaXR5LCBxdWVyeUNvbmZpZykge1xuICAgIC8vIENyZWF0ZSBjaGlsZCBzcGFuLlxuICAgIGNvbnN0IHsgY29ubmVjdGlvblBhcmFtZXRlcnMgfSA9IHRoaXM7XG4gICAgY29uc3QgZGJOYW1lID0gY29ubmVjdGlvblBhcmFtZXRlcnMuZGF0YWJhc2U7XG4gICAgY29uc3Qgc3Bhbk5hbWUgPSBnZXRRdWVyeVNwYW5OYW1lKGRiTmFtZSwgcXVlcnlDb25maWcpO1xuICAgIGNvbnN0IHNwYW4gPSB0cmFjZXIuc3RhcnRTcGFuKHNwYW5OYW1lLCB7XG4gICAgICAgIGtpbmQ6IGFwaV8xLlNwYW5LaW5kLkNMSUVOVCxcbiAgICAgICAgYXR0cmlidXRlczogZ2V0U2VtYW50aWNBdHRyaWJ1dGVzRnJvbUNvbm5lY3Rpb24oY29ubmVjdGlvblBhcmFtZXRlcnMsIHNlbWNvbnZTdGFiaWxpdHkpLFxuICAgIH0pO1xuICAgIGlmICghcXVlcnlDb25maWcpIHtcbiAgICAgICAgcmV0dXJuIHNwYW47XG4gICAgfVxuICAgIC8vIFNldCBhdHRyaWJ1dGVzXG4gICAgaWYgKHF1ZXJ5Q29uZmlnLnRleHQpIHtcbiAgICAgICAgaWYgKHNlbWNvbnZTdGFiaWxpdHkgJiBpbnN0cnVtZW50YXRpb25fMS5TZW1jb252U3RhYmlsaXR5Lk9MRCkge1xuICAgICAgICAgICAgc3Bhbi5zZXRBdHRyaWJ1dGUoc2VtY29udl8xLkFUVFJfREJfU1RBVEVNRU5ULCBxdWVyeUNvbmZpZy50ZXh0KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc2VtY29udlN0YWJpbGl0eSAmIGluc3RydW1lbnRhdGlvbl8xLlNlbWNvbnZTdGFiaWxpdHkuU1RBQkxFKSB7XG4gICAgICAgICAgICBzcGFuLnNldEF0dHJpYnV0ZShzZW1hbnRpY19jb252ZW50aW9uc18xLkFUVFJfREJfUVVFUllfVEVYVCwgcXVlcnlDb25maWcudGV4dCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKGluc3RydW1lbnRhdGlvbkNvbmZpZy5lbmhhbmNlZERhdGFiYXNlUmVwb3J0aW5nICYmXG4gICAgICAgIEFycmF5LmlzQXJyYXkocXVlcnlDb25maWcudmFsdWVzKSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgY29udmVydGVkVmFsdWVzID0gcXVlcnlDb25maWcudmFsdWVzLm1hcCh2YWx1ZSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdudWxsJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAodmFsdWUgaW5zdGFuY2VvZiBCdWZmZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZS50b1Bvc3RncmVzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUudG9Qb3N0Z3JlcygpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvL3N0cmluZywgbnVtYmVyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZS50b1N0cmluZygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgc3Bhbi5zZXRBdHRyaWJ1dGUoQXR0cmlidXRlTmFtZXNfMS5BdHRyaWJ1dGVOYW1lcy5QR19WQUxVRVMsIGNvbnZlcnRlZFZhbHVlcyk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGFwaV8xLmRpYWcuZXJyb3IoJ2ZhaWxlZCB0byBzdHJpbmdpZnkgJywgcXVlcnlDb25maWcudmFsdWVzLCBlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBTZXQgcGxhbiBuYW1lIGF0dHJpYnV0ZSwgaWYgcHJlc2VudFxuICAgIGlmICh0eXBlb2YgcXVlcnlDb25maWcubmFtZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgc3Bhbi5zZXRBdHRyaWJ1dGUoQXR0cmlidXRlTmFtZXNfMS5BdHRyaWJ1dGVOYW1lcy5QR19QTEFOLCBxdWVyeUNvbmZpZy5uYW1lKTtcbiAgICB9XG4gICAgcmV0dXJuIHNwYW47XG59XG5leHBvcnRzLmhhbmRsZUNvbmZpZ1F1ZXJ5ID0gaGFuZGxlQ29uZmlnUXVlcnk7XG5mdW5jdGlvbiBoYW5kbGVFeGVjdXRpb25SZXN1bHQoY29uZmlnLCBzcGFuLCBwZ1Jlc3VsdCkge1xuICAgIGlmICh0eXBlb2YgY29uZmlnLnJlc3BvbnNlSG9vayA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAoMCwgaW5zdHJ1bWVudGF0aW9uXzEuc2FmZUV4ZWN1dGVJblRoZU1pZGRsZSkoKCkgPT4ge1xuICAgICAgICAgICAgY29uZmlnLnJlc3BvbnNlSG9vayhzcGFuLCB7XG4gICAgICAgICAgICAgICAgZGF0YTogcGdSZXN1bHQsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSwgZXJyID0+IHtcbiAgICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgICAgICBhcGlfMS5kaWFnLmVycm9yKCdFcnJvciBydW5uaW5nIHJlc3BvbnNlIGhvb2snLCBlcnIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCB0cnVlKTtcbiAgICB9XG59XG5leHBvcnRzLmhhbmRsZUV4ZWN1dGlvblJlc3VsdCA9IGhhbmRsZUV4ZWN1dGlvblJlc3VsdDtcbmZ1bmN0aW9uIHBhdGNoQ2FsbGJhY2soaW5zdHJ1bWVudGF0aW9uQ29uZmlnLCBzcGFuLCBjYiwgYXR0cmlidXRlcywgcmVjb3JkRHVyYXRpb24pIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gcGF0Y2hlZENhbGxiYWNrKGVyciwgcmVzKSB7XG4gICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZXJyLCAnY29kZScpKSB7XG4gICAgICAgICAgICAgICAgYXR0cmlidXRlc1tzZW1hbnRpY19jb252ZW50aW9uc18xLkFUVFJfRVJST1JfVFlQRV0gPSBlcnJbJ2NvZGUnXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChlcnIgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICAgICAgICAgIHNwYW4ucmVjb3JkRXhjZXB0aW9uKHNhbml0aXplZEVycm9yTWVzc2FnZShlcnIpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNwYW4uc2V0U3RhdHVzKHtcbiAgICAgICAgICAgICAgICBjb2RlOiBhcGlfMS5TcGFuU3RhdHVzQ29kZS5FUlJPUixcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiBlcnIubWVzc2FnZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaGFuZGxlRXhlY3V0aW9uUmVzdWx0KGluc3RydW1lbnRhdGlvbkNvbmZpZywgc3BhbiwgcmVzKTtcbiAgICAgICAgfVxuICAgICAgICByZWNvcmREdXJhdGlvbigpO1xuICAgICAgICBzcGFuLmVuZCgpO1xuICAgICAgICBjYi5jYWxsKHRoaXMsIGVyciwgcmVzKTtcbiAgICB9O1xufVxuZXhwb3J0cy5wYXRjaENhbGxiYWNrID0gcGF0Y2hDYWxsYmFjaztcbmZ1bmN0aW9uIGdldFBvb2xOYW1lKHBvb2wpIHtcbiAgICBsZXQgcG9vbE5hbWUgPSAnJztcbiAgICBwb29sTmFtZSArPSAocG9vbD8uaG9zdCA/IGAke3Bvb2wuaG9zdH1gIDogJ3Vua25vd25faG9zdCcpICsgJzonO1xuICAgIHBvb2xOYW1lICs9IChwb29sPy5wb3J0ID8gYCR7cG9vbC5wb3J0fWAgOiAndW5rbm93bl9wb3J0JykgKyAnLyc7XG4gICAgcG9vbE5hbWUgKz0gcG9vbD8uZGF0YWJhc2UgPyBgJHtwb29sLmRhdGFiYXNlfWAgOiAndW5rbm93bl9kYXRhYmFzZSc7XG4gICAgcmV0dXJuIHBvb2xOYW1lLnRyaW0oKTtcbn1cbmV4cG9ydHMuZ2V0UG9vbE5hbWUgPSBnZXRQb29sTmFtZTtcbmZ1bmN0aW9uIHVwZGF0ZUNvdW50ZXIocG9vbE5hbWUsIHBvb2wsIGNvbm5lY3Rpb25Db3VudCwgY29ubmVjdGlvblBlbmRpbmdSZXF1ZXN0cywgbGF0ZXN0Q291bnRlcikge1xuICAgIGNvbnN0IGFsbCA9IHBvb2wudG90YWxDb3VudDtcbiAgICBjb25zdCBwZW5kaW5nID0gcG9vbC53YWl0aW5nQ291bnQ7XG4gICAgY29uc3QgaWRsZSA9IHBvb2wuaWRsZUNvdW50O1xuICAgIGNvbnN0IHVzZWQgPSBhbGwgLSBpZGxlO1xuICAgIGNvbm5lY3Rpb25Db3VudC5hZGQodXNlZCAtIGxhdGVzdENvdW50ZXIudXNlZCwge1xuICAgICAgICBbc2VtY29udl8xLkFUVFJfREJfQ0xJRU5UX0NPTk5FQ1RJT05fU1RBVEVdOiBzZW1jb252XzEuREJfQ0xJRU5UX0NPTk5FQ1RJT05fU1RBVEVfVkFMVUVfVVNFRCxcbiAgICAgICAgW3NlbWNvbnZfMS5BVFRSX0RCX0NMSUVOVF9DT05ORUNUSU9OX1BPT0xfTkFNRV06IHBvb2xOYW1lLFxuICAgIH0pO1xuICAgIGNvbm5lY3Rpb25Db3VudC5hZGQoaWRsZSAtIGxhdGVzdENvdW50ZXIuaWRsZSwge1xuICAgICAgICBbc2VtY29udl8xLkFUVFJfREJfQ0xJRU5UX0NPTk5FQ1RJT05fU1RBVEVdOiBzZW1jb252XzEuREJfQ0xJRU5UX0NPTk5FQ1RJT05fU1RBVEVfVkFMVUVfSURMRSxcbiAgICAgICAgW3NlbWNvbnZfMS5BVFRSX0RCX0NMSUVOVF9DT05ORUNUSU9OX1BPT0xfTkFNRV06IHBvb2xOYW1lLFxuICAgIH0pO1xuICAgIGNvbm5lY3Rpb25QZW5kaW5nUmVxdWVzdHMuYWRkKHBlbmRpbmcgLSBsYXRlc3RDb3VudGVyLnBlbmRpbmcsIHtcbiAgICAgICAgW3NlbWNvbnZfMS5BVFRSX0RCX0NMSUVOVF9DT05ORUNUSU9OX1BPT0xfTkFNRV06IHBvb2xOYW1lLFxuICAgIH0pO1xuICAgIHJldHVybiB7IHVzZWQ6IHVzZWQsIGlkbGU6IGlkbGUsIHBlbmRpbmc6IHBlbmRpbmcgfTtcbn1cbmV4cG9ydHMudXBkYXRlQ291bnRlciA9IHVwZGF0ZUNvdW50ZXI7XG5mdW5jdGlvbiBwYXRjaENhbGxiYWNrUEdQb29sKHNwYW4sIGNiKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIHBhdGNoZWRDYWxsYmFjayhlcnIsIHJlcywgZG9uZSkge1xuICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICBpZiAoZXJyIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgICAgICAgICBzcGFuLnJlY29yZEV4Y2VwdGlvbihzYW5pdGl6ZWRFcnJvck1lc3NhZ2UoZXJyKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzcGFuLnNldFN0YXR1cyh7XG4gICAgICAgICAgICAgICAgY29kZTogYXBpXzEuU3BhblN0YXR1c0NvZGUuRVJST1IsXG4gICAgICAgICAgICAgICAgbWVzc2FnZTogZXJyLm1lc3NhZ2UsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBzcGFuLmVuZCgpO1xuICAgICAgICBjYi5jYWxsKHRoaXMsIGVyciwgcmVzLCBkb25lKTtcbiAgICB9O1xufVxuZXhwb3J0cy5wYXRjaENhbGxiYWNrUEdQb29sID0gcGF0Y2hDYWxsYmFja1BHUG9vbDtcbmZ1bmN0aW9uIHBhdGNoQ2xpZW50Q29ubmVjdENhbGxiYWNrKHNwYW4sIGNiKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIHBhdGNoZWRDbGllbnRDb25uZWN0Q2FsbGJhY2soZXJyKSB7XG4gICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgIGlmIChlcnIgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICAgICAgICAgIHNwYW4ucmVjb3JkRXhjZXB0aW9uKHNhbml0aXplZEVycm9yTWVzc2FnZShlcnIpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNwYW4uc2V0U3RhdHVzKHtcbiAgICAgICAgICAgICAgICBjb2RlOiBhcGlfMS5TcGFuU3RhdHVzQ29kZS5FUlJPUixcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiBlcnIubWVzc2FnZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHNwYW4uZW5kKCk7XG4gICAgICAgIGNiLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbn1cbmV4cG9ydHMucGF0Y2hDbGllbnRDb25uZWN0Q2FsbGJhY2sgPSBwYXRjaENsaWVudENvbm5lY3RDYWxsYmFjaztcbi8qKlxuICogQXR0ZW1wdCB0byBnZXQgYSBtZXNzYWdlIHN0cmluZyBmcm9tIGEgdGhyb3duIHZhbHVlLCB3aGlsZSBiZWluZyBxdWl0ZVxuICogZGVmZW5zaXZlLCB0byByZWNvZ25pemUgdGhlIGZhY3QgdGhhdCwgaW4gSlMsIGFueSBraW5kIG9mIHZhbHVlIChldmVuXG4gKiBwcmltaXRpdmVzKSBjYW4gYmUgdGhyb3duLlxuICovXG5mdW5jdGlvbiBnZXRFcnJvck1lc3NhZ2UoZSkge1xuICAgIHJldHVybiB0eXBlb2YgZSA9PT0gJ29iamVjdCcgJiYgZSAhPT0gbnVsbCAmJiAnbWVzc2FnZScgaW4gZVxuICAgICAgICA/IFN0cmluZyhlLm1lc3NhZ2UpXG4gICAgICAgIDogdW5kZWZpbmVkO1xufVxuZXhwb3J0cy5nZXRFcnJvck1lc3NhZ2UgPSBnZXRFcnJvck1lc3NhZ2U7XG5mdW5jdGlvbiBpc09iamVjdFdpdGhUZXh0U3RyaW5nKGl0KSB7XG4gICAgcmV0dXJuICh0eXBlb2YgaXQgPT09ICdvYmplY3QnICYmXG4gICAgICAgIHR5cGVvZiBpdD8udGV4dCA9PT0gJ3N0cmluZycpO1xufVxuZXhwb3J0cy5pc09iamVjdFdpdGhUZXh0U3RyaW5nID0gaXNPYmplY3RXaXRoVGV4dFN0cmluZztcbi8qKlxuICogR2VuZXJhdGVzIGEgc2FuaXRpemVkIG1lc3NhZ2UgZm9yIHRoZSBlcnJvci5cbiAqIE9ubHkgaW5jbHVkZXMgdGhlIGVycm9yIHR5cGUgYW5kIFBvc3RncmVTUUwgZXJyb3IgY29kZSwgb21pdHRpbmcgYW55IHNlbnNpdGl2ZSBkZXRhaWxzLlxuICovXG5mdW5jdGlvbiBzYW5pdGl6ZWRFcnJvck1lc3NhZ2UoZXJyb3IpIHtcbiAgICBjb25zdCBuYW1lID0gZXJyb3I/Lm5hbWUgPz8gJ1Bvc3RncmVTUUxFcnJvcic7XG4gICAgY29uc3QgY29kZSA9IGVycm9yPy5jb2RlID8/ICdVTktOT1dOJztcbiAgICByZXR1cm4gYFBvc3RncmVTUUwgZXJyb3Igb2YgdHlwZSAnJHtuYW1lfScgb2NjdXJyZWQgKGNvZGU6ICR7Y29kZX0pYDtcbn1cbmV4cG9ydHMuc2FuaXRpemVkRXJyb3JNZXNzYWdlID0gc2FuaXRpemVkRXJyb3JNZXNzYWdlO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dXRpbHMuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/.pnpm/@opentelemetry+instrumentation-pg@0.66.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-pg/build/src/utils.js\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(ssr)/./node_modules/.pnpm/@opentelemetry+instrumentation-pg@0.66.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-pg/build/src/version.js":
|
|
/*!******************************************************************************************************************************************************************!*\
|
|
!*** ./node_modules/.pnpm/@opentelemetry+instrumentation-pg@0.66.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-pg/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.66.0';\nexports.PACKAGE_NAME = '@opentelemetry/instrumentation-pg';\n//# sourceMappingURL=version.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvLnBucG0vQG9wZW50ZWxlbWV0cnkraW5zdHJ1bWVudGF0aW9uLXBnQDAuNjYuMF9Ab3BlbnRlbGVtZXRyeSthcGlAMS45LjEvbm9kZV9tb2R1bGVzL0BvcGVudGVsZW1ldHJ5L2luc3RydW1lbnRhdGlvbi1wZy9idWlsZC9zcmMvdmVyc2lvbi5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhDQUE2QyxFQUFFLGFBQWEsRUFBQztBQUM3RCxvQkFBb0IsR0FBRyx1QkFBdUI7QUFDOUM7QUFDQSx1QkFBdUI7QUFDdkIsb0JBQW9CO0FBQ3BCIiwic291cmNlcyI6WyIvVXNlcnMvbWFyY21pbnRlbC9Qcm9qZWN0cy9lLXRpYi5jb20vbm9kZV9tb2R1bGVzLy5wbnBtL0BvcGVudGVsZW1ldHJ5K2luc3RydW1lbnRhdGlvbi1wZ0AwLjY2LjBfQG9wZW50ZWxlbWV0cnkrYXBpQDEuOS4xL25vZGVfbW9kdWxlcy9Ab3BlbnRlbGVtZXRyeS9pbnN0cnVtZW50YXRpb24tcGcvYnVpbGQvc3JjL3ZlcnNpb24uanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG4vKlxuICogQ29weXJpZ2h0IFRoZSBPcGVuVGVsZW1ldHJ5IEF1dGhvcnNcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5QQUNLQUdFX05BTUUgPSBleHBvcnRzLlBBQ0tBR0VfVkVSU0lPTiA9IHZvaWQgMDtcbi8vIHRoaXMgaXMgYXV0b2dlbmVyYXRlZCBmaWxlLCBzZWUgc2NyaXB0cy92ZXJzaW9uLXVwZGF0ZS5qc1xuZXhwb3J0cy5QQUNLQUdFX1ZFUlNJT04gPSAnMC42Ni4wJztcbmV4cG9ydHMuUEFDS0FHRV9OQU1FID0gJ0BvcGVudGVsZW1ldHJ5L2luc3RydW1lbnRhdGlvbi1wZyc7XG4vLyMgc291cmNlTWFwcGluZ1VSTD12ZXJzaW9uLmpzLm1hcCJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/.pnpm/@opentelemetry+instrumentation-pg@0.66.0_@opentelemetry+api@1.9.1/node_modules/@opentelemetry/instrumentation-pg/build/src/version.js\n");
|
|
|
|
/***/ })
|
|
|
|
};
|
|
; |