@readme/cli 0.0.26

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (144) hide show
  1. package/README.md +55 -0
  2. package/bin/readme.js +8 -0
  3. package/package.json +58 -0
  4. package/src/bootstrap.js +97 -0
  5. package/src/cli.js +189 -0
  6. package/src/commands/dev.js +119 -0
  7. package/src/commands/eyes.js +37 -0
  8. package/src/commands/import.js +2565 -0
  9. package/src/commands/lint.js +70 -0
  10. package/src/commands/oas-sync.js +364 -0
  11. package/src/commands/oas-validate.js +208 -0
  12. package/src/commands/play.js +17 -0
  13. package/src/commands/pretty.js +133 -0
  14. package/src/commands/setup.js +256 -0
  15. package/src/commands/versions.js +81 -0
  16. package/src/dev/.next/app-build-manifest.json +20 -0
  17. package/src/dev/.next/build-manifest.json +31 -0
  18. package/src/dev/.next/cache/.rscinfo +1 -0
  19. package/src/dev/.next/cache/next-devtools-config.json +1 -0
  20. package/src/dev/.next/cache/webpack/client-development/0.pack.gz +0 -0
  21. package/src/dev/.next/cache/webpack/client-development/1.pack.gz +0 -0
  22. package/src/dev/.next/cache/webpack/client-development/10.pack.gz +0 -0
  23. package/src/dev/.next/cache/webpack/client-development/11.pack.gz +0 -0
  24. package/src/dev/.next/cache/webpack/client-development/2.pack.gz +0 -0
  25. package/src/dev/.next/cache/webpack/client-development/3.pack.gz +0 -0
  26. package/src/dev/.next/cache/webpack/client-development/3.pack.gz_ +0 -0
  27. package/src/dev/.next/cache/webpack/client-development/4.pack.gz +0 -0
  28. package/src/dev/.next/cache/webpack/client-development/5.pack.gz +0 -0
  29. package/src/dev/.next/cache/webpack/client-development/5.pack.gz_ +0 -0
  30. package/src/dev/.next/cache/webpack/client-development/6.pack.gz +0 -0
  31. package/src/dev/.next/cache/webpack/client-development/7.pack.gz +0 -0
  32. package/src/dev/.next/cache/webpack/client-development/7.pack.gz_ +0 -0
  33. package/src/dev/.next/cache/webpack/client-development/8.pack.gz +0 -0
  34. package/src/dev/.next/cache/webpack/client-development/9.pack.gz +0 -0
  35. package/src/dev/.next/cache/webpack/client-development/index.pack.gz.old +0 -0
  36. package/src/dev/.next/cache/webpack/client-development-fallback/0.pack.gz +0 -0
  37. package/src/dev/.next/cache/webpack/client-development-fallback/1.pack.gz +0 -0
  38. package/src/dev/.next/cache/webpack/client-development-fallback/index.pack.gz +0 -0
  39. package/src/dev/.next/cache/webpack/client-development-fallback/index.pack.gz.old +0 -0
  40. package/src/dev/.next/cache/webpack/edge-server-development/0.pack.gz +0 -0
  41. package/src/dev/.next/cache/webpack/edge-server-development/1.pack.gz +0 -0
  42. package/src/dev/.next/cache/webpack/edge-server-development/index.pack.gz +0 -0
  43. package/src/dev/.next/cache/webpack/edge-server-development/index.pack.gz.old +0 -0
  44. package/src/dev/.next/cache/webpack/server-development/0.pack.gz +0 -0
  45. package/src/dev/.next/cache/webpack/server-development/1.pack.gz +0 -0
  46. package/src/dev/.next/cache/webpack/server-development/10.pack.gz +0 -0
  47. package/src/dev/.next/cache/webpack/server-development/11.pack.gz +0 -0
  48. package/src/dev/.next/cache/webpack/server-development/12.pack.gz +0 -0
  49. package/src/dev/.next/cache/webpack/server-development/13.pack.gz +0 -0
  50. package/src/dev/.next/cache/webpack/server-development/14.pack.gz +0 -0
  51. package/src/dev/.next/cache/webpack/server-development/15.pack.gz +0 -0
  52. package/src/dev/.next/cache/webpack/server-development/2.pack.gz +0 -0
  53. package/src/dev/.next/cache/webpack/server-development/2.pack.gz_ +0 -0
  54. package/src/dev/.next/cache/webpack/server-development/3.pack.gz +0 -0
  55. package/src/dev/.next/cache/webpack/server-development/3.pack.gz_ +0 -0
  56. package/src/dev/.next/cache/webpack/server-development/4.pack.gz +0 -0
  57. package/src/dev/.next/cache/webpack/server-development/5.pack.gz +0 -0
  58. package/src/dev/.next/cache/webpack/server-development/6.pack.gz +0 -0
  59. package/src/dev/.next/cache/webpack/server-development/6.pack.gz_ +0 -0
  60. package/src/dev/.next/cache/webpack/server-development/7.pack.gz +0 -0
  61. package/src/dev/.next/cache/webpack/server-development/7.pack.gz_ +0 -0
  62. package/src/dev/.next/cache/webpack/server-development/8.pack.gz +0 -0
  63. package/src/dev/.next/cache/webpack/server-development/9.pack.gz +0 -0
  64. package/src/dev/.next/cache/webpack/server-development/9.pack.gz_ +0 -0
  65. package/src/dev/.next/cache/webpack/server-development/index.pack.gz +0 -0
  66. package/src/dev/.next/cache/webpack/server-development/index.pack.gz.old +0 -0
  67. package/src/dev/.next/package.json +1 -0
  68. package/src/dev/.next/prerender-manifest.json +11 -0
  69. package/src/dev/.next/react-loadable-manifest.json +1 -0
  70. package/src/dev/.next/routes-manifest.json +1 -0
  71. package/src/dev/.next/server/app/[...slug]/page.js +360 -0
  72. package/src/dev/.next/server/app/[...slug]/page_client-reference-manifest.js +1 -0
  73. package/src/dev/.next/server/app/page.js +349 -0
  74. package/src/dev/.next/server/app/page_client-reference-manifest.js +1 -0
  75. package/src/dev/.next/server/app-paths-manifest.json +3 -0
  76. package/src/dev/.next/server/edge-runtime-webpack.js +1151 -0
  77. package/src/dev/.next/server/interception-route-rewrite-manifest.js +1 -0
  78. package/src/dev/.next/server/middleware-build-manifest.js +33 -0
  79. package/src/dev/.next/server/middleware-manifest.json +32 -0
  80. package/src/dev/.next/server/middleware-react-loadable-manifest.js +1 -0
  81. package/src/dev/.next/server/middleware.js +1113 -0
  82. package/src/dev/.next/server/next-font-manifest.js +1 -0
  83. package/src/dev/.next/server/next-font-manifest.json +1 -0
  84. package/src/dev/.next/server/pages-manifest.json +5 -0
  85. package/src/dev/.next/server/server-reference-manifest.js +1 -0
  86. package/src/dev/.next/server/server-reference-manifest.json +5 -0
  87. package/src/dev/.next/server/static/webpack/633457081244afec._.hot-update.json +1 -0
  88. package/src/dev/.next/server/vendor-chunks/@readme.js +25 -0
  89. package/src/dev/.next/server/vendor-chunks/@swc.js +55 -0
  90. package/src/dev/.next/server/vendor-chunks/next.js +3659 -0
  91. package/src/dev/.next/server/webpack-runtime.js +209 -0
  92. package/src/dev/.next/static/chunks/app/[...slug]/loading.js +28 -0
  93. package/src/dev/.next/static/chunks/app/[...slug]/page.js +28 -0
  94. package/src/dev/.next/static/chunks/app/layout.js +171 -0
  95. package/src/dev/.next/static/chunks/app/page.js +28 -0
  96. package/src/dev/.next/static/chunks/app-pages-internals.js +182 -0
  97. package/src/dev/.next/static/chunks/main-app.js +1882 -0
  98. package/src/dev/.next/static/chunks/polyfills.js +1 -0
  99. package/src/dev/.next/static/chunks/webpack.js +1393 -0
  100. package/src/dev/.next/static/css/app/layout.css +559 -0
  101. package/src/dev/.next/static/development/_buildManifest.js +1 -0
  102. package/src/dev/.next/static/development/_ssgManifest.js +1 -0
  103. package/src/dev/.next/static/webpack/633457081244afec._.hot-update.json +1 -0
  104. package/src/dev/.next/static/webpack/ec52a3fce0f78db0.webpack.hot-update.json +1 -0
  105. package/src/dev/.next/static/webpack/webpack.ec52a3fce0f78db0.hot-update.js +12 -0
  106. package/src/dev/.next/trace +21 -0
  107. package/src/dev/.next/types/app/[...slug]/page.ts +84 -0
  108. package/src/dev/.next/types/app/layout.ts +84 -0
  109. package/src/dev/.next/types/app/page.ts +84 -0
  110. package/src/dev/.next/types/cache-life.d.ts +141 -0
  111. package/src/dev/.next/types/package.json +1 -0
  112. package/src/dev/.next/types/routes.d.ts +55 -0
  113. package/src/dev/app/Sidebar.js +149 -0
  114. package/src/dev/app/[...slug]/loading.js +16 -0
  115. package/src/dev/app/[...slug]/page.js +43 -0
  116. package/src/dev/app/globals.css +167 -0
  117. package/src/dev/app/layout.js +73 -0
  118. package/src/dev/app/page.js +19 -0
  119. package/src/dev/lib/docs.js +337 -0
  120. package/src/dev/middleware.js +7 -0
  121. package/src/dev/next.config.mjs +22 -0
  122. package/src/index.js +12 -0
  123. package/src/prompts/index.js +352 -0
  124. package/src/utils/claude.js +15 -0
  125. package/src/utils/eyes.js +365 -0
  126. package/src/utils/git.js +143 -0
  127. package/src/utils/lint.js +99 -0
  128. package/src/utils/reporter.js +319 -0
  129. package/src/utils/setup-templates.js +323 -0
  130. package/src/utils/styles.js +50 -0
  131. package/src/utils/tamagotchi.js +1139 -0
  132. package/src/utils/tips.js +90 -0
  133. package/src/validators/components.js +230 -0
  134. package/src/validators/content.js +53 -0
  135. package/src/validators/duplicates.js +45 -0
  136. package/src/validators/frontmatter.js +247 -0
  137. package/src/validators/links.js +68 -0
  138. package/src/validators/nesting.js +50 -0
  139. package/src/validators/numbering.js +136 -0
  140. package/src/validators/oas-reference.js +126 -0
  141. package/src/validators/oas-schema.js +106 -0
  142. package/src/validators/ordering.js +121 -0
  143. package/src/validators/recipes.js +143 -0
  144. package/vendor/TOOLS.md +19 -0
@@ -0,0 +1,349 @@
1
+ /*
2
+ * ATTENTION: An "eval-source-map" devtool has been used.
3
+ * This devtool is neither made for production nor for readable output files.
4
+ * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools.
5
+ * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
6
+ * or disable the default devtool with "devtool: false".
7
+ * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
8
+ */
9
+ (() => {
10
+ var exports = {};
11
+ exports.id = "app/page";
12
+ exports.ids = ["app/page"];
13
+ exports.modules = {
14
+
15
+ /***/ "(rsc)/../../node_modules/next/dist/build/webpack/loaders/next-app-loader/index.js?name=app%2Fpage&page=%2Fpage&appPaths=%2Fpage&pagePath=private-next-app-dir%2Fpage.js&appDir=%2FUsers%2Fgkoberger%2FSites%2Freadme%2F2026-readme-cli%2Fsrc%2Fdev%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fgkoberger%2FSites%2Freadme%2F2026-readme-cli%2Fsrc%2Fdev&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D&isGlobalNotFoundEnabled=!":
16
+ /*!******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
17
+ !*** ../../node_modules/next/dist/build/webpack/loaders/next-app-loader/index.js?name=app%2Fpage&page=%2Fpage&appPaths=%2Fpage&pagePath=private-next-app-dir%2Fpage.js&appDir=%2FUsers%2Fgkoberger%2FSites%2Freadme%2F2026-readme-cli%2Fsrc%2Fdev%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fgkoberger%2FSites%2Freadme%2F2026-readme-cli%2Fsrc%2Fdev&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D&isGlobalNotFoundEnabled=! ***!
18
+ \******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
19
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
20
+
21
+ "use strict";
22
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ GlobalError: () => (/* reexport default from dynamic */ next_dist_client_components_builtin_global_error_js__WEBPACK_IMPORTED_MODULE_25___default.a),\n/* harmony export */ __next_app__: () => (/* binding */ __next_app__),\n/* harmony export */ handler: () => (/* binding */ handler),\n/* harmony export */ pages: () => (/* binding */ pages),\n/* harmony export */ routeModule: () => (/* binding */ routeModule),\n/* harmony export */ tree: () => (/* binding */ tree)\n/* harmony export */ });\n/* harmony import */ var next_dist_server_route_modules_app_page_module_compiled__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! next/dist/server/route-modules/app-page/module.compiled */ \"(ssr)/../../node_modules/next/dist/server/route-modules/app-page/module.compiled.js?ca56\");\n/* harmony import */ var next_dist_server_route_modules_app_page_module_compiled__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_route_modules_app_page_module_compiled__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var next_dist_server_route_kind__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! next/dist/server/route-kind */ \"(rsc)/../../node_modules/next/dist/server/route-kind.js\");\n/* harmony import */ var next_dist_server_instrumentation_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/dist/server/instrumentation/utils */ \"(rsc)/../../node_modules/next/dist/server/instrumentation/utils.js\");\n/* harmony import */ var next_dist_server_lib_trace_tracer__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! next/dist/server/lib/trace/tracer */ \"(rsc)/../../node_modules/next/dist/server/lib/trace/tracer.js\");\n/* harmony import */ var next_dist_server_lib_trace_tracer__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_lib_trace_tracer__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! next/dist/server/request-meta */ \"(rsc)/../../node_modules/next/dist/server/request-meta.js\");\n/* harmony import */ var next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var next_dist_server_lib_trace_constants__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! next/dist/server/lib/trace/constants */ \"(rsc)/../../node_modules/next/dist/server/lib/trace/constants.js\");\n/* harmony import */ var next_dist_server_lib_trace_constants__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_lib_trace_constants__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var next_dist_server_app_render_interop_default__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! next/dist/server/app-render/interop-default */ \"(rsc)/../../node_modules/next/dist/server/app-render/interop-default.js\");\n/* harmony import */ var next_dist_server_app_render_strip_flight_headers__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! next/dist/server/app-render/strip-flight-headers */ \"(rsc)/../../node_modules/next/dist/server/app-render/strip-flight-headers.js\");\n/* harmony import */ var next_dist_server_base_http_node__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! next/dist/server/base-http/node */ \"(rsc)/../../node_modules/next/dist/server/base-http/node.js\");\n/* harmony import */ var next_dist_server_base_http_node__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_base_http_node__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var next_dist_server_lib_experimental_ppr__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! next/dist/server/lib/experimental/ppr */ \"(rsc)/../../node_modules/next/dist/server/lib/experimental/ppr.js\");\n/* harmony import */ var next_dist_server_lib_experimental_ppr__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_lib_experimental_ppr__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var next_dist_server_request_fallback_params__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! next/dist/server/request/fallback-params */ \"(rsc)/../../node_modules/next/dist/server/request/fallback-params.js\");\n/* harmony import */ var next_dist_server_app_render_encryption_utils__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! next/dist/server/app-render/encryption-utils */ \"(rsc)/../../node_modules/next/dist/server/app-render/encryption-utils.js\");\n/* harmony import */ var next_dist_server_app_render_encryption_utils__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_app_render_encryption_utils__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var next_dist_server_lib_streaming_metadata__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! next/dist/server/lib/streaming-metadata */ \"(rsc)/../../node_modules/next/dist/server/lib/streaming-metadata.js\");\n/* harmony import */ var next_dist_server_lib_streaming_metadata__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_lib_streaming_metadata__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var next_dist_server_app_render_action_utils__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! next/dist/server/app-render/action-utils */ \"(rsc)/../../node_modules/next/dist/server/app-render/action-utils.js\");\n/* harmony import */ var next_dist_server_app_render_action_utils__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_app_render_action_utils__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var next_dist_shared_lib_router_utils_app_paths__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! next/dist/shared/lib/router/utils/app-paths */ \"next/dist/shared/lib/router/utils/app-paths\");\n/* harmony import */ var next_dist_shared_lib_router_utils_app_paths__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(next_dist_shared_lib_router_utils_app_paths__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var next_dist_server_lib_server_action_request_meta__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! next/dist/server/lib/server-action-request-meta */ \"(rsc)/../../node_modules/next/dist/server/lib/server-action-request-meta.js\");\n/* harmony import */ var next_dist_server_lib_server_action_request_meta__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_lib_server_action_request_meta__WEBPACK_IMPORTED_MODULE_15__);\n/* harmony import */ var next_dist_client_components_app_router_headers__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! next/dist/client/components/app-router-headers */ \"(rsc)/../../node_modules/next/dist/client/components/app-router-headers.js\");\n/* harmony import */ var next_dist_client_components_app_router_headers__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(next_dist_client_components_app_router_headers__WEBPACK_IMPORTED_MODULE_16__);\n/* harmony import */ var next_dist_shared_lib_router_utils_is_bot__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! next/dist/shared/lib/router/utils/is-bot */ \"next/dist/shared/lib/router/utils/is-bot\");\n/* harmony import */ var next_dist_shared_lib_router_utils_is_bot__WEBPACK_IMPORTED_MODULE_17___default = /*#__PURE__*/__webpack_require__.n(next_dist_shared_lib_router_utils_is_bot__WEBPACK_IMPORTED_MODULE_17__);\n/* harmony import */ var next_dist_server_response_cache__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! next/dist/server/response-cache */ \"(rsc)/../../node_modules/next/dist/server/response-cache/index.js\");\n/* harmony import */ var next_dist_server_response_cache__WEBPACK_IMPORTED_MODULE_18___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_response_cache__WEBPACK_IMPORTED_MODULE_18__);\n/* harmony import */ var next_dist_lib_fallback__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! next/dist/lib/fallback */ \"(rsc)/../../node_modules/next/dist/lib/fallback.js\");\n/* harmony import */ var next_dist_lib_fallback__WEBPACK_IMPORTED_MODULE_19___default = /*#__PURE__*/__webpack_require__.n(next_dist_lib_fallback__WEBPACK_IMPORTED_MODULE_19__);\n/* harmony import */ var next_dist_server_render_result__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! next/dist/server/render-result */ \"(rsc)/../../node_modules/next/dist/server/render-result.js\");\n/* harmony import */ var next_dist_lib_constants__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! next/dist/lib/constants */ \"(rsc)/../../node_modules/next/dist/lib/constants.js\");\n/* harmony import */ var next_dist_lib_constants__WEBPACK_IMPORTED_MODULE_21___default = /*#__PURE__*/__webpack_require__.n(next_dist_lib_constants__WEBPACK_IMPORTED_MODULE_21__);\n/* harmony import */ var next_dist_server_stream_utils_encoded_tags__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! next/dist/server/stream-utils/encoded-tags */ \"(rsc)/../../node_modules/next/dist/server/stream-utils/encoded-tags.js\");\n/* harmony import */ var next_dist_server_send_payload__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! next/dist/server/send-payload */ \"(rsc)/../../node_modules/next/dist/server/send-payload.js\");\n/* harmony import */ var next_dist_server_send_payload__WEBPACK_IMPORTED_MODULE_23___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_send_payload__WEBPACK_IMPORTED_MODULE_23__);\n/* harmony import */ var next_dist_shared_lib_no_fallback_error_external__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! next/dist/shared/lib/no-fallback-error.external */ \"next/dist/shared/lib/no-fallback-error.external\");\n/* harmony import */ var next_dist_shared_lib_no_fallback_error_external__WEBPACK_IMPORTED_MODULE_24___default = /*#__PURE__*/__webpack_require__.n(next_dist_shared_lib_no_fallback_error_external__WEBPACK_IMPORTED_MODULE_24__);\n/* harmony import */ var next_dist_client_components_builtin_global_error_js__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! next/dist/client/components/builtin/global-error.js */ \"(rsc)/../../node_modules/next/dist/client/components/builtin/global-error.js\");\n/* harmony import */ var next_dist_client_components_builtin_global_error_js__WEBPACK_IMPORTED_MODULE_25___default = /*#__PURE__*/__webpack_require__.n(next_dist_client_components_builtin_global_error_js__WEBPACK_IMPORTED_MODULE_25__);\n/* harmony import */ var next_dist_server_app_render_entry_base__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! next/dist/server/app-render/entry-base */ \"(rsc)/../../node_modules/next/dist/server/app-render/entry-base.js\");\n/* harmony import */ var next_dist_server_app_render_entry_base__WEBPACK_IMPORTED_MODULE_26___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_app_render_entry_base__WEBPACK_IMPORTED_MODULE_26__);\n/* harmony import */ var next_dist_client_components_redirect_status_code__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! next/dist/client/components/redirect-status-code */ \"(rsc)/../../node_modules/next/dist/client/components/redirect-status-code.js\");\n/* harmony import */ var next_dist_client_components_redirect_status_code__WEBPACK_IMPORTED_MODULE_27___default = /*#__PURE__*/__webpack_require__.n(next_dist_client_components_redirect_status_code__WEBPACK_IMPORTED_MODULE_27__);\n/* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {};\n/* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in next_dist_server_app_render_entry_base__WEBPACK_IMPORTED_MODULE_26__) if([\"default\",\"tree\",\"pages\",\"GlobalError\",\"__next_app__\",\"routeModule\",\"handler\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => next_dist_server_app_render_entry_base__WEBPACK_IMPORTED_MODULE_26__[__WEBPACK_IMPORT_KEY__]\n/* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);\nconst module0 = () => Promise.resolve(/*! import() eager */).then(__webpack_require__.bind(__webpack_require__, /*! ./app/layout.js */ \"(rsc)/./app/layout.js\"));\nconst module1 = () => Promise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! next/dist/client/components/builtin/global-error.js */ \"(rsc)/../../node_modules/next/dist/client/components/builtin/global-error.js\", 23));\nconst module2 = () => Promise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! next/dist/client/components/builtin/not-found.js */ \"(rsc)/../../node_modules/next/dist/client/components/builtin/not-found.js\", 23));\nconst module3 = () => Promise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! next/dist/client/components/builtin/forbidden.js */ \"(rsc)/../../node_modules/next/dist/client/components/builtin/forbidden.js\", 23));\nconst module4 = () => Promise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! next/dist/client/components/builtin/unauthorized.js */ \"(rsc)/../../node_modules/next/dist/client/components/builtin/unauthorized.js\", 23));\nconst page5 = () => Promise.resolve(/*! import() eager */).then(__webpack_require__.bind(__webpack_require__, /*! ./app/page.js */ \"(rsc)/./app/page.js\"));\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n// We inject the tree and pages here so that we can use them in the route\n// module.\nconst tree = {\n children: [\n '',\n {\n children: ['__PAGE__', {}, {\n page: [page5, \"/Users/gkoberger/Sites/readme/2026-readme-cli/src/dev/app/page.js\"],\n \n }]\n },\n {\n 'layout': [module0, \"/Users/gkoberger/Sites/readme/2026-readme-cli/src/dev/app/layout.js\"],\n'global-error': [module1, \"next/dist/client/components/builtin/global-error.js\"],\n'not-found': [module2, \"next/dist/client/components/builtin/not-found.js\"],\n'forbidden': [module3, \"next/dist/client/components/builtin/forbidden.js\"],\n'unauthorized': [module4, \"next/dist/client/components/builtin/unauthorized.js\"],\n \n }\n ]\n }.children;\nconst pages = [\"/Users/gkoberger/Sites/readme/2026-readme-cli/src/dev/app/page.js\"];\n\n\n\nconst __next_app_require__ = __webpack_require__\nconst __next_app_load_chunk__ = () => Promise.resolve()\nconst __next_app__ = {\n require: __next_app_require__,\n loadChunk: __next_app_load_chunk__\n};\n\n\n\n// Create and export the route module that will be consumed.\nconst routeModule = new next_dist_server_route_modules_app_page_module_compiled__WEBPACK_IMPORTED_MODULE_0__.AppPageRouteModule({\n definition: {\n kind: next_dist_server_route_kind__WEBPACK_IMPORTED_MODULE_1__.RouteKind.APP_PAGE,\n page: \"/page\",\n pathname: \"/\",\n // The following aren't used in production.\n bundlePath: '',\n filename: '',\n appPaths: []\n },\n userland: {\n loaderTree: tree\n },\n distDir: \".next\" || 0,\n relativeProjectDir: \"../../../../../2026-readme-cli/src/dev\" || 0\n});\nasync function handler(req, res, ctx) {\n var _this;\n let srcPage = \"/page\";\n // turbopack doesn't normalize `/index` in the page name\n // so we need to to process dynamic routes properly\n // TODO: fix turbopack providing differing value from webpack\n if (false) {} else if (srcPage === '/index') {\n // we always normalize /index specifically\n srcPage = '/';\n }\n const multiZoneDraftMode = false;\n const initialPostponed = (0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.getRequestMeta)(req, 'postponed');\n // TODO: replace with more specific flags\n const minimalMode = (0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.getRequestMeta)(req, 'minimalMode');\n const prepareResult = await routeModule.prepare(req, res, {\n srcPage,\n multiZoneDraftMode\n });\n if (!prepareResult) {\n res.statusCode = 400;\n res.end('Bad Request');\n ctx.waitUntil == null ? void 0 : ctx.waitUntil.call(ctx, Promise.resolve());\n return null;\n }\n const { buildId, query, params, parsedUrl, pageIsDynamic, buildManifest, nextFontManifest, reactLoadableManifest, serverActionsManifest, clientReferenceManifest, subresourceIntegrityManifest, prerenderManifest, isDraftMode, resolvedPathname, revalidateOnlyGenerated, routerServerContext, nextConfig, interceptionRoutePatterns } = prepareResult;\n const pathname = parsedUrl.pathname || '/';\n const normalizedSrcPage = (0,next_dist_shared_lib_router_utils_app_paths__WEBPACK_IMPORTED_MODULE_14__.normalizeAppPath)(srcPage);\n let { isOnDemandRevalidate } = prepareResult;\n const prerenderInfo = routeModule.match(pathname, prerenderManifest);\n const isPrerendered = !!prerenderManifest.routes[resolvedPathname];\n let isSSG = Boolean(prerenderInfo || isPrerendered || prerenderManifest.routes[normalizedSrcPage]);\n const userAgent = req.headers['user-agent'] || '';\n const botType = (0,next_dist_shared_lib_router_utils_is_bot__WEBPACK_IMPORTED_MODULE_17__.getBotType)(userAgent);\n const isHtmlBot = (0,next_dist_server_lib_streaming_metadata__WEBPACK_IMPORTED_MODULE_12__.isHtmlBotRequest)(req);\n /**\n * If true, this indicates that the request being made is for an app\n * prefetch request.\n */ const isPrefetchRSCRequest = (0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.getRequestMeta)(req, 'isPrefetchRSCRequest') ?? req.headers[next_dist_client_components_app_router_headers__WEBPACK_IMPORTED_MODULE_16__.NEXT_ROUTER_PREFETCH_HEADER] === '1' // exclude runtime prefetches, which use '2'\n ;\n // NOTE: Don't delete headers[RSC] yet, it still needs to be used in renderToHTML later\n const isRSCRequest = (0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.getRequestMeta)(req, 'isRSCRequest') ?? Boolean(req.headers[next_dist_client_components_app_router_headers__WEBPACK_IMPORTED_MODULE_16__.RSC_HEADER]);\n const isPossibleServerAction = (0,next_dist_server_lib_server_action_request_meta__WEBPACK_IMPORTED_MODULE_15__.getIsPossibleServerAction)(req);\n /**\n * If the route being rendered is an app page, and the ppr feature has been\n * enabled, then the given route _could_ support PPR.\n */ const couldSupportPPR = (0,next_dist_server_lib_experimental_ppr__WEBPACK_IMPORTED_MODULE_9__.checkIsAppPPREnabled)(nextConfig.experimental.ppr);\n // When enabled, this will allow the use of the `?__nextppronly` query to\n // enable debugging of the static shell.\n const hasDebugStaticShellQuery = false && 0;\n // When enabled, this will allow the use of the `?__nextppronly` query\n // to enable debugging of the fallback shell.\n const hasDebugFallbackShellQuery = hasDebugStaticShellQuery && query.__nextppronly === 'fallback';\n // This page supports PPR if it is marked as being `PARTIALLY_STATIC` in the\n // prerender manifest and this is an app page.\n const isRoutePPREnabled = couldSupportPPR && (((_this = prerenderManifest.routes[normalizedSrcPage] ?? prerenderManifest.dynamicRoutes[normalizedSrcPage]) == null ? void 0 : _this.renderingMode) === 'PARTIALLY_STATIC' || // Ideally we'd want to check the appConfig to see if this page has PPR\n // enabled or not, but that would require plumbing the appConfig through\n // to the server during development. We assume that the page supports it\n // but only during development.\n hasDebugStaticShellQuery && (routeModule.isDev === true || (routerServerContext == null ? void 0 : routerServerContext.experimentalTestProxy) === true));\n const isDebugStaticShell = hasDebugStaticShellQuery && isRoutePPREnabled;\n // We should enable debugging dynamic accesses when the static shell\n // debugging has been enabled and we're also in development mode.\n const isDebugDynamicAccesses = isDebugStaticShell && routeModule.isDev === true;\n const isDebugFallbackShell = hasDebugFallbackShellQuery && isRoutePPREnabled;\n // If we're in minimal mode, then try to get the postponed information from\n // the request metadata. If available, use it for resuming the postponed\n // render.\n const minimalPostponed = isRoutePPREnabled ? initialPostponed : undefined;\n // If PPR is enabled, and this is a RSC request (but not a prefetch), then\n // we can use this fact to only generate the flight data for the request\n // because we can't cache the HTML (as it's also dynamic).\n const isDynamicRSCRequest = isRoutePPREnabled && isRSCRequest && !isPrefetchRSCRequest;\n // Need to read this before it's stripped by stripFlightHeaders. We don't\n // need to transfer it to the request meta because it's only read\n // within this function; the static segment data should have already been\n // generated, so we will always either return a static response or a 404.\n const segmentPrefetchHeader = (0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.getRequestMeta)(req, 'segmentPrefetchRSCRequest');\n // TODO: investigate existing bug with shouldServeStreamingMetadata always\n // being true for a revalidate due to modifying the base-server this.renderOpts\n // when fixing this to correct logic it causes hydration issue since we set\n // serveStreamingMetadata to true during export\n let serveStreamingMetadata = !userAgent ? true : (0,next_dist_server_lib_streaming_metadata__WEBPACK_IMPORTED_MODULE_12__.shouldServeStreamingMetadata)(userAgent, nextConfig.htmlLimitedBots);\n if (isHtmlBot && isRoutePPREnabled) {\n isSSG = false;\n serveStreamingMetadata = false;\n }\n // In development, we always want to generate dynamic HTML.\n let supportsDynamicResponse = // If we're in development, we always support dynamic HTML, unless it's\n // a data request, in which case we only produce static HTML.\n routeModule.isDev === true || // If this is not SSG or does not have static paths, then it supports\n // dynamic HTML.\n !isSSG || // If this request has provided postponed data, it supports dynamic\n // HTML.\n typeof initialPostponed === 'string' || // If this is a dynamic RSC request, then this render supports dynamic\n // HTML (it's dynamic).\n isDynamicRSCRequest;\n // When html bots request PPR page, perform the full dynamic rendering.\n const shouldWaitOnAllReady = isHtmlBot && isRoutePPREnabled;\n let ssgCacheKey = null;\n if (!isDraftMode && isSSG && !supportsDynamicResponse && !isPossibleServerAction && !minimalPostponed && !isDynamicRSCRequest) {\n ssgCacheKey = resolvedPathname;\n }\n // the staticPathKey differs from ssgCacheKey since\n // ssgCacheKey is null in dev since we're always in \"dynamic\"\n // mode in dev to bypass the cache, but we still need to honor\n // dynamicParams = false in dev mode\n let staticPathKey = ssgCacheKey;\n if (!staticPathKey && routeModule.isDev) {\n staticPathKey = resolvedPathname;\n }\n // If this is a request for an app path that should be statically generated\n // and we aren't in the edge runtime, strip the flight headers so it will\n // generate the static response.\n if (!routeModule.isDev && !isDraftMode && isSSG && isRSCRequest && !isDynamicRSCRequest) {\n (0,next_dist_server_app_render_strip_flight_headers__WEBPACK_IMPORTED_MODULE_7__.stripFlightHeaders)(req.headers);\n }\n const ComponentMod = {\n ...next_dist_server_app_render_entry_base__WEBPACK_IMPORTED_MODULE_26__,\n tree,\n pages,\n GlobalError: (next_dist_client_components_builtin_global_error_js__WEBPACK_IMPORTED_MODULE_25___default()),\n handler,\n routeModule,\n __next_app__\n };\n // Before rendering (which initializes component tree modules), we have to\n // set the reference manifests to our global store so Server Action's\n // encryption util can access to them at the top level of the page module.\n if (serverActionsManifest && clientReferenceManifest) {\n (0,next_dist_server_app_render_encryption_utils__WEBPACK_IMPORTED_MODULE_11__.setReferenceManifestsSingleton)({\n page: srcPage,\n clientReferenceManifest,\n serverActionsManifest,\n serverModuleMap: (0,next_dist_server_app_render_action_utils__WEBPACK_IMPORTED_MODULE_13__.createServerModuleMap)({\n serverActionsManifest\n })\n });\n }\n const method = req.method || 'GET';\n const tracer = (0,next_dist_server_lib_trace_tracer__WEBPACK_IMPORTED_MODULE_3__.getTracer)();\n const activeSpan = tracer.getActiveScopeSpan();\n try {\n const varyHeader = routeModule.getVaryHeader(resolvedPathname, interceptionRoutePatterns);\n res.setHeader('Vary', varyHeader);\n const invokeRouteModule = async (span, context)=>{\n const nextReq = new next_dist_server_base_http_node__WEBPACK_IMPORTED_MODULE_8__.NodeNextRequest(req);\n const nextRes = new next_dist_server_base_http_node__WEBPACK_IMPORTED_MODULE_8__.NodeNextResponse(res);\n // TODO: adapt for putting the RDC inside the postponed data\n // If we're in dev, and this isn't a prefetch or a server action,\n // we should seed the resume data cache.\n if (true) {\n if (nextConfig.experimental.cacheComponents && !isPrefetchRSCRequest && !context.renderOpts.isPossibleServerAction) {\n const warmup = await routeModule.warmup(nextReq, nextRes, context);\n // If the warmup is successful, we should use the resume data\n // cache from the warmup.\n if (warmup.metadata.renderResumeDataCache) {\n context.renderOpts.renderResumeDataCache = warmup.metadata.renderResumeDataCache;\n }\n }\n }\n return routeModule.render(nextReq, nextRes, context).finally(()=>{\n if (!span) return;\n span.setAttributes({\n 'http.status_code': res.statusCode,\n 'next.rsc': false\n });\n const rootSpanAttributes = tracer.getRootSpanAttributes();\n // We were unable to get attributes, probably OTEL is not enabled\n if (!rootSpanAttributes) {\n return;\n }\n if (rootSpanAttributes.get('next.span_type') !== next_dist_server_lib_trace_constants__WEBPACK_IMPORTED_MODULE_5__.BaseServerSpan.handleRequest) {\n console.warn(`Unexpected root span type '${rootSpanAttributes.get('next.span_type')}'. Please report this Next.js issue https://github.com/vercel/next.js`);\n return;\n }\n const route = rootSpanAttributes.get('next.route');\n if (route) {\n const name = `${method} ${route}`;\n span.setAttributes({\n 'next.route': route,\n 'http.route': route,\n 'next.span_name': name\n });\n span.updateName(name);\n } else {\n span.updateName(`${method} ${req.url}`);\n }\n });\n };\n const doRender = async ({ span, postponed, fallbackRouteParams })=>{\n const context = {\n query,\n params,\n page: normalizedSrcPage,\n sharedContext: {\n buildId\n },\n serverComponentsHmrCache: (0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.getRequestMeta)(req, 'serverComponentsHmrCache'),\n fallbackRouteParams,\n renderOpts: {\n App: ()=>null,\n Document: ()=>null,\n pageConfig: {},\n ComponentMod,\n Component: (0,next_dist_server_app_render_interop_default__WEBPACK_IMPORTED_MODULE_6__.interopDefault)(ComponentMod),\n params,\n routeModule,\n page: srcPage,\n postponed,\n shouldWaitOnAllReady,\n serveStreamingMetadata,\n supportsDynamicResponse: typeof postponed === 'string' || supportsDynamicResponse,\n buildManifest,\n nextFontManifest,\n reactLoadableManifest,\n subresourceIntegrityManifest,\n serverActionsManifest,\n clientReferenceManifest,\n setIsrStatus: routerServerContext == null ? void 0 : routerServerContext.setIsrStatus,\n dir: true ? (__webpack_require__(/*! path */ \"path\").join)(/* turbopackIgnore: true */ process.cwd(), routeModule.relativeProjectDir) : 0,\n isDraftMode,\n isRevalidate: isSSG && !postponed && !isDynamicRSCRequest,\n botType,\n isOnDemandRevalidate,\n isPossibleServerAction,\n assetPrefix: nextConfig.assetPrefix,\n nextConfigOutput: nextConfig.output,\n crossOrigin: nextConfig.crossOrigin,\n trailingSlash: nextConfig.trailingSlash,\n previewProps: prerenderManifest.preview,\n deploymentId: nextConfig.deploymentId,\n enableTainting: nextConfig.experimental.taint,\n htmlLimitedBots: nextConfig.htmlLimitedBots,\n devtoolSegmentExplorer: nextConfig.experimental.devtoolSegmentExplorer,\n reactMaxHeadersLength: nextConfig.reactMaxHeadersLength,\n multiZoneDraftMode,\n incrementalCache: (0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.getRequestMeta)(req, 'incrementalCache'),\n cacheLifeProfiles: nextConfig.experimental.cacheLife,\n basePath: nextConfig.basePath,\n serverActions: nextConfig.experimental.serverActions,\n ...isDebugStaticShell || isDebugDynamicAccesses ? {\n nextExport: true,\n supportsDynamicResponse: false,\n isStaticGeneration: true,\n isRevalidate: true,\n isDebugDynamicAccesses: isDebugDynamicAccesses\n } : {},\n experimental: {\n isRoutePPREnabled,\n expireTime: nextConfig.expireTime,\n staleTimes: nextConfig.experimental.staleTimes,\n cacheComponents: Boolean(nextConfig.experimental.cacheComponents),\n clientSegmentCache: Boolean(nextConfig.experimental.clientSegmentCache),\n clientParamParsing: Boolean(nextConfig.experimental.clientParamParsing),\n dynamicOnHover: Boolean(nextConfig.experimental.dynamicOnHover),\n inlineCss: Boolean(nextConfig.experimental.inlineCss),\n authInterrupts: Boolean(nextConfig.experimental.authInterrupts),\n clientTraceMetadata: nextConfig.experimental.clientTraceMetadata || []\n },\n waitUntil: ctx.waitUntil,\n onClose: (cb)=>{\n res.on('close', cb);\n },\n onAfterTaskError: ()=>{},\n onInstrumentationRequestError: (error, _request, errorContext)=>routeModule.onRequestError(req, error, errorContext, routerServerContext),\n err: (0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.getRequestMeta)(req, 'invokeError'),\n dev: routeModule.isDev\n }\n };\n const result = await invokeRouteModule(span, context);\n const { metadata } = result;\n const { cacheControl, headers = {}, // Add any fetch tags that were on the page to the response headers.\n fetchTags: cacheTags } = metadata;\n if (cacheTags) {\n headers[next_dist_lib_constants__WEBPACK_IMPORTED_MODULE_21__.NEXT_CACHE_TAGS_HEADER] = cacheTags;\n }\n // Pull any fetch metrics from the render onto the request.\n ;\n req.fetchMetrics = metadata.fetchMetrics;\n // we don't throw static to dynamic errors in dev as isSSG\n // is a best guess in dev since we don't have the prerender pass\n // to know whether the path is actually static or not\n if (isSSG && (cacheControl == null ? void 0 : cacheControl.revalidate) === 0 && !routeModule.isDev && !isRoutePPREnabled) {\n const staticBailoutInfo = metadata.staticBailoutInfo;\n const err = Object.defineProperty(new Error(`Page changed from static to dynamic at runtime ${resolvedPathname}${(staticBailoutInfo == null ? void 0 : staticBailoutInfo.description) ? `, reason: ${staticBailoutInfo.description}` : ``}` + `\\nsee more here https://nextjs.org/docs/messages/app-static-to-dynamic-error`), \"__NEXT_ERROR_CODE\", {\n value: \"E132\",\n enumerable: false,\n configurable: true\n });\n if (staticBailoutInfo == null ? void 0 : staticBailoutInfo.stack) {\n const stack = staticBailoutInfo.stack;\n err.stack = err.message + stack.substring(stack.indexOf('\\n'));\n }\n throw err;\n }\n return {\n value: {\n kind: next_dist_server_response_cache__WEBPACK_IMPORTED_MODULE_18__.CachedRouteKind.APP_PAGE,\n html: result,\n headers,\n rscData: metadata.flightData,\n postponed: metadata.postponed,\n status: metadata.statusCode,\n segmentData: metadata.segmentData\n },\n cacheControl\n };\n };\n const responseGenerator = async ({ hasResolved, previousCacheEntry, isRevalidating, span })=>{\n const isProduction = routeModule.isDev === false;\n const didRespond = hasResolved || res.writableEnded;\n // skip on-demand revalidate if cache is not present and\n // revalidate-if-generated is set\n if (isOnDemandRevalidate && revalidateOnlyGenerated && !previousCacheEntry && !minimalMode) {\n if (routerServerContext == null ? void 0 : routerServerContext.render404) {\n await routerServerContext.render404(req, res);\n } else {\n res.statusCode = 404;\n res.end('This page could not be found');\n }\n return null;\n }\n let fallbackMode;\n if (prerenderInfo) {\n fallbackMode = (0,next_dist_lib_fallback__WEBPACK_IMPORTED_MODULE_19__.parseFallbackField)(prerenderInfo.fallback);\n }\n // When serving a HTML bot request, we want to serve a blocking render and\n // not the prerendered page. This ensures that the correct content is served\n // to the bot in the head.\n if (fallbackMode === next_dist_lib_fallback__WEBPACK_IMPORTED_MODULE_19__.FallbackMode.PRERENDER && (0,next_dist_shared_lib_router_utils_is_bot__WEBPACK_IMPORTED_MODULE_17__.isBot)(userAgent)) {\n if (!isRoutePPREnabled || isHtmlBot) {\n fallbackMode = next_dist_lib_fallback__WEBPACK_IMPORTED_MODULE_19__.FallbackMode.BLOCKING_STATIC_RENDER;\n }\n }\n if ((previousCacheEntry == null ? void 0 : previousCacheEntry.isStale) === -1) {\n isOnDemandRevalidate = true;\n }\n // TODO: adapt for PPR\n // only allow on-demand revalidate for fallback: true/blocking\n // or for prerendered fallback: false paths\n if (isOnDemandRevalidate && (fallbackMode !== next_dist_lib_fallback__WEBPACK_IMPORTED_MODULE_19__.FallbackMode.NOT_FOUND || previousCacheEntry)) {\n fallbackMode = next_dist_lib_fallback__WEBPACK_IMPORTED_MODULE_19__.FallbackMode.BLOCKING_STATIC_RENDER;\n }\n if (!minimalMode && fallbackMode !== next_dist_lib_fallback__WEBPACK_IMPORTED_MODULE_19__.FallbackMode.BLOCKING_STATIC_RENDER && staticPathKey && !didRespond && !isDraftMode && pageIsDynamic && (isProduction || !isPrerendered)) {\n // if the page has dynamicParams: false and this pathname wasn't\n // prerendered trigger the no fallback handling\n if (// In development, fall through to render to handle missing\n // getStaticPaths.\n (isProduction || prerenderInfo) && // When fallback isn't present, abort this render so we 404\n fallbackMode === next_dist_lib_fallback__WEBPACK_IMPORTED_MODULE_19__.FallbackMode.NOT_FOUND) {\n throw new next_dist_shared_lib_no_fallback_error_external__WEBPACK_IMPORTED_MODULE_24__.NoFallbackError();\n }\n let fallbackResponse;\n if (isRoutePPREnabled && !isRSCRequest) {\n const cacheKey = typeof (prerenderInfo == null ? void 0 : prerenderInfo.fallback) === 'string' ? prerenderInfo.fallback : isProduction ? normalizedSrcPage : null;\n // We use the response cache here to handle the revalidation and\n // management of the fallback shell.\n fallbackResponse = await routeModule.handleResponse({\n cacheKey,\n req,\n nextConfig,\n routeKind: next_dist_server_route_kind__WEBPACK_IMPORTED_MODULE_1__.RouteKind.APP_PAGE,\n isFallback: true,\n prerenderManifest,\n isRoutePPREnabled,\n responseGenerator: async ()=>doRender({\n span,\n // We pass `undefined` as rendering a fallback isn't resumed\n // here.\n postponed: undefined,\n fallbackRouteParams: // If we're in production or we're debugging the fallback\n // shell then we should postpone when dynamic params are\n // accessed.\n isProduction || isDebugFallbackShell ? (0,next_dist_server_request_fallback_params__WEBPACK_IMPORTED_MODULE_10__.getFallbackRouteParams)(normalizedSrcPage) : null\n }),\n waitUntil: ctx.waitUntil\n });\n // If the fallback response was set to null, then we should return null.\n if (fallbackResponse === null) return null;\n // Otherwise, if we did get a fallback response, we should return it.\n if (fallbackResponse) {\n // Remove the cache control from the response to prevent it from being\n // used in the surrounding cache.\n delete fallbackResponse.cacheControl;\n return fallbackResponse;\n }\n }\n }\n // Only requests that aren't revalidating can be resumed. If we have the\n // minimal postponed data, then we should resume the render with it.\n const postponed = !isOnDemandRevalidate && !isRevalidating && minimalPostponed ? minimalPostponed : undefined;\n // When we're in minimal mode, if we're trying to debug the static shell,\n // we should just return nothing instead of resuming the dynamic render.\n if ((isDebugStaticShell || isDebugDynamicAccesses) && typeof postponed !== 'undefined') {\n return {\n cacheControl: {\n revalidate: 1,\n expire: undefined\n },\n value: {\n kind: next_dist_server_response_cache__WEBPACK_IMPORTED_MODULE_18__.CachedRouteKind.PAGES,\n html: next_dist_server_render_result__WEBPACK_IMPORTED_MODULE_20__[\"default\"].EMPTY,\n pageData: {},\n headers: undefined,\n status: undefined\n }\n };\n }\n // If this is a dynamic route with PPR enabled and the default route\n // matches were set, then we should pass the fallback route params to\n // the renderer as this is a fallback revalidation request.\n const fallbackRouteParams = pageIsDynamic && isRoutePPREnabled && ((0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.getRequestMeta)(req, 'renderFallbackShell') || isDebugFallbackShell) ? (0,next_dist_server_request_fallback_params__WEBPACK_IMPORTED_MODULE_10__.getFallbackRouteParams)(pathname) : null;\n // Perform the render.\n return doRender({\n span,\n postponed,\n fallbackRouteParams\n });\n };\n const handleResponse = async (span)=>{\n var _cacheEntry_value, _cachedData_headers;\n const cacheEntry = await routeModule.handleResponse({\n cacheKey: ssgCacheKey,\n responseGenerator: (c)=>responseGenerator({\n span,\n ...c\n }),\n routeKind: next_dist_server_route_kind__WEBPACK_IMPORTED_MODULE_1__.RouteKind.APP_PAGE,\n isOnDemandRevalidate,\n isRoutePPREnabled,\n req,\n nextConfig,\n prerenderManifest,\n waitUntil: ctx.waitUntil\n });\n if (isDraftMode) {\n res.setHeader('Cache-Control', 'private, no-cache, no-store, max-age=0, must-revalidate');\n }\n // In dev, we should not cache pages for any reason.\n if (routeModule.isDev) {\n res.setHeader('Cache-Control', 'no-store, must-revalidate');\n }\n if (!cacheEntry) {\n if (ssgCacheKey) {\n // A cache entry might not be generated if a response is written\n // in `getInitialProps` or `getServerSideProps`, but those shouldn't\n // have a cache key. If we do have a cache key but we don't end up\n // with a cache entry, then either Next.js or the application has a\n // bug that needs fixing.\n throw Object.defineProperty(new Error('invariant: cache entry required but not generated'), \"__NEXT_ERROR_CODE\", {\n value: \"E62\",\n enumerable: false,\n configurable: true\n });\n }\n return null;\n }\n if (((_cacheEntry_value = cacheEntry.value) == null ? void 0 : _cacheEntry_value.kind) !== next_dist_server_response_cache__WEBPACK_IMPORTED_MODULE_18__.CachedRouteKind.APP_PAGE) {\n var _cacheEntry_value1;\n throw Object.defineProperty(new Error(`Invariant app-page handler received invalid cache entry ${(_cacheEntry_value1 = cacheEntry.value) == null ? void 0 : _cacheEntry_value1.kind}`), \"__NEXT_ERROR_CODE\", {\n value: \"E707\",\n enumerable: false,\n configurable: true\n });\n }\n const didPostpone = typeof cacheEntry.value.postponed === 'string';\n if (isSSG && // We don't want to send a cache header for requests that contain dynamic\n // data. If this is a Dynamic RSC request or wasn't a Prefetch RSC\n // request, then we should set the cache header.\n !isDynamicRSCRequest && (!didPostpone || isPrefetchRSCRequest)) {\n if (!minimalMode) {\n // set x-nextjs-cache header to match the header\n // we set for the image-optimizer\n res.setHeader('x-nextjs-cache', isOnDemandRevalidate ? 'REVALIDATED' : cacheEntry.isMiss ? 'MISS' : cacheEntry.isStale ? 'STALE' : 'HIT');\n }\n // Set a header used by the client router to signal the response is static\n // and should respect the `static` cache staleTime value.\n res.setHeader(next_dist_client_components_app_router_headers__WEBPACK_IMPORTED_MODULE_16__.NEXT_IS_PRERENDER_HEADER, '1');\n }\n const { value: cachedData } = cacheEntry;\n // Coerce the cache control parameter from the render.\n let cacheControl;\n // If this is a resume request in minimal mode it is streamed with dynamic\n // content and should not be cached.\n if (minimalPostponed) {\n cacheControl = {\n revalidate: 0,\n expire: undefined\n };\n } else if (minimalMode && isRSCRequest && !isPrefetchRSCRequest && isRoutePPREnabled) {\n cacheControl = {\n revalidate: 0,\n expire: undefined\n };\n } else if (!routeModule.isDev) {\n // If this is a preview mode request, we shouldn't cache it\n if (isDraftMode) {\n cacheControl = {\n revalidate: 0,\n expire: undefined\n };\n } else if (!isSSG) {\n if (!res.getHeader('Cache-Control')) {\n cacheControl = {\n revalidate: 0,\n expire: undefined\n };\n }\n } else if (cacheEntry.cacheControl) {\n // If the cache entry has a cache control with a revalidate value that's\n // a number, use it.\n if (typeof cacheEntry.cacheControl.revalidate === 'number') {\n var _cacheEntry_cacheControl;\n if (cacheEntry.cacheControl.revalidate < 1) {\n throw Object.defineProperty(new Error(`Invalid revalidate configuration provided: ${cacheEntry.cacheControl.revalidate} < 1`), \"__NEXT_ERROR_CODE\", {\n value: \"E22\",\n enumerable: false,\n configurable: true\n });\n }\n cacheControl = {\n revalidate: cacheEntry.cacheControl.revalidate,\n expire: ((_cacheEntry_cacheControl = cacheEntry.cacheControl) == null ? void 0 : _cacheEntry_cacheControl.expire) ?? nextConfig.expireTime\n };\n } else {\n cacheControl = {\n revalidate: next_dist_lib_constants__WEBPACK_IMPORTED_MODULE_21__.CACHE_ONE_YEAR,\n expire: undefined\n };\n }\n }\n }\n cacheEntry.cacheControl = cacheControl;\n if (typeof segmentPrefetchHeader === 'string' && (cachedData == null ? void 0 : cachedData.kind) === next_dist_server_response_cache__WEBPACK_IMPORTED_MODULE_18__.CachedRouteKind.APP_PAGE && cachedData.segmentData) {\n var _cachedData_headers1;\n // This is a prefetch request issued by the client Segment Cache. These\n // should never reach the application layer (lambda). We should either\n // respond from the cache (HIT) or respond with 204 No Content (MISS).\n // Set a header to indicate that PPR is enabled for this route. This\n // lets the client distinguish between a regular cache miss and a cache\n // miss due to PPR being disabled. In other contexts this header is used\n // to indicate that the response contains dynamic data, but here we're\n // only using it to indicate that the feature is enabled — the segment\n // response itself contains whether the data is dynamic.\n res.setHeader(next_dist_client_components_app_router_headers__WEBPACK_IMPORTED_MODULE_16__.NEXT_DID_POSTPONE_HEADER, '2');\n // Add the cache tags header to the response if it exists and we're in\n // minimal mode while rendering a static page.\n const tags = (_cachedData_headers1 = cachedData.headers) == null ? void 0 : _cachedData_headers1[next_dist_lib_constants__WEBPACK_IMPORTED_MODULE_21__.NEXT_CACHE_TAGS_HEADER];\n if (minimalMode && isSSG && tags && typeof tags === 'string') {\n res.setHeader(next_dist_lib_constants__WEBPACK_IMPORTED_MODULE_21__.NEXT_CACHE_TAGS_HEADER, tags);\n }\n const matchedSegment = cachedData.segmentData.get(segmentPrefetchHeader);\n if (matchedSegment !== undefined) {\n // Cache hit\n return (0,next_dist_server_send_payload__WEBPACK_IMPORTED_MODULE_23__.sendRenderResult)({\n req,\n res,\n generateEtags: nextConfig.generateEtags,\n poweredByHeader: nextConfig.poweredByHeader,\n result: next_dist_server_render_result__WEBPACK_IMPORTED_MODULE_20__[\"default\"].fromStatic(matchedSegment, next_dist_client_components_app_router_headers__WEBPACK_IMPORTED_MODULE_16__.RSC_CONTENT_TYPE_HEADER),\n cacheControl: cacheEntry.cacheControl\n });\n }\n // Cache miss. Either a cache entry for this route has not been generated\n // (which technically should not be possible when PPR is enabled, because\n // at a minimum there should always be a fallback entry) or there's no\n // match for the requested segment. Respond with a 204 No Content. We\n // don't bother to respond with 404, because these requests are only\n // issued as part of a prefetch.\n res.statusCode = 204;\n return (0,next_dist_server_send_payload__WEBPACK_IMPORTED_MODULE_23__.sendRenderResult)({\n req,\n res,\n generateEtags: nextConfig.generateEtags,\n poweredByHeader: nextConfig.poweredByHeader,\n result: next_dist_server_render_result__WEBPACK_IMPORTED_MODULE_20__[\"default\"].EMPTY,\n cacheControl: cacheEntry.cacheControl\n });\n }\n // If there's a callback for `onCacheEntry`, call it with the cache entry\n // and the revalidate options.\n const onCacheEntry = (0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.getRequestMeta)(req, 'onCacheEntry');\n if (onCacheEntry) {\n const finished = await onCacheEntry({\n ...cacheEntry,\n // TODO: remove this when upstream doesn't\n // always expect this value to be \"PAGE\"\n value: {\n ...cacheEntry.value,\n kind: 'PAGE'\n }\n }, {\n url: (0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.getRequestMeta)(req, 'initURL')\n });\n if (finished) {\n // TODO: maybe we have to end the request?\n return null;\n }\n }\n // If the request has a postponed state and it's a resume request we\n // should error.\n if (didPostpone && minimalPostponed) {\n throw Object.defineProperty(new Error('Invariant: postponed state should not be present on a resume request'), \"__NEXT_ERROR_CODE\", {\n value: \"E396\",\n enumerable: false,\n configurable: true\n });\n }\n if (cachedData.headers) {\n const headers = {\n ...cachedData.headers\n };\n if (!minimalMode || !isSSG) {\n delete headers[next_dist_lib_constants__WEBPACK_IMPORTED_MODULE_21__.NEXT_CACHE_TAGS_HEADER];\n }\n for (let [key, value] of Object.entries(headers)){\n if (typeof value === 'undefined') continue;\n if (Array.isArray(value)) {\n for (const v of value){\n res.appendHeader(key, v);\n }\n } else if (typeof value === 'number') {\n value = value.toString();\n res.appendHeader(key, value);\n } else {\n res.appendHeader(key, value);\n }\n }\n }\n // Add the cache tags header to the response if it exists and we're in\n // minimal mode while rendering a static page.\n const tags = (_cachedData_headers = cachedData.headers) == null ? void 0 : _cachedData_headers[next_dist_lib_constants__WEBPACK_IMPORTED_MODULE_21__.NEXT_CACHE_TAGS_HEADER];\n if (minimalMode && isSSG && tags && typeof tags === 'string') {\n res.setHeader(next_dist_lib_constants__WEBPACK_IMPORTED_MODULE_21__.NEXT_CACHE_TAGS_HEADER, tags);\n }\n // If the request is a data request, then we shouldn't set the status code\n // from the response because it should always be 200. This should be gated\n // behind the experimental PPR flag.\n if (cachedData.status && (!isRSCRequest || !isRoutePPREnabled)) {\n res.statusCode = cachedData.status;\n }\n // Redirect information is encoded in RSC payload, so we don't need to use redirect status codes\n if (!minimalMode && cachedData.status && next_dist_client_components_redirect_status_code__WEBPACK_IMPORTED_MODULE_27__.RedirectStatusCode[cachedData.status] && isRSCRequest) {\n res.statusCode = 200;\n }\n // Mark that the request did postpone.\n if (didPostpone) {\n res.setHeader(next_dist_client_components_app_router_headers__WEBPACK_IMPORTED_MODULE_16__.NEXT_DID_POSTPONE_HEADER, '1');\n }\n // we don't go through this block when preview mode is true\n // as preview mode is a dynamic request (bypasses cache) and doesn't\n // generate both HTML and payloads in the same request so continue to just\n // return the generated payload\n if (isRSCRequest && !isDraftMode) {\n // If this is a dynamic RSC request, then stream the response.\n if (typeof cachedData.rscData === 'undefined') {\n if (cachedData.postponed) {\n throw Object.defineProperty(new Error('Invariant: Expected postponed to be undefined'), \"__NEXT_ERROR_CODE\", {\n value: \"E372\",\n enumerable: false,\n configurable: true\n });\n }\n return (0,next_dist_server_send_payload__WEBPACK_IMPORTED_MODULE_23__.sendRenderResult)({\n req,\n res,\n generateEtags: nextConfig.generateEtags,\n poweredByHeader: nextConfig.poweredByHeader,\n result: cachedData.html,\n // Dynamic RSC responses cannot be cached, even if they're\n // configured with `force-static` because we have no way of\n // distinguishing between `force-static` and pages that have no\n // postponed state.\n // TODO: distinguish `force-static` from pages with no postponed state (static)\n cacheControl: isDynamicRSCRequest ? {\n revalidate: 0,\n expire: undefined\n } : cacheEntry.cacheControl\n });\n }\n // As this isn't a prefetch request, we should serve the static flight\n // data.\n return (0,next_dist_server_send_payload__WEBPACK_IMPORTED_MODULE_23__.sendRenderResult)({\n req,\n res,\n generateEtags: nextConfig.generateEtags,\n poweredByHeader: nextConfig.poweredByHeader,\n result: next_dist_server_render_result__WEBPACK_IMPORTED_MODULE_20__[\"default\"].fromStatic(cachedData.rscData, next_dist_client_components_app_router_headers__WEBPACK_IMPORTED_MODULE_16__.RSC_CONTENT_TYPE_HEADER),\n cacheControl: cacheEntry.cacheControl\n });\n }\n // This is a request for HTML data.\n let body = cachedData.html;\n // If there's no postponed state, we should just serve the HTML. This\n // should also be the case for a resume request because it's completed\n // as a server render (rather than a static render).\n if (!didPostpone || minimalMode || isRSCRequest) {\n // If we're in test mode, we should add a sentinel chunk to the response\n // that's between the static and dynamic parts so we can compare the\n // chunks and add assertions.\n if (false) {}\n return (0,next_dist_server_send_payload__WEBPACK_IMPORTED_MODULE_23__.sendRenderResult)({\n req,\n res,\n generateEtags: nextConfig.generateEtags,\n poweredByHeader: nextConfig.poweredByHeader,\n result: body,\n cacheControl: cacheEntry.cacheControl\n });\n }\n // If we're debugging the static shell or the dynamic API accesses, we\n // should just serve the HTML without resuming the render. The returned\n // HTML will be the static shell so all the Dynamic API's will be used\n // during static generation.\n if (isDebugStaticShell || isDebugDynamicAccesses) {\n // Since we're not resuming the render, we need to at least add the\n // closing body and html tags to create valid HTML.\n body.push(new ReadableStream({\n start (controller) {\n controller.enqueue(next_dist_server_stream_utils_encoded_tags__WEBPACK_IMPORTED_MODULE_22__.ENCODED_TAGS.CLOSED.BODY_AND_HTML);\n controller.close();\n }\n }));\n return (0,next_dist_server_send_payload__WEBPACK_IMPORTED_MODULE_23__.sendRenderResult)({\n req,\n res,\n generateEtags: nextConfig.generateEtags,\n poweredByHeader: nextConfig.poweredByHeader,\n result: body,\n cacheControl: {\n revalidate: 0,\n expire: undefined\n }\n });\n }\n // If we're in test mode, we should add a sentinel chunk to the response\n // that's between the static and dynamic parts so we can compare the\n // chunks and add assertions.\n if (false) {}\n // This request has postponed, so let's create a new transformer that the\n // dynamic data can pipe to that will attach the dynamic data to the end\n // of the response.\n const transformer = new TransformStream();\n body.push(transformer.readable);\n // Perform the render again, but this time, provide the postponed state.\n // We don't await because we want the result to start streaming now, and\n // we've already chained the transformer's readable to the render result.\n doRender({\n span,\n postponed: cachedData.postponed,\n // This is a resume render, not a fallback render, so we don't need to\n // set this.\n fallbackRouteParams: null\n }).then(async (result)=>{\n var _result_value;\n if (!result) {\n throw Object.defineProperty(new Error('Invariant: expected a result to be returned'), \"__NEXT_ERROR_CODE\", {\n value: \"E463\",\n enumerable: false,\n configurable: true\n });\n }\n if (((_result_value = result.value) == null ? void 0 : _result_value.kind) !== next_dist_server_response_cache__WEBPACK_IMPORTED_MODULE_18__.CachedRouteKind.APP_PAGE) {\n var _result_value1;\n throw Object.defineProperty(new Error(`Invariant: expected a page response, got ${(_result_value1 = result.value) == null ? void 0 : _result_value1.kind}`), \"__NEXT_ERROR_CODE\", {\n value: \"E305\",\n enumerable: false,\n configurable: true\n });\n }\n // Pipe the resume result to the transformer.\n await result.value.html.pipeTo(transformer.writable);\n }).catch((err)=>{\n // An error occurred during piping or preparing the render, abort\n // the transformers writer so we can terminate the stream.\n transformer.writable.abort(err).catch((e)=>{\n console.error(\"couldn't abort transformer\", e);\n });\n });\n return (0,next_dist_server_send_payload__WEBPACK_IMPORTED_MODULE_23__.sendRenderResult)({\n req,\n res,\n generateEtags: nextConfig.generateEtags,\n poweredByHeader: nextConfig.poweredByHeader,\n result: body,\n // We don't want to cache the response if it has postponed data because\n // the response being sent to the client it's dynamic parts are streamed\n // to the client on the same request.\n cacheControl: {\n revalidate: 0,\n expire: undefined\n }\n });\n };\n // TODO: activeSpan code path is for when wrapped by\n // next-server can be removed when this is no longer used\n if (activeSpan) {\n await handleResponse(activeSpan);\n } else {\n return await tracer.withPropagatedContext(req.headers, ()=>tracer.trace(next_dist_server_lib_trace_constants__WEBPACK_IMPORTED_MODULE_5__.BaseServerSpan.handleRequest, {\n spanName: `${method} ${req.url}`,\n kind: next_dist_server_lib_trace_tracer__WEBPACK_IMPORTED_MODULE_3__.SpanKind.SERVER,\n attributes: {\n 'http.method': method,\n 'http.target': req.url\n }\n }, handleResponse));\n }\n } catch (err) {\n if (!(err instanceof next_dist_shared_lib_no_fallback_error_external__WEBPACK_IMPORTED_MODULE_24__.NoFallbackError)) {\n await routeModule.onRequestError(req, err, {\n routerKind: 'App Router',\n routePath: srcPage,\n routeType: 'render',\n revalidateReason: (0,next_dist_server_instrumentation_utils__WEBPACK_IMPORTED_MODULE_2__.getRevalidateReason)({\n isRevalidate: isSSG,\n isOnDemandRevalidate\n })\n }, routerServerContext);\n }\n // rethrow so that we can handle serving error page\n throw err;\n }\n}\n// TODO: omit this from production builds, only test builds should include it\n/**\n * Creates a readable stream that emits a PPR boundary sentinel.\n *\n * @returns A readable stream that emits a PPR boundary sentinel.\n */ function createPPRBoundarySentinel() {\n return new ReadableStream({\n start (controller) {\n controller.enqueue(new TextEncoder().encode('<!-- PPR_BOUNDARY_SENTINEL -->'));\n controller.close();\n }\n });\n}\n\n//# sourceMappingURL=app-page.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi4vLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9idWlsZC93ZWJwYWNrL2xvYWRlcnMvbmV4dC1hcHAtbG9hZGVyL2luZGV4LmpzP25hbWU9YXBwJTJGcGFnZSZwYWdlPSUyRnBhZ2UmYXBwUGF0aHM9JTJGcGFnZSZwYWdlUGF0aD1wcml2YXRlLW5leHQtYXBwLWRpciUyRnBhZ2UuanMmYXBwRGlyPSUyRlVzZXJzJTJGZ2tvYmVyZ2VyJTJGU2l0ZXMlMkZyZWFkbWUlMkYyMDI2LXJlYWRtZS1jbGklMkZzcmMlMkZkZXYlMkZhcHAmcGFnZUV4dGVuc2lvbnM9dHN4JnBhZ2VFeHRlbnNpb25zPXRzJnBhZ2VFeHRlbnNpb25zPWpzeCZwYWdlRXh0ZW5zaW9ucz1qcyZyb290RGlyPSUyRlVzZXJzJTJGZ2tvYmVyZ2VyJTJGU2l0ZXMlMkZyZWFkbWUlMkYyMDI2LXJlYWRtZS1jbGklMkZzcmMlMkZkZXYmaXNEZXY9dHJ1ZSZ0c2NvbmZpZ1BhdGg9dHNjb25maWcuanNvbiZiYXNlUGF0aD0mYXNzZXRQcmVmaXg9Jm5leHRDb25maWdPdXRwdXQ9JnByZWZlcnJlZFJlZ2lvbj0mbWlkZGxld2FyZUNvbmZpZz1lMzAlM0QmaXNHbG9iYWxOb3RGb3VuZEVuYWJsZWQ9ISIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsc0JBQXNCLDBJQUF3RztBQUM5SCxzQkFBc0IsMk9BQXdGO0FBQzlHLHNCQUFzQixxT0FBcUY7QUFDM0csc0JBQXNCLHFPQUFxRjtBQUMzRyxzQkFBc0IsMk9BQXdGO0FBQzlHLG9CQUFvQixzSUFBc0c7QUFHeEg7QUFHQTtBQUMyRTtBQUNMO0FBQ1Q7QUFDTztBQUNPO0FBQ1M7QUFDRjtBQUNQO0FBQ0s7QUFDWTtBQUNXO0FBQ3hCO0FBQ0Y7QUFDYTtBQUMwRjtBQUN6RztBQUNYO0FBQ1E7QUFDaEI7QUFDaUQ7QUFDakM7QUFDVDtBQUNpQjtBQUNsRjtB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QUFDQSxpQkFBaUI7QUFDakI7QUFDQSxNQUFNO0FBQ04sNkJBQTZCLDZGQUFlO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDLDJGQUFtQjtBQUNyRDtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQSIsInNvdXJjZXMiOlsiIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IG1vZHVsZTAgPSAoKSA9PiBpbXBvcnQoLyogd2VicGFja01vZGU6IFwiZWFnZXJcIiAqLyBcIi9Vc2Vycy9na29iZXJnZXIvU2l0ZXMvcmVhZG1lLzIwMjYtcmVhZG1lLWNsaS9zcmMvZGV2L2FwcC9sYXlvdXQuanNcIik7XG5jb25zdCBtb2R1bGUxID0gKCkgPT4gaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gXCJuZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvYnVpbHRpbi9nbG9iYWwtZXJyb3IuanNcIik7XG5jb25zdCBtb2R1bGUyID0gKCkgPT4gaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gXCJuZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvYnVpbHRpbi9ub3QtZm91bmQuanNcIik7XG5jb25zdCBtb2R1bGUzID0gKCkgPT4gaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gXCJuZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvYnVpbHRpbi9mb3JiaWRkZW4uanNcIik7XG5jb25zdCBtb2R1bGU0ID0gKCkgPT4gaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gXCJuZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvYnVpbHRpbi91bmF1dGhvcml6ZWQuanNcIik7XG5jb25zdCBwYWdlNSA9ICgpID0+IGltcG9ydCgvKiB3ZWJwYWNrTW9kZTogXCJlYWdlclwiICovIFwiL1VzZXJzL2drb2Jlcmdlci9TaXRlcy9yZWFkbWUvMjAyNi1yZWFkbWUtY2xpL3NyYy9kZXYvYXBwL3BhZ2UuanNcIik7XG5pbXBvcnQgeyBBcHBQYWdlUm91dGVNb2R1bGUgfSBmcm9tIFwibmV4dC9kaXN0L3NlcnZlci9yb3V0ZS1tb2R1bGVzL2FwcC1wYWdlL21vZHVsZS5jb21waWxlZFwiIHdpdGgge1xuICAgICd0dXJib3BhY2stdHJhbnNpdGlvbic6ICduZXh0LXNzcidcbn07XG5pbXBvcnQgeyBSb3V0ZUtpbmQgfSBmcm9tIFwibmV4dC9kaXN0L3NlcnZlci9yb3V0ZS1raW5kXCIgd2l0aCB7XG4gICAgJ3R1cmJvcGFjay10cmFuc2l0aW9uJzogJ25leHQtc2VydmVyLXV0aWxpdHknXG59O1xuaW1wb3J0IHsgZ2V0UmV2YWxpZGF0ZVJlYXNvbiB9IGZyb20gXCJuZXh0L2Rpc3Qvc2VydmVyL2luc3RydW1lbnRhdGlvbi91dGlsc1wiO1xuaW1wb3J0IHsgZ2V0VHJhY2VyLCBTcGFuS2luZCB9IGZyb20gXCJuZXh0L2Rpc3Qvc2VydmVyL2xpYi90cmFjZS90cmFjZXJcIjtcbmltcG9ydCB7IGdldFJlcXVlc3RNZXRhIH0gZnJvbSBcIm5leHQvZGlzdC9zZXJ2ZXIvcmVxdWVzdC1tZXRhXCI7XG5pbXBvcnQgeyBCYXNlU2VydmVyU3BhbiB9IGZyb20gXCJuZXh0L2Rpc3Qvc2VydmVyL2xpYi90cmFjZS9jb25zdGFudHNcIjtcbmltcG9ydCB7IGludGVyb3BEZWZhdWx0IH0gZnJvbSBcIm5leHQvZGlzdC9zZXJ2ZXIvYXBwLXJlbmRlci9pbnRlcm9wLWRlZmF1bHRcIjtcbmltcG9ydCB7IHN0cmlwRmxpZ2h0SGVhZGVycyB9IGZyb20gXCJuZXh0L2Rpc3Qvc2VydmVyL2FwcC1yZW5kZXIvc3RyaXAtZmxpZ2h0LWhlYWRlcnNcIjtcbmltcG9ydCB7IE5vZGVOZXh0UmVxdWVzdCwgTm9kZU5leHRSZXNwb25zZSB9IGZyb20gXCJuZXh0L2Rpc3Qvc2VydmVyL2Jhc2UtaHR0cC9ub2RlXCI7XG5pbXBvcnQgeyBjaGVja0lzQXBwUFBSRW5hYmxlZCB9IGZyb20gXCJuZXh0L2Rpc3Qvc2VydmVyL2xpYi9leHBlcmltZW50YWwvcHByXCI7XG5pbXBvcnQgeyBnZXRGYWxsYmFja1JvdXRlUGFyYW1zIH0gZnJvbSBcIm5leHQvZGlzdC9zZXJ2ZXIvcmVxdWVzdC9mYWxsYmFjay1wYXJhbXNcIjtcbmltcG9ydCB7IHNldFJlZmVyZW5jZU1hbmlmZXN0c1NpbmdsZXRvbiB9IGZyb20gXCJuZXh0L2Rpc3Qvc2VydmVyL2FwcC1yZW5kZXIvZW5jcnlwdGlvbi11dGlsc1wiO1xuaW1wb3J0IHsgaXNIdG1sQm90UmVxdWVzdCwgc2hvdWxkU2VydmVTdHJlYW1pbmdNZXRhZGF0YSB9IGZyb20gXCJuZXh0L2Rpc3Qvc2VydmVyL2xpYi9zdHJlYW1pbmctbWV0YWRhdGFcIjtcbmltcG9ydCB7IGNyZWF0ZVNlcnZlck1vZHVsZU1hcCB9IGZyb20gXCJuZXh0L2Rpc3Qvc2VydmVyL2FwcC1yZW5kZXIvYWN0aW9uLXV0aWxzXCI7XG5pbXBvcnQgeyBub3JtYWxpemVBcHBQYXRoIH0gZnJvbSBcIm5leHQvZGlzdC9zaGFyZWQvbGliL3JvdXRlci91dGlscy9hcHAtcGF0aHNcIjtcbmltcG9ydCB7IGdldElzUG9zc2libGVTZXJ2ZXJBY3Rpb24gfSBmcm9tIFwibmV4dC9kaXN0L3NlcnZlci9saWIvc2VydmVyLWFjdGlvbi1yZXF1ZXN0LW1ldGFcIjtcbmltcG9ydCB7IFJTQ19IRUFERVIsIE5FWFRfUk9VVEVSX1BSRUZFVENIX0hFQURFUiwgTkVYVF9JU19QUkVSRU5ERVJfSEVBREVSLCBORVhUX0RJRF9QT1NUUE9ORV9IRUFERVIsIFJTQ19DT05URU5UX1RZUEVfSEVBREVSIH0gZnJvbSBcIm5leHQvZGlzdC9jbGllbnQvY29tcG9uZW50cy9hcHAtcm91dGVyLWhlYWRlcnNcIjtcbmltcG9ydCB7IGdldEJvdFR5cGUsIGlzQm90IH0gZnJvbSBcIm5leHQvZGlzdC9zaGFyZWQvbGliL3JvdXRlci91dGlscy9pcy1ib3RcIjtcbmltcG9ydCB7IENhY2hlZFJvdXRlS2luZCB9IGZyb20gXCJuZXh0L2Rpc3Qvc2VydmVyL3Jlc3BvbnNlLWNhY2hlXCI7XG5pbXBvcnQgeyBGYWxsYmFja01vZGUsIHBhcnNlRmFsbGJhY2tGaWVsZCB9IGZyb20gXCJuZXh0L2Rpc3QvbGliL2ZhbGxiYWNrXCI7XG5pbXBvcnQgUmVuZGVyUmVzdWx0IGZyb20gXCJuZXh0L2Rpc3Qvc2VydmVyL3JlbmRlci1yZXN1bHRcIjtcbmltcG9ydCB7IENBQ0hFX09ORV9ZRUFSLCBIVE1MX0NPTlRFTlRfVFlQRV9IRUFERVIsIE5FWFRfQ0FDSEVfVEFHU19IRUFERVIgfSBmcm9tIFwibmV4dC9kaXN0L2xpYi9jb25zdGFudHNcIjtcbmltcG9ydCB7IEVOQ09ERURfVEFHUyB9IGZyb20gXCJuZXh0L2Rpc3Qvc2VydmVyL3N0cmVhbS11dGlscy9lbmNvZGVkLXRhZ3NcIjtcbmltcG9ydCB7IHNlbmRSZW5kZXJSZXN1bHQgfSBmcm9tIFwibmV4dC9kaXN0L3NlcnZlci9zZW5kLXBheWxvYWRcIjtcbmltcG9ydCB7IE5vRmFsbGJhY2tFcnJvciB9IGZyb20gXCJuZXh0L2Rpc3Qvc2hhcmVkL2xpYi9uby1mYWxsYmFjay1lcnJvci5leHRlcm5hbFwiO1xuLy8gV2UgaW5qZWN0IHRoZSB0cmVlIGFuZCBwYWdlcyBoZXJlIHNvIHRoYXQgd2UgY2FuIHVzZSB0aGVtIGluIHRoZSByb3V0ZVxuLy8gbW9kdWxlLlxuY29uc3QgdHJlZSA9IHtcbiAgICAgICAgY2hpbGRyZW46IFtcbiAgICAgICAgJycsXG4gICAgICAgIHtcbiAgICAgICAgY2hpbGRyZW46IFsnX19QQUdFX18nLCB7fSwge1xuICAgICAgICAgIHBhZ2U6IFtwYWdlNSwgXCIvVXNlcnMvZ2tvYmVyZ2VyL1NpdGVzL3JlYWRtZS8yMDI2LXJlYWRtZS1jbGkvc3JjL2Rldi9hcHAvcGFnZS5qc1wiXSxcbiAgICAgICAgICBcbiAgICAgICAgfV1cbiAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgJ2xheW91dCc6IFttb2R1bGUwLCBcIi9Vc2Vycy9na29iZXJnZXIvU2l0ZXMvcmVhZG1lLzIwMjYtcmVhZG1lLWNsaS9zcmMvZGV2L2FwcC9sYXlvdXQuanNcIl0sXG4nZ2xvYmFsLWVycm9yJzogW21vZHVsZTEsIFwibmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2J1aWx0aW4vZ2xvYmFsLWVycm9yLmpzXCJdLFxuJ25vdC1mb3VuZCc6IFttb2R1bGUyLCBcIm5leHQvZGlzdC9jbGllbnQvY29tcG9uZW50cy9idWlsdGluL25vdC1mb3VuZC5qc1wiXSxcbidmb3JiaWRkZW4nOiBbbW9kdWxlMywgXCJuZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvYnVpbHRpbi9mb3JiaWRkZW4uanNcIl0sXG4ndW5hdXRob3JpemVkJzogW21vZHVsZTQsIFwibmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2J1aWx0aW4vdW5hdXRob3JpemVkLmpzXCJdLFxuICAgICAgICBcbiAgICAgIH1cbiAgICAgIF1cbiAgICAgIH0uY2hpbGRyZW47XG5jb25zdCBwYWdlcyA9IFtcIi9Vc2Vycy9na29iZXJnZXIvU2l0ZXMvcmVhZG1lLzIwMjYtcmVhZG1lLWNsaS9zcmMvZGV2L2FwcC9wYWdlLmpzXCJdO1xuZXhwb3J0IHsgdHJlZSwgcGFnZXMgfTtcbmltcG9ydCBHbG9iYWxFcnJvciBmcm9tIFwibmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2J1aWx0aW4vZ2xvYmFsLWVycm9yLmpzXCIgd2l0aCB7XG4gICAgJ3R1cmJvcGFjay10cmFuc2l0aW9uJzogJ25leHQtc2VydmVyLXV0aWxpdHknXG59O1xuZXhwb3J0IHsgR2xvYmFsRXJyb3IgfTtcbmNvbnN0IF9fbmV4dF9hcHBfcmVxdWlyZV9fID0gX193ZWJwYWNrX3JlcXVpcmVfX1xuY29uc3QgX19uZXh0X2FwcF9sb2FkX2NodW5rX18gPSAoKSA9PiBQcm9taXNlLnJlc29sdmUoKVxuZXhwb3J0IGNvbnN0IF9fbmV4dF9hcHBfXyA9IHtcbiAgICByZXF1aXJlOiBfX25leHRfYXBwX3JlcXVpcmVfXyxcbiAgICBsb2FkQ2h1bms6IF9fbmV4dF9hcHBfbG9hZF9jaHVua19fXG59O1xuaW1wb3J0ICogYXMgZW50cnlCYXNlIGZyb20gXCJuZXh0L2Rpc3Qvc2VydmVyL2FwcC1yZW5kZXIvZW50cnktYmFzZVwiIHdpdGgge1xuICAgICd0dXJib3BhY2stdHJhbnNpdGlvbic6ICduZXh0LXNlcnZlci11dGlsaXR5J1xufTtcbmltcG9ydCB7IFJlZGlyZWN0U3RhdHVzQ29kZSB9IGZyb20gXCJuZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvcmVkaXJlY3Qtc3RhdHVzLWNvZGVcIjtcbmV4cG9ydCAqIGZyb20gXCJuZXh0L2Rpc3Qvc2VydmVyL2FwcC1yZW5kZXIvZW50cnktYmFzZVwiIHdpdGgge1xuICAgICd0dXJib3BhY2stdHJhbnNpdGlvbic6ICduZXh0LXNlcnZlci11dGlsaXR5J1xufTtcbi8vIENyZWF0ZSBhbmQgZXhwb3J0IHRoZSByb3V0ZSBtb2R1bGUgdGhhdCB3aWxsIGJlIGNvbnN1bWVkLlxuZXhwb3J0IGNvbnN0IHJvdXRlTW9kdWxlID0gbmV3IEFwcFBhZ2VSb3V0ZU1vZHVsZSh7XG4gICAgZGVmaW5pdGlvbjoge1xuICAgICAgICBraW5kOiBSb3V0ZUtpbmQuQVBQX1BBR0UsXG4gICAgICAgIHBhZ2U6IFwiL3BhZ2VcIixcbiAgICAgICAgcGF0aG5hbWU6IFwiL1wiLFxuICAgICAgICAvLyBUaGUgZm9sbG93aW5nIGFyZW4ndCB1c2VkIGluIHByb2R1Y3Rpb24uXG4gICAgICAgIGJ1bmRsZVBhdGg6ICcnLFxuICAgICAgICBmaWxlbmFtZTogJycsXG4gICAgICAgIGFwcFBhdGhzOiBbXVxuICAgIH0sXG4gICAgdXNlcmxhbmQ6IHtcbiAgICAgICAgbG9hZGVyVHJlZTogdHJlZVxuICAgIH0sXG4gICAgZGlzdERpcjogcHJvY2Vzcy5lbnYuX19ORVhUX1JFTEFUSVZFX0RJU1RfRElSIHx8ICcnLFxuICAgIHJlbGF0aXZlUHJvamVjdERpcjogcHJvY2Vzcy5lbnYuX19ORVhUX1JFTEFUSVZFX1BST0pFQ1RfRElSIHx8ICcnXG59KTtcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBoYW5kbGVyKHJlcSwgcmVzLCBjdHgpIHtcbiAgICB2YXIgX3RoaXM7XG4gICAgbGV0IHNyY1BhZ2UgPSBcIi9wYWdlXCI7XG4gICAgLy8gdHVyYm9wYWNrIGRvZXNuJ3Qgbm9ybWFsaXplIGAvaW5kZXhgIGluIHRoZSBwYWdlIG5hbWVcbiAgICAvLyBzbyB3ZSBuZWVkIHRvIHRvIHByb2Nlc3MgZHluYW1pYyByb3V0ZXMgcHJvcGVybHlcbiAgICAvLyBUT0RPOiBmaXggdHVyYm9wYWNrIHByb3ZpZGluZyBkaWZmZXJpbmcgdmFsdWUgZnJvbSB3ZWJwYWNrXG4gICAgaWYgKHByb2Nlc3MuZW52LlRVUkJPUEFDSykge1xuICAgICAgICBzcmNQYWdlID0gc3JjUGFnZS5yZXBsYWNlKC9cXC9pbmRleCQvLCAnJykgfHwgJy8nO1xuICAgIH0gZWxzZSBpZiAoc3JjUGFnZSA9PT0gJy9pbmRleCcpIHtcbiAgICAgICAgLy8gd2UgYWx3YXlzIG5vcm1hbGl6ZSAvaW5kZXggc3BlY2lmaWNhbGx5XG4gICAgICAgIHNyY1BhZ2UgPSAnLyc7XG4gICAgfVxuICAgIGNvbnN0IG11bHRpWm9uZURyYWZ0TW9kZSA9IHByb2Nlc3MuZW52Ll9fTkVYVF9NVUxUSV9aT05FX0RSQUZUX01PREU7XG4gICAgY29uc3QgaW5pdGlhbFBvc3Rwb25lZCA9IGdldFJlcXVlc3RNZXRhKHJlcSwgJ3Bvc3Rwb25lZCcpO1xuICAgIC8vIFRPRE86IHJlcGxhY2Ugd2l0aCBtb3JlIHNwZWNpZmljIGZsYWdzXG4gICAgY29uc3QgbWluaW1hbE1vZGUgPSBnZXRSZXF1ZXN0TWV0YShyZXEsICdtaW5pbWFsTW9kZScpO1xuICAgIGNvbnN0IHByZXBhcmVSZXN1bHQgPSBhd2FpdCByb3V0ZU1vZHVsZS5wcmVwYXJlKHJlcSwgcmVzLCB7XG4gICAgICAgIHNyY1BhZ2UsXG4gICAgICAgIG11bHRpWm9uZURyYWZ0TW9kZVxuICAgIH0pO1xuICAgIGlmICghcHJlcGFyZVJlc3VsdCkge1xuICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDQwMDtcbiAgICAgICAgcmVzLmVuZCgnQmFkIFJlcXVlc3QnKTtcbiAgICAgICAgY3R4LndhaXRVbnRpbCA9PSBudWxsID8gdm9pZCAwIDogY3R4LndhaXRVbnRpbC5jYWxsKGN0eCwgUHJvbWlzZS5yZXNvbHZlKCkpO1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY29uc3QgeyBidWlsZElkLCBxdWVyeSwgcGFyYW1zLCBwYXJzZWRVcmwsIHBhZ2VJc0R5bmFtaWMsIGJ1aWxkTWFuaWZlc3QsIG5leHRGb250TWFuaWZlc3QsIHJlYWN0TG9hZGFibGVNYW5pZmVzdCwgc2VydmVyQWN0aW9uc01hbmlmZXN0LCBjbGllbnRSZWZlcmVuY2VNYW5pZmVzdCwgc3VicmVzb3VyY2VJbnRlZ3JpdHlNYW5pZmVzdCwgcHJlcmVuZGVyTWFuaWZlc3QsIGlzRHJhZnRNb2RlLCByZXNvbHZlZFBhdGhuYW1lLCByZXZhbGlkYXRlT25seUdlbmVyYXRlZCwgcm91dGVyU2VydmVyQ29udGV4dCwgbmV4dENvbmZpZywgaW50ZXJjZXB0aW9uUm91dGVQYXR0ZXJucyB9ID0gcHJlcGFyZVJlc3VsdDtcbiAgICBjb25zdCBwYXRobmFtZSA9IHBhcnNlZFVybC5wYXRobmFtZSB8fCAnLyc7XG4gICAgY29uc3Qgbm9ybWFsaXplZFNyY1BhZ2UgPSBub3JtYWxpemVBcHBQYXRoKHNyY1BhZ2UpO1xuICAgIGxldCB7IGlzT25EZW1hbmRSZXZhbGlkYXRlIH0gPSBwcmVwYXJlUmVzdWx0O1xuICAgIGNvbnN0IHByZXJlbmRlckluZm8gPSByb3V0ZU1vZHVsZS5tYXRjaChwYXRobmFtZSwgcHJlcmVuZGVyTWFuaWZlc3QpO1xuICAgIGNvbnN0IGlzUHJlcmVuZGVyZWQgPSAhIXByZXJlbmRlck1hbmlmZXN0LnJvdXRlc1tyZXNvbHZlZFBhdGhuYW1lXTtcbiAgICBsZXQgaXNTU0cgPSBCb29sZWFuKHByZXJlbmRlckluZm8gfHwgaXNQcmVyZW5kZXJlZCB8fCBwcmVyZW5kZXJNYW5pZmVzdC5yb3V0ZXNbbm9ybWFsaXplZFNyY1BhZ2VdKTtcbiAgICBjb25zdCB1c2VyQWdlbnQgPSByZXEuaGVhZGVyc1sndXNlci1hZ2VudCddIHx8ICcnO1xuICAgIGNvbnN0IGJvdFR5cGUgPSBnZXRCb3RUeXBlKHVzZXJBZ2VudCk7XG4gICAgY29uc3QgaXNIdG1sQm90ID0gaXNIdG1sQm90UmVxdWVzdChyZXEpO1xuICAgIC8qKlxuICAgKiBJZiB0cnVlLCB0aGlzIGluZGljYXRlcyB0aGF0IHRoZSByZXF1ZXN0IGJlaW5nIG1hZGUgaXMgZm9yIGFuIGFwcFxuICAgKiBwcmVmZXRjaCByZXF1ZXN0LlxuICAgKi8gY29uc3QgaXNQcmVmZXRjaFJTQ1JlcXVlc3QgPSBnZXRSZXF1ZXN0TWV0YShyZXEsICdpc1ByZWZldGNoUlNDUmVxdWVzdCcpID8/IHJlcS5oZWFkZXJzW05FWFRfUk9VVEVSX1BSRUZFVENIX0hFQURFUl0gPT09ICcxJyAvLyBleGNsdWRlIHJ1bnRpbWUgcHJlZmV0Y2hlcywgd2hpY2ggdXNlICcyJ1xuICAgIDtcbiAgICAvLyBOT1RFOiBEb24ndCBkZWxldGUgaGVhZGVyc1tSU0NdIHlldCwgaXQgc3RpbGwgbmVlZHMgdG8gYmUgdXNlZCBpbiByZW5kZXJUb0hUTUwgbGF0ZXJcbiAgICBjb25zdCBpc1JTQ1JlcXVlc3QgPSBnZXRSZXF1ZXN0TWV0YShyZXEsICdpc1JTQ1JlcXVlc3QnKSA/PyBCb29sZWFuKHJlcS5oZWFkZXJzW1JTQ19IRUFERVJdKTtcbiAgICBjb25zdCBpc1Bvc3NpYmxlU2VydmVyQWN0aW9uID0gZ2V0SXNQb3NzaWJsZVNlcnZlckFjdGlvbihyZXEpO1xuICAgIC8qKlxuICAgKiBJZiB0aGUgcm91dGUgYmVpbmcgcmVuZGVyZWQgaXMgYW4gYXBwIHBhZ2UsIGFuZCB0aGUgcHByIGZlYXR1cmUgaGFzIGJlZW5cbiAgICogZW5hYmxlZCwgdGhlbiB0aGUgZ2l2ZW4gcm91dGUgX2NvdWxkXyBzdXBwb3J0IFBQUi5cbiAgICovIGNvbnN0IGNvdWxkU3VwcG9ydFBQUiA9IGNoZWNrSXNBcHBQUFJFbmFibGVkKG5leHRDb25maWcuZXhwZXJpbWVudGFsLnBwcik7XG4gICAgLy8gV2hlbiBlbmFibGVkLCB0aGlzIHdpbGwgYWxsb3cgdGhlIHVzZSBvZiB0aGUgYD9fX25leHRwcHJvbmx5YCBxdWVyeSB0b1xuICAgIC8vIGVuYWJsZSBkZWJ1Z2dpbmcgb2YgdGhlIHN0YXRpYyBzaGVsbC5cbiAgICBjb25zdCBoYXNEZWJ1Z1N0YXRpY1NoZWxsUXVlcnkgPSBwcm9jZXNzLmVudi5fX05FWFRfRVhQRVJJTUVOVEFMX1NUQVRJQ19TSEVMTF9ERUJVR0dJTkcgPT09ICcxJyAmJiB0eXBlb2YgcXVlcnkuX19uZXh0cHByb25seSAhPT0gJ3VuZGVmaW5lZCcgJiYgY291bGRTdXBwb3J0UFBSO1xuICAgIC8vIFdoZW4gZW5hYmxlZCwgdGhpcyB3aWxsIGFsbG93IHRoZSB1c2Ugb2YgdGhlIGA/X19uZXh0cHByb25seWAgcXVlcnlcbiAgICAvLyB0byBlbmFibGUgZGVidWdnaW5nIG9mIHRoZSBmYWxsYmFjayBzaGVsbC5cbiAgICBjb25zdCBoYXNEZWJ1Z0ZhbGxiYWNrU2hlbGxRdWVyeSA9IGhhc0RlYnVnU3RhdGljU2hlbGxRdWVyeSAmJiBxdWVyeS5fX25leHRwcHJvbmx5ID09PSAnZmFsbGJhY2snO1xuICAgIC8vIFRoaXMgcGFnZSBzdXBwb3J0cyBQUFIgaWYgaXQgaXMgbWFya2VkIGFzIGJlaW5nIGBQQVJUSUFMTFlfU1RBVElDYCBpbiB0aGVcbiAgICAvLyBwcmVyZW5kZXIgbWFuaWZlc3QgYW5kIHRoaXMgaXMgYW4gYXBwIHBhZ2UuXG4gICAgY29uc3QgaXNSb3V0ZVBQUkVuYWJsZWQgPSBjb3VsZFN1cHBvcnRQUFIgJiYgKCgoX3RoaXMgPSBwcmVyZW5kZXJNYW5pZmVzdC5yb3V0ZXNbbm9ybWFsaXplZFNyY1BhZ2VdID8/IHByZXJlbmRlck1hbmlmZXN0LmR5bmFtaWNSb3V0ZXNbbm9ybWFsaXplZFNyY1BhZ2VdKSA9PSBudWxsID8gdm9pZCAwIDogX3RoaXMucmVuZGVyaW5nTW9kZSkgPT09ICdQQVJUSUFMTFlfU1RBVElDJyB8fCAvLyBJZGVhbGx5IHdlJ2Qgd2FudCB0byBjaGVjayB0aGUgYXBwQ29uZmlnIHRvIHNlZSBpZiB0aGlzIHBhZ2UgaGFzIFBQUlxuICAgIC8vIGVuYWJsZWQgb3Igbm90LCBidXQgdGhhdCB3b3VsZCByZXF1aXJlIHBsdW1iaW5nIHRoZSBhcHBDb25maWcgdGhyb3VnaFxuICAgIC8vIHRvIHRoZSBzZXJ2ZXIgZHVyaW5nIGRldmVsb3BtZW50LiBXZSBhc3N1bWUgdGhhdCB0aGUgcGFnZSBzdXBwb3J0cyBpdFxuICAgIC8vIGJ1dCBvbmx5IGR1cmluZyBkZXZlbG9wbWVudC5cbiAgICBoYXNEZWJ1Z1N0YXRpY1NoZWxsUXVlcnkgJiYgKHJvdXRlTW9kdWxlLmlzRGV2ID09PSB0cnVlIHx8IChyb3V0ZXJTZXJ2ZXJDb250ZXh0ID09IG51bGwgPyB2b2lkIDAgOiByb3V0ZXJTZXJ2ZXJDb250ZXh0LmV4cGVyaW1lbnRhbFRlc3RQcm94eSkgPT09IHRydWUpKTtcbiAgICBjb25zdCBpc0RlYnVnU3RhdGljU2hlbGwgPSBoYXNEZWJ1Z1N0YXRpY1NoZWxsUXVlcnkgJiYgaXNSb3V0ZVBQUkVuYWJsZWQ7XG4gICAgLy8gV2Ugc2hvdWxkIGVuYWJsZSBkZWJ1Z2dpbmcgZHluYW1pYyBhY2Nlc3NlcyB3aGVuIHRoZSBzdGF0aWMgc2hlbGxcbiAgICAvLyBkZWJ1Z2dpbmcgaGFzIGJlZW4gZW5hYmxlZCBhbmQgd2UncmUgYWxzbyBpbiBkZXZlbG9wbWVudCBtb2RlLlxuICAgIGNvbnN0IGlzRGVidWdEeW5hbWljQWNjZXNzZXMgPSBpc0RlYnVnU3RhdGljU2hlbGwgJiYgcm91dGVNb2R1bGUuaXNEZXYgPT09IHRydWU7XG4gICAgY29uc3QgaXNEZWJ1Z0ZhbGxiYWNrU2hlbGwgPSBoYXNEZWJ1Z0ZhbGxiYWNrU2hlbGxRdWVyeSAmJiBpc1JvdXRlUFBSRW5hYmxlZDtcbiAgICAvLyBJZiB3ZSdyZSBpbiBtaW5pbWFsIG1vZGUsIHRoZW4gdHJ5IHRvIGdldCB0aGUgcG9zdHBvbmVkIGluZm9ybWF0aW9uIGZyb21cbiAgICAvLyB0aGUgcmVxdWVzdCBtZXRhZGF0YS4gSWYgYXZhaWxhYmxlLCB1c2UgaXQgZm9yIHJlc3VtaW5nIHRoZSBwb3N0cG9uZWRcbiAgICAvLyByZW5kZXIuXG4gICAgY29uc3QgbWluaW1hbFBvc3Rwb25lZCA9IGlzUm91dGVQUFJFbmFibGVkID8gaW5pdGlhbFBvc3Rwb25lZCA6IHVuZGVmaW5lZDtcbiAgICAvLyBJZiBQUFIgaXMgZW5hYmxlZCwgYW5kIHRoaXMgaXMgYSBSU0MgcmVxdWVzdCAoYnV0IG5vdCBhIHByZWZldGNoKSwgdGhlblxuICAgIC8vIHdlIGNhbiB1c2UgdGhpcyBmYWN0IHRvIG9ubHkgZ2VuZXJhdGUgdGhlIGZsaWdodCBkYXRhIGZvciB0aGUgcmVxdWVzdFxuICAgIC8vIGJlY2F1c2Ugd2UgY2FuJ3QgY2FjaGUgdGhlIEhUTUwgKGFzIGl0J3MgYWxzbyBkeW5hbWljKS5cbiAgICBjb25zdCBpc0R5bmFtaWNSU0NSZXF1ZXN0ID0gaXNSb3V0ZVBQUkVuYWJsZWQgJiYgaXNSU0NSZXF1ZXN0ICYmICFpc1ByZWZldGNoUlNDUmVxdWVzdDtcbiAgICAvLyBOZWVkIHRvIHJlYWQgdGhpcyBiZWZvcmUgaXQncyBzdHJpcHBlZCBieSBzdHJpcEZsaWdodEhlYWRlcnMuIFdlIGRvbid0XG4gICAgLy8gbmVlZCB0byB0cmFuc2ZlciBpdCB0byB0aGUgcmVxdWVzdCBtZXRhIGJlY2F1c2UgaXQncyBvbmx5IHJlYWRcbiAgICAvLyB3aXRoaW4gdGhpcyBmdW5jdGlvbjsgdGhlIHN0YXRpYyBzZWdtZW50IGRhdGEgc2hvdWxkIGhhdmUgYWxyZWFkeSBiZWVuXG4gICAgLy8gZ2VuZXJhdGVkLCBzbyB3ZSB3aWxsIGFsd2F5cyBlaXRoZXIgcmV0dXJuIGEgc3RhdGljIHJlc3BvbnNlIG9yIGEgNDA0LlxuICAgIGNvbnN0IHNlZ21lbnRQcmVmZXRjaEhlYWRlciA9IGdldFJlcXVlc3RNZXRhKHJlcSwgJ3NlZ21lbnRQcmVmZXRjaFJTQ1JlcXVlc3QnKTtcbiAgICAvLyBUT0RPOiBpbnZlc3RpZ2F0ZSBleGlzdGluZyBidWcgd2l0aCBzaG91bGRTZXJ2ZVN0cmVhbWluZ01ldGFkYXRhIGFsd2F5c1xuICAgIC8vIGJlaW5nIHRydWUgZm9yIGEgcmV2YWxpZGF0ZSBkdWUgdG8gbW9kaWZ5aW5nIHRoZSBiYXNlLXNlcnZlciB0aGlzLnJlbmRlck9wdHNcbiAgICAvLyB3aGVuIGZpeGluZyB0aGlzIHRvIGNvcnJlY3QgbG9naWMgaXQgY2F1c2VzIGh5ZHJhdGlvbiBpc3N1ZSBzaW5jZSB3ZSBzZXRcbiAgICAvLyBzZXJ2ZVN0cmVhbWluZ01ldGFkYXRhIHRvIHRydWUgZHVyaW5nIGV4cG9ydFxuICAgIGxldCBzZXJ2ZVN0cmVhbWluZ01ldGFkYXRhID0gIXVzZXJBZ2VudCA/IHRydWUgOiBzaG91bGRTZXJ2ZVN0cmVhbWluZ01ldGFkYXRhKHVzZXJBZ2VudCwgbmV4dENvbmZpZy5odG1sTGltaXRlZEJvdHMpO1xuICAgIGlmIChpc0h0bWxCb3QgJiYgaXNSb3V0ZVBQUkVuYWJsZWQpIHtcbiAgICAgICAgaXNTU0cgPSBmYWxzZTtcbiAgICAgICAgc2VydmVTdHJlYW1pbmdNZXRhZGF0YSA9IGZhbHNlO1xuICAgIH1cbiAgICAvLyBJbiBkZXZlbG9wbWVudCwgd2UgYWx3YXlzIHdhbnQgdG8gZ2VuZXJhdGUgZHluYW1pYyBIVE1MLlxuICAgIGxldCBzdXBwb3J0c0R5bmFtaWNSZXNwb25zZSA9IC8vIElmIHdlJ3JlIGluIGRldmVsb3BtZW50LCB3ZSBhbHdheXMgc3VwcG9ydCBkeW5hbWljIEhUTUwsIHVubGVzcyBpdCdzXG4gICAgLy8gYSBkYXRhIHJlcXVlc3QsIGluIHdoaWNoIGNhc2Ugd2Ugb25seSBwcm9kdWNlIHN0YXRpYyBIVE1MLlxuICAgIHJvdXRlTW9kdWxlLmlzRGV2ID09PSB0cnVlIHx8IC8vIElmIHRoaXMgaXMgbm90IFNTRyBvciBkb2VzIG5vdCBoYXZlIHN0YXRpYyBwYXRocywgdGhlbiBpdCBzdXBwb3J0c1xuICAgIC8vIGR5bmFtaWMgSFRNTC5cbiAgICAhaXNTU0cgfHwgLy8gSWYgdGhpcyByZXF1ZXN0IGhhcyBwcm92aWRlZCBwb3N0cG9uZWQgZGF0YSwgaXQgc3VwcG9ydHMgZHluYW1pY1xuICAgIC8vIEhUTUwuXG4gICAgdHlwZW9mIGluaXRpYWxQb3N0cG9uZWQgPT09ICdzdHJpbmcnIHx8IC8vIElmIHRoaXMgaXMgYSBkeW5hbWljIFJTQyByZXF1ZXN0LCB0aGVuIHRoaXMgcmVuZGVyIHN1cHBvcnRzIGR5bmFtaWNcbiAgICAvLyBIVE1MIChpdCdzIGR5bmFtaWMpLlxuICAgIGlzRHluYW1pY1JTQ1JlcXVlc3Q7XG4gICAgLy8gV2hlbiBodG1sIGJvdHMgcmVxdWVzdCBQUFIgcGFnZSwgcGVyZm9ybSB0aGUgZnVsbCBkeW5hbWljIHJlbmRlcmluZy5cbiAgICBjb25zdCBzaG91bGRXYWl0T25BbGxSZWFkeSA9IGlzSHRtbEJvdCAmJiBpc1JvdXRlUFBSRW5hYmxlZDtcbiAgICBsZXQgc3NnQ2FjaGVLZXkgPSBudWxsO1xuICAgIGlmICghaXNEcmFmdE1vZGUgJiYgaXNTU0cgJiYgIXN1cHBvcnRzRHluYW1pY1Jlc3BvbnNlICYmICFpc1Bvc3NpYmxlU2VydmVyQWN0aW9uICYmICFtaW5pbWFsUG9zdHBvbmVkICYmICFpc0R5bmFtaWNSU0NSZXF1ZXN0KSB7XG4gICAgICAgIHNzZ0NhY2hlS2V5ID0gcmVzb2x2ZWRQYXRobmFtZTtcbiAgICB9XG4gICAgLy8gdGhlIHN0YXRpY1BhdGhLZXkgZGlmZmVycyBmcm9tIHNzZ0NhY2hlS2V5IHNpbmNlXG4gICAgLy8gc3NnQ2FjaGVLZXkgaXMgbnVsbCBpbiBkZXYgc2luY2Ugd2UncmUgYWx3YXlzIGluIFwiZHluYW1pY1wiXG4gICAgLy8gbW9kZSBpbiBkZXYgdG8gYnlwYXNzIHRoZSBjYWNoZSwgYnV0IHdlIHN0aWxsIG5lZWQgdG8gaG9ub3JcbiAgICAvLyBkeW5hbWljUGFyYW1zID0gZmFsc2UgaW4gZGV2IG1vZGVcbiAgICBsZXQgc3RhdGljUGF0aEtleSA9IHNzZ0NhY2hlS2V5O1xuICAgIGlmICghc3RhdGljUGF0aEtleSAmJiByb3V0ZU1vZHVsZS5pc0Rldikge1xuICAgICAgICBzdGF0aWNQYXRoS2V5ID0gcmVzb2x2ZWRQYXRobmFtZTtcbiAgICB9XG4gICAgLy8gSWYgdGhpcyBpcyBhIHJlcXVlc3QgZm9yIGFuIGFwcCBwYXRoIHRoYXQgc2hvdWxkIGJlIHN0YXRpY2FsbHkgZ2VuZXJhdGVkXG4gICAgLy8gYW5kIHdlIGFyZW4ndCBpbiB0aGUgZWRnZSBydW50aW1lLCBzdHJpcCB0aGUgZmxpZ2h0IGhlYWRlcnMgc28gaXQgd2lsbFxuICAgIC8vIGdlbmVyYXRlIHRoZSBzdGF0aWMgcmVzcG9uc2UuXG4gICAgaWYgKCFyb3V0ZU1vZHVsZS5pc0RldiAmJiAhaXNEcmFmdE1vZGUgJiYgaXNTU0cgJiYgaXNSU0NSZXF1ZXN0ICYmICFpc0R5bmFtaWNSU0NSZXF1ZXN0KSB7XG4gICAgICAgIHN0cmlwRmxpZ2h0SGVhZGVycyhyZXEuaGVhZGVycyk7XG4gICAgfVxuICAgIGNvbnN0IENvbXBvbmVudE1vZCA9IHtcbiAgICAgICAgLi4uZW50cnlCYXNlLFxuICAgICAgICB0cmVlLFxuICAgICAgICBwYWdlcyxcbiAgICAgICAgR2xvYmFsRXJyb3IsXG4gICAgICAgIGhhbmRsZXIsXG4gICAgICAgIHJvdXRlTW9kdWxlLFxuICAgICAgICBfX25leHRfYXBwX19cbiAgICB9O1xuICAgIC8vIEJlZm9yZSByZW5kZXJpbmcgKHdoaWNoIGluaXRpYWxpemVzIGNvbXBvbmVudCB0cmVlIG1vZHVsZXMpLCB3ZSBoYXZlIHRvXG4gICAgLy8gc2V0IHRoZSByZWZlcmVuY2UgbWFuaWZlc3RzIHRvIG91ciBnbG9iYWwgc3RvcmUgc28gU2VydmVyIEFjdGlvbidzXG4gICAgLy8gZW5jcnlwdGlvbiB1dGlsIGNhbiBhY2Nlc3MgdG8gdGhlbSBhdCB0aGUgdG9wIGxldmVsIG9mIHRoZSBwYWdlIG1vZHVsZS5cbiAgICBpZiAoc2VydmVyQWN0aW9uc01hbmlmZXN0ICYmIGNsaWVudFJlZmVyZW5jZU1hbmlmZXN0KSB7XG4gICAgICAgIHNldFJlZmVyZW5jZU1hbmlmZXN0c1NpbmdsZXRvbih7XG4gICAgICAgICAgICBwYWdlOiBzcmNQYWdlLFxuICAgICAgICAgICAgY2xpZW50UmVmZXJlbmNlTWFuaWZlc3QsXG4gICAgICAgICAgICBzZXJ2ZXJBY3Rpb25zTWFuaWZlc3QsXG4gICAgICAgICAgICBzZXJ2ZXJNb2R1bGVNYXA6IGNyZWF0ZVNlcnZlck1vZHVsZU1hcCh7XG4gICAgICAgICAgICAgICAgc2VydmVyQWN0aW9uc01hbmlmZXN0XG4gICAgICAgICAgICB9KVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgY29uc3QgbWV0aG9kID0gcmVxLm1ldGhvZCB8fCAnR0VUJztcbiAgICBjb25zdCB0cmFjZXIgPSBnZXRUcmFjZXIoKTtcbiAgICBjb25zdCBhY3RpdmVTcGFuID0gdHJhY2VyLmdldEFjdGl2ZVNjb3BlU3BhbigpO1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHZhcnlIZWFkZXIgPSByb3V0ZU1vZHVsZS5nZXRWYXJ5SGVhZGVyKHJlc29sdmVkUGF0aG5hbWUsIGludGVyY2VwdGlvblJvdXRlUGF0dGVybnMpO1xuICAgICAgICByZXMuc2V0SGVhZGVyKCdWYXJ5JywgdmFyeUhlYWRlcik7XG4gICAgICAgIGNvbnN0IGludm9rZVJvdXRlTW9kdWxlID0gYXN5bmMgKHNwYW4sIGNvbnRleHQpPT57XG4gICAgICAgICAgICBjb25zdCBuZXh0UmVxID0gbmV3IE5vZGVOZXh0UmVxdWVzdChyZXEpO1xuICAgICAgICAgICAgY29uc3QgbmV4dFJlcyA9IG5ldyBOb2RlTmV4dFJlc3BvbnNlKHJlcyk7XG4gICAgICAgICAgICAvLyBUT0RPOiBhZGFwdCBmb3IgcHV0dGluZyB0aGUgUkRDIGluc2lkZSB0aGUgcG9zdHBvbmVkIGRhdGFcbiAgICAgICAgICAgIC8vIElmIHdlJ3JlIGluIGRldiwgYW5kIHRoaXMgaXNuJ3QgYSBwcmVmZXRjaCBvciBhIHNlcnZlciBhY3Rpb24sXG4gICAgICAgICAgICAvLyB3ZSBzaG91bGQgc2VlZCB0aGUgcmVzdW1lIGRhdGEgY2FjaGUuXG4gICAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdkZXZlbG9wbWVudCcpIHtcbiAgICAgICAgICAgICAgICBpZiAobmV4dENvbmZpZy5leHBlcmltZW50YWwuY2FjaGVDb21wb25lbnRzICYmICFpc1ByZWZldGNoUlNDUmVxdWVzdCAmJiAhY29udGV4dC5yZW5kZXJPcHRzLmlzUG9zc2libGVTZXJ2ZXJBY3Rpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgd2FybXVwID0gYXdhaXQgcm91dGVNb2R1bGUud2FybXVwKG5leHRSZXEsIG5leHRSZXMsIGNvbnRleHQpO1xuICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgd2FybXVwIGlzIHN1Y2Nlc3NmdWwsIHdlIHNob3VsZCB1c2UgdGhlIHJlc3VtZSBkYXRhXG4gICAgICAgICAgICAgICAgICAgIC8vIGNhY2hlIGZyb20gdGhlIHdhcm11cC5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHdhcm11cC5tZXRhZGF0YS5yZW5kZXJSZXN1bWVEYXRhQ2FjaGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQucmVuZGVyT3B0cy5yZW5kZXJSZXN1bWVEYXRhQ2FjaGUgPSB3YXJtdXAubWV0YWRhdGEucmVuZGVyUmVzdW1lRGF0YUNhY2hlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJvdXRlTW9kdWxlLnJlbmRlcihuZXh0UmVxLCBuZXh0UmVzLCBjb250ZXh0KS5maW5hbGx5KCgpPT57XG4gICAgICAgICAgICAgICAgaWYgKCFzcGFuKSByZXR1cm47XG4gICAgICAgICAgICAgICAgc3Bhbi5zZXRBdHRyaWJ1dGVzKHtcbiAgICAgICAgICAgICAgICAgICAgJ2h0dHAuc3RhdHVzX2NvZGUnOiByZXMuc3RhdHVzQ29kZSxcbiAgICAgICAgICAgICAgICAgICAgJ25leHQucnNjJzogZmFsc2VcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBjb25zdCByb290U3BhbkF0dHJpYnV0ZXMgPSB0cmFjZXIuZ2V0Um9vdFNwYW5BdHRyaWJ1dGVzKCk7XG4gICAgICAgICAgICAgICAgLy8gV2Ugd2VyZSB1bmFibGUgdG8gZ2V0IGF0dHJpYnV0ZXMsIHByb2JhYmx5IE9URUwgaXMgbm90IGVuYWJsZWRcbiAgICAgICAgICAgICAgICBpZiAoIXJvb3RTcGFuQXR0cmlidXRlcykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChyb290U3BhbkF0dHJpYnV0ZXMuZ2V0KCduZXh0LnNwYW5fdHlwZScpICE9PSBCYXNlU2VydmVyU3Bhbi5oYW5kbGVSZXF1ZXN0KSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihgVW5leHBlY3RlZCByb290IHNwYW4gdHlwZSAnJHtyb290U3BhbkF0dHJpYnV0ZXMuZ2V0KCduZXh0LnNwYW5fdHlwZScpfScuIFBsZWFzZSByZXBvcnQgdGhpcyBOZXh0LmpzIGlzc3VlIGh0dHBzOi8vZ2l0aHViLmNvbS92ZXJjZWwvbmV4dC5qc2ApO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IHJvdXRlID0gcm9vdFNwYW5BdHRyaWJ1dGVzLmdldCgnbmV4dC5yb3V0ZScpO1xuICAgICAgICAgICAgICAgIGlmIChyb3V0ZSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBuYW1lID0gYCR7bWV0aG9kfSAke3JvdXRlfWA7XG4gICAgICAgICAgICAgICAgICAgIHNwYW4uc2V0QXR0cmlidXRlcyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAnbmV4dC5yb3V0ZSc6IHJvdXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2h0dHAucm91dGUnOiByb3V0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICduZXh0LnNwYW5fbmFtZSc6IG5hbWVcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHNwYW4udXBkYXRlTmFtZShuYW1lKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzcGFuLnVwZGF0ZU5hbWUoYCR7bWV0aG9kfSAke3JlcS51cmx9YCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGRvUmVuZGVyID0gYXN5bmMgKHsgc3BhbiwgcG9zdHBvbmVkLCBmYWxsYmFja1JvdXRlUGFyYW1zIH0pPT57XG4gICAgICAgICAgICBjb25zdCBjb250ZXh0ID0ge1xuICAgICAgICAgICAgICAgIHF1ZXJ5LFxuICAgICAgICAgICAgICAgIHBhcmFtcyxcbiAgICAgICAgICAgICAgICBwYWdlOiBub3JtYWxpemVkU3JjUGFnZSxcbiAgICAgICAgICAgICAgICBzaGFyZWRDb250ZXh0OiB7XG4gICAgICAgICAgICAgICAgICAgIGJ1aWxkSWRcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHNlcnZlckNvbXBvbmVudHNIbXJDYWNoZTogZ2V0UmVxdWVzdE1ldGEocmVxLCAnc2VydmVyQ29tcG9uZW50c0htckNhY2hlJyksXG4gICAgICAgICAgICAgICAgZmFsbGJhY2tSb3V0ZVBhcmFtcyxcbiAgICAgICAgICAgICAgICByZW5kZXJPcHRzOiB7XG4gICAgICAgICAgICAgICAgICAgIEFwcDogKCk9Pm51bGwsXG4gICAgICAgICAgICAgICAgICAgIERvY3VtZW50OiAoKT0+bnVsbCxcbiAgICAgICAgICAgICAgICAgICAgcGFnZUNvbmZpZzoge30sXG4gICAgICAgICAgICAgICAgICAgIENvbXBvbmVudE1vZCxcbiAgICAgICAgICAgICAgICAgICAgQ29tcG9uZW50OiBpbnRlcm9wRGVmYXVsdChDb21wb25lbnRNb2QpLFxuICAgICAgICAgICAgICAgICAgICBwYXJhbXMsXG4gICAgICAgICAgICAgICAgICAgIHJvdXRlTW9kdWxlLFxuICAgICAgICAgICAgICAgICAgICBwYWdlOiBzcmNQYWdlLFxuICAgICAgICAgICAgICAgICAgICBwb3N0cG9uZWQsXG4gICAgICAgICAgICAgICAgICAgIHNob3VsZFdhaXRPbkFsbFJlYWR5LFxuICAgICAgICAgICAgICAgICAgICBzZXJ2ZVN0cmVhbWluZ01ldGFkYXRhLFxuICAgICAgICAgICAgICAgICAgICBzdXBwb3J0c0R5bmFtaWNSZXNwb25zZTogdHlwZW9mIHBvc3Rwb25lZCA9PT0gJ3N0cmluZycgfHwgc3VwcG9ydHNEeW5hbWljUmVzcG9uc2UsXG4gICAgICAgICAgICAgICAgICAgIGJ1aWxkTWFuaWZlc3QsXG4gICAgICAgICAgICAgICAgICAgIG5leHRGb250TWFuaWZlc3QsXG4gICAgICAgICAgICAgICAgICAgIHJlYWN0TG9hZGFibGVNYW5pZmVzdCxcbiAgICAgICAgICAgICAgICAgICAgc3VicmVzb3VyY2VJbnRlZ3JpdHlNYW5pZmVzdCxcbiAgICAgICAgICAgICAgICAgICAgc2VydmVyQWN0aW9uc01hbmlmZXN0LFxuICAgICAgICAgICAgICAgICAgICBjbGllbnRSZWZlcmVuY2VNYW5pZmVzdCxcbiAgICAgICAgICAgICAgICAgICAgc2V0SXNyU3RhdHVzOiByb3V0ZXJTZXJ2ZXJDb250ZXh0ID09IG51bGwgPyB2b2lkIDAgOiByb3V0ZXJTZXJ2ZXJDb250ZXh0LnNldElzclN0YXR1cyxcbiAgICAgICAgICAgICAgICAgICAgZGlyOiBwcm9jZXNzLmVudi5ORVhUX1JVTlRJTUUgPT09ICdub2RlanMnID8gcmVxdWlyZSgncGF0aCcpLmpvaW4oLyogdHVyYm9wYWNrSWdub3JlOiB0cnVlICovIHByb2Nlc3MuY3dkKCksIHJvdXRlTW9kdWxlLnJlbGF0aXZlUHJvamVjdERpcikgOiBgJHtwcm9jZXNzLmN3ZCgpfS8ke3JvdXRlTW9kdWxlLnJlbGF0aXZlUHJvamVjdERpcn1gLFxuICAgICAgICAgICAgICAgICAgICBpc0RyYWZ0TW9kZSxcbiAgICAgICAgICAgICAgICAgICAgaXNSZXZhbGlkYXRlOiBpc1NTRyAmJiAhcG9zdHBvbmVkICYmICFpc0R5bmFtaWNSU0NSZXF1ZXN0LFxuICAgICAgICAgICAgICAgICAgICBib3RUeXBlLFxuICAgICAgICAgICAgICAgICAgICBpc09uRGVtYW5kUmV2YWxpZGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgaXNQb3NzaWJsZVNlcnZlckFjdGlvbixcbiAgICAgICAgICAgICAgICAgICAgYXNzZXRQcmVmaXg6IG5leHRDb25maWcuYXNzZXRQcmVmaXgsXG4gICAgICAgICAgICAgICAgICAgIG5leHRDb25maWdPdXRwdXQ6IG5leHRDb25maWcub3V0cHV0LFxuICAgICAgICAgICAgICAgICAgICBjcm9zc09yaWdpbjogbmV4dENvbmZpZy5jcm9zc09yaWdpbixcbiAgICAgICAgICAgICAgICAgICAgdHJhaWxpbmdTbGFzaDogbmV4dENvbmZpZy50cmFpbGluZ1NsYXNoLFxuICAgICAgICAgICAgICAgICAgICBwcmV2aWV3UHJvcHM6IHByZXJlbmRlck1hbmlmZXN0LnByZXZpZXcsXG4gICAgICAgICAgICAgICAgICAgIGRlcGxveW1lbnRJZDogbmV4dENvbmZpZy5kZXBsb3ltZW50SWQsXG4gICAgICAgICAgICAgICAgICAgIGVuYWJsZVRhaW50aW5nOiBuZXh0Q29uZmlnLmV4cGVyaW1lbnRhbC50YWludCxcbiAgICAgICAgICAgICAgICAgICAgaHRtbExpbWl0ZWRCb3RzOiBuZXh0Q29uZmlnLmh0bWxMaW1pdGVkQm90cyxcbiAgICAgICAgICAgICAgICAgICAgZGV2dG9vbFNlZ21lbnRFeHBsb3JlcjogbmV4dENvbmZpZy5leHBlcmltZW50YWwuZGV2dG9vbFNlZ21lbnRFeHBsb3JlcixcbiAgICAgICAgICAgICAgICAgICAgcmVhY3RNYXhIZWFkZXJzTGVuZ3RoOiBuZXh0Q29uZmlnLnJlYWN0TWF4SGVhZGVyc0xlbmd0aCxcbiAgICAgICAgICAgICAgICAgICAgbXVsdGlab25lRHJhZnRNb2RlLFxuICAgICAgICAgICAgICAgICAgICBpbmNyZW1lbnRhbENhY2hlOiBnZXRSZXF1ZXN0TWV0YShyZXEsICdpbmNyZW1lbnRhbENhY2hlJyksXG4gICAgICAgICAgICAgICAgICAgIGNhY2hlTGlmZVByb2ZpbGVzOiBuZXh0Q29uZmlnLmV4cGVyaW1lbnRhbC5jYWNoZUxpZmUsXG4gICAgICAgICAgICAgICAgICAgIGJhc2VQYXRoOiBuZXh0Q29uZmlnLmJhc2VQYXRoLFxuICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJBY3Rpb25zOiBuZXh0Q29uZmlnLmV4cGVyaW1lbnRhbC5zZXJ2ZXJBY3Rpb25zLFxuICAgICAgICAgICAgICAgICAgICAuLi5pc0RlYnVnU3RhdGljU2hlbGwgfHwgaXNEZWJ1Z0R5bmFtaWNBY2Nlc3NlcyA/IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5leHRFeHBvcnQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0c0R5bmFtaWNSZXNwb25zZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc1N0YXRpY0dlbmVyYXRpb246IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc1JldmFsaWRhdGU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0RlYnVnRHluYW1pY0FjY2Vzc2VzOiBpc0RlYnVnRHluYW1pY0FjY2Vzc2VzXG4gICAgICAgICAgICAgICAgICAgIH0gOiB7fSxcbiAgICAgICAgICAgICAgICAgICAgZXhwZXJpbWVudGFsOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpc1JvdXRlUFBSRW5hYmxlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4cGlyZVRpbWU6IG5leHRDb25maWcuZXhwaXJlVGltZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YWxlVGltZXM6IG5leHRDb25maWcuZXhwZXJpbWVudGFsLnN0YWxlVGltZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICBjYWNoZUNvbXBvbmVudHM6IEJvb2xlYW4obmV4dENvbmZpZy5leHBlcmltZW50YWwuY2FjaGVDb21wb25lbnRzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudFNlZ21lbnRDYWNoZTogQm9vbGVhbihuZXh0Q29uZmlnLmV4cGVyaW1lbnRhbC5jbGllbnRTZWdtZW50Q2FjaGUpLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50UGFyYW1QYXJzaW5nOiBCb29sZWFuKG5leHRDb25maWcuZXhwZXJpbWVudGFsLmNsaWVudFBhcmFtUGFyc2luZyksXG4gICAgICAgICAgICAgICAgICAgICAgICBkeW5hbWljT25Ib3ZlcjogQm9vbGVhbihuZXh0Q29uZmlnLmV4cGVyaW1lbnRhbC5keW5hbWljT25Ib3ZlciksXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmxpbmVDc3M6IEJvb2xlYW4obmV4dENvbmZpZy5leHBlcmltZW50YWwuaW5saW5lQ3NzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGF1dGhJbnRlcnJ1cHRzOiBCb29sZWFuKG5leHRDb25maWcuZXhwZXJpbWVudGFsLmF1dGhJbnRlcnJ1cHRzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudFRyYWNlTWV0YWRhdGE6IG5leHRDb25maWcuZXhwZXJpbWVudGFsLmNsaWVudFRyYWNlTWV0YWRhdGEgfHwgW11cbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgd2FpdFVudGlsOiBjdHgud2FpdFVudGlsLFxuICAgICAgICAgICAgICAgICAgICBvbkNsb3NlOiAoY2IpPT57XG4gICAgICAgICAgICAgICAgICAgICAgICByZXMub24oJ2Nsb3NlJywgY2IpO1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBvbkFmdGVyVGFza0Vycm9yOiAoKT0+e30sXG4gICAgICAgICAgICAgICAgICAgIG9uSW5zdHJ1bWVudGF0aW9uUmVxdWVzdEVycm9yOiAoZXJyb3IsIF9yZXF1ZXN0LCBlcnJvckNvbnRleHQpPT5yb3V0ZU1vZHVsZS5vblJlcXVlc3RFcnJvcihyZXEsIGVycm9yLCBlcnJvckNvbnRleHQsIHJvdXRlclNlcnZlckNvbnRleHQpLFxuICAgICAgICAgICAgICAgICAgICBlcnI6IGdldFJlcXVlc3RNZXRhKHJlcSwgJ2ludm9rZUVycm9yJyksXG4gICAgICAgICAgICAgICAgICAgIGRldjogcm91dGVNb2R1bGUuaXNEZXZcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgaW52b2tlUm91dGVNb2R1bGUoc3BhbiwgY29udGV4dCk7XG4gICAgICAgICAgICBjb25zdCB7IG1ldGFkYXRhIH0gPSByZXN1bHQ7XG4gICAgICAgICAgICBjb25zdCB7IGNhY2hlQ29udHJvbCwgaGVhZGVycyA9IHt9LCAvLyBBZGQgYW55IGZldGNoIHRhZ3MgdGhhdCB3ZXJlIG9uIHRoZSBwYWdlIHRvIHRoZSByZXNwb25zZSBoZWFkZXJzLlxuICAgICAgICAgICAgZmV0Y2hUYWdzOiBjYWNoZVRhZ3MgfSA9IG1ldGFkYXRhO1xuICAgICAgICAgICAgaWYgKGNhY2hlVGFncykge1xuICAgICAgICAgICAgICAgIGhlYWRlcnNbTkVYVF9DQUNIRV9UQUdTX0hFQURFUl0gPSBjYWNoZVRhZ3M7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBQdWxsIGFueSBmZXRjaCBtZXRyaWNzIGZyb20gdGhlIHJlbmRlciBvbnRvIHRoZSByZXF1ZXN0LlxuICAgICAgICAgICAgO1xuICAgICAgICAgICAgcmVxLmZldGNoTWV0cmljcyA9IG1ldGFkYXRhLmZldGNoTWV0cmljcztcbiAgICAgICAgICAgIC8vIHdlIGRvbid0IHRocm93IHN0YXRpYyB0byBkeW5hbWljIGVycm9ycyBpbiBkZXYgYXMgaXNTU0dcbiAgICAgICAgICAgIC8vIGlzIGEgYmVzdCBndWVzcyBpbiBkZXYgc2luY2Ugd2UgZG9uJ3QgaGF2ZSB0aGUgcHJlcmVuZGVyIHBhc3NcbiAgICAgICAgICAgIC8vIHRvIGtub3cgd2hldGhlciB0aGUgcGF0aCBpcyBhY3R1YWxseSBzdGF0aWMgb3Igbm90XG4gICAgICAgICAgICBpZiAoaXNTU0cgJiYgKGNhY2hlQ29udHJvbCA9PSBudWxsID8gdm9pZCAwIDogY2FjaGVDb250cm9sLnJldmFsaWRhdGUpID09PSAwICYmICFyb3V0ZU1vZHVsZS5pc0RldiAmJiAhaXNSb3V0ZVBQUkVuYWJsZWQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzdGF0aWNCYWlsb3V0SW5mbyA9IG1ldGFkYXRhLnN0YXRpY0JhaWxvdXRJbmZvO1xuICAgICAgICAgICAgICAgIGNvbnN0IGVyciA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXcgRXJyb3IoYFBhZ2UgY2hhbmdlZCBmcm9tIHN0YXRpYyB0byBkeW5hbWljIGF0IHJ1bnRpbWUgJHtyZXNvbHZlZFBhdGhuYW1lfSR7KHN0YXRpY0JhaWxvdXRJbmZvID09IG51bGwgPyB2b2lkIDAgOiBzdGF0aWNCYWlsb3V0SW5mby5kZXNjcmlwdGlvbikgPyBgLCByZWFzb246ICR7c3RhdGljQmFpbG91dEluZm8uZGVzY3JpcHRpb259YCA6IGBgfWAgKyBgXFxuc2VlIG1vcmUgaGVyZSBodHRwczovL25leHRqcy5vcmcvZG9jcy9tZXNzYWdlcy9hcHAtc3RhdGljLXRvLWR5bmFtaWMtZXJyb3JgKSwgXCJfX05FWFRfRVJST1JfQ09ERVwiLCB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBcIkUxMzJcIixcbiAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGlmIChzdGF0aWNCYWlsb3V0SW5mbyA9PSBudWxsID8gdm9pZCAwIDogc3RhdGljQmFpbG91dEluZm8uc3RhY2spIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RhY2sgPSBzdGF0aWNCYWlsb3V0SW5mby5zdGFjaztcbiAgICAgICAgICAgICAgICAgICAgZXJyLnN0YWNrID0gZXJyLm1lc3NhZ2UgKyBzdGFjay5zdWJzdHJpbmcoc3RhY2suaW5kZXhPZignXFxuJykpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgICAgICAgICAgIGtpbmQ6IENhY2hlZFJvdXRlS2luZC5BUFBfUEFHRSxcbiAgICAgICAgICAgICAgICAgICAgaHRtbDogcmVzdWx0LFxuICAgICAgICAgICAgICAgICAgICBoZWFkZXJzLFxuICAgICAgICAgICAgICAgICAgICByc2NEYXRhOiBtZXRhZGF0YS5mbGlnaHREYXRhLFxuICAgICAgICAgICAgICAgICAgICBwb3N0cG9uZWQ6IG1ldGFkYXRhLnBvc3Rwb25lZCxcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiBtZXRhZGF0YS5zdGF0dXNDb2RlLFxuICAgICAgICAgICAgICAgICAgICBzZWdtZW50RGF0YTogbWV0YWRhdGEuc2VnbWVudERhdGFcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGNhY2hlQ29udHJvbFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgcmVzcG9uc2VHZW5lcmF0b3IgPSBhc3luYyAoeyBoYXNSZXNvbHZlZCwgcHJldmlvdXNDYWNoZUVudHJ5LCBpc1JldmFsaWRhdGluZywgc3BhbiB9KT0+e1xuICAgICAgICAgICAgY29uc3QgaXNQcm9kdWN0aW9uID0gcm91dGVNb2R1bGUuaXNEZXYgPT09IGZhbHNlO1xuICAgICAgICAgICAgY29uc3QgZGlkUmVzcG9uZCA9IGhhc1Jlc29sdmVkIHx8IHJlcy53cml0YWJsZUVuZGVkO1xuICAgICAgICAgICAgLy8gc2tpcCBvbi1kZW1hbmQgcmV2YWxpZGF0ZSBpZiBjYWNoZSBpcyBub3QgcHJlc2VudCBhbmRcbiAgICAgICAgICAgIC8vIHJldmFsaWRhdGUtaWYtZ2VuZXJhdGVkIGlzIHNldFxuICAgICAgICAgICAgaWYgKGlzT25EZW1hbmRSZXZhbGlkYXRlICYmIHJldmFsaWRhdGVPbmx5R2VuZXJhdGVkICYmICFwcmV2aW91c0NhY2hlRW50cnkgJiYgIW1pbmltYWxNb2RlKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJvdXRlclNlcnZlckNvbnRleHQgPT0gbnVsbCA/IHZvaWQgMCA6IHJvdXRlclNlcnZlckNvbnRleHQucmVuZGVyNDA0KSB7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHJvdXRlclNlcnZlckNvbnRleHQucmVuZGVyNDA0KHJlcSwgcmVzKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDQwNDtcbiAgICAgICAgICAgICAgICAgICAgcmVzLmVuZCgnVGhpcyBwYWdlIGNvdWxkIG5vdCBiZSBmb3VuZCcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCBmYWxsYmFja01vZGU7XG4gICAgICAgICAgICBpZiAocHJlcmVuZGVySW5mbykge1xuICAgICAgICAgICAgICAgIGZhbGxiYWNrTW9kZSA9IHBhcnNlRmFsbGJhY2tGaWVsZChwcmVyZW5kZXJJbmZvLmZhbGxiYWNrKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIFdoZW4gc2VydmluZyBhIEhUTUwgYm90IHJlcXVlc3QsIHdlIHdhbnQgdG8gc2VydmUgYSBibG9ja2luZyByZW5kZXIgYW5kXG4gICAgICAgICAgICAvLyBub3QgdGhlIHByZXJlbmRlcmVkIHBhZ2UuIFRoaXMgZW5zdXJlcyB0aGF0IHRoZSBjb3JyZWN0IGNvbnRlbnQgaXMgc2VydmVkXG4gICAgICAgICAgICAvLyB0byB0aGUgYm90IGluIHRoZSBoZWFkLlxuICAgICAgICAgICAgaWYgKGZhbGxiYWNrTW9kZSA9PT0gRmFsbGJhY2tNb2RlLlBSRVJFTkRFUiAmJiBpc0JvdCh1c2VyQWdlbnQpKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFpc1JvdXRlUFBSRW5hYmxlZCB8fCBpc0h0bWxCb3QpIHtcbiAgICAgICAgICAgICAgICAgICAgZmFsbGJhY2tNb2RlID0gRmFsbGJhY2tNb2RlLkJMT0NLSU5HX1NUQVRJQ19SRU5ERVI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKChwcmV2aW91c0NhY2hlRW50cnkgPT0gbnVsbCA/IHZvaWQgMCA6IHByZXZpb3VzQ2FjaGVFbnRyeS5pc1N0YWxlKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICBpc09uRGVtYW5kUmV2YWxpZGF0ZSA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBUT0RPOiBhZGFwdCBmb3IgUFBSXG4gICAgICAgICAgICAvLyBvbmx5IGFsbG93IG9uLWRlbWFuZCByZXZhbGlkYXRlIGZvciBmYWxsYmFjazogdHJ1ZS9ibG9ja2luZ1xuICAgICAgICAgICAgLy8gb3IgZm9yIHByZXJlbmRlcmVkIGZhbGxiYWNrOiBmYWxzZSBwYXRoc1xuICAgICAgICAgICAgaWYgKGlzT25EZW1hbmRSZXZhbGlkYXRlICYmIChmYWxsYmFja01vZGUgIT09IEZhbGxiYWNrTW9kZS5OT1RfRk9VTkQgfHwgcHJldmlvdXNDYWNoZUVudHJ5KSkge1xuICAgICAgICAgICAgICAgIGZhbGxiYWNrTW9kZSA9IEZhbGxiYWNrTW9kZS5CTE9DS0lOR19TVEFUSUNfUkVOREVSO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFtaW5pbWFsTW9kZSAmJiBmYWxsYmFja01vZGUgIT09IEZhbGxiYWNrTW9kZS5CTE9DS0lOR19TVEFUSUNfUkVOREVSICYmIHN0YXRpY1BhdGhLZXkgJiYgIWRpZFJlc3BvbmQgJiYgIWlzRHJhZnRNb2RlICYmIHBhZ2VJc0R5bmFtaWMgJiYgKGlzUHJvZHVjdGlvbiB8fCAhaXNQcmVyZW5kZXJlZCkpIHtcbiAgICAgICAgICAgICAgICAvLyBpZiB0aGUgcGFnZSBoYXMgZHluYW1pY1BhcmFtczogZmFsc2UgYW5kIHRoaXMgcGF0aG5hbWUgd2Fzbid0XG4gICAgICAgICAgICAgICAgLy8gcHJlcmVuZGVyZWQgdHJpZ2dlciB0aGUgbm8gZmFsbGJhY2sgaGFuZGxpbmdcbiAgICAgICAgICAgICAgICBpZiAoLy8gSW4gZGV2ZWxvcG1lbnQsIGZhbGwgdGhyb3VnaCB0byByZW5kZXIgdG8gaGFuZGxlIG1pc3NpbmdcbiAgICAgICAgICAgICAgICAvLyBnZXRTdGF0aWNQYXRocy5cbiAgICAgICAgICAgICAgICAoaXNQcm9kdWN0aW9uIHx8IHByZXJlbmRlckluZm8pICYmIC8vIFdoZW4gZmFsbGJhY2sgaXNuJ3QgcHJlc2VudCwgYWJvcnQgdGhpcyByZW5kZXIgc28gd2UgNDA0XG4gICAgICAgICAgICAgICAgZmFsbGJhY2tNb2RlID09PSBGYWxsYmFja01vZGUuTk9UX0ZPVU5EKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBOb0ZhbGxiYWNrRXJyb3IoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbGV0IGZhbGxiYWNrUmVzcG9uc2U7XG4gICAgICAgICAgICAgICAgaWYgKGlzUm91dGVQUFJFbmFibGVkICYmICFpc1JTQ1JlcXVlc3QpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2FjaGVLZXkgPSB0eXBlb2YgKHByZXJlbmRlckluZm8gPT0gbnVsbCA/IHZvaWQgMCA6IHByZXJlbmRlckluZm8uZmFsbGJhY2spID09PSAnc3RyaW5nJyA/IHByZXJlbmRlckluZm8uZmFsbGJhY2sgOiBpc1Byb2R1Y3Rpb24gPyBub3JtYWxpemVkU3JjUGFnZSA6IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIC8vIFdlIHVzZSB0aGUgcmVzcG9uc2UgY2FjaGUgaGVyZSB0byBoYW5kbGUgdGhlIHJldmFsaWRhdGlvbiBhbmRcbiAgICAgICAgICAgICAgICAgICAgLy8gbWFuYWdlbWVudCBvZiB0aGUgZmFsbGJhY2sgc2hlbGwuXG4gICAgICAgICAgICAgICAgICAgIGZhbGxiYWNrUmVzcG9uc2UgPSBhd2FpdCByb3V0ZU1vZHVsZS5oYW5kbGVSZXNwb25zZSh7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYWNoZUtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5leHRDb25maWcsXG4gICAgICAgICAgICAgICAgICAgICAgICByb3V0ZUtpbmQ6IFJvdXRlS2luZC5BUFBfUEFHRSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzRmFsbGJhY2s6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVyZW5kZXJNYW5pZmVzdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzUm91dGVQUFJFbmFibGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VHZW5lcmF0b3I6IGFzeW5jICgpPT5kb1JlbmRlcih7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwYW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIHBhc3MgYHVuZGVmaW5lZGAgYXMgcmVuZGVyaW5nIGEgZmFsbGJhY2sgaXNuJ3QgcmVzdW1lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBoZXJlLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3N0cG9uZWQ6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsbGJhY2tSb3V0ZVBhcmFtczogLy8gSWYgd2UncmUgaW4gcHJvZHVjdGlvbiBvciB3ZSdyZSBkZWJ1Z2dpbmcgdGhlIGZhbGxiYWNrXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNoZWxsIHRoZW4gd2Ugc2hvdWxkIHBvc3Rwb25lIHdoZW4gZHluYW1pYyBwYXJhbXMgYXJlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFjY2Vzc2VkLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1Byb2R1Y3Rpb24gfHwgaXNEZWJ1Z0ZhbGxiYWNrU2hlbGwgPyBnZXRGYWxsYmFja1JvdXRlUGFyYW1zKG5vcm1hbGl6ZWRTcmNQYWdlKSA6IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHdhaXRVbnRpbDogY3R4LndhaXRVbnRpbFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIGZhbGxiYWNrIHJlc3BvbnNlIHdhcyBzZXQgdG8gbnVsbCwgdGhlbiB3ZSBzaG91bGQgcmV0dXJuIG51bGwuXG4gICAgICAgICAgICAgICAgICAgIGlmIChmYWxsYmFja1Jlc3BvbnNlID09PSBudWxsKSByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgLy8gT3RoZXJ3aXNlLCBpZiB3ZSBkaWQgZ2V0IGEgZmFsbGJhY2sgcmVzcG9uc2UsIHdlIHNob3VsZCByZXR1cm4gaXQuXG4gICAgICAgICAgICAgICAgICAgIGlmIChmYWxsYmFja1Jlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBSZW1vdmUgdGhlIGNhY2hlIGNvbnRyb2wgZnJvbSB0aGUgcmVzcG9uc2UgdG8gcHJldmVudCBpdCBmcm9tIGJlaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB1c2VkIGluIHRoZSBzdXJyb3VuZGluZyBjYWNoZS5cbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBmYWxsYmFja1Jlc3BvbnNlLmNhY2hlQ29udHJvbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxsYmFja1Jlc3BvbnNlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gT25seSByZXF1ZXN0cyB0aGF0IGFyZW4ndCByZXZhbGlkYXRpbmcgY2FuIGJlIHJlc3VtZWQuIElmIHdlIGhhdmUgdGhlXG4gICAgICAgICAgICAvLyBtaW5pbWFsIHBvc3Rwb25lZCBkYXRhLCB0aGVuIHdlIHNob3VsZCByZXN1bWUgdGhlIHJlbmRlciB3aXRoIGl0LlxuICAgICAgICAgICAgY29uc3QgcG9zdHBvbmVkID0gIWlzT25EZW1hbmRSZXZhbGlkYXRlICYmICFpc1JldmFsaWRhdGluZyAmJiBtaW5pbWFsUG9zdHBvbmVkID8gbWluaW1hbFBvc3Rwb25lZCA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIC8vIFdoZW4gd2UncmUgaW4gbWluaW1hbCBtb2RlLCBpZiB3ZSdyZSB0cnlpbmcgdG8gZGVidWcgdGhlIHN0YXRpYyBzaGVsbCxcbiAgICAgICAgICAgIC8vIHdlIHNob3VsZCBqdXN0IHJldHVybiBub3RoaW5nIGluc3RlYWQgb2YgcmVzdW1pbmcgdGhlIGR5bmFtaWMgcmVuZGVyLlxuICAgICAgICAgICAgaWYgKChpc0RlYnVnU3RhdGljU2hlbGwgfHwgaXNEZWJ1Z0R5bmFtaWNBY2Nlc3NlcykgJiYgdHlwZW9mIHBvc3Rwb25lZCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBjYWNoZUNvbnRyb2w6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldmFsaWRhdGU6IDEsXG4gICAgICAgICAgICAgICAgICAgICAgICBleHBpcmU6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgICAgICAgICAgICAga2luZDogQ2FjaGVkUm91dGVLaW5kLlBBR0VTLFxuICAgICAgICAgICAgICAgICAgICAgICAgaHRtbDogUmVuZGVyUmVzdWx0LkVNUFRZLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFnZURhdGE6IHt9LFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBJZiB0aGlzIGlzIGEgZHluYW1pYyByb3V0ZSB3aXRoIFBQUiBlbmFibGVkIGFuZCB0aGUgZGVmYXVsdCByb3V0ZVxuICAgICAgICAgICAgLy8gbWF0Y2hlcyB3ZXJlIHNldCwgdGhlbiB3ZSBzaG91bGQgcGFzcyB0aGUgZmFsbGJhY2sgcm91dGUgcGFyYW1zIHRvXG4gICAgICAgICAgICAvLyB0aGUgcmVuZGVyZXIgYXMgdGhpcyBpcyBhIGZhbGxiYWNrIHJldmFsaWRhdGlvbiByZXF1ZXN0LlxuICAgICAgICAgICAgY29uc3QgZmFsbGJhY2tSb3V0ZVBhcmFtcyA9IHBhZ2VJc0R5bmFtaWMgJiYgaXNSb3V0ZVBQUkVuYWJsZWQgJiYgKGdldFJlcXVlc3RNZXRhKHJlcSwgJ3JlbmRlckZhbGxiYWNrU2hlbGwnKSB8fCBpc0RlYnVnRmFsbGJhY2tTaGVsbCkgPyBnZXRGYWxsYmFja1JvdXRlUGFyYW1zKHBhdGhuYW1lKSA6IG51bGw7XG4gICAgICAgICAgICAvLyBQZXJmb3JtIHRoZSByZW5kZXIuXG4gICAgICAgICAgICByZXR1cm4gZG9SZW5kZXIoe1xuICAgICAgICAgICAgICAgIHNwYW4sXG4gICAgICAgICAgICAgICAgcG9zdHBvbmVkLFxuICAgICAgICAgICAgICAgIGZhbGxiYWNrUm91dGVQYXJhbXNcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgICBjb25zdCBoYW5kbGVSZXNwb25zZSA9IGFzeW5jIChzcGFuKT0+e1xuICAgICAgICAgICAgdmFyIF9jYWNoZUVudHJ5X3ZhbHVlLCBfY2FjaGVkRGF0YV9oZWFkZXJzO1xuICAgICAgICAgICAgY29uc3QgY2FjaGVFbnRyeSA9IGF3YWl0IHJvdXRlTW9kdWxlLmhhbmRsZVJlc3BvbnNlKHtcbiAgICAgICAgICAgICAgICBjYWNoZUtleTogc3NnQ2FjaGVLZXksXG4gICAgICAgICAgICAgICAgcmVzcG9uc2VHZW5lcmF0b3I6IChjKT0+cmVzcG9uc2VHZW5lcmF0b3Ioe1xuICAgICAgICAgICAgICAgICAgICAgICAgc3BhbixcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmNcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgcm91dGVLaW5kOiBSb3V0ZUtpbmQuQVBQX1BBR0UsXG4gICAgICAgICAgICAgICAgaXNPbkRlbWFuZFJldmFsaWRhdGUsXG4gICAgICAgICAgICAgICAgaXNSb3V0ZVBQUkVuYWJsZWQsXG4gICAgICAgICAgICAgICAgcmVxLFxuICAgICAgICAgICAgICAgIG5leHRDb25maWcsXG4gICAgICAgICAgICAgICAgcHJlcmVuZGVyTWFuaWZlc3QsXG4gICAgICAgICAgICAgICAgd2FpdFVudGlsOiBjdHgud2FpdFVudGlsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmIChpc0RyYWZ0TW9kZSkge1xuICAgICAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NhY2hlLUNvbnRyb2wnLCAncHJpdmF0ZSwgbm8tY2FjaGUsIG5vLXN0b3JlLCBtYXgtYWdlPTAsIG11c3QtcmV2YWxpZGF0ZScpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gSW4gZGV2LCB3ZSBzaG91bGQgbm90IGNhY2hlIHBhZ2VzIGZvciBhbnkgcmVhc29uLlxuICAgICAgICAgICAgaWYgKHJvdXRlTW9kdWxlLmlzRGV2KSB7XG4gICAgICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ2FjaGUtQ29udHJvbCcsICduby1zdG9yZSwgbXVzdC1yZXZhbGlkYXRlJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWNhY2hlRW50cnkpIHtcbiAgICAgICAgICAgICAgICBpZiAoc3NnQ2FjaGVLZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gQSBjYWNoZSBlbnRyeSBtaWdodCBub3QgYmUgZ2VuZXJhdGVkIGlmIGEgcmVzcG9uc2UgaXMgd3JpdHRlblxuICAgICAgICAgICAgICAgICAgICAvLyBpbiBgZ2V0SW5pdGlhbFByb3BzYCBvciBgZ2V0U2VydmVyU2lkZVByb3BzYCwgYnV0IHRob3NlIHNob3VsZG4ndFxuICAgICAgICAgICAgICAgICAgICAvLyBoYXZlIGEgY2FjaGUga2V5LiBJZiB3ZSBkbyBoYXZlIGEgY2FjaGUga2V5IGJ1dCB3ZSBkb24ndCBlbmQgdXBcbiAgICAgICAgICAgICAgICAgICAgLy8gd2l0aCBhIGNhY2hlIGVudHJ5LCB0aGVuIGVpdGhlciBOZXh0LmpzIG9yIHRoZSBhcHBsaWNhdGlvbiBoYXMgYVxuICAgICAgICAgICAgICAgICAgICAvLyBidWcgdGhhdCBuZWVkcyBmaXhpbmcuXG4gICAgICAgICAgICAgICAgICAgIHRocm93IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXcgRXJyb3IoJ2ludmFyaWFudDogY2FjaGUgZW50cnkgcmVxdWlyZWQgYnV0IG5vdCBnZW5lcmF0ZWQnKSwgXCJfX05FWFRfRVJST1JfQ09ERVwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogXCJFNjJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICgoKF9jYWNoZUVudHJ5X3ZhbHVlID0gY2FjaGVFbnRyeS52YWx1ZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9jYWNoZUVudHJ5X3ZhbHVlLmtpbmQpICE9PSBDYWNoZWRSb3V0ZUtpbmQuQVBQX1BBR0UpIHtcbiAgICAgICAgICAgICAgICB2YXIgX2NhY2hlRW50cnlfdmFsdWUxO1xuICAgICAgICAgICAgICAgIHRocm93IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXcgRXJyb3IoYEludmFyaWFudCBhcHAtcGFnZSBoYW5kbGVyIHJlY2VpdmVkIGludmFsaWQgY2FjaGUgZW50cnkgJHsoX2NhY2hlRW50cnlfdmFsdWUxID0gY2FjaGVFbnRyeS52YWx1ZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9jYWNoZUVudHJ5X3ZhbHVlMS5raW5kfWApLCBcIl9fTkVYVF9FUlJPUl9DT0RFXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IFwiRTcwN1wiLFxuICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBkaWRQb3N0cG9uZSA9IHR5cGVvZiBjYWNoZUVudHJ5LnZhbHVlLnBvc3Rwb25lZCA9PT0gJ3N0cmluZyc7XG4gICAgICAgICAgICBpZiAoaXNTU0cgJiYgLy8gV2UgZG9uJ3Qgd2FudCB0byBzZW5kIGEgY2FjaGUgaGVhZGVyIGZvciByZXF1ZXN0cyB0aGF0IGNvbnRhaW4gZHluYW1pY1xuICAgICAgICAgICAgLy8gZGF0YS4gSWYgdGhpcyBpcyBhIER5bmFtaWMgUlNDIHJlcXVlc3Qgb3Igd2Fzbid0IGEgUHJlZmV0Y2ggUlNDXG4gICAgICAgICAgICAvLyByZXF1ZXN0LCB0aGVuIHdlIHNob3VsZCBzZXQgdGhlIGNhY2hlIGhlYWRlci5cbiAgICAgICAgICAgICFpc0R5bmFtaWNSU0NSZXF1ZXN0ICYmICghZGlkUG9zdHBvbmUgfHwgaXNQcmVmZXRjaFJTQ1JlcXVlc3QpKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFtaW5pbWFsTW9kZSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBzZXQgeC1uZXh0anMtY2FjaGUgaGVhZGVyIHRvIG1hdGNoIHRoZSBoZWFkZXJcbiAgICAgICAgICAgICAgICAgICAgLy8gd2Ugc2V0IGZvciB0aGUgaW1hZ2Utb3B0aW1pemVyXG4gICAgICAgICAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ3gtbmV4dGpzLWNhY2hlJywgaXNPbkRlbWFuZFJldmFsaWRhdGUgPyAnUkVWQUxJREFURUQnIDogY2FjaGVFbnRyeS5pc01pc3MgPyAnTUlTUycgOiBjYWNoZUVudHJ5LmlzU3RhbGUgPyAnU1RBTEUnIDogJ0hJVCcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBTZXQgYSBoZWFkZXIgdXNlZCBieSB0aGUgY2xpZW50IHJvdXRlciB0byBzaWduYWwgdGhlIHJlc3BvbnNlIGlzIHN0YXRpY1xuICAgICAgICAgICAgICAgIC8vIGFuZCBzaG91bGQgcmVzcGVjdCB0aGUgYHN0YXRpY2AgY2FjaGUgc3RhbGVUaW1lIHZhbHVlLlxuICAgICAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoTkVYVF9JU19QUkVSRU5ERVJfSEVBREVSLCAnMScpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgeyB2YWx1ZTogY2FjaGVkRGF0YSB9ID0gY2FjaGVFbnRyeTtcbiAgICAgICAgICAgIC8vIENvZXJjZSB0aGUgY2FjaGUgY29udHJvbCBwYXJhbWV0ZXIgZnJvbSB0aGUgcmVuZGVyLlxuICAgICAgICAgICAgbGV0IGNhY2hlQ29udHJvbDtcbiAgICAgICAgICAgIC8vIElmIHRoaXMgaXMgYSByZXN1bWUgcmVxdWVzdCBpbiBtaW5pbWFsIG1vZGUgaXQgaXMgc3RyZWFtZWQgd2l0aCBkeW5hbWljXG4gICAgICAgICAgICAvLyBjb250ZW50IGFuZCBzaG91bGQgbm90IGJlIGNhY2hlZC5cbiAgICAgICAgICAgIGlmIChtaW5pbWFsUG9zdHBvbmVkKSB7XG4gICAgICAgICAgICAgICAgY2FjaGVDb250cm9sID0ge1xuICAgICAgICAgICAgICAgICAgICByZXZhbGlkYXRlOiAwLFxuICAgICAgICAgICAgICAgICAgICBleHBpcmU6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1pbmltYWxNb2RlICYmIGlzUlNDUmVxdWVzdCAmJiAhaXNQcmVmZXRjaFJTQ1JlcXVlc3QgJiYgaXNSb3V0ZVBQUkVuYWJsZWQpIHtcbiAgICAgICAgICAgICAgICBjYWNoZUNvbnRyb2wgPSB7XG4gICAgICAgICAgICAgICAgICAgIHJldmFsaWRhdGU6IDAsXG4gICAgICAgICAgICAgICAgICAgIGV4cGlyZTogdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIXJvdXRlTW9kdWxlLmlzRGV2KSB7XG4gICAgICAgICAgICAgICAgLy8gSWYgdGhpcyBpcyBhIHByZXZpZXcgbW9kZSByZXF1ZXN0LCB3ZSBzaG91bGRuJ3QgY2FjaGUgaXRcbiAgICAgICAgICAgICAgICBpZiAoaXNEcmFmdE1vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FjaGVDb250cm9sID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV2YWxpZGF0ZTogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4cGlyZTogdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICghaXNTU0cpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXMuZ2V0SGVhZGVyKCdDYWNoZS1Db250cm9sJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlQ29udHJvbCA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXZhbGlkYXRlOiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGlyZTogdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjYWNoZUVudHJ5LmNhY2hlQ29udHJvbCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgY2FjaGUgZW50cnkgaGFzIGEgY2FjaGUgY29udHJvbCB3aXRoIGEgcmV2YWxpZGF0ZSB2YWx1ZSB0aGF0J3NcbiAgICAgICAgICAgICAgICAgICAgLy8gYSBudW1iZXIsIHVzZSBpdC5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBjYWNoZUVudHJ5LmNhY2hlQ29udHJvbC5yZXZhbGlkYXRlID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIF9jYWNoZUVudHJ5X2NhY2hlQ29udHJvbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjYWNoZUVudHJ5LmNhY2hlQ29udHJvbC5yZXZhbGlkYXRlIDwgMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXcgRXJyb3IoYEludmFsaWQgcmV2YWxpZGF0ZSBjb25maWd1cmF0aW9uIHByb3ZpZGVkOiAke2NhY2hlRW50cnkuY2FjaGVDb250cm9sLnJldmFsaWRhdGV9IDwgMWApLCBcIl9fTkVYVF9FUlJPUl9DT0RFXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IFwiRTIyXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlQ29udHJvbCA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXZhbGlkYXRlOiBjYWNoZUVudHJ5LmNhY2hlQ29udHJvbC5yZXZhbGlkYXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGlyZTogKChfY2FjaGVFbnRyeV9jYWNoZUNvbnRyb2wgPSBjYWNoZUVudHJ5LmNhY2hlQ29udHJvbCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9jYWNoZUVudHJ5X2NhY2hlQ29udHJvbC5leHBpcmUpID8/IG5leHRDb25maWcuZXhwaXJlVGltZVxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlQ29udHJvbCA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXZhbGlkYXRlOiBDQUNIRV9PTkVfWUVBUixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBpcmU6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhY2hlRW50cnkuY2FjaGVDb250cm9sID0gY2FjaGVDb250cm9sO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBzZWdtZW50UHJlZmV0Y2hIZWFkZXIgPT09ICdzdHJpbmcnICYmIChjYWNoZWREYXRhID09IG51bGwgPyB2b2lkIDAgOiBjYWNoZWREYXRhLmtpbmQpID09PSBDYWNoZWRSb3V0ZUtpbmQuQVBQX1BBR0UgJiYgY2FjaGVkRGF0YS5zZWdtZW50RGF0YSkge1xuICAgICAgICAgICAgICAgIHZhciBfY2FjaGVkRGF0YV9oZWFkZXJzMTtcbiAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIGEgcHJlZmV0Y2ggcmVxdWVzdCBpc3N1ZWQgYnkgdGhlIGNsaWVudCBTZWdtZW50IENhY2hlLiBUaGVzZVxuICAgICAgICAgICAgICAgIC8vIHNob3VsZCBuZXZlciByZWFjaCB0aGUgYXBwbGljYXRpb24gbGF5ZXIgKGxhbWJkYSkuIFdlIHNob3VsZCBlaXRoZXJcbiAgICAgICAgICAgICAgICAvLyByZXNwb25kIGZyb20gdGhlIGNhY2hlIChISVQpIG9yIHJlc3BvbmQgd2l0aCAyMDQgTm8gQ29udGVudCAoTUlTUykuXG4gICAgICAgICAgICAgICAgLy8gU2V0IGEgaGVhZGVyIHRvIGluZGljYXRlIHRoYXQgUFBSIGlzIGVuYWJsZWQgZm9yIHRoaXMgcm91dGUuIFRoaXNcbiAgICAgICAgICAgICAgICAvLyBsZXRzIHRoZSBjbGllbnQgZGlzdGluZ3Vpc2ggYmV0d2VlbiBhIHJlZ3VsYXIgY2FjaGUgbWlzcyBhbmQgYSBjYWNoZVxuICAgICAgICAgICAgICAgIC8vIG1pc3MgZHVlIHRvIFBQUiBiZWluZyBkaXNhYmxlZC4gSW4gb3RoZXIgY29udGV4dHMgdGhpcyBoZWFkZXIgaXMgdXNlZFxuICAgICAgICAgICAgICAgIC8vIHRvIGluZGljYXRlIHRoYXQgdGhlIHJlc3BvbnNlIGNvbnRhaW5zIGR5bmFtaWMgZGF0YSwgYnV0IGhlcmUgd2UncmVcbiAgICAgICAgICAgICAgICAvLyBvbmx5IHVzaW5nIGl0IHRvIGluZGljYXRlIHRoYXQgdGhlIGZlYXR1cmUgaXMgZW5hYmxlZCDigJQgdGhlIHNlZ21lbnRcbiAgICAgICAgICAgICAgICAvLyByZXNwb25zZSBpdHNlbGYgY29udGFpbnMgd2hldGhlciB0aGUgZGF0YSBpcyBkeW5hbWljLlxuICAgICAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoTkVYVF9ESURfUE9TVFBPTkVfSEVBREVSLCAnMicpO1xuICAgICAgICAgICAgICAgIC8vIEFkZCB0aGUgY2FjaGUgdGFncyBoZWFkZXIgdG8gdGhlIHJlc3BvbnNlIGlmIGl0IGV4aXN0cyBhbmQgd2UncmUgaW5cbiAgICAgICAgICAgICAgICAvLyBtaW5pbWFsIG1vZGUgd2hpbGUgcmVuZGVyaW5nIGEgc3RhdGljIHBhZ2UuXG4gICAgICAgICAgICAgICAgY29uc3QgdGFncyA9IChfY2FjaGVkRGF0YV9oZWFkZXJzMSA9IGNhY2hlZERhdGEuaGVhZGVycykgPT0gbnVsbCA/IHZvaWQgMCA6IF9jYWNoZWREYXRhX2hlYWRlcnMxW05FWFRfQ0FDSEVfVEFHU19IRUFERVJdO1xuICAgICAgICAgICAgICAgIGlmIChtaW5pbWFsTW9kZSAmJiBpc1NTRyAmJiB0YWdzICYmIHR5cGVvZiB0YWdzID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgICAgICByZXMuc2V0SGVhZGVyKE5FWFRfQ0FDSEVfVEFHU19IRUFERVIsIHRhZ3MpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBtYXRjaGVkU2VnbWVudCA9IGNhY2hlZERhdGEuc2VnbWVudERhdGEuZ2V0KHNlZ21lbnRQcmVmZXRjaEhlYWRlcik7XG4gICAgICAgICAgICAgICAgaWYgKG1hdGNoZWRTZWdtZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gQ2FjaGUgaGl0XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBzZW5kUmVuZGVyUmVzdWx0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlRXRhZ3M6IG5leHRDb25maWcuZ2VuZXJhdGVFdGFncyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvd2VyZWRCeUhlYWRlcjogbmV4dENvbmZpZy5wb3dlcmVkQnlIZWFkZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQ6IFJlbmRlclJlc3VsdC5mcm9tU3RhdGljKG1hdGNoZWRTZWdtZW50LCBSU0NfQ09OVEVOVF9UWVBFX0hFQURFUiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjYWNoZUNvbnRyb2w6IGNhY2hlRW50cnkuY2FjaGVDb250cm9sXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBDYWNoZSBtaXNzLiBFaXRoZXIgYSBjYWNoZSBlbnRyeSBmb3IgdGhpcyByb3V0ZSBoYXMgbm90IGJlZW4gZ2VuZXJhdGVkXG4gICAgICAgICAgICAgICAgLy8gKHdoaWNoIHRlY2huaWNhbGx5IHNob3VsZCBub3QgYmUgcG9zc2libGUgd2hlbiBQUFIgaXMgZW5hYmxlZCwgYmVjYXVzZVxuICAgICAgICAgICAgICAgIC8vIGF0IGEgbWluaW11bSB0aGVyZSBzaG91bGQgYWx3YXlzIGJlIGEgZmFsbGJhY2sgZW50cnkpIG9yIHRoZXJlJ3Mgbm9cbiAgICAgICAgICAgICAgICAvLyBtYXRjaCBmb3IgdGhlIHJlcXVlc3RlZCBzZWdtZW50LiBSZXNwb25kIHdpdGggYSAyMDQgTm8gQ29udGVudC4gV2VcbiAgICAgICAgICAgICAgICAvLyBkb24ndCBib3RoZXIgdG8gcmVzcG9uZCB3aXRoIDQwNCwgYmVjYXVzZSB0aGVzZSByZXF1ZXN0cyBhcmUgb25seVxuICAgICAgICAgICAgICAgIC8vIGlzc3VlZCBhcyBwYXJ0IG9mIGEgcHJlZmV0Y2guXG4gICAgICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDQ7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHNlbmRSZW5kZXJSZXN1bHQoe1xuICAgICAgICAgICAgICAgICAgICByZXEsXG4gICAgICAgICAgICAgICAgICAgIHJlcyxcbiAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGVFdGFnczogbmV4dENvbmZpZy5nZW5lcmF0ZUV0YWdzLFxuICAgICAgICAgICAgICAgICAgICBwb3dlcmVkQnlIZWFkZXI6IG5leHRDb25maWcucG93ZXJlZEJ5SGVhZGVyLFxuICAgICAgICAgICAgICAgICAgICByZXN1bHQ6IFJlbmRlclJlc3VsdC5FTVBUWSxcbiAgICAgICAgICAgICAgICAgICAgY2FjaGVDb250cm9sOiBjYWNoZUVudHJ5LmNhY2hlQ29udHJvbFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gSWYgdGhlcmUncyBhIGNhbGxiYWNrIGZvciBgb25DYWNoZUVudHJ5YCwgY2FsbCBpdCB3aXRoIHRoZSBjYWNoZSBlbnRyeVxuICAgICAgICAgICAgLy8gYW5kIHRoZSByZXZhbGlkYXRlIG9wdGlvbnMuXG4gICAgICAgICAgICBjb25zdCBvbkNhY2hlRW50cnkgPSBnZXRSZXF1ZXN0TWV0YShyZXEsICdvbkNhY2hlRW50cnknKTtcbiAgICAgICAgICAgIGlmIChvbkNhY2hlRW50cnkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmaW5pc2hlZCA9IGF3YWl0IG9uQ2FjaGVFbnRyeSh7XG4gICAgICAgICAgICAgICAgICAgIC4uLmNhY2hlRW50cnksXG4gICAgICAgICAgICAgICAgICAgIC8vIFRPRE86IHJlbW92ZSB0aGlzIHdoZW4gdXBzdHJlYW0gZG9lc24ndFxuICAgICAgICAgICAgICAgICAgICAvLyBhbHdheXMgZXhwZWN0IHRoaXMgdmFsdWUgdG8gYmUgXCJQQUdFXCJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmNhY2hlRW50cnkudmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBraW5kOiAnUEFHRSdcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgdXJsOiBnZXRSZXF1ZXN0TWV0YShyZXEsICdpbml0VVJMJylcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpZiAoZmluaXNoZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gVE9ETzogbWF5YmUgd2UgaGF2ZSB0byBlbmQgdGhlIHJlcXVlc3Q/XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIElmIHRoZSByZXF1ZXN0IGhhcyBhIHBvc3Rwb25lZCBzdGF0ZSBhbmQgaXQncyBhIHJlc3VtZSByZXF1ZXN0IHdlXG4gICAgICAgICAgICAvLyBzaG91bGQgZXJyb3IuXG4gICAgICAgICAgICBpZiAoZGlkUG9zdHBvbmUgJiYgbWluaW1hbFBvc3Rwb25lZCkge1xuICAgICAgICAgICAgICAgIHRocm93IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXcgRXJyb3IoJ0ludmFyaWFudDogcG9zdHBvbmVkIHN0YXRlIHNob3VsZCBub3QgYmUgcHJlc2VudCBvbiBhIHJlc3VtZSByZXF1ZXN0JyksIFwiX19ORVhUX0VSUk9SX0NPREVcIiwge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogXCJFMzk2XCIsXG4gICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjYWNoZWREYXRhLmhlYWRlcnMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBoZWFkZXJzID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5jYWNoZWREYXRhLmhlYWRlcnNcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGlmICghbWluaW1hbE1vZGUgfHwgIWlzU1NHKSB7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBoZWFkZXJzW05FWFRfQ0FDSEVfVEFHU19IRUFERVJdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBmb3IgKGxldCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoaGVhZGVycykpe1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAndW5kZWZpbmVkJykgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCB2IG9mIHZhbHVlKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXMuYXBwZW5kSGVhZGVyKGtleSwgdik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS50b1N0cmluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzLmFwcGVuZEhlYWRlcihrZXksIHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5hcHBlbmRIZWFkZXIoa2V5LCB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBBZGQgdGhlIGNhY2hlIHRhZ3MgaGVhZGVyIHRvIHRoZSByZXNwb25zZSBpZiBpdCBleGlzdHMgYW5kIHdlJ3JlIGluXG4gICAgICAgICAgICAvLyBtaW5pbWFsIG1vZGUgd2hpbGUgcmVuZGVyaW5nIGEgc3RhdGljIHBhZ2UuXG4gICAgICAgICAgICBjb25zdCB0YWdzID0gKF9jYWNoZWREYXRhX2hlYWRlcnMgPSBjYWNoZWREYXRhLmhlYWRlcnMpID09IG51bGwgPyB2b2lkIDAgOiBfY2FjaGVkRGF0YV9oZWFkZXJzW05FWFRfQ0FDSEVfVEFHU19IRUFERVJdO1xuICAgICAgICAgICAgaWYgKG1pbmltYWxNb2RlICYmIGlzU1NHICYmIHRhZ3MgJiYgdHlwZW9mIHRhZ3MgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgcmVzLnNldEhlYWRlcihORVhUX0NBQ0hFX1RBR1NfSEVBREVSLCB0YWdzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIElmIHRoZSByZXF1ZXN0IGlzIGEgZGF0YSByZXF1ZXN0LCB0aGVuIHdlIHNob3VsZG4ndCBzZXQgdGhlIHN0YXR1cyBjb2RlXG4gICAgICAgICAgICAvLyBmcm9tIHRoZSByZXNwb25zZSBiZWNhdXNlIGl0IHNob3VsZCBhbHdheXMgYmUgMjAwLiBUaGlzIHNob3VsZCBiZSBnYXRlZFxuICAgICAgICAgICAgLy8gYmVoaW5kIHRoZSBleHBlcmltZW50YWwgUFBSIGZsYWcuXG4gICAgICAgICAgICBpZiAoY2FjaGVkRGF0YS5zdGF0dXMgJiYgKCFpc1JTQ1JlcXVlc3QgfHwgIWlzUm91dGVQUFJFbmFibGVkKSkge1xuICAgICAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gY2FjaGVkRGF0YS5zdGF0dXM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBSZWRpcmVjdCBpbmZvcm1hdGlvbiBpcyBlbmNvZGVkIGluIFJTQyBwYXlsb2FkLCBzbyB3ZSBkb24ndCBuZWVkIHRvIHVzZSByZWRpcmVjdCBzdGF0dXMgY29kZXNcbiAgICAgICAgICAgIGlmICghbWluaW1hbE1vZGUgJiYgY2FjaGVkRGF0YS5zdGF0dXMgJiYgUmVkaXJlY3RTdGF0dXNDb2RlW2NhY2hlZERhdGEuc3RhdHVzXSAmJiBpc1JTQ1JlcXVlc3QpIHtcbiAgICAgICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIE1hcmsgdGhhdCB0aGUgcmVxdWVzdCBkaWQgcG9zdHBvbmUuXG4gICAgICAgICAgICBpZiAoZGlkUG9zdHBvbmUpIHtcbiAgICAgICAgICAgICAgICByZXMuc2V0SGVhZGVyKE5FWFRfRElEX1BPU1RQT05FX0hFQURFUiwgJzEnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIHdlIGRvbid0IGdvIHRocm91Z2ggdGhpcyBibG9jayB3aGVuIHByZXZpZXcgbW9kZSBpcyB0cnVlXG4gICAgICAgICAgICAvLyBhcyBwcmV2aWV3IG1vZGUgaXMgYSBkeW5hbWljIHJlcXVlc3QgKGJ5cGFzc2VzIGNhY2hlKSBhbmQgZG9lc24ndFxuICAgICAgICAgICAgLy8gZ2VuZXJhdGUgYm90aCBIVE1MIGFuZCBwYXlsb2FkcyBpbiB0aGUgc2FtZSByZXF1ZXN0IHNvIGNvbnRpbnVlIHRvIGp1c3RcbiAgICAgICAgICAgIC8vIHJldHVybiB0aGUgZ2VuZXJhdGVkIHBheWxvYWRcbiAgICAgICAgICAgIGlmIChpc1JTQ1JlcXVlc3QgJiYgIWlzRHJhZnRNb2RlKSB7XG4gICAgICAgICAgICAgICAgLy8gSWYgdGhpcyBpcyBhIGR5bmFtaWMgUlNDIHJlcXVlc3QsIHRoZW4gc3RyZWFtIHRoZSByZXNwb25zZS5cbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGNhY2hlZERhdGEucnNjRGF0YSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNhY2hlZERhdGEucG9zdHBvbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3IEVycm9yKCdJbnZhcmlhbnQ6IEV4cGVjdGVkIHBvc3Rwb25lZCB0byBiZSB1bmRlZmluZWQnKSwgXCJfX05FWFRfRVJST1JfQ09ERVwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IFwiRTM3MlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbmRSZW5kZXJSZXN1bHQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVxLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGVFdGFnczogbmV4dENvbmZpZy5nZW5lcmF0ZUV0YWdzLFxuICAgICAgICAgICAgICAgICAgICAgICAgcG93ZXJlZEJ5SGVhZGVyOiBuZXh0Q29uZmlnLnBvd2VyZWRCeUhlYWRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdDogY2FjaGVkRGF0YS5odG1sLFxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gRHluYW1pYyBSU0MgcmVzcG9uc2VzIGNhbm5vdCBiZSBjYWNoZWQsIGV2ZW4gaWYgdGhleSdyZVxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uZmlndXJlZCB3aXRoIGBmb3JjZS1zdGF0aWNgIGJlY2F1c2Ugd2UgaGF2ZSBubyB3YXkgb2ZcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRpc3Rpbmd1aXNoaW5nIGJldHdlZW4gYGZvcmNlLXN0YXRpY2AgYW5kIHBhZ2VzIHRoYXQgaGF2ZSBub1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gcG9zdHBvbmVkIHN0YXRlLlxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gVE9ETzogZGlzdGluZ3Vpc2ggYGZvcmNlLXN0YXRpY2AgZnJvbSBwYWdlcyB3aXRoIG5vIHBvc3Rwb25lZCBzdGF0ZSAoc3RhdGljKVxuICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVDb250cm9sOiBpc0R5bmFtaWNSU0NSZXF1ZXN0ID8ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldmFsaWRhdGU6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwaXJlOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gOiBjYWNoZUVudHJ5LmNhY2hlQ29udHJvbFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gQXMgdGhpcyBpc24ndCBhIHByZWZldGNoIHJlcXVlc3QsIHdlIHNob3VsZCBzZXJ2ZSB0aGUgc3RhdGljIGZsaWdodFxuICAgICAgICAgICAgICAgIC8vIGRhdGEuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHNlbmRSZW5kZXJSZXN1bHQoe1xuICAgICAgICAgICAgICAgICAgICByZXEsXG4gICAgICAgICAgICAgICAgICAgIHJlcyxcbiAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGVFdGFnczogbmV4dENvbmZpZy5nZW5lcmF0ZUV0YWdzLFxuICAgICAgICAgICAgICAgICAgICBwb3dlcmVkQnlIZWFkZXI6IG5leHRDb25maWcucG93ZXJlZEJ5SGVhZGVyLFxuICAgICAgICAgICAgICAgICAgICByZXN1bHQ6IFJlbmRlclJlc3VsdC5mcm9tU3RhdGljKGNhY2hlZERhdGEucnNjRGF0YSwgUlNDX0NPTlRFTlRfVFlQRV9IRUFERVIpLFxuICAgICAgICAgICAgICAgICAgICBjYWNoZUNvbnRyb2w6IGNhY2hlRW50cnkuY2FjaGVDb250cm9sXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBUaGlzIGlzIGEgcmVxdWVzdCBmb3IgSFRNTCBkYXRhLlxuICAgICAgICAgICAgbGV0IGJvZHkgPSBjYWNoZWREYXRhLmh0bWw7XG4gICAgICAgICAgICAvLyBJZiB0aGVyZSdzIG5vIHBvc3Rwb25lZCBzdGF0ZSwgd2Ugc2hvdWxkIGp1c3Qgc2VydmUgdGhlIEhUTUwuIFRoaXNcbiAgICAgICAgICAgIC8vIHNob3VsZCBhbHNvIGJlIHRoZSBjYXNlIGZvciBhIHJlc3VtZSByZXF1ZXN0IGJlY2F1c2UgaXQncyBjb21wbGV0ZWRcbiAgICAgICAgICAgIC8vIGFzIGEgc2VydmVyIHJlbmRlciAocmF0aGVyIHRoYW4gYSBzdGF0aWMgcmVuZGVyKS5cbiAgICAgICAgICAgIGlmICghZGlkUG9zdHBvbmUgfHwgbWluaW1hbE1vZGUgfHwgaXNSU0NSZXF1ZXN0KSB7XG4gICAgICAgICAgICAgICAgLy8gSWYgd2UncmUgaW4gdGVzdCBtb2RlLCB3ZSBzaG91bGQgYWRkIGEgc2VudGluZWwgY2h1bmsgdG8gdGhlIHJlc3BvbnNlXG4gICAgICAgICAgICAgICAgLy8gdGhhdCdzIGJldHdlZW4gdGhlIHN0YXRpYyBhbmQgZHluYW1pYyBwYXJ0cyBzbyB3ZSBjYW4gY29tcGFyZSB0aGVcbiAgICAgICAgICAgICAgICAvLyBjaHVua3MgYW5kIGFkZCBhc3NlcnRpb25zLlxuICAgICAgICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5fX05FWFRfVEVTVF9NT0RFICYmIG1pbmltYWxNb2RlICYmIGlzUm91dGVQUFJFbmFibGVkICYmIGJvZHkuY29udGVudFR5cGUgPT09IEhUTUxfQ09OVEVOVF9UWVBFX0hFQURFUikge1xuICAgICAgICAgICAgICAgICAgICAvLyBBcyB3ZSdyZSBpbiBtaW5pbWFsIG1vZGUsIHRoZSBzdGF0aWMgcGFydCB3b3VsZCBoYXZlIGFscmVhZHkgYmVlblxuICAgICAgICAgICAgICAgICAgICAvLyBzdHJlYW1lZCBmaXJzdC4gVGhlIG9ubHkgcGFydCB0aGF0IHRoaXMgc3RyZWFtcyBpcyB0aGUgZHluYW1pYyBwYXJ0XG4gICAgICAgICAgICAgICAgICAgIC8vIHNvIHdlIHNob3VsZCBGSVJTVCBzdHJlYW0gdGhlIHNlbnRpbmVsIGFuZCBUSEVOIHRoZSBkeW5hbWljIHBhcnQuXG4gICAgICAgICAgICAgICAgICAgIGJvZHkudW5zaGlmdChjcmVhdGVQUFJCb3VuZGFyeVNlbnRpbmVsKCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gc2VuZFJlbmRlclJlc3VsdCh7XG4gICAgICAgICAgICAgICAgICAgIHJlcSxcbiAgICAgICAgICAgICAgICAgICAgcmVzLFxuICAgICAgICAgICAgICAgICAgICBnZW5lcmF0ZUV0YWdzOiBuZXh0Q29uZmlnLmdlbmVyYXRlRXRhZ3MsXG4gICAgICAgICAgICAgICAgICAgIHBvd2VyZWRCeUhlYWRlcjogbmV4dENvbmZpZy5wb3dlcmVkQnlIZWFkZXIsXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdDogYm9keSxcbiAgICAgICAgICAgICAgICAgICAgY2FjaGVDb250cm9sOiBjYWNoZUVudHJ5LmNhY2hlQ29udHJvbFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gSWYgd2UncmUgZGVidWdnaW5nIHRoZSBzdGF0aWMgc2hlbGwgb3IgdGhlIGR5bmFtaWMgQVBJIGFjY2Vzc2VzLCB3ZVxuICAgICAgICAgICAgLy8gc2hvdWxkIGp1c3Qgc2VydmUgdGhlIEhUTUwgd2l0aG91dCByZXN1bWluZyB0aGUgcmVuZGVyLiBUaGUgcmV0dXJuZWRcbiAgICAgICAgICAgIC8vIEhUTUwgd2lsbCBiZSB0aGUgc3RhdGljIHNoZWxsIHNvIGFsbCB0aGUgRHluYW1pYyBBUEkncyB3aWxsIGJlIHVzZWRcbiAgICAgICAgICAgIC8vIGR1cmluZyBzdGF0aWMgZ2VuZXJhdGlvbi5cbiAgICAgICAgICAgIGlmIChpc0RlYnVnU3RhdGljU2hlbGwgfHwgaXNEZWJ1Z0R5bmFtaWNBY2Nlc3Nlcykge1xuICAgICAgICAgICAgICAgIC8vIFNpbmNlIHdlJ3JlIG5vdCByZXN1bWluZyB0aGUgcmVuZGVyLCB3ZSBuZWVkIHRvIGF0IGxlYXN0IGFkZCB0aGVcbiAgICAgICAgICAgICAgICAvLyBjbG9zaW5nIGJvZHkgYW5kIGh0bWwgdGFncyB0byBjcmVhdGUgdmFsaWQgSFRNTC5cbiAgICAgICAgICAgICAgICBib2R5LnB1c2gobmV3IFJlYWRhYmxlU3RyZWFtKHtcbiAgICAgICAgICAgICAgICAgICAgc3RhcnQgKGNvbnRyb2xsZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZShFTkNPREVEX1RBR1MuQ0xPU0VELkJPRFlfQU5EX0hUTUwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbGxlci5jbG9zZSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgIHJldHVybiBzZW5kUmVuZGVyUmVzdWx0KHtcbiAgICAgICAgICAgICAgICAgICAgcmVxLFxuICAgICAgICAgICAgICAgICAgICByZXMsXG4gICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlRXRhZ3M6IG5leHRDb25maWcuZ2VuZXJhdGVFdGFncyxcbiAgICAgICAgICAgICAgICAgICAgcG93ZXJlZEJ5SGVhZGVyOiBuZXh0Q29uZmlnLnBvd2VyZWRCeUhlYWRlcixcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0OiBib2R5LFxuICAgICAgICAgICAgICAgICAgICBjYWNoZUNvbnRyb2w6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldmFsaWRhdGU6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICBleHBpcmU6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBJZiB3ZSdyZSBpbiB0ZXN0IG1vZGUsIHdlIHNob3VsZCBhZGQgYSBzZW50aW5lbCBjaHVuayB0byB0aGUgcmVzcG9uc2VcbiAgICAgICAgICAgIC8vIHRoYXQncyBiZXR3ZWVuIHRoZSBzdGF0aWMgYW5kIGR5bmFtaWMgcGFydHMgc28gd2UgY2FuIGNvbXBhcmUgdGhlXG4gICAgICAgICAgICAvLyBjaHVua3MgYW5kIGFkZCBhc3NlcnRpb25zLlxuICAgICAgICAgICAgaWYgKHByb2Nlc3MuZW52Ll9fTkVYVF9URVNUX01PREUpIHtcbiAgICAgICAgICAgICAgICBib2R5LnB1c2goY3JlYXRlUFBSQm91bmRhcnlTZW50aW5lbCgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIFRoaXMgcmVxdWVzdCBoYXMgcG9zdHBvbmVkLCBzbyBsZXQncyBjcmVhdGUgYSBuZXcgdHJhbnNmb3JtZXIgdGhhdCB0aGVcbiAgICAgICAgICAgIC8vIGR5bmFtaWMgZGF0YSBjYW4gcGlwZSB0byB0aGF0IHdpbGwgYXR0YWNoIHRoZSBkeW5hbWljIGRhdGEgdG8gdGhlIGVuZFxuICAgICAgICAgICAgLy8gb2YgdGhlIHJlc3BvbnNlLlxuICAgICAgICAgICAgY29uc3QgdHJhbnNmb3JtZXIgPSBuZXcgVHJhbnNmb3JtU3RyZWFtKCk7XG4gICAgICAgICAgICBib2R5LnB1c2godHJhbnNmb3JtZXIucmVhZGFibGUpO1xuICAgICAgICAgICAgLy8gUGVyZm9ybSB0aGUgcmVuZGVyIGFnYWluLCBidXQgdGhpcyB0aW1lLCBwcm92aWRlIHRoZSBwb3N0cG9uZWQgc3RhdGUuXG4gICAgICAgICAgICAvLyBXZSBkb24ndCBhd2FpdCBiZWNhdXNlIHdlIHdhbnQgdGhlIHJlc3VsdCB0byBzdGFydCBzdHJlYW1pbmcgbm93LCBhbmRcbiAgICAgICAgICAgIC8vIHdlJ3ZlIGFscmVhZHkgY2hhaW5lZCB0aGUgdHJhbnNmb3JtZXIncyByZWFkYWJsZSB0byB0aGUgcmVuZGVyIHJlc3VsdC5cbiAgICAgICAgICAgIGRvUmVuZGVyKHtcbiAgICAgICAgICAgICAgICBzcGFuLFxuICAgICAgICAgICAgICAgIHBvc3Rwb25lZDogY2FjaGVkRGF0YS5wb3N0cG9uZWQsXG4gICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBhIHJlc3VtZSByZW5kZXIsIG5vdCBhIGZhbGxiYWNrIHJlbmRlciwgc28gd2UgZG9uJ3QgbmVlZCB0b1xuICAgICAgICAgICAgICAgIC8vIHNldCB0aGlzLlxuICAgICAgICAgICAgICAgIGZhbGxiYWNrUm91dGVQYXJhbXM6IG51bGxcbiAgICAgICAgICAgIH0pLnRoZW4oYXN5bmMgKHJlc3VsdCk9PntcbiAgICAgICAgICAgICAgICB2YXIgX3Jlc3VsdF92YWx1ZTtcbiAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3IEVycm9yKCdJbnZhcmlhbnQ6IGV4cGVjdGVkIGEgcmVzdWx0IHRvIGJlIHJldHVybmVkJyksIFwiX19ORVhUX0VSUk9SX0NPREVcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IFwiRTQ2M1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICgoKF9yZXN1bHRfdmFsdWUgPSByZXN1bHQudmFsdWUpID09IG51bGwgPyB2b2lkIDAgOiBfcmVzdWx0X3ZhbHVlLmtpbmQpICE9PSBDYWNoZWRSb3V0ZUtpbmQuQVBQX1BBR0UpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIF9yZXN1bHRfdmFsdWUxO1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3IEVycm9yKGBJbnZhcmlhbnQ6IGV4cGVjdGVkIGEgcGFnZSByZXNwb25zZSwgZ290ICR7KF9yZXN1bHRfdmFsdWUxID0gcmVzdWx0LnZhbHVlKSA9PSBudWxsID8gdm9pZCAwIDogX3Jlc3VsdF92YWx1ZTEua2luZH1gKSwgXCJfX05FWFRfRVJST1JfQ09ERVwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogXCJFMzA1XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gUGlwZSB0aGUgcmVzdW1lIHJlc3VsdCB0byB0aGUgdHJhbnNmb3JtZXIuXG4gICAgICAgICAgICAgICAgYXdhaXQgcmVzdWx0LnZhbHVlLmh0bWwucGlwZVRvKHRyYW5zZm9ybWVyLndyaXRhYmxlKTtcbiAgICAgICAgICAgIH0pLmNhdGNoKChlcnIpPT57XG4gICAgICAgICAgICAgICAgLy8gQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIHBpcGluZyBvciBwcmVwYXJpbmcgdGhlIHJlbmRlciwgYWJvcnRcbiAgICAgICAgICAgICAgICAvLyB0aGUgdHJhbnNmb3JtZXJzIHdyaXRlciBzbyB3ZSBjYW4gdGVybWluYXRlIHRoZSBzdHJlYW0uXG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtZXIud3JpdGFibGUuYWJvcnQoZXJyKS5jYXRjaCgoZSk9PntcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcImNvdWxkbid0IGFib3J0IHRyYW5zZm9ybWVyXCIsIGUpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gc2VuZFJlbmRlclJlc3VsdCh7XG4gICAgICAgICAgICAgICAgcmVxLFxuICAgICAgICAgICAgICAgIHJlcyxcbiAgICAgICAgICAgICAgICBnZW5lcmF0ZUV0YWdzOiBuZXh0Q29uZmlnLmdlbmVyYXRlRXRhZ3MsXG4gICAgICAgICAgICAgICAgcG93ZXJlZEJ5SGVhZGVyOiBuZXh0Q29uZmlnLnBvd2VyZWRCeUhlYWRlcixcbiAgICAgICAgICAgICAgICByZXN1bHQ6IGJvZHksXG4gICAgICAgICAgICAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBjYWNoZSB0aGUgcmVzcG9uc2UgaWYgaXQgaGFzIHBvc3Rwb25lZCBkYXRhIGJlY2F1c2VcbiAgICAgICAgICAgICAgICAvLyB0aGUgcmVzcG9uc2UgYmVpbmcgc2VudCB0byB0aGUgY2xpZW50IGl0J3MgZHluYW1pYyBwYXJ0cyBhcmUgc3RyZWFtZWRcbiAgICAgICAgICAgICAgICAvLyB0byB0aGUgY2xpZW50IG9uIHRoZSBzYW1lIHJlcXVlc3QuXG4gICAgICAgICAgICAgICAgY2FjaGVDb250cm9sOiB7XG4gICAgICAgICAgICAgICAgICAgIHJldmFsaWRhdGU6IDAsXG4gICAgICAgICAgICAgICAgICAgIGV4cGlyZTogdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIC8vIFRPRE86IGFjdGl2ZVNwYW4gY29kZSBwYXRoIGlzIGZvciB3aGVuIHdyYXBwZWQgYnlcbiAgICAgICAgLy8gbmV4dC1zZXJ2ZXIgY2FuIGJlIHJlbW92ZWQgd2hlbiB0aGlzIGlzIG5vIGxvbmdlciB1c2VkXG4gICAgICAgIGlmIChhY3RpdmVTcGFuKSB7XG4gICAgICAgICAgICBhd2FpdCBoYW5kbGVSZXNwb25zZShhY3RpdmVTcGFuKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBhd2FpdCB0cmFjZXIud2l0aFByb3BhZ2F0ZWRDb250ZXh0KHJlcS5oZWFkZXJzLCAoKT0+dHJhY2VyLnRyYWNlKEJhc2VTZXJ2ZXJTcGFuLmhhbmRsZVJlcXVlc3QsIHtcbiAgICAgICAgICAgICAgICAgICAgc3Bhbk5hbWU6IGAke21ldGhvZH0gJHtyZXEudXJsfWAsXG4gICAgICAgICAgICAgICAgICAgIGtpbmQ6IFNwYW5LaW5kLlNFUlZFUixcbiAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgJ2h0dHAubWV0aG9kJzogbWV0aG9kLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2h0dHAudGFyZ2V0JzogcmVxLnVybFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwgaGFuZGxlUmVzcG9uc2UpKTtcbiAgICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBpZiAoIShlcnIgaW5zdGFuY2VvZiBOb0ZhbGxiYWNrRXJyb3IpKSB7XG4gICAgICAgICAgICBhd2FpdCByb3V0ZU1vZHVsZS5vblJlcXVlc3RFcnJvcihyZXEsIGVyciwge1xuICAgICAgICAgICAgICAgIHJvdXRlcktpbmQ6ICdBcHAgUm91dGVyJyxcbiAgICAgICAgICAgICAgICByb3V0ZVBhdGg6IHNyY1BhZ2UsXG4gICAgICAgICAgICAgICAgcm91dGVUeXBlOiAncmVuZGVyJyxcbiAgICAgICAgICAgICAgICByZXZhbGlkYXRlUmVhc29uOiBnZXRSZXZhbGlkYXRlUmVhc29uKHtcbiAgICAgICAgICAgICAgICAgICAgaXNSZXZhbGlkYXRlOiBpc1NTRyxcbiAgICAgICAgICAgICAgICAgICAgaXNPbkRlbWFuZFJldmFsaWRhdGVcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfSwgcm91dGVyU2VydmVyQ29udGV4dCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gcmV0aHJvdyBzbyB0aGF0IHdlIGNhbiBoYW5kbGUgc2VydmluZyBlcnJvciBwYWdlXG4gICAgICAgIHRocm93IGVycjtcbiAgICB9XG59XG4vLyBUT0RPOiBvbWl0IHRoaXMgZnJvbSBwcm9kdWN0aW9uIGJ1aWxkcywgb25seSB0ZXN0IGJ1aWxkcyBzaG91bGQgaW5jbHVkZSBpdFxuLyoqXG4gKiBDcmVhdGVzIGEgcmVhZGFibGUgc3RyZWFtIHRoYXQgZW1pdHMgYSBQUFIgYm91bmRhcnkgc2VudGluZWwuXG4gKlxuICogQHJldHVybnMgQSByZWFkYWJsZSBzdHJlYW0gdGhhdCBlbWl0cyBhIFBQUiBib3VuZGFyeSBzZW50aW5lbC5cbiAqLyBmdW5jdGlvbiBjcmVhdGVQUFJCb3VuZGFyeVNlbnRpbmVsKCkge1xuICAgIHJldHVybiBuZXcgUmVhZGFibGVTdHJlYW0oe1xuICAgICAgICBzdGFydCAoY29udHJvbGxlcikge1xuICAgICAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKG5ldyBUZXh0RW5jb2RlcigpLmVuY29kZSgnPCEtLSBQUFJfQk9VTkRBUllfU0VOVElORUwgLS0+JykpO1xuICAgICAgICAgICAgY29udHJvbGxlci5jbG9zZSgpO1xuICAgICAgICB9XG4gICAgfSk7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWFwcC1wYWdlLmpzLm1hcFxuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/../../node_modules/next/dist/build/webpack/loaders/next-app-loader/index.js?name=app%2Fpage&page=%2Fpage&appPaths=%2Fpage&pagePath=private-next-app-dir%2Fpage.js&appDir=%2FUsers%2Fgkoberger%2FSites%2Freadme%2F2026-readme-cli%2Fsrc%2Fdev%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fgkoberger%2FSites%2Freadme%2F2026-readme-cli%2Fsrc%2Fdev&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D&isGlobalNotFoundEnabled=!\n");
23
+
24
+ /***/ }),
25
+
26
+ /***/ "(rsc)/../../node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22%2FUsers%2Fgkoberger%2FSites%2Freadme%2F2026-readme-cli%2Fnode_modules%2F%40readme%2Fmarkdown%2Fdist%2Fmain.css%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fgkoberger%2FSites%2Freadme%2F2026-readme-cli%2Fsrc%2Fdev%2Fapp%2Fglobals.css%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fgkoberger%2FSites%2Freadme%2F2026-readme-cli%2Fsrc%2Fdev%2Fapp%2FSidebar.js%22%2C%22ids%22%3A%5B%22SidebarNav%22%2C%22SidebarPanel%22%5D%7D&server=true!":
27
+ /*!*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
28
+ !*** ../../node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22%2FUsers%2Fgkoberger%2FSites%2Freadme%2F2026-readme-cli%2Fnode_modules%2F%40readme%2Fmarkdown%2Fdist%2Fmain.css%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fgkoberger%2FSites%2Freadme%2F2026-readme-cli%2Fsrc%2Fdev%2Fapp%2Fglobals.css%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fgkoberger%2FSites%2Freadme%2F2026-readme-cli%2Fsrc%2Fdev%2Fapp%2FSidebar.js%22%2C%22ids%22%3A%5B%22SidebarNav%22%2C%22SidebarPanel%22%5D%7D&server=true! ***!
29
+ \*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
30
+ /***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
31
+
32
+ eval("Promise.resolve(/*! import() eager */).then(__webpack_require__.bind(__webpack_require__, /*! ./app/Sidebar.js */ \"(rsc)/./app/Sidebar.js\"));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi4vLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9idWlsZC93ZWJwYWNrL2xvYWRlcnMvbmV4dC1mbGlnaHQtY2xpZW50LWVudHJ5LWxvYWRlci5qcz9tb2R1bGVzPSU3QiUyMnJlcXVlc3QlMjIlM0ElMjIlMkZVc2VycyUyRmdrb2JlcmdlciUyRlNpdGVzJTJGcmVhZG1lJTJGMjAyNi1yZWFkbWUtY2xpJTJGbm9kZV9tb2R1bGVzJTJGJTQwcmVhZG1lJTJGbWFya2Rvd24lMkZkaXN0JTJGbWFpbi5jc3MlMjIlMkMlMjJpZHMlMjIlM0ElNUIlNUQlN0QmbW9kdWxlcz0lN0IlMjJyZXF1ZXN0JTIyJTNBJTIyJTJGVXNlcnMlMkZna29iZXJnZXIlMkZTaXRlcyUyRnJlYWRtZSUyRjIwMjYtcmVhZG1lLWNsaSUyRnNyYyUyRmRldiUyRmFwcCUyRmdsb2JhbHMuY3NzJTIyJTJDJTIyaWRzJTIyJTNBJTVCJTVEJTdEJm1vZHVsZXM9JTdCJTIycmVxdWVzdCUyMiUzQSUyMiUyRlVzZXJzJTJGZ2tvYmVyZ2VyJTJGU2l0ZXMlMkZyZWFkbWUlMkYyMDI2LXJlYWRtZS1jbGklMkZzcmMlMkZkZXYlMkZhcHAlMkZTaWRlYmFyLmpzJTIyJTJDJTIyaWRzJTIyJTNBJTVCJTIyU2lkZWJhck5hdiUyMiUyQyUyMlNpZGViYXJQYW5lbCUyMiU1RCU3RCZzZXJ2ZXI9dHJ1ZSEiLCJtYXBwaW5ncyI6IkFBQUEsNElBQXdKIiwic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIsIHdlYnBhY2tFeHBvcnRzOiBbXCJTaWRlYmFyTmF2XCIsXCJTaWRlYmFyUGFuZWxcIl0gKi8gXCIvVXNlcnMvZ2tvYmVyZ2VyL1NpdGVzL3JlYWRtZS8yMDI2LXJlYWRtZS1jbGkvc3JjL2Rldi9hcHAvU2lkZWJhci5qc1wiKTtcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/../../node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22%2FUsers%2Fgkoberger%2FSites%2Freadme%2F2026-readme-cli%2Fnode_modules%2F%40readme%2Fmarkdown%2Fdist%2Fmain.css%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fgkoberger%2FSites%2Freadme%2F2026-readme-cli%2Fsrc%2Fdev%2Fapp%2Fglobals.css%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fgkoberger%2FSites%2Freadme%2F2026-readme-cli%2Fsrc%2Fdev%2Fapp%2FSidebar.js%22%2C%22ids%22%3A%5B%22SidebarNav%22%2C%22SidebarPanel%22%5D%7D&server=true!\n");
33
+
34
+ /***/ }),
35
+
36
+ /***/ "(rsc)/../../node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22%2FUsers%2Fgkoberger%2FSites%2Freadme%2F2026-readme-cli%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fbuiltin%2Fglobal-error.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fgkoberger%2FSites%2Freadme%2F2026-readme-cli%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-page.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fgkoberger%2FSites%2Freadme%2F2026-readme-cli%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-segment.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fgkoberger%2FSites%2Freadme%2F2026-readme-cli%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fhttp-access-fallback%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fgkoberger%2FSites%2Freadme%2F2026-readme-cli%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fgkoberger%2FSites%2Freadme%2F2026-readme-cli%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fmetadata%2Fasync-metadata.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fgkoberger%2FSites%2Freadme%2F2026-readme-cli%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fgkoberger%2FSites%2Freadme%2F2026-readme-cli%2Fnode_modules%2Fnext%2Fdist%2Flib%2Fframework%2Fboundary-components.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fgkoberger%2FSites%2Freadme%2F2026-readme-cli%2Fnode_modules%2Fnext%2Fdist%2Flib%2Fmetadata%2Fgenerate%2Ficon-mark.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fgkoberger%2FSites%2Freadme%2F2026-readme-cli%2Fnode_modules%2Fnext%2Fdist%2Fnext-devtools%2Fuserspace%2Fapp%2Fsegment-explorer-node.js%22%2C%22ids%22%3A%5B%5D%7D&server=true!":
37
+ /*!***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
38
+ !*** ../../node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22%2FUsers%2Fgkoberger%2FSites%2Freadme%2F2026-readme-cli%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fbuiltin%2Fglobal-error.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fgkoberger%2FSites%2Freadme%2F2026-readme-cli%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-page.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fgkoberger%2FSites%2Freadme%2F2026-readme-cli%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-segment.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fgkoberger%2FSites%2Freadme%2F2026-readme-cli%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fhttp-access-fallback%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fgkoberger%2FSites%2Freadme%2F2026-readme-cli%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fgkoberger%2FSites%2Freadme%2F2026-readme-cli%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fmetadata%2Fasync-metadata.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fgkoberger%2FSites%2Freadme%2F2026-readme-cli%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fgkoberger%2FSites%2Freadme%2F2026-readme-cli%2Fnode_modules%2Fnext%2Fdist%2Flib%2Fframework%2Fboundary-components.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fgkoberger%2FSites%2Freadme%2F2026-readme-cli%2Fnode_modules%2Fnext%2Fdist%2Flib%2Fmetadata%2Fgenerate%2Ficon-mark.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fgkoberger%2FSites%2Freadme%2F2026-readme-cli%2Fnode_modules%2Fnext%2Fdist%2Fnext-devtools%2Fuserspace%2Fapp%2Fsegment-explorer-node.js%22%2C%22ids%22%3A%5B%5D%7D&server=true! ***!
39
+ \***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
40
+ /***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
41
+
42
+ eval("Promise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ../../node_modules/next/dist/client/components/builtin/global-error.js */ \"(rsc)/../../node_modules/next/dist/client/components/builtin/global-error.js\", 23));\n;\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ../../node_modules/next/dist/client/components/client-page.js */ \"(rsc)/../../node_modules/next/dist/client/components/client-page.js\", 23));\n;\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ../../node_modules/next/dist/client/components/client-segment.js */ \"(rsc)/../../node_modules/next/dist/client/components/client-segment.js\", 23));\n;\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ../../node_modules/next/dist/client/components/http-access-fallback/error-boundary.js */ \"(rsc)/../../node_modules/next/dist/client/components/http-access-fallback/error-boundary.js\", 23));\n;\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ../../node_modules/next/dist/client/components/layout-router.js */ \"(rsc)/../../node_modules/next/dist/client/components/layout-router.js\", 23));\n;\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ../../node_modules/next/dist/client/components/metadata/async-metadata.js */ \"(rsc)/../../node_modules/next/dist/client/components/metadata/async-metadata.js\", 23));\n;\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ../../node_modules/next/dist/client/components/render-from-template-context.js */ \"(rsc)/../../node_modules/next/dist/client/components/render-from-template-context.js\", 23));\n;\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ../../node_modules/next/dist/lib/framework/boundary-components.js */ \"(rsc)/../../node_modules/next/dist/lib/framework/boundary-components.js\", 23));\n;\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ../../node_modules/next/dist/lib/metadata/generate/icon-mark.js */ \"(rsc)/../../node_modules/next/dist/lib/metadata/generate/icon-mark.js\", 23));\n;\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ../../node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js */ \"(rsc)/../../node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js\", 23));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi4vLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9idWlsZC93ZWJwYWNrL2xvYWRlcnMvbmV4dC1mbGlnaHQtY2xpZW50LWVudHJ5LWxvYWRlci5qcz9tb2R1bGVzPSU3QiUyMnJlcXVlc3QlMjIlM0ElMjIlMkZVc2VycyUyRmdrb2JlcmdlciUyRlNpdGVzJTJGcmVhZG1lJTJGMjAyNi1yZWFkbWUtY2xpJTJGbm9kZV9tb2R1bGVzJTJGbmV4dCUyRmRpc3QlMkZjbGllbnQlMkZjb21wb25lbnRzJTJGYnVpbHRpbiUyRmdsb2JhbC1lcnJvci5qcyUyMiUyQyUyMmlkcyUyMiUzQSU1QiU1RCU3RCZtb2R1bGVzPSU3QiUyMnJlcXVlc3QlMjIlM0ElMjIlMkZVc2VycyUyRmdrb2JlcmdlciUyRlNpdGVzJTJGcmVhZG1lJTJGMjAyNi1yZWFkbWUtY2xpJTJGbm9kZV9tb2R1bGVzJTJGbmV4dCUyRmRpc3QlMkZjbGllbnQlMkZjb21wb25lbnRzJTJGY2xpZW50LXBhZ2UuanMlMjIlMkMlMjJpZHMlMjIlM0ElNUIlNUQlN0QmbW9kdWxlcz0lN0IlMjJyZXF1ZXN0JTIyJTNBJTIyJTJGVXNlcnMlMkZna29iZXJnZXIlMkZTaXRlcyUyRnJlYWRtZSUyRjIwMjYtcmVhZG1lLWNsaSUyRm5vZGVfbW9kdWxlcyUyRm5leHQlMkZkaXN0JTJGY2xpZW50JTJGY29tcG9uZW50cyUyRmNsaWVudC1zZWdtZW50LmpzJTIyJTJDJTIyaWRzJTIyJTNBJTVCJTVEJTdEJm1vZHVsZXM9JTdCJTIycmVxdWVzdCUyMiUzQSUyMiUyRlVzZXJzJTJGZ2tvYmVyZ2VyJTJGU2l0ZXMlMkZyZWFkbWUlMkYyMDI2LXJlYWRtZS1jbGklMkZub2RlX21vZHVsZXMlMkZuZXh0JTJGZGlzdCUyRmNsaWVudCUyRmNvbXBvbmVudHMlMkZodHRwLWFjY2Vzcy1mYWxsYmFjayUyRmVycm9yLWJvdW5kYXJ5LmpzJTIyJTJDJTIyaWRzJTIyJTNBJTVCJTVEJTdEJm1vZHVsZXM9JTdCJTIycmVxdWVzdCUyMiUzQSUyMiUyRlVzZXJzJTJGZ2tvYmVyZ2VyJTJGU2l0ZXMlMkZyZWFkbWUlMkYyMDI2LXJlYWRtZS1jbGklMkZub2RlX21vZHVsZXMlMkZuZXh0JTJGZGlzdCUyRmNsaWVudCUyRmNvbXBvbmVudHMlMkZsYXlvdXQtcm91dGVyLmpzJTIyJTJDJTIyaWRzJTIyJTNBJTVCJTVEJTdEJm1vZHVsZXM9JTdCJTIycmVxdWVzdCUyMiUzQSUyMiUyRlVzZXJzJTJGZ2tvYmVyZ2VyJTJGU2l0ZXMlMkZyZWFkbWUlMkYyMDI2LXJlYWRtZS1jbGklMkZub2RlX21vZHVsZXMlMkZuZXh0JTJGZGlzdCUyRmNsaWVudCUyRmNvbXBvbmVudHMlMkZtZXRhZGF0YSUyRmFzeW5jLW1ldGFkYXRhLmpzJTIyJTJDJTIyaWRzJTIyJTNBJTVCJTVEJTdEJm1vZHVsZXM9JTdCJTIycmVxdWVzdCUyMiUzQSUyMiUyRlVzZXJzJTJGZ2tvYmVyZ2VyJTJGU2l0ZXMlMkZyZWFkbWUlMkYyMDI2LXJlYWRtZS1jbGklMkZub2RlX21vZHVsZXMlMkZuZXh0JTJGZGlzdCUyRmNsaWVudCUyRmNvbXBvbmVudHMlMkZyZW5kZXItZnJvbS10ZW1wbGF0ZS1jb250ZXh0LmpzJTIyJTJDJTIyaWRzJTIyJTNBJTVCJTVEJTdEJm1vZHVsZXM9JTdCJTIycmVxdWVzdCUyMiUzQSUyMiUyRlVzZXJzJTJGZ2tvYmVyZ2VyJTJGU2l0ZXMlMkZyZWFkbWUlMkYyMDI2LXJlYWRtZS1jbGklMkZub2RlX21vZHVsZXMlMkZuZXh0JTJGZGlzdCUyRmxpYiUyRmZyYW1ld29yayUyRmJvdW5kYXJ5LWNvbXBvbmVudHMuanMlMjIlMkMlMjJpZHMlMjIlM0ElNUIlNUQlN0QmbW9kdWxlcz0lN0IlMjJyZXF1ZXN0JTIyJTNBJTIyJTJGVXNlcnMlMkZna29iZXJnZXIlMkZTaXRlcyUyRnJlYWRtZSUyRjIwMjYtcmVhZG1lLWNsaSUyRm5vZGVfbW9kdWxlcyUyRm5leHQlMkZkaXN0JTJGbGliJTJGbWV0YWRhdGElMkZnZW5lcmF0ZSUyRmljb24tbWFyay5qcyUyMiUyQyUyMmlkcyUyMiUzQSU1QiU1RCU3RCZtb2R1bGVzPSU3QiUyMnJlcXVlc3QlMjIlM0ElMjIlMkZVc2VycyUyRmdrb2JlcmdlciUyRlNpdGVzJTJGcmVhZG1lJTJGMjAyNi1yZWFkbWUtY2xpJTJGbm9kZV9tb2R1bGVzJTJGbmV4dCUyRmRpc3QlMkZuZXh0LWRldnRvb2xzJTJGdXNlcnNwYWNlJTJGYXBwJTJGc2VnbWVudC1leHBsb3Jlci1ub2RlLmpzJTIyJTJDJTIyaWRzJTIyJTNBJTVCJTVEJTdEJnNlcnZlcj10cnVlISIsIm1hcHBpbmdzIjoiQUFBQSw4UEFBbUo7QUFDbko7QUFDQSw0T0FBMEk7QUFDMUk7QUFDQSxrUEFBNkk7QUFDN0k7QUFDQSw0UkFBa0s7QUFDbEs7QUFDQSxnUEFBNEk7QUFDNUk7QUFDQSxvUUFBc0o7QUFDdEo7QUFDQSw4UUFBMko7QUFDM0o7QUFDQSxvUEFBOEk7QUFDOUk7QUFDQSxnUEFBNEk7QUFDNUk7QUFDQSxvUkFBOEoiLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQoLyogd2VicGFja01vZGU6IFwiZWFnZXJcIiAqLyBcIi9Vc2Vycy9na29iZXJnZXIvU2l0ZXMvcmVhZG1lLzIwMjYtcmVhZG1lLWNsaS9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2J1aWx0aW4vZ2xvYmFsLWVycm9yLmpzXCIpO1xuO1xuaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gXCIvVXNlcnMvZ2tvYmVyZ2VyL1NpdGVzL3JlYWRtZS8yMDI2LXJlYWRtZS1jbGkvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvY29tcG9uZW50cy9jbGllbnQtcGFnZS5qc1wiKTtcbjtcbmltcG9ydCgvKiB3ZWJwYWNrTW9kZTogXCJlYWdlclwiICovIFwiL1VzZXJzL2drb2Jlcmdlci9TaXRlcy9yZWFkbWUvMjAyNi1yZWFkbWUtY2xpL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvY2xpZW50LXNlZ21lbnQuanNcIik7XG47XG5pbXBvcnQoLyogd2VicGFja01vZGU6IFwiZWFnZXJcIiAqLyBcIi9Vc2Vycy9na29iZXJnZXIvU2l0ZXMvcmVhZG1lLzIwMjYtcmVhZG1lLWNsaS9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2h0dHAtYWNjZXNzLWZhbGxiYWNrL2Vycm9yLWJvdW5kYXJ5LmpzXCIpO1xuO1xuaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gXCIvVXNlcnMvZ2tvYmVyZ2VyL1NpdGVzL3JlYWRtZS8yMDI2LXJlYWRtZS1jbGkvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvY29tcG9uZW50cy9sYXlvdXQtcm91dGVyLmpzXCIpO1xuO1xuaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gXCIvVXNlcnMvZ2tvYmVyZ2VyL1NpdGVzL3JlYWRtZS8yMDI2LXJlYWRtZS1jbGkvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvY29tcG9uZW50cy9tZXRhZGF0YS9hc3luYy1tZXRhZGF0YS5qc1wiKTtcbjtcbmltcG9ydCgvKiB3ZWJwYWNrTW9kZTogXCJlYWdlclwiICovIFwiL1VzZXJzL2drb2Jlcmdlci9TaXRlcy9yZWFkbWUvMjAyNi1yZWFkbWUtY2xpL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvcmVuZGVyLWZyb20tdGVtcGxhdGUtY29udGV4dC5qc1wiKTtcbjtcbmltcG9ydCgvKiB3ZWJwYWNrTW9kZTogXCJlYWdlclwiICovIFwiL1VzZXJzL2drb2Jlcmdlci9TaXRlcy9yZWFkbWUvMjAyNi1yZWFkbWUtY2xpL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvbGliL2ZyYW1ld29yay9ib3VuZGFyeS1jb21wb25lbnRzLmpzXCIpO1xuO1xuaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gXCIvVXNlcnMvZ2tvYmVyZ2VyL1NpdGVzL3JlYWRtZS8yMDI2LXJlYWRtZS1jbGkvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9saWIvbWV0YWRhdGEvZ2VuZXJhdGUvaWNvbi1tYXJrLmpzXCIpO1xuO1xuaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gXCIvVXNlcnMvZ2tvYmVyZ2VyL1NpdGVzL3JlYWRtZS8yMDI2LXJlYWRtZS1jbGkvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9uZXh0LWRldnRvb2xzL3VzZXJzcGFjZS9hcHAvc2VnbWVudC1leHBsb3Jlci1ub2RlLmpzXCIpO1xuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/../../node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22%2FUsers%2Fgkoberger%2FSites%2Freadme%2F2026-readme-cli%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fbuiltin%2Fglobal-error.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fgkoberger%2FSites%2Freadme%2F2026-readme-cli%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-page.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fgkoberger%2FSites%2Freadme%2F2026-readme-cli%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-segment.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fgkoberger%2FSites%2Freadme%2F2026-readme-cli%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fhttp-access-fallback%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fgkoberger%2FSites%2Freadme%2F2026-readme-cli%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fgkoberger%2FSites%2Freadme%2F2026-readme-cli%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fmetadata%2Fasync-metadata.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fgkoberger%2FSites%2Freadme%2F2026-readme-cli%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fgkoberger%2FSites%2Freadme%2F2026-readme-cli%2Fnode_modules%2Fnext%2Fdist%2Flib%2Fframework%2Fboundary-components.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fgkoberger%2FSites%2Freadme%2F2026-readme-cli%2Fnode_modules%2Fnext%2Fdist%2Flib%2Fmetadata%2Fgenerate%2Ficon-mark.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fgkoberger%2FSites%2Freadme%2F2026-readme-cli%2Fnode_modules%2Fnext%2Fdist%2Fnext-devtools%2Fuserspace%2Fapp%2Fsegment-explorer-node.js%22%2C%22ids%22%3A%5B%5D%7D&server=true!\n");
43
+
44
+ /***/ }),
45
+
46
+ /***/ "(rsc)/../../node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?server=true!":
47
+ /*!**********************************************************************************************************!*\
48
+ !*** ../../node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?server=true! ***!
49
+ \**********************************************************************************************************/
50
+ /***/ (() => {
51
+
52
+
53
+
54
+ /***/ }),
55
+
56
+ /***/ "(rsc)/./app/Sidebar.js":
57
+ /*!************************!*\
58
+ !*** ./app/Sidebar.js ***!
59
+ \************************/
60
+ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
61
+
62
+ "use strict";
63
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ SidebarNav: () => (/* binding */ SidebarNav),\n/* harmony export */ SidebarPanel: () => (/* binding */ SidebarPanel)\n/* harmony export */ });\n/* harmony import */ var react_server_dom_webpack_server__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react-server-dom-webpack/server */ \"(rsc)/../../node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-server-dom-webpack-server.js\");\n// This file is generated by the Webpack next-flight-loader.\n\nconst SidebarNav = (0,react_server_dom_webpack_server__WEBPACK_IMPORTED_MODULE_0__.registerClientReference)(\nfunction() { throw new Error(\"Attempted to call SidebarNav() from the server but SidebarNav is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.\"); },\n\"/Users/gkoberger/Sites/readme/2026-readme-cli/src/dev/app/Sidebar.js\",\n\"SidebarNav\",\n);const SidebarPanel = (0,react_server_dom_webpack_server__WEBPACK_IMPORTED_MODULE_0__.registerClientReference)(\nfunction() { throw new Error(\"Attempted to call SidebarPanel() from the server but SidebarPanel is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.\"); },\n\"/Users/gkoberger/Sites/readme/2026-readme-cli/src/dev/app/Sidebar.js\",\n\"SidebarPanel\",\n);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9hcHAvU2lkZWJhci5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSIsInNvdXJjZXMiOlsiX05fRS8uL2FwcC9TaWRlYmFyLmpzL19fbmV4dGpzLWludGVybmFsLXByb3h5Lm1qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGJ5IHRoZSBXZWJwYWNrIG5leHQtZmxpZ2h0LWxvYWRlci5cbmltcG9ydCB7IHJlZ2lzdGVyQ2xpZW50UmVmZXJlbmNlIH0gZnJvbSBcInJlYWN0LXNlcnZlci1kb20td2VicGFjay9zZXJ2ZXJcIjtcbmV4cG9ydCBjb25zdCBTaWRlYmFyTmF2ID0gcmVnaXN0ZXJDbGllbnRSZWZlcmVuY2UoXG5mdW5jdGlvbigpIHsgdGhyb3cgbmV3IEVycm9yKFwiQXR0ZW1wdGVkIHRvIGNhbGwgU2lkZWJhck5hdigpIGZyb20gdGhlIHNlcnZlciBidXQgU2lkZWJhck5hdiBpcyBvbiB0aGUgY2xpZW50LiBJdCdzIG5vdCBwb3NzaWJsZSB0byBpbnZva2UgYSBjbGllbnQgZnVuY3Rpb24gZnJvbSB0aGUgc2VydmVyLCBpdCBjYW4gb25seSBiZSByZW5kZXJlZCBhcyBhIENvbXBvbmVudCBvciBwYXNzZWQgdG8gcHJvcHMgb2YgYSBDbGllbnQgQ29tcG9uZW50LlwiKTsgfSxcblwiL1VzZXJzL2drb2Jlcmdlci9TaXRlcy9yZWFkbWUvMjAyNi1yZWFkbWUtY2xpL3NyYy9kZXYvYXBwL1NpZGViYXIuanNcIixcblwiU2lkZWJhck5hdlwiLFxuKTtleHBvcnQgY29uc3QgU2lkZWJhclBhbmVsID0gcmVnaXN0ZXJDbGllbnRSZWZlcmVuY2UoXG5mdW5jdGlvbigpIHsgdGhyb3cgbmV3IEVycm9yKFwiQXR0ZW1wdGVkIHRvIGNhbGwgU2lkZWJhclBhbmVsKCkgZnJvbSB0aGUgc2VydmVyIGJ1dCBTaWRlYmFyUGFuZWwgaXMgb24gdGhlIGNsaWVudC4gSXQncyBub3QgcG9zc2libGUgdG8gaW52b2tlIGEgY2xpZW50IGZ1bmN0aW9uIGZyb20gdGhlIHNlcnZlciwgaXQgY2FuIG9ubHkgYmUgcmVuZGVyZWQgYXMgYSBDb21wb25lbnQgb3IgcGFzc2VkIHRvIHByb3BzIG9mIGEgQ2xpZW50IENvbXBvbmVudC5cIik7IH0sXG5cIi9Vc2Vycy9na29iZXJnZXIvU2l0ZXMvcmVhZG1lLzIwMjYtcmVhZG1lLWNsaS9zcmMvZGV2L2FwcC9TaWRlYmFyLmpzXCIsXG5cIlNpZGViYXJQYW5lbFwiLFxuKTsiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./app/Sidebar.js\n");
64
+
65
+ /***/ }),
66
+
67
+ /***/ "(rsc)/./app/globals.css":
68
+ /*!*************************!*\
69
+ !*** ./app/globals.css ***!
70
+ \*************************/
71
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
72
+
73
+ "use strict";
74
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (\"c6c4fad8be0f\");\nif (false) {}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9hcHAvZ2xvYmFscy5jc3MiLCJtYXBwaW5ncyI6Ijs7OztBQUFBLGlFQUFlLGNBQWM7QUFDN0IsSUFBSSxLQUFVLEVBQUUsRUFBdUIiLCJzb3VyY2VzIjpbIi9Vc2Vycy9na29iZXJnZXIvU2l0ZXMvcmVhZG1lLzIwMjYtcmVhZG1lLWNsaS9zcmMvZGV2L2FwcC9nbG9iYWxzLmNzcyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBcImM2YzRmYWQ4YmUwZlwiXG5pZiAobW9kdWxlLmhvdCkgeyBtb2R1bGUuaG90LmFjY2VwdCgpIH1cbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./app/globals.css\n");
75
+
76
+ /***/ }),
77
+
78
+ /***/ "(rsc)/./app/layout.js":
79
+ /*!***********************!*\
80
+ !*** ./app/layout.js ***!
81
+ \***********************/
82
+ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
83
+
84
+ "use strict";
85
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ RootLayout),\n/* harmony export */ metadata: () => (/* binding */ metadata)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(rsc)/../../node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-jsx-dev-runtime.js\");\n/* harmony import */ var _lib_docs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../lib/docs */ \"(rsc)/./lib/docs.js\");\n/* harmony import */ var _Sidebar__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Sidebar */ \"(rsc)/./app/Sidebar.js\");\n/* harmony import */ var _readme_markdown_dist_main_css__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @readme/markdown/dist/main.css */ \"(rsc)/../../node_modules/@readme/markdown/dist/main.css\");\n/* harmony import */ var _globals_css__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./globals.css */ \"(rsc)/./app/globals.css\");\n\n\n\n\n\nconst metadata = {\n title: {\n default: 'Dev Preview',\n template: '%s | Dev Preview'\n }\n};\nasync function RootLayout({ children }) {\n const sidebar = (0,_lib_docs__WEBPACK_IMPORTED_MODULE_1__.collectSidebar)();\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"html\", {\n lang: \"en\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"head\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"script\", {\n src: \"https://cdn.tailwindcss.com\"\n }, void 0, false, {\n fileName: \"/Users/gkoberger/Sites/readme/2026-readme-cli/src/dev/app/layout.js\",\n lineNumber: 19,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"link\", {\n rel: \"stylesheet\",\n href: \"https://kit.fontawesome.com/b331e91c9c.css\",\n crossOrigin: \"anonymous\"\n }, void 0, false, {\n fileName: \"/Users/gkoberger/Sites/readme/2026-readme-cli/src/dev/app/layout.js\",\n lineNumber: 20,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/gkoberger/Sites/readme/2026-readme-cli/src/dev/app/layout.js\",\n lineNumber: 18,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"body\", {\n className: \"bg-[#000343] text-gray-900 antialiased\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"header\", {\n className: \"fixed top-0 inset-x-0 h-[48px] bg-[#000343] flex items-center px-5 z-50\",\n style: {\n backgroundImage: `linear-gradient(rgba(255,255,255,0.08) 1px, transparent 1px), linear-gradient(90deg, rgba(255,255,255,0.08) 1px, transparent 1px)`,\n backgroundSize: '20px 20px'\n },\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-3 mr-8 shrink-0\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"i\", {\n className: \"fa-brands fa-readme text-[#018ef5] text-[18px] relative top-[1px]\"\n }, void 0, false, {\n fileName: \"/Users/gkoberger/Sites/readme/2026-readme-cli/src/dev/app/layout.js\",\n lineNumber: 30,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-white/90 font-mono text-[13px] tracking-tight mr-1\",\n children: \"dev server\"\n }, void 0, false, {\n fileName: \"/Users/gkoberger/Sites/readme/2026-readme-cli/src/dev/app/layout.js\",\n lineNumber: 31,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/gkoberger/Sites/readme/2026-readme-cli/src/dev/app/layout.js\",\n lineNumber: 29,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"relative group flex items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-[8px] font-semibold bg-white/20 text-white/50 group-hover:bg-white/30 group-hover:text-white/70 px-1.5 py-[3px] rounded uppercase tracking-wider cursor-default transition-colors duration-150\",\n children: \"beta\"\n }, void 0, false, {\n fileName: \"/Users/gkoberger/Sites/readme/2026-readme-cli/src/dev/app/layout.js\",\n lineNumber: 34,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"pointer-events-none absolute left-1/2 -translate-x-1/2 top-full mt-5 z-[100] w-48 rounded-lg bg-gray-900 px-3 py-2 text-[11px] leading-snug text-white/80 opacity-0 group-hover:opacity-100 transition-opacity duration-150 shadow-lg\",\n children: \"This is a local preview — it won't look exactly like your published docs.\"\n }, void 0, false, {\n fileName: \"/Users/gkoberger/Sites/readme/2026-readme-cli/src/dev/app/layout.js\",\n lineNumber: 37,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/gkoberger/Sites/readme/2026-readme-cli/src/dev/app/layout.js\",\n lineNumber: 33,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/gkoberger/Sites/readme/2026-readme-cli/src/dev/app/layout.js\",\n lineNumber: 28,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_Sidebar__WEBPACK_IMPORTED_MODULE_2__.SidebarNav, {\n sidebar: sidebar\n }, void 0, false, {\n fileName: \"/Users/gkoberger/Sites/readme/2026-readme-cli/src/dev/app/layout.js\",\n lineNumber: 42,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/gkoberger/Sites/readme/2026-readme-cli/src/dev/app/layout.js\",\n lineNumber: 24,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex pt-[48px] min-h-screen\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"aside\", {\n className: \"w-[300px] fixed top-[48px] left-0 bottom-0 bg-white rounded-tl-xl border-r border-gray-200 overflow-y-auto py-4 pl-5\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_Sidebar__WEBPACK_IMPORTED_MODULE_2__.SidebarPanel, {\n sidebar: sidebar\n }, void 0, false, {\n fileName: \"/Users/gkoberger/Sites/readme/2026-readme-cli/src/dev/app/layout.js\",\n lineNumber: 48,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/Users/gkoberger/Sites/readme/2026-readme-cli/src/dev/app/layout.js\",\n lineNumber: 47,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"main\", {\n className: \"ml-[300px] flex-1 min-w-0 bg-white rounded-tr-xl\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"max-w-[820px] py-10 px-16\",\n children: children\n }, void 0, false, {\n fileName: \"/Users/gkoberger/Sites/readme/2026-readme-cli/src/dev/app/layout.js\",\n lineNumber: 53,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/Users/gkoberger/Sites/readme/2026-readme-cli/src/dev/app/layout.js\",\n lineNumber: 52,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/gkoberger/Sites/readme/2026-readme-cli/src/dev/app/layout.js\",\n lineNumber: 45,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"style\", {\n dangerouslySetInnerHTML: {\n __html: `\n [data-sidebar-group][data-expanded=\"false\"] .sidebar-children { display: none; }\n [data-sidebar-group][data-expanded=\"true\"] .sidebar-children { display: block; }\n [data-sidebar-group][data-expanded=\"true\"] .sidebar-chevron { transform: rotate(90deg); }\n `\n }\n }, void 0, false, {\n fileName: \"/Users/gkoberger/Sites/readme/2026-readme-cli/src/dev/app/layout.js\",\n lineNumber: 59,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"script\", {\n dangerouslySetInnerHTML: {\n __html: `(function(){var es=new EventSource('/__reload');es.onmessage=function(e){if(e.data==='reload')location.reload()};})();\ndocument.addEventListener('click',function(e){var t=e.target.closest('[data-sidebar-toggle]');if(!t)return;var g=t.closest('[data-sidebar-group]');if(!g)return;if(t.getAttribute('href')==='#'){e.preventDefault();}var ex=g.getAttribute('data-expanded')==='true';g.setAttribute('data-expanded',ex?'false':'true');});`\n }\n }, void 0, false, {\n fileName: \"/Users/gkoberger/Sites/readme/2026-readme-cli/src/dev/app/layout.js\",\n lineNumber: 64,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/gkoberger/Sites/readme/2026-readme-cli/src/dev/app/layout.js\",\n lineNumber: 22,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/gkoberger/Sites/readme/2026-readme-cli/src/dev/app/layout.js\",\n lineNumber: 17,\n columnNumber: 5\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9hcHAvbGF5b3V0LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQTZDO0FBQ1E7QUFDYjtBQUNqQjtBQUVoQixNQUFNRyxXQUFXO0lBQ3RCQyxPQUFPO1FBQ0xDLFNBQVM7UUFDVEMsVUFBVTtJQUNaO0FBQ0YsRUFBRTtBQUVhLGVBQWVDLFdBQVcsRUFBRUMsUUFBUSxFQUFFO0lBQ25ELE1BQU1DLFVBQVVULHlEQUFjQTtJQUU5QixxQkFDRSw4REFBQ1U7UUFBS0MsTUFBSzs7MEJBQ1QsOERBQUNDOztrQ0FDQyw4REFBQ0M7d0JBQU9DLEtBQUk7Ozs7OztrQ0FDWiw4REFBQ0M7d0JBQUtDLEtBQUk7d0JBQWFDLE1BQUs7d0JBQTZDQyxhQUFZOzs7Ozs7Ozs7Ozs7MEJBRXZGLDhEQUFDQztnQkFBS0MsV0FBVTs7a0NBRWQsOERBQUNDO3dCQUFPRCxXQUFVO3dCQUEwRUUsT0FBTzs0QkFDakdDLGlCQUFpQixDQUFDLGlJQUFpSSxDQUFDOzRCQUNwSkMsZ0JBQWdCO3dCQUNsQjs7MENBQ0UsOERBQUNDO2dDQUFJTCxXQUFVOztrREFDYiw4REFBQ0s7d0NBQUlMLFdBQVU7OzBEQUNiLDhEQUFDTTtnREFBRU4sV0FBVTs7Ozs7OzBEQUNiLDhEQUFDTztnREFBS1AsV0FBVTswREFBMEQ7Ozs7Ozs7Ozs7OztrREFFNUUsOERBQUNPO3dDQUFLUCxXQUFVOzswREFDZCw4REFBQ087Z0RBQUtQLFdBQVU7MERBQXNNOzs7Ozs7MERBR3ROLDhEQUFDTztnREFBS1AsV0FBVTswREFBd087Ozs7Ozs7Ozs7Ozs7Ozs7OzswQ0FLNVAsOERBQUNuQixnREFBVUE7Z0NBQUNRLFNBQVNBOzs7Ozs7Ozs7Ozs7a0NBR3ZCLDhEQUFDZ0I7d0JBQUlMLFdBQVU7OzBDQUViLDhEQUFDUTtnQ0FBTVIsV0FBVTswQ0FDZiw0RUFBQ2xCLGtEQUFZQTtvQ0FBQ08sU0FBU0E7Ozs7Ozs7Ozs7OzBDQUl6Qiw4REFBQ29CO2dDQUFLVCxXQUFVOzBDQUNkLDRFQUFDSztvQ0FBSUwsV0FBVTs4Q0FDWlo7Ozs7Ozs7Ozs7Ozs7Ozs7O2tDQUtQLDhEQUFDYzt3QkFBTVEseUJBQXlCOzRCQUFFQyxRQUFRLENBQUM7Ozs7UUFJM0MsQ0FBQzt3QkFBQTs7Ozs7O2tDQUNELDhEQUFDbEI7d0JBQ0NpQix5QkFBeUI7NEJBQ3ZCQyxRQUFRLENBQUM7MFRBQ3FTLENBQUM7d0JBQ2pUOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFLViIsInNvdXJjZXMiOlsiL1VzZXJzL2drb2Jlcmdlci9TaXRlcy9yZWFkbWUvMjAyNi1yZWFkbWUtY2xpL3NyYy9kZXYvYXBwL2xheW91dC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb2xsZWN0U2lkZWJhciB9IGZyb20gJy4uL2xpYi9kb2NzJztcbmltcG9ydCB7IFNpZGViYXJOYXYsIFNpZGViYXJQYW5lbCB9IGZyb20gJy4vU2lkZWJhcic7XG5pbXBvcnQgJ0ByZWFkbWUvbWFya2Rvd24vZGlzdC9tYWluLmNzcyc7XG5pbXBvcnQgJy4vZ2xvYmFscy5jc3MnO1xuXG5leHBvcnQgY29uc3QgbWV0YWRhdGEgPSB7XG4gIHRpdGxlOiB7XG4gICAgZGVmYXVsdDogJ0RldiBQcmV2aWV3JyxcbiAgICB0ZW1wbGF0ZTogJyVzIHwgRGV2IFByZXZpZXcnLFxuICB9LFxufTtcblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gUm9vdExheW91dCh7IGNoaWxkcmVuIH0pIHtcbiAgY29uc3Qgc2lkZWJhciA9IGNvbGxlY3RTaWRlYmFyKCk7XG5cbiAgcmV0dXJuIChcbiAgICA8aHRtbCBsYW5nPVwiZW5cIj5cbiAgICAgIDxoZWFkPlxuICAgICAgICA8c2NyaXB0IHNyYz1cImh0dHBzOi8vY2RuLnRhaWx3aW5kY3NzLmNvbVwiPjwvc2NyaXB0PlxuICAgICAgICA8bGluayByZWw9XCJzdHlsZXNoZWV0XCIgaHJlZj1cImh0dHBzOi8va2l0LmZvbnRhd2Vzb21lLmNvbS9iMzMxZTkxYzljLmNzc1wiIGNyb3NzT3JpZ2luPVwiYW5vbnltb3VzXCIgLz5cbiAgICAgIDwvaGVhZD5cbiAgICAgIDxib2R5IGNsYXNzTmFtZT1cImJnLVsjMDAwMzQzXSB0ZXh0LWdyYXktOTAwIGFudGlhbGlhc2VkXCI+XG4gICAgICAgIHsvKiBUb3AgTmF2aWdhdGlvbiAqL31cbiAgICAgICAgPGhlYWRlciBjbGFzc05hbWU9XCJmaXhlZCB0b3AtMCBpbnNldC14LTAgaC1bNDhweF0gYmctWyMwMDAzNDNdIGZsZXggaXRlbXMtY2VudGVyIHB4LTUgei01MFwiIHN0eWxlPXt7XG4gICAgICAgICAgYmFja2dyb3VuZEltYWdlOiBgbGluZWFyLWdyYWRpZW50KHJnYmEoMjU1LDI1NSwyNTUsMC4wOCkgMXB4LCB0cmFuc3BhcmVudCAxcHgpLCBsaW5lYXItZ3JhZGllbnQoOTBkZWcsIHJnYmEoMjU1LDI1NSwyNTUsMC4wOCkgMXB4LCB0cmFuc3BhcmVudCAxcHgpYCxcbiAgICAgICAgICBiYWNrZ3JvdW5kU2l6ZTogJzIwcHggMjBweCcsXG4gICAgICAgIH19PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTMgbXItOCBzaHJpbmstMFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgICAgICAgICA8aSBjbGFzc05hbWU9XCJmYS1icmFuZHMgZmEtcmVhZG1lIHRleHQtWyMwMThlZjVdIHRleHQtWzE4cHhdIHJlbGF0aXZlIHRvcC1bMXB4XVwiIC8+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtd2hpdGUvOTAgZm9udC1tb25vIHRleHQtWzEzcHhdIHRyYWNraW5nLXRpZ2h0IG1yLTFcIj5kZXYgc2VydmVyPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJyZWxhdGl2ZSBncm91cCBmbGV4IGl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LVs4cHhdIGZvbnQtc2VtaWJvbGQgYmctd2hpdGUvMjAgdGV4dC13aGl0ZS81MCBncm91cC1ob3ZlcjpiZy13aGl0ZS8zMCBncm91cC1ob3Zlcjp0ZXh0LXdoaXRlLzcwIHB4LTEuNSBweS1bM3B4XSByb3VuZGVkIHVwcGVyY2FzZSB0cmFja2luZy13aWRlciBjdXJzb3ItZGVmYXVsdCB0cmFuc2l0aW9uLWNvbG9ycyBkdXJhdGlvbi0xNTBcIj5cbiAgICAgICAgICAgICAgICBiZXRhXG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicG9pbnRlci1ldmVudHMtbm9uZSBhYnNvbHV0ZSBsZWZ0LTEvMiAtdHJhbnNsYXRlLXgtMS8yIHRvcC1mdWxsIG10LTUgei1bMTAwXSB3LTQ4IHJvdW5kZWQtbGcgYmctZ3JheS05MDAgcHgtMyBweS0yIHRleHQtWzExcHhdIGxlYWRpbmctc251ZyB0ZXh0LXdoaXRlLzgwIG9wYWNpdHktMCBncm91cC1ob3ZlcjpvcGFjaXR5LTEwMCB0cmFuc2l0aW9uLW9wYWNpdHkgZHVyYXRpb24tMTUwIHNoYWRvdy1sZ1wiPlxuICAgICAgICAgICAgICAgIFRoaXMgaXMgYSBsb2NhbCBwcmV2aWV3IOKAlCBpdCB3b24ndCBsb29rIGV4YWN0bHkgbGlrZSB5b3VyIHB1Ymxpc2hlZCBkb2NzLlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPFNpZGViYXJOYXYgc2lkZWJhcj17c2lkZWJhcn0gLz5cbiAgICAgICAgPC9oZWFkZXI+XG5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IHB0LVs0OHB4XSBtaW4taC1zY3JlZW5cIj5cbiAgICAgICAgICB7LyogU2lkZWJhciAqL31cbiAgICAgICAgICA8YXNpZGUgY2xhc3NOYW1lPVwidy1bMzAwcHhdIGZpeGVkIHRvcC1bNDhweF0gbGVmdC0wIGJvdHRvbS0wIGJnLXdoaXRlIHJvdW5kZWQtdGwteGwgYm9yZGVyLXIgYm9yZGVyLWdyYXktMjAwIG92ZXJmbG93LXktYXV0byBweS00IHBsLTVcIj5cbiAgICAgICAgICAgIDxTaWRlYmFyUGFuZWwgc2lkZWJhcj17c2lkZWJhcn0gLz5cbiAgICAgICAgICA8L2FzaWRlPlxuXG4gICAgICAgICAgey8qIENvbnRlbnQgKi99XG4gICAgICAgICAgPG1haW4gY2xhc3NOYW1lPVwibWwtWzMwMHB4XSBmbGV4LTEgbWluLXctMCBiZy13aGl0ZSByb3VuZGVkLXRyLXhsXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1heC13LVs4MjBweF0gcHktMTAgcHgtMTZcIj5cbiAgICAgICAgICAgICAge2NoaWxkcmVufVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9tYWluPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8c3R5bGUgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw9e3sgX19odG1sOiBgXG4gICAgICAgICAgW2RhdGEtc2lkZWJhci1ncm91cF1bZGF0YS1leHBhbmRlZD1cImZhbHNlXCJdIC5zaWRlYmFyLWNoaWxkcmVuIHsgZGlzcGxheTogbm9uZTsgfVxuICAgICAgICAgIFtkYXRhLXNpZGViYXItZ3JvdXBdW2RhdGEtZXhwYW5kZWQ9XCJ0cnVlXCJdIC5zaWRlYmFyLWNoaWxkcmVuIHsgZGlzcGxheTogYmxvY2s7IH1cbiAgICAgICAgICBbZGF0YS1zaWRlYmFyLWdyb3VwXVtkYXRhLWV4cGFuZGVkPVwidHJ1ZVwiXSAuc2lkZWJhci1jaGV2cm9uIHsgdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpOyB9XG4gICAgICAgIGB9fSAvPlxuICAgICAgICA8c2NyaXB0XG4gICAgICAgICAgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw9e3tcbiAgICAgICAgICAgIF9faHRtbDogYChmdW5jdGlvbigpe3ZhciBlcz1uZXcgRXZlbnRTb3VyY2UoJy9fX3JlbG9hZCcpO2VzLm9ubWVzc2FnZT1mdW5jdGlvbihlKXtpZihlLmRhdGE9PT0ncmVsb2FkJylsb2NhdGlvbi5yZWxvYWQoKX07fSkoKTtcbmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJyxmdW5jdGlvbihlKXt2YXIgdD1lLnRhcmdldC5jbG9zZXN0KCdbZGF0YS1zaWRlYmFyLXRvZ2dsZV0nKTtpZighdClyZXR1cm47dmFyIGc9dC5jbG9zZXN0KCdbZGF0YS1zaWRlYmFyLWdyb3VwXScpO2lmKCFnKXJldHVybjtpZih0LmdldEF0dHJpYnV0ZSgnaHJlZicpPT09JyMnKXtlLnByZXZlbnREZWZhdWx0KCk7fXZhciBleD1nLmdldEF0dHJpYnV0ZSgnZGF0YS1leHBhbmRlZCcpPT09J3RydWUnO2cuc2V0QXR0cmlidXRlKCdkYXRhLWV4cGFuZGVkJyxleD8nZmFsc2UnOid0cnVlJyk7fSk7YCxcbiAgICAgICAgICB9fVxuICAgICAgICAvPlxuICAgICAgPC9ib2R5PlxuICAgIDwvaHRtbD5cbiAgKTtcbn1cbiJdLCJuYW1lcyI6WyJjb2xsZWN0U2lkZWJhciIsIlNpZGViYXJOYXYiLCJTaWRlYmFyUGFuZWwiLCJtZXRhZGF0YSIsInRpdGxlIiwiZGVmYXVsdCIsInRlbXBsYXRlIiwiUm9vdExheW91dCIsImNoaWxkcmVuIiwic2lkZWJhciIsImh0bWwiLCJsYW5nIiwiaGVhZCIsInNjcmlwdCIsInNyYyIsImxpbmsiLCJyZWwiLCJocmVmIiwiY3Jvc3NPcmlnaW4iLCJib2R5IiwiY2xhc3NOYW1lIiwiaGVhZGVyIiwic3R5bGUiLCJiYWNrZ3JvdW5kSW1hZ2UiLCJiYWNrZ3JvdW5kU2l6ZSIsImRpdiIsImkiLCJzcGFuIiwiYXNpZGUiLCJtYWluIiwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwiLCJfX2h0bWwiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./app/layout.js\n");
86
+
87
+ /***/ }),
88
+
89
+ /***/ "(rsc)/./app/page.js":
90
+ /*!*********************!*\
91
+ !*** ./app/page.js ***!
92
+ \*********************/
93
+ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
94
+
95
+ "use strict";
96
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ HomePage),\n/* harmony export */ dynamic: () => (/* binding */ dynamic)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(rsc)/../../node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-jsx-dev-runtime.js\");\n/* harmony import */ var next_navigation__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! next/navigation */ \"(rsc)/../../node_modules/next/dist/api/navigation.react-server.js\");\n/* harmony import */ var _lib_docs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../lib/docs */ \"(rsc)/./lib/docs.js\");\n\n\n\nconst dynamic = 'force-dynamic';\nfunction HomePage() {\n const firstHref = (0,_lib_docs__WEBPACK_IMPORTED_MODULE_2__.getFirstPageHref)();\n if (firstHref) {\n (0,next_navigation__WEBPACK_IMPORTED_MODULE_1__.redirect)(firstHref);\n }\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col items-center justify-center py-24 text-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-12 h-12 rounded-xl bg-gray-100 flex items-center justify-center text-2xl mb-4\",\n children: \"\\uD83D\\uDCDD\"\n }, void 0, false, {\n fileName: \"/Users/gkoberger/Sites/readme/2026-readme-cli/src/dev/app/page.js\",\n lineNumber: 14,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h1\", {\n className: \"text-xl font-semibold text-gray-900 mb-1\",\n children: \"Welcome\"\n }, void 0, false, {\n fileName: \"/Users/gkoberger/Sites/readme/2026-readme-cli/src/dev/app/page.js\",\n lineNumber: 15,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-gray-400\",\n children: \"No documentation pages found.\"\n }, void 0, false, {\n fileName: \"/Users/gkoberger/Sites/readme/2026-readme-cli/src/dev/app/page.js\",\n lineNumber: 16,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/gkoberger/Sites/readme/2026-readme-cli/src/dev/app/page.js\",\n lineNumber: 13,\n columnNumber: 5\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9hcHAvcGFnZS5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBMkM7QUFDSTtBQUV4QyxNQUFNRSxVQUFVLGdCQUFnQjtBQUV4QixTQUFTQztJQUN0QixNQUFNQyxZQUFZSCwyREFBZ0JBO0lBQ2xDLElBQUlHLFdBQVc7UUFDYkoseURBQVFBLENBQUNJO0lBQ1g7SUFFQSxxQkFDRSw4REFBQ0M7UUFBSUMsV0FBVTs7MEJBQ2IsOERBQUNEO2dCQUFJQyxXQUFVOzBCQUFrRjs7Ozs7OzBCQUNqRyw4REFBQ0M7Z0JBQUdELFdBQVU7MEJBQTJDOzs7Ozs7MEJBQ3pELDhEQUFDRTtnQkFBRUYsV0FBVTswQkFBd0I7Ozs7Ozs7Ozs7OztBQUczQyIsInNvdXJjZXMiOlsiL1VzZXJzL2drb2Jlcmdlci9TaXRlcy9yZWFkbWUvMjAyNi1yZWFkbWUtY2xpL3NyYy9kZXYvYXBwL3BhZ2UuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVkaXJlY3QgfSBmcm9tICduZXh0L25hdmlnYXRpb24nO1xuaW1wb3J0IHsgZ2V0Rmlyc3RQYWdlSHJlZiB9IGZyb20gJy4uL2xpYi9kb2NzJztcblxuZXhwb3J0IGNvbnN0IGR5bmFtaWMgPSAnZm9yY2UtZHluYW1pYyc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEhvbWVQYWdlKCkge1xuICBjb25zdCBmaXJzdEhyZWYgPSBnZXRGaXJzdFBhZ2VIcmVmKCk7XG4gIGlmIChmaXJzdEhyZWYpIHtcbiAgICByZWRpcmVjdChmaXJzdEhyZWYpO1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggZmxleC1jb2wgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHB5LTI0IHRleHQtY2VudGVyXCI+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInctMTIgaC0xMiByb3VuZGVkLXhsIGJnLWdyYXktMTAwIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHRleHQtMnhsIG1iLTRcIj7wn5OdPC9kaXY+XG4gICAgICA8aDEgY2xhc3NOYW1lPVwidGV4dC14bCBmb250LXNlbWlib2xkIHRleHQtZ3JheS05MDAgbWItMVwiPldlbGNvbWU8L2gxPlxuICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC1zbSB0ZXh0LWdyYXktNDAwXCI+Tm8gZG9jdW1lbnRhdGlvbiBwYWdlcyBmb3VuZC48L3A+XG4gICAgPC9kaXY+XG4gICk7XG59XG4iXSwibmFtZXMiOlsicmVkaXJlY3QiLCJnZXRGaXJzdFBhZ2VIcmVmIiwiZHluYW1pYyIsIkhvbWVQYWdlIiwiZmlyc3RIcmVmIiwiZGl2IiwiY2xhc3NOYW1lIiwiaDEiLCJwIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./app/page.js\n");
97
+
98
+ /***/ }),
99
+
100
+ /***/ "(rsc)/./lib/docs.js":
101
+ /*!*********************!*\
102
+ !*** ./lib/docs.js ***!
103
+ \*********************/
104
+ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
105
+
106
+ "use strict";
107
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ collectSidebar: () => (/* binding */ collectSidebar),\n/* harmony export */ getFirstPageHref: () => (/* binding */ getFirstPageHref),\n/* harmony export */ getPage: () => (/* binding */ getPage)\n/* harmony export */ });\n/* harmony import */ var node_module__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! node:module */ \"node:module\");\n/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! fs */ \"fs\");\n/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! path */ \"path\");\n/* harmony import */ var gray_matter__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! gray-matter */ \"gray-matter\");\n/* harmony import */ var _readme_markdown__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @readme/markdown */ \"@readme/markdown\");\n/* harmony import */ var js_yaml__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! js-yaml */ \"js-yaml\");\n\n\n\n\n\n\n// Use createRequire to load react-dom/server at runtime,\n// bypassing Next.js App Router's static import restriction.\nconst _require = (0,node_module__WEBPACK_IMPORTED_MODULE_0__.createRequire)(\"file:///Users/gkoberger/Sites/readme/2026-readme-cli/src/dev/lib/docs.js\");\nconst React = _require('react');\nconst { renderToStaticMarkup } = _require('react-dom/server');\nconst DOCS_ROOT = process.env.DOCS_ROOT;\nconst SECTIONS = [\n {\n dir: 'docs',\n label: 'Docs'\n },\n {\n dir: 'reference',\n label: 'Reference'\n },\n {\n dir: 'custom_pages',\n label: 'Custom Pages'\n },\n {\n dir: 'recipes',\n label: 'Recipes'\n }\n];\nfunction walkDir(dirPath, sectionDir) {\n if (!fs__WEBPACK_IMPORTED_MODULE_1__.existsSync(dirPath)) return [];\n // Read _order.yaml for ordering\n let order = [];\n const orderPath = path__WEBPACK_IMPORTED_MODULE_2__.join(dirPath, '_order.yaml');\n if (fs__WEBPACK_IMPORTED_MODULE_1__.existsSync(orderPath)) {\n order = js_yaml__WEBPACK_IMPORTED_MODULE_5__.load(fs__WEBPACK_IMPORTED_MODULE_1__.readFileSync(orderPath, 'utf-8')) || [];\n }\n // Get all items (exclude dotfiles and _-prefixed files)\n const items = fs__WEBPACK_IMPORTED_MODULE_1__.readdirSync(dirPath).filter((f)=>!f.startsWith('.') && !f.startsWith('_'));\n const mdFiles = new Set(items.filter((f)=>f.endsWith('.md') && f !== 'index.md').map((f)=>f.replace(/\\.md$/, '')));\n const dirs = new Set(items.filter((f)=>{\n try {\n return fs__WEBPACK_IMPORTED_MODULE_1__.statSync(path__WEBPACK_IMPORTED_MODULE_2__.join(dirPath, f)).isDirectory();\n } catch {\n return false;\n }\n }));\n // Build ordered list: ordered items first, then any remaining\n const allNames = new Set([\n ...mdFiles,\n ...dirs\n ]);\n const ordered = order.filter((name)=>allNames.has(name));\n const remaining = [\n ...allNames\n ].filter((name)=>!ordered.includes(name));\n const finalOrder = [\n ...ordered,\n ...remaining\n ];\n const entries = [];\n for (const name of finalOrder){\n const isDir = dirs.has(name);\n const isMd = mdFiles.has(name);\n if (isDir) {\n const children = walkDir(path__WEBPACK_IMPORTED_MODULE_2__.join(dirPath, name), sectionDir);\n // ReadMeConfig pages are internal — show them without a group header\n if (name === 'ReadMeConfig') {\n entries.push(...children);\n continue;\n }\n // A directory can represent either:\n // 1. A pure category (no content of its own) → render as group label\n // 2. A parent page with children → render as a clickable page with\n // a nested list underneath\n //\n // Two file layouts signal #2:\n // a. `<name>/index.md` — the \"index\" convention\n // b. `<parent>/<name>.md` right alongside the `<name>/` folder\n // (sibling convention) — the importer writes parent pages this way\n // If either exists, treat this as a clickable parent page.\n const indexPath = path__WEBPACK_IMPORTED_MODULE_2__.join(dirPath, name, 'index.md');\n const siblingMdPath = path__WEBPACK_IMPORTED_MODULE_2__.join(dirPath, `${name}.md`);\n const parentPagePath = fs__WEBPACK_IMPORTED_MODULE_1__.existsSync(indexPath) ? indexPath : fs__WEBPACK_IMPORTED_MODULE_1__.existsSync(siblingMdPath) ? siblingMdPath : null;\n let title = name;\n let href = null;\n let hidden = false;\n let icon = null;\n if (parentPagePath) {\n const { data } = gray_matter__WEBPACK_IMPORTED_MODULE_3__(fs__WEBPACK_IMPORTED_MODULE_1__.readFileSync(parentPagePath, 'utf-8'));\n title = data.title || name;\n href = `/${sectionDir}/${encodeURIComponent(name)}`;\n hidden = !!data.hidden;\n icon = data.icon || null;\n }\n entries.push({\n title,\n href,\n hidden,\n icon,\n children\n });\n // If a sibling .md is providing the parent content, remove it from\n // mdFiles so we don't also render it as a standalone page below.\n mdFiles.delete(name);\n } else if (isMd) {\n const filePath = path__WEBPACK_IMPORTED_MODULE_2__.join(dirPath, `${name}.md`);\n const { data } = gray_matter__WEBPACK_IMPORTED_MODULE_3__(fs__WEBPACK_IMPORTED_MODULE_1__.readFileSync(filePath, 'utf-8'));\n const linkUrl = data.link?.url;\n entries.push({\n title: data.title || name,\n href: linkUrl || `/${sectionDir}/${encodeURIComponent(name)}`,\n external: !!linkUrl,\n hidden: !!data.hidden,\n icon: data.icon || null,\n children: []\n });\n }\n }\n return entries;\n}\nfunction collectSidebar() {\n const sections = [];\n for (const { dir, label } of SECTIONS){\n const fullPath = path__WEBPACK_IMPORTED_MODULE_2__.join(DOCS_ROOT, dir);\n if (!fs__WEBPACK_IMPORTED_MODULE_1__.existsSync(fullPath)) continue;\n const children = walkDir(fullPath, dir);\n if (children.length > 0) {\n sections.push({\n title: label,\n dir,\n firstHref: findFirstHref(children),\n children\n });\n }\n }\n return sections;\n}\nfunction loadCustomBlocks(docsRoot) {\n const blocksDir = path__WEBPACK_IMPORTED_MODULE_2__.join(docsRoot, 'custom_blocks');\n if (!fs__WEBPACK_IMPORTED_MODULE_1__.existsSync(blocksDir)) return {\n sources: {},\n modules: {}\n };\n const files = fs__WEBPACK_IMPORTED_MODULE_1__.readdirSync(blocksDir).filter((f)=>f.endsWith('.md') || f.endsWith('.mdx'));\n const sources = {};\n const modules = {};\n for (const file of files){\n const raw = fs__WEBPACK_IMPORTED_MODULE_1__.readFileSync(path__WEBPACK_IMPORTED_MODULE_2__.join(blocksDir, file), 'utf-8');\n const { data, content } = gray_matter__WEBPACK_IMPORTED_MODULE_3__(raw);\n const name = data.name || path__WEBPACK_IMPORTED_MODULE_2__.basename(file, path__WEBPACK_IMPORTED_MODULE_2__.extname(file));\n sources[name] = content;\n modules[name] = (0,_readme_markdown__WEBPACK_IMPORTED_MODULE_4__.run)((0,_readme_markdown__WEBPACK_IMPORTED_MODULE_4__.compile)(content));\n }\n return {\n sources,\n modules\n };\n}\n// Recursively find a .md file matching the given slug within a directory\nfunction findFile(dirPath, slug) {\n if (!fs__WEBPACK_IMPORTED_MODULE_1__.existsSync(dirPath)) return null;\n // Check for slug.md directly in this directory\n const direct = path__WEBPACK_IMPORTED_MODULE_2__.join(dirPath, `${slug}.md`);\n if (fs__WEBPACK_IMPORTED_MODULE_1__.existsSync(direct)) return direct;\n // Check for slug/index.md\n const index = path__WEBPACK_IMPORTED_MODULE_2__.join(dirPath, slug, 'index.md');\n if (fs__WEBPACK_IMPORTED_MODULE_1__.existsSync(index)) return index;\n // Search subdirectories\n const entries = fs__WEBPACK_IMPORTED_MODULE_1__.readdirSync(dirPath).filter((f)=>!f.startsWith('.') && !f.startsWith('_'));\n for (const entry of entries){\n const full = path__WEBPACK_IMPORTED_MODULE_2__.join(dirPath, entry);\n try {\n if (fs__WEBPACK_IMPORTED_MODULE_1__.statSync(full).isDirectory()) {\n const found = findFile(full, slug);\n if (found) return found;\n }\n } catch {\n // skip\n }\n }\n return null;\n}\nfunction getPage(slugArray) {\n // slugArray = ['docs', 'getting-started'] or ['reference', 'getPet']\n const [section, ...rest] = slugArray.map((s)=>decodeURIComponent(s));\n const slug = rest.join('/');\n if (!section || !slug) return null;\n const sectionPath = path__WEBPACK_IMPORTED_MODULE_2__.join(DOCS_ROOT, section);\n const filePath = findFile(sectionPath, slug);\n if (!filePath) return null;\n const raw = fs__WEBPACK_IMPORTED_MODULE_1__.readFileSync(filePath, 'utf-8');\n const { data, content } = gray_matter__WEBPACK_IMPORTED_MODULE_3__(raw);\n let html;\n // Reference pages stubbed by the import command (or by oas:sync) have an\n // empty body — the real endpoint UI comes from the OAS spec at render\n // time. The production ReadMe renderer handles this; our local dev server\n // used to show a blank page. If we see `api.file` + `api.operationId`,\n // render a minimal preview from the spec so the page isn't empty.\n if (data.api?.file && data.api?.operationId && !content.trim()) {\n html = renderOasOperationPreview(data.api.file, data.api.operationId);\n } else {\n try {\n const { sources, modules } = loadCustomBlocks(DOCS_ROOT);\n const compiled = (0,_readme_markdown__WEBPACK_IMPORTED_MODULE_4__.compile)(content, {\n components: sources\n });\n const mod = (0,_readme_markdown__WEBPACK_IMPORTED_MODULE_4__.run)(compiled, {\n components: modules\n });\n // Suppress React warnings about class vs className from raw HTML in markdown\n const origError = console.error;\n console.error = (...args)=>{\n if (typeof args[0] === 'string' && args[0].includes('Invalid DOM property')) return;\n origError.apply(console, args);\n };\n html = renderToStaticMarkup(React.createElement(mod.default));\n console.error = origError;\n } catch {\n html = `<p><em>Error rendering MDX. Raw content below:</em></p><pre>${content.replace(/</g, '&lt;')}</pre>`;\n }\n }\n return {\n title: data.title || slug,\n excerpt: data.excerpt || '',\n html\n };\n}\n/**\n * Render a small HTML preview of one OAS operation — method badge, path,\n * description, and parameter list. Not a full interactive API reference\n * (production ReadMe handles that); just enough so dev server pages show\n * something meaningful instead of a blank body.\n */ function renderOasOperationPreview(specFile, operationId) {\n const specPath = path__WEBPACK_IMPORTED_MODULE_2__.join(DOCS_ROOT, 'reference', specFile);\n if (!fs__WEBPACK_IMPORTED_MODULE_1__.existsSync(specPath)) {\n return `<p><em>OAS spec not found: <code>reference/${specFile}</code></em></p>`;\n }\n let spec;\n try {\n const rawSpec = fs__WEBPACK_IMPORTED_MODULE_1__.readFileSync(specPath, 'utf-8');\n spec = specFile.toLowerCase().endsWith('.json') ? JSON.parse(rawSpec) : js_yaml__WEBPACK_IMPORTED_MODULE_5__.load(rawSpec);\n } catch (e) {\n return `<p><em>Couldn't parse <code>reference/${specFile}</code>: ${escapeHtml(e.message)}</em></p>`;\n }\n let found = null;\n for (const [pathKey, pathItem] of Object.entries(spec.paths || {})){\n for (const [method, op] of Object.entries(pathItem || {})){\n if (op && typeof op === 'object' && op.operationId === operationId) {\n found = {\n method: method.toUpperCase(),\n path: pathKey,\n op\n };\n }\n }\n }\n if (!found) {\n return `<p><em>Operation <code>${escapeHtml(operationId)}</code> not found in <code>${escapeHtml(specFile)}</code>.</em></p>`;\n }\n const { method, path: opPath, op } = found;\n const methodColor = {\n GET: '#22c55e',\n POST: '#3b82f6',\n PUT: '#f59e0b',\n PATCH: '#a855f7',\n DELETE: '#ef4444'\n }[method] || '#6b7280';\n const parts = [];\n parts.push(`<div style=\"display: flex; gap: 0.5rem; align-items: center; margin-bottom: 1rem;\">` + `<span style=\"background: ${methodColor}; color: white; padding: 0.15rem 0.5rem; border-radius: 0.25rem; font-family: monospace; font-weight: 600; font-size: 0.85rem;\">${method}</span>` + `<code style=\"font-size: 1rem;\">${escapeHtml(opPath)}</code>` + `</div>`);\n if (op.description) parts.push(`<p>${escapeHtml(op.description)}</p>`);\n if (Array.isArray(op.parameters) && op.parameters.length > 0) {\n parts.push(`<h2>Parameters</h2>`);\n parts.push(`<ul>`);\n for (const p of op.parameters){\n const name = p.name || '(unnamed)';\n const where = p.in ? ` <code style=\"color: #6b7280;\">(${p.in})</code>` : '';\n const required = p.required ? ' <strong>required</strong>' : '';\n const desc = p.description ? ` — ${escapeHtml(p.description)}` : '';\n parts.push(`<li><code>${escapeHtml(name)}</code>${where}${required}${desc}</li>`);\n }\n parts.push(`</ul>`);\n }\n if (op.responses && typeof op.responses === 'object') {\n parts.push(`<h2>Responses</h2>`);\n parts.push(`<ul>`);\n for (const [status, resp] of Object.entries(op.responses)){\n const desc = resp?.description ? ` — ${escapeHtml(resp.description)}` : '';\n parts.push(`<li><code>${escapeHtml(status)}</code>${desc}</li>`);\n }\n parts.push(`</ul>`);\n }\n parts.push(`<hr style=\"margin: 2rem 0; border: 0; border-top: 1px solid #e5e7eb;\">`, `<p style=\"color: #6b7280; font-size: 0.875rem;\"><em>Local preview rendered from the OAS spec. Full interactive API reference (try-it-out, request/response schemas, auth) renders when imported into ReadMe.</em></p>`);\n return parts.join('\\n');\n}\nfunction escapeHtml(s) {\n return String(s).replace(/[&<>\"']/g, (c)=>({\n '&': '&amp;',\n '<': '&lt;',\n '>': '&gt;',\n '\"': '&quot;',\n \"'\": '&#39;'\n })[c]);\n}\nfunction findFirstHref(items) {\n for (const item of items){\n if (item.href) return item.href;\n if (item.children?.length) {\n const found = findFirstHref(item.children);\n if (found) return found;\n }\n }\n return null;\n}\nfunction getFirstPageHref() {\n const sidebar = collectSidebar();\n return findFirstHref(sidebar);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9saWIvZG9jcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBNEM7QUFDeEI7QUFDSTtBQUNTO0FBQ2U7QUFDckI7QUFFM0IseURBQXlEO0FBQ3pELDREQUE0RDtBQUM1RCxNQUFNTyxXQUFXUCwwREFBYUEsQ0FBQywwRUFBZTtBQUM5QyxNQUFNUyxRQUFRRixTQUFTO0FBQ3ZCLE1BQU0sRUFBRUcsb0JBQW9CLEVBQUUsR0FBR0gsU0FBUztBQUUxQyxNQUFNSSxZQUFZQyxRQUFRQyxHQUFHLENBQUNGLFNBQVM7QUFFdkMsTUFBTUcsV0FBVztJQUNmO1FBQUVDLEtBQUs7UUFBUUMsT0FBTztJQUFPO0lBQzdCO1FBQUVELEtBQUs7UUFBYUMsT0FBTztJQUFZO0lBQ3ZDO1FBQUVELEtBQUs7UUFBZ0JDLE9BQU87SUFBZTtJQUM3QztRQUFFRCxLQUFLO1FBQVdDLE9BQU87SUFBVTtDQUNwQztBQUVELFNBQVNDLFFBQVFDLE9BQU8sRUFBRUMsVUFBVTtJQUNsQyxJQUFJLENBQUNsQiwwQ0FBYSxDQUFDaUIsVUFBVSxPQUFPLEVBQUU7SUFFdEMsZ0NBQWdDO0lBQ2hDLElBQUlHLFFBQVEsRUFBRTtJQUNkLE1BQU1DLFlBQVlwQixzQ0FBUyxDQUFDZ0IsU0FBUztJQUNyQyxJQUFJakIsMENBQWEsQ0FBQ3FCLFlBQVk7UUFDNUJELFFBQVFmLHlDQUFTLENBQUNMLDRDQUFlLENBQUNxQixXQUFXLGFBQWEsRUFBRTtJQUM5RDtJQUVBLHdEQUF3RDtJQUN4RCxNQUFNSSxRQUFRekIsMkNBQWMsQ0FBQ2lCLFNBQVNVLE1BQU0sQ0FBQ0MsQ0FBQUEsSUFBSyxDQUFDQSxFQUFFQyxVQUFVLENBQUMsUUFBUSxDQUFDRCxFQUFFQyxVQUFVLENBQUM7SUFFdEYsTUFBTUMsVUFBVSxJQUFJQyxJQUFJTixNQUFNRSxNQUFNLENBQUNDLENBQUFBLElBQUtBLEVBQUVJLFFBQVEsQ0FBQyxVQUFVSixNQUFNLFlBQVlLLEdBQUcsQ0FBQ0wsQ0FBQUEsSUFBS0EsRUFBRU0sT0FBTyxDQUFDLFNBQVM7SUFDN0csTUFBTUMsT0FBTyxJQUFJSixJQUNmTixNQUFNRSxNQUFNLENBQUNDLENBQUFBO1FBQ1gsSUFBSTtZQUNGLE9BQU81Qix3Q0FBVyxDQUFDQyxzQ0FBUyxDQUFDZ0IsU0FBU1csSUFBSVMsV0FBVztRQUN2RCxFQUFFLE9BQU07WUFDTixPQUFPO1FBQ1Q7SUFDRjtJQUdGLDhEQUE4RDtJQUM5RCxNQUFNQyxXQUFXLElBQUlQLElBQUk7V0FBSUQ7V0FBWUs7S0FBSztJQUM5QyxNQUFNSSxVQUFVbkIsTUFBTU8sTUFBTSxDQUFDYSxDQUFBQSxPQUFRRixTQUFTRyxHQUFHLENBQUNEO0lBQ2xELE1BQU1FLFlBQVk7V0FBSUo7S0FBUyxDQUFDWCxNQUFNLENBQUNhLENBQUFBLE9BQVEsQ0FBQ0QsUUFBUUksUUFBUSxDQUFDSDtJQUNqRSxNQUFNSSxhQUFhO1dBQUlMO1dBQVlHO0tBQVU7SUFFN0MsTUFBTUcsVUFBVSxFQUFFO0lBQ2xCLEtBQUssTUFBTUwsUUFBUUksV0FBWTtRQUM3QixNQUFNRSxRQUFRWCxLQUFLTSxHQUFHLENBQUNEO1FBQ3ZCLE1BQU1PLE9BQU9qQixRQUFRVyxHQUFHLENBQUNEO1FBRXpCLElBQUlNLE9BQU87WUFDVCxNQUFNRSxXQUFXaEMsUUFBUWYsc0NBQVMsQ0FBQ2dCLFNBQVN1QixPQUFPdEI7WUFFbkQscUVBQXFFO1lBQ3JFLElBQUlzQixTQUFTLGdCQUFnQjtnQkFDM0JLLFFBQVFJLElBQUksSUFBSUQ7Z0JBQ2hCO1lBQ0Y7WUFFQSxvQ0FBb0M7WUFDcEMsdUVBQXVFO1lBQ3ZFLHFFQUFxRTtZQUNyRSxnQ0FBZ0M7WUFDaEMsRUFBRTtZQUNGLDhCQUE4QjtZQUM5QixrREFBa0Q7WUFDbEQsaUVBQWlFO1lBQ2pFLHdFQUF3RTtZQUN4RSwyREFBMkQ7WUFDM0QsTUFBTUUsWUFBWWpELHNDQUFTLENBQUNnQixTQUFTdUIsTUFBTTtZQUMzQyxNQUFNVyxnQkFBZ0JsRCxzQ0FBUyxDQUFDZ0IsU0FBUyxHQUFHdUIsS0FBSyxHQUFHLENBQUM7WUFDckQsTUFBTVksaUJBQWlCcEQsMENBQWEsQ0FBQ2tELGFBQ2pDQSxZQUNBbEQsMENBQWEsQ0FBQ21ELGlCQUFpQkEsZ0JBQWdCO1lBRW5ELElBQUlFLFFBQVFiO1lBQ1osSUFBSWMsT0FBTztZQUNYLElBQUlDLFNBQVM7WUFDYixJQUFJQyxPQUFPO1lBQ1gsSUFBSUosZ0JBQWdCO2dCQUNsQixNQUFNLEVBQUVLLElBQUksRUFBRSxHQUFHdkQsd0NBQU1BLENBQUNGLDRDQUFlLENBQUNvRCxnQkFBZ0I7Z0JBQ3hEQyxRQUFRSSxLQUFLSixLQUFLLElBQUliO2dCQUN0QmMsT0FBTyxDQUFDLENBQUMsRUFBRXBDLFdBQVcsQ0FBQyxFQUFFd0MsbUJBQW1CbEIsT0FBTztnQkFDbkRlLFNBQVMsQ0FBQyxDQUFDRSxLQUFLRixNQUFNO2dCQUN0QkMsT0FBT0MsS0FBS0QsSUFBSSxJQUFJO1lBQ3RCO1lBRUFYLFFBQVFJLElBQUksQ0FBQztnQkFBRUk7Z0JBQU9DO2dCQUFNQztnQkFBUUM7Z0JBQU1SO1lBQVM7WUFDbkQsbUVBQW1FO1lBQ25FLGlFQUFpRTtZQUNqRWxCLFFBQVE2QixNQUFNLENBQUNuQjtRQUNqQixPQUFPLElBQUlPLE1BQU07WUFDZixNQUFNYSxXQUFXM0Qsc0NBQVMsQ0FBQ2dCLFNBQVMsR0FBR3VCLEtBQUssR0FBRyxDQUFDO1lBQ2hELE1BQU0sRUFBRWlCLElBQUksRUFBRSxHQUFHdkQsd0NBQU1BLENBQUNGLDRDQUFlLENBQUM0RCxVQUFVO1lBQ2xELE1BQU1DLFVBQVVKLEtBQUtLLElBQUksRUFBRXZEO1lBQzNCc0MsUUFBUUksSUFBSSxDQUFDO2dCQUNYSSxPQUFPSSxLQUFLSixLQUFLLElBQUliO2dCQUNyQmMsTUFBTU8sV0FBVyxDQUFDLENBQUMsRUFBRTNDLFdBQVcsQ0FBQyxFQUFFd0MsbUJBQW1CbEIsT0FBTztnQkFDN0R1QixVQUFVLENBQUMsQ0FBQ0Y7Z0JBQ1pOLFFBQVEsQ0FBQyxDQUFDRSxLQUFLRixNQUFNO2dCQUNyQkMsTUFBTUMsS0FBS0QsSUFBSSxJQUFJO2dCQUNuQlIsVUFBVSxFQUFFO1lBQ2Q7UUFDRjtJQUNGO0lBRUEsT0FBT0g7QUFDVDtBQUVPLFNBQVNtQjtJQUNkLE1BQU1DLFdBQVcsRUFBRTtJQUNuQixLQUFLLE1BQU0sRUFBRW5ELEdBQUcsRUFBRUMsS0FBSyxFQUFFLElBQUlGLFNBQVU7UUFDckMsTUFBTXFELFdBQVdqRSxzQ0FBUyxDQUFDUyxXQUFXSTtRQUN0QyxJQUFJLENBQUNkLDBDQUFhLENBQUNrRSxXQUFXO1FBRTlCLE1BQU1sQixXQUFXaEMsUUFBUWtELFVBQVVwRDtRQUNuQyxJQUFJa0MsU0FBU21CLE1BQU0sR0FBRyxHQUFHO1lBQ3ZCRixTQUFTaEIsSUFBSSxDQUFDO2dCQUFFSSxPQUFPdEM7Z0JBQU9EO2dCQUFLc0QsV0FBV0MsY0FBY3JCO2dCQUFXQTtZQUFTO1FBQ2xGO0lBQ0Y7SUFDQSxPQUFPaUI7QUFDVDtBQUVBLFNBQVNLLGlCQUFpQkMsUUFBUTtJQUNoQyxNQUFNQyxZQUFZdkUsc0NBQVMsQ0FBQ3NFLFVBQVU7SUFDdEMsSUFBSSxDQUFDdkUsMENBQWEsQ0FBQ3dFLFlBQVksT0FBTztRQUFFQyxTQUFTLENBQUM7UUFBR0MsU0FBUyxDQUFDO0lBQUU7SUFFakUsTUFBTUMsUUFBUTNFLDJDQUFjLENBQUN3RSxXQUFXN0MsTUFBTSxDQUFDQyxDQUFBQSxJQUFLQSxFQUFFSSxRQUFRLENBQUMsVUFBVUosRUFBRUksUUFBUSxDQUFDO0lBQ3BGLE1BQU15QyxVQUFVLENBQUM7SUFDakIsTUFBTUMsVUFBVSxDQUFDO0lBRWpCLEtBQUssTUFBTUUsUUFBUUQsTUFBTztRQUN4QixNQUFNRSxNQUFNN0UsNENBQWUsQ0FBQ0Msc0NBQVMsQ0FBQ3VFLFdBQVdJLE9BQU87UUFDeEQsTUFBTSxFQUFFbkIsSUFBSSxFQUFFcUIsT0FBTyxFQUFFLEdBQUc1RSx3Q0FBTUEsQ0FBQzJFO1FBQ2pDLE1BQU1yQyxPQUFPaUIsS0FBS2pCLElBQUksSUFBSXZDLDBDQUFhLENBQUMyRSxNQUFNM0UseUNBQVksQ0FBQzJFO1FBQzNESCxPQUFPLENBQUNqQyxLQUFLLEdBQUdzQztRQUNoQkosT0FBTyxDQUFDbEMsS0FBSyxHQUFHcEMscURBQUdBLENBQUNELHlEQUFPQSxDQUFDMkU7SUFDOUI7SUFFQSxPQUFPO1FBQUVMO1FBQVNDO0lBQVE7QUFDNUI7QUFFQSx5RUFBeUU7QUFDekUsU0FBU08sU0FBU2hFLE9BQU8sRUFBRWlFLElBQUk7SUFDN0IsSUFBSSxDQUFDbEYsMENBQWEsQ0FBQ2lCLFVBQVUsT0FBTztJQUVwQywrQ0FBK0M7SUFDL0MsTUFBTWtFLFNBQVNsRixzQ0FBUyxDQUFDZ0IsU0FBUyxHQUFHaUUsS0FBSyxHQUFHLENBQUM7SUFDOUMsSUFBSWxGLDBDQUFhLENBQUNtRixTQUFTLE9BQU9BO0lBRWxDLDBCQUEwQjtJQUMxQixNQUFNQyxRQUFRbkYsc0NBQVMsQ0FBQ2dCLFNBQVNpRSxNQUFNO0lBQ3ZDLElBQUlsRiwwQ0FBYSxDQUFDb0YsUUFBUSxPQUFPQTtJQUVqQyx3QkFBd0I7SUFDeEIsTUFBTXZDLFVBQVU3QywyQ0FBYyxDQUFDaUIsU0FBU1UsTUFBTSxDQUFDQyxDQUFBQSxJQUFLLENBQUNBLEVBQUVDLFVBQVUsQ0FBQyxRQUFRLENBQUNELEVBQUVDLFVBQVUsQ0FBQztJQUN4RixLQUFLLE1BQU13RCxTQUFTeEMsUUFBUztRQUMzQixNQUFNeUMsT0FBT3JGLHNDQUFTLENBQUNnQixTQUFTb0U7UUFDaEMsSUFBSTtZQUNGLElBQUlyRix3Q0FBVyxDQUFDc0YsTUFBTWpELFdBQVcsSUFBSTtnQkFDbkMsTUFBTWtELFFBQVFOLFNBQVNLLE1BQU1KO2dCQUM3QixJQUFJSyxPQUFPLE9BQU9BO1lBQ3BCO1FBQ0YsRUFBRSxPQUFNO1FBQ04sT0FBTztRQUNUO0lBQ0Y7SUFFQSxPQUFPO0FBQ1Q7QUFFTyxTQUFTQyxRQUFRQyxTQUFTO0lBQy9CLHFFQUFxRTtJQUNyRSxNQUFNLENBQUNDLFNBQVMsR0FBR0MsS0FBSyxHQUFHRixVQUFVeEQsR0FBRyxDQUFDMkQsQ0FBQUEsSUFBS0MsbUJBQW1CRDtJQUNqRSxNQUFNVixPQUFPUyxLQUFLckUsSUFBSSxDQUFDO0lBQ3ZCLElBQUksQ0FBQ29FLFdBQVcsQ0FBQ1IsTUFBTSxPQUFPO0lBRTlCLE1BQU1ZLGNBQWM3RixzQ0FBUyxDQUFDUyxXQUFXZ0Y7SUFDekMsTUFBTTlCLFdBQVdxQixTQUFTYSxhQUFhWjtJQUV2QyxJQUFJLENBQUN0QixVQUFVLE9BQU87SUFFdEIsTUFBTWlCLE1BQU03RSw0Q0FBZSxDQUFDNEQsVUFBVTtJQUN0QyxNQUFNLEVBQUVILElBQUksRUFBRXFCLE9BQU8sRUFBRSxHQUFHNUUsd0NBQU1BLENBQUMyRTtJQUVqQyxJQUFJa0I7SUFFSix5RUFBeUU7SUFDekUsc0VBQXNFO0lBQ3RFLDBFQUEwRTtJQUMxRSx1RUFBdUU7SUFDdkUsa0VBQWtFO0lBQ2xFLElBQUl0QyxLQUFLdUMsR0FBRyxFQUFFcEIsUUFBUW5CLEtBQUt1QyxHQUFHLEVBQUVDLGVBQWUsQ0FBQ25CLFFBQVFvQixJQUFJLElBQUk7UUFDOURILE9BQU9JLDBCQUEwQjFDLEtBQUt1QyxHQUFHLENBQUNwQixJQUFJLEVBQUVuQixLQUFLdUMsR0FBRyxDQUFDQyxXQUFXO0lBQ3RFLE9BQU87UUFDTCxJQUFJO1lBQ0YsTUFBTSxFQUFFeEIsT0FBTyxFQUFFQyxPQUFPLEVBQUUsR0FBR0osaUJBQWlCNUQ7WUFDOUMsTUFBTTBGLFdBQVdqRyx5REFBT0EsQ0FBQzJFLFNBQVM7Z0JBQUV1QixZQUFZNUI7WUFBUTtZQUN4RCxNQUFNNkIsTUFBTWxHLHFEQUFHQSxDQUFDZ0csVUFBVTtnQkFBRUMsWUFBWTNCO1lBQVE7WUFFaEQsNkVBQTZFO1lBQzdFLE1BQU02QixZQUFZQyxRQUFRQyxLQUFLO1lBQy9CRCxRQUFRQyxLQUFLLEdBQUcsQ0FBQyxHQUFHQztnQkFDbEIsSUFBSSxPQUFPQSxJQUFJLENBQUMsRUFBRSxLQUFLLFlBQVlBLElBQUksQ0FBQyxFQUFFLENBQUMvRCxRQUFRLENBQUMseUJBQXlCO2dCQUM3RTRELFVBQVVJLEtBQUssQ0FBQ0gsU0FBU0U7WUFDM0I7WUFDQVgsT0FBT3RGLHFCQUFxQkQsTUFBTW9HLGFBQWEsQ0FBQ04sSUFBSU8sT0FBTztZQUMzREwsUUFBUUMsS0FBSyxHQUFHRjtRQUNsQixFQUFFLE9BQU07WUFDTlIsT0FBTyxDQUFDLDREQUE0RCxFQUFFakIsUUFBUTVDLE9BQU8sQ0FBQyxNQUFNLFFBQVEsTUFBTSxDQUFDO1FBQzdHO0lBQ0Y7SUFFQSxPQUFPO1FBQ0xtQixPQUFPSSxLQUFLSixLQUFLLElBQUk2QjtRQUNyQjRCLFNBQVNyRCxLQUFLcUQsT0FBTyxJQUFJO1FBQ3pCZjtJQUNGO0FBQ0Y7QUFFQTs7Ozs7Q0FLQyxHQUNELFNBQVNJLDBCQUEwQlksUUFBUSxFQUFFZCxXQUFXO0lBQ3RELE1BQU1lLFdBQVcvRyxzQ0FBUyxDQUFDUyxXQUFXLGFBQWFxRztJQUNuRCxJQUFJLENBQUMvRywwQ0FBYSxDQUFDZ0gsV0FBVztRQUM1QixPQUFPLENBQUMsMkNBQTJDLEVBQUVELFNBQVMsZ0JBQWdCLENBQUM7SUFDakY7SUFFQSxJQUFJRTtJQUNKLElBQUk7UUFDRixNQUFNQyxVQUFVbEgsNENBQWUsQ0FBQ2dILFVBQVU7UUFDMUNDLE9BQU9GLFNBQVNJLFdBQVcsR0FBR25GLFFBQVEsQ0FBQyxXQUFXb0YsS0FBS0MsS0FBSyxDQUFDSCxXQUFXN0cseUNBQVMsQ0FBQzZHO0lBQ3BGLEVBQUUsT0FBT0ksR0FBRztRQUNWLE9BQU8sQ0FBQyxzQ0FBc0MsRUFBRVAsU0FBUyxTQUFTLEVBQUVRLFdBQVdELEVBQUVFLE9BQU8sRUFBRSxTQUFTLENBQUM7SUFDdEc7SUFFQSxJQUFJakMsUUFBUTtJQUNaLEtBQUssTUFBTSxDQUFDa0MsU0FBU0MsU0FBUyxJQUFJQyxPQUFPOUUsT0FBTyxDQUFDb0UsS0FBS1csS0FBSyxJQUFJLENBQUMsR0FBSTtRQUNsRSxLQUFLLE1BQU0sQ0FBQ0MsUUFBUUMsR0FBRyxJQUFJSCxPQUFPOUUsT0FBTyxDQUFDNkUsWUFBWSxDQUFDLEdBQUk7WUFDekQsSUFBSUksTUFBTSxPQUFPQSxPQUFPLFlBQVlBLEdBQUc3QixXQUFXLEtBQUtBLGFBQWE7Z0JBQ2xFVixRQUFRO29CQUFFc0MsUUFBUUEsT0FBT0UsV0FBVztvQkFBSTlILE1BQU13SDtvQkFBU0s7Z0JBQUc7WUFDNUQ7UUFDRjtJQUNGO0lBQ0EsSUFBSSxDQUFDdkMsT0FBTztRQUNWLE9BQU8sQ0FBQyx1QkFBdUIsRUFBRWdDLFdBQVd0QixhQUFhLDJCQUEyQixFQUFFc0IsV0FBV1IsVUFBVSxpQkFBaUIsQ0FBQztJQUMvSDtJQUVBLE1BQU0sRUFBRWMsTUFBTSxFQUFFNUgsTUFBTStILE1BQU0sRUFBRUYsRUFBRSxFQUFFLEdBQUd2QztJQUNyQyxNQUFNMEMsY0FBYztRQUNsQkMsS0FBSztRQUFXQyxNQUFNO1FBQVdDLEtBQUs7UUFBV0MsT0FBTztRQUFXQyxRQUFRO0lBQzdFLENBQUMsQ0FBQ1QsT0FBTyxJQUFJO0lBRWIsTUFBTVUsUUFBUSxFQUFFO0lBQ2hCQSxNQUFNdEYsSUFBSSxDQUNSLENBQUMsbUZBQW1GLENBQUMsR0FDckYsQ0FBQyx5QkFBeUIsRUFBRWdGLFlBQVksZ0lBQWdJLEVBQUVKLE9BQU8sT0FBTyxDQUFDLEdBQ3pMLENBQUMsK0JBQStCLEVBQUVOLFdBQVdTLFFBQVEsT0FBTyxDQUFDLEdBQzdELENBQUMsTUFBTSxDQUFDO0lBRVYsSUFBSUYsR0FBR1UsV0FBVyxFQUFFRCxNQUFNdEYsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFc0UsV0FBV08sR0FBR1UsV0FBVyxFQUFFLElBQUksQ0FBQztJQUVyRSxJQUFJQyxNQUFNQyxPQUFPLENBQUNaLEdBQUdhLFVBQVUsS0FBS2IsR0FBR2EsVUFBVSxDQUFDeEUsTUFBTSxHQUFHLEdBQUc7UUFDNURvRSxNQUFNdEYsSUFBSSxDQUFDLENBQUMsbUJBQW1CLENBQUM7UUFDaENzRixNQUFNdEYsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ2pCLEtBQUssTUFBTTJGLEtBQUtkLEdBQUdhLFVBQVUsQ0FBRTtZQUM3QixNQUFNbkcsT0FBT29HLEVBQUVwRyxJQUFJLElBQUk7WUFDdkIsTUFBTXFHLFFBQVFELEVBQUVFLEVBQUUsR0FBRyxDQUFDLGdDQUFnQyxFQUFFRixFQUFFRSxFQUFFLENBQUMsUUFBUSxDQUFDLEdBQUc7WUFDekUsTUFBTUMsV0FBV0gsRUFBRUcsUUFBUSxHQUFHLCtCQUErQjtZQUM3RCxNQUFNQyxPQUFPSixFQUFFSixXQUFXLEdBQUcsQ0FBQyxHQUFHLEVBQUVqQixXQUFXcUIsRUFBRUosV0FBVyxHQUFHLEdBQUc7WUFDakVELE1BQU10RixJQUFJLENBQUMsQ0FBQyxVQUFVLEVBQUVzRSxXQUFXL0UsTUFBTSxPQUFPLEVBQUVxRyxRQUFRRSxXQUFXQyxLQUFLLEtBQUssQ0FBQztRQUNsRjtRQUNBVCxNQUFNdEYsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ3BCO0lBRUEsSUFBSTZFLEdBQUdtQixTQUFTLElBQUksT0FBT25CLEdBQUdtQixTQUFTLEtBQUssVUFBVTtRQUNwRFYsTUFBTXRGLElBQUksQ0FBQyxDQUFDLGtCQUFrQixDQUFDO1FBQy9Cc0YsTUFBTXRGLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQztRQUNqQixLQUFLLE1BQU0sQ0FBQ2lHLFFBQVFDLEtBQUssSUFBSXhCLE9BQU85RSxPQUFPLENBQUNpRixHQUFHbUIsU0FBUyxFQUFHO1lBQ3pELE1BQU1ELE9BQU9HLE1BQU1YLGNBQWMsQ0FBQyxHQUFHLEVBQUVqQixXQUFXNEIsS0FBS1gsV0FBVyxHQUFHLEdBQUc7WUFDeEVELE1BQU10RixJQUFJLENBQUMsQ0FBQyxVQUFVLEVBQUVzRSxXQUFXMkIsUUFBUSxPQUFPLEVBQUVGLEtBQUssS0FBSyxDQUFDO1FBQ2pFO1FBQ0FULE1BQU10RixJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDcEI7SUFFQXNGLE1BQU10RixJQUFJLENBQ1IsQ0FBQyxzRUFBc0UsQ0FBQyxFQUN4RSxDQUFDLHFOQUFxTixDQUFDO0lBR3pOLE9BQU9zRixNQUFNakgsSUFBSSxDQUFDO0FBQ3BCO0FBRUEsU0FBU2lHLFdBQVczQixDQUFDO0lBQ25CLE9BQU93RCxPQUFPeEQsR0FBRzFELE9BQU8sQ0FBQyxZQUFZLENBQUNtSCxJQUFPO1lBQUUsS0FBSztZQUFTLEtBQUs7WUFBUSxLQUFLO1lBQVEsS0FBSztZQUFVLEtBQUs7UUFBUSxFQUFDLENBQUNBLEVBQUU7QUFDekg7QUFFQSxTQUFTaEYsY0FBYzVDLEtBQUs7SUFDMUIsS0FBSyxNQUFNNkgsUUFBUTdILE1BQU87UUFDeEIsSUFBSTZILEtBQUtoRyxJQUFJLEVBQUUsT0FBT2dHLEtBQUtoRyxJQUFJO1FBQy9CLElBQUlnRyxLQUFLdEcsUUFBUSxFQUFFbUIsUUFBUTtZQUN6QixNQUFNb0IsUUFBUWxCLGNBQWNpRixLQUFLdEcsUUFBUTtZQUN6QyxJQUFJdUMsT0FBTyxPQUFPQTtRQUNwQjtJQUNGO0lBQ0EsT0FBTztBQUNUO0FBRU8sU0FBU2dFO0lBQ2QsTUFBTUMsVUFBVXhGO0lBQ2hCLE9BQU9LLGNBQWNtRjtBQUN2QiIsInNvdXJjZXMiOlsiL1VzZXJzL2drb2Jlcmdlci9TaXRlcy9yZWFkbWUvMjAyNi1yZWFkbWUtY2xpL3NyYy9kZXYvbGliL2RvY3MuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlUmVxdWlyZSB9IGZyb20gJ25vZGU6bW9kdWxlJztcbmltcG9ydCBmcyBmcm9tICdmcyc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCBtYXR0ZXIgZnJvbSAnZ3JheS1tYXR0ZXInO1xuaW1wb3J0IHsgY29tcGlsZSwgcnVuIH0gZnJvbSAnQHJlYWRtZS9tYXJrZG93bic7XG5pbXBvcnQgeWFtbCBmcm9tICdqcy15YW1sJztcblxuLy8gVXNlIGNyZWF0ZVJlcXVpcmUgdG8gbG9hZCByZWFjdC1kb20vc2VydmVyIGF0IHJ1bnRpbWUsXG4vLyBieXBhc3NpbmcgTmV4dC5qcyBBcHAgUm91dGVyJ3Mgc3RhdGljIGltcG9ydCByZXN0cmljdGlvbi5cbmNvbnN0IF9yZXF1aXJlID0gY3JlYXRlUmVxdWlyZShpbXBvcnQubWV0YS51cmwpO1xuY29uc3QgUmVhY3QgPSBfcmVxdWlyZSgncmVhY3QnKTtcbmNvbnN0IHsgcmVuZGVyVG9TdGF0aWNNYXJrdXAgfSA9IF9yZXF1aXJlKCdyZWFjdC1kb20vc2VydmVyJyk7XG5cbmNvbnN0IERPQ1NfUk9PVCA9IHByb2Nlc3MuZW52LkRPQ1NfUk9PVDtcblxuY29uc3QgU0VDVElPTlMgPSBbXG4gIHsgZGlyOiAnZG9jcycsIGxhYmVsOiAnRG9jcycgfSxcbiAgeyBkaXI6ICdyZWZlcmVuY2UnLCBsYWJlbDogJ1JlZmVyZW5jZScgfSxcbiAgeyBkaXI6ICdjdXN0b21fcGFnZXMnLCBsYWJlbDogJ0N1c3RvbSBQYWdlcycgfSxcbiAgeyBkaXI6ICdyZWNpcGVzJywgbGFiZWw6ICdSZWNpcGVzJyB9LFxuXTtcblxuZnVuY3Rpb24gd2Fsa0RpcihkaXJQYXRoLCBzZWN0aW9uRGlyKSB7XG4gIGlmICghZnMuZXhpc3RzU3luYyhkaXJQYXRoKSkgcmV0dXJuIFtdO1xuXG4gIC8vIFJlYWQgX29yZGVyLnlhbWwgZm9yIG9yZGVyaW5nXG4gIGxldCBvcmRlciA9IFtdO1xuICBjb25zdCBvcmRlclBhdGggPSBwYXRoLmpvaW4oZGlyUGF0aCwgJ19vcmRlci55YW1sJyk7XG4gIGlmIChmcy5leGlzdHNTeW5jKG9yZGVyUGF0aCkpIHtcbiAgICBvcmRlciA9IHlhbWwubG9hZChmcy5yZWFkRmlsZVN5bmMob3JkZXJQYXRoLCAndXRmLTgnKSkgfHwgW107XG4gIH1cblxuICAvLyBHZXQgYWxsIGl0ZW1zIChleGNsdWRlIGRvdGZpbGVzIGFuZCBfLXByZWZpeGVkIGZpbGVzKVxuICBjb25zdCBpdGVtcyA9IGZzLnJlYWRkaXJTeW5jKGRpclBhdGgpLmZpbHRlcihmID0+ICFmLnN0YXJ0c1dpdGgoJy4nKSAmJiAhZi5zdGFydHNXaXRoKCdfJykpO1xuXG4gIGNvbnN0IG1kRmlsZXMgPSBuZXcgU2V0KGl0ZW1zLmZpbHRlcihmID0+IGYuZW5kc1dpdGgoJy5tZCcpICYmIGYgIT09ICdpbmRleC5tZCcpLm1hcChmID0+IGYucmVwbGFjZSgvXFwubWQkLywgJycpKSk7XG4gIGNvbnN0IGRpcnMgPSBuZXcgU2V0KFxuICAgIGl0ZW1zLmZpbHRlcihmID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBmcy5zdGF0U3luYyhwYXRoLmpvaW4oZGlyUGF0aCwgZikpLmlzRGlyZWN0b3J5KCk7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH0pLFxuICApO1xuXG4gIC8vIEJ1aWxkIG9yZGVyZWQgbGlzdDogb3JkZXJlZCBpdGVtcyBmaXJzdCwgdGhlbiBhbnkgcmVtYWluaW5nXG4gIGNvbnN0IGFsbE5hbWVzID0gbmV3IFNldChbLi4ubWRGaWxlcywgLi4uZGlyc10pO1xuICBjb25zdCBvcmRlcmVkID0gb3JkZXIuZmlsdGVyKG5hbWUgPT4gYWxsTmFtZXMuaGFzKG5hbWUpKTtcbiAgY29uc3QgcmVtYWluaW5nID0gWy4uLmFsbE5hbWVzXS5maWx0ZXIobmFtZSA9PiAhb3JkZXJlZC5pbmNsdWRlcyhuYW1lKSk7XG4gIGNvbnN0IGZpbmFsT3JkZXIgPSBbLi4ub3JkZXJlZCwgLi4ucmVtYWluaW5nXTtcblxuICBjb25zdCBlbnRyaWVzID0gW107XG4gIGZvciAoY29uc3QgbmFtZSBvZiBmaW5hbE9yZGVyKSB7XG4gICAgY29uc3QgaXNEaXIgPSBkaXJzLmhhcyhuYW1lKTtcbiAgICBjb25zdCBpc01kID0gbWRGaWxlcy5oYXMobmFtZSk7XG5cbiAgICBpZiAoaXNEaXIpIHtcbiAgICAgIGNvbnN0IGNoaWxkcmVuID0gd2Fsa0RpcihwYXRoLmpvaW4oZGlyUGF0aCwgbmFtZSksIHNlY3Rpb25EaXIpO1xuXG4gICAgICAvLyBSZWFkTWVDb25maWcgcGFnZXMgYXJlIGludGVybmFsIOKAlCBzaG93IHRoZW0gd2l0aG91dCBhIGdyb3VwIGhlYWRlclxuICAgICAgaWYgKG5hbWUgPT09ICdSZWFkTWVDb25maWcnKSB7XG4gICAgICAgIGVudHJpZXMucHVzaCguLi5jaGlsZHJlbik7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICAvLyBBIGRpcmVjdG9yeSBjYW4gcmVwcmVzZW50IGVpdGhlcjpcbiAgICAgIC8vICAgMS4gQSBwdXJlIGNhdGVnb3J5IChubyBjb250ZW50IG9mIGl0cyBvd24pIOKGkiByZW5kZXIgYXMgZ3JvdXAgbGFiZWxcbiAgICAgIC8vICAgMi4gQSBwYXJlbnQgcGFnZSB3aXRoIGNoaWxkcmVuIOKGkiByZW5kZXIgYXMgYSBjbGlja2FibGUgcGFnZSB3aXRoXG4gICAgICAvLyAgICAgIGEgbmVzdGVkIGxpc3QgdW5kZXJuZWF0aFxuICAgICAgLy9cbiAgICAgIC8vIFR3byBmaWxlIGxheW91dHMgc2lnbmFsICMyOlxuICAgICAgLy8gICBhLiBgPG5hbWU+L2luZGV4Lm1kYCDigJQgdGhlIFwiaW5kZXhcIiBjb252ZW50aW9uXG4gICAgICAvLyAgIGIuIGA8cGFyZW50Pi88bmFtZT4ubWRgIHJpZ2h0IGFsb25nc2lkZSB0aGUgYDxuYW1lPi9gIGZvbGRlclxuICAgICAgLy8gICAgICAoc2libGluZyBjb252ZW50aW9uKSDigJQgdGhlIGltcG9ydGVyIHdyaXRlcyBwYXJlbnQgcGFnZXMgdGhpcyB3YXlcbiAgICAgIC8vIElmIGVpdGhlciBleGlzdHMsIHRyZWF0IHRoaXMgYXMgYSBjbGlja2FibGUgcGFyZW50IHBhZ2UuXG4gICAgICBjb25zdCBpbmRleFBhdGggPSBwYXRoLmpvaW4oZGlyUGF0aCwgbmFtZSwgJ2luZGV4Lm1kJyk7XG4gICAgICBjb25zdCBzaWJsaW5nTWRQYXRoID0gcGF0aC5qb2luKGRpclBhdGgsIGAke25hbWV9Lm1kYCk7XG4gICAgICBjb25zdCBwYXJlbnRQYWdlUGF0aCA9IGZzLmV4aXN0c1N5bmMoaW5kZXhQYXRoKVxuICAgICAgICA/IGluZGV4UGF0aFxuICAgICAgICA6IGZzLmV4aXN0c1N5bmMoc2libGluZ01kUGF0aCkgPyBzaWJsaW5nTWRQYXRoIDogbnVsbDtcblxuICAgICAgbGV0IHRpdGxlID0gbmFtZTtcbiAgICAgIGxldCBocmVmID0gbnVsbDtcbiAgICAgIGxldCBoaWRkZW4gPSBmYWxzZTtcbiAgICAgIGxldCBpY29uID0gbnVsbDtcbiAgICAgIGlmIChwYXJlbnRQYWdlUGF0aCkge1xuICAgICAgICBjb25zdCB7IGRhdGEgfSA9IG1hdHRlcihmcy5yZWFkRmlsZVN5bmMocGFyZW50UGFnZVBhdGgsICd1dGYtOCcpKTtcbiAgICAgICAgdGl0bGUgPSBkYXRhLnRpdGxlIHx8IG5hbWU7XG4gICAgICAgIGhyZWYgPSBgLyR7c2VjdGlvbkRpcn0vJHtlbmNvZGVVUklDb21wb25lbnQobmFtZSl9YDtcbiAgICAgICAgaGlkZGVuID0gISFkYXRhLmhpZGRlbjtcbiAgICAgICAgaWNvbiA9IGRhdGEuaWNvbiB8fCBudWxsO1xuICAgICAgfVxuXG4gICAgICBlbnRyaWVzLnB1c2goeyB0aXRsZSwgaHJlZiwgaGlkZGVuLCBpY29uLCBjaGlsZHJlbiB9KTtcbiAgICAgIC8vIElmIGEgc2libGluZyAubWQgaXMgcHJvdmlkaW5nIHRoZSBwYXJlbnQgY29udGVudCwgcmVtb3ZlIGl0IGZyb21cbiAgICAgIC8vIG1kRmlsZXMgc28gd2UgZG9uJ3QgYWxzbyByZW5kZXIgaXQgYXMgYSBzdGFuZGFsb25lIHBhZ2UgYmVsb3cuXG4gICAgICBtZEZpbGVzLmRlbGV0ZShuYW1lKTtcbiAgICB9IGVsc2UgaWYgKGlzTWQpIHtcbiAgICAgIGNvbnN0IGZpbGVQYXRoID0gcGF0aC5qb2luKGRpclBhdGgsIGAke25hbWV9Lm1kYCk7XG4gICAgICBjb25zdCB7IGRhdGEgfSA9IG1hdHRlcihmcy5yZWFkRmlsZVN5bmMoZmlsZVBhdGgsICd1dGYtOCcpKTtcbiAgICAgIGNvbnN0IGxpbmtVcmwgPSBkYXRhLmxpbms/LnVybDtcbiAgICAgIGVudHJpZXMucHVzaCh7XG4gICAgICAgIHRpdGxlOiBkYXRhLnRpdGxlIHx8IG5hbWUsXG4gICAgICAgIGhyZWY6IGxpbmtVcmwgfHwgYC8ke3NlY3Rpb25EaXJ9LyR7ZW5jb2RlVVJJQ29tcG9uZW50KG5hbWUpfWAsXG4gICAgICAgIGV4dGVybmFsOiAhIWxpbmtVcmwsXG4gICAgICAgIGhpZGRlbjogISFkYXRhLmhpZGRlbixcbiAgICAgICAgaWNvbjogZGF0YS5pY29uIHx8IG51bGwsXG4gICAgICAgIGNoaWxkcmVuOiBbXSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBlbnRyaWVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29sbGVjdFNpZGViYXIoKSB7XG4gIGNvbnN0IHNlY3Rpb25zID0gW107XG4gIGZvciAoY29uc3QgeyBkaXIsIGxhYmVsIH0gb2YgU0VDVElPTlMpIHtcbiAgICBjb25zdCBmdWxsUGF0aCA9IHBhdGguam9pbihET0NTX1JPT1QsIGRpcik7XG4gICAgaWYgKCFmcy5leGlzdHNTeW5jKGZ1bGxQYXRoKSkgY29udGludWU7XG5cbiAgICBjb25zdCBjaGlsZHJlbiA9IHdhbGtEaXIoZnVsbFBhdGgsIGRpcik7XG4gICAgaWYgKGNoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICAgIHNlY3Rpb25zLnB1c2goeyB0aXRsZTogbGFiZWwsIGRpciwgZmlyc3RIcmVmOiBmaW5kRmlyc3RIcmVmKGNoaWxkcmVuKSwgY2hpbGRyZW4gfSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBzZWN0aW9ucztcbn1cblxuZnVuY3Rpb24gbG9hZEN1c3RvbUJsb2Nrcyhkb2NzUm9vdCkge1xuICBjb25zdCBibG9ja3NEaXIgPSBwYXRoLmpvaW4oZG9jc1Jvb3QsICdjdXN0b21fYmxvY2tzJyk7XG4gIGlmICghZnMuZXhpc3RzU3luYyhibG9ja3NEaXIpKSByZXR1cm4geyBzb3VyY2VzOiB7fSwgbW9kdWxlczoge30gfTtcblxuICBjb25zdCBmaWxlcyA9IGZzLnJlYWRkaXJTeW5jKGJsb2Nrc0RpcikuZmlsdGVyKGYgPT4gZi5lbmRzV2l0aCgnLm1kJykgfHwgZi5lbmRzV2l0aCgnLm1keCcpKTtcbiAgY29uc3Qgc291cmNlcyA9IHt9O1xuICBjb25zdCBtb2R1bGVzID0ge307XG5cbiAgZm9yIChjb25zdCBmaWxlIG9mIGZpbGVzKSB7XG4gICAgY29uc3QgcmF3ID0gZnMucmVhZEZpbGVTeW5jKHBhdGguam9pbihibG9ja3NEaXIsIGZpbGUpLCAndXRmLTgnKTtcbiAgICBjb25zdCB7IGRhdGEsIGNvbnRlbnQgfSA9IG1hdHRlcihyYXcpO1xuICAgIGNvbnN0IG5hbWUgPSBkYXRhLm5hbWUgfHwgcGF0aC5iYXNlbmFtZShmaWxlLCBwYXRoLmV4dG5hbWUoZmlsZSkpO1xuICAgIHNvdXJjZXNbbmFtZV0gPSBjb250ZW50O1xuICAgIG1vZHVsZXNbbmFtZV0gPSBydW4oY29tcGlsZShjb250ZW50KSk7XG4gIH1cblxuICByZXR1cm4geyBzb3VyY2VzLCBtb2R1bGVzIH07XG59XG5cbi8vIFJlY3Vyc2l2ZWx5IGZpbmQgYSAubWQgZmlsZSBtYXRjaGluZyB0aGUgZ2l2ZW4gc2x1ZyB3aXRoaW4gYSBkaXJlY3RvcnlcbmZ1bmN0aW9uIGZpbmRGaWxlKGRpclBhdGgsIHNsdWcpIHtcbiAgaWYgKCFmcy5leGlzdHNTeW5jKGRpclBhdGgpKSByZXR1cm4gbnVsbDtcblxuICAvLyBDaGVjayBmb3Igc2x1Zy5tZCBkaXJlY3RseSBpbiB0aGlzIGRpcmVjdG9yeVxuICBjb25zdCBkaXJlY3QgPSBwYXRoLmpvaW4oZGlyUGF0aCwgYCR7c2x1Z30ubWRgKTtcbiAgaWYgKGZzLmV4aXN0c1N5bmMoZGlyZWN0KSkgcmV0dXJuIGRpcmVjdDtcblxuICAvLyBDaGVjayBmb3Igc2x1Zy9pbmRleC5tZFxuICBjb25zdCBpbmRleCA9IHBhdGguam9pbihkaXJQYXRoLCBzbHVnLCAnaW5kZXgubWQnKTtcbiAgaWYgKGZzLmV4aXN0c1N5bmMoaW5kZXgpKSByZXR1cm4gaW5kZXg7XG5cbiAgLy8gU2VhcmNoIHN1YmRpcmVjdG9yaWVzXG4gIGNvbnN0IGVudHJpZXMgPSBmcy5yZWFkZGlyU3luYyhkaXJQYXRoKS5maWx0ZXIoZiA9PiAhZi5zdGFydHNXaXRoKCcuJykgJiYgIWYuc3RhcnRzV2l0aCgnXycpKTtcbiAgZm9yIChjb25zdCBlbnRyeSBvZiBlbnRyaWVzKSB7XG4gICAgY29uc3QgZnVsbCA9IHBhdGguam9pbihkaXJQYXRoLCBlbnRyeSk7XG4gICAgdHJ5IHtcbiAgICAgIGlmIChmcy5zdGF0U3luYyhmdWxsKS5pc0RpcmVjdG9yeSgpKSB7XG4gICAgICAgIGNvbnN0IGZvdW5kID0gZmluZEZpbGUoZnVsbCwgc2x1Zyk7XG4gICAgICAgIGlmIChmb3VuZCkgcmV0dXJuIGZvdW5kO1xuICAgICAgfVxuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gc2tpcFxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGFnZShzbHVnQXJyYXkpIHtcbiAgLy8gc2x1Z0FycmF5ID0gWydkb2NzJywgJ2dldHRpbmctc3RhcnRlZCddIG9yIFsncmVmZXJlbmNlJywgJ2dldFBldCddXG4gIGNvbnN0IFtzZWN0aW9uLCAuLi5yZXN0XSA9IHNsdWdBcnJheS5tYXAocyA9PiBkZWNvZGVVUklDb21wb25lbnQocykpO1xuICBjb25zdCBzbHVnID0gcmVzdC5qb2luKCcvJyk7XG4gIGlmICghc2VjdGlvbiB8fCAhc2x1ZykgcmV0dXJuIG51bGw7XG5cbiAgY29uc3Qgc2VjdGlvblBhdGggPSBwYXRoLmpvaW4oRE9DU19ST09ULCBzZWN0aW9uKTtcbiAgY29uc3QgZmlsZVBhdGggPSBmaW5kRmlsZShzZWN0aW9uUGF0aCwgc2x1Zyk7XG5cbiAgaWYgKCFmaWxlUGF0aCkgcmV0dXJuIG51bGw7XG5cbiAgY29uc3QgcmF3ID0gZnMucmVhZEZpbGVTeW5jKGZpbGVQYXRoLCAndXRmLTgnKTtcbiAgY29uc3QgeyBkYXRhLCBjb250ZW50IH0gPSBtYXR0ZXIocmF3KTtcblxuICBsZXQgaHRtbDtcblxuICAvLyBSZWZlcmVuY2UgcGFnZXMgc3R1YmJlZCBieSB0aGUgaW1wb3J0IGNvbW1hbmQgKG9yIGJ5IG9hczpzeW5jKSBoYXZlIGFuXG4gIC8vIGVtcHR5IGJvZHkg4oCUIHRoZSByZWFsIGVuZHBvaW50IFVJIGNvbWVzIGZyb20gdGhlIE9BUyBzcGVjIGF0IHJlbmRlclxuICAvLyB0aW1lLiBUaGUgcHJvZHVjdGlvbiBSZWFkTWUgcmVuZGVyZXIgaGFuZGxlcyB0aGlzOyBvdXIgbG9jYWwgZGV2IHNlcnZlclxuICAvLyB1c2VkIHRvIHNob3cgYSBibGFuayBwYWdlLiBJZiB3ZSBzZWUgYGFwaS5maWxlYCArIGBhcGkub3BlcmF0aW9uSWRgLFxuICAvLyByZW5kZXIgYSBtaW5pbWFsIHByZXZpZXcgZnJvbSB0aGUgc3BlYyBzbyB0aGUgcGFnZSBpc24ndCBlbXB0eS5cbiAgaWYgKGRhdGEuYXBpPy5maWxlICYmIGRhdGEuYXBpPy5vcGVyYXRpb25JZCAmJiAhY29udGVudC50cmltKCkpIHtcbiAgICBodG1sID0gcmVuZGVyT2FzT3BlcmF0aW9uUHJldmlldyhkYXRhLmFwaS5maWxlLCBkYXRhLmFwaS5vcGVyYXRpb25JZCk7XG4gIH0gZWxzZSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHsgc291cmNlcywgbW9kdWxlcyB9ID0gbG9hZEN1c3RvbUJsb2NrcyhET0NTX1JPT1QpO1xuICAgICAgY29uc3QgY29tcGlsZWQgPSBjb21waWxlKGNvbnRlbnQsIHsgY29tcG9uZW50czogc291cmNlcyB9KTtcbiAgICAgIGNvbnN0IG1vZCA9IHJ1bihjb21waWxlZCwgeyBjb21wb25lbnRzOiBtb2R1bGVzIH0pO1xuXG4gICAgICAvLyBTdXBwcmVzcyBSZWFjdCB3YXJuaW5ncyBhYm91dCBjbGFzcyB2cyBjbGFzc05hbWUgZnJvbSByYXcgSFRNTCBpbiBtYXJrZG93blxuICAgICAgY29uc3Qgb3JpZ0Vycm9yID0gY29uc29sZS5lcnJvcjtcbiAgICAgIGNvbnNvbGUuZXJyb3IgPSAoLi4uYXJncykgPT4ge1xuICAgICAgICBpZiAodHlwZW9mIGFyZ3NbMF0gPT09ICdzdHJpbmcnICYmIGFyZ3NbMF0uaW5jbHVkZXMoJ0ludmFsaWQgRE9NIHByb3BlcnR5JykpIHJldHVybjtcbiAgICAgICAgb3JpZ0Vycm9yLmFwcGx5KGNvbnNvbGUsIGFyZ3MpO1xuICAgICAgfTtcbiAgICAgIGh0bWwgPSByZW5kZXJUb1N0YXRpY01hcmt1cChSZWFjdC5jcmVhdGVFbGVtZW50KG1vZC5kZWZhdWx0KSk7XG4gICAgICBjb25zb2xlLmVycm9yID0gb3JpZ0Vycm9yO1xuICAgIH0gY2F0Y2gge1xuICAgICAgaHRtbCA9IGA8cD48ZW0+RXJyb3IgcmVuZGVyaW5nIE1EWC4gUmF3IGNvbnRlbnQgYmVsb3c6PC9lbT48L3A+PHByZT4ke2NvbnRlbnQucmVwbGFjZSgvPC9nLCAnJmx0OycpfTwvcHJlPmA7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICB0aXRsZTogZGF0YS50aXRsZSB8fCBzbHVnLFxuICAgIGV4Y2VycHQ6IGRhdGEuZXhjZXJwdCB8fCAnJyxcbiAgICBodG1sLFxuICB9O1xufVxuXG4vKipcbiAqIFJlbmRlciBhIHNtYWxsIEhUTUwgcHJldmlldyBvZiBvbmUgT0FTIG9wZXJhdGlvbiDigJQgbWV0aG9kIGJhZGdlLCBwYXRoLFxuICogZGVzY3JpcHRpb24sIGFuZCBwYXJhbWV0ZXIgbGlzdC4gTm90IGEgZnVsbCBpbnRlcmFjdGl2ZSBBUEkgcmVmZXJlbmNlXG4gKiAocHJvZHVjdGlvbiBSZWFkTWUgaGFuZGxlcyB0aGF0KTsganVzdCBlbm91Z2ggc28gZGV2IHNlcnZlciBwYWdlcyBzaG93XG4gKiBzb21ldGhpbmcgbWVhbmluZ2Z1bCBpbnN0ZWFkIG9mIGEgYmxhbmsgYm9keS5cbiAqL1xuZnVuY3Rpb24gcmVuZGVyT2FzT3BlcmF0aW9uUHJldmlldyhzcGVjRmlsZSwgb3BlcmF0aW9uSWQpIHtcbiAgY29uc3Qgc3BlY1BhdGggPSBwYXRoLmpvaW4oRE9DU19ST09ULCAncmVmZXJlbmNlJywgc3BlY0ZpbGUpO1xuICBpZiAoIWZzLmV4aXN0c1N5bmMoc3BlY1BhdGgpKSB7XG4gICAgcmV0dXJuIGA8cD48ZW0+T0FTIHNwZWMgbm90IGZvdW5kOiA8Y29kZT5yZWZlcmVuY2UvJHtzcGVjRmlsZX08L2NvZGU+PC9lbT48L3A+YDtcbiAgfVxuXG4gIGxldCBzcGVjO1xuICB0cnkge1xuICAgIGNvbnN0IHJhd1NwZWMgPSBmcy5yZWFkRmlsZVN5bmMoc3BlY1BhdGgsICd1dGYtOCcpO1xuICAgIHNwZWMgPSBzcGVjRmlsZS50b0xvd2VyQ2FzZSgpLmVuZHNXaXRoKCcuanNvbicpID8gSlNPTi5wYXJzZShyYXdTcGVjKSA6IHlhbWwubG9hZChyYXdTcGVjKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBgPHA+PGVtPkNvdWxkbid0IHBhcnNlIDxjb2RlPnJlZmVyZW5jZS8ke3NwZWNGaWxlfTwvY29kZT46ICR7ZXNjYXBlSHRtbChlLm1lc3NhZ2UpfTwvZW0+PC9wPmA7XG4gIH1cblxuICBsZXQgZm91bmQgPSBudWxsO1xuICBmb3IgKGNvbnN0IFtwYXRoS2V5LCBwYXRoSXRlbV0gb2YgT2JqZWN0LmVudHJpZXMoc3BlYy5wYXRocyB8fCB7fSkpIHtcbiAgICBmb3IgKGNvbnN0IFttZXRob2QsIG9wXSBvZiBPYmplY3QuZW50cmllcyhwYXRoSXRlbSB8fCB7fSkpIHtcbiAgICAgIGlmIChvcCAmJiB0eXBlb2Ygb3AgPT09ICdvYmplY3QnICYmIG9wLm9wZXJhdGlvbklkID09PSBvcGVyYXRpb25JZCkge1xuICAgICAgICBmb3VuZCA9IHsgbWV0aG9kOiBtZXRob2QudG9VcHBlckNhc2UoKSwgcGF0aDogcGF0aEtleSwgb3AgfTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaWYgKCFmb3VuZCkge1xuICAgIHJldHVybiBgPHA+PGVtPk9wZXJhdGlvbiA8Y29kZT4ke2VzY2FwZUh0bWwob3BlcmF0aW9uSWQpfTwvY29kZT4gbm90IGZvdW5kIGluIDxjb2RlPiR7ZXNjYXBlSHRtbChzcGVjRmlsZSl9PC9jb2RlPi48L2VtPjwvcD5gO1xuICB9XG5cbiAgY29uc3QgeyBtZXRob2QsIHBhdGg6IG9wUGF0aCwgb3AgfSA9IGZvdW5kO1xuICBjb25zdCBtZXRob2RDb2xvciA9IHtcbiAgICBHRVQ6ICcjMjJjNTVlJywgUE9TVDogJyMzYjgyZjYnLCBQVVQ6ICcjZjU5ZTBiJywgUEFUQ0g6ICcjYTg1NWY3JywgREVMRVRFOiAnI2VmNDQ0NCcsXG4gIH1bbWV0aG9kXSB8fCAnIzZiNzI4MCc7XG5cbiAgY29uc3QgcGFydHMgPSBbXTtcbiAgcGFydHMucHVzaChcbiAgICBgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGdhcDogMC41cmVtOyBhbGlnbi1pdGVtczogY2VudGVyOyBtYXJnaW4tYm90dG9tOiAxcmVtO1wiPmAgK1xuICAgIGA8c3BhbiBzdHlsZT1cImJhY2tncm91bmQ6ICR7bWV0aG9kQ29sb3J9OyBjb2xvcjogd2hpdGU7IHBhZGRpbmc6IDAuMTVyZW0gMC41cmVtOyBib3JkZXItcmFkaXVzOiAwLjI1cmVtOyBmb250LWZhbWlseTogbW9ub3NwYWNlOyBmb250LXdlaWdodDogNjAwOyBmb250LXNpemU6IDAuODVyZW07XCI+JHttZXRob2R9PC9zcGFuPmAgK1xuICAgIGA8Y29kZSBzdHlsZT1cImZvbnQtc2l6ZTogMXJlbTtcIj4ke2VzY2FwZUh0bWwob3BQYXRoKX08L2NvZGU+YCArXG4gICAgYDwvZGl2PmAsXG4gICk7XG4gIGlmIChvcC5kZXNjcmlwdGlvbikgcGFydHMucHVzaChgPHA+JHtlc2NhcGVIdG1sKG9wLmRlc2NyaXB0aW9uKX08L3A+YCk7XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkob3AucGFyYW1ldGVycykgJiYgb3AucGFyYW1ldGVycy5sZW5ndGggPiAwKSB7XG4gICAgcGFydHMucHVzaChgPGgyPlBhcmFtZXRlcnM8L2gyPmApO1xuICAgIHBhcnRzLnB1c2goYDx1bD5gKTtcbiAgICBmb3IgKGNvbnN0IHAgb2Ygb3AucGFyYW1ldGVycykge1xuICAgICAgY29uc3QgbmFtZSA9IHAubmFtZSB8fCAnKHVubmFtZWQpJztcbiAgICAgIGNvbnN0IHdoZXJlID0gcC5pbiA/IGAgPGNvZGUgc3R5bGU9XCJjb2xvcjogIzZiNzI4MDtcIj4oJHtwLmlufSk8L2NvZGU+YCA6ICcnO1xuICAgICAgY29uc3QgcmVxdWlyZWQgPSBwLnJlcXVpcmVkID8gJyA8c3Ryb25nPnJlcXVpcmVkPC9zdHJvbmc+JyA6ICcnO1xuICAgICAgY29uc3QgZGVzYyA9IHAuZGVzY3JpcHRpb24gPyBgIOKAlCAke2VzY2FwZUh0bWwocC5kZXNjcmlwdGlvbil9YCA6ICcnO1xuICAgICAgcGFydHMucHVzaChgPGxpPjxjb2RlPiR7ZXNjYXBlSHRtbChuYW1lKX08L2NvZGU+JHt3aGVyZX0ke3JlcXVpcmVkfSR7ZGVzY308L2xpPmApO1xuICAgIH1cbiAgICBwYXJ0cy5wdXNoKGA8L3VsPmApO1xuICB9XG5cbiAgaWYgKG9wLnJlc3BvbnNlcyAmJiB0eXBlb2Ygb3AucmVzcG9uc2VzID09PSAnb2JqZWN0Jykge1xuICAgIHBhcnRzLnB1c2goYDxoMj5SZXNwb25zZXM8L2gyPmApO1xuICAgIHBhcnRzLnB1c2goYDx1bD5gKTtcbiAgICBmb3IgKGNvbnN0IFtzdGF0dXMsIHJlc3BdIG9mIE9iamVjdC5lbnRyaWVzKG9wLnJlc3BvbnNlcykpIHtcbiAgICAgIGNvbnN0IGRlc2MgPSByZXNwPy5kZXNjcmlwdGlvbiA/IGAg4oCUICR7ZXNjYXBlSHRtbChyZXNwLmRlc2NyaXB0aW9uKX1gIDogJyc7XG4gICAgICBwYXJ0cy5wdXNoKGA8bGk+PGNvZGU+JHtlc2NhcGVIdG1sKHN0YXR1cyl9PC9jb2RlPiR7ZGVzY308L2xpPmApO1xuICAgIH1cbiAgICBwYXJ0cy5wdXNoKGA8L3VsPmApO1xuICB9XG5cbiAgcGFydHMucHVzaChcbiAgICBgPGhyIHN0eWxlPVwibWFyZ2luOiAycmVtIDA7IGJvcmRlcjogMDsgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNlNWU3ZWI7XCI+YCxcbiAgICBgPHAgc3R5bGU9XCJjb2xvcjogIzZiNzI4MDsgZm9udC1zaXplOiAwLjg3NXJlbTtcIj48ZW0+TG9jYWwgcHJldmlldyByZW5kZXJlZCBmcm9tIHRoZSBPQVMgc3BlYy4gRnVsbCBpbnRlcmFjdGl2ZSBBUEkgcmVmZXJlbmNlICh0cnktaXQtb3V0LCByZXF1ZXN0L3Jlc3BvbnNlIHNjaGVtYXMsIGF1dGgpIHJlbmRlcnMgd2hlbiBpbXBvcnRlZCBpbnRvIFJlYWRNZS48L2VtPjwvcD5gLFxuICApO1xuXG4gIHJldHVybiBwYXJ0cy5qb2luKCdcXG4nKTtcbn1cblxuZnVuY3Rpb24gZXNjYXBlSHRtbChzKSB7XG4gIHJldHVybiBTdHJpbmcocykucmVwbGFjZSgvWyY8PlwiJ10vZywgKGMpID0+ICh7ICcmJzogJyZhbXA7JywgJzwnOiAnJmx0OycsICc+JzogJyZndDsnLCAnXCInOiAnJnF1b3Q7JywgXCInXCI6ICcmIzM5OycgfVtjXSkpO1xufVxuXG5mdW5jdGlvbiBmaW5kRmlyc3RIcmVmKGl0ZW1zKSB7XG4gIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtcykge1xuICAgIGlmIChpdGVtLmhyZWYpIHJldHVybiBpdGVtLmhyZWY7XG4gICAgaWYgKGl0ZW0uY2hpbGRyZW4/Lmxlbmd0aCkge1xuICAgICAgY29uc3QgZm91bmQgPSBmaW5kRmlyc3RIcmVmKGl0ZW0uY2hpbGRyZW4pO1xuICAgICAgaWYgKGZvdW5kKSByZXR1cm4gZm91bmQ7XG4gICAgfVxuICB9XG4gIHJldHVybiBudWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Rmlyc3RQYWdlSHJlZigpIHtcbiAgY29uc3Qgc2lkZWJhciA9IGNvbGxlY3RTaWRlYmFyKCk7XG4gIHJldHVybiBmaW5kRmlyc3RIcmVmKHNpZGViYXIpO1xufVxuIl0sIm5hbWVzIjpbImNyZWF0ZVJlcXVpcmUiLCJmcyIsInBhdGgiLCJtYXR0ZXIiLCJjb21waWxlIiwicnVuIiwieWFtbCIsIl9yZXF1aXJlIiwidXJsIiwiUmVhY3QiLCJyZW5kZXJUb1N0YXRpY01hcmt1cCIsIkRPQ1NfUk9PVCIsInByb2Nlc3MiLCJlbnYiLCJTRUNUSU9OUyIsImRpciIsImxhYmVsIiwid2Fsa0RpciIsImRpclBhdGgiLCJzZWN0aW9uRGlyIiwiZXhpc3RzU3luYyIsIm9yZGVyIiwib3JkZXJQYXRoIiwiam9pbiIsImxvYWQiLCJyZWFkRmlsZVN5bmMiLCJpdGVtcyIsInJlYWRkaXJTeW5jIiwiZmlsdGVyIiwiZiIsInN0YXJ0c1dpdGgiLCJtZEZpbGVzIiwiU2V0IiwiZW5kc1dpdGgiLCJtYXAiLCJyZXBsYWNlIiwiZGlycyIsInN0YXRTeW5jIiwiaXNEaXJlY3RvcnkiLCJhbGxOYW1lcyIsIm9yZGVyZWQiLCJuYW1lIiwiaGFzIiwicmVtYWluaW5nIiwiaW5jbHVkZXMiLCJmaW5hbE9yZGVyIiwiZW50cmllcyIsImlzRGlyIiwiaXNNZCIsImNoaWxkcmVuIiwicHVzaCIsImluZGV4UGF0aCIsInNpYmxpbmdNZFBhdGgiLCJwYXJlbnRQYWdlUGF0aCIsInRpdGxlIiwiaHJlZiIsImhpZGRlbiIsImljb24iLCJkYXRhIiwiZW5jb2RlVVJJQ29tcG9uZW50IiwiZGVsZXRlIiwiZmlsZVBhdGgiLCJsaW5rVXJsIiwibGluayIsImV4dGVybmFsIiwiY29sbGVjdFNpZGViYXIiLCJzZWN0aW9ucyIsImZ1bGxQYXRoIiwibGVuZ3RoIiwiZmlyc3RIcmVmIiwiZmluZEZpcnN0SHJlZiIsImxvYWRDdXN0b21CbG9ja3MiLCJkb2NzUm9vdCIsImJsb2Nrc0RpciIsInNvdXJjZXMiLCJtb2R1bGVzIiwiZmlsZXMiLCJmaWxlIiwicmF3IiwiY29udGVudCIsImJhc2VuYW1lIiwiZXh0bmFtZSIsImZpbmRGaWxlIiwic2x1ZyIsImRpcmVjdCIsImluZGV4IiwiZW50cnkiLCJmdWxsIiwiZm91bmQiLCJnZXRQYWdlIiwic2x1Z0FycmF5Iiwic2VjdGlvbiIsInJlc3QiLCJzIiwiZGVjb2RlVVJJQ29tcG9uZW50Iiwic2VjdGlvblBhdGgiLCJodG1sIiwiYXBpIiwib3BlcmF0aW9uSWQiLCJ0cmltIiwicmVuZGVyT2FzT3BlcmF0aW9uUHJldmlldyIsImNvbXBpbGVkIiwiY29tcG9uZW50cyIsIm1vZCIsIm9yaWdFcnJvciIsImNvbnNvbGUiLCJlcnJvciIsImFyZ3MiLCJhcHBseSIsImNyZWF0ZUVsZW1lbnQiLCJkZWZhdWx0IiwiZXhjZXJwdCIsInNwZWNGaWxlIiwic3BlY1BhdGgiLCJzcGVjIiwicmF3U3BlYyIsInRvTG93ZXJDYXNlIiwiSlNPTiIsInBhcnNlIiwiZSIsImVzY2FwZUh0bWwiLCJtZXNzYWdlIiwicGF0aEtleSIsInBhdGhJdGVtIiwiT2JqZWN0IiwicGF0aHMiLCJtZXRob2QiLCJvcCIsInRvVXBwZXJDYXNlIiwib3BQYXRoIiwibWV0aG9kQ29sb3IiLCJHRVQiLCJQT1NUIiwiUFVUIiwiUEFUQ0giLCJERUxFVEUiLCJwYXJ0cyIsImRlc2NyaXB0aW9uIiwiQXJyYXkiLCJpc0FycmF5IiwicGFyYW1ldGVycyIsInAiLCJ3aGVyZSIsImluIiwicmVxdWlyZWQiLCJkZXNjIiwicmVzcG9uc2VzIiwic3RhdHVzIiwicmVzcCIsIlN0cmluZyIsImMiLCJpdGVtIiwiZ2V0Rmlyc3RQYWdlSHJlZiIsInNpZGViYXIiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./lib/docs.js\n");
108
+
109
+ /***/ }),
110
+
111
+ /***/ "(ssr)/../../node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22%2FUsers%2Fgkoberger%2FSites%2Freadme%2F2026-readme-cli%2Fnode_modules%2F%40readme%2Fmarkdown%2Fdist%2Fmain.css%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fgkoberger%2FSites%2Freadme%2F2026-readme-cli%2Fsrc%2Fdev%2Fapp%2Fglobals.css%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fgkoberger%2FSites%2Freadme%2F2026-readme-cli%2Fsrc%2Fdev%2Fapp%2FSidebar.js%22%2C%22ids%22%3A%5B%22SidebarNav%22%2C%22SidebarPanel%22%5D%7D&server=true!":
112
+ /*!*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
113
+ !*** ../../node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22%2FUsers%2Fgkoberger%2FSites%2Freadme%2F2026-readme-cli%2Fnode_modules%2F%40readme%2Fmarkdown%2Fdist%2Fmain.css%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fgkoberger%2FSites%2Freadme%2F2026-readme-cli%2Fsrc%2Fdev%2Fapp%2Fglobals.css%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fgkoberger%2FSites%2Freadme%2F2026-readme-cli%2Fsrc%2Fdev%2Fapp%2FSidebar.js%22%2C%22ids%22%3A%5B%22SidebarNav%22%2C%22SidebarPanel%22%5D%7D&server=true! ***!
114
+ \*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
115
+ /***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
116
+
117
+ eval("Promise.resolve(/*! import() eager */).then(__webpack_require__.bind(__webpack_require__, /*! ./app/Sidebar.js */ \"(ssr)/./app/Sidebar.js\"));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi4vLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9idWlsZC93ZWJwYWNrL2xvYWRlcnMvbmV4dC1mbGlnaHQtY2xpZW50LWVudHJ5LWxvYWRlci5qcz9tb2R1bGVzPSU3QiUyMnJlcXVlc3QlMjIlM0ElMjIlMkZVc2VycyUyRmdrb2JlcmdlciUyRlNpdGVzJTJGcmVhZG1lJTJGMjAyNi1yZWFkbWUtY2xpJTJGbm9kZV9tb2R1bGVzJTJGJTQwcmVhZG1lJTJGbWFya2Rvd24lMkZkaXN0JTJGbWFpbi5jc3MlMjIlMkMlMjJpZHMlMjIlM0ElNUIlNUQlN0QmbW9kdWxlcz0lN0IlMjJyZXF1ZXN0JTIyJTNBJTIyJTJGVXNlcnMlMkZna29iZXJnZXIlMkZTaXRlcyUyRnJlYWRtZSUyRjIwMjYtcmVhZG1lLWNsaSUyRnNyYyUyRmRldiUyRmFwcCUyRmdsb2JhbHMuY3NzJTIyJTJDJTIyaWRzJTIyJTNBJTVCJTVEJTdEJm1vZHVsZXM9JTdCJTIycmVxdWVzdCUyMiUzQSUyMiUyRlVzZXJzJTJGZ2tvYmVyZ2VyJTJGU2l0ZXMlMkZyZWFkbWUlMkYyMDI2LXJlYWRtZS1jbGklMkZzcmMlMkZkZXYlMkZhcHAlMkZTaWRlYmFyLmpzJTIyJTJDJTIyaWRzJTIyJTNBJTVCJTIyU2lkZWJhck5hdiUyMiUyQyUyMlNpZGViYXJQYW5lbCUyMiU1RCU3RCZzZXJ2ZXI9dHJ1ZSEiLCJtYXBwaW5ncyI6IkFBQUEsNElBQXdKIiwic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIsIHdlYnBhY2tFeHBvcnRzOiBbXCJTaWRlYmFyTmF2XCIsXCJTaWRlYmFyUGFuZWxcIl0gKi8gXCIvVXNlcnMvZ2tvYmVyZ2VyL1NpdGVzL3JlYWRtZS8yMDI2LXJlYWRtZS1jbGkvc3JjL2Rldi9hcHAvU2lkZWJhci5qc1wiKTtcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/../../node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22%2FUsers%2Fgkoberger%2FSites%2Freadme%2F2026-readme-cli%2Fnode_modules%2F%40readme%2Fmarkdown%2Fdist%2Fmain.css%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fgkoberger%2FSites%2Freadme%2F2026-readme-cli%2Fsrc%2Fdev%2Fapp%2Fglobals.css%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fgkoberger%2FSites%2Freadme%2F2026-readme-cli%2Fsrc%2Fdev%2Fapp%2FSidebar.js%22%2C%22ids%22%3A%5B%22SidebarNav%22%2C%22SidebarPanel%22%5D%7D&server=true!\n");
118
+
119
+ /***/ }),
120
+
121
+ /***/ "(ssr)/../../node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22%2FUsers%2Fgkoberger%2FSites%2Freadme%2F2026-readme-cli%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fbuiltin%2Fglobal-error.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fgkoberger%2FSites%2Freadme%2F2026-readme-cli%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-page.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fgkoberger%2FSites%2Freadme%2F2026-readme-cli%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-segment.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fgkoberger%2FSites%2Freadme%2F2026-readme-cli%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fhttp-access-fallback%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fgkoberger%2FSites%2Freadme%2F2026-readme-cli%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fgkoberger%2FSites%2Freadme%2F2026-readme-cli%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fmetadata%2Fasync-metadata.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fgkoberger%2FSites%2Freadme%2F2026-readme-cli%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fgkoberger%2FSites%2Freadme%2F2026-readme-cli%2Fnode_modules%2Fnext%2Fdist%2Flib%2Fframework%2Fboundary-components.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fgkoberger%2FSites%2Freadme%2F2026-readme-cli%2Fnode_modules%2Fnext%2Fdist%2Flib%2Fmetadata%2Fgenerate%2Ficon-mark.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fgkoberger%2FSites%2Freadme%2F2026-readme-cli%2Fnode_modules%2Fnext%2Fdist%2Fnext-devtools%2Fuserspace%2Fapp%2Fsegment-explorer-node.js%22%2C%22ids%22%3A%5B%5D%7D&server=true!":
122
+ /*!***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
123
+ !*** ../../node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22%2FUsers%2Fgkoberger%2FSites%2Freadme%2F2026-readme-cli%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fbuiltin%2Fglobal-error.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fgkoberger%2FSites%2Freadme%2F2026-readme-cli%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-page.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fgkoberger%2FSites%2Freadme%2F2026-readme-cli%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-segment.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fgkoberger%2FSites%2Freadme%2F2026-readme-cli%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fhttp-access-fallback%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fgkoberger%2FSites%2Freadme%2F2026-readme-cli%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fgkoberger%2FSites%2Freadme%2F2026-readme-cli%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fmetadata%2Fasync-metadata.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fgkoberger%2FSites%2Freadme%2F2026-readme-cli%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fgkoberger%2FSites%2Freadme%2F2026-readme-cli%2Fnode_modules%2Fnext%2Fdist%2Flib%2Fframework%2Fboundary-components.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fgkoberger%2FSites%2Freadme%2F2026-readme-cli%2Fnode_modules%2Fnext%2Fdist%2Flib%2Fmetadata%2Fgenerate%2Ficon-mark.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fgkoberger%2FSites%2Freadme%2F2026-readme-cli%2Fnode_modules%2Fnext%2Fdist%2Fnext-devtools%2Fuserspace%2Fapp%2Fsegment-explorer-node.js%22%2C%22ids%22%3A%5B%5D%7D&server=true! ***!
124
+ \***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
125
+ /***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
126
+
127
+ eval("Promise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ../../node_modules/next/dist/client/components/builtin/global-error.js */ \"(ssr)/../../node_modules/next/dist/client/components/builtin/global-error.js\", 23));\n;\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ../../node_modules/next/dist/client/components/client-page.js */ \"(ssr)/../../node_modules/next/dist/client/components/client-page.js\", 23));\n;\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ../../node_modules/next/dist/client/components/client-segment.js */ \"(ssr)/../../node_modules/next/dist/client/components/client-segment.js\", 23));\n;\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ../../node_modules/next/dist/client/components/http-access-fallback/error-boundary.js */ \"(ssr)/../../node_modules/next/dist/client/components/http-access-fallback/error-boundary.js\", 23));\n;\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ../../node_modules/next/dist/client/components/layout-router.js */ \"(ssr)/../../node_modules/next/dist/client/components/layout-router.js\", 23));\n;\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ../../node_modules/next/dist/client/components/metadata/async-metadata.js */ \"(ssr)/../../node_modules/next/dist/client/components/metadata/async-metadata.js\", 23));\n;\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ../../node_modules/next/dist/client/components/render-from-template-context.js */ \"(ssr)/../../node_modules/next/dist/client/components/render-from-template-context.js\", 23));\n;\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ../../node_modules/next/dist/lib/framework/boundary-components.js */ \"(ssr)/../../node_modules/next/dist/lib/framework/boundary-components.js\", 23));\n;\nPromise.resolve(/*! import() eager */).then(__webpack_require__.bind(__webpack_require__, /*! ../../node_modules/next/dist/lib/metadata/generate/icon-mark.js */ \"(ssr)/../../node_modules/next/dist/lib/metadata/generate/icon-mark.js\"));\n;\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ../../node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js */ \"(ssr)/../../node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js\", 23));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi4vLi4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9idWlsZC93ZWJwYWNrL2xvYWRlcnMvbmV4dC1mbGlnaHQtY2xpZW50LWVudHJ5LWxvYWRlci5qcz9tb2R1bGVzPSU3QiUyMnJlcXVlc3QlMjIlM0ElMjIlMkZVc2VycyUyRmdrb2JlcmdlciUyRlNpdGVzJTJGcmVhZG1lJTJGMjAyNi1yZWFkbWUtY2xpJTJGbm9kZV9tb2R1bGVzJTJGbmV4dCUyRmRpc3QlMkZjbGllbnQlMkZjb21wb25lbnRzJTJGYnVpbHRpbiUyRmdsb2JhbC1lcnJvci5qcyUyMiUyQyUyMmlkcyUyMiUzQSU1QiU1RCU3RCZtb2R1bGVzPSU3QiUyMnJlcXVlc3QlMjIlM0ElMjIlMkZVc2VycyUyRmdrb2JlcmdlciUyRlNpdGVzJTJGcmVhZG1lJTJGMjAyNi1yZWFkbWUtY2xpJTJGbm9kZV9tb2R1bGVzJTJGbmV4dCUyRmRpc3QlMkZjbGllbnQlMkZjb21wb25lbnRzJTJGY2xpZW50LXBhZ2UuanMlMjIlMkMlMjJpZHMlMjIlM0ElNUIlNUQlN0QmbW9kdWxlcz0lN0IlMjJyZXF1ZXN0JTIyJTNBJTIyJTJGVXNlcnMlMkZna29iZXJnZXIlMkZTaXRlcyUyRnJlYWRtZSUyRjIwMjYtcmVhZG1lLWNsaSUyRm5vZGVfbW9kdWxlcyUyRm5leHQlMkZkaXN0JTJGY2xpZW50JTJGY29tcG9uZW50cyUyRmNsaWVudC1zZWdtZW50LmpzJTIyJTJDJTIyaWRzJTIyJTNBJTVCJTVEJTdEJm1vZHVsZXM9JTdCJTIycmVxdWVzdCUyMiUzQSUyMiUyRlVzZXJzJTJGZ2tvYmVyZ2VyJTJGU2l0ZXMlMkZyZWFkbWUlMkYyMDI2LXJlYWRtZS1jbGklMkZub2RlX21vZHVsZXMlMkZuZXh0JTJGZGlzdCUyRmNsaWVudCUyRmNvbXBvbmVudHMlMkZodHRwLWFjY2Vzcy1mYWxsYmFjayUyRmVycm9yLWJvdW5kYXJ5LmpzJTIyJTJDJTIyaWRzJTIyJTNBJTVCJTVEJTdEJm1vZHVsZXM9JTdCJTIycmVxdWVzdCUyMiUzQSUyMiUyRlVzZXJzJTJGZ2tvYmVyZ2VyJTJGU2l0ZXMlMkZyZWFkbWUlMkYyMDI2LXJlYWRtZS1jbGklMkZub2RlX21vZHVsZXMlMkZuZXh0JTJGZGlzdCUyRmNsaWVudCUyRmNvbXBvbmVudHMlMkZsYXlvdXQtcm91dGVyLmpzJTIyJTJDJTIyaWRzJTIyJTNBJTVCJTVEJTdEJm1vZHVsZXM9JTdCJTIycmVxdWVzdCUyMiUzQSUyMiUyRlVzZXJzJTJGZ2tvYmVyZ2VyJTJGU2l0ZXMlMkZyZWFkbWUlMkYyMDI2LXJlYWRtZS1jbGklMkZub2RlX21vZHVsZXMlMkZuZXh0JTJGZGlzdCUyRmNsaWVudCUyRmNvbXBvbmVudHMlMkZtZXRhZGF0YSUyRmFzeW5jLW1ldGFkYXRhLmpzJTIyJTJDJTIyaWRzJTIyJTNBJTVCJTVEJTdEJm1vZHVsZXM9JTdCJTIycmVxdWVzdCUyMiUzQSUyMiUyRlVzZXJzJTJGZ2tvYmVyZ2VyJTJGU2l0ZXMlMkZyZWFkbWUlMkYyMDI2LXJlYWRtZS1jbGklMkZub2RlX21vZHVsZXMlMkZuZXh0JTJGZGlzdCUyRmNsaWVudCUyRmNvbXBvbmVudHMlMkZyZW5kZXItZnJvbS10ZW1wbGF0ZS1jb250ZXh0LmpzJTIyJTJDJTIyaWRzJTIyJTNBJTVCJTVEJTdEJm1vZHVsZXM9JTdCJTIycmVxdWVzdCUyMiUzQSUyMiUyRlVzZXJzJTJGZ2tvYmVyZ2VyJTJGU2l0ZXMlMkZyZWFkbWUlMkYyMDI2LXJlYWRtZS1jbGklMkZub2RlX21vZHVsZXMlMkZuZXh0JTJGZGlzdCUyRmxpYiUyRmZyYW1ld29yayUyRmJvdW5kYXJ5LWNvbXBvbmVudHMuanMlMjIlMkMlMjJpZHMlMjIlM0ElNUIlNUQlN0QmbW9kdWxlcz0lN0IlMjJyZXF1ZXN0JTIyJTNBJTIyJTJGVXNlcnMlMkZna29iZXJnZXIlMkZTaXRlcyUyRnJlYWRtZSUyRjIwMjYtcmVhZG1lLWNsaSUyRm5vZGVfbW9kdWxlcyUyRm5leHQlMkZkaXN0JTJGbGliJTJGbWV0YWRhdGElMkZnZW5lcmF0ZSUyRmljb24tbWFyay5qcyUyMiUyQyUyMmlkcyUyMiUzQSU1QiU1RCU3RCZtb2R1bGVzPSU3QiUyMnJlcXVlc3QlMjIlM0ElMjIlMkZVc2VycyUyRmdrb2JlcmdlciUyRlNpdGVzJTJGcmVhZG1lJTJGMjAyNi1yZWFkbWUtY2xpJTJGbm9kZV9tb2R1bGVzJTJGbmV4dCUyRmRpc3QlMkZuZXh0LWRldnRvb2xzJTJGdXNlcnNwYWNlJTJGYXBwJTJGc2VnbWVudC1leHBsb3Jlci1ub2RlLmpzJTIyJTJDJTIyaWRzJTIyJTNBJTVCJTVEJTdEJnNlcnZlcj10cnVlISIsIm1hcHBpbmdzIjoiQUFBQSw4UEFBbUo7QUFDbko7QUFDQSw0T0FBMEk7QUFDMUk7QUFDQSxrUEFBNkk7QUFDN0k7QUFDQSw0UkFBa0s7QUFDbEs7QUFDQSxnUEFBNEk7QUFDNUk7QUFDQSxvUUFBc0o7QUFDdEo7QUFDQSw4UUFBMko7QUFDM0o7QUFDQSxvUEFBOEk7QUFDOUk7QUFDQSwwT0FBNEk7QUFDNUk7QUFDQSxvUkFBOEoiLCJzb3VyY2VzIjpbIiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQoLyogd2VicGFja01vZGU6IFwiZWFnZXJcIiAqLyBcIi9Vc2Vycy9na29iZXJnZXIvU2l0ZXMvcmVhZG1lLzIwMjYtcmVhZG1lLWNsaS9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2J1aWx0aW4vZ2xvYmFsLWVycm9yLmpzXCIpO1xuO1xuaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gXCIvVXNlcnMvZ2tvYmVyZ2VyL1NpdGVzL3JlYWRtZS8yMDI2LXJlYWRtZS1jbGkvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvY29tcG9uZW50cy9jbGllbnQtcGFnZS5qc1wiKTtcbjtcbmltcG9ydCgvKiB3ZWJwYWNrTW9kZTogXCJlYWdlclwiICovIFwiL1VzZXJzL2drb2Jlcmdlci9TaXRlcy9yZWFkbWUvMjAyNi1yZWFkbWUtY2xpL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvY2xpZW50LXNlZ21lbnQuanNcIik7XG47XG5pbXBvcnQoLyogd2VicGFja01vZGU6IFwiZWFnZXJcIiAqLyBcIi9Vc2Vycy9na29iZXJnZXIvU2l0ZXMvcmVhZG1lLzIwMjYtcmVhZG1lLWNsaS9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2h0dHAtYWNjZXNzLWZhbGxiYWNrL2Vycm9yLWJvdW5kYXJ5LmpzXCIpO1xuO1xuaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gXCIvVXNlcnMvZ2tvYmVyZ2VyL1NpdGVzL3JlYWRtZS8yMDI2LXJlYWRtZS1jbGkvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvY29tcG9uZW50cy9sYXlvdXQtcm91dGVyLmpzXCIpO1xuO1xuaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gXCIvVXNlcnMvZ2tvYmVyZ2VyL1NpdGVzL3JlYWRtZS8yMDI2LXJlYWRtZS1jbGkvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvY29tcG9uZW50cy9tZXRhZGF0YS9hc3luYy1tZXRhZGF0YS5qc1wiKTtcbjtcbmltcG9ydCgvKiB3ZWJwYWNrTW9kZTogXCJlYWdlclwiICovIFwiL1VzZXJzL2drb2Jlcmdlci9TaXRlcy9yZWFkbWUvMjAyNi1yZWFkbWUtY2xpL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvcmVuZGVyLWZyb20tdGVtcGxhdGUtY29udGV4dC5qc1wiKTtcbjtcbmltcG9ydCgvKiB3ZWJwYWNrTW9kZTogXCJlYWdlclwiICovIFwiL1VzZXJzL2drb2Jlcmdlci9TaXRlcy9yZWFkbWUvMjAyNi1yZWFkbWUtY2xpL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvbGliL2ZyYW1ld29yay9ib3VuZGFyeS1jb21wb25lbnRzLmpzXCIpO1xuO1xuaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gXCIvVXNlcnMvZ2tvYmVyZ2VyL1NpdGVzL3JlYWRtZS8yMDI2LXJlYWRtZS1jbGkvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9saWIvbWV0YWRhdGEvZ2VuZXJhdGUvaWNvbi1tYXJrLmpzXCIpO1xuO1xuaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gXCIvVXNlcnMvZ2tvYmVyZ2VyL1NpdGVzL3JlYWRtZS8yMDI2LXJlYWRtZS1jbGkvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9uZXh0LWRldnRvb2xzL3VzZXJzcGFjZS9hcHAvc2VnbWVudC1leHBsb3Jlci1ub2RlLmpzXCIpO1xuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/../../node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22%2FUsers%2Fgkoberger%2FSites%2Freadme%2F2026-readme-cli%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fbuiltin%2Fglobal-error.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fgkoberger%2FSites%2Freadme%2F2026-readme-cli%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-page.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fgkoberger%2FSites%2Freadme%2F2026-readme-cli%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-segment.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fgkoberger%2FSites%2Freadme%2F2026-readme-cli%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fhttp-access-fallback%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fgkoberger%2FSites%2Freadme%2F2026-readme-cli%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fgkoberger%2FSites%2Freadme%2F2026-readme-cli%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fmetadata%2Fasync-metadata.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fgkoberger%2FSites%2Freadme%2F2026-readme-cli%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fgkoberger%2FSites%2Freadme%2F2026-readme-cli%2Fnode_modules%2Fnext%2Fdist%2Flib%2Fframework%2Fboundary-components.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fgkoberger%2FSites%2Freadme%2F2026-readme-cli%2Fnode_modules%2Fnext%2Fdist%2Flib%2Fmetadata%2Fgenerate%2Ficon-mark.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fgkoberger%2FSites%2Freadme%2F2026-readme-cli%2Fnode_modules%2Fnext%2Fdist%2Fnext-devtools%2Fuserspace%2Fapp%2Fsegment-explorer-node.js%22%2C%22ids%22%3A%5B%5D%7D&server=true!\n");
128
+
129
+ /***/ }),
130
+
131
+ /***/ "(ssr)/../../node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?server=true!":
132
+ /*!**********************************************************************************************************!*\
133
+ !*** ../../node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?server=true! ***!
134
+ \**********************************************************************************************************/
135
+ /***/ (() => {
136
+
137
+
138
+
139
+ /***/ }),
140
+
141
+ /***/ "(ssr)/./app/Sidebar.js":
142
+ /*!************************!*\
143
+ !*** ./app/Sidebar.js ***!
144
+ \************************/
145
+ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
146
+
147
+ "use strict";
148
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ SidebarNav: () => (/* binding */ SidebarNav),\n/* harmony export */ SidebarPanel: () => (/* binding */ SidebarPanel)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(ssr)/../../node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-jsx-dev-runtime.js\");\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! next/link */ \"(ssr)/../../node_modules/next/dist/client/app-dir/link.js\");\n/* harmony import */ var next_navigation__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/navigation */ \"(ssr)/../../node_modules/next/dist/api/navigation.js\");\n/* __next_internal_client_entry_do_not_use__ SidebarNav,SidebarPanel auto */ \n\n\nfunction SidebarIcon({ icon }) {\n if (!icon) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"w-5 shrink-0\"\n }, void 0, false, {\n fileName: \"/Users/gkoberger/Sites/readme/2026-readme-cli/src/dev/app/Sidebar.js\",\n lineNumber: 8,\n columnNumber: 12\n }, this);\n }\n const FA_STYLE_MAP = {\n far: 'fa-regular',\n fas: 'fa-solid',\n fab: 'fa-brands',\n fal: 'fa-light',\n fad: 'fa-duotone'\n };\n const parts = icon.split(' ');\n let cls;\n if (FA_STYLE_MAP[parts[0]]) {\n cls = `${FA_STYLE_MAP[parts[0]]} ${parts.slice(1).join(' ')}`;\n } else if (icon.includes('fa-')) {\n cls = icon.includes(' ') ? icon : `fa-solid ${icon}`;\n } else if (/^[a-z][a-z0-9-]*$/.test(icon)) {\n cls = `fa-solid fa-${icon}`;\n }\n if (cls) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"i\", {\n className: `${cls} text-[14px] w-5 text-left shrink-0 opacity-40 mt-[4px]`\n }, void 0, false, {\n fileName: \"/Users/gkoberger/Sites/readme/2026-readme-cli/src/dev/app/Sidebar.js\",\n lineNumber: 24,\n columnNumber: 12\n }, this);\n }\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-[14px] w-5 text-center shrink-0 leading-none mt-[4px]\",\n children: icon\n }, void 0, false, {\n fileName: \"/Users/gkoberger/Sites/readme/2026-readme-cli/src/dev/app/Sidebar.js\",\n lineNumber: 27,\n columnNumber: 10\n }, this);\n}\nfunction hasActiveChild(items, activePath) {\n for (const item of items){\n if (item.href && activePath === item.href) return true;\n if (item.children?.length && hasActiveChild(item.children, activePath)) return true;\n }\n return false;\n}\nfunction SidebarItems({ items, depth = 0, activePath }) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"ul\", {\n className: \"list-none m-0 p-0\",\n children: items.map((item, i)=>{\n const isActive = item.href && activePath === item.href;\n const hasChildren = item.children?.length > 0;\n const isExpanded = hasChildren && (isActive || hasActiveChild(item.children, activePath));\n if (!item.href) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"block pl-3 pr-3 pt-9 pb-1 text-[12px] font-bold uppercase tracking-wider text-gray-500 first:pt-3\",\n children: item.title\n }, void 0, false, {\n fileName: \"/Users/gkoberger/Sites/readme/2026-readme-cli/src/dev/app/Sidebar.js\",\n lineNumber: 49,\n columnNumber: 15\n }, this),\n hasChildren && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(SidebarItems, {\n items: item.children,\n depth: depth,\n activePath: activePath\n }, void 0, false, {\n fileName: \"/Users/gkoberger/Sites/readme/2026-readme-cli/src/dev/app/Sidebar.js\",\n lineNumber: 52,\n columnNumber: 31\n }, this)\n ]\n }, i, true, {\n fileName: \"/Users/gkoberger/Sites/readme/2026-readme-cli/src/dev/app/Sidebar.js\",\n lineNumber: 48,\n columnNumber: 13\n }, this);\n }\n if (hasChildren) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n \"data-sidebar-group\": true,\n \"data-expanded\": isExpanded ? 'true' : 'false',\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_1__, {\n href: item.href || '#',\n \"data-sidebar-toggle\": true,\n className: [\n 'flex items-start gap-2 py-[5px] pr-3 mr-3 text-[15px] no-underline transition-colors duration-150 rounded-lg',\n depth === 0 ? 'pl-3' : depth === 1 ? 'pl-6' : 'pl-9',\n isActive ? 'text-[#018ef5] bg-[#018ef5]/[0.07] font-medium' : 'text-gray-600 hover:text-gray-900 hover:bg-gray-100/60'\n ].join(' '),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(SidebarIcon, {\n icon: item.icon\n }, void 0, false, {\n fileName: \"/Users/gkoberger/Sites/readme/2026-readme-cli/src/dev/app/Sidebar.js\",\n lineNumber: 71,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"flex-1\",\n children: item.title\n }, void 0, false, {\n fileName: \"/Users/gkoberger/Sites/readme/2026-readme-cli/src/dev/app/Sidebar.js\",\n lineNumber: 72,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"i\", {\n className: \"fa-solid fa-chevron-right text-[9px] text-gray-300 transition-transform duration-200 sidebar-chevron mt-[7px]\"\n }, void 0, false, {\n fileName: \"/Users/gkoberger/Sites/readme/2026-readme-cli/src/dev/app/Sidebar.js\",\n lineNumber: 73,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/gkoberger/Sites/readme/2026-readme-cli/src/dev/app/Sidebar.js\",\n lineNumber: 60,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"sidebar-children overflow-hidden\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(SidebarItems, {\n items: item.children,\n depth: depth + 1,\n activePath: activePath\n }, void 0, false, {\n fileName: \"/Users/gkoberger/Sites/readme/2026-readme-cli/src/dev/app/Sidebar.js\",\n lineNumber: 76,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/gkoberger/Sites/readme/2026-readme-cli/src/dev/app/Sidebar.js\",\n lineNumber: 75,\n columnNumber: 15\n }, this)\n ]\n }, i, true, {\n fileName: \"/Users/gkoberger/Sites/readme/2026-readme-cli/src/dev/app/Sidebar.js\",\n lineNumber: 59,\n columnNumber: 13\n }, this);\n }\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_1__, {\n href: item.href,\n className: [\n 'flex items-start gap-2 py-[5px] pr-3 mr-3 text-[15px] no-underline transition-colors duration-150 rounded-lg',\n depth === 0 ? 'pl-3' : depth === 1 ? 'pl-6' : 'pl-9',\n item.hidden ? 'opacity-40' : '',\n isActive ? 'text-[#018ef5] bg-[#018ef5]/[0.07] font-medium' : item.hidden ? 'text-gray-400 hover:text-gray-500 hover:bg-gray-100/40' : 'text-gray-600 hover:text-gray-900 hover:bg-gray-100/60'\n ].join(' '),\n ...item.external ? {\n target: '_blank',\n rel: 'noopener noreferrer'\n } : {},\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(SidebarIcon, {\n icon: item.icon\n }, void 0, false, {\n fileName: \"/Users/gkoberger/Sites/readme/2026-readme-cli/src/dev/app/Sidebar.js\",\n lineNumber: 98,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"flex-1\",\n children: item.title\n }, void 0, false, {\n fileName: \"/Users/gkoberger/Sites/readme/2026-readme-cli/src/dev/app/Sidebar.js\",\n lineNumber: 99,\n columnNumber: 15\n }, this),\n item.external && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-gray-300 text-[11px]\",\n children: \"↗\"\n }, void 0, false, {\n fileName: \"/Users/gkoberger/Sites/readme/2026-readme-cli/src/dev/app/Sidebar.js\",\n lineNumber: 100,\n columnNumber: 33\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/gkoberger/Sites/readme/2026-readme-cli/src/dev/app/Sidebar.js\",\n lineNumber: 84,\n columnNumber: 13\n }, this)\n }, i, false, {\n fileName: \"/Users/gkoberger/Sites/readme/2026-readme-cli/src/dev/app/Sidebar.js\",\n lineNumber: 83,\n columnNumber: 11\n }, this);\n })\n }, void 0, false, {\n fileName: \"/Users/gkoberger/Sites/readme/2026-readme-cli/src/dev/app/Sidebar.js\",\n lineNumber: 40,\n columnNumber: 5\n }, this);\n}\nfunction SidebarNav({ sidebar }) {\n const pathname = (0,next_navigation__WEBPACK_IMPORTED_MODULE_2__.usePathname)();\n const firstSegment = pathname.split('/').filter(Boolean)[0] || '';\n const activeSectionDir = sidebar.find((s)=>s.dir === firstSegment)?.dir || sidebar[0]?.dir;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"nav\", {\n className: \"flex h-full items-stretch gap-1\",\n children: sidebar.map((section, i)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_1__, {\n href: section.firstHref,\n className: `flex items-center px-3 text-[13px] font-medium no-underline border-b-2 transition-colors duration-150 ${section.dir === activeSectionDir ? 'border-[#018ef5] text-white' : 'border-transparent text-white/40 hover:text-white/70'}`,\n children: section.title\n }, i, false, {\n fileName: \"/Users/gkoberger/Sites/readme/2026-readme-cli/src/dev/app/Sidebar.js\",\n lineNumber: 118,\n columnNumber: 11\n }, this))\n }, void 0, false, {\n fileName: \"/Users/gkoberger/Sites/readme/2026-readme-cli/src/dev/app/Sidebar.js\",\n lineNumber: 116,\n columnNumber: 7\n }, this)\n }, void 0, false);\n}\nfunction SidebarPanel({ sidebar }) {\n const pathname = (0,next_navigation__WEBPACK_IMPORTED_MODULE_2__.usePathname)();\n const firstSegment = pathname.split('/').filter(Boolean)[0] || '';\n const activeSectionDir = sidebar.find((s)=>s.dir === firstSegment)?.dir || sidebar[0]?.dir;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: sidebar.filter((s)=>s.dir === activeSectionDir).map((section, i)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(SidebarItems, {\n items: section.children,\n activePath: pathname\n }, i, false, {\n fileName: \"/Users/gkoberger/Sites/readme/2026-readme-cli/src/dev/app/Sidebar.js\",\n lineNumber: 145,\n columnNumber: 11\n }, this))\n }, void 0, false);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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R0FBRyxDQUFDLENBQUN5QixTQUFTcEMsa0JBQ3JCLDhEQUFDbkIsc0NBQUlBO29CQUVId0IsTUFBTStCLFFBQVFDLFNBQVM7b0JBQ3ZCbkQsV0FBVyxDQUFDLHNHQUFzRyxFQUNoSGtELFFBQVFGLEdBQUcsS0FBS0gsbUJBQ1osZ0NBQ0Esd0RBQ0o7OEJBRURLLFFBQVFwQixLQUFLO21CQVJUaEI7Ozs7Ozs7Ozs7O0FBY2pCO0FBRU8sU0FBU3NDLGFBQWEsRUFBRVosT0FBTyxFQUFFO0lBQ3RDLE1BQU1DLFdBQVc3Qyw0REFBV0E7SUFDNUIsTUFBTThDLGVBQWVELFNBQVNqQyxLQUFLLENBQUMsS0FBS21DLE1BQU0sQ0FBQ0MsUUFBUSxDQUFDLEVBQUUsSUFBSTtJQUMvRCxNQUFNQyxtQkFBbUJMLFFBQVFNLElBQUksQ0FBQ0MsQ0FBQUEsSUFBS0EsRUFBRUMsR0FBRyxLQUFLTixlQUFlTSxPQUFPUixPQUFPLENBQUMsRUFBRSxFQUFFUTtJQUV2RixxQkFDRTtrQkFDR1IsUUFDRUcsTUFBTSxDQUFDSSxDQUFBQSxJQUFLQSxFQUFFQyxHQUFHLEtBQUtILGtCQUN0QnBCLEdBQUcsQ0FBQyxDQUFDeUIsU0FBU3BDLGtCQUNiLDhEQUFDUTtnQkFBcUJOLE9BQU9rQyxRQUFROUIsUUFBUTtnQkFBRUgsWUFBWXdCO2VBQXhDM0I7Ozs7OztBQUk3QiIsInNvdXJjZXMiOlsiL1VzZXJzL2drb2Jlcmdlci9TaXRlcy9yZWFkbWUvMjAyNi1yZWFkbWUtY2xpL3NyYy9kZXYvYXBwL1NpZGViYXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgTGluayBmcm9tICduZXh0L2xpbmsnO1xuaW1wb3J0IHsgdXNlUGF0aG5hbWUgfSBmcm9tICduZXh0L25hdmlnYXRpb24nO1xuXG5mdW5jdGlvbiBTaWRlYmFySWNvbih7IGljb24gfSkge1xuICBpZiAoIWljb24pIHtcbiAgICByZXR1cm4gPHNwYW4gY2xhc3NOYW1lPVwidy01IHNocmluay0wXCIgLz47XG4gIH1cblxuICBjb25zdCBGQV9TVFlMRV9NQVAgPSB7IGZhcjogJ2ZhLXJlZ3VsYXInLCBmYXM6ICdmYS1zb2xpZCcsIGZhYjogJ2ZhLWJyYW5kcycsIGZhbDogJ2ZhLWxpZ2h0JywgZmFkOiAnZmEtZHVvdG9uZScgfTtcblxuICBjb25zdCBwYXJ0cyA9IGljb24uc3BsaXQoJyAnKTtcbiAgbGV0IGNscztcbiAgaWYgKEZBX1NUWUxFX01BUFtwYXJ0c1swXV0pIHtcbiAgICBjbHMgPSBgJHtGQV9TVFlMRV9NQVBbcGFydHNbMF1dfSAke3BhcnRzLnNsaWNlKDEpLmpvaW4oJyAnKX1gO1xuICB9IGVsc2UgaWYgKGljb24uaW5jbHVkZXMoJ2ZhLScpKSB7XG4gICAgY2xzID0gaWNvbi5pbmNsdWRlcygnICcpID8gaWNvbiA6IGBmYS1zb2xpZCAke2ljb259YDtcbiAgfSBlbHNlIGlmICgvXlthLXpdW2EtejAtOS1dKiQvLnRlc3QoaWNvbikpIHtcbiAgICBjbHMgPSBgZmEtc29saWQgZmEtJHtpY29ufWA7XG4gIH1cblxuICBpZiAoY2xzKSB7XG4gICAgcmV0dXJuIDxpIGNsYXNzTmFtZT17YCR7Y2xzfSB0ZXh0LVsxNHB4XSB3LTUgdGV4dC1sZWZ0IHNocmluay0wIG9wYWNpdHktNDAgbXQtWzRweF1gfSAvPjtcbiAgfVxuXG4gIHJldHVybiA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LVsxNHB4XSB3LTUgdGV4dC1jZW50ZXIgc2hyaW5rLTAgbGVhZGluZy1ub25lIG10LVs0cHhdXCI+e2ljb259PC9zcGFuPjtcbn1cblxuZnVuY3Rpb24gaGFzQWN0aXZlQ2hpbGQoaXRlbXMsIGFjdGl2ZVBhdGgpIHtcbiAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XG4gICAgaWYgKGl0ZW0uaHJlZiAmJiBhY3RpdmVQYXRoID09PSBpdGVtLmhyZWYpIHJldHVybiB0cnVlO1xuICAgIGlmIChpdGVtLmNoaWxkcmVuPy5sZW5ndGggJiYgaGFzQWN0aXZlQ2hpbGQoaXRlbS5jaGlsZHJlbiwgYWN0aXZlUGF0aCkpIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gU2lkZWJhckl0ZW1zKHsgaXRlbXMsIGRlcHRoID0gMCwgYWN0aXZlUGF0aCB9KSB7XG4gIHJldHVybiAoXG4gICAgPHVsIGNsYXNzTmFtZT1cImxpc3Qtbm9uZSBtLTAgcC0wXCI+XG4gICAgICB7aXRlbXMubWFwKChpdGVtLCBpKSA9PiB7XG4gICAgICAgIGNvbnN0IGlzQWN0aXZlID0gaXRlbS5ocmVmICYmIGFjdGl2ZVBhdGggPT09IGl0ZW0uaHJlZjtcbiAgICAgICAgY29uc3QgaGFzQ2hpbGRyZW4gPSBpdGVtLmNoaWxkcmVuPy5sZW5ndGggPiAwO1xuICAgICAgICBjb25zdCBpc0V4cGFuZGVkID0gaGFzQ2hpbGRyZW4gJiYgKGlzQWN0aXZlIHx8IGhhc0FjdGl2ZUNoaWxkKGl0ZW0uY2hpbGRyZW4sIGFjdGl2ZVBhdGgpKTtcblxuICAgICAgICBpZiAoIWl0ZW0uaHJlZikge1xuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8bGkga2V5PXtpfT5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiYmxvY2sgcGwtMyBwci0zIHB0LTkgcGItMSB0ZXh0LVsxMnB4XSBmb250LWJvbGQgdXBwZXJjYXNlIHRyYWNraW5nLXdpZGVyIHRleHQtZ3JheS01MDAgZmlyc3Q6cHQtM1wiPlxuICAgICAgICAgICAgICAgIHtpdGVtLnRpdGxlfVxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIHtoYXNDaGlsZHJlbiAmJiA8U2lkZWJhckl0ZW1zIGl0ZW1zPXtpdGVtLmNoaWxkcmVufSBkZXB0aD17ZGVwdGh9IGFjdGl2ZVBhdGg9e2FjdGl2ZVBhdGh9IC8+fVxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGhhc0NoaWxkcmVuKSB7XG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxsaSBrZXk9e2l9IGRhdGEtc2lkZWJhci1ncm91cCBkYXRhLWV4cGFuZGVkPXtpc0V4cGFuZGVkID8gJ3RydWUnIDogJ2ZhbHNlJ30+XG4gICAgICAgICAgICAgIDxMaW5rXG4gICAgICAgICAgICAgICAgaHJlZj17aXRlbS5ocmVmIHx8ICcjJ31cbiAgICAgICAgICAgICAgICBkYXRhLXNpZGViYXItdG9nZ2xlXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtbXG4gICAgICAgICAgICAgICAgICAnZmxleCBpdGVtcy1zdGFydCBnYXAtMiBweS1bNXB4XSBwci0zIG1yLTMgdGV4dC1bMTVweF0gbm8tdW5kZXJsaW5lIHRyYW5zaXRpb24tY29sb3JzIGR1cmF0aW9uLTE1MCByb3VuZGVkLWxnJyxcbiAgICAgICAgICAgICAgICAgIGRlcHRoID09PSAwID8gJ3BsLTMnIDogZGVwdGggPT09IDEgPyAncGwtNicgOiAncGwtOScsXG4gICAgICAgICAgICAgICAgICBpc0FjdGl2ZVxuICAgICAgICAgICAgICAgICAgICA/ICd0ZXh0LVsjMDE4ZWY1XSBiZy1bIzAxOGVmNV0vWzAuMDddIGZvbnQtbWVkaXVtJ1xuICAgICAgICAgICAgICAgICAgICA6ICd0ZXh0LWdyYXktNjAwIGhvdmVyOnRleHQtZ3JheS05MDAgaG92ZXI6YmctZ3JheS0xMDAvNjAnLFxuICAgICAgICAgICAgICAgIF0uam9pbignICcpfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPFNpZGViYXJJY29uIGljb249e2l0ZW0uaWNvbn0gLz5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJmbGV4LTFcIj57aXRlbS50aXRsZX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPGkgY2xhc3NOYW1lPVwiZmEtc29saWQgZmEtY2hldnJvbi1yaWdodCB0ZXh0LVs5cHhdIHRleHQtZ3JheS0zMDAgdHJhbnNpdGlvbi10cmFuc2Zvcm0gZHVyYXRpb24tMjAwIHNpZGViYXItY2hldnJvbiBtdC1bN3B4XVwiIC8+XG4gICAgICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJzaWRlYmFyLWNoaWxkcmVuIG92ZXJmbG93LWhpZGRlblwiPlxuICAgICAgICAgICAgICAgIDxTaWRlYmFySXRlbXMgaXRlbXM9e2l0ZW0uY2hpbGRyZW59IGRlcHRoPXtkZXB0aCArIDF9IGFjdGl2ZVBhdGg9e2FjdGl2ZVBhdGh9IC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICA8bGkga2V5PXtpfT5cbiAgICAgICAgICAgIDxMaW5rXG4gICAgICAgICAgICAgIGhyZWY9e2l0ZW0uaHJlZn1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtbXG4gICAgICAgICAgICAgICAgJ2ZsZXggaXRlbXMtc3RhcnQgZ2FwLTIgcHktWzVweF0gcHItMyBtci0zIHRleHQtWzE1cHhdIG5vLXVuZGVybGluZSB0cmFuc2l0aW9uLWNvbG9ycyBkdXJhdGlvbi0xNTAgcm91bmRlZC1sZycsXG4gICAgICAgICAgICAgICAgZGVwdGggPT09IDAgPyAncGwtMycgOiBkZXB0aCA9PT0gMSA/ICdwbC02JyA6ICdwbC05JyxcbiAgICAgICAgICAgICAgICBpdGVtLmhpZGRlbiA/ICdvcGFjaXR5LTQwJyA6ICcnLFxuICAgICAgICAgICAgICAgIGlzQWN0aXZlXG4gICAgICAgICAgICAgICAgICA/ICd0ZXh0LVsjMDE4ZWY1XSBiZy1bIzAxOGVmNV0vWzAuMDddIGZvbnQtbWVkaXVtJ1xuICAgICAgICAgICAgICAgICAgOiBpdGVtLmhpZGRlblxuICAgICAgICAgICAgICAgICAgICA/ICd0ZXh0LWdyYXktNDAwIGhvdmVyOnRleHQtZ3JheS01MDAgaG92ZXI6YmctZ3JheS0xMDAvNDAnXG4gICAgICAgICAgICAgICAgICAgIDogJ3RleHQtZ3JheS02MDAgaG92ZXI6dGV4dC1ncmF5LTkwMCBob3ZlcjpiZy1ncmF5LTEwMC82MCcsXG4gICAgICAgICAgICAgIF0uam9pbignICcpfVxuICAgICAgICAgICAgICB7Li4uKGl0ZW0uZXh0ZXJuYWwgPyB7IHRhcmdldDogJ19ibGFuaycsIHJlbDogJ25vb3BlbmVyIG5vcmVmZXJyZXInIH0gOiB7fSl9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxTaWRlYmFySWNvbiBpY29uPXtpdGVtLmljb259IC8+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImZsZXgtMVwiPntpdGVtLnRpdGxlfTwvc3Bhbj5cbiAgICAgICAgICAgICAge2l0ZW0uZXh0ZXJuYWwgJiYgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1ncmF5LTMwMCB0ZXh0LVsxMXB4XVwiPuKGlzwvc3Bhbj59XG4gICAgICAgICAgICA8L0xpbms+XG4gICAgICAgICAgPC9saT5cbiAgICAgICAgKTtcbiAgICAgIH0pfVxuICAgIDwvdWw+XG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBTaWRlYmFyTmF2KHsgc2lkZWJhciB9KSB7XG4gIGNvbnN0IHBhdGhuYW1lID0gdXNlUGF0aG5hbWUoKTtcbiAgY29uc3QgZmlyc3RTZWdtZW50ID0gcGF0aG5hbWUuc3BsaXQoJy8nKS5maWx0ZXIoQm9vbGVhbilbMF0gfHwgJyc7XG4gIGNvbnN0IGFjdGl2ZVNlY3Rpb25EaXIgPSBzaWRlYmFyLmZpbmQocyA9PiBzLmRpciA9PT0gZmlyc3RTZWdtZW50KT8uZGlyIHx8IHNpZGViYXJbMF0/LmRpcjtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8bmF2IGNsYXNzTmFtZT1cImZsZXggaC1mdWxsIGl0ZW1zLXN0cmV0Y2ggZ2FwLTFcIj5cbiAgICAgICAge3NpZGViYXIubWFwKChzZWN0aW9uLCBpKSA9PiAoXG4gICAgICAgICAgPExpbmtcbiAgICAgICAgICAgIGtleT17aX1cbiAgICAgICAgICAgIGhyZWY9e3NlY3Rpb24uZmlyc3RIcmVmfVxuICAgICAgICAgICAgY2xhc3NOYW1lPXtgZmxleCBpdGVtcy1jZW50ZXIgcHgtMyB0ZXh0LVsxM3B4XSBmb250LW1lZGl1bSBuby11bmRlcmxpbmUgYm9yZGVyLWItMiB0cmFuc2l0aW9uLWNvbG9ycyBkdXJhdGlvbi0xNTAgJHtcbiAgICAgICAgICAgICAgc2VjdGlvbi5kaXIgPT09IGFjdGl2ZVNlY3Rpb25EaXJcbiAgICAgICAgICAgICAgICA/ICdib3JkZXItWyMwMThlZjVdIHRleHQtd2hpdGUnXG4gICAgICAgICAgICAgICAgOiAnYm9yZGVyLXRyYW5zcGFyZW50IHRleHQtd2hpdGUvNDAgaG92ZXI6dGV4dC13aGl0ZS83MCdcbiAgICAgICAgICAgIH1gfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtzZWN0aW9uLnRpdGxlfVxuICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgKSl9XG4gICAgICA8L25hdj5cbiAgICA8Lz5cbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFNpZGViYXJQYW5lbCh7IHNpZGViYXIgfSkge1xuICBjb25zdCBwYXRobmFtZSA9IHVzZVBhdGhuYW1lKCk7XG4gIGNvbnN0IGZpcnN0U2VnbWVudCA9IHBhdGhuYW1lLnNwbGl0KCcvJykuZmlsdGVyKEJvb2xlYW4pWzBdIHx8ICcnO1xuICBjb25zdCBhY3RpdmVTZWN0aW9uRGlyID0gc2lkZWJhci5maW5kKHMgPT4gcy5kaXIgPT09IGZpcnN0U2VnbWVudCk/LmRpciB8fCBzaWRlYmFyWzBdPy5kaXI7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAge3NpZGViYXJcbiAgICAgICAgLmZpbHRlcihzID0+IHMuZGlyID09PSBhY3RpdmVTZWN0aW9uRGlyKVxuICAgICAgICAubWFwKChzZWN0aW9uLCBpKSA9PiAoXG4gICAgICAgICAgPFNpZGViYXJJdGVtcyBrZXk9e2l9IGl0ZW1zPXtzZWN0aW9uLmNoaWxkcmVufSBhY3RpdmVQYXRoPXtwYXRobmFtZX0gLz5cbiAgICAgICAgKSl9XG4gICAgPC8+XG4gICk7XG59XG4iXSwibmFtZXMiOlsiTGluayIsInVzZVBhdGhuYW1lIiwiU2lkZWJhckljb24iLCJpY29uIiwic3BhbiIsImNsYXNzTmFtZSIsIkZBX1NUWUxFX01BUCIsImZhciIsImZhcyIsImZhYiIsImZhbCIsImZhZCIsInBhcnRzIiwic3BsaXQiLCJjbHMiLCJzbGljZSIsImpvaW4iLCJpbmNsdWRlcyIsInRlc3QiLCJpIiwiaGFzQWN0aXZlQ2hpbGQiLCJpdGVtcyIsImFjdGl2ZVBhdGgiLCJpdGVtIiwiaHJlZiIsImNoaWxkcmVuIiwibGVuZ3RoIiwiU2lkZWJhckl0ZW1zIiwiZGVwdGgiLCJ1bCIsIm1hcCIsImlzQWN0aXZlIiwiaGFzQ2hpbGRyZW4iLCJpc0V4cGFuZGVkIiwibGkiLCJ0aXRsZSIsImRhdGEtc2lkZWJhci1ncm91cCIsImRhdGEtZXhwYW5kZWQiLCJkYXRhLXNpZGViYXItdG9nZ2xlIiwiZGl2IiwiaGlkZGVuIiwiZXh0ZXJuYWwiLCJ0YXJnZXQiLCJyZWwiLCJTaWRlYmFyTmF2Iiwic2lkZWJhciIsInBhdGhuYW1lIiwiZmlyc3RTZWdtZW50IiwiZmlsdGVyIiwiQm9vbGVhbiIsImFjdGl2ZVNlY3Rpb25EaXIiLCJmaW5kIiwicyIsImRpciIsIm5hdiIsInNlY3Rpb24iLCJmaXJzdEhyZWYiLCJTaWRlYmFyUGFuZWwiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./app/Sidebar.js\n");
149
+
150
+ /***/ }),
151
+
152
+ /***/ "../app-render/action-async-storage.external":
153
+ /*!*******************************************************************************!*\
154
+ !*** external "next/dist/server/app-render/action-async-storage.external.js" ***!
155
+ \*******************************************************************************/
156
+ /***/ ((module) => {
157
+
158
+ "use strict";
159
+ module.exports = require("next/dist/server/app-render/action-async-storage.external.js");
160
+
161
+ /***/ }),
162
+
163
+ /***/ "../app-render/after-task-async-storage.external":
164
+ /*!***********************************************************************************!*\
165
+ !*** external "next/dist/server/app-render/after-task-async-storage.external.js" ***!
166
+ \***********************************************************************************/
167
+ /***/ ((module) => {
168
+
169
+ "use strict";
170
+ module.exports = require("next/dist/server/app-render/after-task-async-storage.external.js");
171
+
172
+ /***/ }),
173
+
174
+ /***/ "../app-render/dynamic-access-async-storage.external":
175
+ /*!***************************************************************************************!*\
176
+ !*** external "next/dist/server/app-render/dynamic-access-async-storage.external.js" ***!
177
+ \***************************************************************************************/
178
+ /***/ ((module) => {
179
+
180
+ "use strict";
181
+ module.exports = require("next/dist/server/app-render/dynamic-access-async-storage.external.js");
182
+
183
+ /***/ }),
184
+
185
+ /***/ "./work-async-storage.external":
186
+ /*!*****************************************************************************!*\
187
+ !*** external "next/dist/server/app-render/work-async-storage.external.js" ***!
188
+ \*****************************************************************************/
189
+ /***/ ((module) => {
190
+
191
+ "use strict";
192
+ module.exports = require("next/dist/server/app-render/work-async-storage.external.js");
193
+
194
+ /***/ }),
195
+
196
+ /***/ "./work-unit-async-storage.external":
197
+ /*!**********************************************************************************!*\
198
+ !*** external "next/dist/server/app-render/work-unit-async-storage.external.js" ***!
199
+ \**********************************************************************************/
200
+ /***/ ((module) => {
201
+
202
+ "use strict";
203
+ module.exports = require("next/dist/server/app-render/work-unit-async-storage.external.js");
204
+
205
+ /***/ }),
206
+
207
+ /***/ "@readme/markdown":
208
+ /*!***********************************!*\
209
+ !*** external "@readme/markdown" ***!
210
+ \***********************************/
211
+ /***/ ((module) => {
212
+
213
+ "use strict";
214
+ module.exports = require("@readme/markdown");
215
+
216
+ /***/ }),
217
+
218
+ /***/ "fs":
219
+ /*!*********************!*\
220
+ !*** external "fs" ***!
221
+ \*********************/
222
+ /***/ ((module) => {
223
+
224
+ "use strict";
225
+ module.exports = require("fs");
226
+
227
+ /***/ }),
228
+
229
+ /***/ "gray-matter":
230
+ /*!******************************!*\
231
+ !*** external "gray-matter" ***!
232
+ \******************************/
233
+ /***/ ((module) => {
234
+
235
+ "use strict";
236
+ module.exports = require("gray-matter");
237
+
238
+ /***/ }),
239
+
240
+ /***/ "js-yaml":
241
+ /*!**************************!*\
242
+ !*** external "js-yaml" ***!
243
+ \**************************/
244
+ /***/ ((module) => {
245
+
246
+ "use strict";
247
+ module.exports = require("js-yaml");
248
+
249
+ /***/ }),
250
+
251
+ /***/ "module":
252
+ /*!*************************!*\
253
+ !*** external "module" ***!
254
+ \*************************/
255
+ /***/ ((module) => {
256
+
257
+ "use strict";
258
+ module.exports = require("module");
259
+
260
+ /***/ }),
261
+
262
+ /***/ "next/dist/compiled/next-server/app-page.runtime.dev.js":
263
+ /*!*************************************************************************!*\
264
+ !*** external "next/dist/compiled/next-server/app-page.runtime.dev.js" ***!
265
+ \*************************************************************************/
266
+ /***/ ((module) => {
267
+
268
+ "use strict";
269
+ module.exports = require("next/dist/compiled/next-server/app-page.runtime.dev.js");
270
+
271
+ /***/ }),
272
+
273
+ /***/ "next/dist/shared/lib/no-fallback-error.external":
274
+ /*!******************************************************************!*\
275
+ !*** external "next/dist/shared/lib/no-fallback-error.external" ***!
276
+ \******************************************************************/
277
+ /***/ ((module) => {
278
+
279
+ "use strict";
280
+ module.exports = require("next/dist/shared/lib/no-fallback-error.external");
281
+
282
+ /***/ }),
283
+
284
+ /***/ "next/dist/shared/lib/router/utils/app-paths":
285
+ /*!**************************************************************!*\
286
+ !*** external "next/dist/shared/lib/router/utils/app-paths" ***!
287
+ \**************************************************************/
288
+ /***/ ((module) => {
289
+
290
+ "use strict";
291
+ module.exports = require("next/dist/shared/lib/router/utils/app-paths");
292
+
293
+ /***/ }),
294
+
295
+ /***/ "next/dist/shared/lib/router/utils/is-bot":
296
+ /*!***********************************************************!*\
297
+ !*** external "next/dist/shared/lib/router/utils/is-bot" ***!
298
+ \***********************************************************/
299
+ /***/ ((module) => {
300
+
301
+ "use strict";
302
+ module.exports = require("next/dist/shared/lib/router/utils/is-bot");
303
+
304
+ /***/ }),
305
+
306
+ /***/ "node:module":
307
+ /*!******************************!*\
308
+ !*** external "node:module" ***!
309
+ \******************************/
310
+ /***/ ((module) => {
311
+
312
+ "use strict";
313
+ module.exports = require("node:module");
314
+
315
+ /***/ }),
316
+
317
+ /***/ "path":
318
+ /*!***********************!*\
319
+ !*** external "path" ***!
320
+ \***********************/
321
+ /***/ ((module) => {
322
+
323
+ "use strict";
324
+ module.exports = require("path");
325
+
326
+ /***/ }),
327
+
328
+ /***/ "util":
329
+ /*!***********************!*\
330
+ !*** external "util" ***!
331
+ \***********************/
332
+ /***/ ((module) => {
333
+
334
+ "use strict";
335
+ module.exports = require("util");
336
+
337
+ /***/ })
338
+
339
+ };
340
+ ;
341
+
342
+ // load runtime
343
+ var __webpack_require__ = require("../webpack-runtime.js");
344
+ __webpack_require__.C(exports);
345
+ var __webpack_exec__ = (moduleId) => (__webpack_require__(__webpack_require__.s = moduleId))
346
+ var __webpack_exports__ = __webpack_require__.X(0, ["vendor-chunks/next","vendor-chunks/@swc","vendor-chunks/@readme"], () => (__webpack_exec__("(rsc)/../../node_modules/next/dist/build/webpack/loaders/next-app-loader/index.js?name=app%2Fpage&page=%2Fpage&appPaths=%2Fpage&pagePath=private-next-app-dir%2Fpage.js&appDir=%2FUsers%2Fgkoberger%2FSites%2Freadme%2F2026-readme-cli%2Fsrc%2Fdev%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fgkoberger%2FSites%2Freadme%2F2026-readme-cli%2Fsrc%2Fdev&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D&isGlobalNotFoundEnabled=!")));
347
+ module.exports = __webpack_exports__;
348
+
349
+ })();