"use strict"; /* * ATTENTION: An "eval-source-map" devtool has been used. * This devtool is neither made for production nor for readable output files. * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) * or disable the default devtool with "devtool: false". * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). */ exports.id = "vendor-chunks/@radix-ui"; exports.ids = ["vendor-chunks/@radix-ui"]; exports.modules = { /***/ "(ssr)/./node_modules/@radix-ui/number/dist/index.mjs": /*!******************************************************!*\ !*** ./node_modules/@radix-ui/number/dist/index.mjs ***! \******************************************************/ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ clamp: () => (/* binding */ clamp)\n/* harmony export */ });\n// packages/core/number/src/number.ts\nfunction clamp(value, [min, max]) {\n return Math.min(max, Math.max(min, value));\n}\n\n//# sourceMappingURL=index.mjs.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL251bWJlci9kaXN0L2luZGV4Lm1qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFHRTtBQUNGIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vbXktdjAtcHJvamVjdC8uL25vZGVfbW9kdWxlcy9AcmFkaXgtdWkvbnVtYmVyL2Rpc3QvaW5kZXgubWpzP2MyMTciXSwic291cmNlc0NvbnRlbnQiOlsiLy8gcGFja2FnZXMvY29yZS9udW1iZXIvc3JjL251bWJlci50c1xuZnVuY3Rpb24gY2xhbXAodmFsdWUsIFttaW4sIG1heF0pIHtcbiAgcmV0dXJuIE1hdGgubWluKG1heCwgTWF0aC5tYXgobWluLCB2YWx1ZSkpO1xufVxuZXhwb3J0IHtcbiAgY2xhbXBcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tanMubWFwXG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/@radix-ui/number/dist/index.mjs\n"); /***/ }), /***/ "(ssr)/./node_modules/@radix-ui/primitive/dist/index.mjs": /*!*********************************************************!*\ !*** ./node_modules/@radix-ui/primitive/dist/index.mjs ***! \*********************************************************/ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ composeEventHandlers: () => (/* binding */ composeEventHandlers)\n/* harmony export */ });\n// packages/core/primitive/src/primitive.tsx\nfunction composeEventHandlers(originalEventHandler, ourEventHandler, { checkForDefaultPrevented = true } = {}) {\n return function handleEvent(event) {\n originalEventHandler?.(event);\n if (checkForDefaultPrevented === false || !event.defaultPrevented) {\n return ourEventHandler?.(event);\n }\n };\n}\n\n//# sourceMappingURL=index.mjs.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3ByaW1pdGl2ZS9kaXN0L2luZGV4Lm1qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDQSx1RUFBdUUsa0NBQWtDLElBQUk7QUFDN0c7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHRTtBQUNGIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vbXktdjAtcHJvamVjdC8uL25vZGVfbW9kdWxlcy9AcmFkaXgtdWkvcHJpbWl0aXZlL2Rpc3QvaW5kZXgubWpzP2M2N2YiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gcGFja2FnZXMvY29yZS9wcmltaXRpdmUvc3JjL3ByaW1pdGl2ZS50c3hcbmZ1bmN0aW9uIGNvbXBvc2VFdmVudEhhbmRsZXJzKG9yaWdpbmFsRXZlbnRIYW5kbGVyLCBvdXJFdmVudEhhbmRsZXIsIHsgY2hlY2tGb3JEZWZhdWx0UHJldmVudGVkID0gdHJ1ZSB9ID0ge30pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGhhbmRsZUV2ZW50KGV2ZW50KSB7XG4gICAgb3JpZ2luYWxFdmVudEhhbmRsZXI/LihldmVudCk7XG4gICAgaWYgKGNoZWNrRm9yRGVmYXVsdFByZXZlbnRlZCA9PT0gZmFsc2UgfHwgIWV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgIHJldHVybiBvdXJFdmVudEhhbmRsZXI/LihldmVudCk7XG4gICAgfVxuICB9O1xufVxuZXhwb3J0IHtcbiAgY29tcG9zZUV2ZW50SGFuZGxlcnNcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tanMubWFwXG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/@radix-ui/primitive/dist/index.mjs\n"); /***/ }), /***/ "(ssr)/./node_modules/@radix-ui/react-arrow/dist/index.mjs": /*!***********************************************************!*\ !*** ./node_modules/@radix-ui/react-arrow/dist/index.mjs ***! \***********************************************************/ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Arrow: () => (/* binding */ Arrow),\n/* harmony export */ Root: () => (/* binding */ Root)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var _radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @radix-ui/react-primitive */ \"(ssr)/./node_modules/@radix-ui/react-primitive/dist/index.mjs\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react-jsx-runtime.js\");\n// packages/react/arrow/src/Arrow.tsx\n\n\n\nvar NAME = \"Arrow\";\nvar Arrow = react__WEBPACK_IMPORTED_MODULE_0__.forwardRef((props, forwardedRef) => {\n const { children, width = 10, height = 5, ...arrowProps } = props;\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\n _radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_2__.Primitive.svg,\n {\n ...arrowProps,\n ref: forwardedRef,\n width,\n height,\n viewBox: \"0 0 30 10\",\n preserveAspectRatio: \"none\",\n children: props.asChild ? children : /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"polygon\", { points: \"0,0 30,0 15,10\" })\n }\n );\n});\nArrow.displayName = NAME;\nvar Root = Arrow;\n\n//# sourceMappingURL=index.mjs.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LWFycm93L2Rpc3QvaW5kZXgubWpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFDK0I7QUFDdUI7QUFDZDtBQUN4QztBQUNBLFlBQVksNkNBQWdCO0FBQzVCLFVBQVUsa0RBQWtEO0FBQzVELHlCQUF5QixzREFBRztBQUM1QixJQUFJLGdFQUFTO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyREFBMkQsc0RBQUcsY0FBYywwQkFBMEI7QUFDdEc7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBSUU7QUFDRiIsInNvdXJjZXMiOlsid2VicGFjazovL215LXYwLXByb2plY3QvLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LWFycm93L2Rpc3QvaW5kZXgubWpzPzUwNDAiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gcGFja2FnZXMvcmVhY3QvYXJyb3cvc3JjL0Fycm93LnRzeFxuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBQcmltaXRpdmUgfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXByaW1pdGl2ZVwiO1xuaW1wb3J0IHsganN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG52YXIgTkFNRSA9IFwiQXJyb3dcIjtcbnZhciBBcnJvdyA9IFJlYWN0LmZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpID0+IHtcbiAgY29uc3QgeyBjaGlsZHJlbiwgd2lkdGggPSAxMCwgaGVpZ2h0ID0gNSwgLi4uYXJyb3dQcm9wcyB9ID0gcHJvcHM7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KFxuICAgIFByaW1pdGl2ZS5zdmcsXG4gICAge1xuICAgICAgLi4uYXJyb3dQcm9wcyxcbiAgICAgIHJlZjogZm9yd2FyZGVkUmVmLFxuICAgICAgd2lkdGgsXG4gICAgICBoZWlnaHQsXG4gICAgICB2aWV3Qm94OiBcIjAgMCAzMCAxMFwiLFxuICAgICAgcHJlc2VydmVBc3BlY3RSYXRpbzogXCJub25lXCIsXG4gICAgICBjaGlsZHJlbjogcHJvcHMuYXNDaGlsZCA/IGNoaWxkcmVuIDogLyogQF9fUFVSRV9fICovIGpzeChcInBvbHlnb25cIiwgeyBwb2ludHM6IFwiMCwwIDMwLDAgMTUsMTBcIiB9KVxuICAgIH1cbiAgKTtcbn0pO1xuQXJyb3cuZGlzcGxheU5hbWUgPSBOQU1FO1xudmFyIFJvb3QgPSBBcnJvdztcbmV4cG9ydCB7XG4gIEFycm93LFxuICBSb290XG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubWpzLm1hcFxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/@radix-ui/react-arrow/dist/index.mjs\n"); /***/ }), /***/ "(ssr)/./node_modules/@radix-ui/react-avatar/dist/index.mjs": /*!************************************************************!*\ !*** ./node_modules/@radix-ui/react-avatar/dist/index.mjs ***! \************************************************************/ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Avatar: () => (/* binding */ Avatar),\n/* harmony export */ AvatarFallback: () => (/* binding */ AvatarFallback),\n/* harmony export */ AvatarImage: () => (/* binding */ AvatarImage),\n/* harmony export */ Fallback: () => (/* binding */ Fallback),\n/* harmony export */ Image: () => (/* binding */ Image),\n/* harmony export */ Root: () => (/* binding */ Root),\n/* harmony export */ createAvatarScope: () => (/* binding */ createAvatarScope)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var _radix_ui_react_context__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @radix-ui/react-context */ \"(ssr)/./node_modules/@radix-ui/react-context/dist/index.mjs\");\n/* harmony import */ var _radix_ui_react_use_callback_ref__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @radix-ui/react-use-callback-ref */ \"(ssr)/./node_modules/@radix-ui/react-use-callback-ref/dist/index.mjs\");\n/* harmony import */ var _radix_ui_react_use_layout_effect__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @radix-ui/react-use-layout-effect */ \"(ssr)/./node_modules/@radix-ui/react-use-layout-effect/dist/index.mjs\");\n/* harmony import */ var _radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @radix-ui/react-primitive */ \"(ssr)/./node_modules/@radix-ui/react-primitive/dist/index.mjs\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react-jsx-runtime.js\");\n/* __next_internal_client_entry_do_not_use__ Avatar,AvatarFallback,AvatarImage,Fallback,Image,Root,createAvatarScope auto */ // packages/react/avatar/src/Avatar.tsx\n\n\n\n\n\n\nvar AVATAR_NAME = \"Avatar\";\nvar [createAvatarContext, createAvatarScope] = (0,_radix_ui_react_context__WEBPACK_IMPORTED_MODULE_2__.createContextScope)(AVATAR_NAME);\nvar [AvatarProvider, useAvatarContext] = createAvatarContext(AVATAR_NAME);\nvar Avatar = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef((props, forwardedRef)=>{\n const { __scopeAvatar, ...avatarProps } = props;\n const [imageLoadingStatus, setImageLoadingStatus] = react__WEBPACK_IMPORTED_MODULE_0__.useState(\"idle\");\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(AvatarProvider, {\n scope: __scopeAvatar,\n imageLoadingStatus,\n onImageLoadingStatusChange: setImageLoadingStatus,\n children: /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_3__.Primitive.span, {\n ...avatarProps,\n ref: forwardedRef\n })\n });\n});\nAvatar.displayName = AVATAR_NAME;\nvar IMAGE_NAME = \"AvatarImage\";\nvar AvatarImage = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef((props, forwardedRef)=>{\n const { __scopeAvatar, src, onLoadingStatusChange = ()=>{}, ...imageProps } = props;\n const context = useAvatarContext(IMAGE_NAME, __scopeAvatar);\n const imageLoadingStatus = useImageLoadingStatus(src, imageProps.referrerPolicy);\n const handleLoadingStatusChange = (0,_radix_ui_react_use_callback_ref__WEBPACK_IMPORTED_MODULE_4__.useCallbackRef)((status)=>{\n onLoadingStatusChange(status);\n context.onImageLoadingStatusChange(status);\n });\n (0,_radix_ui_react_use_layout_effect__WEBPACK_IMPORTED_MODULE_5__.useLayoutEffect)(()=>{\n if (imageLoadingStatus !== \"idle\") {\n handleLoadingStatusChange(imageLoadingStatus);\n }\n }, [\n imageLoadingStatus,\n handleLoadingStatusChange\n ]);\n return imageLoadingStatus === \"loaded\" ? /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_3__.Primitive.img, {\n ...imageProps,\n ref: forwardedRef,\n src\n }) : null;\n});\nAvatarImage.displayName = IMAGE_NAME;\nvar FALLBACK_NAME = \"AvatarFallback\";\nvar AvatarFallback = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef((props, forwardedRef)=>{\n const { __scopeAvatar, delayMs, ...fallbackProps } = props;\n const context = useAvatarContext(FALLBACK_NAME, __scopeAvatar);\n const [canRender, setCanRender] = react__WEBPACK_IMPORTED_MODULE_0__.useState(delayMs === void 0);\n react__WEBPACK_IMPORTED_MODULE_0__.useEffect(()=>{\n if (delayMs !== void 0) {\n const timerId = window.setTimeout(()=>setCanRender(true), delayMs);\n return ()=>window.clearTimeout(timerId);\n }\n }, [\n delayMs\n ]);\n return canRender && context.imageLoadingStatus !== \"loaded\" ? /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_3__.Primitive.span, {\n ...fallbackProps,\n ref: forwardedRef\n }) : null;\n});\nAvatarFallback.displayName = FALLBACK_NAME;\nfunction useImageLoadingStatus(src, referrerPolicy) {\n const [loadingStatus, setLoadingStatus] = react__WEBPACK_IMPORTED_MODULE_0__.useState(\"idle\");\n (0,_radix_ui_react_use_layout_effect__WEBPACK_IMPORTED_MODULE_5__.useLayoutEffect)(()=>{\n if (!src) {\n setLoadingStatus(\"error\");\n return;\n }\n let isMounted = true;\n const image = new window.Image();\n const updateStatus = (status)=>()=>{\n if (!isMounted) return;\n setLoadingStatus(status);\n };\n setLoadingStatus(\"loading\");\n image.onload = updateStatus(\"loaded\");\n image.onerror = updateStatus(\"error\");\n image.src = src;\n if (referrerPolicy) {\n image.referrerPolicy = referrerPolicy;\n }\n return ()=>{\n isMounted = false;\n };\n }, [\n src,\n referrerPolicy\n ]);\n return loadingStatus;\n}\nvar Root = Avatar;\nvar Image = AvatarImage;\nvar Fallback = AvatarFallback;\n //# sourceMappingURL=index.mjs.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LWF2YXRhci9kaXN0L2luZGV4Lm1qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUF1QjtBQUNZO0FBQ0o7QUFDQztBQUNOO0FBb0NsQjtBQTVCUixJQUFNTSxjQUFjO0FBR3BCLElBQU0sQ0FBQ0MscUJBQXFCQyxrQkFBaUIsR0FBSVAsMkVBQWtCQSxDQUFDSztBQVNwRSxJQUFNLENBQUNHLGdCQUFnQkMsaUJBQWdCLEdBQUlILG9CQUF3Q0Q7QUFNbkYsSUFBTUssdUJBQWVYLDZDQUFBLENBQ25CLENBQUNhLE9BQWlDQztJQUNoQyxNQUFNLEVBQUVDLGFBQUEsRUFBZSxHQUFHQyxhQUFZLEdBQUlIO0lBQzFDLE1BQU0sQ0FBQ0ksb0JBQW9CQyxzQkFBcUIsR0FBVWxCLDJDQUFBLENBQTZCO0lBQ3ZGLE9BQ0UsZ0JBQUFLLHNEQUFBQSxDQUFDSSxnQkFBQTtRQUNDVyxPQUFPTDtRQUNQRTtRQUNBSSw0QkFBNEJIO1FBRTVCSSxVQUFBLGdCQUFBakIsc0RBQUFBLENBQUNELGdFQUFTQSxDQUFDbUIsSUFBQSxFQUFWO1lBQWdCLEdBQUdQLFdBQUE7WUFBYVEsS0FBS1Y7UUFBQTtJQUFjO0FBRzFEO0FBR0ZILE9BQU9jLFdBQUEsR0FBY25CO0FBTXJCLElBQU1vQixhQUFhO0FBUW5CLElBQU1DLDRCQUFvQjNCLDZDQUFBLENBQ3hCLENBQUNhLE9BQXNDQztJQUNyQyxNQUFNLEVBQUVDLGFBQUEsRUFBZWEsR0FBQSxFQUFLQyx3QkFBd0IsS0FBTyxHQUFHLEdBQUdDLFlBQVcsR0FBSWpCO0lBQ2hGLE1BQU1rQixVQUFVckIsaUJBQWlCZ0IsWUFBWVg7SUFDN0MsTUFBTUUscUJBQXFCZSxzQkFBc0JKLEtBQUtFLFdBQVdHLGNBQWM7SUFDL0UsTUFBTUMsNEJBQTRCaEMsZ0ZBQWNBLENBQUMsQ0FBQ2lDO1FBQ2hETixzQkFBc0JNO1FBQ3RCSixRQUFRViwwQkFBQSxDQUEyQmM7SUFDckM7SUFFQWhDLGtGQUFlQSxDQUFDO1FBQ2QsSUFBSWMsdUJBQXVCLFFBQVE7WUFDakNpQiwwQkFBMEJqQjtRQUM1QjtJQUNGLEdBQUc7UUFBQ0E7UUFBb0JpQjtLQUEwQjtJQUVsRCxPQUFPakIsdUJBQXVCLFdBQzVCLGdCQUFBWixzREFBQUEsQ0FBQ0QsZ0VBQVNBLENBQUNnQyxHQUFBLEVBQVY7UUFBZSxHQUFHTixVQUFBO1FBQVlOLEtBQUtWO1FBQWNjO0lBQUEsS0FDaEQ7QUFDTjtBQUdGRCxZQUFZRixXQUFBLEdBQWNDO0FBTTFCLElBQU1XLGdCQUFnQjtBQU90QixJQUFNQywrQkFBdUJ0Qyw2Q0FBQSxDQUMzQixDQUFDYSxPQUF5Q0M7SUFDeEMsTUFBTSxFQUFFQyxhQUFBLEVBQWV3QixPQUFBLEVBQVMsR0FBR0MsZUFBYyxHQUFJM0I7SUFDckQsTUFBTWtCLFVBQVVyQixpQkFBaUIyQixlQUFldEI7SUFDaEQsTUFBTSxDQUFDMEIsV0FBV0MsYUFBWSxHQUFVMUMsMkNBQUEsQ0FBU3VDLFlBQVk7SUFFdkR2Qyw0Q0FBQSxDQUFVO1FBQ2QsSUFBSXVDLFlBQVksUUFBVztZQUN6QixNQUFNSyxVQUFVQyxPQUFPQyxVQUFBLENBQVcsSUFBTUosYUFBYSxPQUFPSDtZQUM1RCxPQUFPLElBQU1NLE9BQU9FLFlBQUEsQ0FBYUg7UUFDbkM7SUFDRixHQUFHO1FBQUNMO0tBQVE7SUFFWixPQUFPRSxhQUFhVixRQUFRZCxrQkFBQSxLQUF1QixXQUNqRCxnQkFBQVosc0RBQUFBLENBQUNELGdFQUFTQSxDQUFDbUIsSUFBQSxFQUFWO1FBQWdCLEdBQUdpQixhQUFBO1FBQWVoQixLQUFLVjtJQUFBLEtBQ3RDO0FBQ047QUFHRndCLGVBQWViLFdBQUEsR0FBY1k7QUFJN0IsU0FBU0wsc0JBQXNCSixHQUFBLEVBQWNLLGNBQUE7SUFDM0MsTUFBTSxDQUFDZSxlQUFlQyxpQkFBZ0IsR0FBVWpELDJDQUFBLENBQTZCO0lBRTdFRyxrRkFBZUEsQ0FBQztRQUNkLElBQUksQ0FBQ3lCLEtBQUs7WUFDUnFCLGlCQUFpQjtZQUNqQjtRQUNGO1FBRUEsSUFBSUMsWUFBWTtRQUNoQixNQUFNQyxRQUFRLElBQUlOLE9BQU9PLEtBQUE7UUFFekIsTUFBTUMsZUFBZSxDQUFDbEIsU0FBK0I7Z0JBQ25ELElBQUksQ0FBQ2UsV0FBVztnQkFDaEJELGlCQUFpQmQ7WUFDbkI7UUFFQWMsaUJBQWlCO1FBQ2pCRSxNQUFNRyxNQUFBLEdBQVNELGFBQWE7UUFDNUJGLE1BQU1JLE9BQUEsR0FBVUYsYUFBYTtRQUM3QkYsTUFBTXZCLEdBQUEsR0FBTUE7UUFDWixJQUFJSyxnQkFBZ0I7WUFDbEJrQixNQUFNbEIsY0FBQSxHQUFpQkE7UUFDekI7UUFFQSxPQUFPO1lBQ0xpQixZQUFZO1FBQ2Q7SUFDRixHQUFHO1FBQUN0QjtRQUFLSztLQUFlO0lBRXhCLE9BQU9lO0FBQ1Q7QUFDQSxJQUFNUSxPQUFPN0M7QUFDYixJQUFNeUMsUUFBUXpCO0FBQ2QsSUFBTThCLFdBQVduQiIsInNvdXJjZXMiOlsid2VicGFjazovL215LXYwLXByb2plY3QvLi4vc3JjL0F2YXRhci50c3g/MjMyMCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBjcmVhdGVDb250ZXh0U2NvcGUgfSBmcm9tICdAcmFkaXgtdWkvcmVhY3QtY29udGV4dCc7XG5pbXBvcnQgeyB1c2VDYWxsYmFja1JlZiB9IGZyb20gJ0ByYWRpeC11aS9yZWFjdC11c2UtY2FsbGJhY2stcmVmJztcbmltcG9ydCB7IHVzZUxheW91dEVmZmVjdCB9IGZyb20gJ0ByYWRpeC11aS9yZWFjdC11c2UtbGF5b3V0LWVmZmVjdCc7XG5pbXBvcnQgeyBQcmltaXRpdmUgfSBmcm9tICdAcmFkaXgtdWkvcmVhY3QtcHJpbWl0aXZlJztcblxuaW1wb3J0IHR5cGUgeyBTY29wZSB9IGZyb20gJ0ByYWRpeC11aS9yZWFjdC1jb250ZXh0JztcblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogQXZhdGFyXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbmNvbnN0IEFWQVRBUl9OQU1FID0gJ0F2YXRhcic7XG5cbnR5cGUgU2NvcGVkUHJvcHM8UD4gPSBQICYgeyBfX3Njb3BlQXZhdGFyPzogU2NvcGUgfTtcbmNvbnN0IFtjcmVhdGVBdmF0YXJDb250ZXh0LCBjcmVhdGVBdmF0YXJTY29wZV0gPSBjcmVhdGVDb250ZXh0U2NvcGUoQVZBVEFSX05BTUUpO1xuXG50eXBlIEltYWdlTG9hZGluZ1N0YXR1cyA9ICdpZGxlJyB8ICdsb2FkaW5nJyB8ICdsb2FkZWQnIHwgJ2Vycm9yJztcblxudHlwZSBBdmF0YXJDb250ZXh0VmFsdWUgPSB7XG4gIGltYWdlTG9hZGluZ1N0YXR1czogSW1hZ2VMb2FkaW5nU3RhdHVzO1xuICBvbkltYWdlTG9hZGluZ1N0YXR1c0NoYW5nZShzdGF0dXM6IEltYWdlTG9hZGluZ1N0YXR1cyk6IHZvaWQ7XG59O1xuXG5jb25zdCBbQXZhdGFyUHJvdmlkZXIsIHVzZUF2YXRhckNvbnRleHRdID0gY3JlYXRlQXZhdGFyQ29udGV4dDxBdmF0YXJDb250ZXh0VmFsdWU+KEFWQVRBUl9OQU1FKTtcblxudHlwZSBBdmF0YXJFbGVtZW50ID0gUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgUHJpbWl0aXZlLnNwYW4+O1xudHlwZSBQcmltaXRpdmVTcGFuUHJvcHMgPSBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIFByaW1pdGl2ZS5zcGFuPjtcbmludGVyZmFjZSBBdmF0YXJQcm9wcyBleHRlbmRzIFByaW1pdGl2ZVNwYW5Qcm9wcyB7fVxuXG5jb25zdCBBdmF0YXIgPSBSZWFjdC5mb3J3YXJkUmVmPEF2YXRhckVsZW1lbnQsIEF2YXRhclByb3BzPihcbiAgKHByb3BzOiBTY29wZWRQcm9wczxBdmF0YXJQcm9wcz4sIGZvcndhcmRlZFJlZikgPT4ge1xuICAgIGNvbnN0IHsgX19zY29wZUF2YXRhciwgLi4uYXZhdGFyUHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IFtpbWFnZUxvYWRpbmdTdGF0dXMsIHNldEltYWdlTG9hZGluZ1N0YXR1c10gPSBSZWFjdC51c2VTdGF0ZTxJbWFnZUxvYWRpbmdTdGF0dXM+KCdpZGxlJyk7XG4gICAgcmV0dXJuIChcbiAgICAgIDxBdmF0YXJQcm92aWRlclxuICAgICAgICBzY29wZT17X19zY29wZUF2YXRhcn1cbiAgICAgICAgaW1hZ2VMb2FkaW5nU3RhdHVzPXtpbWFnZUxvYWRpbmdTdGF0dXN9XG4gICAgICAgIG9uSW1hZ2VMb2FkaW5nU3RhdHVzQ2hhbmdlPXtzZXRJbWFnZUxvYWRpbmdTdGF0dXN9XG4gICAgICA+XG4gICAgICAgIDxQcmltaXRpdmUuc3BhbiB7Li4uYXZhdGFyUHJvcHN9IHJlZj17Zm9yd2FyZGVkUmVmfSAvPlxuICAgICAgPC9BdmF0YXJQcm92aWRlcj5cbiAgICApO1xuICB9XG4pO1xuXG5BdmF0YXIuZGlzcGxheU5hbWUgPSBBVkFUQVJfTkFNRTtcblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogQXZhdGFySW1hZ2VcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuY29uc3QgSU1BR0VfTkFNRSA9ICdBdmF0YXJJbWFnZSc7XG5cbnR5cGUgQXZhdGFySW1hZ2VFbGVtZW50ID0gUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgUHJpbWl0aXZlLmltZz47XG50eXBlIFByaW1pdGl2ZUltYWdlUHJvcHMgPSBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIFByaW1pdGl2ZS5pbWc+O1xuaW50ZXJmYWNlIEF2YXRhckltYWdlUHJvcHMgZXh0ZW5kcyBQcmltaXRpdmVJbWFnZVByb3BzIHtcbiAgb25Mb2FkaW5nU3RhdHVzQ2hhbmdlPzogKHN0YXR1czogSW1hZ2VMb2FkaW5nU3RhdHVzKSA9PiB2b2lkO1xufVxuXG5jb25zdCBBdmF0YXJJbWFnZSA9IFJlYWN0LmZvcndhcmRSZWY8QXZhdGFySW1hZ2VFbGVtZW50LCBBdmF0YXJJbWFnZVByb3BzPihcbiAgKHByb3BzOiBTY29wZWRQcm9wczxBdmF0YXJJbWFnZVByb3BzPiwgZm9yd2FyZGVkUmVmKSA9PiB7XG4gICAgY29uc3QgeyBfX3Njb3BlQXZhdGFyLCBzcmMsIG9uTG9hZGluZ1N0YXR1c0NoYW5nZSA9ICgpID0+IHt9LCAuLi5pbWFnZVByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBjb250ZXh0ID0gdXNlQXZhdGFyQ29udGV4dChJTUFHRV9OQU1FLCBfX3Njb3BlQXZhdGFyKTtcbiAgICBjb25zdCBpbWFnZUxvYWRpbmdTdGF0dXMgPSB1c2VJbWFnZUxvYWRpbmdTdGF0dXMoc3JjLCBpbWFnZVByb3BzLnJlZmVycmVyUG9saWN5KTtcbiAgICBjb25zdCBoYW5kbGVMb2FkaW5nU3RhdHVzQ2hhbmdlID0gdXNlQ2FsbGJhY2tSZWYoKHN0YXR1czogSW1hZ2VMb2FkaW5nU3RhdHVzKSA9PiB7XG4gICAgICBvbkxvYWRpbmdTdGF0dXNDaGFuZ2Uoc3RhdHVzKTtcbiAgICAgIGNvbnRleHQub25JbWFnZUxvYWRpbmdTdGF0dXNDaGFuZ2Uoc3RhdHVzKTtcbiAgICB9KTtcblxuICAgIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAoaW1hZ2VMb2FkaW5nU3RhdHVzICE9PSAnaWRsZScpIHtcbiAgICAgICAgaGFuZGxlTG9hZGluZ1N0YXR1c0NoYW5nZShpbWFnZUxvYWRpbmdTdGF0dXMpO1xuICAgICAgfVxuICAgIH0sIFtpbWFnZUxvYWRpbmdTdGF0dXMsIGhhbmRsZUxvYWRpbmdTdGF0dXNDaGFuZ2VdKTtcblxuICAgIHJldHVybiBpbWFnZUxvYWRpbmdTdGF0dXMgPT09ICdsb2FkZWQnID8gKFxuICAgICAgPFByaW1pdGl2ZS5pbWcgey4uLmltYWdlUHJvcHN9IHJlZj17Zm9yd2FyZGVkUmVmfSBzcmM9e3NyY30gLz5cbiAgICApIDogbnVsbDtcbiAgfVxuKTtcblxuQXZhdGFySW1hZ2UuZGlzcGxheU5hbWUgPSBJTUFHRV9OQU1FO1xuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBBdmF0YXJGYWxsYmFja1xuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG5jb25zdCBGQUxMQkFDS19OQU1FID0gJ0F2YXRhckZhbGxiYWNrJztcblxudHlwZSBBdmF0YXJGYWxsYmFja0VsZW1lbnQgPSBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBQcmltaXRpdmUuc3Bhbj47XG5pbnRlcmZhY2UgQXZhdGFyRmFsbGJhY2tQcm9wcyBleHRlbmRzIFByaW1pdGl2ZVNwYW5Qcm9wcyB7XG4gIGRlbGF5TXM/OiBudW1iZXI7XG59XG5cbmNvbnN0IEF2YXRhckZhbGxiYWNrID0gUmVhY3QuZm9yd2FyZFJlZjxBdmF0YXJGYWxsYmFja0VsZW1lbnQsIEF2YXRhckZhbGxiYWNrUHJvcHM+KFxuICAocHJvcHM6IFNjb3BlZFByb3BzPEF2YXRhckZhbGxiYWNrUHJvcHM+LCBmb3J3YXJkZWRSZWYpID0+IHtcbiAgICBjb25zdCB7IF9fc2NvcGVBdmF0YXIsIGRlbGF5TXMsIC4uLmZhbGxiYWNrUHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNvbnRleHQgPSB1c2VBdmF0YXJDb250ZXh0KEZBTExCQUNLX05BTUUsIF9fc2NvcGVBdmF0YXIpO1xuICAgIGNvbnN0IFtjYW5SZW5kZXIsIHNldENhblJlbmRlcl0gPSBSZWFjdC51c2VTdGF0ZShkZWxheU1zID09PSB1bmRlZmluZWQpO1xuXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGlmIChkZWxheU1zICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc3QgdGltZXJJZCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHNldENhblJlbmRlcih0cnVlKSwgZGVsYXlNcyk7XG4gICAgICAgIHJldHVybiAoKSA9PiB3aW5kb3cuY2xlYXJUaW1lb3V0KHRpbWVySWQpO1xuICAgICAgfVxuICAgIH0sIFtkZWxheU1zXSk7XG5cbiAgICByZXR1cm4gY2FuUmVuZGVyICYmIGNvbnRleHQuaW1hZ2VMb2FkaW5nU3RhdHVzICE9PSAnbG9hZGVkJyA/IChcbiAgICAgIDxQcmltaXRpdmUuc3BhbiB7Li4uZmFsbGJhY2tQcm9wc30gcmVmPXtmb3J3YXJkZWRSZWZ9IC8+XG4gICAgKSA6IG51bGw7XG4gIH1cbik7XG5cbkF2YXRhckZhbGxiYWNrLmRpc3BsYXlOYW1lID0gRkFMTEJBQ0tfTkFNRTtcblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG5mdW5jdGlvbiB1c2VJbWFnZUxvYWRpbmdTdGF0dXMoc3JjPzogc3RyaW5nLCByZWZlcnJlclBvbGljeT86IFJlYWN0LkhUTUxBdHRyaWJ1dGVSZWZlcnJlclBvbGljeSkge1xuICBjb25zdCBbbG9hZGluZ1N0YXR1cywgc2V0TG9hZGluZ1N0YXR1c10gPSBSZWFjdC51c2VTdGF0ZTxJbWFnZUxvYWRpbmdTdGF0dXM+KCdpZGxlJyk7XG5cbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXNyYykge1xuICAgICAgc2V0TG9hZGluZ1N0YXR1cygnZXJyb3InKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgaXNNb3VudGVkID0gdHJ1ZTtcbiAgICBjb25zdCBpbWFnZSA9IG5ldyB3aW5kb3cuSW1hZ2UoKTtcblxuICAgIGNvbnN0IHVwZGF0ZVN0YXR1cyA9IChzdGF0dXM6IEltYWdlTG9hZGluZ1N0YXR1cykgPT4gKCkgPT4ge1xuICAgICAgaWYgKCFpc01vdW50ZWQpIHJldHVybjtcbiAgICAgIHNldExvYWRpbmdTdGF0dXMoc3RhdHVzKTtcbiAgICB9O1xuXG4gICAgc2V0TG9hZGluZ1N0YXR1cygnbG9hZGluZycpO1xuICAgIGltYWdlLm9ubG9hZCA9IHVwZGF0ZVN0YXR1cygnbG9hZGVkJyk7XG4gICAgaW1hZ2Uub25lcnJvciA9IHVwZGF0ZVN0YXR1cygnZXJyb3InKTtcbiAgICBpbWFnZS5zcmMgPSBzcmM7XG4gICAgaWYgKHJlZmVycmVyUG9saWN5KSB7XG4gICAgICBpbWFnZS5yZWZlcnJlclBvbGljeSA9IHJlZmVycmVyUG9saWN5O1xuICAgIH1cblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBpc01vdW50ZWQgPSBmYWxzZTtcbiAgICB9O1xuICB9LCBbc3JjLCByZWZlcnJlclBvbGljeV0pO1xuXG4gIHJldHVybiBsb2FkaW5nU3RhdHVzO1xufVxuY29uc3QgUm9vdCA9IEF2YXRhcjtcbmNvbnN0IEltYWdlID0gQXZhdGFySW1hZ2U7XG5jb25zdCBGYWxsYmFjayA9IEF2YXRhckZhbGxiYWNrO1xuXG5leHBvcnQge1xuICBjcmVhdGVBdmF0YXJTY29wZSxcbiAgLy9cbiAgQXZhdGFyLFxuICBBdmF0YXJJbWFnZSxcbiAgQXZhdGFyRmFsbGJhY2ssXG4gIC8vXG4gIFJvb3QsXG4gIEltYWdlLFxuICBGYWxsYmFjayxcbn07XG5leHBvcnQgdHlwZSB7IEF2YXRhclByb3BzLCBBdmF0YXJJbWFnZVByb3BzLCBBdmF0YXJGYWxsYmFja1Byb3BzIH07XG4iXSwibmFtZXMiOlsiUmVhY3QiLCJjcmVhdGVDb250ZXh0U2NvcGUiLCJ1c2VDYWxsYmFja1JlZiIsInVzZUxheW91dEVmZmVjdCIsIlByaW1pdGl2ZSIsImpzeCIsIkFWQVRBUl9OQU1FIiwiY3JlYXRlQXZhdGFyQ29udGV4dCIsImNyZWF0ZUF2YXRhclNjb3BlIiwiQXZhdGFyUHJvdmlkZXIiLCJ1c2VBdmF0YXJDb250ZXh0IiwiQXZhdGFyIiwiZm9yd2FyZFJlZiIsInByb3BzIiwiZm9yd2FyZGVkUmVmIiwiX19zY29wZUF2YXRhciIsImF2YXRhclByb3BzIiwiaW1hZ2VMb2FkaW5nU3RhdHVzIiwic2V0SW1hZ2VMb2FkaW5nU3RhdHVzIiwidXNlU3RhdGUiLCJzY29wZSIsIm9uSW1hZ2VMb2FkaW5nU3RhdHVzQ2hhbmdlIiwiY2hpbGRyZW4iLCJzcGFuIiwicmVmIiwiZGlzcGxheU5hbWUiLCJJTUFHRV9OQU1FIiwiQXZhdGFySW1hZ2UiLCJzcmMiLCJvbkxvYWRpbmdTdGF0dXNDaGFuZ2UiLCJpbWFnZVByb3BzIiwiY29udGV4dCIsInVzZUltYWdlTG9hZGluZ1N0YXR1cyIsInJlZmVycmVyUG9saWN5IiwiaGFuZGxlTG9hZGluZ1N0YXR1c0NoYW5nZSIsInN0YXR1cyIsImltZyIsIkZBTExCQUNLX05BTUUiLCJBdmF0YXJGYWxsYmFjayIsImRlbGF5TXMiLCJmYWxsYmFja1Byb3BzIiwiY2FuUmVuZGVyIiwic2V0Q2FuUmVuZGVyIiwidXNlRWZmZWN0IiwidGltZXJJZCIsIndpbmRvdyIsInNldFRpbWVvdXQiLCJjbGVhclRpbWVvdXQiLCJsb2FkaW5nU3RhdHVzIiwic2V0TG9hZGluZ1N0YXR1cyIsImlzTW91bnRlZCIsImltYWdlIiwiSW1hZ2UiLCJ1cGRhdGVTdGF0dXMiLCJvbmxvYWQiLCJvbmVycm9yIiwiUm9vdCIsIkZhbGxiYWNrIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/@radix-ui/react-avatar/dist/index.mjs\n"); /***/ }), /***/ "(ssr)/./node_modules/@radix-ui/react-checkbox/dist/index.mjs": /*!**************************************************************!*\ !*** ./node_modules/@radix-ui/react-checkbox/dist/index.mjs ***! \**************************************************************/ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Checkbox: () => (/* binding */ Checkbox),\n/* harmony export */ CheckboxIndicator: () => (/* binding */ CheckboxIndicator),\n/* harmony export */ Indicator: () => (/* binding */ Indicator),\n/* harmony export */ Root: () => (/* binding */ Root),\n/* harmony export */ createCheckboxScope: () => (/* binding */ createCheckboxScope)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var _radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @radix-ui/react-compose-refs */ \"(ssr)/./node_modules/@radix-ui/react-compose-refs/dist/index.mjs\");\n/* harmony import */ var _radix_ui_react_context__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @radix-ui/react-context */ \"(ssr)/./node_modules/@radix-ui/react-context/dist/index.mjs\");\n/* harmony import */ var _radix_ui_primitive__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @radix-ui/primitive */ \"(ssr)/./node_modules/@radix-ui/primitive/dist/index.mjs\");\n/* harmony import */ var _radix_ui_react_use_controllable_state__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @radix-ui/react-use-controllable-state */ \"(ssr)/./node_modules/@radix-ui/react-use-controllable-state/dist/index.mjs\");\n/* harmony import */ var _radix_ui_react_use_previous__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @radix-ui/react-use-previous */ \"(ssr)/./node_modules/@radix-ui/react-use-previous/dist/index.mjs\");\n/* harmony import */ var _radix_ui_react_use_size__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @radix-ui/react-use-size */ \"(ssr)/./node_modules/@radix-ui/react-use-size/dist/index.mjs\");\n/* harmony import */ var _radix_ui_react_presence__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @radix-ui/react-presence */ \"(ssr)/./node_modules/@radix-ui/react-presence/dist/index.mjs\");\n/* harmony import */ var _radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @radix-ui/react-primitive */ \"(ssr)/./node_modules/@radix-ui/react-primitive/dist/index.mjs\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react-jsx-runtime.js\");\n/* __next_internal_client_entry_do_not_use__ Checkbox,CheckboxIndicator,Indicator,Root,createCheckboxScope auto */ // packages/react/checkbox/src/Checkbox.tsx\n\n\n\n\n\n\n\n\n\n\nvar CHECKBOX_NAME = \"Checkbox\";\nvar [createCheckboxContext, createCheckboxScope] = (0,_radix_ui_react_context__WEBPACK_IMPORTED_MODULE_2__.createContextScope)(CHECKBOX_NAME);\nvar [CheckboxProvider, useCheckboxContext] = createCheckboxContext(CHECKBOX_NAME);\nvar Checkbox = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef((props, forwardedRef)=>{\n const { __scopeCheckbox, name, checked: checkedProp, defaultChecked, required, disabled, value = \"on\", onCheckedChange, form, ...checkboxProps } = props;\n const [button, setButton] = react__WEBPACK_IMPORTED_MODULE_0__.useState(null);\n const composedRefs = (0,_radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_3__.useComposedRefs)(forwardedRef, (node)=>setButton(node));\n const hasConsumerStoppedPropagationRef = react__WEBPACK_IMPORTED_MODULE_0__.useRef(false);\n const isFormControl = button ? form || !!button.closest(\"form\") : true;\n const [checked = false, setChecked] = (0,_radix_ui_react_use_controllable_state__WEBPACK_IMPORTED_MODULE_4__.useControllableState)({\n prop: checkedProp,\n defaultProp: defaultChecked,\n onChange: onCheckedChange\n });\n const initialCheckedStateRef = react__WEBPACK_IMPORTED_MODULE_0__.useRef(checked);\n react__WEBPACK_IMPORTED_MODULE_0__.useEffect(()=>{\n const form2 = button?.form;\n if (form2) {\n const reset = ()=>setChecked(initialCheckedStateRef.current);\n form2.addEventListener(\"reset\", reset);\n return ()=>form2.removeEventListener(\"reset\", reset);\n }\n }, [\n button,\n setChecked\n ]);\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsxs)(CheckboxProvider, {\n scope: __scopeCheckbox,\n state: checked,\n disabled,\n children: [\n /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_5__.Primitive.button, {\n type: \"button\",\n role: \"checkbox\",\n \"aria-checked\": isIndeterminate(checked) ? \"mixed\" : checked,\n \"aria-required\": required,\n \"data-state\": getState(checked),\n \"data-disabled\": disabled ? \"\" : void 0,\n disabled,\n value,\n ...checkboxProps,\n ref: composedRefs,\n onKeyDown: (0,_radix_ui_primitive__WEBPACK_IMPORTED_MODULE_6__.composeEventHandlers)(props.onKeyDown, (event)=>{\n if (event.key === \"Enter\") event.preventDefault();\n }),\n onClick: (0,_radix_ui_primitive__WEBPACK_IMPORTED_MODULE_6__.composeEventHandlers)(props.onClick, (event)=>{\n setChecked((prevChecked)=>isIndeterminate(prevChecked) ? true : !prevChecked);\n if (isFormControl) {\n hasConsumerStoppedPropagationRef.current = event.isPropagationStopped();\n if (!hasConsumerStoppedPropagationRef.current) event.stopPropagation();\n }\n })\n }),\n isFormControl && /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(BubbleInput, {\n control: button,\n bubbles: !hasConsumerStoppedPropagationRef.current,\n name,\n value,\n checked,\n required,\n disabled,\n form,\n style: {\n transform: \"translateX(-100%)\"\n },\n defaultChecked: isIndeterminate(defaultChecked) ? false : defaultChecked\n })\n ]\n });\n});\nCheckbox.displayName = CHECKBOX_NAME;\nvar INDICATOR_NAME = \"CheckboxIndicator\";\nvar CheckboxIndicator = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef((props, forwardedRef)=>{\n const { __scopeCheckbox, forceMount, ...indicatorProps } = props;\n const context = useCheckboxContext(INDICATOR_NAME, __scopeCheckbox);\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_radix_ui_react_presence__WEBPACK_IMPORTED_MODULE_7__.Presence, {\n present: forceMount || isIndeterminate(context.state) || context.state === true,\n children: /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_5__.Primitive.span, {\n \"data-state\": getState(context.state),\n \"data-disabled\": context.disabled ? \"\" : void 0,\n ...indicatorProps,\n ref: forwardedRef,\n style: {\n pointerEvents: \"none\",\n ...props.style\n }\n })\n });\n});\nCheckboxIndicator.displayName = INDICATOR_NAME;\nvar BubbleInput = (props)=>{\n const { control, checked, bubbles = true, defaultChecked, ...inputProps } = props;\n const ref = react__WEBPACK_IMPORTED_MODULE_0__.useRef(null);\n const prevChecked = (0,_radix_ui_react_use_previous__WEBPACK_IMPORTED_MODULE_8__.usePrevious)(checked);\n const controlSize = (0,_radix_ui_react_use_size__WEBPACK_IMPORTED_MODULE_9__.useSize)(control);\n react__WEBPACK_IMPORTED_MODULE_0__.useEffect(()=>{\n const input = ref.current;\n const inputProto = window.HTMLInputElement.prototype;\n const descriptor = Object.getOwnPropertyDescriptor(inputProto, \"checked\");\n const setChecked = descriptor.set;\n if (prevChecked !== checked && setChecked) {\n const event = new Event(\"click\", {\n bubbles\n });\n input.indeterminate = isIndeterminate(checked);\n setChecked.call(input, isIndeterminate(checked) ? false : checked);\n input.dispatchEvent(event);\n }\n }, [\n prevChecked,\n checked,\n bubbles\n ]);\n const defaultCheckedRef = react__WEBPACK_IMPORTED_MODULE_0__.useRef(isIndeterminate(checked) ? false : checked);\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"input\", {\n type: \"checkbox\",\n \"aria-hidden\": true,\n defaultChecked: defaultChecked ?? defaultCheckedRef.current,\n ...inputProps,\n tabIndex: -1,\n ref,\n style: {\n ...props.style,\n ...controlSize,\n position: \"absolute\",\n pointerEvents: \"none\",\n opacity: 0,\n margin: 0\n }\n });\n};\nfunction isIndeterminate(checked) {\n return checked === \"indeterminate\";\n}\nfunction getState(checked) {\n return isIndeterminate(checked) ? \"indeterminate\" : checked ? \"checked\" : \"unchecked\";\n}\nvar Root = Checkbox;\nvar Indicator = CheckboxIndicator;\n //# sourceMappingURL=index.mjs.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LWNoZWNrYm94L2Rpc3QvaW5kZXgubWpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBdUI7QUFDUztBQUNHO0FBQ0U7QUFDQTtBQUNUO0FBQ0o7QUFDQztBQUNDO0FBbUVwQjtBQTNETixJQUFNVyxnQkFBZ0I7QUFHdEIsSUFBTSxDQUFDQyx1QkFBdUJDLG9CQUFtQixHQUFJWCwyRUFBa0JBLENBQUNTO0FBU3hFLElBQU0sQ0FBQ0csa0JBQWtCQyxtQkFBa0IsR0FDekNILHNCQUE0Q0Q7QUFXOUMsSUFBTUsseUJBQWlCaEIsNkNBQUEsQ0FDckIsQ0FBQ2tCLE9BQW1DQztJQUNsQyxNQUFNLEVBQ0pDLGVBQUEsRUFDQUMsSUFBQSxFQUNBQyxTQUFTQyxXQUFBLEVBQ1RDLGNBQUEsRUFDQUMsUUFBQSxFQUNBQyxRQUFBLEVBQ0FDLFFBQVEsTUFDUkMsZUFBQSxFQUNBQyxJQUFBLEVBQ0EsR0FBR0MsZUFDTCxHQUFJWjtJQUNKLE1BQU0sQ0FBQ2EsUUFBUUMsVUFBUyxHQUFVaEMsMkNBQUEsQ0FBbUM7SUFDckUsTUFBTWtDLGVBQWVqQyw2RUFBZUEsQ0FBQ2tCLGNBQWMsQ0FBQ2dCLE9BQVNILFVBQVVHO0lBQ3ZFLE1BQU1DLG1DQUF5Q3BDLHlDQUFBLENBQU87SUFFdEQsTUFBTXNDLGdCQUFnQlAsU0FBU0YsUUFBUSxDQUFDLENBQUNFLE9BQU9RLE9BQUEsQ0FBUSxVQUFVO0lBQ2xFLE1BQU0sQ0FBQ2pCLFVBQVUsT0FBT2tCLFdBQVUsR0FBSXBDLDRGQUFvQkEsQ0FBQztRQUN6RHFDLE1BQU1sQjtRQUNObUIsYUFBYWxCO1FBQ2JtQixVQUFVZjtJQUNaO0lBQ0EsTUFBTWdCLHlCQUErQjVDLHlDQUFBLENBQU9zQjtJQUN0Q3RCLDRDQUFBLENBQVU7UUFDZCxNQUFNNkIsUUFBT0UsUUFBUUY7UUFDckIsSUFBSUEsT0FBTTtZQUNSLE1BQU1pQixRQUFRLElBQU1OLFdBQVdJLHVCQUF1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QU9DLGdCQUFBLENBQWlCQyxTQUFBO1FBQzNDLE1BQU1DLGFBQWFDLE9BQU9DLHdCQUFBLENBQXlCTixZQUFZO1FBQy9ELE1BQU0zQyxhQUFhK0MsV0FBV0csR0FBQTtRQUU5QixJQUFJM0IsZ0JBQWdCekMsV0FBV2tCLFlBQVk7WUFDekMsTUFBTW1CLFFBQVEsSUFBSWdDLE1BQU0sU0FBUztnQkFBRXZCO1lBQVE7WUFDM0NjLE1BQU1VLGFBQUEsR0FBZ0JyQyxnQkFBZ0JqQztZQUN0Q2tCLFdBQVdxRCxJQUFBLENBQUtYLE9BQU8zQixnQkFBZ0JqQyxXQUFXLFFBQVFBO1lBQzFENEQsTUFBTVksYUFBQSxDQUFjbkM7UUFDdEI7SUFDRixHQUFHO1FBQUNJO1FBQWF6QztRQUFTOEM7S0FBUTtJQUVsQyxNQUFNMkIsb0JBQTBCL0YseUNBQUEsQ0FBT3VELGdCQUFnQmpDLFdBQVcsUUFBUUE7SUFDMUUsT0FDRSxnQkFBQWIsc0RBQUFBLENBQUM7UUFDQzRDLE1BQUs7UUFDTCxlQUFXO1FBQ1g3QixnQkFBZ0JBLGtCQUFrQnVFLGtCQUFrQmhELE9BQUE7UUFDbkQsR0FBR2lDLFVBQUE7UUFDSmdCLFVBQVU7UUFDVnZDO1FBQ0FZLE9BQU87WUFDTCxHQUFHbkQsTUFBTW1ELEtBQUE7WUFDVCxHQUFHWSxXQUFBO1lBQ0hnQixVQUFVO1lBQ1ZsQixlQUFlO1lBQ2ZtQixTQUFTO1lBQ1RDLFFBQVE7UUFDVjtJQUFBO0FBR047QUFFQSxTQUFTNUMsZ0JBQWdCakMsT0FBQTtJQUN2QixPQUFPQSxZQUFZO0FBQ3JCO0FBRUEsU0FBU2tDLFNBQVNsQyxPQUFBO0lBQ2hCLE9BQU9pQyxnQkFBZ0JqQyxXQUFXLGtCQUFrQkEsVUFBVSxZQUFZO0FBQzVFO0FBRUEsSUFBTThFLE9BQU9wRjtBQUNiLElBQU1xRixZQUFZNUIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9teS12MC1wcm9qZWN0Ly4uL3NyYy9DaGVja2JveC50c3g/ZmUyMyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VDb21wb3NlZFJlZnMgfSBmcm9tICdAcmFkaXgtdWkvcmVhY3QtY29tcG9zZS1yZWZzJztcbmltcG9ydCB7IGNyZWF0ZUNvbnRleHRTY29wZSB9IGZyb20gJ0ByYWRpeC11aS9yZWFjdC1jb250ZXh0JztcbmltcG9ydCB7IGNvbXBvc2VFdmVudEhhbmRsZXJzIH0gZnJvbSAnQHJhZGl4LXVpL3ByaW1pdGl2ZSc7XG5pbXBvcnQgeyB1c2VDb250cm9sbGFibGVTdGF0ZSB9IGZyb20gJ0ByYWRpeC11aS9yZWFjdC11c2UtY29udHJvbGxhYmxlLXN0YXRlJztcbmltcG9ydCB7IHVzZVByZXZpb3VzIH0gZnJvbSAnQHJhZGl4LXVpL3JlYWN0LXVzZS1wcmV2aW91cyc7XG5pbXBvcnQgeyB1c2VTaXplIH0gZnJvbSAnQHJhZGl4LXVpL3JlYWN0LXVzZS1zaXplJztcbmltcG9ydCB7IFByZXNlbmNlIH0gZnJvbSAnQHJhZGl4LXVpL3JlYWN0LXByZXNlbmNlJztcbmltcG9ydCB7IFByaW1pdGl2ZSB9IGZyb20gJ0ByYWRpeC11aS9yZWFjdC1wcmltaXRpdmUnO1xuXG5pbXBvcnQgdHlwZSB7IFNjb3BlIH0gZnJvbSAnQHJhZGl4LXVpL3JlYWN0LWNvbnRleHQnO1xuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBDaGVja2JveFxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG5jb25zdCBDSEVDS0JPWF9OQU1FID0gJ0NoZWNrYm94JztcblxudHlwZSBTY29wZWRQcm9wczxQPiA9IFAgJiB7IF9fc2NvcGVDaGVja2JveD86IFNjb3BlIH07XG5jb25zdCBbY3JlYXRlQ2hlY2tib3hDb250ZXh0LCBjcmVhdGVDaGVja2JveFNjb3BlXSA9IGNyZWF0ZUNvbnRleHRTY29wZShDSEVDS0JPWF9OQU1FKTtcblxudHlwZSBDaGVja2VkU3RhdGUgPSBib29sZWFuIHwgJ2luZGV0ZXJtaW5hdGUnO1xuXG50eXBlIENoZWNrYm94Q29udGV4dFZhbHVlID0ge1xuICBzdGF0ZTogQ2hlY2tlZFN0YXRlO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG59O1xuXG5jb25zdCBbQ2hlY2tib3hQcm92aWRlciwgdXNlQ2hlY2tib3hDb250ZXh0XSA9XG4gIGNyZWF0ZUNoZWNrYm94Q29udGV4dDxDaGVja2JveENvbnRleHRWYWx1ZT4oQ0hFQ0tCT1hfTkFNRSk7XG5cbnR5cGUgQ2hlY2tib3hFbGVtZW50ID0gUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgUHJpbWl0aXZlLmJ1dHRvbj47XG50eXBlIFByaW1pdGl2ZUJ1dHRvblByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBQcmltaXRpdmUuYnV0dG9uPjtcbmludGVyZmFjZSBDaGVja2JveFByb3BzIGV4dGVuZHMgT21pdDxQcmltaXRpdmVCdXR0b25Qcm9wcywgJ2NoZWNrZWQnIHwgJ2RlZmF1bHRDaGVja2VkJz4ge1xuICBjaGVja2VkPzogQ2hlY2tlZFN0YXRlO1xuICBkZWZhdWx0Q2hlY2tlZD86IENoZWNrZWRTdGF0ZTtcbiAgcmVxdWlyZWQ/OiBib29sZWFuO1xuICBvbkNoZWNrZWRDaGFuZ2U/KGNoZWNrZWQ6IENoZWNrZWRTdGF0ZSk6IHZvaWQ7XG59XG5cbmNvbnN0IENoZWNrYm94ID0gUmVhY3QuZm9yd2FyZFJlZjxDaGVja2JveEVsZW1lbnQsIENoZWNrYm94UHJvcHM+KFxuICAocHJvcHM6IFNjb3BlZFByb3BzPENoZWNrYm94UHJvcHM+LCBmb3J3YXJkZWRSZWYpID0+IHtcbiAgICBjb25zdCB7XG4gICAgICBfX3Njb3BlQ2hlY2tib3gsXG4gICAgICBuYW1lLFxuICAgICAgY2hlY2tlZDogY2hlY2tlZFByb3AsXG4gICAgICBkZWZhdWx0Q2hlY2tlZCxcbiAgICAgIHJlcXVpcmVkLFxuICAgICAgZGlzYWJsZWQsXG4gICAgICB2YWx1ZSA9ICdvbicsXG4gICAgICBvbkNoZWNrZWRDaGFuZ2UsXG4gICAgICBmb3JtLFxuICAgICAgLi4uY2hlY2tib3hQcm9wc1xuICAgIH0gPSBwcm9wcztcbiAgICBjb25zdCBbYnV0dG9uLCBzZXRCdXR0b25dID0gUmVhY3QudXNlU3RhdGU8SFRNTEJ1dHRvbkVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgICBjb25zdCBjb21wb3NlZFJlZnMgPSB1c2VDb21wb3NlZFJlZnMoZm9yd2FyZGVkUmVmLCAobm9kZSkgPT4gc2V0QnV0dG9uKG5vZGUpKTtcbiAgICBjb25zdCBoYXNDb25zdW1lclN0b3BwZWRQcm9wYWdhdGlvblJlZiA9IFJlYWN0LnVzZVJlZihmYWxzZSk7XG4gICAgLy8gV2Ugc2V0IHRoaXMgdG8gdHJ1ZSBieSBkZWZhdWx0IHNvIHRoYXQgZXZlbnRzIGJ1YmJsZSB0byBmb3JtcyB3aXRob3V0IEpTIChTU1IpXG4gICAgY29uc3QgaXNGb3JtQ29udHJvbCA9IGJ1dHRvbiA/IGZvcm0gfHwgISFidXR0b24uY2xvc2VzdCgnZm9ybScpIDogdHJ1ZTtcbiAgICBjb25zdCBbY2hlY2tlZCA9IGZhbHNlLCBzZXRDaGVja2VkXSA9IHVzZUNvbnRyb2xsYWJsZVN0YXRlKHtcbiAgICAgIHByb3A6IGNoZWNrZWRQcm9wLFxuICAgICAgZGVmYXVsdFByb3A6IGRlZmF1bHRDaGVja2VkLFxuICAgICAgb25DaGFuZ2U6IG9uQ2hlY2tlZENoYW5nZSxcbiAgICB9KTtcbiAgICBjb25zdCBpbml0aWFsQ2hlY2tlZFN0YXRlUmVmID0gUmVhY3QudXNlUmVmKGNoZWNrZWQpO1xuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCBmb3JtID0gYnV0dG9uPy5mb3JtO1xuICAgICAgaWYgKGZvcm0pIHtcbiAgICAgICAgY29uc3QgcmVzZXQgPSAoKSA9PiBzZXRDaGVja2VkKGluaXRpYWxDaGVja2VkU3RhdGVSZWYuY3VycmVudCk7XG4gICAgICAgIGZvcm0uYWRkRXZlbnRMaXN0ZW5lcigncmVzZXQnLCByZXNldCk7XG4gICAgICAgIHJldHVybiAoKSA9PiBmb3JtLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2V0JywgcmVzZXQpO1xuICAgICAgfVxuICAgIH0sIFtidXR0b24sIHNldENoZWNrZWRdKTtcblxuICAgIHJldHVybiAoXG4gICAgICA8Q2hlY2tib3hQcm92aWRlciBzY29wZT17X19zY29wZUNoZWNrYm94fSBzdGF0ZT17Y2hlY2tlZH0gZGlzYWJsZWQ9e2Rpc2FibGVkfT5cbiAgICAgICAgPFByaW1pdGl2ZS5idXR0b25cbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiY2hlY2tib3hcIlxuICAgICAgICAgIGFyaWEtY2hlY2tlZD17aXNJbmRldGVybWluYXRlKGNoZWNrZWQpID8gJ21peGVkJyA6IGNoZWNrZWR9XG4gICAgICAgICAgYXJpYS1yZXF1aXJlZD17cmVxdWlyZWR9XG4gICAgICAgICAgZGF0YS1zdGF0ZT17Z2V0U3RhdGUoY2hlY2tlZCl9XG4gICAgICAgICAgZGF0YS1kaXNhYmxlZD17ZGlzYWJsZWQgPyAnJyA6IHVuZGVmaW5lZH1cbiAgICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgICAgIHsuLi5jaGVja2JveFByb3BzfVxuICAgICAgICAgIHJlZj17Y29tcG9zZWRSZWZzfVxuICAgICAgICAgIG9uS2V5RG93bj17Y29tcG9zZUV2ZW50SGFuZGxlcnMocHJvcHMub25LZXlEb3duLCAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgIC8vIEFjY29yZGluZyB0byBXQUkgQVJJQSwgQ2hlY2tib3hlcyBkb24ndCBhY3RpdmF0ZSBvbiBlbnRlciBrZXlwcmVzc1xuICAgICAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VudGVyJykgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICB9KX1cbiAgICAgICAgICBvbkNsaWNrPXtjb21wb3NlRXZlbnRIYW5kbGVycyhwcm9wcy5vbkNsaWNrLCAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgIHNldENoZWNrZWQoKHByZXZDaGVja2VkKSA9PiAoaXNJbmRldGVybWluYXRlKHByZXZDaGVja2VkKSA/IHRydWUgOiAhcHJldkNoZWNrZWQpKTtcbiAgICAgICAgICAgIGlmIChpc0Zvcm1Db250cm9sKSB7XG4gICAgICAgICAgICAgIGhhc0NvbnN1bWVyU3RvcHBlZFByb3BhZ2F0aW9uUmVmLmN1cnJlbnQgPSBldmVudC5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpO1xuICAgICAgICAgICAgICAvLyBpZiBjaGVja2JveCBpcyBpbiBhIGZvcm0sIHN0b3AgcHJvcGFnYXRpb24gZnJvbSB0aGUgYnV0dG9uIHNvIHRoYXQgd2Ugb25seSBwcm9wYWdhdGVcbiAgICAgICAgICAgICAgLy8gb25lIGNsaWNrIGV2ZW50IChmcm9tIHRoZSBpbnB1dCkuIFdlIHByb3BhZ2F0ZSBjaGFuZ2VzIGZyb20gYW4gaW5wdXQgc28gdGhhdCBuYXRpdmVcbiAgICAgICAgICAgICAgLy8gZm9ybSB2YWxpZGF0aW9uIHdvcmtzIGFuZCBmb3JtIGV2ZW50cyByZWZsZWN0IGNoZWNrYm94IHVwZGF0ZXMuXG4gICAgICAgICAgICAgIGlmICghaGFzQ29uc3VtZXJTdG9wcGVkUHJvcGFnYXRpb25SZWYuY3VycmVudCkgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSl9XG4gICAgICAgIC8+XG4gICAgICAgIHtpc0Zvcm1Db250cm9sICYmIChcbiAgICAgICAgICA8QnViYmxlSW5wdXRcbiAgICAgICAgICAgIGNvbnRyb2w9e2J1dHRvbn1cbiAgICAgICAgICAgIGJ1YmJsZXM9eyFoYXNDb25zdW1lclN0b3BwZWRQcm9wYWdhdGlvblJlZi5jdXJyZW50fVxuICAgICAgICAgICAgbmFtZT17bmFtZX1cbiAgICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgICAgIGNoZWNrZWQ9e2NoZWNrZWR9XG4gICAgICAgICAgICByZXF1aXJlZD17cmVxdWlyZWR9XG4gICAgICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgICAgICBmb3JtPXtmb3JtfVxuICAgICAgICAgICAgLy8gV2UgdHJhbnNmb3JtIGJlY2F1c2UgdGhlIGlucHV0IGlzIGFic29sdXRlbHkgcG9zaXRpb25lZCBidXQgd2UgaGF2ZVxuICAgICAgICAgICAgLy8gcmVuZGVyZWQgaXQgKiphZnRlcioqIHRoZSBidXR0b24uIFRoaXMgcHVsbHMgaXQgYmFjayB0byBzaXQgb24gdG9wXG4gICAgICAgICAgICAvLyBvZiB0aGUgYnV0dG9uLlxuICAgICAgICAgICAgc3R5bGU9e3sgdHJhbnNmb3JtOiAndHJhbnNsYXRlWCgtMTAwJSknIH19XG4gICAgICAgICAgICBkZWZhdWx0Q2hlY2tlZD17aXNJbmRldGVybWluYXRlKGRlZmF1bHRDaGVja2VkKSA/IGZhbHNlIDogZGVmYXVsdENoZWNrZWR9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgIDwvQ2hlY2tib3hQcm92aWRlcj5cbiAgICApO1xuICB9XG4pO1xuXG5DaGVja2JveC5kaXNwbGF5TmFtZSA9IENIRUNLQk9YX05BTUU7XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIENoZWNrYm94SW5kaWNhdG9yXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbmNvbnN0IElORElDQVRPUl9OQU1FID0gJ0NoZWNrYm94SW5kaWNhdG9yJztcblxudHlwZSBDaGVja2JveEluZGljYXRvckVsZW1lbnQgPSBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBQcmltaXRpdmUuc3Bhbj47XG50eXBlIFByaW1pdGl2ZVNwYW5Qcm9wcyA9IFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgUHJpbWl0aXZlLnNwYW4+O1xuaW50ZXJmYWNlIENoZWNrYm94SW5kaWNhdG9yUHJvcHMgZXh0ZW5kcyBQcmltaXRpdmVTcGFuUHJvcHMge1xuICAvKipcbiAgICogVXNlZCB0byBmb3JjZSBtb3VudGluZyB3aGVuIG1vcmUgY29udHJvbCBpcyBuZWVkZWQuIFVzZWZ1bCB3aGVuXG4gICAqIGNvbnRyb2xsaW5nIGFuaW1hdGlvbiB3aXRoIFJlYWN0IGFuaW1hdGlvbiBsaWJyYXJpZXMuXG4gICAqL1xuICBmb3JjZU1vdW50PzogdHJ1ZTtcbn1cblxuY29uc3QgQ2hlY2tib3hJbmRpY2F0b3IgPSBSZWFjdC5mb3J3YXJkUmVmPENoZWNrYm94SW5kaWNhdG9yRWxlbWVudCwgQ2hlY2tib3hJbmRpY2F0b3JQcm9wcz4oXG4gIChwcm9wczogU2NvcGVkUHJvcHM8Q2hlY2tib3hJbmRpY2F0b3JQcm9wcz4sIGZvcndhcmRlZFJlZikgPT4ge1xuICAgIGNvbnN0IHsgX19zY29wZUNoZWNrYm94LCBmb3JjZU1vdW50LCAuLi5pbmRpY2F0b3JQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgY29udGV4dCA9IHVzZUNoZWNrYm94Q29udGV4dChJTkRJQ0FUT1JfTkFNRSwgX19zY29wZUNoZWNrYm94KTtcbiAgICByZXR1cm4gKFxuICAgICAgPFByZXNlbmNlIHByZXNlbnQ9e2ZvcmNlTW91bnQgfHwgaXNJbmRldGVybWluYXRlKGNvbnRleHQuc3RhdGUpIHx8IGNvbnRleHQuc3RhdGUgPT09IHRydWV9PlxuICAgICAgICA8UHJpbWl0aXZlLnNwYW5cbiAgICAgICAgICBkYXRhLXN0YXRlPXtnZXRTdGF0ZShjb250ZXh0LnN0YXRlKX1cbiAgICAgICAgICBkYXRhLWRpc2FibGVkPXtjb250ZXh0LmRpc2FibGVkID8gJycgOiB1bmRlZmluZWR9XG4gICAgICAgICAgey4uLmluZGljYXRvclByb3BzfVxuICAgICAgICAgIHJlZj17Zm9yd2FyZGVkUmVmfVxuICAgICAgICAgIHN0eWxlPXt7IHBvaW50ZXJFdmVudHM6ICdub25lJywgLi4ucHJvcHMuc3R5bGUgfX1cbiAgICAgICAgLz5cbiAgICAgIDwvUHJlc2VuY2U+XG4gICAgKTtcbiAgfVxuKTtcblxuQ2hlY2tib3hJbmRpY2F0b3IuZGlzcGxheU5hbWUgPSBJTkRJQ0FUT1JfTkFNRTtcblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG50eXBlIElucHV0UHJvcHMgPSBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8J2lucHV0Jz47XG5pbnRlcmZhY2UgQnViYmxlSW5wdXRQcm9wcyBleHRlbmRzIE9taXQ8SW5wdXRQcm9wcywgJ2NoZWNrZWQnPiB7XG4gIGNoZWNrZWQ6IENoZWNrZWRTdGF0ZTtcbiAgY29udHJvbDogSFRNTEVsZW1lbnQgfCBudWxsO1xuICBidWJibGVzOiBib29sZWFuO1xufVxuXG5jb25zdCBCdWJibGVJbnB1dCA9IChwcm9wczogQnViYmxlSW5wdXRQcm9wcykgPT4ge1xuICBjb25zdCB7IGNvbnRyb2wsIGNoZWNrZWQsIGJ1YmJsZXMgPSB0cnVlLCBkZWZhdWx0Q2hlY2tlZCwgLi4uaW5wdXRQcm9wcyB9ID0gcHJvcHM7XG4gIGNvbnN0IHJlZiA9IFJlYWN0LnVzZVJlZjxIVE1MSW5wdXRFbGVtZW50PihudWxsKTtcbiAgY29uc3QgcHJldkNoZWNrZWQgPSB1c2VQcmV2aW91cyhjaGVja2VkKTtcbiAgY29uc3QgY29udHJvbFNpemUgPSB1c2VTaXplKGNvbnRyb2wpO1xuXG4gIC8vIEJ1YmJsZSBjaGVja2VkIGNoYW5nZSB0byBwYXJlbnRzIChlLmcgZm9ybSBjaGFuZ2UgZXZlbnQpXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaW5wdXQgPSByZWYuY3VycmVudCE7XG4gICAgY29uc3QgaW5wdXRQcm90byA9IHdpbmRvdy5IVE1MSW5wdXRFbGVtZW50LnByb3RvdHlwZTtcbiAgICBjb25zdCBkZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihpbnB1dFByb3RvLCAnY2hlY2tlZCcpIGFzIFByb3BlcnR5RGVzY3JpcHRvcjtcbiAgICBjb25zdCBzZXRDaGVja2VkID0gZGVzY3JpcHRvci5zZXQ7XG5cbiAgICBpZiAocHJldkNoZWNrZWQgIT09IGNoZWNrZWQgJiYgc2V0Q2hlY2tlZCkge1xuICAgICAgY29uc3QgZXZlbnQgPSBuZXcgRXZlbnQoJ2NsaWNrJywgeyBidWJibGVzIH0pO1xuICAgICAgaW5wdXQuaW5kZXRlcm1pbmF0ZSA9IGlzSW5kZXRlcm1pbmF0ZShjaGVja2VkKTtcbiAgICAgIHNldENoZWNrZWQuY2FsbChpbnB1dCwgaXNJbmRldGVybWluYXRlKGNoZWNrZWQpID8gZmFsc2UgOiBjaGVja2VkKTtcbiAgICAgIGlucHV0LmRpc3BhdGNoRXZlbnQoZXZlbnQpO1xuICAgIH1cbiAgfSwgW3ByZXZDaGVja2VkLCBjaGVja2VkLCBidWJibGVzXSk7XG5cbiAgY29uc3QgZGVmYXVsdENoZWNrZWRSZWYgPSBSZWFjdC51c2VSZWYoaXNJbmRldGVybWluYXRlKGNoZWNrZWQpID8gZmFsc2UgOiBjaGVja2VkKTtcbiAgcmV0dXJuIChcbiAgICA8aW5wdXRcbiAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICBhcmlhLWhpZGRlblxuICAgICAgZGVmYXVsdENoZWNrZWQ9e2RlZmF1bHRDaGVja2VkID8/IGRlZmF1bHRDaGVja2VkUmVmLmN1cnJlbnR9XG4gICAgICB7Li4uaW5wdXRQcm9wc31cbiAgICAgIHRhYkluZGV4PXstMX1cbiAgICAgIHJlZj17cmVmfVxuICAgICAgc3R5bGU9e3tcbiAgICAgICAgLi4ucHJvcHMuc3R5bGUsXG4gICAgICAgIC4uLmNvbnRyb2xTaXplLFxuICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgICAgcG9pbnRlckV2ZW50czogJ25vbmUnLFxuICAgICAgICBvcGFjaXR5OiAwLFxuICAgICAgICBtYXJnaW46IDAsXG4gICAgICB9fVxuICAgIC8+XG4gICk7XG59O1xuXG5mdW5jdGlvbiBpc0luZGV0ZXJtaW5hdGUoY2hlY2tlZD86IENoZWNrZWRTdGF0ZSk6IGNoZWNrZWQgaXMgJ2luZGV0ZXJtaW5hdGUnIHtcbiAgcmV0dXJuIGNoZWNrZWQgPT09ICdpbmRldGVybWluYXRlJztcbn1cblxuZnVuY3Rpb24gZ2V0U3RhdGUoY2hlY2tlZDogQ2hlY2tlZFN0YXRlKSB7XG4gIHJldHVybiBpc0luZGV0ZXJtaW5hdGUoY2hlY2tlZCkgPyAnaW5kZXRlcm1pbmF0ZScgOiBjaGVja2VkID8gJ2NoZWNrZWQnIDogJ3VuY2hlY2tlZCc7XG59XG5cbmNvbnN0IFJvb3QgPSBDaGVja2JveDtcbmNvbnN0IEluZGljYXRvciA9IENoZWNrYm94SW5kaWNhdG9yO1xuXG5leHBvcnQge1xuICBjcmVhdGVDaGVja2JveFNjb3BlLFxuICAvL1xuICBDaGVja2JveCxcbiAgQ2hlY2tib3hJbmRpY2F0b3IsXG4gIC8vXG4gIFJvb3QsXG4gIEluZGljYXRvcixcbn07XG5leHBvcnQgdHlwZSB7IENoZWNrYm94UHJvcHMsIENoZWNrYm94SW5kaWNhdG9yUHJvcHMsIENoZWNrZWRTdGF0ZSB9O1xuIl0sIm5hbWVzIjpbIlJlYWN0IiwidXNlQ29tcG9zZWRSZWZzIiwiY3JlYXRlQ29udGV4dFNjb3BlIiwiY29tcG9zZUV2ZW50SGFuZGxlcnMiLCJ1c2VDb250cm9sbGFibGVTdGF0ZSIsInVzZVByZXZpb3VzIiwidXNlU2l6ZSIsIlByZXNlbmNlIiwiUHJpbWl0aXZlIiwianN4IiwianN4cyIsIkNIRUNLQk9YX05BTUUiLCJjcmVhdGVDaGVja2JveENvbnRleHQiLCJjcmVhdGVDaGVja2JveFNjb3BlIiwiQ2hlY2tib3hQcm92aWRlciIsInVzZUNoZWNrYm94Q29udGV4dCIsIkNoZWNrYm94IiwiZm9yd2FyZFJlZiIsInByb3BzIiwiZm9yd2FyZGVkUmVmIiwiX19zY29wZUNoZWNrYm94IiwibmFtZSIsImNoZWNrZWQiLCJjaGVja2VkUHJvcCIsImRlZmF1bHRDaGVja2VkIiwicmVxdWlyZWQiLCJkaXNhYmxlZCIsInZhbHVlIiwib25DaGVja2VkQ2hhbmdlIiwiZm9ybSIsImNoZWNrYm94UHJvcHMiLCJidXR0b24iLCJzZXRCdXR0b24iLCJ1c2VTdGF0ZSIsImNvbXBvc2VkUmVmcyIsIm5vZGUiLCJoYXNDb25zdW1lclN0b3BwZWRQcm9wYWdhdGlvblJlZiIsInVzZVJlZiIsImlzRm9ybUNvbnRyb2wiLCJjbG9zZXN0Iiwic2V0Q2hlY2tlZCIsInByb3AiLCJkZWZhdWx0UHJvcCIsIm9uQ2hhbmdlIiwiaW5pdGlhbENoZWNrZWRTdGF0ZVJlZiIsInVzZUVmZmVjdCIsInJlc2V0IiwiY3VycmVudCIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwic2NvcGUiLCJzdGF0ZSIsImNoaWxkcmVuIiwidHlwZSIsInJvbGUiLCJpc0luZGV0ZXJtaW5hdGUiLCJnZXRTdGF0ZSIsInJlZiIsIm9uS2V5RG93biIsImV2ZW50Iiwia2V5IiwicHJldmVudERlZmF1bHQiLCJvbkNsaWNrIiwicHJldkNoZWNrZWQiLCJpc1Byb3BhZ2F0aW9uU3RvcHBlZCIsInN0b3BQcm9wYWdhdGlvbiIsIkJ1YmJsZUlucHV0IiwiY29udHJvbCIsImJ1YmJsZXMiLCJzdHlsZSIsInRyYW5zZm9ybSIsImRpc3BsYXlOYW1lIiwiSU5ESUNBVE9SX05BTUUiLCJDaGVja2JveEluZGljYXRvciIsImZvcmNlTW91bnQiLCJpbmRpY2F0b3JQcm9wcyIsImNvbnRleHQiLCJwcmVzZW50Iiwic3BhbiIsInBvaW50ZXJFdmVudHMiLCJpbnB1dFByb3BzIiwiY29udHJvbFNpemUiLCJpbnB1dCIsImlucHV0UHJvdG8iLCJ3aW5kb3ciLCJIVE1MSW5wdXRFbGVtZW50IiwicHJvdG90eXBlIiwiZGVzY3JpcHRvciIsIk9iamVjdCIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInNldCIsIkV2ZW50IiwiaW5kZXRlcm1pbmF0ZSIsImNhbGwiLCJkaXNwYXRjaEV2ZW50IiwiZGVmYXVsdENoZWNrZWRSZWYiLCJ0YWJJbmRleCIsInBvc2l0aW9uIiwib3BhY2l0eSIsIm1hcmdpbiIsIlJvb3QiLCJJbmRpY2F0b3IiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/@radix-ui/react-checkbox/dist/index.mjs\n"); /***/ }), /***/ "(ssr)/./node_modules/@radix-ui/react-collection/dist/index.mjs": /*!****************************************************************!*\ !*** ./node_modules/@radix-ui/react-collection/dist/index.mjs ***! \****************************************************************/ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ createCollection: () => (/* binding */ createCollection)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var _radix_ui_react_context__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @radix-ui/react-context */ \"(ssr)/./node_modules/@radix-ui/react-context/dist/index.mjs\");\n/* harmony import */ var _radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @radix-ui/react-compose-refs */ \"(ssr)/./node_modules/@radix-ui/react-compose-refs/dist/index.mjs\");\n/* harmony import */ var _radix_ui_react_slot__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @radix-ui/react-slot */ \"(ssr)/./node_modules/@radix-ui/react-slot/dist/index.mjs\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react-jsx-runtime.js\");\n/* __next_internal_client_entry_do_not_use__ createCollection auto */ // packages/react/collection/src/Collection.tsx\n\n\n\n\n\nfunction createCollection(name) {\n const PROVIDER_NAME = name + \"CollectionProvider\";\n const [createCollectionContext, createCollectionScope] = (0,_radix_ui_react_context__WEBPACK_IMPORTED_MODULE_2__.createContextScope)(PROVIDER_NAME);\n const [CollectionProviderImpl, useCollectionContext] = createCollectionContext(PROVIDER_NAME, {\n collectionRef: {\n current: null\n },\n itemMap: /* @__PURE__ */ new Map()\n });\n const CollectionProvider = (props)=>{\n const { scope, children } = props;\n const ref = react__WEBPACK_IMPORTED_MODULE_0__.useRef(null);\n const itemMap = react__WEBPACK_IMPORTED_MODULE_0__.useRef(/* @__PURE__ */ new Map()).current;\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(CollectionProviderImpl, {\n scope,\n itemMap,\n collectionRef: ref,\n children\n });\n };\n CollectionProvider.displayName = PROVIDER_NAME;\n const COLLECTION_SLOT_NAME = name + \"CollectionSlot\";\n const CollectionSlot = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef((props, forwardedRef)=>{\n const { scope, children } = props;\n const context = useCollectionContext(COLLECTION_SLOT_NAME, scope);\n const composedRefs = (0,_radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_3__.useComposedRefs)(forwardedRef, context.collectionRef);\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_radix_ui_react_slot__WEBPACK_IMPORTED_MODULE_4__.Slot, {\n ref: composedRefs,\n children\n });\n });\n CollectionSlot.displayName = COLLECTION_SLOT_NAME;\n const ITEM_SLOT_NAME = name + \"CollectionItemSlot\";\n const ITEM_DATA_ATTR = \"data-radix-collection-item\";\n const CollectionItemSlot = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef((props, forwardedRef)=>{\n const { scope, children, ...itemData } = props;\n const ref = react__WEBPACK_IMPORTED_MODULE_0__.useRef(null);\n const composedRefs = (0,_radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_3__.useComposedRefs)(forwardedRef, ref);\n const context = useCollectionContext(ITEM_SLOT_NAME, scope);\n react__WEBPACK_IMPORTED_MODULE_0__.useEffect(()=>{\n context.itemMap.set(ref, {\n ref,\n ...itemData\n });\n return ()=>void context.itemMap.delete(ref);\n });\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_radix_ui_react_slot__WEBPACK_IMPORTED_MODULE_4__.Slot, {\n ...{\n [ITEM_DATA_ATTR]: \"\"\n },\n ref: composedRefs,\n children\n });\n });\n CollectionItemSlot.displayName = ITEM_SLOT_NAME;\n function useCollection(scope) {\n const context = useCollectionContext(name + \"CollectionConsumer\", scope);\n const getItems = react__WEBPACK_IMPORTED_MODULE_0__.useCallback(()=>{\n const collectionNode = context.collectionRef.current;\n if (!collectionNode) return [];\n const orderedNodes = Array.from(collectionNode.querySelectorAll(`[${ITEM_DATA_ATTR}]`));\n const items = Array.from(context.itemMap.values());\n const orderedItems = items.sort((a, b)=>orderedNodes.indexOf(a.ref.current) - orderedNodes.indexOf(b.ref.current));\n return orderedItems;\n }, [\n context.collectionRef,\n context.itemMap\n ]);\n return getItems;\n }\n return [\n {\n Provider: CollectionProvider,\n Slot: CollectionSlot,\n ItemSlot: CollectionItemSlot\n },\n useCollection,\n createCollectionScope\n ];\n}\n //# sourceMappingURL=index.mjs.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LWNvbGxlY3Rpb24vZGlzdC9pbmRleC5tanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFrQjtBQUNpQjtBQUNIO0FBQ1g7QUF1Q2Y7QUExQk4sU0FBU0ssaUJBQWlFQyxJQUFBO0lBS3hFLE1BQU1DLGdCQUFnQkQsT0FBTztJQUM3QixNQUFNLENBQUNFLHlCQUF5QkMsc0JBQXFCLEdBQUlSLDJFQUFrQkEsQ0FBQ007SUFVNUUsTUFBTSxDQUFDRyx3QkFBd0JDLHFCQUFvQixHQUFJSCx3QkFDckRELGVBQ0E7UUFBRUssZUFBZTtZQUFFQyxTQUFTO1FBQUs7UUFBR0MsU0FBUyxvQkFBSUM7SUFBTTtJQUd6RCxNQUFNQyxxQkFBMkUsQ0FBQ0M7UUFDaEYsTUFBTSxFQUFFQyxLQUFBLEVBQU9DLFFBQUEsRUFBUyxHQUFJRjtRQUM1QixNQUFNRyxNQUFNcEIseUNBQU0sQ0FBMEI7UUFDNUMsTUFBTWMsVUFBVWQseUNBQU0sQ0FBZ0Msb0JBQUllLE9BQU9GLE9BQUE7UUFDakUsT0FDRSxnQkFBQVQsc0RBQUFBLENBQUNNLHdCQUFBO1lBQXVCUTtZQUFjSjtZQUFrQkYsZUFBZVE7WUFDcEVEO1FBQUE7SUFHUDtJQUVBSCxtQkFBbUJNLFdBQUEsR0FBY2Y7SUFNakMsTUFBTWdCLHVCQUF1QmpCLE9BQU87SUFFcEMsTUFBTWtCLCtCQUFpQnhCLDZDQUFNLENBQzNCLENBQUNpQixPQUFPUztRQUNOLE1BQU0sRUFBRVIsS0FBQSxFQUFPQyxRQUFBLEVBQVMsR0FBSUY7UUFDNUIsTUFBTVUsVUFBVWhCLHFCQUFxQlksc0JBQXNCTDtRQUMzRCxNQUFNVSxlQUFlMUIsNkVBQWVBLENBQUN3QixjQUFjQyxRQUFRZixhQUFhO1FBQ3hFLE9BQU8sZ0JBQUFSLHNEQUFBQSxDQUFDRCxzREFBSUEsRUFBSjtZQUFLaUIsS0FBS1E7WUFBZVQ7UUFBQTtJQUNuQztJQUdGSyxlQUFlRixXQUFBLEdBQWNDO0lBTTdCLE1BQU1NLGlCQUFpQnZCLE9BQU87SUFDOUIsTUFBTXdCLGlCQUFpQjtJQU92QixNQUFNQyxtQ0FBcUIvQiw2Q0FBTSxDQUMvQixDQUFDaUIsT0FBT1M7UUFDTixNQUFNLEVBQUVSLEtBQUEsRUFBT0MsUUFBQSxFQUFVLEdBQUdhLFVBQVMsR0FBSWY7UUFDekMsTUFBTUcsTUFBTXBCLHlDQUFNLENBQW9CO1FBQ3RDLE1BQU00QixlQUFlMUIsNkVBQWVBLENBQUN3QixjQUFjTjtRQUNuRCxNQUFNTyxVQUFVaEIscUJBQXFCa0IsZ0JBQWdCWDtRQUVyRGxCLDRDQUFNLENBQVU7WUFDZDJCLFFBQVFiLE9BQUEsQ0FBUW9CLEdBQUEsQ0FBSWQsS0FBSztnQkFBRUE7Z0JBQUssR0FBSVksUUFBQTtZQUFpQztZQUNyRSxPQUFPLElBQU0sS0FBS0wsUUFBUWIsT0FBQSxDQUFRcUIsTUFBQSxDQUFPZjtRQUMzQztRQUVBLE9BQ0UsZ0JBQUFoQixzREFBQUEsQ0FBQ0Qsc0RBQUlBLEVBQUo7WUFBTSxHQUFHO2dCQUFFLENBQUMyQixlQUFjLEVBQUc7WUFBRztZQUFHVixLQUFLUTtZQUN0Q1Q7UUFBQTtJQUdQO0lBR0ZZLG1CQUFtQlQsV0FBQSxHQUFjTztJQU1qQyxTQUFTTyxjQUFjbEIsS0FBQTtRQUNyQixNQUFNUyxVQUFVaEIscUJBQXFCTCxPQUFPLHNCQUFzQlk7UUFFbEUsTUFBTW1CLFdBQVdyQyw4Q0FBTSxDQUFZO1lBQ2pDLE1BQU11QyxpQkFBaUJaLFFBQVFmLGFBQUEsQ0FBY0MsT0FBQTtZQUM3QyxJQUFJLENBQUMwQixnQkFBZ0IsT0FBTyxFQUFDO1lBQzdCLE1BQU1DLGVBQWVDLE1BQU1DLElBQUEsQ0FBS0gsZUFBZUksZ0JBQUEsQ0FBaUIsSUFBSWIsZUFBYyxFQUFHO1lBQ3JGLE1BQU1jLFFBQVFILE1BQU1DLElBQUEsQ0FBS2YsUUFBUWIsT0FBQSxDQUFRK0IsTUFBQTtZQUN6QyxNQUFNQyxlQUFlRixNQUFNRyxJQUFBLENBQ3pCLENBQUNDLEdBQUdDLElBQU1ULGFBQWFVLE9BQUEsQ0FBUUYsRUFBRTVCLEdBQUEsQ0FBSVAsT0FBUSxJQUFJMkIsYUFBYVUsT0FBQSxDQUFRRCxFQUFFN0IsR0FBQSxDQUFJUCxPQUFRO1lBRXRGLE9BQU9pQztRQUNULEdBQUc7WUFBQ25CLFFBQVFmLGFBQUE7WUFBZWUsUUFBUWIsT0FBTztTQUFDO1FBRTNDLE9BQU91QjtJQUNUO0lBRUEsT0FBTztRQUNMO1lBQUVjLFVBQVVuQztZQUFvQmIsTUFBTXFCO1lBQWdCNEIsVUFBVXJCO1FBQW1CO1FBQ25GSztRQUNBM0I7S0FDRjtBQUNGIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vbXktdjAtcHJvamVjdC8uLi9zcmMvQ29sbGVjdGlvbi50c3g/NzlkNiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgY3JlYXRlQ29udGV4dFNjb3BlIH0gZnJvbSAnQHJhZGl4LXVpL3JlYWN0LWNvbnRleHQnO1xuaW1wb3J0IHsgdXNlQ29tcG9zZWRSZWZzIH0gZnJvbSAnQHJhZGl4LXVpL3JlYWN0LWNvbXBvc2UtcmVmcyc7XG5pbXBvcnQgeyBTbG90IH0gZnJvbSAnQHJhZGl4LXVpL3JlYWN0LXNsb3QnO1xuXG50eXBlIFNsb3RQcm9wcyA9IFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgU2xvdD47XG50eXBlIENvbGxlY3Rpb25FbGVtZW50ID0gSFRNTEVsZW1lbnQ7XG5pbnRlcmZhY2UgQ29sbGVjdGlvblByb3BzIGV4dGVuZHMgU2xvdFByb3BzIHtcbiAgc2NvcGU6IGFueTtcbn1cblxuLy8gV2UgaGF2ZSByZXNvcnRlZCB0byByZXR1cm5pbmcgc2xvdHMgZGlyZWN0bHkgcmF0aGVyIHRoYW4gZXhwb3NpbmcgcHJpbWl0aXZlcyB0aGF0IGNhbiB0aGVuXG4vLyBiZSBzbG90dGVkIGxpa2UgYDxDb2xsZWN0aW9uSXRlbSBhcz17U2xvdH0+4oCmPC9Db2xsZWN0aW9uSXRlbT5gLlxuLy8gVGhpcyBpcyBiZWNhdXNlIHdlIGVuY291bnRlcmVkIGlzc3VlcyB3aXRoIGdlbmVyaWMgdHlwZXMgdGhhdCBjYW5ub3QgYmUgc3RhdGljYWxseSBhbmFseXNlZFxuLy8gZHVlIHRvIGNyZWF0aW5nIHRoZW0gZHluYW1pY2FsbHkgdmlhIGNyZWF0ZUNvbGxlY3Rpb24uXG5cbmZ1bmN0aW9uIGNyZWF0ZUNvbGxlY3Rpb248SXRlbUVsZW1lbnQgZXh0ZW5kcyBIVE1MRWxlbWVudCwgSXRlbURhdGEgPSB7fT4obmFtZTogc3RyaW5nKSB7XG4gIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAqIENvbGxlY3Rpb25Qcm92aWRlclxuICAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gIGNvbnN0IFBST1ZJREVSX05BTUUgPSBuYW1lICsgJ0NvbGxlY3Rpb25Qcm92aWRlcic7XG4gIGNvbnN0IFtjcmVhdGVDb2xsZWN0aW9uQ29udGV4dCwgY3JlYXRlQ29sbGVjdGlvblNjb3BlXSA9IGNyZWF0ZUNvbnRleHRTY29wZShQUk9WSURFUl9OQU1FKTtcblxuICB0eXBlIENvbnRleHRWYWx1ZSA9IHtcbiAgICBjb2xsZWN0aW9uUmVmOiBSZWFjdC5SZWZPYmplY3Q8Q29sbGVjdGlvbkVsZW1lbnQgfCBudWxsPjtcbiAgICBpdGVtTWFwOiBNYXA8XG4gICAgICBSZWFjdC5SZWZPYmplY3Q8SXRlbUVsZW1lbnQgfCBudWxsPixcbiAgICAgIHsgcmVmOiBSZWFjdC5SZWZPYmplY3Q8SXRlbUVsZW1lbnQgfCBudWxsPiB9ICYgSXRlbURhdGFcbiAgICA+O1xuICB9O1xuXG4gIGNvbnN0IFtDb2xsZWN0aW9uUHJvdmlkZXJJbXBsLCB1c2VDb2xsZWN0aW9uQ29udGV4dF0gPSBjcmVhdGVDb2xsZWN0aW9uQ29udGV4dDxDb250ZXh0VmFsdWU+KFxuICAgIFBST1ZJREVSX05BTUUsXG4gICAgeyBjb2xsZWN0aW9uUmVmOiB7IGN1cnJlbnQ6IG51bGwgfSwgaXRlbU1hcDogbmV3IE1hcCgpIH1cbiAgKTtcblxuICBjb25zdCBDb2xsZWN0aW9uUHJvdmlkZXI6IFJlYWN0LkZDPHsgY2hpbGRyZW4/OiBSZWFjdC5SZWFjdE5vZGU7IHNjb3BlOiBhbnkgfT4gPSAocHJvcHMpID0+IHtcbiAgICBjb25zdCB7IHNjb3BlLCBjaGlsZHJlbiB9ID0gcHJvcHM7XG4gICAgY29uc3QgcmVmID0gUmVhY3QudXNlUmVmPENvbGxlY3Rpb25FbGVtZW50PihudWxsKTtcbiAgICBjb25zdCBpdGVtTWFwID0gUmVhY3QudXNlUmVmPENvbnRleHRWYWx1ZVsnaXRlbU1hcCddPihuZXcgTWFwKCkpLmN1cnJlbnQ7XG4gICAgcmV0dXJuIChcbiAgICAgIDxDb2xsZWN0aW9uUHJvdmlkZXJJbXBsIHNjb3BlPXtzY29wZX0gaXRlbU1hcD17aXRlbU1hcH0gY29sbGVjdGlvblJlZj17cmVmfT5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9Db2xsZWN0aW9uUHJvdmlkZXJJbXBsPlxuICAgICk7XG4gIH07XG5cbiAgQ29sbGVjdGlvblByb3ZpZGVyLmRpc3BsYXlOYW1lID0gUFJPVklERVJfTkFNRTtcblxuICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgKiBDb2xsZWN0aW9uU2xvdFxuICAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gIGNvbnN0IENPTExFQ1RJT05fU0xPVF9OQU1FID0gbmFtZSArICdDb2xsZWN0aW9uU2xvdCc7XG5cbiAgY29uc3QgQ29sbGVjdGlvblNsb3QgPSBSZWFjdC5mb3J3YXJkUmVmPENvbGxlY3Rpb25FbGVtZW50LCBDb2xsZWN0aW9uUHJvcHM+KFxuICAgIChwcm9wcywgZm9yd2FyZGVkUmVmKSA9PiB7XG4gICAgICBjb25zdCB7IHNjb3BlLCBjaGlsZHJlbiB9ID0gcHJvcHM7XG4gICAgICBjb25zdCBjb250ZXh0ID0gdXNlQ29sbGVjdGlvbkNvbnRleHQoQ09MTEVDVElPTl9TTE9UX05BTUUsIHNjb3BlKTtcbiAgICAgIGNvbnN0IGNvbXBvc2VkUmVmcyA9IHVzZUNvbXBvc2VkUmVmcyhmb3J3YXJkZWRSZWYsIGNvbnRleHQuY29sbGVjdGlvblJlZik7XG4gICAgICByZXR1cm4gPFNsb3QgcmVmPXtjb21wb3NlZFJlZnN9PntjaGlsZHJlbn08L1Nsb3Q+O1xuICAgIH1cbiAgKTtcblxuICBDb2xsZWN0aW9uU2xvdC5kaXNwbGF5TmFtZSA9IENPTExFQ1RJT05fU0xPVF9OQU1FO1xuXG4gIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAqIENvbGxlY3Rpb25JdGVtXG4gICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgY29uc3QgSVRFTV9TTE9UX05BTUUgPSBuYW1lICsgJ0NvbGxlY3Rpb25JdGVtU2xvdCc7XG4gIGNvbnN0IElURU1fREFUQV9BVFRSID0gJ2RhdGEtcmFkaXgtY29sbGVjdGlvbi1pdGVtJztcblxuICB0eXBlIENvbGxlY3Rpb25JdGVtU2xvdFByb3BzID0gSXRlbURhdGEgJiB7XG4gICAgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZTtcbiAgICBzY29wZTogYW55O1xuICB9O1xuXG4gIGNvbnN0IENvbGxlY3Rpb25JdGVtU2xvdCA9IFJlYWN0LmZvcndhcmRSZWY8SXRlbUVsZW1lbnQsIENvbGxlY3Rpb25JdGVtU2xvdFByb3BzPihcbiAgICAocHJvcHMsIGZvcndhcmRlZFJlZikgPT4ge1xuICAgICAgY29uc3QgeyBzY29wZSwgY2hpbGRyZW4sIC4uLml0ZW1EYXRhIH0gPSBwcm9wcztcbiAgICAgIGNvbnN0IHJlZiA9IFJlYWN0LnVzZVJlZjxJdGVtRWxlbWVudD4obnVsbCk7XG4gICAgICBjb25zdCBjb21wb3NlZFJlZnMgPSB1c2VDb21wb3NlZFJlZnMoZm9yd2FyZGVkUmVmLCByZWYpO1xuICAgICAgY29uc3QgY29udGV4dCA9IHVzZUNvbGxlY3Rpb25Db250ZXh0KElURU1fU0xPVF9OQU1FLCBzY29wZSk7XG5cbiAgICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGNvbnRleHQuaXRlbU1hcC5zZXQocmVmLCB7IHJlZiwgLi4uKGl0ZW1EYXRhIGFzIHVua25vd24gYXMgSXRlbURhdGEpIH0pO1xuICAgICAgICByZXR1cm4gKCkgPT4gdm9pZCBjb250ZXh0Lml0ZW1NYXAuZGVsZXRlKHJlZik7XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPFNsb3Qgey4uLnsgW0lURU1fREFUQV9BVFRSXTogJycgfX0gcmVmPXtjb21wb3NlZFJlZnN9PlxuICAgICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAgPC9TbG90PlxuICAgICAgKTtcbiAgICB9XG4gICk7XG5cbiAgQ29sbGVjdGlvbkl0ZW1TbG90LmRpc3BsYXlOYW1lID0gSVRFTV9TTE9UX05BTUU7XG5cbiAgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICogdXNlQ29sbGVjdGlvblxuICAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gIGZ1bmN0aW9uIHVzZUNvbGxlY3Rpb24oc2NvcGU6IGFueSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB1c2VDb2xsZWN0aW9uQ29udGV4dChuYW1lICsgJ0NvbGxlY3Rpb25Db25zdW1lcicsIHNjb3BlKTtcblxuICAgIGNvbnN0IGdldEl0ZW1zID0gUmVhY3QudXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgY29uc3QgY29sbGVjdGlvbk5vZGUgPSBjb250ZXh0LmNvbGxlY3Rpb25SZWYuY3VycmVudDtcbiAgICAgIGlmICghY29sbGVjdGlvbk5vZGUpIHJldHVybiBbXTtcbiAgICAgIGNvbnN0IG9yZGVyZWROb2RlcyA9IEFycmF5LmZyb20oY29sbGVjdGlvbk5vZGUucXVlcnlTZWxlY3RvckFsbChgWyR7SVRFTV9EQVRBX0FUVFJ9XWApKTtcbiAgICAgIGNvbnN0IGl0ZW1zID0gQXJyYXkuZnJvbShjb250ZXh0Lml0ZW1NYXAudmFsdWVzKCkpO1xuICAgICAgY29uc3Qgb3JkZXJlZEl0ZW1zID0gaXRlbXMuc29ydChcbiAgICAgICAgKGEsIGIpID0+IG9yZGVyZWROb2Rlcy5pbmRleE9mKGEucmVmLmN1cnJlbnQhKSAtIG9yZGVyZWROb2Rlcy5pbmRleE9mKGIucmVmLmN1cnJlbnQhKVxuICAgICAgKTtcbiAgICAgIHJldHVybiBvcmRlcmVkSXRlbXM7XG4gICAgfSwgW2NvbnRleHQuY29sbGVjdGlvblJlZiwgY29udGV4dC5pdGVtTWFwXSk7XG5cbiAgICByZXR1cm4gZ2V0SXRlbXM7XG4gIH1cblxuICByZXR1cm4gW1xuICAgIHsgUHJvdmlkZXI6IENvbGxlY3Rpb25Qcm92aWRlciwgU2xvdDogQ29sbGVjdGlvblNsb3QsIEl0ZW1TbG90OiBDb2xsZWN0aW9uSXRlbVNsb3QgfSxcbiAgICB1c2VDb2xsZWN0aW9uLFxuICAgIGNyZWF0ZUNvbGxlY3Rpb25TY29wZSxcbiAgXSBhcyBjb25zdDtcbn1cblxuZXhwb3J0IHsgY3JlYXRlQ29sbGVjdGlvbiB9O1xuZXhwb3J0IHR5cGUgeyBDb2xsZWN0aW9uUHJvcHMgfTtcbiJdLCJuYW1lcyI6WyJSZWFjdCIsImNyZWF0ZUNvbnRleHRTY29wZSIsInVzZUNvbXBvc2VkUmVmcyIsIlNsb3QiLCJqc3giLCJjcmVhdGVDb2xsZWN0aW9uIiwibmFtZSIsIlBST1ZJREVSX05BTUUiLCJjcmVhdGVDb2xsZWN0aW9uQ29udGV4dCIsImNyZWF0ZUNvbGxlY3Rpb25TY29wZSIsIkNvbGxlY3Rpb25Qcm92aWRlckltcGwiLCJ1c2VDb2xsZWN0aW9uQ29udGV4dCIsImNvbGxlY3Rpb25SZWYiLCJjdXJyZW50IiwiaXRlbU1hcCIsIk1hcCIsIkNvbGxlY3Rpb25Qcm92aWRlciIsInByb3BzIiwic2NvcGUiLCJjaGlsZHJlbiIsInJlZiIsInVzZVJlZiIsImRpc3BsYXlOYW1lIiwiQ09MTEVDVElPTl9TTE9UX05BTUUiLCJDb2xsZWN0aW9uU2xvdCIsImZvcndhcmRSZWYiLCJmb3J3YXJkZWRSZWYiLCJjb250ZXh0IiwiY29tcG9zZWRSZWZzIiwiSVRFTV9TTE9UX05BTUUiLCJJVEVNX0RBVEFfQVRUUiIsIkNvbGxlY3Rpb25JdGVtU2xvdCIsIml0ZW1EYXRhIiwidXNlRWZmZWN0Iiwic2V0IiwiZGVsZXRlIiwidXNlQ29sbGVjdGlvbiIsImdldEl0ZW1zIiwidXNlQ2FsbGJhY2siLCJjb2xsZWN0aW9uTm9kZSIsIm9yZGVyZWROb2RlcyIsIkFycmF5IiwiZnJvbSIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJpdGVtcyIsInZhbHVlcyIsIm9yZGVyZWRJdGVtcyIsInNvcnQiLCJhIiwiYiIsImluZGV4T2YiLCJQcm92aWRlciIsIkl0ZW1TbG90Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/@radix-ui/react-collection/dist/index.mjs\n"); /***/ }), /***/ "(ssr)/./node_modules/@radix-ui/react-compose-refs/dist/index.mjs": /*!******************************************************************!*\ !*** ./node_modules/@radix-ui/react-compose-refs/dist/index.mjs ***! \******************************************************************/ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ composeRefs: () => (/* binding */ composeRefs),\n/* harmony export */ useComposedRefs: () => (/* binding */ useComposedRefs)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n// packages/react/compose-refs/src/composeRefs.tsx\n\nfunction setRef(ref, value) {\n if (typeof ref === \"function\") {\n return ref(value);\n } else if (ref !== null && ref !== void 0) {\n ref.current = value;\n }\n}\nfunction composeRefs(...refs) {\n return (node) => {\n let hasCleanup = false;\n const cleanups = refs.map((ref) => {\n const cleanup = setRef(ref, node);\n if (!hasCleanup && typeof cleanup == \"function\") {\n hasCleanup = true;\n }\n return cleanup;\n });\n if (hasCleanup) {\n return () => {\n for (let i = 0; i < cleanups.length; i++) {\n const cleanup = cleanups[i];\n if (typeof cleanup == \"function\") {\n cleanup();\n } else {\n setRef(refs[i], null);\n }\n }\n };\n }\n };\n}\nfunction useComposedRefs(...refs) {\n return react__WEBPACK_IMPORTED_MODULE_0__.useCallback(composeRefs(...refs), refs);\n}\n\n//# sourceMappingURL=index.mjs.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LWNvbXBvc2UtcmVmcy9kaXN0L2luZGV4Lm1qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTtBQUMrQjtBQUMvQjtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSx3QkFBd0IscUJBQXFCO0FBQzdDO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyw4Q0FBaUI7QUFDMUI7QUFJRTtBQUNGIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vbXktdjAtcHJvamVjdC8uL25vZGVfbW9kdWxlcy9AcmFkaXgtdWkvcmVhY3QtY29tcG9zZS1yZWZzL2Rpc3QvaW5kZXgubWpzPzkxYzYiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gcGFja2FnZXMvcmVhY3QvY29tcG9zZS1yZWZzL3NyYy9jb21wb3NlUmVmcy50c3hcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuZnVuY3Rpb24gc2V0UmVmKHJlZiwgdmFsdWUpIHtcbiAgaWYgKHR5cGVvZiByZWYgPT09IFwiZnVuY3Rpb25cIikge1xuICAgIHJldHVybiByZWYodmFsdWUpO1xuICB9IGVsc2UgaWYgKHJlZiAhPT0gbnVsbCAmJiByZWYgIT09IHZvaWQgMCkge1xuICAgIHJlZi5jdXJyZW50ID0gdmFsdWU7XG4gIH1cbn1cbmZ1bmN0aW9uIGNvbXBvc2VSZWZzKC4uLnJlZnMpIHtcbiAgcmV0dXJuIChub2RlKSA9PiB7XG4gICAgbGV0IGhhc0NsZWFudXAgPSBmYWxzZTtcbiAgICBjb25zdCBjbGVhbnVwcyA9IHJlZnMubWFwKChyZWYpID0+IHtcbiAgICAgIGNvbnN0IGNsZWFudXAgPSBzZXRSZWYocmVmLCBub2RlKTtcbiAgICAgIGlmICghaGFzQ2xlYW51cCAmJiB0eXBlb2YgY2xlYW51cCA9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgaGFzQ2xlYW51cCA9IHRydWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gY2xlYW51cDtcbiAgICB9KTtcbiAgICBpZiAoaGFzQ2xlYW51cCkge1xuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjbGVhbnVwcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGNvbnN0IGNsZWFudXAgPSBjbGVhbnVwc1tpXTtcbiAgICAgICAgICBpZiAodHlwZW9mIGNsZWFudXAgPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICBjbGVhbnVwKCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNldFJlZihyZWZzW2ldLCBudWxsKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuICB9O1xufVxuZnVuY3Rpb24gdXNlQ29tcG9zZWRSZWZzKC4uLnJlZnMpIHtcbiAgcmV0dXJuIFJlYWN0LnVzZUNhbGxiYWNrKGNvbXBvc2VSZWZzKC4uLnJlZnMpLCByZWZzKTtcbn1cbmV4cG9ydCB7XG4gIGNvbXBvc2VSZWZzLFxuICB1c2VDb21wb3NlZFJlZnNcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tanMubWFwXG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/@radix-ui/react-compose-refs/dist/index.mjs\n"); /***/ }), /***/ "(ssr)/./node_modules/@radix-ui/react-context/dist/index.mjs": /*!*************************************************************!*\ !*** ./node_modules/@radix-ui/react-context/dist/index.mjs ***! \*************************************************************/ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ createContext: () => (/* binding */ createContext2),\n/* harmony export */ createContextScope: () => (/* binding */ createContextScope)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react-jsx-runtime.js\");\n// packages/react/context/src/createContext.tsx\n\n\nfunction createContext2(rootComponentName, defaultContext) {\n const Context = react__WEBPACK_IMPORTED_MODULE_0__.createContext(defaultContext);\n const Provider = (props) => {\n const { children, ...context } = props;\n const value = react__WEBPACK_IMPORTED_MODULE_0__.useMemo(() => context, Object.values(context));\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(Context.Provider, { value, children });\n };\n Provider.displayName = rootComponentName + \"Provider\";\n function useContext2(consumerName) {\n const context = react__WEBPACK_IMPORTED_MODULE_0__.useContext(Context);\n if (context) return context;\n if (defaultContext !== void 0) return defaultContext;\n throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n }\n return [Provider, useContext2];\n}\nfunction createContextScope(scopeName, createContextScopeDeps = []) {\n let defaultContexts = [];\n function createContext3(rootComponentName, defaultContext) {\n const BaseContext = react__WEBPACK_IMPORTED_MODULE_0__.createContext(defaultContext);\n const index = defaultContexts.length;\n defaultContexts = [...defaultContexts, defaultContext];\n const Provider = (props) => {\n const { scope, children, ...context } = props;\n const Context = scope?.[scopeName]?.[index] || BaseContext;\n const value = react__WEBPACK_IMPORTED_MODULE_0__.useMemo(() => context, Object.values(context));\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(Context.Provider, { value, children });\n };\n Provider.displayName = rootComponentName + \"Provider\";\n function useContext2(consumerName, scope) {\n const Context = scope?.[scopeName]?.[index] || BaseContext;\n const context = react__WEBPACK_IMPORTED_MODULE_0__.useContext(Context);\n if (context) return context;\n if (defaultContext !== void 0) return defaultContext;\n throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n }\n return [Provider, useContext2];\n }\n const createScope = () => {\n const scopeContexts = defaultContexts.map((defaultContext) => {\n return react__WEBPACK_IMPORTED_MODULE_0__.createContext(defaultContext);\n });\n return function useScope(scope) {\n const contexts = scope?.[scopeName] || scopeContexts;\n return react__WEBPACK_IMPORTED_MODULE_0__.useMemo(\n () => ({ [`__scope${scopeName}`]: { ...scope, [scopeName]: contexts } }),\n [scope, contexts]\n );\n };\n };\n createScope.scopeName = scopeName;\n return [createContext3, composeContextScopes(createScope, ...createContextScopeDeps)];\n}\nfunction composeContextScopes(...scopes) {\n const baseScope = scopes[0];\n if (scopes.length === 1) return baseScope;\n const createScope = () => {\n const scopeHooks = scopes.map((createScope2) => ({\n useScope: createScope2(),\n scopeName: createScope2.scopeName\n }));\n return function useComposedScopes(overrideScopes) {\n const nextScopes = scopeHooks.reduce((nextScopes2, { useScope, scopeName }) => {\n const scopeProps = useScope(overrideScopes);\n const currentScope = scopeProps[`__scope${scopeName}`];\n return { ...nextScopes2, ...currentScope };\n }, {});\n return react__WEBPACK_IMPORTED_MODULE_0__.useMemo(() => ({ [`__scope${baseScope.scopeName}`]: nextScopes }), [nextScopes]);\n };\n };\n createScope.scopeName = baseScope.scopeName;\n return createScope;\n}\n\n//# sourceMappingURL=index.mjs.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LWNvbnRleHQvZGlzdC9pbmRleC5tanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBO0FBQytCO0FBQ1M7QUFDeEM7QUFDQSxrQkFBa0IsZ0RBQW1CO0FBQ3JDO0FBQ0EsWUFBWSx1QkFBdUI7QUFDbkMsa0JBQWtCLDBDQUFhO0FBQy9CLDJCQUEyQixzREFBRyxxQkFBcUIsaUJBQWlCO0FBQ3BFO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQiw2Q0FBZ0I7QUFDcEM7QUFDQTtBQUNBLHlCQUF5QixhQUFhLDJCQUEyQixrQkFBa0I7QUFDbkY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLGdEQUFtQjtBQUMzQztBQUNBO0FBQ0E7QUFDQSxjQUFjLDhCQUE4QjtBQUM1QztBQUNBLG9CQUFvQiwwQ0FBYTtBQUNqQyw2QkFBNkIsc0RBQUcscUJBQXFCLGlCQUFpQjtBQUN0RTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQiw2Q0FBZ0I7QUFDdEM7QUFDQTtBQUNBLDJCQUEyQixhQUFhLDJCQUEyQixrQkFBa0I7QUFDckY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsZ0RBQW1CO0FBQ2hDLEtBQUs7QUFDTDtBQUNBO0FBQ0EsYUFBYSwwQ0FBYTtBQUMxQixpQkFBaUIsV0FBVyxVQUFVLE1BQU0sbUNBQW1DO0FBQy9FO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSwyREFBMkQscUJBQXFCO0FBQ2hGO0FBQ0Esa0RBQWtELFVBQVU7QUFDNUQsaUJBQWlCO0FBQ2pCLE9BQU8sSUFBSTtBQUNYLGFBQWEsMENBQWEsVUFBVSxXQUFXLG9CQUFvQixnQkFBZ0I7QUFDbkY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlFO0FBQ0YiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9teS12MC1wcm9qZWN0Ly4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC1jb250ZXh0L2Rpc3QvaW5kZXgubWpzP2VkNmEiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gcGFja2FnZXMvcmVhY3QvY29udGV4dC9zcmMvY3JlYXRlQ29udGV4dC50c3hcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsganN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5mdW5jdGlvbiBjcmVhdGVDb250ZXh0Mihyb290Q29tcG9uZW50TmFtZSwgZGVmYXVsdENvbnRleHQpIHtcbiAgY29uc3QgQ29udGV4dCA9IFJlYWN0LmNyZWF0ZUNvbnRleHQoZGVmYXVsdENvbnRleHQpO1xuICBjb25zdCBQcm92aWRlciA9IChwcm9wcykgPT4ge1xuICAgIGNvbnN0IHsgY2hpbGRyZW4sIC4uLmNvbnRleHQgfSA9IHByb3BzO1xuICAgIGNvbnN0IHZhbHVlID0gUmVhY3QudXNlTWVtbygoKSA9PiBjb250ZXh0LCBPYmplY3QudmFsdWVzKGNvbnRleHQpKTtcbiAgICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChDb250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlLCBjaGlsZHJlbiB9KTtcbiAgfTtcbiAgUHJvdmlkZXIuZGlzcGxheU5hbWUgPSByb290Q29tcG9uZW50TmFtZSArIFwiUHJvdmlkZXJcIjtcbiAgZnVuY3Rpb24gdXNlQ29udGV4dDIoY29uc3VtZXJOYW1lKSB7XG4gICAgY29uc3QgY29udGV4dCA9IFJlYWN0LnVzZUNvbnRleHQoQ29udGV4dCk7XG4gICAgaWYgKGNvbnRleHQpIHJldHVybiBjb250ZXh0O1xuICAgIGlmIChkZWZhdWx0Q29udGV4dCAhPT0gdm9pZCAwKSByZXR1cm4gZGVmYXVsdENvbnRleHQ7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBcXGAke2NvbnN1bWVyTmFtZX1cXGAgbXVzdCBiZSB1c2VkIHdpdGhpbiBcXGAke3Jvb3RDb21wb25lbnROYW1lfVxcYGApO1xuICB9XG4gIHJldHVybiBbUHJvdmlkZXIsIHVzZUNvbnRleHQyXTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZUNvbnRleHRTY29wZShzY29wZU5hbWUsIGNyZWF0ZUNvbnRleHRTY29wZURlcHMgPSBbXSkge1xuICBsZXQgZGVmYXVsdENvbnRleHRzID0gW107XG4gIGZ1bmN0aW9uIGNyZWF0ZUNvbnRleHQzKHJvb3RDb21wb25lbnROYW1lLCBkZWZhdWx0Q29udGV4dCkge1xuICAgIGNvbnN0IEJhc2VDb250ZXh0ID0gUmVhY3QuY3JlYXRlQ29udGV4dChkZWZhdWx0Q29udGV4dCk7XG4gICAgY29uc3QgaW5kZXggPSBkZWZhdWx0Q29udGV4dHMubGVuZ3RoO1xuICAgIGRlZmF1bHRDb250ZXh0cyA9IFsuLi5kZWZhdWx0Q29udGV4dHMsIGRlZmF1bHRDb250ZXh0XTtcbiAgICBjb25zdCBQcm92aWRlciA9IChwcm9wcykgPT4ge1xuICAgICAgY29uc3QgeyBzY29wZSwgY2hpbGRyZW4sIC4uLmNvbnRleHQgfSA9IHByb3BzO1xuICAgICAgY29uc3QgQ29udGV4dCA9IHNjb3BlPy5bc2NvcGVOYW1lXT8uW2luZGV4XSB8fCBCYXNlQ29udGV4dDtcbiAgICAgIGNvbnN0IHZhbHVlID0gUmVhY3QudXNlTWVtbygoKSA9PiBjb250ZXh0LCBPYmplY3QudmFsdWVzKGNvbnRleHQpKTtcbiAgICAgIHJldHVybiAvKiBAX19QVVJFX18gKi8ganN4KENvbnRleHQuUHJvdmlkZXIsIHsgdmFsdWUsIGNoaWxkcmVuIH0pO1xuICAgIH07XG4gICAgUHJvdmlkZXIuZGlzcGxheU5hbWUgPSByb290Q29tcG9uZW50TmFtZSArIFwiUHJvdmlkZXJcIjtcbiAgICBmdW5jdGlvbiB1c2VDb250ZXh0Mihjb25zdW1lck5hbWUsIHNjb3BlKSB7XG4gICAgICBjb25zdCBDb250ZXh0ID0gc2NvcGU/LltzY29wZU5hbWVdPy5baW5kZXhdIHx8IEJhc2VDb250ZXh0O1xuICAgICAgY29uc3QgY29udGV4dCA9IFJlYWN0LnVzZUNvbnRleHQoQ29udGV4dCk7XG4gICAgICBpZiAoY29udGV4dCkgcmV0dXJuIGNvbnRleHQ7XG4gICAgICBpZiAoZGVmYXVsdENvbnRleHQgIT09IHZvaWQgMCkgcmV0dXJuIGRlZmF1bHRDb250ZXh0O1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBcXGAke2NvbnN1bWVyTmFtZX1cXGAgbXVzdCBiZSB1c2VkIHdpdGhpbiBcXGAke3Jvb3RDb21wb25lbnROYW1lfVxcYGApO1xuICAgIH1cbiAgICByZXR1cm4gW1Byb3ZpZGVyLCB1c2VDb250ZXh0Ml07XG4gIH1cbiAgY29uc3QgY3JlYXRlU2NvcGUgPSAoKSA9PiB7XG4gICAgY29uc3Qgc2NvcGVDb250ZXh0cyA9IGRlZmF1bHRDb250ZXh0cy5tYXAoKGRlZmF1bHRDb250ZXh0KSA9PiB7XG4gICAgICByZXR1cm4gUmVhY3QuY3JlYXRlQ29udGV4dChkZWZhdWx0Q29udGV4dCk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIHVzZVNjb3BlKHNjb3BlKSB7XG4gICAgICBjb25zdCBjb250ZXh0cyA9IHNjb3BlPy5bc2NvcGVOYW1lXSB8fCBzY29wZUNvbnRleHRzO1xuICAgICAgcmV0dXJuIFJlYWN0LnVzZU1lbW8oXG4gICAgICAgICgpID0+ICh7IFtgX19zY29wZSR7c2NvcGVOYW1lfWBdOiB7IC4uLnNjb3BlLCBbc2NvcGVOYW1lXTogY29udGV4dHMgfSB9KSxcbiAgICAgICAgW3Njb3BlLCBjb250ZXh0c11cbiAgICAgICk7XG4gICAgfTtcbiAgfTtcbiAgY3JlYXRlU2NvcGUuc2NvcGVOYW1lID0gc2NvcGVOYW1lO1xuICByZXR1cm4gW2NyZWF0ZUNvbnRleHQzLCBjb21wb3NlQ29udGV4dFNjb3BlcyhjcmVhdGVTY29wZSwgLi4uY3JlYXRlQ29udGV4dFNjb3BlRGVwcyldO1xufVxuZnVuY3Rpb24gY29tcG9zZUNvbnRleHRTY29wZXMoLi4uc2NvcGVzKSB7XG4gIGNvbnN0IGJhc2VTY29wZSA9IHNjb3Blc1swXTtcbiAgaWYgKHNjb3Blcy5sZW5ndGggPT09IDEpIHJldHVybiBiYXNlU2NvcGU7XG4gIGNvbnN0IGNyZWF0ZVNjb3BlID0gKCkgPT4ge1xuICAgIGNvbnN0IHNjb3BlSG9va3MgPSBzY29wZXMubWFwKChjcmVhdGVTY29wZTIpID0+ICh7XG4gICAgICB1c2VTY29wZTogY3JlYXRlU2NvcGUyKCksXG4gICAgICBzY29wZU5hbWU6IGNyZWF0ZVNjb3BlMi5zY29wZU5hbWVcbiAgICB9KSk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIHVzZUNvbXBvc2VkU2NvcGVzKG92ZXJyaWRlU2NvcGVzKSB7XG4gICAgICBjb25zdCBuZXh0U2NvcGVzID0gc2NvcGVIb29rcy5yZWR1Y2UoKG5leHRTY29wZXMyLCB7IHVzZVNjb3BlLCBzY29wZU5hbWUgfSkgPT4ge1xuICAgICAgICBjb25zdCBzY29wZVByb3BzID0gdXNlU2NvcGUob3ZlcnJpZGVTY29wZXMpO1xuICAgICAgICBjb25zdCBjdXJyZW50U2NvcGUgPSBzY29wZVByb3BzW2BfX3Njb3BlJHtzY29wZU5hbWV9YF07XG4gICAgICAgIHJldHVybiB7IC4uLm5leHRTY29wZXMyLCAuLi5jdXJyZW50U2NvcGUgfTtcbiAgICAgIH0sIHt9KTtcbiAgICAgIHJldHVybiBSZWFjdC51c2VNZW1vKCgpID0+ICh7IFtgX19zY29wZSR7YmFzZVNjb3BlLnNjb3BlTmFtZX1gXTogbmV4dFNjb3BlcyB9KSwgW25leHRTY29wZXNdKTtcbiAgICB9O1xuICB9O1xuICBjcmVhdGVTY29wZS5zY29wZU5hbWUgPSBiYXNlU2NvcGUuc2NvcGVOYW1lO1xuICByZXR1cm4gY3JlYXRlU2NvcGU7XG59XG5leHBvcnQge1xuICBjcmVhdGVDb250ZXh0MiBhcyBjcmVhdGVDb250ZXh0LFxuICBjcmVhdGVDb250ZXh0U2NvcGVcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tanMubWFwXG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/@radix-ui/react-context/dist/index.mjs\n"); /***/ }), /***/ "(ssr)/./node_modules/@radix-ui/react-direction/dist/index.mjs": /*!***************************************************************!*\ !*** ./node_modules/@radix-ui/react-direction/dist/index.mjs ***! \***************************************************************/ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ DirectionProvider: () => (/* binding */ DirectionProvider),\n/* harmony export */ Provider: () => (/* binding */ Provider),\n/* harmony export */ useDirection: () => (/* binding */ useDirection)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react-jsx-runtime.js\");\n// packages/react/direction/src/Direction.tsx\n\n\nvar DirectionContext = react__WEBPACK_IMPORTED_MODULE_0__.createContext(void 0);\nvar DirectionProvider = (props) => {\n const { dir, children } = props;\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(DirectionContext.Provider, { value: dir, children });\n};\nfunction useDirection(localDir) {\n const globalDir = react__WEBPACK_IMPORTED_MODULE_0__.useContext(DirectionContext);\n return localDir || globalDir || \"ltr\";\n}\nvar Provider = DirectionProvider;\n\n//# sourceMappingURL=index.mjs.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LWRpcmVjdGlvbi9kaXN0L2luZGV4Lm1qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQytCO0FBQ1M7QUFDeEMsdUJBQXVCLGdEQUFtQjtBQUMxQztBQUNBLFVBQVUsZ0JBQWdCO0FBQzFCLHlCQUF5QixzREFBRyw4QkFBOEIsc0JBQXNCO0FBQ2hGO0FBQ0E7QUFDQSxvQkFBb0IsNkNBQWdCO0FBQ3BDO0FBQ0E7QUFDQTtBQUtFO0FBQ0YiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9teS12MC1wcm9qZWN0Ly4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC1kaXJlY3Rpb24vZGlzdC9pbmRleC5tanM/NTQyMiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBwYWNrYWdlcy9yZWFjdC9kaXJlY3Rpb24vc3JjL0RpcmVjdGlvbi50c3hcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsganN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG52YXIgRGlyZWN0aW9uQ29udGV4dCA9IFJlYWN0LmNyZWF0ZUNvbnRleHQodm9pZCAwKTtcbnZhciBEaXJlY3Rpb25Qcm92aWRlciA9IChwcm9wcykgPT4ge1xuICBjb25zdCB7IGRpciwgY2hpbGRyZW4gfSA9IHByb3BzO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChEaXJlY3Rpb25Db250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiBkaXIsIGNoaWxkcmVuIH0pO1xufTtcbmZ1bmN0aW9uIHVzZURpcmVjdGlvbihsb2NhbERpcikge1xuICBjb25zdCBnbG9iYWxEaXIgPSBSZWFjdC51c2VDb250ZXh0KERpcmVjdGlvbkNvbnRleHQpO1xuICByZXR1cm4gbG9jYWxEaXIgfHwgZ2xvYmFsRGlyIHx8IFwibHRyXCI7XG59XG52YXIgUHJvdmlkZXIgPSBEaXJlY3Rpb25Qcm92aWRlcjtcbmV4cG9ydCB7XG4gIERpcmVjdGlvblByb3ZpZGVyLFxuICBQcm92aWRlcixcbiAgdXNlRGlyZWN0aW9uXG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubWpzLm1hcFxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/@radix-ui/react-direction/dist/index.mjs\n"); /***/ }), /***/ "(ssr)/./node_modules/@radix-ui/react-dismissable-layer/dist/index.mjs": /*!***********************************************************************!*\ !*** ./node_modules/@radix-ui/react-dismissable-layer/dist/index.mjs ***! \***********************************************************************/ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Branch: () => (/* binding */ Branch),\n/* harmony export */ DismissableLayer: () => (/* binding */ DismissableLayer),\n/* harmony export */ DismissableLayerBranch: () => (/* binding */ DismissableLayerBranch),\n/* harmony export */ Root: () => (/* binding */ Root)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var _radix_ui_primitive__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @radix-ui/primitive */ \"(ssr)/./node_modules/@radix-ui/primitive/dist/index.mjs\");\n/* harmony import */ var _radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @radix-ui/react-primitive */ \"(ssr)/./node_modules/@radix-ui/react-primitive/dist/index.mjs\");\n/* harmony import */ var _radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @radix-ui/react-compose-refs */ \"(ssr)/./node_modules/@radix-ui/react-compose-refs/dist/index.mjs\");\n/* harmony import */ var _radix_ui_react_use_callback_ref__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @radix-ui/react-use-callback-ref */ \"(ssr)/./node_modules/@radix-ui/react-use-callback-ref/dist/index.mjs\");\n/* harmony import */ var _radix_ui_react_use_escape_keydown__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @radix-ui/react-use-escape-keydown */ \"(ssr)/./node_modules/@radix-ui/react-use-escape-keydown/dist/index.mjs\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react-jsx-runtime.js\");\n/* __next_internal_client_entry_do_not_use__ Branch,DismissableLayer,DismissableLayerBranch,Root auto */ // packages/react/dismissable-layer/src/DismissableLayer.tsx\n\n\n\n\n\n\n\nvar DISMISSABLE_LAYER_NAME = \"DismissableLayer\";\nvar CONTEXT_UPDATE = \"dismissableLayer.update\";\nvar POINTER_DOWN_OUTSIDE = \"dismissableLayer.pointerDownOutside\";\nvar FOCUS_OUTSIDE = \"dismissableLayer.focusOutside\";\nvar originalBodyPointerEvents;\nvar DismissableLayerContext = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.createContext({\n layers: /* @__PURE__ */ new Set(),\n layersWithOutsidePointerEventsDisabled: /* @__PURE__ */ new Set(),\n branches: /* @__PURE__ */ new Set()\n});\nvar DismissableLayer = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef((props, forwardedRef)=>{\n const { disableOutsidePointerEvents = false, onEscapeKeyDown, onPointerDownOutside, onFocusOutside, onInteractOutside, onDismiss, ...layerProps } = props;\n const context = react__WEBPACK_IMPORTED_MODULE_0__.useContext(DismissableLayerContext);\n const [node, setNode] = react__WEBPACK_IMPORTED_MODULE_0__.useState(null);\n const ownerDocument = node?.ownerDocument ?? globalThis?.document;\n const [, force] = react__WEBPACK_IMPORTED_MODULE_0__.useState({});\n const composedRefs = (0,_radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_2__.useComposedRefs)(forwardedRef, (node2)=>setNode(node2));\n const layers = Array.from(context.layers);\n const [highestLayerWithOutsidePointerEventsDisabled] = [\n ...context.layersWithOutsidePointerEventsDisabled\n ].slice(-1);\n const highestLayerWithOutsidePointerEventsDisabledIndex = layers.indexOf(highestLayerWithOutsidePointerEventsDisabled);\n const index = node ? layers.indexOf(node) : -1;\n const isBodyPointerEventsDisabled = context.layersWithOutsidePointerEventsDisabled.size > 0;\n const isPointerEventsEnabled = index >= highestLayerWithOutsidePointerEventsDisabledIndex;\n const pointerDownOutside = usePointerDownOutside((event)=>{\n const target = event.target;\n const isPointerDownOnBranch = [\n ...context.branches\n ].some((branch)=>branch.contains(target));\n if (!isPointerEventsEnabled || isPointerDownOnBranch) return;\n onPointerDownOutside?.(event);\n onInteractOutside?.(event);\n if (!event.defaultPrevented) onDismiss?.();\n }, ownerDocument);\n const focusOutside = useFocusOutside((event)=>{\n const target = event.target;\n const isFocusInBranch = [\n ...context.branches\n ].some((branch)=>branch.contains(target));\n if (isFocusInBranch) return;\n onFocusOutside?.(event);\n onInteractOutside?.(event);\n if (!event.defaultPrevented) onDismiss?.();\n }, ownerDocument);\n (0,_radix_ui_react_use_escape_keydown__WEBPACK_IMPORTED_MODULE_3__.useEscapeKeydown)((event)=>{\n const isHighestLayer = index === context.layers.size - 1;\n if (!isHighestLayer) return;\n onEscapeKeyDown?.(event);\n if (!event.defaultPrevented && onDismiss) {\n event.preventDefault();\n onDismiss();\n }\n }, ownerDocument);\n react__WEBPACK_IMPORTED_MODULE_0__.useEffect(()=>{\n if (!node) return;\n if (disableOutsidePointerEvents) {\n if (context.layersWithOutsidePointerEventsDisabled.size === 0) {\n originalBodyPointerEvents = ownerDocument.body.style.pointerEvents;\n ownerDocument.body.style.pointerEvents = \"none\";\n }\n context.layersWithOutsidePointerEventsDisabled.add(node);\n }\n context.layers.add(node);\n dispatchUpdate();\n return ()=>{\n if (disableOutsidePointerEvents && context.layersWithOutsidePointerEventsDisabled.size === 1) {\n ownerDocument.body.style.pointerEvents = originalBodyPointerEvents;\n }\n };\n }, [\n node,\n ownerDocument,\n disableOutsidePointerEvents,\n context\n ]);\n react__WEBPACK_IMPORTED_MODULE_0__.useEffect(()=>{\n return ()=>{\n if (!node) return;\n context.layers.delete(node);\n context.layersWithOutsidePointerEventsDisabled.delete(node);\n dispatchUpdate();\n };\n }, [\n node,\n context\n ]);\n react__WEBPACK_IMPORTED_MODULE_0__.useEffect(()=>{\n const handleUpdate = ()=>force({});\n document.addEventListener(CONTEXT_UPDATE, handleUpdate);\n return ()=>document.removeEventListener(CONTEXT_UPDATE, handleUpdate);\n }, []);\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_4__.Primitive.div, {\n ...layerProps,\n ref: composedRefs,\n style: {\n pointerEvents: isBodyPointerEventsDisabled ? isPointerEventsEnabled ? \"auto\" : \"none\" : void 0,\n ...props.style\n },\n onFocusCapture: (0,_radix_ui_primitive__WEBPACK_IMPORTED_MODULE_5__.composeEventHandlers)(props.onFocusCapture, focusOutside.onFocusCapture),\n onBlurCapture: (0,_radix_ui_primitive__WEBPACK_IMPORTED_MODULE_5__.composeEventHandlers)(props.onBlurCapture, focusOutside.onBlurCapture),\n onPointerDownCapture: (0,_radix_ui_primitive__WEBPACK_IMPORTED_MODULE_5__.composeEventHandlers)(props.onPointerDownCapture, pointerDownOutside.onPointerDownCapture)\n });\n});\nDismissableLayer.displayName = DISMISSABLE_LAYER_NAME;\nvar BRANCH_NAME = \"DismissableLayerBranch\";\nvar DismissableLayerBranch = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef((props, forwardedRef)=>{\n const context = react__WEBPACK_IMPORTED_MODULE_0__.useContext(DismissableLayerContext);\n const ref = react__WEBPACK_IMPORTED_MODULE_0__.useRef(null);\n const composedRefs = (0,_radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_2__.useComposedRefs)(forwardedRef, ref);\n react__WEBPACK_IMPORTED_MODULE_0__.useEffect(()=>{\n const node = ref.current;\n if (node) {\n context.branches.add(node);\n return ()=>{\n context.branches.delete(node);\n };\n }\n }, [\n context.branches\n ]);\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_4__.Primitive.div, {\n ...props,\n ref: composedRefs\n });\n});\nDismissableLayerBranch.displayName = BRANCH_NAME;\nfunction usePointerDownOutside(onPointerDownOutside, ownerDocument = globalThis?.document) {\n const handlePointerDownOutside = (0,_radix_ui_react_use_callback_ref__WEBPACK_IMPORTED_MODULE_6__.useCallbackRef)(onPointerDownOutside);\n const isPointerInsideReactTreeRef = react__WEBPACK_IMPORTED_MODULE_0__.useRef(false);\n const handleClickRef = react__WEBPACK_IMPORTED_MODULE_0__.useRef(()=>{});\n react__WEBPACK_IMPORTED_MODULE_0__.useEffect(()=>{\n const handlePointerDown = (event)=>{\n if (event.target && !isPointerInsideReactTreeRef.current) {\n let handleAndDispatchPointerDownOutsideEvent2 = function() {\n handleAndDispatchCustomEvent(POINTER_DOWN_OUTSIDE, handlePointerDownOutside, eventDetail, {\n discrete: true\n });\n };\n var handleAndDispatchPointerDownOutsideEvent = handleAndDispatchPointerDownOutsideEvent2;\n const eventDetail = {\n originalEvent: event\n };\n if (event.pointerType === \"touch\") {\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n handleClickRef.current = handleAndDispatchPointerDownOutsideEvent2;\n ownerDocument.addEventListener(\"click\", handleClickRef.current, {\n once: true\n });\n } else {\n handleAndDispatchPointerDownOutsideEvent2();\n }\n } else {\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n }\n isPointerInsideReactTreeRef.current = false;\n };\n const timerId = window.setTimeout(()=>{\n ownerDocument.addEventListener(\"pointerdown\", handlePointerDown);\n }, 0);\n return ()=>{\n window.clearTimeout(timerId);\n ownerDocument.removeEventListener(\"pointerdown\", handlePointerDown);\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n };\n }, [\n ownerDocument,\n handlePointerDownOutside\n ]);\n return {\n // ensures we check React component tree (not just DOM tree)\n onPointerDownCapture: ()=>isPointerInsideReactTreeRef.current = true\n };\n}\nfunction useFocusOutside(onFocusOutside, ownerDocument = globalThis?.document) {\n const handleFocusOutside = (0,_radix_ui_react_use_callback_ref__WEBPACK_IMPORTED_MODULE_6__.useCallbackRef)(onFocusOutside);\n const isFocusInsideReactTreeRef = react__WEBPACK_IMPORTED_MODULE_0__.useRef(false);\n react__WEBPACK_IMPORTED_MODULE_0__.useEffect(()=>{\n const handleFocus = (event)=>{\n if (event.target && !isFocusInsideReactTreeRef.current) {\n const eventDetail = {\n originalEvent: event\n };\n handleAndDispatchCustomEvent(FOCUS_OUTSIDE, handleFocusOutside, eventDetail, {\n discrete: false\n });\n }\n };\n ownerDocument.addEventListener(\"focusin\", handleFocus);\n return ()=>ownerDocument.removeEventListener(\"focusin\", handleFocus);\n }, [\n ownerDocument,\n handleFocusOutside\n ]);\n return {\n onFocusCapture: ()=>isFocusInsideReactTreeRef.current = true,\n onBlurCapture: ()=>isFocusInsideReactTreeRef.current = false\n };\n}\nfunction dispatchUpdate() {\n const event = new CustomEvent(CONTEXT_UPDATE);\n document.dispatchEvent(event);\n}\nfunction handleAndDispatchCustomEvent(name, handler, detail, { discrete }) {\n const target = detail.originalEvent.target;\n const event = new CustomEvent(name, {\n bubbles: false,\n cancelable: true,\n detail\n });\n if (handler) target.addEventListener(name, handler, {\n once: true\n });\n if (discrete) {\n (0,_radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_4__.dispatchDiscreteCustomEvent)(target, event);\n } else {\n target.dispatchEvent(event);\n }\n}\nvar Root = DismissableLayer;\nvar Branch = DismissableLayerBranch;\n //# sourceMappingURL=index.mjs.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LWRpc21pc3NhYmxlLWxheWVyL2Rpc3QvaW5kZXgubWpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQUF1QjtBQUNjO0FBQ2tCO0FBQ3ZCO0FBQ0Q7QUFDRTtBQXFKM0I7QUEvSU4sSUFBTVEseUJBQXlCO0FBQy9CLElBQU1DLGlCQUFpQjtBQUN2QixJQUFNQyx1QkFBdUI7QUFDN0IsSUFBTUMsZ0JBQWdCO0FBRXRCLElBQUlDO0FBRUosSUFBTUMsd0NBQWdDYixnREFBQSxDQUFjO0lBQ2xEZSxRQUFRLG9CQUFJQztJQUNaQyx3Q0FBd0Msb0JBQUlEO0lBQzVDRSxVQUFVLG9CQUFJRjtBQUNoQjtBQXNDQSxJQUFNRyxpQ0FBeUJuQiw2Q0FBQSxDQUM3QixDQUFDcUIsT0FBT0M7SUFDTixNQUFNLEVBQ0pDLDhCQUE4QixPQUM5QkMsZUFBQSxFQUNBQyxvQkFBQSxFQUNBQyxjQUFBLEVBQ0FDLGlCQUFBLEVBQ0FDLFNBQUEsRUFDQSxHQUFHQyxZQUNMLEdBQUlSO0lBQ0osTUFBTVMsVUFBZ0I5Qiw2Q0FBQSxDQUFXYTtJQUNqQyxNQUFNLENBQUNtQixNQUFNQyxRQUFPLEdBQVVqQywyQ0FBQSxDQUF5QztJQUN2RSxNQUFNbUMsZ0JBQWdCSCxNQUFNRyxpQkFBaUJDLFlBQVlDO0lBQ3pELE1BQU0sR0FBR0MsTUFBSyxHQUFVdEMsMkNBQUEsQ0FBUyxDQUFDO0lBQ2xDLE1BQU11QyxlQUFlbkMsNkVBQWVBLENBQUNrQixjQUFjLENBQUNVLFFBQVNDLFFBQVFEO0lBQ3JFLE1BQU1qQixTQUFTeUIsTUFBTUMsSUFBQSxDQUFLWCxRQUFRZixNQUFNO0lBQ3hDLE1BQU0sQ0FBQzJCLDZDQUE0QyxHQUFJO1dBQUlaLFFBQVFiLHNDQUFzQztLQUFBLENBQUUwQixLQUFBLENBQU07SUFDakgsTUFBTUMsb0RBQW9EN0IsT0FBTzhCLE9BQUEsQ0FBUUg7SUFDekUsTUFBTUksUUFBUWQsT0FBT2pCLE9BQU84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QWMsQ0FBQ2pEO1lBQ25CLElBQUlBLE1BQU1DLE1BQUEsSUFBVSxDQUFDK0MsMEJBQTBCakIsT0FBQSxFQUFTO2dCQUN0RCxNQUFNTyxjQUFjO29CQUFFRSxlQUFleEM7Z0JBQU07Z0JBQzNDcUMsNkJBQTZCOUUsZUFBZXdGLG9CQUFvQlQsYUFBYTtvQkFDM0VDLFVBQVU7Z0JBQ1o7WUFDRjtRQUNGO1FBQ0F4RCxjQUFjcUMsZ0JBQUEsQ0FBaUIsV0FBVzZCO1FBQzFDLE9BQU8sSUFBTWxFLGNBQWNzQyxtQkFBQSxDQUFvQixXQUFXNEI7SUFDNUQsR0FBRztRQUFDbEU7UUFBZWdFO0tBQW1CO0lBRXRDLE9BQU87UUFDTHZCLGdCQUFnQixJQUFPd0IsMEJBQTBCakIsT0FBQSxHQUFVO1FBQzNETixlQUFlLElBQU91QiwwQkFBMEJqQixPQUFBLEdBQVU7SUFDNUQ7QUFDRjtBQUVBLFNBQVNkO0lBQ1AsTUFBTWpCLFFBQVEsSUFBSWtELFlBQVk3RjtJQUM5QjRCLFNBQVNrRSxhQUFBLENBQWNuRDtBQUN6QjtBQUVBLFNBQVNxQyw2QkFDUGUsSUFBQSxFQUNBQyxPQUFBLEVBQ0FDLE1BQUEsRUFDQSxFQUFFZixRQUFBLEVBQVM7SUFFWCxNQUFNdEMsU0FBU3FELE9BQU9kLGFBQUEsQ0FBY3ZDLE1BQUE7SUFDcEMsTUFBTUQsUUFBUSxJQUFJa0QsWUFBWUUsTUFBTTtRQUFFRyxTQUFTO1FBQU9DLFlBQVk7UUFBTUY7SUFBTztJQUMvRSxJQUFJRCxTQUFTcEQsT0FBT21CLGdCQUFBLENBQWlCZ0MsTUFBTUMsU0FBMEI7UUFBRVgsTUFBTTtJQUFLO0lBRWxGLElBQUlILFVBQVU7UUFDWnhGLHNGQUEyQkEsQ0FBQ2tELFFBQVFEO0lBQ3RDLE9BQU87UUFDTEMsT0FBT2tELGFBQUEsQ0FBY25EO0lBQ3ZCO0FBQ0Y7QUFFQSxJQUFNeUQsT0FBTzFGO0FBQ2IsSUFBTTJGLFNBQVM3QiIsInNvdXJjZXMiOlsid2VicGFjazovL215LXYwLXByb2plY3QvLi4vc3JjL0Rpc21pc3NhYmxlTGF5ZXIudHN4PzViZTciXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgY29tcG9zZUV2ZW50SGFuZGxlcnMgfSBmcm9tICdAcmFkaXgtdWkvcHJpbWl0aXZlJztcbmltcG9ydCB7IFByaW1pdGl2ZSwgZGlzcGF0Y2hEaXNjcmV0ZUN1c3RvbUV2ZW50IH0gZnJvbSAnQHJhZGl4LXVpL3JlYWN0LXByaW1pdGl2ZSc7XG5pbXBvcnQgeyB1c2VDb21wb3NlZFJlZnMgfSBmcm9tICdAcmFkaXgtdWkvcmVhY3QtY29tcG9zZS1yZWZzJztcbmltcG9ydCB7IHVzZUNhbGxiYWNrUmVmIH0gZnJvbSAnQHJhZGl4LXVpL3JlYWN0LXVzZS1jYWxsYmFjay1yZWYnO1xuaW1wb3J0IHsgdXNlRXNjYXBlS2V5ZG93biB9IGZyb20gJ0ByYWRpeC11aS9yZWFjdC11c2UtZXNjYXBlLWtleWRvd24nO1xuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBEaXNtaXNzYWJsZUxheWVyXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbmNvbnN0IERJU01JU1NBQkxFX0xBWUVSX05BTUUgPSAnRGlzbWlzc2FibGVMYXllcic7XG5jb25zdCBDT05URVhUX1VQREFURSA9ICdkaXNtaXNzYWJsZUxheWVyLnVwZGF0ZSc7XG5jb25zdCBQT0lOVEVSX0RPV05fT1VUU0lERSA9ICdkaXNtaXNzYWJsZUxheWVyLnBvaW50ZXJEb3duT3V0c2lkZSc7XG5jb25zdCBGT0NVU19PVVRTSURFID0gJ2Rpc21pc3NhYmxlTGF5ZXIuZm9jdXNPdXRzaWRlJztcblxubGV0IG9yaWdpbmFsQm9keVBvaW50ZXJFdmVudHM6IHN0cmluZztcblxuY29uc3QgRGlzbWlzc2FibGVMYXllckNvbnRleHQgPSBSZWFjdC5jcmVhdGVDb250ZXh0KHtcbiAgbGF5ZXJzOiBuZXcgU2V0PERpc21pc3NhYmxlTGF5ZXJFbGVtZW50PigpLFxuICBsYXllcnNXaXRoT3V0c2lkZVBvaW50ZXJFdmVudHNEaXNhYmxlZDogbmV3IFNldDxEaXNtaXNzYWJsZUxheWVyRWxlbWVudD4oKSxcbiAgYnJhbmNoZXM6IG5ldyBTZXQ8RGlzbWlzc2FibGVMYXllckJyYW5jaEVsZW1lbnQ+KCksXG59KTtcblxudHlwZSBEaXNtaXNzYWJsZUxheWVyRWxlbWVudCA9IFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFByaW1pdGl2ZS5kaXY+O1xudHlwZSBQcmltaXRpdmVEaXZQcm9wcyA9IFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgUHJpbWl0aXZlLmRpdj47XG5pbnRlcmZhY2UgRGlzbWlzc2FibGVMYXllclByb3BzIGV4dGVuZHMgUHJpbWl0aXZlRGl2UHJvcHMge1xuICAvKipcbiAgICogV2hlbiBgdHJ1ZWAsIGhvdmVyL2ZvY3VzL2NsaWNrIGludGVyYWN0aW9ucyB3aWxsIGJlIGRpc2FibGVkIG9uIGVsZW1lbnRzIG91dHNpZGVcbiAgICogdGhlIGBEaXNtaXNzYWJsZUxheWVyYC4gVXNlcnMgd2lsbCBuZWVkIHRvIGNsaWNrIHR3aWNlIG9uIG91dHNpZGUgZWxlbWVudHMgdG9cbiAgICogaW50ZXJhY3Qgd2l0aCB0aGVtOiBvbmNlIHRvIGNsb3NlIHRoZSBgRGlzbWlzc2FibGVMYXllcmAsIGFuZCBhZ2FpbiB0byB0cmlnZ2VyIHRoZSBlbGVtZW50LlxuICAgKi9cbiAgZGlzYWJsZU91dHNpZGVQb2ludGVyRXZlbnRzPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEV2ZW50IGhhbmRsZXIgY2FsbGVkIHdoZW4gdGhlIGVzY2FwZSBrZXkgaXMgZG93bi5cbiAgICogQ2FuIGJlIHByZXZlbnRlZC5cbiAgICovXG4gIG9uRXNjYXBlS2V5RG93bj86IChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4gdm9pZDtcbiAgLyoqXG4gICAqIEV2ZW50IGhhbmRsZXIgY2FsbGVkIHdoZW4gdGhlIGEgYHBvaW50ZXJkb3duYCBldmVudCBoYXBwZW5zIG91dHNpZGUgb2YgdGhlIGBEaXNtaXNzYWJsZUxheWVyYC5cbiAgICogQ2FuIGJlIHByZXZlbnRlZC5cbiAgICovXG4gIG9uUG9pbnRlckRvd25PdXRzaWRlPzogKGV2ZW50OiBQb2ludGVyRG93bk91dHNpZGVFdmVudCkgPT4gdm9pZDtcbiAgLyoqXG4gICAqIEV2ZW50IGhhbmRsZXIgY2FsbGVkIHdoZW4gdGhlIGZvY3VzIG1vdmVzIG91dHNpZGUgb2YgdGhlIGBEaXNtaXNzYWJsZUxheWVyYC5cbiAgICogQ2FuIGJlIHByZXZlbnRlZC5cbiAgICovXG4gIG9uRm9jdXNPdXRzaWRlPzogKGV2ZW50OiBGb2N1c091dHNpZGVFdmVudCkgPT4gdm9pZDtcbiAgLyoqXG4gICAqIEV2ZW50IGhhbmRsZXIgY2FsbGVkIHdoZW4gYW4gaW50ZXJhY3Rpb24gaGFwcGVucyBvdXRzaWRlIHRoZSBgRGlzbWlzc2FibGVMYXllcmAuXG4gICAqIFNwZWNpZmljYWxseSwgd2hlbiBhIGBwb2ludGVyZG93bmAgZXZlbnQgaGFwcGVucyBvdXRzaWRlIG9yIGZvY3VzIG1vdmVzIG91dHNpZGUgb2YgaXQuXG4gICAqIENhbiBiZSBwcmV2ZW50ZWQuXG4gICAqL1xuICBvbkludGVyYWN0T3V0c2lkZT86IChldmVudDogUG9pbnRlckRvd25PdXRzaWRlRXZlbnQgfCBGb2N1c091dHNpZGVFdmVudCkgPT4gdm9pZDtcbiAgLyoqXG4gICAqIEhhbmRsZXIgY2FsbGVkIHdoZW4gdGhlIGBEaXNtaXNzYWJsZUxheWVyYCBzaG91bGQgYmUgZGlzbWlzc2VkXG4gICAqL1xuICBvbkRpc21pc3M/OiAoKSA9PiB2b2lkO1xufVxuXG5jb25zdCBEaXNtaXNzYWJsZUxheWVyID0gUmVhY3QuZm9yd2FyZFJlZjxEaXNtaXNzYWJsZUxheWVyRWxlbWVudCwgRGlzbWlzc2FibGVMYXllclByb3BzPihcbiAgKHByb3BzLCBmb3J3YXJkZWRSZWYpID0+IHtcbiAgICBjb25zdCB7XG4gICAgICBkaXNhYmxlT3V0c2lkZVBvaW50ZXJFdmVudHMgPSBmYWxzZSxcbiAgICAgIG9uRXNjYXBlS2V5RG93bixcbiAgICAgIG9uUG9pbnRlckRvd25PdXRzaWRlLFxuICAgICAgb25Gb2N1c091dHNpZGUsXG4gICAgICBvbkludGVyYWN0T3V0c2lkZSxcbiAgICAgIG9uRGlzbWlzcyxcbiAgICAgIC4uLmxheWVyUHJvcHNcbiAgICB9ID0gcHJvcHM7XG4gICAgY29uc3QgY29udGV4dCA9IFJlYWN0LnVzZUNvbnRleHQoRGlzbWlzc2FibGVMYXllckNvbnRleHQpO1xuICAgIGNvbnN0IFtub2RlLCBzZXROb2RlXSA9IFJlYWN0LnVzZVN0YXRlPERpc21pc3NhYmxlTGF5ZXJFbGVtZW50IHwgbnVsbD4obnVsbCk7XG4gICAgY29uc3Qgb3duZXJEb2N1bWVudCA9IG5vZGU/Lm93bmVyRG9jdW1lbnQgPz8gZ2xvYmFsVGhpcz8uZG9jdW1lbnQ7XG4gICAgY29uc3QgWywgZm9yY2VdID0gUmVhY3QudXNlU3RhdGUoe30pO1xuICAgIGNvbnN0IGNvbXBvc2VkUmVmcyA9IHVzZUNvbXBvc2VkUmVmcyhmb3J3YXJkZWRSZWYsIChub2RlKSA9PiBzZXROb2RlKG5vZGUpKTtcbiAgICBjb25zdCBsYXllcnMgPSBBcnJheS5mcm9tKGNvbnRleHQubGF5ZXJzKTtcbiAgICBjb25zdCBbaGlnaGVzdExheWVyV2l0aE91dHNpZGVQb2ludGVyRXZlbnRzRGlzYWJsZWRdID0gWy4uLmNvbnRleHQubGF5ZXJzV2l0aE91dHNpZGVQb2ludGVyRXZlbnRzRGlzYWJsZWRdLnNsaWNlKC0xKTsgLy8gcHJldHRpZXItaWdub3JlXG4gICAgY29uc3QgaGlnaGVzdExheWVyV2l0aE91dHNpZGVQb2ludGVyRXZlbnRzRGlzYWJsZWRJbmRleCA9IGxheWVycy5pbmRleE9mKGhpZ2hlc3RMYXllcldpdGhPdXRzaWRlUG9pbnRlckV2ZW50c0Rpc2FibGVkKTsgLy8gcHJldHRpZXItaWdub3JlXG4gICAgY29uc3QgaW5kZXggPSBub2RlID8gbGF5ZXJzLmluZGV4T2Yobm9kZSkgOiAtMTtcbiAgICBjb25zdCBpc0JvZHlQb2ludGVyRXZlbnRzRGlzYWJsZWQgPSBjb250ZXh0LmxheWVyc1dpdGhPdXRzaWRlUG9pbnRlckV2ZW50c0Rpc2FibGVkLnNpemUgPiAwO1xuICAgIGNvbnN0IGlzUG9pbnRlckV2ZW50c0VuYWJsZWQgPSBpbmRleCA+PSBoaWdoZXN0TGF5ZXJXaXRoT3V0c2lkZVBvaW50ZXJFdmVudHNEaXNhYmxlZEluZGV4O1xuXG4gICAgY29uc3QgcG9pbnRlckRvd25PdXRzaWRlID0gdXNlUG9pbnRlckRvd25PdXRzaWRlKChldmVudCkgPT4ge1xuICAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgICAgY29uc3QgaXNQb2ludGVyRG93bk9uQnJhbmNoID0gWy4uLmNvbnRleHQuYnJhbmNoZXNdLnNvbWUoKGJyYW5jaCkgPT4gYnJhbmNoLmNvbnRhaW5zKHRhcmdldCkpO1xuICAgICAgaWYgKCFpc1BvaW50ZXJFdmVudHNFbmFibGVkIHx8IGlzUG9pbnRlckRvd25PbkJyYW5jaCkgcmV0dXJuO1xuICAgICAgb25Qb2ludGVyRG93bk91dHNpZGU/LihldmVudCk7XG4gICAgICBvbkludGVyYWN0T3V0c2lkZT8uKGV2ZW50KTtcbiAgICAgIGlmICghZXZlbnQuZGVmYXVsdFByZXZlbnRlZCkgb25EaXNtaXNzPy4oKTtcbiAgICB9LCBvd25lckRvY3VtZW50KTtcblxuICAgIGNvbnN0IGZvY3VzT3V0c2lkZSA9IHVzZUZvY3VzT3V0c2lkZSgoZXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICAgIGNvbnN0IGlzRm9jdXNJbkJyYW5jaCA9IFsuLi5jb250ZXh0LmJyYW5jaGVzXS5zb21lKChicmFuY2gpID0+IGJyYW5jaC5jb250YWlucyh0YXJnZXQpKTtcbiAgICAgIGlmIChpc0ZvY3VzSW5CcmFuY2gpIHJldHVybjtcbiAgICAgIG9uRm9jdXNPdXRzaWRlPy4oZXZlbnQpO1xuICAgICAgb25JbnRlcmFjdE91dHNpZGU/LihldmVudCk7XG4gICAgICBpZiAoIWV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIG9uRGlzbWlzcz8uKCk7XG4gICAgfSwgb3duZXJEb2N1bWVudCk7XG5cbiAgICB1c2VFc2NhcGVLZXlkb3duKChldmVudCkgPT4ge1xuICAgICAgY29uc3QgaXNIaWdoZXN0TGF5ZXIgPSBpbmRleCA9PT0gY29udGV4dC5sYXllcnMuc2l6ZSAtIDE7XG4gICAgICBpZiAoIWlzSGlnaGVzdExheWVyKSByZXR1cm47XG4gICAgICBvbkVzY2FwZUtleURvd24/LihldmVudCk7XG4gICAgICBpZiAoIWV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQgJiYgb25EaXNtaXNzKSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIG9uRGlzbWlzcygpO1xuICAgICAgfVxuICAgIH0sIG93bmVyRG9jdW1lbnQpO1xuXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGlmICghbm9kZSkgcmV0dXJuO1xuICAgICAgaWYgKGRpc2FibGVPdXRzaWRlUG9pbnRlckV2ZW50cykge1xuICAgICAgICBpZiAoY29udGV4dC5sYXllcnNXaXRoT3V0c2lkZVBvaW50ZXJFdmVudHNEaXNhYmxlZC5zaXplID09PSAwKSB7XG4gICAgICAgICAgb3JpZ2luYWxCb2R5UG9pbnRlckV2ZW50cyA9IG93bmVyRG9jdW1lbnQuYm9keS5zdHlsZS5wb2ludGVyRXZlbnRzO1xuICAgICAgICAgIG93bmVyRG9jdW1lbnQuYm9keS5zdHlsZS5wb2ludGVyRXZlbnRzID0gJ25vbmUnO1xuICAgICAgICB9XG4gICAgICAgIGNvbnRleHQubGF5ZXJzV2l0aE91dHNpZGVQb2ludGVyRXZlbnRzRGlzYWJsZWQuYWRkKG5vZGUpO1xuICAgICAgfVxuICAgICAgY29udGV4dC5sYXllcnMuYWRkKG5vZGUpO1xuICAgICAgZGlzcGF0Y2hVcGRhdGUoKTtcbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBkaXNhYmxlT3V0c2lkZVBvaW50ZXJFdmVudHMgJiZcbiAgICAgICAgICBjb250ZXh0LmxheWVyc1dpdGhPdXRzaWRlUG9pbnRlckV2ZW50c0Rpc2FibGVkLnNpemUgPT09IDFcbiAgICAgICAgKSB7XG4gICAgICAgICAgb3duZXJEb2N1bWVudC5ib2R5LnN0eWxlLnBvaW50ZXJFdmVudHMgPSBvcmlnaW5hbEJvZHlQb2ludGVyRXZlbnRzO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIH0sIFtub2RlLCBvd25lckRvY3VtZW50LCBkaXNhYmxlT3V0c2lkZVBvaW50ZXJFdmVudHMsIGNvbnRleHRdKTtcblxuICAgIC8qKlxuICAgICAqIFdlIHB1cnBvc2VmdWxseSBwcmV2ZW50IGNvbWJpbmluZyB0aGlzIGVmZmVjdCB3aXRoIHRoZSBgZGlzYWJsZU91dHNpZGVQb2ludGVyRXZlbnRzYCBlZmZlY3RcbiAgICAgKiBiZWNhdXNlIGEgY2hhbmdlIHRvIGBkaXNhYmxlT3V0c2lkZVBvaW50ZXJFdmVudHNgIHdvdWxkIHJlbW92ZSB0aGlzIGxheWVyIGZyb20gdGhlIHN0YWNrXG4gICAgICogYW5kIGFkZCBpdCB0byB0aGUgZW5kIGFnYWluIHNvIHRoZSBsYXllcmluZyBvcmRlciB3b3VsZG4ndCBiZSBfY3JlYXRpb24gb3JkZXJfLlxuICAgICAqIFdlIG9ubHkgd2FudCB0aGVtIHRvIGJlIHJlbW92ZWQgZnJvbSBjb250ZXh0IHN0YWNrcyB3aGVuIHVubW91bnRlZC5cbiAgICAgKi9cbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgaWYgKCFub2RlKSByZXR1cm47XG4gICAgICAgIGNvbnRleHQubGF5ZXJzLmRlbGV0ZShub2RlKTtcbiAgICAgICAgY29udGV4dC5sYXllcnNXaXRoT3V0c2lkZVBvaW50ZXJFdmVudHNEaXNhYmxlZC5kZWxldGUobm9kZSk7XG4gICAgICAgIGRpc3BhdGNoVXBkYXRlKCk7XG4gICAgICB9O1xuICAgIH0sIFtub2RlLCBjb250ZXh0XSk7XG5cbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3QgaGFuZGxlVXBkYXRlID0gKCkgPT4gZm9yY2Uoe30pO1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihDT05URVhUX1VQREFURSwgaGFuZGxlVXBkYXRlKTtcbiAgICAgIHJldHVybiAoKSA9PiBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKENPTlRFWFRfVVBEQVRFLCBoYW5kbGVVcGRhdGUpO1xuICAgIH0sIFtdKTtcblxuICAgIHJldHVybiAoXG4gICAgICA8UHJpbWl0aXZlLmRpdlxuICAgICAgICB7Li4ubGF5ZXJQcm9wc31cbiAgICAgICAgcmVmPXtjb21wb3NlZFJlZnN9XG4gICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgcG9pbnRlckV2ZW50czogaXNCb2R5UG9pbnRlckV2ZW50c0Rpc2FibGVkXG4gICAgICAgICAgICA/IGlzUG9pbnRlckV2ZW50c0VuYWJsZWRcbiAgICAgICAgICAgICAgPyAnYXV0bydcbiAgICAgICAgICAgICAgOiAnbm9uZSdcbiAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgIC4uLnByb3BzLnN0eWxlLFxuICAgICAgICB9fVxuICAgICAgICBvbkZvY3VzQ2FwdHVyZT17Y29tcG9zZUV2ZW50SGFuZGxlcnMocHJvcHMub25Gb2N1c0NhcHR1cmUsIGZvY3VzT3V0c2lkZS5vbkZvY3VzQ2FwdHVyZSl9XG4gICAgICAgIG9uQmx1ckNhcHR1cmU9e2NvbXBvc2VFdmVudEhhbmRsZXJzKHByb3BzLm9uQmx1ckNhcHR1cmUsIGZvY3VzT3V0c2lkZS5vbkJsdXJDYXB0dXJlKX1cbiAgICAgICAgb25Qb2ludGVyRG93bkNhcHR1cmU9e2NvbXBvc2VFdmVudEhhbmRsZXJzKFxuICAgICAgICAgIHByb3BzLm9uUG9pbnRlckRvd25DYXB0dXJlLFxuICAgICAgICAgIHBvaW50ZXJEb3duT3V0c2lkZS5vblBvaW50ZXJEb3duQ2FwdHVyZVxuICAgICAgICApfVxuICAgICAgLz5cbiAgICApO1xuICB9XG4pO1xuXG5EaXNtaXNzYWJsZUxheWVyLmRpc3BsYXlOYW1lID0gRElTTUlTU0FCTEVfTEFZRVJfTkFNRTtcblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogRGlzbWlzc2FibGVMYXllckJyYW5jaFxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG5jb25zdCBCUkFOQ0hfTkFNRSA9ICdEaXNtaXNzYWJsZUxheWVyQnJhbmNoJztcblxudHlwZSBEaXNtaXNzYWJsZUxheWVyQnJhbmNoRWxlbWVudCA9IFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFByaW1pdGl2ZS5kaXY+O1xuaW50ZXJmYWNlIERpc21pc3NhYmxlTGF5ZXJCcmFuY2hQcm9wcyBleHRlbmRzIFByaW1pdGl2ZURpdlByb3BzIHt9XG5cbmNvbnN0IERpc21pc3NhYmxlTGF5ZXJCcmFuY2ggPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBEaXNtaXNzYWJsZUxheWVyQnJhbmNoRWxlbWVudCxcbiAgRGlzbWlzc2FibGVMYXllckJyYW5jaFByb3BzXG4+KChwcm9wcywgZm9yd2FyZGVkUmVmKSA9PiB7XG4gIGNvbnN0IGNvbnRleHQgPSBSZWFjdC51c2VDb250ZXh0KERpc21pc3NhYmxlTGF5ZXJDb250ZXh0KTtcbiAgY29uc3QgcmVmID0gUmVhY3QudXNlUmVmPERpc21pc3NhYmxlTGF5ZXJCcmFuY2hFbGVtZW50PihudWxsKTtcbiAgY29uc3QgY29tcG9zZWRSZWZzID0gdXNlQ29tcG9zZWRSZWZzKGZvcndhcmRlZFJlZiwgcmVmKTtcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IG5vZGUgPSByZWYuY3VycmVudDtcbiAgICBpZiAobm9kZSkge1xuICAgICAgY29udGV4dC5icmFuY2hlcy5hZGQobm9kZSk7XG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICBjb250ZXh0LmJyYW5jaGVzLmRlbGV0ZShub2RlKTtcbiAgICAgIH07XG4gICAgfVxuICB9LCBbY29udGV4dC5icmFuY2hlc10pO1xuXG4gIHJldHVybiA8UHJpbWl0aXZlLmRpdiB7Li4ucHJvcHN9IHJlZj17Y29tcG9zZWRSZWZzfSAvPjtcbn0pO1xuXG5EaXNtaXNzYWJsZUxheWVyQnJhbmNoLmRpc3BsYXlOYW1lID0gQlJBTkNIX05BTUU7XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxudHlwZSBQb2ludGVyRG93bk91dHNpZGVFdmVudCA9IEN1c3RvbUV2ZW50PHsgb3JpZ2luYWxFdmVudDogUG9pbnRlckV2ZW50IH0+O1xudHlwZSBGb2N1c091dHNpZGVFdmVudCA9IEN1c3RvbUV2ZW50PHsgb3JpZ2luYWxFdmVudDogRm9jdXNFdmVudCB9PjtcblxuLyoqXG4gKiBMaXN0ZW5zIGZvciBgcG9pbnRlcmRvd25gIG91dHNpZGUgYSByZWFjdCBzdWJ0cmVlLiBXZSB1c2UgYHBvaW50ZXJkb3duYCByYXRoZXIgdGhhbiBgcG9pbnRlcnVwYFxuICogdG8gbWltaWMgbGF5ZXIgZGlzbWlzc2luZyBiZWhhdmlvdXIgcHJlc2VudCBpbiBPUy5cbiAqIFJldHVybnMgcHJvcHMgdG8gcGFzcyB0byB0aGUgbm9kZSB3ZSB3YW50IHRvIGNoZWNrIGZvciBvdXRzaWRlIGV2ZW50cy5cbiAqL1xuZnVuY3Rpb24gdXNlUG9pbnRlckRvd25PdXRzaWRlKFxuICBvblBvaW50ZXJEb3duT3V0c2lkZT86IChldmVudDogUG9pbnRlckRvd25PdXRzaWRlRXZlbnQpID0+IHZvaWQsXG4gIG93bmVyRG9jdW1lbnQ6IERvY3VtZW50ID0gZ2xvYmFsVGhpcz8uZG9jdW1lbnRcbikge1xuICBjb25zdCBoYW5kbGVQb2ludGVyRG93bk91dHNpZGUgPSB1c2VDYWxsYmFja1JlZihvblBvaW50ZXJEb3duT3V0c2lkZSkgYXMgRXZlbnRMaXN0ZW5lcjtcbiAgY29uc3QgaXNQb2ludGVySW5zaWRlUmVhY3RUcmVlUmVmID0gUmVhY3QudXNlUmVmKGZhbHNlKTtcbiAgY29uc3QgaGFuZGxlQ2xpY2tSZWYgPSBSZWFjdC51c2VSZWYoKCkgPT4ge30pO1xuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaGFuZGxlUG9pbnRlckRvd24gPSAoZXZlbnQ6IFBvaW50ZXJFdmVudCkgPT4ge1xuICAgICAgaWYgKGV2ZW50LnRhcmdldCAmJiAhaXNQb2ludGVySW5zaWRlUmVhY3RUcmVlUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgY29uc3QgZXZlbnREZXRhaWwgPSB7IG9yaWdpbmFsRXZlbnQ6IGV2ZW50IH07XG5cbiAgICAgICAgZnVuY3Rpb24gaGFuZGxlQW5kRGlzcGF0Y2hQb2ludGVyRG93bk91dHNpZGVFdmVudCgpIHtcbiAgICAgICAgICBoYW5kbGVBbmREaXNwYXRjaEN1c3RvbUV2ZW50KFxuICAgICAgICAgICAgUE9JTlRFUl9ET1dOX09VVFNJREUsXG4gICAgICAgICAgICBoYW5kbGVQb2ludGVyRG93bk91dHNpZGUsXG4gICAgICAgICAgICBldmVudERldGFpbCxcbiAgICAgICAgICAgIHsgZGlzY3JldGU6IHRydWUgfVxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICAvKipcbiAgICAgICAgICogT24gdG91Y2ggZGV2aWNlcywgd2UgbmVlZCB0byB3YWl0IGZvciBhIGNsaWNrIGV2ZW50IGJlY2F1c2UgYnJvd3NlcnMgaW1wbGVtZW50XG4gICAgICAgICAqIGEgfjM1MG1zIGRlbGF5IGJldHdlZW4gdGhlIHRpbWUgdGhlIHVzZXIgc3RvcHMgdG91Y2hpbmcgdGhlIGRpc3BsYXkgYW5kIHdoZW4gdGhlXG4gICAgICAgICAqIGJyb3dzZXIgZXhlY3V0cmVzIGV2ZW50cy4gV2UgbmVlZCB0byBlbnN1cmUgd2UgZG9uJ3QgcmVhY3RpdmF0ZSBwb2ludGVyLWV2ZW50cyB3aXRoaW5cbiAgICAgICAgICogdGhpcyB0aW1lZnJhbWUgb3RoZXJ3aXNlIHRoZSBicm93c2VyIG1heSBleGVjdXRlIGV2ZW50cyB0aGF0IHNob3VsZCBoYXZlIGJlZW4gcHJldmVudGVkLlxuICAgICAgICAgKlxuICAgICAgICAgKiBBZGRpdGlvbmFsbHksIHRoaXMgYWxzbyBsZXRzIHVzIGRlYWwgYXV0b21hdGljYWxseSB3aXRoIGNhbmNlbGxhdGlvbnMgd2hlbiBhIGNsaWNrIGV2ZW50XG4gICAgICAgICAqIGlzbid0IHJhaXNlZCBiZWNhdXNlIHRoZSBwYWdlIHdhcyBjb25zaWRlcmVkIHNjcm9sbGVkL2RyYWctc2Nyb2xsZWQsIGxvbmctcHJlc3NlZCwgZXRjLlxuICAgICAgICAgKlxuICAgICAgICAgKiBUaGlzIGlzIHdoeSB3ZSBhbHNvIGNvbnRpbnVvdXNseSByZW1vdmUgdGhlIHByZXZpb3VzIGxpc3RlbmVyLCBiZWNhdXNlIHdlIGNhbm5vdCBiZVxuICAgICAgICAgKiBjZXJ0YWluIHRoYXQgaXQgd2FzIHJhaXNlZCwgYW5kIHRoZXJlZm9yZSBjbGVhbmVkLXVwLlxuICAgICAgICAgKi9cbiAgICAgICAgaWYgKGV2ZW50LnBvaW50ZXJUeXBlID09PSAndG91Y2gnKSB7XG4gICAgICAgICAgb3duZXJEb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIGhhbmRsZUNsaWNrUmVmLmN1cnJlbnQpO1xuICAgICAgICAgIGhhbmRsZUNsaWNrUmVmLmN1cnJlbnQgPSBoYW5kbGVBbmREaXNwYXRjaFBvaW50ZXJEb3duT3V0c2lkZUV2ZW50O1xuICAgICAgICAgIG93bmVyRG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBoYW5kbGVDbGlja1JlZi5jdXJyZW50LCB7IG9uY2U6IHRydWUgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaGFuZGxlQW5kRGlzcGF0Y2hQb2ludGVyRG93bk91dHNpZGVFdmVudCgpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBXZSBuZWVkIHRvIHJlbW92ZSB0aGUgZXZlbnQgbGlzdGVuZXIgaW4gY2FzZSB0aGUgb3V0c2lkZSBjbGljayBoYXMgYmVlbiBjYW5jZWxlZC5cbiAgICAgICAgLy8gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vcmFkaXgtdWkvcHJpbWl0aXZlcy9pc3N1ZXMvMjE3MVxuICAgICAgICBvd25lckRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlQ2xpY2tSZWYuY3VycmVudCk7XG4gICAgICB9XG4gICAgICBpc1BvaW50ZXJJbnNpZGVSZWFjdFRyZWVSZWYuY3VycmVudCA9IGZhbHNlO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogaWYgdGhpcyBob29rIGV4ZWN1dGVzIGluIGEgY29tcG9uZW50IHRoYXQgbW91bnRzIHZpYSBhIGBwb2ludGVyZG93bmAgZXZlbnQsIHRoZSBldmVudFxuICAgICAqIHdvdWxkIGJ1YmJsZSB1cCB0byB0aGUgZG9jdW1lbnQgYW5kIHRyaWdnZXIgYSBgcG9pbnRlckRvd25PdXRzaWRlYCBldmVudC4gV2UgYXZvaWRcbiAgICAgKiB0aGlzIGJ5IGRlbGF5aW5nIHRoZSBldmVudCBsaXN0ZW5lciByZWdpc3RyYXRpb24gb24gdGhlIGRvY3VtZW50LlxuICAgICAqIFRoaXMgaXMgbm90IFJlYWN0IHNwZWNpZmljLCBidXQgcmF0aGVyIGhvdyB0aGUgRE9NIHdvcmtzLCBpZTpcbiAgICAgKiBgYGBcbiAgICAgKiBidXR0b24uYWRkRXZlbnRMaXN0ZW5lcigncG9pbnRlcmRvd24nLCAoKSA9PiB7XG4gICAgICogICBjb25zb2xlLmxvZygnSSB3aWxsIGxvZycpO1xuICAgICAqICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigncG9pbnRlcmRvd24nLCAoKSA9PiB7XG4gICAgICogICAgIGNvbnNvbGUubG9nKCdJIHdpbGwgYWxzbyBsb2cnKTtcbiAgICAgKiAgIH0pXG4gICAgICogfSk7XG4gICAgICovXG4gICAgY29uc3QgdGltZXJJZCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIG93bmVyRG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigncG9pbnRlcmRvd24nLCBoYW5kbGVQb2ludGVyRG93bik7XG4gICAgfSwgMCk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQodGltZXJJZCk7XG4gICAgICBvd25lckRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJkb3duJywgaGFuZGxlUG9pbnRlckRvd24pO1xuICAgICAgb3duZXJEb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIGhhbmRsZUNsaWNrUmVmLmN1cnJlbnQpO1xuICAgIH07XG4gIH0sIFtvd25lckRvY3VtZW50LCBoYW5kbGVQb2ludGVyRG93bk91dHNpZGVdKTtcblxuICByZXR1cm4ge1xuICAgIC8vIGVuc3VyZXMgd2UgY2hlY2sgUmVhY3QgY29tcG9uZW50IHRyZWUgKG5vdCBqdXN0IERPTSB0cmVlKVxuICAgIG9uUG9pbnRlckRvd25DYXB0dXJlOiAoKSA9PiAoaXNQb2ludGVySW5zaWRlUmVhY3RUcmVlUmVmLmN1cnJlbnQgPSB0cnVlKSxcbiAgfTtcbn1cblxuLyoqXG4gKiBMaXN0ZW5zIGZvciB3aGVuIGZvY3VzIGhhcHBlbnMgb3V0c2lkZSBhIHJlYWN0IHN1YnRyZWUuXG4gKiBSZXR1cm5zIHByb3BzIHRvIHBhc3MgdG8gdGhlIHJvb3QgKG5vZGUpIG9mIHRoZSBzdWJ0cmVlIHdlIHdhbnQgdG8gY2hlY2suXG4gKi9cbmZ1bmN0aW9uIHVzZUZvY3VzT3V0c2lkZShcbiAgb25Gb2N1c091dHNpZGU/OiAoZXZlbnQ6IEZvY3VzT3V0c2lkZUV2ZW50KSA9PiB2b2lkLFxuICBvd25lckRvY3VtZW50OiBEb2N1bWVudCA9IGdsb2JhbFRoaXM/LmRvY3VtZW50XG4pIHtcbiAgY29uc3QgaGFuZGxlRm9jdXNPdXRzaWRlID0gdXNlQ2FsbGJhY2tSZWYob25Gb2N1c091dHNpZGUpIGFzIEV2ZW50TGlzdGVuZXI7XG4gIGNvbnN0IGlzRm9jdXNJbnNpZGVSZWFjdFRyZWVSZWYgPSBSZWFjdC51c2VSZWYoZmFsc2UpO1xuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaGFuZGxlRm9jdXMgPSAoZXZlbnQ6IEZvY3VzRXZlbnQpID0+IHtcbiAgICAgIGlmIChldmVudC50YXJnZXQgJiYgIWlzRm9jdXNJbnNpZGVSZWFjdFRyZWVSZWYuY3VycmVudCkge1xuICAgICAgICBjb25zdCBldmVudERldGFpbCA9IHsgb3JpZ2luYWxFdmVudDogZXZlbnQgfTtcbiAgICAgICAgaGFuZGxlQW5kRGlzcGF0Y2hDdXN0b21FdmVudChGT0NVU19PVVRTSURFLCBoYW5kbGVGb2N1c091dHNpZGUsIGV2ZW50RGV0YWlsLCB7XG4gICAgICAgICAgZGlzY3JldGU6IGZhbHNlLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9O1xuICAgIG93bmVyRG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXNpbicsIGhhbmRsZUZvY3VzKTtcbiAgICByZXR1cm4gKCkgPT4gb3duZXJEb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdmb2N1c2luJywgaGFuZGxlRm9jdXMpO1xuICB9LCBbb3duZXJEb2N1bWVudCwgaGFuZGxlRm9jdXNPdXRzaWRlXSk7XG5cbiAgcmV0dXJuIHtcbiAgICBvbkZvY3VzQ2FwdHVyZTogKCkgPT4gKGlzRm9jdXNJbnNpZGVSZWFjdFRyZWVSZWYuY3VycmVudCA9IHRydWUpLFxuICAgIG9uQmx1ckNhcHR1cmU6ICgpID0+IChpc0ZvY3VzSW5zaWRlUmVhY3RUcmVlUmVmLmN1cnJlbnQgPSBmYWxzZSksXG4gIH07XG59XG5cbmZ1bmN0aW9uIGRpc3BhdGNoVXBkYXRlKCkge1xuICBjb25zdCBldmVudCA9IG5ldyBDdXN0b21FdmVudChDT05URVhUX1VQREFURSk7XG4gIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQoZXZlbnQpO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVBbmREaXNwYXRjaEN1c3RvbUV2ZW50PEUgZXh0ZW5kcyBDdXN0b21FdmVudCwgT3JpZ2luYWxFdmVudCBleHRlbmRzIEV2ZW50PihcbiAgbmFtZTogc3RyaW5nLFxuICBoYW5kbGVyOiAoKGV2ZW50OiBFKSA9PiB2b2lkKSB8IHVuZGVmaW5lZCxcbiAgZGV0YWlsOiB7IG9yaWdpbmFsRXZlbnQ6IE9yaWdpbmFsRXZlbnQgfSAmIChFIGV4dGVuZHMgQ3VzdG9tRXZlbnQ8aW5mZXIgRD4gPyBEIDogbmV2ZXIpLFxuICB7IGRpc2NyZXRlIH06IHsgZGlzY3JldGU6IGJvb2xlYW4gfVxuKSB7XG4gIGNvbnN0IHRhcmdldCA9IGRldGFpbC5vcmlnaW5hbEV2ZW50LnRhcmdldDtcbiAgY29uc3QgZXZlbnQgPSBuZXcgQ3VzdG9tRXZlbnQobmFtZSwgeyBidWJibGVzOiBmYWxzZSwgY2FuY2VsYWJsZTogdHJ1ZSwgZGV0YWlsIH0pO1xuICBpZiAoaGFuZGxlcikgdGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIobmFtZSwgaGFuZGxlciBhcyBFdmVudExpc3RlbmVyLCB7IG9uY2U6IHRydWUgfSk7XG5cbiAgaWYgKGRpc2NyZXRlKSB7XG4gICAgZGlzcGF0Y2hEaXNjcmV0ZUN1c3RvbUV2ZW50KHRhcmdldCwgZXZlbnQpO1xuICB9IGVsc2Uge1xuICAgIHRhcmdldC5kaXNwYXRjaEV2ZW50KGV2ZW50KTtcbiAgfVxufVxuXG5jb25zdCBSb290ID0gRGlzbWlzc2FibGVMYXllcjtcbmNvbnN0IEJyYW5jaCA9IERpc21pc3NhYmxlTGF5ZXJCcmFuY2g7XG5cbmV4cG9ydCB7XG4gIERpc21pc3NhYmxlTGF5ZXIsXG4gIERpc21pc3NhYmxlTGF5ZXJCcmFuY2gsXG4gIC8vXG4gIFJvb3QsXG4gIEJyYW5jaCxcbn07XG5leHBvcnQgdHlwZSB7IERpc21pc3NhYmxlTGF5ZXJQcm9wcyB9O1xuIl0sIm5hbWVzIjpbIlJlYWN0IiwiY29tcG9zZUV2ZW50SGFuZGxlcnMiLCJQcmltaXRpdmUiLCJkaXNwYXRjaERpc2NyZXRlQ3VzdG9tRXZlbnQiLCJ1c2VDb21wb3NlZFJlZnMiLCJ1c2VDYWxsYmFja1JlZiIsInVzZUVzY2FwZUtleWRvd24iLCJqc3giLCJESVNNSVNTQUJMRV9MQVlFUl9OQU1FIiwiQ09OVEVYVF9VUERBVEUiLCJQT0lOVEVSX0RPV05fT1VUU0lERSIsIkZPQ1VTX09VVFNJREUiLCJvcmlnaW5hbEJvZHlQb2ludGVyRXZlbnRzIiwiRGlzbWlzc2FibGVMYXllckNvbnRleHQiLCJjcmVhdGVDb250ZXh0IiwibGF5ZXJzIiwiU2V0IiwibGF5ZXJzV2l0aE91dHNpZGVQb2ludGVyRXZlbnRzRGlzYWJsZWQiLCJicmFuY2hlcyIsIkRpc21pc3NhYmxlTGF5ZXIiLCJmb3J3YXJkUmVmIiwicHJvcHMiLCJmb3J3YXJkZWRSZWYiLCJkaXNhYmxlT3V0c2lkZVBvaW50ZXJFdmVudHMiLCJvbkVzY2FwZUtleURvd24iLCJvblBvaW50ZXJEb3duT3V0c2lkZSIsIm9uRm9jdXNPdXRzaWRlIiwib25JbnRlcmFjdE91dHNpZGUiLCJvbkRpc21pc3MiLCJsYXllclByb3BzIiwiY29udGV4dCIsInVzZUNvbnRleHQiLCJub2RlIiwic2V0Tm9kZSIsInVzZVN0YXRlIiwib3duZXJEb2N1bWVudCIsImdsb2JhbFRoaXMiLCJkb2N1bWVudCIsImZvcmNlIiwiY29tcG9zZWRSZWZzIiwiQXJyYXkiLCJmcm9tIiwiaGlnaGVzdExheWVyV2l0aE91dHNpZGVQb2ludGVyRXZlbnRzRGlzYWJsZWQiLCJzbGljZSIsImhpZ2hlc3RMYXllcldpdGhPdXRzaWRlUG9pbnRlckV2ZW50c0Rpc2FibGVkSW5kZXgiLCJpbmRleE9mIiwiaW5kZXgiLCJpc0JvZHlQb2ludGVyRXZlbnRzRGlzYWJsZWQiLCJzaXplIiwiaXNQb2ludGVyRXZlbnRzRW5hYmxlZCIsInBvaW50ZXJEb3duT3V0c2lkZSIsInVzZVBvaW50ZXJEb3duT3V0c2lkZSIsImV2ZW50IiwidGFyZ2V0IiwiaXNQb2ludGVyRG93bk9uQnJhbmNoIiwic29tZSIsImJyYW5jaCIsImNvbnRhaW5zIiwiZGVmYXVsdFByZXZlbnRlZCIsImZvY3VzT3V0c2lkZSIsInVzZUZvY3VzT3V0c2lkZSIsImlzRm9jdXNJbkJyYW5jaCIsImlzSGlnaGVzdExheWVyIiwicHJldmVudERlZmF1bHQiLCJ1c2VFZmZlY3QiLCJib2R5Iiwic3R5bGUiLCJwb2ludGVyRXZlbnRzIiwiYWRkIiwiZGlzcGF0Y2hVcGRhdGUiLCJkZWxldGUiLCJoYW5kbGVVcGRhdGUiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImRpdiIsInJlZiIsIm9uRm9jdXNDYXB0dXJlIiwib25CbHVyQ2FwdHVyZSIsIm9uUG9pbnRlckRvd25DYXB0dXJlIiwiZGlzcGxheU5hbWUiLCJCUkFOQ0hfTkFNRSIsIkRpc21pc3NhYmxlTGF5ZXJCcmFuY2giLCJ1c2VSZWYiLCJjdXJyZW50IiwiaGFuZGxlUG9pbnRlckRvd25PdXRzaWRlIiwiaXNQb2ludGVySW5zaWRlUmVhY3RUcmVlUmVmIiwiaGFuZGxlQ2xpY2tSZWYiLCJoYW5kbGVQb2ludGVyRG93biIsImhhbmRsZUFuZERpc3BhdGNoUG9pbnRlckRvd25PdXRzaWRlRXZlbnQiLCJoYW5kbGVBbmREaXNwYXRjaEN1c3RvbUV2ZW50IiwiZXZlbnREZXRhaWwiLCJkaXNjcmV0ZSIsIm9yaWdpbmFsRXZlbnQiLCJwb2ludGVyVHlwZSIsIm9uY2UiLCJ0aW1lcklkIiwid2luZG93Iiwic2V0VGltZW91dCIsImNsZWFyVGltZW91dCIsImhhbmRsZUZvY3VzT3V0c2lkZSIsImlzRm9jdXNJbnNpZGVSZWFjdFRyZWVSZWYiLCJoYW5kbGVGb2N1cyIsIkN1c3RvbUV2ZW50IiwiZGlzcGF0Y2hFdmVudCIsIm5hbWUiLCJoYW5kbGVyIiwiZGV0YWlsIiwiYnViYmxlcyIsImNhbmNlbGFibGUiLCJSb290IiwiQnJhbmNoIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/@radix-ui/react-dismissable-layer/dist/index.mjs\n"); /***/ }), /***/ "(ssr)/./node_modules/@radix-ui/react-dropdown-menu/dist/index.mjs": /*!*******************************************************************!*\ !*** ./node_modules/@radix-ui/react-dropdown-menu/dist/index.mjs ***! \*******************************************************************/ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Arrow: () => (/* binding */ Arrow2),\n/* harmony export */ CheckboxItem: () => (/* binding */ CheckboxItem2),\n/* harmony export */ Content: () => (/* binding */ Content2),\n/* harmony export */ DropdownMenu: () => (/* binding */ DropdownMenu),\n/* harmony export */ DropdownMenuArrow: () => (/* binding */ DropdownMenuArrow),\n/* harmony export */ DropdownMenuCheckboxItem: () => (/* binding */ DropdownMenuCheckboxItem),\n/* harmony export */ DropdownMenuContent: () => (/* binding */ DropdownMenuContent),\n/* harmony export */ DropdownMenuGroup: () => (/* binding */ DropdownMenuGroup),\n/* harmony export */ DropdownMenuItem: () => (/* binding */ DropdownMenuItem),\n/* harmony export */ DropdownMenuItemIndicator: () => (/* binding */ DropdownMenuItemIndicator),\n/* harmony export */ DropdownMenuLabel: () => (/* binding */ DropdownMenuLabel),\n/* harmony export */ DropdownMenuPortal: () => (/* binding */ DropdownMenuPortal),\n/* harmony export */ DropdownMenuRadioGroup: () => (/* binding */ DropdownMenuRadioGroup),\n/* harmony export */ DropdownMenuRadioItem: () => (/* binding */ DropdownMenuRadioItem),\n/* harmony export */ DropdownMenuSeparator: () => (/* binding */ DropdownMenuSeparator),\n/* harmony export */ DropdownMenuSub: () => (/* binding */ DropdownMenuSub),\n/* harmony export */ DropdownMenuSubContent: () => (/* binding */ DropdownMenuSubContent),\n/* harmony export */ DropdownMenuSubTrigger: () => (/* binding */ DropdownMenuSubTrigger),\n/* harmony export */ DropdownMenuTrigger: () => (/* binding */ DropdownMenuTrigger),\n/* harmony export */ Group: () => (/* binding */ Group2),\n/* harmony export */ Item: () => (/* binding */ Item2),\n/* harmony export */ ItemIndicator: () => (/* binding */ ItemIndicator2),\n/* harmony export */ Label: () => (/* binding */ Label2),\n/* harmony export */ Portal: () => (/* binding */ Portal2),\n/* harmony export */ RadioGroup: () => (/* binding */ RadioGroup2),\n/* harmony export */ RadioItem: () => (/* binding */ RadioItem2),\n/* harmony export */ Root: () => (/* binding */ Root2),\n/* harmony export */ Separator: () => (/* binding */ Separator2),\n/* harmony export */ Sub: () => (/* binding */ Sub2),\n/* harmony export */ SubContent: () => (/* binding */ SubContent2),\n/* harmony export */ SubTrigger: () => (/* binding */ SubTrigger2),\n/* harmony export */ Trigger: () => (/* binding */ Trigger),\n/* harmony export */ createDropdownMenuScope: () => (/* binding */ createDropdownMenuScope)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var _radix_ui_primitive__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @radix-ui/primitive */ \"(ssr)/./node_modules/@radix-ui/primitive/dist/index.mjs\");\n/* harmony import */ var _radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @radix-ui/react-compose-refs */ \"(ssr)/./node_modules/@radix-ui/react-compose-refs/dist/index.mjs\");\n/* harmony import */ var _radix_ui_react_context__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @radix-ui/react-context */ \"(ssr)/./node_modules/@radix-ui/react-context/dist/index.mjs\");\n/* harmony import */ var _radix_ui_react_use_controllable_state__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @radix-ui/react-use-controllable-state */ \"(ssr)/./node_modules/@radix-ui/react-use-controllable-state/dist/index.mjs\");\n/* harmony import */ var _radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @radix-ui/react-primitive */ \"(ssr)/./node_modules/@radix-ui/react-primitive/dist/index.mjs\");\n/* harmony import */ var _radix_ui_react_menu__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @radix-ui/react-menu */ \"(ssr)/./node_modules/@radix-ui/react-menu/dist/index.mjs\");\n/* harmony import */ var _radix_ui_react_id__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @radix-ui/react-id */ \"(ssr)/./node_modules/@radix-ui/react-id/dist/index.mjs\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react-jsx-runtime.js\");\n/* __next_internal_client_entry_do_not_use__ Arrow,CheckboxItem,Content,DropdownMenu,DropdownMenuArrow,DropdownMenuCheckboxItem,DropdownMenuContent,DropdownMenuGroup,DropdownMenuItem,DropdownMenuItemIndicator,DropdownMenuLabel,DropdownMenuPortal,DropdownMenuRadioGroup,DropdownMenuRadioItem,DropdownMenuSeparator,DropdownMenuSub,DropdownMenuSubContent,DropdownMenuSubTrigger,DropdownMenuTrigger,Group,Item,ItemIndicator,Label,Portal,RadioGroup,RadioItem,Root,Separator,Sub,SubContent,SubTrigger,Trigger,createDropdownMenuScope auto */ // packages/react/dropdown-menu/src/DropdownMenu.tsx\n\n\n\n\n\n\n\n\n\n\nvar DROPDOWN_MENU_NAME = \"DropdownMenu\";\nvar [createDropdownMenuContext, createDropdownMenuScope] = (0,_radix_ui_react_context__WEBPACK_IMPORTED_MODULE_2__.createContextScope)(DROPDOWN_MENU_NAME, [\n _radix_ui_react_menu__WEBPACK_IMPORTED_MODULE_3__.createMenuScope\n]);\nvar useMenuScope = (0,_radix_ui_react_menu__WEBPACK_IMPORTED_MODULE_3__.createMenuScope)();\nvar [DropdownMenuProvider, useDropdownMenuContext] = createDropdownMenuContext(DROPDOWN_MENU_NAME);\nvar DropdownMenu = (props)=>{\n const { __scopeDropdownMenu, children, dir, open: openProp, defaultOpen, onOpenChange, modal = true } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n const triggerRef = react__WEBPACK_IMPORTED_MODULE_0__.useRef(null);\n const [open = false, setOpen] = (0,_radix_ui_react_use_controllable_state__WEBPACK_IMPORTED_MODULE_4__.useControllableState)({\n prop: openProp,\n defaultProp: defaultOpen,\n onChange: onOpenChange\n });\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(DropdownMenuProvider, {\n scope: __scopeDropdownMenu,\n triggerId: (0,_radix_ui_react_id__WEBPACK_IMPORTED_MODULE_5__.useId)(),\n triggerRef,\n contentId: (0,_radix_ui_react_id__WEBPACK_IMPORTED_MODULE_5__.useId)(),\n open,\n onOpenChange: setOpen,\n onOpenToggle: react__WEBPACK_IMPORTED_MODULE_0__.useCallback(()=>setOpen((prevOpen)=>!prevOpen), [\n setOpen\n ]),\n modal,\n children: /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_radix_ui_react_menu__WEBPACK_IMPORTED_MODULE_3__.Root, {\n ...menuScope,\n open,\n onOpenChange: setOpen,\n dir,\n modal,\n children\n })\n });\n};\nDropdownMenu.displayName = DROPDOWN_MENU_NAME;\nvar TRIGGER_NAME = \"DropdownMenuTrigger\";\nvar DropdownMenuTrigger = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef((props, forwardedRef)=>{\n const { __scopeDropdownMenu, disabled = false, ...triggerProps } = props;\n const context = useDropdownMenuContext(TRIGGER_NAME, __scopeDropdownMenu);\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_radix_ui_react_menu__WEBPACK_IMPORTED_MODULE_3__.Anchor, {\n asChild: true,\n ...menuScope,\n children: /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_6__.Primitive.button, {\n type: \"button\",\n id: context.triggerId,\n \"aria-haspopup\": \"menu\",\n \"aria-expanded\": context.open,\n \"aria-controls\": context.open ? context.contentId : void 0,\n \"data-state\": context.open ? \"open\" : \"closed\",\n \"data-disabled\": disabled ? \"\" : void 0,\n disabled,\n ...triggerProps,\n ref: (0,_radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_7__.composeRefs)(forwardedRef, context.triggerRef),\n onPointerDown: (0,_radix_ui_primitive__WEBPACK_IMPORTED_MODULE_8__.composeEventHandlers)(props.onPointerDown, (event)=>{\n if (!disabled && event.button === 0 && event.ctrlKey === false) {\n context.onOpenToggle();\n if (!context.open) event.preventDefault();\n }\n }),\n onKeyDown: (0,_radix_ui_primitive__WEBPACK_IMPORTED_MODULE_8__.composeEventHandlers)(props.onKeyDown, (event)=>{\n if (disabled) return;\n if ([\n \"Enter\",\n \" \"\n ].includes(event.key)) context.onOpenToggle();\n if (event.key === \"ArrowDown\") context.onOpenChange(true);\n if ([\n \"Enter\",\n \" \",\n \"ArrowDown\"\n ].includes(event.key)) event.preventDefault();\n })\n })\n });\n});\nDropdownMenuTrigger.displayName = TRIGGER_NAME;\nvar PORTAL_NAME = \"DropdownMenuPortal\";\nvar DropdownMenuPortal = (props)=>{\n const { __scopeDropdownMenu, ...portalProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_radix_ui_react_menu__WEBPACK_IMPORTED_MODULE_3__.Portal, {\n ...menuScope,\n ...portalProps\n });\n};\nDropdownMenuPortal.displayName = PORTAL_NAME;\nvar CONTENT_NAME = \"DropdownMenuContent\";\nvar DropdownMenuContent = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef((props, forwardedRef)=>{\n const { __scopeDropdownMenu, ...contentProps } = props;\n const context = useDropdownMenuContext(CONTENT_NAME, __scopeDropdownMenu);\n const menuScope = useMenuScope(__scopeDropdownMenu);\n const hasInteractedOutsideRef = react__WEBPACK_IMPORTED_MODULE_0__.useRef(false);\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_radix_ui_react_menu__WEBPACK_IMPORTED_MODULE_3__.Content, {\n id: context.contentId,\n \"aria-labelledby\": context.triggerId,\n ...menuScope,\n ...contentProps,\n ref: forwardedRef,\n onCloseAutoFocus: (0,_radix_ui_primitive__WEBPACK_IMPORTED_MODULE_8__.composeEventHandlers)(props.onCloseAutoFocus, (event)=>{\n if (!hasInteractedOutsideRef.current) context.triggerRef.current?.focus();\n hasInteractedOutsideRef.current = false;\n event.preventDefault();\n }),\n onInteractOutside: (0,_radix_ui_primitive__WEBPACK_IMPORTED_MODULE_8__.composeEventHandlers)(props.onInteractOutside, (event)=>{\n const originalEvent = event.detail.originalEvent;\n const ctrlLeftClick = originalEvent.button === 0 && originalEvent.ctrlKey === true;\n const isRightClick = originalEvent.button === 2 || ctrlLeftClick;\n if (!context.modal || isRightClick) hasInteractedOutsideRef.current = true;\n }),\n style: {\n ...props.style,\n // re-namespace exposed content custom properties\n ...{\n \"--radix-dropdown-menu-content-transform-origin\": \"var(--radix-popper-transform-origin)\",\n \"--radix-dropdown-menu-content-available-width\": \"var(--radix-popper-available-width)\",\n \"--radix-dropdown-menu-content-available-height\": \"var(--radix-popper-available-height)\",\n \"--radix-dropdown-menu-trigger-width\": \"var(--radix-popper-anchor-width)\",\n \"--radix-dropdown-menu-trigger-height\": \"var(--radix-popper-anchor-height)\"\n }\n }\n });\n});\nDropdownMenuContent.displayName = CONTENT_NAME;\nvar GROUP_NAME = \"DropdownMenuGroup\";\nvar DropdownMenuGroup = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef((props, forwardedRef)=>{\n const { __scopeDropdownMenu, ...groupProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_radix_ui_react_menu__WEBPACK_IMPORTED_MODULE_3__.Group, {\n ...menuScope,\n ...groupProps,\n ref: forwardedRef\n });\n});\nDropdownMenuGroup.displayName = GROUP_NAME;\nvar LABEL_NAME = \"DropdownMenuLabel\";\nvar DropdownMenuLabel = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef((props, forwardedRef)=>{\n const { __scopeDropdownMenu, ...labelProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_radix_ui_react_menu__WEBPACK_IMPORTED_MODULE_3__.Label, {\n ...menuScope,\n ...labelProps,\n ref: forwardedRef\n });\n});\nDropdownMenuLabel.displayName = LABEL_NAME;\nvar ITEM_NAME = \"DropdownMenuItem\";\nvar DropdownMenuItem = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef((props, forwardedRef)=>{\n const { __scopeDropdownMenu, ...itemProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_radix_ui_react_menu__WEBPACK_IMPORTED_MODULE_3__.Item, {\n ...menuScope,\n ...itemProps,\n ref: forwardedRef\n });\n});\nDropdownMenuItem.displayName = ITEM_NAME;\nvar CHECKBOX_ITEM_NAME = \"DropdownMenuCheckboxItem\";\nvar DropdownMenuCheckboxItem = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef((props, forwardedRef)=>{\n const { __scopeDropdownMenu, ...checkboxItemProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_radix_ui_react_menu__WEBPACK_IMPORTED_MODULE_3__.CheckboxItem, {\n ...menuScope,\n ...checkboxItemProps,\n ref: forwardedRef\n });\n});\nDropdownMenuCheckboxItem.displayName = CHECKBOX_ITEM_NAME;\nvar RADIO_GROUP_NAME = \"DropdownMenuRadioGroup\";\nvar DropdownMenuRadioGroup = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef((props, forwardedRef)=>{\n const { __scopeDropdownMenu, ...radioGroupProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_radix_ui_react_menu__WEBPACK_IMPORTED_MODULE_3__.RadioGroup, {\n ...menuScope,\n ...radioGroupProps,\n ref: forwardedRef\n });\n});\nDropdownMenuRadioGroup.displayName = RADIO_GROUP_NAME;\nvar RADIO_ITEM_NAME = \"DropdownMenuRadioItem\";\nvar DropdownMenuRadioItem = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef((props, forwardedRef)=>{\n const { __scopeDropdownMenu, ...radioItemProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_radix_ui_react_menu__WEBPACK_IMPORTED_MODULE_3__.RadioItem, {\n ...menuScope,\n ...radioItemProps,\n ref: forwardedRef\n });\n});\nDropdownMenuRadioItem.displayName = RADIO_ITEM_NAME;\nvar INDICATOR_NAME = \"DropdownMenuItemIndicator\";\nvar DropdownMenuItemIndicator = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef((props, forwardedRef)=>{\n const { __scopeDropdownMenu, ...itemIndicatorProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_radix_ui_react_menu__WEBPACK_IMPORTED_MODULE_3__.ItemIndicator, {\n ...menuScope,\n ...itemIndicatorProps,\n ref: forwardedRef\n });\n});\nDropdownMenuItemIndicator.displayName = INDICATOR_NAME;\nvar SEPARATOR_NAME = \"DropdownMenuSeparator\";\nvar DropdownMenuSeparator = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef((props, forwardedRef)=>{\n const { __scopeDropdownMenu, ...separatorProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_radix_ui_react_menu__WEBPACK_IMPORTED_MODULE_3__.Separator, {\n ...menuScope,\n ...separatorProps,\n ref: forwardedRef\n });\n});\nDropdownMenuSeparator.displayName = SEPARATOR_NAME;\nvar ARROW_NAME = \"DropdownMenuArrow\";\nvar DropdownMenuArrow = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef((props, forwardedRef)=>{\n const { __scopeDropdownMenu, ...arrowProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_radix_ui_react_menu__WEBPACK_IMPORTED_MODULE_3__.Arrow, {\n ...menuScope,\n ...arrowProps,\n ref: forwardedRef\n });\n});\nDropdownMenuArrow.displayName = ARROW_NAME;\nvar DropdownMenuSub = (props)=>{\n const { __scopeDropdownMenu, children, open: openProp, onOpenChange, defaultOpen } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n const [open = false, setOpen] = (0,_radix_ui_react_use_controllable_state__WEBPACK_IMPORTED_MODULE_4__.useControllableState)({\n prop: openProp,\n defaultProp: defaultOpen,\n onChange: onOpenChange\n });\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_radix_ui_react_menu__WEBPACK_IMPORTED_MODULE_3__.Sub, {\n ...menuScope,\n open,\n onOpenChange: setOpen,\n children\n });\n};\nvar SUB_TRIGGER_NAME = \"DropdownMenuSubTrigger\";\nvar DropdownMenuSubTrigger = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef((props, forwardedRef)=>{\n const { __scopeDropdownMenu, ...subTriggerProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_radix_ui_react_menu__WEBPACK_IMPORTED_MODULE_3__.SubTrigger, {\n ...menuScope,\n ...subTriggerProps,\n ref: forwardedRef\n });\n});\nDropdownMenuSubTrigger.displayName = SUB_TRIGGER_NAME;\nvar SUB_CONTENT_NAME = \"DropdownMenuSubContent\";\nvar DropdownMenuSubContent = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef((props, forwardedRef)=>{\n const { __scopeDropdownMenu, ...subContentProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_radix_ui_react_menu__WEBPACK_IMPORTED_MODULE_3__.SubContent, {\n ...menuScope,\n ...subContentProps,\n ref: forwardedRef,\n style: {\n ...props.style,\n // re-namespace exposed content custom properties\n ...{\n \"--radix-dropdown-menu-content-transform-origin\": \"var(--radix-popper-transform-origin)\",\n \"--radix-dropdown-menu-content-available-width\": \"var(--radix-popper-available-width)\",\n \"--radix-dropdown-menu-content-available-height\": \"var(--radix-popper-available-height)\",\n \"--radix-dropdown-menu-trigger-width\": \"var(--radix-popper-anchor-width)\",\n \"--radix-dropdown-menu-trigger-height\": \"var(--radix-popper-anchor-height)\"\n }\n }\n });\n});\nDropdownMenuSubContent.displayName = SUB_CONTENT_NAME;\nvar Root2 = DropdownMenu;\nvar Trigger = DropdownMenuTrigger;\nvar Portal2 = DropdownMenuPortal;\nvar Content2 = DropdownMenuContent;\nvar Group2 = DropdownMenuGroup;\nvar Label2 = DropdownMenuLabel;\nvar Item2 = DropdownMenuItem;\nvar CheckboxItem2 = DropdownMenuCheckboxItem;\nvar RadioGroup2 = DropdownMenuRadioGroup;\nvar RadioItem2 = DropdownMenuRadioItem;\nvar ItemIndicator2 = DropdownMenuItemIndicator;\nvar Separator2 = DropdownMenuSeparator;\nvar Arrow2 = DropdownMenuArrow;\nvar Sub2 = DropdownMenuSub;\nvar SubTrigger2 = DropdownMenuSubTrigger;\nvar SubContent2 = DropdownMenuSubContent;\n //# sourceMappingURL=index.mjs.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LWRyb3Bkb3duLW1lbnUvZGlzdC9pbmRleC5tanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUF1QjtBQUNjO0FBQ1Q7QUFDTztBQUNFO0FBQ1g7QUFDSztBQUNDO0FBQ1Y7QUFzRWhCO0FBNUROLElBQU1VLHFCQUFxQjtBQUczQixJQUFNLENBQUNDLDJCQUEyQkMsd0JBQXVCLEdBQUlULDJFQUFrQkEsQ0FDN0VPLG9CQUNBO0lBQUNILGlFQUFlQTtDQUFBO0FBRWxCLElBQU1NLGVBQWVOLHFFQUFlQTtBQVlwQyxJQUFNLENBQUNPLHNCQUFzQkMsdUJBQXNCLEdBQ2pESiwwQkFBb0REO0FBV3RELElBQU1NLGVBQTRDLENBQUNDO0lBQ2pELE1BQU0sRUFDSkMsbUJBQUEsRUFDQUMsUUFBQSxFQUNBQyxHQUFBLEVBQ0FDLE1BQU1DLFFBQUEsRUFDTkMsV0FBQSxFQUNBQyxZQUFBLEVBQ0FDLFFBQVEsTUFDVixHQUFJUjtJQUNKLE1BQU1TLFlBQVliLGFBQWFLO0lBQy9CLE1BQU1TLGFBQW1CM0IseUNBQUEsQ0FBMEI7SUFDbkQsTUFBTSxDQUFDcUIsT0FBTyxPQUFPUSxRQUFPLEdBQUl6Qiw0RkFBb0JBLENBQUM7UUFDbkQwQixNQUFNUjtRQUNOUyxhQUFhUjtRQUNiUyxVQUFVUjtJQUNaO0lBRUEsT0FDRSxnQkFBQWYsc0RBQUFBLENBQUNLLHNCQUFBO1FBQ0NtQixPQUFPZjtRQUNQZ0IsV0FBVzFCLHlEQUFLQTtRQUNoQm1CO1FBQ0FRLFdBQVczQix5REFBS0E7UUFDaEJhO1FBQ0FHLGNBQWNLO1FBQ2RPLGNBQW9CcEMsOENBQUEsQ0FBWSxJQUFNNkIsUUFBUSxDQUFDUyxXQUFhLENBQUNBLFdBQVc7WUFBQ1Q7U0FBUTtRQUNqRko7UUFFQU4sVUFBQSxnQkFBQVYsc0RBQUFBLENBQWVILHNEQUFBLEVBQWQ7WUFBb0IsR0FBR29CLFNB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QUErQjFILDZDQUFBLENBR25DLENBQUNpQixPQUFpRDJCO0lBQ2xELE1BQU0sRUFBRTFCLG1CQUFBLEVBQXFCLEdBQUd5RyxpQkFBZ0IsR0FBSTFHO0lBQ3BELE1BQU1TLFlBQVliLGFBQWFLO0lBRS9CLE9BQ0UsZ0JBQUFULHNEQUFBQSxDQUFlSCw0REFBQSxFQUFkO1FBQ0UsR0FBR29CLFNBQUE7UUFDSCxHQUFHaUcsZUFBQTtRQUNKdEUsS0FBS1Q7UUFDTGtDLE9BQU87WUFDTCxHQUFHN0QsTUFBTTZELEtBQUE7WUFBQTtZQUVULEdBQUc7Z0JBQ0Qsa0RBQWtEO2dCQUNsRCxpREFBaUQ7Z0JBQ2pELGtEQUFrRDtnQkFDbEQsdUNBQXVDO2dCQUN2Qyx3Q0FBd0M7WUFDMUM7UUFDRjtJQUFBO0FBR047QUFFQTRDLHVCQUF1QmxGLFdBQUEsR0FBY2lGO0FBSXJDLElBQU1sRixRQUFPdkI7QUFDYixJQUFNNkcsVUFBVW5GO0FBQ2hCLElBQU1zQixVQUFTRjtBQUNmLElBQU1PLFdBQVVIO0FBQ2hCLElBQU1nQixTQUFRRjtBQUNkLElBQU1NLFNBQVFGO0FBQ2QsSUFBTU0sUUFBT0Y7QUFDYixJQUFNTSxnQkFBZUY7QUFDckIsSUFBTU0sY0FBYUY7QUFDbkIsSUFBTU0sYUFBWUY7QUFDbEIsSUFBTU0saUJBQWdCRjtBQUN0QixJQUFNTSxhQUFZRjtBQUNsQixJQUFNTSxTQUFRRjtBQUNkLElBQU1JLE9BQU1EO0FBQ1osSUFBTUssY0FBYUY7QUFDbkIsSUFBTU0sY0FBYUYiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9teS12MC1wcm9qZWN0Ly4uL3NyYy9Ecm9wZG93bk1lbnUudHN4P2U3OGEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgY29tcG9zZUV2ZW50SGFuZGxlcnMgfSBmcm9tICdAcmFkaXgtdWkvcHJpbWl0aXZlJztcbmltcG9ydCB7IGNvbXBvc2VSZWZzIH0gZnJvbSAnQHJhZGl4LXVpL3JlYWN0LWNvbXBvc2UtcmVmcyc7XG5pbXBvcnQgeyBjcmVhdGVDb250ZXh0U2NvcGUgfSBmcm9tICdAcmFkaXgtdWkvcmVhY3QtY29udGV4dCc7XG5pbXBvcnQgeyB1c2VDb250cm9sbGFibGVTdGF0ZSB9IGZyb20gJ0ByYWRpeC11aS9yZWFjdC11c2UtY29udHJvbGxhYmxlLXN0YXRlJztcbmltcG9ydCB7IFByaW1pdGl2ZSB9IGZyb20gJ0ByYWRpeC11aS9yZWFjdC1wcmltaXRpdmUnO1xuaW1wb3J0ICogYXMgTWVudVByaW1pdGl2ZSBmcm9tICdAcmFkaXgtdWkvcmVhY3QtbWVudSc7XG5pbXBvcnQgeyBjcmVhdGVNZW51U2NvcGUgfSBmcm9tICdAcmFkaXgtdWkvcmVhY3QtbWVudSc7XG5pbXBvcnQgeyB1c2VJZCB9IGZyb20gJ0ByYWRpeC11aS9yZWFjdC1pZCc7XG5cbmltcG9ydCB0eXBlIHsgU2NvcGUgfSBmcm9tICdAcmFkaXgtdWkvcmVhY3QtY29udGV4dCc7XG5cbnR5cGUgRGlyZWN0aW9uID0gJ2x0cicgfCAncnRsJztcblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogRHJvcGRvd25NZW51XG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbmNvbnN0IERST1BET1dOX01FTlVfTkFNRSA9ICdEcm9wZG93bk1lbnUnO1xuXG50eXBlIFNjb3BlZFByb3BzPFA+ID0gUCAmIHsgX19zY29wZURyb3Bkb3duTWVudT86IFNjb3BlIH07XG5jb25zdCBbY3JlYXRlRHJvcGRvd25NZW51Q29udGV4dCwgY3JlYXRlRHJvcGRvd25NZW51U2NvcGVdID0gY3JlYXRlQ29udGV4dFNjb3BlKFxuICBEUk9QRE9XTl9NRU5VX05BTUUsXG4gIFtjcmVhdGVNZW51U2NvcGVdXG4pO1xuY29uc3QgdXNlTWVudVNjb3BlID0gY3JlYXRlTWVudVNjb3BlKCk7XG5cbnR5cGUgRHJvcGRvd25NZW51Q29udGV4dFZhbHVlID0ge1xuICB0cmlnZ2VySWQ6IHN0cmluZztcbiAgdHJpZ2dlclJlZjogUmVhY3QuUmVmT2JqZWN0PEhUTUxCdXR0b25FbGVtZW50IHwgbnVsbD47XG4gIGNvbnRlbnRJZDogc3RyaW5nO1xuICBvcGVuOiBib29sZWFuO1xuICBvbk9wZW5DaGFuZ2Uob3BlbjogYm9vbGVhbik6IHZvaWQ7XG4gIG9uT3BlblRvZ2dsZSgpOiB2b2lkO1xuICBtb2RhbDogYm9vbGVhbjtcbn07XG5cbmNvbnN0IFtEcm9wZG93bk1lbnVQcm92aWRlciwgdXNlRHJvcGRvd25NZW51Q29udGV4dF0gPVxuICBjcmVhdGVEcm9wZG93bk1lbnVDb250ZXh0PERyb3Bkb3duTWVudUNvbnRleHRWYWx1ZT4oRFJPUERPV05fTUVOVV9OQU1FKTtcblxuaW50ZXJmYWNlIERyb3Bkb3duTWVudVByb3BzIHtcbiAgY2hpbGRyZW4/OiBSZWFjdC5SZWFjdE5vZGU7XG4gIGRpcj86IERpcmVjdGlvbjtcbiAgb3Blbj86IGJvb2xlYW47XG4gIGRlZmF1bHRPcGVuPzogYm9vbGVhbjtcbiAgb25PcGVuQ2hhbmdlPyhvcGVuOiBib29sZWFuKTogdm9pZDtcbiAgbW9kYWw/OiBib29sZWFuO1xufVxuXG5jb25zdCBEcm9wZG93bk1lbnU6IFJlYWN0LkZDPERyb3Bkb3duTWVudVByb3BzPiA9IChwcm9wczogU2NvcGVkUHJvcHM8RHJvcGRvd25NZW51UHJvcHM+KSA9PiB7XG4gIGNvbnN0IHtcbiAgICBfX3Njb3BlRHJvcGRvd25NZW51LFxuICAgIGNoaWxkcmVuLFxuICAgIGRpcixcbiAgICBvcGVuOiBvcGVuUHJvcCxcbiAgICBkZWZhdWx0T3BlbixcbiAgICBvbk9wZW5DaGFuZ2UsXG4gICAgbW9kYWwgPSB0cnVlLFxuICB9ID0gcHJvcHM7XG4gIGNvbnN0IG1lbnVTY29wZSA9IHVzZU1lbnVTY29wZShfX3Njb3BlRHJvcGRvd25NZW51KTtcbiAgY29uc3QgdHJpZ2dlclJlZiA9IFJlYWN0LnVzZVJlZjxIVE1MQnV0dG9uRWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IFtvcGVuID0gZmFsc2UsIHNldE9wZW5dID0gdXNlQ29udHJvbGxhYmxlU3RhdGUoe1xuICAgIHByb3A6IG9wZW5Qcm9wLFxuICAgIGRlZmF1bHRQcm9wOiBkZWZhdWx0T3BlbixcbiAgICBvbkNoYW5nZTogb25PcGVuQ2hhbmdlLFxuICB9KTtcblxuICByZXR1cm4gKFxuICAgIDxEcm9wZG93bk1lbnVQcm92aWRlclxuICAgICAgc2NvcGU9e19fc2NvcGVEcm9wZG93bk1lbnV9XG4gICAgICB0cmlnZ2VySWQ9e3VzZUlkKCl9XG4gICAgICB0cmlnZ2VyUmVmPXt0cmlnZ2VyUmVmfVxuICAgICAgY29udGVudElkPXt1c2VJZCgpfVxuICAgICAgb3Blbj17b3Blbn1cbiAgICAgIG9uT3BlbkNoYW5nZT17c2V0T3Blbn1cbiAgICAgIG9uT3BlblRvZ2dsZT17UmVhY3QudXNlQ2FsbGJhY2soKCkgPT4gc2V0T3BlbigocHJldk9wZW4pID0+ICFwcmV2T3BlbiksIFtzZXRPcGVuXSl9XG4gICAgICBtb2RhbD17bW9kYWx9XG4gICAgPlxuICAgICAgPE1lbnVQcmltaXRpdmUuUm9vdCB7Li4ubWVudVNjb3BlfSBvcGVuPXtvcGVufSBvbk9wZW5DaGFuZ2U9e3NldE9wZW59IGRpcj17ZGlyfSBtb2RhbD17bW9kYWx9PlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L01lbnVQcmltaXRpdmUuUm9vdD5cbiAgICA8L0Ryb3Bkb3duTWVudVByb3ZpZGVyPlxuICApO1xufTtcblxuRHJvcGRvd25NZW51LmRpc3BsYXlOYW1lID0gRFJPUERPV05fTUVOVV9OQU1FO1xuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBEcm9wZG93bk1lbnVUcmlnZ2VyXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbmNvbnN0IFRSSUdHRVJfTkFNRSA9ICdEcm9wZG93bk1lbnVUcmlnZ2VyJztcblxudHlwZSBEcm9wZG93bk1lbnVUcmlnZ2VyRWxlbWVudCA9IFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFByaW1pdGl2ZS5idXR0b24+O1xudHlwZSBQcmltaXRpdmVCdXR0b25Qcm9wcyA9IFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgUHJpbWl0aXZlLmJ1dHRvbj47XG5pbnRlcmZhY2UgRHJvcGRvd25NZW51VHJpZ2dlclByb3BzIGV4dGVuZHMgUHJpbWl0aXZlQnV0dG9uUHJvcHMge31cblxuY29uc3QgRHJvcGRvd25NZW51VHJpZ2dlciA9IFJlYWN0LmZvcndhcmRSZWY8RHJvcGRvd25NZW51VHJpZ2dlckVsZW1lbnQsIERyb3Bkb3duTWVudVRyaWdnZXJQcm9wcz4oXG4gIChwcm9wczogU2NvcGVkUHJvcHM8RHJvcGRvd25NZW51VHJpZ2dlclByb3BzPiwgZm9yd2FyZGVkUmVmKSA9PiB7XG4gICAgY29uc3QgeyBfX3Njb3BlRHJvcGRvd25NZW51LCBkaXNhYmxlZCA9IGZhbHNlLCAuLi50cmlnZ2VyUHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNvbnRleHQgPSB1c2VEcm9wZG93bk1lbnVDb250ZXh0KFRSSUdHRVJfTkFNRSwgX19zY29wZURyb3Bkb3duTWVudSk7XG4gICAgY29uc3QgbWVudVNjb3BlID0gdXNlTWVudVNjb3BlKF9fc2NvcGVEcm9wZG93bk1lbnUpO1xuICAgIHJldHVybiAoXG4gICAgICA8TWVudVByaW1pdGl2ZS5BbmNob3IgYXNDaGlsZCB7Li4ubWVudVNjb3BlfT5cbiAgICAgICAgPFByaW1pdGl2ZS5idXR0b25cbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBpZD17Y29udGV4dC50cmlnZ2VySWR9XG4gICAgICAgICAgYXJpYS1oYXNwb3B1cD1cIm1lbnVcIlxuICAgICAgICAgIGFyaWEtZXhwYW5kZWQ9e2NvbnRleHQub3Blbn1cbiAgICAgICAgICBhcmlhLWNvbnRyb2xzPXtjb250ZXh0Lm9wZW4gPyBjb250ZXh0LmNvbnRlbnRJZCA6IHVuZGVmaW5lZH1cbiAgICAgICAgICBkYXRhLXN0YXRlPXtjb250ZXh0Lm9wZW4gPyAnb3BlbicgOiAnY2xvc2VkJ31cbiAgICAgICAgICBkYXRhLWRpc2FibGVkPXtkaXNhYmxlZCA/ICcnIDogdW5kZWZpbmVkfVxuICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgICB7Li4udHJpZ2dlclByb3BzfVxuICAgICAgICAgIHJlZj17Y29tcG9zZVJlZnMoZm9yd2FyZGVkUmVmLCBjb250ZXh0LnRyaWdnZXJSZWYpfVxuICAgICAgICAgIG9uUG9pbnRlckRvd249e2NvbXBvc2VFdmVudEhhbmRsZXJzKHByb3BzLm9uUG9pbnRlckRvd24sIChldmVudCkgPT4ge1xuICAgICAgICAgICAgLy8gb25seSBjYWxsIGhhbmRsZXIgaWYgaXQncyB0aGUgbGVmdCBidXR0b24gKG1vdXNlZG93biBnZXRzIHRyaWdnZXJlZCBieSBhbGwgbW91c2UgYnV0dG9ucylcbiAgICAgICAgICAgIC8vIGJ1dCBub3Qgd2hlbiB0aGUgY29udHJvbCBrZXkgaXMgcHJlc3NlZCAoYXZvaWRpbmcgTWFjT1MgcmlnaHQgY2xpY2spXG4gICAgICAgICAgICBpZiAoIWRpc2FibGVkICYmIGV2ZW50LmJ1dHRvbiA9PT0gMCAmJiBldmVudC5jdHJsS2V5ID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICBjb250ZXh0Lm9uT3BlblRvZ2dsZSgpO1xuICAgICAgICAgICAgICAvLyBwcmV2ZW50IHRyaWdnZXIgZm9jdXNpbmcgd2hlbiBvcGVuaW5nXG4gICAgICAgICAgICAgIC8vIHRoaXMgYWxsb3dzIHRoZSBjb250ZW50IHRvIGJlIGdpdmVuIGZvY3VzIHdpdGhvdXQgY29tcGV0aXRpb25cbiAgICAgICAgICAgICAgaWYgKCFjb250ZXh0Lm9wZW4pIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSl9XG4gICAgICAgICAgb25LZXlEb3duPXtjb21wb3NlRXZlbnRIYW5kbGVycyhwcm9wcy5vbktleURvd24sIChldmVudCkgPT4ge1xuICAgICAgICAgICAgaWYgKGRpc2FibGVkKSByZXR1cm47XG4gICAgICAgICAgICBpZiAoWydFbnRlcicsICcgJ10uaW5jbHVkZXMoZXZlbnQua2V5KSkgY29udGV4dC5vbk9wZW5Ub2dnbGUoKTtcbiAgICAgICAgICAgIGlmIChldmVudC5rZXkgPT09ICdBcnJvd0Rvd24nKSBjb250ZXh0Lm9uT3BlbkNoYW5nZSh0cnVlKTtcbiAgICAgICAgICAgIC8vIHByZXZlbnQga2V5ZG93biBmcm9tIHNjcm9sbGluZyB3aW5kb3cgLyBmaXJzdCBmb2N1c2VkIGl0ZW0gdG8gZXhlY3V0ZVxuICAgICAgICAgICAgLy8gdGhhdCBrZXlkb3duIChpbmFkdmVydGVudGx5IGNsb3NpbmcgdGhlIG1lbnUpXG4gICAgICAgICAgICBpZiAoWydFbnRlcicsICcgJywgJ0Fycm93RG93biddLmluY2x1ZGVzKGV2ZW50LmtleSkpIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgfSl9XG4gICAgICAgIC8+XG4gICAgICA8L01lbnVQcmltaXRpdmUuQW5jaG9yPlxuICAgICk7XG4gIH1cbik7XG5cbkRyb3Bkb3duTWVudVRyaWdnZXIuZGlzcGxheU5hbWUgPSBUUklHR0VSX05BTUU7XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIERyb3Bkb3duTWVudVBvcnRhbFxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG5jb25zdCBQT1JUQUxfTkFNRSA9ICdEcm9wZG93bk1lbnVQb3J0YWwnO1xuXG50eXBlIE1lbnVQb3J0YWxQcm9wcyA9IFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgTWVudVByaW1pdGl2ZS5Qb3J0YWw+O1xuaW50ZXJmYWNlIERyb3Bkb3duTWVudVBvcnRhbFByb3BzIGV4dGVuZHMgTWVudVBvcnRhbFByb3BzIHt9XG5cbmNvbnN0IERyb3Bkb3duTWVudVBvcnRhbDogUmVhY3QuRkM8RHJvcGRvd25NZW51UG9ydGFsUHJvcHM+ID0gKFxuICBwcm9wczogU2NvcGVkUHJvcHM8RHJvcGRvd25NZW51UG9ydGFsUHJvcHM+XG4pID0+IHtcbiAgY29uc3QgeyBfX3Njb3BlRHJvcGRvd25NZW51LCAuLi5wb3J0YWxQcm9wcyB9ID0gcHJvcHM7XG4gIGNvbnN0IG1lbnVTY29wZSA9IHVzZU1lbnVTY29wZShfX3Njb3BlRHJvcGRvd25NZW51KTtcbiAgcmV0dXJuIDxNZW51UHJpbWl0aXZlLlBvcnRhbCB7Li4ubWVudVNjb3BlfSB7Li4ucG9ydGFsUHJvcHN9IC8+O1xufTtcblxuRHJvcGRvd25NZW51UG9ydGFsLmRpc3BsYXlOYW1lID0gUE9SVEFMX05BTUU7XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIERyb3Bkb3duTWVudUNvbnRlbnRcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuY29uc3QgQ09OVEVOVF9OQU1FID0gJ0Ryb3Bkb3duTWVudUNvbnRlbnQnO1xuXG50eXBlIERyb3Bkb3duTWVudUNvbnRlbnRFbGVtZW50ID0gUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgTWVudVByaW1pdGl2ZS5Db250ZW50PjtcbnR5cGUgTWVudUNvbnRlbnRQcm9wcyA9IFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgTWVudVByaW1pdGl2ZS5Db250ZW50PjtcbmludGVyZmFjZSBEcm9wZG93bk1lbnVDb250ZW50UHJvcHMgZXh0ZW5kcyBPbWl0PE1lbnVDb250ZW50UHJvcHMsICdvbkVudHJ5Rm9jdXMnPiB7fVxuXG5jb25zdCBEcm9wZG93bk1lbnVDb250ZW50ID0gUmVhY3QuZm9yd2FyZFJlZjxEcm9wZG93bk1lbnVDb250ZW50RWxlbWVudCwgRHJvcGRvd25NZW51Q29udGVudFByb3BzPihcbiAgKHByb3BzOiBTY29wZWRQcm9wczxEcm9wZG93bk1lbnVDb250ZW50UHJvcHM+LCBmb3J3YXJkZWRSZWYpID0+IHtcbiAgICBjb25zdCB7IF9fc2NvcGVEcm9wZG93bk1lbnUsIC4uLmNvbnRlbnRQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgY29udGV4dCA9IHVzZURyb3Bkb3duTWVudUNvbnRleHQoQ09OVEVOVF9OQU1FLCBfX3Njb3BlRHJvcGRvd25NZW51KTtcbiAgICBjb25zdCBtZW51U2NvcGUgPSB1c2VNZW51U2NvcGUoX19zY29wZURyb3Bkb3duTWVudSk7XG4gICAgY29uc3QgaGFzSW50ZXJhY3RlZE91dHNpZGVSZWYgPSBSZWFjdC51c2VSZWYoZmFsc2UpO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxNZW51UHJpbWl0aXZlLkNvbnRlbnRcbiAgICAgICAgaWQ9e2NvbnRleHQuY29udGVudElkfVxuICAgICAgICBhcmlhLWxhYmVsbGVkYnk9e2NvbnRleHQudHJpZ2dlcklkfVxuICAgICAgICB7Li4ubWVudVNjb3BlfVxuICAgICAgICB7Li4uY29udGVudFByb3BzfVxuICAgICAgICByZWY9e2ZvcndhcmRlZFJlZn1cbiAgICAgICAgb25DbG9zZUF1dG9Gb2N1cz17Y29tcG9zZUV2ZW50SGFuZGxlcnMocHJvcHMub25DbG9zZUF1dG9Gb2N1cywgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgaWYgKCFoYXNJbnRlcmFjdGVkT3V0c2lkZVJlZi5jdXJyZW50KSBjb250ZXh0LnRyaWdnZXJSZWYuY3VycmVudD8uZm9jdXMoKTtcbiAgICAgICAgICBoYXNJbnRlcmFjdGVkT3V0c2lkZVJlZi5jdXJyZW50ID0gZmFsc2U7XG4gICAgICAgICAgLy8gQWx3YXlzIHByZXZlbnQgYXV0byBmb2N1cyBiZWNhdXNlIHdlIGVpdGhlciBmb2N1cyBtYW51YWxseSBvciB3YW50IHVzZXIgYWdlbnQgZm9jdXNcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9KX1cbiAgICAgICAgb25JbnRlcmFjdE91dHNpZGU9e2NvbXBvc2VFdmVudEhhbmRsZXJzKHByb3BzLm9uSW50ZXJhY3RPdXRzaWRlLCAoZXZlbnQpID0+IHtcbiAgICAgICAgICBjb25zdCBvcmlnaW5hbEV2ZW50ID0gZXZlbnQuZGV0YWlsLm9yaWdpbmFsRXZlbnQgYXMgUG9pbnRlckV2ZW50O1xuICAgICAgICAgIGNvbnN0IGN0cmxMZWZ0Q2xpY2sgPSBvcmlnaW5hbEV2ZW50LmJ1dHRvbiA9PT0gMCAmJiBvcmlnaW5hbEV2ZW50LmN0cmxLZXkgPT09IHRydWU7XG4gICAgICAgICAgY29uc3QgaXNSaWdodENsaWNrID0gb3JpZ2luYWxFdmVudC5idXR0b24gPT09IDIgfHwgY3RybExlZnRDbGljaztcbiAgICAgICAgICBpZiAoIWNvbnRleHQubW9kYWwgfHwgaXNSaWdodENsaWNrKSBoYXNJbnRlcmFjdGVkT3V0c2lkZVJlZi5jdXJyZW50ID0gdHJ1ZTtcbiAgICAgICAgfSl9XG4gICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgLi4ucHJvcHMuc3R5bGUsXG4gICAgICAgICAgLy8gcmUtbmFtZXNwYWNlIGV4cG9zZWQgY29udGVudCBjdXN0b20gcHJvcGVydGllc1xuICAgICAgICAgIC4uLntcbiAgICAgICAgICAgICctLXJhZGl4LWRyb3Bkb3duLW1lbnUtY29udGVudC10cmFuc2Zvcm0tb3JpZ2luJzpcbiAgICAgICAgICAgICAgJ3ZhcigtLXJhZGl4LXBvcHBlci10cmFuc2Zvcm0tb3JpZ2luKScsXG4gICAgICAgICAgICAnLS1yYWRpeC1kcm9wZG93bi1tZW51LWNvbnRlbnQtYXZhaWxhYmxlLXdpZHRoJzogJ3ZhcigtLXJhZGl4LXBvcHBlci1hdmFpbGFibGUtd2lkdGgpJyxcbiAgICAgICAgICAgICctLXJhZGl4LWRyb3Bkb3duLW1lbnUtY29udGVudC1hdmFpbGFibGUtaGVpZ2h0JzpcbiAgICAgICAgICAgICAgJ3ZhcigtLXJhZGl4LXBvcHBlci1hdmFpbGFibGUtaGVpZ2h0KScsXG4gICAgICAgICAgICAnLS1yYWRpeC1kcm9wZG93bi1tZW51LXRyaWdnZXItd2lkdGgnOiAndmFyKC0tcmFkaXgtcG9wcGVyLWFuY2hvci13aWR0aCknLFxuICAgICAgICAgICAgJy0tcmFkaXgtZHJvcGRvd24tbWVudS10cmlnZ2VyLWhlaWdodCc6ICd2YXIoLS1yYWRpeC1wb3BwZXItYW5jaG9yLWhlaWdodCknLFxuICAgICAgICAgIH0sXG4gICAgICAgIH19XG4gICAgICAvPlxuICAgICk7XG4gIH1cbik7XG5cbkRyb3Bkb3duTWVudUNvbnRlbnQuZGlzcGxheU5hbWUgPSBDT05URU5UX05BTUU7XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIERyb3Bkb3duTWVudUdyb3VwXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbmNvbnN0IEdST1VQX05BTUUgPSAnRHJvcGRvd25NZW51R3JvdXAnO1xuXG50eXBlIERyb3Bkb3duTWVudUdyb3VwRWxlbWVudCA9IFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIE1lbnVQcmltaXRpdmUuR3JvdXA+O1xudHlwZSBNZW51R3JvdXBQcm9wcyA9IFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgTWVudVByaW1pdGl2ZS5Hcm91cD47XG5pbnRlcmZhY2UgRHJvcGRvd25NZW51R3JvdXBQcm9wcyBleHRlbmRzIE1lbnVHcm91cFByb3BzIHt9XG5cbmNvbnN0IERyb3Bkb3duTWVudUdyb3VwID0gUmVhY3QuZm9yd2FyZFJlZjxEcm9wZG93bk1lbnVHcm91cEVsZW1lbnQsIERyb3Bkb3duTWVudUdyb3VwUHJvcHM+KFxuICAocHJvcHM6IFNjb3BlZFByb3BzPERyb3Bkb3duTWVudUdyb3VwUHJvcHM+LCBmb3J3YXJkZWRSZWYpID0+IHtcbiAgICBjb25zdCB7IF9fc2NvcGVEcm9wZG93bk1lbnUsIC4uLmdyb3VwUHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IG1lbnVTY29wZSA9IHVzZU1lbnVTY29wZShfX3Njb3BlRHJvcGRvd25NZW51KTtcbiAgICByZXR1cm4gPE1lbnVQcmltaXRpdmUuR3JvdXAgey4uLm1lbnVTY29wZX0gey4uLmdyb3VwUHJvcHN9IHJlZj17Zm9yd2FyZGVkUmVmfSAvPjtcbiAgfVxuKTtcblxuRHJvcGRvd25NZW51R3JvdXAuZGlzcGxheU5hbWUgPSBHUk9VUF9OQU1FO1xuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBEcm9wZG93bk1lbnVMYWJlbFxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG5jb25zdCBMQUJFTF9OQU1FID0gJ0Ryb3Bkb3duTWVudUxhYmVsJztcblxudHlwZSBEcm9wZG93bk1lbnVMYWJlbEVsZW1lbnQgPSBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBNZW51UHJpbWl0aXZlLkxhYmVsPjtcbnR5cGUgTWVudUxhYmVsUHJvcHMgPSBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIE1lbnVQcmltaXRpdmUuTGFiZWw+O1xuaW50ZXJmYWNlIERyb3Bkb3duTWVudUxhYmVsUHJvcHMgZXh0ZW5kcyBNZW51TGFiZWxQcm9wcyB7fVxuXG5jb25zdCBEcm9wZG93bk1lbnVMYWJlbCA9IFJlYWN0LmZvcndhcmRSZWY8RHJvcGRvd25NZW51TGFiZWxFbGVtZW50LCBEcm9wZG93bk1lbnVMYWJlbFByb3BzPihcbiAgKHByb3BzOiBTY29wZWRQcm9wczxEcm9wZG93bk1lbnVMYWJlbFByb3BzPiwgZm9yd2FyZGVkUmVmKSA9PiB7XG4gICAgY29uc3QgeyBfX3Njb3BlRHJvcGRvd25NZW51LCAuLi5sYWJlbFByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBtZW51U2NvcGUgPSB1c2VNZW51U2NvcGUoX19zY29wZURyb3Bkb3duTWVudSk7XG4gICAgcmV0dXJuIDxNZW51UHJpbWl0aXZlLkxhYmVsIHsuLi5tZW51U2NvcGV9IHsuLi5sYWJlbFByb3BzfSByZWY9e2ZvcndhcmRlZFJlZn0gLz47XG4gIH1cbik7XG5cbkRyb3Bkb3duTWVudUxhYmVsLmRpc3BsYXlOYW1lID0gTEFCRUxfTkFNRTtcblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogRHJvcGRvd25NZW51SXRlbVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG5jb25zdCBJVEVNX05BTUUgPSAnRHJvcGRvd25NZW51SXRlbSc7XG5cbnR5cGUgRHJvcGRvd25NZW51SXRlbUVsZW1lbnQgPSBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBNZW51UHJpbWl0aXZlLkl0ZW0+O1xudHlwZSBNZW51SXRlbVByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBNZW51UHJpbWl0aXZlLkl0ZW0+O1xuaW50ZXJmYWNlIERyb3Bkb3duTWVudUl0ZW1Qcm9wcyBleHRlbmRzIE1lbnVJdGVtUHJvcHMge31cblxuY29uc3QgRHJvcGRvd25NZW51SXRlbSA9IFJlYWN0LmZvcndhcmRSZWY8RHJvcGRvd25NZW51SXRlbUVsZW1lbnQsIERyb3Bkb3duTWVudUl0ZW1Qcm9wcz4oXG4gIChwcm9wczogU2NvcGVkUHJvcHM8RHJvcGRvd25NZW51SXRlbVByb3BzPiwgZm9yd2FyZGVkUmVmKSA9PiB7XG4gICAgY29uc3QgeyBfX3Njb3BlRHJvcGRvd25NZW51LCAuLi5pdGVtUHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IG1lbnVTY29wZSA9IHVzZU1lbnVTY29wZShfX3Njb3BlRHJvcGRvd25NZW51KTtcbiAgICByZXR1cm4gPE1lbnVQcmltaXRpdmUuSXRlbSB7Li4ubWVudVNjb3BlfSB7Li4uaXRlbVByb3BzfSByZWY9e2ZvcndhcmRlZFJlZn0gLz47XG4gIH1cbik7XG5cbkRyb3Bkb3duTWVudUl0ZW0uZGlzcGxheU5hbWUgPSBJVEVNX05BTUU7XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIERyb3Bkb3duTWVudUNoZWNrYm94SXRlbVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG5jb25zdCBDSEVDS0JPWF9JVEVNX05BTUUgPSAnRHJvcGRvd25NZW51Q2hlY2tib3hJdGVtJztcblxudHlwZSBEcm9wZG93bk1lbnVDaGVja2JveEl0ZW1FbGVtZW50ID0gUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgTWVudVByaW1pdGl2ZS5DaGVja2JveEl0ZW0+O1xudHlwZSBNZW51Q2hlY2tib3hJdGVtUHJvcHMgPSBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIE1lbnVQcmltaXRpdmUuQ2hlY2tib3hJdGVtPjtcbmludGVyZmFjZSBEcm9wZG93bk1lbnVDaGVja2JveEl0ZW1Qcm9wcyBleHRlbmRzIE1lbnVDaGVja2JveEl0ZW1Qcm9wcyB7fVxuXG5jb25zdCBEcm9wZG93bk1lbnVDaGVja2JveEl0ZW0gPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBEcm9wZG93bk1lbnVDaGVja2JveEl0ZW1FbGVtZW50LFxuICBEcm9wZG93bk1lbnVDaGVja2JveEl0ZW1Qcm9wc1xuPigocHJvcHM6IFNjb3BlZFByb3BzPERyb3Bkb3duTWVudUNoZWNrYm94SXRlbVByb3BzPiwgZm9yd2FyZGVkUmVmKSA9PiB7XG4gIGNvbnN0IHsgX19zY29wZURyb3Bkb3duTWVudSwgLi4uY2hlY2tib3hJdGVtUHJvcHMgfSA9IHByb3BzO1xuICBjb25zdCBtZW51U2NvcGUgPSB1c2VNZW51U2NvcGUoX19zY29wZURyb3Bkb3duTWVudSk7XG4gIHJldHVybiA8TWVudVByaW1pdGl2ZS5DaGVja2JveEl0ZW0gey4uLm1lbnVTY29wZX0gey4uLmNoZWNrYm94SXRlbVByb3BzfSByZWY9e2ZvcndhcmRlZFJlZn0gLz47XG59KTtcblxuRHJvcGRvd25NZW51Q2hlY2tib3hJdGVtLmRpc3BsYXlOYW1lID0gQ0hFQ0tCT1hfSVRFTV9OQU1FO1xuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBEcm9wZG93bk1lbnVSYWRpb0dyb3VwXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbmNvbnN0IFJBRElPX0dST1VQX05BTUUgPSAnRHJvcGRvd25NZW51UmFkaW9Hcm91cCc7XG5cbnR5cGUgRHJvcGRvd25NZW51UmFkaW9Hcm91cEVsZW1lbnQgPSBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBNZW51UHJpbWl0aXZlLlJhZGlvR3JvdXA+O1xudHlwZSBNZW51UmFkaW9Hcm91cFByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBNZW51UHJpbWl0aXZlLlJhZGlvR3JvdXA+O1xuaW50ZXJmYWNlIERyb3Bkb3duTWVudVJhZGlvR3JvdXBQcm9wcyBleHRlbmRzIE1lbnVSYWRpb0dyb3VwUHJvcHMge31cblxuY29uc3QgRHJvcGRvd25NZW51UmFkaW9Hcm91cCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIERyb3Bkb3duTWVudVJhZGlvR3JvdXBFbGVtZW50LFxuICBEcm9wZG93bk1lbnVSYWRpb0dyb3VwUHJvcHNcbj4oKHByb3BzOiBTY29wZWRQcm9wczxEcm9wZG93bk1lbnVSYWRpb0dyb3VwUHJvcHM+LCBmb3J3YXJkZWRSZWYpID0+IHtcbiAgY29uc3QgeyBfX3Njb3BlRHJvcGRvd25NZW51LCAuLi5yYWRpb0dyb3VwUHJvcHMgfSA9IHByb3BzO1xuICBjb25zdCBtZW51U2NvcGUgPSB1c2VNZW51U2NvcGUoX19zY29wZURyb3Bkb3duTWVudSk7XG4gIHJldHVybiA8TWVudVByaW1pdGl2ZS5SYWRpb0dyb3VwIHsuLi5tZW51U2NvcGV9IHsuLi5yYWRpb0dyb3VwUHJvcHN9IHJlZj17Zm9yd2FyZGVkUmVmfSAvPjtcbn0pO1xuXG5Ecm9wZG93bk1lbnVSYWRpb0dyb3VwLmRpc3BsYXlOYW1lID0gUkFESU9fR1JPVVBfTkFNRTtcblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogRHJvcGRvd25NZW51UmFkaW9JdGVtXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbmNvbnN0IFJBRElPX0lURU1fTkFNRSA9ICdEcm9wZG93bk1lbnVSYWRpb0l0ZW0nO1xuXG50eXBlIERyb3Bkb3duTWVudVJhZGlvSXRlbUVsZW1lbnQgPSBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBNZW51UHJpbWl0aXZlLlJhZGlvSXRlbT47XG50eXBlIE1lbnVSYWRpb0l0ZW1Qcm9wcyA9IFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgTWVudVByaW1pdGl2ZS5SYWRpb0l0ZW0+O1xuaW50ZXJmYWNlIERyb3Bkb3duTWVudVJhZGlvSXRlbVByb3BzIGV4dGVuZHMgTWVudVJhZGlvSXRlbVByb3BzIHt9XG5cbmNvbnN0IERyb3Bkb3duTWVudVJhZGlvSXRlbSA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIERyb3Bkb3duTWVudVJhZGlvSXRlbUVsZW1lbnQsXG4gIERyb3Bkb3duTWVudVJhZGlvSXRlbVByb3BzXG4+KChwcm9wczogU2NvcGVkUHJvcHM8RHJvcGRvd25NZW51UmFkaW9JdGVtUHJvcHM+LCBmb3J3YXJkZWRSZWYpID0+IHtcbiAgY29uc3QgeyBfX3Njb3BlRHJvcGRvd25NZW51LCAuLi5yYWRpb0l0ZW1Qcm9wcyB9ID0gcHJvcHM7XG4gIGNvbnN0IG1lbnVTY29wZSA9IHVzZU1lbnVTY29wZShfX3Njb3BlRHJvcGRvd25NZW51KTtcbiAgcmV0dXJuIDxNZW51UHJpbWl0aXZlLlJhZGlvSXRlbSB7Li4ubWVudVNjb3BlfSB7Li4ucmFkaW9JdGVtUHJvcHN9IHJlZj17Zm9yd2FyZGVkUmVmfSAvPjtcbn0pO1xuXG5Ecm9wZG93bk1lbnVSYWRpb0l0ZW0uZGlzcGxheU5hbWUgPSBSQURJT19JVEVNX05BTUU7XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIERyb3Bkb3duTWVudUl0ZW1JbmRpY2F0b3JcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuY29uc3QgSU5ESUNBVE9SX05BTUUgPSAnRHJvcGRvd25NZW51SXRlbUluZGljYXRvcic7XG5cbnR5cGUgRHJvcGRvd25NZW51SXRlbUluZGljYXRvckVsZW1lbnQgPSBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBNZW51UHJpbWl0aXZlLkl0ZW1JbmRpY2F0b3I+O1xudHlwZSBNZW51SXRlbUluZGljYXRvclByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBNZW51UHJpbWl0aXZlLkl0ZW1JbmRpY2F0b3I+O1xuaW50ZXJmYWNlIERyb3Bkb3duTWVudUl0ZW1JbmRpY2F0b3JQcm9wcyBleHRlbmRzIE1lbnVJdGVtSW5kaWNhdG9yUHJvcHMge31cblxuY29uc3QgRHJvcGRvd25NZW51SXRlbUluZGljYXRvciA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIERyb3Bkb3duTWVudUl0ZW1JbmRpY2F0b3JFbGVtZW50LFxuICBEcm9wZG93bk1lbnVJdGVtSW5kaWNhdG9yUHJvcHNcbj4oKHByb3BzOiBTY29wZWRQcm9wczxEcm9wZG93bk1lbnVJdGVtSW5kaWNhdG9yUHJvcHM+LCBmb3J3YXJkZWRSZWYpID0+IHtcbiAgY29uc3QgeyBfX3Njb3BlRHJvcGRvd25NZW51LCAuLi5pdGVtSW5kaWNhdG9yUHJvcHMgfSA9IHByb3BzO1xuICBjb25zdCBtZW51U2NvcGUgPSB1c2VNZW51U2NvcGUoX19zY29wZURyb3Bkb3duTWVudSk7XG4gIHJldHVybiA8TWVudVByaW1pdGl2ZS5JdGVtSW5kaWNhdG9yIHsuLi5tZW51U2NvcGV9IHsuLi5pdGVtSW5kaWNhdG9yUHJvcHN9IHJlZj17Zm9yd2FyZGVkUmVmfSAvPjtcbn0pO1xuXG5Ecm9wZG93bk1lbnVJdGVtSW5kaWNhdG9yLmRpc3BsYXlOYW1lID0gSU5ESUNBVE9SX05BTUU7XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIERyb3Bkb3duTWVudVNlcGFyYXRvclxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG5jb25zdCBTRVBBUkFUT1JfTkFNRSA9ICdEcm9wZG93bk1lbnVTZXBhcmF0b3InO1xuXG50eXBlIERyb3Bkb3duTWVudVNlcGFyYXRvckVsZW1lbnQgPSBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBNZW51UHJpbWl0aXZlLlNlcGFyYXRvcj47XG50eXBlIE1lbnVTZXBhcmF0b3JQcm9wcyA9IFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgTWVudVByaW1pdGl2ZS5TZXBhcmF0b3I+O1xuaW50ZXJmYWNlIERyb3Bkb3duTWVudVNlcGFyYXRvclByb3BzIGV4dGVuZHMgTWVudVNlcGFyYXRvclByb3BzIHt9XG5cbmNvbnN0IERyb3Bkb3duTWVudVNlcGFyYXRvciA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIERyb3Bkb3duTWVudVNlcGFyYXRvckVsZW1lbnQsXG4gIERyb3Bkb3duTWVudVNlcGFyYXRvclByb3BzXG4+KChwcm9wczogU2NvcGVkUHJvcHM8RHJvcGRvd25NZW51U2VwYXJhdG9yUHJvcHM+LCBmb3J3YXJkZWRSZWYpID0+IHtcbiAgY29uc3QgeyBfX3Njb3BlRHJvcGRvd25NZW51LCAuLi5zZXBhcmF0b3JQcm9wcyB9ID0gcHJvcHM7XG4gIGNvbnN0IG1lbnVTY29wZSA9IHVzZU1lbnVTY29wZShfX3Njb3BlRHJvcGRvd25NZW51KTtcbiAgcmV0dXJuIDxNZW51UHJpbWl0aXZlLlNlcGFyYXRvciB7Li4ubWVudVNjb3BlfSB7Li4uc2VwYXJhdG9yUHJvcHN9IHJlZj17Zm9yd2FyZGVkUmVmfSAvPjtcbn0pO1xuXG5Ecm9wZG93bk1lbnVTZXBhcmF0b3IuZGlzcGxheU5hbWUgPSBTRVBBUkFUT1JfTkFNRTtcblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogRHJvcGRvd25NZW51QXJyb3dcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuY29uc3QgQVJST1dfTkFNRSA9ICdEcm9wZG93bk1lbnVBcnJvdyc7XG5cbnR5cGUgRHJvcGRvd25NZW51QXJyb3dFbGVtZW50ID0gUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgTWVudVByaW1pdGl2ZS5BcnJvdz47XG50eXBlIE1lbnVBcnJvd1Byb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBNZW51UHJpbWl0aXZlLkFycm93PjtcbmludGVyZmFjZSBEcm9wZG93bk1lbnVBcnJvd1Byb3BzIGV4dGVuZHMgTWVudUFycm93UHJvcHMge31cblxuY29uc3QgRHJvcGRvd25NZW51QXJyb3cgPSBSZWFjdC5mb3J3YXJkUmVmPERyb3Bkb3duTWVudUFycm93RWxlbWVudCwgRHJvcGRvd25NZW51QXJyb3dQcm9wcz4oXG4gIChwcm9wczogU2NvcGVkUHJvcHM8RHJvcGRvd25NZW51QXJyb3dQcm9wcz4sIGZvcndhcmRlZFJlZikgPT4ge1xuICAgIGNvbnN0IHsgX19zY29wZURyb3Bkb3duTWVudSwgLi4uYXJyb3dQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgbWVudVNjb3BlID0gdXNlTWVudVNjb3BlKF9fc2NvcGVEcm9wZG93bk1lbnUpO1xuICAgIHJldHVybiA8TWVudVByaW1pdGl2ZS5BcnJvdyB7Li4ubWVudVNjb3BlfSB7Li4uYXJyb3dQcm9wc30gcmVmPXtmb3J3YXJkZWRSZWZ9IC8+O1xuICB9XG4pO1xuXG5Ecm9wZG93bk1lbnVBcnJvdy5kaXNwbGF5TmFtZSA9IEFSUk9XX05BTUU7XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIERyb3Bkb3duTWVudVN1YlxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG5pbnRlcmZhY2UgRHJvcGRvd25NZW51U3ViUHJvcHMge1xuICBjaGlsZHJlbj86IFJlYWN0LlJlYWN0Tm9kZTtcbiAgb3Blbj86IGJvb2xlYW47XG4gIGRlZmF1bHRPcGVuPzogYm9vbGVhbjtcbiAgb25PcGVuQ2hhbmdlPyhvcGVuOiBib29sZWFuKTogdm9pZDtcbn1cblxuY29uc3QgRHJvcGRvd25NZW51U3ViOiBSZWFjdC5GQzxEcm9wZG93bk1lbnVTdWJQcm9wcz4gPSAoXG4gIHByb3BzOiBTY29wZWRQcm9wczxEcm9wZG93bk1lbnVTdWJQcm9wcz5cbikgPT4ge1xuICBjb25zdCB7IF9fc2NvcGVEcm9wZG93bk1lbnUsIGNoaWxkcmVuLCBvcGVuOiBvcGVuUHJvcCwgb25PcGVuQ2hhbmdlLCBkZWZhdWx0T3BlbiB9ID0gcHJvcHM7XG4gIGNvbnN0IG1lbnVTY29wZSA9IHVzZU1lbnVTY29wZShfX3Njb3BlRHJvcGRvd25NZW51KTtcbiAgY29uc3QgW29wZW4gPSBmYWxzZSwgc2V0T3Blbl0gPSB1c2VDb250cm9sbGFibGVTdGF0ZSh7XG4gICAgcHJvcDogb3BlblByb3AsXG4gICAgZGVmYXVsdFByb3A6IGRlZmF1bHRPcGVuLFxuICAgIG9uQ2hhbmdlOiBvbk9wZW5DaGFuZ2UsXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPE1lbnVQcmltaXRpdmUuU3ViIHsuLi5tZW51U2NvcGV9IG9wZW49e29wZW59IG9uT3BlbkNoYW5nZT17c2V0T3Blbn0+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9NZW51UHJpbWl0aXZlLlN1Yj5cbiAgKTtcbn07XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIERyb3Bkb3duTWVudVN1YlRyaWdnZXJcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuY29uc3QgU1VCX1RSSUdHRVJfTkFNRSA9ICdEcm9wZG93bk1lbnVTdWJUcmlnZ2VyJztcblxudHlwZSBEcm9wZG93bk1lbnVTdWJUcmlnZ2VyRWxlbWVudCA9IFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIE1lbnVQcmltaXRpdmUuU3ViVHJpZ2dlcj47XG50eXBlIE1lbnVTdWJUcmlnZ2VyUHJvcHMgPSBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIE1lbnVQcmltaXRpdmUuU3ViVHJpZ2dlcj47XG5pbnRlcmZhY2UgRHJvcGRvd25NZW51U3ViVHJpZ2dlclByb3BzIGV4dGVuZHMgTWVudVN1YlRyaWdnZXJQcm9wcyB7fVxuXG5jb25zdCBEcm9wZG93bk1lbnVTdWJUcmlnZ2VyID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgRHJvcGRvd25NZW51U3ViVHJpZ2dlckVsZW1lbnQsXG4gIERyb3Bkb3duTWVudVN1YlRyaWdnZXJQcm9wc1xuPigocHJvcHM6IFNjb3BlZFByb3BzPERyb3Bkb3duTWVudVN1YlRyaWdnZXJQcm9wcz4sIGZvcndhcmRlZFJlZikgPT4ge1xuICBjb25zdCB7IF9fc2NvcGVEcm9wZG93bk1lbnUsIC4uLnN1YlRyaWdnZXJQcm9wcyB9ID0gcHJvcHM7XG4gIGNvbnN0IG1lbnVTY29wZSA9IHVzZU1lbnVTY29wZShfX3Njb3BlRHJvcGRvd25NZW51KTtcbiAgcmV0dXJuIDxNZW51UHJpbWl0aXZlLlN1YlRyaWdnZXIgey4uLm1lbnVTY29wZX0gey4uLnN1YlRyaWdnZXJQcm9wc30gcmVmPXtmb3J3YXJkZWRSZWZ9IC8+O1xufSk7XG5cbkRyb3Bkb3duTWVudVN1YlRyaWdnZXIuZGlzcGxheU5hbWUgPSBTVUJfVFJJR0dFUl9OQU1FO1xuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBEcm9wZG93bk1lbnVTdWJDb250ZW50XG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbmNvbnN0IFNVQl9DT05URU5UX05BTUUgPSAnRHJvcGRvd25NZW51U3ViQ29udGVudCc7XG5cbnR5cGUgRHJvcGRvd25NZW51U3ViQ29udGVudEVsZW1lbnQgPSBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBNZW51UHJpbWl0aXZlLkNvbnRlbnQ+O1xudHlwZSBNZW51U3ViQ29udGVudFByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBNZW51UHJpbWl0aXZlLlN1YkNvbnRlbnQ+O1xuaW50ZXJmYWNlIERyb3Bkb3duTWVudVN1YkNvbnRlbnRQcm9wcyBleHRlbmRzIE1lbnVTdWJDb250ZW50UHJvcHMge31cblxuY29uc3QgRHJvcGRvd25NZW51U3ViQ29udGVudCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIERyb3Bkb3duTWVudVN1YkNvbnRlbnRFbGVtZW50LFxuICBEcm9wZG93bk1lbnVTdWJDb250ZW50UHJvcHNcbj4oKHByb3BzOiBTY29wZWRQcm9wczxEcm9wZG93bk1lbnVTdWJDb250ZW50UHJvcHM+LCBmb3J3YXJkZWRSZWYpID0+IHtcbiAgY29uc3QgeyBfX3Njb3BlRHJvcGRvd25NZW51LCAuLi5zdWJDb250ZW50UHJvcHMgfSA9IHByb3BzO1xuICBjb25zdCBtZW51U2NvcGUgPSB1c2VNZW51U2NvcGUoX19zY29wZURyb3Bkb3duTWVudSk7XG5cbiAgcmV0dXJuIChcbiAgICA8TWVudVByaW1pdGl2ZS5TdWJDb250ZW50XG4gICAgICB7Li4ubWVudVNjb3BlfVxuICAgICAgey4uLnN1YkNvbnRlbnRQcm9wc31cbiAgICAgIHJlZj17Zm9yd2FyZGVkUmVmfVxuICAgICAgc3R5bGU9e3tcbiAgICAgICAgLi4ucHJvcHMuc3R5bGUsXG4gICAgICAgIC8vIHJlLW5hbWVzcGFjZSBleHBvc2VkIGNvbnRlbnQgY3VzdG9tIHByb3BlcnRpZXNcbiAgICAgICAgLi4ue1xuICAgICAgICAgICctLXJhZGl4LWRyb3Bkb3duLW1lbnUtY29udGVudC10cmFuc2Zvcm0tb3JpZ2luJzogJ3ZhcigtLXJhZGl4LXBvcHBlci10cmFuc2Zvcm0tb3JpZ2luKScsXG4gICAgICAgICAgJy0tcmFkaXgtZHJvcGRvd24tbWVudS1jb250ZW50LWF2YWlsYWJsZS13aWR0aCc6ICd2YXIoLS1yYWRpeC1wb3BwZXItYXZhaWxhYmxlLXdpZHRoKScsXG4gICAgICAgICAgJy0tcmFkaXgtZHJvcGRvd24tbWVudS1jb250ZW50LWF2YWlsYWJsZS1oZWlnaHQnOiAndmFyKC0tcmFkaXgtcG9wcGVyLWF2YWlsYWJsZS1oZWlnaHQpJyxcbiAgICAgICAgICAnLS1yYWRpeC1kcm9wZG93bi1tZW51LXRyaWdnZXItd2lkdGgnOiAndmFyKC0tcmFkaXgtcG9wcGVyLWFuY2hvci13aWR0aCknLFxuICAgICAgICAgICctLXJhZGl4LWRyb3Bkb3duLW1lbnUtdHJpZ2dlci1oZWlnaHQnOiAndmFyKC0tcmFkaXgtcG9wcGVyLWFuY2hvci1oZWlnaHQpJyxcbiAgICAgICAgfSxcbiAgICAgIH19XG4gICAgLz5cbiAgKTtcbn0pO1xuXG5Ecm9wZG93bk1lbnVTdWJDb250ZW50LmRpc3BsYXlOYW1lID0gU1VCX0NPTlRFTlRfTkFNRTtcblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG5jb25zdCBSb290ID0gRHJvcGRvd25NZW51O1xuY29uc3QgVHJpZ2dlciA9IERyb3Bkb3duTWVudVRyaWdnZXI7XG5jb25zdCBQb3J0YWwgPSBEcm9wZG93bk1lbnVQb3J0YWw7XG5jb25zdCBDb250ZW50ID0gRHJvcGRvd25NZW51Q29udGVudDtcbmNvbnN0IEdyb3VwID0gRHJvcGRvd25NZW51R3JvdXA7XG5jb25zdCBMYWJlbCA9IERyb3Bkb3duTWVudUxhYmVsO1xuY29uc3QgSXRlbSA9IERyb3Bkb3duTWVudUl0ZW07XG5jb25zdCBDaGVja2JveEl0ZW0gPSBEcm9wZG93bk1lbnVDaGVja2JveEl0ZW07XG5jb25zdCBSYWRpb0dyb3VwID0gRHJvcGRvd25NZW51UmFkaW9Hcm91cDtcbmNvbnN0IFJhZGlvSXRlbSA9IERyb3Bkb3duTWVudVJhZGlvSXRlbTtcbmNvbnN0IEl0ZW1JbmRpY2F0b3IgPSBEcm9wZG93bk1lbnVJdGVtSW5kaWNhdG9yO1xuY29uc3QgU2VwYXJhdG9yID0gRHJvcGRvd25NZW51U2VwYXJhdG9yO1xuY29uc3QgQXJyb3cgPSBEcm9wZG93bk1lbnVBcnJvdztcbmNvbnN0IFN1YiA9IERyb3Bkb3duTWVudVN1YjtcbmNvbnN0IFN1YlRyaWdnZXIgPSBEcm9wZG93bk1lbnVTdWJUcmlnZ2VyO1xuY29uc3QgU3ViQ29udGVudCA9IERyb3Bkb3duTWVudVN1YkNvbnRlbnQ7XG5cbmV4cG9ydCB7XG4gIGNyZWF0ZURyb3Bkb3duTWVudVNjb3BlLFxuICAvL1xuICBEcm9wZG93bk1lbnUsXG4gIERyb3Bkb3duTWVudVRyaWdnZXIsXG4gIERyb3Bkb3duTWVudVBvcnRhbCxcbiAgRHJvcGRvd25NZW51Q29udGVudCxcbiAgRHJvcGRvd25NZW51R3JvdXAsXG4gIERyb3Bkb3duTWVudUxhYmVsLFxuICBEcm9wZG93bk1lbnVJdGVtLFxuICBEcm9wZG93bk1lbnVDaGVja2JveEl0ZW0sXG4gIERyb3Bkb3duTWVudVJhZGlvR3JvdXAsXG4gIERyb3Bkb3duTWVudVJhZGlvSXRlbSxcbiAgRHJvcGRvd25NZW51SXRlbUluZGljYXRvcixcbiAgRHJvcGRvd25NZW51U2VwYXJhdG9yLFxuICBEcm9wZG93bk1lbnVBcnJvdyxcbiAgRHJvcGRvd25NZW51U3ViLFxuICBEcm9wZG93bk1lbnVTdWJUcmlnZ2VyLFxuICBEcm9wZG93bk1lbnVTdWJDb250ZW50LFxuICAvL1xuICBSb290LFxuICBUcmlnZ2VyLFxuICBQb3J0YWwsXG4gIENvbnRlbnQsXG4gIEdyb3VwLFxuICBMYWJlbCxcbiAgSXRlbSxcbiAgQ2hlY2tib3hJdGVtLFxuICBSYWRpb0dyb3VwLFxuICBSYWRpb0l0ZW0sXG4gIEl0ZW1JbmRpY2F0b3IsXG4gIFNlcGFyYXRvcixcbiAgQXJyb3csXG4gIFN1YixcbiAgU3ViVHJpZ2dlcixcbiAgU3ViQ29udGVudCxcbn07XG5leHBvcnQgdHlwZSB7XG4gIERyb3Bkb3duTWVudVByb3BzLFxuICBEcm9wZG93bk1lbnVUcmlnZ2VyUHJvcHMsXG4gIERyb3Bkb3duTWVudVBvcnRhbFByb3BzLFxuICBEcm9wZG93bk1lbnVDb250ZW50UHJvcHMsXG4gIERyb3Bkb3duTWVudUdyb3VwUHJvcHMsXG4gIERyb3Bkb3duTWVudUxhYmVsUHJvcHMsXG4gIERyb3Bkb3duTWVudUl0ZW1Qcm9wcyxcbiAgRHJvcGRvd25NZW51Q2hlY2tib3hJdGVtUHJvcHMsXG4gIERyb3Bkb3duTWVudVJhZGlvR3JvdXBQcm9wcyxcbiAgRHJvcGRvd25NZW51UmFkaW9JdGVtUHJvcHMsXG4gIERyb3Bkb3duTWVudUl0ZW1JbmRpY2F0b3JQcm9wcyxcbiAgRHJvcGRvd25NZW51U2VwYXJhdG9yUHJvcHMsXG4gIERyb3Bkb3duTWVudUFycm93UHJvcHMsXG4gIERyb3Bkb3duTWVudVN1YlByb3BzLFxuICBEcm9wZG93bk1lbnVTdWJUcmlnZ2VyUHJvcHMsXG4gIERyb3Bkb3duTWVudVN1YkNvbnRlbnRQcm9wcyxcbn07XG4iXSwibmFtZXMiOlsiUmVhY3QiLCJjb21wb3NlRXZlbnRIYW5kbGVycyIsImNvbXBvc2VSZWZzIiwiY3JlYXRlQ29udGV4dFNjb3BlIiwidXNlQ29udHJvbGxhYmxlU3RhdGUiLCJQcmltaXRpdmUiLCJNZW51UHJpbWl0aXZlIiwiY3JlYXRlTWVudVNjb3BlIiwidXNlSWQiLCJqc3giLCJEUk9QRE9XTl9NRU5VX05BTUUiLCJjcmVhdGVEcm9wZG93bk1lbnVDb250ZXh0IiwiY3JlYXRlRHJvcGRvd25NZW51U2NvcGUiLCJ1c2VNZW51U2NvcGUiLCJEcm9wZG93bk1lbnVQcm92aWRlciIsInVzZURyb3Bkb3duTWVudUNvbnRleHQiLCJEcm9wZG93bk1lbnUiLCJwcm9wcyIsIl9fc2NvcGVEcm9wZG93bk1lbnUiLCJjaGlsZHJlbiIsImRpciIsIm9wZW4iLCJvcGVuUHJvcCIsImRlZmF1bHRPcGVuIiwib25PcGVuQ2hhbmdlIiwibW9kYWwiLCJtZW51U2NvcGUiLCJ0cmlnZ2VyUmVmIiwidXNlUmVmIiwic2V0T3BlbiIsInByb3AiLCJkZWZhdWx0UHJvcCIsIm9uQ2hhbmdlIiwic2NvcGUiLCJ0cmlnZ2VySWQiLCJjb250ZW50SWQiLCJvbk9wZW5Ub2dnbGUiLCJ1c2VDYWxsYmFjayIsInByZXZPcGVuIiwiUm9vdCIsImRpc3BsYXlOYW1lIiwiVFJJR0dFUl9OQU1FIiwiRHJvcGRvd25NZW51VHJpZ2dlciIsImZvcndhcmRSZWYiLCJmb3J3YXJkZWRSZWYiLCJkaXNhYmxlZCIsInRyaWdnZXJQcm9wcyIsImNvbnRleHQiLCJBbmNob3IiLCJhc0NoaWxkIiwiYnV0dG9uIiwidHlwZSIsImlkIiwicmVmIiwib25Qb2ludGVyRG93biIsImV2ZW50IiwiY3RybEtleSIsInByZXZlbnREZWZhdWx0Iiwib25LZXlEb3duIiwiaW5jbHVkZXMiLCJrZXkiLCJQT1JUQUxfTkFNRSIsIkRyb3Bkb3duTWVudVBvcnRhbCIsInBvcnRhbFByb3BzIiwiUG9ydGFsIiwiQ09OVEVOVF9OQU1FIiwiRHJvcGRvd25NZW51Q29udGVudCIsImNvbnRlbnRQcm9wcyIsImhhc0ludGVyYWN0ZWRPdXRzaWRlUmVmIiwiQ29udGVudCIsIm9uQ2xvc2VBdXRvRm9jdXMiLCJjdXJyZW50IiwiZm9jdXMiLCJvbkludGVyYWN0T3V0c2lkZSIsIm9yaWdpbmFsRXZlbnQiLCJkZXRhaWwiLCJjdHJsTGVmdENsaWNrIiwiaXNSaWdodENsaWNrIiwic3R5bGUiLCJHUk9VUF9OQU1FIiwiRHJvcGRvd25NZW51R3JvdXAiLCJncm91cFByb3BzIiwiR3JvdXAiLCJMQUJFTF9OQU1FIiwiRHJvcGRvd25NZW51TGFiZWwiLCJsYWJlbFByb3BzIiwiTGFiZWwiLCJJVEVNX05BTUUiLCJEcm9wZG93bk1lbnVJdGVtIiwiaXRlbVByb3BzIiwiSXRlbSIsIkNIRUNLQk9YX0lURU1fTkFNRSIsIkRyb3Bkb3duTWVudUNoZWNrYm94SXRlbSIsImNoZWNrYm94SXRlbVByb3BzIiwiQ2hlY2tib3hJdGVtIiwiUkFESU9fR1JPVVBfTkFNRSIsIkRyb3Bkb3duTWVudVJhZGlvR3JvdXAiLCJyYWRpb0dyb3VwUHJvcHMiLCJSYWRpb0dyb3VwIiwiUkFESU9fSVRFTV9OQU1FIiwiRHJvcGRvd25NZW51UmFkaW9JdGVtIiwicmFkaW9JdGVtUHJvcHMiLCJSYWRpb0l0ZW0iLCJJTkRJQ0FUT1JfTkFNRSIsIkRyb3Bkb3duTWVudUl0ZW1JbmRpY2F0b3IiLCJpdGVtSW5kaWNhdG9yUHJvcHMiLCJJdGVtSW5kaWNhdG9yIiwiU0VQQVJBVE9SX05BTUUiLCJEcm9wZG93bk1lbnVTZXBhcmF0b3IiLCJzZXBhcmF0b3JQcm9wcyIsIlNlcGFyYXRvciIsIkFSUk9XX05BTUUiLCJEcm9wZG93bk1lbnVBcnJvdyIsImFycm93UHJvcHMiLCJBcnJvdyIsIkRyb3Bkb3duTWVudVN1YiIsIlN1YiIsIlNVQl9UUklHR0VSX05BTUUiLCJEcm9wZG93bk1lbnVTdWJUcmlnZ2VyIiwic3ViVHJpZ2dlclByb3BzIiwiU3ViVHJpZ2dlciIsIlNVQl9DT05URU5UX05BTUUiLCJEcm9wZG93bk1lbnVTdWJDb250ZW50Iiwic3ViQ29udGVudFByb3BzIiwiU3ViQ29udGVudCIsIlRyaWdnZXIiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/@radix-ui/react-dropdown-menu/dist/index.mjs\n"); /***/ }), /***/ "(ssr)/./node_modules/@radix-ui/react-focus-guards/dist/index.mjs": /*!******************************************************************!*\ !*** ./node_modules/@radix-ui/react-focus-guards/dist/index.mjs ***! \******************************************************************/ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ FocusGuards: () => (/* binding */ FocusGuards),\n/* harmony export */ Root: () => (/* binding */ Root),\n/* harmony export */ useFocusGuards: () => (/* binding */ useFocusGuards)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* __next_internal_client_entry_do_not_use__ FocusGuards,Root,useFocusGuards auto */ // packages/react/focus-guards/src/FocusGuards.tsx\n\nvar count = 0;\nfunction FocusGuards(props) {\n useFocusGuards();\n return props.children;\n}\nfunction useFocusGuards() {\n react__WEBPACK_IMPORTED_MODULE_0__.useEffect(()=>{\n const edgeGuards = document.querySelectorAll(\"[data-radix-focus-guard]\");\n document.body.insertAdjacentElement(\"afterbegin\", edgeGuards[0] ?? createFocusGuard());\n document.body.insertAdjacentElement(\"beforeend\", edgeGuards[1] ?? createFocusGuard());\n count++;\n return ()=>{\n if (count === 1) {\n document.querySelectorAll(\"[data-radix-focus-guard]\").forEach((node)=>node.remove());\n }\n count--;\n };\n }, []);\n}\nfunction createFocusGuard() {\n const element = document.createElement(\"span\");\n element.setAttribute(\"data-radix-focus-guard\", \"\");\n element.tabIndex = 0;\n element.style.outline = \"none\";\n element.style.opacity = \"0\";\n element.style.position = \"fixed\";\n element.style.pointerEvents = \"none\";\n return element;\n}\nvar Root = FocusGuards;\n //# sourceMappingURL=index.mjs.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LWZvY3VzLWd1YXJkcy9kaXN0L2luZGV4Lm1qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUF1QjtBQUd2QixJQUFJQyxRQUFRO0FBRVosU0FBU0MsWUFBWUMsS0FBQTtJQUNuQkM7SUFDQSxPQUFPRCxNQUFNRSxRQUFBO0FBQ2Y7QUFNQSxTQUFTRDtJQUNESiw0Q0FBQSxDQUFVO1FBQ2QsTUFBTU8sYUFBYUMsU0FBU0MsZ0JBQUEsQ0FBaUI7UUFDN0NELFNBQVNFLElBQUEsQ0FBS0MscUJBQUEsQ0FBc0IsY0FBY0osVUFBQSxDQUFXLEVBQUMsSUFBS0s7UUFDbkVKLFNBQVNFLElBQUEsQ0FBS0MscUJBQUEsQ0FBc0IsYUFBYUosVUFBQSxDQUFXLEVBQUMsSUFBS0s7UUFDbEVYO1FBRUEsT0FBTztZQUNMLElBQUlBLFVBQVUsR0FBRztnQkFDZk8sU0FBU0MsZ0JBQUEsQ0FBaUIsNEJBQTRCSSxPQUFBLENBQVEsQ0FBQ0MsT0FBU0EsS0FBS0MsTUFBQTtZQUMvRTtZQUNBZDtRQUNGO0lBQ0YsR0FBRyxFQUFFO0FBQ1A7QUFFQSxTQUFTVztJQUNQLE1BQU1JLFVBQVVSLFNBQVNTLGFBQUEsQ0FBYztJQUN2Q0QsUUFBUUUsWUFBQSxDQUFhLDBCQUEwQjtJQUMvQ0YsUUFBUUcsUUFBQSxHQUFXO0lBQ25CSCxRQUFRSSxLQUFBLENBQU1DLE9BQUEsR0FBVTtJQUN4QkwsUUFBUUksS0FBQSxDQUFNRSxPQUFBLEdBQVU7SUFDeEJOLFFBQVFJLEtBQUEsQ0FBTUcsUUFBQSxHQUFXO0lBQ3pCUCxRQUFRSSxLQUFBLENBQU1JLGFBQUEsR0FBZ0I7SUFDOUIsT0FBT1I7QUFDVDtBQUVBLElBQU1TLE9BQU92QiIsInNvdXJjZXMiOlsid2VicGFjazovL215LXYwLXByb2plY3QvLi4vc3JjL0ZvY3VzR3VhcmRzLnRzeD9kNThhIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcblxuLyoqIE51bWJlciBvZiBjb21wb25lbnRzIHdoaWNoIGhhdmUgcmVxdWVzdGVkIGludGVyZXN0IHRvIGhhdmUgZm9jdXMgZ3VhcmRzICovXG5sZXQgY291bnQgPSAwO1xuXG5mdW5jdGlvbiBGb2N1c0d1YXJkcyhwcm9wczogYW55KSB7XG4gIHVzZUZvY3VzR3VhcmRzKCk7XG4gIHJldHVybiBwcm9wcy5jaGlsZHJlbjtcbn1cblxuLyoqXG4gKiBJbmplY3RzIGEgcGFpciBvZiBmb2N1cyBndWFyZHMgYXQgdGhlIGVkZ2VzIG9mIHRoZSB3aG9sZSBET00gdHJlZVxuICogdG8gZW5zdXJlIGBmb2N1c2luYCAmIGBmb2N1c291dGAgZXZlbnRzIGNhbiBiZSBjYXVnaHQgY29uc2lzdGVudGx5LlxuICovXG5mdW5jdGlvbiB1c2VGb2N1c0d1YXJkcygpIHtcbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBlZGdlR3VhcmRzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtcmFkaXgtZm9jdXMtZ3VhcmRdJyk7XG4gICAgZG9jdW1lbnQuYm9keS5pbnNlcnRBZGphY2VudEVsZW1lbnQoJ2FmdGVyYmVnaW4nLCBlZGdlR3VhcmRzWzBdID8/IGNyZWF0ZUZvY3VzR3VhcmQoKSk7XG4gICAgZG9jdW1lbnQuYm9keS5pbnNlcnRBZGphY2VudEVsZW1lbnQoJ2JlZm9yZWVuZCcsIGVkZ2VHdWFyZHNbMV0gPz8gY3JlYXRlRm9jdXNHdWFyZCgpKTtcbiAgICBjb3VudCsrO1xuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmIChjb3VudCA9PT0gMSkge1xuICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbZGF0YS1yYWRpeC1mb2N1cy1ndWFyZF0nKS5mb3JFYWNoKChub2RlKSA9PiBub2RlLnJlbW92ZSgpKTtcbiAgICAgIH1cbiAgICAgIGNvdW50LS07XG4gICAgfTtcbiAgfSwgW10pO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVGb2N1c0d1YXJkKCkge1xuICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICBlbGVtZW50LnNldEF0dHJpYnV0ZSgnZGF0YS1yYWRpeC1mb2N1cy1ndWFyZCcsICcnKTtcbiAgZWxlbWVudC50YWJJbmRleCA9IDA7XG4gIGVsZW1lbnQuc3R5bGUub3V0bGluZSA9ICdub25lJztcbiAgZWxlbWVudC5zdHlsZS5vcGFjaXR5ID0gJzAnO1xuICBlbGVtZW50LnN0eWxlLnBvc2l0aW9uID0gJ2ZpeGVkJztcbiAgZWxlbWVudC5zdHlsZS5wb2ludGVyRXZlbnRzID0gJ25vbmUnO1xuICByZXR1cm4gZWxlbWVudDtcbn1cblxuY29uc3QgUm9vdCA9IEZvY3VzR3VhcmRzO1xuXG5leHBvcnQge1xuICBGb2N1c0d1YXJkcyxcbiAgLy9cbiAgUm9vdCxcbiAgLy9cbiAgdXNlRm9jdXNHdWFyZHMsXG59O1xuIl0sIm5hbWVzIjpbIlJlYWN0IiwiY291bnQiLCJGb2N1c0d1YXJkcyIsInByb3BzIiwidXNlRm9jdXNHdWFyZHMiLCJjaGlsZHJlbiIsInVzZUVmZmVjdCIsImVkZ2VHdWFyZHMiLCJkb2N1bWVudCIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJib2R5IiwiaW5zZXJ0QWRqYWNlbnRFbGVtZW50IiwiY3JlYXRlRm9jdXNHdWFyZCIsImZvckVhY2giLCJub2RlIiwicmVtb3ZlIiwiZWxlbWVudCIsImNyZWF0ZUVsZW1lbnQiLCJzZXRBdHRyaWJ1dGUiLCJ0YWJJbmRleCIsInN0eWxlIiwib3V0bGluZSIsIm9wYWNpdHkiLCJwb3NpdGlvbiIsInBvaW50ZXJFdmVudHMiLCJSb290Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/@radix-ui/react-focus-guards/dist/index.mjs\n"); /***/ }), /***/ "(ssr)/./node_modules/@radix-ui/react-focus-scope/dist/index.mjs": /*!*****************************************************************!*\ !*** ./node_modules/@radix-ui/react-focus-scope/dist/index.mjs ***! \*****************************************************************/ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ FocusScope: () => (/* binding */ FocusScope),\n/* harmony export */ Root: () => (/* binding */ Root)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var _radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @radix-ui/react-compose-refs */ \"(ssr)/./node_modules/@radix-ui/react-compose-refs/dist/index.mjs\");\n/* harmony import */ var _radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @radix-ui/react-primitive */ \"(ssr)/./node_modules/@radix-ui/react-primitive/dist/index.mjs\");\n/* harmony import */ var _radix_ui_react_use_callback_ref__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @radix-ui/react-use-callback-ref */ \"(ssr)/./node_modules/@radix-ui/react-use-callback-ref/dist/index.mjs\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react-jsx-runtime.js\");\n/* __next_internal_client_entry_do_not_use__ FocusScope,Root auto */ // packages/react/focus-scope/src/FocusScope.tsx\n\n\n\n\n\nvar AUTOFOCUS_ON_MOUNT = \"focusScope.autoFocusOnMount\";\nvar AUTOFOCUS_ON_UNMOUNT = \"focusScope.autoFocusOnUnmount\";\nvar EVENT_OPTIONS = {\n bubbles: false,\n cancelable: true\n};\nvar FOCUS_SCOPE_NAME = \"FocusScope\";\nvar FocusScope = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef((props, forwardedRef)=>{\n const { loop = false, trapped = false, onMountAutoFocus: onMountAutoFocusProp, onUnmountAutoFocus: onUnmountAutoFocusProp, ...scopeProps } = props;\n const [container, setContainer] = react__WEBPACK_IMPORTED_MODULE_0__.useState(null);\n const onMountAutoFocus = (0,_radix_ui_react_use_callback_ref__WEBPACK_IMPORTED_MODULE_2__.useCallbackRef)(onMountAutoFocusProp);\n const onUnmountAutoFocus = (0,_radix_ui_react_use_callback_ref__WEBPACK_IMPORTED_MODULE_2__.useCallbackRef)(onUnmountAutoFocusProp);\n const lastFocusedElementRef = react__WEBPACK_IMPORTED_MODULE_0__.useRef(null);\n const composedRefs = (0,_radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_3__.useComposedRefs)(forwardedRef, (node)=>setContainer(node));\n const focusScope = react__WEBPACK_IMPORTED_MODULE_0__.useRef({\n paused: false,\n pause () {\n this.paused = true;\n },\n resume () {\n this.paused = false;\n }\n }).current;\n react__WEBPACK_IMPORTED_MODULE_0__.useEffect(()=>{\n if (trapped) {\n let handleFocusIn2 = function(event) {\n if (focusScope.paused || !container) return;\n const target = event.target;\n if (container.contains(target)) {\n lastFocusedElementRef.current = target;\n } else {\n focus(lastFocusedElementRef.current, {\n select: true\n });\n }\n }, handleFocusOut2 = function(event) {\n if (focusScope.paused || !container) return;\n const relatedTarget = event.relatedTarget;\n if (relatedTarget === null) return;\n if (!container.contains(relatedTarget)) {\n focus(lastFocusedElementRef.current, {\n select: true\n });\n }\n }, handleMutations2 = function(mutations) {\n const focusedElement = document.activeElement;\n if (focusedElement !== document.body) return;\n for (const mutation of mutations){\n if (mutation.removedNodes.length > 0) focus(container);\n }\n };\n var handleFocusIn = handleFocusIn2, handleFocusOut = handleFocusOut2, handleMutations = handleMutations2;\n document.addEventListener(\"focusin\", handleFocusIn2);\n document.addEventListener(\"focusout\", handleFocusOut2);\n const mutationObserver = new MutationObserver(handleMutations2);\n if (container) mutationObserver.observe(container, {\n childList: true,\n subtree: true\n });\n return ()=>{\n document.removeEventListener(\"focusin\", handleFocusIn2);\n document.removeEventListener(\"focusout\", handleFocusOut2);\n mutationObserver.disconnect();\n };\n }\n }, [\n trapped,\n container,\n focusScope.paused\n ]);\n react__WEBPACK_IMPORTED_MODULE_0__.useEffect(()=>{\n if (container) {\n focusScopesStack.add(focusScope);\n const previouslyFocusedElement = document.activeElement;\n const hasFocusedCandidate = container.contains(previouslyFocusedElement);\n if (!hasFocusedCandidate) {\n const mountEvent = new CustomEvent(AUTOFOCUS_ON_MOUNT, EVENT_OPTIONS);\n container.addEventListener(AUTOFOCUS_ON_MOUNT, onMountAutoFocus);\n container.dispatchEvent(mountEvent);\n if (!mountEvent.defaultPrevented) {\n focusFirst(removeLinks(getTabbableCandidates(container)), {\n select: true\n });\n if (document.activeElement === previouslyFocusedElement) {\n focus(container);\n }\n }\n }\n return ()=>{\n container.removeEventListener(AUTOFOCUS_ON_MOUNT, onMountAutoFocus);\n setTimeout(()=>{\n const unmountEvent = new CustomEvent(AUTOFOCUS_ON_UNMOUNT, EVENT_OPTIONS);\n container.addEventListener(AUTOFOCUS_ON_UNMOUNT, onUnmountAutoFocus);\n container.dispatchEvent(unmountEvent);\n if (!unmountEvent.defaultPrevented) {\n focus(previouslyFocusedElement ?? document.body, {\n select: true\n });\n }\n container.removeEventListener(AUTOFOCUS_ON_UNMOUNT, onUnmountAutoFocus);\n focusScopesStack.remove(focusScope);\n }, 0);\n };\n }\n }, [\n container,\n onMountAutoFocus,\n onUnmountAutoFocus,\n focusScope\n ]);\n const handleKeyDown = react__WEBPACK_IMPORTED_MODULE_0__.useCallback((event)=>{\n if (!loop && !trapped) return;\n if (focusScope.paused) return;\n const isTabKey = event.key === \"Tab\" && !event.altKey && !event.ctrlKey && !event.metaKey;\n const focusedElement = document.activeElement;\n if (isTabKey && focusedElement) {\n const container2 = event.currentTarget;\n const [first, last] = getTabbableEdges(container2);\n const hasTabbableElementsInside = first && last;\n if (!hasTabbableElementsInside) {\n if (focusedElement === container2) event.preventDefault();\n } else {\n if (!event.shiftKey && focusedElement === last) {\n event.preventDefault();\n if (loop) focus(first, {\n select: true\n });\n } else if (event.shiftKey && focusedElement === first) {\n event.preventDefault();\n if (loop) focus(last, {\n select: true\n });\n }\n }\n }\n }, [\n loop,\n trapped,\n focusScope.paused\n ]);\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_4__.Primitive.div, {\n tabIndex: -1,\n ...scopeProps,\n ref: composedRefs,\n onKeyDown: handleKeyDown\n });\n});\nFocusScope.displayName = FOCUS_SCOPE_NAME;\nfunction focusFirst(candidates, { select = false } = {}) {\n const previouslyFocusedElement = document.activeElement;\n for (const candidate of candidates){\n focus(candidate, {\n select\n });\n if (document.activeElement !== previouslyFocusedElement) return;\n }\n}\nfunction getTabbableEdges(container) {\n const candidates = getTabbableCandidates(container);\n const first = findVisible(candidates, container);\n const last = findVisible(candidates.reverse(), container);\n return [\n first,\n last\n ];\n}\nfunction getTabbableCandidates(container) {\n const nodes = [];\n const walker = document.createTreeWalker(container, NodeFilter.SHOW_ELEMENT, {\n acceptNode: (node)=>{\n const isHiddenInput = node.tagName === \"INPUT\" && node.type === \"hidden\";\n if (node.disabled || node.hidden || isHiddenInput) return NodeFilter.FILTER_SKIP;\n return node.tabIndex >= 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;\n }\n });\n while(walker.nextNode())nodes.push(walker.currentNode);\n return nodes;\n}\nfunction findVisible(elements, container) {\n for (const element of elements){\n if (!isHidden(element, {\n upTo: container\n })) return element;\n }\n}\nfunction isHidden(node, { upTo }) {\n if (getComputedStyle(node).visibility === \"hidden\") return true;\n while(node){\n if (upTo !== void 0 && node === upTo) return false;\n if (getComputedStyle(node).display === \"none\") return true;\n node = node.parentElement;\n }\n return false;\n}\nfunction isSelectableInput(element) {\n return element instanceof HTMLInputElement && \"select\" in element;\n}\nfunction focus(element, { select = false } = {}) {\n if (element && element.focus) {\n const previouslyFocusedElement = document.activeElement;\n element.focus({\n preventScroll: true\n });\n if (element !== previouslyFocusedElement && isSelectableInput(element) && select) element.select();\n }\n}\nvar focusScopesStack = createFocusScopesStack();\nfunction createFocusScopesStack() {\n let stack = [];\n return {\n add (focusScope) {\n const activeFocusScope = stack[0];\n if (focusScope !== activeFocusScope) {\n activeFocusScope?.pause();\n }\n stack = arrayRemove(stack, focusScope);\n stack.unshift(focusScope);\n },\n remove (focusScope) {\n stack = arrayRemove(stack, focusScope);\n stack[0]?.resume();\n }\n };\n}\nfunction arrayRemove(array, item) {\n const updatedArray = [\n ...array\n ];\n const index = updatedArray.indexOf(item);\n if (index !== -1) {\n updatedArray.splice(index, 1);\n }\n return updatedArray;\n}\nfunction removeLinks(items) {\n return items.filter((item)=>item.tagName !== \"A\");\n}\nvar Root = FocusScope;\n //# sourceMappingURL=index.mjs.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LWZvY3VzLXNjb3BlL2Rpc3QvaW5kZXgubWpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQXVCO0FBQ1M7QUFDTjtBQUNLO0FBd00zQjtBQXRNSixJQUFNSyxxQkFBcUI7QUFDM0IsSUFBTUMsdUJBQXVCO0FBQzdCLElBQU1DLGdCQUFnQjtJQUFFQyxTQUFTO0lBQU9DLFlBQVk7QUFBSztBQVF6RCxJQUFNQyxtQkFBbUI7QUFnQ3pCLElBQU1DLDJCQUFtQlgsNkNBQUEsQ0FBK0MsQ0FBQ2EsT0FBT0M7SUFDOUUsTUFBTSxFQUNKQyxPQUFPLE9BQ1BDLFVBQVUsT0FDVkMsa0JBQWtCQyxvQkFBQSxFQUNsQkMsb0JBQW9CQyxzQkFBQSxFQUNwQixHQUFHQyxZQUNMLEdBQUlSO0lBQ0osTUFBTSxDQUFDUyxXQUFXQyxhQUFZLEdBQVV2QiwyQ0FBQSxDQUE2QjtJQUNyRSxNQUFNaUIsbUJBQW1CZCxnRkFBY0EsQ0FBQ2U7SUFDeEMsTUFBTUMscUJBQXFCaEIsZ0ZBQWNBLENBQUNpQjtJQUMxQyxNQUFNSyx3QkFBOEJ6Qix5Q0FBQSxDQUEyQjtJQUMvRCxNQUFNMkIsZUFBZTFCLDZFQUFlQSxDQUFDYSxjQUFjLENBQUNjLE9BQVNMLGFBQWFLO0lBRTFFLE1BQU1DLGFBQW1CN0IseUNBQUEsQ0FBTztRQUM5QjhCLFFBQVE7UUFDUkM7WUFDRSxLQUFLRCxNQUFBLEdBQVM7UUFDaEI7UUFDQUU7WUFDRSxLQUFLRixNQUFBLEdBQVM7UUFDaEI7SUFDRixHQUFHRyxPQUFBO0lBR0dqQyw0Q0FBQSxDQUFVO1FBQ2QsSUFBSWdCLFNBQVM7WUFDWCxJQUFTbUIsaUJBQVQsU0FBdUJDLEtBQUE7Z0JBQ3JCLElBQUlQLFdBQVdDLE1BQUEsSUFBVSxDQUFDUixXQUFXO2dCQUNyQyxNQUFNZSxTQUFTRCxNQUFNQyxNQUFBO2dCQUNyQixJQUFJZixVQUFVZ0IsUUFBQSxDQUFTRCxTQUFTO29CQUM5Qlosc0JBQXNCUSxP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QUM3QjtJQUNBLE9BQU9EO0FBQ1Q7QUFFQSxTQUFTOUQsWUFBWWtFLEtBQUE7SUFDbkIsT0FBT0EsTUFBTUMsTUFBQSxDQUFPLENBQUNOLE9BQVNBLEtBQUsxQixPQUFBLEtBQVk7QUFDakQ7QUFFQSxJQUFNaUMsT0FBTzlIIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vbXktdjAtcHJvamVjdC8uLi9zcmMvRm9jdXNTY29wZS50c3g/YjMwNSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VDb21wb3NlZFJlZnMgfSBmcm9tICdAcmFkaXgtdWkvcmVhY3QtY29tcG9zZS1yZWZzJztcbmltcG9ydCB7IFByaW1pdGl2ZSB9IGZyb20gJ0ByYWRpeC11aS9yZWFjdC1wcmltaXRpdmUnO1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2tSZWYgfSBmcm9tICdAcmFkaXgtdWkvcmVhY3QtdXNlLWNhbGxiYWNrLXJlZic7XG5cbmNvbnN0IEFVVE9GT0NVU19PTl9NT1VOVCA9ICdmb2N1c1Njb3BlLmF1dG9Gb2N1c09uTW91bnQnO1xuY29uc3QgQVVUT0ZPQ1VTX09OX1VOTU9VTlQgPSAnZm9jdXNTY29wZS5hdXRvRm9jdXNPblVubW91bnQnO1xuY29uc3QgRVZFTlRfT1BUSU9OUyA9IHsgYnViYmxlczogZmFsc2UsIGNhbmNlbGFibGU6IHRydWUgfTtcblxudHlwZSBGb2N1c2FibGVUYXJnZXQgPSBIVE1MRWxlbWVudCB8IHsgZm9jdXMoKTogdm9pZCB9O1xuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBGb2N1c1Njb3BlXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbmNvbnN0IEZPQ1VTX1NDT1BFX05BTUUgPSAnRm9jdXNTY29wZSc7XG5cbnR5cGUgRm9jdXNTY29wZUVsZW1lbnQgPSBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBQcmltaXRpdmUuZGl2PjtcbnR5cGUgUHJpbWl0aXZlRGl2UHJvcHMgPSBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIFByaW1pdGl2ZS5kaXY+O1xuaW50ZXJmYWNlIEZvY3VzU2NvcGVQcm9wcyBleHRlbmRzIFByaW1pdGl2ZURpdlByb3BzIHtcbiAgLyoqXG4gICAqIFdoZW4gYHRydWVgLCB0YWJiaW5nIGZyb20gbGFzdCBpdGVtIHdpbGwgZm9jdXMgZmlyc3QgdGFiYmFibGVcbiAgICogYW5kIHNoaWZ0K3RhYiBmcm9tIGZpcnN0IGl0ZW0gd2lsbCBmb2N1cyBsYXN0IHRhYmFiYmxlLlxuICAgKiBAZGVmYXVsdFZhbHVlIGZhbHNlXG4gICAqL1xuICBsb29wPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hlbiBgdHJ1ZWAsIGZvY3VzIGNhbm5vdCBlc2NhcGUgdGhlIGZvY3VzIHNjb3BlIHZpYSBrZXlib2FyZCxcbiAgICogcG9pbnRlciwgb3IgYSBwcm9ncmFtbWF0aWMgZm9jdXMuXG4gICAqIEBkZWZhdWx0VmFsdWUgZmFsc2VcbiAgICovXG4gIHRyYXBwZWQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBFdmVudCBoYW5kbGVyIGNhbGxlZCB3aGVuIGF1dG8tZm9jdXNpbmcgb24gbW91bnQuXG4gICAqIENhbiBiZSBwcmV2ZW50ZWQuXG4gICAqL1xuICBvbk1vdW50QXV0b0ZvY3VzPzogKGV2ZW50OiBFdmVudCkgPT4gdm9pZDtcblxuICAvKipcbiAgICogRXZlbnQgaGFuZGxlciBjYWxsZWQgd2hlbiBhdXRvLWZvY3VzaW5nIG9uIHVubW91bnQuXG4gICAqIENhbiBiZSBwcmV2ZW50ZWQuXG4gICAqL1xuICBvblVubW91bnRBdXRvRm9jdXM/OiAoZXZlbnQ6IEV2ZW50KSA9PiB2b2lkO1xufVxuXG5jb25zdCBGb2N1c1Njb3BlID0gUmVhY3QuZm9yd2FyZFJlZjxGb2N1c1Njb3BlRWxlbWVudCwgRm9jdXNTY29wZVByb3BzPigocHJvcHMsIGZvcndhcmRlZFJlZikgPT4ge1xuICBjb25zdCB7XG4gICAgbG9vcCA9IGZhbHNlLFxuICAgIHRyYXBwZWQgPSBmYWxzZSxcbiAgICBvbk1vdW50QXV0b0ZvY3VzOiBvbk1vdW50QXV0b0ZvY3VzUHJvcCxcbiAgICBvblVubW91bnRBdXRvRm9jdXM6IG9uVW5tb3VudEF1dG9Gb2N1c1Byb3AsXG4gICAgLi4uc2NvcGVQcm9wc1xuICB9ID0gcHJvcHM7XG4gIGNvbnN0IFtjb250YWluZXIsIHNldENvbnRhaW5lcl0gPSBSZWFjdC51c2VTdGF0ZTxIVE1MRWxlbWVudCB8IG51bGw+KG51bGwpO1xuICBjb25zdCBvbk1vdW50QXV0b0ZvY3VzID0gdXNlQ2FsbGJhY2tSZWYob25Nb3VudEF1dG9Gb2N1c1Byb3ApO1xuICBjb25zdCBvblVubW91bnRBdXRvRm9jdXMgPSB1c2VDYWxsYmFja1JlZihvblVubW91bnRBdXRvRm9jdXNQcm9wKTtcbiAgY29uc3QgbGFzdEZvY3VzZWRFbGVtZW50UmVmID0gUmVhY3QudXNlUmVmPEhUTUxFbGVtZW50IHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IGNvbXBvc2VkUmVmcyA9IHVzZUNvbXBvc2VkUmVmcyhmb3J3YXJkZWRSZWYsIChub2RlKSA9PiBzZXRDb250YWluZXIobm9kZSkpO1xuXG4gIGNvbnN0IGZvY3VzU2NvcGUgPSBSZWFjdC51c2VSZWYoe1xuICAgIHBhdXNlZDogZmFsc2UsXG4gICAgcGF1c2UoKSB7XG4gICAgICB0aGlzLnBhdXNlZCA9IHRydWU7XG4gICAgfSxcbiAgICByZXN1bWUoKSB7XG4gICAgICB0aGlzLnBhdXNlZCA9IGZhbHNlO1xuICAgIH0sXG4gIH0pLmN1cnJlbnQ7XG5cbiAgLy8gVGFrZXMgY2FyZSBvZiB0cmFwcGluZyBmb2N1cyBpZiBmb2N1cyBpcyBtb3ZlZCBvdXRzaWRlIHByb2dyYW1tYXRpY2FsbHkgZm9yIGV4YW1wbGVcbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAodHJhcHBlZCkge1xuICAgICAgZnVuY3Rpb24gaGFuZGxlRm9jdXNJbihldmVudDogRm9jdXNFdmVudCkge1xuICAgICAgICBpZiAoZm9jdXNTY29wZS5wYXVzZWQgfHwgIWNvbnRhaW5lcikgcmV0dXJuO1xuICAgICAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQgfCBudWxsO1xuICAgICAgICBpZiAoY29udGFpbmVyLmNvbnRhaW5zKHRhcmdldCkpIHtcbiAgICAgICAgICBsYXN0Rm9jdXNlZEVsZW1lbnRSZWYuY3VycmVudCA9IHRhcmdldDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBmb2N1cyhsYXN0Rm9jdXNlZEVsZW1lbnRSZWYuY3VycmVudCwgeyBzZWxlY3Q6IHRydWUgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gaGFuZGxlRm9jdXNPdXQoZXZlbnQ6IEZvY3VzRXZlbnQpIHtcbiAgICAgICAgaWYgKGZvY3VzU2NvcGUucGF1c2VkIHx8ICFjb250YWluZXIpIHJldHVybjtcbiAgICAgICAgY29uc3QgcmVsYXRlZFRhcmdldCA9IGV2ZW50LnJlbGF0ZWRUYXJnZXQgYXMgSFRNTEVsZW1lbnQgfCBudWxsO1xuXG4gICAgICAgIC8vIEEgYGZvY3Vzb3V0YCBldmVudCB3aXRoIGEgYG51bGxgIGByZWxhdGVkVGFyZ2V0YCB3aWxsIGhhcHBlbiBpbiBhdCBsZWFzdCB0d28gY2FzZXM6XG4gICAgICAgIC8vXG4gICAgICAgIC8vIDEuIFdoZW4gdGhlIHVzZXIgc3dpdGNoZXMgYXBwL3RhYnMvd2luZG93cy90aGUgYnJvd3NlciBpdHNlbGYgbG9zZXMgZm9jdXMuXG4gICAgICAgIC8vIDIuIEluIEdvb2dsZSBDaHJvbWUsIHdoZW4gdGhlIGZvY3VzZWQgZWxlbWVudCBpcyByZW1vdmVkIGZyb20gdGhlIERPTS5cbiAgICAgICAgLy9cbiAgICAgICAgLy8gV2UgbGV0IHRoZSBicm93c2VyIGRvIGl0cyB0aGluZyBoZXJlIGJlY2F1c2U6XG4gICAgICAgIC8vXG4gICAgICAgIC8vIDEuIFRoZSBicm93c2VyIGFscmVhZHkga2VlcHMgYSBtZW1vcnkgb2Ygd2hhdCdzIGZvY3VzZWQgZm9yIHdoZW4gdGhlIHBhZ2UgZ2V0cyByZWZvY3VzZWQuXG4gICAgICAgIC8vIDIuIEluIEdvb2dsZSBDaHJvbWUsIGlmIHdlIHRyeSB0byBmb2N1cyB0aGUgZGVsZXRlZCBmb2N1c2VkIGVsZW1lbnQgKGFzIHBlciBiZWxvdyksIGl0XG4gICAgICAgIC8vICAgIHRocm93cyB0aGUgQ1BVIHRvIDEwMCUsIHNvIHdlIGF2b2lkIGRvaW5nIGFueXRoaW5nIGZvciB0aGlzIHJlYXNvbiBoZXJlIHRvby5cbiAgICAgICAgaWYgKHJlbGF0ZWRUYXJnZXQgPT09IG51bGwpIHJldHVybjtcblxuICAgICAgICAvLyBJZiB0aGUgZm9jdXMgaGFzIG1vdmVkIHRvIGFuIGFjdHVhbCBsZWdpdGltYXRlIGVsZW1lbnQgKGByZWxhdGVkVGFyZ2V0ICE9PSBudWxsYClcbiAgICAgICAgLy8gdGhhdCBpcyBvdXRzaWRlIHRoZSBjb250YWluZXIsIHdlIG1vdmUgZm9jdXMgdG8gdGhlIGxhc3QgdmFsaWQgZm9jdXNlZCBlbGVtZW50IGluc2lkZS5cbiAgICAgICAgaWYgKCFjb250YWluZXIuY29udGFpbnMocmVsYXRlZFRhcmdldCkpIHtcbiAgICAgICAgICBmb2N1cyhsYXN0Rm9jdXNlZEVsZW1lbnRSZWYuY3VycmVudCwgeyBzZWxlY3Q6IHRydWUgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gV2hlbiB0aGUgZm9jdXNlZCBlbGVtZW50IGdldHMgcmVtb3ZlZCBmcm9tIHRoZSBET00sIGJyb3dzZXJzIG1vdmUgZm9jdXNcbiAgICAgIC8vIGJhY2sgdG8gdGhlIGRvY3VtZW50LmJvZHkuIEluIHRoaXMgY2FzZSwgd2UgbW92ZSBmb2N1cyB0byB0aGUgY29udGFpbmVyXG4gICAgICAvLyB0byBrZWVwIGZvY3VzIHRyYXBwZWQgY29ycmVjdGx5LlxuICAgICAgZnVuY3Rpb24gaGFuZGxlTXV0YXRpb25zKG11dGF0aW9uczogTXV0YXRpb25SZWNvcmRbXSkge1xuICAgICAgICBjb25zdCBmb2N1c2VkRWxlbWVudCA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQgfCBudWxsO1xuICAgICAgICBpZiAoZm9jdXNlZEVsZW1lbnQgIT09IGRvY3VtZW50LmJvZHkpIHJldHVybjtcbiAgICAgICAgZm9yIChjb25zdCBtdXRhdGlvbiBvZiBtdXRhdGlvbnMpIHtcbiAgICAgICAgICBpZiAobXV0YXRpb24ucmVtb3ZlZE5vZGVzLmxlbmd0aCA+IDApIGZvY3VzKGNvbnRhaW5lcik7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXNpbicsIGhhbmRsZUZvY3VzSW4pO1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXNvdXQnLCBoYW5kbGVGb2N1c091dCk7XG4gICAgICBjb25zdCBtdXRhdGlvbk9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoaGFuZGxlTXV0YXRpb25zKTtcbiAgICAgIGlmIChjb250YWluZXIpIG11dGF0aW9uT2JzZXJ2ZXIub2JzZXJ2ZShjb250YWluZXIsIHsgY2hpbGRMaXN0OiB0cnVlLCBzdWJ0cmVlOiB0cnVlIH0pO1xuXG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdmb2N1c2luJywgaGFuZGxlRm9jdXNJbik7XG4gICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2ZvY3Vzb3V0JywgaGFuZGxlRm9jdXNPdXQpO1xuICAgICAgICBtdXRhdGlvbk9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICAgIH07XG4gICAgfVxuICB9LCBbdHJhcHBlZCwgY29udGFpbmVyLCBmb2N1c1Njb3BlLnBhdXNlZF0pO1xuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGNvbnRhaW5lcikge1xuICAgICAgZm9jdXNTY29wZXNTdGFjay5hZGQoZm9jdXNTY29wZSk7XG4gICAgICBjb25zdCBwcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQgPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50IHwgbnVsbDtcbiAgICAgIGNvbnN0IGhhc0ZvY3VzZWRDYW5kaWRhdGUgPSBjb250YWluZXIuY29udGFpbnMocHJldmlvdXNseUZvY3VzZWRFbGVtZW50KTtcblxuICAgICAgaWYgKCFoYXNGb2N1c2VkQ2FuZGlkYXRlKSB7XG4gICAgICAgIGNvbnN0IG1vdW50RXZlbnQgPSBuZXcgQ3VzdG9tRXZlbnQoQVVUT0ZPQ1VTX09OX01PVU5ULCBFVkVOVF9PUFRJT05TKTtcbiAgICAgICAgY29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoQVVUT0ZPQ1VTX09OX01PVU5ULCBvbk1vdW50QXV0b0ZvY3VzKTtcbiAgICAgICAgY29udGFpbmVyLmRpc3BhdGNoRXZlbnQobW91bnRFdmVudCk7XG4gICAgICAgIGlmICghbW91bnRFdmVudC5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICAgICAgZm9jdXNGaXJzdChyZW1vdmVMaW5rcyhnZXRUYWJiYWJsZUNhbmRpZGF0ZXMoY29udGFpbmVyKSksIHsgc2VsZWN0OiB0cnVlIH0pO1xuICAgICAgICAgIGlmIChkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09PSBwcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQpIHtcbiAgICAgICAgICAgIGZvY3VzKGNvbnRhaW5lcik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIGNvbnRhaW5lci5yZW1vdmVFdmVudExpc3RlbmVyKEFVVE9GT0NVU19PTl9NT1VOVCwgb25Nb3VudEF1dG9Gb2N1cyk7XG5cbiAgICAgICAgLy8gV2UgaGl0IGEgcmVhY3QgYnVnIChmaXhlZCBpbiB2MTcpIHdpdGggZm9jdXNpbmcgaW4gdW5tb3VudC5cbiAgICAgICAgLy8gV2UgbmVlZCB0byBkZWxheSB0aGUgZm9jdXMgYSBsaXR0bGUgdG8gZ2V0IGFyb3VuZCBpdCBmb3Igbm93LlxuICAgICAgICAvLyBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvMTc4OTRcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgY29uc3QgdW5tb3VudEV2ZW50ID0gbmV3IEN1c3RvbUV2ZW50KEFVVE9GT0NVU19PTl9VTk1PVU5ULCBFVkVOVF9PUFRJT05TKTtcbiAgICAgICAgICBjb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcihBVVRPRk9DVVNfT05fVU5NT1VOVCwgb25Vbm1vdW50QXV0b0ZvY3VzKTtcbiAgICAgICAgICBjb250YWluZXIuZGlzcGF0Y2hFdmVudCh1bm1vdW50RXZlbnQpO1xuICAgICAgICAgIGlmICghdW5tb3VudEV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgICAgICAgIGZvY3VzKHByZXZpb3VzbHlGb2N1c2VkRWxlbWVudCA/PyBkb2N1bWVudC5ib2R5LCB7IHNlbGVjdDogdHJ1ZSB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gd2UgbmVlZCB0byByZW1vdmUgdGhlIGxpc3RlbmVyIGFmdGVyIHdlIGBkaXNwYXRjaEV2ZW50YFxuICAgICAgICAgIGNvbnRhaW5lci5yZW1vdmVFdmVudExpc3RlbmVyKEFVVE9GT0NVU19PTl9VTk1PVU5ULCBvblVubW91bnRBdXRvRm9jdXMpO1xuXG4gICAgICAgICAgZm9jdXNTY29wZXNTdGFjay5yZW1vdmUoZm9jdXNTY29wZSk7XG4gICAgICAgIH0sIDApO1xuICAgICAgfTtcbiAgICB9XG4gIH0sIFtjb250YWluZXIsIG9uTW91bnRBdXRvRm9jdXMsIG9uVW5tb3VudEF1dG9Gb2N1cywgZm9jdXNTY29wZV0pO1xuXG4gIC8vIFRha2VzIGNhcmUgb2YgbG9vcGluZyBmb2N1cyAod2hlbiB0YWJiaW5nIHdoaWxzdCBhdCB0aGUgZWRnZXMpXG4gIGNvbnN0IGhhbmRsZUtleURvd24gPSBSZWFjdC51c2VDYWxsYmFjayhcbiAgICAoZXZlbnQ6IFJlYWN0LktleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgIGlmICghbG9vcCAmJiAhdHJhcHBlZCkgcmV0dXJuO1xuICAgICAgaWYgKGZvY3VzU2NvcGUucGF1c2VkKSByZXR1cm47XG5cbiAgICAgIGNvbnN0IGlzVGFiS2V5ID0gZXZlbnQua2V5ID09PSAnVGFiJyAmJiAhZXZlbnQuYWx0S2V5ICYmICFldmVudC5jdHJsS2V5ICYmICFldmVudC5tZXRhS2V5O1xuICAgICAgY29uc3QgZm9jdXNlZEVsZW1lbnQgPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50IHwgbnVsbDtcblxuICAgICAgaWYgKGlzVGFiS2V5ICYmIGZvY3VzZWRFbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IGV2ZW50LmN1cnJlbnRUYXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IFtmaXJzdCwgbGFzdF0gPSBnZXRUYWJiYWJsZUVkZ2VzKGNvbnRhaW5lcik7XG4gICAgICAgIGNvbnN0IGhhc1RhYmJhYmxlRWxlbWVudHNJbnNpZGUgPSBmaXJzdCAmJiBsYXN0O1xuXG4gICAgICAgIC8vIHdlIGNhbiBvbmx5IHdyYXAgZm9jdXMgaWYgd2UgaGF2ZSB0YWJiYWJsZSBlZGdlc1xuICAgICAgICBpZiAoIWhhc1RhYmJhYmxlRWxlbWVudHNJbnNpZGUpIHtcbiAgICAgICAgICBpZiAoZm9jdXNlZEVsZW1lbnQgPT09IGNvbnRhaW5lcikgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoIWV2ZW50LnNoaWZ0S2V5ICYmIGZvY3VzZWRFbGVtZW50ID09PSBsYXN0KSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgaWYgKGxvb3ApIGZvY3VzKGZpcnN0LCB7IHNlbGVjdDogdHJ1ZSB9KTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LnNoaWZ0S2V5ICYmIGZvY3VzZWRFbGVtZW50ID09PSBmaXJzdCkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGlmIChsb29wKSBmb2N1cyhsYXN0LCB7IHNlbGVjdDogdHJ1ZSB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIFtsb29wLCB0cmFwcGVkLCBmb2N1c1Njb3BlLnBhdXNlZF1cbiAgKTtcblxuICByZXR1cm4gKFxuICAgIDxQcmltaXRpdmUuZGl2IHRhYkluZGV4PXstMX0gey4uLnNjb3BlUHJvcHN9IHJlZj17Y29tcG9zZWRSZWZzfSBvbktleURvd249e2hhbmRsZUtleURvd259IC8+XG4gICk7XG59KTtcblxuRm9jdXNTY29wZS5kaXNwbGF5TmFtZSA9IEZPQ1VTX1NDT1BFX05BTUU7XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFV0aWxzXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbi8qKlxuICogQXR0ZW1wdHMgZm9jdXNpbmcgdGhlIGZpcnN0IGVsZW1lbnQgaW4gYSBsaXN0IG9mIGNhbmRpZGF0ZXMuXG4gKiBTdG9wcyB3aGVuIGZvY3VzIGhhcyBhY3R1YWxseSBtb3ZlZC5cbiAqL1xuZnVuY3Rpb24gZm9jdXNGaXJzdChjYW5kaWRhdGVzOiBIVE1MRWxlbWVudFtdLCB7IHNlbGVjdCA9IGZhbHNlIH0gPSB7fSkge1xuICBjb25zdCBwcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQgPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50O1xuICBmb3IgKGNvbnN0IGNhbmRpZGF0ZSBvZiBjYW5kaWRhdGVzKSB7XG4gICAgZm9jdXMoY2FuZGlkYXRlLCB7IHNlbGVjdCB9KTtcbiAgICBpZiAoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCAhPT0gcHJldmlvdXNseUZvY3VzZWRFbGVtZW50KSByZXR1cm47XG4gIH1cbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBmaXJzdCBhbmQgbGFzdCB0YWJiYWJsZSBlbGVtZW50cyBpbnNpZGUgYSBjb250YWluZXIuXG4gKi9cbmZ1bmN0aW9uIGdldFRhYmJhYmxlRWRnZXMoY29udGFpbmVyOiBIVE1MRWxlbWVudCkge1xuICBjb25zdCBjYW5kaWRhdGVzID0gZ2V0VGFiYmFibGVDYW5kaWRhdGVzKGNvbnRhaW5lcik7XG4gIGNvbnN0IGZpcnN0ID0gZmluZFZpc2libGUoY2FuZGlkYXRlcywgY29udGFpbmVyKTtcbiAgY29uc3QgbGFzdCA9IGZpbmRWaXNpYmxlKGNhbmRpZGF0ZXMucmV2ZXJzZSgpLCBjb250YWluZXIpO1xuICByZXR1cm4gW2ZpcnN0LCBsYXN0XSBhcyBjb25zdDtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGEgbGlzdCBvZiBwb3RlbnRpYWwgdGFiYmFibGUgY2FuZGlkYXRlcy5cbiAqXG4gKiBOT1RFOiBUaGlzIGlzIG9ubHkgYSBjbG9zZSBhcHByb3hpbWF0aW9uLiBGb3IgZXhhbXBsZSBpdCBkb2Vzbid0IHRha2UgaW50byBhY2NvdW50IGNhc2VzIGxpa2Ugd2hlblxuICogZWxlbWVudHMgYXJlIG5vdCB2aXNpYmxlLiBUaGlzIGNhbm5vdCBiZSB3b3JrZWQgb3V0IGVhc2lseSBieSBqdXN0IHJlYWRpbmcgYSBwcm9wZXJ0eSwgYnV0IHJhdGhlclxuICogbmVjZXNzaXRhdGUgcnVudGltZSBrbm93bGVkZ2UgKGNvbXB1dGVkIHN0eWxlcywgZXRjKS4gV2UgZGVhbCB3aXRoIHRoZXNlIGNhc2VzIHNlcGFyYXRlbHkuXG4gKlxuICogU2VlOiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvVHJlZVdhbGtlclxuICogQ3JlZGl0OiBodHRwczovL2dpdGh1Yi5jb20vZGlzY29yZC9mb2N1cy1sYXllcnMvYmxvYi9tYXN0ZXIvc3JjL3V0aWwvd3JhcEZvY3VzLnRzeCNMMVxuICovXG5mdW5jdGlvbiBnZXRUYWJiYWJsZUNhbmRpZGF0ZXMoY29udGFpbmVyOiBIVE1MRWxlbWVudCkge1xuICBjb25zdCBub2RlczogSFRNTEVsZW1lbnRbXSA9IFtdO1xuICBjb25zdCB3YWxrZXIgPSBkb2N1bWVudC5jcmVhdGVUcmVlV2Fsa2VyKGNvbnRhaW5lciwgTm9kZUZpbHRlci5TSE9XX0VMRU1FTlQsIHtcbiAgICBhY2NlcHROb2RlOiAobm9kZTogYW55KSA9PiB7XG4gICAgICBjb25zdCBpc0hpZGRlbklucHV0ID0gbm9kZS50YWdOYW1lID09PSAnSU5QVVQnICYmIG5vZGUudHlwZSA9PT0gJ2hpZGRlbic7XG4gICAgICBpZiAobm9kZS5kaXNhYmxlZCB8fCBub2RlLmhpZGRlbiB8fCBpc0hpZGRlbklucHV0KSByZXR1cm4gTm9kZUZpbHRlci5GSUxURVJfU0tJUDtcbiAgICAgIC8vIGAudGFiSW5kZXhgIGlzIG5vdCB0aGUgc2FtZSBhcyB0aGUgYHRhYmluZGV4YCBhdHRyaWJ1dGUuIEl0IHdvcmtzIG9uIHRoZVxuICAgICAgLy8gcnVudGltZSdzIHVuZGVyc3RhbmRpbmcgb2YgdGFiYmFiaWxpdHksIHNvIHRoaXMgYXV0b21hdGljYWxseSBhY2NvdW50c1xuICAgICAgLy8gZm9yIGFueSBraW5kIG9mIGVsZW1lbnQgdGhhdCBjb3VsZCBiZSB0YWJiZWQgdG8uXG4gICAgICByZXR1cm4gbm9kZS50YWJJbmRleCA+PSAwID8gTm9kZUZpbHRlci5GSUxURVJfQUNDRVBUIDogTm9kZUZpbHRlci5GSUxURVJfU0tJUDtcbiAgICB9LFxuICB9KTtcbiAgd2hpbGUgKHdhbGtlci5uZXh0Tm9kZSgpKSBub2Rlcy5wdXNoKHdhbGtlci5jdXJyZW50Tm9kZSBhcyBIVE1MRWxlbWVudCk7XG4gIC8vIHdlIGRvIG5vdCB0YWtlIGludG8gYWNjb3VudCB0aGUgb3JkZXIgb2Ygbm9kZXMgd2l0aCBwb3NpdGl2ZSBgdGFiSW5kZXhgIGFzIGl0XG4gIC8vIGhpbmRlcnMgYWNjZXNzaWJpbGl0eSB0byBoYXZlIHRhYiBvcmRlciBkaWZmZXJlbnQgZnJvbSB2aXN1YWwgb3JkZXIuXG4gIHJldHVybiBub2Rlcztcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBmaXJzdCB2aXNpYmxlIGVsZW1lbnQgaW4gYSBsaXN0LlxuICogTk9URTogT25seSBjaGVja3MgdmlzaWJpbGl0eSB1cCB0byB0aGUgYGNvbnRhaW5lcmAuXG4gKi9cbmZ1bmN0aW9uIGZpbmRWaXNpYmxlKGVsZW1lbnRzOiBIVE1MRWxlbWVudFtdLCBjb250YWluZXI6IEhUTUxFbGVtZW50KSB7XG4gIGZvciAoY29uc3QgZWxlbWVudCBvZiBlbGVtZW50cykge1xuICAgIC8vIHdlIHN0b3AgY2hlY2tpbmcgaWYgaXQncyBoaWRkZW4gYXQgdGhlIGBjb250YWluZXJgIGxldmVsIChleGNsdWRpbmcpXG4gICAgaWYgKCFpc0hpZGRlbihlbGVtZW50LCB7IHVwVG86IGNvbnRhaW5lciB9KSkgcmV0dXJuIGVsZW1lbnQ7XG4gIH1cbn1cblxuZnVuY3Rpb24gaXNIaWRkZW4obm9kZTogSFRNTEVsZW1lbnQsIHsgdXBUbyB9OiB7IHVwVG8/OiBIVE1MRWxlbWVudCB9KSB7XG4gIGlmIChnZXRDb21wdXRlZFN0eWxlKG5vZGUpLnZpc2liaWxpdHkgPT09ICdoaWRkZW4nKSByZXR1cm4gdHJ1ZTtcbiAgd2hpbGUgKG5vZGUpIHtcbiAgICAvLyB3ZSBzdG9wIGF0IGB1cFRvYCAoZXhjbHVkaW5nIGl0KVxuICAgIGlmICh1cFRvICE9PSB1bmRlZmluZWQgJiYgbm9kZSA9PT0gdXBUbykgcmV0dXJuIGZhbHNlO1xuICAgIGlmIChnZXRDb21wdXRlZFN0eWxlKG5vZGUpLmRpc3BsYXkgPT09ICdub25lJykgcmV0dXJuIHRydWU7XG4gICAgbm9kZSA9IG5vZGUucGFyZW50RWxlbWVudCBhcyBIVE1MRWxlbWVudDtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIGlzU2VsZWN0YWJsZUlucHV0KGVsZW1lbnQ6IGFueSk6IGVsZW1lbnQgaXMgRm9jdXNhYmxlVGFyZ2V0ICYgeyBzZWxlY3Q6ICgpID0+IHZvaWQgfSB7XG4gIHJldHVybiBlbGVtZW50IGluc3RhbmNlb2YgSFRNTElucHV0RWxlbWVudCAmJiAnc2VsZWN0JyBpbiBlbGVtZW50O1xufVxuXG5mdW5jdGlvbiBmb2N1cyhlbGVtZW50PzogRm9jdXNhYmxlVGFyZ2V0IHwgbnVsbCwgeyBzZWxlY3QgPSBmYWxzZSB9ID0ge30pIHtcbiAgLy8gb25seSBmb2N1cyBpZiB0aGF0IGVsZW1lbnQgaXMgZm9jdXNhYmxlXG4gIGlmIChlbGVtZW50ICYmIGVsZW1lbnQuZm9jdXMpIHtcbiAgICBjb25zdCBwcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQgPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50O1xuICAgIC8vIE5PVEU6IHdlIHByZXZlbnQgc2Nyb2xsaW5nIG9uIGZvY3VzLCB0byBtaW5pbWl6ZSBqYXJyaW5nIHRyYW5zaXRpb25zIGZvciB1c2Vyc1xuICAgIGVsZW1lbnQuZm9jdXMoeyBwcmV2ZW50U2Nyb2xsOiB0cnVlIH0pO1xuICAgIC8vIG9ubHkgc2VsZWN0IGlmIGl0cyBub3QgdGhlIHNhbWUgZWxlbWVudCwgaXQgc3VwcG9ydHMgc2VsZWN0aW9uIGFuZCB3ZSBuZWVkIHRvIHNlbGVjdFxuICAgIGlmIChlbGVtZW50ICE9PSBwcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQgJiYgaXNTZWxlY3RhYmxlSW5wdXQoZWxlbWVudCkgJiYgc2VsZWN0KVxuICAgICAgZWxlbWVudC5zZWxlY3QoKTtcbiAgfVxufVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBGb2N1c1Njb3BlIHN0YWNrXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbnR5cGUgRm9jdXNTY29wZUFQSSA9IHsgcGF1c2VkOiBib29sZWFuOyBwYXVzZSgpOiB2b2lkOyByZXN1bWUoKTogdm9pZCB9O1xuY29uc3QgZm9jdXNTY29wZXNTdGFjayA9IGNyZWF0ZUZvY3VzU2NvcGVzU3RhY2soKTtcblxuZnVuY3Rpb24gY3JlYXRlRm9jdXNTY29wZXNTdGFjaygpIHtcbiAgLyoqIEEgc3RhY2sgb2YgZm9jdXMgc2NvcGVzLCB3aXRoIHRoZSBhY3RpdmUgb25lIGF0IHRoZSB0b3AgKi9cbiAgbGV0IHN0YWNrOiBGb2N1c1Njb3BlQVBJW10gPSBbXTtcblxuICByZXR1cm4ge1xuICAgIGFkZChmb2N1c1Njb3BlOiBGb2N1c1Njb3BlQVBJKSB7XG4gICAgICAvLyBwYXVzZSB0aGUgY3VycmVudGx5IGFjdGl2ZSBmb2N1cyBzY29wZSAoYXQgdGhlIHRvcCBvZiB0aGUgc3RhY2spXG4gICAgICBjb25zdCBhY3RpdmVGb2N1c1Njb3BlID0gc3RhY2tbMF07XG4gICAgICBpZiAoZm9jdXNTY29wZSAhPT0gYWN0aXZlRm9jdXNTY29wZSkge1xuICAgICAgICBhY3RpdmVGb2N1c1Njb3BlPy5wYXVzZSgpO1xuICAgICAgfVxuICAgICAgLy8gcmVtb3ZlIGluIGNhc2UgaXQgYWxyZWFkeSBleGlzdHMgKGJlY2F1c2Ugd2UnbGwgcmUtYWRkIGl0IGF0IHRoZSB0b3Agb2YgdGhlIHN0YWNrKVxuICAgICAgc3RhY2sgPSBhcnJheVJlbW92ZShzdGFjaywgZm9jdXNTY29wZSk7XG4gICAgICBzdGFjay51bnNoaWZ0KGZvY3VzU2NvcGUpO1xuICAgIH0sXG5cbiAgICByZW1vdmUoZm9jdXNTY29wZTogRm9jdXNTY29wZUFQSSkge1xuICAgICAgc3RhY2sgPSBhcnJheVJlbW92ZShzdGFjaywgZm9jdXNTY29wZSk7XG4gICAgICBzdGFja1swXT8ucmVzdW1lKCk7XG4gICAgfSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gYXJyYXlSZW1vdmU8VD4oYXJyYXk6IFRbXSwgaXRlbTogVCkge1xuICBjb25zdCB1cGRhdGVkQXJyYXkgPSBbLi4uYXJyYXldO1xuICBjb25zdCBpbmRleCA9IHVwZGF0ZWRBcnJheS5pbmRleE9mKGl0ZW0pO1xuICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgdXBkYXRlZEFycmF5LnNwbGljZShpbmRleCwgMSk7XG4gIH1cbiAgcmV0dXJuIHVwZGF0ZWRBcnJheTtcbn1cblxuZnVuY3Rpb24gcmVtb3ZlTGlua3MoaXRlbXM6IEhUTUxFbGVtZW50W10pIHtcbiAgcmV0dXJuIGl0ZW1zLmZpbHRlcigoaXRlbSkgPT4gaXRlbS50YWdOYW1lICE9PSAnQScpO1xufVxuXG5jb25zdCBSb290ID0gRm9jdXNTY29wZTtcblxuZXhwb3J0IHtcbiAgRm9jdXNTY29wZSxcbiAgLy9cbiAgUm9vdCxcbn07XG5leHBvcnQgdHlwZSB7IEZvY3VzU2NvcGVQcm9wcyB9O1xuIl0sIm5hbWVzIjpbIlJlYWN0IiwidXNlQ29tcG9zZWRSZWZzIiwiUHJpbWl0aXZlIiwidXNlQ2FsbGJhY2tSZWYiLCJqc3giLCJBVVRPRk9DVVNfT05fTU9VTlQiLCJBVVRPRk9DVVNfT05fVU5NT1VOVCIsIkVWRU5UX09QVElPTlMiLCJidWJibGVzIiwiY2FuY2VsYWJsZSIsIkZPQ1VTX1NDT1BFX05BTUUiLCJGb2N1c1Njb3BlIiwiZm9yd2FyZFJlZiIsInByb3BzIiwiZm9yd2FyZGVkUmVmIiwibG9vcCIsInRyYXBwZWQiLCJvbk1vdW50QXV0b0ZvY3VzIiwib25Nb3VudEF1dG9Gb2N1c1Byb3AiLCJvblVubW91bnRBdXRvRm9jdXMiLCJvblVubW91bnRBdXRvRm9jdXNQcm9wIiwic2NvcGVQcm9wcyIsImNvbnRhaW5lciIsInNldENvbnRhaW5lciIsInVzZVN0YXRlIiwibGFzdEZvY3VzZWRFbGVtZW50UmVmIiwidXNlUmVmIiwiY29tcG9zZWRSZWZzIiwibm9kZSIsImZvY3VzU2NvcGUiLCJwYXVzZWQiLCJwYXVzZSIsInJlc3VtZSIsImN1cnJlbnQiLCJ1c2VFZmZlY3QiLCJoYW5kbGVGb2N1c0luIiwiZXZlbnQiLCJ0YXJnZXQiLCJjb250YWlucyIsImZvY3VzIiwic2VsZWN0IiwiaGFuZGxlRm9jdXNPdXQiLCJyZWxhdGVkVGFyZ2V0IiwiaGFuZGxlTXV0YXRpb25zIiwibXV0YXRpb25zIiwiZm9jdXNlZEVsZW1lbnQiLCJkb2N1bWVudCIsImFjdGl2ZUVsZW1lbnQiLCJib2R5IiwibXV0YXRpb24iLCJyZW1vdmVkTm9kZXMiLCJsZW5ndGgiLCJhZGRFdmVudExpc3RlbmVyIiwibXV0YXRpb25PYnNlcnZlciIsIk11dGF0aW9uT2JzZXJ2ZXIiLCJvYnNlcnZlIiwiY2hpbGRMaXN0Iiwic3VidHJlZSIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJkaXNjb25uZWN0IiwiZm9jdXNTY29wZXNTdGFjayIsImFkZCIsInByZXZpb3VzbHlGb2N1c2VkRWxlbWVudCIsImhhc0ZvY3VzZWRDYW5kaWRhdGUiLCJtb3VudEV2ZW50IiwiQ3VzdG9tRXZlbnQiLCJkaXNwYXRjaEV2ZW50IiwiZGVmYXVsdFByZXZlbnRlZCIsImZvY3VzRmlyc3QiLCJyZW1vdmVMaW5rcyIsImdldFRhYmJhYmxlQ2FuZGlkYXRlcyIsInNldFRpbWVvdXQiLCJ1bm1vdW50RXZlbnQiLCJyZW1vdmUiLCJoYW5kbGVLZXlEb3duIiwidXNlQ2FsbGJhY2siLCJpc1RhYktleSIsImtleSIsImFsdEtleSIsImN0cmxLZXkiLCJtZXRhS2V5IiwiY3VycmVudFRhcmdldCIsImZpcnN0IiwibGFzdCIsImdldFRhYmJhYmxlRWRnZXMiLCJoYXNUYWJiYWJsZUVsZW1lbnRzSW5zaWRlIiwicHJldmVudERlZmF1bHQiLCJzaGlmdEtleSIsImRpdiIsInRhYkluZGV4IiwicmVmIiwib25LZXlEb3duIiwiZGlzcGxheU5hbWUiLCJjYW5kaWRhdGVzIiwiY2FuZGlkYXRlIiwiZmluZFZpc2libGUiLCJyZXZlcnNlIiwibm9kZXMiLCJ3YWxrZXIiLCJjcmVhdGVUcmVlV2Fsa2VyIiwiTm9kZUZpbHRlciIsIlNIT1dfRUxFTUVOVCIsImFjY2VwdE5vZGUiLCJpc0hpZGRlbklucHV0IiwidGFnTmFtZSIsInR5cGUiLCJkaXNhYmxlZCIsImhpZGRlbiIsIkZJTFRFUl9TS0lQIiwiRklMVEVSX0FDQ0VQVCIsIm5leHROb2RlIiwicHVzaCIsImN1cnJlbnROb2RlIiwiZWxlbWVudHMiLCJlbGVtZW50IiwiaXNIaWRkZW4iLCJ1cFRvIiwiZ2V0Q29tcHV0ZWRTdHlsZSIsInZpc2liaWxpdHkiLCJkaXNwbGF5IiwicGFyZW50RWxlbWVudCIsImlzU2VsZWN0YWJsZUlucHV0IiwiSFRNTElucHV0RWxlbWVudCIsInByZXZlbnRTY3JvbGwiLCJjcmVhdGVGb2N1c1Njb3Blc1N0YWNrIiwic3RhY2siLCJhY3RpdmVGb2N1c1Njb3BlIiwiYXJyYXlSZW1vdmUiLCJ1bnNoaWZ0IiwiYXJyYXkiLCJpdGVtIiwidXBkYXRlZEFycmF5IiwiaW5kZXgiLCJpbmRleE9mIiwic3BsaWNlIiwiaXRlbXMiLCJmaWx0ZXIiLCJSb290Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/@radix-ui/react-focus-scope/dist/index.mjs\n"); /***/ }), /***/ "(ssr)/./node_modules/@radix-ui/react-id/dist/index.mjs": /*!********************************************************!*\ !*** ./node_modules/@radix-ui/react-id/dist/index.mjs ***! \********************************************************/ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { eval("var react__WEBPACK_IMPORTED_MODULE_0___namespace_cache;\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ useId: () => (/* binding */ useId)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var _radix_ui_react_use_layout_effect__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @radix-ui/react-use-layout-effect */ \"(ssr)/./node_modules/@radix-ui/react-use-layout-effect/dist/index.mjs\");\n// packages/react/id/src/id.tsx\n\n\nvar useReactId = /*#__PURE__*/ (react__WEBPACK_IMPORTED_MODULE_0___namespace_cache || (react__WEBPACK_IMPORTED_MODULE_0___namespace_cache = __webpack_require__.t(react__WEBPACK_IMPORTED_MODULE_0__, 2)))[\"useId\".toString()] || (() => void 0);\nvar count = 0;\nfunction useId(deterministicId) {\n const [id, setId] = react__WEBPACK_IMPORTED_MODULE_0__.useState(useReactId());\n (0,_radix_ui_react_use_layout_effect__WEBPACK_IMPORTED_MODULE_1__.useLayoutEffect)(() => {\n if (!deterministicId) setId((reactId) => reactId ?? String(count++));\n }, [deterministicId]);\n return deterministicId || (id ? `radix-${id}` : \"\");\n}\n\n//# sourceMappingURL=index.mjs.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LWlkL2Rpc3QvaW5kZXgubWpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTtBQUMrQjtBQUNxQztBQUNwRSxpQkFBaUIseUxBQUs7QUFDdEI7QUFDQTtBQUNBLHNCQUFzQiwyQ0FBYztBQUNwQyxFQUFFLGtGQUFlO0FBQ2pCO0FBQ0EsR0FBRztBQUNILDJDQUEyQyxHQUFHO0FBQzlDO0FBR0U7QUFDRiIsInNvdXJjZXMiOlsid2VicGFjazovL215LXYwLXByb2plY3QvLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LWlkL2Rpc3QvaW5kZXgubWpzPzIyZDQiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gcGFja2FnZXMvcmVhY3QvaWQvc3JjL2lkLnRzeFxuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VMYXlvdXRFZmZlY3QgfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXVzZS1sYXlvdXQtZWZmZWN0XCI7XG52YXIgdXNlUmVhY3RJZCA9IFJlYWN0W1widXNlSWRcIi50b1N0cmluZygpXSB8fCAoKCkgPT4gdm9pZCAwKTtcbnZhciBjb3VudCA9IDA7XG5mdW5jdGlvbiB1c2VJZChkZXRlcm1pbmlzdGljSWQpIHtcbiAgY29uc3QgW2lkLCBzZXRJZF0gPSBSZWFjdC51c2VTdGF0ZSh1c2VSZWFjdElkKCkpO1xuICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghZGV0ZXJtaW5pc3RpY0lkKSBzZXRJZCgocmVhY3RJZCkgPT4gcmVhY3RJZCA/PyBTdHJpbmcoY291bnQrKykpO1xuICB9LCBbZGV0ZXJtaW5pc3RpY0lkXSk7XG4gIHJldHVybiBkZXRlcm1pbmlzdGljSWQgfHwgKGlkID8gYHJhZGl4LSR7aWR9YCA6IFwiXCIpO1xufVxuZXhwb3J0IHtcbiAgdXNlSWRcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tanMubWFwXG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/@radix-ui/react-id/dist/index.mjs\n"); /***/ }), /***/ "(ssr)/./node_modules/@radix-ui/react-menu/dist/index.mjs": /*!**********************************************************!*\ !*** ./node_modules/@radix-ui/react-menu/dist/index.mjs ***! \**********************************************************/ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Anchor: () => (/* binding */ Anchor2),\n/* harmony export */ Arrow: () => (/* binding */ Arrow2),\n/* harmony export */ CheckboxItem: () => (/* binding */ CheckboxItem),\n/* harmony export */ Content: () => (/* binding */ Content2),\n/* harmony export */ Group: () => (/* binding */ Group),\n/* harmony export */ Item: () => (/* binding */ Item2),\n/* harmony export */ ItemIndicator: () => (/* binding */ ItemIndicator),\n/* harmony export */ Label: () => (/* binding */ Label),\n/* harmony export */ Menu: () => (/* binding */ Menu),\n/* harmony export */ MenuAnchor: () => (/* binding */ MenuAnchor),\n/* harmony export */ MenuArrow: () => (/* binding */ MenuArrow),\n/* harmony export */ MenuCheckboxItem: () => (/* binding */ MenuCheckboxItem),\n/* harmony export */ MenuContent: () => (/* binding */ MenuContent),\n/* harmony export */ MenuGroup: () => (/* binding */ MenuGroup),\n/* harmony export */ MenuItem: () => (/* binding */ MenuItem),\n/* harmony export */ MenuItemIndicator: () => (/* binding */ MenuItemIndicator),\n/* harmony export */ MenuLabel: () => (/* binding */ MenuLabel),\n/* harmony export */ MenuPortal: () => (/* binding */ MenuPortal),\n/* harmony export */ MenuRadioGroup: () => (/* binding */ MenuRadioGroup),\n/* harmony export */ MenuRadioItem: () => (/* binding */ MenuRadioItem),\n/* harmony export */ MenuSeparator: () => (/* binding */ MenuSeparator),\n/* harmony export */ MenuSub: () => (/* binding */ MenuSub),\n/* harmony export */ MenuSubContent: () => (/* binding */ MenuSubContent),\n/* harmony export */ MenuSubTrigger: () => (/* binding */ MenuSubTrigger),\n/* harmony export */ Portal: () => (/* binding */ Portal),\n/* harmony export */ RadioGroup: () => (/* binding */ RadioGroup),\n/* harmony export */ RadioItem: () => (/* binding */ RadioItem),\n/* harmony export */ Root: () => (/* binding */ Root3),\n/* harmony export */ Separator: () => (/* binding */ Separator),\n/* harmony export */ Sub: () => (/* binding */ Sub),\n/* harmony export */ SubContent: () => (/* binding */ SubContent),\n/* harmony export */ SubTrigger: () => (/* binding */ SubTrigger),\n/* harmony export */ createMenuScope: () => (/* binding */ createMenuScope)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var _radix_ui_primitive__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @radix-ui/primitive */ \"(ssr)/./node_modules/@radix-ui/primitive/dist/index.mjs\");\n/* harmony import */ var _radix_ui_react_collection__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @radix-ui/react-collection */ \"(ssr)/./node_modules/@radix-ui/react-collection/dist/index.mjs\");\n/* harmony import */ var _radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @radix-ui/react-compose-refs */ \"(ssr)/./node_modules/@radix-ui/react-compose-refs/dist/index.mjs\");\n/* harmony import */ var _radix_ui_react_context__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @radix-ui/react-context */ \"(ssr)/./node_modules/@radix-ui/react-context/dist/index.mjs\");\n/* harmony import */ var _radix_ui_react_direction__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @radix-ui/react-direction */ \"(ssr)/./node_modules/@radix-ui/react-direction/dist/index.mjs\");\n/* harmony import */ var _radix_ui_react_dismissable_layer__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! @radix-ui/react-dismissable-layer */ \"(ssr)/./node_modules/@radix-ui/react-dismissable-layer/dist/index.mjs\");\n/* harmony import */ var _radix_ui_react_focus_guards__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @radix-ui/react-focus-guards */ \"(ssr)/./node_modules/@radix-ui/react-focus-guards/dist/index.mjs\");\n/* harmony import */ var _radix_ui_react_focus_scope__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @radix-ui/react-focus-scope */ \"(ssr)/./node_modules/@radix-ui/react-focus-scope/dist/index.mjs\");\n/* harmony import */ var _radix_ui_react_id__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! @radix-ui/react-id */ \"(ssr)/./node_modules/@radix-ui/react-id/dist/index.mjs\");\n/* harmony import */ var _radix_ui_react_popper__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @radix-ui/react-popper */ \"(ssr)/./node_modules/@radix-ui/react-popper/dist/index.mjs\");\n/* harmony import */ var _radix_ui_react_portal__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @radix-ui/react-portal */ \"(ssr)/./node_modules/@radix-ui/react-portal/dist/index.mjs\");\n/* harmony import */ var _radix_ui_react_presence__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @radix-ui/react-presence */ \"(ssr)/./node_modules/@radix-ui/react-presence/dist/index.mjs\");\n/* harmony import */ var _radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! @radix-ui/react-primitive */ \"(ssr)/./node_modules/@radix-ui/react-primitive/dist/index.mjs\");\n/* harmony import */ var _radix_ui_react_roving_focus__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @radix-ui/react-roving-focus */ \"(ssr)/./node_modules/@radix-ui/react-roving-focus/dist/index.mjs\");\n/* harmony import */ var _radix_ui_react_slot__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @radix-ui/react-slot */ \"(ssr)/./node_modules/@radix-ui/react-slot/dist/index.mjs\");\n/* harmony import */ var _radix_ui_react_use_callback_ref__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @radix-ui/react-use-callback-ref */ \"(ssr)/./node_modules/@radix-ui/react-use-callback-ref/dist/index.mjs\");\n/* harmony import */ var aria_hidden__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! aria-hidden */ \"(ssr)/./node_modules/aria-hidden/dist/es2015/index.js\");\n/* harmony import */ var react_remove_scroll__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! react-remove-scroll */ \"(ssr)/./node_modules/react-remove-scroll/dist/es2015/Combination.js\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react-jsx-runtime.js\");\n/* __next_internal_client_entry_do_not_use__ Anchor,Arrow,CheckboxItem,Content,Group,Item,ItemIndicator,Label,Menu,MenuAnchor,MenuArrow,MenuCheckboxItem,MenuContent,MenuGroup,MenuItem,MenuItemIndicator,MenuLabel,MenuPortal,MenuRadioGroup,MenuRadioItem,MenuSeparator,MenuSub,MenuSubContent,MenuSubTrigger,Portal,RadioGroup,RadioItem,Root,Separator,Sub,SubContent,SubTrigger,createMenuScope auto */ // packages/react/menu/src/Menu.tsx\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar SELECTION_KEYS = [\n \"Enter\",\n \" \"\n];\nvar FIRST_KEYS = [\n \"ArrowDown\",\n \"PageUp\",\n \"Home\"\n];\nvar LAST_KEYS = [\n \"ArrowUp\",\n \"PageDown\",\n \"End\"\n];\nvar FIRST_LAST_KEYS = [\n ...FIRST_KEYS,\n ...LAST_KEYS\n];\nvar SUB_OPEN_KEYS = {\n ltr: [\n ...SELECTION_KEYS,\n \"ArrowRight\"\n ],\n rtl: [\n ...SELECTION_KEYS,\n \"ArrowLeft\"\n ]\n};\nvar SUB_CLOSE_KEYS = {\n ltr: [\n \"ArrowLeft\"\n ],\n rtl: [\n \"ArrowRight\"\n ]\n};\nvar MENU_NAME = \"Menu\";\nvar [Collection, useCollection, createCollectionScope] = (0,_radix_ui_react_collection__WEBPACK_IMPORTED_MODULE_2__.createCollection)(MENU_NAME);\nvar [createMenuContext, createMenuScope] = (0,_radix_ui_react_context__WEBPACK_IMPORTED_MODULE_3__.createContextScope)(MENU_NAME, [\n createCollectionScope,\n _radix_ui_react_popper__WEBPACK_IMPORTED_MODULE_4__.createPopperScope,\n _radix_ui_react_roving_focus__WEBPACK_IMPORTED_MODULE_5__.createRovingFocusGroupScope\n]);\nvar usePopperScope = (0,_radix_ui_react_popper__WEBPACK_IMPORTED_MODULE_4__.createPopperScope)();\nvar useRovingFocusGroupScope = (0,_radix_ui_react_roving_focus__WEBPACK_IMPORTED_MODULE_5__.createRovingFocusGroupScope)();\nvar [MenuProvider, useMenuContext] = createMenuContext(MENU_NAME);\nvar [MenuRootProvider, useMenuRootContext] = createMenuContext(MENU_NAME);\nvar Menu = (props)=>{\n const { __scopeMenu, open = false, children, dir, onOpenChange, modal = true } = props;\n const popperScope = usePopperScope(__scopeMenu);\n const [content, setContent] = react__WEBPACK_IMPORTED_MODULE_0__.useState(null);\n const isUsingKeyboardRef = react__WEBPACK_IMPORTED_MODULE_0__.useRef(false);\n const handleOpenChange = (0,_radix_ui_react_use_callback_ref__WEBPACK_IMPORTED_MODULE_6__.useCallbackRef)(onOpenChange);\n const direction = (0,_radix_ui_react_direction__WEBPACK_IMPORTED_MODULE_7__.useDirection)(dir);\n react__WEBPACK_IMPORTED_MODULE_0__.useEffect(()=>{\n const handleKeyDown = ()=>{\n isUsingKeyboardRef.current = true;\n document.addEventListener(\"pointerdown\", handlePointer, {\n capture: true,\n once: true\n });\n document.addEventListener(\"pointermove\", handlePointer, {\n capture: true,\n once: true\n });\n };\n const handlePointer = ()=>isUsingKeyboardRef.current = false;\n document.addEventListener(\"keydown\", handleKeyDown, {\n capture: true\n });\n return ()=>{\n document.removeEventListener(\"keydown\", handleKeyDown, {\n capture: true\n });\n document.removeEventListener(\"pointerdown\", handlePointer, {\n capture: true\n });\n document.removeEventListener(\"pointermove\", handlePointer, {\n capture: true\n });\n };\n }, []);\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_radix_ui_react_popper__WEBPACK_IMPORTED_MODULE_4__.Root, {\n ...popperScope,\n children: /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(MenuProvider, {\n scope: __scopeMenu,\n open,\n onOpenChange: handleOpenChange,\n content,\n onContentChange: setContent,\n children: /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(MenuRootProvider, {\n scope: __scopeMenu,\n onClose: react__WEBPACK_IMPORTED_MODULE_0__.useCallback(()=>handleOpenChange(false), [\n handleOpenChange\n ]),\n isUsingKeyboardRef,\n dir: direction,\n modal,\n children\n })\n })\n });\n};\nMenu.displayName = MENU_NAME;\nvar ANCHOR_NAME = \"MenuAnchor\";\nvar MenuAnchor = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef((props, forwardedRef)=>{\n const { __scopeMenu, ...anchorProps } = props;\n const popperScope = usePopperScope(__scopeMenu);\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_radix_ui_react_popper__WEBPACK_IMPORTED_MODULE_4__.Anchor, {\n ...popperScope,\n ...anchorProps,\n ref: forwardedRef\n });\n});\nMenuAnchor.displayName = ANCHOR_NAME;\nvar PORTAL_NAME = \"MenuPortal\";\nvar [PortalProvider, usePortalContext] = createMenuContext(PORTAL_NAME, {\n forceMount: void 0\n});\nvar MenuPortal = (props)=>{\n const { __scopeMenu, forceMount, children, container } = props;\n const context = useMenuContext(PORTAL_NAME, __scopeMenu);\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(PortalProvider, {\n scope: __scopeMenu,\n forceMount,\n children: /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_radix_ui_react_presence__WEBPACK_IMPORTED_MODULE_8__.Presence, {\n present: forceMount || context.open,\n children: /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_radix_ui_react_portal__WEBPACK_IMPORTED_MODULE_9__.Portal, {\n asChild: true,\n container,\n children\n })\n })\n });\n};\nMenuPortal.displayName = PORTAL_NAME;\nvar CONTENT_NAME = \"MenuContent\";\nvar [MenuContentProvider, useMenuContentContext] = createMenuContext(CONTENT_NAME);\nvar MenuContent = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef((props, forwardedRef)=>{\n const portalContext = usePortalContext(CONTENT_NAME, props.__scopeMenu);\n const { forceMount = portalContext.forceMount, ...contentProps } = props;\n const context = useMenuContext(CONTENT_NAME, props.__scopeMenu);\n const rootContext = useMenuRootContext(CONTENT_NAME, props.__scopeMenu);\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(Collection.Provider, {\n scope: props.__scopeMenu,\n children: /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_radix_ui_react_presence__WEBPACK_IMPORTED_MODULE_8__.Presence, {\n present: forceMount || context.open,\n children: /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(Collection.Slot, {\n scope: props.__scopeMenu,\n children: rootContext.modal ? /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(MenuRootContentModal, {\n ...contentProps,\n ref: forwardedRef\n }) : /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(MenuRootContentNonModal, {\n ...contentProps,\n ref: forwardedRef\n })\n })\n })\n });\n});\nvar MenuRootContentModal = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef((props, forwardedRef)=>{\n const context = useMenuContext(CONTENT_NAME, props.__scopeMenu);\n const ref = react__WEBPACK_IMPORTED_MODULE_0__.useRef(null);\n const composedRefs = (0,_radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_10__.useComposedRefs)(forwardedRef, ref);\n react__WEBPACK_IMPORTED_MODULE_0__.useEffect(()=>{\n const content = ref.current;\n if (content) return (0,aria_hidden__WEBPACK_IMPORTED_MODULE_11__.hideOthers)(content);\n }, []);\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(MenuContentImpl, {\n ...props,\n ref: composedRefs,\n trapFocus: context.open,\n disableOutsidePointerEvents: context.open,\n disableOutsideScroll: true,\n onFocusOutside: (0,_radix_ui_primitive__WEBPACK_IMPORTED_MODULE_12__.composeEventHandlers)(props.onFocusOutside, (event)=>event.preventDefault(), {\n checkForDefaultPrevented: false\n }),\n onDismiss: ()=>context.onOpenChange(false)\n });\n});\nvar MenuRootContentNonModal = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef((props, forwardedRef)=>{\n const context = useMenuContext(CONTENT_NAME, props.__scopeMenu);\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(MenuContentImpl, {\n ...props,\n ref: forwardedRef,\n trapFocus: false,\n disableOutsidePointerEvents: false,\n disableOutsideScroll: false,\n onDismiss: ()=>context.onOpenChange(false)\n });\n});\nvar MenuContentImpl = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef((props, forwardedRef)=>{\n const { __scopeMenu, loop = false, trapFocus, onOpenAutoFocus, onCloseAutoFocus, disableOutsidePointerEvents, onEntryFocus, onEscapeKeyDown, onPointerDownOutside, onFocusOutside, onInteractOutside, onDismiss, disableOutsideScroll, ...contentProps } = props;\n const context = useMenuContext(CONTENT_NAME, __scopeMenu);\n const rootContext = useMenuRootContext(CONTENT_NAME, __scopeMenu);\n const popperScope = usePopperScope(__scopeMenu);\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeMenu);\n const getItems = useCollection(__scopeMenu);\n const [currentItemId, setCurrentItemId] = react__WEBPACK_IMPORTED_MODULE_0__.useState(null);\n const contentRef = react__WEBPACK_IMPORTED_MODULE_0__.useRef(null);\n const composedRefs = (0,_radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_10__.useComposedRefs)(forwardedRef, contentRef, context.onContentChange);\n const timerRef = react__WEBPACK_IMPORTED_MODULE_0__.useRef(0);\n const searchRef = react__WEBPACK_IMPORTED_MODULE_0__.useRef(\"\");\n const pointerGraceTimerRef = react__WEBPACK_IMPORTED_MODULE_0__.useRef(0);\n const pointerGraceIntentRef = react__WEBPACK_IMPORTED_MODULE_0__.useRef(null);\n const pointerDirRef = react__WEBPACK_IMPORTED_MODULE_0__.useRef(\"right\");\n const lastPointerXRef = react__WEBPACK_IMPORTED_MODULE_0__.useRef(0);\n const ScrollLockWrapper = disableOutsideScroll ? react_remove_scroll__WEBPACK_IMPORTED_MODULE_13__[\"default\"] : react__WEBPACK_IMPORTED_MODULE_0__.Fragment;\n const scrollLockWrapperProps = disableOutsideScroll ? {\n as: _radix_ui_react_slot__WEBPACK_IMPORTED_MODULE_14__.Slot,\n allowPinchZoom: true\n } : void 0;\n const handleTypeaheadSearch = (key)=>{\n const search = searchRef.current + key;\n const items = getItems().filter((item)=>!item.disabled);\n const currentItem = document.activeElement;\n const currentMatch = items.find((item)=>item.ref.current === currentItem)?.textValue;\n const values = items.map((item)=>item.textValue);\n const nextMatch = getNextMatch(values, search, currentMatch);\n const newItem = items.find((item)=>item.textValue === nextMatch)?.ref.current;\n (function updateSearch(value) {\n searchRef.current = value;\n window.clearTimeout(timerRef.current);\n if (value !== \"\") timerRef.current = window.setTimeout(()=>updateSearch(\"\"), 1e3);\n })(search);\n if (newItem) {\n setTimeout(()=>newItem.focus());\n }\n };\n react__WEBPACK_IMPORTED_MODULE_0__.useEffect(()=>{\n return ()=>window.clearTimeout(timerRef.current);\n }, []);\n (0,_radix_ui_react_focus_guards__WEBPACK_IMPORTED_MODULE_15__.useFocusGuards)();\n const isPointerMovingToSubmenu = react__WEBPACK_IMPORTED_MODULE_0__.useCallback((event)=>{\n const isMovingTowards = pointerDirRef.current === pointerGraceIntentRef.current?.side;\n return isMovingTowards && isPointerInGraceArea(event, pointerGraceIntentRef.current?.area);\n }, []);\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(MenuContentProvider, {\n scope: __scopeMenu,\n searchRef,\n onItemEnter: react__WEBPACK_IMPORTED_MODULE_0__.useCallback((event)=>{\n if (isPointerMovingToSubmenu(event)) event.preventDefault();\n }, [\n isPointerMovingToSubmenu\n ]),\n onItemLeave: react__WEBPACK_IMPORTED_MODULE_0__.useCallback((event)=>{\n if (isPointerMovingToSubmenu(event)) return;\n contentRef.current?.focus();\n setCurrentItemId(null);\n }, [\n isPointerMovingToSubmenu\n ]),\n onTriggerLeave: react__WEBPACK_IMPORTED_MODULE_0__.useCallback((event)=>{\n if (isPointerMovingToSubmenu(event)) event.preventDefault();\n }, [\n isPointerMovingToSubmenu\n ]),\n pointerGraceTimerRef,\n onPointerGraceIntentChange: react__WEBPACK_IMPORTED_MODULE_0__.useCallback((intent)=>{\n pointerGraceIntentRef.current = intent;\n }, []),\n children: /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(ScrollLockWrapper, {\n ...scrollLockWrapperProps,\n children: /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_radix_ui_react_focus_scope__WEBPACK_IMPORTED_MODULE_16__.FocusScope, {\n asChild: true,\n trapped: trapFocus,\n onMountAutoFocus: (0,_radix_ui_primitive__WEBPACK_IMPORTED_MODULE_12__.composeEventHandlers)(onOpenAutoFocus, (event)=>{\n event.preventDefault();\n contentRef.current?.focus({\n preventScroll: true\n });\n }),\n onUnmountAutoFocus: onCloseAutoFocus,\n children: /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_radix_ui_react_dismissable_layer__WEBPACK_IMPORTED_MODULE_17__.DismissableLayer, {\n asChild: true,\n disableOutsidePointerEvents,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onInteractOutside,\n onDismiss,\n children: /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_radix_ui_react_roving_focus__WEBPACK_IMPORTED_MODULE_5__.Root, {\n asChild: true,\n ...rovingFocusGroupScope,\n dir: rootContext.dir,\n orientation: \"vertical\",\n loop,\n currentTabStopId: currentItemId,\n onCurrentTabStopIdChange: setCurrentItemId,\n onEntryFocus: (0,_radix_ui_primitive__WEBPACK_IMPORTED_MODULE_12__.composeEventHandlers)(onEntryFocus, (event)=>{\n if (!rootContext.isUsingKeyboardRef.current) event.preventDefault();\n }),\n preventScrollOnEntryFocus: true,\n children: /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_radix_ui_react_popper__WEBPACK_IMPORTED_MODULE_4__.Content, {\n role: \"menu\",\n \"aria-orientation\": \"vertical\",\n \"data-state\": getOpenState(context.open),\n \"data-radix-menu-content\": \"\",\n dir: rootContext.dir,\n ...popperScope,\n ...contentProps,\n ref: composedRefs,\n style: {\n outline: \"none\",\n ...contentProps.style\n },\n onKeyDown: (0,_radix_ui_primitive__WEBPACK_IMPORTED_MODULE_12__.composeEventHandlers)(contentProps.onKeyDown, (event)=>{\n const target = event.target;\n const isKeyDownInside = target.closest(\"[data-radix-menu-content]\") === event.currentTarget;\n const isModifierKey = event.ctrlKey || event.altKey || event.metaKey;\n const isCharacterKey = event.key.length === 1;\n if (isKeyDownInside) {\n if (event.key === \"Tab\") event.preventDefault();\n if (!isModifierKey && isCharacterKey) handleTypeaheadSearch(event.key);\n }\n const content = contentRef.current;\n if (event.target !== content) return;\n if (!FIRST_LAST_KEYS.includes(event.key)) return;\n event.preventDefault();\n const items = getItems().filter((item)=>!item.disabled);\n const candidateNodes = items.map((item)=>item.ref.current);\n if (LAST_KEYS.includes(event.key)) candidateNodes.reverse();\n focusFirst(candidateNodes);\n }),\n onBlur: (0,_radix_ui_primitive__WEBPACK_IMPORTED_MODULE_12__.composeEventHandlers)(props.onBlur, (event)=>{\n if (!event.currentTarget.contains(event.target)) {\n window.clearTimeout(timerRef.current);\n searchRef.current = \"\";\n }\n }),\n onPointerMove: (0,_radix_ui_primitive__WEBPACK_IMPORTED_MODULE_12__.composeEventHandlers)(props.onPointerMove, whenMouse((event)=>{\n const target = event.target;\n const pointerXHasChanged = lastPointerXRef.current !== event.clientX;\n if (event.currentTarget.contains(target) && pointerXHasChanged) {\n const newDir = event.clientX > lastPointerXRef.current ? \"right\" : \"left\";\n pointerDirRef.current = newDir;\n lastPointerXRef.current = event.clientX;\n }\n }))\n })\n })\n })\n })\n })\n });\n});\nMenuContent.displayName = CONTENT_NAME;\nvar GROUP_NAME = \"MenuGroup\";\nvar MenuGroup = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef((props, forwardedRef)=>{\n const { __scopeMenu, ...groupProps } = props;\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_18__.Primitive.div, {\n role: \"group\",\n ...groupProps,\n ref: forwardedRef\n });\n});\nMenuGroup.displayName = GROUP_NAME;\nvar LABEL_NAME = \"MenuLabel\";\nvar MenuLabel = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef((props, forwardedRef)=>{\n const { __scopeMenu, ...labelProps } = props;\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_18__.Primitive.div, {\n ...labelProps,\n ref: forwardedRef\n });\n});\nMenuLabel.displayName = LABEL_NAME;\nvar ITEM_NAME = \"MenuItem\";\nvar ITEM_SELECT = \"menu.itemSelect\";\nvar MenuItem = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef((props, forwardedRef)=>{\n const { disabled = false, onSelect, ...itemProps } = props;\n const ref = react__WEBPACK_IMPORTED_MODULE_0__.useRef(null);\n const rootContext = useMenuRootContext(ITEM_NAME, props.__scopeMenu);\n const contentContext = useMenuContentContext(ITEM_NAME, props.__scopeMenu);\n const composedRefs = (0,_radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_10__.useComposedRefs)(forwardedRef, ref);\n const isPointerDownRef = react__WEBPACK_IMPORTED_MODULE_0__.useRef(false);\n const handleSelect = ()=>{\n const menuItem = ref.current;\n if (!disabled && menuItem) {\n const itemSelectEvent = new CustomEvent(ITEM_SELECT, {\n bubbles: true,\n cancelable: true\n });\n menuItem.addEventListener(ITEM_SELECT, (event)=>onSelect?.(event), {\n once: true\n });\n (0,_radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_18__.dispatchDiscreteCustomEvent)(menuItem, itemSelectEvent);\n if (itemSelectEvent.defaultPrevented) {\n isPointerDownRef.current = false;\n } else {\n rootContext.onClose();\n }\n }\n };\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(MenuItemImpl, {\n ...itemProps,\n ref: composedRefs,\n disabled,\n onClick: (0,_radix_ui_primitive__WEBPACK_IMPORTED_MODULE_12__.composeEventHandlers)(props.onClick, handleSelect),\n onPointerDown: (event)=>{\n props.onPointerDown?.(event);\n isPointerDownRef.current = true;\n },\n onPointerUp: (0,_radix_ui_primitive__WEBPACK_IMPORTED_MODULE_12__.composeEventHandlers)(props.onPointerUp, (event)=>{\n if (!isPointerDownRef.current) event.currentTarget?.click();\n }),\n onKeyDown: (0,_radix_ui_primitive__WEBPACK_IMPORTED_MODULE_12__.composeEventHandlers)(props.onKeyDown, (event)=>{\n const isTypingAhead = contentContext.searchRef.current !== \"\";\n if (disabled || isTypingAhead && event.key === \" \") return;\n if (SELECTION_KEYS.includes(event.key)) {\n event.currentTarget.click();\n event.preventDefault();\n }\n })\n });\n});\nMenuItem.displayName = ITEM_NAME;\nvar MenuItemImpl = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef((props, forwardedRef)=>{\n const { __scopeMenu, disabled = false, textValue, ...itemProps } = props;\n const contentContext = useMenuContentContext(ITEM_NAME, __scopeMenu);\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeMenu);\n const ref = react__WEBPACK_IMPORTED_MODULE_0__.useRef(null);\n const composedRefs = (0,_radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_10__.useComposedRefs)(forwardedRef, ref);\n const [isFocused, setIsFocused] = react__WEBPACK_IMPORTED_MODULE_0__.useState(false);\n const [textContent, setTextContent] = react__WEBPACK_IMPORTED_MODULE_0__.useState(\"\");\n react__WEBPACK_IMPORTED_MODULE_0__.useEffect(()=>{\n const menuItem = ref.current;\n if (menuItem) {\n setTextContent((menuItem.textContent ?? \"\").trim());\n }\n }, [\n itemProps.children\n ]);\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(Collection.ItemSlot, {\n scope: __scopeMenu,\n disabled,\n textValue: textValue ?? textContent,\n children: /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_radix_ui_react_roving_focus__WEBPACK_IMPORTED_MODULE_5__.Item, {\n asChild: true,\n ...rovingFocusGroupScope,\n focusable: !disabled,\n children: /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_18__.Primitive.div, {\n role: \"menuitem\",\n \"data-highlighted\": isFocused ? \"\" : void 0,\n \"aria-disabled\": disabled || void 0,\n \"data-disabled\": disabled ? \"\" : void 0,\n ...itemProps,\n ref: composedRefs,\n onPointerMove: (0,_radix_ui_primitive__WEBPACK_IMPORTED_MODULE_12__.composeEventHandlers)(props.onPointerMove, whenMouse((event)=>{\n if (disabled) {\n contentContext.onItemLeave(event);\n } else {\n contentContext.onItemEnter(event);\n if (!event.defaultPrevented) {\n const item = event.currentTarget;\n item.focus({\n preventScroll: true\n });\n }\n }\n })),\n onPointerLeave: (0,_radix_ui_primitive__WEBPACK_IMPORTED_MODULE_12__.composeEventHandlers)(props.onPointerLeave, whenMouse((event)=>contentContext.onItemLeave(event))),\n onFocus: (0,_radix_ui_primitive__WEBPACK_IMPORTED_MODULE_12__.composeEventHandlers)(props.onFocus, ()=>setIsFocused(true)),\n onBlur: (0,_radix_ui_primitive__WEBPACK_IMPORTED_MODULE_12__.composeEventHandlers)(props.onBlur, ()=>setIsFocused(false))\n })\n })\n });\n});\nvar CHECKBOX_ITEM_NAME = \"MenuCheckboxItem\";\nvar MenuCheckboxItem = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef((props, forwardedRef)=>{\n const { checked = false, onCheckedChange, ...checkboxItemProps } = props;\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(ItemIndicatorProvider, {\n scope: props.__scopeMenu,\n checked,\n children: /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(MenuItem, {\n role: \"menuitemcheckbox\",\n \"aria-checked\": isIndeterminate(checked) ? \"mixed\" : checked,\n ...checkboxItemProps,\n ref: forwardedRef,\n \"data-state\": getCheckedState(checked),\n onSelect: (0,_radix_ui_primitive__WEBPACK_IMPORTED_MODULE_12__.composeEventHandlers)(checkboxItemProps.onSelect, ()=>onCheckedChange?.(isIndeterminate(checked) ? true : !checked), {\n checkForDefaultPrevented: false\n })\n })\n });\n});\nMenuCheckboxItem.displayName = CHECKBOX_ITEM_NAME;\nvar RADIO_GROUP_NAME = \"MenuRadioGroup\";\nvar [RadioGroupProvider, useRadioGroupContext] = createMenuContext(RADIO_GROUP_NAME, {\n value: void 0,\n onValueChange: ()=>{}\n});\nvar MenuRadioGroup = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef((props, forwardedRef)=>{\n const { value, onValueChange, ...groupProps } = props;\n const handleValueChange = (0,_radix_ui_react_use_callback_ref__WEBPACK_IMPORTED_MODULE_6__.useCallbackRef)(onValueChange);\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(RadioGroupProvider, {\n scope: props.__scopeMenu,\n value,\n onValueChange: handleValueChange,\n children: /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(MenuGroup, {\n ...groupProps,\n ref: forwardedRef\n })\n });\n});\nMenuRadioGroup.displayName = RADIO_GROUP_NAME;\nvar RADIO_ITEM_NAME = \"MenuRadioItem\";\nvar MenuRadioItem = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef((props, forwardedRef)=>{\n const { value, ...radioItemProps } = props;\n const context = useRadioGroupContext(RADIO_ITEM_NAME, props.__scopeMenu);\n const checked = value === context.value;\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(ItemIndicatorProvider, {\n scope: props.__scopeMenu,\n checked,\n children: /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(MenuItem, {\n role: \"menuitemradio\",\n \"aria-checked\": checked,\n ...radioItemProps,\n ref: forwardedRef,\n \"data-state\": getCheckedState(checked),\n onSelect: (0,_radix_ui_primitive__WEBPACK_IMPORTED_MODULE_12__.composeEventHandlers)(radioItemProps.onSelect, ()=>context.onValueChange?.(value), {\n checkForDefaultPrevented: false\n })\n })\n });\n});\nMenuRadioItem.displayName = RADIO_ITEM_NAME;\nvar ITEM_INDICATOR_NAME = \"MenuItemIndicator\";\nvar [ItemIndicatorProvider, useItemIndicatorContext] = createMenuContext(ITEM_INDICATOR_NAME, {\n checked: false\n});\nvar MenuItemIndicator = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef((props, forwardedRef)=>{\n const { __scopeMenu, forceMount, ...itemIndicatorProps } = props;\n const indicatorContext = useItemIndicatorContext(ITEM_INDICATOR_NAME, __scopeMenu);\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_radix_ui_react_presence__WEBPACK_IMPORTED_MODULE_8__.Presence, {\n present: forceMount || isIndeterminate(indicatorContext.checked) || indicatorContext.checked === true,\n children: /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_18__.Primitive.span, {\n ...itemIndicatorProps,\n ref: forwardedRef,\n \"data-state\": getCheckedState(indicatorContext.checked)\n })\n });\n});\nMenuItemIndicator.displayName = ITEM_INDICATOR_NAME;\nvar SEPARATOR_NAME = \"MenuSeparator\";\nvar MenuSeparator = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef((props, forwardedRef)=>{\n const { __scopeMenu, ...separatorProps } = props;\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_18__.Primitive.div, {\n role: \"separator\",\n \"aria-orientation\": \"horizontal\",\n ...separatorProps,\n ref: forwardedRef\n });\n});\nMenuSeparator.displayName = SEPARATOR_NAME;\nvar ARROW_NAME = \"MenuArrow\";\nvar MenuArrow = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef((props, forwardedRef)=>{\n const { __scopeMenu, ...arrowProps } = props;\n const popperScope = usePopperScope(__scopeMenu);\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_radix_ui_react_popper__WEBPACK_IMPORTED_MODULE_4__.Arrow, {\n ...popperScope,\n ...arrowProps,\n ref: forwardedRef\n });\n});\nMenuArrow.displayName = ARROW_NAME;\nvar SUB_NAME = \"MenuSub\";\nvar [MenuSubProvider, useMenuSubContext] = createMenuContext(SUB_NAME);\nvar MenuSub = (props)=>{\n const { __scopeMenu, children, open = false, onOpenChange } = props;\n const parentMenuContext = useMenuContext(SUB_NAME, __scopeMenu);\n const popperScope = usePopperScope(__scopeMenu);\n const [trigger, setTrigger] = react__WEBPACK_IMPORTED_MODULE_0__.useState(null);\n const [content, setContent] = react__WEBPACK_IMPORTED_MODULE_0__.useState(null);\n const handleOpenChange = (0,_radix_ui_react_use_callback_ref__WEBPACK_IMPORTED_MODULE_6__.useCallbackRef)(onOpenChange);\n react__WEBPACK_IMPORTED_MODULE_0__.useEffect(()=>{\n if (parentMenuContext.open === false) handleOpenChange(false);\n return ()=>handleOpenChange(false);\n }, [\n parentMenuContext.open,\n handleOpenChange\n ]);\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_radix_ui_react_popper__WEBPACK_IMPORTED_MODULE_4__.Root, {\n ...popperScope,\n children: /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(MenuProvider, {\n scope: __scopeMenu,\n open,\n onOpenChange: handleOpenChange,\n content,\n onContentChange: setContent,\n children: /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(MenuSubProvider, {\n scope: __scopeMenu,\n contentId: (0,_radix_ui_react_id__WEBPACK_IMPORTED_MODULE_19__.useId)(),\n triggerId: (0,_radix_ui_react_id__WEBPACK_IMPORTED_MODULE_19__.useId)(),\n trigger,\n onTriggerChange: setTrigger,\n children\n })\n })\n });\n};\nMenuSub.displayName = SUB_NAME;\nvar SUB_TRIGGER_NAME = \"MenuSubTrigger\";\nvar MenuSubTrigger = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef((props, forwardedRef)=>{\n const context = useMenuContext(SUB_TRIGGER_NAME, props.__scopeMenu);\n const rootContext = useMenuRootContext(SUB_TRIGGER_NAME, props.__scopeMenu);\n const subContext = useMenuSubContext(SUB_TRIGGER_NAME, props.__scopeMenu);\n const contentContext = useMenuContentContext(SUB_TRIGGER_NAME, props.__scopeMenu);\n const openTimerRef = react__WEBPACK_IMPORTED_MODULE_0__.useRef(null);\n const { pointerGraceTimerRef, onPointerGraceIntentChange } = contentContext;\n const scope = {\n __scopeMenu: props.__scopeMenu\n };\n const clearOpenTimer = react__WEBPACK_IMPORTED_MODULE_0__.useCallback(()=>{\n if (openTimerRef.current) window.clearTimeout(openTimerRef.current);\n openTimerRef.current = null;\n }, []);\n react__WEBPACK_IMPORTED_MODULE_0__.useEffect(()=>clearOpenTimer, [\n clearOpenTimer\n ]);\n react__WEBPACK_IMPORTED_MODULE_0__.useEffect(()=>{\n const pointerGraceTimer = pointerGraceTimerRef.current;\n return ()=>{\n window.clearTimeout(pointerGraceTimer);\n onPointerGraceIntentChange(null);\n };\n }, [\n pointerGraceTimerRef,\n onPointerGraceIntentChange\n ]);\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(MenuAnchor, {\n asChild: true,\n ...scope,\n children: /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(MenuItemImpl, {\n id: subContext.triggerId,\n \"aria-haspopup\": \"menu\",\n \"aria-expanded\": context.open,\n \"aria-controls\": subContext.contentId,\n \"data-state\": getOpenState(context.open),\n ...props,\n ref: (0,_radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_10__.composeRefs)(forwardedRef, subContext.onTriggerChange),\n onClick: (event)=>{\n props.onClick?.(event);\n if (props.disabled || event.defaultPrevented) return;\n event.currentTarget.focus();\n if (!context.open) context.onOpenChange(true);\n },\n onPointerMove: (0,_radix_ui_primitive__WEBPACK_IMPORTED_MODULE_12__.composeEventHandlers)(props.onPointerMove, whenMouse((event)=>{\n contentContext.onItemEnter(event);\n if (event.defaultPrevented) return;\n if (!props.disabled && !context.open && !openTimerRef.current) {\n contentContext.onPointerGraceIntentChange(null);\n openTimerRef.current = window.setTimeout(()=>{\n context.onOpenChange(true);\n clearOpenTimer();\n }, 100);\n }\n })),\n onPointerLeave: (0,_radix_ui_primitive__WEBPACK_IMPORTED_MODULE_12__.composeEventHandlers)(props.onPointerLeave, whenMouse((event)=>{\n clearOpenTimer();\n const contentRect = context.content?.getBoundingClientRect();\n if (contentRect) {\n const side = context.content?.dataset.side;\n const rightSide = side === \"right\";\n const bleed = rightSide ? -5 : 5;\n const contentNearEdge = contentRect[rightSide ? \"left\" : \"right\"];\n const contentFarEdge = contentRect[rightSide ? \"right\" : \"left\"];\n contentContext.onPointerGraceIntentChange({\n area: [\n // Apply a bleed on clientX to ensure that our exit point is\n // consistently within polygon bounds\n {\n x: event.clientX + bleed,\n y: event.clientY\n },\n {\n x: contentNearEdge,\n y: contentRect.top\n },\n {\n x: contentFarEdge,\n y: contentRect.top\n },\n {\n x: contentFarEdge,\n y: contentRect.bottom\n },\n {\n x: contentNearEdge,\n y: contentRect.bottom\n }\n ],\n side\n });\n window.clearTimeout(pointerGraceTimerRef.current);\n pointerGraceTimerRef.current = window.setTimeout(()=>contentContext.onPointerGraceIntentChange(null), 300);\n } else {\n contentContext.onTriggerLeave(event);\n if (event.defaultPrevented) return;\n contentContext.onPointerGraceIntentChange(null);\n }\n })),\n onKeyDown: (0,_radix_ui_primitive__WEBPACK_IMPORTED_MODULE_12__.composeEventHandlers)(props.onKeyDown, (event)=>{\n const isTypingAhead = contentContext.searchRef.current !== \"\";\n if (props.disabled || isTypingAhead && event.key === \" \") return;\n if (SUB_OPEN_KEYS[rootContext.dir].includes(event.key)) {\n context.onOpenChange(true);\n context.content?.focus();\n event.preventDefault();\n }\n })\n })\n });\n});\nMenuSubTrigger.displayName = SUB_TRIGGER_NAME;\nvar SUB_CONTENT_NAME = \"MenuSubContent\";\nvar MenuSubContent = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef((props, forwardedRef)=>{\n const portalContext = usePortalContext(CONTENT_NAME, props.__scopeMenu);\n const { forceMount = portalContext.forceMount, ...subContentProps } = props;\n const context = useMenuContext(CONTENT_NAME, props.__scopeMenu);\n const rootContext = useMenuRootContext(CONTENT_NAME, props.__scopeMenu);\n const subContext = useMenuSubContext(SUB_CONTENT_NAME, props.__scopeMenu);\n const ref = react__WEBPACK_IMPORTED_MODULE_0__.useRef(null);\n const composedRefs = (0,_radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_10__.useComposedRefs)(forwardedRef, ref);\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(Collection.Provider, {\n scope: props.__scopeMenu,\n children: /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_radix_ui_react_presence__WEBPACK_IMPORTED_MODULE_8__.Presence, {\n present: forceMount || context.open,\n children: /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(Collection.Slot, {\n scope: props.__scopeMenu,\n children: /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(MenuContentImpl, {\n id: subContext.contentId,\n \"aria-labelledby\": subContext.triggerId,\n ...subContentProps,\n ref: composedRefs,\n align: \"start\",\n side: rootContext.dir === \"rtl\" ? \"left\" : \"right\",\n disableOutsidePointerEvents: false,\n disableOutsideScroll: false,\n trapFocus: false,\n onOpenAutoFocus: (event)=>{\n if (rootContext.isUsingKeyboardRef.current) ref.current?.focus();\n event.preventDefault();\n },\n onCloseAutoFocus: (event)=>event.preventDefault(),\n onFocusOutside: (0,_radix_ui_primitive__WEBPACK_IMPORTED_MODULE_12__.composeEventHandlers)(props.onFocusOutside, (event)=>{\n if (event.target !== subContext.trigger) context.onOpenChange(false);\n }),\n onEscapeKeyDown: (0,_radix_ui_primitive__WEBPACK_IMPORTED_MODULE_12__.composeEventHandlers)(props.onEscapeKeyDown, (event)=>{\n rootContext.onClose();\n event.preventDefault();\n }),\n onKeyDown: (0,_radix_ui_primitive__WEBPACK_IMPORTED_MODULE_12__.composeEventHandlers)(props.onKeyDown, (event)=>{\n const isKeyDownInside = event.currentTarget.contains(event.target);\n const isCloseKey = SUB_CLOSE_KEYS[rootContext.dir].includes(event.key);\n if (isKeyDownInside && isCloseKey) {\n context.onOpenChange(false);\n subContext.trigger?.focus();\n event.preventDefault();\n }\n })\n })\n })\n })\n });\n});\nMenuSubContent.displayName = SUB_CONTENT_NAME;\nfunction getOpenState(open) {\n return open ? \"open\" : \"closed\";\n}\nfunction isIndeterminate(checked) {\n return checked === \"indeterminate\";\n}\nfunction getCheckedState(checked) {\n return isIndeterminate(checked) ? \"indeterminate\" : checked ? \"checked\" : \"unchecked\";\n}\nfunction focusFirst(candidates) {\n const PREVIOUSLY_FOCUSED_ELEMENT = document.activeElement;\n for (const candidate of candidates){\n if (candidate === PREVIOUSLY_FOCUSED_ELEMENT) return;\n candidate.focus();\n if (document.activeElement !== PREVIOUSLY_FOCUSED_ELEMENT) return;\n }\n}\nfunction wrapArray(array, startIndex) {\n return array.map((_, index)=>array[(startIndex + index) % array.length]);\n}\nfunction getNextMatch(values, search, currentMatch) {\n const isRepeated = search.length > 1 && Array.from(search).every((char)=>char === search[0]);\n const normalizedSearch = isRepeated ? search[0] : search;\n const currentMatchIndex = currentMatch ? values.indexOf(currentMatch) : -1;\n let wrappedValues = wrapArray(values, Math.max(currentMatchIndex, 0));\n const excludeCurrentMatch = normalizedSearch.length === 1;\n if (excludeCurrentMatch) wrappedValues = wrappedValues.filter((v)=>v !== currentMatch);\n const nextMatch = wrappedValues.find((value)=>value.toLowerCase().startsWith(normalizedSearch.toLowerCase()));\n return nextMatch !== currentMatch ? nextMatch : void 0;\n}\nfunction isPointInPolygon(point, polygon) {\n const { x, y } = point;\n let inside = false;\n for(let i = 0, j = polygon.length - 1; i < polygon.length; j = i++){\n const xi = polygon[i].x;\n const yi = polygon[i].y;\n const xj = polygon[j].x;\n const yj = polygon[j].y;\n const intersect = yi > y !== yj > y && x < (xj - xi) * (y - yi) / (yj - yi) + xi;\n if (intersect) inside = !inside;\n }\n return inside;\n}\nfunction isPointerInGraceArea(event, area) {\n if (!area) return false;\n const cursorPos = {\n x: event.clientX,\n y: event.clientY\n };\n return isPointInPolygon(cursorPos, area);\n}\nfunction whenMouse(handler) {\n return (event)=>event.pointerType === \"mouse\" ? handler(event) : void 0;\n}\nvar Root3 = Menu;\nvar Anchor2 = MenuAnchor;\nvar Portal = MenuPortal;\nvar Content2 = MenuContent;\nvar Group = MenuGroup;\nvar Label = MenuLabel;\nvar Item2 = MenuItem;\nvar CheckboxItem = MenuCheckboxItem;\nvar RadioGroup = MenuRadioGroup;\nvar RadioItem = MenuRadioItem;\nvar ItemIndicator = MenuItemIndicator;\nvar Separator = MenuSeparator;\nvar Arrow2 = MenuArrow;\nvar Sub = MenuSub;\nvar SubTrigger = MenuSubTrigger;\nvar SubContent = MenuSubContent;\n //# sourceMappingURL=index.mjs.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LW1lbnUvZGlzdC9pbmRleC5tanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQXVCO0FBQ2M7QUFDSjtBQUNZO0FBQ1Y7QUFDTjtBQUNJO0FBQ0Y7QUFDSjtBQUNMO0FBQ1c7QUFDQztBQUNRO0FBQ2pCO0FBQzhCO0FBQ3JCO0FBQ1U7QUFDdkI7QUFDVTtBQUNKO0FBQ0U7QUFvR3JCO0FBOUZSLElBQU15QixpQkFBaUI7SUFBQztJQUFTO0NBQUc7QUFDcEMsSUFBTUMsYUFBYTtJQUFDO0lBQWE7SUFBVTtDQUFNO0FBQ2pELElBQU1DLFlBQVk7SUFBQztJQUFXO0lBQVk7Q0FBSztBQUMvQyxJQUFNQyxrQkFBa0I7T0FBSUY7T0FBZUM7Q0FBUztBQUNwRCxJQUFNRSxnQkFBNkM7SUFDakRDLEtBQUs7V0FBSUw7UUFBZ0I7S0FBWTtJQUNyQ00sS0FBSztXQUFJTjtRQUFnQjtLQUFXO0FBQ3RDO0FBQ0EsSUFBTU8saUJBQThDO0lBQ2xERixLQUFLO1FBQUM7S0FBVztJQUNqQkMsS0FBSztRQUFDO0tBQVk7QUFDcEI7QUFNQSxJQUFNRSxZQUFZO0FBR2xCLElBQU0sQ0FBQ0MsWUFBWUMsZUFBZUMsc0JBQXFCLEdBQUlsQyw0RUFBZ0JBLENBR3pFK0I7QUFHRixJQUFNLENBQUNJLG1CQUFtQkMsZ0JBQWUsR0FBSWpDLDJFQUFrQkEsQ0FBQzRCLFdBQVc7SUFDekVHO0lBQ0F4QixxRUFBaUJBO0lBQ2pCTyxxRkFBMkJBO0NBQzVCO0FBQ0QsSUFBTW9CLGlCQUFpQjNCLHlFQUFpQkE7QUFDeEMsSUFBTTRCLDJCQUEyQnJCLHlGQUEyQkE7QUFTNUQsSUFBTSxDQUFDc0IsY0FBY0MsZUFBYyxHQUFJTCxrQkFBb0NKO0FBUzNFLElBQU0sQ0FBQ1Usa0JBQWtCQyxtQkFBa0IsR0FBSVAsa0JBQXdDSjtBQVV2RixJQUFNWSxPQUE0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UXRJO0FBQ2QsSUFBTTRCLFFBQU94QjtBQUNiLElBQU1tSSxlQUFldEc7QUFDckIsSUFBTXVHLGFBQWE1RjtBQUNuQixJQUFNNkYsWUFBWTFGO0FBQ2xCLElBQU0yRixnQkFBZ0J2RjtBQUN0QixJQUFNd0YsWUFBWW5GO0FBQ2xCLElBQU1LLFNBQVFGO0FBQ2QsSUFBTWlGLE1BQU0zRTtBQUNaLElBQU00RSxhQUFhcEU7QUFDbkIsSUFBTXFFLGFBQWFsRCIsInNvdXJjZXMiOlsid2VicGFjazovL215LXYwLXByb2plY3QvLi4vc3JjL01lbnUudHN4Pzk5ZWUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgY29tcG9zZUV2ZW50SGFuZGxlcnMgfSBmcm9tICdAcmFkaXgtdWkvcHJpbWl0aXZlJztcbmltcG9ydCB7IGNyZWF0ZUNvbGxlY3Rpb24gfSBmcm9tICdAcmFkaXgtdWkvcmVhY3QtY29sbGVjdGlvbic7XG5pbXBvcnQgeyB1c2VDb21wb3NlZFJlZnMsIGNvbXBvc2VSZWZzIH0gZnJvbSAnQHJhZGl4LXVpL3JlYWN0LWNvbXBvc2UtcmVmcyc7XG5pbXBvcnQgeyBjcmVhdGVDb250ZXh0U2NvcGUgfSBmcm9tICdAcmFkaXgtdWkvcmVhY3QtY29udGV4dCc7XG5pbXBvcnQgeyB1c2VEaXJlY3Rpb24gfSBmcm9tICdAcmFkaXgtdWkvcmVhY3QtZGlyZWN0aW9uJztcbmltcG9ydCB7IERpc21pc3NhYmxlTGF5ZXIgfSBmcm9tICdAcmFkaXgtdWkvcmVhY3QtZGlzbWlzc2FibGUtbGF5ZXInO1xuaW1wb3J0IHsgdXNlRm9jdXNHdWFyZHMgfSBmcm9tICdAcmFkaXgtdWkvcmVhY3QtZm9jdXMtZ3VhcmRzJztcbmltcG9ydCB7IEZvY3VzU2NvcGUgfSBmcm9tICdAcmFkaXgtdWkvcmVhY3QtZm9jdXMtc2NvcGUnO1xuaW1wb3J0IHsgdXNlSWQgfSBmcm9tICdAcmFkaXgtdWkvcmVhY3QtaWQnO1xuaW1wb3J0ICogYXMgUG9wcGVyUHJpbWl0aXZlIGZyb20gJ0ByYWRpeC11aS9yZWFjdC1wb3BwZXInO1xuaW1wb3J0IHsgY3JlYXRlUG9wcGVyU2NvcGUgfSBmcm9tICdAcmFkaXgtdWkvcmVhY3QtcG9wcGVyJztcbmltcG9ydCB7IFBvcnRhbCBhcyBQb3J0YWxQcmltaXRpdmUgfSBmcm9tICdAcmFkaXgtdWkvcmVhY3QtcG9ydGFsJztcbmltcG9ydCB7IFByZXNlbmNlIH0gZnJvbSAnQHJhZGl4LXVpL3JlYWN0LXByZXNlbmNlJztcbmltcG9ydCB7IFByaW1pdGl2ZSwgZGlzcGF0Y2hEaXNjcmV0ZUN1c3RvbUV2ZW50IH0gZnJvbSAnQHJhZGl4LXVpL3JlYWN0LXByaW1pdGl2ZSc7XG5pbXBvcnQgKiBhcyBSb3ZpbmdGb2N1c0dyb3VwIGZyb20gJ0ByYWRpeC11aS9yZWFjdC1yb3ZpbmctZm9jdXMnO1xuaW1wb3J0IHsgY3JlYXRlUm92aW5nRm9jdXNHcm91cFNjb3BlIH0gZnJvbSAnQHJhZGl4LXVpL3JlYWN0LXJvdmluZy1mb2N1cyc7XG5pbXBvcnQgeyBTbG90IH0gZnJvbSAnQHJhZGl4LXVpL3JlYWN0LXNsb3QnO1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2tSZWYgfSBmcm9tICdAcmFkaXgtdWkvcmVhY3QtdXNlLWNhbGxiYWNrLXJlZic7XG5pbXBvcnQgeyBoaWRlT3RoZXJzIH0gZnJvbSAnYXJpYS1oaWRkZW4nO1xuaW1wb3J0IHsgUmVtb3ZlU2Nyb2xsIH0gZnJvbSAncmVhY3QtcmVtb3ZlLXNjcm9sbCc7XG5cbmltcG9ydCB0eXBlIHsgU2NvcGUgfSBmcm9tICdAcmFkaXgtdWkvcmVhY3QtY29udGV4dCc7XG5cbnR5cGUgRGlyZWN0aW9uID0gJ2x0cicgfCAncnRsJztcblxuY29uc3QgU0VMRUNUSU9OX0tFWVMgPSBbJ0VudGVyJywgJyAnXTtcbmNvbnN0IEZJUlNUX0tFWVMgPSBbJ0Fycm93RG93bicsICdQYWdlVXAnLCAnSG9tZSddO1xuY29uc3QgTEFTVF9LRVlTID0gWydBcnJvd1VwJywgJ1BhZ2VEb3duJywgJ0VuZCddO1xuY29uc3QgRklSU1RfTEFTVF9LRVlTID0gWy4uLkZJUlNUX0tFWVMsIC4uLkxBU1RfS0VZU107XG5jb25zdCBTVUJfT1BFTl9LRVlTOiBSZWNvcmQ8RGlyZWN0aW9uLCBzdHJpbmdbXT4gPSB7XG4gIGx0cjogWy4uLlNFTEVDVElPTl9LRVlTLCAnQXJyb3dSaWdodCddLFxuICBydGw6IFsuLi5TRUxFQ1RJT05fS0VZUywgJ0Fycm93TGVmdCddLFxufTtcbmNvbnN0IFNVQl9DTE9TRV9LRVlTOiBSZWNvcmQ8RGlyZWN0aW9uLCBzdHJpbmdbXT4gPSB7XG4gIGx0cjogWydBcnJvd0xlZnQnXSxcbiAgcnRsOiBbJ0Fycm93UmlnaHQnXSxcbn07XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIE1lbnVcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuY29uc3QgTUVOVV9OQU1FID0gJ01lbnUnO1xuXG50eXBlIEl0ZW1EYXRhID0geyBkaXNhYmxlZDogYm9vbGVhbjsgdGV4dFZhbHVlOiBzdHJpbmcgfTtcbmNvbnN0IFtDb2xsZWN0aW9uLCB1c2VDb2xsZWN0aW9uLCBjcmVhdGVDb2xsZWN0aW9uU2NvcGVdID0gY3JlYXRlQ29sbGVjdGlvbjxcbiAgTWVudUl0ZW1FbGVtZW50LFxuICBJdGVtRGF0YVxuPihNRU5VX05BTUUpO1xuXG50eXBlIFNjb3BlZFByb3BzPFA+ID0gUCAmIHsgX19zY29wZU1lbnU/OiBTY29wZSB9O1xuY29uc3QgW2NyZWF0ZU1lbnVDb250ZXh0LCBjcmVhdGVNZW51U2NvcGVdID0gY3JlYXRlQ29udGV4dFNjb3BlKE1FTlVfTkFNRSwgW1xuICBjcmVhdGVDb2xsZWN0aW9uU2NvcGUsXG4gIGNyZWF0ZVBvcHBlclNjb3BlLFxuICBjcmVhdGVSb3ZpbmdGb2N1c0dyb3VwU2NvcGUsXG5dKTtcbmNvbnN0IHVzZVBvcHBlclNjb3BlID0gY3JlYXRlUG9wcGVyU2NvcGUoKTtcbmNvbnN0IHVzZVJvdmluZ0ZvY3VzR3JvdXBTY29wZSA9IGNyZWF0ZVJvdmluZ0ZvY3VzR3JvdXBTY29wZSgpO1xuXG50eXBlIE1lbnVDb250ZXh0VmFsdWUgPSB7XG4gIG9wZW46IGJvb2xlYW47XG4gIG9uT3BlbkNoYW5nZShvcGVuOiBib29sZWFuKTogdm9pZDtcbiAgY29udGVudDogTWVudUNvbnRlbnRFbGVtZW50IHwgbnVsbDtcbiAgb25Db250ZW50Q2hhbmdlKGNvbnRlbnQ6IE1lbnVDb250ZW50RWxlbWVudCB8IG51bGwpOiB2b2lkO1xufTtcblxuY29uc3QgW01lbnVQcm92aWRlciwgdXNlTWVudUNvbnRleHRdID0gY3JlYXRlTWVudUNvbnRleHQ8TWVudUNvbnRleHRWYWx1ZT4oTUVOVV9OQU1FKTtcblxudHlwZSBNZW51Um9vdENvbnRleHRWYWx1ZSA9IHtcbiAgb25DbG9zZSgpOiB2b2lkO1xuICBpc1VzaW5nS2V5Ym9hcmRSZWY6IFJlYWN0LlJlZk9iamVjdDxib29sZWFuPjtcbiAgZGlyOiBEaXJlY3Rpb247XG4gIG1vZGFsOiBib29sZWFuO1xufTtcblxuY29uc3QgW01lbnVSb290UHJvdmlkZXIsIHVzZU1lbnVSb290Q29udGV4dF0gPSBjcmVhdGVNZW51Q29udGV4dDxNZW51Um9vdENvbnRleHRWYWx1ZT4oTUVOVV9OQU1FKTtcblxuaW50ZXJmYWNlIE1lbnVQcm9wcyB7XG4gIGNoaWxkcmVuPzogUmVhY3QuUmVhY3ROb2RlO1xuICBvcGVuPzogYm9vbGVhbjtcbiAgb25PcGVuQ2hhbmdlPyhvcGVuOiBib29sZWFuKTogdm9pZDtcbiAgZGlyPzogRGlyZWN0aW9uO1xuICBtb2RhbD86IGJvb2xlYW47XG59XG5cbmNvbnN0IE1lbnU6IFJlYWN0LkZDPE1lbnVQcm9wcz4gPSAocHJvcHM6IFNjb3BlZFByb3BzPE1lbnVQcm9wcz4pID0+IHtcbiAgY29uc3QgeyBfX3Njb3BlTWVudSwgb3BlbiA9IGZhbHNlLCBjaGlsZHJlbiwgZGlyLCBvbk9wZW5DaGFuZ2UsIG1vZGFsID0gdHJ1ZSB9ID0gcHJvcHM7XG4gIGNvbnN0IHBvcHBlclNjb3BlID0gdXNlUG9wcGVyU2NvcGUoX19zY29wZU1lbnUpO1xuICBjb25zdCBbY29udGVudCwgc2V0Q29udGVudF0gPSBSZWFjdC51c2VTdGF0ZTxNZW51Q29udGVudEVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgY29uc3QgaXNVc2luZ0tleWJvYXJkUmVmID0gUmVhY3QudXNlUmVmKGZhbHNlKTtcbiAgY29uc3QgaGFuZGxlT3BlbkNoYW5nZSA9IHVzZUNhbGxiYWNrUmVmKG9uT3BlbkNoYW5nZSk7XG4gIGNvbnN0IGRpcmVjdGlvbiA9IHVzZURpcmVjdGlvbihkaXIpO1xuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgLy8gQ2FwdHVyZSBwaGFzZSBlbnN1cmVzIHdlIHNldCB0aGUgYm9vbGVhbiBiZWZvcmUgYW55IHNpZGUgZWZmZWN0cyBleGVjdXRlXG4gICAgLy8gaW4gcmVzcG9uc2UgdG8gdGhlIGtleSBvciBwb2ludGVyIGV2ZW50IGFzIHRoZXkgbWlnaHQgZGVwZW5kIG9uIHRoaXMgdmFsdWUuXG4gICAgY29uc3QgaGFuZGxlS2V5RG93biA9ICgpID0+IHtcbiAgICAgIGlzVXNpbmdLZXlib2FyZFJlZi5jdXJyZW50ID0gdHJ1ZTtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJkb3duJywgaGFuZGxlUG9pbnRlciwgeyBjYXB0dXJlOiB0cnVlLCBvbmNlOiB0cnVlIH0pO1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigncG9pbnRlcm1vdmUnLCBoYW5kbGVQb2ludGVyLCB7IGNhcHR1cmU6IHRydWUsIG9uY2U6IHRydWUgfSk7XG4gICAgfTtcbiAgICBjb25zdCBoYW5kbGVQb2ludGVyID0gKCkgPT4gKGlzVXNpbmdLZXlib2FyZFJlZi5jdXJyZW50ID0gZmFsc2UpO1xuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBoYW5kbGVLZXlEb3duLCB7IGNhcHR1cmU6IHRydWUgfSk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBoYW5kbGVLZXlEb3duLCB7IGNhcHR1cmU6IHRydWUgfSk7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdwb2ludGVyZG93bicsIGhhbmRsZVBvaW50ZXIsIHsgY2FwdHVyZTogdHJ1ZSB9KTtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJtb3ZlJywgaGFuZGxlUG9pbnRlciwgeyBjYXB0dXJlOiB0cnVlIH0pO1xuICAgIH07XG4gIH0sIFtdKTtcblxuICByZXR1cm4gKFxuICAgIDxQb3BwZXJQcmltaXRpdmUuUm9vdCB7Li4ucG9wcGVyU2NvcGV9PlxuICAgICAgPE1lbnVQcm92aWRlclxuICAgICAgICBzY29wZT17X19zY29wZU1lbnV9XG4gICAgICAgIG9wZW49e29wZW59XG4gICAgICAgIG9uT3BlbkNoYW5nZT17aGFuZGxlT3BlbkNoYW5nZX1cbiAgICAgICAgY29udGVudD17Y29udGVudH1cbiAgICAgICAgb25Db250ZW50Q2hhbmdlPXtzZXRDb250ZW50fVxuICAgICAgPlxuICAgICAgICA8TWVudVJvb3RQcm92aWRlclxuICAgICAgICAgIHNjb3BlPXtfX3Njb3BlTWVudX1cbiAgICAgICAgICBvbkNsb3NlPXtSZWFjdC51c2VDYWxsYmFjaygoKSA9PiBoYW5kbGVPcGVuQ2hhbmdlKGZhbHNlKSwgW2hhbmRsZU9wZW5DaGFuZ2VdKX1cbiAgICAgICAgICBpc1VzaW5nS2V5Ym9hcmRSZWY9e2lzVXNpbmdLZXlib2FyZFJlZn1cbiAgICAgICAgICBkaXI9e2RpcmVjdGlvbn1cbiAgICAgICAgICBtb2RhbD17bW9kYWx9XG4gICAgICAgID5cbiAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgIDwvTWVudVJvb3RQcm92aWRlcj5cbiAgICAgIDwvTWVudVByb3ZpZGVyPlxuICAgIDwvUG9wcGVyUHJpbWl0aXZlLlJvb3Q+XG4gICk7XG59O1xuXG5NZW51LmRpc3BsYXlOYW1lID0gTUVOVV9OQU1FO1xuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBNZW51QW5jaG9yXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbmNvbnN0IEFOQ0hPUl9OQU1FID0gJ01lbnVBbmNob3InO1xuXG50eXBlIE1lbnVBbmNob3JFbGVtZW50ID0gUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgUG9wcGVyUHJpbWl0aXZlLkFuY2hvcj47XG50eXBlIFBvcHBlckFuY2hvclByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBQb3BwZXJQcmltaXRpdmUuQW5jaG9yPjtcbmludGVyZmFjZSBNZW51QW5jaG9yUHJvcHMgZXh0ZW5kcyBQb3BwZXJBbmNob3JQcm9wcyB7fVxuXG5jb25zdCBNZW51QW5jaG9yID0gUmVhY3QuZm9yd2FyZFJlZjxNZW51QW5jaG9yRWxlbWVudCwgTWVudUFuY2hvclByb3BzPihcbiAgKHByb3BzOiBTY29wZWRQcm9wczxNZW51QW5jaG9yUHJvcHM+LCBmb3J3YXJkZWRSZWYpID0+IHtcbiAgICBjb25zdCB7IF9fc2NvcGVNZW51LCAuLi5hbmNob3JQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgcG9wcGVyU2NvcGUgPSB1c2VQb3BwZXJTY29wZShfX3Njb3BlTWVudSk7XG4gICAgcmV0dXJuIDxQb3BwZXJQcmltaXRpdmUuQW5jaG9yIHsuLi5wb3BwZXJTY29wZX0gey4uLmFuY2hvclByb3BzfSByZWY9e2ZvcndhcmRlZFJlZn0gLz47XG4gIH1cbik7XG5cbk1lbnVBbmNob3IuZGlzcGxheU5hbWUgPSBBTkNIT1JfTkFNRTtcblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogTWVudVBvcnRhbFxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG5jb25zdCBQT1JUQUxfTkFNRSA9ICdNZW51UG9ydGFsJztcblxudHlwZSBQb3J0YWxDb250ZXh0VmFsdWUgPSB7IGZvcmNlTW91bnQ/OiB0cnVlIH07XG5jb25zdCBbUG9ydGFsUHJvdmlkZXIsIHVzZVBvcnRhbENvbnRleHRdID0gY3JlYXRlTWVudUNvbnRleHQ8UG9ydGFsQ29udGV4dFZhbHVlPihQT1JUQUxfTkFNRSwge1xuICBmb3JjZU1vdW50OiB1bmRlZmluZWQsXG59KTtcblxudHlwZSBQb3J0YWxQcm9wcyA9IFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgUG9ydGFsUHJpbWl0aXZlPjtcbmludGVyZmFjZSBNZW51UG9ydGFsUHJvcHMge1xuICBjaGlsZHJlbj86IFJlYWN0LlJlYWN0Tm9kZTtcbiAgLyoqXG4gICAqIFNwZWNpZnkgYSBjb250YWluZXIgZWxlbWVudCB0byBwb3J0YWwgdGhlIGNvbnRlbnQgaW50by5cbiAgICovXG4gIGNvbnRhaW5lcj86IFBvcnRhbFByb3BzWydjb250YWluZXInXTtcbiAgLyoqXG4gICAqIFVzZWQgdG8gZm9yY2UgbW91bnRpbmcgd2hlbiBtb3JlIGNvbnRyb2wgaXMgbmVlZGVkLiBVc2VmdWwgd2hlblxuICAgKiBjb250cm9sbGluZyBhbmltYXRpb24gd2l0aCBSZWFjdCBhbmltYXRpb24gbGlicmFyaWVzLlxuICAgKi9cbiAgZm9yY2VNb3VudD86IHRydWU7XG59XG5cbmNvbnN0IE1lbnVQb3J0YWw6IFJlYWN0LkZDPE1lbnVQb3J0YWxQcm9wcz4gPSAocHJvcHM6IFNjb3BlZFByb3BzPE1lbnVQb3J0YWxQcm9wcz4pID0+IHtcbiAgY29uc3QgeyBfX3Njb3BlTWVudSwgZm9yY2VNb3VudCwgY2hpbGRyZW4sIGNvbnRhaW5lciB9ID0gcHJvcHM7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VNZW51Q29udGV4dChQT1JUQUxfTkFNRSwgX19zY29wZU1lbnUpO1xuICByZXR1cm4gKFxuICAgIDxQb3J0YWxQcm92aWRlciBzY29wZT17X19zY29wZU1lbnV9IGZvcmNlTW91bnQ9e2ZvcmNlTW91bnR9PlxuICAgICAgPFByZXNlbmNlIHByZXNlbnQ9e2ZvcmNlTW91bnQgfHwgY29udGV4dC5vcGVufT5cbiAgICAgICAgPFBvcnRhbFByaW1pdGl2ZSBhc0NoaWxkIGNvbnRhaW5lcj17Y29udGFpbmVyfT5cbiAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgIDwvUG9ydGFsUHJpbWl0aXZlPlxuICAgICAgPC9QcmVzZW5jZT5cbiAgICA8L1BvcnRhbFByb3ZpZGVyPlxuICApO1xufTtcblxuTWVudVBvcnRhbC5kaXNwbGF5TmFtZSA9IFBPUlRBTF9OQU1FO1xuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBNZW51Q29udGVudFxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG5jb25zdCBDT05URU5UX05BTUUgPSAnTWVudUNvbnRlbnQnO1xuXG50eXBlIE1lbnVDb250ZW50Q29udGV4dFZhbHVlID0ge1xuICBvbkl0ZW1FbnRlcihldmVudDogUmVhY3QuUG9pbnRlckV2ZW50KTogdm9pZDtcbiAgb25JdGVtTGVhdmUoZXZlbnQ6IFJlYWN0LlBvaW50ZXJFdmVudCk6IHZvaWQ7XG4gIG9uVHJpZ2dlckxlYXZlKGV2ZW50OiBSZWFjdC5Qb2ludGVyRXZlbnQpOiB2b2lkO1xuICBzZWFyY2hSZWY6IFJlYWN0LlJlZk9iamVjdDxzdHJpbmc+O1xuICBwb2ludGVyR3JhY2VUaW1lclJlZjogUmVhY3QuTXV0YWJsZVJlZk9iamVjdDxudW1iZXI+O1xuICBvblBvaW50ZXJHcmFjZUludGVudENoYW5nZShpbnRlbnQ6IEdyYWNlSW50ZW50IHwgbnVsbCk6IHZvaWQ7XG59O1xuY29uc3QgW01lbnVDb250ZW50UHJvdmlkZXIsIHVzZU1lbnVDb250ZW50Q29udGV4dF0gPVxuICBjcmVhdGVNZW51Q29udGV4dDxNZW51Q29udGVudENvbnRleHRWYWx1ZT4oQ09OVEVOVF9OQU1FKTtcblxudHlwZSBNZW51Q29udGVudEVsZW1lbnQgPSBNZW51Um9vdENvbnRlbnRUeXBlRWxlbWVudDtcbi8qKlxuICogV2UgcHVycG9zZWZ1bGx5IGRvbid0IHVuaW9uIE1lbnVSb290Q29udGVudCBhbmQgTWVudVN1YkNvbnRlbnQgcHJvcHMgaGVyZSBiZWNhdXNlXG4gKiB0aGV5IGhhdmUgY29uZmxpY3RpbmcgcHJvcCB0eXBlcy4gV2UgYWdyZWVkIHRoYXQgd2Ugd291bGQgYWxsb3cgTWVudVN1YkNvbnRlbnQgdG9cbiAqIGFjY2VwdCBwcm9wcyB0aGF0IGl0IHdvdWxkIGp1c3QgaWdub3JlLlxuICovXG5pbnRlcmZhY2UgTWVudUNvbnRlbnRQcm9wcyBleHRlbmRzIE1lbnVSb290Q29udGVudFR5cGVQcm9wcyB7XG4gIC8qKlxuICAgKiBVc2VkIHRvIGZvcmNlIG1vdW50aW5nIHdoZW4gbW9yZSBjb250cm9sIGlzIG5lZWRlZC4gVXNlZnVsIHdoZW5cbiAgICogY29udHJvbGxpbmcgYW5pbWF0aW9uIHdpdGggUmVhY3QgYW5pbWF0aW9uIGxpYnJhcmllcy5cbiAgICovXG4gIGZvcmNlTW91bnQ/OiB0cnVlO1xufVxuXG5jb25zdCBNZW51Q29udGVudCA9IFJlYWN0LmZvcndhcmRSZWY8TWVudUNvbnRlbnRFbGVtZW50LCBNZW51Q29udGVudFByb3BzPihcbiAgKHByb3BzOiBTY29wZWRQcm9wczxNZW51Q29udGVudFByb3BzPiwgZm9yd2FyZGVkUmVmKSA9PiB7XG4gICAgY29uc3QgcG9ydGFsQ29udGV4dCA9IHVzZVBvcnRhbENvbnRleHQoQ09OVEVOVF9OQU1FLCBwcm9wcy5fX3Njb3BlTWVudSk7XG4gICAgY29uc3QgeyBmb3JjZU1vdW50ID0gcG9ydGFsQ29udGV4dC5mb3JjZU1vdW50LCAuLi5jb250ZW50UHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNvbnRleHQgPSB1c2VNZW51Q29udGV4dChDT05URU5UX05BTUUsIHByb3BzLl9fc2NvcGVNZW51KTtcbiAgICBjb25zdCByb290Q29udGV4dCA9IHVzZU1lbnVSb290Q29udGV4dChDT05URU5UX05BTUUsIHByb3BzLl9fc2NvcGVNZW51KTtcblxuICAgIHJldHVybiAoXG4gICAgICA8Q29sbGVjdGlvbi5Qcm92aWRlciBzY29wZT17cHJvcHMuX19zY29wZU1lbnV9PlxuICAgICAgICA8UHJlc2VuY2UgcHJlc2VudD17Zm9yY2VNb3VudCB8fCBjb250ZXh0Lm9wZW59PlxuICAgICAgICAgIDxDb2xsZWN0aW9uLlNsb3Qgc2NvcGU9e3Byb3BzLl9fc2NvcGVNZW51fT5cbiAgICAgICAgICAgIHtyb290Q29udGV4dC5tb2RhbCA/IChcbiAgICAgICAgICAgICAgPE1lbnVSb290Q29udGVudE1vZGFsIHsuLi5jb250ZW50UHJvcHN9IHJlZj17Zm9yd2FyZGVkUmVmfSAvPlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgPE1lbnVSb290Q29udGVudE5vbk1vZGFsIHsuLi5jb250ZW50UHJvcHN9IHJlZj17Zm9yd2FyZGVkUmVmfSAvPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L0NvbGxlY3Rpb24uU2xvdD5cbiAgICAgICAgPC9QcmVzZW5jZT5cbiAgICAgIDwvQ29sbGVjdGlvbi5Qcm92aWRlcj5cbiAgICApO1xuICB9XG4pO1xuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbnR5cGUgTWVudVJvb3RDb250ZW50VHlwZUVsZW1lbnQgPSBNZW51Q29udGVudEltcGxFbGVtZW50O1xuaW50ZXJmYWNlIE1lbnVSb290Q29udGVudFR5cGVQcm9wc1xuICBleHRlbmRzIE9taXQ8TWVudUNvbnRlbnRJbXBsUHJvcHMsIGtleW9mIE1lbnVDb250ZW50SW1wbFByaXZhdGVQcm9wcz4ge31cblxuY29uc3QgTWVudVJvb3RDb250ZW50TW9kYWwgPSBSZWFjdC5mb3J3YXJkUmVmPE1lbnVSb290Q29udGVudFR5cGVFbGVtZW50LCBNZW51Um9vdENvbnRlbnRUeXBlUHJvcHM+KFxuICAocHJvcHM6IFNjb3BlZFByb3BzPE1lbnVSb290Q29udGVudFR5cGVQcm9wcz4sIGZvcndhcmRlZFJlZikgPT4ge1xuICAgIGNvbnN0IGNvbnRleHQgPSB1c2VNZW51Q29udGV4dChDT05URU5UX05BTUUsIHByb3BzLl9fc2NvcGVNZW51KTtcbiAgICBjb25zdCByZWYgPSBSZWFjdC51c2VSZWY8TWVudVJvb3RDb250ZW50VHlwZUVsZW1lbnQ+KG51bGwpO1xuICAgIGNvbnN0IGNvbXBvc2VkUmVmcyA9IHVzZUNvbXBvc2VkUmVmcyhmb3J3YXJkZWRSZWYsIHJlZik7XG5cbiAgICAvLyBIaWRlIGV2ZXJ5dGhpbmcgZnJvbSBBUklBIGV4Y2VwdCB0aGUgYE1lbnVDb250ZW50YFxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCBjb250ZW50ID0gcmVmLmN1cnJlbnQ7XG4gICAgICBpZiAoY29udGVudCkgcmV0dXJuIGhpZGVPdGhlcnMoY29udGVudCk7XG4gICAgfSwgW10pO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxNZW51Q29udGVudEltcGxcbiAgICAgICAgey4uLnByb3BzfVxuICAgICAgICByZWY9e2NvbXBvc2VkUmVmc31cbiAgICAgICAgLy8gd2UgbWFrZSBzdXJlIHdlJ3JlIG5vdCB0cmFwcGluZyBvbmNlIGl0J3MgYmVlbiBjbG9zZWRcbiAgICAgICAgLy8gKGNsb3NlZCAhPT0gdW5tb3VudGVkIHdoZW4gYW5pbWF0aW5nIG91dClcbiAgICAgICAgdHJhcEZvY3VzPXtjb250ZXh0Lm9wZW59XG4gICAgICAgIC8vIG1ha2Ugc3VyZSB0byBvbmx5IGRpc2FibGUgcG9pbnRlciBldmVudHMgd2hlbiBvcGVuXG4gICAgICAgIC8vIHRoaXMgYXZvaWRzIGJsb2NraW5nIGludGVyYWN0aW9ucyB3aGlsZSBhbmltYXRpbmcgb3V0XG4gICAgICAgIGRpc2FibGVPdXRzaWRlUG9pbnRlckV2ZW50cz17Y29udGV4dC5vcGVufVxuICAgICAgICBkaXNhYmxlT3V0c2lkZVNjcm9sbFxuICAgICAgICAvLyBXaGVuIGZvY3VzIGlzIHRyYXBwZWQsIGEgYGZvY3Vzb3V0YCBldmVudCBtYXkgc3RpbGwgaGFwcGVuLlxuICAgICAgICAvLyBXZSBtYWtlIHN1cmUgd2UgZG9uJ3QgdHJpZ2dlciBvdXIgYG9uRGlzbWlzc2AgaW4gc3VjaCBjYXNlLlxuICAgICAgICBvbkZvY3VzT3V0c2lkZT17Y29tcG9zZUV2ZW50SGFuZGxlcnMoXG4gICAgICAgICAgcHJvcHMub25Gb2N1c091dHNpZGUsXG4gICAgICAgICAgKGV2ZW50KSA9PiBldmVudC5wcmV2ZW50RGVmYXVsdCgpLFxuICAgICAgICAgIHsgY2hlY2tGb3JEZWZhdWx0UHJldmVudGVkOiBmYWxzZSB9XG4gICAgICAgICl9XG4gICAgICAgIG9uRGlzbWlzcz17KCkgPT4gY29udGV4dC5vbk9wZW5DaGFuZ2UoZmFsc2UpfVxuICAgICAgLz5cbiAgICApO1xuICB9XG4pO1xuXG5jb25zdCBNZW51Um9vdENvbnRlbnROb25Nb2RhbCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIE1lbnVSb290Q29udGVudFR5cGVFbGVtZW50LFxuICBNZW51Um9vdENvbnRlbnRUeXBlUHJvcHNcbj4oKHByb3BzOiBTY29wZWRQcm9wczxNZW51Um9vdENvbnRlbnRUeXBlUHJvcHM+LCBmb3J3YXJkZWRSZWYpID0+IHtcbiAgY29uc3QgY29udGV4dCA9IHVzZU1lbnVDb250ZXh0KENPTlRFTlRfTkFNRSwgcHJvcHMuX19zY29wZU1lbnUpO1xuICByZXR1cm4gKFxuICAgIDxNZW51Q29udGVudEltcGxcbiAgICAgIHsuLi5wcm9wc31cbiAgICAgIHJlZj17Zm9yd2FyZGVkUmVmfVxuICAgICAgdHJhcEZvY3VzPXtmYWxzZX1cbiAgICAgIGRpc2FibGVPdXRzaWRlUG9pbnRlckV2ZW50cz17ZmFsc2V9XG4gICAgICBkaXNhYmxlT3V0c2lkZVNjcm9sbD17ZmFsc2V9XG4gICAgICBvbkRpc21pc3M9eygpID0+IGNvbnRleHQub25PcGVuQ2hhbmdlKGZhbHNlKX1cbiAgICAvPlxuICApO1xufSk7XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxudHlwZSBNZW51Q29udGVudEltcGxFbGVtZW50ID0gUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgUG9wcGVyUHJpbWl0aXZlLkNvbnRlbnQ+O1xudHlwZSBGb2N1c1Njb3BlUHJvcHMgPSBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIEZvY3VzU2NvcGU+O1xudHlwZSBEaXNtaXNzYWJsZUxheWVyUHJvcHMgPSBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIERpc21pc3NhYmxlTGF5ZXI+O1xudHlwZSBSb3ZpbmdGb2N1c0dyb3VwUHJvcHMgPSBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIFJvdmluZ0ZvY3VzR3JvdXAuUm9vdD47XG50eXBlIFBvcHBlckNvbnRlbnRQcm9wcyA9IFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgUG9wcGVyUHJpbWl0aXZlLkNvbnRlbnQ+O1xudHlwZSBNZW51Q29udGVudEltcGxQcml2YXRlUHJvcHMgPSB7XG4gIG9uT3BlbkF1dG9Gb2N1cz86IEZvY3VzU2NvcGVQcm9wc1snb25Nb3VudEF1dG9Gb2N1cyddO1xuICBvbkRpc21pc3M/OiBEaXNtaXNzYWJsZUxheWVyUHJvcHNbJ29uRGlzbWlzcyddO1xuICBkaXNhYmxlT3V0c2lkZVBvaW50ZXJFdmVudHM/OiBEaXNtaXNzYWJsZUxheWVyUHJvcHNbJ2Rpc2FibGVPdXRzaWRlUG9pbnRlckV2ZW50cyddO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHNjcm9sbGluZyBvdXRzaWRlIHRoZSBgTWVudUNvbnRlbnRgIHNob3VsZCBiZSBwcmV2ZW50ZWRcbiAgICogKGRlZmF1bHQ6IGBmYWxzZWApXG4gICAqL1xuICBkaXNhYmxlT3V0c2lkZVNjcm9sbD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgZm9jdXMgc2hvdWxkIGJlIHRyYXBwZWQgd2l0aGluIHRoZSBgTWVudUNvbnRlbnRgXG4gICAqIChkZWZhdWx0OiBmYWxzZSlcbiAgICovXG4gIHRyYXBGb2N1cz86IEZvY3VzU2NvcGVQcm9wc1sndHJhcHBlZCddO1xufTtcbmludGVyZmFjZSBNZW51Q29udGVudEltcGxQcm9wc1xuICBleHRlbmRzIE1lbnVDb250ZW50SW1wbFByaXZhdGVQcm9wcyxcbiAgICBPbWl0PFBvcHBlckNvbnRlbnRQcm9wcywgJ2RpcicgfCAnb25QbGFjZWQnPiB7XG4gIC8qKlxuICAgKiBFdmVudCBoYW5kbGVyIGNhbGxlZCB3aGVuIGF1dG8tZm9jdXNpbmcgb24gY2xvc2UuXG4gICAqIENhbiBiZSBwcmV2ZW50ZWQuXG4gICAqL1xuICBvbkNsb3NlQXV0b0ZvY3VzPzogRm9jdXNTY29wZVByb3BzWydvblVubW91bnRBdXRvRm9jdXMnXTtcblxuICAvKipcbiAgICogV2hldGhlciBrZXlib2FyZCBuYXZpZ2F0aW9uIHNob3VsZCBsb29wIGFyb3VuZFxuICAgKiBAZGVmYXVsdFZhbHVlIGZhbHNlXG4gICAqL1xuICBsb29wPzogUm92aW5nRm9jdXNHcm91cFByb3BzWydsb29wJ107XG5cbiAgb25FbnRyeUZvY3VzPzogUm92aW5nRm9jdXNHcm91cFByb3BzWydvbkVudHJ5Rm9jdXMnXTtcbiAgb25Fc2NhcGVLZXlEb3duPzogRGlzbWlzc2FibGVMYXllclByb3BzWydvbkVzY2FwZUtleURvd24nXTtcbiAgb25Qb2ludGVyRG93bk91dHNpZGU/OiBEaXNtaXNzYWJsZUxheWVyUHJvcHNbJ29uUG9pbnRlckRvd25PdXRzaWRlJ107XG4gIG9uRm9jdXNPdXRzaWRlPzogRGlzbWlzc2FibGVMYXllclByb3BzWydvbkZvY3VzT3V0c2lkZSddO1xuICBvbkludGVyYWN0T3V0c2lkZT86IERpc21pc3NhYmxlTGF5ZXJQcm9wc1snb25JbnRlcmFjdE91dHNpZGUnXTtcbn1cblxuY29uc3QgTWVudUNvbnRlbnRJbXBsID0gUmVhY3QuZm9yd2FyZFJlZjxNZW51Q29udGVudEltcGxFbGVtZW50LCBNZW51Q29udGVudEltcGxQcm9wcz4oXG4gIChwcm9wczogU2NvcGVkUHJvcHM8TWVudUNvbnRlbnRJbXBsUHJvcHM+LCBmb3J3YXJkZWRSZWYpID0+IHtcbiAgICBjb25zdCB7XG4gICAgICBfX3Njb3BlTWVudSxcbiAgICAgIGxvb3AgPSBmYWxzZSxcbiAgICAgIHRyYXBGb2N1cyxcbiAgICAgIG9uT3BlbkF1dG9Gb2N1cyxcbiAgICAgIG9uQ2xvc2VBdXRvRm9jdXMsXG4gICAgICBkaXNhYmxlT3V0c2lkZVBvaW50ZXJFdmVudHMsXG4gICAgICBvbkVudHJ5Rm9jdXMsXG4gICAgICBvbkVzY2FwZUtleURvd24sXG4gICAgICBvblBvaW50ZXJEb3duT3V0c2lkZSxcbiAgICAgIG9uRm9jdXNPdXRzaWRlLFxuICAgICAgb25JbnRlcmFjdE91dHNpZGUsXG4gICAgICBvbkRpc21pc3MsXG4gICAgICBkaXNhYmxlT3V0c2lkZVNjcm9sbCxcbiAgICAgIC4uLmNvbnRlbnRQcm9wc1xuICAgIH0gPSBwcm9wcztcbiAgICBjb25zdCBjb250ZXh0ID0gdXNlTWVudUNvbnRleHQoQ09OVEVOVF9OQU1FLCBfX3Njb3BlTWVudSk7XG4gICAgY29uc3Qgcm9vdENvbnRleHQgPSB1c2VNZW51Um9vdENvbnRleHQoQ09OVEVOVF9OQU1FLCBfX3Njb3BlTWVudSk7XG4gICAgY29uc3QgcG9wcGVyU2NvcGUgPSB1c2VQb3BwZXJTY29wZShfX3Njb3BlTWVudSk7XG4gICAgY29uc3Qgcm92aW5nRm9jdXNHcm91cFNjb3BlID0gdXNlUm92aW5nRm9jdXNHcm91cFNjb3BlKF9fc2NvcGVNZW51KTtcbiAgICBjb25zdCBnZXRJdGVtcyA9IHVzZUNvbGxlY3Rpb24oX19zY29wZU1lbnUpO1xuICAgIGNvbnN0IFtjdXJyZW50SXRlbUlkLCBzZXRDdXJyZW50SXRlbUlkXSA9IFJlYWN0LnVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpO1xuICAgIGNvbnN0IGNvbnRlbnRSZWYgPSBSZWFjdC51c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpO1xuICAgIGNvbnN0IGNvbXBvc2VkUmVmcyA9IHVzZUNvbXBvc2VkUmVmcyhmb3J3YXJkZWRSZWYsIGNvbnRlbnRSZWYsIGNvbnRleHQub25Db250ZW50Q2hhbmdlKTtcbiAgICBjb25zdCB0aW1lclJlZiA9IFJlYWN0LnVzZVJlZigwKTtcbiAgICBjb25zdCBzZWFyY2hSZWYgPSBSZWFjdC51c2VSZWYoJycpO1xuICAgIGNvbnN0IHBvaW50ZXJHcmFjZVRpbWVyUmVmID0gUmVhY3QudXNlUmVmKDApO1xuICAgIGNvbnN0IHBvaW50ZXJHcmFjZUludGVudFJlZiA9IFJlYWN0LnVzZVJlZjxHcmFjZUludGVudCB8IG51bGw+KG51bGwpO1xuICAgIGNvbnN0IHBvaW50ZXJEaXJSZWYgPSBSZWFjdC51c2VSZWY8U2lkZT4oJ3JpZ2h0Jyk7XG4gICAgY29uc3QgbGFzdFBvaW50ZXJYUmVmID0gUmVhY3QudXNlUmVmKDApO1xuXG4gICAgY29uc3QgU2Nyb2xsTG9ja1dyYXBwZXIgPSBkaXNhYmxlT3V0c2lkZVNjcm9sbCA/IFJlbW92ZVNjcm9sbCA6IFJlYWN0LkZyYWdtZW50O1xuICAgIGNvbnN0IHNjcm9sbExvY2tXcmFwcGVyUHJvcHMgPSBkaXNhYmxlT3V0c2lkZVNjcm9sbFxuICAgICAgPyB7IGFzOiBTbG90LCBhbGxvd1BpbmNoWm9vbTogdHJ1ZSB9XG4gICAgICA6IHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IGhhbmRsZVR5cGVhaGVhZFNlYXJjaCA9IChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgY29uc3Qgc2VhcmNoID0gc2VhcmNoUmVmLmN1cnJlbnQgKyBrZXk7XG4gICAgICBjb25zdCBpdGVtcyA9IGdldEl0ZW1zKCkuZmlsdGVyKChpdGVtKSA9PiAhaXRlbS5kaXNhYmxlZCk7XG4gICAgICBjb25zdCBjdXJyZW50SXRlbSA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7XG4gICAgICBjb25zdCBjdXJyZW50TWF0Y2ggPSBpdGVtcy5maW5kKChpdGVtKSA9PiBpdGVtLnJlZi5jdXJyZW50ID09PSBjdXJyZW50SXRlbSk/LnRleHRWYWx1ZTtcbiAgICAgIGNvbnN0IHZhbHVlcyA9IGl0ZW1zLm1hcCgoaXRlbSkgPT4gaXRlbS50ZXh0VmFsdWUpO1xuICAgICAgY29uc3QgbmV4dE1hdGNoID0gZ2V0TmV4dE1hdGNoKHZhbHVlcywgc2VhcmNoLCBjdXJyZW50TWF0Y2gpO1xuICAgICAgY29uc3QgbmV3SXRlbSA9IGl0ZW1zLmZpbmQoKGl0ZW0pID0+IGl0ZW0udGV4dFZhbHVlID09PSBuZXh0TWF0Y2gpPy5yZWYuY3VycmVudDtcblxuICAgICAgLy8gUmVzZXQgYHNlYXJjaFJlZmAgMSBzZWNvbmQgYWZ0ZXIgaXQgd2FzIGxhc3QgdXBkYXRlZFxuICAgICAgKGZ1bmN0aW9uIHVwZGF0ZVNlYXJjaCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHNlYXJjaFJlZi5jdXJyZW50ID0gdmFsdWU7XG4gICAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQodGltZXJSZWYuY3VycmVudCk7XG4gICAgICAgIGlmICh2YWx1ZSAhPT0gJycpIHRpbWVyUmVmLmN1cnJlbnQgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB1cGRhdGVTZWFyY2goJycpLCAxMDAwKTtcbiAgICAgIH0pKHNlYXJjaCk7XG5cbiAgICAgIGlmIChuZXdJdGVtKSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBJbXBlcmF0aXZlIGZvY3VzIGR1cmluZyBrZXlkb3duIGlzIHJpc2t5IHNvIHdlIHByZXZlbnQgUmVhY3QncyBiYXRjaGluZyB1cGRhdGVzXG4gICAgICAgICAqIHRvIGF2b2lkIHBvdGVudGlhbCBidWdzLiBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvMjAzMzJcbiAgICAgICAgICovXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gKG5ld0l0ZW0gYXMgSFRNTEVsZW1lbnQpLmZvY3VzKCkpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgcmV0dXJuICgpID0+IHdpbmRvdy5jbGVhclRpbWVvdXQodGltZXJSZWYuY3VycmVudCk7XG4gICAgfSwgW10pO1xuXG4gICAgLy8gTWFrZSBzdXJlIHRoZSB3aG9sZSB0cmVlIGhhcyBmb2N1cyBndWFyZHMgYXMgb3VyIGBNZW51Q29udGVudGAgbWF5IGJlXG4gICAgLy8gdGhlIGxhc3QgZWxlbWVudCBpbiB0aGUgRE9NIChiZWNhdXNlIG9mIHRoZSBgUG9ydGFsYClcbiAgICB1c2VGb2N1c0d1YXJkcygpO1xuXG4gICAgY29uc3QgaXNQb2ludGVyTW92aW5nVG9TdWJtZW51ID0gUmVhY3QudXNlQ2FsbGJhY2soKGV2ZW50OiBSZWFjdC5Qb2ludGVyRXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IGlzTW92aW5nVG93YXJkcyA9IHBvaW50ZXJEaXJSZWYuY3VycmVudCA9PT0gcG9pbnRlckdyYWNlSW50ZW50UmVmLmN1cnJlbnQ/LnNpZGU7XG4gICAgICByZXR1cm4gaXNNb3ZpbmdUb3dhcmRzICYmIGlzUG9pbnRlckluR3JhY2VBcmVhKGV2ZW50LCBwb2ludGVyR3JhY2VJbnRlbnRSZWYuY3VycmVudD8uYXJlYSk7XG4gICAgfSwgW10pO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxNZW51Q29udGVudFByb3ZpZGVyXG4gICAgICAgIHNjb3BlPXtfX3Njb3BlTWVudX1cbiAgICAgICAgc2VhcmNoUmVmPXtzZWFyY2hSZWZ9XG4gICAgICAgIG9uSXRlbUVudGVyPXtSZWFjdC51c2VDYWxsYmFjayhcbiAgICAgICAgICAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgIGlmIChpc1BvaW50ZXJNb3ZpbmdUb1N1Ym1lbnUoZXZlbnQpKSBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgW2lzUG9pbnRlck1vdmluZ1RvU3VibWVudV1cbiAgICAgICAgKX1cbiAgICAgICAgb25JdGVtTGVhdmU9e1JlYWN0LnVzZUNhbGxiYWNrKFxuICAgICAgICAgIChldmVudCkgPT4ge1xuICAgICAgICAgICAgaWYgKGlzUG9pbnRlck1vdmluZ1RvU3VibWVudShldmVudCkpIHJldHVybjtcbiAgICAgICAgICAgIGNvbnRlbnRSZWYuY3VycmVudD8uZm9jdXMoKTtcbiAgICAgICAgICAgIHNldEN1cnJlbnRJdGVtSWQobnVsbCk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBbaXNQb2ludGVyTW92aW5nVG9TdWJtZW51XVxuICAgICAgICApfVxuICAgICAgICBvblRyaWdnZXJMZWF2ZT17UmVhY3QudXNlQ2FsbGJhY2soXG4gICAgICAgICAgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICBpZiAoaXNQb2ludGVyTW92aW5nVG9TdWJtZW51KGV2ZW50KSkgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIFtpc1BvaW50ZXJNb3ZpbmdUb1N1Ym1lbnVdXG4gICAgICAgICl9XG4gICAgICAgIHBvaW50ZXJHcmFjZVRpbWVyUmVmPXtwb2ludGVyR3JhY2VUaW1lclJlZn1cbiAgICAgICAgb25Qb2ludGVyR3JhY2VJbnRlbnRDaGFuZ2U9e1JlYWN0LnVzZUNhbGxiYWNrKChpbnRlbnQpID0+IHtcbiAgICAgICAgICBwb2ludGVyR3JhY2VJbnRlbnRSZWYuY3VycmVudCA9IGludGVudDtcbiAgICAgICAgfSwgW10pfVxuICAgICAgPlxuICAgICAgICA8U2Nyb2xsTG9ja1dyYXBwZXIgey4uLnNjcm9sbExvY2tXcmFwcGVyUHJvcHN9PlxuICAgICAgICAgIDxGb2N1c1Njb3BlXG4gICAgICAgICAgICBhc0NoaWxkXG4gICAgICAgICAgICB0cmFwcGVkPXt0cmFwRm9jdXN9XG4gICAgICAgICAgICBvbk1vdW50QXV0b0ZvY3VzPXtjb21wb3NlRXZlbnRIYW5kbGVycyhvbk9wZW5BdXRvRm9jdXMsIChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAvLyB3aGVuIG9wZW5pbmcsIGV4cGxpY2l0bHkgZm9jdXMgdGhlIGNvbnRlbnQgYXJlYSBvbmx5IGFuZCBsZWF2ZVxuICAgICAgICAgICAgICAvLyBgb25FbnRyeUZvY3VzYCBpbiAgY29udHJvbCBvZiBmb2N1c2luZyBmaXJzdCBpdGVtXG4gICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgIGNvbnRlbnRSZWYuY3VycmVudD8uZm9jdXMoeyBwcmV2ZW50U2Nyb2xsOiB0cnVlIH0pO1xuICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICBvblVubW91bnRBdXRvRm9jdXM9e29uQ2xvc2VBdXRvRm9jdXN9XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPERpc21pc3NhYmxlTGF5ZXJcbiAgICAgICAgICAgICAgYXNDaGlsZFxuICAgICAgICAgICAgICBkaXNhYmxlT3V0c2lkZVBvaW50ZXJFdmVudHM9e2Rpc2FibGVPdXRzaWRlUG9pbnRlckV2ZW50c31cbiAgICAgICAgICAgICAgb25Fc2NhcGVLZXlEb3duPXtvbkVzY2FwZUtleURvd259XG4gICAgICAgICAgICAgIG9uUG9pbnRlckRvd25PdXRzaWRlPXtvblBvaW50ZXJEb3duT3V0c2lkZX1cbiAgICAgICAgICAgICAgb25Gb2N1c091dHNpZGU9e29uRm9jdXNPdXRzaWRlfVxuICAgICAgICAgICAgICBvbkludGVyYWN0T3V0c2lkZT17b25JbnRlcmFjdE91dHNpZGV9XG4gICAgICAgICAgICAgIG9uRGlzbWlzcz17b25EaXNtaXNzfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8Um92aW5nRm9jdXNHcm91cC5Sb290XG4gICAgICAgICAgICAgICAgYXNDaGlsZFxuICAgICAgICAgICAgICAgIHsuLi5yb3ZpbmdGb2N1c0dyb3VwU2NvcGV9XG4gICAgICAgICAgICAgICAgZGlyPXtyb290Q29udGV4dC5kaXJ9XG4gICAgICAgICAgICAgICAgb3JpZW50YXRpb249XCJ2ZXJ0aWNhbFwiXG4gICAgICAgICAgICAgICAgbG9vcD17bG9vcH1cbiAgICAgICAgICAgICAgICBjdXJyZW50VGFiU3RvcElkPXtjdXJyZW50SXRlbUlkfVxuICAgICAgICAgICAgICAgIG9uQ3VycmVudFRhYlN0b3BJZENoYW5nZT17c2V0Q3VycmVudEl0ZW1JZH1cbiAgICAgICAgICAgICAgICBvbkVudHJ5Rm9jdXM9e2NvbXBvc2VFdmVudEhhbmRsZXJzKG9uRW50cnlGb2N1cywgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAvLyBvbmx5IGZvY3VzIGZpcnN0IGl0ZW0gd2hlbiB1c2luZyBrZXlib2FyZFxuICAgICAgICAgICAgICAgICAgaWYgKCFyb290Q29udGV4dC5pc1VzaW5nS2V5Ym9hcmRSZWYuY3VycmVudCkgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICBwcmV2ZW50U2Nyb2xsT25FbnRyeUZvY3VzXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8UG9wcGVyUHJpbWl0aXZlLkNvbnRlbnRcbiAgICAgICAgICAgICAgICAgIHJvbGU9XCJtZW51XCJcbiAgICAgICAgICAgICAgICAgIGFyaWEtb3JpZW50YXRpb249XCJ2ZXJ0aWNhbFwiXG4gICAgICAgICAgICAgICAgICBkYXRhLXN0YXRlPXtnZXRPcGVuU3RhdGUoY29udGV4dC5vcGVuKX1cbiAgICAgICAgICAgICAgICAgIGRhdGEtcmFkaXgtbWVudS1jb250ZW50PVwiXCJcbiAgICAgICAgICAgICAgICAgIGRpcj17cm9vdENvbnRleHQuZGlyfVxuICAgICAgICAgICAgICAgICAgey4uLnBvcHBlclNjb3BlfVxuICAgICAgICAgICAgICAgICAgey4uLmNvbnRlbnRQcm9wc31cbiAgICAgICAgICAgICAgICAgIHJlZj17Y29tcG9zZWRSZWZzfVxuICAgICAgICAgICAgICAgICAgc3R5bGU9e3sgb3V0bGluZTogJ25vbmUnLCAuLi5jb250ZW50UHJvcHMuc3R5bGUgfX1cbiAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17Y29tcG9zZUV2ZW50SGFuZGxlcnMoY29udGVudFByb3BzLm9uS2V5RG93biwgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIC8vIHN1Ym1lbnUga2V5IGV2ZW50cyBidWJibGUgdGhyb3VnaCBwb3J0YWxzLiBXZSBvbmx5IGNhcmUgYWJvdXQga2V5cyBpbiB0aGlzIG1lbnUuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNLZXlEb3duSW5zaWRlID1cbiAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQuY2xvc2VzdCgnW2RhdGEtcmFkaXgtbWVudS1jb250ZW50XScpID09PSBldmVudC5jdXJyZW50VGFyZ2V0O1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpc01vZGlmaWVyS2V5ID0gZXZlbnQuY3RybEtleSB8fCBldmVudC5hbHRLZXkgfHwgZXZlbnQubWV0YUtleTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNDaGFyYWN0ZXJLZXkgPSBldmVudC5rZXkubGVuZ3RoID09PSAxO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNLZXlEb3duSW5zaWRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgLy8gbWVudXMgc2hvdWxkIG5vdCBiZSBuYXZpZ2F0ZWQgdXNpbmcgdGFiIGtleSBzbyB3ZSBwcmV2ZW50IGl0XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ1RhYicpIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc01vZGlmaWVyS2V5ICYmIGlzQ2hhcmFjdGVyS2V5KSBoYW5kbGVUeXBlYWhlYWRTZWFyY2goZXZlbnQua2V5KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyBmb2N1cyBmaXJzdC9sYXN0IGl0ZW0gYmFzZWQgb24ga2V5IHByZXNzZWRcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29udGVudCA9IGNvbnRlbnRSZWYuY3VycmVudDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGV2ZW50LnRhcmdldCAhPT0gY29udGVudCkgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIUZJUlNUX0xBU1RfS0VZUy5pbmNsdWRlcyhldmVudC5rZXkpKSByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1zID0gZ2V0SXRlbXMoKS5maWx0ZXIoKGl0ZW0pID0+ICFpdGVtLmRpc2FibGVkKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2FuZGlkYXRlTm9kZXMgPSBpdGVtcy5tYXAoKGl0ZW0pID0+IGl0ZW0ucmVmLmN1cnJlbnQhKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKExBU1RfS0VZUy5pbmNsdWRlcyhldmVudC5rZXkpKSBjYW5kaWRhdGVOb2Rlcy5yZXZlcnNlKCk7XG4gICAgICAgICAgICAgICAgICAgIGZvY3VzRmlyc3QoY2FuZGlkYXRlTm9kZXMpO1xuICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgICBvbkJsdXI9e2NvbXBvc2VFdmVudEhhbmRsZXJzKHByb3BzLm9uQmx1ciwgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGNsZWFyIHNlYXJjaCBidWZmZXIgd2hlbiBsZWF2aW5nIHRoZSBtZW51XG4gICAgICAgICAgICAgICAgICAgIGlmICghZXZlbnQuY3VycmVudFRhcmdldC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgd2luZG93LmNsZWFyVGltZW91dCh0aW1lclJlZi5jdXJyZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hSZWYuY3VycmVudCA9ICcnO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgIG9uUG9pbnRlck1vdmU9e2NvbXBvc2VFdmVudEhhbmRsZXJzKFxuICAgICAgICAgICAgICAgICAgICBwcm9wcy5vblBvaW50ZXJNb3ZlLFxuICAgICAgICAgICAgICAgICAgICB3aGVuTW91c2UoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBvaW50ZXJYSGFzQ2hhbmdlZCA9IGxhc3RQb2ludGVyWFJlZi5jdXJyZW50ICE9PSBldmVudC5jbGllbnRYO1xuXG4gICAgICAgICAgICAgICAgICAgICAgLy8gV2UgZG9uJ3QgdXNlIGBldmVudC5tb3ZlbWVudFhgIGZvciB0aGlzIGNoZWNrIGJlY2F1c2UgU2FmYXJpIHdpbGxcbiAgICAgICAgICAgICAgICAgICAgICAvLyBhbHdheXMgcmV0dXJuIGAwYCBvbiBhIHBvaW50ZXIgZXZlbnQuXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKGV2ZW50LmN1cnJlbnRUYXJnZXQuY29udGFpbnModGFyZ2V0KSAmJiBwb2ludGVyWEhhc0NoYW5nZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld0RpciA9IGV2ZW50LmNsaWVudFggPiBsYXN0UG9pbnRlclhSZWYuY3VycmVudCA/ICdyaWdodCcgOiAnbGVmdCc7XG4gICAgICAgICAgICAgICAgICAgICAgICBwb2ludGVyRGlyUmVmLmN1cnJlbnQgPSBuZXdEaXI7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYXN0UG9pbnRlclhSZWYuY3VycmVudCA9IGV2ZW50LmNsaWVudFg7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L1JvdmluZ0ZvY3VzR3JvdXAuUm9vdD5cbiAgICAgICAgICAgIDwvRGlzbWlzc2FibGVMYXllcj5cbiAgICAgICAgICA8L0ZvY3VzU2NvcGU+XG4gICAgICAgIDwvU2Nyb2xsTG9ja1dyYXBwZXI+XG4gICAgICA8L01lbnVDb250ZW50UHJvdmlkZXI+XG4gICAgKTtcbiAgfVxuKTtcblxuTWVudUNvbnRlbnQuZGlzcGxheU5hbWUgPSBDT05URU5UX05BTUU7XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIE1lbnVHcm91cFxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG5jb25zdCBHUk9VUF9OQU1FID0gJ01lbnVHcm91cCc7XG5cbnR5cGUgTWVudUdyb3VwRWxlbWVudCA9IFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFByaW1pdGl2ZS5kaXY+O1xudHlwZSBQcmltaXRpdmVEaXZQcm9wcyA9IFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgUHJpbWl0aXZlLmRpdj47XG5pbnRlcmZhY2UgTWVudUdyb3VwUHJvcHMgZXh0ZW5kcyBQcmltaXRpdmVEaXZQcm9wcyB7fVxuXG5jb25zdCBNZW51R3JvdXAgPSBSZWFjdC5mb3J3YXJkUmVmPE1lbnVHcm91cEVsZW1lbnQsIE1lbnVHcm91cFByb3BzPihcbiAgKHByb3BzOiBTY29wZWRQcm9wczxNZW51R3JvdXBQcm9wcz4sIGZvcndhcmRlZFJlZikgPT4ge1xuICAgIGNvbnN0IHsgX19zY29wZU1lbnUsIC4uLmdyb3VwUHJvcHMgfSA9IHByb3BzO1xuICAgIHJldHVybiA8UHJpbWl0aXZlLmRpdiByb2xlPVwiZ3JvdXBcIiB7Li4uZ3JvdXBQcm9wc30gcmVmPXtmb3J3YXJkZWRSZWZ9IC8+O1xuICB9XG4pO1xuXG5NZW51R3JvdXAuZGlzcGxheU5hbWUgPSBHUk9VUF9OQU1FO1xuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBNZW51TGFiZWxcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuY29uc3QgTEFCRUxfTkFNRSA9ICdNZW51TGFiZWwnO1xuXG50eXBlIE1lbnVMYWJlbEVsZW1lbnQgPSBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBQcmltaXRpdmUuZGl2PjtcbmludGVyZmFjZSBNZW51TGFiZWxQcm9wcyBleHRlbmRzIFByaW1pdGl2ZURpdlByb3BzIHt9XG5cbmNvbnN0IE1lbnVMYWJlbCA9IFJlYWN0LmZvcndhcmRSZWY8TWVudUxhYmVsRWxlbWVudCwgTWVudUxhYmVsUHJvcHM+KFxuICAocHJvcHM6IFNjb3BlZFByb3BzPE1lbnVMYWJlbFByb3BzPiwgZm9yd2FyZGVkUmVmKSA9PiB7XG4gICAgY29uc3QgeyBfX3Njb3BlTWVudSwgLi4ubGFiZWxQcm9wcyB9ID0gcHJvcHM7XG4gICAgcmV0dXJuIDxQcmltaXRpdmUuZGl2IHsuLi5sYWJlbFByb3BzfSByZWY9e2ZvcndhcmRlZFJlZn0gLz47XG4gIH1cbik7XG5cbk1lbnVMYWJlbC5kaXNwbGF5TmFtZSA9IExBQkVMX05BTUU7XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIE1lbnVJdGVtXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbmNvbnN0IElURU1fTkFNRSA9ICdNZW51SXRlbSc7XG5jb25zdCBJVEVNX1NFTEVDVCA9ICdtZW51Lml0ZW1TZWxlY3QnO1xuXG50eXBlIE1lbnVJdGVtRWxlbWVudCA9IE1lbnVJdGVtSW1wbEVsZW1lbnQ7XG5pbnRlcmZhY2UgTWVudUl0ZW1Qcm9wcyBleHRlbmRzIE9taXQ8TWVudUl0ZW1JbXBsUHJvcHMsICdvblNlbGVjdCc+IHtcbiAgb25TZWxlY3Q/OiAoZXZlbnQ6IEV2ZW50KSA9PiB2b2lkO1xufVxuXG5jb25zdCBNZW51SXRlbSA9IFJlYWN0LmZvcndhcmRSZWY8TWVudUl0ZW1FbGVtZW50LCBNZW51SXRlbVByb3BzPihcbiAgKHByb3BzOiBTY29wZWRQcm9wczxNZW51SXRlbVByb3BzPiwgZm9yd2FyZGVkUmVmKSA9PiB7XG4gICAgY29uc3QgeyBkaXNhYmxlZCA9IGZhbHNlLCBvblNlbGVjdCwgLi4uaXRlbVByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCByZWYgPSBSZWFjdC51c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpO1xuICAgIGNvbnN0IHJvb3RDb250ZXh0ID0gdXNlTWVudVJvb3RDb250ZXh0KElURU1fTkFNRSwgcHJvcHMuX19zY29wZU1lbnUpO1xuICAgIGNvbnN0IGNvbnRlbnRDb250ZXh0ID0gdXNlTWVudUNvbnRlbnRDb250ZXh0KElURU1fTkFNRSwgcHJvcHMuX19zY29wZU1lbnUpO1xuICAgIGNvbnN0IGNvbXBvc2VkUmVmcyA9IHVzZUNvbXBvc2VkUmVmcyhmb3J3YXJkZWRSZWYsIHJlZik7XG4gICAgY29uc3QgaXNQb2ludGVyRG93blJlZiA9IFJlYWN0LnVzZVJlZihmYWxzZSk7XG5cbiAgICBjb25zdCBoYW5kbGVTZWxlY3QgPSAoKSA9PiB7XG4gICAgICBjb25zdCBtZW51SXRlbSA9IHJlZi5jdXJyZW50O1xuICAgICAgaWYgKCFkaXNhYmxlZCAmJiBtZW51SXRlbSkge1xuICAgICAgICBjb25zdCBpdGVtU2VsZWN0RXZlbnQgPSBuZXcgQ3VzdG9tRXZlbnQoSVRFTV9TRUxFQ1QsIHsgYnViYmxlczogdHJ1ZSwgY2FuY2VsYWJsZTogdHJ1ZSB9KTtcbiAgICAgICAgbWVudUl0ZW0uYWRkRXZlbnRMaXN0ZW5lcihJVEVNX1NFTEVDVCwgKGV2ZW50KSA9PiBvblNlbGVjdD8uKGV2ZW50KSwgeyBvbmNlOiB0cnVlIH0pO1xuICAgICAgICBkaXNwYXRjaERpc2NyZXRlQ3VzdG9tRXZlbnQobWVudUl0ZW0sIGl0ZW1TZWxlY3RFdmVudCk7XG4gICAgICAgIGlmIChpdGVtU2VsZWN0RXZlbnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgICAgIGlzUG9pbnRlckRvd25SZWYuY3VycmVudCA9IGZhbHNlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJvb3RDb250ZXh0Lm9uQ2xvc2UoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG5cbiAgICByZXR1cm4gKFxuICAgICAgPE1lbnVJdGVtSW1wbFxuICAgICAgICB7Li4uaXRlbVByb3BzfVxuICAgICAgICByZWY9e2NvbXBvc2VkUmVmc31cbiAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgICBvbkNsaWNrPXtjb21wb3NlRXZlbnRIYW5kbGVycyhwcm9wcy5vbkNsaWNrLCBoYW5kbGVTZWxlY3QpfVxuICAgICAgICBvblBvaW50ZXJEb3duPXsoZXZlbnQpID0+IHtcbiAgICAgICAgICBwcm9wcy5vblBvaW50ZXJEb3duPy4oZXZlbnQpO1xuICAgICAgICAgIGlzUG9pbnRlckRvd25SZWYuY3VycmVudCA9IHRydWU7XG4gICAgICAgIH19XG4gICAgICAgIG9uUG9pbnRlclVwPXtjb21wb3NlRXZlbnRIYW5kbGVycyhwcm9wcy5vblBvaW50ZXJVcCwgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgLy8gUG9pbnRlciBkb3duIGNhbiBtb3ZlIHRvIGEgZGlmZmVyZW50IG1lbnUgaXRlbSB3aGljaCBzaG91bGQgYWN0aXZhdGUgaXQgb24gcG9pbnRlciB1cC5cbiAgICAgICAgICAvLyBXZSBkaXNwYXRjaCBhIGNsaWNrIGZvciBzZWxlY3Rpb24gdG8gYWxsb3cgY29tcG9zaXRpb24gd2l0aCBjbGljayBiYXNlZCB0cmlnZ2VycyBhbmQgdG9cbiAgICAgICAgICAvLyBwcmV2ZW50IEZpcmVmb3ggZnJvbSBnZXR0aW5nIHN0dWNrIGluIHRleHQgc2VsZWN0aW9uIG1vZGUgd2hlbiB0aGUgbWVudSBjbG9zZXMuXG4gICAgICAgICAgaWYgKCFpc1BvaW50ZXJEb3duUmVmLmN1cnJlbnQpIGV2ZW50LmN1cnJlbnRUYXJnZXQ/LmNsaWNrKCk7XG4gICAgICAgIH0pfVxuICAgICAgICBvbktleURvd249e2NvbXBvc2VFdmVudEhhbmRsZXJzKHByb3BzLm9uS2V5RG93biwgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgY29uc3QgaXNUeXBpbmdBaGVhZCA9IGNvbnRlbnRDb250ZXh0LnNlYXJjaFJlZi5jdXJyZW50ICE9PSAnJztcbiAgICAgICAgICBpZiAoZGlzYWJsZWQgfHwgKGlzVHlwaW5nQWhlYWQgJiYgZXZlbnQua2V5ID09PSAnICcpKSByZXR1cm47XG4gICAgICAgICAgaWYgKFNFTEVDVElPTl9LRVlTLmluY2x1ZGVzKGV2ZW50LmtleSkpIHtcbiAgICAgICAgICAgIGV2ZW50LmN1cnJlbnRUYXJnZXQuY2xpY2soKTtcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogV2UgcHJldmVudCBkZWZhdWx0IGJyb3dzZXIgYmVoYXZpb3VyIGZvciBzZWxlY3Rpb24ga2V5cyBhcyB0aGV5IHNob3VsZCB0cmlnZ2VyXG4gICAgICAgICAgICAgKiBhIHNlbGVjdGlvbiBvbmx5OlxuICAgICAgICAgICAgICogLSBwcmV2ZW50cyBzcGFjZSBmcm9tIHNjcm9sbGluZyB0aGUgcGFnZS5cbiAgICAgICAgICAgICAqIC0gaWYga2V5ZG93biBjYXVzZXMgZm9jdXMgdG8gbW92ZSwgcHJldmVudHMga2V5ZG93biBmcm9tIGZpcmluZyBvbiB0aGUgbmV3IHRhcmdldC5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pfVxuICAgICAgLz5cbiAgICApO1xuICB9XG4pO1xuXG5NZW51SXRlbS5kaXNwbGF5TmFtZSA9IElURU1fTkFNRTtcblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG50eXBlIE1lbnVJdGVtSW1wbEVsZW1lbnQgPSBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBQcmltaXRpdmUuZGl2PjtcbmludGVyZmFjZSBNZW51SXRlbUltcGxQcm9wcyBleHRlbmRzIFByaW1pdGl2ZURpdlByb3BzIHtcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICB0ZXh0VmFsdWU/OiBzdHJpbmc7XG59XG5cbmNvbnN0IE1lbnVJdGVtSW1wbCA9IFJlYWN0LmZvcndhcmRSZWY8TWVudUl0ZW1JbXBsRWxlbWVudCwgTWVudUl0ZW1JbXBsUHJvcHM+KFxuICAocHJvcHM6IFNjb3BlZFByb3BzPE1lbnVJdGVtSW1wbFByb3BzPiwgZm9yd2FyZGVkUmVmKSA9PiB7XG4gICAgY29uc3QgeyBfX3Njb3BlTWVudSwgZGlzYWJsZWQgPSBmYWxzZSwgdGV4dFZhbHVlLCAuLi5pdGVtUHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNvbnRlbnRDb250ZXh0ID0gdXNlTWVudUNvbnRlbnRDb250ZXh0KElURU1fTkFNRSwgX19zY29wZU1lbnUpO1xuICAgIGNvbnN0IHJvdmluZ0ZvY3VzR3JvdXBTY29wZSA9IHVzZVJvdmluZ0ZvY3VzR3JvdXBTY29wZShfX3Njb3BlTWVudSk7XG4gICAgY29uc3QgcmVmID0gUmVhY3QudXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKTtcbiAgICBjb25zdCBjb21wb3NlZFJlZnMgPSB1c2VDb21wb3NlZFJlZnMoZm9yd2FyZGVkUmVmLCByZWYpO1xuICAgIGNvbnN0IFtpc0ZvY3VzZWQsIHNldElzRm9jdXNlZF0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XG5cbiAgICAvLyBnZXQgdGhlIGl0ZW0ncyBgLnRleHRDb250ZW50YCBhcyBkZWZhdWx0IHN0cmF0ZWd5IGZvciB0eXBlYWhlYWQgYHRleHRWYWx1ZWBcbiAgICBjb25zdCBbdGV4dENvbnRlbnQsIHNldFRleHRDb250ZW50XSA9IFJlYWN0LnVzZVN0YXRlKCcnKTtcbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3QgbWVudUl0ZW0gPSByZWYuY3VycmVudDtcbiAgICAgIGlmIChtZW51SXRlbSkge1xuICAgICAgICBzZXRUZXh0Q29udGVudCgobWVudUl0ZW0udGV4dENvbnRlbnQgPz8gJycpLnRyaW0oKSk7XG4gICAgICB9XG4gICAgfSwgW2l0ZW1Qcm9wcy5jaGlsZHJlbl0pO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxDb2xsZWN0aW9uLkl0ZW1TbG90XG4gICAgICAgIHNjb3BlPXtfX3Njb3BlTWVudX1cbiAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgICB0ZXh0VmFsdWU9e3RleHRWYWx1ZSA/PyB0ZXh0Q29udGVudH1cbiAgICAgID5cbiAgICAgICAgPFJvdmluZ0ZvY3VzR3JvdXAuSXRlbSBhc0NoaWxkIHsuLi5yb3ZpbmdGb2N1c0dyb3VwU2NvcGV9IGZvY3VzYWJsZT17IWRpc2FibGVkfT5cbiAgICAgICAgICA8UHJpbWl0aXZlLmRpdlxuICAgICAgICAgICAgcm9sZT1cIm1lbnVpdGVtXCJcbiAgICAgICAgICAgIGRhdGEtaGlnaGxpZ2h0ZWQ9e2lzRm9jdXNlZCA/ICcnIDogdW5kZWZpbmVkfVxuICAgICAgICAgICAgYXJpYS1kaXNhYmxlZD17ZGlzYWJsZWQgfHwgdW5kZWZpbmVkfVxuICAgICAgICAgICAgZGF0YS1kaXNhYmxlZD17ZGlzYWJsZWQgPyAnJyA6IHVuZGVmaW5lZH1cbiAgICAgICAgICAgIHsuLi5pdGVtUHJvcHN9XG4gICAgICAgICAgICByZWY9e2NvbXBvc2VkUmVmc31cbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogV2UgZm9jdXMgaXRlbXMgb24gYHBvaW50ZXJNb3ZlYCB0byBhY2hpZXZlIHRoZSBmb2xsb3dpbmc6XG4gICAgICAgICAgICAgKlxuICAgICAgICAgICAgICogLSBNb3VzZSBvdmVyIGFuIGl0ZW0gKGl0IGZvY3VzZXMpXG4gICAgICAgICAgICAgKiAtIExlYXZlIG1vdXNlIHdoZXJlIGl0IGlzIGFuZCB1c2Uga2V5Ym9hcmQgdG8gZm9jdXMgYSBkaWZmZXJlbnQgaXRlbVxuICAgICAgICAgICAgICogLSBXaWdnbGUgbW91c2Ugd2l0aG91dCBpdCBsZWF2aW5nIHByZXZpb3VzbHkgZm9jdXNlZCBpdGVtXG4gICAgICAgICAgICAgKiAtIFByZXZpb3VzbHkgZm9jdXNlZCBpdGVtIHNob3VsZCByZS1mb2N1c1xuICAgICAgICAgICAgICpcbiAgICAgICAgICAgICAqIElmIHdlIHVzZWQgYG1vdXNlT3ZlcmAvYG1vdXNlRW50ZXJgIGl0IHdvdWxkIG5vdCByZS1mb2N1cyB3aGVuIHRoZSBtb3VzZVxuICAgICAgICAgICAgICogd2lnZ2xlcy4gVGhpcyBpcyB0byBtYXRjaCBuYXRpdmUgbWVudSBpbXBsZW1lbnRhdGlvbi5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgb25Qb2ludGVyTW92ZT17Y29tcG9zZUV2ZW50SGFuZGxlcnMoXG4gICAgICAgICAgICAgIHByb3BzLm9uUG9pbnRlck1vdmUsXG4gICAgICAgICAgICAgIHdoZW5Nb3VzZSgoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICAgIGNvbnRlbnRDb250ZXh0Lm9uSXRlbUxlYXZlKGV2ZW50KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgY29udGVudENvbnRleHQub25JdGVtRW50ZXIoZXZlbnQpO1xuICAgICAgICAgICAgICAgICAgaWYgKCFldmVudC5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSBldmVudC5jdXJyZW50VGFyZ2V0O1xuICAgICAgICAgICAgICAgICAgICBpdGVtLmZvY3VzKHsgcHJldmVudFNjcm9sbDogdHJ1ZSB9KTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApfVxuICAgICAgICAgICAgb25Qb2ludGVyTGVhdmU9e2NvbXBvc2VFdmVudEhhbmRsZXJzKFxuICAgICAgICAgICAgICBwcm9wcy5vblBvaW50ZXJMZWF2ZSxcbiAgICAgICAgICAgICAgd2hlbk1vdXNlKChldmVudCkgPT4gY29udGVudENvbnRleHQub25JdGVtTGVhdmUoZXZlbnQpKVxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIG9uRm9jdXM9e2NvbXBvc2VFdmVudEhhbmRsZXJzKHByb3BzLm9uRm9jdXMsICgpID0+IHNldElzRm9jdXNlZCh0cnVlKSl9XG4gICAgICAgICAgICBvbkJsdXI9e2NvbXBvc2VFdmVudEhhbmRsZXJzKHByb3BzLm9uQmx1ciwgKCkgPT4gc2V0SXNGb2N1c2VkKGZhbHNlKSl9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9Sb3ZpbmdGb2N1c0dyb3VwLkl0ZW0+XG4gICAgICA8L0NvbGxlY3Rpb24uSXRlbVNsb3Q+XG4gICAgKTtcbiAgfVxuKTtcblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogTWVudUNoZWNrYm94SXRlbVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG5jb25zdCBDSEVDS0JPWF9JVEVNX05BTUUgPSAnTWVudUNoZWNrYm94SXRlbSc7XG5cbnR5cGUgTWVudUNoZWNrYm94SXRlbUVsZW1lbnQgPSBNZW51SXRlbUVsZW1lbnQ7XG5cbnR5cGUgQ2hlY2tlZFN0YXRlID0gYm9vbGVhbiB8ICdpbmRldGVybWluYXRlJztcblxuaW50ZXJmYWNlIE1lbnVDaGVja2JveEl0ZW1Qcm9wcyBleHRlbmRzIE1lbnVJdGVtUHJvcHMge1xuICBjaGVja2VkPzogQ2hlY2tlZFN0YXRlO1xuICAvLyBgb25DaGVja2VkQ2hhbmdlYCBjYW4gbmV2ZXIgYmUgY2FsbGVkIHdpdGggYFwiaW5kZXRlcm1pbmF0ZVwiYCBmcm9tIHRoZSBpbnNpZGVcbiAgb25DaGVja2VkQ2hhbmdlPzogKGNoZWNrZWQ6IGJvb2xlYW4pID0+IHZvaWQ7XG59XG5cbmNvbnN0IE1lbnVDaGVja2JveEl0ZW0gPSBSZWFjdC5mb3J3YXJkUmVmPE1lbnVDaGVja2JveEl0ZW1FbGVtZW50LCBNZW51Q2hlY2tib3hJdGVtUHJvcHM+KFxuICAocHJvcHM6IFNjb3BlZFByb3BzPE1lbnVDaGVja2JveEl0ZW1Qcm9wcz4sIGZvcndhcmRlZFJlZikgPT4ge1xuICAgIGNvbnN0IHsgY2hlY2tlZCA9IGZhbHNlLCBvbkNoZWNrZWRDaGFuZ2UsIC4uLmNoZWNrYm94SXRlbVByb3BzIH0gPSBwcm9wcztcbiAgICByZXR1cm4gKFxuICAgICAgPEl0ZW1JbmRpY2F0b3JQcm92aWRlciBzY29wZT17cHJvcHMuX19zY29wZU1lbnV9IGNoZWNrZWQ9e2NoZWNrZWR9PlxuICAgICAgICA8TWVudUl0ZW1cbiAgICAgICAgICByb2xlPVwibWVudWl0ZW1jaGVja2JveFwiXG4gICAgICAgICAgYXJpYS1jaGVja2VkPXtpc0luZGV0ZXJtaW5hdGUoY2hlY2tlZCkgPyAnbWl4ZWQnIDogY2hlY2tlZH1cbiAgICAgICAgICB7Li4uY2hlY2tib3hJdGVtUHJvcHN9XG4gICAgICAgICAgcmVmPXtmb3J3YXJkZWRSZWZ9XG4gICAgICAgICAgZGF0YS1zdGF0ZT17Z2V0Q2hlY2tlZFN0YXRlKGNoZWNrZWQpfVxuICAgICAgICAgIG9uU2VsZWN0PXtjb21wb3NlRXZlbnRIYW5kbGVycyhcbiAgICAgICAgICAgIGNoZWNrYm94SXRlbVByb3BzLm9uU2VsZWN0LFxuICAgICAgICAgICAgKCkgPT4gb25DaGVja2VkQ2hhbmdlPy4oaXNJbmRldGVybWluYXRlKGNoZWNrZWQpID8gdHJ1ZSA6ICFjaGVja2VkKSxcbiAgICAgICAgICAgIHsgY2hlY2tGb3JEZWZhdWx0UHJldmVudGVkOiBmYWxzZSB9XG4gICAgICAgICAgKX1cbiAgICAgICAgLz5cbiAgICAgIDwvSXRlbUluZGljYXRvclByb3ZpZGVyPlxuICAgICk7XG4gIH1cbik7XG5cbk1lbnVDaGVja2JveEl0ZW0uZGlzcGxheU5hbWUgPSBDSEVDS0JPWF9JVEVNX05BTUU7XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIE1lbnVSYWRpb0dyb3VwXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbmNvbnN0IFJBRElPX0dST1VQX05BTUUgPSAnTWVudVJhZGlvR3JvdXAnO1xuXG5jb25zdCBbUmFkaW9Hcm91cFByb3ZpZGVyLCB1c2VSYWRpb0dyb3VwQ29udGV4dF0gPSBjcmVhdGVNZW51Q29udGV4dDxNZW51UmFkaW9Hcm91cFByb3BzPihcbiAgUkFESU9fR1JPVVBfTkFNRSxcbiAgeyB2YWx1ZTogdW5kZWZpbmVkLCBvblZhbHVlQ2hhbmdlOiAoKSA9PiB7fSB9XG4pO1xuXG50eXBlIE1lbnVSYWRpb0dyb3VwRWxlbWVudCA9IFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIE1lbnVHcm91cD47XG5pbnRlcmZhY2UgTWVudVJhZGlvR3JvdXBQcm9wcyBleHRlbmRzIE1lbnVHcm91cFByb3BzIHtcbiAgdmFsdWU/OiBzdHJpbmc7XG4gIG9uVmFsdWVDaGFuZ2U/OiAodmFsdWU6IHN0cmluZykgPT4gdm9pZDtcbn1cblxuY29uc3QgTWVudVJhZGlvR3JvdXAgPSBSZWFjdC5mb3J3YXJkUmVmPE1lbnVSYWRpb0dyb3VwRWxlbWVudCwgTWVudVJhZGlvR3JvdXBQcm9wcz4oXG4gIChwcm9wczogU2NvcGVkUHJvcHM8TWVudVJhZGlvR3JvdXBQcm9wcz4sIGZvcndhcmRlZFJlZikgPT4ge1xuICAgIGNvbnN0IHsgdmFsdWUsIG9uVmFsdWVDaGFuZ2UsIC4uLmdyb3VwUHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IGhhbmRsZVZhbHVlQ2hhbmdlID0gdXNlQ2FsbGJhY2tSZWYob25WYWx1ZUNoYW5nZSk7XG4gICAgcmV0dXJuIChcbiAgICAgIDxSYWRpb0dyb3VwUHJvdmlkZXIgc2NvcGU9e3Byb3BzLl9fc2NvcGVNZW51fSB2YWx1ZT17dmFsdWV9IG9uVmFsdWVDaGFuZ2U9e2hhbmRsZVZhbHVlQ2hhbmdlfT5cbiAgICAgICAgPE1lbnVHcm91cCB7Li4uZ3JvdXBQcm9wc30gcmVmPXtmb3J3YXJkZWRSZWZ9IC8+XG4gICAgICA8L1JhZGlvR3JvdXBQcm92aWRlcj5cbiAgICApO1xuICB9XG4pO1xuXG5NZW51UmFkaW9Hcm91cC5kaXNwbGF5TmFtZSA9IFJBRElPX0dST1VQX05BTUU7XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIE1lbnVSYWRpb0l0ZW1cbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuY29uc3QgUkFESU9fSVRFTV9OQU1FID0gJ01lbnVSYWRpb0l0ZW0nO1xuXG50eXBlIE1lbnVSYWRpb0l0ZW1FbGVtZW50ID0gUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgTWVudUl0ZW0+O1xuaW50ZXJmYWNlIE1lbnVSYWRpb0l0ZW1Qcm9wcyBleHRlbmRzIE1lbnVJdGVtUHJvcHMge1xuICB2YWx1ZTogc3RyaW5nO1xufVxuXG5jb25zdCBNZW51UmFkaW9JdGVtID0gUmVhY3QuZm9yd2FyZFJlZjxNZW51UmFkaW9JdGVtRWxlbWVudCwgTWVudVJhZGlvSXRlbVByb3BzPihcbiAgKHByb3BzOiBTY29wZWRQcm9wczxNZW51UmFkaW9JdGVtUHJvcHM+LCBmb3J3YXJkZWRSZWYpID0+IHtcbiAgICBjb25zdCB7IHZhbHVlLCAuLi5yYWRpb0l0ZW1Qcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgY29udGV4dCA9IHVzZVJhZGlvR3JvdXBDb250ZXh0KFJBRElPX0lURU1fTkFNRSwgcHJvcHMuX19zY29wZU1lbnUpO1xuICAgIGNvbnN0IGNoZWNrZWQgPSB2YWx1ZSA9PT0gY29udGV4dC52YWx1ZTtcbiAgICByZXR1cm4gKFxuICAgICAgPEl0ZW1JbmRpY2F0b3JQcm92aWRlciBzY29wZT17cHJvcHMuX19zY29wZU1lbnV9IGNoZWNrZWQ9e2NoZWNrZWR9PlxuICAgICAgICA8TWVudUl0ZW1cbiAgICAgICAgICByb2xlPVwibWVudWl0ZW1yYWRpb1wiXG4gICAgICAgICAgYXJpYS1jaGVja2VkPXtjaGVja2VkfVxuICAgICAgICAgIHsuLi5yYWRpb0l0ZW1Qcm9wc31cbiAgICAgICAgICByZWY9e2ZvcndhcmRlZFJlZn1cbiAgICAgICAgICBkYXRhLXN0YXRlPXtnZXRDaGVja2VkU3RhdGUoY2hlY2tlZCl9XG4gICAgICAgICAgb25TZWxlY3Q9e2NvbXBvc2VFdmVudEhhbmRsZXJzKFxuICAgICAgICAgICAgcmFkaW9JdGVtUHJvcHMub25TZWxlY3QsXG4gICAgICAgICAgICAoKSA9PiBjb250ZXh0Lm9uVmFsdWVDaGFuZ2U/Lih2YWx1ZSksXG4gICAgICAgICAgICB7IGNoZWNrRm9yRGVmYXVsdFByZXZlbnRlZDogZmFsc2UgfVxuICAgICAgICAgICl9XG4gICAgICAgIC8+XG4gICAgICA8L0l0ZW1JbmRpY2F0b3JQcm92aWRlcj5cbiAgICApO1xuICB9XG4pO1xuXG5NZW51UmFkaW9JdGVtLmRpc3BsYXlOYW1lID0gUkFESU9fSVRFTV9OQU1FO1xuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBNZW51SXRlbUluZGljYXRvclxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG5jb25zdCBJVEVNX0lORElDQVRPUl9OQU1FID0gJ01lbnVJdGVtSW5kaWNhdG9yJztcblxudHlwZSBDaGVja2JveENvbnRleHRWYWx1ZSA9IHsgY2hlY2tlZDogQ2hlY2tlZFN0YXRlIH07XG5cbmNvbnN0IFtJdGVtSW5kaWNhdG9yUHJvdmlkZXIsIHVzZUl0ZW1JbmRpY2F0b3JDb250ZXh0XSA9IGNyZWF0ZU1lbnVDb250ZXh0PENoZWNrYm94Q29udGV4dFZhbHVlPihcbiAgSVRFTV9JTkRJQ0FUT1JfTkFNRSxcbiAgeyBjaGVja2VkOiBmYWxzZSB9XG4pO1xuXG50eXBlIE1lbnVJdGVtSW5kaWNhdG9yRWxlbWVudCA9IFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFByaW1pdGl2ZS5zcGFuPjtcbnR5cGUgUHJpbWl0aXZlU3BhblByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBQcmltaXRpdmUuc3Bhbj47XG5pbnRlcmZhY2UgTWVudUl0ZW1JbmRpY2F0b3JQcm9wcyBleHRlbmRzIFByaW1pdGl2ZVNwYW5Qcm9wcyB7XG4gIC8qKlxuICAgKiBVc2VkIHRvIGZvcmNlIG1vdW50aW5nIHdoZW4gbW9yZSBjb250cm9sIGlzIG5lZWRlZC4gVXNlZnVsIHdoZW5cbiAgICogY29udHJvbGxpbmcgYW5pbWF0aW9uIHdpdGggUmVhY3QgYW5pbWF0aW9uIGxpYnJhcmllcy5cbiAgICovXG4gIGZvcmNlTW91bnQ/OiB0cnVlO1xufVxuXG5jb25zdCBNZW51SXRlbUluZGljYXRvciA9IFJlYWN0LmZvcndhcmRSZWY8TWVudUl0ZW1JbmRpY2F0b3JFbGVtZW50LCBNZW51SXRlbUluZGljYXRvclByb3BzPihcbiAgKHByb3BzOiBTY29wZWRQcm9wczxNZW51SXRlbUluZGljYXRvclByb3BzPiwgZm9yd2FyZGVkUmVmKSA9PiB7XG4gICAgY29uc3QgeyBfX3Njb3BlTWVudSwgZm9yY2VNb3VudCwgLi4uaXRlbUluZGljYXRvclByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBpbmRpY2F0b3JDb250ZXh0ID0gdXNlSXRlbUluZGljYXRvckNvbnRleHQoSVRFTV9JTkRJQ0FUT1JfTkFNRSwgX19zY29wZU1lbnUpO1xuICAgIHJldHVybiAoXG4gICAgICA8UHJlc2VuY2VcbiAgICAgICAgcHJlc2VudD17XG4gICAgICAgICAgZm9yY2VNb3VudCB8fFxuICAgICAgICAgIGlzSW5kZXRlcm1pbmF0ZShpbmRpY2F0b3JDb250ZXh0LmNoZWNrZWQpIHx8XG4gICAgICAgICAgaW5kaWNhdG9yQ29udGV4dC5jaGVja2VkID09PSB0cnVlXG4gICAgICAgIH1cbiAgICAgID5cbiAgICAgICAgPFByaW1pdGl2ZS5zcGFuXG4gICAgICAgICAgey4uLml0ZW1JbmRpY2F0b3JQcm9wc31cbiAgICAgICAgICByZWY9e2ZvcndhcmRlZFJlZn1cbiAgICAgICAgICBkYXRhLXN0YXRlPXtnZXRDaGVja2VkU3RhdGUoaW5kaWNhdG9yQ29udGV4dC5jaGVja2VkKX1cbiAgICAgICAgLz5cbiAgICAgIDwvUHJlc2VuY2U+XG4gICAgKTtcbiAgfVxuKTtcblxuTWVudUl0ZW1JbmRpY2F0b3IuZGlzcGxheU5hbWUgPSBJVEVNX0lORElDQVRPUl9OQU1FO1xuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBNZW51U2VwYXJhdG9yXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbmNvbnN0IFNFUEFSQVRPUl9OQU1FID0gJ01lbnVTZXBhcmF0b3InO1xuXG50eXBlIE1lbnVTZXBhcmF0b3JFbGVtZW50ID0gUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgUHJpbWl0aXZlLmRpdj47XG5pbnRlcmZhY2UgTWVudVNlcGFyYXRvclByb3BzIGV4dGVuZHMgUHJpbWl0aXZlRGl2UHJvcHMge31cblxuY29uc3QgTWVudVNlcGFyYXRvciA9IFJlYWN0LmZvcndhcmRSZWY8TWVudVNlcGFyYXRvckVsZW1lbnQsIE1lbnVTZXBhcmF0b3JQcm9wcz4oXG4gIChwcm9wczogU2NvcGVkUHJvcHM8TWVudVNlcGFyYXRvclByb3BzPiwgZm9yd2FyZGVkUmVmKSA9PiB7XG4gICAgY29uc3QgeyBfX3Njb3BlTWVudSwgLi4uc2VwYXJhdG9yUHJvcHMgfSA9IHByb3BzO1xuICAgIHJldHVybiAoXG4gICAgICA8UHJpbWl0aXZlLmRpdlxuICAgICAgICByb2xlPVwic2VwYXJhdG9yXCJcbiAgICAgICAgYXJpYS1vcmllbnRhdGlvbj1cImhvcml6b250YWxcIlxuICAgICAgICB7Li4uc2VwYXJhdG9yUHJvcHN9XG4gICAgICAgIHJlZj17Zm9yd2FyZGVkUmVmfVxuICAgICAgLz5cbiAgICApO1xuICB9XG4pO1xuXG5NZW51U2VwYXJhdG9yLmRpc3BsYXlOYW1lID0gU0VQQVJBVE9SX05BTUU7XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIE1lbnVBcnJvd1xuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG5jb25zdCBBUlJPV19OQU1FID0gJ01lbnVBcnJvdyc7XG5cbnR5cGUgTWVudUFycm93RWxlbWVudCA9IFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFBvcHBlclByaW1pdGl2ZS5BcnJvdz47XG50eXBlIFBvcHBlckFycm93UHJvcHMgPSBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIFBvcHBlclByaW1pdGl2ZS5BcnJvdz47XG5pbnRlcmZhY2UgTWVudUFycm93UHJvcHMgZXh0ZW5kcyBQb3BwZXJBcnJvd1Byb3BzIHt9XG5cbmNvbnN0IE1lbnVBcnJvdyA9IFJlYWN0LmZvcndhcmRSZWY8TWVudUFycm93RWxlbWVudCwgTWVudUFycm93UHJvcHM+KFxuICAocHJvcHM6IFNjb3BlZFByb3BzPE1lbnVBcnJvd1Byb3BzPiwgZm9yd2FyZGVkUmVmKSA9PiB7XG4gICAgY29uc3QgeyBfX3Njb3BlTWVudSwgLi4uYXJyb3dQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgcG9wcGVyU2NvcGUgPSB1c2VQb3BwZXJTY29wZShfX3Njb3BlTWVudSk7XG4gICAgcmV0dXJuIDxQb3BwZXJQcmltaXRpdmUuQXJyb3cgey4uLnBvcHBlclNjb3BlfSB7Li4uYXJyb3dQcm9wc30gcmVmPXtmb3J3YXJkZWRSZWZ9IC8+O1xuICB9XG4pO1xuXG5NZW51QXJyb3cuZGlzcGxheU5hbWUgPSBBUlJPV19OQU1FO1xuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBNZW51U3ViXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbmNvbnN0IFNVQl9OQU1FID0gJ01lbnVTdWInO1xuXG50eXBlIE1lbnVTdWJDb250ZXh0VmFsdWUgPSB7XG4gIGNvbnRlbnRJZDogc3RyaW5nO1xuICB0cmlnZ2VySWQ6IHN0cmluZztcbiAgdHJpZ2dlcjogTWVudVN1YlRyaWdnZXJFbGVtZW50IHwgbnVsbDtcbiAgb25UcmlnZ2VyQ2hhbmdlKHRyaWdnZXI6IE1lbnVTdWJUcmlnZ2VyRWxlbWVudCB8IG51bGwpOiB2b2lkO1xufTtcblxuY29uc3QgW01lbnVTdWJQcm92aWRlciwgdXNlTWVudVN1YkNvbnRleHRdID0gY3JlYXRlTWVudUNvbnRleHQ8TWVudVN1YkNvbnRleHRWYWx1ZT4oU1VCX05BTUUpO1xuXG5pbnRlcmZhY2UgTWVudVN1YlByb3BzIHtcbiAgY2hpbGRyZW4/OiBSZWFjdC5SZWFjdE5vZGU7XG4gIG9wZW4/OiBib29sZWFuO1xuICBvbk9wZW5DaGFuZ2U/KG9wZW46IGJvb2xlYW4pOiB2b2lkO1xufVxuXG5jb25zdCBNZW51U3ViOiBSZWFjdC5GQzxNZW51U3ViUHJvcHM+ID0gKHByb3BzOiBTY29wZWRQcm9wczxNZW51U3ViUHJvcHM+KSA9PiB7XG4gIGNvbnN0IHsgX19zY29wZU1lbnUsIGNoaWxkcmVuLCBvcGVuID0gZmFsc2UsIG9uT3BlbkNoYW5nZSB9ID0gcHJvcHM7XG4gIGNvbnN0IHBhcmVudE1lbnVDb250ZXh0ID0gdXNlTWVudUNvbnRleHQoU1VCX05BTUUsIF9fc2NvcGVNZW51KTtcbiAgY29uc3QgcG9wcGVyU2NvcGUgPSB1c2VQb3BwZXJTY29wZShfX3Njb3BlTWVudSk7XG4gIGNvbnN0IFt0cmlnZ2VyLCBzZXRUcmlnZ2VyXSA9IFJlYWN0LnVzZVN0YXRlPE1lbnVTdWJUcmlnZ2VyRWxlbWVudCB8IG51bGw+KG51bGwpO1xuICBjb25zdCBbY29udGVudCwgc2V0Q29udGVudF0gPSBSZWFjdC51c2VTdGF0ZTxNZW51Q29udGVudEVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgY29uc3QgaGFuZGxlT3BlbkNoYW5nZSA9IHVzZUNhbGxiYWNrUmVmKG9uT3BlbkNoYW5nZSk7XG5cbiAgLy8gUHJldmVudCB0aGUgcGFyZW50IG1lbnUgZnJvbSByZW9wZW5pbmcgd2l0aCBvcGVuIHN1Ym1lbnVzLlxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChwYXJlbnRNZW51Q29udGV4dC5vcGVuID09PSBmYWxzZSkgaGFuZGxlT3BlbkNoYW5nZShmYWxzZSk7XG4gICAgcmV0dXJuICgpID0+IGhhbmRsZU9wZW5DaGFuZ2UoZmFsc2UpO1xuICB9LCBbcGFyZW50TWVudUNvbnRleHQub3BlbiwgaGFuZGxlT3BlbkNoYW5nZV0pO1xuXG4gIHJldHVybiAoXG4gICAgPFBvcHBlclByaW1pdGl2ZS5Sb290IHsuLi5wb3BwZXJTY29wZX0+XG4gICAgICA8TWVudVByb3ZpZGVyXG4gICAgICAgIHNjb3BlPXtfX3Njb3BlTWVudX1cbiAgICAgICAgb3Blbj17b3Blbn1cbiAgICAgICAgb25PcGVuQ2hhbmdlPXtoYW5kbGVPcGVuQ2hhbmdlfVxuICAgICAgICBjb250ZW50PXtjb250ZW50fVxuICAgICAgICBvbkNvbnRlbnRDaGFuZ2U9e3NldENvbnRlbnR9XG4gICAgICA+XG4gICAgICAgIDxNZW51U3ViUHJvdmlkZXJcbiAgICAgICAgICBzY29wZT17X19zY29wZU1lbnV9XG4gICAgICAgICAgY29udGVudElkPXt1c2VJZCgpfVxuICAgICAgICAgIHRyaWdnZXJJZD17dXNlSWQoKX1cbiAgICAgICAgICB0cmlnZ2VyPXt0cmlnZ2VyfVxuICAgICAgICAgIG9uVHJpZ2dlckNoYW5nZT17c2V0VHJpZ2dlcn1cbiAgICAgICAgPlxuICAgICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAgPC9NZW51U3ViUHJvdmlkZXI+XG4gICAgICA8L01lbnVQcm92aWRlcj5cbiAgICA8L1BvcHBlclByaW1pdGl2ZS5Sb290PlxuICApO1xufTtcblxuTWVudVN1Yi5kaXNwbGF5TmFtZSA9IFNVQl9OQU1FO1xuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBNZW51U3ViVHJpZ2dlclxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG5jb25zdCBTVUJfVFJJR0dFUl9OQU1FID0gJ01lbnVTdWJUcmlnZ2VyJztcblxudHlwZSBNZW51U3ViVHJpZ2dlckVsZW1lbnQgPSBNZW51SXRlbUltcGxFbGVtZW50O1xuaW50ZXJmYWNlIE1lbnVTdWJUcmlnZ2VyUHJvcHMgZXh0ZW5kcyBNZW51SXRlbUltcGxQcm9wcyB7fVxuXG5jb25zdCBNZW51U3ViVHJpZ2dlciA9IFJlYWN0LmZvcndhcmRSZWY8TWVudVN1YlRyaWdnZXJFbGVtZW50LCBNZW51U3ViVHJpZ2dlclByb3BzPihcbiAgKHByb3BzOiBTY29wZWRQcm9wczxNZW51U3ViVHJpZ2dlclByb3BzPiwgZm9yd2FyZGVkUmVmKSA9PiB7XG4gICAgY29uc3QgY29udGV4dCA9IHVzZU1lbnVDb250ZXh0KFNVQl9UUklHR0VSX05BTUUsIHByb3BzLl9fc2NvcGVNZW51KTtcbiAgICBjb25zdCByb290Q29udGV4dCA9IHVzZU1lbnVSb290Q29udGV4dChTVUJfVFJJR0dFUl9OQU1FLCBwcm9wcy5fX3Njb3BlTWVudSk7XG4gICAgY29uc3Qgc3ViQ29udGV4dCA9IHVzZU1lbnVTdWJDb250ZXh0KFNVQl9UUklHR0VSX05BTUUsIHByb3BzLl9fc2NvcGVNZW51KTtcbiAgICBjb25zdCBjb250ZW50Q29udGV4dCA9IHVzZU1lbnVDb250ZW50Q29udGV4dChTVUJfVFJJR0dFUl9OQU1FLCBwcm9wcy5fX3Njb3BlTWVudSk7XG4gICAgY29uc3Qgb3BlblRpbWVyUmVmID0gUmVhY3QudXNlUmVmPG51bWJlciB8IG51bGw+KG51bGwpO1xuICAgIGNvbnN0IHsgcG9pbnRlckdyYWNlVGltZXJSZWYsIG9uUG9pbnRlckdyYWNlSW50ZW50Q2hhbmdlIH0gPSBjb250ZW50Q29udGV4dDtcbiAgICBjb25zdCBzY29wZSA9IHsgX19zY29wZU1lbnU6IHByb3BzLl9fc2NvcGVNZW51IH07XG5cbiAgICBjb25zdCBjbGVhck9wZW5UaW1lciA9IFJlYWN0LnVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICAgIGlmIChvcGVuVGltZXJSZWYuY3VycmVudCkgd2luZG93LmNsZWFyVGltZW91dChvcGVuVGltZXJSZWYuY3VycmVudCk7XG4gICAgICBvcGVuVGltZXJSZWYuY3VycmVudCA9IG51bGw7XG4gICAgfSwgW10pO1xuXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IGNsZWFyT3BlblRpbWVyLCBbY2xlYXJPcGVuVGltZXJdKTtcblxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCBwb2ludGVyR3JhY2VUaW1lciA9IHBvaW50ZXJHcmFjZVRpbWVyUmVmLmN1cnJlbnQ7XG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KHBvaW50ZXJHcmFjZVRpbWVyKTtcbiAgICAgICAgb25Qb2ludGVyR3JhY2VJbnRlbnRDaGFuZ2UobnVsbCk7XG4gICAgICB9O1xuICAgIH0sIFtwb2ludGVyR3JhY2VUaW1lclJlZiwgb25Qb2ludGVyR3JhY2VJbnRlbnRDaGFuZ2VdKTtcblxuICAgIHJldHVybiAoXG4gICAgICA8TWVudUFuY2hvciBhc0NoaWxkIHsuLi5zY29wZX0+XG4gICAgICAgIDxNZW51SXRlbUltcGxcbiAgICAgICAgICBpZD17c3ViQ29udGV4dC50cmlnZ2VySWR9XG4gICAgICAgICAgYXJpYS1oYXNwb3B1cD1cIm1lbnVcIlxuICAgICAgICAgIGFyaWEtZXhwYW5kZWQ9e2NvbnRleHQub3Blbn1cbiAgICAgICAgICBhcmlhLWNvbnRyb2xzPXtzdWJDb250ZXh0LmNvbnRlbnRJZH1cbiAgICAgICAgICBkYXRhLXN0YXRlPXtnZXRPcGVuU3RhdGUoY29udGV4dC5vcGVuKX1cbiAgICAgICAgICB7Li4ucHJvcHN9XG4gICAgICAgICAgcmVmPXtjb21wb3NlUmVmcyhmb3J3YXJkZWRSZWYsIHN1YkNvbnRleHQub25UcmlnZ2VyQ2hhbmdlKX1cbiAgICAgICAgICAvLyBUaGlzIGlzIHJlZHVuZGFudCBmb3IgbW91c2UgdXNlcnMgYnV0IHdlIGNhbm5vdCBkZXRlcm1pbmUgcG9pbnRlciB0eXBlIGZyb21cbiAgICAgICAgICAvLyBjbGljayBldmVudCBhbmQgd2UgY2Fubm90IHVzZSBwb2ludGVydXAgZXZlbnQgKHNlZSBnaXQgaGlzdG9yeSBmb3IgcmVhc29ucyB3aHkpXG4gICAgICAgICAgb25DbGljaz17KGV2ZW50KSA9PiB7XG4gICAgICAgICAgICBwcm9wcy5vbkNsaWNrPy4oZXZlbnQpO1xuICAgICAgICAgICAgaWYgKHByb3BzLmRpc2FibGVkIHx8IGV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHJldHVybjtcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogV2UgbWFudWFsbHkgZm9jdXMgYmVjYXVzZSBpT1MgU2FmYXJpIGRvZXNuJ3QgYWx3YXlzIGZvY3VzIG9uIGNsaWNrIChlLmcuIGJ1dHRvbnMpXG4gICAgICAgICAgICAgKiBhbmQgd2UgcmVseSBoZWF2aWx5IG9uIGBvbkZvY3VzT3V0c2lkZWAgZm9yIHN1Ym1lbnVzIHRvIGNsb3NlIHdoZW4gc3dpdGNoaW5nXG4gICAgICAgICAgICAgKiBiZXR3ZWVuIHNlcGFyYXRlIHN1Ym1lbnVzLlxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBldmVudC5jdXJyZW50VGFyZ2V0LmZvY3VzKCk7XG4gICAgICAgICAgICBpZiAoIWNvbnRleHQub3BlbikgY29udGV4dC5vbk9wZW5DaGFuZ2UodHJ1ZSk7XG4gICAgICAgICAgfX1cbiAgICAgICAgICBvblBvaW50ZXJNb3ZlPXtjb21wb3NlRXZlbnRIYW5kbGVycyhcbiAgICAgICAgICAgIHByb3BzLm9uUG9pbnRlck1vdmUsXG4gICAgICAgICAgICB3aGVuTW91c2UoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgIGNvbnRlbnRDb250ZXh0Lm9uSXRlbUVudGVyKGV2ZW50KTtcbiAgICAgICAgICAgICAgaWYgKGV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHJldHVybjtcbiAgICAgICAgICAgICAgaWYgKCFwcm9wcy5kaXNhYmxlZCAmJiAhY29udGV4dC5vcGVuICYmICFvcGVuVGltZXJSZWYuY3VycmVudCkge1xuICAgICAgICAgICAgICAgIGNvbnRlbnRDb250ZXh0Lm9uUG9pbnRlckdyYWNlSW50ZW50Q2hhbmdlKG51bGwpO1xuICAgICAgICAgICAgICAgIG9wZW5UaW1lclJlZi5jdXJyZW50ID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgY29udGV4dC5vbk9wZW5DaGFuZ2UodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICBjbGVhck9wZW5UaW1lcigpO1xuICAgICAgICAgICAgICAgIH0sIDEwMCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKX1cbiAgICAgICAgICBvblBvaW50ZXJMZWF2ZT17Y29tcG9zZUV2ZW50SGFuZGxlcnMoXG4gICAgICAgICAgICBwcm9wcy5vblBvaW50ZXJMZWF2ZSxcbiAgICAgICAgICAgIHdoZW5Nb3VzZSgoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgY2xlYXJPcGVuVGltZXIoKTtcblxuICAgICAgICAgICAgICBjb25zdCBjb250ZW50UmVjdCA9IGNvbnRleHQuY29udGVudD8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgICAgICAgIGlmIChjb250ZW50UmVjdCkge1xuICAgICAgICAgICAgICAgIC8vIFRPRE86IG1ha2Ugc3VyZSB0byB1cGRhdGUgdGhpcyB3aGVuIHdlIGNoYW5nZSBwb3NpdGlvbmluZyBsb2dpY1xuICAgICAgICAgICAgICAgIGNvbnN0IHNpZGUgPSBjb250ZXh0LmNvbnRlbnQ/LmRhdGFzZXQuc2lkZSBhcyBTaWRlO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJpZ2h0U2lkZSA9IHNpZGUgPT09ICdyaWdodCc7XG4gICAgICAgICAgICAgICAgY29uc3QgYmxlZWQgPSByaWdodFNpZGUgPyAtNSA6ICs1O1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRlbnROZWFyRWRnZSA9IGNvbnRlbnRSZWN0W3JpZ2h0U2lkZSA/ICdsZWZ0JyA6ICdyaWdodCddO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRlbnRGYXJFZGdlID0gY29udGVudFJlY3RbcmlnaHRTaWRlID8gJ3JpZ2h0JyA6ICdsZWZ0J107XG5cbiAgICAgICAgICAgICAgICBjb250ZW50Q29udGV4dC5vblBvaW50ZXJHcmFjZUludGVudENoYW5nZSh7XG4gICAgICAgICAgICAgICAgICBhcmVhOiBbXG4gICAgICAgICAgICAgICAgICAgIC8vIEFwcGx5IGEgYmxlZWQgb24gY2xpZW50WCB0byBlbnN1cmUgdGhhdCBvdXIgZXhpdCBwb2ludCBpc1xuICAgICAgICAgICAgICAgICAgICAvLyBjb25zaXN0ZW50bHkgd2l0aGluIHBvbHlnb24gYm91bmRzXG4gICAgICAgICAgICAgICAgICAgIHsgeDogZXZlbnQuY2xpZW50WCArIGJsZWVkLCB5OiBldmVudC5jbGllbnRZIH0sXG4gICAgICAgICAgICAgICAgICAgIHsgeDogY29udGVudE5lYXJFZGdlLCB5OiBjb250ZW50UmVjdC50b3AgfSxcbiAgICAgICAgICAgICAgICAgICAgeyB4OiBjb250ZW50RmFyRWRnZSwgeTogY29udGVudFJlY3QudG9wIH0sXG4gICAgICAgICAgICAgICAgICAgIHsgeDogY29udGVudEZhckVkZ2UsIHk6IGNvbnRlbnRSZWN0LmJvdHRvbSB9LFxuICAgICAgICAgICAgICAgICAgICB7IHg6IGNvbnRlbnROZWFyRWRnZSwgeTogY29udGVudFJlY3QuYm90dG9tIH0sXG4gICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgc2lkZSxcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQocG9pbnRlckdyYWNlVGltZXJSZWYuY3VycmVudCk7XG4gICAgICAgICAgICAgICAgcG9pbnRlckdyYWNlVGltZXJSZWYuY3VycmVudCA9IHdpbmRvdy5zZXRUaW1lb3V0KFxuICAgICAgICAgICAgICAgICAgKCkgPT4gY29udGVudENvbnRleHQub25Qb2ludGVyR3JhY2VJbnRlbnRDaGFuZ2UobnVsbCksXG4gICAgICAgICAgICAgICAgICAzMDBcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnRlbnRDb250ZXh0Lm9uVHJpZ2dlckxlYXZlKGV2ZW50KTtcbiAgICAgICAgICAgICAgICBpZiAoZXZlbnQuZGVmYXVsdFByZXZlbnRlZCkgcmV0dXJuO1xuXG4gICAgICAgICAgICAgICAgLy8gVGhlcmUncyAxMDBtcyB3aGVyZSB0aGUgdXNlciBtYXkgbGVhdmUgYW4gaXRlbSBiZWZvcmUgdGhlIHN1Ym1lbnUgd2FzIG9wZW5lZC5cbiAgICAgICAgICAgICAgICBjb250ZW50Q29udGV4dC5vblBvaW50ZXJHcmFjZUludGVudENoYW5nZShudWxsKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICApfVxuICAgICAgICAgIG9uS2V5RG93bj17Y29tcG9zZUV2ZW50SGFuZGxlcnMocHJvcHMub25LZXlEb3duLCAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGlzVHlwaW5nQWhlYWQgPSBjb250ZW50Q29udGV4dC5zZWFyY2hSZWYuY3VycmVudCAhPT0gJyc7XG4gICAgICAgICAgICBpZiAocHJvcHMuZGlzYWJsZWQgfHwgKGlzVHlwaW5nQWhlYWQgJiYgZXZlbnQua2V5ID09PSAnICcpKSByZXR1cm47XG4gICAgICAgICAgICBpZiAoU1VCX09QRU5fS0VZU1tyb290Q29udGV4dC5kaXJdLmluY2x1ZGVzKGV2ZW50LmtleSkpIHtcbiAgICAgICAgICAgICAgY29udGV4dC5vbk9wZW5DaGFuZ2UodHJ1ZSk7XG4gICAgICAgICAgICAgIC8vIFRoZSB0cmlnZ2VyIG1heSBob2xkIGZvY3VzIGlmIG9wZW5lZCB2aWEgcG9pbnRlciBpbnRlcmFjdGlvblxuICAgICAgICAgICAgICAvLyBzbyB3ZSBlbnN1cmUgY29udGVudCBpcyBnaXZlbiBmb2N1cyBhZ2FpbiB3aGVuIHN3aXRjaGluZyB0byBrZXlib2FyZC5cbiAgICAgICAgICAgICAgY29udGV4dC5jb250ZW50Py5mb2N1cygpO1xuICAgICAgICAgICAgICAvLyBwcmV2ZW50IHdpbmRvdyBmcm9tIHNjcm9sbGluZ1xuICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pfVxuICAgICAgICAvPlxuICAgICAgPC9NZW51QW5jaG9yPlxuICAgICk7XG4gIH1cbik7XG5cbk1lbnVTdWJUcmlnZ2VyLmRpc3BsYXlOYW1lID0gU1VCX1RSSUdHRVJfTkFNRTtcblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogTWVudVN1YkNvbnRlbnRcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuY29uc3QgU1VCX0NPTlRFTlRfTkFNRSA9ICdNZW51U3ViQ29udGVudCc7XG5cbnR5cGUgTWVudVN1YkNvbnRlbnRFbGVtZW50ID0gTWVudUNvbnRlbnRJbXBsRWxlbWVudDtcbmludGVyZmFjZSBNZW51U3ViQ29udGVudFByb3BzXG4gIGV4dGVuZHMgT21pdDxcbiAgICBNZW51Q29udGVudEltcGxQcm9wcyxcbiAgICBrZXlvZiBNZW51Q29udGVudEltcGxQcml2YXRlUHJvcHMgfCAnb25DbG9zZUF1dG9Gb2N1cycgfCAnb25FbnRyeUZvY3VzJyB8ICdzaWRlJyB8ICdhbGlnbidcbiAgPiB7XG4gIC8qKlxuICAgKiBVc2VkIHRvIGZvcmNlIG1vdW50aW5nIHdoZW4gbW9yZSBjb250cm9sIGlzIG5lZWRlZC4gVXNlZnVsIHdoZW5cbiAgICogY29udHJvbGxpbmcgYW5pbWF0aW9uIHdpdGggUmVhY3QgYW5pbWF0aW9uIGxpYnJhcmllcy5cbiAgICovXG4gIGZvcmNlTW91bnQ/OiB0cnVlO1xufVxuXG5jb25zdCBNZW51U3ViQ29udGVudCA9IFJlYWN0LmZvcndhcmRSZWY8TWVudVN1YkNvbnRlbnRFbGVtZW50LCBNZW51U3ViQ29udGVudFByb3BzPihcbiAgKHByb3BzOiBTY29wZWRQcm9wczxNZW51U3ViQ29udGVudFByb3BzPiwgZm9yd2FyZGVkUmVmKSA9PiB7XG4gICAgY29uc3QgcG9ydGFsQ29udGV4dCA9IHVzZVBvcnRhbENvbnRleHQoQ09OVEVOVF9OQU1FLCBwcm9wcy5fX3Njb3BlTWVudSk7XG4gICAgY29uc3QgeyBmb3JjZU1vdW50ID0gcG9ydGFsQ29udGV4dC5mb3JjZU1vdW50LCAuLi5zdWJDb250ZW50UHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNvbnRleHQgPSB1c2VNZW51Q29udGV4dChDT05URU5UX05BTUUsIHByb3BzLl9fc2NvcGVNZW51KTtcbiAgICBjb25zdCByb290Q29udGV4dCA9IHVzZU1lbnVSb290Q29udGV4dChDT05URU5UX05BTUUsIHByb3BzLl9fc2NvcGVNZW51KTtcbiAgICBjb25zdCBzdWJDb250ZXh0ID0gdXNlTWVudVN1YkNvbnRleHQoU1VCX0NPTlRFTlRfTkFNRSwgcHJvcHMuX19zY29wZU1lbnUpO1xuICAgIGNvbnN0IHJlZiA9IFJlYWN0LnVzZVJlZjxNZW51U3ViQ29udGVudEVsZW1lbnQ+KG51bGwpO1xuICAgIGNvbnN0IGNvbXBvc2VkUmVmcyA9IHVzZUNvbXBvc2VkUmVmcyhmb3J3YXJkZWRSZWYsIHJlZik7XG4gICAgcmV0dXJuIChcbiAgICAgIDxDb2xsZWN0aW9uLlByb3ZpZGVyIHNjb3BlPXtwcm9wcy5fX3Njb3BlTWVudX0+XG4gICAgICAgIDxQcmVzZW5jZSBwcmVzZW50PXtmb3JjZU1vdW50IHx8IGNvbnRleHQub3Blbn0+XG4gICAgICAgICAgPENvbGxlY3Rpb24uU2xvdCBzY29wZT17cHJvcHMuX19zY29wZU1lbnV9PlxuICAgICAgICAgICAgPE1lbnVDb250ZW50SW1wbFxuICAgICAgICAgICAgICBpZD17c3ViQ29udGV4dC5jb250ZW50SWR9XG4gICAgICAgICAgICAgIGFyaWEtbGFiZWxsZWRieT17c3ViQ29udGV4dC50cmlnZ2VySWR9XG4gICAgICAgICAgICAgIHsuLi5zdWJDb250ZW50UHJvcHN9XG4gICAgICAgICAgICAgIHJlZj17Y29tcG9zZWRSZWZzfVxuICAgICAgICAgICAgICBhbGlnbj1cInN0YXJ0XCJcbiAgICAgICAgICAgICAgc2lkZT17cm9vdENvbnRleHQuZGlyID09PSAncnRsJyA/ICdsZWZ0JyA6ICdyaWdodCd9XG4gICAgICAgICAgICAgIGRpc2FibGVPdXRzaWRlUG9pbnRlckV2ZW50cz17ZmFsc2V9XG4gICAgICAgICAgICAgIGRpc2FibGVPdXRzaWRlU2Nyb2xsPXtmYWxzZX1cbiAgICAgICAgICAgICAgdHJhcEZvY3VzPXtmYWxzZX1cbiAgICAgICAgICAgICAgb25PcGVuQXV0b0ZvY3VzPXsoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAvLyB3aGVuIG9wZW5pbmcgYSBzdWJtZW51LCBmb2N1cyBjb250ZW50IGZvciBrZXlib2FyZCB1c2VycyBvbmx5XG4gICAgICAgICAgICAgICAgaWYgKHJvb3RDb250ZXh0LmlzVXNpbmdLZXlib2FyZFJlZi5jdXJyZW50KSByZWYuY3VycmVudD8uZm9jdXMoKTtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAvLyBUaGUgbWVudSBtaWdodCBjbG9zZSBiZWNhdXNlIG9mIGZvY3VzaW5nIGFub3RoZXIgbWVudSBpdGVtIGluIHRoZSBwYXJlbnQgbWVudS4gV2VcbiAgICAgICAgICAgICAgLy8gZG9uJ3Qgd2FudCBpdCB0byByZWZvY3VzIHRoZSB0cmlnZ2VyIGluIHRoYXQgY2FzZSBzbyB3ZSBoYW5kbGUgdHJpZ2dlciBmb2N1cyBvdXJzZWx2ZXMuXG4gICAgICAgICAgICAgIG9uQ2xvc2VBdXRvRm9jdXM9eyhldmVudCkgPT4gZXZlbnQucHJldmVudERlZmF1bHQoKX1cbiAgICAgICAgICAgICAgb25Gb2N1c091dHNpZGU9e2NvbXBvc2VFdmVudEhhbmRsZXJzKHByb3BzLm9uRm9jdXNPdXRzaWRlLCAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAvLyBXZSBwcmV2ZW50IGNsb3Npbmcgd2hlbiB0aGUgdHJpZ2dlciBpcyBmb2N1c2VkIHRvIGF2b2lkIHRyaWdnZXJpbmcgYSByZS1vcGVuIGFuaW1hdGlvblxuICAgICAgICAgICAgICAgIC8vIG9uIHBvaW50ZXIgaW50ZXJhY3Rpb24uXG4gICAgICAgICAgICAgICAgaWYgKGV2ZW50LnRhcmdldCAhPT0gc3ViQ29udGV4dC50cmlnZ2VyKSBjb250ZXh0Lm9uT3BlbkNoYW5nZShmYWxzZSk7XG4gICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICBvbkVzY2FwZUtleURvd249e2NvbXBvc2VFdmVudEhhbmRsZXJzKHByb3BzLm9uRXNjYXBlS2V5RG93biwgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgcm9vdENvbnRleHQub25DbG9zZSgpO1xuICAgICAgICAgICAgICAgIC8vIGVuc3VyZSBwcmVzc2luZyBlc2NhcGUgaW4gc3VibWVudSBkb2Vzbid0IGVzY2FwZSBmdWxsIHNjcmVlbiBtb2RlXG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgIG9uS2V5RG93bj17Y29tcG9zZUV2ZW50SGFuZGxlcnMocHJvcHMub25LZXlEb3duLCAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAvLyBTdWJtZW51IGtleSBldmVudHMgYnViYmxlIHRocm91Z2ggcG9ydGFscy4gV2Ugb25seSBjYXJlIGFib3V0IGtleXMgaW4gdGhpcyBtZW51LlxuICAgICAgICAgICAgICAgIGNvbnN0IGlzS2V5RG93bkluc2lkZSA9IGV2ZW50LmN1cnJlbnRUYXJnZXQuY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KTtcbiAgICAgICAgICAgICAgICBjb25zdCBpc0Nsb3NlS2V5ID0gU1VCX0NMT1NFX0tFWVNbcm9vdENvbnRleHQuZGlyXS5pbmNsdWRlcyhldmVudC5rZXkpO1xuICAgICAgICAgICAgICAgIGlmIChpc0tleURvd25JbnNpZGUgJiYgaXNDbG9zZUtleSkge1xuICAgICAgICAgICAgICAgICAgY29udGV4dC5vbk9wZW5DaGFuZ2UoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgLy8gV2UgZm9jdXMgbWFudWFsbHkgYmVjYXVzZSB3ZSBwcmV2ZW50ZWQgaXQgaW4gYG9uQ2xvc2VBdXRvRm9jdXNgXG4gICAgICAgICAgICAgICAgICBzdWJDb250ZXh0LnRyaWdnZXI/LmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgICAvLyBwcmV2ZW50IHdpbmRvdyBmcm9tIHNjcm9sbGluZ1xuICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0NvbGxlY3Rpb24uU2xvdD5cbiAgICAgICAgPC9QcmVzZW5jZT5cbiAgICAgIDwvQ29sbGVjdGlvbi5Qcm92aWRlcj5cbiAgICApO1xuICB9XG4pO1xuXG5NZW51U3ViQ29udGVudC5kaXNwbGF5TmFtZSA9IFNVQl9DT05URU5UX05BTUU7XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuZnVuY3Rpb24gZ2V0T3BlblN0YXRlKG9wZW46IGJvb2xlYW4pIHtcbiAgcmV0dXJuIG9wZW4gPyAnb3BlbicgOiAnY2xvc2VkJztcbn1cblxuZnVuY3Rpb24gaXNJbmRldGVybWluYXRlKGNoZWNrZWQ/OiBDaGVja2VkU3RhdGUpOiBjaGVja2VkIGlzICdpbmRldGVybWluYXRlJyB7XG4gIHJldHVybiBjaGVja2VkID09PSAnaW5kZXRlcm1pbmF0ZSc7XG59XG5cbmZ1bmN0aW9uIGdldENoZWNrZWRTdGF0ZShjaGVja2VkOiBDaGVja2VkU3RhdGUpIHtcbiAgcmV0dXJuIGlzSW5kZXRlcm1pbmF0ZShjaGVja2VkKSA/ICdpbmRldGVybWluYXRlJyA6IGNoZWNrZWQgPyAnY2hlY2tlZCcgOiAndW5jaGVja2VkJztcbn1cblxuZnVuY3Rpb24gZm9jdXNGaXJzdChjYW5kaWRhdGVzOiBIVE1MRWxlbWVudFtdKSB7XG4gIGNvbnN0IFBSRVZJT1VTTFlfRk9DVVNFRF9FTEVNRU5UID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtcbiAgZm9yIChjb25zdCBjYW5kaWRhdGUgb2YgY2FuZGlkYXRlcykge1xuICAgIC8vIGlmIGZvY3VzIGlzIGFscmVhZHkgd2hlcmUgd2Ugd2FudCB0byBnbywgd2UgZG9uJ3Qgd2FudCB0byBrZWVwIGdvaW5nIHRocm91Z2ggdGhlIGNhbmRpZGF0ZXNcbiAgICBpZiAoY2FuZGlkYXRlID09PSBQUkVWSU9VU0xZX0ZPQ1VTRURfRUxFTUVOVCkgcmV0dXJuO1xuICAgIGNhbmRpZGF0ZS5mb2N1cygpO1xuICAgIGlmIChkb2N1bWVudC5hY3RpdmVFbGVtZW50ICE9PSBQUkVWSU9VU0xZX0ZPQ1VTRURfRUxFTUVOVCkgcmV0dXJuO1xuICB9XG59XG5cbi8qKlxuICogV3JhcHMgYW4gYXJyYXkgYXJvdW5kIGl0c2VsZiBhdCBhIGdpdmVuIHN0YXJ0IGluZGV4XG4gKiBFeGFtcGxlOiBgd3JhcEFycmF5KFsnYScsICdiJywgJ2MnLCAnZCddLCAyKSA9PT0gWydjJywgJ2QnLCAnYScsICdiJ11gXG4gKi9cbmZ1bmN0aW9uIHdyYXBBcnJheTxUPihhcnJheTogVFtdLCBzdGFydEluZGV4OiBudW1iZXIpIHtcbiAgcmV0dXJuIGFycmF5Lm1hcCgoXywgaW5kZXgpID0+IGFycmF5WyhzdGFydEluZGV4ICsgaW5kZXgpICUgYXJyYXkubGVuZ3RoXSk7XG59XG5cbi8qKlxuICogVGhpcyBpcyB0aGUgXCJtZWF0XCIgb2YgdGhlIHR5cGVhaGVhZCBtYXRjaGluZyBsb2dpYy4gSXQgdGFrZXMgaW4gYWxsIHRoZSB2YWx1ZXMsXG4gKiB0aGUgc2VhcmNoIGFuZCB0aGUgY3VycmVudCBtYXRjaCwgYW5kIHJldHVybnMgdGhlIG5leHQgbWF0Y2ggKG9yIGB1bmRlZmluZWRgKS5cbiAqXG4gKiBXZSBub3JtYWxpemUgdGhlIHNlYXJjaCBiZWNhdXNlIGlmIGEgdXNlciBoYXMgcmVwZWF0ZWRseSBwcmVzc2VkIGEgY2hhcmFjdGVyLFxuICogd2Ugd2FudCB0aGUgZXhhY3Qgc2FtZSBiZWhhdmlvciBhcyBpZiB3ZSBvbmx5IGhhZCB0aGF0IG9uZSBjaGFyYWN0ZXJcbiAqIChpZS4gY3ljbGUgdGhyb3VnaCBvcHRpb25zIHN0YXJ0aW5nIHdpdGggdGhhdCBjaGFyYWN0ZXIpXG4gKlxuICogV2UgYWxzbyByZW9yZGVyIHRoZSB2YWx1ZXMgYnkgd3JhcHBpbmcgdGhlIGFycmF5IGFyb3VuZCB0aGUgY3VycmVudCBtYXRjaC5cbiAqIFRoaXMgaXMgc28gd2UgYWx3YXlzIGxvb2sgZm9yd2FyZCBmcm9tIHRoZSBjdXJyZW50IG1hdGNoLCBhbmQgcGlja2luZyB0aGUgZmlyc3RcbiAqIG1hdGNoIHdpbGwgYWx3YXlzIGJlIHRoZSBjb3JyZWN0IG9uZS5cbiAqXG4gKiBGaW5hbGx5LCBpZiB0aGUgbm9ybWFsaXplZCBzZWFyY2ggaXMgZXhhY3RseSBvbmUgY2hhcmFjdGVyLCB3ZSBleGNsdWRlIHRoZVxuICogY3VycmVudCBtYXRjaCBmcm9tIHRoZSB2YWx1ZXMgYmVjYXVzZSBvdGhlcndpc2UgaXQgd291bGQgYmUgdGhlIGZpcnN0IHRvIG1hdGNoIGFsd2F5c1xuICogYW5kIGZvY3VzIHdvdWxkIG5ldmVyIG1vdmUuIFRoaXMgaXMgYXMgb3Bwb3NlZCB0byB0aGUgcmVndWxhciBjYXNlLCB3aGVyZSB3ZVxuICogZG9uJ3Qgd2FudCBmb2N1cyB0byBtb3ZlIGlmIHRoZSBjdXJyZW50IG1hdGNoIHN0aWxsIG1hdGNoZXMuXG4gKi9cbmZ1bmN0aW9uIGdldE5leHRNYXRjaCh2YWx1ZXM6IHN0cmluZ1tdLCBzZWFyY2g6IHN0cmluZywgY3VycmVudE1hdGNoPzogc3RyaW5nKSB7XG4gIGNvbnN0IGlzUmVwZWF0ZWQgPSBzZWFyY2gubGVuZ3RoID4gMSAmJiBBcnJheS5mcm9tKHNlYXJjaCkuZXZlcnkoKGNoYXIpID0+IGNoYXIgPT09IHNlYXJjaFswXSk7XG4gIGNvbnN0IG5vcm1hbGl6ZWRTZWFyY2ggPSBpc1JlcGVhdGVkID8gc2VhcmNoWzBdIDogc2VhcmNoO1xuICBjb25zdCBjdXJyZW50TWF0Y2hJbmRleCA9IGN1cnJlbnRNYXRjaCA/IHZhbHVlcy5pbmRleE9mKGN1cnJlbnRNYXRjaCkgOiAtMTtcbiAgbGV0IHdyYXBwZWRWYWx1ZXMgPSB3cmFwQXJyYXkodmFsdWVzLCBNYXRoLm1heChjdXJyZW50TWF0Y2hJbmRleCwgMCkpO1xuICBjb25zdCBleGNsdWRlQ3VycmVudE1hdGNoID0gbm9ybWFsaXplZFNlYXJjaC5sZW5ndGggPT09IDE7XG4gIGlmIChleGNsdWRlQ3VycmVudE1hdGNoKSB3cmFwcGVkVmFsdWVzID0gd3JhcHBlZFZhbHVlcy5maWx0ZXIoKHYpID0+IHYgIT09IGN1cnJlbnRNYXRjaCk7XG4gIGNvbnN0IG5leHRNYXRjaCA9IHdyYXBwZWRWYWx1ZXMuZmluZCgodmFsdWUpID0+XG4gICAgdmFsdWUudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKG5vcm1hbGl6ZWRTZWFyY2gudG9Mb3dlckNhc2UoKSlcbiAgKTtcbiAgcmV0dXJuIG5leHRNYXRjaCAhPT0gY3VycmVudE1hdGNoID8gbmV4dE1hdGNoIDogdW5kZWZpbmVkO1xufVxuXG50eXBlIFBvaW50ID0geyB4OiBudW1iZXI7IHk6IG51bWJlciB9O1xudHlwZSBQb2x5Z29uID0gUG9pbnRbXTtcbnR5cGUgU2lkZSA9ICdsZWZ0JyB8ICdyaWdodCc7XG50eXBlIEdyYWNlSW50ZW50ID0geyBhcmVhOiBQb2x5Z29uOyBzaWRlOiBTaWRlIH07XG5cbi8vIERldGVybWluZSBpZiBhIHBvaW50IGlzIGluc2lkZSBvZiBhIHBvbHlnb24uXG4vLyBCYXNlZCBvbiBodHRwczovL2dpdGh1Yi5jb20vc3Vic3RhY2svcG9pbnQtaW4tcG9seWdvblxuZnVuY3Rpb24gaXNQb2ludEluUG9seWdvbihwb2ludDogUG9pbnQsIHBvbHlnb246IFBvbHlnb24pIHtcbiAgY29uc3QgeyB4LCB5IH0gPSBwb2ludDtcbiAgbGV0IGluc2lkZSA9IGZhbHNlO1xuICBmb3IgKGxldCBpID0gMCwgaiA9IHBvbHlnb24ubGVuZ3RoIC0gMTsgaSA8IHBvbHlnb24ubGVuZ3RoOyBqID0gaSsrKSB7XG4gICAgY29uc3QgeGkgPSBwb2x5Z29uW2ldLng7XG4gICAgY29uc3QgeWkgPSBwb2x5Z29uW2ldLnk7XG4gICAgY29uc3QgeGogPSBwb2x5Z29uW2pdLng7XG4gICAgY29uc3QgeWogPSBwb2x5Z29uW2pdLnk7XG5cbiAgICAvLyBwcmV0dGllci1pZ25vcmVcbiAgICBjb25zdCBpbnRlcnNlY3QgPSAoKHlpID4geSkgIT09ICh5aiA+IHkpKSAmJiAoeCA8ICh4aiAtIHhpKSAqICh5IC0geWkpIC8gKHlqIC0geWkpICsgeGkpO1xuICAgIGlmIChpbnRlcnNlY3QpIGluc2lkZSA9ICFpbnNpZGU7XG4gIH1cblxuICByZXR1cm4gaW5zaWRlO1xufVxuXG5mdW5jdGlvbiBpc1BvaW50ZXJJbkdyYWNlQXJlYShldmVudDogUmVhY3QuUG9pbnRlckV2ZW50LCBhcmVhPzogUG9seWdvbikge1xuICBpZiAoIWFyZWEpIHJldHVybiBmYWxzZTtcbiAgY29uc3QgY3Vyc29yUG9zID0geyB4OiBldmVudC5jbGllbnRYLCB5OiBldmVudC5jbGllbnRZIH07XG4gIHJldHVybiBpc1BvaW50SW5Qb2x5Z29uKGN1cnNvclBvcywgYXJlYSk7XG59XG5cbmZ1bmN0aW9uIHdoZW5Nb3VzZTxFPihoYW5kbGVyOiBSZWFjdC5Qb2ludGVyRXZlbnRIYW5kbGVyPEU+KTogUmVhY3QuUG9pbnRlckV2ZW50SGFuZGxlcjxFPiB7XG4gIHJldHVybiAoZXZlbnQpID0+IChldmVudC5wb2ludGVyVHlwZSA9PT0gJ21vdXNlJyA/IGhhbmRsZXIoZXZlbnQpIDogdW5kZWZpbmVkKTtcbn1cblxuY29uc3QgUm9vdCA9IE1lbnU7XG5jb25zdCBBbmNob3IgPSBNZW51QW5jaG9yO1xuY29uc3QgUG9ydGFsID0gTWVudVBvcnRhbDtcbmNvbnN0IENvbnRlbnQgPSBNZW51Q29udGVudDtcbmNvbnN0IEdyb3VwID0gTWVudUdyb3VwO1xuY29uc3QgTGFiZWwgPSBNZW51TGFiZWw7XG5jb25zdCBJdGVtID0gTWVudUl0ZW07XG5jb25zdCBDaGVja2JveEl0ZW0gPSBNZW51Q2hlY2tib3hJdGVtO1xuY29uc3QgUmFkaW9Hcm91cCA9IE1lbnVSYWRpb0dyb3VwO1xuY29uc3QgUmFkaW9JdGVtID0gTWVudVJhZGlvSXRlbTtcbmNvbnN0IEl0ZW1JbmRpY2F0b3IgPSBNZW51SXRlbUluZGljYXRvcjtcbmNvbnN0IFNlcGFyYXRvciA9IE1lbnVTZXBhcmF0b3I7XG5jb25zdCBBcnJvdyA9IE1lbnVBcnJvdztcbmNvbnN0IFN1YiA9IE1lbnVTdWI7XG5jb25zdCBTdWJUcmlnZ2VyID0gTWVudVN1YlRyaWdnZXI7XG5jb25zdCBTdWJDb250ZW50ID0gTWVudVN1YkNvbnRlbnQ7XG5cbmV4cG9ydCB7XG4gIGNyZWF0ZU1lbnVTY29wZSxcbiAgLy9cbiAgTWVudSxcbiAgTWVudUFuY2hvcixcbiAgTWVudVBvcnRhbCxcbiAgTWVudUNvbnRlbnQsXG4gIE1lbnVHcm91cCxcbiAgTWVudUxhYmVsLFxuICBNZW51SXRlbSxcbiAgTWVudUNoZWNrYm94SXRlbSxcbiAgTWVudVJhZGlvR3JvdXAsXG4gIE1lbnVSYWRpb0l0ZW0sXG4gIE1lbnVJdGVtSW5kaWNhdG9yLFxuICBNZW51U2VwYXJhdG9yLFxuICBNZW51QXJyb3csXG4gIE1lbnVTdWIsXG4gIE1lbnVTdWJUcmlnZ2VyLFxuICBNZW51U3ViQ29udGVudCxcbiAgLy9cbiAgUm9vdCxcbiAgQW5jaG9yLFxuICBQb3J0YWwsXG4gIENvbnRlbnQsXG4gIEdyb3VwLFxuICBMYWJlbCxcbiAgSXRlbSxcbiAgQ2hlY2tib3hJdGVtLFxuICBSYWRpb0dyb3VwLFxuICBSYWRpb0l0ZW0sXG4gIEl0ZW1JbmRpY2F0b3IsXG4gIFNlcGFyYXRvcixcbiAgQXJyb3csXG4gIFN1YixcbiAgU3ViVHJpZ2dlcixcbiAgU3ViQ29udGVudCxcbn07XG5leHBvcnQgdHlwZSB7XG4gIE1lbnVQcm9wcyxcbiAgTWVudUFuY2hvclByb3BzLFxuICBNZW51UG9ydGFsUHJvcHMsXG4gIE1lbnVDb250ZW50UHJvcHMsXG4gIE1lbnVHcm91cFByb3BzLFxuICBNZW51TGFiZWxQcm9wcyxcbiAgTWVudUl0ZW1Qcm9wcyxcbiAgTWVudUNoZWNrYm94SXRlbVByb3BzLFxuICBNZW51UmFkaW9Hcm91cFByb3BzLFxuICBNZW51UmFkaW9JdGVtUHJvcHMsXG4gIE1lbnVJdGVtSW5kaWNhdG9yUHJvcHMsXG4gIE1lbnVTZXBhcmF0b3JQcm9wcyxcbiAgTWVudUFycm93UHJvcHMsXG4gIE1lbnVTdWJQcm9wcyxcbiAgTWVudVN1YlRyaWdnZXJQcm9wcyxcbiAgTWVudVN1YkNvbnRlbnRQcm9wcyxcbn07XG4iXSwibmFtZXMiOlsiUmVhY3QiLCJjb21wb3NlRXZlbnRIYW5kbGVycyIsImNyZWF0ZUNvbGxlY3Rpb24iLCJ1c2VDb21wb3NlZFJlZnMiLCJjb21wb3NlUmVmcyIsImNyZWF0ZUNvbnRleHRTY29wZSIsInVzZURpcmVjdGlvbiIsIkRpc21pc3NhYmxlTGF5ZXIiLCJ1c2VGb2N1c0d1YXJkcyIsIkZvY3VzU2NvcGUiLCJ1c2VJZCIsIlBvcHBlclByaW1pdGl2ZSIsImNyZWF0ZVBvcHBlclNjb3BlIiwiUG9ydGFsIiwiUG9ydGFsUHJpbWl0aXZlIiwiUHJlc2VuY2UiLCJQcmltaXRpdmUiLCJkaXNwYXRjaERpc2NyZXRlQ3VzdG9tRXZlbnQiLCJSb3ZpbmdGb2N1c0dyb3VwIiwiY3JlYXRlUm92aW5nRm9jdXNHcm91cFNjb3BlIiwiU2xvdCIsInVzZUNhbGxiYWNrUmVmIiwiaGlkZU90aGVycyIsIlJlbW92ZVNjcm9sbCIsImpzeCIsIlNFTEVDVElPTl9LRVlTIiwiRklSU1RfS0VZUyIsIkxBU1RfS0VZUyIsIkZJUlNUX0xBU1RfS0VZUyIsIlNVQl9PUEVOX0tFWVMiLCJsdHIiLCJydGwiLCJTVUJfQ0xPU0VfS0VZUyIsIk1FTlVfTkFNRSIsIkNvbGxlY3Rpb24iLCJ1c2VDb2xsZWN0aW9uIiwiY3JlYXRlQ29sbGVjdGlvblNjb3BlIiwiY3JlYXRlTWVudUNvbnRleHQiLCJjcmVhdGVNZW51U2NvcGUiLCJ1c2VQb3BwZXJTY29wZSIsInVzZVJvdmluZ0ZvY3VzR3JvdXBTY29wZSIsIk1lbnVQcm92aWRlciIsInVzZU1lbnVDb250ZXh0IiwiTWVudVJvb3RQcm92aWRlciIsInVzZU1lbnVSb290Q29udGV4dCIsIk1lbnUiLCJwcm9wcyIsIl9fc2NvcGVNZW51Iiwib3BlbiIsImNoaWxkcmVuIiwiZGlyIiwib25PcGVuQ2hhbmdlIiwibW9kYWwiLCJwb3BwZXJTY29wZSIsImNvbnRlbnQiLCJzZXRDb250ZW50IiwidXNlU3RhdGUiLCJpc1VzaW5nS2V5Ym9hcmRSZWYiLCJ1c2VSZWYiLCJoYW5kbGVPcGVuQ2hhbmdlIiwiZGlyZWN0aW9uIiwidXNlRWZmZWN0IiwiaGFuZGxlS2V5RG93biIsImN1cnJlbnQiLCJkb2N1bWVudCIsImFkZEV2ZW50TGlzdGVuZXIiLCJoYW5kbGVQb2ludGVyIiwiY2FwdHVyZSIsIm9uY2UiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiUm9vdCIsInNjb3BlIiwib25Db250ZW50Q2hhbmdlIiwib25DbG9zZSIsInVzZUNhbGxiYWNrIiwiZGlzcGxheU5hbWUiLCJBTkNIT1JfTkFNRSIsIk1lbnVBbmNob3IiLCJmb3J3YXJkUmVmIiwiZm9yd2FyZGVkUmVmIiwiYW5jaG9yUHJvcHMiLCJBbmNob3IiLCJyZWYiLCJQT1JUQUxfTkFNRSIsIlBvcnRhbFByb3ZpZGVyIiwidXNlUG9ydGFsQ29udGV4dCIsImZvcmNlTW91bnQiLCJNZW51UG9ydGFsIiwiY29udGFpbmVyIiwiY29udGV4dCIsInByZXNlbnQiLCJhc0NoaWxkIiwiQ09OVEVOVF9OQU1FIiwiTWVudUNvbnRlbnRQcm92aWRlciIsInVzZU1lbnVDb250ZW50Q29udGV4dCIsIk1lbnVDb250ZW50IiwicG9ydGFsQ29udGV4dCIsImNvbnRlbnRQcm9wcyIsInJvb3RDb250ZXh0IiwiUHJvdmlkZXIiLCJNZW51Um9vdENvbnRlbnRNb2RhbCIsIk1lbnVSb290Q29udGVudE5vbk1vZGFsIiwiY29tcG9zZWRSZWZzIiwiTWVudUNvbnRlbnRJbXBsIiwidHJhcEZvY3VzIiwiZGlzYWJsZU91dHNpZGVQb2ludGVyRXZlbnRzIiwiZGlzYWJsZU91dHNpZGVTY3JvbGwiLCJvbkZvY3VzT3V0c2lkZSIsImV2ZW50IiwicHJldmVudERlZmF1bHQiLCJjaGVja0ZvckRlZmF1bHRQcmV2ZW50ZWQiLCJvbkRpc21pc3MiLCJsb29wIiwib25PcGVuQXV0b0ZvY3VzIiwib25DbG9zZUF1dG9Gb2N1cyIsIm9uRW50cnlGb2N1cyIsIm9uRXNjYXBlS2V5RG93biIsIm9uUG9pbnRlckRvd25PdXRzaWRlIiwib25JbnRlcmFjdE91dHNpZGUiLCJyb3ZpbmdGb2N1c0dyb3VwU2NvcGUiLCJnZXRJdGVtcyIsImN1cnJlbnRJdGVtSWQiLCJzZXRDdXJyZW50SXRlbUlkIiwiY29udGVudFJlZiIsInRpbWVyUmVmIiwic2VhcmNoUmVmIiwicG9pbnRlckdyYWNlVGltZXJSZWYiLCJwb2ludGVyR3JhY2VJbnRlbnRSZWYiLCJwb2ludGVyRGlyUmVmIiwibGFzdFBvaW50ZXJYUmVmIiwiU2Nyb2xsTG9ja1dyYXBwZXIiLCJGcmFnbWVudCIsInNjcm9sbExvY2tXcmFwcGVyUHJvcHMiLCJhcyIsImFsbG93UGluY2hab29tIiwiaGFuZGxlVHlwZWFoZWFkU2VhcmNoIiwia2V5Iiwic2VhcmNoIiwiaXRlbXMiLCJmaWx0ZXIiLCJpdGVtIiwiZGlzYWJsZWQiLCJjdXJyZW50SXRlbSIsImFjdGl2ZUVsZW1lbnQiLCJjdXJyZW50TWF0Y2giLCJmaW5kIiwidGV4dFZhbHVlIiwidmFsdWVzIiwibWFwIiwibmV4dE1hdGNoIiwiZ2V0TmV4dE1hdGNoIiwibmV3SXRlbSIsInVwZGF0ZVNlYXJjaCIsInZhbHVlIiwid2luZG93IiwiY2xlYXJUaW1lb3V0Iiwic2V0VGltZW91dCIsImZvY3VzIiwiaXNQb2ludGVyTW92aW5nVG9TdWJtZW51IiwiaXNNb3ZpbmdUb3dhcmRzIiwic2lkZSIsImlzUG9pbnRlckluR3JhY2VBcmVhIiwiYXJlYSIsIm9uSXRlbUVudGVyIiwib25JdGVtTGVhdmUiLCJvblRyaWdnZXJMZWF2ZSIsIm9uUG9pbnRlckdyYWNlSW50ZW50Q2hhbmdlIiwiaW50ZW50IiwidHJhcHBlZCIsIm9uTW91bnRBdXRvRm9jdXMiLCJwcmV2ZW50U2Nyb2xsIiwib25Vbm1vdW50QXV0b0ZvY3VzIiwib3JpZW50YXRpb24iLCJjdXJyZW50VGFiU3RvcElkIiwib25DdXJyZW50VGFiU3RvcElkQ2hhbmdlIiwicHJldmVudFNjcm9sbE9uRW50cnlGb2N1cyIsIkNvbnRlbnQiLCJyb2xlIiwiZ2V0T3BlblN0YXRlIiwic3R5bGUiLCJvdXRsaW5lIiwib25LZXlEb3duIiwidGFyZ2V0IiwiaXNLZXlEb3duSW5zaWRlIiwiY2xvc2VzdCIsImN1cnJlbnRUYXJnZXQiLCJpc01vZGlmaWVyS2V5IiwiY3RybEtleSIsImFsdEtleSIsIm1ldGFLZXkiLCJpc0NoYXJhY3RlcktleSIsImxlbmd0aCIsImluY2x1ZGVzIiwiY2FuZGlkYXRlTm9kZXMiLCJyZXZlcnNlIiwiZm9jdXNGaXJzdCIsIm9uQmx1ciIsImNvbnRhaW5zIiwib25Qb2ludGVyTW92ZSIsIndoZW5Nb3VzZSIsInBvaW50ZXJYSGFzQ2hhbmdlZCIsImNsaWVudFgiLCJuZXdEaXIiLCJHUk9VUF9OQU1FIiwiTWVudUdyb3VwIiwiZ3JvdXBQcm9wcyIsImRpdiIsIkxBQkVMX05BTUUiLCJNZW51TGFiZWwiLCJsYWJlbFByb3BzIiwiSVRFTV9OQU1FIiwiSVRFTV9TRUxFQ1QiLCJNZW51SXRlbSIsIm9uU2VsZWN0IiwiaXRlbVByb3BzIiwiY29udGVudENvbnRleHQiLCJpc1BvaW50ZXJEb3duUmVmIiwiaGFuZGxlU2VsZWN0IiwibWVudUl0ZW0iLCJpdGVtU2VsZWN0RXZlbnQiLCJDdXN0b21FdmVudCIsImJ1YmJsZXMiLCJjYW5jZWxhYmxlIiwiZGVmYXVsdFByZXZlbnRlZCIsIk1lbnVJdGVtSW1wbCIsIm9uQ2xpY2siLCJvblBvaW50ZXJEb3duIiwib25Qb2ludGVyVXAiLCJjbGljayIsImlzVHlwaW5nQWhlYWQiLCJpc0ZvY3VzZWQiLCJzZXRJc0ZvY3VzZWQiLCJ0ZXh0Q29udGVudCIsInNldFRleHRDb250ZW50IiwidHJpbSIsIkl0ZW1TbG90IiwiSXRlbSIsImZvY3VzYWJsZSIsIm9uUG9pbnRlckxlYXZlIiwib25Gb2N1cyIsIkNIRUNLQk9YX0lURU1fTkFNRSIsIk1lbnVDaGVja2JveEl0ZW0iLCJjaGVja2VkIiwib25DaGVja2VkQ2hhbmdlIiwiY2hlY2tib3hJdGVtUHJvcHMiLCJJdGVtSW5kaWNhdG9yUHJvdmlkZXIiLCJpc0luZGV0ZXJtaW5hdGUiLCJnZXRDaGVja2VkU3RhdGUiLCJSQURJT19HUk9VUF9OQU1FIiwiUmFkaW9Hcm91cFByb3ZpZGVyIiwidXNlUmFkaW9Hcm91cENvbnRleHQiLCJvblZhbHVlQ2hhbmdlIiwiTWVudVJhZGlvR3JvdXAiLCJoYW5kbGVWYWx1ZUNoYW5nZSIsIlJBRElPX0lURU1fTkFNRSIsIk1lbnVSYWRpb0l0ZW0iLCJyYWRpb0l0ZW1Qcm9wcyIsIklURU1fSU5ESUNBVE9SX05BTUUiLCJ1c2VJdGVtSW5kaWNhdG9yQ29udGV4dCIsIk1lbnVJdGVtSW5kaWNhdG9yIiwiaXRlbUluZGljYXRvclByb3BzIiwiaW5kaWNhdG9yQ29udGV4dCIsInNwYW4iLCJTRVBBUkFUT1JfTkFNRSIsIk1lbnVTZXBhcmF0b3IiLCJzZXBhcmF0b3JQcm9wcyIsIkFSUk9XX05BTUUiLCJNZW51QXJyb3ciLCJhcnJvd1Byb3BzIiwiQXJyb3ciLCJTVUJfTkFNRSIsIk1lbnVTdWJQcm92aWRlciIsInVzZU1lbnVTdWJDb250ZXh0IiwiTWVudVN1YiIsInBhcmVudE1lbnVDb250ZXh0IiwidHJpZ2dlciIsInNldFRyaWdnZXIiLCJjb250ZW50SWQiLCJ0cmlnZ2VySWQiLCJvblRyaWdnZXJDaGFuZ2UiLCJTVUJfVFJJR0dFUl9OQU1FIiwiTWVudVN1YlRyaWdnZXIiLCJzdWJDb250ZXh0Iiwib3BlblRpbWVyUmVmIiwiY2xlYXJPcGVuVGltZXIiLCJwb2ludGVyR3JhY2VUaW1lciIsImlkIiwiY29udGVudFJlY3QiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJkYXRhc2V0IiwicmlnaHRTaWRlIiwiYmxlZWQiLCJjb250ZW50TmVhckVkZ2UiLCJjb250ZW50RmFyRWRnZSIsIngiLCJ5IiwiY2xpZW50WSIsInRvcCIsImJvdHRvbSIsIlNVQl9DT05URU5UX05BTUUiLCJNZW51U3ViQ29udGVudCIsInN1YkNvbnRlbnRQcm9wcyIsImFsaWduIiwiaXNDbG9zZUtleSIsImNhbmRpZGF0ZXMiLCJQUkVWSU9VU0xZX0ZPQ1VTRURfRUxFTUVOVCIsImNhbmRpZGF0ZSIsIndyYXBBcnJheSIsImFycmF5Iiwic3RhcnRJbmRleCIsIl8iLCJpbmRleCIsImlzUmVwZWF0ZWQiLCJBcnJheSIsImZyb20iLCJldmVyeSIsImNoYXIiLCJub3JtYWxpemVkU2VhcmNoIiwiY3VycmVudE1hdGNoSW5kZXgiLCJpbmRleE9mIiwid3JhcHBlZFZhbHVlcyIsIk1hdGgiLCJtYXgiLCJleGNsdWRlQ3VycmVudE1hdGNoIiwidiIsInRvTG93ZXJDYXNlIiwic3RhcnRzV2l0aCIsImlzUG9pbnRJblBvbHlnb24iLCJwb2ludCIsInBvbHlnb24iLCJpbnNpZGUiLCJpIiwiaiIsInhpIiwieWkiLCJ4aiIsInlqIiwiaW50ZXJzZWN0IiwiY3Vyc29yUG9zIiwiaGFuZGxlciIsInBvaW50ZXJUeXBlIiwiR3JvdXAiLCJMYWJlbCIsIkNoZWNrYm94SXRlbSIsIlJhZGlvR3JvdXAiLCJSYWRpb0l0ZW0iLCJJdGVtSW5kaWNhdG9yIiwiU2VwYXJhdG9yIiwiU3ViIiwiU3ViVHJpZ2dlciIsIlN1YkNvbnRlbnQiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/@radix-ui/react-menu/dist/index.mjs\n"); /***/ }), /***/ "(ssr)/./node_modules/@radix-ui/react-popper/dist/index.mjs": /*!************************************************************!*\ !*** ./node_modules/@radix-ui/react-popper/dist/index.mjs ***! \************************************************************/ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ALIGN_OPTIONS: () => (/* binding */ ALIGN_OPTIONS),\n/* harmony export */ Anchor: () => (/* binding */ Anchor),\n/* harmony export */ Arrow: () => (/* binding */ Arrow),\n/* harmony export */ Content: () => (/* binding */ Content),\n/* harmony export */ Popper: () => (/* binding */ Popper),\n/* harmony export */ PopperAnchor: () => (/* binding */ PopperAnchor),\n/* harmony export */ PopperArrow: () => (/* binding */ PopperArrow),\n/* harmony export */ PopperContent: () => (/* binding */ PopperContent),\n/* harmony export */ Root: () => (/* binding */ Root2),\n/* harmony export */ SIDE_OPTIONS: () => (/* binding */ SIDE_OPTIONS),\n/* harmony export */ createPopperScope: () => (/* binding */ createPopperScope)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var _floating_ui_react_dom__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @floating-ui/react-dom */ \"(ssr)/./node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.mjs\");\n/* harmony import */ var _floating_ui_react_dom__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @floating-ui/react-dom */ \"(ssr)/./node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs\");\n/* harmony import */ var _radix_ui_react_arrow__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @radix-ui/react-arrow */ \"(ssr)/./node_modules/@radix-ui/react-arrow/dist/index.mjs\");\n/* harmony import */ var _radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @radix-ui/react-compose-refs */ \"(ssr)/./node_modules/@radix-ui/react-compose-refs/dist/index.mjs\");\n/* harmony import */ var _radix_ui_react_context__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @radix-ui/react-context */ \"(ssr)/./node_modules/@radix-ui/react-context/dist/index.mjs\");\n/* harmony import */ var _radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @radix-ui/react-primitive */ \"(ssr)/./node_modules/@radix-ui/react-primitive/dist/index.mjs\");\n/* harmony import */ var _radix_ui_react_use_callback_ref__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @radix-ui/react-use-callback-ref */ \"(ssr)/./node_modules/@radix-ui/react-use-callback-ref/dist/index.mjs\");\n/* harmony import */ var _radix_ui_react_use_layout_effect__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @radix-ui/react-use-layout-effect */ \"(ssr)/./node_modules/@radix-ui/react-use-layout-effect/dist/index.mjs\");\n/* harmony import */ var _radix_ui_react_use_size__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @radix-ui/react-use-size */ \"(ssr)/./node_modules/@radix-ui/react-use-size/dist/index.mjs\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react-jsx-runtime.js\");\n/* __next_internal_client_entry_do_not_use__ ALIGN_OPTIONS,Anchor,Arrow,Content,Popper,PopperAnchor,PopperArrow,PopperContent,Root,SIDE_OPTIONS,createPopperScope auto */ // packages/react/popper/src/Popper.tsx\n\n\n\n\n\n\n\n\n\n\nvar SIDE_OPTIONS = [\n \"top\",\n \"right\",\n \"bottom\",\n \"left\"\n];\nvar ALIGN_OPTIONS = [\n \"start\",\n \"center\",\n \"end\"\n];\nvar POPPER_NAME = \"Popper\";\nvar [createPopperContext, createPopperScope] = (0,_radix_ui_react_context__WEBPACK_IMPORTED_MODULE_2__.createContextScope)(POPPER_NAME);\nvar [PopperProvider, usePopperContext] = createPopperContext(POPPER_NAME);\nvar Popper = (props)=>{\n const { __scopePopper, children } = props;\n const [anchor, setAnchor] = react__WEBPACK_IMPORTED_MODULE_0__.useState(null);\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(PopperProvider, {\n scope: __scopePopper,\n anchor,\n onAnchorChange: setAnchor,\n children\n });\n};\nPopper.displayName = POPPER_NAME;\nvar ANCHOR_NAME = \"PopperAnchor\";\nvar PopperAnchor = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef((props, forwardedRef)=>{\n const { __scopePopper, virtualRef, ...anchorProps } = props;\n const context = usePopperContext(ANCHOR_NAME, __scopePopper);\n const ref = react__WEBPACK_IMPORTED_MODULE_0__.useRef(null);\n const composedRefs = (0,_radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_3__.useComposedRefs)(forwardedRef, ref);\n react__WEBPACK_IMPORTED_MODULE_0__.useEffect(()=>{\n context.onAnchorChange(virtualRef?.current || ref.current);\n });\n return virtualRef ? null : /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_4__.Primitive.div, {\n ...anchorProps,\n ref: composedRefs\n });\n});\nPopperAnchor.displayName = ANCHOR_NAME;\nvar CONTENT_NAME = \"PopperContent\";\nvar [PopperContentProvider, useContentContext] = createPopperContext(CONTENT_NAME);\nvar PopperContent = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef((props, forwardedRef)=>{\n const { __scopePopper, side = \"bottom\", sideOffset = 0, align = \"center\", alignOffset = 0, arrowPadding = 0, avoidCollisions = true, collisionBoundary = [], collisionPadding: collisionPaddingProp = 0, sticky = \"partial\", hideWhenDetached = false, updatePositionStrategy = \"optimized\", onPlaced, ...contentProps } = props;\n const context = usePopperContext(CONTENT_NAME, __scopePopper);\n const [content, setContent] = react__WEBPACK_IMPORTED_MODULE_0__.useState(null);\n const composedRefs = (0,_radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_3__.useComposedRefs)(forwardedRef, (node)=>setContent(node));\n const [arrow, setArrow] = react__WEBPACK_IMPORTED_MODULE_0__.useState(null);\n const arrowSize = (0,_radix_ui_react_use_size__WEBPACK_IMPORTED_MODULE_5__.useSize)(arrow);\n const arrowWidth = arrowSize?.width ?? 0;\n const arrowHeight = arrowSize?.height ?? 0;\n const desiredPlacement = side + (align !== \"center\" ? \"-\" + align : \"\");\n const collisionPadding = typeof collisionPaddingProp === \"number\" ? collisionPaddingProp : {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n ...collisionPaddingProp\n };\n const boundary = Array.isArray(collisionBoundary) ? collisionBoundary : [\n collisionBoundary\n ];\n const hasExplicitBoundaries = boundary.length > 0;\n const detectOverflowOptions = {\n padding: collisionPadding,\n boundary: boundary.filter(isNotNull),\n // with `strategy: 'fixed'`, this is the only way to get it to respect boundaries\n altBoundary: hasExplicitBoundaries\n };\n const { refs, floatingStyles, placement, isPositioned, middlewareData } = (0,_floating_ui_react_dom__WEBPACK_IMPORTED_MODULE_6__.useFloating)({\n // default to `fixed` strategy so users don't have to pick and we also avoid focus scroll issues\n strategy: \"fixed\",\n placement: desiredPlacement,\n whileElementsMounted: (...args)=>{\n const cleanup = (0,_floating_ui_react_dom__WEBPACK_IMPORTED_MODULE_7__.autoUpdate)(...args, {\n animationFrame: updatePositionStrategy === \"always\"\n });\n return cleanup;\n },\n elements: {\n reference: context.anchor\n },\n middleware: [\n (0,_floating_ui_react_dom__WEBPACK_IMPORTED_MODULE_6__.offset)({\n mainAxis: sideOffset + arrowHeight,\n alignmentAxis: alignOffset\n }),\n avoidCollisions && (0,_floating_ui_react_dom__WEBPACK_IMPORTED_MODULE_6__.shift)({\n mainAxis: true,\n crossAxis: false,\n limiter: sticky === \"partial\" ? (0,_floating_ui_react_dom__WEBPACK_IMPORTED_MODULE_6__.limitShift)() : void 0,\n ...detectOverflowOptions\n }),\n avoidCollisions && (0,_floating_ui_react_dom__WEBPACK_IMPORTED_MODULE_6__.flip)({\n ...detectOverflowOptions\n }),\n (0,_floating_ui_react_dom__WEBPACK_IMPORTED_MODULE_6__.size)({\n ...detectOverflowOptions,\n apply: ({ elements, rects, availableWidth, availableHeight })=>{\n const { width: anchorWidth, height: anchorHeight } = rects.reference;\n const contentStyle = elements.floating.style;\n contentStyle.setProperty(\"--radix-popper-available-width\", `${availableWidth}px`);\n contentStyle.setProperty(\"--radix-popper-available-height\", `${availableHeight}px`);\n contentStyle.setProperty(\"--radix-popper-anchor-width\", `${anchorWidth}px`);\n contentStyle.setProperty(\"--radix-popper-anchor-height\", `${anchorHeight}px`);\n }\n }),\n arrow && (0,_floating_ui_react_dom__WEBPACK_IMPORTED_MODULE_6__.arrow)({\n element: arrow,\n padding: arrowPadding\n }),\n transformOrigin({\n arrowWidth,\n arrowHeight\n }),\n hideWhenDetached && (0,_floating_ui_react_dom__WEBPACK_IMPORTED_MODULE_6__.hide)({\n strategy: \"referenceHidden\",\n ...detectOverflowOptions\n })\n ]\n });\n const [placedSide, placedAlign] = getSideAndAlignFromPlacement(placement);\n const handlePlaced = (0,_radix_ui_react_use_callback_ref__WEBPACK_IMPORTED_MODULE_8__.useCallbackRef)(onPlaced);\n (0,_radix_ui_react_use_layout_effect__WEBPACK_IMPORTED_MODULE_9__.useLayoutEffect)(()=>{\n if (isPositioned) {\n handlePlaced?.();\n }\n }, [\n isPositioned,\n handlePlaced\n ]);\n const arrowX = middlewareData.arrow?.x;\n const arrowY = middlewareData.arrow?.y;\n const cannotCenterArrow = middlewareData.arrow?.centerOffset !== 0;\n const [contentZIndex, setContentZIndex] = react__WEBPACK_IMPORTED_MODULE_0__.useState();\n (0,_radix_ui_react_use_layout_effect__WEBPACK_IMPORTED_MODULE_9__.useLayoutEffect)(()=>{\n if (content) setContentZIndex(window.getComputedStyle(content).zIndex);\n }, [\n content\n ]);\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"div\", {\n ref: refs.setFloating,\n \"data-radix-popper-content-wrapper\": \"\",\n style: {\n ...floatingStyles,\n transform: isPositioned ? floatingStyles.transform : \"translate(0, -200%)\",\n // keep off the page when measuring\n minWidth: \"max-content\",\n zIndex: contentZIndex,\n [\"--radix-popper-transform-origin\"]: [\n middlewareData.transformOrigin?.x,\n middlewareData.transformOrigin?.y\n ].join(\" \"),\n // hide the content if using the hide middleware and should be hidden\n // set visibility to hidden and disable pointer events so the UI behaves\n // as if the PopperContent isn't there at all\n ...middlewareData.hide?.referenceHidden && {\n visibility: \"hidden\",\n pointerEvents: \"none\"\n }\n },\n dir: props.dir,\n children: /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(PopperContentProvider, {\n scope: __scopePopper,\n placedSide,\n onArrowChange: setArrow,\n arrowX,\n arrowY,\n shouldHideArrow: cannotCenterArrow,\n children: /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_4__.Primitive.div, {\n \"data-side\": placedSide,\n \"data-align\": placedAlign,\n ...contentProps,\n ref: composedRefs,\n style: {\n ...contentProps.style,\n // if the PopperContent hasn't been placed yet (not all measurements done)\n // we prevent animations so that users's animation don't kick in too early referring wrong sides\n animation: !isPositioned ? \"none\" : void 0\n }\n })\n })\n });\n});\nPopperContent.displayName = CONTENT_NAME;\nvar ARROW_NAME = \"PopperArrow\";\nvar OPPOSITE_SIDE = {\n top: \"bottom\",\n right: \"left\",\n bottom: \"top\",\n left: \"right\"\n};\nvar PopperArrow = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(function PopperArrow2(props, forwardedRef) {\n const { __scopePopper, ...arrowProps } = props;\n const contentContext = useContentContext(ARROW_NAME, __scopePopper);\n const baseSide = OPPOSITE_SIDE[contentContext.placedSide];\n return(// we have to use an extra wrapper because `ResizeObserver` (used by `useSize`)\n // doesn't report size as we'd expect on SVG elements.\n // it reports their bounding box which is effectively the largest path inside the SVG.\n /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"span\", {\n ref: contentContext.onArrowChange,\n style: {\n position: \"absolute\",\n left: contentContext.arrowX,\n top: contentContext.arrowY,\n [baseSide]: 0,\n transformOrigin: {\n top: \"\",\n right: \"0 0\",\n bottom: \"center 0\",\n left: \"100% 0\"\n }[contentContext.placedSide],\n transform: {\n top: \"translateY(100%)\",\n right: \"translateY(50%) rotate(90deg) translateX(-50%)\",\n bottom: `rotate(180deg)`,\n left: \"translateY(50%) rotate(-90deg) translateX(50%)\"\n }[contentContext.placedSide],\n visibility: contentContext.shouldHideArrow ? \"hidden\" : void 0\n },\n children: /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_radix_ui_react_arrow__WEBPACK_IMPORTED_MODULE_10__.Root, {\n ...arrowProps,\n ref: forwardedRef,\n style: {\n ...arrowProps.style,\n // ensures the element can be measured correctly (mostly for if SVG)\n display: \"block\"\n }\n })\n }));\n});\nPopperArrow.displayName = ARROW_NAME;\nfunction isNotNull(value) {\n return value !== null;\n}\nvar transformOrigin = (options)=>({\n name: \"transformOrigin\",\n options,\n fn (data) {\n const { placement, rects, middlewareData } = data;\n const cannotCenterArrow = middlewareData.arrow?.centerOffset !== 0;\n const isArrowHidden = cannotCenterArrow;\n const arrowWidth = isArrowHidden ? 0 : options.arrowWidth;\n const arrowHeight = isArrowHidden ? 0 : options.arrowHeight;\n const [placedSide, placedAlign] = getSideAndAlignFromPlacement(placement);\n const noArrowAlign = {\n start: \"0%\",\n center: \"50%\",\n end: \"100%\"\n }[placedAlign];\n const arrowXCenter = (middlewareData.arrow?.x ?? 0) + arrowWidth / 2;\n const arrowYCenter = (middlewareData.arrow?.y ?? 0) + arrowHeight / 2;\n let x = \"\";\n let y = \"\";\n if (placedSide === \"bottom\") {\n x = isArrowHidden ? noArrowAlign : `${arrowXCenter}px`;\n y = `${-arrowHeight}px`;\n } else if (placedSide === \"top\") {\n x = isArrowHidden ? noArrowAlign : `${arrowXCenter}px`;\n y = `${rects.floating.height + arrowHeight}px`;\n } else if (placedSide === \"right\") {\n x = `${-arrowHeight}px`;\n y = isArrowHidden ? noArrowAlign : `${arrowYCenter}px`;\n } else if (placedSide === \"left\") {\n x = `${rects.floating.width + arrowHeight}px`;\n y = isArrowHidden ? noArrowAlign : `${arrowYCenter}px`;\n }\n return {\n data: {\n x,\n y\n }\n };\n }\n });\nfunction getSideAndAlignFromPlacement(placement) {\n const [side, align = \"center\"] = placement.split(\"-\");\n return [\n side,\n align\n ];\n}\nvar Root2 = Popper;\nvar Anchor = PopperAnchor;\nvar Content = PopperContent;\nvar Arrow = PopperArrow;\n //# sourceMappingURL=index.mjs.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LXBvcHBlci9kaXN0L2luZGV4Lm1qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUF1QjtBQVdoQjtBQUN5QjtBQUNBO0FBQ0c7QUFDVDtBQUNLO0FBQ0M7QUFDUjtBQWtDcEI7QUE1QkosSUFBTW1CLGVBQWU7SUFBQztJQUFPO0lBQVM7SUFBVTtDQUFNO0FBQ3RELElBQU1DLGdCQUFnQjtJQUFDO0lBQVM7SUFBVTtDQUFLO0FBUy9DLElBQU1DLGNBQWM7QUFHcEIsSUFBTSxDQUFDQyxxQkFBcUJDLGtCQUFpQixHQUFJViwyRUFBa0JBLENBQUNRO0FBTXBFLElBQU0sQ0FBQ0csZ0JBQWdCQyxpQkFBZ0IsR0FBSUgsb0JBQXdDRDtBQUtuRixJQUFNSyxTQUFnQyxDQUFDQztJQUNyQyxNQUFNLEVBQUVDLGFBQUEsRUFBZUMsUUFBQSxFQUFTLEdBQUlGO0lBQ3BDLE1BQU0sQ0FBQ0csUUFBUUMsVUFBUyxHQUFVL0IsMkNBQUEsQ0FBNEI7SUFDOUQsT0FDRSxnQkFBQWtCLHNEQUFBQSxDQUFDTSxnQkFBQTtRQUFlUyxPQUFPTDtRQUFlRTtRQUFnQkksZ0JBQWdCSDtRQUNuRUY7SUFBQTtBQUdQO0FBRUFILE9BQU9TLFdBQUEsR0FBY2Q7QUFNckIsSUFBTWUsY0FBYztBQVFwQixJQUFNQyw2QkFBcUJyQyw2Q0FBQSxDQUN6QixDQUFDMkIsT0FBdUNZO0lBQ3RDLE1BQU0sRUFBRVgsYUFBQSxFQUFlWSxVQUFBLEVBQVksR0FBR0MsYUFBWSxHQUFJZDtJQUN0RCxNQUFNZSxVQUFVakIsaUJBQWlCVyxhQUFhUjtJQUM5QyxNQUFNZSxNQUFZM0MseUNBQUEsQ0FBNEI7SUFDOUMsTUFBTTZDLGVBQWVqQyw2RUFBZUEsQ0FBQzJCLGNBQWNJO0lBRTdDM0MsNENBQUEsQ0FBVTtRQUlkMEMsUUFBUVIsY0FBQSxDQUFlTSxZQUFZTyxXQUFXSixJQUFJSSxPQUFPO0lBQzNEO0lBRUEsT0FB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QVNuSTtBQUNmLElBQU1vSSxVQUFVckg7QUFDaEIsSUFBTXNILFFBQVF0QiIsInNvdXJjZXMiOlsid2VicGFjazovL215LXYwLXByb2plY3QvLi4vc3JjL1BvcHBlci50c3g/MmZmYyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQge1xuICB1c2VGbG9hdGluZyxcbiAgYXV0b1VwZGF0ZSxcbiAgb2Zmc2V0LFxuICBzaGlmdCxcbiAgbGltaXRTaGlmdCxcbiAgaGlkZSxcbiAgYXJyb3cgYXMgZmxvYXRpbmdVSWFycm93LFxuICBmbGlwLFxuICBzaXplLFxufSBmcm9tICdAZmxvYXRpbmctdWkvcmVhY3QtZG9tJztcbmltcG9ydCAqIGFzIEFycm93UHJpbWl0aXZlIGZyb20gJ0ByYWRpeC11aS9yZWFjdC1hcnJvdyc7XG5pbXBvcnQgeyB1c2VDb21wb3NlZFJlZnMgfSBmcm9tICdAcmFkaXgtdWkvcmVhY3QtY29tcG9zZS1yZWZzJztcbmltcG9ydCB7IGNyZWF0ZUNvbnRleHRTY29wZSB9IGZyb20gJ0ByYWRpeC11aS9yZWFjdC1jb250ZXh0JztcbmltcG9ydCB7IFByaW1pdGl2ZSB9IGZyb20gJ0ByYWRpeC11aS9yZWFjdC1wcmltaXRpdmUnO1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2tSZWYgfSBmcm9tICdAcmFkaXgtdWkvcmVhY3QtdXNlLWNhbGxiYWNrLXJlZic7XG5pbXBvcnQgeyB1c2VMYXlvdXRFZmZlY3QgfSBmcm9tICdAcmFkaXgtdWkvcmVhY3QtdXNlLWxheW91dC1lZmZlY3QnO1xuaW1wb3J0IHsgdXNlU2l6ZSB9IGZyb20gJ0ByYWRpeC11aS9yZWFjdC11c2Utc2l6ZSc7XG5cbmltcG9ydCB0eXBlIHsgUGxhY2VtZW50LCBNaWRkbGV3YXJlIH0gZnJvbSAnQGZsb2F0aW5nLXVpL3JlYWN0LWRvbSc7XG5pbXBvcnQgdHlwZSB7IFNjb3BlIH0gZnJvbSAnQHJhZGl4LXVpL3JlYWN0LWNvbnRleHQnO1xuaW1wb3J0IHR5cGUgeyBNZWFzdXJhYmxlIH0gZnJvbSAnQHJhZGl4LXVpL3JlY3QnO1xuXG5jb25zdCBTSURFX09QVElPTlMgPSBbJ3RvcCcsICdyaWdodCcsICdib3R0b20nLCAnbGVmdCddIGFzIGNvbnN0O1xuY29uc3QgQUxJR05fT1BUSU9OUyA9IFsnc3RhcnQnLCAnY2VudGVyJywgJ2VuZCddIGFzIGNvbnN0O1xuXG50eXBlIFNpZGUgPSAodHlwZW9mIFNJREVfT1BUSU9OUylbbnVtYmVyXTtcbnR5cGUgQWxpZ24gPSAodHlwZW9mIEFMSUdOX09QVElPTlMpW251bWJlcl07XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFBvcHBlclxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG5jb25zdCBQT1BQRVJfTkFNRSA9ICdQb3BwZXInO1xuXG50eXBlIFNjb3BlZFByb3BzPFA+ID0gUCAmIHsgX19zY29wZVBvcHBlcj86IFNjb3BlIH07XG5jb25zdCBbY3JlYXRlUG9wcGVyQ29udGV4dCwgY3JlYXRlUG9wcGVyU2NvcGVdID0gY3JlYXRlQ29udGV4dFNjb3BlKFBPUFBFUl9OQU1FKTtcblxudHlwZSBQb3BwZXJDb250ZXh0VmFsdWUgPSB7XG4gIGFuY2hvcjogTWVhc3VyYWJsZSB8IG51bGw7XG4gIG9uQW5jaG9yQ2hhbmdlKGFuY2hvcjogTWVhc3VyYWJsZSB8IG51bGwpOiB2b2lkO1xufTtcbmNvbnN0IFtQb3BwZXJQcm92aWRlciwgdXNlUG9wcGVyQ29udGV4dF0gPSBjcmVhdGVQb3BwZXJDb250ZXh0PFBvcHBlckNvbnRleHRWYWx1ZT4oUE9QUEVSX05BTUUpO1xuXG5pbnRlcmZhY2UgUG9wcGVyUHJvcHMge1xuICBjaGlsZHJlbj86IFJlYWN0LlJlYWN0Tm9kZTtcbn1cbmNvbnN0IFBvcHBlcjogUmVhY3QuRkM8UG9wcGVyUHJvcHM+ID0gKHByb3BzOiBTY29wZWRQcm9wczxQb3BwZXJQcm9wcz4pID0+IHtcbiAgY29uc3QgeyBfX3Njb3BlUG9wcGVyLCBjaGlsZHJlbiB9ID0gcHJvcHM7XG4gIGNvbnN0IFthbmNob3IsIHNldEFuY2hvcl0gPSBSZWFjdC51c2VTdGF0ZTxNZWFzdXJhYmxlIHwgbnVsbD4obnVsbCk7XG4gIHJldHVybiAoXG4gICAgPFBvcHBlclByb3ZpZGVyIHNjb3BlPXtfX3Njb3BlUG9wcGVyfSBhbmNob3I9e2FuY2hvcn0gb25BbmNob3JDaGFuZ2U9e3NldEFuY2hvcn0+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9Qb3BwZXJQcm92aWRlcj5cbiAgKTtcbn07XG5cblBvcHBlci5kaXNwbGF5TmFtZSA9IFBPUFBFUl9OQU1FO1xuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBQb3BwZXJBbmNob3JcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuY29uc3QgQU5DSE9SX05BTUUgPSAnUG9wcGVyQW5jaG9yJztcblxudHlwZSBQb3BwZXJBbmNob3JFbGVtZW50ID0gUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgUHJpbWl0aXZlLmRpdj47XG50eXBlIFByaW1pdGl2ZURpdlByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBQcmltaXRpdmUuZGl2PjtcbmludGVyZmFjZSBQb3BwZXJBbmNob3JQcm9wcyBleHRlbmRzIFByaW1pdGl2ZURpdlByb3BzIHtcbiAgdmlydHVhbFJlZj86IFJlYWN0LlJlZk9iamVjdDxNZWFzdXJhYmxlPjtcbn1cblxuY29uc3QgUG9wcGVyQW5jaG9yID0gUmVhY3QuZm9yd2FyZFJlZjxQb3BwZXJBbmNob3JFbGVtZW50LCBQb3BwZXJBbmNob3JQcm9wcz4oXG4gIChwcm9wczogU2NvcGVkUHJvcHM8UG9wcGVyQW5jaG9yUHJvcHM+LCBmb3J3YXJkZWRSZWYpID0+IHtcbiAgICBjb25zdCB7IF9fc2NvcGVQb3BwZXIsIHZpcnR1YWxSZWYsIC4uLmFuY2hvclByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBjb250ZXh0ID0gdXNlUG9wcGVyQ29udGV4dChBTkNIT1JfTkFNRSwgX19zY29wZVBvcHBlcik7XG4gICAgY29uc3QgcmVmID0gUmVhY3QudXNlUmVmPFBvcHBlckFuY2hvckVsZW1lbnQ+KG51bGwpO1xuICAgIGNvbnN0IGNvbXBvc2VkUmVmcyA9IHVzZUNvbXBvc2VkUmVmcyhmb3J3YXJkZWRSZWYsIHJlZik7XG5cbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgLy8gQ29uc3VtZXIgY2FuIGFuY2hvciB0aGUgcG9wcGVyIHRvIHNvbWV0aGluZyB0aGF0IGlzbid0XG4gICAgICAvLyBhIERPTSBub2RlIGUuZy4gcG9pbnRlciBwb3NpdGlvbiwgc28gd2Ugb3ZlcnJpZGUgdGhlXG4gICAgICAvLyBgYW5jaG9yUmVmYCB3aXRoIHRoZWlyIHZpcnR1YWwgcmVmIGluIHRoaXMgY2FzZS5cbiAgICAgIGNvbnRleHQub25BbmNob3JDaGFuZ2UodmlydHVhbFJlZj8uY3VycmVudCB8fCByZWYuY3VycmVudCk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdmlydHVhbFJlZiA/IG51bGwgOiA8UHJpbWl0aXZlLmRpdiB7Li4uYW5jaG9yUHJvcHN9IHJlZj17Y29tcG9zZWRSZWZzfSAvPjtcbiAgfVxuKTtcblxuUG9wcGVyQW5jaG9yLmRpc3BsYXlOYW1lID0gQU5DSE9SX05BTUU7XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFBvcHBlckNvbnRlbnRcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuY29uc3QgQ09OVEVOVF9OQU1FID0gJ1BvcHBlckNvbnRlbnQnO1xuXG50eXBlIFBvcHBlckNvbnRlbnRDb250ZXh0VmFsdWUgPSB7XG4gIHBsYWNlZFNpZGU6IFNpZGU7XG4gIG9uQXJyb3dDaGFuZ2UoYXJyb3c6IEhUTUxTcGFuRWxlbWVudCB8IG51bGwpOiB2b2lkO1xuICBhcnJvd1g/OiBudW1iZXI7XG4gIGFycm93WT86IG51bWJlcjtcbiAgc2hvdWxkSGlkZUFycm93OiBib29sZWFuO1xufTtcblxuY29uc3QgW1BvcHBlckNvbnRlbnRQcm92aWRlciwgdXNlQ29udGVudENvbnRleHRdID1cbiAgY3JlYXRlUG9wcGVyQ29udGV4dDxQb3BwZXJDb250ZW50Q29udGV4dFZhbHVlPihDT05URU5UX05BTUUpO1xuXG50eXBlIEJvdW5kYXJ5ID0gRWxlbWVudCB8IG51bGw7XG5cbnR5cGUgUG9wcGVyQ29udGVudEVsZW1lbnQgPSBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBQcmltaXRpdmUuZGl2PjtcbmludGVyZmFjZSBQb3BwZXJDb250ZW50UHJvcHMgZXh0ZW5kcyBQcmltaXRpdmVEaXZQcm9wcyB7XG4gIHNpZGU/OiBTaWRlO1xuICBzaWRlT2Zmc2V0PzogbnVtYmVyO1xuICBhbGlnbj86IEFsaWduO1xuICBhbGlnbk9mZnNldD86IG51bWJlcjtcbiAgYXJyb3dQYWRkaW5nPzogbnVtYmVyO1xuICBhdm9pZENvbGxpc2lvbnM/OiBib29sZWFuO1xuICBjb2xsaXNpb25Cb3VuZGFyeT86IEJvdW5kYXJ5IHwgQm91bmRhcnlbXTtcbiAgY29sbGlzaW9uUGFkZGluZz86IG51bWJlciB8IFBhcnRpYWw8UmVjb3JkPFNpZGUsIG51bWJlcj4+O1xuICBzdGlja3k/OiAncGFydGlhbCcgfCAnYWx3YXlzJztcbiAgaGlkZVdoZW5EZXRhY2hlZD86IGJvb2xlYW47XG4gIHVwZGF0ZVBvc2l0aW9uU3RyYXRlZ3k/OiAnb3B0aW1pemVkJyB8ICdhbHdheXMnO1xuICBvblBsYWNlZD86ICgpID0+IHZvaWQ7XG59XG5cbmNvbnN0IFBvcHBlckNvbnRlbnQgPSBSZWFjdC5mb3J3YXJkUmVmPFBvcHBlckNvbnRlbnRFbGVtZW50LCBQb3BwZXJDb250ZW50UHJvcHM+KFxuICAocHJvcHM6IFNjb3BlZFByb3BzPFBvcHBlckNvbnRlbnRQcm9wcz4sIGZvcndhcmRlZFJlZikgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIF9fc2NvcGVQb3BwZXIsXG4gICAgICBzaWRlID0gJ2JvdHRvbScsXG4gICAgICBzaWRlT2Zmc2V0ID0gMCxcbiAgICAgIGFsaWduID0gJ2NlbnRlcicsXG4gICAgICBhbGlnbk9mZnNldCA9IDAsXG4gICAgICBhcnJvd1BhZGRpbmcgPSAwLFxuICAgICAgYXZvaWRDb2xsaXNpb25zID0gdHJ1ZSxcbiAgICAgIGNvbGxpc2lvbkJvdW5kYXJ5ID0gW10sXG4gICAgICBjb2xsaXNpb25QYWRkaW5nOiBjb2xsaXNpb25QYWRkaW5nUHJvcCA9IDAsXG4gICAgICBzdGlja3kgPSAncGFydGlhbCcsXG4gICAgICBoaWRlV2hlbkRldGFjaGVkID0gZmFsc2UsXG4gICAgICB1cGRhdGVQb3NpdGlvblN0cmF0ZWd5ID0gJ29wdGltaXplZCcsXG4gICAgICBvblBsYWNlZCxcbiAgICAgIC4uLmNvbnRlbnRQcm9wc1xuICAgIH0gPSBwcm9wcztcblxuICAgIGNvbnN0IGNvbnRleHQgPSB1c2VQb3BwZXJDb250ZXh0KENPTlRFTlRfTkFNRSwgX19zY29wZVBvcHBlcik7XG5cbiAgICBjb25zdCBbY29udGVudCwgc2V0Q29udGVudF0gPSBSZWFjdC51c2VTdGF0ZTxIVE1MRGl2RWxlbWVudCB8IG51bGw+KG51bGwpO1xuICAgIGNvbnN0IGNvbXBvc2VkUmVmcyA9IHVzZUNvbXBvc2VkUmVmcyhmb3J3YXJkZWRSZWYsIChub2RlKSA9PiBzZXRDb250ZW50KG5vZGUpKTtcblxuICAgIGNvbnN0IFthcnJvdywgc2V0QXJyb3ddID0gUmVhY3QudXNlU3RhdGU8SFRNTFNwYW5FbGVtZW50IHwgbnVsbD4obnVsbCk7XG4gICAgY29uc3QgYXJyb3dTaXplID0gdXNlU2l6ZShhcnJvdyk7XG4gICAgY29uc3QgYXJyb3dXaWR0aCA9IGFycm93U2l6ZT8ud2lkdGggPz8gMDtcbiAgICBjb25zdCBhcnJvd0hlaWdodCA9IGFycm93U2l6ZT8uaGVpZ2h0ID8/IDA7XG5cbiAgICBjb25zdCBkZXNpcmVkUGxhY2VtZW50ID0gKHNpZGUgKyAoYWxpZ24gIT09ICdjZW50ZXInID8gJy0nICsgYWxpZ24gOiAnJykpIGFzIFBsYWNlbWVudDtcblxuICAgIGNvbnN0IGNvbGxpc2lvblBhZGRpbmcgPVxuICAgICAgdHlwZW9mIGNvbGxpc2lvblBhZGRpbmdQcm9wID09PSAnbnVtYmVyJ1xuICAgICAgICA/IGNvbGxpc2lvblBhZGRpbmdQcm9wXG4gICAgICAgIDogeyB0b3A6IDAsIHJpZ2h0OiAwLCBib3R0b206IDAsIGxlZnQ6IDAsIC4uLmNvbGxpc2lvblBhZGRpbmdQcm9wIH07XG5cbiAgICBjb25zdCBib3VuZGFyeSA9IEFycmF5LmlzQXJyYXkoY29sbGlzaW9uQm91bmRhcnkpID8gY29sbGlzaW9uQm91bmRhcnkgOiBbY29sbGlzaW9uQm91bmRhcnldO1xuICAgIGNvbnN0IGhhc0V4cGxpY2l0Qm91bmRhcmllcyA9IGJvdW5kYXJ5Lmxlbmd0aCA+IDA7XG5cbiAgICBjb25zdCBkZXRlY3RPdmVyZmxvd09wdGlvbnMgPSB7XG4gICAgICBwYWRkaW5nOiBjb2xsaXNpb25QYWRkaW5nLFxuICAgICAgYm91bmRhcnk6IGJvdW5kYXJ5LmZpbHRlcihpc05vdE51bGwpLFxuICAgICAgLy8gd2l0aCBgc3RyYXRlZ3k6ICdmaXhlZCdgLCB0aGlzIGlzIHRoZSBvbmx5IHdheSB0byBnZXQgaXQgdG8gcmVzcGVjdCBib3VuZGFyaWVzXG4gICAgICBhbHRCb3VuZGFyeTogaGFzRXhwbGljaXRCb3VuZGFyaWVzLFxuICAgIH07XG5cbiAgICBjb25zdCB7IHJlZnMsIGZsb2F0aW5nU3R5bGVzLCBwbGFjZW1lbnQsIGlzUG9zaXRpb25lZCwgbWlkZGxld2FyZURhdGEgfSA9IHVzZUZsb2F0aW5nKHtcbiAgICAgIC8vIGRlZmF1bHQgdG8gYGZpeGVkYCBzdHJhdGVneSBzbyB1c2VycyBkb24ndCBoYXZlIHRvIHBpY2sgYW5kIHdlIGFsc28gYXZvaWQgZm9jdXMgc2Nyb2xsIGlzc3Vlc1xuICAgICAgc3RyYXRlZ3k6ICdmaXhlZCcsXG4gICAgICBwbGFjZW1lbnQ6IGRlc2lyZWRQbGFjZW1lbnQsXG4gICAgICB3aGlsZUVsZW1lbnRzTW91bnRlZDogKC4uLmFyZ3MpID0+IHtcbiAgICAgICAgY29uc3QgY2xlYW51cCA9IGF1dG9VcGRhdGUoLi4uYXJncywge1xuICAgICAgICAgIGFuaW1hdGlvbkZyYW1lOiB1cGRhdGVQb3NpdGlvblN0cmF0ZWd5ID09PSAnYWx3YXlzJyxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBjbGVhbnVwO1xuICAgICAgfSxcbiAgICAgIGVsZW1lbnRzOiB7XG4gICAgICAgIHJlZmVyZW5jZTogY29udGV4dC5hbmNob3IsXG4gICAgICB9LFxuICAgICAgbWlkZGxld2FyZTogW1xuICAgICAgICBvZmZzZXQoeyBtYWluQXhpczogc2lkZU9mZnNldCArIGFycm93SGVpZ2h0LCBhbGlnbm1lbnRBeGlzOiBhbGlnbk9mZnNldCB9KSxcbiAgICAgICAgYXZvaWRDb2xsaXNpb25zICYmXG4gICAgICAgICAgc2hpZnQoe1xuICAgICAgICAgICAgbWFpbkF4aXM6IHRydWUsXG4gICAgICAgICAgICBjcm9zc0F4aXM6IGZhbHNlLFxuICAgICAgICAgICAgbGltaXRlcjogc3RpY2t5ID09PSAncGFydGlhbCcgPyBsaW1pdFNoaWZ0KCkgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAuLi5kZXRlY3RPdmVyZmxvd09wdGlvbnMsXG4gICAgICAgICAgfSksXG4gICAgICAgIGF2b2lkQ29sbGlzaW9ucyAmJiBmbGlwKHsgLi4uZGV0ZWN0T3ZlcmZsb3dPcHRpb25zIH0pLFxuICAgICAgICBzaXplKHtcbiAgICAgICAgICAuLi5kZXRlY3RPdmVyZmxvd09wdGlvbnMsXG4gICAgICAgICAgYXBwbHk6ICh7IGVsZW1lbnRzLCByZWN0cywgYXZhaWxhYmxlV2lkdGgsIGF2YWlsYWJsZUhlaWdodCB9KSA9PiB7XG4gICAgICAgICAgICBjb25zdCB7IHdpZHRoOiBhbmNob3JXaWR0aCwgaGVpZ2h0OiBhbmNob3JIZWlnaHQgfSA9IHJlY3RzLnJlZmVyZW5jZTtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRlbnRTdHlsZSA9IGVsZW1lbnRzLmZsb2F0aW5nLnN0eWxlO1xuICAgICAgICAgICAgY29udGVudFN0eWxlLnNldFByb3BlcnR5KCctLXJhZGl4LXBvcHBlci1hdmFpbGFibGUtd2lkdGgnLCBgJHthdmFpbGFibGVXaWR0aH1weGApO1xuICAgICAgICAgICAgY29udGVudFN0eWxlLnNldFByb3BlcnR5KCctLXJhZGl4LXBvcHBlci1hdmFpbGFibGUtaGVpZ2h0JywgYCR7YXZhaWxhYmxlSGVpZ2h0fXB4YCk7XG4gICAgICAgICAgICBjb250ZW50U3R5bGUuc2V0UHJvcGVydHkoJy0tcmFkaXgtcG9wcGVyLWFuY2hvci13aWR0aCcsIGAke2FuY2hvcldpZHRofXB4YCk7XG4gICAgICAgICAgICBjb250ZW50U3R5bGUuc2V0UHJvcGVydHkoJy0tcmFkaXgtcG9wcGVyLWFuY2hvci1oZWlnaHQnLCBgJHthbmNob3JIZWlnaHR9cHhgKTtcbiAgICAgICAgICB9LFxuICAgICAgICB9KSxcbiAgICAgICAgYXJyb3cgJiYgZmxvYXRpbmdVSWFycm93KHsgZWxlbWVudDogYXJyb3csIHBhZGRpbmc6IGFycm93UGFkZGluZyB9KSxcbiAgICAgICAgdHJhbnNmb3JtT3JpZ2luKHsgYXJyb3dXaWR0aCwgYXJyb3dIZWlnaHQgfSksXG4gICAgICAgIGhpZGVXaGVuRGV0YWNoZWQgJiYgaGlkZSh7IHN0cmF0ZWd5OiAncmVmZXJlbmNlSGlkZGVuJywgLi4uZGV0ZWN0T3ZlcmZsb3dPcHRpb25zIH0pLFxuICAgICAgXSxcbiAgICB9KTtcblxuICAgIGNvbnN0IFtwbGFjZWRTaWRlLCBwbGFjZWRBbGlnbl0gPSBnZXRTaWRlQW5kQWxpZ25Gcm9tUGxhY2VtZW50KHBsYWNlbWVudCk7XG5cbiAgICBjb25zdCBoYW5kbGVQbGFjZWQgPSB1c2VDYWxsYmFja1JlZihvblBsYWNlZCk7XG4gICAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICAgIGlmIChpc1Bvc2l0aW9uZWQpIHtcbiAgICAgICAgaGFuZGxlUGxhY2VkPy4oKTtcbiAgICAgIH1cbiAgICB9LCBbaXNQb3NpdGlvbmVkLCBoYW5kbGVQbGFjZWRdKTtcblxuICAgIGNvbnN0IGFycm93WCA9IG1pZGRsZXdhcmVEYXRhLmFycm93Py54O1xuICAgIGNvbnN0IGFycm93WSA9IG1pZGRsZXdhcmVEYXRhLmFycm93Py55O1xuICAgIGNvbnN0IGNhbm5vdENlbnRlckFycm93ID0gbWlkZGxld2FyZURhdGEuYXJyb3c/LmNlbnRlck9mZnNldCAhPT0gMDtcblxuICAgIGNvbnN0IFtjb250ZW50WkluZGV4LCBzZXRDb250ZW50WkluZGV4XSA9IFJlYWN0LnVzZVN0YXRlPHN0cmluZz4oKTtcbiAgICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgICAgaWYgKGNvbnRlbnQpIHNldENvbnRlbnRaSW5kZXgod2luZG93LmdldENvbXB1dGVkU3R5bGUoY29udGVudCkuekluZGV4KTtcbiAgICB9LCBbY29udGVudF0pO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXZcbiAgICAgICAgcmVmPXtyZWZzLnNldEZsb2F0aW5nfVxuICAgICAgICBkYXRhLXJhZGl4LXBvcHBlci1jb250ZW50LXdyYXBwZXI9XCJcIlxuICAgICAgICBzdHlsZT17e1xuICAgICAgICAgIC4uLmZsb2F0aW5nU3R5bGVzLFxuICAgICAgICAgIHRyYW5zZm9ybTogaXNQb3NpdGlvbmVkID8gZmxvYXRpbmdTdHlsZXMudHJhbnNmb3JtIDogJ3RyYW5zbGF0ZSgwLCAtMjAwJSknLCAvLyBrZWVwIG9mZiB0aGUgcGFnZSB3aGVuIG1lYXN1cmluZ1xuICAgICAgICAgIG1pbldpZHRoOiAnbWF4LWNvbnRlbnQnLFxuICAgICAgICAgIHpJbmRleDogY29udGVudFpJbmRleCxcbiAgICAgICAgICBbJy0tcmFkaXgtcG9wcGVyLXRyYW5zZm9ybS1vcmlnaW4nIGFzIGFueV06IFtcbiAgICAgICAgICAgIG1pZGRsZXdhcmVEYXRhLnRyYW5zZm9ybU9yaWdpbj8ueCxcbiAgICAgICAgICAgIG1pZGRsZXdhcmVEYXRhLnRyYW5zZm9ybU9yaWdpbj8ueSxcbiAgICAgICAgICBdLmpvaW4oJyAnKSxcblxuICAgICAgICAgIC8vIGhpZGUgdGhlIGNvbnRlbnQgaWYgdXNpbmcgdGhlIGhpZGUgbWlkZGxld2FyZSBhbmQgc2hvdWxkIGJlIGhpZGRlblxuICAgICAgICAgIC8vIHNldCB2aXNpYmlsaXR5IHRvIGhpZGRlbiBhbmQgZGlzYWJsZSBwb2ludGVyIGV2ZW50cyBzbyB0aGUgVUkgYmVoYXZlc1xuICAgICAgICAgIC8vIGFzIGlmIHRoZSBQb3BwZXJDb250ZW50IGlzbid0IHRoZXJlIGF0IGFsbFxuICAgICAgICAgIC4uLihtaWRkbGV3YXJlRGF0YS5oaWRlPy5yZWZlcmVuY2VIaWRkZW4gJiYge1xuICAgICAgICAgICAgdmlzaWJpbGl0eTogJ2hpZGRlbicsXG4gICAgICAgICAgICBwb2ludGVyRXZlbnRzOiAnbm9uZScsXG4gICAgICAgICAgfSksXG4gICAgICAgIH19XG4gICAgICAgIC8vIEZsb2F0aW5nIFVJIGludGVyYWxseSBjYWxjdWxhdGVzIGxvZ2ljYWwgYWxpZ25tZW50IGJhc2VkIHRoZSBgZGlyYCBhdHRyaWJ1dGUgb25cbiAgICAgICAgLy8gdGhlIHJlZmVyZW5jZS9mbG9hdGluZyBub2RlLCB3ZSBtdXN0IGFkZCB0aGlzIGF0dHJpYnV0ZSBoZXJlIHRvIGVuc3VyZVxuICAgICAgICAvLyB0aGlzIGlzIGNhbGN1bGF0ZWQgd2hlbiBwb3J0YWxsZWQgYXMgd2VsbCBhcyBpbmxpbmUuXG4gICAgICAgIGRpcj17cHJvcHMuZGlyfVxuICAgICAgPlxuICAgICAgICA8UG9wcGVyQ29udGVudFByb3ZpZGVyXG4gICAgICAgICAgc2NvcGU9e19fc2NvcGVQb3BwZXJ9XG4gICAgICAgICAgcGxhY2VkU2lkZT17cGxhY2VkU2lkZX1cbiAgICAgICAgICBvbkFycm93Q2hhbmdlPXtzZXRBcnJvd31cbiAgICAgICAgICBhcnJvd1g9e2Fycm93WH1cbiAgICAgICAgICBhcnJvd1k9e2Fycm93WX1cbiAgICAgICAgICBzaG91bGRIaWRlQXJyb3c9e2Nhbm5vdENlbnRlckFycm93fVxuICAgICAgICA+XG4gICAgICAgICAgPFByaW1pdGl2ZS5kaXZcbiAgICAgICAgICAgIGRhdGEtc2lkZT17cGxhY2VkU2lkZX1cbiAgICAgICAgICAgIGRhdGEtYWxpZ249e3BsYWNlZEFsaWdufVxuICAgICAgICAgICAgey4uLmNvbnRlbnRQcm9wc31cbiAgICAgICAgICAgIHJlZj17Y29tcG9zZWRSZWZzfVxuICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgLi4uY29udGVudFByb3BzLnN0eWxlLFxuICAgICAgICAgICAgICAvLyBpZiB0aGUgUG9wcGVyQ29udGVudCBoYXNuJ3QgYmVlbiBwbGFjZWQgeWV0IChub3QgYWxsIG1lYXN1cmVtZW50cyBkb25lKVxuICAgICAgICAgICAgICAvLyB3ZSBwcmV2ZW50IGFuaW1hdGlvbnMgc28gdGhhdCB1c2VycydzIGFuaW1hdGlvbiBkb24ndCBraWNrIGluIHRvbyBlYXJseSByZWZlcnJpbmcgd3Jvbmcgc2lkZXNcbiAgICAgICAgICAgICAgYW5pbWF0aW9uOiAhaXNQb3NpdGlvbmVkID8gJ25vbmUnIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L1BvcHBlckNvbnRlbnRQcm92aWRlcj5cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH1cbik7XG5cblBvcHBlckNvbnRlbnQuZGlzcGxheU5hbWUgPSBDT05URU5UX05BTUU7XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFBvcHBlckFycm93XG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbmNvbnN0IEFSUk9XX05BTUUgPSAnUG9wcGVyQXJyb3cnO1xuXG5jb25zdCBPUFBPU0lURV9TSURFOiBSZWNvcmQ8U2lkZSwgU2lkZT4gPSB7XG4gIHRvcDogJ2JvdHRvbScsXG4gIHJpZ2h0OiAnbGVmdCcsXG4gIGJvdHRvbTogJ3RvcCcsXG4gIGxlZnQ6ICdyaWdodCcsXG59O1xuXG50eXBlIFBvcHBlckFycm93RWxlbWVudCA9IFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIEFycm93UHJpbWl0aXZlLlJvb3Q+O1xudHlwZSBBcnJvd1Byb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBBcnJvd1ByaW1pdGl2ZS5Sb290PjtcbmludGVyZmFjZSBQb3BwZXJBcnJvd1Byb3BzIGV4dGVuZHMgQXJyb3dQcm9wcyB7fVxuXG5jb25zdCBQb3BwZXJBcnJvdyA9IFJlYWN0LmZvcndhcmRSZWY8UG9wcGVyQXJyb3dFbGVtZW50LCBQb3BwZXJBcnJvd1Byb3BzPihmdW5jdGlvbiBQb3BwZXJBcnJvdyhcbiAgcHJvcHM6IFNjb3BlZFByb3BzPFBvcHBlckFycm93UHJvcHM+LFxuICBmb3J3YXJkZWRSZWZcbikge1xuICBjb25zdCB7IF9fc2NvcGVQb3BwZXIsIC4uLmFycm93UHJvcHMgfSA9IHByb3BzO1xuICBjb25zdCBjb250ZW50Q29udGV4dCA9IHVzZUNvbnRlbnRDb250ZXh0KEFSUk9XX05BTUUsIF9fc2NvcGVQb3BwZXIpO1xuICBjb25zdCBiYXNlU2lkZSA9IE9QUE9TSVRFX1NJREVbY29udGVudENvbnRleHQucGxhY2VkU2lkZV07XG5cbiAgcmV0dXJuIChcbiAgICAvLyB3ZSBoYXZlIHRvIHVzZSBhbiBleHRyYSB3cmFwcGVyIGJlY2F1c2UgYFJlc2l6ZU9ic2VydmVyYCAodXNlZCBieSBgdXNlU2l6ZWApXG4gICAgLy8gZG9lc24ndCByZXBvcnQgc2l6ZSBhcyB3ZSdkIGV4cGVjdCBvbiBTVkcgZWxlbWVudHMuXG4gICAgLy8gaXQgcmVwb3J0cyB0aGVpciBib3VuZGluZyBib3ggd2hpY2ggaXMgZWZmZWN0aXZlbHkgdGhlIGxhcmdlc3QgcGF0aCBpbnNpZGUgdGhlIFNWRy5cbiAgICA8c3BhblxuICAgICAgcmVmPXtjb250ZW50Q29udGV4dC5vbkFycm93Q2hhbmdlfVxuICAgICAgc3R5bGU9e3tcbiAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICAgIGxlZnQ6IGNvbnRlbnRDb250ZXh0LmFycm93WCxcbiAgICAgICAgdG9wOiBjb250ZW50Q29udGV4dC5hcnJvd1ksXG4gICAgICAgIFtiYXNlU2lkZV06IDAsXG4gICAgICAgIHRyYW5zZm9ybU9yaWdpbjoge1xuICAgICAgICAgIHRvcDogJycsXG4gICAgICAgICAgcmlnaHQ6ICcwIDAnLFxuICAgICAgICAgIGJvdHRvbTogJ2NlbnRlciAwJyxcbiAgICAgICAgICBsZWZ0OiAnMTAwJSAwJyxcbiAgICAgICAgfVtjb250ZW50Q29udGV4dC5wbGFjZWRTaWRlXSxcbiAgICAgICAgdHJhbnNmb3JtOiB7XG4gICAgICAgICAgdG9wOiAndHJhbnNsYXRlWSgxMDAlKScsXG4gICAgICAgICAgcmlnaHQ6ICd0cmFuc2xhdGVZKDUwJSkgcm90YXRlKDkwZGVnKSB0cmFuc2xhdGVYKC01MCUpJyxcbiAgICAgICAgICBib3R0b206IGByb3RhdGUoMTgwZGVnKWAsXG4gICAgICAgICAgbGVmdDogJ3RyYW5zbGF0ZVkoNTAlKSByb3RhdGUoLTkwZGVnKSB0cmFuc2xhdGVYKDUwJSknLFxuICAgICAgICB9W2NvbnRlbnRDb250ZXh0LnBsYWNlZFNpZGVdLFxuICAgICAgICB2aXNpYmlsaXR5OiBjb250ZW50Q29udGV4dC5zaG91bGRIaWRlQXJyb3cgPyAnaGlkZGVuJyA6IHVuZGVmaW5lZCxcbiAgICAgIH19XG4gICAgPlxuICAgICAgPEFycm93UHJpbWl0aXZlLlJvb3RcbiAgICAgICAgey4uLmFycm93UHJvcHN9XG4gICAgICAgIHJlZj17Zm9yd2FyZGVkUmVmfVxuICAgICAgICBzdHlsZT17e1xuICAgICAgICAgIC4uLmFycm93UHJvcHMuc3R5bGUsXG4gICAgICAgICAgLy8gZW5zdXJlcyB0aGUgZWxlbWVudCBjYW4gYmUgbWVhc3VyZWQgY29ycmVjdGx5IChtb3N0bHkgZm9yIGlmIFNWRylcbiAgICAgICAgICBkaXNwbGF5OiAnYmxvY2snLFxuICAgICAgICB9fVxuICAgICAgLz5cbiAgICA8L3NwYW4+XG4gICk7XG59KTtcblxuUG9wcGVyQXJyb3cuZGlzcGxheU5hbWUgPSBBUlJPV19OQU1FO1xuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbmZ1bmN0aW9uIGlzTm90TnVsbDxUPih2YWx1ZTogVCB8IG51bGwpOiB2YWx1ZSBpcyBUIHtcbiAgcmV0dXJuIHZhbHVlICE9PSBudWxsO1xufVxuXG5jb25zdCB0cmFuc2Zvcm1PcmlnaW4gPSAob3B0aW9uczogeyBhcnJvd1dpZHRoOiBudW1iZXI7IGFycm93SGVpZ2h0OiBudW1iZXIgfSk6IE1pZGRsZXdhcmUgPT4gKHtcbiAgbmFtZTogJ3RyYW5zZm9ybU9yaWdpbicsXG4gIG9wdGlvbnMsXG4gIGZuKGRhdGEpIHtcbiAgICBjb25zdCB7IHBsYWNlbWVudCwgcmVjdHMsIG1pZGRsZXdhcmVEYXRhIH0gPSBkYXRhO1xuXG4gICAgY29uc3QgY2Fubm90Q2VudGVyQXJyb3cgPSBtaWRkbGV3YXJlRGF0YS5hcnJvdz8uY2VudGVyT2Zmc2V0ICE9PSAwO1xuICAgIGNvbnN0IGlzQXJyb3dIaWRkZW4gPSBjYW5ub3RDZW50ZXJBcnJvdztcbiAgICBjb25zdCBhcnJvd1dpZHRoID0gaXNBcnJvd0hpZGRlbiA/IDAgOiBvcHRpb25zLmFycm93V2lkdGg7XG4gICAgY29uc3QgYXJyb3dIZWlnaHQgPSBpc0Fycm93SGlkZGVuID8gMCA6IG9wdGlvbnMuYXJyb3dIZWlnaHQ7XG5cbiAgICBjb25zdCBbcGxhY2VkU2lkZSwgcGxhY2VkQWxpZ25dID0gZ2V0U2lkZUFuZEFsaWduRnJvbVBsYWNlbWVudChwbGFjZW1lbnQpO1xuICAgIGNvbnN0IG5vQXJyb3dBbGlnbiA9IHsgc3RhcnQ6ICcwJScsIGNlbnRlcjogJzUwJScsIGVuZDogJzEwMCUnIH1bcGxhY2VkQWxpZ25dO1xuXG4gICAgY29uc3QgYXJyb3dYQ2VudGVyID0gKG1pZGRsZXdhcmVEYXRhLmFycm93Py54ID8/IDApICsgYXJyb3dXaWR0aCAvIDI7XG4gICAgY29uc3QgYXJyb3dZQ2VudGVyID0gKG1pZGRsZXdhcmVEYXRhLmFycm93Py55ID8/IDApICsgYXJyb3dIZWlnaHQgLyAyO1xuXG4gICAgbGV0IHggPSAnJztcbiAgICBsZXQgeSA9ICcnO1xuXG4gICAgaWYgKHBsYWNlZFNpZGUgPT09ICdib3R0b20nKSB7XG4gICAgICB4ID0gaXNBcnJvd0hpZGRlbiA/IG5vQXJyb3dBbGlnbiA6IGAke2Fycm93WENlbnRlcn1weGA7XG4gICAgICB5ID0gYCR7LWFycm93SGVpZ2h0fXB4YDtcbiAgICB9IGVsc2UgaWYgKHBsYWNlZFNpZGUgPT09ICd0b3AnKSB7XG4gICAgICB4ID0gaXNBcnJvd0hpZGRlbiA/IG5vQXJyb3dBbGlnbiA6IGAke2Fycm93WENlbnRlcn1weGA7XG4gICAgICB5ID0gYCR7cmVjdHMuZmxvYXRpbmcuaGVpZ2h0ICsgYXJyb3dIZWlnaHR9cHhgO1xuICAgIH0gZWxzZSBpZiAocGxhY2VkU2lkZSA9PT0gJ3JpZ2h0Jykge1xuICAgICAgeCA9IGAkey1hcnJvd0hlaWdodH1weGA7XG4gICAgICB5ID0gaXNBcnJvd0hpZGRlbiA/IG5vQXJyb3dBbGlnbiA6IGAke2Fycm93WUNlbnRlcn1weGA7XG4gICAgfSBlbHNlIGlmIChwbGFjZWRTaWRlID09PSAnbGVmdCcpIHtcbiAgICAgIHggPSBgJHtyZWN0cy5mbG9hdGluZy53aWR0aCArIGFycm93SGVpZ2h0fXB4YDtcbiAgICAgIHkgPSBpc0Fycm93SGlkZGVuID8gbm9BcnJvd0FsaWduIDogYCR7YXJyb3dZQ2VudGVyfXB4YDtcbiAgICB9XG4gICAgcmV0dXJuIHsgZGF0YTogeyB4LCB5IH0gfTtcbiAgfSxcbn0pO1xuXG5mdW5jdGlvbiBnZXRTaWRlQW5kQWxpZ25Gcm9tUGxhY2VtZW50KHBsYWNlbWVudDogUGxhY2VtZW50KSB7XG4gIGNvbnN0IFtzaWRlLCBhbGlnbiA9ICdjZW50ZXInXSA9IHBsYWNlbWVudC5zcGxpdCgnLScpO1xuICByZXR1cm4gW3NpZGUgYXMgU2lkZSwgYWxpZ24gYXMgQWxpZ25dIGFzIGNvbnN0O1xufVxuXG5jb25zdCBSb290ID0gUG9wcGVyO1xuY29uc3QgQW5jaG9yID0gUG9wcGVyQW5jaG9yO1xuY29uc3QgQ29udGVudCA9IFBvcHBlckNvbnRlbnQ7XG5jb25zdCBBcnJvdyA9IFBvcHBlckFycm93O1xuXG5leHBvcnQge1xuICBjcmVhdGVQb3BwZXJTY29wZSxcbiAgLy9cbiAgUG9wcGVyLFxuICBQb3BwZXJBbmNob3IsXG4gIFBvcHBlckNvbnRlbnQsXG4gIFBvcHBlckFycm93LFxuICAvL1xuICBSb290LFxuICBBbmNob3IsXG4gIENvbnRlbnQsXG4gIEFycm93LFxuICAvL1xuICBTSURFX09QVElPTlMsXG4gIEFMSUdOX09QVElPTlMsXG59O1xuZXhwb3J0IHR5cGUgeyBQb3BwZXJQcm9wcywgUG9wcGVyQW5jaG9yUHJvcHMsIFBvcHBlckNvbnRlbnRQcm9wcywgUG9wcGVyQXJyb3dQcm9wcyB9O1xuIl0sIm5hbWVzIjpbIlJlYWN0IiwidXNlRmxvYXRpbmciLCJhdXRvVXBkYXRlIiwib2Zmc2V0Iiwic2hpZnQiLCJsaW1pdFNoaWZ0IiwiaGlkZSIsImFycm93IiwiZmxvYXRpbmdVSWFycm93IiwiZmxpcCIsInNpemUiLCJBcnJvd1ByaW1pdGl2ZSIsInVzZUNvbXBvc2VkUmVmcyIsImNyZWF0ZUNvbnRleHRTY29wZSIsIlByaW1pdGl2ZSIsInVzZUNhbGxiYWNrUmVmIiwidXNlTGF5b3V0RWZmZWN0IiwidXNlU2l6ZSIsImpzeCIsIlNJREVfT1BUSU9OUyIsIkFMSUdOX09QVElPTlMiLCJQT1BQRVJfTkFNRSIsImNyZWF0ZVBvcHBlckNvbnRleHQiLCJjcmVhdGVQb3BwZXJTY29wZSIsIlBvcHBlclByb3ZpZGVyIiwidXNlUG9wcGVyQ29udGV4dCIsIlBvcHBlciIsInByb3BzIiwiX19zY29wZVBvcHBlciIsImNoaWxkcmVuIiwiYW5jaG9yIiwic2V0QW5jaG9yIiwidXNlU3RhdGUiLCJzY29wZSIsIm9uQW5jaG9yQ2hhbmdlIiwiZGlzcGxheU5hbWUiLCJBTkNIT1JfTkFNRSIsIlBvcHBlckFuY2hvciIsImZvcndhcmRSZWYiLCJmb3J3YXJkZWRSZWYiLCJ2aXJ0dWFsUmVmIiwiYW5jaG9yUHJvcHMiLCJjb250ZXh0IiwicmVmIiwidXNlUmVmIiwiY29tcG9zZWRSZWZzIiwidXNlRWZmZWN0IiwiY3VycmVudCIsImRpdiIsIkNPTlRFTlRfTkFNRSIsIlBvcHBlckNvbnRlbnRQcm92aWRlciIsInVzZUNvbnRlbnRDb250ZXh0IiwiUG9wcGVyQ29udGVudCIsInNpZGUiLCJzaWRlT2Zmc2V0IiwiYWxpZ24iLCJhbGlnbk9mZnNldCIsImFycm93UGFkZGluZyIsImF2b2lkQ29sbGlzaW9ucyIsImNvbGxpc2lvbkJvdW5kYXJ5IiwiY29sbGlzaW9uUGFkZGluZyIsImNvbGxpc2lvblBhZGRpbmdQcm9wIiwic3RpY2t5IiwiaGlkZVdoZW5EZXRhY2hlZCIsInVwZGF0ZVBvc2l0aW9uU3RyYXRlZ3kiLCJvblBsYWNlZCIsImNvbnRlbnRQcm9wcyIsImNvbnRlbnQiLCJzZXRDb250ZW50Iiwibm9kZSIsInNldEFycm93IiwiYXJyb3dTaXplIiwiYXJyb3dXaWR0aCIsIndpZHRoIiwiYXJyb3dIZWlnaHQiLCJoZWlnaHQiLCJkZXNpcmVkUGxhY2VtZW50IiwidG9wIiwicmlnaHQiLCJib3R0b20iLCJsZWZ0IiwiYm91bmRhcnkiLCJBcnJheSIsImlzQXJyYXkiLCJoYXNFeHBsaWNpdEJvdW5kYXJpZXMiLCJsZW5ndGgiLCJkZXRlY3RPdmVyZmxvd09wdGlvbnMiLCJwYWRkaW5nIiwiZmlsdGVyIiwiaXNOb3ROdWxsIiwiYWx0Qm91bmRhcnkiLCJyZWZzIiwiZmxvYXRpbmdTdHlsZXMiLCJwbGFjZW1lbnQiLCJpc1Bvc2l0aW9uZWQiLCJtaWRkbGV3YXJlRGF0YSIsInN0cmF0ZWd5Iiwid2hpbGVFbGVtZW50c01vdW50ZWQiLCJhcmdzIiwiY2xlYW51cCIsImFuaW1hdGlvbkZyYW1lIiwiZWxlbWVudHMiLCJyZWZlcmVuY2UiLCJtaWRkbGV3YXJlIiwibWFpbkF4aXMiLCJhbGlnbm1lbnRBeGlzIiwiY3Jvc3NBeGlzIiwibGltaXRlciIsImFwcGx5IiwicmVjdHMiLCJhdmFpbGFibGVXaWR0aCIsImF2YWlsYWJsZUhlaWdodCIsImFuY2hvcldpZHRoIiwiYW5jaG9ySGVpZ2h0IiwiY29udGVudFN0eWxlIiwiZmxvYXRpbmciLCJzdHlsZSIsInNldFByb3BlcnR5IiwiZWxlbWVudCIsInRyYW5zZm9ybU9yaWdpbiIsInBsYWNlZFNpZGUiLCJwbGFjZWRBbGlnbiIsImdldFNpZGVBbmRBbGlnbkZyb21QbGFjZW1lbnQiLCJoYW5kbGVQbGFjZWQiLCJhcnJvd1giLCJ4IiwiYXJyb3dZIiwieSIsImNhbm5vdENlbnRlckFycm93IiwiY2VudGVyT2Zmc2V0IiwiY29udGVudFpJbmRleCIsInNldENvbnRlbnRaSW5kZXgiLCJ3aW5kb3ciLCJnZXRDb21wdXRlZFN0eWxlIiwiekluZGV4Iiwic2V0RmxvYXRpbmciLCJ0cmFuc2Zvcm0iLCJtaW5XaWR0aCIsImpvaW4iLCJyZWZlcmVuY2VIaWRkZW4iLCJ2aXNpYmlsaXR5IiwicG9pbnRlckV2ZW50cyIsImRpciIsIm9uQXJyb3dDaGFuZ2UiLCJzaG91bGRIaWRlQXJyb3ciLCJhbmltYXRpb24iLCJBUlJPV19OQU1FIiwiT1BQT1NJVEVfU0lERSIsIlBvcHBlckFycm93IiwiYXJyb3dQcm9wcyIsImNvbnRlbnRDb250ZXh0IiwiYmFzZVNpZGUiLCJwb3NpdGlvbiIsIlJvb3QiLCJkaXNwbGF5IiwidmFsdWUiLCJvcHRpb25zIiwibmFtZSIsImZuIiwiZGF0YSIsImlzQXJyb3dIaWRkZW4iLCJub0Fycm93QWxpZ24iLCJzdGFydCIsImNlbnRlciIsImVuZCIsImFycm93WENlbnRlciIsImFycm93WUNlbnRlciIsInNwbGl0IiwiQW5jaG9yIiwiQ29udGVudCIsIkFycm93Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/@radix-ui/react-popper/dist/index.mjs\n"); /***/ }), /***/ "(ssr)/./node_modules/@radix-ui/react-portal/dist/index.mjs": /*!************************************************************!*\ !*** ./node_modules/@radix-ui/react-portal/dist/index.mjs ***! \************************************************************/ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Portal: () => (/* binding */ Portal),\n/* harmony export */ Root: () => (/* binding */ Root)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-dom */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react-dom.js\");\n/* harmony import */ var _radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @radix-ui/react-primitive */ \"(ssr)/./node_modules/@radix-ui/react-primitive/dist/index.mjs\");\n/* harmony import */ var _radix_ui_react_use_layout_effect__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @radix-ui/react-use-layout-effect */ \"(ssr)/./node_modules/@radix-ui/react-use-layout-effect/dist/index.mjs\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react/jsx-runtime */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react-jsx-runtime.js\");\n/* __next_internal_client_entry_do_not_use__ Portal,Root auto */ // packages/react/portal/src/Portal.tsx\n\n\n\n\n\nvar PORTAL_NAME = \"Portal\";\nvar Portal = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef((props, forwardedRef)=>{\n const { container: containerProp, ...portalProps } = props;\n const [mounted, setMounted] = react__WEBPACK_IMPORTED_MODULE_0__.useState(false);\n (0,_radix_ui_react_use_layout_effect__WEBPACK_IMPORTED_MODULE_3__.useLayoutEffect)(()=>setMounted(true), []);\n const container = containerProp || mounted && globalThis?.document?.body;\n return container ? /*#__PURE__*/ react_dom__WEBPACK_IMPORTED_MODULE_1__.createPortal(/* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(_radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_4__.Primitive.div, {\n ...portalProps,\n ref: forwardedRef\n }), container) : null;\n});\nPortal.displayName = PORTAL_NAME;\nvar Root = Portal;\n //# sourceMappingURL=index.mjs.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LXBvcnRhbC9kaXN0L2luZGV4Lm1qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUF1QjtBQUNGO0FBQ0s7QUFDTTtBQXVCSjtBQWpCNUIsSUFBTUssY0FBYztBQVdwQixJQUFNQyx1QkFBZU4sNkNBQUEsQ0FBdUMsQ0FBQ1EsT0FBT0M7SUFDbEUsTUFBTSxFQUFFQyxXQUFXQyxhQUFBLEVBQWUsR0FBR0MsYUFBWSxHQUFJSjtJQUNyRCxNQUFNLENBQUNLLFNBQVNDLFdBQVUsR0FBVWQsMkNBQUEsQ0FBUztJQUM3Q0csa0ZBQWVBLENBQUMsSUFBTVcsV0FBVyxPQUFPLEVBQUU7SUFDMUMsTUFBTUosWUFBWUMsaUJBQWtCRSxXQUFXRyxZQUFZQyxVQUFVQztJQUNyRSxPQUFPUiwwQkFDSFQsbURBQVMsQ0FBYSxnQkFBQUcsc0RBQUFBLENBQUNGLGdFQUFTQSxDQUFDa0IsR0FBQSxFQUFWO1FBQWUsR0FBR1IsV0FBQTtRQUFhUyxLQUFLWjtJQUFBLElBQWtCQyxhQUM3RTtBQUNOO0FBRUFKLE9BQU9nQixXQUFBLEdBQWNqQjtBQUlyQixJQUFNa0IsT0FBT2pCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vbXktdjAtcHJvamVjdC8uLi9zcmMvUG9ydGFsLnRzeD9iNjc2Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBSZWFjdERPTSBmcm9tICdyZWFjdC1kb20nO1xuaW1wb3J0IHsgUHJpbWl0aXZlIH0gZnJvbSAnQHJhZGl4LXVpL3JlYWN0LXByaW1pdGl2ZSc7XG5pbXBvcnQgeyB1c2VMYXlvdXRFZmZlY3QgfSBmcm9tICdAcmFkaXgtdWkvcmVhY3QtdXNlLWxheW91dC1lZmZlY3QnO1xuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBQb3J0YWxcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuY29uc3QgUE9SVEFMX05BTUUgPSAnUG9ydGFsJztcblxudHlwZSBQb3J0YWxFbGVtZW50ID0gUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgUHJpbWl0aXZlLmRpdj47XG50eXBlIFByaW1pdGl2ZURpdlByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBQcmltaXRpdmUuZGl2PjtcbmludGVyZmFjZSBQb3J0YWxQcm9wcyBleHRlbmRzIFByaW1pdGl2ZURpdlByb3BzIHtcbiAgLyoqXG4gICAqIEFuIG9wdGlvbmFsIGNvbnRhaW5lciB3aGVyZSB0aGUgcG9ydGFsZWQgY29udGVudCBzaG91bGQgYmUgYXBwZW5kZWQuXG4gICAqL1xuICBjb250YWluZXI/OiBFbGVtZW50IHwgRG9jdW1lbnRGcmFnbWVudCB8IG51bGw7XG59XG5cbmNvbnN0IFBvcnRhbCA9IFJlYWN0LmZvcndhcmRSZWY8UG9ydGFsRWxlbWVudCwgUG9ydGFsUHJvcHM+KChwcm9wcywgZm9yd2FyZGVkUmVmKSA9PiB7XG4gIGNvbnN0IHsgY29udGFpbmVyOiBjb250YWluZXJQcm9wLCAuLi5wb3J0YWxQcm9wcyB9ID0gcHJvcHM7XG4gIGNvbnN0IFttb3VudGVkLCBzZXRNb3VudGVkXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHNldE1vdW50ZWQodHJ1ZSksIFtdKTtcbiAgY29uc3QgY29udGFpbmVyID0gY29udGFpbmVyUHJvcCB8fCAobW91bnRlZCAmJiBnbG9iYWxUaGlzPy5kb2N1bWVudD8uYm9keSk7XG4gIHJldHVybiBjb250YWluZXJcbiAgICA/IFJlYWN0RE9NLmNyZWF0ZVBvcnRhbCg8UHJpbWl0aXZlLmRpdiB7Li4ucG9ydGFsUHJvcHN9IHJlZj17Zm9yd2FyZGVkUmVmfSAvPiwgY29udGFpbmVyKVxuICAgIDogbnVsbDtcbn0pO1xuXG5Qb3J0YWwuZGlzcGxheU5hbWUgPSBQT1JUQUxfTkFNRTtcblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG5jb25zdCBSb290ID0gUG9ydGFsO1xuXG5leHBvcnQge1xuICBQb3J0YWwsXG4gIC8vXG4gIFJvb3QsXG59O1xuZXhwb3J0IHR5cGUgeyBQb3J0YWxQcm9wcyB9O1xuIl0sIm5hbWVzIjpbIlJlYWN0IiwiUmVhY3RET00iLCJQcmltaXRpdmUiLCJ1c2VMYXlvdXRFZmZlY3QiLCJqc3giLCJQT1JUQUxfTkFNRSIsIlBvcnRhbCIsImZvcndhcmRSZWYiLCJwcm9wcyIsImZvcndhcmRlZFJlZiIsImNvbnRhaW5lciIsImNvbnRhaW5lclByb3AiLCJwb3J0YWxQcm9wcyIsIm1vdW50ZWQiLCJzZXRNb3VudGVkIiwidXNlU3RhdGUiLCJnbG9iYWxUaGlzIiwiZG9jdW1lbnQiLCJib2R5IiwiY3JlYXRlUG9ydGFsIiwiZGl2IiwicmVmIiwiZGlzcGxheU5hbWUiLCJSb290Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/@radix-ui/react-portal/dist/index.mjs\n"); /***/ }), /***/ "(ssr)/./node_modules/@radix-ui/react-presence/dist/index.mjs": /*!**************************************************************!*\ !*** ./node_modules/@radix-ui/react-presence/dist/index.mjs ***! \**************************************************************/ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Presence: () => (/* binding */ Presence)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var _radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @radix-ui/react-compose-refs */ \"(ssr)/./node_modules/@radix-ui/react-compose-refs/dist/index.mjs\");\n/* harmony import */ var _radix_ui_react_use_layout_effect__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @radix-ui/react-use-layout-effect */ \"(ssr)/./node_modules/@radix-ui/react-use-layout-effect/dist/index.mjs\");\n/* __next_internal_client_entry_do_not_use__ Presence auto */ // packages/react/presence/src/Presence.tsx\n\n\n\n// packages/react/presence/src/useStateMachine.tsx\n\nfunction useStateMachine(initialState, machine) {\n return react__WEBPACK_IMPORTED_MODULE_0__.useReducer((state, event)=>{\n const nextState = machine[state][event];\n return nextState ?? state;\n }, initialState);\n}\n// packages/react/presence/src/Presence.tsx\nvar Presence = (props)=>{\n const { present, children } = props;\n const presence = usePresence(present);\n const child = typeof children === \"function\" ? children({\n present: presence.isPresent\n }) : react__WEBPACK_IMPORTED_MODULE_0__.Children.only(children);\n const ref = (0,_radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_1__.useComposedRefs)(presence.ref, getElementRef(child));\n const forceMount = typeof children === \"function\";\n return forceMount || presence.isPresent ? /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.cloneElement(child, {\n ref\n }) : null;\n};\nPresence.displayName = \"Presence\";\nfunction usePresence(present) {\n const [node, setNode] = react__WEBPACK_IMPORTED_MODULE_0__.useState();\n const stylesRef = react__WEBPACK_IMPORTED_MODULE_0__.useRef({});\n const prevPresentRef = react__WEBPACK_IMPORTED_MODULE_0__.useRef(present);\n const prevAnimationNameRef = react__WEBPACK_IMPORTED_MODULE_0__.useRef(\"none\");\n const initialState = present ? \"mounted\" : \"unmounted\";\n const [state, send] = useStateMachine(initialState, {\n mounted: {\n UNMOUNT: \"unmounted\",\n ANIMATION_OUT: \"unmountSuspended\"\n },\n unmountSuspended: {\n MOUNT: \"mounted\",\n ANIMATION_END: \"unmounted\"\n },\n unmounted: {\n MOUNT: \"mounted\"\n }\n });\n react__WEBPACK_IMPORTED_MODULE_0__.useEffect(()=>{\n const currentAnimationName = getAnimationName(stylesRef.current);\n prevAnimationNameRef.current = state === \"mounted\" ? currentAnimationName : \"none\";\n }, [\n state\n ]);\n (0,_radix_ui_react_use_layout_effect__WEBPACK_IMPORTED_MODULE_2__.useLayoutEffect)(()=>{\n const styles = stylesRef.current;\n const wasPresent = prevPresentRef.current;\n const hasPresentChanged = wasPresent !== present;\n if (hasPresentChanged) {\n const prevAnimationName = prevAnimationNameRef.current;\n const currentAnimationName = getAnimationName(styles);\n if (present) {\n send(\"MOUNT\");\n } else if (currentAnimationName === \"none\" || styles?.display === \"none\") {\n send(\"UNMOUNT\");\n } else {\n const isAnimating = prevAnimationName !== currentAnimationName;\n if (wasPresent && isAnimating) {\n send(\"ANIMATION_OUT\");\n } else {\n send(\"UNMOUNT\");\n }\n }\n prevPresentRef.current = present;\n }\n }, [\n present,\n send\n ]);\n (0,_radix_ui_react_use_layout_effect__WEBPACK_IMPORTED_MODULE_2__.useLayoutEffect)(()=>{\n if (node) {\n let timeoutId;\n const ownerWindow = node.ownerDocument.defaultView ?? window;\n const handleAnimationEnd = (event)=>{\n const currentAnimationName = getAnimationName(stylesRef.current);\n const isCurrentAnimation = currentAnimationName.includes(event.animationName);\n if (event.target === node && isCurrentAnimation) {\n send(\"ANIMATION_END\");\n if (!prevPresentRef.current) {\n const currentFillMode = node.style.animationFillMode;\n node.style.animationFillMode = \"forwards\";\n timeoutId = ownerWindow.setTimeout(()=>{\n if (node.style.animationFillMode === \"forwards\") {\n node.style.animationFillMode = currentFillMode;\n }\n });\n }\n }\n };\n const handleAnimationStart = (event)=>{\n if (event.target === node) {\n prevAnimationNameRef.current = getAnimationName(stylesRef.current);\n }\n };\n node.addEventListener(\"animationstart\", handleAnimationStart);\n node.addEventListener(\"animationcancel\", handleAnimationEnd);\n node.addEventListener(\"animationend\", handleAnimationEnd);\n return ()=>{\n ownerWindow.clearTimeout(timeoutId);\n node.removeEventListener(\"animationstart\", handleAnimationStart);\n node.removeEventListener(\"animationcancel\", handleAnimationEnd);\n node.removeEventListener(\"animationend\", handleAnimationEnd);\n };\n } else {\n send(\"ANIMATION_END\");\n }\n }, [\n node,\n send\n ]);\n return {\n isPresent: [\n \"mounted\",\n \"unmountSuspended\"\n ].includes(state),\n ref: react__WEBPACK_IMPORTED_MODULE_0__.useCallback((node2)=>{\n if (node2) stylesRef.current = getComputedStyle(node2);\n setNode(node2);\n }, [])\n };\n}\nfunction getAnimationName(styles) {\n return styles?.animationName || \"none\";\n}\nfunction getElementRef(element) {\n let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.ref;\n }\n getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n return element.props.ref || element.ref;\n}\n //# sourceMappingURL=index.mjs.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LXByZXNlbmNlL2Rpc3QvaW5kZXgubWpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQXVCO0FBQ1M7QUFDQTs7QUNGVDtBQVdoQixTQUFTRyxnQkFDZEMsWUFBQSxFQUNBQyxPQUFBO0lBRUEsT0FBYUwsNkNBQUEsQ0FBVyxDQUFDTyxPQUF3QkM7UUFDL0MsTUFBTUMsWUFBYUosT0FBQSxDQUFRRSxNQUFLLENBQVVDLE1BQUs7UUFDL0MsT0FBT0MsYUFBYUY7SUFDdEIsR0FBR0g7QUFDTDs7QURUQSxJQUFNTSxXQUFvQyxDQUFDQztJQUN6QyxNQUFNLEVBQUVDLE9BQUEsRUFBU0MsUUFBQSxFQUFTLEdBQUlGO0lBQzlCLE1BQU1HLFdBQVdDLFlBQVlIO0lBRTdCLE1BQU1JLFFBQ0osT0FBT0gsYUFBYSxhQUNoQkEsU0FBUztRQUFFRCxTQUFTRSxTQUFTRyxTQUFBO0lBQVUsS0FDakNDLDJDQUFBLENBQVNFLElBQUEsQ0FBS1A7SUFHMUIsTUFBTVEsTUFBTXBCLDZFQUFlQSxDQUFDYSxTQUFTTyxHQUFBLEVBQUtDLGNBQWNOO0lBQ3hELE1BQU1PLGFBQWEsT0FBT1YsYUFBYTtJQUN2QyxPQUFPVSxjQUFjVCxTQUFTRyxTQUFBLGlCQUFrQkMsK0NBQUEsQ0FBYUYsT0FBTztRQUFFSztJQUFJLEtBQUs7QUFDakY7QUFFQVgsU0FBU2UsV0FBQSxHQUFjO0FBTXZCLFNBQVNWLFlBQVlILE9BQUE7SUFDbkIsTUFBTSxDQUFDYyxNQUFNQyxRQUFPLEdBQVVULDJDQUFBO0lBQzlCLE1BQU1XLFlBQWtCWCx5Q0FBQSxDQUE0QixDQUFDO0lBQ3JELE1BQU1hLGlCQUF1QmIseUNBQUEsQ0FBT047SUFDcEMsTUFBTW9CLHVCQUE2QmQseUNBQUEsQ0FBZTtJQUNsRCxNQUFNZCxlQUFlUSxVQUFVLFlBQVk7SUFDM0MsTUFBTSxDQUFDTCxPQUFPMEIsS0FBSSxHQUFJOUIsZ0JBQWdCQyxjQUFjO1FBQ2xEOEIsU0FBUztZ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QUNQO0FBQ0Y7QUFJQSxTQUFTaUIsaUJBQWlCRSxNQUFBO0lBQ3hCLE9BQU9BLFFBQVFjLGlCQUFpQjtBQUNsQztBQU9BLFNBQVNyQyxjQUFjaUQsT0FBQTtJQUVyQixJQUFJQyxTQUFTQyxPQUFPQyx3QkFBQSxDQUF5QkgsUUFBUTVELEtBQUEsRUFBTyxRQUFRZ0U7SUFDcEUsSUFBSUMsVUFBVUosVUFBVSxvQkFBb0JBLFVBQVVBLE9BQU9LLGNBQUE7SUFDN0QsSUFBSUQsU0FBUztRQUNYLE9BQVFMLFFBQWdCbEQsR0FBQTtJQUMxQjtJQUdBbUQsU0FBU0MsT0FBT0Msd0JBQUEsQ0FBeUJILFNBQVMsUUFBUUk7SUFDMURDLFVBQVVKLFVBQVUsb0JBQW9CQSxVQUFVQSxPQUFPSyxjQUFBO0lBQ3pELElBQUlELFNBQVM7UUFDWCxPQUFPTCxRQUFRNUQsS0FBQSxDQUFNVSxHQUFBO0lBQ3ZCO0lBR0EsT0FBT2tELFFBQVE1RCxLQUFBLENBQU1VLEdBQUEsSUFBUWtELFFBQWdCbEQsR0FBQTtBQUMvQyIsInNvdXJjZXMiOlsid2VicGFjazovL215LXYwLXByb2plY3QvLi4vc3JjL1ByZXNlbmNlLnRzeD84YjM5Iiwid2VicGFjazovL215LXYwLXByb2plY3QvLi4vc3JjL3VzZVN0YXRlTWFjaGluZS50c3g/YTMyMCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VDb21wb3NlZFJlZnMgfSBmcm9tICdAcmFkaXgtdWkvcmVhY3QtY29tcG9zZS1yZWZzJztcbmltcG9ydCB7IHVzZUxheW91dEVmZmVjdCB9IGZyb20gJ0ByYWRpeC11aS9yZWFjdC11c2UtbGF5b3V0LWVmZmVjdCc7XG5pbXBvcnQgeyB1c2VTdGF0ZU1hY2hpbmUgfSBmcm9tICcuL3VzZVN0YXRlTWFjaGluZSc7XG5cbmludGVyZmFjZSBQcmVzZW5jZVByb3BzIHtcbiAgY2hpbGRyZW46IFJlYWN0LlJlYWN0RWxlbWVudCB8ICgocHJvcHM6IHsgcHJlc2VudDogYm9vbGVhbiB9KSA9PiBSZWFjdC5SZWFjdEVsZW1lbnQpO1xuICBwcmVzZW50OiBib29sZWFuO1xufVxuXG5jb25zdCBQcmVzZW5jZTogUmVhY3QuRkM8UHJlc2VuY2VQcm9wcz4gPSAocHJvcHMpID0+IHtcbiAgY29uc3QgeyBwcmVzZW50LCBjaGlsZHJlbiB9ID0gcHJvcHM7XG4gIGNvbnN0IHByZXNlbmNlID0gdXNlUHJlc2VuY2UocHJlc2VudCk7XG5cbiAgY29uc3QgY2hpbGQgPSAoXG4gICAgdHlwZW9mIGNoaWxkcmVuID09PSAnZnVuY3Rpb24nXG4gICAgICA/IGNoaWxkcmVuKHsgcHJlc2VudDogcHJlc2VuY2UuaXNQcmVzZW50IH0pXG4gICAgICA6IFJlYWN0LkNoaWxkcmVuLm9ubHkoY2hpbGRyZW4pXG4gICkgYXMgUmVhY3QuUmVhY3RFbGVtZW50PHsgcmVmPzogUmVhY3QuUmVmPEhUTUxFbGVtZW50PiB9PjtcblxuICBjb25zdCByZWYgPSB1c2VDb21wb3NlZFJlZnMocHJlc2VuY2UucmVmLCBnZXRFbGVtZW50UmVmKGNoaWxkKSk7XG4gIGNvbnN0IGZvcmNlTW91bnQgPSB0eXBlb2YgY2hpbGRyZW4gPT09ICdmdW5jdGlvbic7XG4gIHJldHVybiBmb3JjZU1vdW50IHx8IHByZXNlbmNlLmlzUHJlc2VudCA/IFJlYWN0LmNsb25lRWxlbWVudChjaGlsZCwgeyByZWYgfSkgOiBudWxsO1xufTtcblxuUHJlc2VuY2UuZGlzcGxheU5hbWUgPSAnUHJlc2VuY2UnO1xuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiB1c2VQcmVzZW5jZVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG5mdW5jdGlvbiB1c2VQcmVzZW5jZShwcmVzZW50OiBib29sZWFuKSB7XG4gIGNvbnN0IFtub2RlLCBzZXROb2RlXSA9IFJlYWN0LnVzZVN0YXRlPEhUTUxFbGVtZW50PigpO1xuICBjb25zdCBzdHlsZXNSZWYgPSBSZWFjdC51c2VSZWY8Q1NTU3R5bGVEZWNsYXJhdGlvbj4oe30gYXMgYW55KTtcbiAgY29uc3QgcHJldlByZXNlbnRSZWYgPSBSZWFjdC51c2VSZWYocHJlc2VudCk7XG4gIGNvbnN0IHByZXZBbmltYXRpb25OYW1lUmVmID0gUmVhY3QudXNlUmVmPHN0cmluZz4oJ25vbmUnKTtcbiAgY29uc3QgaW5pdGlhbFN0YXRlID0gcHJlc2VudCA/ICdtb3VudGVkJyA6ICd1bm1vdW50ZWQnO1xuICBjb25zdCBbc3RhdGUsIHNlbmRdID0gdXNlU3RhdGVNYWNoaW5lKGluaXRpYWxTdGF0ZSwge1xuICAgIG1vdW50ZWQ6IHtcbiAgICAgIFVOTU9VTlQ6ICd1bm1vdW50ZWQnLFxuICAgICAgQU5JTUFUSU9OX09VVDogJ3VubW91bnRTdXNwZW5kZWQnLFxuICAgIH0sXG4gICAgdW5tb3VudFN1c3BlbmRlZDoge1xuICAgICAgTU9VTlQ6ICdtb3VudGVkJyxcbiAgICAgIEFOSU1BVElPTl9FTkQ6ICd1bm1vdW50ZWQnLFxuICAgIH0sXG4gICAgdW5tb3VudGVkOiB7XG4gICAgICBNT1VOVDogJ21vdW50ZWQnLFxuICAgIH0sXG4gIH0pO1xuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgY3VycmVudEFuaW1hdGlvbk5hbWUgPSBnZXRBbmltYXRpb25OYW1lKHN0eWxlc1JlZi5jdXJyZW50KTtcbiAgICBwcmV2QW5pbWF0aW9uTmFtZVJlZi5jdXJyZW50ID0gc3RhdGUgPT09ICdtb3VudGVkJyA/IGN1cnJlbnRBbmltYXRpb25OYW1lIDogJ25vbmUnO1xuICB9LCBbc3RhdGVdKTtcblxuICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IHN0eWxlcyA9IHN0eWxlc1JlZi5jdXJyZW50O1xuICAgIGNvbnN0IHdhc1ByZXNlbnQgPSBwcmV2UHJlc2VudFJlZi5jdXJyZW50O1xuICAgIGNvbnN0IGhhc1ByZXNlbnRDaGFuZ2VkID0gd2FzUHJlc2VudCAhPT0gcHJlc2VudDtcblxuICAgIGlmIChoYXNQcmVzZW50Q2hhbmdlZCkge1xuICAgICAgY29uc3QgcHJldkFuaW1hdGlvbk5hbWUgPSBwcmV2QW5pbWF0aW9uTmFtZVJlZi5jdXJyZW50O1xuICAgICAgY29uc3QgY3VycmVudEFuaW1hdGlvbk5hbWUgPSBnZXRBbmltYXRpb25OYW1lKHN0eWxlcyk7XG5cbiAgICAgIGlmIChwcmVzZW50KSB7XG4gICAgICAgIHNlbmQoJ01PVU5UJyk7XG4gICAgICB9IGVsc2UgaWYgKGN1cnJlbnRBbmltYXRpb25OYW1lID09PSAnbm9uZScgfHwgc3R5bGVzPy5kaXNwbGF5ID09PSAnbm9uZScpIHtcbiAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gZXhpdCBhbmltYXRpb24gb3IgdGhlIGVsZW1lbnQgaXMgaGlkZGVuLCBhbmltYXRpb25zIHdvbid0IHJ1blxuICAgICAgICAvLyBzbyB3ZSB1bm1vdW50IGluc3RhbnRseVxuICAgICAgICBzZW5kKCdVTk1PVU5UJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvKipcbiAgICAgICAgICogV2hlbiBgcHJlc2VudGAgY2hhbmdlcyB0byBgZmFsc2VgLCB3ZSBjaGVjayBjaGFuZ2VzIHRvIGFuaW1hdGlvbi1uYW1lIHRvXG4gICAgICAgICAqIGRldGVybWluZSB3aGV0aGVyIGFuIGFuaW1hdGlvbiBoYXMgc3RhcnRlZC4gV2UgY2hvc2UgdGhpcyBhcHByb2FjaCAocmVhZGluZ1xuICAgICAgICAgKiBjb21wdXRlZCBzdHlsZXMpIGJlY2F1c2UgdGhlcmUgaXMgbm8gYGFuaW1hdGlvbnJ1bmAgZXZlbnQgYW5kIGBhbmltYXRpb25zdGFydGBcbiAgICAgICAgICogZmlyZXMgYWZ0ZXIgYGFuaW1hdGlvbi1kZWxheWAgaGFzIGV4cGlyZWQgd2hpY2ggd291bGQgYmUgdG9vIGxhdGUuXG4gICAgICAgICAqL1xuICAgICAgICBjb25zdCBpc0FuaW1hdGluZyA9IHByZXZBbmltYXRpb25OYW1lICE9PSBjdXJyZW50QW5pbWF0aW9uTmFtZTtcblxuICAgICAgICBpZiAod2FzUHJlc2VudCAmJiBpc0FuaW1hdGluZykge1xuICAgICAgICAgIHNlbmQoJ0FOSU1BVElPTl9PVVQnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzZW5kKCdVTk1PVU5UJyk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcHJldlByZXNlbnRSZWYuY3VycmVudCA9IHByZXNlbnQ7XG4gICAgfVxuICB9LCBbcHJlc2VudCwgc2VuZF0pO1xuXG4gIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKG5vZGUpIHtcbiAgICAgIGxldCB0aW1lb3V0SWQ6IG51bWJlcjtcbiAgICAgIGNvbnN0IG93bmVyV2luZG93ID0gbm9kZS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3ID8/IHdpbmRvdztcbiAgICAgIC8qKlxuICAgICAgICogVHJpZ2dlcmluZyBhbiBBTklNQVRJT05fT1VUIGR1cmluZyBhbiBBTklNQVRJT05fSU4gd2lsbCBmaXJlIGFuIGBhbmltYXRpb25jYW5jZWxgXG4gICAgICAgKiBldmVudCBmb3IgQU5JTUFUSU9OX0lOIGFmdGVyIHdlIGhhdmUgZW50ZXJlZCBgdW5tb3VudFN1c3BlbmRlZGAgc3RhdGUuIFNvLCB3ZVxuICAgICAgICogbWFrZSBzdXJlIHdlIG9ubHkgdHJpZ2dlciBBTklNQVRJT05fRU5EIGZvciB0aGUgY3VycmVudGx5IGFjdGl2ZSBhbmltYXRpb24uXG4gICAgICAgKi9cbiAgICAgIGNvbnN0IGhhbmRsZUFuaW1hdGlvbkVuZCA9IChldmVudDogQW5pbWF0aW9uRXZlbnQpID0+IHtcbiAgICAgICAgY29uc3QgY3VycmVudEFuaW1hdGlvbk5hbWUgPSBnZXRBbmltYXRpb25OYW1lKHN0eWxlc1JlZi5jdXJyZW50KTtcbiAgICAgICAgY29uc3QgaXNDdXJyZW50QW5pbWF0aW9uID0gY3VycmVudEFuaW1hdGlvbk5hbWUuaW5jbHVkZXMoZXZlbnQuYW5pbWF0aW9uTmFtZSk7XG4gICAgICAgIGlmIChldmVudC50YXJnZXQgPT09IG5vZGUgJiYgaXNDdXJyZW50QW5pbWF0aW9uKSB7XG4gICAgICAgICAgLy8gV2l0aCBSZWFjdCAxOCBjb25jdXJyZW5jeSB0aGlzIHVwZGF0ZSBpcyBhcHBsaWVkIGEgZnJhbWUgYWZ0ZXIgdGhlXG4gICAgICAgICAgLy8gYW5pbWF0aW9uIGVuZHMsIGNyZWF0aW5nIGEgZmxhc2ggb2YgdmlzaWJsZSBjb250ZW50LiBCeSBzZXR0aW5nIHRoZVxuICAgICAgICAgIC8vIGFuaW1hdGlvbiBmaWxsIG1vZGUgdG8gXCJmb3J3YXJkc1wiLCB3ZSBmb3JjZSB0aGUgbm9kZSB0byBrZWVwIHRoZVxuICAgICAgICAgIC8vIHN0eWxlcyBvZiB0aGUgbGFzdCBrZXlmcmFtZSwgcmVtb3ZpbmcgdGhlIGZsYXNoLlxuICAgICAgICAgIC8vXG4gICAgICAgICAgLy8gUHJldmlvdXNseSB3ZSBmbHVzaGVkIHRoZSB1cGRhdGUgdmlhIFJlYWN0RG9tLmZsdXNoU3luYywgYnV0IHdpdGhcbiAgICAgICAgICAvLyBleGl0IGFuaW1hdGlvbnMgdGhpcyByZXN1bHRlZCBpbiB0aGUgbm9kZSBiZWluZyByZW1vdmVkIGZyb20gdGhlXG4gICAgICAgICAgLy8gRE9NIGJlZm9yZSB0aGUgc3ludGhldGljIGFuaW1hdGlvbkVuZCBldmVudCB3YXMgZGlzcGF0Y2hlZCwgbWVhbmluZ1xuICAgICAgICAgIC8vIHVzZXItcHJvdmlkZWQgZXZlbnQgaGFuZGxlcnMgd291bGQgbm90IGJlIGNhbGxlZC5cbiAgICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vcmFkaXgtdWkvcHJpbWl0aXZlcy9wdWxsLzE4NDlcbiAgICAgICAgICBzZW5kKCdBTklNQVRJT05fRU5EJyk7XG4gICAgICAgICAgaWYgKCFwcmV2UHJlc2VudFJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50RmlsbE1vZGUgPSBub2RlLnN0eWxlLmFuaW1hdGlvbkZpbGxNb2RlO1xuICAgICAgICAgICAgbm9kZS5zdHlsZS5hbmltYXRpb25GaWxsTW9kZSA9ICdmb3J3YXJkcyc7XG4gICAgICAgICAgICAvLyBSZXNldCB0aGUgc3R5bGUgYWZ0ZXIgdGhlIG5vZGUgaGFkIHRpbWUgdG8gdW5tb3VudCAoZm9yIGNhc2VzXG4gICAgICAgICAgICAvLyB3aGVyZSB0aGUgY29tcG9uZW50IGNob29zZXMgbm90IHRvIHVubW91bnQpLiBEb2luZyB0aGlzIGFueVxuICAgICAgICAgICAgLy8gc29vbmVyIHRoYW4gYHNldFRpbWVvdXRgIChlLmcuIHdpdGggYHJlcXVlc3RBbmltYXRpb25GcmFtZWApXG4gICAgICAgICAgICAvLyBzdGlsbCBjYXVzZXMgYSBmbGFzaC5cbiAgICAgICAgICAgIHRpbWVvdXRJZCA9IG93bmVyV2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICBpZiAobm9kZS5zdHlsZS5hbmltYXRpb25GaWxsTW9kZSA9PT0gJ2ZvcndhcmRzJykge1xuICAgICAgICAgICAgICAgIG5vZGUuc3R5bGUuYW5pbWF0aW9uRmlsbE1vZGUgPSBjdXJyZW50RmlsbE1vZGU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIGNvbnN0IGhhbmRsZUFuaW1hdGlvblN0YXJ0ID0gKGV2ZW50OiBBbmltYXRpb25FdmVudCkgPT4ge1xuICAgICAgICBpZiAoZXZlbnQudGFyZ2V0ID09PSBub2RlKSB7XG4gICAgICAgICAgLy8gaWYgYW5pbWF0aW9uIG9jY3VycmVkLCBzdG9yZSBpdHMgbmFtZSBhcyB0aGUgcHJldmlvdXMgYW5pbWF0aW9uLlxuICAgICAgICAgIHByZXZBbmltYXRpb25OYW1lUmVmLmN1cnJlbnQgPSBnZXRBbmltYXRpb25OYW1lKHN0eWxlc1JlZi5jdXJyZW50KTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIG5vZGUuYWRkRXZlbnRMaXN0ZW5lcignYW5pbWF0aW9uc3RhcnQnLCBoYW5kbGVBbmltYXRpb25TdGFydCk7XG4gICAgICBub2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2FuaW1hdGlvbmNhbmNlbCcsIGhhbmRsZUFuaW1hdGlvbkVuZCk7XG4gICAgICBub2RlLmFkZEV2ZW50TGlzdGVuZXIoJ2FuaW1hdGlvbmVuZCcsIGhhbmRsZUFuaW1hdGlvbkVuZCk7XG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICBvd25lcldpbmRvdy5jbGVhclRpbWVvdXQodGltZW91dElkKTtcbiAgICAgICAgbm9kZS5yZW1vdmVFdmVudExpc3RlbmVyKCdhbmltYXRpb25zdGFydCcsIGhhbmRsZUFuaW1hdGlvblN0YXJ0KTtcbiAgICAgICAgbm9kZS5yZW1vdmVFdmVudExpc3RlbmVyKCdhbmltYXRpb25jYW5jZWwnLCBoYW5kbGVBbmltYXRpb25FbmQpO1xuICAgICAgICBub2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2FuaW1hdGlvbmVuZCcsIGhhbmRsZUFuaW1hdGlvbkVuZCk7XG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBUcmFuc2l0aW9uIHRvIHRoZSB1bm1vdW50ZWQgc3RhdGUgaWYgdGhlIG5vZGUgaXMgcmVtb3ZlZCBwcmVtYXR1cmVseS5cbiAgICAgIC8vIFdlIGF2b2lkIGRvaW5nIHNvIGR1cmluZyBjbGVhbnVwIGFzIHRoZSBub2RlIG1heSBjaGFuZ2UgYnV0IHN0aWxsIGV4aXN0LlxuICAgICAgc2VuZCgnQU5JTUFUSU9OX0VORCcpO1xuICAgIH1cbiAgfSwgW25vZGUsIHNlbmRdKTtcblxuICByZXR1cm4ge1xuICAgIGlzUHJlc2VudDogWydtb3VudGVkJywgJ3VubW91bnRTdXNwZW5kZWQnXS5pbmNsdWRlcyhzdGF0ZSksXG4gICAgcmVmOiBSZWFjdC51c2VDYWxsYmFjaygobm9kZTogSFRNTEVsZW1lbnQpID0+IHtcbiAgICAgIGlmIChub2RlKSBzdHlsZXNSZWYuY3VycmVudCA9IGdldENvbXB1dGVkU3R5bGUobm9kZSk7XG4gICAgICBzZXROb2RlKG5vZGUpO1xuICAgIH0sIFtdKSxcbiAgfTtcbn1cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG5mdW5jdGlvbiBnZXRBbmltYXRpb25OYW1lKHN0eWxlcz86IENTU1N0eWxlRGVjbGFyYXRpb24pIHtcbiAgcmV0dXJuIHN0eWxlcz8uYW5pbWF0aW9uTmFtZSB8fCAnbm9uZSc7XG59XG5cbi8vIEJlZm9yZSBSZWFjdCAxOSBhY2Nlc3NpbmcgYGVsZW1lbnQucHJvcHMucmVmYCB3aWxsIHRocm93IGEgd2FybmluZyBhbmQgc3VnZ2VzdCB1c2luZyBgZWxlbWVudC5yZWZgXG4vLyBBZnRlciBSZWFjdCAxOSBhY2Nlc3NpbmcgYGVsZW1lbnQucmVmYCBkb2VzIHRoZSBvcHBvc2l0ZS5cbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9wdWxsLzI4MzQ4XG4vL1xuLy8gQWNjZXNzIHRoZSByZWYgdXNpbmcgdGhlIG1ldGhvZCB0aGF0IGRvZXNuJ3QgeWllbGQgYSB3YXJuaW5nLlxuZnVuY3Rpb24gZ2V0RWxlbWVudFJlZihlbGVtZW50OiBSZWFjdC5SZWFjdEVsZW1lbnQ8eyByZWY/OiBSZWFjdC5SZWY8dW5rbm93bj4gfT4pIHtcbiAgLy8gUmVhY3QgPD0xOCBpbiBERVZcbiAgbGV0IGdldHRlciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZWxlbWVudC5wcm9wcywgJ3JlZicpPy5nZXQ7XG4gIGxldCBtYXlXYXJuID0gZ2V0dGVyICYmICdpc1JlYWN0V2FybmluZycgaW4gZ2V0dGVyICYmIGdldHRlci5pc1JlYWN0V2FybmluZztcbiAgaWYgKG1heVdhcm4pIHtcbiAgICByZXR1cm4gKGVsZW1lbnQgYXMgYW55KS5yZWY7XG4gIH1cblxuICAvLyBSZWFjdCAxOSBpbiBERVZcbiAgZ2V0dGVyID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlbGVtZW50LCAncmVmJyk/LmdldDtcbiAgbWF5V2FybiA9IGdldHRlciAmJiAnaXNSZWFjdFdhcm5pbmcnIGluIGdldHRlciAmJiBnZXR0ZXIuaXNSZWFjdFdhcm5pbmc7XG4gIGlmIChtYXlXYXJuKSB7XG4gICAgcmV0dXJuIGVsZW1lbnQucHJvcHMucmVmO1xuICB9XG5cbiAgLy8gTm90IERFVlxuICByZXR1cm4gZWxlbWVudC5wcm9wcy5yZWYgfHwgKGVsZW1lbnQgYXMgYW55KS5yZWY7XG59XG5cbmV4cG9ydCB7IFByZXNlbmNlIH07XG5leHBvcnQgdHlwZSB7IFByZXNlbmNlUHJvcHMgfTtcbiIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcblxudHlwZSBNYWNoaW5lPFM+ID0geyBbazogc3RyaW5nXTogeyBbazogc3RyaW5nXTogUyB9IH07XG50eXBlIE1hY2hpbmVTdGF0ZTxUPiA9IGtleW9mIFQ7XG50eXBlIE1hY2hpbmVFdmVudDxUPiA9IGtleW9mIFVuaW9uVG9JbnRlcnNlY3Rpb248VFtrZXlvZiBUXT47XG5cbi8vIPCfpK8gaHR0cHM6Ly9mZXR0YmxvZy5ldS90eXBlc2NyaXB0LXVuaW9uLXRvLWludGVyc2VjdGlvbi9cbnR5cGUgVW5pb25Ub0ludGVyc2VjdGlvbjxUPiA9IChUIGV4dGVuZHMgYW55ID8gKHg6IFQpID0+IGFueSA6IG5ldmVyKSBleHRlbmRzICh4OiBpbmZlciBSKSA9PiBhbnlcbiAgPyBSXG4gIDogbmV2ZXI7XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VTdGF0ZU1hY2hpbmU8TT4oXG4gIGluaXRpYWxTdGF0ZTogTWFjaGluZVN0YXRlPE0+LFxuICBtYWNoaW5lOiBNICYgTWFjaGluZTxNYWNoaW5lU3RhdGU8TT4+XG4pIHtcbiAgcmV0dXJuIFJlYWN0LnVzZVJlZHVjZXIoKHN0YXRlOiBNYWNoaW5lU3RhdGU8TT4sIGV2ZW50OiBNYWNoaW5lRXZlbnQ8TT4pOiBNYWNoaW5lU3RhdGU8TT4gPT4ge1xuICAgIGNvbnN0IG5leHRTdGF0ZSA9IChtYWNoaW5lW3N0YXRlXSBhcyBhbnkpW2V2ZW50XTtcbiAgICByZXR1cm4gbmV4dFN0YXRlID8/IHN0YXRlO1xuICB9LCBpbml0aWFsU3RhdGUpO1xufVxuIl0sIm5hbWVzIjpbIlJlYWN0IiwidXNlQ29tcG9zZWRSZWZzIiwidXNlTGF5b3V0RWZmZWN0IiwidXNlU3RhdGVNYWNoaW5lIiwiaW5pdGlhbFN0YXRlIiwibWFjaGluZSIsInVzZVJlZHVjZXIiLCJzdGF0ZSIsImV2ZW50IiwibmV4dFN0YXRlIiwiUHJlc2VuY2UiLCJwcm9wcyIsInByZXNlbnQiLCJjaGlsZHJlbiIsInByZXNlbmNlIiwidXNlUHJlc2VuY2UiLCJjaGlsZCIsImlzUHJlc2VudCIsIlJlYWN0MiIsIkNoaWxkcmVuIiwib25seSIsInJlZiIsImdldEVsZW1lbnRSZWYiLCJmb3JjZU1vdW50IiwiY2xvbmVFbGVtZW50IiwiZGlzcGxheU5hbWUiLCJub2RlIiwic2V0Tm9kZSIsInVzZVN0YXRlIiwic3R5bGVzUmVmIiwidXNlUmVmIiwicHJldlByZXNlbnRSZWYiLCJwcmV2QW5pbWF0aW9uTmFtZVJlZiIsInNlbmQiLCJtb3VudGVkIiwiVU5NT1VOVCIsIkFOSU1BVElPTl9PVVQiLCJ1bm1vdW50U3VzcGVuZGVkIiwiTU9VTlQiLCJBTklNQVRJT05fRU5EIiwidW5tb3VudGVkIiwidXNlRWZmZWN0IiwiY3VycmVudEFuaW1hdGlvbk5hbWUiLCJnZXRBbmltYXRpb25OYW1lIiwiY3VycmVudCIsInN0eWxlcyIsIndhc1ByZXNlbnQiLCJoYXNQcmVzZW50Q2hhbmdlZCIsInByZXZBbmltYXRpb25OYW1lIiwiZGlzcGxheSIsImlzQW5pbWF0aW5nIiwidGltZW91dElkIiwib3duZXJXaW5kb3ciLCJvd25lckRvY3VtZW50IiwiZGVmYXVsdFZpZXciLCJ3aW5kb3ciLCJoYW5kbGVBbmltYXRpb25FbmQiLCJpc0N1cnJlbnRBbmltYXRpb24iLCJpbmNsdWRlcyIsImFuaW1hdGlvbk5hbWUiLCJ0YXJnZXQiLCJjdXJyZW50RmlsbE1vZGUiLCJzdHlsZSIsImFuaW1hdGlvbkZpbGxNb2RlIiwic2V0VGltZW91dCIsImhhbmRsZUFuaW1hdGlvblN0YXJ0IiwiYWRkRXZlbnRMaXN0ZW5lciIsImNsZWFyVGltZW91dCIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJ1c2VDYWxsYmFjayIsImdldENvbXB1dGVkU3R5bGUiLCJlbGVtZW50IiwiZ2V0dGVyIiwiT2JqZWN0IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZ2V0IiwibWF5V2FybiIsImlzUmVhY3RXYXJuaW5nIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/@radix-ui/react-presence/dist/index.mjs\n"); /***/ }), /***/ "(ssr)/./node_modules/@radix-ui/react-primitive/dist/index.mjs": /*!***************************************************************!*\ !*** ./node_modules/@radix-ui/react-primitive/dist/index.mjs ***! \***************************************************************/ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Primitive: () => (/* binding */ Primitive),\n/* harmony export */ Root: () => (/* binding */ Root),\n/* harmony export */ dispatchDiscreteCustomEvent: () => (/* binding */ dispatchDiscreteCustomEvent)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-dom */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react-dom.js\");\n/* harmony import */ var _radix_ui_react_slot__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @radix-ui/react-slot */ \"(ssr)/./node_modules/@radix-ui/react-slot/dist/index.mjs\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react/jsx-runtime */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react-jsx-runtime.js\");\n// packages/react/primitive/src/Primitive.tsx\n\n\n\n\nvar NODES = [\n \"a\",\n \"button\",\n \"div\",\n \"form\",\n \"h2\",\n \"h3\",\n \"img\",\n \"input\",\n \"label\",\n \"li\",\n \"nav\",\n \"ol\",\n \"p\",\n \"span\",\n \"svg\",\n \"ul\"\n];\nvar Primitive = NODES.reduce((primitive, node) => {\n const Node = react__WEBPACK_IMPORTED_MODULE_0__.forwardRef((props, forwardedRef) => {\n const { asChild, ...primitiveProps } = props;\n const Comp = asChild ? _radix_ui_react_slot__WEBPACK_IMPORTED_MODULE_3__.Slot : node;\n if (typeof window !== \"undefined\") {\n window[Symbol.for(\"radix-ui\")] = true;\n }\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(Comp, { ...primitiveProps, ref: forwardedRef });\n });\n Node.displayName = `Primitive.${node}`;\n return { ...primitive, [node]: Node };\n}, {});\nfunction dispatchDiscreteCustomEvent(target, event) {\n if (target) react_dom__WEBPACK_IMPORTED_MODULE_1__.flushSync(() => target.dispatchEvent(event));\n}\nvar Root = Primitive;\n\n//# sourceMappingURL=index.mjs.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LXByaW1pdGl2ZS9kaXN0L2luZGV4Lm1qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUE7QUFDK0I7QUFDTztBQUNNO0FBQ0o7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLDZDQUFnQjtBQUMvQixZQUFZLDZCQUE2QjtBQUN6QywyQkFBMkIsc0RBQUk7QUFDL0I7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLHNEQUFHLFNBQVMsc0NBQXNDO0FBQzdFLEdBQUc7QUFDSCxrQ0FBa0MsS0FBSztBQUN2QyxXQUFXO0FBQ1gsQ0FBQyxJQUFJO0FBQ0w7QUFDQSxjQUFjLGdEQUFrQjtBQUNoQztBQUNBO0FBS0U7QUFDRiIsInNvdXJjZXMiOlsid2VicGFjazovL215LXYwLXByb2plY3QvLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LXByaW1pdGl2ZS9kaXN0L2luZGV4Lm1qcz8wNzBiIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIHBhY2thZ2VzL3JlYWN0L3ByaW1pdGl2ZS9zcmMvUHJpbWl0aXZlLnRzeFxuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgKiBhcyBSZWFjdERPTSBmcm9tIFwicmVhY3QtZG9tXCI7XG5pbXBvcnQgeyBTbG90IH0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1zbG90XCI7XG5pbXBvcnQgeyBqc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbnZhciBOT0RFUyA9IFtcbiAgXCJhXCIsXG4gIFwiYnV0dG9uXCIsXG4gIFwiZGl2XCIsXG4gIFwiZm9ybVwiLFxuICBcImgyXCIsXG4gIFwiaDNcIixcbiAgXCJpbWdcIixcbiAgXCJpbnB1dFwiLFxuICBcImxhYmVsXCIsXG4gIFwibGlcIixcbiAgXCJuYXZcIixcbiAgXCJvbFwiLFxuICBcInBcIixcbiAgXCJzcGFuXCIsXG4gIFwic3ZnXCIsXG4gIFwidWxcIlxuXTtcbnZhciBQcmltaXRpdmUgPSBOT0RFUy5yZWR1Y2UoKHByaW1pdGl2ZSwgbm9kZSkgPT4ge1xuICBjb25zdCBOb2RlID0gUmVhY3QuZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZikgPT4ge1xuICAgIGNvbnN0IHsgYXNDaGlsZCwgLi4ucHJpbWl0aXZlUHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IENvbXAgPSBhc0NoaWxkID8gU2xvdCA6IG5vZGU7XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgIHdpbmRvd1tTeW1ib2wuZm9yKFwicmFkaXgtdWlcIildID0gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goQ29tcCwgeyAuLi5wcmltaXRpdmVQcm9wcywgcmVmOiBmb3J3YXJkZWRSZWYgfSk7XG4gIH0pO1xuICBOb2RlLmRpc3BsYXlOYW1lID0gYFByaW1pdGl2ZS4ke25vZGV9YDtcbiAgcmV0dXJuIHsgLi4ucHJpbWl0aXZlLCBbbm9kZV06IE5vZGUgfTtcbn0sIHt9KTtcbmZ1bmN0aW9uIGRpc3BhdGNoRGlzY3JldGVDdXN0b21FdmVudCh0YXJnZXQsIGV2ZW50KSB7XG4gIGlmICh0YXJnZXQpIFJlYWN0RE9NLmZsdXNoU3luYygoKSA9PiB0YXJnZXQuZGlzcGF0Y2hFdmVudChldmVudCkpO1xufVxudmFyIFJvb3QgPSBQcmltaXRpdmU7XG5leHBvcnQge1xuICBQcmltaXRpdmUsXG4gIFJvb3QsXG4gIGRpc3BhdGNoRGlzY3JldGVDdXN0b21FdmVudFxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4Lm1qcy5tYXBcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/@radix-ui/react-primitive/dist/index.mjs\n"); /***/ }), /***/ "(ssr)/./node_modules/@radix-ui/react-roving-focus/dist/index.mjs": /*!******************************************************************!*\ !*** ./node_modules/@radix-ui/react-roving-focus/dist/index.mjs ***! \******************************************************************/ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Item: () => (/* binding */ Item),\n/* harmony export */ Root: () => (/* binding */ Root),\n/* harmony export */ RovingFocusGroup: () => (/* binding */ RovingFocusGroup),\n/* harmony export */ RovingFocusGroupItem: () => (/* binding */ RovingFocusGroupItem),\n/* harmony export */ createRovingFocusGroupScope: () => (/* binding */ createRovingFocusGroupScope)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var _radix_ui_primitive__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @radix-ui/primitive */ \"(ssr)/./node_modules/@radix-ui/primitive/dist/index.mjs\");\n/* harmony import */ var _radix_ui_react_collection__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @radix-ui/react-collection */ \"(ssr)/./node_modules/@radix-ui/react-collection/dist/index.mjs\");\n/* harmony import */ var _radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @radix-ui/react-compose-refs */ \"(ssr)/./node_modules/@radix-ui/react-compose-refs/dist/index.mjs\");\n/* harmony import */ var _radix_ui_react_context__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @radix-ui/react-context */ \"(ssr)/./node_modules/@radix-ui/react-context/dist/index.mjs\");\n/* harmony import */ var _radix_ui_react_id__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @radix-ui/react-id */ \"(ssr)/./node_modules/@radix-ui/react-id/dist/index.mjs\");\n/* harmony import */ var _radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @radix-ui/react-primitive */ \"(ssr)/./node_modules/@radix-ui/react-primitive/dist/index.mjs\");\n/* harmony import */ var _radix_ui_react_use_callback_ref__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @radix-ui/react-use-callback-ref */ \"(ssr)/./node_modules/@radix-ui/react-use-callback-ref/dist/index.mjs\");\n/* harmony import */ var _radix_ui_react_use_controllable_state__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @radix-ui/react-use-controllable-state */ \"(ssr)/./node_modules/@radix-ui/react-use-controllable-state/dist/index.mjs\");\n/* harmony import */ var _radix_ui_react_direction__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @radix-ui/react-direction */ \"(ssr)/./node_modules/@radix-ui/react-direction/dist/index.mjs\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react-jsx-runtime.js\");\n/* __next_internal_client_entry_do_not_use__ Item,Root,RovingFocusGroup,RovingFocusGroupItem,createRovingFocusGroupScope auto */ // packages/react/roving-focus/src/RovingFocusGroup.tsx\n\n\n\n\n\n\n\n\n\n\n\nvar ENTRY_FOCUS = \"rovingFocusGroup.onEntryFocus\";\nvar EVENT_OPTIONS = {\n bubbles: false,\n cancelable: true\n};\nvar GROUP_NAME = \"RovingFocusGroup\";\nvar [Collection, useCollection, createCollectionScope] = (0,_radix_ui_react_collection__WEBPACK_IMPORTED_MODULE_2__.createCollection)(GROUP_NAME);\nvar [createRovingFocusGroupContext, createRovingFocusGroupScope] = (0,_radix_ui_react_context__WEBPACK_IMPORTED_MODULE_3__.createContextScope)(GROUP_NAME, [\n createCollectionScope\n]);\nvar [RovingFocusProvider, useRovingFocusContext] = createRovingFocusGroupContext(GROUP_NAME);\nvar RovingFocusGroup = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef((props, forwardedRef)=>{\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(Collection.Provider, {\n scope: props.__scopeRovingFocusGroup,\n children: /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(Collection.Slot, {\n scope: props.__scopeRovingFocusGroup,\n children: /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(RovingFocusGroupImpl, {\n ...props,\n ref: forwardedRef\n })\n })\n });\n});\nRovingFocusGroup.displayName = GROUP_NAME;\nvar RovingFocusGroupImpl = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef((props, forwardedRef)=>{\n const { __scopeRovingFocusGroup, orientation, loop = false, dir, currentTabStopId: currentTabStopIdProp, defaultCurrentTabStopId, onCurrentTabStopIdChange, onEntryFocus, preventScrollOnEntryFocus = false, ...groupProps } = props;\n const ref = react__WEBPACK_IMPORTED_MODULE_0__.useRef(null);\n const composedRefs = (0,_radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_4__.useComposedRefs)(forwardedRef, ref);\n const direction = (0,_radix_ui_react_direction__WEBPACK_IMPORTED_MODULE_5__.useDirection)(dir);\n const [currentTabStopId = null, setCurrentTabStopId] = (0,_radix_ui_react_use_controllable_state__WEBPACK_IMPORTED_MODULE_6__.useControllableState)({\n prop: currentTabStopIdProp,\n defaultProp: defaultCurrentTabStopId,\n onChange: onCurrentTabStopIdChange\n });\n const [isTabbingBackOut, setIsTabbingBackOut] = react__WEBPACK_IMPORTED_MODULE_0__.useState(false);\n const handleEntryFocus = (0,_radix_ui_react_use_callback_ref__WEBPACK_IMPORTED_MODULE_7__.useCallbackRef)(onEntryFocus);\n const getItems = useCollection(__scopeRovingFocusGroup);\n const isClickFocusRef = react__WEBPACK_IMPORTED_MODULE_0__.useRef(false);\n const [focusableItemsCount, setFocusableItemsCount] = react__WEBPACK_IMPORTED_MODULE_0__.useState(0);\n react__WEBPACK_IMPORTED_MODULE_0__.useEffect(()=>{\n const node = ref.current;\n if (node) {\n node.addEventListener(ENTRY_FOCUS, handleEntryFocus);\n return ()=>node.removeEventListener(ENTRY_FOCUS, handleEntryFocus);\n }\n }, [\n handleEntryFocus\n ]);\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(RovingFocusProvider, {\n scope: __scopeRovingFocusGroup,\n orientation,\n dir: direction,\n loop,\n currentTabStopId,\n onItemFocus: react__WEBPACK_IMPORTED_MODULE_0__.useCallback((tabStopId)=>setCurrentTabStopId(tabStopId), [\n setCurrentTabStopId\n ]),\n onItemShiftTab: react__WEBPACK_IMPORTED_MODULE_0__.useCallback(()=>setIsTabbingBackOut(true), []),\n onFocusableItemAdd: react__WEBPACK_IMPORTED_MODULE_0__.useCallback(()=>setFocusableItemsCount((prevCount)=>prevCount + 1), []),\n onFocusableItemRemove: react__WEBPACK_IMPORTED_MODULE_0__.useCallback(()=>setFocusableItemsCount((prevCount)=>prevCount - 1), []),\n children: /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_8__.Primitive.div, {\n tabIndex: isTabbingBackOut || focusableItemsCount === 0 ? -1 : 0,\n \"data-orientation\": orientation,\n ...groupProps,\n ref: composedRefs,\n style: {\n outline: \"none\",\n ...props.style\n },\n onMouseDown: (0,_radix_ui_primitive__WEBPACK_IMPORTED_MODULE_9__.composeEventHandlers)(props.onMouseDown, ()=>{\n isClickFocusRef.current = true;\n }),\n onFocus: (0,_radix_ui_primitive__WEBPACK_IMPORTED_MODULE_9__.composeEventHandlers)(props.onFocus, (event)=>{\n const isKeyboardFocus = !isClickFocusRef.current;\n if (event.target === event.currentTarget && isKeyboardFocus && !isTabbingBackOut) {\n const entryFocusEvent = new CustomEvent(ENTRY_FOCUS, EVENT_OPTIONS);\n event.currentTarget.dispatchEvent(entryFocusEvent);\n if (!entryFocusEvent.defaultPrevented) {\n const items = getItems().filter((item)=>item.focusable);\n const activeItem = items.find((item)=>item.active);\n const currentItem = items.find((item)=>item.id === currentTabStopId);\n const candidateItems = [\n activeItem,\n currentItem,\n ...items\n ].filter(Boolean);\n const candidateNodes = candidateItems.map((item)=>item.ref.current);\n focusFirst(candidateNodes, preventScrollOnEntryFocus);\n }\n }\n isClickFocusRef.current = false;\n }),\n onBlur: (0,_radix_ui_primitive__WEBPACK_IMPORTED_MODULE_9__.composeEventHandlers)(props.onBlur, ()=>setIsTabbingBackOut(false))\n })\n });\n});\nvar ITEM_NAME = \"RovingFocusGroupItem\";\nvar RovingFocusGroupItem = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef((props, forwardedRef)=>{\n const { __scopeRovingFocusGroup, focusable = true, active = false, tabStopId, ...itemProps } = props;\n const autoId = (0,_radix_ui_react_id__WEBPACK_IMPORTED_MODULE_10__.useId)();\n const id = tabStopId || autoId;\n const context = useRovingFocusContext(ITEM_NAME, __scopeRovingFocusGroup);\n const isCurrentTabStop = context.currentTabStopId === id;\n const getItems = useCollection(__scopeRovingFocusGroup);\n const { onFocusableItemAdd, onFocusableItemRemove } = context;\n react__WEBPACK_IMPORTED_MODULE_0__.useEffect(()=>{\n if (focusable) {\n onFocusableItemAdd();\n return ()=>onFocusableItemRemove();\n }\n }, [\n focusable,\n onFocusableItemAdd,\n onFocusableItemRemove\n ]);\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(Collection.ItemSlot, {\n scope: __scopeRovingFocusGroup,\n id,\n focusable,\n active,\n children: /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_8__.Primitive.span, {\n tabIndex: isCurrentTabStop ? 0 : -1,\n \"data-orientation\": context.orientation,\n ...itemProps,\n ref: forwardedRef,\n onMouseDown: (0,_radix_ui_primitive__WEBPACK_IMPORTED_MODULE_9__.composeEventHandlers)(props.onMouseDown, (event)=>{\n if (!focusable) event.preventDefault();\n else context.onItemFocus(id);\n }),\n onFocus: (0,_radix_ui_primitive__WEBPACK_IMPORTED_MODULE_9__.composeEventHandlers)(props.onFocus, ()=>context.onItemFocus(id)),\n onKeyDown: (0,_radix_ui_primitive__WEBPACK_IMPORTED_MODULE_9__.composeEventHandlers)(props.onKeyDown, (event)=>{\n if (event.key === \"Tab\" && event.shiftKey) {\n context.onItemShiftTab();\n return;\n }\n if (event.target !== event.currentTarget) return;\n const focusIntent = getFocusIntent(event, context.orientation, context.dir);\n if (focusIntent !== void 0) {\n if (event.metaKey || event.ctrlKey || event.altKey || event.shiftKey) return;\n event.preventDefault();\n const items = getItems().filter((item)=>item.focusable);\n let candidateNodes = items.map((item)=>item.ref.current);\n if (focusIntent === \"last\") candidateNodes.reverse();\n else if (focusIntent === \"prev\" || focusIntent === \"next\") {\n if (focusIntent === \"prev\") candidateNodes.reverse();\n const currentIndex = candidateNodes.indexOf(event.currentTarget);\n candidateNodes = context.loop ? wrapArray(candidateNodes, currentIndex + 1) : candidateNodes.slice(currentIndex + 1);\n }\n setTimeout(()=>focusFirst(candidateNodes));\n }\n })\n })\n });\n});\nRovingFocusGroupItem.displayName = ITEM_NAME;\nvar MAP_KEY_TO_FOCUS_INTENT = {\n ArrowLeft: \"prev\",\n ArrowUp: \"prev\",\n ArrowRight: \"next\",\n ArrowDown: \"next\",\n PageUp: \"first\",\n Home: \"first\",\n PageDown: \"last\",\n End: \"last\"\n};\nfunction getDirectionAwareKey(key, dir) {\n if (dir !== \"rtl\") return key;\n return key === \"ArrowLeft\" ? \"ArrowRight\" : key === \"ArrowRight\" ? \"ArrowLeft\" : key;\n}\nfunction getFocusIntent(event, orientation, dir) {\n const key = getDirectionAwareKey(event.key, dir);\n if (orientation === \"vertical\" && [\n \"ArrowLeft\",\n \"ArrowRight\"\n ].includes(key)) return void 0;\n if (orientation === \"horizontal\" && [\n \"ArrowUp\",\n \"ArrowDown\"\n ].includes(key)) return void 0;\n return MAP_KEY_TO_FOCUS_INTENT[key];\n}\nfunction focusFirst(candidates, preventScroll = false) {\n const PREVIOUSLY_FOCUSED_ELEMENT = document.activeElement;\n for (const candidate of candidates){\n if (candidate === PREVIOUSLY_FOCUSED_ELEMENT) return;\n candidate.focus({\n preventScroll\n });\n if (document.activeElement !== PREVIOUSLY_FOCUSED_ELEMENT) return;\n }\n}\nfunction wrapArray(array, startIndex) {\n return array.map((_, index)=>array[(startIndex + index) % array.length]);\n}\nvar Root = RovingFocusGroup;\nvar Item = RovingFocusGroupItem;\n //# sourceMappingURL=index.mjs.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LXJvdmluZy1mb2N1cy9kaXN0L2luZGV4Lm1qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUF1QjtBQUNjO0FBQ0o7QUFDRDtBQUNHO0FBQ2I7QUFDSTtBQUNLO0FBQ007QUFDUjtBQWdFbkI7QUE1RFYsSUFBTVcsY0FBYztBQUNwQixJQUFNQyxnQkFBZ0I7SUFBRUMsU0FBUztJQUFPQyxZQUFZO0FBQUs7QUFNekQsSUFBTUMsYUFBYTtBQUduQixJQUFNLENBQUNDLFlBQVlDLGVBQWVDLHNCQUFxQixHQUFJaEIsNEVBQWdCQSxDQUd6RWE7QUFHRixJQUFNLENBQUNJLCtCQUErQkMsNEJBQTJCLEdBQUloQiwyRUFBa0JBLENBQ3JGVyxZQUNBO0lBQUNHO0NBQXFCO0FBK0J4QixJQUFNLENBQUNHLHFCQUFxQkMsc0JBQXFCLEdBQy9DSCw4QkFBa0RKO0FBS3BELElBQU1RLGlDQUF5QnZCLDZDQUFBLENBQzdCLENBQUN5QixPQUEyQ0M7SUFDMUMsT0FDRSxnQkFBQWhCLHNEQUFBQSxDQUFDTSxXQUFXVyxRQUFBLEVBQVg7UUFBb0JDLE9BQU9ILE1BQU1JLHVCQUFBO1FBQ2hDQyxVQUFBLGdCQUFBcEIsc0RBQUFBLENBQUNNLFdBQVdlLElBQUEsRUFBWDtZQUFnQkgsT0FBT0gsTUFBTUksdUJBQUE7WUFDNUJDLFVBQUEsZ0JBQUFwQixzREFBQUEsQ0FBQ3NCLHNCQUFBO2dCQUFzQixHQUFHUCxLQUFBO2dCQUFPUSxLQUFLUDtZQUFBO1FBQWM7SUFDdEQ7QUFHTjtBQUdGSCxpQkFBaUJXLFdBQUEsR0FBY25CO0FBZ0IvQixJQUFNaUIscUNBQTZCaEMsNkNBQUEsQ0FHakMsQ0FBQ3lCLE9BQStDQztJQUNoRCxNQUFNLEVBQ0pHLHVCQUFBLEVBQ0FNLFdBQUEsRUFDQUMsT0FBTyxPQUNQQyxHQUFBLEVBQ0FDLGtCQUFrQkMsb0JBQUEsRUFDbEJDLHVCQUFBLEVBQ0FDLHdCQUFBLEVBQ0FD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LElBQVNILE1BQU1JLE1BQU0sQ0FBQztBQUMzRTtBQUVBLElBQU1DLE9BQU81SDtBQUNiLElBQU02SCxPQUFPOUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9teS12MC1wcm9qZWN0Ly4uL3NyYy9Sb3ZpbmdGb2N1c0dyb3VwLnRzeD83YzgxIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGNvbXBvc2VFdmVudEhhbmRsZXJzIH0gZnJvbSAnQHJhZGl4LXVpL3ByaW1pdGl2ZSc7XG5pbXBvcnQgeyBjcmVhdGVDb2xsZWN0aW9uIH0gZnJvbSAnQHJhZGl4LXVpL3JlYWN0LWNvbGxlY3Rpb24nO1xuaW1wb3J0IHsgdXNlQ29tcG9zZWRSZWZzIH0gZnJvbSAnQHJhZGl4LXVpL3JlYWN0LWNvbXBvc2UtcmVmcyc7XG5pbXBvcnQgeyBjcmVhdGVDb250ZXh0U2NvcGUgfSBmcm9tICdAcmFkaXgtdWkvcmVhY3QtY29udGV4dCc7XG5pbXBvcnQgeyB1c2VJZCB9IGZyb20gJ0ByYWRpeC11aS9yZWFjdC1pZCc7XG5pbXBvcnQgeyBQcmltaXRpdmUgfSBmcm9tICdAcmFkaXgtdWkvcmVhY3QtcHJpbWl0aXZlJztcbmltcG9ydCB7IHVzZUNhbGxiYWNrUmVmIH0gZnJvbSAnQHJhZGl4LXVpL3JlYWN0LXVzZS1jYWxsYmFjay1yZWYnO1xuaW1wb3J0IHsgdXNlQ29udHJvbGxhYmxlU3RhdGUgfSBmcm9tICdAcmFkaXgtdWkvcmVhY3QtdXNlLWNvbnRyb2xsYWJsZS1zdGF0ZSc7XG5pbXBvcnQgeyB1c2VEaXJlY3Rpb24gfSBmcm9tICdAcmFkaXgtdWkvcmVhY3QtZGlyZWN0aW9uJztcblxuaW1wb3J0IHR5cGUgeyBTY29wZSB9IGZyb20gJ0ByYWRpeC11aS9yZWFjdC1jb250ZXh0JztcblxuY29uc3QgRU5UUllfRk9DVVMgPSAncm92aW5nRm9jdXNHcm91cC5vbkVudHJ5Rm9jdXMnO1xuY29uc3QgRVZFTlRfT1BUSU9OUyA9IHsgYnViYmxlczogZmFsc2UsIGNhbmNlbGFibGU6IHRydWUgfTtcblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogUm92aW5nRm9jdXNHcm91cFxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG5jb25zdCBHUk9VUF9OQU1FID0gJ1JvdmluZ0ZvY3VzR3JvdXAnO1xuXG50eXBlIEl0ZW1EYXRhID0geyBpZDogc3RyaW5nOyBmb2N1c2FibGU6IGJvb2xlYW47IGFjdGl2ZTogYm9vbGVhbiB9O1xuY29uc3QgW0NvbGxlY3Rpb24sIHVzZUNvbGxlY3Rpb24sIGNyZWF0ZUNvbGxlY3Rpb25TY29wZV0gPSBjcmVhdGVDb2xsZWN0aW9uPFxuICBIVE1MU3BhbkVsZW1lbnQsXG4gIEl0ZW1EYXRhXG4+KEdST1VQX05BTUUpO1xuXG50eXBlIFNjb3BlZFByb3BzPFA+ID0gUCAmIHsgX19zY29wZVJvdmluZ0ZvY3VzR3JvdXA/OiBTY29wZSB9O1xuY29uc3QgW2NyZWF0ZVJvdmluZ0ZvY3VzR3JvdXBDb250ZXh0LCBjcmVhdGVSb3ZpbmdGb2N1c0dyb3VwU2NvcGVdID0gY3JlYXRlQ29udGV4dFNjb3BlKFxuICBHUk9VUF9OQU1FLFxuICBbY3JlYXRlQ29sbGVjdGlvblNjb3BlXVxuKTtcblxudHlwZSBPcmllbnRhdGlvbiA9IFJlYWN0LkFyaWFBdHRyaWJ1dGVzWydhcmlhLW9yaWVudGF0aW9uJ107XG50eXBlIERpcmVjdGlvbiA9ICdsdHInIHwgJ3J0bCc7XG5cbmludGVyZmFjZSBSb3ZpbmdGb2N1c0dyb3VwT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgb3JpZW50YXRpb24gb2YgdGhlIGdyb3VwLlxuICAgKiBNYWlubHkgc28gYXJyb3cgbmF2aWdhdGlvbiBpcyBkb25lIGFjY29yZGluZ2x5IChsZWZ0ICYgcmlnaHQgdnMuIHVwICYgZG93bilcbiAgICovXG4gIG9yaWVudGF0aW9uPzogT3JpZW50YXRpb247XG4gIC8qKlxuICAgKiBUaGUgZGlyZWN0aW9uIG9mIG5hdmlnYXRpb24gYmV0d2VlbiBpdGVtcy5cbiAgICovXG4gIGRpcj86IERpcmVjdGlvbjtcbiAgLyoqXG4gICAqIFdoZXRoZXIga2V5Ym9hcmQgbmF2aWdhdGlvbiBzaG91bGQgbG9vcCBhcm91bmRcbiAgICogQGRlZmF1bHRWYWx1ZSBmYWxzZVxuICAgKi9cbiAgbG9vcD86IGJvb2xlYW47XG59XG5cbnR5cGUgUm92aW5nQ29udGV4dFZhbHVlID0gUm92aW5nRm9jdXNHcm91cE9wdGlvbnMgJiB7XG4gIGN1cnJlbnRUYWJTdG9wSWQ6IHN0cmluZyB8IG51bGw7XG4gIG9uSXRlbUZvY3VzKHRhYlN0b3BJZDogc3RyaW5nKTogdm9pZDtcbiAgb25JdGVtU2hpZnRUYWIoKTogdm9pZDtcbiAgb25Gb2N1c2FibGVJdGVtQWRkKCk6IHZvaWQ7XG4gIG9uRm9jdXNhYmxlSXRlbVJlbW92ZSgpOiB2b2lkO1xufTtcblxuY29uc3QgW1JvdmluZ0ZvY3VzUHJvdmlkZXIsIHVzZVJvdmluZ0ZvY3VzQ29udGV4dF0gPVxuICBjcmVhdGVSb3ZpbmdGb2N1c0dyb3VwQ29udGV4dDxSb3ZpbmdDb250ZXh0VmFsdWU+KEdST1VQX05BTUUpO1xuXG50eXBlIFJvdmluZ0ZvY3VzR3JvdXBFbGVtZW50ID0gUm92aW5nRm9jdXNHcm91cEltcGxFbGVtZW50O1xuaW50ZXJmYWNlIFJvdmluZ0ZvY3VzR3JvdXBQcm9wcyBleHRlbmRzIFJvdmluZ0ZvY3VzR3JvdXBJbXBsUHJvcHMge31cblxuY29uc3QgUm92aW5nRm9jdXNHcm91cCA9IFJlYWN0LmZvcndhcmRSZWY8Um92aW5nRm9jdXNHcm91cEVsZW1lbnQsIFJvdmluZ0ZvY3VzR3JvdXBQcm9wcz4oXG4gIChwcm9wczogU2NvcGVkUHJvcHM8Um92aW5nRm9jdXNHcm91cFByb3BzPiwgZm9yd2FyZGVkUmVmKSA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxDb2xsZWN0aW9uLlByb3ZpZGVyIHNjb3BlPXtwcm9wcy5fX3Njb3BlUm92aW5nRm9jdXNHcm91cH0+XG4gICAgICAgIDxDb2xsZWN0aW9uLlNsb3Qgc2NvcGU9e3Byb3BzLl9fc2NvcGVSb3ZpbmdGb2N1c0dyb3VwfT5cbiAgICAgICAgICA8Um92aW5nRm9jdXNHcm91cEltcGwgey4uLnByb3BzfSByZWY9e2ZvcndhcmRlZFJlZn0gLz5cbiAgICAgICAgPC9Db2xsZWN0aW9uLlNsb3Q+XG4gICAgICA8L0NvbGxlY3Rpb24uUHJvdmlkZXI+XG4gICAgKTtcbiAgfVxuKTtcblxuUm92aW5nRm9jdXNHcm91cC5kaXNwbGF5TmFtZSA9IEdST1VQX05BTUU7XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxudHlwZSBSb3ZpbmdGb2N1c0dyb3VwSW1wbEVsZW1lbnQgPSBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBQcmltaXRpdmUuZGl2PjtcbnR5cGUgUHJpbWl0aXZlRGl2UHJvcHMgPSBSZWFjdC5Db21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIFByaW1pdGl2ZS5kaXY+O1xuaW50ZXJmYWNlIFJvdmluZ0ZvY3VzR3JvdXBJbXBsUHJvcHNcbiAgZXh0ZW5kcyBPbWl0PFByaW1pdGl2ZURpdlByb3BzLCAnZGlyJz4sXG4gICAgUm92aW5nRm9jdXNHcm91cE9wdGlvbnMge1xuICBjdXJyZW50VGFiU3RvcElkPzogc3RyaW5nIHwgbnVsbDtcbiAgZGVmYXVsdEN1cnJlbnRUYWJTdG9wSWQ/OiBzdHJpbmc7XG4gIG9uQ3VycmVudFRhYlN0b3BJZENoYW5nZT86ICh0YWJTdG9wSWQ6IHN0cmluZyB8IG51bGwpID0+IHZvaWQ7XG4gIG9uRW50cnlGb2N1cz86IChldmVudDogRXZlbnQpID0+IHZvaWQ7XG4gIHByZXZlbnRTY3JvbGxPbkVudHJ5Rm9jdXM/OiBib29sZWFuO1xufVxuXG5jb25zdCBSb3ZpbmdGb2N1c0dyb3VwSW1wbCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFJvdmluZ0ZvY3VzR3JvdXBJbXBsRWxlbWVudCxcbiAgUm92aW5nRm9jdXNHcm91cEltcGxQcm9wc1xuPigocHJvcHM6IFNjb3BlZFByb3BzPFJvdmluZ0ZvY3VzR3JvdXBJbXBsUHJvcHM+LCBmb3J3YXJkZWRSZWYpID0+IHtcbiAgY29uc3Qge1xuICAgIF9fc2NvcGVSb3ZpbmdGb2N1c0dyb3VwLFxuICAgIG9yaWVudGF0aW9uLFxuICAgIGxvb3AgPSBmYWxzZSxcbiAgICBkaXIsXG4gICAgY3VycmVudFRhYlN0b3BJZDogY3VycmVudFRhYlN0b3BJZFByb3AsXG4gICAgZGVmYXVsdEN1cnJlbnRUYWJTdG9wSWQsXG4gICAgb25DdXJyZW50VGFiU3RvcElkQ2hhbmdlLFxuICAgIG9uRW50cnlGb2N1cyxcbiAgICBwcmV2ZW50U2Nyb2xsT25FbnRyeUZvY3VzID0gZmFsc2UsXG4gICAgLi4uZ3JvdXBQcm9wc1xuICB9ID0gcHJvcHM7XG4gIGNvbnN0IHJlZiA9IFJlYWN0LnVzZVJlZjxSb3ZpbmdGb2N1c0dyb3VwSW1wbEVsZW1lbnQ+KG51bGwpO1xuICBjb25zdCBjb21wb3NlZFJlZnMgPSB1c2VDb21wb3NlZFJlZnMoZm9yd2FyZGVkUmVmLCByZWYpO1xuICBjb25zdCBkaXJlY3Rpb24gPSB1c2VEaXJlY3Rpb24oZGlyKTtcbiAgY29uc3QgW2N1cnJlbnRUYWJTdG9wSWQgPSBudWxsLCBzZXRDdXJyZW50VGFiU3RvcElkXSA9IHVzZUNvbnRyb2xsYWJsZVN0YXRlKHtcbiAgICBwcm9wOiBjdXJyZW50VGFiU3RvcElkUHJvcCxcbiAgICBkZWZhdWx0UHJvcDogZGVmYXVsdEN1cnJlbnRUYWJTdG9wSWQsXG4gICAgb25DaGFuZ2U6IG9uQ3VycmVudFRhYlN0b3BJZENoYW5nZSxcbiAgfSk7XG4gIGNvbnN0IFtpc1RhYmJpbmdCYWNrT3V0LCBzZXRJc1RhYmJpbmdCYWNrT3V0XSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgaGFuZGxlRW50cnlGb2N1cyA9IHVzZUNhbGxiYWNrUmVmKG9uRW50cnlGb2N1cyk7XG4gIGNvbnN0IGdldEl0ZW1zID0gdXNlQ29sbGVjdGlvbihfX3Njb3BlUm92aW5nRm9jdXNHcm91cCk7XG4gIGNvbnN0IGlzQ2xpY2tGb2N1c1JlZiA9IFJlYWN0LnVzZVJlZihmYWxzZSk7XG4gIGNvbnN0IFtmb2N1c2FibGVJdGVtc0NvdW50LCBzZXRGb2N1c2FibGVJdGVtc0NvdW50XSA9IFJlYWN0LnVzZVN0YXRlKDApO1xuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qgbm9kZSA9IHJlZi5jdXJyZW50O1xuICAgIGlmIChub2RlKSB7XG4gICAgICBub2RlLmFkZEV2ZW50TGlzdGVuZXIoRU5UUllfRk9DVVMsIGhhbmRsZUVudHJ5Rm9jdXMpO1xuICAgICAgcmV0dXJuICgpID0+IG5vZGUucmVtb3ZlRXZlbnRMaXN0ZW5lcihFTlRSWV9GT0NVUywgaGFuZGxlRW50cnlGb2N1cyk7XG4gICAgfVxuICB9LCBbaGFuZGxlRW50cnlGb2N1c10pO1xuXG4gIHJldHVybiAoXG4gICAgPFJvdmluZ0ZvY3VzUHJvdmlkZXJcbiAgICAgIHNjb3BlPXtfX3Njb3BlUm92aW5nRm9jdXNHcm91cH1cbiAgICAgIG9yaWVudGF0aW9uPXtvcmllbnRhdGlvbn1cbiAgICAgIGRpcj17ZGlyZWN0aW9ufVxuICAgICAgbG9vcD17bG9vcH1cbiAgICAgIGN1cnJlbnRUYWJTdG9wSWQ9e2N1cnJlbnRUYWJTdG9wSWR9XG4gICAgICBvbkl0ZW1Gb2N1cz17UmVhY3QudXNlQ2FsbGJhY2soXG4gICAgICAgICh0YWJTdG9wSWQpID0+IHNldEN1cnJlbnRUYWJTdG9wSWQodGFiU3RvcElkKSxcbiAgICAgICAgW3NldEN1cnJlbnRUYWJTdG9wSWRdXG4gICAgICApfVxuICAgICAgb25JdGVtU2hpZnRUYWI9e1JlYWN0LnVzZUNhbGxiYWNrKCgpID0+IHNldElzVGFiYmluZ0JhY2tPdXQodHJ1ZSksIFtdKX1cbiAgICAgIG9uRm9jdXNhYmxlSXRlbUFkZD17UmVhY3QudXNlQ2FsbGJhY2soXG4gICAgICAgICgpID0+IHNldEZvY3VzYWJsZUl0ZW1zQ291bnQoKHByZXZDb3VudCkgPT4gcHJldkNvdW50ICsgMSksXG4gICAgICAgIFtdXG4gICAgICApfVxuICAgICAgb25Gb2N1c2FibGVJdGVtUmVtb3ZlPXtSZWFjdC51c2VDYWxsYmFjayhcbiAgICAgICAgKCkgPT4gc2V0Rm9jdXNhYmxlSXRlbXNDb3VudCgocHJldkNvdW50KSA9PiBwcmV2Q291bnQgLSAxKSxcbiAgICAgICAgW11cbiAgICAgICl9XG4gICAgPlxuICAgICAgPFByaW1pdGl2ZS5kaXZcbiAgICAgICAgdGFiSW5kZXg9e2lzVGFiYmluZ0JhY2tPdXQgfHwgZm9jdXNhYmxlSXRlbXNDb3VudCA9PT0gMCA/IC0xIDogMH1cbiAgICAgICAgZGF0YS1vcmllbnRhdGlvbj17b3JpZW50YXRpb259XG4gICAgICAgIHsuLi5ncm91cFByb3BzfVxuICAgICAgICByZWY9e2NvbXBvc2VkUmVmc31cbiAgICAgICAgc3R5bGU9e3sgb3V0bGluZTogJ25vbmUnLCAuLi5wcm9wcy5zdHlsZSB9fVxuICAgICAgICBvbk1vdXNlRG93bj17Y29tcG9zZUV2ZW50SGFuZGxlcnMocHJvcHMub25Nb3VzZURvd24sICgpID0+IHtcbiAgICAgICAgICBpc0NsaWNrRm9jdXNSZWYuY3VycmVudCA9IHRydWU7XG4gICAgICAgIH0pfVxuICAgICAgICBvbkZvY3VzPXtjb21wb3NlRXZlbnRIYW5kbGVycyhwcm9wcy5vbkZvY3VzLCAoZXZlbnQpID0+IHtcbiAgICAgICAgICAvLyBXZSBub3JtYWxseSB3b3VsZG4ndCBuZWVkIHRoaXMgY2hlY2ssIGJlY2F1c2Ugd2UgYWxyZWFkeSBjaGVja1xuICAgICAgICAgIC8vIHRoYXQgdGhlIGZvY3VzIGlzIG9uIHRoZSBjdXJyZW50IHRhcmdldCBhbmQgbm90IGJ1YmJsaW5nIHRvIGl0LlxuICAgICAgICAgIC8vIFdlIGRvIHRoaXMgYmVjYXVzZSBTYWZhcmkgZG9lc24ndCBmb2N1cyBidXR0b25zIHdoZW4gY2xpY2tlZCwgYW5kXG4gICAgICAgICAgLy8gaW5zdGVhZCwgdGhlIHdyYXBwZXIgd2lsbCBnZXQgZm9jdXNlZCBhbmQgbm90IHRocm91Z2ggYSBidWJibGluZyBldmVudC5cbiAgICAgICAgICBjb25zdCBpc0tleWJvYXJkRm9jdXMgPSAhaXNDbGlja0ZvY3VzUmVmLmN1cnJlbnQ7XG5cbiAgICAgICAgICBpZiAoZXZlbnQudGFyZ2V0ID09PSBldmVudC5jdXJyZW50VGFyZ2V0ICYmIGlzS2V5Ym9hcmRGb2N1cyAmJiAhaXNUYWJiaW5nQmFja091dCkge1xuICAgICAgICAgICAgY29uc3QgZW50cnlGb2N1c0V2ZW50ID0gbmV3IEN1c3RvbUV2ZW50KEVOVFJZX0ZPQ1VTLCBFVkVOVF9PUFRJT05TKTtcbiAgICAgICAgICAgIGV2ZW50LmN1cnJlbnRUYXJnZXQuZGlzcGF0Y2hFdmVudChlbnRyeUZvY3VzRXZlbnQpO1xuXG4gICAgICAgICAgICBpZiAoIWVudHJ5Rm9jdXNFdmVudC5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGl0ZW1zID0gZ2V0SXRlbXMoKS5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0uZm9jdXNhYmxlKTtcbiAgICAgICAgICAgICAgY29uc3QgYWN0aXZlSXRlbSA9IGl0ZW1zLmZpbmQoKGl0ZW0pID0+IGl0ZW0uYWN0aXZlKTtcbiAgICAgICAgICAgICAgY29uc3QgY3VycmVudEl0ZW0gPSBpdGVtcy5maW5kKChpdGVtKSA9PiBpdGVtLmlkID09PSBjdXJyZW50VGFiU3RvcElkKTtcbiAgICAgICAgICAgICAgY29uc3QgY2FuZGlkYXRlSXRlbXMgPSBbYWN0aXZlSXRlbSwgY3VycmVudEl0ZW0sIC4uLml0ZW1zXS5maWx0ZXIoXG4gICAgICAgICAgICAgICAgQm9vbGVhblxuICAgICAgICAgICAgICApIGFzIHR5cGVvZiBpdGVtcztcbiAgICAgICAgICAgICAgY29uc3QgY2FuZGlkYXRlTm9kZXMgPSBjYW5kaWRhdGVJdGVtcy5tYXAoKGl0ZW0pID0+IGl0ZW0ucmVmLmN1cnJlbnQhKTtcbiAgICAgICAgICAgICAgZm9jdXNGaXJzdChjYW5kaWRhdGVOb2RlcywgcHJldmVudFNjcm9sbE9uRW50cnlGb2N1cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaXNDbGlja0ZvY3VzUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgfSl9XG4gICAgICAgIG9uQmx1cj17Y29tcG9zZUV2ZW50SGFuZGxlcnMocHJvcHMub25CbHVyLCAoKSA9PiBzZXRJc1RhYmJpbmdCYWNrT3V0KGZhbHNlKSl9XG4gICAgICAvPlxuICAgIDwvUm92aW5nRm9jdXNQcm92aWRlcj5cbiAgKTtcbn0pO1xuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBSb3ZpbmdGb2N1c0dyb3VwSXRlbVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG5jb25zdCBJVEVNX05BTUUgPSAnUm92aW5nRm9jdXNHcm91cEl0ZW0nO1xuXG50eXBlIFJvdmluZ0ZvY3VzSXRlbUVsZW1lbnQgPSBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBQcmltaXRpdmUuc3Bhbj47XG50eXBlIFByaW1pdGl2ZVNwYW5Qcm9wcyA9IFJlYWN0LkNvbXBvbmVudFByb3BzV2l0aG91dFJlZjx0eXBlb2YgUHJpbWl0aXZlLnNwYW4+O1xuaW50ZXJmYWNlIFJvdmluZ0ZvY3VzSXRlbVByb3BzIGV4dGVuZHMgUHJpbWl0aXZlU3BhblByb3BzIHtcbiAgdGFiU3RvcElkPzogc3RyaW5nO1xuICBmb2N1c2FibGU/OiBib29sZWFuO1xuICBhY3RpdmU/OiBib29sZWFuO1xufVxuXG5jb25zdCBSb3ZpbmdGb2N1c0dyb3VwSXRlbSA9IFJlYWN0LmZvcndhcmRSZWY8Um92aW5nRm9jdXNJdGVtRWxlbWVudCwgUm92aW5nRm9jdXNJdGVtUHJvcHM+KFxuICAocHJvcHM6IFNjb3BlZFByb3BzPFJvdmluZ0ZvY3VzSXRlbVByb3BzPiwgZm9yd2FyZGVkUmVmKSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgX19zY29wZVJvdmluZ0ZvY3VzR3JvdXAsXG4gICAgICBmb2N1c2FibGUgPSB0cnVlLFxuICAgICAgYWN0aXZlID0gZmFsc2UsXG4gICAgICB0YWJTdG9wSWQsXG4gICAgICAuLi5pdGVtUHJvcHNcbiAgICB9ID0gcHJvcHM7XG4gICAgY29uc3QgYXV0b0lkID0gdXNlSWQoKTtcbiAgICBjb25zdCBpZCA9IHRhYlN0b3BJZCB8fCBhdXRvSWQ7XG4gICAgY29uc3QgY29udGV4dCA9IHVzZVJvdmluZ0ZvY3VzQ29udGV4dChJVEVNX05BTUUsIF9fc2NvcGVSb3ZpbmdGb2N1c0dyb3VwKTtcbiAgICBjb25zdCBpc0N1cnJlbnRUYWJTdG9wID0gY29udGV4dC5jdXJyZW50VGFiU3RvcElkID09PSBpZDtcbiAgICBjb25zdCBnZXRJdGVtcyA9IHVzZUNvbGxlY3Rpb24oX19zY29wZVJvdmluZ0ZvY3VzR3JvdXApO1xuXG4gICAgY29uc3QgeyBvbkZvY3VzYWJsZUl0ZW1BZGQsIG9uRm9jdXNhYmxlSXRlbVJlbW92ZSB9ID0gY29udGV4dDtcblxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAoZm9jdXNhYmxlKSB7XG4gICAgICAgIG9uRm9jdXNhYmxlSXRlbUFkZCgpO1xuICAgICAgICByZXR1cm4gKCkgPT4gb25Gb2N1c2FibGVJdGVtUmVtb3ZlKCk7XG4gICAgICB9XG4gICAgfSwgW2ZvY3VzYWJsZSwgb25Gb2N1c2FibGVJdGVtQWRkLCBvbkZvY3VzYWJsZUl0ZW1SZW1vdmVdKTtcblxuICAgIHJldHVybiAoXG4gICAgICA8Q29sbGVjdGlvbi5JdGVtU2xvdFxuICAgICAgICBzY29wZT17X19zY29wZVJvdmluZ0ZvY3VzR3JvdXB9XG4gICAgICAgIGlkPXtpZH1cbiAgICAgICAgZm9jdXNhYmxlPXtmb2N1c2FibGV9XG4gICAgICAgIGFjdGl2ZT17YWN0aXZlfVxuICAgICAgPlxuICAgICAgICA8UHJpbWl0aXZlLnNwYW5cbiAgICAgICAgICB0YWJJbmRleD17aXNDdXJyZW50VGFiU3RvcCA/IDAgOiAtMX1cbiAgICAgICAgICBkYXRhLW9yaWVudGF0aW9uPXtjb250ZXh0Lm9yaWVudGF0aW9ufVxuICAgICAgICAgIHsuLi5pdGVtUHJvcHN9XG4gICAgICAgICAgcmVmPXtmb3J3YXJkZWRSZWZ9XG4gICAgICAgICAgb25Nb3VzZURvd249e2NvbXBvc2VFdmVudEhhbmRsZXJzKHByb3BzLm9uTW91c2VEb3duLCAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgIC8vIFdlIHByZXZlbnQgZm9jdXNpbmcgbm9uLWZvY3VzYWJsZSBpdGVtcyBvbiBgbW91c2Vkb3duYC5cbiAgICAgICAgICAgIC8vIEV2ZW4gdGhvdWdoIHRoZSBpdGVtIGhhcyB0YWJJbmRleD17LTF9LCB0aGF0IG9ubHkgbWVhbnMgdGFrZSBpdCBvdXQgb2YgdGhlIHRhYiBvcmRlci5cbiAgICAgICAgICAgIGlmICghZm9jdXNhYmxlKSBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgLy8gU2FmYXJpIGRvZXNuJ3QgZm9jdXMgYSBidXR0b24gd2hlbiBjbGlja2VkIHNvIHdlIHJ1biBvdXIgbG9naWMgb24gbW91c2Vkb3duIGFsc29cbiAgICAgICAgICAgIGVsc2UgY29udGV4dC5vbkl0ZW1Gb2N1cyhpZCk7XG4gICAgICAgICAgfSl9XG4gICAgICAgICAgb25Gb2N1cz17Y29tcG9zZUV2ZW50SGFuZGxlcnMocHJvcHMub25Gb2N1cywgKCkgPT4gY29udGV4dC5vbkl0ZW1Gb2N1cyhpZCkpfVxuICAgICAgICAgIG9uS2V5RG93bj17Y29tcG9zZUV2ZW50SGFuZGxlcnMocHJvcHMub25LZXlEb3duLCAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgIGlmIChldmVudC5rZXkgPT09ICdUYWInICYmIGV2ZW50LnNoaWZ0S2V5KSB7XG4gICAgICAgICAgICAgIGNvbnRleHQub25JdGVtU2hpZnRUYWIoKTtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZXZlbnQudGFyZ2V0ICE9PSBldmVudC5jdXJyZW50VGFyZ2V0KSByZXR1cm47XG5cbiAgICAgICAgICAgIGNvbnN0IGZvY3VzSW50ZW50ID0gZ2V0Rm9jdXNJbnRlbnQoZXZlbnQsIGNvbnRleHQub3JpZW50YXRpb24sIGNvbnRleHQuZGlyKTtcblxuICAgICAgICAgICAgaWYgKGZvY3VzSW50ZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgaWYgKGV2ZW50Lm1ldGFLZXkgfHwgZXZlbnQuY3RybEtleSB8fCBldmVudC5hbHRLZXkgfHwgZXZlbnQuc2hpZnRLZXkpIHJldHVybjtcbiAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgY29uc3QgaXRlbXMgPSBnZXRJdGVtcygpLmZpbHRlcigoaXRlbSkgPT4gaXRlbS5mb2N1c2FibGUpO1xuICAgICAgICAgICAgICBsZXQgY2FuZGlkYXRlTm9kZXMgPSBpdGVtcy5tYXAoKGl0ZW0pID0+IGl0ZW0ucmVmLmN1cnJlbnQhKTtcblxuICAgICAgICAgICAgICBpZiAoZm9jdXNJbnRlbnQgPT09ICdsYXN0JykgY2FuZGlkYXRlTm9kZXMucmV2ZXJzZSgpO1xuICAgICAgICAgICAgICBlbHNlIGlmIChmb2N1c0ludGVudCA9PT0gJ3ByZXYnIHx8IGZvY3VzSW50ZW50ID09PSAnbmV4dCcpIHtcbiAgICAgICAgICAgICAgICBpZiAoZm9jdXNJbnRlbnQgPT09ICdwcmV2JykgY2FuZGlkYXRlTm9kZXMucmV2ZXJzZSgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IGNhbmRpZGF0ZU5vZGVzLmluZGV4T2YoZXZlbnQuY3VycmVudFRhcmdldCk7XG4gICAgICAgICAgICAgICAgY2FuZGlkYXRlTm9kZXMgPSBjb250ZXh0Lmxvb3BcbiAgICAgICAgICAgICAgICAgID8gd3JhcEFycmF5KGNhbmRpZGF0ZU5vZGVzLCBjdXJyZW50SW5kZXggKyAxKVxuICAgICAgICAgICAgICAgICAgOiBjYW5kaWRhdGVOb2Rlcy5zbGljZShjdXJyZW50SW5kZXggKyAxKTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgKiBJbXBlcmF0aXZlIGZvY3VzIGR1cmluZyBrZXlkb3duIGlzIHJpc2t5IHNvIHdlIHByZXZlbnQgUmVhY3QncyBiYXRjaGluZyB1cGRhdGVzXG4gICAgICAgICAgICAgICAqIHRvIGF2b2lkIHBvdGVudGlhbCBidWdzLiBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvMjAzMzJcbiAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gZm9jdXNGaXJzdChjYW5kaWRhdGVOb2RlcykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pfVxuICAgICAgICAvPlxuICAgICAgPC9Db2xsZWN0aW9uLkl0ZW1TbG90PlxuICAgICk7XG4gIH1cbik7XG5cblJvdmluZ0ZvY3VzR3JvdXBJdGVtLmRpc3BsYXlOYW1lID0gSVRFTV9OQU1FO1xuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbi8vIHByZXR0aWVyLWlnbm9yZVxuY29uc3QgTUFQX0tFWV9UT19GT0NVU19JTlRFTlQ6IFJlY29yZDxzdHJpbmcsIEZvY3VzSW50ZW50PiA9IHtcbiAgQXJyb3dMZWZ0OiAncHJldicsIEFycm93VXA6ICdwcmV2JyxcbiAgQXJyb3dSaWdodDogJ25leHQnLCBBcnJvd0Rvd246ICduZXh0JyxcbiAgUGFnZVVwOiAnZmlyc3QnLCBIb21lOiAnZmlyc3QnLFxuICBQYWdlRG93bjogJ2xhc3QnLCBFbmQ6ICdsYXN0Jyxcbn07XG5cbmZ1bmN0aW9uIGdldERpcmVjdGlvbkF3YXJlS2V5KGtleTogc3RyaW5nLCBkaXI/OiBEaXJlY3Rpb24pIHtcbiAgaWYgKGRpciAhPT0gJ3J0bCcpIHJldHVybiBrZXk7XG4gIHJldHVybiBrZXkgPT09ICdBcnJvd0xlZnQnID8gJ0Fycm93UmlnaHQnIDoga2V5ID09PSAnQXJyb3dSaWdodCcgPyAnQXJyb3dMZWZ0JyA6IGtleTtcbn1cblxudHlwZSBGb2N1c0ludGVudCA9ICdmaXJzdCcgfCAnbGFzdCcgfCAncHJldicgfCAnbmV4dCc7XG5cbmZ1bmN0aW9uIGdldEZvY3VzSW50ZW50KGV2ZW50OiBSZWFjdC5LZXlib2FyZEV2ZW50LCBvcmllbnRhdGlvbj86IE9yaWVudGF0aW9uLCBkaXI/OiBEaXJlY3Rpb24pIHtcbiAgY29uc3Qga2V5ID0gZ2V0RGlyZWN0aW9uQXdhcmVLZXkoZXZlbnQua2V5LCBkaXIpO1xuICBpZiAob3JpZW50YXRpb24gPT09ICd2ZXJ0aWNhbCcgJiYgWydBcnJvd0xlZnQnLCAnQXJyb3dSaWdodCddLmluY2x1ZGVzKGtleSkpIHJldHVybiB1bmRlZmluZWQ7XG4gIGlmIChvcmllbnRhdGlvbiA9PT0gJ2hvcml6b250YWwnICYmIFsnQXJyb3dVcCcsICdBcnJvd0Rvd24nXS5pbmNsdWRlcyhrZXkpKSByZXR1cm4gdW5kZWZpbmVkO1xuICByZXR1cm4gTUFQX0tFWV9UT19GT0NVU19JTlRFTlRba2V5XTtcbn1cblxuZnVuY3Rpb24gZm9jdXNGaXJzdChjYW5kaWRhdGVzOiBIVE1MRWxlbWVudFtdLCBwcmV2ZW50U2Nyb2xsID0gZmFsc2UpIHtcbiAgY29uc3QgUFJFVklPVVNMWV9GT0NVU0VEX0VMRU1FTlQgPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50O1xuICBmb3IgKGNvbnN0IGNhbmRpZGF0ZSBvZiBjYW5kaWRhdGVzKSB7XG4gICAgLy8gaWYgZm9jdXMgaXMgYWxyZWFkeSB3aGVyZSB3ZSB3YW50IHRvIGdvLCB3ZSBkb24ndCB3YW50IHRvIGtlZXAgZ29pbmcgdGhyb3VnaCB0aGUgY2FuZGlkYXRlc1xuICAgIGlmIChjYW5kaWRhdGUgPT09IFBSRVZJT1VTTFlfRk9DVVNFRF9FTEVNRU5UKSByZXR1cm47XG4gICAgY2FuZGlkYXRlLmZvY3VzKHsgcHJldmVudFNjcm9sbCB9KTtcbiAgICBpZiAoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCAhPT0gUFJFVklPVVNMWV9GT0NVU0VEX0VMRU1FTlQpIHJldHVybjtcbiAgfVxufVxuXG4vKipcbiAqIFdyYXBzIGFuIGFycmF5IGFyb3VuZCBpdHNlbGYgYXQgYSBnaXZlbiBzdGFydCBpbmRleFxuICogRXhhbXBsZTogYHdyYXBBcnJheShbJ2EnLCAnYicsICdjJywgJ2QnXSwgMikgPT09IFsnYycsICdkJywgJ2EnLCAnYiddYFxuICovXG5mdW5jdGlvbiB3cmFwQXJyYXk8VD4oYXJyYXk6IFRbXSwgc3RhcnRJbmRleDogbnVtYmVyKSB7XG4gIHJldHVybiBhcnJheS5tYXAoKF8sIGluZGV4KSA9PiBhcnJheVsoc3RhcnRJbmRleCArIGluZGV4KSAlIGFycmF5Lmxlbmd0aF0pO1xufVxuXG5jb25zdCBSb290ID0gUm92aW5nRm9jdXNHcm91cDtcbmNvbnN0IEl0ZW0gPSBSb3ZpbmdGb2N1c0dyb3VwSXRlbTtcblxuZXhwb3J0IHtcbiAgY3JlYXRlUm92aW5nRm9jdXNHcm91cFNjb3BlLFxuICAvL1xuICBSb3ZpbmdGb2N1c0dyb3VwLFxuICBSb3ZpbmdGb2N1c0dyb3VwSXRlbSxcbiAgLy9cbiAgUm9vdCxcbiAgSXRlbSxcbn07XG5leHBvcnQgdHlwZSB7IFJvdmluZ0ZvY3VzR3JvdXBQcm9wcywgUm92aW5nRm9jdXNJdGVtUHJvcHMgfTtcbiJdLCJuYW1lcyI6WyJSZWFjdCIsImNvbXBvc2VFdmVudEhhbmRsZXJzIiwiY3JlYXRlQ29sbGVjdGlvbiIsInVzZUNvbXBvc2VkUmVmcyIsImNyZWF0ZUNvbnRleHRTY29wZSIsInVzZUlkIiwiUHJpbWl0aXZlIiwidXNlQ2FsbGJhY2tSZWYiLCJ1c2VDb250cm9sbGFibGVTdGF0ZSIsInVzZURpcmVjdGlvbiIsImpzeCIsIkVOVFJZX0ZPQ1VTIiwiRVZFTlRfT1BUSU9OUyIsImJ1YmJsZXMiLCJjYW5jZWxhYmxlIiwiR1JPVVBfTkFNRSIsIkNvbGxlY3Rpb24iLCJ1c2VDb2xsZWN0aW9uIiwiY3JlYXRlQ29sbGVjdGlvblNjb3BlIiwiY3JlYXRlUm92aW5nRm9jdXNHcm91cENvbnRleHQiLCJjcmVhdGVSb3ZpbmdGb2N1c0dyb3VwU2NvcGUiLCJSb3ZpbmdGb2N1c1Byb3ZpZGVyIiwidXNlUm92aW5nRm9jdXNDb250ZXh0IiwiUm92aW5nRm9jdXNHcm91cCIsImZvcndhcmRSZWYiLCJwcm9wcyIsImZvcndhcmRlZFJlZiIsIlByb3ZpZGVyIiwic2NvcGUiLCJfX3Njb3BlUm92aW5nRm9jdXNHcm91cCIsImNoaWxkcmVuIiwiU2xvdCIsIlJvdmluZ0ZvY3VzR3JvdXBJbXBsIiwicmVmIiwiZGlzcGxheU5hbWUiLCJvcmllbnRhdGlvbiIsImxvb3AiLCJkaXIiLCJjdXJyZW50VGFiU3RvcElkIiwiY3VycmVudFRhYlN0b3BJZFByb3AiLCJkZWZhdWx0Q3VycmVudFRhYlN0b3BJZCIsIm9uQ3VycmVudFRhYlN0b3BJZENoYW5nZSIsIm9uRW50cnlGb2N1cyIsInByZXZlbnRTY3JvbGxPbkVudHJ5Rm9jdXMiLCJncm91cFByb3BzIiwidXNlUmVmIiwiY29tcG9zZWRSZWZzIiwiZGlyZWN0aW9uIiwic2V0Q3VycmVudFRhYlN0b3BJZCIsInByb3AiLCJkZWZhdWx0UHJvcCIsIm9uQ2hhbmdlIiwiaXNUYWJiaW5nQmFja091dCIsInNldElzVGFiYmluZ0JhY2tPdXQiLCJ1c2VTdGF0ZSIsImhhbmRsZUVudHJ5Rm9jdXMiLCJnZXRJdGVtcyIsImlzQ2xpY2tGb2N1c1JlZiIsImZvY3VzYWJsZUl0ZW1zQ291bnQiLCJzZXRGb2N1c2FibGVJdGVtc0NvdW50IiwidXNlRWZmZWN0Iiwibm9kZSIsImN1cnJlbnQiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsIm9uSXRlbUZvY3VzIiwidXNlQ2FsbGJhY2siLCJ0YWJTdG9wSWQiLCJvbkl0ZW1TaGlmdFRhYiIsIm9uRm9jdXNhYmxlSXRlbUFkZCIsInByZXZDb3VudCIsIm9uRm9jdXNhYmxlSXRlbVJlbW92ZSIsImRpdiIsInRhYkluZGV4Iiwic3R5bGUiLCJvdXRsaW5lIiwib25Nb3VzZURvd24iLCJvbkZvY3VzIiwiZXZlbnQiLCJpc0tleWJvYXJkRm9jdXMiLCJ0YXJnZXQiLCJjdXJyZW50VGFyZ2V0IiwiZW50cnlGb2N1c0V2ZW50IiwiQ3VzdG9tRXZlbnQiLCJkaXNwYXRjaEV2ZW50IiwiZGVmYXVsdFByZXZlbnRlZCIsIml0ZW1zIiwiZmlsdGVyIiwiaXRlbSIsImZvY3VzYWJsZSIsImFjdGl2ZUl0ZW0iLCJmaW5kIiwiYWN0aXZlIiwiY3VycmVudEl0ZW0iLCJpZCIsImNhbmRpZGF0ZUl0ZW1zIiwiQm9vbGVhbiIsImNhbmRpZGF0ZU5vZGVzIiwibWFwIiwiZm9jdXNGaXJzdCIsIm9uQmx1ciIsIklURU1fTkFNRSIsIlJvdmluZ0ZvY3VzR3JvdXBJdGVtIiwiaXRlbVByb3BzIiwiYXV0b0lkIiwiY29udGV4dCIsImlzQ3VycmVudFRhYlN0b3AiLCJJdGVtU2xvdCIsInNwYW4iLCJwcmV2ZW50RGVmYXVsdCIsIm9uS2V5RG93biIsImtleSIsInNoaWZ0S2V5IiwiZm9jdXNJbnRlbnQiLCJnZXRGb2N1c0ludGVudCIsIm1ldGFLZXkiLCJjdHJsS2V5IiwiYWx0S2V5IiwicmV2ZXJzZSIsImN1cnJlbnRJbmRleCIsImluZGV4T2YiLCJ3cmFwQXJyYXkiLCJzbGljZSIsInNldFRpbWVvdXQiLCJNQVBfS0VZX1RPX0ZPQ1VTX0lOVEVOVCIsIkFycm93TGVmdCIsIkFycm93VXAiLCJBcnJvd1JpZ2h0IiwiQXJyb3dEb3duIiwiUGFnZVVwIiwiSG9tZSIsIlBhZ2VEb3duIiwiRW5kIiwiZ2V0RGlyZWN0aW9uQXdhcmVLZXkiLCJpbmNsdWRlcyIsImNhbmRpZGF0ZXMiLCJwcmV2ZW50U2Nyb2xsIiwiUFJFVklPVVNMWV9GT0NVU0VEX0VMRU1FTlQiLCJkb2N1bWVudCIsImFjdGl2ZUVsZW1lbnQiLCJjYW5kaWRhdGUiLCJmb2N1cyIsImFycmF5Iiwic3RhcnRJbmRleCIsIl8iLCJpbmRleCIsImxlbmd0aCIsIlJvb3QiLCJJdGVtIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/@radix-ui/react-roving-focus/dist/index.mjs\n"); /***/ }), /***/ "(ssr)/./node_modules/@radix-ui/react-scroll-area/dist/index.mjs": /*!*****************************************************************!*\ !*** ./node_modules/@radix-ui/react-scroll-area/dist/index.mjs ***! \*****************************************************************/ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Corner: () => (/* binding */ Corner),\n/* harmony export */ Root: () => (/* binding */ Root),\n/* harmony export */ ScrollArea: () => (/* binding */ ScrollArea),\n/* harmony export */ ScrollAreaCorner: () => (/* binding */ ScrollAreaCorner),\n/* harmony export */ ScrollAreaScrollbar: () => (/* binding */ ScrollAreaScrollbar),\n/* harmony export */ ScrollAreaThumb: () => (/* binding */ ScrollAreaThumb),\n/* harmony export */ ScrollAreaViewport: () => (/* binding */ ScrollAreaViewport),\n/* harmony export */ Scrollbar: () => (/* binding */ Scrollbar),\n/* harmony export */ Thumb: () => (/* binding */ Thumb),\n/* harmony export */ Viewport: () => (/* binding */ Viewport),\n/* harmony export */ createScrollAreaScope: () => (/* binding */ createScrollAreaScope)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var _radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @radix-ui/react-primitive */ \"(ssr)/./node_modules/@radix-ui/react-primitive/dist/index.mjs\");\n/* harmony import */ var _radix_ui_react_presence__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @radix-ui/react-presence */ \"(ssr)/./node_modules/@radix-ui/react-presence/dist/index.mjs\");\n/* harmony import */ var _radix_ui_react_context__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @radix-ui/react-context */ \"(ssr)/./node_modules/@radix-ui/react-context/dist/index.mjs\");\n/* harmony import */ var _radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @radix-ui/react-compose-refs */ \"(ssr)/./node_modules/@radix-ui/react-compose-refs/dist/index.mjs\");\n/* harmony import */ var _radix_ui_react_use_callback_ref__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @radix-ui/react-use-callback-ref */ \"(ssr)/./node_modules/@radix-ui/react-use-callback-ref/dist/index.mjs\");\n/* harmony import */ var _radix_ui_react_direction__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @radix-ui/react-direction */ \"(ssr)/./node_modules/@radix-ui/react-direction/dist/index.mjs\");\n/* harmony import */ var _radix_ui_react_use_layout_effect__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @radix-ui/react-use-layout-effect */ \"(ssr)/./node_modules/@radix-ui/react-use-layout-effect/dist/index.mjs\");\n/* harmony import */ var _radix_ui_number__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @radix-ui/number */ \"(ssr)/./node_modules/@radix-ui/number/dist/index.mjs\");\n/* harmony import */ var _radix_ui_primitive__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @radix-ui/primitive */ \"(ssr)/./node_modules/@radix-ui/primitive/dist/index.mjs\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react-jsx-runtime.js\");\n/* __next_internal_client_entry_do_not_use__ Corner,Root,ScrollArea,ScrollAreaCorner,ScrollAreaScrollbar,ScrollAreaThumb,ScrollAreaViewport,Scrollbar,Thumb,Viewport,createScrollAreaScope auto */ // packages/react/scroll-area/src/ScrollArea.tsx\n\n\n\n\n\n\n\n\n\n\n// packages/react/scroll-area/src/useStateMachine.ts\n\nfunction useStateMachine(initialState, machine) {\n return react__WEBPACK_IMPORTED_MODULE_0__.useReducer((state, event)=>{\n const nextState = machine[state][event];\n return nextState ?? state;\n }, initialState);\n}\n// packages/react/scroll-area/src/ScrollArea.tsx\n\nvar SCROLL_AREA_NAME = \"ScrollArea\";\nvar [createScrollAreaContext, createScrollAreaScope] = (0,_radix_ui_react_context__WEBPACK_IMPORTED_MODULE_2__.createContextScope)(SCROLL_AREA_NAME);\nvar [ScrollAreaProvider, useScrollAreaContext] = createScrollAreaContext(SCROLL_AREA_NAME);\nvar ScrollArea = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef((props, forwardedRef)=>{\n const { __scopeScrollArea, type = \"hover\", dir, scrollHideDelay = 600, ...scrollAreaProps } = props;\n const [scrollArea, setScrollArea] = react__WEBPACK_IMPORTED_MODULE_0__.useState(null);\n const [viewport, setViewport] = react__WEBPACK_IMPORTED_MODULE_0__.useState(null);\n const [content, setContent] = react__WEBPACK_IMPORTED_MODULE_0__.useState(null);\n const [scrollbarX, setScrollbarX] = react__WEBPACK_IMPORTED_MODULE_0__.useState(null);\n const [scrollbarY, setScrollbarY] = react__WEBPACK_IMPORTED_MODULE_0__.useState(null);\n const [cornerWidth, setCornerWidth] = react__WEBPACK_IMPORTED_MODULE_0__.useState(0);\n const [cornerHeight, setCornerHeight] = react__WEBPACK_IMPORTED_MODULE_0__.useState(0);\n const [scrollbarXEnabled, setScrollbarXEnabled] = react__WEBPACK_IMPORTED_MODULE_0__.useState(false);\n const [scrollbarYEnabled, setScrollbarYEnabled] = react__WEBPACK_IMPORTED_MODULE_0__.useState(false);\n const composedRefs = (0,_radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_3__.useComposedRefs)(forwardedRef, (node)=>setScrollArea(node));\n const direction = (0,_radix_ui_react_direction__WEBPACK_IMPORTED_MODULE_4__.useDirection)(dir);\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(ScrollAreaProvider, {\n scope: __scopeScrollArea,\n type,\n dir: direction,\n scrollHideDelay,\n scrollArea,\n viewport,\n onViewportChange: setViewport,\n content,\n onContentChange: setContent,\n scrollbarX,\n onScrollbarXChange: setScrollbarX,\n scrollbarXEnabled,\n onScrollbarXEnabledChange: setScrollbarXEnabled,\n scrollbarY,\n onScrollbarYChange: setScrollbarY,\n scrollbarYEnabled,\n onScrollbarYEnabledChange: setScrollbarYEnabled,\n onCornerWidthChange: setCornerWidth,\n onCornerHeightChange: setCornerHeight,\n children: /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_5__.Primitive.div, {\n dir: direction,\n ...scrollAreaProps,\n ref: composedRefs,\n style: {\n position: \"relative\",\n // Pass corner sizes as CSS vars to reduce re-renders of context consumers\n [\"--radix-scroll-area-corner-width\"]: cornerWidth + \"px\",\n [\"--radix-scroll-area-corner-height\"]: cornerHeight + \"px\",\n ...props.style\n }\n })\n });\n});\nScrollArea.displayName = SCROLL_AREA_NAME;\nvar VIEWPORT_NAME = \"ScrollAreaViewport\";\nvar ScrollAreaViewport = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef((props, forwardedRef)=>{\n const { __scopeScrollArea, children, nonce, ...viewportProps } = props;\n const context = useScrollAreaContext(VIEWPORT_NAME, __scopeScrollArea);\n const ref = react__WEBPACK_IMPORTED_MODULE_0__.useRef(null);\n const composedRefs = (0,_radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_3__.useComposedRefs)(forwardedRef, ref, context.onViewportChange);\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.Fragment, {\n children: [\n /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"style\", {\n dangerouslySetInnerHTML: {\n __html: `[data-radix-scroll-area-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-scroll-area-viewport]::-webkit-scrollbar{display:none}`\n },\n nonce\n }),\n /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_5__.Primitive.div, {\n \"data-radix-scroll-area-viewport\": \"\",\n ...viewportProps,\n ref: composedRefs,\n style: {\n /**\n * We don't support `visible` because the intention is to have at least one scrollbar\n * if this component is used and `visible` will behave like `auto` in that case\n * https://developer.mozilla.org/en-US/docs/Web/CSS/overflow#description\n *\n * We don't handle `auto` because the intention is for the native implementation\n * to be hidden if using this component. We just want to ensure the node is scrollable\n * so could have used either `scroll` or `auto` here. We picked `scroll` to prevent\n * the browser from having to work out whether to render native scrollbars or not,\n * we tell it to with the intention of hiding them in CSS.\n */ overflowX: context.scrollbarXEnabled ? \"scroll\" : \"hidden\",\n overflowY: context.scrollbarYEnabled ? \"scroll\" : \"hidden\",\n ...props.style\n },\n children: /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(\"div\", {\n ref: context.onContentChange,\n style: {\n minWidth: \"100%\",\n display: \"table\"\n },\n children\n })\n })\n ]\n });\n});\nScrollAreaViewport.displayName = VIEWPORT_NAME;\nvar SCROLLBAR_NAME = \"ScrollAreaScrollbar\";\nvar ScrollAreaScrollbar = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef((props, forwardedRef)=>{\n const { forceMount, ...scrollbarProps } = props;\n const context = useScrollAreaContext(SCROLLBAR_NAME, props.__scopeScrollArea);\n const { onScrollbarXEnabledChange, onScrollbarYEnabledChange } = context;\n const isHorizontal = props.orientation === \"horizontal\";\n react__WEBPACK_IMPORTED_MODULE_0__.useEffect(()=>{\n isHorizontal ? onScrollbarXEnabledChange(true) : onScrollbarYEnabledChange(true);\n return ()=>{\n isHorizontal ? onScrollbarXEnabledChange(false) : onScrollbarYEnabledChange(false);\n };\n }, [\n isHorizontal,\n onScrollbarXEnabledChange,\n onScrollbarYEnabledChange\n ]);\n return context.type === \"hover\" ? /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(ScrollAreaScrollbarHover, {\n ...scrollbarProps,\n ref: forwardedRef,\n forceMount\n }) : context.type === \"scroll\" ? /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(ScrollAreaScrollbarScroll, {\n ...scrollbarProps,\n ref: forwardedRef,\n forceMount\n }) : context.type === \"auto\" ? /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(ScrollAreaScrollbarAuto, {\n ...scrollbarProps,\n ref: forwardedRef,\n forceMount\n }) : context.type === \"always\" ? /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(ScrollAreaScrollbarVisible, {\n ...scrollbarProps,\n ref: forwardedRef\n }) : null;\n});\nScrollAreaScrollbar.displayName = SCROLLBAR_NAME;\nvar ScrollAreaScrollbarHover = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef((props, forwardedRef)=>{\n const { forceMount, ...scrollbarProps } = props;\n const context = useScrollAreaContext(SCROLLBAR_NAME, props.__scopeScrollArea);\n const [visible, setVisible] = react__WEBPACK_IMPORTED_MODULE_0__.useState(false);\n react__WEBPACK_IMPORTED_MODULE_0__.useEffect(()=>{\n const scrollArea = context.scrollArea;\n let hideTimer = 0;\n if (scrollArea) {\n const handlePointerEnter = ()=>{\n window.clearTimeout(hideTimer);\n setVisible(true);\n };\n const handlePointerLeave = ()=>{\n hideTimer = window.setTimeout(()=>setVisible(false), context.scrollHideDelay);\n };\n scrollArea.addEventListener(\"pointerenter\", handlePointerEnter);\n scrollArea.addEventListener(\"pointerleave\", handlePointerLeave);\n return ()=>{\n window.clearTimeout(hideTimer);\n scrollArea.removeEventListener(\"pointerenter\", handlePointerEnter);\n scrollArea.removeEventListener(\"pointerleave\", handlePointerLeave);\n };\n }\n }, [\n context.scrollArea,\n context.scrollHideDelay\n ]);\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_radix_ui_react_presence__WEBPACK_IMPORTED_MODULE_6__.Presence, {\n present: forceMount || visible,\n children: /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(ScrollAreaScrollbarAuto, {\n \"data-state\": visible ? \"visible\" : \"hidden\",\n ...scrollbarProps,\n ref: forwardedRef\n })\n });\n});\nvar ScrollAreaScrollbarScroll = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef((props, forwardedRef)=>{\n const { forceMount, ...scrollbarProps } = props;\n const context = useScrollAreaContext(SCROLLBAR_NAME, props.__scopeScrollArea);\n const isHorizontal = props.orientation === \"horizontal\";\n const debounceScrollEnd = useDebounceCallback(()=>send(\"SCROLL_END\"), 100);\n const [state, send] = useStateMachine(\"hidden\", {\n hidden: {\n SCROLL: \"scrolling\"\n },\n scrolling: {\n SCROLL_END: \"idle\",\n POINTER_ENTER: \"interacting\"\n },\n interacting: {\n SCROLL: \"interacting\",\n POINTER_LEAVE: \"idle\"\n },\n idle: {\n HIDE: \"hidden\",\n SCROLL: \"scrolling\",\n POINTER_ENTER: \"interacting\"\n }\n });\n react__WEBPACK_IMPORTED_MODULE_0__.useEffect(()=>{\n if (state === \"idle\") {\n const hideTimer = window.setTimeout(()=>send(\"HIDE\"), context.scrollHideDelay);\n return ()=>window.clearTimeout(hideTimer);\n }\n }, [\n state,\n context.scrollHideDelay,\n send\n ]);\n react__WEBPACK_IMPORTED_MODULE_0__.useEffect(()=>{\n const viewport = context.viewport;\n const scrollDirection = isHorizontal ? \"scrollLeft\" : \"scrollTop\";\n if (viewport) {\n let prevScrollPos = viewport[scrollDirection];\n const handleScroll = ()=>{\n const scrollPos = viewport[scrollDirection];\n const hasScrollInDirectionChanged = prevScrollPos !== scrollPos;\n if (hasScrollInDirectionChanged) {\n send(\"SCROLL\");\n debounceScrollEnd();\n }\n prevScrollPos = scrollPos;\n };\n viewport.addEventListener(\"scroll\", handleScroll);\n return ()=>viewport.removeEventListener(\"scroll\", handleScroll);\n }\n }, [\n context.viewport,\n isHorizontal,\n send,\n debounceScrollEnd\n ]);\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_radix_ui_react_presence__WEBPACK_IMPORTED_MODULE_6__.Presence, {\n present: forceMount || state !== \"hidden\",\n children: /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(ScrollAreaScrollbarVisible, {\n \"data-state\": state === \"hidden\" ? \"hidden\" : \"visible\",\n ...scrollbarProps,\n ref: forwardedRef,\n onPointerEnter: (0,_radix_ui_primitive__WEBPACK_IMPORTED_MODULE_7__.composeEventHandlers)(props.onPointerEnter, ()=>send(\"POINTER_ENTER\")),\n onPointerLeave: (0,_radix_ui_primitive__WEBPACK_IMPORTED_MODULE_7__.composeEventHandlers)(props.onPointerLeave, ()=>send(\"POINTER_LEAVE\"))\n })\n });\n});\nvar ScrollAreaScrollbarAuto = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef((props, forwardedRef)=>{\n const context = useScrollAreaContext(SCROLLBAR_NAME, props.__scopeScrollArea);\n const { forceMount, ...scrollbarProps } = props;\n const [visible, setVisible] = react__WEBPACK_IMPORTED_MODULE_0__.useState(false);\n const isHorizontal = props.orientation === \"horizontal\";\n const handleResize = useDebounceCallback(()=>{\n if (context.viewport) {\n const isOverflowX = context.viewport.offsetWidth < context.viewport.scrollWidth;\n const isOverflowY = context.viewport.offsetHeight < context.viewport.scrollHeight;\n setVisible(isHorizontal ? isOverflowX : isOverflowY);\n }\n }, 10);\n useResizeObserver(context.viewport, handleResize);\n useResizeObserver(context.content, handleResize);\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_radix_ui_react_presence__WEBPACK_IMPORTED_MODULE_6__.Presence, {\n present: forceMount || visible,\n children: /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(ScrollAreaScrollbarVisible, {\n \"data-state\": visible ? \"visible\" : \"hidden\",\n ...scrollbarProps,\n ref: forwardedRef\n })\n });\n});\nvar ScrollAreaScrollbarVisible = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef((props, forwardedRef)=>{\n const { orientation = \"vertical\", ...scrollbarProps } = props;\n const context = useScrollAreaContext(SCROLLBAR_NAME, props.__scopeScrollArea);\n const thumbRef = react__WEBPACK_IMPORTED_MODULE_0__.useRef(null);\n const pointerOffsetRef = react__WEBPACK_IMPORTED_MODULE_0__.useRef(0);\n const [sizes, setSizes] = react__WEBPACK_IMPORTED_MODULE_0__.useState({\n content: 0,\n viewport: 0,\n scrollbar: {\n size: 0,\n paddingStart: 0,\n paddingEnd: 0\n }\n });\n const thumbRatio = getThumbRatio(sizes.viewport, sizes.content);\n const commonProps = {\n ...scrollbarProps,\n sizes,\n onSizesChange: setSizes,\n hasThumb: Boolean(thumbRatio > 0 && thumbRatio < 1),\n onThumbChange: (thumb)=>thumbRef.current = thumb,\n onThumbPointerUp: ()=>pointerOffsetRef.current = 0,\n onThumbPointerDown: (pointerPos)=>pointerOffsetRef.current = pointerPos\n };\n function getScrollPosition(pointerPos, dir) {\n return getScrollPositionFromPointer(pointerPos, pointerOffsetRef.current, sizes, dir);\n }\n if (orientation === \"horizontal\") {\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(ScrollAreaScrollbarX, {\n ...commonProps,\n ref: forwardedRef,\n onThumbPositionChange: ()=>{\n if (context.viewport && thumbRef.current) {\n const scrollPos = context.viewport.scrollLeft;\n const offset = getThumbOffsetFromScroll(scrollPos, sizes, context.dir);\n thumbRef.current.style.transform = `translate3d(${offset}px, 0, 0)`;\n }\n },\n onWheelScroll: (scrollPos)=>{\n if (context.viewport) context.viewport.scrollLeft = scrollPos;\n },\n onDragScroll: (pointerPos)=>{\n if (context.viewport) {\n context.viewport.scrollLeft = getScrollPosition(pointerPos, context.dir);\n }\n }\n });\n }\n if (orientation === \"vertical\") {\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(ScrollAreaScrollbarY, {\n ...commonProps,\n ref: forwardedRef,\n onThumbPositionChange: ()=>{\n if (context.viewport && thumbRef.current) {\n const scrollPos = context.viewport.scrollTop;\n const offset = getThumbOffsetFromScroll(scrollPos, sizes);\n thumbRef.current.style.transform = `translate3d(0, ${offset}px, 0)`;\n }\n },\n onWheelScroll: (scrollPos)=>{\n if (context.viewport) context.viewport.scrollTop = scrollPos;\n },\n onDragScroll: (pointerPos)=>{\n if (context.viewport) context.viewport.scrollTop = getScrollPosition(pointerPos);\n }\n });\n }\n return null;\n});\nvar ScrollAreaScrollbarX = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef((props, forwardedRef)=>{\n const { sizes, onSizesChange, ...scrollbarProps } = props;\n const context = useScrollAreaContext(SCROLLBAR_NAME, props.__scopeScrollArea);\n const [computedStyle, setComputedStyle] = react__WEBPACK_IMPORTED_MODULE_0__.useState();\n const ref = react__WEBPACK_IMPORTED_MODULE_0__.useRef(null);\n const composeRefs = (0,_radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_3__.useComposedRefs)(forwardedRef, ref, context.onScrollbarXChange);\n react__WEBPACK_IMPORTED_MODULE_0__.useEffect(()=>{\n if (ref.current) setComputedStyle(getComputedStyle(ref.current));\n }, [\n ref\n ]);\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(ScrollAreaScrollbarImpl, {\n \"data-orientation\": \"horizontal\",\n ...scrollbarProps,\n ref: composeRefs,\n sizes,\n style: {\n bottom: 0,\n left: context.dir === \"rtl\" ? \"var(--radix-scroll-area-corner-width)\" : 0,\n right: context.dir === \"ltr\" ? \"var(--radix-scroll-area-corner-width)\" : 0,\n [\"--radix-scroll-area-thumb-width\"]: getThumbSize(sizes) + \"px\",\n ...props.style\n },\n onThumbPointerDown: (pointerPos)=>props.onThumbPointerDown(pointerPos.x),\n onDragScroll: (pointerPos)=>props.onDragScroll(pointerPos.x),\n onWheelScroll: (event, maxScrollPos)=>{\n if (context.viewport) {\n const scrollPos = context.viewport.scrollLeft + event.deltaX;\n props.onWheelScroll(scrollPos);\n if (isScrollingWithinScrollbarBounds(scrollPos, maxScrollPos)) {\n event.preventDefault();\n }\n }\n },\n onResize: ()=>{\n if (ref.current && context.viewport && computedStyle) {\n onSizesChange({\n content: context.viewport.scrollWidth,\n viewport: context.viewport.offsetWidth,\n scrollbar: {\n size: ref.current.clientWidth,\n paddingStart: toInt(computedStyle.paddingLeft),\n paddingEnd: toInt(computedStyle.paddingRight)\n }\n });\n }\n }\n });\n});\nvar ScrollAreaScrollbarY = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef((props, forwardedRef)=>{\n const { sizes, onSizesChange, ...scrollbarProps } = props;\n const context = useScrollAreaContext(SCROLLBAR_NAME, props.__scopeScrollArea);\n const [computedStyle, setComputedStyle] = react__WEBPACK_IMPORTED_MODULE_0__.useState();\n const ref = react__WEBPACK_IMPORTED_MODULE_0__.useRef(null);\n const composeRefs = (0,_radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_3__.useComposedRefs)(forwardedRef, ref, context.onScrollbarYChange);\n react__WEBPACK_IMPORTED_MODULE_0__.useEffect(()=>{\n if (ref.current) setComputedStyle(getComputedStyle(ref.current));\n }, [\n ref\n ]);\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(ScrollAreaScrollbarImpl, {\n \"data-orientation\": \"vertical\",\n ...scrollbarProps,\n ref: composeRefs,\n sizes,\n style: {\n top: 0,\n right: context.dir === \"ltr\" ? 0 : void 0,\n left: context.dir === \"rtl\" ? 0 : void 0,\n bottom: \"var(--radix-scroll-area-corner-height)\",\n [\"--radix-scroll-area-thumb-height\"]: getThumbSize(sizes) + \"px\",\n ...props.style\n },\n onThumbPointerDown: (pointerPos)=>props.onThumbPointerDown(pointerPos.y),\n onDragScroll: (pointerPos)=>props.onDragScroll(pointerPos.y),\n onWheelScroll: (event, maxScrollPos)=>{\n if (context.viewport) {\n const scrollPos = context.viewport.scrollTop + event.deltaY;\n props.onWheelScroll(scrollPos);\n if (isScrollingWithinScrollbarBounds(scrollPos, maxScrollPos)) {\n event.preventDefault();\n }\n }\n },\n onResize: ()=>{\n if (ref.current && context.viewport && computedStyle) {\n onSizesChange({\n content: context.viewport.scrollHeight,\n viewport: context.viewport.offsetHeight,\n scrollbar: {\n size: ref.current.clientHeight,\n paddingStart: toInt(computedStyle.paddingTop),\n paddingEnd: toInt(computedStyle.paddingBottom)\n }\n });\n }\n }\n });\n});\nvar [ScrollbarProvider, useScrollbarContext] = createScrollAreaContext(SCROLLBAR_NAME);\nvar ScrollAreaScrollbarImpl = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef((props, forwardedRef)=>{\n const { __scopeScrollArea, sizes, hasThumb, onThumbChange, onThumbPointerUp, onThumbPointerDown, onThumbPositionChange, onDragScroll, onWheelScroll, onResize, ...scrollbarProps } = props;\n const context = useScrollAreaContext(SCROLLBAR_NAME, __scopeScrollArea);\n const [scrollbar, setScrollbar] = react__WEBPACK_IMPORTED_MODULE_0__.useState(null);\n const composeRefs = (0,_radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_3__.useComposedRefs)(forwardedRef, (node)=>setScrollbar(node));\n const rectRef = react__WEBPACK_IMPORTED_MODULE_0__.useRef(null);\n const prevWebkitUserSelectRef = react__WEBPACK_IMPORTED_MODULE_0__.useRef(\"\");\n const viewport = context.viewport;\n const maxScrollPos = sizes.content - sizes.viewport;\n const handleWheelScroll = (0,_radix_ui_react_use_callback_ref__WEBPACK_IMPORTED_MODULE_8__.useCallbackRef)(onWheelScroll);\n const handleThumbPositionChange = (0,_radix_ui_react_use_callback_ref__WEBPACK_IMPORTED_MODULE_8__.useCallbackRef)(onThumbPositionChange);\n const handleResize = useDebounceCallback(onResize, 10);\n function handleDragScroll(event) {\n if (rectRef.current) {\n const x = event.clientX - rectRef.current.left;\n const y = event.clientY - rectRef.current.top;\n onDragScroll({\n x,\n y\n });\n }\n }\n react__WEBPACK_IMPORTED_MODULE_0__.useEffect(()=>{\n const handleWheel = (event)=>{\n const element = event.target;\n const isScrollbarWheel = scrollbar?.contains(element);\n if (isScrollbarWheel) handleWheelScroll(event, maxScrollPos);\n };\n document.addEventListener(\"wheel\", handleWheel, {\n passive: false\n });\n return ()=>document.removeEventListener(\"wheel\", handleWheel, {\n passive: false\n });\n }, [\n viewport,\n scrollbar,\n maxScrollPos,\n handleWheelScroll\n ]);\n react__WEBPACK_IMPORTED_MODULE_0__.useEffect(handleThumbPositionChange, [\n sizes,\n handleThumbPositionChange\n ]);\n useResizeObserver(scrollbar, handleResize);\n useResizeObserver(context.content, handleResize);\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(ScrollbarProvider, {\n scope: __scopeScrollArea,\n scrollbar,\n hasThumb,\n onThumbChange: (0,_radix_ui_react_use_callback_ref__WEBPACK_IMPORTED_MODULE_8__.useCallbackRef)(onThumbChange),\n onThumbPointerUp: (0,_radix_ui_react_use_callback_ref__WEBPACK_IMPORTED_MODULE_8__.useCallbackRef)(onThumbPointerUp),\n onThumbPositionChange: handleThumbPositionChange,\n onThumbPointerDown: (0,_radix_ui_react_use_callback_ref__WEBPACK_IMPORTED_MODULE_8__.useCallbackRef)(onThumbPointerDown),\n children: /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_5__.Primitive.div, {\n ...scrollbarProps,\n ref: composeRefs,\n style: {\n position: \"absolute\",\n ...scrollbarProps.style\n },\n onPointerDown: (0,_radix_ui_primitive__WEBPACK_IMPORTED_MODULE_7__.composeEventHandlers)(props.onPointerDown, (event)=>{\n const mainPointer = 0;\n if (event.button === mainPointer) {\n const element = event.target;\n element.setPointerCapture(event.pointerId);\n rectRef.current = scrollbar.getBoundingClientRect();\n prevWebkitUserSelectRef.current = document.body.style.webkitUserSelect;\n document.body.style.webkitUserSelect = \"none\";\n if (context.viewport) context.viewport.style.scrollBehavior = \"auto\";\n handleDragScroll(event);\n }\n }),\n onPointerMove: (0,_radix_ui_primitive__WEBPACK_IMPORTED_MODULE_7__.composeEventHandlers)(props.onPointerMove, handleDragScroll),\n onPointerUp: (0,_radix_ui_primitive__WEBPACK_IMPORTED_MODULE_7__.composeEventHandlers)(props.onPointerUp, (event)=>{\n const element = event.target;\n if (element.hasPointerCapture(event.pointerId)) {\n element.releasePointerCapture(event.pointerId);\n }\n document.body.style.webkitUserSelect = prevWebkitUserSelectRef.current;\n if (context.viewport) context.viewport.style.scrollBehavior = \"\";\n rectRef.current = null;\n })\n })\n });\n});\nvar THUMB_NAME = \"ScrollAreaThumb\";\nvar ScrollAreaThumb = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef((props, forwardedRef)=>{\n const { forceMount, ...thumbProps } = props;\n const scrollbarContext = useScrollbarContext(THUMB_NAME, props.__scopeScrollArea);\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_radix_ui_react_presence__WEBPACK_IMPORTED_MODULE_6__.Presence, {\n present: forceMount || scrollbarContext.hasThumb,\n children: /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(ScrollAreaThumbImpl, {\n ref: forwardedRef,\n ...thumbProps\n })\n });\n});\nvar ScrollAreaThumbImpl = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef((props, forwardedRef)=>{\n const { __scopeScrollArea, style, ...thumbProps } = props;\n const scrollAreaContext = useScrollAreaContext(THUMB_NAME, __scopeScrollArea);\n const scrollbarContext = useScrollbarContext(THUMB_NAME, __scopeScrollArea);\n const { onThumbPositionChange } = scrollbarContext;\n const composedRef = (0,_radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_3__.useComposedRefs)(forwardedRef, (node)=>scrollbarContext.onThumbChange(node));\n const removeUnlinkedScrollListenerRef = react__WEBPACK_IMPORTED_MODULE_0__.useRef(void 0);\n const debounceScrollEnd = useDebounceCallback(()=>{\n if (removeUnlinkedScrollListenerRef.current) {\n removeUnlinkedScrollListenerRef.current();\n removeUnlinkedScrollListenerRef.current = void 0;\n }\n }, 100);\n react__WEBPACK_IMPORTED_MODULE_0__.useEffect(()=>{\n const viewport = scrollAreaContext.viewport;\n if (viewport) {\n const handleScroll = ()=>{\n debounceScrollEnd();\n if (!removeUnlinkedScrollListenerRef.current) {\n const listener = addUnlinkedScrollListener(viewport, onThumbPositionChange);\n removeUnlinkedScrollListenerRef.current = listener;\n onThumbPositionChange();\n }\n };\n onThumbPositionChange();\n viewport.addEventListener(\"scroll\", handleScroll);\n return ()=>viewport.removeEventListener(\"scroll\", handleScroll);\n }\n }, [\n scrollAreaContext.viewport,\n debounceScrollEnd,\n onThumbPositionChange\n ]);\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_5__.Primitive.div, {\n \"data-state\": scrollbarContext.hasThumb ? \"visible\" : \"hidden\",\n ...thumbProps,\n ref: composedRef,\n style: {\n width: \"var(--radix-scroll-area-thumb-width)\",\n height: \"var(--radix-scroll-area-thumb-height)\",\n ...style\n },\n onPointerDownCapture: (0,_radix_ui_primitive__WEBPACK_IMPORTED_MODULE_7__.composeEventHandlers)(props.onPointerDownCapture, (event)=>{\n const thumb = event.target;\n const thumbRect = thumb.getBoundingClientRect();\n const x = event.clientX - thumbRect.left;\n const y = event.clientY - thumbRect.top;\n scrollbarContext.onThumbPointerDown({\n x,\n y\n });\n }),\n onPointerUp: (0,_radix_ui_primitive__WEBPACK_IMPORTED_MODULE_7__.composeEventHandlers)(props.onPointerUp, scrollbarContext.onThumbPointerUp)\n });\n});\nScrollAreaThumb.displayName = THUMB_NAME;\nvar CORNER_NAME = \"ScrollAreaCorner\";\nvar ScrollAreaCorner = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef((props, forwardedRef)=>{\n const context = useScrollAreaContext(CORNER_NAME, props.__scopeScrollArea);\n const hasBothScrollbarsVisible = Boolean(context.scrollbarX && context.scrollbarY);\n const hasCorner = context.type !== \"scroll\" && hasBothScrollbarsVisible;\n return hasCorner ? /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(ScrollAreaCornerImpl, {\n ...props,\n ref: forwardedRef\n }) : null;\n});\nScrollAreaCorner.displayName = CORNER_NAME;\nvar ScrollAreaCornerImpl = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0__.forwardRef((props, forwardedRef)=>{\n const { __scopeScrollArea, ...cornerProps } = props;\n const context = useScrollAreaContext(CORNER_NAME, __scopeScrollArea);\n const [width, setWidth] = react__WEBPACK_IMPORTED_MODULE_0__.useState(0);\n const [height, setHeight] = react__WEBPACK_IMPORTED_MODULE_0__.useState(0);\n const hasSize = Boolean(width && height);\n useResizeObserver(context.scrollbarX, ()=>{\n const height2 = context.scrollbarX?.offsetHeight || 0;\n context.onCornerHeightChange(height2);\n setHeight(height2);\n });\n useResizeObserver(context.scrollbarY, ()=>{\n const width2 = context.scrollbarY?.offsetWidth || 0;\n context.onCornerWidthChange(width2);\n setWidth(width2);\n });\n return hasSize ? /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(_radix_ui_react_primitive__WEBPACK_IMPORTED_MODULE_5__.Primitive.div, {\n ...cornerProps,\n ref: forwardedRef,\n style: {\n width,\n height,\n position: \"absolute\",\n right: context.dir === \"ltr\" ? 0 : void 0,\n left: context.dir === \"rtl\" ? 0 : void 0,\n bottom: 0,\n ...props.style\n }\n }) : null;\n});\nfunction toInt(value) {\n return value ? parseInt(value, 10) : 0;\n}\nfunction getThumbRatio(viewportSize, contentSize) {\n const ratio = viewportSize / contentSize;\n return isNaN(ratio) ? 0 : ratio;\n}\nfunction getThumbSize(sizes) {\n const ratio = getThumbRatio(sizes.viewport, sizes.content);\n const scrollbarPadding = sizes.scrollbar.paddingStart + sizes.scrollbar.paddingEnd;\n const thumbSize = (sizes.scrollbar.size - scrollbarPadding) * ratio;\n return Math.max(thumbSize, 18);\n}\nfunction getScrollPositionFromPointer(pointerPos, pointerOffset, sizes, dir = \"ltr\") {\n const thumbSizePx = getThumbSize(sizes);\n const thumbCenter = thumbSizePx / 2;\n const offset = pointerOffset || thumbCenter;\n const thumbOffsetFromEnd = thumbSizePx - offset;\n const minPointerPos = sizes.scrollbar.paddingStart + offset;\n const maxPointerPos = sizes.scrollbar.size - sizes.scrollbar.paddingEnd - thumbOffsetFromEnd;\n const maxScrollPos = sizes.content - sizes.viewport;\n const scrollRange = dir === \"ltr\" ? [\n 0,\n maxScrollPos\n ] : [\n maxScrollPos * -1,\n 0\n ];\n const interpolate = linearScale([\n minPointerPos,\n maxPointerPos\n ], scrollRange);\n return interpolate(pointerPos);\n}\nfunction getThumbOffsetFromScroll(scrollPos, sizes, dir = \"ltr\") {\n const thumbSizePx = getThumbSize(sizes);\n const scrollbarPadding = sizes.scrollbar.paddingStart + sizes.scrollbar.paddingEnd;\n const scrollbar = sizes.scrollbar.size - scrollbarPadding;\n const maxScrollPos = sizes.content - sizes.viewport;\n const maxThumbPos = scrollbar - thumbSizePx;\n const scrollClampRange = dir === \"ltr\" ? [\n 0,\n maxScrollPos\n ] : [\n maxScrollPos * -1,\n 0\n ];\n const scrollWithoutMomentum = (0,_radix_ui_number__WEBPACK_IMPORTED_MODULE_9__.clamp)(scrollPos, scrollClampRange);\n const interpolate = linearScale([\n 0,\n maxScrollPos\n ], [\n 0,\n maxThumbPos\n ]);\n return interpolate(scrollWithoutMomentum);\n}\nfunction linearScale(input, output) {\n return (value)=>{\n if (input[0] === input[1] || output[0] === output[1]) return output[0];\n const ratio = (output[1] - output[0]) / (input[1] - input[0]);\n return output[0] + ratio * (value - input[0]);\n };\n}\nfunction isScrollingWithinScrollbarBounds(scrollPos, maxScrollPos) {\n return scrollPos > 0 && scrollPos < maxScrollPos;\n}\nvar addUnlinkedScrollListener = (node, handler = ()=>{})=>{\n let prevPosition = {\n left: node.scrollLeft,\n top: node.scrollTop\n };\n let rAF = 0;\n (function loop() {\n const position = {\n left: node.scrollLeft,\n top: node.scrollTop\n };\n const isHorizontalScroll = prevPosition.left !== position.left;\n const isVerticalScroll = prevPosition.top !== position.top;\n if (isHorizontalScroll || isVerticalScroll) handler();\n prevPosition = position;\n rAF = window.requestAnimationFrame(loop);\n })();\n return ()=>window.cancelAnimationFrame(rAF);\n};\nfunction useDebounceCallback(callback, delay) {\n const handleCallback = (0,_radix_ui_react_use_callback_ref__WEBPACK_IMPORTED_MODULE_8__.useCallbackRef)(callback);\n const debounceTimerRef = react__WEBPACK_IMPORTED_MODULE_0__.useRef(0);\n react__WEBPACK_IMPORTED_MODULE_0__.useEffect(()=>()=>window.clearTimeout(debounceTimerRef.current), []);\n return react__WEBPACK_IMPORTED_MODULE_0__.useCallback(()=>{\n window.clearTimeout(debounceTimerRef.current);\n debounceTimerRef.current = window.setTimeout(handleCallback, delay);\n }, [\n handleCallback,\n delay\n ]);\n}\nfunction useResizeObserver(element, onResize) {\n const handleResize = (0,_radix_ui_react_use_callback_ref__WEBPACK_IMPORTED_MODULE_8__.useCallbackRef)(onResize);\n (0,_radix_ui_react_use_layout_effect__WEBPACK_IMPORTED_MODULE_10__.useLayoutEffect)(()=>{\n let rAF = 0;\n if (element) {\n const resizeObserver = new ResizeObserver(()=>{\n cancelAnimationFrame(rAF);\n rAF = window.requestAnimationFrame(handleResize);\n });\n resizeObserver.observe(element);\n return ()=>{\n window.cancelAnimationFrame(rAF);\n resizeObserver.unobserve(element);\n };\n }\n }, [\n element,\n handleResize\n ]);\n}\nvar Root = ScrollArea;\nvar Viewport = ScrollAreaViewport;\nvar Scrollbar = ScrollAreaScrollbar;\nvar Thumb = ScrollAreaThumb;\nvar Corner = ScrollAreaCorner;\n //# sourceMappingURL=index.mjs.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LXNjcm9sbC1hcmVhL2Rpc3QvaW5kZXgubWpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRXVCO0FBQ0c7QUFDRDtBQUNVO0FBQ0g7QUFDRDtBQUNGO0FBQ0c7QUFDVjtBQUNlOztBQ1hkO0FBV2hCLFNBQVNVLGdCQUNkQyxZQUFBLEVBQ0FDLE9BQUE7SUFFQSxPQUFhWiw2Q0FBQSxDQUFXLENBQUNjLE9BQXdCQztRQUMvQyxNQUFNQyxZQUFhSixPQUFBLENBQVFFLE1BQUssQ0FBVUMsTUFBSztRQUMvQyxPQUFPQyxhQUFhRjtJQUN0QixHQUFHSDtBQUNMOztBRDRGUTtBQWhGUixJQUFNUyxtQkFBbUI7QUFHekIsSUFBTSxDQUFDQyx5QkFBeUJDLHNCQUFxQixHQUFJbkIsMkVBQWtCQSxDQUFDaUI7QUF1QjVFLElBQU0sQ0FBQ0csb0JBQW9CQyxxQkFBb0IsR0FDN0NILHdCQUFnREQ7QUFVbEQsSUFBTUssMkJBQW1CQyw2Q0FBQSxDQUN2QixDQUFDRSxPQUFxQ0M7SUFDcEMsTUFBTSxFQUNKQyxpQkFBQSxFQUNBQyxPQUFPLFNBQ1BDLEdBQUEsRUFDQUMsa0JBQWtCLEtBQ2xCLEdBQUdDLGlCQUNMLEdBQUlOO0lBQ0osTUFBTSxDQUFDTyxZQUFZQyxjQUFhLEdBQVVWLDJDQUFBLENBQW1DO0lBQzdFLE1BQU0sQ0FBQ1ksVUFBVUMsWUFBVyxHQUFVYiwyQ0FBQSxDQUEyQztJQUNqRixNQUFNLENBQUNjLFNBQVNDLFdBQVUsR0FBVWYsMkNBQUEsQ0FBZ0M7SUFDcEUsTUFBTSxDQUFDZ0IsWUFBWUMsY0FBYSxHQUFVakIsMkNBQUEsQ0FBNEM7SUFDdEYsTUFBTSxDQUFDa0IsWUFBWUMsY0FBYSxHQUFVbkIsMkNBQUEsQ0FBNEM7SUFDdEYsTUFBTSxDQUFDb0IsYUFBYUMsZUFBYyxHQUFVckIsMkNBQUEsQ0FBUztJQUNyRCxNQUFNLENBQUNzQixjQUFjQyxnQkFBZSxHQUFV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Olsid2VicGFjazovL215LXYwLXByb2plY3QvLi4vc3JjL1Njcm9sbEFyZWEudHN4PzA3ZjAiLCJ3ZWJwYWNrOi8vbXktdjAtcHJvamVjdC8uLi9zcmMvdXNlU3RhdGVNYWNoaW5lLnRzP2EwNzIiXSwic291cmNlc0NvbnRlbnQiOlsiLy8vIDxyZWZlcmVuY2UgdHlwZXM9XCJyZXNpemUtb2JzZXJ2ZXItYnJvd3NlclwiIC8+XG5cbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IFByaW1pdGl2ZSB9IGZyb20gJ0ByYWRpeC11aS9yZWFjdC1wcmltaXRpdmUnO1xuaW1wb3J0IHsgUHJlc2VuY2UgfSBmcm9tICdAcmFkaXgtdWkvcmVhY3QtcHJlc2VuY2UnO1xuaW1wb3J0IHsgY3JlYXRlQ29udGV4dFNjb3BlIH0gZnJvbSAnQHJhZGl4LXVpL3JlYWN0LWNvbnRleHQnO1xuaW1wb3J0IHsgdXNlQ29tcG9zZWRSZWZzIH0gZnJvbSAnQHJhZGl4LXVpL3JlYWN0LWNvbXBvc2UtcmVmcyc7XG5pbXBvcnQgeyB1c2VDYWxsYmFja1JlZiB9IGZyb20gJ0ByYWRpeC11aS9yZWFjdC11c2UtY2FsbGJhY2stcmVmJztcbmltcG9ydCB7IHVzZURpcmVjdGlvbiB9IGZyb20gJ0ByYWRpeC11aS9yZWFjdC1kaXJlY3Rpb24nO1xuaW1wb3J0IHsgdXNlTGF5b3V0RWZmZWN0IH0gZnJvbSAnQHJhZGl4LXVpL3JlYWN0LXVzZS1sYXlvdXQtZWZmZWN0JztcbmltcG9ydCB7IGNsYW1wIH0gZnJvbSAnQHJhZGl4LXVpL251bWJlcic7XG5pbXBvcnQgeyBjb21wb3NlRXZlbnRIYW5kbGVycyB9IGZyb20gJ0ByYWRpeC11aS9wcmltaXRpdmUnO1xuaW1wb3J0IHsgdXNlU3RhdGVNYWNoaW5lIH0gZnJvbSAnLi91c2VTdGF0ZU1hY2hpbmUnO1xuXG5pbXBvcnQgdHlwZSB7IFNjb3BlIH0gZnJvbSAnQHJhZGl4LXVpL3JlYWN0LWNvbnRleHQnO1xuXG50eXBlIERpcmVjdGlvbiA9ICdsdHInIHwgJ3J0bCc7XG50eXBlIFNpemVzID0ge1xuICBjb250ZW50OiBudW1iZXI7XG4gIHZpZXdwb3J0OiBudW1iZXI7XG4gIHNjcm9sbGJhcjoge1xuICAgIHNpemU6IG51bWJlcjtcbiAgICBwYWRkaW5nU3RhcnQ6IG51bWJlcjtcbiAgICBwYWRkaW5nRW5kOiBudW1iZXI7XG4gIH07XG59O1xuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBTY3JvbGxBcmVhXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbmNvbnN0IFNDUk9MTF9BUkVBX05BTUUgPSAnU2Nyb2xsQXJlYSc7XG5cbnR5cGUgU2NvcGVkUHJvcHM8UD4gPSBQICYgeyBfX3Njb3BlU2Nyb2xsQXJlYT86IFNjb3BlIH07XG5jb25zdCBbY3JlYXRlU2Nyb2xsQXJlYUNvbnRleHQsIGNyZWF0ZVNjcm9sbEFyZWFTY29wZV0gPSBjcmVhdGVDb250ZXh0U2NvcGUoU0NST0xMX0FSRUFfTkFNRSk7XG5cbnR5cGUgU2Nyb2xsQXJlYUNvbnRleHRWYWx1ZSA9IHtcbiAgdHlwZTogJ2F1dG8nIHwgJ2Fsd2F5cycgfCAnc2Nyb2xsJyB8ICdob3Zlcic7XG4gIGRpcjogRGlyZWN0aW9uO1xuICBzY3JvbGxIaWRlRGVsYXk6IG51bWJlcjtcbiAgc2Nyb2xsQXJlYTogU2Nyb2xsQXJlYUVsZW1lbnQgfCBudWxsO1xuICB2aWV3cG9ydDogU2Nyb2xsQXJlYVZpZXdwb3J0RWxlbWVudCB8IG51bGw7XG4gIG9uVmlld3BvcnRDaGFuZ2Uodmlld3BvcnQ6IFNjcm9sbEFyZWFWaWV3cG9ydEVsZW1lbnQgfCBudWxsKTogdm9pZDtcbiAgY29udGVudDogSFRNTERpdkVsZW1lbnQgfCBudWxsO1xuICBvbkNvbnRlbnRDaGFuZ2UoY29udGVudDogSFRNTERpdkVsZW1lbnQpOiB2b2lkO1xuICBzY3JvbGxiYXJYOiBTY3JvbGxBcmVhU2Nyb2xsYmFyRWxlbWVudCB8IG51bGw7XG4gIG9uU2Nyb2xsYmFyWENoYW5nZShzY3JvbGxiYXI6IFNjcm9sbEFyZWFTY3JvbGxiYXJFbGVtZW50IHwgbnVsbCk6IHZvaWQ7XG4gIHNjcm9sbGJhclhFbmFibGVkOiBib29sZWFuO1xuICBvblNjcm9sbGJhclhFbmFibGVkQ2hhbmdlKHJlbmRlcmVkOiBib29sZWFuKTogdm9pZDtcbiAgc2Nyb2xsYmFyWTogU2Nyb2xsQXJlYVNjcm9sbGJhckVsZW1lbnQgfCBudWxsO1xuICBvblNjcm9sbGJhcllDaGFuZ2Uoc2Nyb2xsYmFyOiBTY3JvbGxBcmVhU2Nyb2xsYmFyRWxlbWVudCB8IG51bGwpOiB2b2lkO1xuICBzY3JvbGxiYXJZRW5hYmxlZDogYm9vbGVhbjtcbiAgb25TY3JvbGxiYXJZRW5hYmxlZENoYW5nZShyZW5kZXJlZDogYm9vbGVhbik6IHZvaWQ7XG4gIG9uQ29ybmVyV2lkdGhDaGFuZ2Uod2lkdGg6IG51bWJlcik6IHZvaWQ7XG4gIG9uQ29ybmVySGVpZ2h0Q2hhbmdlKGhlaWdodDogbnVtYmVyKTogdm9pZDtcbn07XG5cbmNvbnN0IFtTY3JvbGxBcmVhUHJvdmlkZXIsIHVzZVNjcm9sbEFyZWFDb250ZXh0XSA9XG4gIGNyZWF0ZVNjcm9sbEFyZWFDb250ZXh0PFNjcm9sbEFyZWFDb250ZXh0VmFsdWU+KFNDUk9MTF9BUkVBX05BTUUpO1xuXG50eXBlIFNjcm9sbEFyZWFFbGVtZW50ID0gUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgUHJpbWl0aXZlLmRpdj47XG50eXBlIFByaW1pdGl2ZURpdlByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmPHR5cGVvZiBQcmltaXRpdmUuZGl2PjtcbmludGVyZmFjZSBTY3JvbGxBcmVhUHJvcHMgZXh0ZW5kcyBQcmltaXRpdmVEaXZQcm9wcyB7XG4gIHR5cGU/OiBTY3JvbGxBcmVhQ29udGV4dFZhbHVlWyd0eXBlJ107XG4gIGRpcj86IFNjcm9sbEFyZWFDb250ZXh0VmFsdWVbJ2RpciddO1xuICBzY3JvbGxIaWRlRGVsYXk/OiBudW1iZXI7XG59XG5cbmNvbnN0IFNjcm9sbEFyZWEgPSBSZWFjdC5mb3J3YXJkUmVmPFNjcm9sbEFyZWFFbGVtZW50LCBTY3JvbGxBcmVhUHJvcHM+KFxuICAocHJvcHM6IFNjb3BlZFByb3BzPFNjcm9sbEFyZWFQcm9wcz4sIGZvcndhcmRlZFJlZikgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIF9fc2NvcGVTY3JvbGxBcmVhLFxuICAgICAgdHlwZSA9ICdob3ZlcicsXG4gICAgICBkaXIsXG4gICAgICBzY3JvbGxIaWRlRGVsYXkgPSA2MDAsXG4gICAgICAuLi5zY3JvbGxBcmVhUHJvcHNcbiAgICB9ID0gcHJvcHM7XG4gICAgY29uc3QgW3Njcm9sbEFyZWEsIHNldFNjcm9sbEFyZWFdID0gUmVhY3QudXNlU3RhdGU8U2Nyb2xsQXJlYUVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgICBjb25zdCBbdmlld3BvcnQsIHNldFZpZXdwb3J0XSA9IFJlYWN0LnVzZVN0YXRlPFNjcm9sbEFyZWFWaWV3cG9ydEVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgICBjb25zdCBbY29udGVudCwgc2V0Q29udGVudF0gPSBSZWFjdC51c2VTdGF0ZTxIVE1MRGl2RWxlbWVudCB8IG51bGw+KG51bGwpO1xuICAgIGNvbnN0IFtzY3JvbGxiYXJYLCBzZXRTY3JvbGxiYXJYXSA9IFJlYWN0LnVzZVN0YXRlPFNjcm9sbEFyZWFTY3JvbGxiYXJFbGVtZW50IHwgbnVsbD4obnVsbCk7XG4gICAgY29uc3QgW3Njcm9sbGJhclksIHNldFNjcm9sbGJhclldID0gUmVhY3QudXNlU3RhdGU8U2Nyb2xsQXJlYVNjcm9sbGJhckVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgICBjb25zdCBbY29ybmVyV2lkdGgsIHNldENvcm5lcldpZHRoXSA9IFJlYWN0LnVzZVN0YXRlKDApO1xuICAgIGNvbnN0IFtjb3JuZXJIZWlnaHQsIHNldENvcm5lckhlaWdodF0gPSBSZWFjdC51c2VTdGF0ZSgwKTtcbiAgICBjb25zdCBbc2Nyb2xsYmFyWEVuYWJsZWQsIHNldFNjcm9sbGJhclhFbmFibGVkXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBbc2Nyb2xsYmFyWUVuYWJsZWQsIHNldFNjcm9sbGJhcllFbmFibGVkXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBjb21wb3NlZFJlZnMgPSB1c2VDb21wb3NlZFJlZnMoZm9yd2FyZGVkUmVmLCAobm9kZSkgPT4gc2V0U2Nyb2xsQXJlYShub2RlKSk7XG4gICAgY29uc3QgZGlyZWN0aW9uID0gdXNlRGlyZWN0aW9uKGRpcik7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPFNjcm9sbEFyZWFQcm92aWRlclxuICAgICAgICBzY29wZT17X19zY29wZVNjcm9sbEFyZWF9XG4gICAgICAgIHR5cGU9e3R5cGV9XG4gICAgICAgIGRpcj17ZGlyZWN0aW9ufVxuICAgICAgICBzY3JvbGxIaWRlRGVsYXk9e3Njcm9sbEhpZGVEZWxheX1cbiAgICAgICAgc2Nyb2xsQXJlYT17c2Nyb2xsQXJlYX1cbiAgICAgICAgdmlld3BvcnQ9e3ZpZXdwb3J0fVxuICAgICAgICBvblZpZXdwb3J0Q2hhbmdlPXtzZXRWaWV3cG9ydH1cbiAgICAgICAgY29udGVudD17Y29udGVudH1cbiAgICAgICAgb25Db250ZW50Q2hhbmdlPXtzZXRDb250ZW50fVxuICAgICAgICBzY3JvbGxiYXJYPXtzY3JvbGxiYXJYfVxuICAgICAgICBvblNjcm9sbGJhclhDaGFuZ2U9e3NldFNjcm9sbGJhclh9XG4gICAgICAgIHNjcm9sbGJhclhFbmFibGVkPXtzY3JvbGxiYXJYRW5hYmxlZH1cbiAgICAgICAgb25TY3JvbGxiYXJYRW5hYmxlZENoYW5nZT17c2V0U2Nyb2xsYmFyWEVuYWJsZWR9XG4gICAgICAgIHNjcm9sbGJhclk9e3Njcm9sbGJhcll9XG4gICAgICAgIG9uU2Nyb2xsYmFyWUNoYW5nZT17c2V0U2Nyb2xsYmFyWX1cbiAgICAgICAgc2Nyb2xsYmFyWUVuYWJsZWQ9e3Njcm9sbGJhcllFbmFibGVkfVxuICAgICAgICBvblNjcm9sbGJhcllFbmFibGVkQ2hhbmdlPXtzZXRTY3JvbGxiYXJZRW5hYmxlZH1cbiAgICAgICAgb25Db3JuZXJXaWR0aENoYW5nZT17c2V0Q29ybmVyV2lkdGh9XG4gICAgICAgIG9uQ29ybmVySGVpZ2h0Q2hhbmdlPXtzZXRDb3JuZXJIZWlnaHR9XG4gICAgICA+XG4gICAgICAgIDxQcmltaXRpdmUuZGl2XG4gICAgICAgICAgZGlyPXtkaXJlY3Rpb259XG4gICAgICAgICAgey4uLnNjcm9sbEFyZWFQcm9wc31cbiAgICAgICAgICByZWY9e2NvbXBvc2VkUmVmc31cbiAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gICAgICAgICAgICAvLyBQYXNzIGNvcm5lciBzaXplcyBhcyBDU1MgdmFycyB0byByZWR1Y2UgcmUtcmVuZGVycyBvZiBjb250ZXh0IGNvbnN1bWVyc1xuICAgICAgICAgICAgWyctLXJhZGl4LXNjcm9sbC1hcmVhLWNvcm5lci13aWR0aCcgYXMgYW55XTogY29ybmVyV2lkdGggKyAncHgnLFxuICAgICAgICAgICAgWyctLXJhZGl4LXNjcm9sbC1hcmVhLWNvcm5lci1oZWlnaHQnIGFzIGFueV06IGNvcm5lckhlaWdodCArICdweCcsXG4gICAgICAgICAgICAuLi5wcm9wcy5zdHlsZSxcbiAgICAgICAgICB9fVxuICAgICAgICAvPlxuICAgICAgPC9TY3JvbGxBcmVhUHJvdmlkZXI+XG4gICAgKTtcbiAgfVxuKTtcblxuU2Nyb2xsQXJlYS5kaXNwbGF5TmFtZSA9IFNDUk9MTF9BUkVBX05BTUU7XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFNjcm9sbEFyZWFWaWV3cG9ydFxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG5jb25zdCBWSUVXUE9SVF9OQU1FID0gJ1Njcm9sbEFyZWFWaWV3cG9ydCc7XG5cbnR5cGUgU2Nyb2xsQXJlYVZpZXdwb3J0RWxlbWVudCA9IFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFByaW1pdGl2ZS5kaXY+O1xuaW50ZXJmYWNlIFNjcm9sbEFyZWFWaWV3cG9ydFByb3BzIGV4dGVuZHMgUHJpbWl0aXZlRGl2UHJvcHMge1xuICBub25jZT86IHN0cmluZztcbn1cblxuY29uc3QgU2Nyb2xsQXJlYVZpZXdwb3J0ID0gUmVhY3QuZm9yd2FyZFJlZjxTY3JvbGxBcmVhVmlld3BvcnRFbGVtZW50LCBTY3JvbGxBcmVhVmlld3BvcnRQcm9wcz4oXG4gIChwcm9wczogU2NvcGVkUHJvcHM8U2Nyb2xsQXJlYVZpZXdwb3J0UHJvcHM+LCBmb3J3YXJkZWRSZWYpID0+IHtcbiAgICBjb25zdCB7IF9fc2NvcGVTY3JvbGxBcmVhLCBjaGlsZHJlbiwgbm9uY2UsIC4uLnZpZXdwb3J0UHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNvbnRleHQgPSB1c2VTY3JvbGxBcmVhQ29udGV4dChWSUVXUE9SVF9OQU1FLCBfX3Njb3BlU2Nyb2xsQXJlYSk7XG4gICAgY29uc3QgcmVmID0gUmVhY3QudXNlUmVmPFNjcm9sbEFyZWFWaWV3cG9ydEVsZW1lbnQ+KG51bGwpO1xuICAgIGNvbnN0IGNvbXBvc2VkUmVmcyA9IHVzZUNvbXBvc2VkUmVmcyhmb3J3YXJkZWRSZWYsIHJlZiwgY29udGV4dC5vblZpZXdwb3J0Q2hhbmdlKTtcbiAgICByZXR1cm4gKFxuICAgICAgPD5cbiAgICAgICAgey8qIEhpZGUgc2Nyb2xsYmFycyBjcm9zcy1icm93c2VyIGFuZCBlbmFibGUgbW9tZW50dW0gc2Nyb2xsIGZvciB0b3VjaCBkZXZpY2VzICovfVxuICAgICAgICA8c3R5bGVcbiAgICAgICAgICBkYW5nZXJvdXNseVNldElubmVySFRNTD17e1xuICAgICAgICAgICAgX19odG1sOiBgW2RhdGEtcmFkaXgtc2Nyb2xsLWFyZWEtdmlld3BvcnRde3Njcm9sbGJhci13aWR0aDpub25lOy1tcy1vdmVyZmxvdy1zdHlsZTpub25lOy13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOnRvdWNoO31bZGF0YS1yYWRpeC1zY3JvbGwtYXJlYS12aWV3cG9ydF06Oi13ZWJraXQtc2Nyb2xsYmFye2Rpc3BsYXk6bm9uZX1gLFxuICAgICAgICAgIH19XG4gICAgICAgICAgbm9uY2U9e25vbmNlfVxuICAgICAgICAvPlxuICAgICAgICA8UHJpbWl0aXZlLmRpdlxuICAgICAgICAgIGRhdGEtcmFkaXgtc2Nyb2xsLWFyZWEtdmlld3BvcnQ9XCJcIlxuICAgICAgICAgIHsuLi52aWV3cG9ydFByb3BzfVxuICAgICAgICAgIHJlZj17Y29tcG9zZWRSZWZzfVxuICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFdlIGRvbid0IHN1cHBvcnQgYHZpc2libGVgIGJlY2F1c2UgdGhlIGludGVudGlvbiBpcyB0byBoYXZlIGF0IGxlYXN0IG9uZSBzY3JvbGxiYXJcbiAgICAgICAgICAgICAqIGlmIHRoaXMgY29tcG9uZW50IGlzIHVzZWQgYW5kIGB2aXNpYmxlYCB3aWxsIGJlaGF2ZSBsaWtlIGBhdXRvYCBpbiB0aGF0IGNhc2VcbiAgICAgICAgICAgICAqIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9vdmVyZmxvdyNkZXNjcmlwdGlvblxuICAgICAgICAgICAgICpcbiAgICAgICAgICAgICAqIFdlIGRvbid0IGhhbmRsZSBgYXV0b2AgYmVjYXVzZSB0aGUgaW50ZW50aW9uIGlzIGZvciB0aGUgbmF0aXZlIGltcGxlbWVudGF0aW9uXG4gICAgICAgICAgICAgKiB0byBiZSBoaWRkZW4gaWYgdXNpbmcgdGhpcyBjb21wb25lbnQuIFdlIGp1c3Qgd2FudCB0byBlbnN1cmUgdGhlIG5vZGUgaXMgc2Nyb2xsYWJsZVxuICAgICAgICAgICAgICogc28gY291bGQgaGF2ZSB1c2VkIGVpdGhlciBgc2Nyb2xsYCBvciBgYXV0b2AgaGVyZS4gV2UgcGlja2VkIGBzY3JvbGxgIHRvIHByZXZlbnRcbiAgICAgICAgICAgICAqIHRoZSBicm93c2VyIGZyb20gaGF2aW5nIHRvIHdvcmsgb3V0IHdoZXRoZXIgdG8gcmVuZGVyIG5hdGl2ZSBzY3JvbGxiYXJzIG9yIG5vdCxcbiAgICAgICAgICAgICAqIHdlIHRlbGwgaXQgdG8gd2l0aCB0aGUgaW50ZW50aW9uIG9mIGhpZGluZyB0aGVtIGluIENTUy5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgb3ZlcmZsb3dYOiBjb250ZXh0LnNjcm9sbGJhclhFbmFibGVkID8gJ3Njcm9sbCcgOiAnaGlkZGVuJyxcbiAgICAgICAgICAgIG92ZXJmbG93WTogY29udGV4dC5zY3JvbGxiYXJZRW5hYmxlZCA/ICdzY3JvbGwnIDogJ2hpZGRlbicsXG4gICAgICAgICAgICAuLi5wcm9wcy5zdHlsZSxcbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAgey8qKlxuICAgICAgICAgICAqIGBkaXNwbGF5OiB0YWJsZWAgZW5zdXJlcyBvdXIgY29udGVudCBkaXYgd2lsbCBtYXRjaCB0aGUgc2l6ZSBvZiBpdHMgY2hpbGRyZW4gaW4gYm90aFxuICAgICAgICAgICAqIGhvcml6b250YWwgYW5kIHZlcnRpY2FsIGF4aXMgc28gd2UgY2FuIGRldGVybWluZSBpZiBzY3JvbGwgd2lkdGgvaGVpZ2h0IGNoYW5nZWQgYW5kXG4gICAgICAgICAgICogcmVjYWxjdWxhdGUgdGh1bWIgc2l6ZXMuIFRoaXMgZG9lc24ndCBhY2NvdW50IGZvciBjaGlsZHJlbiB3aXRoICpwZXJjZW50YWdlKlxuICAgICAgICAgICAqIHdpZHRocyB0aGF0IGNoYW5nZS4gV2UnbGwgd2FpdCB0byBzZWUgd2hhdCB1c2UtY2FzZXMgY29uc3VtZXJzIGNvbWUgdXAgd2l0aCB0aGVyZVxuICAgICAgICAgICAqIGJlZm9yZSB0cnlpbmcgdG8gcmVzb2x2ZSBpdC5cbiAgICAgICAgICAgKi99XG4gICAgICAgICAgPGRpdiByZWY9e2NvbnRleHQub25Db250ZW50Q2hhbmdlfSBzdHlsZT17eyBtaW5XaWR0aDogJzEwMCUnLCBkaXNwbGF5OiAndGFibGUnIH19PlxuICAgICAgICAgICAge2NoaWxkcmVufVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L1ByaW1pdGl2ZS5kaXY+XG4gICAgICA8Lz5cbiAgICApO1xuICB9XG4pO1xuXG5TY3JvbGxBcmVhVmlld3BvcnQuZGlzcGxheU5hbWUgPSBWSUVXUE9SVF9OQU1FO1xuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBTY3JvbGxBcmVhU2Nyb2xsYmFyXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbmNvbnN0IFNDUk9MTEJBUl9OQU1FID0gJ1Njcm9sbEFyZWFTY3JvbGxiYXInO1xuXG50eXBlIFNjcm9sbEFyZWFTY3JvbGxiYXJFbGVtZW50ID0gU2Nyb2xsQXJlYVNjcm9sbGJhclZpc2libGVFbGVtZW50O1xuaW50ZXJmYWNlIFNjcm9sbEFyZWFTY3JvbGxiYXJQcm9wcyBleHRlbmRzIFNjcm9sbEFyZWFTY3JvbGxiYXJWaXNpYmxlUHJvcHMge1xuICBmb3JjZU1vdW50PzogdHJ1ZTtcbn1cblxuY29uc3QgU2Nyb2xsQXJlYVNjcm9sbGJhciA9IFJlYWN0LmZvcndhcmRSZWY8U2Nyb2xsQXJlYVNjcm9sbGJhckVsZW1lbnQsIFNjcm9sbEFyZWFTY3JvbGxiYXJQcm9wcz4oXG4gIChwcm9wczogU2NvcGVkUHJvcHM8U2Nyb2xsQXJlYVNjcm9sbGJhclByb3BzPiwgZm9yd2FyZGVkUmVmKSA9PiB7XG4gICAgY29uc3QgeyBmb3JjZU1vdW50LCAuLi5zY3JvbGxiYXJQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgY29udGV4dCA9IHVzZVNjcm9sbEFyZWFDb250ZXh0KFNDUk9MTEJBUl9OQU1FLCBwcm9wcy5fX3Njb3BlU2Nyb2xsQXJlYSk7XG4gICAgY29uc3QgeyBvblNjcm9sbGJhclhFbmFibGVkQ2hhbmdlLCBvblNjcm9sbGJhcllFbmFibGVkQ2hhbmdlIH0gPSBjb250ZXh0O1xuICAgIGNvbnN0IGlzSG9yaXpvbnRhbCA9IHByb3BzLm9yaWVudGF0aW9uID09PSAnaG9yaXpvbnRhbCc7XG5cbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgaXNIb3Jpem9udGFsID8gb25TY3JvbGxiYXJYRW5hYmxlZENoYW5nZSh0cnVlKSA6IG9uU2Nyb2xsYmFyWUVuYWJsZWRDaGFuZ2UodHJ1ZSk7XG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICBpc0hvcml6b250YWwgPyBvblNjcm9sbGJhclhFbmFibGVkQ2hhbmdlKGZhbHNlKSA6IG9uU2Nyb2xsYmFyWUVuYWJsZWRDaGFuZ2UoZmFsc2UpO1xuICAgICAgfTtcbiAgICB9LCBbaXNIb3Jpem9udGFsLCBvblNjcm9sbGJhclhFbmFibGVkQ2hhbmdlLCBvblNjcm9sbGJhcllFbmFibGVkQ2hhbmdlXSk7XG5cbiAgICByZXR1cm4gY29udGV4dC50eXBlID09PSAnaG92ZXInID8gKFxuICAgICAgPFNjcm9sbEFyZWFTY3JvbGxiYXJIb3ZlciB7Li4uc2Nyb2xsYmFyUHJvcHN9IHJlZj17Zm9yd2FyZGVkUmVmfSBmb3JjZU1vdW50PXtmb3JjZU1vdW50fSAvPlxuICAgICkgOiBjb250ZXh0LnR5cGUgPT09ICdzY3JvbGwnID8gKFxuICAgICAgPFNjcm9sbEFyZWFTY3JvbGxiYXJTY3JvbGwgey4uLnNjcm9sbGJhclByb3BzfSByZWY9e2ZvcndhcmRlZFJlZn0gZm9yY2VNb3VudD17Zm9yY2VNb3VudH0gLz5cbiAgICApIDogY29udGV4dC50eXBlID09PSAnYXV0bycgPyAoXG4gICAgICA8U2Nyb2xsQXJlYVNjcm9sbGJhckF1dG8gey4uLnNjcm9sbGJhclByb3BzfSByZWY9e2ZvcndhcmRlZFJlZn0gZm9yY2VNb3VudD17Zm9yY2VNb3VudH0gLz5cbiAgICApIDogY29udGV4dC50eXBlID09PSAnYWx3YXlzJyA/IChcbiAgICAgIDxTY3JvbGxBcmVhU2Nyb2xsYmFyVmlzaWJsZSB7Li4uc2Nyb2xsYmFyUHJvcHN9IHJlZj17Zm9yd2FyZGVkUmVmfSAvPlxuICAgICkgOiBudWxsO1xuICB9XG4pO1xuXG5TY3JvbGxBcmVhU2Nyb2xsYmFyLmRpc3BsYXlOYW1lID0gU0NST0xMQkFSX05BTUU7XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxudHlwZSBTY3JvbGxBcmVhU2Nyb2xsYmFySG92ZXJFbGVtZW50ID0gU2Nyb2xsQXJlYVNjcm9sbGJhckF1dG9FbGVtZW50O1xuaW50ZXJmYWNlIFNjcm9sbEFyZWFTY3JvbGxiYXJIb3ZlclByb3BzIGV4dGVuZHMgU2Nyb2xsQXJlYVNjcm9sbGJhckF1dG9Qcm9wcyB7XG4gIGZvcmNlTW91bnQ/OiB0cnVlO1xufVxuXG5jb25zdCBTY3JvbGxBcmVhU2Nyb2xsYmFySG92ZXIgPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBTY3JvbGxBcmVhU2Nyb2xsYmFySG92ZXJFbGVtZW50LFxuICBTY3JvbGxBcmVhU2Nyb2xsYmFySG92ZXJQcm9wc1xuPigocHJvcHM6IFNjb3BlZFByb3BzPFNjcm9sbEFyZWFTY3JvbGxiYXJIb3ZlclByb3BzPiwgZm9yd2FyZGVkUmVmKSA9PiB7XG4gIGNvbnN0IHsgZm9yY2VNb3VudCwgLi4uc2Nyb2xsYmFyUHJvcHMgfSA9IHByb3BzO1xuICBjb25zdCBjb250ZXh0ID0gdXNlU2Nyb2xsQXJlYUNvbnRleHQoU0NST0xMQkFSX05BTUUsIHByb3BzLl9fc2NvcGVTY3JvbGxBcmVhKTtcbiAgY29uc3QgW3Zpc2libGUsIHNldFZpc2libGVdID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpO1xuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qgc2Nyb2xsQXJlYSA9IGNvbnRleHQuc2Nyb2xsQXJlYTtcbiAgICBsZXQgaGlkZVRpbWVyID0gMDtcbiAgICBpZiAoc2Nyb2xsQXJlYSkge1xuICAgICAgY29uc3QgaGFuZGxlUG9pbnRlckVudGVyID0gKCkgPT4ge1xuICAgICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KGhpZGVUaW1lcik7XG4gICAgICAgIHNldFZpc2libGUodHJ1ZSk7XG4gICAgICB9O1xuICAgICAgY29uc3QgaGFuZGxlUG9pbnRlckxlYXZlID0gKCkgPT4ge1xuICAgICAgICBoaWRlVGltZXIgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiBzZXRWaXNpYmxlKGZhbHNlKSwgY29udGV4dC5zY3JvbGxIaWRlRGVsYXkpO1xuICAgICAgfTtcbiAgICAgIHNjcm9sbEFyZWEuYWRkRXZlbnRMaXN0ZW5lcigncG9pbnRlcmVudGVyJywgaGFuZGxlUG9pbnRlckVudGVyKTtcbiAgICAgIHNjcm9sbEFyZWEuYWRkRXZlbnRMaXN0ZW5lcigncG9pbnRlcmxlYXZlJywgaGFuZGxlUG9pbnRlckxlYXZlKTtcbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQoaGlkZVRpbWVyKTtcbiAgICAgICAgc2Nyb2xsQXJlYS5yZW1vdmVFdmVudExpc3RlbmVyKCdwb2ludGVyZW50ZXInLCBoYW5kbGVQb2ludGVyRW50ZXIpO1xuICAgICAgICBzY3JvbGxBcmVhLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJsZWF2ZScsIGhhbmRsZVBvaW50ZXJMZWF2ZSk7XG4gICAgICB9O1xuICAgIH1cbiAgfSwgW2NvbnRleHQuc2Nyb2xsQXJlYSwgY29udGV4dC5zY3JvbGxIaWRlRGVsYXldKTtcblxuICByZXR1cm4gKFxuICAgIDxQcmVzZW5jZSBwcmVzZW50PXtmb3JjZU1vdW50IHx8IHZpc2libGV9PlxuICAgICAgPFNjcm9sbEFyZWFTY3JvbGxiYXJBdXRvXG4gICAgICAgIGRhdGEtc3RhdGU9e3Zpc2libGUgPyAndmlzaWJsZScgOiAnaGlkZGVuJ31cbiAgICAgICAgey4uLnNjcm9sbGJhclByb3BzfVxuICAgICAgICByZWY9e2ZvcndhcmRlZFJlZn1cbiAgICAgIC8+XG4gICAgPC9QcmVzZW5jZT5cbiAgKTtcbn0pO1xuXG50eXBlIFNjcm9sbEFyZWFTY3JvbGxiYXJTY3JvbGxFbGVtZW50ID0gU2Nyb2xsQXJlYVNjcm9sbGJhclZpc2libGVFbGVtZW50O1xuaW50ZXJmYWNlIFNjcm9sbEFyZWFTY3JvbGxiYXJTY3JvbGxQcm9wcyBleHRlbmRzIFNjcm9sbEFyZWFTY3JvbGxiYXJWaXNpYmxlUHJvcHMge1xuICBmb3JjZU1vdW50PzogdHJ1ZTtcbn1cblxuY29uc3QgU2Nyb2xsQXJlYVNjcm9sbGJhclNjcm9sbCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFNjcm9sbEFyZWFTY3JvbGxiYXJTY3JvbGxFbGVtZW50LFxuICBTY3JvbGxBcmVhU2Nyb2xsYmFyU2Nyb2xsUHJvcHNcbj4oKHByb3BzOiBTY29wZWRQcm9wczxTY3JvbGxBcmVhU2Nyb2xsYmFyU2Nyb2xsUHJvcHM+LCBmb3J3YXJkZWRSZWYpID0+IHtcbiAgY29uc3QgeyBmb3JjZU1vdW50LCAuLi5zY3JvbGxiYXJQcm9wcyB9ID0gcHJvcHM7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VTY3JvbGxBcmVhQ29udGV4dChTQ1JPTExCQVJfTkFNRSwgcHJvcHMuX19zY29wZVNjcm9sbEFyZWEpO1xuICBjb25zdCBpc0hvcml6b250YWwgPSBwcm9wcy5vcmllbnRhdGlvbiA9PT0gJ2hvcml6b250YWwnO1xuICBjb25zdCBkZWJvdW5jZVNjcm9sbEVuZCA9IHVzZURlYm91bmNlQ2FsbGJhY2soKCkgPT4gc2VuZCgnU0NST0xMX0VORCcpLCAxMDApO1xuICBjb25zdCBbc3RhdGUsIHNlbmRdID0gdXNlU3RhdGVNYWNoaW5lKCdoaWRkZW4nLCB7XG4gICAgaGlkZGVuOiB7XG4gICAgICBTQ1JPTEw6ICdzY3JvbGxpbmcnLFxuICAgIH0sXG4gICAgc2Nyb2xsaW5nOiB7XG4gICAgICBTQ1JPTExfRU5EOiAnaWRsZScsXG4gICAgICBQT0lOVEVSX0VOVEVSOiAnaW50ZXJhY3RpbmcnLFxuICAgIH0sXG4gICAgaW50ZXJhY3Rpbmc6IHtcbiAgICAgIFNDUk9MTDogJ2ludGVyYWN0aW5nJyxcbiAgICAgIFBPSU5URVJfTEVBVkU6ICdpZGxlJyxcbiAgICB9LFxuICAgIGlkbGU6IHtcbiAgICAgIEhJREU6ICdoaWRkZW4nLFxuICAgICAgU0NST0xMOiAnc2Nyb2xsaW5nJyxcbiAgICAgIFBPSU5URVJfRU5URVI6ICdpbnRlcmFjdGluZycsXG4gICAgfSxcbiAgfSk7XG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoc3RhdGUgPT09ICdpZGxlJykge1xuICAgICAgY29uc3QgaGlkZVRpbWVyID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4gc2VuZCgnSElERScpLCBjb250ZXh0LnNjcm9sbEhpZGVEZWxheSk7XG4gICAgICByZXR1cm4gKCkgPT4gd2luZG93LmNsZWFyVGltZW91dChoaWRlVGltZXIpO1xuICAgIH1cbiAgfSwgW3N0YXRlLCBjb250ZXh0LnNjcm9sbEhpZGVEZWxheSwgc2VuZF0pO1xuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qgdmlld3BvcnQgPSBjb250ZXh0LnZpZXdwb3J0O1xuICAgIGNvbnN0IHNjcm9sbERpcmVjdGlvbiA9IGlzSG9yaXpvbnRhbCA/ICdzY3JvbGxMZWZ0JyA6ICdzY3JvbGxUb3AnO1xuXG4gICAgaWYgKHZpZXdwb3J0KSB7XG4gICAgICBsZXQgcHJldlNjcm9sbFBvcyA9IHZpZXdwb3J0W3Njcm9sbERpcmVjdGlvbl07XG4gICAgICBjb25zdCBoYW5kbGVTY3JvbGwgPSAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHNjcm9sbFBvcyA9IHZpZXdwb3J0W3Njcm9sbERpcmVjdGlvbl07XG4gICAgICAgIGNvbnN0IGhhc1Njcm9sbEluRGlyZWN0aW9uQ2hhbmdlZCA9IHByZXZTY3JvbGxQb3MgIT09IHNjcm9sbFBvcztcbiAgICAgICAgaWYgKGhhc1Njcm9sbEluRGlyZWN0aW9uQ2hhbmdlZCkge1xuICAgICAgICAgIHNlbmQoJ1NDUk9MTCcpO1xuICAgICAgICAgIGRlYm91bmNlU2Nyb2xsRW5kKCk7XG4gICAgICAgIH1cbiAgICAgICAgcHJldlNjcm9sbFBvcyA9IHNjcm9sbFBvcztcbiAgICAgIH07XG4gICAgICB2aWV3cG9ydC5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVTY3JvbGwpO1xuICAgICAgcmV0dXJuICgpID0+IHZpZXdwb3J0LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZVNjcm9sbCk7XG4gICAgfVxuICB9LCBbY29udGV4dC52aWV3cG9ydCwgaXNIb3Jpem9udGFsLCBzZW5kLCBkZWJvdW5jZVNjcm9sbEVuZF0pO1xuXG4gIHJldHVybiAoXG4gICAgPFByZXNlbmNlIHByZXNlbnQ9e2ZvcmNlTW91bnQgfHwgc3RhdGUgIT09ICdoaWRkZW4nfT5cbiAgICAgIDxTY3JvbGxBcmVhU2Nyb2xsYmFyVmlzaWJsZVxuICAgICAgICBkYXRhLXN0YXRlPXtzdGF0ZSA9PT0gJ2hpZGRlbicgPyAnaGlkZGVuJyA6ICd2aXNpYmxlJ31cbiAgICAgICAgey4uLnNjcm9sbGJhclByb3BzfVxuICAgICAgICByZWY9e2ZvcndhcmRlZFJlZn1cbiAgICAgICAgb25Qb2ludGVyRW50ZXI9e2NvbXBvc2VFdmVudEhhbmRsZXJzKHByb3BzLm9uUG9pbnRlckVudGVyLCAoKSA9PiBzZW5kKCdQT0lOVEVSX0VOVEVSJykpfVxuICAgICAgICBvblBvaW50ZXJMZWF2ZT17Y29tcG9zZUV2ZW50SGFuZGxlcnMocHJvcHMub25Qb2ludGVyTGVhdmUsICgpID0+IHNlbmQoJ1BPSU5URVJfTEVBVkUnKSl9XG4gICAgICAvPlxuICAgIDwvUHJlc2VuY2U+XG4gICk7XG59KTtcblxudHlwZSBTY3JvbGxBcmVhU2Nyb2xsYmFyQXV0b0VsZW1lbnQgPSBTY3JvbGxBcmVhU2Nyb2xsYmFyVmlzaWJsZUVsZW1lbnQ7XG5pbnRlcmZhY2UgU2Nyb2xsQXJlYVNjcm9sbGJhckF1dG9Qcm9wcyBleHRlbmRzIFNjcm9sbEFyZWFTY3JvbGxiYXJWaXNpYmxlUHJvcHMge1xuICBmb3JjZU1vdW50PzogdHJ1ZTtcbn1cblxuY29uc3QgU2Nyb2xsQXJlYVNjcm9sbGJhckF1dG8gPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBTY3JvbGxBcmVhU2Nyb2xsYmFyQXV0b0VsZW1lbnQsXG4gIFNjcm9sbEFyZWFTY3JvbGxiYXJBdXRvUHJvcHNcbj4oKHByb3BzOiBTY29wZWRQcm9wczxTY3JvbGxBcmVhU2Nyb2xsYmFyQXV0b1Byb3BzPiwgZm9yd2FyZGVkUmVmKSA9PiB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VTY3JvbGxBcmVhQ29udGV4dChTQ1JPTExCQVJfTkFNRSwgcHJvcHMuX19zY29wZVNjcm9sbEFyZWEpO1xuICBjb25zdCB7IGZvcmNlTW91bnQsIC4uLnNjcm9sbGJhclByb3BzIH0gPSBwcm9wcztcbiAgY29uc3QgW3Zpc2libGUsIHNldFZpc2libGVdID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBpc0hvcml6b250YWwgPSBwcm9wcy5vcmllbnRhdGlvbiA9PT0gJ2hvcml6b250YWwnO1xuICBjb25zdCBoYW5kbGVSZXNpemUgPSB1c2VEZWJvdW5jZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoY29udGV4dC52aWV3cG9ydCkge1xuICAgICAgY29uc3QgaXNPdmVyZmxvd1ggPSBjb250ZXh0LnZpZXdwb3J0Lm9mZnNldFdpZHRoIDwgY29udGV4dC52aWV3cG9ydC5zY3JvbGxXaWR0aDtcbiAgICAgIGNvbnN0IGlzT3ZlcmZsb3dZID0gY29udGV4dC52aWV3cG9ydC5vZmZzZXRIZWlnaHQgPCBjb250ZXh0LnZpZXdwb3J0LnNjcm9sbEhlaWdodDtcbiAgICAgIHNldFZpc2libGUoaXNIb3Jpem9udGFsID8gaXNPdmVyZmxvd1ggOiBpc092ZXJmbG93WSk7XG4gICAgfVxuICB9LCAxMCk7XG5cbiAgdXNlUmVzaXplT2JzZXJ2ZXIoY29udGV4dC52aWV3cG9ydCwgaGFuZGxlUmVzaXplKTtcbiAgdXNlUmVzaXplT2JzZXJ2ZXIoY29udGV4dC5jb250ZW50LCBoYW5kbGVSZXNpemUpO1xuXG4gIHJldHVybiAoXG4gICAgPFByZXNlbmNlIHByZXNlbnQ9e2ZvcmNlTW91bnQgfHwgdmlzaWJsZX0+XG4gICAgICA8U2Nyb2xsQXJlYVNjcm9sbGJhclZpc2libGVcbiAgICAgICAgZGF0YS1zdGF0ZT17dmlzaWJsZSA/ICd2aXNpYmxlJyA6ICdoaWRkZW4nfVxuICAgICAgICB7Li4uc2Nyb2xsYmFyUHJvcHN9XG4gICAgICAgIHJlZj17Zm9yd2FyZGVkUmVmfVxuICAgICAgLz5cbiAgICA8L1ByZXNlbmNlPlxuICApO1xufSk7XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxudHlwZSBTY3JvbGxBcmVhU2Nyb2xsYmFyVmlzaWJsZUVsZW1lbnQgPSBTY3JvbGxBcmVhU2Nyb2xsYmFyQXhpc0VsZW1lbnQ7XG5pbnRlcmZhY2UgU2Nyb2xsQXJlYVNjcm9sbGJhclZpc2libGVQcm9wc1xuICBleHRlbmRzIE9taXQ8U2Nyb2xsQXJlYVNjcm9sbGJhckF4aXNQcm9wcywga2V5b2YgU2Nyb2xsQXJlYVNjcm9sbGJhckF4aXNQcml2YXRlUHJvcHM+IHtcbiAgb3JpZW50YXRpb24/OiAnaG9yaXpvbnRhbCcgfCAndmVydGljYWwnO1xufVxuXG5jb25zdCBTY3JvbGxBcmVhU2Nyb2xsYmFyVmlzaWJsZSA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFNjcm9sbEFyZWFTY3JvbGxiYXJWaXNpYmxlRWxlbWVudCxcbiAgU2Nyb2xsQXJlYVNjcm9sbGJhclZpc2libGVQcm9wc1xuPigocHJvcHM6IFNjb3BlZFByb3BzPFNjcm9sbEFyZWFTY3JvbGxiYXJWaXNpYmxlUHJvcHM+LCBmb3J3YXJkZWRSZWYpID0+IHtcbiAgY29uc3QgeyBvcmllbnRhdGlvbiA9ICd2ZXJ0aWNhbCcsIC4uLnNjcm9sbGJhclByb3BzIH0gPSBwcm9wcztcbiAgY29uc3QgY29udGV4dCA9IHVzZVNjcm9sbEFyZWFDb250ZXh0KFNDUk9MTEJBUl9OQU1FLCBwcm9wcy5fX3Njb3BlU2Nyb2xsQXJlYSk7XG4gIGNvbnN0IHRodW1iUmVmID0gUmVhY3QudXNlUmVmPFNjcm9sbEFyZWFUaHVtYkVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgY29uc3QgcG9pbnRlck9mZnNldFJlZiA9IFJlYWN0LnVzZVJlZigwKTtcbiAgY29uc3QgW3NpemVzLCBzZXRTaXplc10gPSBSZWFjdC51c2VTdGF0ZTxTaXplcz4oe1xuICAgIGNvbnRlbnQ6IDAsXG4gICAgdmlld3BvcnQ6IDAsXG4gICAgc2Nyb2xsYmFyOiB7IHNpemU6IDAsIHBhZGRpbmdTdGFydDogMCwgcGFkZGluZ0VuZDogMCB9LFxuICB9KTtcbiAgY29uc3QgdGh1bWJSYXRpbyA9IGdldFRodW1iUmF0aW8oc2l6ZXMudmlld3BvcnQsIHNpemVzLmNvbnRlbnQpO1xuXG4gIHR5cGUgVW5jb21tb25Qcm9wcyA9ICdvblRodW1iUG9zaXRpb25DaGFuZ2UnIHwgJ29uRHJhZ1Njcm9sbCcgfCAnb25XaGVlbFNjcm9sbCc7XG4gIGNvbnN0IGNvbW1vblByb3BzOiBPbWl0PFNjcm9sbEFyZWFTY3JvbGxiYXJBeGlzUHJpdmF0ZVByb3BzLCBVbmNvbW1vblByb3BzPiA9IHtcbiAgICAuLi5zY3JvbGxiYXJQcm9wcyxcbiAgICBzaXplcyxcbiAgICBvblNpemVzQ2hhbmdlOiBzZXRTaXplcyxcbiAgICBoYXNUaHVtYjogQm9vbGVhbih0aHVtYlJhdGlvID4gMCAmJiB0aHVtYlJhdGlvIDwgMSksXG4gICAgb25UaHVtYkNoYW5nZTogKHRodW1iKSA9PiAodGh1bWJSZWYuY3VycmVudCA9IHRodW1iKSxcbiAgICBvblRodW1iUG9pbnRlclVwOiAoKSA9PiAocG9pbnRlck9mZnNldFJlZi5jdXJyZW50ID0gMCksXG4gICAgb25UaHVtYlBvaW50ZXJEb3duOiAocG9pbnRlclBvcykgPT4gKHBvaW50ZXJPZmZzZXRSZWYuY3VycmVudCA9IHBvaW50ZXJQb3MpLFxuICB9O1xuXG4gIGZ1bmN0aW9uIGdldFNjcm9sbFBvc2l0aW9uKHBvaW50ZXJQb3M6IG51bWJlciwgZGlyPzogRGlyZWN0aW9uKSB7XG4gICAgcmV0dXJuIGdldFNjcm9sbFBvc2l0aW9uRnJvbVBvaW50ZXIocG9pbnRlclBvcywgcG9pbnRlck9mZnNldFJlZi5jdXJyZW50LCBzaXplcywgZGlyKTtcbiAgfVxuXG4gIGlmIChvcmllbnRhdGlvbiA9PT0gJ2hvcml6b250YWwnKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxTY3JvbGxBcmVhU2Nyb2xsYmFyWFxuICAgICAgICB7Li4uY29tbW9uUHJvcHN9XG4gICAgICAgIHJlZj17Zm9yd2FyZGVkUmVmfVxuICAgICAgICBvblRodW1iUG9zaXRpb25DaGFuZ2U9eygpID0+IHtcbiAgICAgICAgICBpZiAoY29udGV4dC52aWV3cG9ydCAmJiB0aHVtYlJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICBjb25zdCBzY3JvbGxQb3MgPSBjb250ZXh0LnZpZXdwb3J0LnNjcm9sbExlZnQ7XG4gICAgICAgICAgICBjb25zdCBvZmZzZXQgPSBnZXRUaHVtYk9mZnNldEZyb21TY3JvbGwoc2Nyb2xsUG9zLCBzaXplcywgY29udGV4dC5kaXIpO1xuICAgICAgICAgICAgdGh1bWJSZWYuY3VycmVudC5zdHlsZS50cmFuc2Zvcm0gPSBgdHJhbnNsYXRlM2QoJHtvZmZzZXR9cHgsIDAsIDApYDtcbiAgICAgICAgICB9XG4gICAgICAgIH19XG4gICAgICAgIG9uV2hlZWxTY3JvbGw9eyhzY3JvbGxQb3MpID0+IHtcbiAgICAgICAgICBpZiAoY29udGV4dC52aWV3cG9ydCkgY29udGV4dC52aWV3cG9ydC5zY3JvbGxMZWZ0ID0gc2Nyb2xsUG9zO1xuICAgICAgICB9fVxuICAgICAgICBvbkRyYWdTY3JvbGw9eyhwb2ludGVyUG9zKSA9PiB7XG4gICAgICAgICAgaWYgKGNvbnRleHQudmlld3BvcnQpIHtcbiAgICAgICAgICAgIGNvbnRleHQudmlld3BvcnQuc2Nyb2xsTGVmdCA9IGdldFNjcm9sbFBvc2l0aW9uKHBvaW50ZXJQb3MsIGNvbnRleHQuZGlyKTtcbiAgICAgICAgICB9XG4gICAgICAgIH19XG4gICAgICAvPlxuICAgICk7XG4gIH1cblxuICBpZiAob3JpZW50YXRpb24gPT09ICd2ZXJ0aWNhbCcpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPFNjcm9sbEFyZWFTY3JvbGxiYXJZXG4gICAgICAgIHsuLi5jb21tb25Qcm9wc31cbiAgICAgICAgcmVmPXtmb3J3YXJkZWRSZWZ9XG4gICAgICAgIG9uVGh1bWJQb3NpdGlvbkNoYW5nZT17KCkgPT4ge1xuICAgICAgICAgIGlmIChjb250ZXh0LnZpZXdwb3J0ICYmIHRodW1iUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIGNvbnN0IHNjcm9sbFBvcyA9IGNvbnRleHQudmlld3BvcnQuc2Nyb2xsVG9wO1xuICAgICAgICAgICAgY29uc3Qgb2Zmc2V0ID0gZ2V0VGh1bWJPZmZzZXRGcm9tU2Nyb2xsKHNjcm9sbFBvcywgc2l6ZXMpO1xuICAgICAgICAgICAgdGh1bWJSZWYuY3VycmVudC5zdHlsZS50cmFuc2Zvcm0gPSBgdHJhbnNsYXRlM2QoMCwgJHtvZmZzZXR9cHgsIDApYDtcbiAgICAgICAgICB9XG4gICAgICAgIH19XG4gICAgICAgIG9uV2hlZWxTY3JvbGw9eyhzY3JvbGxQb3MpID0+IHtcbiAgICAgICAgICBpZiAoY29udGV4dC52aWV3cG9ydCkgY29udGV4dC52aWV3cG9ydC5zY3JvbGxUb3AgPSBzY3JvbGxQb3M7XG4gICAgICAgIH19XG4gICAgICAgIG9uRHJhZ1Njcm9sbD17KHBvaW50ZXJQb3MpID0+IHtcbiAgICAgICAgICBpZiAoY29udGV4dC52aWV3cG9ydCkgY29udGV4dC52aWV3cG9ydC5zY3JvbGxUb3AgPSBnZXRTY3JvbGxQb3NpdGlvbihwb2ludGVyUG9zKTtcbiAgICAgICAgfX1cbiAgICAgIC8+XG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufSk7XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxudHlwZSBTY3JvbGxBcmVhU2Nyb2xsYmFyQXhpc1ByaXZhdGVQcm9wcyA9IHtcbiAgaGFzVGh1bWI6IGJvb2xlYW47XG4gIHNpemVzOiBTaXplcztcbiAgb25TaXplc0NoYW5nZShzaXplczogU2l6ZXMpOiB2b2lkO1xuICBvblRodW1iQ2hhbmdlKHRodW1iOiBTY3JvbGxBcmVhVGh1bWJFbGVtZW50IHwgbnVsbCk6IHZvaWQ7XG4gIG9uVGh1bWJQb2ludGVyRG93bihwb2ludGVyUG9zOiBudW1iZXIpOiB2b2lkO1xuICBvblRodW1iUG9pbnRlclVwKCk6IHZvaWQ7XG4gIG9uVGh1bWJQb3NpdGlvbkNoYW5nZSgpOiB2b2lkO1xuICBvbldoZWVsU2Nyb2xsKHNjcm9sbFBvczogbnVtYmVyKTogdm9pZDtcbiAgb25EcmFnU2Nyb2xsKHBvaW50ZXJQb3M6IG51bWJlcik6IHZvaWQ7XG59O1xuXG50eXBlIFNjcm9sbEFyZWFTY3JvbGxiYXJBeGlzRWxlbWVudCA9IFNjcm9sbEFyZWFTY3JvbGxiYXJJbXBsRWxlbWVudDtcbmludGVyZmFjZSBTY3JvbGxBcmVhU2Nyb2xsYmFyQXhpc1Byb3BzXG4gIGV4dGVuZHMgT21pdDxTY3JvbGxBcmVhU2Nyb2xsYmFySW1wbFByb3BzLCBrZXlvZiBTY3JvbGxBcmVhU2Nyb2xsYmFySW1wbFByaXZhdGVQcm9wcz4sXG4gICAgU2Nyb2xsQXJlYVNjcm9sbGJhckF4aXNQcml2YXRlUHJvcHMge31cblxuY29uc3QgU2Nyb2xsQXJlYVNjcm9sbGJhclggPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBTY3JvbGxBcmVhU2Nyb2xsYmFyQXhpc0VsZW1lbnQsXG4gIFNjcm9sbEFyZWFTY3JvbGxiYXJBeGlzUHJvcHNcbj4oKHByb3BzOiBTY29wZWRQcm9wczxTY3JvbGxBcmVhU2Nyb2xsYmFyQXhpc1Byb3BzPiwgZm9yd2FyZGVkUmVmKSA9PiB7XG4gIGNvbnN0IHsgc2l6ZXMsIG9uU2l6ZXNDaGFuZ2UsIC4uLnNjcm9sbGJhclByb3BzIH0gPSBwcm9wcztcbiAgY29uc3QgY29udGV4dCA9IHVzZVNjcm9sbEFyZWFDb250ZXh0KFNDUk9MTEJBUl9OQU1FLCBwcm9wcy5fX3Njb3BlU2Nyb2xsQXJlYSk7XG4gIGNvbnN0IFtjb21wdXRlZFN0eWxlLCBzZXRDb21wdXRlZFN0eWxlXSA9IFJlYWN0LnVzZVN0YXRlPENTU1N0eWxlRGVjbGFyYXRpb24+KCk7XG4gIGNvbnN0IHJlZiA9IFJlYWN0LnVzZVJlZjxTY3JvbGxBcmVhU2Nyb2xsYmFyQXhpc0VsZW1lbnQ+KG51bGwpO1xuICBjb25zdCBjb21wb3NlUmVmcyA9IHVzZUNvbXBvc2VkUmVmcyhmb3J3YXJkZWRSZWYsIHJlZiwgY29udGV4dC5vblNjcm9sbGJhclhDaGFuZ2UpO1xuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHJlZi5jdXJyZW50KSBzZXRDb21wdXRlZFN0eWxlKGdldENvbXB1dGVkU3R5bGUocmVmLmN1cnJlbnQpKTtcbiAgfSwgW3JlZl0pO1xuXG4gIHJldHVybiAoXG4gICAgPFNjcm9sbEFyZWFTY3JvbGxiYXJJbXBsXG4gICAgICBkYXRhLW9yaWVudGF0aW9uPVwiaG9yaXpvbnRhbFwiXG4gICAgICB7Li4uc2Nyb2xsYmFyUHJvcHN9XG4gICAgICByZWY9e2NvbXBvc2VSZWZzfVxuICAgICAgc2l6ZXM9e3NpemVzfVxuICAgICAgc3R5bGU9e3tcbiAgICAgICAgYm90dG9tOiAwLFxuICAgICAgICBsZWZ0OiBjb250ZXh0LmRpciA9PT0gJ3J0bCcgPyAndmFyKC0tcmFkaXgtc2Nyb2xsLWFyZWEtY29ybmVyLXdpZHRoKScgOiAwLFxuICAgICAgICByaWdodDogY29udGV4dC5kaXIgPT09ICdsdHInID8gJ3ZhcigtLXJhZGl4LXNjcm9sbC1hcmVhLWNvcm5lci13aWR0aCknIDogMCxcbiAgICAgICAgWyctLXJhZGl4LXNjcm9sbC1hcmVhLXRodW1iLXdpZHRoJyBhcyBhbnldOiBnZXRUaHVtYlNpemUoc2l6ZXMpICsgJ3B4JyxcbiAgICAgICAgLi4ucHJvcHMuc3R5bGUsXG4gICAgICB9fVxuICAgICAgb25UaHVtYlBvaW50ZXJEb3duPXsocG9pbnRlclBvcykgPT4gcHJvcHMub25UaHVtYlBvaW50ZXJEb3duKHBvaW50ZXJQb3MueCl9XG4gICAgICBvbkRyYWdTY3JvbGw9eyhwb2ludGVyUG9zKSA9PiBwcm9wcy5vbkRyYWdTY3JvbGwocG9pbnRlclBvcy54KX1cbiAgICAgIG9uV2hlZWxTY3JvbGw9eyhldmVudCwgbWF4U2Nyb2xsUG9zKSA9PiB7XG4gICAgICAgIGlmIChjb250ZXh0LnZpZXdwb3J0KSB7XG4gICAgICAgICAgY29uc3Qgc2Nyb2xsUG9zID0gY29udGV4dC52aWV3cG9ydC5zY3JvbGxMZWZ0ICsgZXZlbnQuZGVsdGFYO1xuICAgICAgICAgIHByb3BzLm9uV2hlZWxTY3JvbGwoc2Nyb2xsUG9zKTtcbiAgICAgICAgICAvLyBwcmV2ZW50IHdpbmRvdyBzY3JvbGwgd2hlbiB3aGVlbGluZyBvbiBzY3JvbGxiYXJcbiAgICAgICAgICBpZiAoaXNTY3JvbGxpbmdXaXRoaW5TY3JvbGxiYXJCb3VuZHMoc2Nyb2xsUG9zLCBtYXhTY3JvbGxQb3MpKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfX1cbiAgICAgIG9uUmVzaXplPXsoKSA9PiB7XG4gICAgICAgIGlmIChyZWYuY3VycmVudCAmJiBjb250ZXh0LnZpZXdwb3J0ICYmIGNvbXB1dGVkU3R5bGUpIHtcbiAgICAgICAgICBvblNpemVzQ2hhbmdlKHtcbiAgICAgICAgICAgIGNvbnRlbnQ6IGNvbnRleHQudmlld3BvcnQuc2Nyb2xsV2lkdGgsXG4gICAgICAgICAgICB2aWV3cG9ydDogY29udGV4dC52aWV3cG9ydC5vZmZzZXRXaWR0aCxcbiAgICAgICAgICAgIHNjcm9sbGJhcjoge1xuICAgICAgICAgICAgICBzaXplOiByZWYuY3VycmVudC5jbGllbnRXaWR0aCxcbiAgICAgICAgICAgICAgcGFkZGluZ1N0YXJ0OiB0b0ludChjb21wdXRlZFN0eWxlLnBhZGRpbmdMZWZ0KSxcbiAgICAgICAgICAgICAgcGFkZGluZ0VuZDogdG9JbnQoY29tcHV0ZWRTdHlsZS5wYWRkaW5nUmlnaHQpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfX1cbiAgICAvPlxuICApO1xufSk7XG5cbmNvbnN0IFNjcm9sbEFyZWFTY3JvbGxiYXJZID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgU2Nyb2xsQXJlYVNjcm9sbGJhckF4aXNFbGVtZW50LFxuICBTY3JvbGxBcmVhU2Nyb2xsYmFyQXhpc1Byb3BzXG4+KChwcm9wczogU2NvcGVkUHJvcHM8U2Nyb2xsQXJlYVNjcm9sbGJhckF4aXNQcm9wcz4sIGZvcndhcmRlZFJlZikgPT4ge1xuICBjb25zdCB7IHNpemVzLCBvblNpemVzQ2hhbmdlLCAuLi5zY3JvbGxiYXJQcm9wcyB9ID0gcHJvcHM7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VTY3JvbGxBcmVhQ29udGV4dChTQ1JPTExCQVJfTkFNRSwgcHJvcHMuX19zY29wZVNjcm9sbEFyZWEpO1xuICBjb25zdCBbY29tcHV0ZWRTdHlsZSwgc2V0Q29tcHV0ZWRTdHlsZV0gPSBSZWFjdC51c2VTdGF0ZTxDU1NTdHlsZURlY2xhcmF0aW9uPigpO1xuICBjb25zdCByZWYgPSBSZWFjdC51c2VSZWY8U2Nyb2xsQXJlYVNjcm9sbGJhckF4aXNFbGVtZW50PihudWxsKTtcbiAgY29uc3QgY29tcG9zZVJlZnMgPSB1c2VDb21wb3NlZFJlZnMoZm9yd2FyZGVkUmVmLCByZWYsIGNvbnRleHQub25TY3JvbGxiYXJZQ2hhbmdlKTtcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChyZWYuY3VycmVudCkgc2V0Q29tcHV0ZWRTdHlsZShnZXRDb21wdXRlZFN0eWxlKHJlZi5jdXJyZW50KSk7XG4gIH0sIFtyZWZdKTtcblxuICByZXR1cm4gKFxuICAgIDxTY3JvbGxBcmVhU2Nyb2xsYmFySW1wbFxuICAgICAgZGF0YS1vcmllbnRhdGlvbj1cInZlcnRpY2FsXCJcbiAgICAgIHsuLi5zY3JvbGxiYXJQcm9wc31cbiAgICAgIHJlZj17Y29tcG9zZVJlZnN9XG4gICAgICBzaXplcz17c2l6ZXN9XG4gICAgICBzdHlsZT17e1xuICAgICAgICB0b3A6IDAsXG4gICAgICAgIHJpZ2h0OiBjb250ZXh0LmRpciA9PT0gJ2x0cicgPyAwIDogdW5kZWZpbmVkLFxuICAgICAgICBsZWZ0OiBjb250ZXh0LmRpciA9PT0gJ3J0bCcgPyAwIDogdW5kZWZpbmVkLFxuICAgICAgICBib3R0b206ICd2YXIoLS1yYWRpeC1zY3JvbGwtYXJlYS1jb3JuZXItaGVpZ2h0KScsXG4gICAgICAgIFsnLS1yYWRpeC1zY3JvbGwtYXJlYS10aHVtYi1oZWlnaHQnIGFzIGFueV06IGdldFRodW1iU2l6ZShzaXplcykgKyAncHgnLFxuICAgICAgICAuLi5wcm9wcy5zdHlsZSxcbiAgICAgIH19XG4gICAgICBvblRodW1iUG9pbnRlckRvd249eyhwb2ludGVyUG9zKSA9PiBwcm9wcy5vblRodW1iUG9pbnRlckRvd24ocG9pbnRlclBvcy55KX1cbiAgICAgIG9uRHJhZ1Njcm9sbD17KHBvaW50ZXJQb3MpID0+IHByb3BzLm9uRHJhZ1Njcm9sbChwb2ludGVyUG9zLnkpfVxuICAgICAgb25XaGVlbFNjcm9sbD17KGV2ZW50LCBtYXhTY3JvbGxQb3MpID0+IHtcbiAgICAgICAgaWYgKGNvbnRleHQudmlld3BvcnQpIHtcbiAgICAgICAgICBjb25zdCBzY3JvbGxQb3MgPSBjb250ZXh0LnZpZXdwb3J0LnNjcm9sbFRvcCArIGV2ZW50LmRlbHRhWTtcbiAgICAgICAgICBwcm9wcy5vbldoZWVsU2Nyb2xsKHNjcm9sbFBvcyk7XG4gICAgICAgICAgLy8gcHJldmVudCB3aW5kb3cgc2Nyb2xsIHdoZW4gd2hlZWxpbmcgb24gc2Nyb2xsYmFyXG4gICAgICAgICAgaWYgKGlzU2Nyb2xsaW5nV2l0aGluU2Nyb2xsYmFyQm91bmRzKHNjcm9sbFBvcywgbWF4U2Nyb2xsUG9zKSkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH19XG4gICAgICBvblJlc2l6ZT17KCkgPT4ge1xuICAgICAgICBpZiAocmVmLmN1cnJlbnQgJiYgY29udGV4dC52aWV3cG9ydCAmJiBjb21wdXRlZFN0eWxlKSB7XG4gICAgICAgICAgb25TaXplc0NoYW5nZSh7XG4gICAgICAgICAgICBjb250ZW50OiBjb250ZXh0LnZpZXdwb3J0LnNjcm9sbEhlaWdodCxcbiAgICAgICAgICAgIHZpZXdwb3J0OiBjb250ZXh0LnZpZXdwb3J0Lm9mZnNldEhlaWdodCxcbiAgICAgICAgICAgIHNjcm9sbGJhcjoge1xuICAgICAgICAgICAgICBzaXplOiByZWYuY3VycmVudC5jbGllbnRIZWlnaHQsXG4gICAgICAgICAgICAgIHBhZGRpbmdTdGFydDogdG9JbnQoY29tcHV0ZWRTdHlsZS5wYWRkaW5nVG9wKSxcbiAgICAgICAgICAgICAgcGFkZGluZ0VuZDogdG9JbnQoY29tcHV0ZWRTdHlsZS5wYWRkaW5nQm90dG9tKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH19XG4gICAgLz5cbiAgKTtcbn0pO1xuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbnR5cGUgU2Nyb2xsYmFyQ29udGV4dCA9IHtcbiAgaGFzVGh1bWI6IGJvb2xlYW47XG4gIHNjcm9sbGJhcjogU2Nyb2xsQXJlYVNjcm9sbGJhckVsZW1lbnQgfCBudWxsO1xuICBvblRodW1iQ2hhbmdlKHRodW1iOiBTY3JvbGxBcmVhVGh1bWJFbGVtZW50IHwgbnVsbCk6IHZvaWQ7XG4gIG9uVGh1bWJQb2ludGVyVXAoKTogdm9pZDtcbiAgb25UaHVtYlBvaW50ZXJEb3duKHBvaW50ZXJQb3M6IHsgeDogbnVtYmVyOyB5OiBudW1iZXIgfSk6IHZvaWQ7XG4gIG9uVGh1bWJQb3NpdGlvbkNoYW5nZSgpOiB2b2lkO1xufTtcblxuY29uc3QgW1Njcm9sbGJhclByb3ZpZGVyLCB1c2VTY3JvbGxiYXJDb250ZXh0XSA9XG4gIGNyZWF0ZVNjcm9sbEFyZWFDb250ZXh0PFNjcm9sbGJhckNvbnRleHQ+KFNDUk9MTEJBUl9OQU1FKTtcblxudHlwZSBTY3JvbGxBcmVhU2Nyb2xsYmFySW1wbEVsZW1lbnQgPSBSZWFjdC5FbGVtZW50UmVmPHR5cGVvZiBQcmltaXRpdmUuZGl2PjtcbnR5cGUgU2Nyb2xsQXJlYVNjcm9sbGJhckltcGxQcml2YXRlUHJvcHMgPSB7XG4gIHNpemVzOiBTaXplcztcbiAgaGFzVGh1bWI6IGJvb2xlYW47XG4gIG9uVGh1bWJDaGFuZ2U6IFNjcm9sbGJhckNvbnRleHRbJ29uVGh1bWJDaGFuZ2UnXTtcbiAgb25UaHVtYlBvaW50ZXJVcDogU2Nyb2xsYmFyQ29udGV4dFsnb25UaHVtYlBvaW50ZXJVcCddO1xuICBvblRodW1iUG9pbnRlckRvd246IFNjcm9sbGJhckNvbnRleHRbJ29uVGh1bWJQb2ludGVyRG93biddO1xuICBvblRodW1iUG9zaXRpb25DaGFuZ2U6IFNjcm9sbGJhckNvbnRleHRbJ29uVGh1bWJQb3NpdGlvbkNoYW5nZSddO1xuICBvbldoZWVsU2Nyb2xsKGV2ZW50OiBXaGVlbEV2ZW50LCBtYXhTY3JvbGxQb3M6IG51bWJlcik6IHZvaWQ7XG4gIG9uRHJhZ1Njcm9sbChwb2ludGVyUG9zOiB7IHg6IG51bWJlcjsgeTogbnVtYmVyIH0pOiB2b2lkO1xuICBvblJlc2l6ZSgpOiB2b2lkO1xufTtcbmludGVyZmFjZSBTY3JvbGxBcmVhU2Nyb2xsYmFySW1wbFByb3BzXG4gIGV4dGVuZHMgT21pdDxQcmltaXRpdmVEaXZQcm9wcywga2V5b2YgU2Nyb2xsQXJlYVNjcm9sbGJhckltcGxQcml2YXRlUHJvcHM+LFxuICAgIFNjcm9sbEFyZWFTY3JvbGxiYXJJbXBsUHJpdmF0ZVByb3BzIHt9XG5cbmNvbnN0IFNjcm9sbEFyZWFTY3JvbGxiYXJJbXBsID0gUmVhY3QuZm9yd2FyZFJlZjxcbiAgU2Nyb2xsQXJlYVNjcm9sbGJhckltcGxFbGVtZW50LFxuICBTY3JvbGxBcmVhU2Nyb2xsYmFySW1wbFByb3BzXG4+KChwcm9wczogU2NvcGVkUHJvcHM8U2Nyb2xsQXJlYVNjcm9sbGJhckltcGxQcm9wcz4sIGZvcndhcmRlZFJlZikgPT4ge1xuICBjb25zdCB7XG4gICAgX19zY29wZVNjcm9sbEFyZWEsXG4gICAgc2l6ZXMsXG4gICAgaGFzVGh1bWIsXG4gICAgb25UaHVtYkNoYW5nZSxcbiAgICBvblRodW1iUG9pbnRlclVwLFxuICAgIG9uVGh1bWJQb2ludGVyRG93bixcbiAgICBvblRodW1iUG9zaXRpb25DaGFuZ2UsXG4gICAgb25EcmFnU2Nyb2xsLFxuICAgIG9uV2hlZWxTY3JvbGwsXG4gICAgb25SZXNpemUsXG4gICAgLi4uc2Nyb2xsYmFyUHJvcHNcbiAgfSA9IHByb3BzO1xuICBjb25zdCBjb250ZXh0ID0gdXNlU2Nyb2xsQXJlYUNvbnRleHQoU0NST0xMQkFSX05BTUUsIF9fc2NvcGVTY3JvbGxBcmVhKTtcbiAgY29uc3QgW3Njcm9sbGJhciwgc2V0U2Nyb2xsYmFyXSA9IFJlYWN0LnVzZVN0YXRlPFNjcm9sbEFyZWFTY3JvbGxiYXJFbGVtZW50IHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IGNvbXBvc2VSZWZzID0gdXNlQ29tcG9zZWRSZWZzKGZvcndhcmRlZFJlZiwgKG5vZGUpID0+IHNldFNjcm9sbGJhcihub2RlKSk7XG4gIGNvbnN0IHJlY3RSZWYgPSBSZWFjdC51c2VSZWY8RE9NUmVjdCB8IG51bGw+KG51bGwpO1xuICBjb25zdCBwcmV2V2Via2l0VXNlclNlbGVjdFJlZiA9IFJlYWN0LnVzZVJlZjxzdHJpbmc+KCcnKTtcbiAgY29uc3Qgdmlld3BvcnQgPSBjb250ZXh0LnZpZXdwb3J0O1xuICBjb25zdCBtYXhTY3JvbGxQb3MgPSBzaXplcy5jb250ZW50IC0gc2l6ZXMudmlld3BvcnQ7XG4gIGNvbnN0IGhhbmRsZVdoZWVsU2Nyb2xsID0gdXNlQ2FsbGJhY2tSZWYob25XaGVlbFNjcm9sbCk7XG4gIGNvbnN0IGhhbmRsZVRodW1iUG9zaXRpb25DaGFuZ2UgPSB1c2VDYWxsYmFja1JlZihvblRodW1iUG9zaXRpb25DaGFuZ2UpO1xuICBjb25zdCBoYW5kbGVSZXNpemUgPSB1c2VEZWJvdW5jZUNhbGxiYWNrKG9uUmVzaXplLCAxMCk7XG5cbiAgZnVuY3Rpb24gaGFuZGxlRHJhZ1Njcm9sbChldmVudDogUmVhY3QuUG9pbnRlckV2ZW50PEhUTUxFbGVtZW50Pikge1xuICAgIGlmIChyZWN0UmVmLmN1cnJlbnQpIHtcbiAgICAgIGNvbnN0IHggPSBldmVudC5jbGllbnRYIC0gcmVjdFJlZi5jdXJyZW50LmxlZnQ7XG4gICAgICBjb25zdCB5ID0gZXZlbnQuY2xpZW50WSAtIHJlY3RSZWYuY3VycmVudC50b3A7XG4gICAgICBvbkRyYWdTY3JvbGwoeyB4LCB5IH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBXZSBiaW5kIHdoZWVsIGV2ZW50IGltcGVyYXRpdmVseSBzbyB3ZSBjYW4gc3dpdGNoIG9mZiBwYXNzaXZlXG4gICAqIG1vZGUgZm9yIGRvY3VtZW50IHdoZWVsIGV2ZW50IHRvIGFsbG93IGl0IHRvIGJlIHByZXZlbnRlZFxuICAgKi9cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBoYW5kbGVXaGVlbCA9IChldmVudDogV2hlZWxFdmVudCkgPT4ge1xuICAgICAgY29uc3QgZWxlbWVudCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICAgIGNvbnN0IGlzU2Nyb2xsYmFyV2hlZWwgPSBzY3JvbGxiYXI/LmNvbnRhaW5zKGVsZW1lbnQpO1xuICAgICAgaWYgKGlzU2Nyb2xsYmFyV2hlZWwpIGhhbmRsZVdoZWVsU2Nyb2xsKGV2ZW50LCBtYXhTY3JvbGxQb3MpO1xuICAgIH07XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignd2hlZWwnLCBoYW5kbGVXaGVlbCwgeyBwYXNzaXZlOiBmYWxzZSB9KTtcbiAgICByZXR1cm4gKCkgPT4gZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignd2hlZWwnLCBoYW5kbGVXaGVlbCwgeyBwYXNzaXZlOiBmYWxzZSB9IGFzIGFueSk7XG4gIH0sIFt2aWV3cG9ydCwgc2Nyb2xsYmFyLCBtYXhTY3JvbGxQb3MsIGhhbmRsZVdoZWVsU2Nyb2xsXSk7XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSB0aHVtYiBwb3NpdGlvbiBvbiBzaXplcyBjaGFuZ2VcbiAgICovXG4gIFJlYWN0LnVzZUVmZmVjdChoYW5kbGVUaHVtYlBvc2l0aW9uQ2hhbmdlLCBbc2l6ZXMsIGhhbmRsZVRodW1iUG9zaXRpb25DaGFuZ2VdKTtcblxuICB1c2VSZXNpemVPYnNlcnZlcihzY3JvbGxiYXIsIGhhbmRsZVJlc2l6ZSk7XG4gIHVzZVJlc2l6ZU9ic2VydmVyKGNvbnRleHQuY29udGVudCwgaGFuZGxlUmVzaXplKTtcblxuICByZXR1cm4gKFxuICAgIDxTY3JvbGxiYXJQcm92aWRlclxuICAgICAgc2NvcGU9e19fc2NvcGVTY3JvbGxBcmVhfVxuICAgICAgc2Nyb2xsYmFyPXtzY3JvbGxiYXJ9XG4gICAgICBoYXNUaHVtYj17aGFzVGh1bWJ9XG4gICAgICBvblRodW1iQ2hhbmdlPXt1c2VDYWxsYmFja1JlZihvblRodW1iQ2hhbmdlKX1cbiAgICAgIG9uVGh1bWJQb2ludGVyVXA9e3VzZUNhbGxiYWNrUmVmKG9uVGh1bWJQb2ludGVyVXApfVxuICAgICAgb25UaHVtYlBvc2l0aW9uQ2hhbmdlPXtoYW5kbGVUaHVtYlBvc2l0aW9uQ2hhbmdlfVxuICAgICAgb25UaHVtYlBvaW50ZXJEb3duPXt1c2VDYWxsYmFja1JlZihvblRodW1iUG9pbnRlckRvd24pfVxuICAgID5cbiAgICAgIDxQcmltaXRpdmUuZGl2XG4gICAgICAgIHsuLi5zY3JvbGxiYXJQcm9wc31cbiAgICAgICAgcmVmPXtjb21wb3NlUmVmc31cbiAgICAgICAgc3R5bGU9e3sgcG9zaXRpb246ICdhYnNvbHV0ZScsIC4uLnNjcm9sbGJhclByb3BzLnN0eWxlIH19XG4gICAgICAgIG9uUG9pbnRlckRvd249e2NvbXBvc2VFdmVudEhhbmRsZXJzKHByb3BzLm9uUG9pbnRlckRvd24sIChldmVudCkgPT4ge1xuICAgICAgICAgIGNvbnN0IG1haW5Qb2ludGVyID0gMDtcbiAgICAgICAgICBpZiAoZXZlbnQuYnV0dG9uID09PSBtYWluUG9pbnRlcikge1xuICAgICAgICAgICAgY29uc3QgZWxlbWVudCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgICAgIGVsZW1lbnQuc2V0UG9pbnRlckNhcHR1cmUoZXZlbnQucG9pbnRlcklkKTtcbiAgICAgICAgICAgIHJlY3RSZWYuY3VycmVudCA9IHNjcm9sbGJhciEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgICAgICAvLyBwb2ludGVyIGNhcHR1cmUgZG9lc24ndCBwcmV2ZW50IHRleHQgc2VsZWN0aW9uIGluIFNhZmFyaVxuICAgICAgICAgICAgLy8gc28gd2UgcmVtb3ZlIHRleHQgc2VsZWN0aW9uIG1hbnVhbGx5IHdoZW4gc2Nyb2xsaW5nXG4gICAgICAgICAgICBwcmV2V2Via2l0VXNlclNlbGVjdFJlZi5jdXJyZW50ID0gZG9jdW1lbnQuYm9keS5zdHlsZS53ZWJraXRVc2VyU2VsZWN0O1xuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS53ZWJraXRVc2VyU2VsZWN0ID0gJ25vbmUnO1xuICAgICAgICAgICAgaWYgKGNvbnRleHQudmlld3BvcnQpIGNvbnRleHQudmlld3BvcnQuc3R5bGUuc2Nyb2xsQmVoYXZpb3IgPSAnYXV0byc7XG4gICAgICAgICAgICBoYW5kbGVEcmFnU2Nyb2xsKGV2ZW50KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pfVxuICAgICAgICBvblBvaW50ZXJNb3ZlPXtjb21wb3NlRXZlbnRIYW5kbGVycyhwcm9wcy5vblBvaW50ZXJNb3ZlLCBoYW5kbGVEcmFnU2Nyb2xsKX1cbiAgICAgICAgb25Qb2ludGVyVXA9e2NvbXBvc2VFdmVudEhhbmRsZXJzKHByb3BzLm9uUG9pbnRlclVwLCAoZXZlbnQpID0+IHtcbiAgICAgICAgICBjb25zdCBlbGVtZW50ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgICAgICAgIGlmIChlbGVtZW50Lmhhc1BvaW50ZXJDYXB0dXJlKGV2ZW50LnBvaW50ZXJJZCkpIHtcbiAgICAgICAgICAgIGVsZW1lbnQucmVsZWFzZVBvaW50ZXJDYXB0dXJlKGV2ZW50LnBvaW50ZXJJZCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUud2Via2l0VXNlclNlbGVjdCA9IHByZXZXZWJraXRVc2VyU2VsZWN0UmVmLmN1cnJlbnQ7XG4gICAgICAgICAgaWYgKGNvbnRleHQudmlld3BvcnQpIGNvbnRleHQudmlld3BvcnQuc3R5bGUuc2Nyb2xsQmVoYXZpb3IgPSAnJztcbiAgICAgICAgICByZWN0UmVmLmN1cnJlbnQgPSBudWxsO1xuICAgICAgICB9KX1cbiAgICAgIC8+XG4gICAgPC9TY3JvbGxiYXJQcm92aWRlcj5cbiAgKTtcbn0pO1xuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBTY3JvbGxBcmVhVGh1bWJcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuY29uc3QgVEhVTUJfTkFNRSA9ICdTY3JvbGxBcmVhVGh1bWInO1xuXG50eXBlIFNjcm9sbEFyZWFUaHVtYkVsZW1lbnQgPSBTY3JvbGxBcmVhVGh1bWJJbXBsRWxlbWVudDtcbmludGVyZmFjZSBTY3JvbGxBcmVhVGh1bWJQcm9wcyBleHRlbmRzIFNjcm9sbEFyZWFUaHVtYkltcGxQcm9wcyB7XG4gIC8qKlxuICAgKiBVc2VkIHRvIGZvcmNlIG1vdW50aW5nIHdoZW4gbW9yZSBjb250cm9sIGlzIG5lZWRlZC4gVXNlZnVsIHdoZW5cbiAgICogY29udHJvbGxpbmcgYW5pbWF0aW9uIHdpdGggUmVhY3QgYW5pbWF0aW9uIGxpYnJhcmllcy5cbiAgICovXG4gIGZvcmNlTW91bnQ/OiB0cnVlO1xufVxuXG5jb25zdCBTY3JvbGxBcmVhVGh1bWIgPSBSZWFjdC5mb3J3YXJkUmVmPFNjcm9sbEFyZWFUaHVtYkVsZW1lbnQsIFNjcm9sbEFyZWFUaHVtYlByb3BzPihcbiAgKHByb3BzOiBTY29wZWRQcm9wczxTY3JvbGxBcmVhVGh1bWJQcm9wcz4sIGZvcndhcmRlZFJlZikgPT4ge1xuICAgIGNvbnN0IHsgZm9yY2VNb3VudCwgLi4udGh1bWJQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3Qgc2Nyb2xsYmFyQ29udGV4dCA9IHVzZVNjcm9sbGJhckNvbnRleHQoVEhVTUJfTkFNRSwgcHJvcHMuX19zY29wZVNjcm9sbEFyZWEpO1xuICAgIHJldHVybiAoXG4gICAgICA8UHJlc2VuY2UgcHJlc2VudD17Zm9yY2VNb3VudCB8fCBzY3JvbGxiYXJDb250ZXh0Lmhhc1RodW1ifT5cbiAgICAgICAgPFNjcm9sbEFyZWFUaHVtYkltcGwgcmVmPXtmb3J3YXJkZWRSZWZ9IHsuLi50aHVtYlByb3BzfSAvPlxuICAgICAgPC9QcmVzZW5jZT5cbiAgICApO1xuICB9XG4pO1xuXG50eXBlIFNjcm9sbEFyZWFUaHVtYkltcGxFbGVtZW50ID0gUmVhY3QuRWxlbWVudFJlZjx0eXBlb2YgUHJpbWl0aXZlLmRpdj47XG5pbnRlcmZhY2UgU2Nyb2xsQXJlYVRodW1iSW1wbFByb3BzIGV4dGVuZHMgUHJpbWl0aXZlRGl2UHJvcHMge31cblxuY29uc3QgU2Nyb2xsQXJlYVRodW1iSW1wbCA9IFJlYWN0LmZvcndhcmRSZWY8U2Nyb2xsQXJlYVRodW1iSW1wbEVsZW1lbnQsIFNjcm9sbEFyZWFUaHVtYkltcGxQcm9wcz4oXG4gIChwcm9wczogU2NvcGVkUHJvcHM8U2Nyb2xsQXJlYVRodW1iSW1wbFByb3BzPiwgZm9yd2FyZGVkUmVmKSA9PiB7XG4gICAgY29uc3QgeyBfX3Njb3BlU2Nyb2xsQXJlYSwgc3R5bGUsIC4uLnRodW1iUHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IHNjcm9sbEFyZWFDb250ZXh0ID0gdXNlU2Nyb2xsQXJlYUNvbnRleHQoVEhVTUJfTkFNRSwgX19zY29wZVNjcm9sbEFyZWEpO1xuICAgIGNvbnN0IHNjcm9sbGJhckNvbnRleHQgPSB1c2VTY3JvbGxiYXJDb250ZXh0KFRIVU1CX05BTUUsIF9fc2NvcGVTY3JvbGxBcmVhKTtcbiAgICBjb25zdCB7IG9uVGh1bWJQb3NpdGlvbkNoYW5nZSB9ID0gc2Nyb2xsYmFyQ29udGV4dDtcbiAgICBjb25zdCBjb21wb3NlZFJlZiA9IHVzZUNvbXBvc2VkUmVmcyhmb3J3YXJkZWRSZWYsIChub2RlKSA9PlxuICAgICAgc2Nyb2xsYmFyQ29udGV4dC5vblRodW1iQ2hhbmdlKG5vZGUpXG4gICAgKTtcbiAgICBjb25zdCByZW1vdmVVbmxpbmtlZFNjcm9sbExpc3RlbmVyUmVmID0gUmVhY3QudXNlUmVmPCgpID0+IHZvaWQ+KHVuZGVmaW5lZCk7XG4gICAgY29uc3QgZGVib3VuY2VTY3JvbGxFbmQgPSB1c2VEZWJvdW5jZUNhbGxiYWNrKCgpID0+IHtcbiAgICAgIGlmIChyZW1vdmVVbmxpbmtlZFNjcm9sbExpc3RlbmVyUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgcmVtb3ZlVW5saW5rZWRTY3JvbGxMaXN0ZW5lclJlZi5jdXJyZW50KCk7XG4gICAgICAgIHJlbW92ZVVubGlua2VkU2Nyb2xsTGlzdGVuZXJSZWYuY3VycmVudCA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICB9LCAxMDApO1xuXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IHZpZXdwb3J0ID0gc2Nyb2xsQXJlYUNvbnRleHQudmlld3BvcnQ7XG4gICAgICBpZiAodmlld3BvcnQpIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFdlIG9ubHkgYmluZCB0byBuYXRpdmUgc2Nyb2xsIGV2ZW50IHNvIHdlIGtub3cgd2hlbiBzY3JvbGwgc3RhcnRzIGFuZCBlbmRzLlxuICAgICAgICAgKiBXaGVuIHNjcm9sbCBzdGFydHMgd2Ugc3RhcnQgYSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgbG9vcCB0aGF0IGNoZWNrcyBmb3JcbiAgICAgICAgICogY2hhbmdlcyB0byBzY3JvbGwgcG9zaXRpb24uIFRoYXQgckFGIGxvb3AgdHJpZ2dlcnMgb3VyIHRodW1iIHBvc2l0aW9uIGNoYW5nZVxuICAgICAgICAgKiB3aGVuIHJlbGV2YW50IHRvIGF2b2lkIHNjcm9sbC1saW5rZWQgZWZmZWN0cy4gV2UgY2FuY2VsIHRoZSBsb29wIHdoZW4gc2Nyb2xsIGVuZHMuXG4gICAgICAgICAqIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvTW96aWxsYS9QZXJmb3JtYW5jZS9TY3JvbGwtbGlua2VkX2VmZmVjdHNcbiAgICAgICAgICovXG4gICAgICAgIGNvbnN0IGhhbmRsZVNjcm9sbCA9ICgpID0+IHtcbiAgICAgICAgICBkZWJvdW5jZVNjcm9sbEVuZCgpO1xuICAgICAgICAgIGlmICghcmVtb3ZlVW5saW5rZWRTY3JvbGxMaXN0ZW5lclJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICBjb25zdCBsaXN0ZW5lciA9IGFkZFVubGlua2VkU2Nyb2xsTGlzdGVuZXIodmlld3BvcnQsIG9uVGh1bWJQb3NpdGlvbkNoYW5nZSk7XG4gICAgICAgICAgICByZW1vdmVVbmxpbmtlZFNjcm9sbExpc3RlbmVyUmVmLmN1cnJlbnQgPSBsaXN0ZW5lcjtcbiAgICAgICAgICAgIG9uVGh1bWJQb3NpdGlvbkNoYW5nZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgb25UaHVtYlBvc2l0aW9uQ2hhbmdlKCk7XG4gICAgICAgIHZpZXdwb3J0LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZVNjcm9sbCk7XG4gICAgICAgIHJldHVybiAoKSA9PiB2aWV3cG9ydC5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVTY3JvbGwpO1xuICAgICAgfVxuICAgIH0sIFtzY3JvbGxBcmVhQ29udGV4dC52aWV3cG9ydCwgZGVib3VuY2VTY3JvbGxFbmQsIG9uVGh1bWJQb3NpdGlvbkNoYW5nZV0pO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxQcmltaXRpdmUuZGl2XG4gICAgICAgIGRhdGEtc3RhdGU9e3Njcm9sbGJhckNvbnRleHQuaGFzVGh1bWIgPyAndmlzaWJsZScgOiAnaGlkZGVuJ31cbiAgICAgICAgey4uLnRodW1iUHJvcHN9XG4gICAgICAgIHJlZj17Y29tcG9zZWRSZWZ9XG4gICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgd2lkdGg6ICd2YXIoLS1yYWRpeC1zY3JvbGwtYXJlYS10aHVtYi13aWR0aCknLFxuICAgICAgICAgIGhlaWdodDogJ3ZhcigtLXJhZGl4LXNjcm9sbC1hcmVhLXRodW1iLWhlaWdodCknLFxuICAgICAgICAgIC4uLnN0eWxlLFxuICAgICAgICB9fVxuICAgICAgICBvblBvaW50ZXJEb3duQ2FwdHVyZT17Y29tcG9zZUV2ZW50SGFuZGxlcnMocHJvcHMub25Qb2ludGVyRG93bkNhcHR1cmUsIChldmVudCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHRodW1iID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgICAgICAgIGNvbnN0IHRodW1iUmVjdCA9IHRodW1iLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICAgIGNvbnN0IHggPSBldmVudC5jbGllbnRYIC0gdGh1bWJSZWN0LmxlZnQ7XG4gICAgICAgICAgY29uc3QgeSA9IGV2ZW50LmNsaWVudFkgLSB0aHVtYlJlY3QudG9wO1xuICAgICAgICAgIHNjcm9sbGJhckNvbnRleHQub25UaHVtYlBvaW50ZXJEb3duKHsgeCwgeSB9KTtcbiAgICAgICAgfSl9XG4gICAgICAgIG9uUG9pbnRlclVwPXtjb21wb3NlRXZlbnRIYW5kbGVycyhwcm9wcy5vblBvaW50ZXJVcCwgc2Nyb2xsYmFyQ29udGV4dC5vblRodW1iUG9pbnRlclVwKX1cbiAgICAgIC8+XG4gICAgKTtcbiAgfVxuKTtcblxuU2Nyb2xsQXJlYVRodW1iLmRpc3BsYXlOYW1lID0gVEhVTUJfTkFNRTtcblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogU2Nyb2xsQXJlYUNvcm5lclxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG5jb25zdCBDT1JORVJfTkFNRSA9ICdTY3JvbGxBcmVhQ29ybmVyJztcblxudHlwZSBTY3JvbGxBcmVhQ29ybmVyRWxlbWVudCA9IFNjcm9sbEFyZWFDb3JuZXJJbXBsRWxlbWVudDtcbmludGVyZmFjZSBTY3JvbGxBcmVhQ29ybmVyUHJvcHMgZXh0ZW5kcyBTY3JvbGxBcmVhQ29ybmVySW1wbFByb3BzIHt9XG5cbmNvbnN0IFNjcm9sbEFyZWFDb3JuZXIgPSBSZWFjdC5mb3J3YXJkUmVmPFNjcm9sbEFyZWFDb3JuZXJFbGVtZW50LCBTY3JvbGxBcmVhQ29ybmVyUHJvcHM+KFxuICAocHJvcHM6IFNjb3BlZFByb3BzPFNjcm9sbEFyZWFDb3JuZXJQcm9wcz4sIGZvcndhcmRlZFJlZikgPT4ge1xuICAgIGNvbnN0IGNvbnRleHQgPSB1c2VTY3JvbGxBcmVhQ29udGV4dChDT1JORVJfTkFNRSwgcHJvcHMuX19zY29wZVNjcm9sbEFyZWEpO1xuICAgIGNvbnN0IGhhc0JvdGhTY3JvbGxiYXJzVmlzaWJsZSA9IEJvb2xlYW4oY29udGV4dC5zY3JvbGxiYXJYICYmIGNvbnRleHQuc2Nyb2xsYmFyWSk7XG4gICAgY29uc3QgaGFzQ29ybmVyID0gY29udGV4dC50eXBlICE9PSAnc2Nyb2xsJyAmJiBoYXNCb3RoU2Nyb2xsYmFyc1Zpc2libGU7XG4gICAgcmV0dXJuIGhhc0Nvcm5lciA/IDxTY3JvbGxBcmVhQ29ybmVySW1wbCB7Li4ucHJvcHN9IHJlZj17Zm9yd2FyZGVkUmVmfSAvPiA6IG51bGw7XG4gIH1cbik7XG5cblNjcm9sbEFyZWFDb3JuZXIuZGlzcGxheU5hbWUgPSBDT1JORVJfTkFNRTtcblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG50eXBlIFNjcm9sbEFyZWFDb3JuZXJJbXBsRWxlbWVudCA9IFJlYWN0LkVsZW1lbnRSZWY8dHlwZW9mIFByaW1pdGl2ZS5kaXY+O1xuaW50ZXJmYWNlIFNjcm9sbEFyZWFDb3JuZXJJbXBsUHJvcHMgZXh0ZW5kcyBQcmltaXRpdmVEaXZQcm9wcyB7fVxuXG5jb25zdCBTY3JvbGxBcmVhQ29ybmVySW1wbCA9IFJlYWN0LmZvcndhcmRSZWY8XG4gIFNjcm9sbEFyZWFDb3JuZXJJbXBsRWxlbWVudCxcbiAgU2Nyb2xsQXJlYUNvcm5lckltcGxQcm9wc1xuPigocHJvcHM6IFNjb3BlZFByb3BzPFNjcm9sbEFyZWFDb3JuZXJJbXBsUHJvcHM+LCBmb3J3YXJkZWRSZWYpID0+IHtcbiAgY29uc3QgeyBfX3Njb3BlU2Nyb2xsQXJlYSwgLi4uY29ybmVyUHJvcHMgfSA9IHByb3BzO1xuICBjb25zdCBjb250ZXh0ID0gdXNlU2Nyb2xsQXJlYUNvbnRleHQoQ09STkVSX05BTUUsIF9fc2NvcGVTY3JvbGxBcmVhKTtcbiAgY29uc3QgW3dpZHRoLCBzZXRXaWR0aF0gPSBSZWFjdC51c2VTdGF0ZSgwKTtcbiAgY29uc3QgW2hlaWdodCwgc2V0SGVpZ2h0XSA9IFJlYWN0LnVzZVN0YXRlKDApO1xuICBjb25zdCBoYXNTaXplID0gQm9vbGVhbih3aWR0aCAmJiBoZWlnaHQpO1xuXG4gIHVzZVJlc2l6ZU9ic2VydmVyKGNvbnRleHQuc2Nyb2xsYmFyWCwgKCkgPT4ge1xuICAgIGNvbnN0IGhlaWdodCA9IGNvbnRleHQuc2Nyb2xsYmFyWD8ub2Zmc2V0SGVpZ2h0IHx8IDA7XG4gICAgY29udGV4dC5vbkNvcm5lckhlaWdodENoYW5nZShoZWlnaHQpO1xuICAgIHNldEhlaWdodChoZWlnaHQpO1xuICB9KTtcblxuICB1c2VSZXNpemVPYnNlcnZlcihjb250ZXh0LnNjcm9sbGJhclksICgpID0+IHtcbiAgICBjb25zdCB3aWR0aCA9IGNvbnRleHQuc2Nyb2xsYmFyWT8ub2Zmc2V0V2lkdGggfHwgMDtcbiAgICBjb250ZXh0Lm9uQ29ybmVyV2lkdGhDaGFuZ2Uod2lkdGgpO1xuICAgIHNldFdpZHRoKHdpZHRoKTtcbiAgfSk7XG5cbiAgcmV0dXJuIGhhc1NpemUgPyAoXG4gICAgPFByaW1pdGl2ZS5kaXZcbiAgICAgIHsuLi5jb3JuZXJQcm9wc31cbiAgICAgIHJlZj17Zm9yd2FyZGVkUmVmfVxuICAgICAgc3R5bGU9e3tcbiAgICAgICAgd2lkdGgsXG4gICAgICAgIGhlaWdodCxcbiAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICAgIHJpZ2h0OiBjb250ZXh0LmRpciA9PT0gJ2x0cicgPyAwIDogdW5kZWZpbmVkLFxuICAgICAgICBsZWZ0OiBjb250ZXh0LmRpciA9PT0gJ3J0bCcgPyAwIDogdW5kZWZpbmVkLFxuICAgICAgICBib3R0b206IDAsXG4gICAgICAgIC4uLnByb3BzLnN0eWxlLFxuICAgICAgfX1cbiAgICAvPlxuICApIDogbnVsbDtcbn0pO1xuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbmZ1bmN0aW9uIHRvSW50KHZhbHVlPzogc3RyaW5nKSB7XG4gIHJldHVybiB2YWx1ZSA/IHBhcnNlSW50KHZhbHVlLCAxMCkgOiAwO1xufVxuXG5mdW5jdGlvbiBnZXRUaHVtYlJhdGlvKHZpZXdwb3J0U2l6ZTogbnVtYmVyLCBjb250ZW50U2l6ZTogbnVtYmVyKSB7XG4gIGNvbnN0IHJhdGlvID0gdmlld3BvcnRTaXplIC8gY29udGVudFNpemU7XG4gIHJldHVybiBpc05hTihyYXRpbykgPyAwIDogcmF0aW87XG59XG5cbmZ1bmN0aW9uIGdldFRodW1iU2l6ZShzaXplczogU2l6ZXMpIHtcbiAgY29uc3QgcmF0aW8gPSBnZXRUaHVtYlJhdGlvKHNpemVzLnZpZXdwb3J0LCBzaXplcy5jb250ZW50KTtcbiAgY29uc3Qgc2Nyb2xsYmFyUGFkZGluZyA9IHNpemVzLnNjcm9sbGJhci5wYWRkaW5nU3RhcnQgKyBzaXplcy5zY3JvbGxiYXIucGFkZGluZ0VuZDtcbiAgY29uc3QgdGh1bWJTaXplID0gKHNpemVzLnNjcm9sbGJhci5zaXplIC0gc2Nyb2xsYmFyUGFkZGluZykgKiByYXRpbztcbiAgLy8gbWluaW11bSBvZiAxOCBtYXRjaGVzIG1hY09TIG1pbmltdW1cbiAgcmV0dXJuIE1hdGgubWF4KHRodW1iU2l6ZSwgMTgpO1xufVxuXG5mdW5jdGlvbiBnZXRTY3JvbGxQb3NpdGlvbkZyb21Qb2ludGVyKFxuICBwb2ludGVyUG9zOiBudW1iZXIsXG4gIHBvaW50ZXJPZmZzZXQ6IG51bWJlcixcbiAgc2l6ZXM6IFNpemVzLFxuICBkaXI6IERpcmVjdGlvbiA9ICdsdHInXG4pIHtcbiAgY29uc3QgdGh1bWJTaXplUHggPSBnZXRUaHVtYlNpemUoc2l6ZXMpO1xuICBjb25zdCB0aHVtYkNlbnRlciA9IHRodW1iU2l6ZVB4IC8gMjtcbiAgY29uc3Qgb2Zmc2V0ID0gcG9pbnRlck9mZnNldCB8fCB0aHVtYkNlbnRlcjtcbiAgY29uc3QgdGh1bWJPZmZzZXRGcm9tRW5kID0gdGh1bWJTaXplUHggLSBvZmZzZXQ7XG4gIGNvbnN0IG1pblBvaW50ZXJQb3MgPSBzaXplcy5zY3JvbGxiYXIucGFkZGluZ1N0YXJ0ICsgb2Zmc2V0O1xuICBjb25zdCBtYXhQb2ludGVyUG9zID0gc2l6ZXMuc2Nyb2xsYmFyLnNpemUgLSBzaXplcy5zY3JvbGxiYXIucGFkZGluZ0VuZCAtIHRodW1iT2Zmc2V0RnJvbUVuZDtcbiAgY29uc3QgbWF4U2Nyb2xsUG9zID0gc2l6ZXMuY29udGVudCAtIHNpemVzLnZpZXdwb3J0O1xuICBjb25zdCBzY3JvbGxSYW5nZSA9IGRpciA9PT0gJ2x0cicgPyBbMCwgbWF4U2Nyb2xsUG9zXSA6IFttYXhTY3JvbGxQb3MgKiAtMSwgMF07XG4gIGNvbnN0IGludGVycG9sYXRlID0gbGluZWFyU2NhbGUoW21pblBvaW50ZXJQb3MsIG1heFBvaW50ZXJQb3NdLCBzY3JvbGxSYW5nZSBhcyBbbnVtYmVyLCBudW1iZXJdKTtcbiAgcmV0dXJuIGludGVycG9sYXRlKHBvaW50ZXJQb3MpO1xufVxuXG5mdW5jdGlvbiBnZXRUaHVtYk9mZnNldEZyb21TY3JvbGwoc2Nyb2xsUG9zOiBudW1iZXIsIHNpemVzOiBTaXplcywgZGlyOiBEaXJlY3Rpb24gPSAnbHRyJykge1xuICBjb25zdCB0aHVtYlNpemVQeCA9IGdldFRodW1iU2l6ZShzaXplcyk7XG4gIGNvbnN0IHNjcm9sbGJhclBhZGRpbmcgPSBzaXplcy5zY3JvbGxiYXIucGFkZGluZ1N0YXJ0ICsgc2l6ZXMuc2Nyb2xsYmFyLnBhZGRpbmdFbmQ7XG4gIGNvbnN0IHNjcm9sbGJhciA9IHNpemVzLnNjcm9sbGJhci5zaXplIC0gc2Nyb2xsYmFyUGFkZGluZztcbiAgY29uc3QgbWF4U2Nyb2xsUG9zID0gc2l6ZXMuY29udGVudCAtIHNpemVzLnZpZXdwb3J0O1xuICBjb25zdCBtYXhUaHVtYlBvcyA9IHNjcm9sbGJhciAtIHRodW1iU2l6ZVB4O1xuICBjb25zdCBzY3JvbGxDbGFtcFJhbmdlID0gZGlyID09PSAnbHRyJyA/IFswLCBtYXhTY3JvbGxQb3NdIDogW21heFNjcm9sbFBvcyAqIC0xLCAwXTtcbiAgY29uc3Qgc2Nyb2xsV2l0aG91dE1vbWVudHVtID0gY2xhbXAoc2Nyb2xsUG9zLCBzY3JvbGxDbGFtcFJhbmdlIGFzIFtudW1iZXIsIG51bWJlcl0pO1xuICBjb25zdCBpbnRlcnBvbGF0ZSA9IGxpbmVhclNjYWxlKFswLCBtYXhTY3JvbGxQb3NdLCBbMCwgbWF4VGh1bWJQb3NdKTtcbiAgcmV0dXJuIGludGVycG9sYXRlKHNjcm9sbFdpdGhvdXRNb21lbnR1bSk7XG59XG5cbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90bWN3LXVwLWZvci1hZG9wdGlvbi9zaW1wbGUtbGluZWFyLXNjYWxlL2Jsb2IvbWFzdGVyL2luZGV4LmpzXG5mdW5jdGlvbiBsaW5lYXJTY2FsZShpbnB1dDogcmVhZG9ubHkgW251bWJlciwgbnVtYmVyXSwgb3V0cHV0OiByZWFkb25seSBbbnVtYmVyLCBudW1iZXJdKSB7XG4gIHJldHVybiAodmFsdWU6IG51bWJlcikgPT4ge1xuICAgIGlmIChpbnB1dFswXSA9PT0gaW5wdXRbMV0gfHwgb3V0cHV0WzBdID09PSBvdXRwdXRbMV0pIHJldHVybiBvdXRwdXRbMF07XG4gICAgY29uc3QgcmF0aW8gPSAob3V0cHV0WzFdIC0gb3V0cHV0WzBdKSAvIChpbnB1dFsxXSAtIGlucHV0WzBdKTtcbiAgICByZXR1cm4gb3V0cHV0WzBdICsgcmF0aW8gKiAodmFsdWUgLSBpbnB1dFswXSk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGlzU2Nyb2xsaW5nV2l0aGluU2Nyb2xsYmFyQm91bmRzKHNjcm9sbFBvczogbnVtYmVyLCBtYXhTY3JvbGxQb3M6IG51bWJlcikge1xuICByZXR1cm4gc2Nyb2xsUG9zID4gMCAmJiBzY3JvbGxQb3MgPCBtYXhTY3JvbGxQb3M7XG59XG5cbi8vIEN1c3RvbSBzY3JvbGwgaGFuZGxlciB0byBhdm9pZCBzY3JvbGwtbGlua2VkIGVmZmVjdHNcbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvTW96aWxsYS9QZXJmb3JtYW5jZS9TY3JvbGwtbGlua2VkX2VmZmVjdHNcbmNvbnN0IGFkZFVubGlua2VkU2Nyb2xsTGlzdGVuZXIgPSAobm9kZTogSFRNTEVsZW1lbnQsIGhhbmRsZXIgPSAoKSA9PiB7fSkgPT4ge1xuICBsZXQgcHJldlBvc2l0aW9uID0geyBsZWZ0OiBub2RlLnNjcm9sbExlZnQsIHRvcDogbm9kZS5zY3JvbGxUb3AgfTtcbiAgbGV0IHJBRiA9IDA7XG4gIChmdW5jdGlvbiBsb29wKCkge1xuICAgIGNvbnN0IHBvc2l0aW9uID0geyBsZWZ0OiBub2RlLnNjcm9sbExlZnQsIHRvcDogbm9kZS5zY3JvbGxUb3AgfTtcbiAgICBjb25zdCBpc0hvcml6b250YWxTY3JvbGwgPSBwcmV2UG9zaXRpb24ubGVmdCAhPT0gcG9zaXRpb24ubGVmdDtcbiAgICBjb25zdCBpc1ZlcnRpY2FsU2Nyb2xsID0gcHJldlBvc2l0aW9uLnRvcCAhPT0gcG9zaXRpb24udG9wO1xuICAgIGlmIChpc0hvcml6b250YWxTY3JvbGwgfHwgaXNWZXJ0aWNhbFNjcm9sbCkgaGFuZGxlcigpO1xuICAgIHByZXZQb3NpdGlvbiA9IHBvc2l0aW9uO1xuICAgIHJBRiA9IHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUobG9vcCk7XG4gIH0pKCk7XG4gIHJldHVybiAoKSA9PiB3aW5kb3cuY2FuY2VsQW5pbWF0aW9uRnJhbWUockFGKTtcbn07XG5cbmZ1bmN0aW9uIHVzZURlYm91bmNlQ2FsbGJhY2soY2FsbGJhY2s6ICgpID0+IHZvaWQsIGRlbGF5OiBudW1iZXIpIHtcbiAgY29uc3QgaGFuZGxlQ2FsbGJhY2sgPSB1c2VDYWxsYmFja1JlZihjYWxsYmFjayk7XG4gIGNvbnN0IGRlYm91bmNlVGltZXJSZWYgPSBSZWFjdC51c2VSZWYoMCk7XG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiAoKSA9PiB3aW5kb3cuY2xlYXJUaW1lb3V0KGRlYm91bmNlVGltZXJSZWYuY3VycmVudCksIFtdKTtcbiAgcmV0dXJuIFJlYWN0LnVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KGRlYm91bmNlVGltZXJSZWYuY3VycmVudCk7XG4gICAgZGVib3VuY2VUaW1lclJlZi5jdXJyZW50ID0gd2luZG93LnNldFRpbWVvdXQoaGFuZGxlQ2FsbGJhY2ssIGRlbGF5KTtcbiAgfSwgW2hhbmRsZUNhbGxiYWNrLCBkZWxheV0pO1xufVxuXG5mdW5jdGlvbiB1c2VSZXNpemVPYnNlcnZlcihlbGVtZW50OiBIVE1MRWxlbWVudCB8IG51bGwsIG9uUmVzaXplOiAoKSA9PiB2b2lkKSB7XG4gIGNvbnN0IGhhbmRsZVJlc2l6ZSA9IHVzZUNhbGxiYWNrUmVmKG9uUmVzaXplKTtcbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBsZXQgckFGID0gMDtcbiAgICBpZiAoZWxlbWVudCkge1xuICAgICAgLyoqXG4gICAgICAgKiBSZXNpemUgT2JzZXJ2ZXIgd2lsbCB0aHJvdyBhbiBvZnRlbiBiZW5pZ24gZXJyb3IgdGhhdCBzYXlzIGBSZXNpemVPYnNlcnZlciBsb29wXG4gICAgICAgKiBjb21wbGV0ZWQgd2l0aCB1bmRlbGl2ZXJlZCBub3RpZmljYXRpb25zYC4gVGhpcyBtZWFucyB0aGF0IFJlc2l6ZU9ic2VydmVyIHdhcyBub3RcbiAgICAgICAqIGFibGUgdG8gZGVsaXZlciBhbGwgb2JzZXJ2YXRpb25zIHdpdGhpbiBhIHNpbmdsZSBhbmltYXRpb24gZnJhbWUsIHNvIHdlIHVzZVxuICAgICAgICogYHJlcXVlc3RBbmltYXRpb25GcmFtZWAgdG8gZW5zdXJlIHdlIGRvbid0IGRlbGl2ZXIgdW5uZWNlc3Nhcnkgb2JzZXJ2YXRpb25zLlxuICAgICAgICogRnVydGhlciByZWFkaW5nOiBodHRwczovL2dpdGh1Yi5jb20vV0lDRy9yZXNpemUtb2JzZXJ2ZXIvaXNzdWVzLzM4XG4gICAgICAgKi9cbiAgICAgIGNvbnN0IHJlc2l6ZU9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKCgpID0+IHtcbiAgICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUockFGKTtcbiAgICAgICAgckFGID0gd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZShoYW5kbGVSZXNpemUpO1xuICAgICAgfSk7XG4gICAgICByZXNpemVPYnNlcnZlci5vYnNlcnZlKGVsZW1lbnQpO1xuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgd2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1lKHJBRik7XG4gICAgICAgIHJlc2l6ZU9ic2VydmVyLnVub2JzZXJ2ZShlbGVtZW50KTtcbiAgICAgIH07XG4gICAgfVxuICB9LCBbZWxlbWVudCwgaGFuZGxlUmVzaXplXSk7XG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuY29uc3QgUm9vdCA9IFNjcm9sbEFyZWE7XG5jb25zdCBWaWV3cG9ydCA9IFNjcm9sbEFyZWFWaWV3cG9ydDtcbmNvbnN0IFNjcm9sbGJhciA9IFNjcm9sbEFyZWFTY3JvbGxiYXI7XG5jb25zdCBUaHVtYiA9IFNjcm9sbEFyZWFUaHVtYjtcbmNvbnN0IENvcm5lciA9IFNjcm9sbEFyZWFDb3JuZXI7XG5cbmV4cG9ydCB7XG4gIGNyZWF0ZVNjcm9sbEFyZWFTY29wZSxcbiAgLy9cbiAgU2Nyb2xsQXJlYSxcbiAgU2Nyb2xsQXJlYVZpZXdwb3J0LFxuICBTY3JvbGxBcmVhU2Nyb2xsYmFyLFxuICBTY3JvbGxBcmVhVGh1bWIsXG4gIFNjcm9sbEFyZWFDb3JuZXIsXG4gIC8vXG4gIFJvb3QsXG4gIFZpZXdwb3J0LFxuICBTY3JvbGxiYXIsXG4gIFRodW1iLFxuICBDb3JuZXIsXG59O1xuZXhwb3J0IHR5cGUge1xuICBTY3JvbGxBcmVhUHJvcHMsXG4gIFNjcm9sbEFyZWFWaWV3cG9ydFByb3BzLFxuICBTY3JvbGxBcmVhU2Nyb2xsYmFyUHJvcHMsXG4gIFNjcm9sbEFyZWFUaHVtYlByb3BzLFxuICBTY3JvbGxBcmVhQ29ybmVyUHJvcHMsXG59O1xuIiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG50eXBlIE1hY2hpbmU8Uz4gPSB7IFtrOiBzdHJpbmddOiB7IFtrOiBzdHJpbmddOiBTIH0gfTtcbnR5cGUgTWFjaGluZVN0YXRlPFQ+ID0ga2V5b2YgVDtcbnR5cGUgTWFjaGluZUV2ZW50PFQ+ID0ga2V5b2YgVW5pb25Ub0ludGVyc2VjdGlvbjxUW2tleW9mIFRdPjtcblxuLy8g8J+kryBodHRwczovL2ZldHRibG9nLmV1L3R5cGVzY3JpcHQtdW5pb24tdG8taW50ZXJzZWN0aW9uL1xudHlwZSBVbmlvblRvSW50ZXJzZWN0aW9uPFQ+ID0gKFQgZXh0ZW5kcyBhbnkgPyAoeDogVCkgPT4gYW55IDogbmV2ZXIpIGV4dGVuZHMgKHg6IGluZmVyIFIpID0+IGFueVxuICA/IFJcbiAgOiBuZXZlcjtcblxuZXhwb3J0IGZ1bmN0aW9uIHVzZVN0YXRlTWFjaGluZTxNPihcbiAgaW5pdGlhbFN0YXRlOiBNYWNoaW5lU3RhdGU8TT4sXG4gIG1hY2hpbmU6IE0gJiBNYWNoaW5lPE1hY2hpbmVTdGF0ZTxNPj5cbikge1xuICByZXR1cm4gUmVhY3QudXNlUmVkdWNlcigoc3RhdGU6IE1hY2hpbmVTdGF0ZTxNPiwgZXZlbnQ6IE1hY2hpbmVFdmVudDxNPik6IE1hY2hpbmVTdGF0ZTxNPiA9PiB7XG4gICAgY29uc3QgbmV4dFN0YXRlID0gKG1hY2hpbmVbc3RhdGVdIGFzIGFueSlbZXZlbnRdO1xuICAgIHJldHVybiBuZXh0U3RhdGUgPz8gc3RhdGU7XG4gIH0sIGluaXRpYWxTdGF0ZSk7XG59XG4iXSwibmFtZXMiOlsiUmVhY3QiLCJQcmltaXRpdmUiLCJQcmVzZW5jZSIsImNyZWF0ZUNvbnRleHRTY29wZSIsInVzZUNvbXBvc2VkUmVmcyIsInVzZUNhbGxiYWNrUmVmIiwidXNlRGlyZWN0aW9uIiwidXNlTGF5b3V0RWZmZWN0IiwiY2xhbXAiLCJjb21wb3NlRXZlbnRIYW5kbGVycyIsInVzZVN0YXRlTWFjaGluZSIsImluaXRpYWxTdGF0ZSIsIm1hY2hpbmUiLCJ1c2VSZWR1Y2VyIiwic3RhdGUiLCJldmVudCIsIm5leHRTdGF0ZSIsIkZyYWdtZW50IiwianN4IiwianN4cyIsIlNDUk9MTF9BUkVBX05BTUUiLCJjcmVhdGVTY3JvbGxBcmVhQ29udGV4dCIsImNyZWF0ZVNjcm9sbEFyZWFTY29wZSIsIlNjcm9sbEFyZWFQcm92aWRlciIsInVzZVNjcm9sbEFyZWFDb250ZXh0IiwiU2Nyb2xsQXJlYSIsIlJlYWN0MiIsImZvcndhcmRSZWYiLCJwcm9wcyIsImZvcndhcmRlZFJlZiIsIl9fc2NvcGVTY3JvbGxBcmVhIiwidHlwZSIsImRpciIsInNjcm9sbEhpZGVEZWxheSIsInNjcm9sbEFyZWFQcm9wcyIsInNjcm9sbEFyZWEiLCJzZXRTY3JvbGxBcmVhIiwidXNlU3RhdGUiLCJ2aWV3cG9ydCIsInNldFZpZXdwb3J0IiwiY29udGVudCIsInNldENvbnRlbnQiLCJzY3JvbGxiYXJYIiwic2V0U2Nyb2xsYmFyWCIsInNjcm9sbGJhclkiLCJzZXRTY3JvbGxiYXJZIiwiY29ybmVyV2lkdGgiLCJzZXRDb3JuZXJXaWR0aCIsImNvcm5lckhlaWdodCIsInNldENvcm5lckhlaWdodCIsInNjcm9sbGJhclhFbmFibGVkIiwic2V0U2Nyb2xsYmFyWEVuYWJsZWQiLCJzY3JvbGxiYXJZRW5hYmxlZCIsInNldFNjcm9sbGJhcllFbmFibGVkIiwiY29tcG9zZWRSZWZzIiwibm9kZSIsImRpcmVjdGlvbiIsInNjb3BlIiwib25WaWV3cG9ydENoYW5nZSIsIm9uQ29udGVudENoYW5nZSIsIm9uU2Nyb2xsYmFyWENoYW5nZSIsIm9uU2Nyb2xsYmFyWEVuYWJsZWRDaGFuZ2UiLCJvblNjcm9sbGJhcllDaGFuZ2UiLCJvblNjcm9sbGJhcllFbmFibGVkQ2hhbmdlIiwib25Db3JuZXJXaWR0aENoYW5nZSIsIm9uQ29ybmVySGVpZ2h0Q2hhbmdlIiwiY2hpbGRyZW4iLCJkaXYiLCJyZWYiLCJzdHlsZSIsInBvc2l0aW9uIiwiZGlzcGxheU5hbWUiLCJWSUVXUE9SVF9OQU1FIiwiU2Nyb2xsQXJlYVZpZXdwb3J0Iiwibm9uY2UiLCJ2aWV3cG9ydFByb3BzIiwiY29udGV4dCIsInVzZVJlZiIsImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIiwiX19odG1sIiwib3ZlcmZsb3dYIiwib3ZlcmZsb3dZIiwibWluV2lkdGgiLCJkaXNwbGF5IiwiU0NST0xMQkFSX05BTUUiLCJTY3JvbGxBcmVhU2Nyb2xsYmFyIiwiZm9yY2VNb3VudCIsInNjcm9sbGJhclByb3BzIiwiaXNIb3Jpem9udGFsIiwib3JpZW50YXRpb24iLCJ1c2VFZmZlY3QiLCJTY3JvbGxBcmVhU2Nyb2xsYmFySG92ZXIiLCJTY3JvbGxBcmVhU2Nyb2xsYmFyU2Nyb2xsIiwiU2Nyb2xsQXJlYVNjcm9sbGJhckF1dG8iLCJTY3JvbGxBcmVhU2Nyb2xsYmFyVmlzaWJsZSIsInZpc2libGUiLCJzZXRWaXNpYmxlIiwiaGlkZVRpbWVyIiwiaGFuZGxlUG9pbnRlckVudGVyIiwid2luZG93IiwiY2xlYXJUaW1lb3V0IiwiaGFuZGxlUG9pbnRlckxlYXZlIiwic2V0VGltZW91dCIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwicHJlc2VudCIsImRlYm91bmNlU2Nyb2xsRW5kIiwidXNlRGVib3VuY2VDYWxsYmFjayIsInNlbmQiLCJoaWRkZW4iLCJTQ1JPTEwiLCJzY3JvbGxpbmciLCJTQ1JPTExfRU5EIiwiUE9JTlRFUl9FTlRFUiIsImludGVyYWN0aW5nIiwiUE9JTlRFUl9MRUFWRSIsImlkbGUiLCJISURFIiwic2Nyb2xsRGlyZWN0aW9uIiwicHJldlNjcm9sbFBvcyIsImhhbmRsZVNjcm9sbCIsInNjcm9sbFBvcyIsImhhc1Njcm9sbEluRGlyZWN0aW9uQ2hhbmdlZCIsIm9uUG9pbnRlckVudGVyIiwib25Qb2ludGVyTGVhdmUiLCJoYW5kbGVSZXNpemUiLCJpc092ZXJmbG93WCIsIm9mZnNldFdpZHRoIiwic2Nyb2xsV2lkdGgiLCJpc092ZXJmbG93WSIsIm9mZnNldEhlaWdodCIsInNjcm9sbEhlaWdodCIsInVzZVJlc2l6ZU9ic2VydmVyIiwidGh1bWJSZWYiLCJwb2ludGVyT2Zmc2V0UmVmIiwic2l6ZXMiLCJzZXRTaXplcyIsInNjcm9sbGJhciIsInNpemUiLCJwYWRkaW5nU3RhcnQiLCJwYWRkaW5nRW5kIiwidGh1bWJSYXRpbyIsImdldFRodW1iUmF0aW8iLCJjb21tb25Qcm9wcyIsIm9uU2l6ZXNDaGFuZ2UiLCJoYXNUaHVtYiIsIkJvb2xlYW4iLCJvblRodW1iQ2hhbmdlIiwidGh1bWIiLCJjdXJyZW50Iiwib25UaHVtYlBvaW50ZXJVcCIsIm9uVGh1bWJQb2ludGVyRG93biIsInBvaW50ZXJQb3MiLCJnZXRTY3JvbGxQb3NpdGlvbiIsImdldFNjcm9sbFBvc2l0aW9uRnJvbVBvaW50ZXIiLCJTY3JvbGxBcmVhU2Nyb2xsYmFyWCIsIm9uVGh1bWJQb3NpdGlvbkNoYW5nZSIsInNjcm9sbExlZnQiLCJvZmZzZXQiLCJnZXRUaHVtYk9mZnNldEZyb21TY3JvbGwiLCJ0cmFuc2Zvcm0iLCJvbldoZWVsU2Nyb2xsIiwib25EcmFnU2Nyb2xsIiwiU2Nyb2xsQXJlYVNjcm9sbGJhclkiLCJzY3JvbGxUb3AiLCJjb21wdXRlZFN0eWxlIiwic2V0Q29tcHV0ZWRTdHlsZSIsImNvbXBvc2VSZWZzIiwiZ2V0Q29tcHV0ZWRTdHlsZSIsIlNjcm9sbEFyZWFTY3JvbGxiYXJJbXBsIiwiYm90dG9tIiwibGVmdCIsInJpZ2h0IiwiZ2V0VGh1bWJTaXplIiwieCIsIm1heFNjcm9sbFBvcyIsImRlbHRhWCIsImlzU2Nyb2xsaW5nV2l0aGluU2Nyb2xsYmFyQm91bmRzIiwicHJldmVudERlZmF1bHQiLCJvblJlc2l6ZSIsImNsaWVudFdpZHRoIiwidG9JbnQiLCJwYWRkaW5nTGVmdCIsInBhZGRpbmdSaWdodCIsInRvcCIsInkiLCJkZWx0YVkiLCJjbGllbnRIZWlnaHQiLCJwYWRkaW5nVG9wIiwicGFkZGluZ0JvdHRvbSIsIlNjcm9sbGJhclByb3ZpZGVyIiwidXNlU2Nyb2xsYmFyQ29udGV4dCIsInNldFNjcm9sbGJhciIsInJlY3RSZWYiLCJwcmV2V2Via2l0VXNlclNlbGVjdFJlZiIsImhhbmRsZVdoZWVsU2Nyb2xsIiwiaGFuZGxlVGh1bWJQb3NpdGlvbkNoYW5nZSIsImhhbmRsZURyYWdTY3JvbGwiLCJjbGllbnRYIiwiY2xpZW50WSIsImhhbmRsZVdoZWVsIiwiZWxlbWVudCIsInRhcmdldCIsImlzU2Nyb2xsYmFyV2hlZWwiLCJjb250YWlucyIsImRvY3VtZW50IiwicGFzc2l2ZSIsIm9uUG9pbnRlckRvd24iLCJtYWluUG9pbnRlciIsImJ1dHRvbiIsInNldFBvaW50ZXJDYXB0dXJlIiwicG9pbnRlcklkIiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwiYm9keSIsIndlYmtpdFVzZXJTZWxlY3QiLCJzY3JvbGxCZWhhdmlvciIsIm9uUG9pbnRlck1vdmUiLCJvblBvaW50ZXJVcCIsImhhc1BvaW50ZXJDYXB0dXJlIiwicmVsZWFzZVBvaW50ZXJDYXB0dXJlIiwiVEhVTUJfTkFNRSIsIlNjcm9sbEFyZWFUaHVtYiIsInRodW1iUHJvcHMiLCJzY3JvbGxiYXJDb250ZXh0IiwiU2Nyb2xsQXJlYVRodW1iSW1wbCIsInNjcm9sbEFyZWFDb250ZXh0IiwiY29tcG9zZWRSZWYiLCJyZW1vdmVVbmxpbmtlZFNjcm9sbExpc3RlbmVyUmVmIiwibGlzdGVuZXIiLCJhZGRVbmxpbmtlZFNjcm9sbExpc3RlbmVyIiwid2lkdGgiLCJoZWlnaHQiLCJvblBvaW50ZXJEb3duQ2FwdHVyZSIsInRodW1iUmVjdCIsIkNPUk5FUl9OQU1FIiwiU2Nyb2xsQXJlYUNvcm5lciIsImhhc0JvdGhTY3JvbGxiYXJzVmlzaWJsZSIsImhhc0Nvcm5lciIsIlNjcm9sbEFyZWFDb3JuZXJJbXBsIiwiY29ybmVyUHJvcHMiLCJzZXRXaWR0aCIsInNldEhlaWdodCIsImhhc1NpemUiLCJ2YWx1ZSIsInBhcnNlSW50Iiwidmlld3BvcnRTaXplIiwiY29udGVudFNpemUiLCJyYXRpbyIsImlzTmFOIiwic2Nyb2xsYmFyUGFkZGluZyIsInRodW1iU2l6ZSIsIk1hdGgiLCJtYXgiLCJwb2ludGVyT2Zmc2V0IiwidGh1bWJTaXplUHgiLCJ0aHVtYkNlbnRlciIsInRodW1iT2Zmc2V0RnJvbUVuZCIsIm1pblBvaW50ZXJQb3MiLCJtYXhQb2ludGVyUG9zIiwic2Nyb2xsUmFuZ2UiLCJpbnRlcnBvbGF0ZSIsImxpbmVhclNjYWxlIiwibWF4VGh1bWJQb3MiLCJzY3JvbGxDbGFtcFJhbmdlIiwic2Nyb2xsV2l0aG91dE1vbWVudHVtIiwiaW5wdXQiLCJvdXRwdXQiLCJoYW5kbGVyIiwicHJldlBvc2l0aW9uIiwickFGIiwibG9vcCIsImlzSG9yaXpvbnRhbFNjcm9sbCIsImlzVmVydGljYWxTY3JvbGwiLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJjYW5jZWxBbmltYXRpb25GcmFtZSIsImNhbGxiYWNrIiwiZGVsYXkiLCJoYW5kbGVDYWxsYmFjayIsImRlYm91bmNlVGltZXJSZWYiLCJ1c2VDYWxsYmFjayIsInJlc2l6ZU9ic2VydmVyIiwiUmVzaXplT2JzZXJ2ZXIiLCJvYnNlcnZlIiwidW5vYnNlcnZlIiwiUm9vdCIsIlZpZXdwb3J0IiwiU2Nyb2xsYmFyIiwiVGh1bWIiLCJDb3JuZXIiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/@radix-ui/react-scroll-area/dist/index.mjs\n"); /***/ }), /***/ "(ssr)/./node_modules/@radix-ui/react-slot/dist/index.mjs": /*!**********************************************************!*\ !*** ./node_modules/@radix-ui/react-slot/dist/index.mjs ***! \**********************************************************/ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Root: () => (/* binding */ Root),\n/* harmony export */ Slot: () => (/* binding */ Slot),\n/* harmony export */ Slottable: () => (/* binding */ Slottable)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var _radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @radix-ui/react-compose-refs */ \"(ssr)/./node_modules/@radix-ui/react-compose-refs/dist/index.mjs\");\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react-jsx-runtime.js\");\n// packages/react/slot/src/Slot.tsx\n\n\n\nvar Slot = react__WEBPACK_IMPORTED_MODULE_0__.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n const childrenArray = react__WEBPACK_IMPORTED_MODULE_0__.Children.toArray(children);\n const slottable = childrenArray.find(isSlottable);\n if (slottable) {\n const newElement = slottable.props.children;\n const newChildren = childrenArray.map((child) => {\n if (child === slottable) {\n if (react__WEBPACK_IMPORTED_MODULE_0__.Children.count(newElement) > 1) return react__WEBPACK_IMPORTED_MODULE_0__.Children.only(null);\n return react__WEBPACK_IMPORTED_MODULE_0__.isValidElement(newElement) ? newElement.props.children : null;\n } else {\n return child;\n }\n });\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(SlotClone, { ...slotProps, ref: forwardedRef, children: react__WEBPACK_IMPORTED_MODULE_0__.isValidElement(newElement) ? react__WEBPACK_IMPORTED_MODULE_0__.cloneElement(newElement, void 0, newChildren) : null });\n }\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(SlotClone, { ...slotProps, ref: forwardedRef, children });\n});\nSlot.displayName = \"Slot\";\nvar SlotClone = react__WEBPACK_IMPORTED_MODULE_0__.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n if (react__WEBPACK_IMPORTED_MODULE_0__.isValidElement(children)) {\n const childrenRef = getElementRef(children);\n return react__WEBPACK_IMPORTED_MODULE_0__.cloneElement(children, {\n ...mergeProps(slotProps, children.props),\n // @ts-ignore\n ref: forwardedRef ? (0,_radix_ui_react_compose_refs__WEBPACK_IMPORTED_MODULE_2__.composeRefs)(forwardedRef, childrenRef) : childrenRef\n });\n }\n return react__WEBPACK_IMPORTED_MODULE_0__.Children.count(children) > 1 ? react__WEBPACK_IMPORTED_MODULE_0__.Children.only(null) : null;\n});\nSlotClone.displayName = \"SlotClone\";\nvar Slottable = ({ children }) => {\n return /* @__PURE__ */ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.Fragment, { children });\n};\nfunction isSlottable(child) {\n return react__WEBPACK_IMPORTED_MODULE_0__.isValidElement(child) && child.type === Slottable;\n}\nfunction mergeProps(slotProps, childProps) {\n const overrideProps = { ...childProps };\n for (const propName in childProps) {\n const slotPropValue = slotProps[propName];\n const childPropValue = childProps[propName];\n const isHandler = /^on[A-Z]/.test(propName);\n if (isHandler) {\n if (slotPropValue && childPropValue) {\n overrideProps[propName] = (...args) => {\n childPropValue(...args);\n slotPropValue(...args);\n };\n } else if (slotPropValue) {\n overrideProps[propName] = slotPropValue;\n }\n } else if (propName === \"style\") {\n overrideProps[propName] = { ...slotPropValue, ...childPropValue };\n } else if (propName === \"className\") {\n overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(\" \");\n }\n }\n return { ...slotProps, ...overrideProps };\n}\nfunction getElementRef(element) {\n let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.ref;\n }\n getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n return element.props.ref || element.ref;\n}\nvar Root = Slot;\n\n//# sourceMappingURL=index.mjs.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LXNsb3QvZGlzdC9pbmRleC5tanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7QUFDK0I7QUFDNEI7QUFDVDtBQUNsRCxXQUFXLDZDQUFnQjtBQUMzQixVQUFVLHlCQUF5QjtBQUNuQyx3QkFBd0IsMkNBQWM7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksMkNBQWMsK0JBQStCLDJDQUFjO0FBQ3ZFLGVBQWUsaURBQW9CO0FBQ25DLFFBQVE7QUFDUjtBQUNBO0FBQ0EsS0FBSztBQUNMLDJCQUEyQixzREFBRyxjQUFjLDJDQUEyQyxpREFBb0IsZUFBZSwrQ0FBa0IsMENBQTBDO0FBQ3RMO0FBQ0EseUJBQXlCLHNEQUFHLGNBQWMsMkNBQTJDO0FBQ3JGLENBQUM7QUFDRDtBQUNBLGdCQUFnQiw2Q0FBZ0I7QUFDaEMsVUFBVSx5QkFBeUI7QUFDbkMsTUFBTSxpREFBb0I7QUFDMUI7QUFDQSxXQUFXLCtDQUFrQjtBQUM3QjtBQUNBO0FBQ0EsMEJBQTBCLHlFQUFXO0FBQ3JDLEtBQUs7QUFDTDtBQUNBLFNBQVMsMkNBQWMsdUJBQXVCLDJDQUFjO0FBQzVELENBQUM7QUFDRDtBQUNBLG1CQUFtQixVQUFVO0FBQzdCLHlCQUF5QixzREFBRyxDQUFDLHVEQUFRLElBQUksVUFBVTtBQUNuRDtBQUNBO0FBQ0EsU0FBUyxpREFBb0I7QUFDN0I7QUFDQTtBQUNBLDBCQUEwQjtBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0EsTUFBTTtBQUNOLGtDQUFrQztBQUNsQyxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtFO0FBQ0YiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9teS12MC1wcm9qZWN0Ly4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC1zbG90L2Rpc3QvaW5kZXgubWpzPzY0ZTUiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gcGFja2FnZXMvcmVhY3Qvc2xvdC9zcmMvU2xvdC50c3hcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgY29tcG9zZVJlZnMgfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWNvbXBvc2UtcmVmc1wiO1xuaW1wb3J0IHsgRnJhZ21lbnQsIGpzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xudmFyIFNsb3QgPSBSZWFjdC5mb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKSA9PiB7XG4gIGNvbnN0IHsgY2hpbGRyZW4sIC4uLnNsb3RQcm9wcyB9ID0gcHJvcHM7XG4gIGNvbnN0IGNoaWxkcmVuQXJyYXkgPSBSZWFjdC5DaGlsZHJlbi50b0FycmF5KGNoaWxkcmVuKTtcbiAgY29uc3Qgc2xvdHRhYmxlID0gY2hpbGRyZW5BcnJheS5maW5kKGlzU2xvdHRhYmxlKTtcbiAgaWYgKHNsb3R0YWJsZSkge1xuICAgIGNvbnN0IG5ld0VsZW1lbnQgPSBzbG90dGFibGUucHJvcHMuY2hpbGRyZW47XG4gICAgY29uc3QgbmV3Q2hpbGRyZW4gPSBjaGlsZHJlbkFycmF5Lm1hcCgoY2hpbGQpID0+IHtcbiAgICAgIGlmIChjaGlsZCA9PT0gc2xvdHRhYmxlKSB7XG4gICAgICAgIGlmIChSZWFjdC5DaGlsZHJlbi5jb3VudChuZXdFbGVtZW50KSA+IDEpIHJldHVybiBSZWFjdC5DaGlsZHJlbi5vbmx5KG51bGwpO1xuICAgICAgICByZXR1cm4gUmVhY3QuaXNWYWxpZEVsZW1lbnQobmV3RWxlbWVudCkgPyBuZXdFbGVtZW50LnByb3BzLmNoaWxkcmVuIDogbnVsbDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBjaGlsZDtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChTbG90Q2xvbmUsIHsgLi4uc2xvdFByb3BzLCByZWY6IGZvcndhcmRlZFJlZiwgY2hpbGRyZW46IFJlYWN0LmlzVmFsaWRFbGVtZW50KG5ld0VsZW1lbnQpID8gUmVhY3QuY2xvbmVFbGVtZW50KG5ld0VsZW1lbnQsIHZvaWQgMCwgbmV3Q2hpbGRyZW4pIDogbnVsbCB9KTtcbiAgfVxuICByZXR1cm4gLyogQF9fUFVSRV9fICovIGpzeChTbG90Q2xvbmUsIHsgLi4uc2xvdFByb3BzLCByZWY6IGZvcndhcmRlZFJlZiwgY2hpbGRyZW4gfSk7XG59KTtcblNsb3QuZGlzcGxheU5hbWUgPSBcIlNsb3RcIjtcbnZhciBTbG90Q2xvbmUgPSBSZWFjdC5mb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKSA9PiB7XG4gIGNvbnN0IHsgY2hpbGRyZW4sIC4uLnNsb3RQcm9wcyB9ID0gcHJvcHM7XG4gIGlmIChSZWFjdC5pc1ZhbGlkRWxlbWVudChjaGlsZHJlbikpIHtcbiAgICBjb25zdCBjaGlsZHJlblJlZiA9IGdldEVsZW1lbnRSZWYoY2hpbGRyZW4pO1xuICAgIHJldHVybiBSZWFjdC5jbG9uZUVsZW1lbnQoY2hpbGRyZW4sIHtcbiAgICAgIC4uLm1lcmdlUHJvcHMoc2xvdFByb3BzLCBjaGlsZHJlbi5wcm9wcyksXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICByZWY6IGZvcndhcmRlZFJlZiA/IGNvbXBvc2VSZWZzKGZvcndhcmRlZFJlZiwgY2hpbGRyZW5SZWYpIDogY2hpbGRyZW5SZWZcbiAgICB9KTtcbiAgfVxuICByZXR1cm4gUmVhY3QuQ2hpbGRyZW4uY291bnQoY2hpbGRyZW4pID4gMSA/IFJlYWN0LkNoaWxkcmVuLm9ubHkobnVsbCkgOiBudWxsO1xufSk7XG5TbG90Q2xvbmUuZGlzcGxheU5hbWUgPSBcIlNsb3RDbG9uZVwiO1xudmFyIFNsb3R0YWJsZSA9ICh7IGNoaWxkcmVuIH0pID0+IHtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBqc3goRnJhZ21lbnQsIHsgY2hpbGRyZW4gfSk7XG59O1xuZnVuY3Rpb24gaXNTbG90dGFibGUoY2hpbGQpIHtcbiAgcmV0dXJuIFJlYWN0LmlzVmFsaWRFbGVtZW50KGNoaWxkKSAmJiBjaGlsZC50eXBlID09PSBTbG90dGFibGU7XG59XG5mdW5jdGlvbiBtZXJnZVByb3BzKHNsb3RQcm9wcywgY2hpbGRQcm9wcykge1xuICBjb25zdCBvdmVycmlkZVByb3BzID0geyAuLi5jaGlsZFByb3BzIH07XG4gIGZvciAoY29uc3QgcHJvcE5hbWUgaW4gY2hpbGRQcm9wcykge1xuICAgIGNvbnN0IHNsb3RQcm9wVmFsdWUgPSBzbG90UHJvcHNbcHJvcE5hbWVdO1xuICAgIGNvbnN0IGNoaWxkUHJvcFZhbHVlID0gY2hpbGRQcm9wc1twcm9wTmFtZV07XG4gICAgY29uc3QgaXNIYW5kbGVyID0gL15vbltBLVpdLy50ZXN0KHByb3BOYW1lKTtcbiAgICBpZiAoaXNIYW5kbGVyKSB7XG4gICAgICBpZiAoc2xvdFByb3BWYWx1ZSAmJiBjaGlsZFByb3BWYWx1ZSkge1xuICAgICAgICBvdmVycmlkZVByb3BzW3Byb3BOYW1lXSA9ICguLi5hcmdzKSA9PiB7XG4gICAgICAgICAgY2hpbGRQcm9wVmFsdWUoLi4uYXJncyk7XG4gICAgICAgICAgc2xvdFByb3BWYWx1ZSguLi5hcmdzKTtcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAoc2xvdFByb3BWYWx1ZSkge1xuICAgICAgICBvdmVycmlkZVByb3BzW3Byb3BOYW1lXSA9IHNsb3RQcm9wVmFsdWU7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChwcm9wTmFtZSA9PT0gXCJzdHlsZVwiKSB7XG4gICAgICBvdmVycmlkZVByb3BzW3Byb3BOYW1lXSA9IHsgLi4uc2xvdFByb3BWYWx1ZSwgLi4uY2hpbGRQcm9wVmFsdWUgfTtcbiAgICB9IGVsc2UgaWYgKHByb3BOYW1lID09PSBcImNsYXNzTmFtZVwiKSB7XG4gICAgICBvdmVycmlkZVByb3BzW3Byb3BOYW1lXSA9IFtzbG90UHJvcFZhbHVlLCBjaGlsZFByb3BWYWx1ZV0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oXCIgXCIpO1xuICAgIH1cbiAgfVxuICByZXR1cm4geyAuLi5zbG90UHJvcHMsIC4uLm92ZXJyaWRlUHJvcHMgfTtcbn1cbmZ1bmN0aW9uIGdldEVsZW1lbnRSZWYoZWxlbWVudCkge1xuICBsZXQgZ2V0dGVyID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlbGVtZW50LnByb3BzLCBcInJlZlwiKT8uZ2V0O1xuICBsZXQgbWF5V2FybiA9IGdldHRlciAmJiBcImlzUmVhY3RXYXJuaW5nXCIgaW4gZ2V0dGVyICYmIGdldHRlci5pc1JlYWN0V2FybmluZztcbiAgaWYgKG1heVdhcm4pIHtcbiAgICByZXR1cm4gZWxlbWVudC5yZWY7XG4gIH1cbiAgZ2V0dGVyID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlbGVtZW50LCBcInJlZlwiKT8uZ2V0O1xuICBtYXlXYXJuID0gZ2V0dGVyICYmIFwiaXNSZWFjdFdhcm5pbmdcIiBpbiBnZXR0ZXIgJiYgZ2V0dGVyLmlzUmVhY3RXYXJuaW5nO1xuICBpZiAobWF5V2Fybikge1xuICAgIHJldHVybiBlbGVtZW50LnByb3BzLnJlZjtcbiAgfVxuICByZXR1cm4gZWxlbWVudC5wcm9wcy5yZWYgfHwgZWxlbWVudC5yZWY7XG59XG52YXIgUm9vdCA9IFNsb3Q7XG5leHBvcnQge1xuICBSb290LFxuICBTbG90LFxuICBTbG90dGFibGVcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tanMubWFwXG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/@radix-ui/react-slot/dist/index.mjs\n"); /***/ }), /***/ "(ssr)/./node_modules/@radix-ui/react-use-callback-ref/dist/index.mjs": /*!**********************************************************************!*\ !*** ./node_modules/@radix-ui/react-use-callback-ref/dist/index.mjs ***! \**********************************************************************/ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ useCallbackRef: () => (/* binding */ useCallbackRef)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n// packages/react/use-callback-ref/src/useCallbackRef.tsx\n\nfunction useCallbackRef(callback) {\n const callbackRef = react__WEBPACK_IMPORTED_MODULE_0__.useRef(callback);\n react__WEBPACK_IMPORTED_MODULE_0__.useEffect(() => {\n callbackRef.current = callback;\n });\n return react__WEBPACK_IMPORTED_MODULE_0__.useMemo(() => (...args) => callbackRef.current?.(...args), []);\n}\n\n//# sourceMappingURL=index.mjs.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LXVzZS1jYWxsYmFjay1yZWYvZGlzdC9pbmRleC5tanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTtBQUMrQjtBQUMvQjtBQUNBLHNCQUFzQix5Q0FBWTtBQUNsQyxFQUFFLDRDQUFlO0FBQ2pCO0FBQ0EsR0FBRztBQUNILFNBQVMsMENBQWE7QUFDdEI7QUFHRTtBQUNGIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vbXktdjAtcHJvamVjdC8uL25vZGVfbW9kdWxlcy9AcmFkaXgtdWkvcmVhY3QtdXNlLWNhbGxiYWNrLXJlZi9kaXN0L2luZGV4Lm1qcz8xODlkIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIHBhY2thZ2VzL3JlYWN0L3VzZS1jYWxsYmFjay1yZWYvc3JjL3VzZUNhbGxiYWNrUmVmLnRzeFxuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5mdW5jdGlvbiB1c2VDYWxsYmFja1JlZihjYWxsYmFjaykge1xuICBjb25zdCBjYWxsYmFja1JlZiA9IFJlYWN0LnVzZVJlZihjYWxsYmFjayk7XG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY2FsbGJhY2tSZWYuY3VycmVudCA9IGNhbGxiYWNrO1xuICB9KTtcbiAgcmV0dXJuIFJlYWN0LnVzZU1lbW8oKCkgPT4gKC4uLmFyZ3MpID0+IGNhbGxiYWNrUmVmLmN1cnJlbnQ/LiguLi5hcmdzKSwgW10pO1xufVxuZXhwb3J0IHtcbiAgdXNlQ2FsbGJhY2tSZWZcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tanMubWFwXG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/@radix-ui/react-use-callback-ref/dist/index.mjs\n"); /***/ }), /***/ "(ssr)/./node_modules/@radix-ui/react-use-controllable-state/dist/index.mjs": /*!****************************************************************************!*\ !*** ./node_modules/@radix-ui/react-use-controllable-state/dist/index.mjs ***! \****************************************************************************/ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ useControllableState: () => (/* binding */ useControllableState)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var _radix_ui_react_use_callback_ref__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @radix-ui/react-use-callback-ref */ \"(ssr)/./node_modules/@radix-ui/react-use-callback-ref/dist/index.mjs\");\n// packages/react/use-controllable-state/src/useControllableState.tsx\n\n\nfunction useControllableState({\n prop,\n defaultProp,\n onChange = () => {\n }\n}) {\n const [uncontrolledProp, setUncontrolledProp] = useUncontrolledState({ defaultProp, onChange });\n const isControlled = prop !== void 0;\n const value = isControlled ? prop : uncontrolledProp;\n const handleChange = (0,_radix_ui_react_use_callback_ref__WEBPACK_IMPORTED_MODULE_1__.useCallbackRef)(onChange);\n const setValue = react__WEBPACK_IMPORTED_MODULE_0__.useCallback(\n (nextValue) => {\n if (isControlled) {\n const setter = nextValue;\n const value2 = typeof nextValue === \"function\" ? setter(prop) : nextValue;\n if (value2 !== prop) handleChange(value2);\n } else {\n setUncontrolledProp(nextValue);\n }\n },\n [isControlled, prop, setUncontrolledProp, handleChange]\n );\n return [value, setValue];\n}\nfunction useUncontrolledState({\n defaultProp,\n onChange\n}) {\n const uncontrolledState = react__WEBPACK_IMPORTED_MODULE_0__.useState(defaultProp);\n const [value] = uncontrolledState;\n const prevValueRef = react__WEBPACK_IMPORTED_MODULE_0__.useRef(value);\n const handleChange = (0,_radix_ui_react_use_callback_ref__WEBPACK_IMPORTED_MODULE_1__.useCallbackRef)(onChange);\n react__WEBPACK_IMPORTED_MODULE_0__.useEffect(() => {\n if (prevValueRef.current !== value) {\n handleChange(value);\n prevValueRef.current = value;\n }\n }, [value, prevValueRef, handleChange]);\n return uncontrolledState;\n}\n\n//# sourceMappingURL=index.mjs.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LXVzZS1jb250cm9sbGFibGUtc3RhdGUvZGlzdC9pbmRleC5tanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7QUFDK0I7QUFDbUM7QUFDbEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRCx5RUFBeUUsdUJBQXVCO0FBQ2hHO0FBQ0E7QUFDQSx1QkFBdUIsZ0ZBQWM7QUFDckMsbUJBQW1CLDhDQUFpQjtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QsNEJBQTRCLDJDQUFjO0FBQzFDO0FBQ0EsdUJBQXVCLHlDQUFZO0FBQ25DLHVCQUF1QixnRkFBYztBQUNyQyxFQUFFLDRDQUFlO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFHRTtBQUNGIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vbXktdjAtcHJvamVjdC8uL25vZGVfbW9kdWxlcy9AcmFkaXgtdWkvcmVhY3QtdXNlLWNvbnRyb2xsYWJsZS1zdGF0ZS9kaXN0L2luZGV4Lm1qcz9mOTdjIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIHBhY2thZ2VzL3JlYWN0L3VzZS1jb250cm9sbGFibGUtc3RhdGUvc3JjL3VzZUNvbnRyb2xsYWJsZVN0YXRlLnRzeFxuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VDYWxsYmFja1JlZiB9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtdXNlLWNhbGxiYWNrLXJlZlwiO1xuZnVuY3Rpb24gdXNlQ29udHJvbGxhYmxlU3RhdGUoe1xuICBwcm9wLFxuICBkZWZhdWx0UHJvcCxcbiAgb25DaGFuZ2UgPSAoKSA9PiB7XG4gIH1cbn0pIHtcbiAgY29uc3QgW3VuY29udHJvbGxlZFByb3AsIHNldFVuY29udHJvbGxlZFByb3BdID0gdXNlVW5jb250cm9sbGVkU3RhdGUoeyBkZWZhdWx0UHJvcCwgb25DaGFuZ2UgfSk7XG4gIGNvbnN0IGlzQ29udHJvbGxlZCA9IHByb3AgIT09IHZvaWQgMDtcbiAgY29uc3QgdmFsdWUgPSBpc0NvbnRyb2xsZWQgPyBwcm9wIDogdW5jb250cm9sbGVkUHJvcDtcbiAgY29uc3QgaGFuZGxlQ2hhbmdlID0gdXNlQ2FsbGJhY2tSZWYob25DaGFuZ2UpO1xuICBjb25zdCBzZXRWYWx1ZSA9IFJlYWN0LnVzZUNhbGxiYWNrKFxuICAgIChuZXh0VmFsdWUpID0+IHtcbiAgICAgIGlmIChpc0NvbnRyb2xsZWQpIHtcbiAgICAgICAgY29uc3Qgc2V0dGVyID0gbmV4dFZhbHVlO1xuICAgICAgICBjb25zdCB2YWx1ZTIgPSB0eXBlb2YgbmV4dFZhbHVlID09PSBcImZ1bmN0aW9uXCIgPyBzZXR0ZXIocHJvcCkgOiBuZXh0VmFsdWU7XG4gICAgICAgIGlmICh2YWx1ZTIgIT09IHByb3ApIGhhbmRsZUNoYW5nZSh2YWx1ZTIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2V0VW5jb250cm9sbGVkUHJvcChuZXh0VmFsdWUpO1xuICAgICAgfVxuICAgIH0sXG4gICAgW2lzQ29udHJvbGxlZCwgcHJvcCwgc2V0VW5jb250cm9sbGVkUHJvcCwgaGFuZGxlQ2hhbmdlXVxuICApO1xuICByZXR1cm4gW3ZhbHVlLCBzZXRWYWx1ZV07XG59XG5mdW5jdGlvbiB1c2VVbmNvbnRyb2xsZWRTdGF0ZSh7XG4gIGRlZmF1bHRQcm9wLFxuICBvbkNoYW5nZVxufSkge1xuICBjb25zdCB1bmNvbnRyb2xsZWRTdGF0ZSA9IFJlYWN0LnVzZVN0YXRlKGRlZmF1bHRQcm9wKTtcbiAgY29uc3QgW3ZhbHVlXSA9IHVuY29udHJvbGxlZFN0YXRlO1xuICBjb25zdCBwcmV2VmFsdWVSZWYgPSBSZWFjdC51c2VSZWYodmFsdWUpO1xuICBjb25zdCBoYW5kbGVDaGFuZ2UgPSB1c2VDYWxsYmFja1JlZihvbkNoYW5nZSk7XG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHByZXZWYWx1ZVJlZi5jdXJyZW50ICE9PSB2YWx1ZSkge1xuICAgICAgaGFuZGxlQ2hhbmdlKHZhbHVlKTtcbiAgICAgIHByZXZWYWx1ZVJlZi5jdXJyZW50ID0gdmFsdWU7XG4gICAgfVxuICB9LCBbdmFsdWUsIHByZXZWYWx1ZVJlZiwgaGFuZGxlQ2hhbmdlXSk7XG4gIHJldHVybiB1bmNvbnRyb2xsZWRTdGF0ZTtcbn1cbmV4cG9ydCB7XG4gIHVzZUNvbnRyb2xsYWJsZVN0YXRlXG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubWpzLm1hcFxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/@radix-ui/react-use-controllable-state/dist/index.mjs\n"); /***/ }), /***/ "(ssr)/./node_modules/@radix-ui/react-use-escape-keydown/dist/index.mjs": /*!************************************************************************!*\ !*** ./node_modules/@radix-ui/react-use-escape-keydown/dist/index.mjs ***! \************************************************************************/ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ useEscapeKeydown: () => (/* binding */ useEscapeKeydown)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var _radix_ui_react_use_callback_ref__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @radix-ui/react-use-callback-ref */ \"(ssr)/./node_modules/@radix-ui/react-use-callback-ref/dist/index.mjs\");\n// packages/react/use-escape-keydown/src/useEscapeKeydown.tsx\n\n\nfunction useEscapeKeydown(onEscapeKeyDownProp, ownerDocument = globalThis?.document) {\n const onEscapeKeyDown = (0,_radix_ui_react_use_callback_ref__WEBPACK_IMPORTED_MODULE_1__.useCallbackRef)(onEscapeKeyDownProp);\n react__WEBPACK_IMPORTED_MODULE_0__.useEffect(() => {\n const handleKeyDown = (event) => {\n if (event.key === \"Escape\") {\n onEscapeKeyDown(event);\n }\n };\n ownerDocument.addEventListener(\"keydown\", handleKeyDown, { capture: true });\n return () => ownerDocument.removeEventListener(\"keydown\", handleKeyDown, { capture: true });\n }, [onEscapeKeyDown, ownerDocument]);\n}\n\n//# sourceMappingURL=index.mjs.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LXVzZS1lc2NhcGUta2V5ZG93bi9kaXN0L2luZGV4Lm1qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTtBQUMrQjtBQUNtQztBQUNsRTtBQUNBLDBCQUEwQixnRkFBYztBQUN4QyxFQUFFLDRDQUFlO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrREFBK0QsZUFBZTtBQUM5RSwrRUFBK0UsZUFBZTtBQUM5RixHQUFHO0FBQ0g7QUFHRTtBQUNGIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vbXktdjAtcHJvamVjdC8uL25vZGVfbW9kdWxlcy9AcmFkaXgtdWkvcmVhY3QtdXNlLWVzY2FwZS1rZXlkb3duL2Rpc3QvaW5kZXgubWpzPzQ0MGUiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gcGFja2FnZXMvcmVhY3QvdXNlLWVzY2FwZS1rZXlkb3duL3NyYy91c2VFc2NhcGVLZXlkb3duLnRzeFxuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VDYWxsYmFja1JlZiB9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtdXNlLWNhbGxiYWNrLXJlZlwiO1xuZnVuY3Rpb24gdXNlRXNjYXBlS2V5ZG93bihvbkVzY2FwZUtleURvd25Qcm9wLCBvd25lckRvY3VtZW50ID0gZ2xvYmFsVGhpcz8uZG9jdW1lbnQpIHtcbiAgY29uc3Qgb25Fc2NhcGVLZXlEb3duID0gdXNlQ2FsbGJhY2tSZWYob25Fc2NhcGVLZXlEb3duUHJvcCk7XG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaGFuZGxlS2V5RG93biA9IChldmVudCkgPT4ge1xuICAgICAgaWYgKGV2ZW50LmtleSA9PT0gXCJFc2NhcGVcIikge1xuICAgICAgICBvbkVzY2FwZUtleURvd24oZXZlbnQpO1xuICAgICAgfVxuICAgIH07XG4gICAgb3duZXJEb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLCBoYW5kbGVLZXlEb3duLCB7IGNhcHR1cmU6IHRydWUgfSk7XG4gICAgcmV0dXJuICgpID0+IG93bmVyRG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIiwgaGFuZGxlS2V5RG93biwgeyBjYXB0dXJlOiB0cnVlIH0pO1xuICB9LCBbb25Fc2NhcGVLZXlEb3duLCBvd25lckRvY3VtZW50XSk7XG59XG5leHBvcnQge1xuICB1c2VFc2NhcGVLZXlkb3duXG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubWpzLm1hcFxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/@radix-ui/react-use-escape-keydown/dist/index.mjs\n"); /***/ }), /***/ "(ssr)/./node_modules/@radix-ui/react-use-layout-effect/dist/index.mjs": /*!***********************************************************************!*\ !*** ./node_modules/@radix-ui/react-use-layout-effect/dist/index.mjs ***! \***********************************************************************/ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ useLayoutEffect: () => (/* binding */ useLayoutEffect2)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n// packages/react/use-layout-effect/src/useLayoutEffect.tsx\n\nvar useLayoutEffect2 = Boolean(globalThis?.document) ? react__WEBPACK_IMPORTED_MODULE_0__.useLayoutEffect : () => {\n};\n\n//# sourceMappingURL=index.mjs.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LXVzZS1sYXlvdXQtZWZmZWN0L2Rpc3QvaW5kZXgubWpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7QUFDK0I7QUFDL0IsdURBQXVELGtEQUFxQjtBQUM1RTtBQUdFO0FBQ0YiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9teS12MC1wcm9qZWN0Ly4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC11c2UtbGF5b3V0LWVmZmVjdC9kaXN0L2luZGV4Lm1qcz9hMmFjIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIHBhY2thZ2VzL3JlYWN0L3VzZS1sYXlvdXQtZWZmZWN0L3NyYy91c2VMYXlvdXRFZmZlY3QudHN4XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbnZhciB1c2VMYXlvdXRFZmZlY3QyID0gQm9vbGVhbihnbG9iYWxUaGlzPy5kb2N1bWVudCkgPyBSZWFjdC51c2VMYXlvdXRFZmZlY3QgOiAoKSA9PiB7XG59O1xuZXhwb3J0IHtcbiAgdXNlTGF5b3V0RWZmZWN0MiBhcyB1c2VMYXlvdXRFZmZlY3Rcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tanMubWFwXG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/@radix-ui/react-use-layout-effect/dist/index.mjs\n"); /***/ }), /***/ "(ssr)/./node_modules/@radix-ui/react-use-previous/dist/index.mjs": /*!******************************************************************!*\ !*** ./node_modules/@radix-ui/react-use-previous/dist/index.mjs ***! \******************************************************************/ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ usePrevious: () => (/* binding */ usePrevious)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n// packages/react/use-previous/src/usePrevious.tsx\n\nfunction usePrevious(value) {\n const ref = react__WEBPACK_IMPORTED_MODULE_0__.useRef({ value, previous: value });\n return react__WEBPACK_IMPORTED_MODULE_0__.useMemo(() => {\n if (ref.current.value !== value) {\n ref.current.previous = ref.current.value;\n ref.current.value = value;\n }\n return ref.current.previous;\n }, [value]);\n}\n\n//# sourceMappingURL=index.mjs.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LXVzZS1wcmV2aW91cy9kaXN0L2luZGV4Lm1qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFBO0FBQytCO0FBQy9CO0FBQ0EsY0FBYyx5Q0FBWSxHQUFHLHdCQUF3QjtBQUNyRCxTQUFTLDBDQUFhO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFHRTtBQUNGIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vbXktdjAtcHJvamVjdC8uL25vZGVfbW9kdWxlcy9AcmFkaXgtdWkvcmVhY3QtdXNlLXByZXZpb3VzL2Rpc3QvaW5kZXgubWpzP2IyNDMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gcGFja2FnZXMvcmVhY3QvdXNlLXByZXZpb3VzL3NyYy91c2VQcmV2aW91cy50c3hcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuZnVuY3Rpb24gdXNlUHJldmlvdXModmFsdWUpIHtcbiAgY29uc3QgcmVmID0gUmVhY3QudXNlUmVmKHsgdmFsdWUsIHByZXZpb3VzOiB2YWx1ZSB9KTtcbiAgcmV0dXJuIFJlYWN0LnVzZU1lbW8oKCkgPT4ge1xuICAgIGlmIChyZWYuY3VycmVudC52YWx1ZSAhPT0gdmFsdWUpIHtcbiAgICAgIHJlZi5jdXJyZW50LnByZXZpb3VzID0gcmVmLmN1cnJlbnQudmFsdWU7XG4gICAgICByZWYuY3VycmVudC52YWx1ZSA9IHZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gcmVmLmN1cnJlbnQucHJldmlvdXM7XG4gIH0sIFt2YWx1ZV0pO1xufVxuZXhwb3J0IHtcbiAgdXNlUHJldmlvdXNcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tanMubWFwXG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/@radix-ui/react-use-previous/dist/index.mjs\n"); /***/ }), /***/ "(ssr)/./node_modules/@radix-ui/react-use-size/dist/index.mjs": /*!**************************************************************!*\ !*** ./node_modules/@radix-ui/react-use-size/dist/index.mjs ***! \**************************************************************/ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ useSize: () => (/* binding */ useSize)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var _radix_ui_react_use_layout_effect__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @radix-ui/react-use-layout-effect */ \"(ssr)/./node_modules/@radix-ui/react-use-layout-effect/dist/index.mjs\");\n// packages/react/use-size/src/useSize.tsx\n\n\nfunction useSize(element) {\n const [size, setSize] = react__WEBPACK_IMPORTED_MODULE_0__.useState(void 0);\n (0,_radix_ui_react_use_layout_effect__WEBPACK_IMPORTED_MODULE_1__.useLayoutEffect)(() => {\n if (element) {\n setSize({ width: element.offsetWidth, height: element.offsetHeight });\n const resizeObserver = new ResizeObserver((entries) => {\n if (!Array.isArray(entries)) {\n return;\n }\n if (!entries.length) {\n return;\n }\n const entry = entries[0];\n let width;\n let height;\n if (\"borderBoxSize\" in entry) {\n const borderSizeEntry = entry[\"borderBoxSize\"];\n const borderSize = Array.isArray(borderSizeEntry) ? borderSizeEntry[0] : borderSizeEntry;\n width = borderSize[\"inlineSize\"];\n height = borderSize[\"blockSize\"];\n } else {\n width = element.offsetWidth;\n height = element.offsetHeight;\n }\n setSize({ width, height });\n });\n resizeObserver.observe(element, { box: \"border-box\" });\n return () => resizeObserver.unobserve(element);\n } else {\n setSize(void 0);\n }\n }, [element]);\n return size;\n}\n\n//# sourceMappingURL=index.mjs.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LXVzZS1zaXplL2Rpc3QvaW5kZXgubWpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUFBO0FBQytCO0FBQ3FDO0FBQ3BFO0FBQ0EsMEJBQTBCLDJDQUFjO0FBQ3hDLEVBQUUsa0ZBQWU7QUFDakI7QUFDQSxnQkFBZ0IsMERBQTBEO0FBQzFFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQSxrQkFBa0IsZUFBZTtBQUNqQyxPQUFPO0FBQ1Asd0NBQXdDLG1CQUFtQjtBQUMzRDtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFHRTtBQUNGIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vbXktdjAtcHJvamVjdC8uL25vZGVfbW9kdWxlcy9AcmFkaXgtdWkvcmVhY3QtdXNlLXNpemUvZGlzdC9pbmRleC5tanM/ODQ1YyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBwYWNrYWdlcy9yZWFjdC91c2Utc2l6ZS9zcmMvdXNlU2l6ZS50c3hcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlTGF5b3V0RWZmZWN0IH0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC11c2UtbGF5b3V0LWVmZmVjdFwiO1xuZnVuY3Rpb24gdXNlU2l6ZShlbGVtZW50KSB7XG4gIGNvbnN0IFtzaXplLCBzZXRTaXplXSA9IFJlYWN0LnVzZVN0YXRlKHZvaWQgMCk7XG4gIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGVsZW1lbnQpIHtcbiAgICAgIHNldFNpemUoeyB3aWR0aDogZWxlbWVudC5vZmZzZXRXaWR0aCwgaGVpZ2h0OiBlbGVtZW50Lm9mZnNldEhlaWdodCB9KTtcbiAgICAgIGNvbnN0IHJlc2l6ZU9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKChlbnRyaWVzKSA9PiB7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShlbnRyaWVzKSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWVudHJpZXMubGVuZ3RoKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGVudHJ5ID0gZW50cmllc1swXTtcbiAgICAgICAgbGV0IHdpZHRoO1xuICAgICAgICBsZXQgaGVpZ2h0O1xuICAgICAgICBpZiAoXCJib3JkZXJCb3hTaXplXCIgaW4gZW50cnkpIHtcbiAgICAgICAgICBjb25zdCBib3JkZXJTaXplRW50cnkgPSBlbnRyeVtcImJvcmRlckJveFNpemVcIl07XG4gICAgICAgICAgY29uc3QgYm9yZGVyU2l6ZSA9IEFycmF5LmlzQXJyYXkoYm9yZGVyU2l6ZUVudHJ5KSA/IGJvcmRlclNpemVFbnRyeVswXSA6IGJvcmRlclNpemVFbnRyeTtcbiAgICAgICAgICB3aWR0aCA9IGJvcmRlclNpemVbXCJpbmxpbmVTaXplXCJdO1xuICAgICAgICAgIGhlaWdodCA9IGJvcmRlclNpemVbXCJibG9ja1NpemVcIl07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgd2lkdGggPSBlbGVtZW50Lm9mZnNldFdpZHRoO1xuICAgICAgICAgIGhlaWdodCA9IGVsZW1lbnQub2Zmc2V0SGVpZ2h0O1xuICAgICAgICB9XG4gICAgICAgIHNldFNpemUoeyB3aWR0aCwgaGVpZ2h0IH0pO1xuICAgICAgfSk7XG4gICAgICByZXNpemVPYnNlcnZlci5vYnNlcnZlKGVsZW1lbnQsIHsgYm94OiBcImJvcmRlci1ib3hcIiB9KTtcbiAgICAgIHJldHVybiAoKSA9PiByZXNpemVPYnNlcnZlci51bm9ic2VydmUoZWxlbWVudCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNldFNpemUodm9pZCAwKTtcbiAgICB9XG4gIH0sIFtlbGVtZW50XSk7XG4gIHJldHVybiBzaXplO1xufVxuZXhwb3J0IHtcbiAgdXNlU2l6ZVxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4Lm1qcy5tYXBcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/@radix-ui/react-use-size/dist/index.mjs\n"); /***/ }) }; ;