/* * 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/). */ (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([["main"],{ /***/ "./node_modules/next/dist/build/deployment-id.js": /*!*******************************************************!*\ !*** ./node_modules/next/dist/build/deployment-id.js ***! \*******************************************************/ /***/ (function(__unused_webpack_module, exports, __webpack_require__) { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"getDeploymentIdQueryOrEmptyString\", ({\n enumerable: true,\n get: function() {\n return getDeploymentIdQueryOrEmptyString;\n }\n}));\nfunction getDeploymentIdQueryOrEmptyString() {\n if (false) {}\n return \"\";\n}\n\n//# sourceMappingURL=deployment-id.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2J1aWxkL2RlcGxveW1lbnQtaWQuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYiw4Q0FBNkM7QUFDN0M7QUFDQSxDQUFDLEVBQUM7QUFDRixxRUFBb0U7QUFDcEU7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLEVBQUM7QUFDRjtBQUNBLFFBQVEsS0FBOEIsRUFBRSxFQUVuQztBQUNMO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9idWlsZC9kZXBsb3ltZW50LWlkLmpzP2FhZDgiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJnZXREZXBsb3ltZW50SWRRdWVyeU9yRW1wdHlTdHJpbmdcIiwge1xuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGdldERlcGxveW1lbnRJZFF1ZXJ5T3JFbXB0eVN0cmluZztcbiAgICB9XG59KTtcbmZ1bmN0aW9uIGdldERlcGxveW1lbnRJZFF1ZXJ5T3JFbXB0eVN0cmluZygpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTkVYVF9ERVBMT1lNRU5UX0lEKSB7XG4gICAgICAgIHJldHVybiBgP2RwbD0ke3Byb2Nlc3MuZW52Lk5FWFRfREVQTE9ZTUVOVF9JRH1gO1xuICAgIH1cbiAgICByZXR1cm4gXCJcIjtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGVwbG95bWVudC1pZC5qcy5tYXAiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/next/dist/build/deployment-id.js\n")); /***/ }), /***/ "./node_modules/next/dist/build/polyfills/polyfill-module.js": /*!*******************************************************************!*\ !*** ./node_modules/next/dist/build/polyfills/polyfill-module.js ***! \*******************************************************************/ /***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { eval(__webpack_require__.ts("\"trimStart\"in String.prototype||(String.prototype.trimStart=String.prototype.trimLeft),\"trimEnd\"in String.prototype||(String.prototype.trimEnd=String.prototype.trimRight),\"description\"in Symbol.prototype||Object.defineProperty(Symbol.prototype,\"description\",{configurable:!0,get:function(){var t=/\\((.*)\\)/.exec(this.toString());return t?t[1]:void 0}}),Array.prototype.flat||(Array.prototype.flat=function(t,r){return r=this.concat.apply([],this),t>1&&r.some(Array.isArray)?r.flat(t-1):r},Array.prototype.flatMap=function(t,r){return this.map(t,r).flat()}),Promise.prototype.finally||(Promise.prototype.finally=function(t){if(\"function\"!=typeof t)return this.then(t,t);var r=this.constructor||Promise;return this.then(function(n){return r.resolve(t()).then(function(){return n})},function(n){return r.resolve(t()).then(function(){throw n})})}),Object.fromEntries||(Object.fromEntries=function(t){return Array.from(t).reduce(function(t,r){return t[r[0]]=r[1],t},{})}),Array.prototype.at||(Array.prototype.at=function(t){var r=Math.trunc(t)||0;if(r<0&&(r+=this.length),!(r<0||r>=this.length))return this[r]});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2J1aWxkL3BvbHlmaWxscy9wb2x5ZmlsbC1tb2R1bGUuanMiLCJtYXBwaW5ncyI6IkFBQUEsbVFBQW1RLCtCQUErQix1Q0FBdUMsc0JBQXNCLDREQUE0RCw2RUFBNkUsdUNBQXVDLDRCQUE0QixvRUFBb0UsOENBQThDLGdDQUFnQyw2QkFBNkIsc0NBQXNDLFNBQVMsRUFBRSxhQUFhLHNDQUFzQyxRQUFRLEVBQUUsRUFBRSxzREFBc0QsMENBQTBDLHNCQUFzQixHQUFHLEVBQUUsc0RBQXNELHVCQUF1QiwrREFBK0QiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9idWlsZC9wb2x5ZmlsbHMvcG9seWZpbGwtbW9kdWxlLmpzPzY5YzgiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ0cmltU3RhcnRcImluIFN0cmluZy5wcm90b3R5cGV8fChTdHJpbmcucHJvdG90eXBlLnRyaW1TdGFydD1TdHJpbmcucHJvdG90eXBlLnRyaW1MZWZ0KSxcInRyaW1FbmRcImluIFN0cmluZy5wcm90b3R5cGV8fChTdHJpbmcucHJvdG90eXBlLnRyaW1FbmQ9U3RyaW5nLnByb3RvdHlwZS50cmltUmlnaHQpLFwiZGVzY3JpcHRpb25cImluIFN5bWJvbC5wcm90b3R5cGV8fE9iamVjdC5kZWZpbmVQcm9wZXJ0eShTeW1ib2wucHJvdG90eXBlLFwiZGVzY3JpcHRpb25cIix7Y29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3ZhciB0PS9cXCgoLiopXFwpLy5leGVjKHRoaXMudG9TdHJpbmcoKSk7cmV0dXJuIHQ/dFsxXTp2b2lkIDB9fSksQXJyYXkucHJvdG90eXBlLmZsYXR8fChBcnJheS5wcm90b3R5cGUuZmxhdD1mdW5jdGlvbih0LHIpe3JldHVybiByPXRoaXMuY29uY2F0LmFwcGx5KFtdLHRoaXMpLHQ+MSYmci5zb21lKEFycmF5LmlzQXJyYXkpP3IuZmxhdCh0LTEpOnJ9LEFycmF5LnByb3RvdHlwZS5mbGF0TWFwPWZ1bmN0aW9uKHQscil7cmV0dXJuIHRoaXMubWFwKHQscikuZmxhdCgpfSksUHJvbWlzZS5wcm90b3R5cGUuZmluYWxseXx8KFByb21pc2UucHJvdG90eXBlLmZpbmFsbHk9ZnVuY3Rpb24odCl7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgdClyZXR1cm4gdGhpcy50aGVuKHQsdCk7dmFyIHI9dGhpcy5jb25zdHJ1Y3Rvcnx8UHJvbWlzZTtyZXR1cm4gdGhpcy50aGVuKGZ1bmN0aW9uKG4pe3JldHVybiByLnJlc29sdmUodCgpKS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIG59KX0sZnVuY3Rpb24obil7cmV0dXJuIHIucmVzb2x2ZSh0KCkpLnRoZW4oZnVuY3Rpb24oKXt0aHJvdyBufSl9KX0pLE9iamVjdC5mcm9tRW50cmllc3x8KE9iamVjdC5mcm9tRW50cmllcz1mdW5jdGlvbih0KXtyZXR1cm4gQXJyYXkuZnJvbSh0KS5yZWR1Y2UoZnVuY3Rpb24odCxyKXtyZXR1cm4gdFtyWzBdXT1yWzFdLHR9LHt9KX0pLEFycmF5LnByb3RvdHlwZS5hdHx8KEFycmF5LnByb3RvdHlwZS5hdD1mdW5jdGlvbih0KXt2YXIgcj1NYXRoLnRydW5jKHQpfHwwO2lmKHI8MCYmKHIrPXRoaXMubGVuZ3RoKSwhKHI8MHx8cj49dGhpcy5sZW5ndGgpKXJldHVybiB0aGlzW3JdfSk7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/next/dist/build/polyfills/polyfill-module.js\n")); /***/ }), /***/ "./node_modules/next/dist/compiled/@next/react-dev-overlay/dist/client.js": /*!********************************************************************************!*\ !*** ./node_modules/next/dist/compiled/@next/react-dev-overlay/dist/client.js ***! \********************************************************************************/ /***/ (function(module, __unused_webpack_exports, __webpack_require__) { eval(__webpack_require__.ts("var __dirname = \"/\";\n(function(){\"use strict\";var e={876:function(e,t){Object.defineProperty(t,\"__esModule\",{value:true});0&&0;function _export(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:true,get:t[r]})}_export(t,{hydrationErrorWarning:function(){return r},hydrationErrorComponentStack:function(){return n},patchConsoleError:function(){return patchConsoleError}});let r;let n;const o=new Set(['Warning: Text content did not match. Server: \"%s\" Client: \"%s\"%s',\"Warning: Expected server HTML to contain a matching <%s> in <%s>.%s\",'Warning: Expected server HTML to contain a matching text node for \"%s\" in <%s>.%s',\"Warning: Did not expect server HTML to contain a <%s> in <%s>.%s\",'Warning: Did not expect server HTML to contain the text node \"%s\" in <%s>.%s']);function patchConsoleError(){const e=console.error;console.error=function(t,a,i,l){if(o.has(t)){r=t.replace(\"%s\",a).replace(\"%s\",i).replace(\"%s\",\"\");n=l}e.apply(console,arguments)}}if((typeof t.default===\"function\"||typeof t.default===\"object\"&&t.default!==null)&&typeof t.default.__esModule===\"undefined\"){Object.defineProperty(t.default,\"__esModule\",{value:true});Object.assign(t.default,t);e.exports=t.default}},659:function(e,t){Object.defineProperty(t,\"__esModule\",{value:true});Object.defineProperty(t,\"parseComponentStack\",{enumerable:true,get:function(){return parseComponentStack}});function parseComponentStack(e){const t=[];for(const n of e.trim().split(\"\\n\")){const e=/at ([^ ]+)( \\((.*)\\))?/.exec(n);if(e==null?void 0:e[1]){const n=e[1];const o=e[3];if(o==null?void 0:o.includes(\"next/dist\")){break}const a=o==null?void 0:o.replace(/^(webpack-internal:\\/\\/\\/|file:\\/\\/)(\\(.*\\)\\/)?/,\"\");var r;const[i,l,s]=(r=a==null?void 0:a.split(\":\"))!=null?r:[];t.push({component:n,file:i,lineNumber:l?Number(l):undefined,column:s?Number(s):undefined})}}return t}if((typeof t.default===\"function\"||typeof t.default===\"object\"&&t.default!==null)&&typeof t.default.__esModule===\"undefined\"){Object.defineProperty(t.default,\"__esModule\",{value:true});Object.assign(t.default,t);e.exports=t.default}},204:function(e,t,r){var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){if(n===undefined)n=r;var o=Object.getOwnPropertyDescriptor(t,r);if(!o||(\"get\"in o?!t.__esModule:o.writable||o.configurable)){o={enumerable:true,get:function(){return t[r]}}}Object.defineProperty(e,n,o)}:function(e,t,r,n){if(n===undefined)n=r;e[n]=t[r]});var o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,\"default\",{enumerable:true,value:t})}:function(e,t){e[\"default\"]=t});var a=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)if(r!==\"default\"&&Object.prototype.hasOwnProperty.call(e,r))n(t,e,r);o(t,e);return t};var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,\"__esModule\",{value:true});t.onRefresh=t.onBeforeRefresh=t.unregister=t.register=t.onBuildError=t.onBuildOk=t.ReactDevOverlay=t.getServerError=t.getErrorByType=void 0;const l=a(r(851));const s=r(636);const u=r(659);const c=r(876);(0,c.patchConsoleError)();let d=false;let f=undefined;function onUnhandledError(e){const t=e?.error;if(!t||!(t instanceof Error)||typeof t.stack!==\"string\"){return}if(t.message.match(/(hydration|content does not match|did not match)/i)){if(c.hydrationErrorWarning){t.message+=\"\\n\\n\"+c.hydrationErrorWarning}t.message+=`\\n\\nSee more info here: https://nextjs.org/docs/messages/react-hydration-error`}const r=t;const n=typeof c.hydrationErrorComponentStack===\"string\"?(0,u.parseComponentStack)(c.hydrationErrorComponentStack).map((e=>e.component)):undefined;l.emit({type:l.TYPE_UNHANDLED_ERROR,reason:t,frames:(0,s.parseStack)(r.stack),componentStack:n})}function onUnhandledRejection(e){const t=e?.reason;if(!t||!(t instanceof Error)||typeof t.stack!==\"string\"){return}const r=t;l.emit({type:l.TYPE_UNHANDLED_REJECTION,reason:t,frames:(0,s.parseStack)(r.stack)})}function register(){if(d){return}d=true;try{const e=Error.stackTraceLimit;Error.stackTraceLimit=50;f=e}catch{}window.addEventListener(\"error\",onUnhandledError);window.addEventListener(\"unhandledrejection\",onUnhandledRejection)}t.register=register;function unregister(){if(!d){return}d=false;if(f!==undefined){try{Error.stackTraceLimit=f}catch{}f=undefined}window.removeEventListener(\"error\",onUnhandledError);window.removeEventListener(\"unhandledrejection\",onUnhandledRejection)}t.unregister=unregister;function onBuildOk(){l.emit({type:l.TYPE_BUILD_OK})}t.onBuildOk=onBuildOk;function onBuildError(e){l.emit({type:l.TYPE_BUILD_ERROR,message:e})}t.onBuildError=onBuildError;function onRefresh(){l.emit({type:l.TYPE_REFRESH})}t.onRefresh=onRefresh;function onBeforeRefresh(){l.emit({type:l.TYPE_BEFORE_REFRESH})}t.onBeforeRefresh=onBeforeRefresh;var m=r(403);Object.defineProperty(t,\"getErrorByType\",{enumerable:true,get:function(){return m.getErrorByType}});var p=r(233);Object.defineProperty(t,\"getServerError\",{enumerable:true,get:function(){return p.getServerError}});var b=r(222);Object.defineProperty(t,\"ReactDevOverlay\",{enumerable:true,get:function(){return i(b).default}})},790:function(e,t,r){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,\"__esModule\",{value:true});t.ErrorBoundary=void 0;const o=n(r(522));class ErrorBoundary extends o.default.PureComponent{constructor(){super(...arguments);this.state={error:null}}static getDerivedStateFromError(e){return{error:e}}componentDidCatch(e,t){this.props.onError(e,t?.componentStack||null);if(!this.props.globalOverlay){this.setState({error:e})}}render(){return this.state.error||this.props.globalOverlay&&this.props.isMounted?this.props.globalOverlay?o.default.createElement(\"html\",null,o.default.createElement(\"head\",null),o.default.createElement(\"body\",null)):null:this.props.children}}t.ErrorBoundary=ErrorBoundary},222:function(e,t,r){var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){if(n===undefined)n=r;var o=Object.getOwnPropertyDescriptor(t,r);if(!o||(\"get\"in o?!t.__esModule:o.writable||o.configurable)){o={enumerable:true,get:function(){return t[r]}}}Object.defineProperty(e,n,o)}:function(e,t,r,n){if(n===undefined)n=r;e[n]=t[r]});var o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,\"default\",{enumerable:true,value:t})}:function(e,t){e[\"default\"]=t});var a=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)if(r!==\"default\"&&Object.prototype.hasOwnProperty.call(e,r))n(t,e,r);o(t,e);return t};Object.defineProperty(t,\"__esModule\",{value:true});const i=a(r(522));const l=a(r(851));const s=r(338);const u=r(936);const c=r(355);const d=r(790);const f=r(884);const m=r(464);const p=r(495);function pushErrorFilterDuplicates(e,t){return[...e.filter((e=>e.event.reason!==t.event.reason)),t]}function reducer(e,t){switch(t.type){case l.TYPE_BUILD_OK:{return{...e,buildError:null}}case l.TYPE_BUILD_ERROR:{return{...e,buildError:t.message}}case l.TYPE_BEFORE_REFRESH:{return{...e,refreshState:{type:\"pending\",errors:[]}}}case l.TYPE_REFRESH:{return{...e,buildError:null,errors:e.refreshState.type===\"pending\"?e.refreshState.errors:[],refreshState:{type:\"idle\"}}}case l.TYPE_UNHANDLED_ERROR:case l.TYPE_UNHANDLED_REJECTION:{switch(e.refreshState.type){case\"idle\":{return{...e,nextId:e.nextId+1,errors:pushErrorFilterDuplicates(e.errors,{id:e.nextId,event:t})}}case\"pending\":{return{...e,nextId:e.nextId+1,refreshState:{...e.refreshState,errors:pushErrorFilterDuplicates(e.refreshState.errors,{id:e.nextId,event:t})}}}default:const r=e.refreshState;return e}}default:{const r=t;return e}}}const shouldPreventDisplay=(e,t)=>{if(!t||!e){return false}return t.includes(e)};const b=function ReactDevOverlay({children:e,preventDisplay:t,globalOverlay:r}){const[n,o]=i.useReducer(reducer,{nextId:1,buildError:null,errors:[],refreshState:{type:\"idle\"}});i.useEffect((()=>{l.on(o);return function(){l.off(o)}}),[o]);const a=i.useCallback(((e,t)=>{}),[]);const b=n.buildError!=null;const v=Boolean(n.errors.length);const g=b?\"build\":v?\"runtime\":null;const h=g!==null;return i.createElement(i.Fragment,null,i.createElement(d.ErrorBoundary,{globalOverlay:r,isMounted:h,onError:a},e??null),h?i.createElement(s.ShadowPortal,{globalOverlay:r},i.createElement(p.CssReset,null),i.createElement(f.Base,null),i.createElement(m.ComponentStyles,null),shouldPreventDisplay(g,t)?null:b?i.createElement(u.BuildError,{message:n.buildError}):v?i.createElement(c.Errors,{errors:n.errors}):undefined):undefined)};t[\"default\"]=b},851:function(e,t){Object.defineProperty(t,\"__esModule\",{value:true});t.off=t.on=t.emit=t.TYPE_UNHANDLED_REJECTION=t.TYPE_UNHANDLED_ERROR=t.TYPE_BEFORE_REFRESH=t.TYPE_REFRESH=t.TYPE_BUILD_ERROR=t.TYPE_BUILD_OK=void 0;t.TYPE_BUILD_OK=\"build-ok\";t.TYPE_BUILD_ERROR=\"build-error\";t.TYPE_REFRESH=\"fast-refresh\";t.TYPE_BEFORE_REFRESH=\"before-fast-refresh\";t.TYPE_UNHANDLED_ERROR=\"unhandled-error\";t.TYPE_UNHANDLED_REJECTION=\"unhandled-rejection\";let r=new Set;let n=[];function drain(){setTimeout((function(){while(Boolean(n.length)&&Boolean(r.size)){const e=n.shift();r.forEach((t=>t(e)))}}),1)}function emit(e){n.push(Object.freeze({...e}));drain()}t.emit=emit;function on(e){if(r.has(e)){return false}r.add(e);drain();return true}t.on=on;function off(e){if(r.has(e)){r.delete(e);return true}return false}t.off=off},987:function(e,t,r){var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){if(n===undefined)n=r;var o=Object.getOwnPropertyDescriptor(t,r);if(!o||(\"get\"in o?!t.__esModule:o.writable||o.configurable)){o={enumerable:true,get:function(){return t[r]}}}Object.defineProperty(e,n,o)}:function(e,t,r,n){if(n===undefined)n=r;e[n]=t[r]});var o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,\"default\",{enumerable:true,value:t})}:function(e,t){e[\"default\"]=t});var a=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)if(r!==\"default\"&&Object.prototype.hasOwnProperty.call(e,r))n(t,e,r);o(t,e);return t};var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,\"__esModule\",{value:true});t.CodeFrame=void 0;const l=i(r(997));const s=a(r(522));const u=i(r(518));const c=r(504);const d=function CodeFrame({stackFrame:e,codeFrame:t}){const r=s.useMemo((()=>{const e=t.split(/\\r?\\n/g);const r=e.map((e=>/^>? +\\d+ +\\| [ ]+/.exec((0,u.default)(e))===null?null:/^>? +\\d+ +\\| ( *)/.exec((0,u.default)(e)))).filter(Boolean).map((e=>e.pop())).reduce(((e,t)=>isNaN(e)?t.length:Math.min(e,t.length)),NaN);if(r>1){const t=\" \".repeat(r);return e.map(((e,r)=>~(r=e.indexOf(\"|\"))?e.substring(0,r)+e.substring(r).replace(t,\"\"):e)).join(\"\\n\")}return e.join(\"\\n\")}),[t]);const n=s.useMemo((()=>l.default.ansiToJson(r,{json:true,use_classes:true,remove_empty:true})),[r]);const o=s.useCallback((()=>{const t=new URLSearchParams;for(const r in e){t.append(r,(e[r]??\"\").toString())}self.fetch(`${ false||\"\"}/__nextjs_launch-editor?${t.toString()}`).then((()=>{}),(()=>{console.error(\"There was an issue opening this code in your editor.\")}))}),[e]);return s.createElement(\"div\",{\"data-nextjs-codeframe\":true},s.createElement(\"div\",null,s.createElement(\"p\",{role:\"link\",onClick:o,tabIndex:1,title:\"Click to open in your editor\"},s.createElement(\"span\",null,(0,c.getFrameSource)(e),\" @ \",e.methodName),s.createElement(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 24 24\",fill:\"none\",stroke:\"currentColor\",strokeWidth:\"2\",strokeLinecap:\"round\",strokeLinejoin:\"round\"},s.createElement(\"path\",{d:\"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\"}),s.createElement(\"polyline\",{points:\"15 3 21 3 21 9\"}),s.createElement(\"line\",{x1:\"10\",y1:\"14\",x2:\"21\",y2:\"3\"})))),s.createElement(\"pre\",null,n.map(((e,t)=>s.createElement(\"span\",{key:`frame-${t}`,style:{color:e.fg?`var(--color-${e.fg})`:undefined,...e.decoration===\"bold\"?{fontWeight:800}:e.decoration===\"italic\"?{fontStyle:\"italic\"}:undefined}},e.content)))))};t.CodeFrame=d},413:function(e,t,r){Object.defineProperty(t,\"__esModule\",{value:true});t.CodeFrame=void 0;var n=r(987);Object.defineProperty(t,\"CodeFrame\",{enumerable:true,get:function(){return n.CodeFrame}})},399:function(e,t,r){Object.defineProperty(t,\"__esModule\",{value:true});t.styles=void 0;const n=r(910);const o=(0,n.noop)`\n [data-nextjs-codeframe] {\n overflow: auto;\n border-radius: var(--size-gap-half);\n background-color: var(--color-ansi-bg);\n color: var(--color-ansi-fg);\n }\n [data-nextjs-codeframe]::selection,\n [data-nextjs-codeframe] *::selection {\n background-color: var(--color-ansi-selection);\n }\n [data-nextjs-codeframe] * {\n color: inherit;\n background-color: transparent;\n font-family: var(--font-stack-monospace);\n }\n\n [data-nextjs-codeframe] > * {\n margin: 0;\n padding: calc(var(--size-gap) + var(--size-gap-half))\n calc(var(--size-gap-double) + var(--size-gap-half));\n }\n [data-nextjs-codeframe] > div {\n display: inline-block;\n width: auto;\n min-width: 100%;\n border-bottom: 1px solid var(--color-ansi-bright-black);\n }\n [data-nextjs-codeframe] > div > p {\n display: flex;\n align-items: center;\n justify-content: space-between;\n cursor: pointer;\n margin: 0;\n }\n [data-nextjs-codeframe] > div > p:hover {\n text-decoration: underline dotted;\n }\n [data-nextjs-codeframe] div > p > svg {\n width: auto;\n height: 1em;\n margin-left: 8px;\n }\n [data-nextjs-codeframe] div > pre {\n overflow: hidden;\n display: inline-block;\n }\n`;t.styles=o},616:function(e,t,r){var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){if(n===undefined)n=r;var o=Object.getOwnPropertyDescriptor(t,r);if(!o||(\"get\"in o?!t.__esModule:o.writable||o.configurable)){o={enumerable:true,get:function(){return t[r]}}}Object.defineProperty(e,n,o)}:function(e,t,r,n){if(n===undefined)n=r;e[n]=t[r]});var o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,\"default\",{enumerable:true,value:t})}:function(e,t){e[\"default\"]=t});var a=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)if(r!==\"default\"&&Object.prototype.hasOwnProperty.call(e,r))n(t,e,r);o(t,e);return t};Object.defineProperty(t,\"__esModule\",{value:true});t.Dialog=void 0;const i=a(r(522));const l=r(169);const s=function Dialog({children:e,type:t,onClose:r,...n}){const[o,a]=i.useState(null);const[s,u]=i.useState(typeof document!==\"undefined\"&&document.hasFocus()?\"dialog\":undefined);const c=i.useCallback((e=>{a(e)}),[]);(0,l.useOnClickOutside)(o,r);i.useEffect((()=>{if(o==null){return}const e=o.getRootNode();if(!(e instanceof ShadowRoot)){return}const t=e;function handler(e){const r=t.activeElement;if(e.key===\"Enter\"&&r instanceof HTMLElement&&r.getAttribute(\"role\")===\"link\"){e.preventDefault();e.stopPropagation();r.click()}}function handleFocus(){u(document.hasFocus()?\"dialog\":undefined)}t.addEventListener(\"keydown\",handler);window.addEventListener(\"focus\",handleFocus);window.addEventListener(\"blur\",handleFocus);return()=>{t.removeEventListener(\"keydown\",handler);window.removeEventListener(\"focus\",handleFocus);window.removeEventListener(\"blur\",handleFocus)}}),[o]);return i.createElement(\"div\",{ref:c,\"data-nextjs-dialog\":true,tabIndex:-1,role:s,\"aria-labelledby\":n[\"aria-labelledby\"],\"aria-describedby\":n[\"aria-describedby\"],\"aria-modal\":\"true\"},i.createElement(\"div\",{\"data-nextjs-dialog-banner\":true,className:`banner-${t}`}),e)};t.Dialog=s},11:function(e,t,r){var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){if(n===undefined)n=r;var o=Object.getOwnPropertyDescriptor(t,r);if(!o||(\"get\"in o?!t.__esModule:o.writable||o.configurable)){o={enumerable:true,get:function(){return t[r]}}}Object.defineProperty(e,n,o)}:function(e,t,r,n){if(n===undefined)n=r;e[n]=t[r]});var o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,\"default\",{enumerable:true,value:t})}:function(e,t){e[\"default\"]=t});var a=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)if(r!==\"default\"&&Object.prototype.hasOwnProperty.call(e,r))n(t,e,r);o(t,e);return t};Object.defineProperty(t,\"__esModule\",{value:true});t.DialogBody=void 0;const i=a(r(522));const l=function DialogBody({children:e,className:t}){return i.createElement(\"div\",{\"data-nextjs-dialog-body\":true,className:t},e)};t.DialogBody=l},991:function(e,t,r){var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){if(n===undefined)n=r;var o=Object.getOwnPropertyDescriptor(t,r);if(!o||(\"get\"in o?!t.__esModule:o.writable||o.configurable)){o={enumerable:true,get:function(){return t[r]}}}Object.defineProperty(e,n,o)}:function(e,t,r,n){if(n===undefined)n=r;e[n]=t[r]});var o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,\"default\",{enumerable:true,value:t})}:function(e,t){e[\"default\"]=t});var a=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)if(r!==\"default\"&&Object.prototype.hasOwnProperty.call(e,r))n(t,e,r);o(t,e);return t};Object.defineProperty(t,\"__esModule\",{value:true});t.DialogContent=void 0;const i=a(r(522));const l=function DialogContent({children:e,className:t}){return i.createElement(\"div\",{\"data-nextjs-dialog-content\":true,className:t},e)};t.DialogContent=l},342:function(e,t,r){var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){if(n===undefined)n=r;var o=Object.getOwnPropertyDescriptor(t,r);if(!o||(\"get\"in o?!t.__esModule:o.writable||o.configurable)){o={enumerable:true,get:function(){return t[r]}}}Object.defineProperty(e,n,o)}:function(e,t,r,n){if(n===undefined)n=r;e[n]=t[r]});var o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,\"default\",{enumerable:true,value:t})}:function(e,t){e[\"default\"]=t});var a=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)if(r!==\"default\"&&Object.prototype.hasOwnProperty.call(e,r))n(t,e,r);o(t,e);return t};Object.defineProperty(t,\"__esModule\",{value:true});t.DialogHeader=void 0;const i=a(r(522));const l=function DialogHeader({children:e,className:t}){return i.createElement(\"div\",{\"data-nextjs-dialog-header\":true,className:t},e)};t.DialogHeader=l},651:function(e,t,r){Object.defineProperty(t,\"__esModule\",{value:true});t.styles=t.DialogHeader=t.DialogContent=t.DialogBody=t.Dialog=void 0;var n=r(616);Object.defineProperty(t,\"Dialog\",{enumerable:true,get:function(){return n.Dialog}});var o=r(11);Object.defineProperty(t,\"DialogBody\",{enumerable:true,get:function(){return o.DialogBody}});var a=r(991);Object.defineProperty(t,\"DialogContent\",{enumerable:true,get:function(){return a.DialogContent}});var i=r(342);Object.defineProperty(t,\"DialogHeader\",{enumerable:true,get:function(){return i.DialogHeader}});var l=r(213);Object.defineProperty(t,\"styles\",{enumerable:true,get:function(){return l.styles}})},213:function(e,t,r){Object.defineProperty(t,\"__esModule\",{value:true});t.styles=void 0;const n=r(910);const o=(0,n.noop)`\n [data-nextjs-dialog] {\n display: flex;\n flex-direction: column;\n width: 100%;\n margin-right: auto;\n margin-left: auto;\n outline: none;\n background: var(--color-background);\n border-radius: var(--size-gap);\n box-shadow: 0 var(--size-gap-half) var(--size-gap-double)\n rgba(0, 0, 0, 0.25);\n max-height: calc(100% - 56px);\n overflow-y: hidden;\n }\n\n @media (max-height: 812px) {\n [data-nextjs-dialog-overlay] {\n max-height: calc(100% - 15px);\n }\n }\n\n @media (min-width: 576px) {\n [data-nextjs-dialog] {\n max-width: 540px;\n box-shadow: 0 var(--size-gap) var(--size-gap-quad) rgba(0, 0, 0, 0.25);\n }\n }\n\n @media (min-width: 768px) {\n [data-nextjs-dialog] {\n max-width: 720px;\n }\n }\n\n @media (min-width: 992px) {\n [data-nextjs-dialog] {\n max-width: 960px;\n }\n }\n\n [data-nextjs-dialog-banner] {\n position: relative;\n }\n [data-nextjs-dialog-banner].banner-warning {\n border-color: var(--color-ansi-yellow);\n }\n [data-nextjs-dialog-banner].banner-error {\n border-color: var(--color-ansi-red);\n }\n\n [data-nextjs-dialog-banner]::after {\n z-index: 2;\n content: '';\n position: absolute;\n top: 0;\n right: 0;\n width: 100%;\n /* banner width: */\n border-top-width: var(--size-gap-half);\n border-bottom-width: 0;\n border-top-style: solid;\n border-bottom-style: solid;\n border-top-color: inherit;\n border-bottom-color: transparent;\n }\n\n [data-nextjs-dialog-content] {\n overflow-y: auto;\n border: none;\n margin: 0;\n /* calc(padding + banner width offset) */\n padding: calc(var(--size-gap-double) + var(--size-gap-half))\n var(--size-gap-double);\n height: 100%;\n display: flex;\n flex-direction: column;\n }\n [data-nextjs-dialog-content] > [data-nextjs-dialog-header] {\n flex-shrink: 0;\n margin-bottom: var(--size-gap-double);\n }\n [data-nextjs-dialog-content] > [data-nextjs-dialog-body] {\n position: relative;\n flex: 1 1 auto;\n }\n`;t.styles=o},831:function(e,t,r){var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){if(n===undefined)n=r;var o=Object.getOwnPropertyDescriptor(t,r);if(!o||(\"get\"in o?!t.__esModule:o.writable||o.configurable)){o={enumerable:true,get:function(){return t[r]}}}Object.defineProperty(e,n,o)}:function(e,t,r,n){if(n===undefined)n=r;e[n]=t[r]});var o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,\"default\",{enumerable:true,value:t})}:function(e,t){e[\"default\"]=t});var a=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)if(r!==\"default\"&&Object.prototype.hasOwnProperty.call(e,r))n(t,e,r);o(t,e);return t};Object.defineProperty(t,\"__esModule\",{value:true});t.LeftRightDialogHeader=void 0;const i=a(r(522));const l=r(865);const s=function LeftRightDialogHeader({children:e,className:t,previous:r,next:n,close:o}){const a=i.useRef(null);const s=i.useRef(null);const u=i.useRef(null);const[c,d]=i.useState(null);const f=i.useCallback((e=>{d(e)}),[]);i.useEffect((()=>{if(c==null){return}const e=c.getRootNode();const t=self.document;function handler(t){if(t.key===\"ArrowLeft\"){t.stopPropagation();if(a.current){a.current.focus()}r&&r()}else if(t.key===\"ArrowRight\"){t.stopPropagation();if(s.current){s.current.focus()}n&&n()}else if(t.key===\"Escape\"){t.stopPropagation();if(e instanceof ShadowRoot){const t=e.activeElement;if(t&&t!==u.current&&t instanceof HTMLElement){t.blur();return}}if(o){o()}}}e.addEventListener(\"keydown\",handler);if(e!==t){t.addEventListener(\"keydown\",handler)}return function(){e.removeEventListener(\"keydown\",handler);if(e!==t){t.removeEventListener(\"keydown\",handler)}}}),[o,c,n,r]);i.useEffect((()=>{if(c==null){return}const e=c.getRootNode();if(e instanceof ShadowRoot){const t=e.activeElement;if(r==null){if(a.current&&t===a.current){a.current.blur()}}else if(n==null){if(s.current&&t===s.current){s.current.blur()}}}}),[c,n,r]);return i.createElement(\"div\",{\"data-nextjs-dialog-left-right\":true,className:t},i.createElement(\"nav\",{ref:f},i.createElement(\"button\",{ref:a,type:\"button\",disabled:r==null?true:undefined,\"aria-disabled\":r==null?true:undefined,onClick:r??undefined},i.createElement(\"svg\",{viewBox:\"0 0 14 14\",fill:\"none\",xmlns:\"http://www.w3.org/2000/svg\"},i.createElement(\"title\",null,\"previous\"),i.createElement(\"path\",{d:\"M6.99996 1.16666L1.16663 6.99999L6.99996 12.8333M12.8333 6.99999H1.99996H12.8333Z\",stroke:\"currentColor\",strokeWidth:\"2\",strokeLinecap:\"round\",strokeLinejoin:\"round\"}))),i.createElement(\"button\",{ref:s,type:\"button\",disabled:n==null?true:undefined,\"aria-disabled\":n==null?true:undefined,onClick:n??undefined},i.createElement(\"svg\",{viewBox:\"0 0 14 14\",fill:\"none\",xmlns:\"http://www.w3.org/2000/svg\"},i.createElement(\"title\",null,\"next\"),i.createElement(\"path\",{d:\"M6.99996 1.16666L12.8333 6.99999L6.99996 12.8333M1.16663 6.99999H12H1.16663Z\",stroke:\"currentColor\",strokeWidth:\"2\",strokeLinecap:\"round\",strokeLinejoin:\"round\"}))),\" \",e),o?i.createElement(\"button\",{\"data-nextjs-errors-dialog-left-right-close-button\":true,ref:u,type:\"button\",onClick:o,\"aria-label\":\"Close\"},i.createElement(\"span\",{\"aria-hidden\":\"true\"},i.createElement(l.CloseIcon,null))):null)};t.LeftRightDialogHeader=s},732:function(e,t,r){Object.defineProperty(t,\"__esModule\",{value:true});t.styles=t.LeftRightDialogHeader=void 0;var n=r(831);Object.defineProperty(t,\"LeftRightDialogHeader\",{enumerable:true,get:function(){return n.LeftRightDialogHeader}});var o=r(543);Object.defineProperty(t,\"styles\",{enumerable:true,get:function(){return o.styles}})},543:function(e,t,r){Object.defineProperty(t,\"__esModule\",{value:true});t.styles=void 0;const n=r(910);const o=(0,n.noop)`\n [data-nextjs-dialog-left-right] {\n display: flex;\n flex-direction: row;\n align-content: center;\n align-items: center;\n justify-content: space-between;\n }\n [data-nextjs-dialog-left-right] > nav > button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n\n width: calc(var(--size-gap-double) + var(--size-gap));\n height: calc(var(--size-gap-double) + var(--size-gap));\n font-size: 0;\n border: none;\n background-color: rgba(255, 85, 85, 0.1);\n color: var(--color-ansi-red);\n cursor: pointer;\n transition: background-color 0.25s ease;\n }\n [data-nextjs-dialog-left-right] > nav > button > svg {\n width: auto;\n height: calc(var(--size-gap) + var(--size-gap-half));\n }\n [data-nextjs-dialog-left-right] > nav > button:hover {\n background-color: rgba(255, 85, 85, 0.2);\n }\n [data-nextjs-dialog-left-right] > nav > button:disabled {\n background-color: rgba(255, 85, 85, 0.1);\n color: rgba(255, 85, 85, 0.4);\n cursor: not-allowed;\n }\n\n [data-nextjs-dialog-left-right] > nav > button:first-of-type {\n border-radius: var(--size-gap-half) 0 0 var(--size-gap-half);\n margin-right: 1px;\n }\n [data-nextjs-dialog-left-right] > nav > button:last-of-type {\n border-radius: 0 var(--size-gap-half) var(--size-gap-half) 0;\n }\n\n [data-nextjs-dialog-left-right] > button:last-of-type {\n border: 0;\n padding: 0;\n\n background-color: transparent;\n appearance: none;\n\n opacity: 0.4;\n transition: opacity 0.25s ease;\n\n color: var(--color-font);\n }\n [data-nextjs-dialog-left-right] > button:last-of-type:hover {\n opacity: 0.7;\n }\n`;t.styles=o},17:function(e,t,r){var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){if(n===undefined)n=r;var o=Object.getOwnPropertyDescriptor(t,r);if(!o||(\"get\"in o?!t.__esModule:o.writable||o.configurable)){o={enumerable:true,get:function(){return t[r]}}}Object.defineProperty(e,n,o)}:function(e,t,r,n){if(n===undefined)n=r;e[n]=t[r]});var o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,\"default\",{enumerable:true,value:t})}:function(e,t){e[\"default\"]=t});var a=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)if(r!==\"default\"&&Object.prototype.hasOwnProperty.call(e,r))n(t,e,r);o(t,e);return t};var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,\"__esModule\",{value:true});t.Overlay=void 0;const l=i(r(975));const s=a(r(522));const u=r(800);const c=function Overlay({className:e,children:t,fixed:r}){s.useEffect((()=>{(0,u.lock)();return()=>{(0,u.unlock)()}}),[]);const[n,o]=s.useState(null);const a=s.useCallback((e=>{o(e)}),[]);s.useEffect((()=>{if(n==null){return}const e=(0,l.default)({context:n});return()=>{e.disengage()}}),[n]);return s.createElement(\"div\",{\"data-nextjs-dialog-overlay\":true,className:e,ref:a},s.createElement(\"div\",{\"data-nextjs-dialog-backdrop\":true,\"data-nextjs-dialog-backdrop-fixed\":r?true:undefined}),t)};t.Overlay=c},800:function(e,t){Object.defineProperty(t,\"__esModule\",{value:true});t.unlock=t.lock=void 0;let r;let n;let o=0;function lock(){setTimeout((()=>{if(o++>0){return}const e=window.innerWidth-document.documentElement.clientWidth;if(e>0){r=document.body.style.paddingRight;document.body.style.paddingRight=`${e}px`}n=document.body.style.overflow;document.body.style.overflow=\"hidden\"}))}t.lock=lock;function unlock(){setTimeout((()=>{if(o===0||--o!==0){return}if(r!==undefined){document.body.style.paddingRight=r;r=undefined}if(n!==undefined){document.body.style.overflow=n;n=undefined}}))}t.unlock=unlock},278:function(e,t,r){Object.defineProperty(t,\"__esModule\",{value:true});t.Overlay=void 0;var n=r(17);Object.defineProperty(t,\"Overlay\",{enumerable:true,get:function(){return n.Overlay}})},975:function(e,t,r){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,\"__esModule\",{value:true});const o=n(r(709));const a=n(r(292));function nodeArray(e){if(!e){return[]}if(Array.isArray(e)){return e}if(e.nodeType!==undefined){return[e]}if(typeof e===\"string\"){e=document.querySelectorAll(e)}if(e.length!==undefined){return[].slice.call(e,0)}throw new TypeError(\"unexpected input \"+String(e))}function contextToElement(e){var t=e.context,r=e.label,n=r===undefined?\"context-to-element\":r,o=e.resolveDocument,a=e.defaultToDocument;var i=nodeArray(t)[0];if(o&&i&&i.nodeType===Node.DOCUMENT_NODE){i=i.documentElement}if(!i&&a){return document.documentElement}if(!i){throw new TypeError(n+\" requires valid options.context\")}if(i.nodeType!==Node.ELEMENT_NODE&&i.nodeType!==Node.DOCUMENT_FRAGMENT_NODE){throw new TypeError(n+\" requires options.context to be an Element\")}return i}function getShadowHost(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},t=e.context;var r=contextToElement({label:\"get/shadow-host\",context:t});var n=null;while(r){n=r;r=r.parentNode}if(n.nodeType===n.DOCUMENT_FRAGMENT_NODE&&n.host){return n.host}return null}function getDocument(e){if(!e){return document}if(e.nodeType===Node.DOCUMENT_NODE){return e}return e.ownerDocument||document}function isActiveElement(e){var t=contextToElement({label:\"is/active-element\",resolveDocument:true,context:e});var r=getDocument(t);if(r.activeElement===t){return true}var n=getShadowHost({context:t});if(n&&n.shadowRoot.activeElement===t){return true}return false}function getParents(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},t=e.context;var r=[];var n=contextToElement({label:\"get/parents\",context:t});while(n){r.push(n);n=n.parentNode;if(n&&n.nodeType!==Node.ELEMENT_NODE){n=null}}return r}var i=[\"matches\",\"webkitMatchesSelector\",\"mozMatchesSelector\",\"msMatchesSelector\"];var l=null;function findMethodName(e){i.some((function(t){if(!e[t]){return false}l=t;return true}))}function elementMatches(e,t){if(!l){findMethodName(e)}return e[l](t)}var s=JSON.parse(JSON.stringify(o.default));var u=s.os.family||\"\";var c=u===\"Android\";var d=u.slice(0,7)===\"Windows\";var f=u===\"OS X\";var m=u===\"iOS\";var p=s.layout===\"Blink\";var b=s.layout===\"Gecko\";var v=s.layout===\"Trident\";var g=s.layout===\"EdgeHTML\";var h=s.layout===\"WebKit\";var y=parseFloat(s.version);var x=Math.floor(y);s.majorVersion=x;s.is={ANDROID:c,WINDOWS:d,OSX:f,IOS:m,BLINK:p,GECKO:b,TRIDENT:v,EDGE:g,WEBKIT:h,IE9:v&&x===9,IE10:v&&x===10,IE11:v&&x===11};function before(){var e={activeElement:document.activeElement,windowScrollTop:window.scrollTop,windowScrollLeft:window.scrollLeft,bodyScrollTop:document.body.scrollTop,bodyScrollLeft:document.body.scrollLeft};var t=document.createElement(\"iframe\");t.setAttribute(\"style\",\"position:absolute; position:fixed; top:0; left:-2px; width:1px; height:1px; overflow:hidden;\");t.setAttribute(\"aria-live\",\"off\");t.setAttribute(\"aria-busy\",\"true\");t.setAttribute(\"aria-hidden\",\"true\");document.body.appendChild(t);var r=t.contentWindow;var n=r.document;n.open();n.close();var o=n.createElement(\"div\");n.body.appendChild(o);e.iframe=t;e.wrapper=o;e.window=r;e.document=n;return e}function test(e,t){e.wrapper.innerHTML=\"\";var r=typeof t.element===\"string\"?e.document.createElement(t.element):t.element(e.wrapper,e.document);var n=t.mutate&&t.mutate(r,e.wrapper,e.document);if(!n&&n!==false){n=r}!r.parentNode&&e.wrapper.appendChild(r);n&&n.focus&&n.focus();return t.validate?t.validate(r,n,e.document):e.document.activeElement===n}function after(e){if(e.activeElement===document.body){document.activeElement&&document.activeElement.blur&&document.activeElement.blur();if(s.is.IE10){document.body.focus()}}else{e.activeElement&&e.activeElement.focus&&e.activeElement.focus()}document.body.removeChild(e.iframe);window.scrollTop=e.windowScrollTop;window.scrollLeft=e.windowScrollLeft;document.body.scrollTop=e.bodyScrollTop;document.body.scrollLeft=e.bodyScrollLeft}function detectFocus(e){var t=before();var r={};Object.keys(e).map((function(n){r[n]=test(t,e[n])}));after(t);return r}var E=\"1.4.1\";function readLocalStorage(e){var t=void 0;try{t=window.localStorage&&window.localStorage.getItem(e);t=t?JSON.parse(t):{}}catch(e){t={}}return t}function writeLocalStorage(e,t){if(!document.hasFocus()){try{window.localStorage&&window.localStorage.removeItem(e)}catch(e){}return}try{window.localStorage&&window.localStorage.setItem(e,JSON.stringify(t))}catch(e){}}var _=typeof window!==\"undefined\"&&window.navigator.userAgent||\"\";var w=\"ally-supports-cache\";var O=readLocalStorage(w);if(O.userAgent!==_||O.version!==E){O={}}O.userAgent=_;O.version=E;var j={get:function get(){return O},set:function set(e){Object.keys(e).forEach((function(t){O[t]=e[t]}));O.time=(new Date).toISOString();writeLocalStorage(w,O)}};function cssShadowPiercingDeepCombinator(){var e=void 0;try{document.querySelector(\"html >>> :first-child\");e=\">>>\"}catch(t){try{document.querySelector(\"html /deep/ :first-child\");e=\"/deep/\"}catch(t){e=\"\"}}return e}var k=\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\";var S={element:\"div\",mutate:function mutate(e){e.innerHTML=''+''+'\"\"';return e.querySelector(\"area\")}};var T={element:\"div\",mutate:function mutate(e){e.innerHTML=''+''+'\"\"';return false},validate:function validate(e,t,r){if(s.is.GECKO){return true}var n=e.querySelector(\"area\");n.focus();return r.activeElement===n}};var C={element:\"div\",mutate:function mutate(e){e.innerHTML=''+''+'\"\"';return e.querySelector(\"area\")},validate:function validate(e,t,r){if(s.is.GECKO){return true}return r.activeElement===t}};var D={name:\"can-focus-audio-without-controls\",element:\"audio\",mutate:function mutate(e){try{e.setAttribute(\"src\",k)}catch(e){}}};var P=\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ\";var M={element:\"div\",mutate:function mutate(e){e.innerHTML=''+'\"\"';return e.querySelector(\"area\")}};var N={element:\"div\",mutate:function mutate(e){e.setAttribute(\"tabindex\",\"-1\");e.setAttribute(\"style\",\"display: -webkit-flex; display: -ms-flexbox; display: flex;\");e.innerHTML='hello';return e.querySelector(\"span\")}};var A={element:\"fieldset\",mutate:function mutate(e){e.setAttribute(\"tabindex\",0);e.setAttribute(\"disabled\",\"disabled\")}};var R={element:\"fieldset\",mutate:function mutate(e){e.innerHTML=\"legend

content

\"}};var F={element:\"span\",mutate:function mutate(e){e.setAttribute(\"style\",\"display: -webkit-flex; display: -ms-flexbox; display: flex;\");e.innerHTML='hello'}};var I={element:\"form\",mutate:function mutate(e){e.setAttribute(\"tabindex\",0);e.setAttribute(\"disabled\",\"disabled\")}};var L={element:\"a\",mutate:function mutate(e){e.href=\"#void\";e.innerHTML='\"\"';return e.querySelector(\"img\")}};var B={element:\"div\",mutate:function mutate(e){e.innerHTML=''+'\"\"';return e.querySelector(\"img\")}};var H={element:function element(e,t){var r=t.createElement(\"iframe\");e.appendChild(r);var n=r.contentWindow.document;n.open();n.close();return r},mutate:function mutate(e){e.style.visibility=\"hidden\";var t=e.contentWindow.document;var r=t.createElement(\"input\");t.body.appendChild(r);return r},validate:function validate(e){var t=e.contentWindow.document;var r=t.querySelector(\"input\");return t.activeElement===r}};var z=!s.is.WEBKIT;function focusInZeroDimensionObject(){return z}var q={element:\"div\",mutate:function mutate(e){e.setAttribute(\"tabindex\",\"invalid-value\")}};var W={element:\"label\",mutate:function mutate(e){e.setAttribute(\"tabindex\",\"-1\")},validate:function validate(e,t,r){var n=e.offsetHeight;e.focus();return r.activeElement===e}};var U=\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtb\"+\"G5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBpZD0ic3ZnIj48dGV4dCB4PSIxMCIgeT0iMjAiIGlkPSJ\"+\"zdmctbGluay10ZXh0Ij50ZXh0PC90ZXh0Pjwvc3ZnPg==\";var V={element:\"object\",mutate:function mutate(e){e.setAttribute(\"type\",\"image/svg+xml\");e.setAttribute(\"data\",U);e.setAttribute(\"width\",\"200\");e.setAttribute(\"height\",\"50\");e.style.visibility=\"hidden\"}};var $={name:\"can-focus-object-svg\",element:\"object\",mutate:function mutate(e){e.setAttribute(\"type\",\"image/svg+xml\");e.setAttribute(\"data\",U);e.setAttribute(\"width\",\"200\");e.setAttribute(\"height\",\"50\")},validate:function validate(e,t,r){if(s.is.GECKO){return true}return r.activeElement===e}};var K=!s.is.IE9;function focusObjectSwf(){return K}var Z={element:\"div\",mutate:function mutate(e){e.innerHTML=''+'\"\"';return e.querySelector(\"img\")},validate:function validate(e,t,r){var n=e.querySelector(\"area\");return r.activeElement===n}};var G={element:\"fieldset\",mutate:function mutate(e){e.innerHTML='legend';return false},validate:function validate(e,t,r){var n=e.querySelector('input[tabindex=\"-1\"]');var o=e.querySelector('input[tabindex=\"0\"]');e.focus();e.querySelector(\"legend\").focus();return r.activeElement===n&&\"focusable\"||r.activeElement===o&&\"tabbable\"||\"\"}};var Y={element:\"div\",mutate:function mutate(e){e.setAttribute(\"style\",\"width: 100px; height: 50px; overflow: auto;\");e.innerHTML='
scrollable content
';return e.querySelector(\"div\")}};var J={element:\"div\",mutate:function mutate(e){e.setAttribute(\"style\",\"width: 100px; height: 50px;\");e.innerHTML='
scrollable content
'}};var X={element:\"div\",mutate:function mutate(e){e.setAttribute(\"style\",\"width: 100px; height: 50px; overflow: auto;\");e.innerHTML='
scrollable content
'}};var Q={element:\"details\",mutate:function mutate(e){e.innerHTML=\"foo

content

\";return e.firstElementChild}};function makeFocusableForeignObject(){var e=document.createElementNS(\"http://www.w3.org/2000/svg\",\"foreignObject\");e.width.baseVal.value=30;e.height.baseVal.value=30;e.appendChild(document.createElement(\"input\"));e.lastChild.type=\"text\";return e}function focusSvgForeignObjectHack(e){var t=e.ownerSVGElement||e.nodeName.toLowerCase()===\"svg\";if(!t){return false}var r=makeFocusableForeignObject();e.appendChild(r);var n=r.querySelector(\"input\");n.focus();n.disabled=true;e.removeChild(r);return true}function generate(e){return''+e+\"\"}function focus(e){if(e.focus){return}try{HTMLElement.prototype.focus.call(e)}catch(t){focusSvgForeignObjectHack(e)}}function validate(e,t,r){focus(t);return r.activeElement===t}var ee={element:\"div\",mutate:function mutate(e){e.innerHTML=generate('a');return e.querySelector(\"text\")},validate:validate};var te={element:\"div\",mutate:function mutate(e){e.innerHTML=generate('a');return e.querySelector(\"text\")},validate:validate};var re={element:\"div\",mutate:function mutate(e){e.innerHTML=generate('a');return e.querySelector(\"text\")},validate:validate};var ne={element:\"div\",mutate:function mutate(e){e.innerHTML=generate(['link',''].join(\"\"));return e.querySelector(\"use\")},validate:validate};var oe={element:\"div\",mutate:function mutate(e){e.innerHTML=generate('');return e.querySelector(\"foreignObject\")||e.getElementsByTagName(\"foreignObject\")[0]},validate:validate};var ae=Boolean(s.is.GECKO&&typeof SVGElement!==\"undefined\"&&SVGElement.prototype.focus);function focusSvgInIframe(){return ae}var ie={element:\"div\",mutate:function mutate(e){e.innerHTML=generate(\"\");return e.firstChild},validate:validate};var le={element:\"div\",mutate:function mutate(e){e.setAttribute(\"tabindex\",\"3x\")}};var se={element:\"table\",mutate:function mutate(e,t,r){var n=r.createDocumentFragment();n.innerHTML=\"cell\";e.appendChild(n)}};var ue={element:\"video\",mutate:function mutate(e){try{e.setAttribute(\"src\",k)}catch(e){}}};var ce=s.is.GECKO||s.is.TRIDENT||s.is.EDGE;function tabsequenceAreaAtImgPosition(){return ce}var de={cssShadowPiercingDeepCombinator:cssShadowPiercingDeepCombinator,focusInZeroDimensionObject:focusInZeroDimensionObject,focusObjectSwf:focusObjectSwf,focusSvgInIframe:focusSvgInIframe,tabsequenceAreaAtImgPosition:tabsequenceAreaAtImgPosition};var fe={focusAreaImgTabindex:S,focusAreaTabindex:T,focusAreaWithoutHref:C,focusAudioWithoutControls:D,focusBrokenImageMap:M,focusChildrenOfFocusableFlexbox:N,focusFieldsetDisabled:A,focusFieldset:R,focusFlexboxContainer:F,focusFormDisabled:I,focusImgIsmap:L,focusImgUsemapTabindex:B,focusInHiddenIframe:H,focusInvalidTabindex:q,focusLabelTabindex:W,focusObjectSvg:$,focusObjectSvgHidden:V,focusRedirectImgUsemap:Z,focusRedirectLegend:G,focusScrollBody:Y,focusScrollContainerWithoutOverflow:J,focusScrollContainer:X,focusSummary:Q,focusSvgFocusableAttribute:ee,focusSvgTabindexAttribute:te,focusSvgNegativeTabindexAttribute:re,focusSvgUseTabindex:ne,focusSvgForeignobjectTabindex:oe,focusSvg:ie,focusTabindexTrailingCharacters:le,focusTable:se,focusVideoWithoutControls:ue};function executeTests(){var e=detectFocus(fe);Object.keys(de).forEach((function(t){e[t]=de[t]()}));return e}var me=null;function _supports(){if(me){return me}me=j.get();if(!me.time){j.set(executeTests());me=j.get()}return me}var pe=void 0;var be=/^\\s*(-|\\+)?[0-9]+\\s*$/;var ve=/^\\s*(-|\\+)?[0-9]+.*$/;function isValidTabindex(e){if(!pe){pe=_supports()}var t=pe.focusTabindexTrailingCharacters?ve:be;var r=contextToElement({label:\"is/valid-tabindex\",resolveDocument:true,context:e});var n=r.hasAttribute(\"tabindex\");var o=r.hasAttribute(\"tabIndex\");if(!n&&!o){return false}var a=r.ownerSVGElement||r.nodeName.toLowerCase()===\"svg\";if(a&&!pe.focusSvgTabindexAttribute){return false}if(pe.focusInvalidTabindex){return true}var i=r.getAttribute(n?\"tabindex\":\"tabIndex\");if(i===\"-32768\"){return false}return Boolean(i&&t.test(i))}function tabindexValue(e){if(!isValidTabindex(e)){return null}var t=e.hasAttribute(\"tabindex\");var r=t?\"tabindex\":\"tabIndex\";var n=parseInt(e.getAttribute(r),10);return isNaN(n)?-1:n}function isUserModifyWritable(e){var t=e.webkitUserModify||\"\";return Boolean(t&&t.indexOf(\"write\")!==-1)}function hasCssOverflowScroll(e){return[e.getPropertyValue(\"overflow\"),e.getPropertyValue(\"overflow-x\"),e.getPropertyValue(\"overflow-y\")].some((function(e){return e===\"auto\"||e===\"scroll\"}))}function hasCssDisplayFlex(e){return e.display.indexOf(\"flex\")>-1}function isScrollableContainer(e,t,r,n){if(t!==\"div\"&&t!==\"span\"){return false}if(r&&r!==\"div\"&&r!==\"span\"&&!hasCssOverflowScroll(n)){return false}return e.offsetHeight0&&arguments[0]!==undefined?arguments[0]:{},t=e.context,r=e.except,n=r===undefined?{flexbox:false,scrollable:false,shadow:false}:r;if(!ge){ge=_supports()}var o=contextToElement({label:\"is/focus-relevant\",resolveDocument:true,context:t});if(!n.shadow&&o.shadowRoot){return true}var a=o.nodeName.toLowerCase();if(a===\"input\"&&o.type===\"hidden\"){return false}if(a===\"input\"||a===\"select\"||a===\"button\"||a===\"textarea\"){return true}if(a===\"legend\"&&ge.focusRedirectLegend){return true}if(a===\"label\"){return true}if(a===\"area\"){return true}if(a===\"a\"&&o.hasAttribute(\"href\")){return true}if(a===\"object\"&&o.hasAttribute(\"usemap\")){return false}if(a===\"object\"){var i=o.getAttribute(\"type\");if(!ge.focusObjectSvg&&i===\"image/svg+xml\"){return false}else if(!ge.focusObjectSwf&&i===\"application/x-shockwave-flash\"){return false}}if(a===\"iframe\"||a===\"object\"){return true}if(a===\"embed\"||a===\"keygen\"){return true}if(o.hasAttribute(\"contenteditable\")){return true}if(a===\"audio\"&&(ge.focusAudioWithoutControls||o.hasAttribute(\"controls\"))){return true}if(a===\"video\"&&(ge.focusVideoWithoutControls||o.hasAttribute(\"controls\"))){return true}if(ge.focusSummary&&a===\"summary\"){return true}var l=isValidTabindex(o);if(a===\"img\"&&o.hasAttribute(\"usemap\")){return l&&ge.focusImgUsemapTabindex||ge.focusRedirectImgUsemap}if(ge.focusTable&&(a===\"table\"||a===\"td\")){return true}if(ge.focusFieldset&&a===\"fieldset\"){return true}var s=a===\"svg\";var u=o.ownerSVGElement;var c=o.getAttribute(\"focusable\");var d=tabindexValue(o);if(a===\"use\"&&d!==null&&!ge.focusSvgUseTabindex){return false}if(a===\"foreignobject\"){return d!==null&&ge.focusSvgForeignobjectTabindex}if(elementMatches(o,\"svg a\")&&o.hasAttribute(\"xlink:href\")){return true}if((s||u)&&o.focus&&!ge.focusSvgNegativeTabindexAttribute&&d<0){return false}if(s){return l||ge.focusSvg||ge.focusSvgInIframe||Boolean(ge.focusSvgFocusableAttribute&&c&&c===\"true\")}if(u){if(ge.focusSvgTabindexAttribute&&l){return true}if(ge.focusSvgFocusableAttribute){return c===\"true\"}}if(l){return true}var f=window.getComputedStyle(o,null);if(isUserModifyWritable(f)){return true}if(ge.focusImgIsmap&&a===\"img\"&&o.hasAttribute(\"ismap\")){var m=getParents({context:o}).some((function(e){return e.nodeName.toLowerCase()===\"a\"&&e.hasAttribute(\"href\")}));if(m){return true}}if(!n.scrollable&&ge.focusScrollContainer){if(ge.focusScrollContainerWithoutOverflow){if(isScrollableContainer(o,a)){return true}}else if(hasCssOverflowScroll(f)){return true}}if(!n.flexbox&&ge.focusFlexboxContainer&&hasCssDisplayFlex(f)){return true}var p=o.parentElement;if(!n.scrollable&&p){var b=p.nodeName.toLowerCase();var v=window.getComputedStyle(p,null);if(ge.focusScrollBody&&isScrollableContainer(p,a,b,v)){return true}if(ge.focusChildrenOfFocusableFlexbox){if(hasCssDisplayFlex(v)){return true}}}return false}isFocusRelevantRules.except=function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var t=function isFocusRelevant(t){return isFocusRelevantRules({context:t,except:e})};t.rules=isFocusRelevantRules;return t};var he=isFocusRelevantRules.except({});function findIndex(e,t){if(e.findIndex){return e.findIndex(t)}var r=e.length;if(r===0){return-1}for(var n=0;n0&&arguments[0]!==undefined?arguments[0]:{},t=e.context,r=e.except,n=r===undefined?{notRendered:false,cssDisplay:false,cssVisibility:false,detailsElement:false,browsingContext:false}:r;var o=contextToElement({label:\"is/visible\",resolveDocument:true,context:t});var a=o.nodeName.toLowerCase();if(!n.notRendered&&Ee.test(a)){return true}var i=getParents({context:o});var l=a===\"audio\"&&!o.hasAttribute(\"controls\");if(!n.cssDisplay&¬Displayed(l?i.slice(1):i)){return false}if(!n.cssVisibility&¬Visible(i)){return false}if(!n.detailsElement&&collapsedParent(i)){return false}if(!n.browsingContext){var s=getFrameElement(o);var u=isVisibleRules.except(n);if(s&&!u(s)){return false}}return true}isVisibleRules.except=function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var t=function isVisible(t){return isVisibleRules({context:t,except:e})};t.rules=isVisibleRules;return t};var _e=isVisibleRules.except({});function getMapByName(e,t){var r=t.querySelector('map[name=\"'+(0,a.default)(e)+'\"]');return r||null}function getImageOfArea(e){var t=e.parentElement;if(!t.name||t.nodeName.toLowerCase()!==\"map\"){return null}var r=getDocument(e);return r.querySelector('img[usemap=\"#'+(0,a.default)(t.name)+'\"]')||null}var we=void 0;function isValidArea(e){if(!we){we=_supports()}var t=contextToElement({label:\"is/valid-area\",context:e});var r=t.nodeName.toLowerCase();if(r!==\"area\"){return false}var n=t.hasAttribute(\"tabindex\");if(!we.focusAreaTabindex&&n){return false}var o=getImageOfArea(t);if(!o||!_e(o)){return false}if(!we.focusBrokenImageMap&&(!o.complete||!o.naturalHeight||o.offsetWidth<=0||o.offsetHeight<=0)){return false}if(!we.focusAreaWithoutHref&&!t.href){return we.focusAreaTabindex&&n||we.focusAreaImgTabindex&&o.hasAttribute(\"tabindex\")}var a=getParents({context:o}).slice(1).some((function(e){var t=e.nodeName.toLowerCase();return t===\"button\"||t===\"a\"}));if(a){return false}return true}var Oe=void 0;var je=void 0;var ke={input:true,select:true,textarea:true,button:true,fieldset:true,form:true};function isNativeDisabledSupported(e){if(!Oe){Oe=_supports();if(Oe.focusFieldsetDisabled){delete ke.fieldset}if(Oe.focusFormDisabled){delete ke.form}je=new RegExp(\"^(\"+Object.keys(ke).join(\"|\")+\")$\")}var t=contextToElement({label:\"is/native-disabled-supported\",context:e});var r=t.nodeName.toLowerCase();return Boolean(je.test(r))}var Se=void 0;function isDisabledFieldset(e){var t=e.nodeName.toLowerCase();return t===\"fieldset\"&&e.disabled}function isDisabledForm(e){var t=e.nodeName.toLowerCase();return t===\"form\"&&e.disabled}function isDisabled(e){if(!Se){Se=_supports()}var t=contextToElement({label:\"is/disabled\",context:e});if(t.hasAttribute(\"data-ally-disabled\")){return true}if(!isNativeDisabledSupported(t)){return false}if(t.disabled){return true}var r=getParents({context:t});if(r.some(isDisabledFieldset)){return true}if(!Se.focusFormDisabled&&r.some(isDisabledForm)){return true}return false}function isOnlyTabbableRules(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},t=e.context,r=e.except,n=r===undefined?{onlyFocusableBrowsingContext:false,visible:false}:r;var o=contextToElement({label:\"is/only-tabbable\",resolveDocument:true,context:t});if(!n.visible&&!_e(o)){return false}if(!n.onlyFocusableBrowsingContext&&(s.is.GECKO||s.is.TRIDENT||s.is.EDGE)){var a=getFrameElement(o);if(a){if(tabindexValue(a)<0){return false}}}var i=o.nodeName.toLowerCase();var l=tabindexValue(o);if(i===\"label\"&&s.is.GECKO){return l!==null&&l>=0}if(s.is.GECKO&&o.ownerSVGElement&&!o.focus){if(i===\"a\"&&o.hasAttribute(\"xlink:href\")){if(s.is.GECKO){return true}}}return false}isOnlyTabbableRules.except=function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var t=function isOnlyTabbable(t){return isOnlyTabbableRules({context:t,except:e})};t.rules=isOnlyTabbableRules;return t};var Te=isOnlyTabbableRules.except({});var Ce=void 0;function isOnlyFocusRelevant(e){var t=e.nodeName.toLowerCase();if(t===\"embed\"||t===\"keygen\"){return true}var r=tabindexValue(e);if(e.shadowRoot&&r===null){return true}if(t===\"label\"){return!Ce.focusLabelTabindex||r===null}if(t===\"legend\"){return r===null}if(Ce.focusSvgFocusableAttribute&&(e.ownerSVGElement||t===\"svg\")){var n=e.getAttribute(\"focusable\");return n&&n===\"false\"}if(t===\"img\"&&e.hasAttribute(\"usemap\")){return r===null||!Ce.focusImgUsemapTabindex}if(t===\"area\"){return!isValidArea(e)}return false}function isFocusableRules(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},t=e.context,r=e.except,n=r===undefined?{disabled:false,visible:false,onlyTabbable:false}:r;if(!Ce){Ce=_supports()}var o=Te.rules.except({onlyFocusableBrowsingContext:true,visible:n.visible});var a=contextToElement({label:\"is/focusable\",resolveDocument:true,context:t});var i=he.rules({context:a,except:n});if(!i||isOnlyFocusRelevant(a)){return false}if(!n.disabled&&isDisabled(a)){return false}if(!n.onlyTabbable&&o(a)){return false}if(!n.visible){var l={context:a,except:{}};if(Ce.focusInHiddenIframe){l.except.browsingContext=true}if(Ce.focusObjectSvgHidden){var s=a.nodeName.toLowerCase();if(s===\"object\"){l.except.cssVisibility=true}}if(!_e.rules(l)){return false}}var u=getFrameElement(a);if(u){var c=u.nodeName.toLowerCase();if(c===\"object\"&&!Ce.focusInZeroDimensionObject){if(!u.offsetWidth||!u.offsetHeight){return false}}}var d=a.nodeName.toLowerCase();if(d===\"svg\"&&Ce.focusSvgInIframe&&!u&&a.getAttribute(\"tabindex\")===null){return false}return true}isFocusableRules.except=function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var t=function isFocusable(t){return isFocusableRules({context:t,except:e})};t.rules=isFocusableRules;return t};var De=isFocusableRules.except({});function createFilter(e){var t=function filter(t){if(t.shadowRoot){return NodeFilter.FILTER_ACCEPT}if(e(t)){return NodeFilter.FILTER_ACCEPT}return NodeFilter.FILTER_SKIP};t.acceptNode=t;return t}var Pe=createFilter(he);function queryFocusableStrict(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},t=e.context,r=e.includeContext,n=e.includeOnlyTabbable,o=e.strategy;if(!t){t=document.documentElement}var a=De.rules.except({onlyTabbable:n});var i=getDocument(t);var l=i.createTreeWalker(t,NodeFilter.SHOW_ELEMENT,o===\"all\"?Pe:createFilter(a),false);var s=[];while(l.nextNode()){if(l.currentNode.shadowRoot){if(a(l.currentNode)){s.push(l.currentNode)}s=s.concat(queryFocusableStrict({context:l.currentNode.shadowRoot,includeOnlyTabbable:n,strategy:o}))}else{s.push(l.currentNode)}}if(r){if(o===\"all\"){if(he(t)){s.unshift(t)}}else if(a(t)){s.unshift(t)}}return s}var Me=void 0;var Ne=void 0;function selector$2(){if(!Me){Me=_supports()}if(typeof Ne===\"string\"){return Ne}Ne=\"\"+(Me.focusTable?\"table, td,\":\"\")+(Me.focusFieldset?\"fieldset,\":\"\")+\"svg a,\"+\"a[href],\"+\"area[href],\"+\"input, select, textarea, button,\"+\"iframe, object, embed,\"+\"keygen,\"+(Me.focusAudioWithoutControls?\"audio,\":\"audio[controls],\")+(Me.focusVideoWithoutControls?\"video,\":\"video[controls],\")+(Me.focusSummary?\"summary,\":\"\")+\"[tabindex],\"+\"[contenteditable]\";Ne=selectInShadows(Ne);return Ne}function queryFocusableQuick(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},t=e.context,r=e.includeContext,n=e.includeOnlyTabbable;var o=selector$2();var a=t.querySelectorAll(o);var i=De.rules.except({onlyTabbable:n});var l=[].filter.call(a,i);if(r&&i(t)){l.unshift(t)}return l}function queryFocusable(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},t=e.context,r=e.includeContext,n=e.includeOnlyTabbable,o=e.strategy,a=o===undefined?\"quick\":o;var i=contextToElement({label:\"query/focusable\",resolveDocument:true,defaultToDocument:true,context:t});var l={context:i,includeContext:r,includeOnlyTabbable:n,strategy:a};if(a===\"quick\"){return queryFocusableQuick(l)}else if(a===\"strict\"||a===\"all\"){return queryFocusableStrict(l)}throw new TypeError('query/focusable requires option.strategy to be one of [\"quick\", \"strict\", \"all\"]')}var Ae=void 0;var Re=/^(fieldset|table|td|body)$/;function isTabbableRules(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},t=e.context,r=e.except,n=r===undefined?{flexbox:false,scrollable:false,shadow:false,visible:false,onlyTabbable:false}:r;if(!Ae){Ae=_supports()}var o=contextToElement({label:\"is/tabbable\",resolveDocument:true,context:t});if(s.is.BLINK&&s.is.ANDROID&&s.majorVersion>42){return false}var a=getFrameElement(o);if(a){if(s.is.WEBKIT&&s.is.IOS){return false}if(tabindexValue(a)<0){return false}if(!n.visible&&(s.is.BLINK||s.is.WEBKIT)&&!_e(a)){return false}var i=a.nodeName.toLowerCase();if(i===\"object\"){var l=s.name===\"Chrome\"&&s.majorVersion>=54||s.name===\"Opera\"&&s.majorVersion>=41;if(s.is.WEBKIT||s.is.BLINK&&!l){return false}}}var u=o.nodeName.toLowerCase();var c=tabindexValue(o);var d=c===null?null:c>=0;if(s.is.EDGE&&s.majorVersion>=14&&a&&o.ownerSVGElement&&c<0){return true}var f=d!==false;var m=c!==null&&c>=0;if(o.hasAttribute(\"contenteditable\")){return f}if(Re.test(u)&&d!==true){return false}if(s.is.WEBKIT&&s.is.IOS){var p=u===\"input\"&&o.type===\"text\"||o.type===\"password\"||u===\"select\"||u===\"textarea\"||o.hasAttribute(\"contenteditable\");if(!p){var b=window.getComputedStyle(o,null);p=isUserModifyWritable(b)}if(!p){return false}}if(u===\"use\"&&c!==null){if(s.is.BLINK||s.is.WEBKIT&&s.majorVersion===9){return true}}if(elementMatches(o,\"svg a\")&&o.hasAttribute(\"xlink:href\")){if(f){return true}if(o.focus&&!Ae.focusSvgNegativeTabindexAttribute){return true}}if(u===\"svg\"&&Ae.focusSvgInIframe&&f){return true}if(s.is.TRIDENT||s.is.EDGE){if(u===\"svg\"){if(Ae.focusSvg){return true}return o.hasAttribute(\"focusable\")||m}if(o.ownerSVGElement){if(Ae.focusSvgTabindexAttribute&&m){return true}return o.hasAttribute(\"focusable\")}}if(o.tabIndex===undefined){return Boolean(n.onlyTabbable)}if(u===\"audio\"){if(!o.hasAttribute(\"controls\")){return false}else if(s.is.BLINK){return true}}if(u===\"video\"){if(!o.hasAttribute(\"controls\")){if(s.is.TRIDENT||s.is.EDGE){return false}}else if(s.is.BLINK||s.is.GECKO){return true}}if(u===\"object\"){if(s.is.BLINK||s.is.WEBKIT){return false}}if(u===\"iframe\"){return false}if(!n.scrollable&&s.is.GECKO){var v=window.getComputedStyle(o,null);if(hasCssOverflowScroll(v)){return f}}if(s.is.TRIDENT||s.is.EDGE){if(u===\"area\"){var g=getImageOfArea(o);if(g&&tabindexValue(g)<0){return false}}var h=window.getComputedStyle(o,null);if(isUserModifyWritable(h)){return o.tabIndex>=0}if(!n.flexbox&&hasCssDisplayFlex(h)){if(c!==null){return m}return Fe(o)&&Ie(o)}if(isScrollableContainer(o,u)){return false}var y=o.parentElement;if(y){var x=y.nodeName.toLowerCase();var E=window.getComputedStyle(y,null);if(isScrollableContainer(y,u,x,E)){return false}if(hasCssDisplayFlex(E)){return m}}}return o.tabIndex>=0}isTabbableRules.except=function(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var t=function isTabbable(t){return isTabbableRules({context:t,except:e})};t.rules=isTabbableRules;return t};var Fe=he.rules.except({flexbox:true});var Ie=isTabbableRules.except({flexbox:true});var Le=isTabbableRules.except({});function queryTabbable(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},t=e.context,r=e.includeContext,n=e.includeOnlyTabbable,o=e.strategy;var a=Le.rules.except({onlyTabbable:n});return queryFocusable({context:t,includeContext:r,includeOnlyTabbable:n,strategy:o}).filter(a)}function compareDomPosition(e,t){return e.compareDocumentPosition(t)&Node.DOCUMENT_POSITION_FOLLOWING?-1:1}function sortDomOrder(e){return e.sort(compareDomPosition)}function getFirstSuccessorOffset(e,t){return findIndex(e,(function(e){return t.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_FOLLOWING}))}function findInsertionOffsets(e,t,r){var n=[];t.forEach((function(t){var o=true;var a=e.indexOf(t);if(a===-1){a=getFirstSuccessorOffset(e,t);o=false}if(a===-1){a=e.length}var i=nodeArray(r?r(t):t);if(!i.length){return}n.push({offset:a,replace:o,elements:i})}));return n}function insertElementsAtOffsets(e,t){var r=0;t.sort((function(e,t){return e.offset-t.offset}));t.forEach((function(t){var n=t.replace?1:0;var o=[t.offset+r,n].concat(t.elements);e.splice.apply(e,o);r+=t.elements.length-n}))}function mergeInDomOrder(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},t=e.list,r=e.elements,n=e.resolveElement;var o=t.slice(0);var a=nodeArray(r).slice(0);sortDomOrder(a);var i=findInsertionOffsets(o,a,n);insertElementsAtOffsets(o,i);return o}var Be=function(){function defineProperties(e,t){for(var r=0;r-1){return[e].concat(t)}return t}},{key:\"_cleanup\",value:function _cleanup(){Object.keys(this.hosts).forEach((function(e){delete this.hosts[e]._sortingId}),this)}}]);return Shadows}();function sortShadowed(e,t,r){var n=new qe(t,r);var o=n.extractElements(e);if(o.length===e.length){return r(e)}return n.sort(o)}function sortTabindex(e){var t={};var r=[];var n=e.filter((function(e){var n=e.tabIndex;if(n===undefined){n=tabindexValue(e)}if(n<=0||n===null||n===undefined){return true}if(!t[n]){t[n]=[];r.push(n)}t[n].push(e);return false}));var o=r.sort().map((function(e){return t[e]})).reduceRight((function(e,t){return t.concat(e)}),n);return o}var We=void 0;function moveContextToBeginning(e,t){var r=e.indexOf(t);if(r>0){var n=e.splice(r,1);return n.concat(e)}return e}function sortElements(e,t){if(We.tabsequenceAreaAtImgPosition){e=sortArea(e,t)}e=sortTabindex(e);return e}function queryTabsequence(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},t=e.context,r=e.includeContext,n=e.includeOnlyTabbable,o=e.strategy;if(!We){We=_supports()}var a=nodeArray(t)[0]||document.documentElement;var i=queryTabbable({context:a,includeContext:r,includeOnlyTabbable:n,strategy:o});if(document.body.createShadowRoot&&s.is.BLINK){i=sortShadowed(i,a,sortElements)}else{i=sortElements(i,a)}if(r){i=moveContextToBeginning(i,a)}return i}var Ue={tab:9,left:37,up:38,right:39,down:40,pageUp:33,\"page-up\":33,pageDown:34,\"page-down\":34,end:35,home:36,enter:13,escape:27,space:32,shift:16,capsLock:20,\"caps-lock\":20,ctrl:17,alt:18,meta:91,pause:19,insert:45,delete:46,backspace:8,_alias:{91:[92,93,224]}};for(var Ve=1;Ve<26;Ve++){Ue[\"f\"+Ve]=Ve+111}for(var $e=0;$e<10;$e++){var Ke=$e+48;var Ze=$e+96;Ue[$e]=Ke;Ue[\"num-\"+$e]=Ze;Ue._alias[Ke]=[Ze]}for(var Ge=0;Ge<26;Ge++){var Ye=Ge+65;var Je=String.fromCharCode(Ye).toLowerCase();Ue[Je]=Ye}var Xe={alt:\"altKey\",ctrl:\"ctrlKey\",meta:\"metaKey\",shift:\"shiftKey\"};var Qe=Object.keys(Xe).map((function(e){return Xe[e]}));function createExpectedModifiers(e){var t=e?null:false;return{altKey:t,ctrlKey:t,metaKey:t,shiftKey:t}}function resolveModifiers(e){var t=e.indexOf(\"*\")!==-1;var r=createExpectedModifiers(t);e.forEach((function(e){if(e===\"*\"){return}var t=true;var n=e.slice(0,1);if(n===\"?\"){t=null}else if(n===\"!\"){t=false}if(t!==true){e=e.slice(1)}var o=Xe[e];if(!o){throw new TypeError('Unknown modifier \"'+e+'\"')}r[o]=t}));return r}function resolveKey(e){var t=Ue[e]||parseInt(e,10);if(!t||typeof t!==\"number\"||isNaN(t)){throw new TypeError('Unknown key \"'+e+'\"')}return[t].concat(Ue._alias[t]||[])}function matchModifiers(e,t){return!Qe.some((function(r){return typeof e[r]===\"boolean\"&&Boolean(t[r])!==e[r]}))}function keyBinding(e){return e.split(/\\s+/).map((function(e){var t=e.split(\"+\");var r=resolveModifiers(t.slice(0,-1));var n=resolveKey(t.slice(-1));return{keyCodes:n,modifiers:r,matchModifiers:matchModifiers.bind(null,r)}}))}function getParentComparator(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{},t=e.parent,r=e.element,n=e.includeSelf;if(t){return function isChildOf(e){return Boolean(n&&e===t||t.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_CONTAINED_BY)}}else if(r){return function isParentOf(e){return Boolean(n&&r===e||e.compareDocumentPosition(r)&Node.DOCUMENT_POSITION_CONTAINED_BY)}}throw new TypeError(\"util/compare-position#getParentComparator required either options.parent or options.element\")}function whenKey(){var e=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var t={};var r=nodeArray(e.context)[0]||document.documentElement;delete e.context;var n=nodeArray(e.filter);delete e.filter;var o=Object.keys(e);if(!o.length){throw new TypeError(\"when/key requires at least one option key\")}var a=function registerBinding(e){e.keyCodes.forEach((function(r){if(!t[r]){t[r]=[]}t[r].push(e)}))};o.forEach((function(t){if(typeof e[t]!==\"function\"){throw new TypeError('when/key requires option[\"'+t+'\"] to be a function')}var r=function addCallback(r){r.callback=e[t];return r};keyBinding(t).map(r).forEach(a)}));var i=function handleKeyDown(e){if(e.defaultPrevented){return}if(n.length){var o=getParentComparator({element:e.target,includeSelf:true});if(n.some(o)){return}}var a=e.keyCode||e.which;if(!t[a]){return}t[a].forEach((function(t){if(!t.matchModifiers(e)){return}t.callback.call(r,e,l)}))};r.addEventListener(\"keydown\",i,false);var l=function disengage(){r.removeEventListener(\"keydown\",i,false)};return{disengage:l}}function default_1({context:e}={}){if(!e){e=document.documentElement}queryTabsequence();return whenKey({\"?alt+?shift+tab\":function altShiftTab(t){t.preventDefault();var r=queryTabsequence({context:e});var n=t.shiftKey;var o=r[0];var a=r[r.length-1];var i=n?o:a;var l=n?a:o;if(isActiveElement(i)){l.focus();return}var s=void 0;var u=r.some((function(e,t){if(!isActiveElement(e)){return false}s=t;return true}));if(!u){o.focus();return}var c=n?-1:1;r[s+c].focus()}})}t[\"default\"]=default_1},993:function(e,t,r){Object.defineProperty(t,\"__esModule\",{value:true});t.styles=void 0;const n=r(910);const o=(0,n.noop)`\n [data-nextjs-dialog-overlay] {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n overflow: auto;\n z-index: 9000;\n\n display: flex;\n align-content: center;\n align-items: center;\n flex-direction: column;\n padding: 10vh 15px 0;\n }\n\n @media (max-height: 812px) {\n [data-nextjs-dialog-overlay] {\n padding: 15px 15px 0;\n }\n }\n\n [data-nextjs-dialog-backdrop] {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n background-color: var(--color-backdrop);\n pointer-events: all;\n z-index: -1;\n }\n\n [data-nextjs-dialog-backdrop-fixed] {\n cursor: not-allowed;\n -webkit-backdrop-filter: blur(8px);\n backdrop-filter: blur(8px);\n }\n`;t.styles=o},338:function(e,t,r){var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){if(n===undefined)n=r;var o=Object.getOwnPropertyDescriptor(t,r);if(!o||(\"get\"in o?!t.__esModule:o.writable||o.configurable)){o={enumerable:true,get:function(){return t[r]}}}Object.defineProperty(e,n,o)}:function(e,t,r,n){if(n===undefined)n=r;e[n]=t[r]});var o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,\"default\",{enumerable:true,value:t})}:function(e,t){e[\"default\"]=t});var a=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)if(r!==\"default\"&&Object.prototype.hasOwnProperty.call(e,r))n(t,e,r);o(t,e);return t};Object.defineProperty(t,\"__esModule\",{value:true});t.ShadowPortal=void 0;const i=a(r(522));const l=r(255);const s=function Portal({children:e,globalOverlay:t}){let r=i.useRef(null);let n=i.useRef(null);let o=i.useRef(null);let[,a]=i.useState();i.useLayoutEffect((()=>{const e=t?document:r.current.ownerDocument;n.current=e.createElement(\"nextjs-portal\");o.current=n.current.attachShadow({mode:\"open\"});e.body.appendChild(n.current);a({});return()=>{if(n.current&&n.current.ownerDocument){n.current.ownerDocument.body.removeChild(n.current)}}}),[t]);return o.current?(0,l.createPortal)(e,o.current):t?null:i.createElement(\"span\",{ref:r})};t.ShadowPortal=s},215:function(e,t,r){var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){if(n===undefined)n=r;var o=Object.getOwnPropertyDescriptor(t,r);if(!o||(\"get\"in o?!t.__esModule:o.writable||o.configurable)){o={enumerable:true,get:function(){return t[r]}}}Object.defineProperty(e,n,o)}:function(e,t,r,n){if(n===undefined)n=r;e[n]=t[r]});var o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,\"default\",{enumerable:true,value:t})}:function(e,t){e[\"default\"]=t});var a=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)if(r!==\"default\"&&Object.prototype.hasOwnProperty.call(e,r))n(t,e,r);o(t,e);return t};var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,\"__esModule\",{value:true});t.Terminal=void 0;const l=i(r(997));const s=a(r(522));const u=function Terminal({content:e}){const t=s.useMemo((()=>l.default.ansiToJson(e,{json:true,use_classes:true,remove_empty:true})),[e]);return s.createElement(\"div\",{\"data-nextjs-terminal\":true},s.createElement(\"pre\",null,t.map(((e,t)=>s.createElement(\"span\",{key:`terminal-entry-${t}`,style:{color:e.fg?`var(--color-${e.fg})`:undefined,...e.decoration===\"bold\"?{fontWeight:800}:e.decoration===\"italic\"?{fontStyle:\"italic\"}:undefined}},e.content)))))};t.Terminal=u},236:function(e,t,r){Object.defineProperty(t,\"__esModule\",{value:true});t.Terminal=void 0;var n=r(215);Object.defineProperty(t,\"Terminal\",{enumerable:true,get:function(){return n.Terminal}})},488:function(e,t,r){Object.defineProperty(t,\"__esModule\",{value:true});t.styles=void 0;const n=r(910);const o=(0,n.noop)`\n [data-nextjs-terminal] {\n border-radius: var(--size-gap-half);\n background-color: var(--color-ansi-bg);\n color: var(--color-ansi-fg);\n }\n [data-nextjs-terminal]::selection,\n [data-nextjs-terminal] *::selection {\n background-color: var(--color-ansi-selection);\n }\n [data-nextjs-terminal] * {\n color: inherit;\n background-color: transparent;\n font-family: var(--font-stack-monospace);\n }\n [data-nextjs-terminal] > * {\n margin: 0;\n padding: calc(var(--size-gap) + var(--size-gap-half))\n calc(var(--size-gap-double) + var(--size-gap-half));\n }\n\n [data-nextjs-terminal] pre {\n white-space: pre-wrap;\n word-break: break-word;\n }\n`;t.styles=o},683:function(e,t,r){var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){if(n===undefined)n=r;var o=Object.getOwnPropertyDescriptor(t,r);if(!o||(\"get\"in o?!t.__esModule:o.writable||o.configurable)){o={enumerable:true,get:function(){return t[r]}}}Object.defineProperty(e,n,o)}:function(e,t,r,n){if(n===undefined)n=r;e[n]=t[r]});var o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,\"default\",{enumerable:true,value:t})}:function(e,t){e[\"default\"]=t});var a=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)if(r!==\"default\"&&Object.prototype.hasOwnProperty.call(e,r))n(t,e,r);o(t,e);return t};Object.defineProperty(t,\"__esModule\",{value:true});t.Toast=void 0;const i=a(r(522));const l=function Toast({onClick:e,children:t,className:r}){return i.createElement(\"div\",{\"data-nextjs-toast\":true,onClick:e,className:r},i.createElement(\"div\",{\"data-nextjs-toast-wrapper\":true},t))};t.Toast=l},120:function(e,t,r){Object.defineProperty(t,\"__esModule\",{value:true});t.Toast=t.styles=void 0;var n=r(69);Object.defineProperty(t,\"styles\",{enumerable:true,get:function(){return n.styles}});var o=r(683);Object.defineProperty(t,\"Toast\",{enumerable:true,get:function(){return o.Toast}})},69:function(e,t,r){Object.defineProperty(t,\"__esModule\",{value:true});t.styles=void 0;const n=r(910);const o=(0,n.noop)`\n [data-nextjs-toast] {\n position: fixed;\n bottom: var(--size-gap-double);\n left: var(--size-gap-double);\n max-width: 420px;\n z-index: 9000;\n }\n\n @media (max-width: 440px) {\n [data-nextjs-toast] {\n max-width: 90vw;\n left: 5vw;\n }\n }\n\n [data-nextjs-toast-wrapper] {\n padding: 16px;\n border-radius: var(--size-gap-half);\n font-weight: 500;\n color: var(--color-ansi-bright-white);\n background-color: var(--color-ansi-red);\n box-shadow: 0px var(--size-gap-double) var(--size-gap-quad)\n rgba(0, 0, 0, 0.25);\n }\n`;t.styles=o},936:function(e,t,r){var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){if(n===undefined)n=r;var o=Object.getOwnPropertyDescriptor(t,r);if(!o||(\"get\"in o?!t.__esModule:o.writable||o.configurable)){o={enumerable:true,get:function(){return t[r]}}}Object.defineProperty(e,n,o)}:function(e,t,r,n){if(n===undefined)n=r;e[n]=t[r]});var o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,\"default\",{enumerable:true,value:t})}:function(e,t){e[\"default\"]=t});var a=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)if(r!==\"default\"&&Object.prototype.hasOwnProperty.call(e,r))n(t,e,r);o(t,e);return t};Object.defineProperty(t,\"__esModule\",{value:true});t.styles=t.BuildError=void 0;const i=a(r(522));const l=r(651);const s=r(278);const u=r(236);const c=r(910);const d=function BuildError({message:e}){const t=i.useCallback((()=>{}),[]);return i.createElement(s.Overlay,{fixed:true},i.createElement(l.Dialog,{type:\"error\",\"aria-labelledby\":\"nextjs__container_build_error_label\",\"aria-describedby\":\"nextjs__container_build_error_desc\",onClose:t},i.createElement(l.DialogContent,null,i.createElement(l.DialogHeader,{className:\"nextjs-container-build-error-header\"},i.createElement(\"h4\",{id:\"nextjs__container_build_error_label\"},\"Failed to compile\")),i.createElement(l.DialogBody,{className:\"nextjs-container-build-error-body\"},i.createElement(u.Terminal,{content:e}),i.createElement(\"footer\",null,i.createElement(\"p\",{id:\"nextjs__container_build_error_desc\"},i.createElement(\"small\",null,\"This error occurred during the build process and can only be dismissed by fixing the error.\")))))))};t.BuildError=d;t.styles=(0,c.noop)`\n .nextjs-container-build-error-header > h4 {\n line-height: 1.5;\n margin: 0;\n padding: 0;\n }\n\n .nextjs-container-build-error-body footer {\n margin-top: var(--size-gap);\n }\n .nextjs-container-build-error-body footer p {\n margin: 0;\n }\n\n .nextjs-container-build-error-body small {\n color: var(--color-font);\n }\n`},355:function(e,t,r){var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){if(n===undefined)n=r;var o=Object.getOwnPropertyDescriptor(t,r);if(!o||(\"get\"in o?!t.__esModule:o.writable||o.configurable)){o={enumerable:true,get:function(){return t[r]}}}Object.defineProperty(e,n,o)}:function(e,t,r,n){if(n===undefined)n=r;e[n]=t[r]});var o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,\"default\",{enumerable:true,value:t})}:function(e,t){e[\"default\"]=t});var a=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)if(r!==\"default\"&&Object.prototype.hasOwnProperty.call(e,r))n(t,e,r);o(t,e);return t};Object.defineProperty(t,\"__esModule\",{value:true});t.styles=t.Errors=void 0;const i=a(r(522));const l=r(851);const s=r(651);const u=r(732);const c=r(278);const d=r(120);const f=r(403);const m=r(233);const p=r(910);const b=r(865);const v=r(484);function getErrorSignature(e){const{event:t}=e;switch(t.type){case l.TYPE_UNHANDLED_ERROR:case l.TYPE_UNHANDLED_REJECTION:{return`${t.reason.name}::${t.reason.message}::${t.reason.stack}`}default:{}}const r=t;return\"\"}const g=function HotlinkedText(e){const{text:t}=e;const r=/https?:\\/\\/[^\\s/$.?#].[^\\s)'\"]*/i;return i.createElement(i.Fragment,null,r.test(t)?t.split(\" \").map(((e,t,n)=>{if(r.test(e)){const o=r.exec(e);return i.createElement(i.Fragment,{key:`link-${t}`},o&&i.createElement(\"a\",{href:o[0],target:\"_blank\",rel:\"noreferrer noopener\"},e),t===n.length-1?\"\":\" \")}return t===n.length-1?i.createElement(i.Fragment,{key:`text-${t}`},e):i.createElement(i.Fragment,{key:`text-${t}`},e,\" \")})):t)};const h=function Errors({errors:e}){const[t,r]=i.useState({});const[n,o]=i.useMemo((()=>{let r=[];let n=null;for(let o=0;o0){const t=e[o-1];if(getErrorSignature(t)===getErrorSignature(a)){continue}}n=a;break}return[r,n]}),[e,t]);const a=i.useMemo((()=>n.length<1&&Boolean(e.length)),[e.length,n.length]);i.useEffect((()=>{if(o==null){return}let e=true;(0,f.getErrorByType)(o).then((t=>{if(e){r((e=>({...e,[t.id]:t})))}}),(()=>{}));return()=>{e=false}}),[o]);const[l,p]=i.useState(\"fullscreen\");const[h,y]=i.useState(0);const x=i.useCallback((e=>{e?.preventDefault();y((e=>Math.max(0,e-1)))}),[]);const E=i.useCallback((e=>{e?.preventDefault();y((e=>Math.max(0,Math.min(n.length-1,e+1))))}),[n.length]);const _=i.useMemo((()=>n[h]??null),[h,n]);i.useEffect((()=>{if(e.length<1){r({});p(\"hidden\");y(0)}}),[e.length]);const w=i.useCallback((e=>{e?.preventDefault();p(\"minimized\")}),[]);const O=i.useCallback((e=>{e?.preventDefault();p(\"hidden\")}),[]);const j=i.useCallback((e=>{e?.preventDefault();p(\"fullscreen\")}),[]);if(e.length<1||_==null){return null}if(a){return i.createElement(c.Overlay,null)}if(l===\"hidden\"){return null}if(l===\"minimized\"){return i.createElement(d.Toast,{className:\"nextjs-toast-errors-parent\",onClick:j},i.createElement(\"div\",{className:\"nextjs-toast-errors\"},i.createElement(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",width:\"24\",height:\"24\",viewBox:\"0 0 24 24\",fill:\"none\",stroke:\"currentColor\",strokeWidth:\"2\",strokeLinecap:\"round\",strokeLinejoin:\"round\"},i.createElement(\"circle\",{cx:\"12\",cy:\"12\",r:\"10\"}),i.createElement(\"line\",{x1:\"12\",y1:\"8\",x2:\"12\",y2:\"12\"}),i.createElement(\"line\",{x1:\"12\",y1:\"16\",x2:\"12.01\",y2:\"16\"})),i.createElement(\"span\",null,n.length,\" error\",n.length>1?\"s\":\"\"),i.createElement(\"button\",{\"data-nextjs-toast-errors-hide-button\":true,className:\"nextjs-toast-errors-hide-button\",type:\"button\",onClick:e=>{e.stopPropagation();O()},\"aria-label\":\"Hide Errors\"},i.createElement(b.CloseIcon,null))))}const k=[\"server\",\"edge-server\"].includes((0,m.getErrorSource)(_.error)||\"\");return i.createElement(c.Overlay,null,i.createElement(s.Dialog,{type:\"error\",\"aria-labelledby\":\"nextjs__container_errors_label\",\"aria-describedby\":\"nextjs__container_errors_desc\",onClose:k?undefined:w},i.createElement(s.DialogContent,null,i.createElement(s.DialogHeader,{className:\"nextjs-container-errors-header\"},i.createElement(u.LeftRightDialogHeader,{previous:h>0?x:null,next:h h1 {\n font-size: var(--size-font-big);\n line-height: var(--size-font-bigger);\n font-weight: bold;\n margin: 0;\n margin-top: calc(var(--size-gap-double) + var(--size-gap-half));\n }\n .nextjs-container-errors-header small {\n font-size: var(--size-font-small);\n color: var(--color-accents-1);\n margin-left: var(--size-gap-double);\n }\n .nextjs-container-errors-header small > span {\n font-family: var(--font-stack-monospace);\n }\n .nextjs-container-errors-header > p {\n font-family: var(--font-stack-monospace);\n font-size: var(--size-font-small);\n line-height: var(--size-font-big);\n font-weight: bold;\n margin: 0;\n margin-top: var(--size-gap-half);\n color: var(--color-ansi-red);\n white-space: pre-wrap;\n }\n .nextjs-container-errors-header > div > small {\n margin: 0;\n margin-top: var(--size-gap-half);\n }\n .nextjs-container-errors-header > p > a {\n color: var(--color-ansi-red);\n }\n\n .nextjs-container-errors-body > h2:not(:first-child) {\n margin-top: calc(var(--size-gap-double) + var(--size-gap));\n }\n .nextjs-container-errors-body > h2 {\n margin-bottom: var(--size-gap);\n font-size: var(--size-font-big);\n }\n\n .nextjs-toast-errors-parent {\n cursor: pointer;\n transition: transform 0.2s ease;\n }\n .nextjs-toast-errors-parent:hover {\n transform: scale(1.1);\n }\n .nextjs-toast-errors {\n display: flex;\n align-items: center;\n justify-content: flex-start;\n }\n .nextjs-toast-errors > svg {\n margin-right: var(--size-gap);\n }\n .nextjs-toast-errors-hide-button {\n margin-left: var(--size-gap-triple);\n border: none;\n background: none;\n color: var(--color-ansi-bright-white);\n padding: 0;\n transition: opacity 0.25s ease;\n opacity: 0.7;\n }\n .nextjs-toast-errors-hide-button:hover {\n opacity: 1;\n }\n`},484:function(e,t,r){var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){if(n===undefined)n=r;var o=Object.getOwnPropertyDescriptor(t,r);if(!o||(\"get\"in o?!t.__esModule:o.writable||o.configurable)){o={enumerable:true,get:function(){return t[r]}}}Object.defineProperty(e,n,o)}:function(e,t,r,n){if(n===undefined)n=r;e[n]=t[r]});var o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,\"default\",{enumerable:true,value:t})}:function(e,t){e[\"default\"]=t});var a=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)if(r!==\"default\"&&Object.prototype.hasOwnProperty.call(e,r))n(t,e,r);o(t,e);return t};Object.defineProperty(t,\"__esModule\",{value:true});t.RuntimeError=t.styles=void 0;const i=a(r(522));const l=r(413);const s=r(910);const u=r(504);const c=function CallStackFrame({frame:e}){const t=e.originalStackFrame??e.sourceStackFrame;const r=Boolean(e.originalCodeFrame);const n=i.useCallback((()=>{if(!r)return;const e=new URLSearchParams;for(const r in t){e.append(r,(t[r]??\"\").toString())}self.fetch(`${ false||\"\"}/__nextjs_launch-editor?${e.toString()}`).then((()=>{}),(()=>{console.error(\"There was an issue opening this code in your editor.\")}))}),[r,t]);return i.createElement(\"div\",{\"data-nextjs-call-stack-frame\":true},i.createElement(\"h3\",{\"data-nextjs-frame-expanded\":Boolean(e.expanded)},t.methodName),i.createElement(\"div\",{\"data-has-source\":r?\"true\":undefined,tabIndex:r?10:undefined,role:r?\"link\":undefined,onClick:n,title:r?\"Click to open in your editor\":undefined},i.createElement(\"span\",null,(0,u.getFrameSource)(t)),i.createElement(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 24 24\",fill:\"none\",stroke:\"currentColor\",strokeWidth:\"2\",strokeLinecap:\"round\",strokeLinejoin:\"round\"},i.createElement(\"path\",{d:\"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\"}),i.createElement(\"polyline\",{points:\"15 3 21 3 21 9\"}),i.createElement(\"line\",{x1:\"10\",y1:\"14\",x2:\"21\",y2:\"3\"}))))};const d=function RuntimeError({error:e}){const t=i.useMemo((()=>e.frames.findIndex((e=>e.expanded&&Boolean(e.originalCodeFrame)&&Boolean(e.originalStackFrame)))),[e.frames]);const r=i.useMemo((()=>e.frames[t]??null),[e.frames,t]);const n=i.useMemo((()=>t<0?[]:e.frames.slice(0,t)),[e.frames,t]);const[o,a]=i.useState(r==null);const s=i.useCallback((()=>{a((e=>!e))}),[]);const u=i.useMemo((()=>n.filter((e=>e.expanded||o))),[o,n]);const d=i.useMemo((()=>e.frames.slice(t+1)),[e.frames,t]);const f=i.useMemo((()=>d.filter((e=>e.expanded||o))),[o,d]);const m=i.useMemo((()=>d.length!==f.length||o&&r!=null),[o,d.length,r,f.length]);return i.createElement(i.Fragment,null,r?i.createElement(i.Fragment,null,i.createElement(\"h2\",null,\"Source\"),u.map(((e,t)=>i.createElement(c,{key:`leading-frame-${t}-${o}`,frame:e}))),i.createElement(l.CodeFrame,{stackFrame:r.originalStackFrame,codeFrame:r.originalCodeFrame})):undefined,e.componentStack?i.createElement(i.Fragment,null,i.createElement(\"h2\",null,\"Component Stack\"),e.componentStack.map(((e,t)=>i.createElement(\"div\",{key:t,\"data-nextjs-component-stack-frame\":true},i.createElement(\"h3\",null,e))))):null,f.length?i.createElement(i.Fragment,null,i.createElement(\"h2\",null,\"Call Stack\"),f.map(((e,t)=>i.createElement(c,{key:`call-stack-${t}-${o}`,frame:e})))):undefined,m?i.createElement(i.Fragment,null,i.createElement(\"button\",{tabIndex:10,\"data-nextjs-data-runtime-error-collapsed-action\":true,type:\"button\",onClick:s},o?\"Hide\":\"Show\",\" collapsed frames\")):undefined)};t.RuntimeError=d;t.styles=(0,s.noop)`\n button[data-nextjs-data-runtime-error-collapsed-action] {\n background: none;\n border: none;\n padding: 0;\n font-size: var(--size-font-small);\n line-height: var(--size-font-bigger);\n color: var(--color-accents-3);\n }\n\n [data-nextjs-call-stack-frame]:not(:last-child),\n [data-nextjs-component-stack-frame]:not(:last-child) {\n margin-bottom: var(--size-gap-double);\n }\n\n [data-nextjs-call-stack-frame] > h3,\n [data-nextjs-component-stack-frame] > h3 {\n margin-top: 0;\n margin-bottom: var(--size-gap);\n font-family: var(--font-stack-monospace);\n color: var(--color-stack-h6);\n }\n [data-nextjs-call-stack-frame] > h3[data-nextjs-frame-expanded='false'] {\n color: var(--color-stack-headline);\n }\n [data-nextjs-call-stack-frame] > div {\n display: flex;\n align-items: center;\n padding-left: calc(var(--size-gap) + var(--size-gap-half));\n font-size: var(--size-font-small);\n color: var(--color-stack-subline);\n }\n [data-nextjs-call-stack-frame] > div > svg {\n width: auto;\n height: var(--size-font-small);\n margin-left: var(--size-gap);\n\n display: none;\n }\n\n [data-nextjs-call-stack-frame] > div[data-has-source] {\n cursor: pointer;\n }\n [data-nextjs-call-stack-frame] > div[data-has-source]:hover {\n text-decoration: underline dotted;\n }\n [data-nextjs-call-stack-frame] > div[data-has-source] > svg {\n display: unset;\n }\n`},403:function(e,t,r){Object.defineProperty(t,\"__esModule\",{value:true});t.getErrorByType=void 0;const n=r(851);const o=r(233);const a=r(504);async function getErrorByType(e){const{id:t,event:r}=e;switch(r.type){case n.TYPE_UNHANDLED_ERROR:case n.TYPE_UNHANDLED_REJECTION:{const e={id:t,runtime:true,error:r.reason,frames:await(0,a.getOriginalStackFrames)(r.frames,(0,o.getErrorSource)(r.reason),r.reason.toString())};if(r.type===n.TYPE_UNHANDLED_ERROR){e.componentStack=r.componentStack}return e}default:{break}}const i=r;throw new Error(\"type system invariant violation\")}t.getErrorByType=getErrorByType},233:function(e,t,r){Object.defineProperty(t,\"__esModule\",{value:true});t.getServerError=t.decorateServerError=t.getErrorSource=t.getFilesystemFrame=void 0;const n=r(974);function getFilesystemFrame(e){const t={...e};if(typeof t.file===\"string\"){if(t.file.startsWith(\"/\")||/^[a-z]:\\\\/i.test(t.file)||t.file.startsWith(\"\\\\\\\\\")){t.file=`file://${t.file}`}}return t}t.getFilesystemFrame=getFilesystemFrame;const o=Symbol(\"NextjsError\");function getErrorSource(e){return e[o]||null}t.getErrorSource=getErrorSource;function decorateServerError(e,t){Object.defineProperty(e,o,{writable:false,enumerable:false,configurable:false,value:t})}t.decorateServerError=decorateServerError;function getServerError(e,t){let r;try{throw new Error(e.message)}catch(e){r=e}r.name=e.name;try{r.stack=`${r.toString()}\\n${(0,n.parse)(e.stack).map(getFilesystemFrame).map((e=>{let t=` at ${e.methodName}`;if(e.file){let r=e.file;if(e.lineNumber){r+=`:${e.lineNumber}`;if(e.column){r+=`:${e.column}`}}t+=` (${r})`}return t})).join(\"\\n\")}`}catch{r.stack=e.stack}decorateServerError(r,t);return r}t.getServerError=getServerError},910:function(e,t){Object.defineProperty(t,\"__esModule\",{value:true});t.noop=void 0;function noop(e,...t){const r=e.length-1;return e.slice(0,r).reduce(((e,r,n)=>e+r+t[n]),\"\")+e[r]}t.noop=noop},636:function(e,t,r){Object.defineProperty(t,\"__esModule\",{value:true});t.parseStack=void 0;const n=r(974);const o=/\\/_next(\\/static\\/.+)/g;function parseStack(e){const t=(0,n.parse)(e);return t.map((e=>{try{const t=new URL(e.file);const r=o.exec(t.pathname);if(r){const t=\"F:\\\\pixelbrew\\\\.next\"?.replace(/\\\\/g,\"/\")?.replace(/\\/$/,\"\");if(t){e.file=\"file://\"+t.concat(r.pop())}}}catch{}return e}))}t.parseStack=parseStack},504:function(e,t){Object.defineProperty(t,\"__esModule\",{value:true});t.getFrameSource=t.getOriginalStackFrames=t.getOriginalStackFrame=void 0;function getOriginalStackFrame(e,t,r){async function _getOriginalStackFrame(){const n=new URLSearchParams;n.append(\"isServer\",String(t===\"server\"));n.append(\"isEdgeServer\",String(t===\"edge-server\"));n.append(\"errorMessage\",r);for(const t in e){n.append(t,(e[t]??\"\").toString())}const o=new AbortController;const a=setTimeout((()=>o.abort()),3e3);const i=await self.fetch(`${ false||\"\"}/__nextjs_original-stack-frame?${n.toString()}`,{signal:o.signal}).finally((()=>{clearTimeout(a)}));if(!i.ok||i.status===204){return Promise.reject(new Error(await i.text()))}const l=await i.json();return{error:false,reason:null,external:false,expanded:!Boolean((e.file?.includes(\"node_modules\")||l.originalStackFrame?.file?.includes(\"node_modules\"))??true),sourceStackFrame:e,originalStackFrame:l.originalStackFrame,originalCodeFrame:l.originalCodeFrame||null}}if(!(e.file?.startsWith(\"webpack-internal:\")||e.file?.startsWith(\"file:\"))){return Promise.resolve({error:false,reason:null,external:true,expanded:false,sourceStackFrame:e,originalStackFrame:null,originalCodeFrame:null})}return _getOriginalStackFrame().catch((t=>({error:true,reason:t?.message??t?.toString()??\"Unknown Error\",external:false,expanded:false,sourceStackFrame:e,originalStackFrame:null,originalCodeFrame:null})))}t.getOriginalStackFrame=getOriginalStackFrame;function getOriginalStackFrames(e,t,r){return Promise.all(e.map((e=>getOriginalStackFrame(e,t,r))))}t.getOriginalStackFrames=getOriginalStackFrames;function getFrameSource(e){let t=\"\";try{const r=new URL(e.file);if(typeof globalThis!==\"undefined\"&&globalThis.location?.origin!==r.origin){if(r.origin===\"null\"){t+=r.protocol}else{t+=r.origin}}t+=r.pathname;t+=\" \"}catch{t+=(e.file||\"(unknown)\")+\" \"}if(e.lineNumber!=null){if(e.column!=null){t+=`(${e.lineNumber}:${e.column}) `}else{t+=`(${e.lineNumber}) `}}return t.slice(0,-1)}t.getFrameSource=getFrameSource},169:function(e,t,r){var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){if(n===undefined)n=r;var o=Object.getOwnPropertyDescriptor(t,r);if(!o||(\"get\"in o?!t.__esModule:o.writable||o.configurable)){o={enumerable:true,get:function(){return t[r]}}}Object.defineProperty(e,n,o)}:function(e,t,r,n){if(n===undefined)n=r;e[n]=t[r]});var o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,\"default\",{enumerable:true,value:t})}:function(e,t){e[\"default\"]=t});var a=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)if(r!==\"default\"&&Object.prototype.hasOwnProperty.call(e,r))n(t,e,r);o(t,e);return t};Object.defineProperty(t,\"__esModule\",{value:true});t.useOnClickOutside=void 0;const i=a(r(522));function useOnClickOutside(e,t){i.useEffect((()=>{if(e==null||t==null){return}const listener=r=>{if(!e||e.contains(r.target)){return}t(r)};const r=e.getRootNode();r.addEventListener(\"mousedown\",listener);r.addEventListener(\"touchstart\",listener);return function(){r.removeEventListener(\"mousedown\",listener);r.removeEventListener(\"touchstart\",listener)}}),[t,e])}t.useOnClickOutside=useOnClickOutside},865:function(e,t,r){var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){if(n===undefined)n=r;var o=Object.getOwnPropertyDescriptor(t,r);if(!o||(\"get\"in o?!t.__esModule:o.writable||o.configurable)){o={enumerable:true,get:function(){return t[r]}}}Object.defineProperty(e,n,o)}:function(e,t,r,n){if(n===undefined)n=r;e[n]=t[r]});var o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,\"default\",{enumerable:true,value:t})}:function(e,t){e[\"default\"]=t});var a=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)if(r!==\"default\"&&Object.prototype.hasOwnProperty.call(e,r))n(t,e,r);o(t,e);return t};Object.defineProperty(t,\"__esModule\",{value:true});t.CloseIcon=void 0;const i=a(r(522));const CloseIcon=()=>i.createElement(\"svg\",{width:\"24\",height:\"24\",viewBox:\"0 0 24 24\",fill:\"none\",xmlns:\"http://www.w3.org/2000/svg\"},i.createElement(\"path\",{d:\"M18 6L6 18\",stroke:\"currentColor\",strokeWidth:\"2\",strokeLinecap:\"round\",strokeLinejoin:\"round\"}),i.createElement(\"path\",{d:\"M6 6L18 18\",stroke:\"currentColor\",strokeWidth:\"2\",strokeLinecap:\"round\",strokeLinejoin:\"round\"}));t.CloseIcon=CloseIcon},884:function(e,t,r){var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){if(n===undefined)n=r;var o=Object.getOwnPropertyDescriptor(t,r);if(!o||(\"get\"in o?!t.__esModule:o.writable||o.configurable)){o={enumerable:true,get:function(){return t[r]}}}Object.defineProperty(e,n,o)}:function(e,t,r,n){if(n===undefined)n=r;e[n]=t[r]});var o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,\"default\",{enumerable:true,value:t})}:function(e,t){e[\"default\"]=t});var a=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)if(r!==\"default\"&&Object.prototype.hasOwnProperty.call(e,r))n(t,e,r);o(t,e);return t};Object.defineProperty(t,\"__esModule\",{value:true});t.Base=void 0;const i=a(r(522));const l=r(910);function Base(){return i.createElement(\"style\",null,(0,l.noop)`\n :host {\n --size-gap-half: 4px;\n --size-gap: 8px;\n --size-gap-double: 16px;\n --size-gap-triple: 24px;\n --size-gap-quad: 32px;\n\n --size-font-small: 14px;\n --size-font: 16px;\n --size-font-big: 20px;\n --size-font-bigger: 24px;\n\n --color-background: white;\n --color-font: #757575;\n --color-backdrop: rgba(17, 17, 17, 0.2);\n\n --color-stack-h6: #222;\n --color-stack-headline: #666;\n --color-stack-subline: #999;\n\n --color-accents-1: #808080;\n --color-accents-2: #222222;\n --color-accents-3: #404040;\n\n --font-stack-monospace: 'SFMono-Regular', Consolas, 'Liberation Mono',\n Menlo, Courier, monospace;\n\n --color-ansi-selection: rgba(95, 126, 151, 0.48);\n --color-ansi-bg: #111111;\n --color-ansi-fg: #cccccc;\n\n --color-ansi-white: #777777;\n --color-ansi-black: #141414;\n --color-ansi-blue: #00aaff;\n --color-ansi-cyan: #88ddff;\n --color-ansi-green: #98ec65;\n --color-ansi-magenta: #aa88ff;\n --color-ansi-red: #ff5555;\n --color-ansi-yellow: #ffcc33;\n --color-ansi-bright-white: #ffffff;\n --color-ansi-bright-black: #777777;\n --color-ansi-bright-blue: #33bbff;\n --color-ansi-bright-cyan: #bbecff;\n --color-ansi-bright-green: #b6f292;\n --color-ansi-bright-magenta: #cebbff;\n --color-ansi-bright-red: #ff8888;\n --color-ansi-bright-yellow: #ffd966;\n }\n\n @media (prefers-color-scheme: dark) {\n :host {\n --color-background: rgb(28, 28, 30);\n --color-font: white;\n --color-backdrop: rgb(44, 44, 46);\n\n --color-stack-h6: rgb(200, 200, 204);\n --color-stack-headline: rgb(99, 99, 102);\n --color-stack-subline: rgba(142, 142, 147);\n\n --color-accents-3: rgb(118, 118, 118);\n }\n }\n\n .mono {\n font-family: var(--font-stack-monospace);\n }\n\n h1,\n h2,\n h3,\n h4,\n h5,\n h6 {\n margin-bottom: var(--size-gap);\n font-weight: 500;\n line-height: 1.5;\n }\n `)}t.Base=Base},464:function(e,t,r){var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){if(n===undefined)n=r;var o=Object.getOwnPropertyDescriptor(t,r);if(!o||(\"get\"in o?!t.__esModule:o.writable||o.configurable)){o={enumerable:true,get:function(){return t[r]}}}Object.defineProperty(e,n,o)}:function(e,t,r,n){if(n===undefined)n=r;e[n]=t[r]});var o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,\"default\",{enumerable:true,value:t})}:function(e,t){e[\"default\"]=t});var a=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)if(r!==\"default\"&&Object.prototype.hasOwnProperty.call(e,r))n(t,e,r);o(t,e);return t};Object.defineProperty(t,\"__esModule\",{value:true});t.ComponentStyles=void 0;const i=a(r(522));const l=r(399);const s=r(651);const u=r(543);const c=r(993);const d=r(488);const f=r(120);const m=r(936);const p=r(355);const b=r(484);const v=r(910);function ComponentStyles(){return i.createElement(\"style\",null,(0,v.noop)`\n ${c.styles}\n ${f.styles}\n ${s.styles}\n ${u.styles}\n ${l.styles}\n ${d.styles}\n \n ${m.styles}\n ${p.styles}\n ${b.styles}\n `)}t.ComponentStyles=ComponentStyles},495:function(e,t,r){var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){if(n===undefined)n=r;var o=Object.getOwnPropertyDescriptor(t,r);if(!o||(\"get\"in o?!t.__esModule:o.writable||o.configurable)){o={enumerable:true,get:function(){return t[r]}}}Object.defineProperty(e,n,o)}:function(e,t,r,n){if(n===undefined)n=r;e[n]=t[r]});var o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,\"default\",{enumerable:true,value:t})}:function(e,t){e[\"default\"]=t});var a=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)if(r!==\"default\"&&Object.prototype.hasOwnProperty.call(e,r))n(t,e,r);o(t,e);return t};Object.defineProperty(t,\"__esModule\",{value:true});t.CssReset=void 0;const i=a(r(522));const l=r(910);function CssReset(){return i.createElement(\"style\",null,(0,l.noop)`\n :host {\n all: initial;\n\n /* the direction property is not reset by 'all' */\n direction: ltr;\n }\n\n /*!\n * Bootstrap Reboot v4.4.1 (https://getbootstrap.com/)\n * Copyright 2011-2019 The Bootstrap Authors\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)\n */\n *,\n *::before,\n *::after {\n box-sizing: border-box;\n }\n\n :host {\n font-family: sans-serif;\n line-height: 1.15;\n -webkit-text-size-adjust: 100%;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n }\n\n article,\n aside,\n figcaption,\n figure,\n footer,\n header,\n hgroup,\n main,\n nav,\n section {\n display: block;\n }\n\n :host {\n margin: 0;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,\n 'Helvetica Neue', Arial, 'Noto Sans', sans-serif,\n 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol',\n 'Noto Color Emoji';\n font-size: 16px;\n font-weight: 400;\n line-height: 1.5;\n color: var(--color-font);\n text-align: left;\n background-color: #fff;\n }\n\n [tabindex='-1']:focus:not(:focus-visible) {\n outline: 0 !important;\n }\n\n hr {\n box-sizing: content-box;\n height: 0;\n overflow: visible;\n }\n\n h1,\n h2,\n h3,\n h4,\n h5,\n h6 {\n margin-top: 0;\n margin-bottom: 8px;\n }\n\n p {\n margin-top: 0;\n margin-bottom: 16px;\n }\n\n abbr[title],\n abbr[data-original-title] {\n text-decoration: underline;\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n cursor: help;\n border-bottom: 0;\n -webkit-text-decoration-skip-ink: none;\n text-decoration-skip-ink: none;\n }\n\n address {\n margin-bottom: 16px;\n font-style: normal;\n line-height: inherit;\n }\n\n ol,\n ul,\n dl {\n margin-top: 0;\n margin-bottom: 16px;\n }\n\n ol ol,\n ul ul,\n ol ul,\n ul ol {\n margin-bottom: 0;\n }\n\n dt {\n font-weight: 700;\n }\n\n dd {\n margin-bottom: 8px;\n margin-left: 0;\n }\n\n blockquote {\n margin: 0 0 16px;\n }\n\n b,\n strong {\n font-weight: bolder;\n }\n\n small {\n font-size: 80%;\n }\n\n sub,\n sup {\n position: relative;\n font-size: 75%;\n line-height: 0;\n vertical-align: baseline;\n }\n\n sub {\n bottom: -0.25em;\n }\n\n sup {\n top: -0.5em;\n }\n\n a {\n color: #007bff;\n text-decoration: none;\n background-color: transparent;\n }\n\n a:hover {\n color: #0056b3;\n text-decoration: underline;\n }\n\n a:not([href]) {\n color: inherit;\n text-decoration: none;\n }\n\n a:not([href]):hover {\n color: inherit;\n text-decoration: none;\n }\n\n pre,\n code,\n kbd,\n samp {\n font-family: SFMono-Regular, Menlo, Monaco, Consolas,\n 'Liberation Mono', 'Courier New', monospace;\n font-size: 1em;\n }\n\n pre {\n margin-top: 0;\n margin-bottom: 16px;\n overflow: auto;\n }\n\n figure {\n margin: 0 0 16px;\n }\n\n img {\n vertical-align: middle;\n border-style: none;\n }\n\n svg {\n overflow: hidden;\n vertical-align: middle;\n }\n\n table {\n border-collapse: collapse;\n }\n\n caption {\n padding-top: 12px;\n padding-bottom: 12px;\n color: #6c757d;\n text-align: left;\n caption-side: bottom;\n }\n\n th {\n text-align: inherit;\n }\n\n label {\n display: inline-block;\n margin-bottom: 8px;\n }\n\n button {\n border-radius: 0;\n }\n\n button:focus {\n outline: 1px dotted;\n outline: 5px auto -webkit-focus-ring-color;\n }\n\n input,\n button,\n select,\n optgroup,\n textarea {\n margin: 0;\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n }\n\n button,\n input {\n overflow: visible;\n }\n\n button,\n select {\n text-transform: none;\n }\n\n select {\n word-wrap: normal;\n }\n\n button,\n [type='button'],\n [type='reset'],\n [type='submit'] {\n -webkit-appearance: button;\n }\n\n button:not(:disabled),\n [type='button']:not(:disabled),\n [type='reset']:not(:disabled),\n [type='submit']:not(:disabled) {\n cursor: pointer;\n }\n\n button::-moz-focus-inner,\n [type='button']::-moz-focus-inner,\n [type='reset']::-moz-focus-inner,\n [type='submit']::-moz-focus-inner {\n padding: 0;\n border-style: none;\n }\n\n input[type='radio'],\n input[type='checkbox'] {\n box-sizing: border-box;\n padding: 0;\n }\n\n input[type='date'],\n input[type='time'],\n input[type='datetime-local'],\n input[type='month'] {\n -webkit-appearance: listbox;\n }\n\n textarea {\n overflow: auto;\n resize: vertical;\n }\n\n fieldset {\n min-width: 0;\n padding: 0;\n margin: 0;\n border: 0;\n }\n\n legend {\n display: block;\n width: 100%;\n max-width: 100%;\n padding: 0;\n margin-bottom: 8px;\n font-size: 24px;\n line-height: inherit;\n color: inherit;\n white-space: normal;\n }\n\n progress {\n vertical-align: baseline;\n }\n\n [type='number']::-webkit-inner-spin-button,\n [type='number']::-webkit-outer-spin-button {\n height: auto;\n }\n\n [type='search'] {\n outline-offset: -2px;\n -webkit-appearance: none;\n }\n\n [type='search']::-webkit-search-decoration {\n -webkit-appearance: none;\n }\n\n ::-webkit-file-upload-button {\n font: inherit;\n -webkit-appearance: button;\n }\n\n output {\n display: inline-block;\n }\n\n summary {\n display: list-item;\n cursor: pointer;\n }\n\n template {\n display: none;\n }\n\n [hidden] {\n display: none !important;\n }\n `)}t.CssReset=CssReset},997:function(e){e.exports=__webpack_require__(/*! next/dist/compiled/anser */ \"./node_modules/next/dist/compiled/anser/index.js\")},292:function(e){e.exports=__webpack_require__(/*! next/dist/compiled/css.escape */ \"./node_modules/next/dist/compiled/css.escape/css.escape.js\")},709:function(e){e.exports=__webpack_require__(/*! next/dist/compiled/platform */ \"./node_modules/next/dist/compiled/platform/platform.js\")},974:function(e){e.exports=__webpack_require__(/*! next/dist/compiled/stacktrace-parser */ \"./node_modules/next/dist/compiled/stacktrace-parser/stack-trace-parser.cjs.js\")},518:function(e){e.exports=__webpack_require__(/*! next/dist/compiled/strip-ansi */ \"./node_modules/next/dist/compiled/strip-ansi/index.js\")},522:function(e){e.exports=__webpack_require__(/*! react */ \"./node_modules/react/index.js\")},255:function(e){e.exports=__webpack_require__(/*! react-dom */ \"./node_modules/react-dom/index.js\")}};var t={};function __nccwpck_require__(r){var n=t[r];if(n!==undefined){return n.exports}var o=t[r]={exports:{}};var a=true;try{e[r].call(o.exports,o,o.exports,__nccwpck_require__);a=false}finally{if(a)delete t[r]}return o.exports}if(typeof __nccwpck_require__!==\"undefined\")__nccwpck_require__.ab=__dirname+\"/\";var r=__nccwpck_require__(204);module.exports=r})();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NvbXBpbGVkL0BuZXh0L3JlYWN0LWRldi1vdmVybGF5L2Rpc3QvY2xpZW50LmpzIiwibWFwcGluZ3MiOiI7QUFBQSxZQUFZLGFBQWEsT0FBTyxrQkFBa0Isc0NBQXNDLFdBQVcsRUFBRSxHQUFHLENBQUMsQ0FBQyxzQkFBc0IsMENBQTBDLHlCQUF5QixFQUFFLFdBQVcsaUNBQWlDLFNBQVMseUNBQXlDLFNBQVMsOEJBQThCLDBCQUEwQixFQUFFLE1BQU0sTUFBTSxrWUFBa1ksNkJBQTZCLHNCQUFzQixnQ0FBZ0MsYUFBYSxxREFBcUQsSUFBSSw0QkFBNEIsOEhBQThILDhDQUE4QyxXQUFXLEVBQUUsMkJBQTJCLHFCQUFxQixtQkFBbUIsc0NBQXNDLFdBQVcsRUFBRSwrQ0FBK0MsK0JBQStCLDRCQUE0QixFQUFFLGdDQUFnQyxXQUFXLHFDQUFxQyx5Q0FBeUMsd0JBQXdCLGFBQWEsYUFBYSwyQ0FBMkMsTUFBTSx1RkFBdUYsTUFBTSx3REFBd0QsUUFBUSxpRkFBaUYsR0FBRyxTQUFTLDhIQUE4SCw4Q0FBOEMsV0FBVyxFQUFFLDJCQUEyQixxQkFBcUIscUJBQXFCLG1FQUFtRSxxQkFBcUIsMkNBQTJDLDZEQUE2RCxHQUFHLCtCQUErQixjQUFjLDZCQUE2QixtQkFBbUIscUJBQXFCLFVBQVUsRUFBRSxrRUFBa0UsbUNBQW1DLHdCQUF3QixFQUFFLGVBQWUsZUFBZSxFQUFFLDJDQUEyQyw0QkFBNEIsU0FBUywrRkFBK0YsT0FBTyxVQUFVLDhDQUE4QywwQkFBMEIsWUFBWSxzQ0FBc0MsV0FBVyxFQUFFLDRJQUE0SSxrQkFBa0IsZUFBZSxlQUFlLGVBQWUsMEJBQTBCLFlBQVksZ0JBQWdCLDZCQUE2QixpQkFBaUIseURBQXlELE9BQU8seUVBQXlFLDRCQUE0QiwwQ0FBMEMsNEZBQTRGLFVBQVUsbUpBQW1KLFFBQVEsdUZBQXVGLEVBQUUsaUNBQWlDLGtCQUFrQix5REFBeUQsT0FBTyxVQUFVLFFBQVEsMEVBQTBFLEVBQUUs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QUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLG9CQUFvQixpQkFBaUIsVUFBVSxtQkFBTyxDQUFDLGtGQUEwQixFQUFFLGlCQUFpQixVQUFVLG1CQUFPLENBQUMsaUdBQStCLEVBQUUsaUJBQWlCLFVBQVUsbUJBQU8sQ0FBQywyRkFBNkIsRUFBRSxpQkFBaUIsVUFBVSxtQkFBTyxDQUFDLDJIQUFzQyxFQUFFLGlCQUFpQixVQUFVLG1CQUFPLENBQUMsNEZBQStCLEVBQUUsaUJBQWlCLFVBQVUsbUJBQU8sQ0FBQyw0Q0FBTyxFQUFFLGlCQUFpQixVQUFVLG1CQUFPLENBQUMsb0RBQVcsSUFBSSxTQUFTLGdDQUFnQyxXQUFXLGtCQUFrQixpQkFBaUIsWUFBWSxZQUFZLFdBQVcsSUFBSSxxREFBcUQsUUFBUSxRQUFRLGlCQUFpQixpQkFBaUIsbUVBQW1FLFNBQVMsS0FBSywrQkFBK0IsaUJBQWlCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY29tcGlsZWQvQG5leHQvcmVhY3QtZGV2LW92ZXJsYXkvZGlzdC9jbGllbnQuanM/NGQzMCJdLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24oKXtcInVzZSBzdHJpY3RcIjt2YXIgZT17ODc2OmZ1bmN0aW9uKGUsdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOnRydWV9KTswJiYwO2Z1bmN0aW9uIF9leHBvcnQoZSx0KXtmb3IodmFyIHIgaW4gdClPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLHtlbnVtZXJhYmxlOnRydWUsZ2V0OnRbcl19KX1fZXhwb3J0KHQse2h5ZHJhdGlvbkVycm9yV2FybmluZzpmdW5jdGlvbigpe3JldHVybiByfSxoeWRyYXRpb25FcnJvckNvbXBvbmVudFN0YWNrOmZ1bmN0aW9uKCl7cmV0dXJuIG59LHBhdGNoQ29uc29sZUVycm9yOmZ1bmN0aW9uKCl7cmV0dXJuIHBhdGNoQ29uc29sZUVycm9yfX0pO2xldCByO2xldCBuO2NvbnN0IG89bmV3IFNldChbJ1dhcm5pbmc6IFRleHQgY29udGVudCBkaWQgbm90IG1hdGNoLiBTZXJ2ZXI6IFwiJXNcIiBDbGllbnQ6IFwiJXNcIiVzJyxcIldhcm5pbmc6IEV4cGVjdGVkIHNlcnZlciBIVE1MIHRvIGNvbnRhaW4gYSBtYXRjaGluZyA8JXM+IGluIDwlcz4uJXNcIiwnV2FybmluZzogRXhwZWN0ZWQgc2VydmVyIEhUTUwgdG8gY29udGFpbiBhIG1hdGNoaW5nIHRleHQgbm9kZSBmb3IgXCIlc1wiIGluIDwlcz4uJXMnLFwiV2FybmluZzogRGlkIG5vdCBleHBlY3Qgc2VydmVyIEhUTUwgdG8gY29udGFpbiBhIDwlcz4gaW4gPCVzPi4lc1wiLCdXYXJuaW5nOiBEaWQgbm90IGV4cGVjdCBzZXJ2ZXIgSFRNTCB0byBjb250YWluIHRoZSB0ZXh0IG5vZGUgXCIlc1wiIGluIDwlcz4uJXMnXSk7ZnVuY3Rpb24gcGF0Y2hDb25zb2xlRXJyb3IoKXtjb25zdCBlPWNvbnNvbGUuZXJyb3I7Y29uc29sZS5lcnJvcj1mdW5jdGlvbih0LGEsaSxsKXtpZihvLmhhcyh0KSl7cj10LnJlcGxhY2UoXCIlc1wiLGEpLnJlcGxhY2UoXCIlc1wiLGkpLnJlcGxhY2UoXCIlc1wiLFwiXCIpO249bH1lLmFwcGx5KGNvbnNvbGUsYXJndW1lbnRzKX19aWYoKHR5cGVvZiB0LmRlZmF1bHQ9PT1cImZ1bmN0aW9uXCJ8fHR5cGVvZiB0LmRlZmF1bHQ9PT1cIm9iamVjdFwiJiZ0LmRlZmF1bHQhPT1udWxsKSYmdHlwZW9mIHQuZGVmYXVsdC5fX2VzTW9kdWxlPT09XCJ1bmRlZmluZWRcIil7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQuZGVmYXVsdCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6dHJ1ZX0pO09iamVjdC5hc3NpZ24odC5kZWZhdWx0LHQpO2UuZXhwb3J0cz10LmRlZmF1bHR9fSw2NTk6ZnVuY3Rpb24oZSx0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6dHJ1ZX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwicGFyc2VDb21wb25lbnRTdGFja1wiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHBhcnNlQ29tcG9uZW50U3RhY2t9fSk7ZnVuY3Rpb24gcGFyc2VDb21wb25lbnRTdGFjayhlKXtjb25zdCB0PVtdO2Zvcihjb25zdCBuIG9mIGUudHJpbSgpLnNwbGl0KFwiXFxuXCIpKXtjb25zdCBlPS9hdCAoW14gXSspKCBcXCgoLiopXFwpKT8vLmV4ZWMobik7aWYoZT09bnVsbD92b2lkIDA6ZVsxXSl7Y29uc3Qgbj1lWzFdO2NvbnN0IG89ZVszXTtpZihvPT1udWxsP3ZvaWQgMDpvLmluY2x1ZGVzKFwibmV4dC9kaXN0XCIpKXticmVha31jb25zdCBhPW89PW51bGw/dm9pZCAwOm8ucmVwbGFjZSgvXih3ZWJwYWNrLWludGVybmFsOlxcL1xcL1xcL3xmaWxlOlxcL1xcLykoXFwoLipcXClcXC8pPy8sXCJcIik7dmFyIHI7Y29uc3RbaSxsLHNdPShyPWE9PW51bGw/dm9pZCAwOmEuc3BsaXQoXCI6XCIpKSE9bnVsbD9yOltdO3QucHVzaCh7Y29tcG9uZW50Om4sZmlsZTppLGxpbmVOdW1iZXI6bD9OdW1iZXIobCk6dW5kZWZpbmVkLGNvbHVtbjpzP051bWJlcihzKTp1bmRlZmluZWR9KX19cmV0dXJuIHR9aWYoKHR5cGVvZiB0LmRlZmF1bHQ9PT1cImZ1bmN0aW9uXCJ8fHR5cGVvZiB0LmRlZmF1bHQ9PT1cIm9iamVjdFwiJiZ0LmRlZmF1bHQhPT1udWxsKSYmdHlwZW9mIHQuZGVmYXVsdC5fX2VzTW9kdWxlPT09XCJ1bmRlZmluZWRcIil7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQuZGVmYXVsdCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6dHJ1ZX0pO09iamVjdC5hc3NpZ24odC5kZWZhdWx0LHQpO2UuZXhwb3J0cz10LmRlZmF1bHR9fSwyMDQ6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQscixuKXtpZihuPT09dW5kZWZpbmVkKW49cjt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQscik7aWYoIW98fChcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKSl7bz17ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiB0W3JdfX19T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbixvKX06ZnVuY3Rpb24oZSx0LHIsbil7aWYobj09PXVuZGVmaW5lZCluPXI7ZVtuXT10W3JdfSk7dmFyIG89dGhpcyYmdGhpcy5fX3NldE1vZHVsZURlZmF1bHR8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJkZWZhdWx0XCIse2VudW1lcmFibGU6dHJ1ZSx2YWx1ZTp0fSl9OmZ1bmN0aW9uKGUsdCl7ZVtcImRlZmF1bHRcIl09dH0pO3ZhciBhPXRoaXMmJnRoaXMuX19pbXBvcnRTdGFyfHxmdW5jdGlvbihlKXtpZihlJiZlLl9fZXNNb2R1bGUpcmV0dXJuIGU7dmFyIHQ9e307aWYoZSE9bnVsbClmb3IodmFyIHIgaW4gZSlpZihyIT09XCJkZWZhdWx0XCImJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpKW4odCxlLHIpO28odCxlKTtyZXR1cm4gdH07dmFyIGk9dGhpcyYmdGhpcy5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOnRydWV9KTt0Lm9uUmVmcmVzaD10Lm9uQmVmb3JlUmVmcmVzaD10LnVucmVnaXN0ZXI9dC5yZWdpc3Rlcj10Lm9uQnVpbGRFcnJvcj10Lm9uQnVpbGRPaz10LlJlYWN0RGV2T3ZlcmxheT10LmdldFNlcnZlckVycm9yPXQuZ2V0RXJyb3JCeVR5cGU9dm9pZCAwO2NvbnN0IGw9YShyKDg1MSkpO2NvbnN0IHM9cig2MzYpO2NvbnN0IHU9cig2NTkpO2NvbnN0IGM9cig4NzYpOygwLGMucGF0Y2hDb25zb2xlRXJyb3IpKCk7bGV0IGQ9ZmFsc2U7bGV0IGY9dW5kZWZpbmVkO2Z1bmN0aW9uIG9uVW5oYW5kbGVkRXJyb3IoZSl7Y29uc3QgdD1lPy5lcnJvcjtpZighdHx8ISh0IGluc3RhbmNlb2YgRXJyb3IpfHx0eXBlb2YgdC5zdGFjayE9PVwic3RyaW5nXCIpe3JldHVybn1pZih0Lm1lc3NhZ2UubWF0Y2goLyhoeWRyYXRpb258Y29udGVudCBkb2VzIG5vdCBtYXRjaHxkaWQgbm90IG1hdGNoKS9pKSl7aWYoYy5oeWRyYXRpb25FcnJvcldhcm5pbmcpe3QubWVzc2FnZSs9XCJcXG5cXG5cIitjLmh5ZHJhdGlvbkVycm9yV2FybmluZ310Lm1lc3NhZ2UrPWBcXG5cXG5TZWUgbW9yZSBpbmZvIGhlcmU6IGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL21lc3NhZ2VzL3JlYWN0LWh5ZHJhdGlvbi1lcnJvcmB9Y29uc3Qgcj10O2NvbnN0IG49dHlwZW9mIGMuaHlkcmF0aW9uRXJyb3JDb21wb25lbnRTdGFjaz09PVwic3RyaW5nXCI/KDAsdS5wYXJzZUNvbXBvbmVudFN0YWNrKShjLmh5ZHJhdGlvbkVycm9yQ29tcG9uZW50U3RhY2spLm1hcCgoZT0+ZS5jb21wb25lbnQpKTp1bmRlZmluZWQ7bC5lbWl0KHt0eXBlOmwuVFlQRV9VTkhBTkRMRURfRVJST1IscmVhc29uOnQsZnJhbWVzOigwLHMucGFyc2VTdGFjaykoci5zdGFjayksY29tcG9uZW50U3RhY2s6bn0pfWZ1bmN0aW9uIG9uVW5oYW5kbGVkUmVqZWN0aW9uKGUpe2NvbnN0IHQ9ZT8ucmVhc29uO2lmKCF0fHwhKHQgaW5zdGFuY2VvZiBFcnJvcil8fHR5cGVvZiB0LnN0YWNrIT09XCJzdHJpbmdcIil7cmV0dXJufWNvbnN0IHI9dDtsLmVtaXQoe3R5cGU6bC5UWVBFX1VOSEFORExFRF9SRUpFQ1RJT04scmVhc29uOnQsZnJhbWVzOigwLHMucGFyc2VTdGFjaykoci5zdGFjayl9KX1mdW5jdGlvbiByZWdpc3Rlcigpe2lmKGQpe3JldHVybn1kPXRydWU7dHJ5e2NvbnN0IGU9RXJyb3Iuc3RhY2tUcmFjZUxpbWl0O0Vycm9yLnN0YWNrVHJhY2VMaW1pdD01MDtmPWV9Y2F0Y2h7fXdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwiZXJyb3JcIixvblVuaGFuZGxlZEVycm9yKTt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcInVuaGFuZGxlZHJlamVjdGlvblwiLG9uVW5oYW5kbGVkUmVqZWN0aW9uKX10LnJlZ2lzdGVyPXJlZ2lzdGVyO2Z1bmN0aW9uIHVucmVnaXN0ZXIoKXtpZighZCl7cmV0dXJufWQ9ZmFsc2U7aWYoZiE9PXVuZGVmaW5lZCl7dHJ5e0Vycm9yLnN0YWNrVHJhY2VMaW1pdD1mfWNhdGNoe31mPXVuZGVmaW5lZH13aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImVycm9yXCIsb25VbmhhbmRsZWRFcnJvcik7d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJ1bmhhbmRsZWRyZWplY3Rpb25cIixvblVuaGFuZGxlZFJlamVjdGlvbil9dC51bnJlZ2lzdGVyPXVucmVnaXN0ZXI7ZnVuY3Rpb24gb25CdWlsZE9rKCl7bC5lbWl0KHt0eXBlOmwuVFlQRV9CVUlMRF9PS30pfXQub25CdWlsZE9rPW9uQnVpbGRPaztmdW5jdGlvbiBvbkJ1aWxkRXJyb3IoZSl7bC5lbWl0KHt0eXBlOmwuVFlQRV9CVUlMRF9FUlJPUixtZXNzYWdlOmV9KX10Lm9uQnVpbGRFcnJvcj1vbkJ1aWxkRXJyb3I7ZnVuY3Rpb24gb25SZWZyZXNoKCl7bC5lbWl0KHt0eXBlOmwuVFlQRV9SRUZSRVNIfSl9dC5vblJlZnJlc2g9b25SZWZyZXNoO2Z1bmN0aW9uIG9uQmVmb3JlUmVmcmVzaCgpe2wuZW1pdCh7dHlwZTpsLlRZUEVfQkVGT1JFX1JFRlJFU0h9KX10Lm9uQmVmb3JlUmVmcmVzaD1vbkJlZm9yZVJlZnJlc2g7dmFyIG09cig0MDMpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiZ2V0RXJyb3JCeVR5cGVcIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBtLmdldEVycm9yQnlUeXBlfX0pO3ZhciBwPXIoMjMzKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcImdldFNlcnZlckVycm9yXCIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gcC5nZXRTZXJ2ZXJFcnJvcn19KTt2YXIgYj1yKDIyMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJSZWFjdERldk92ZXJsYXlcIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBpKGIpLmRlZmF1bHR9fSl9LDc5MDpmdW5jdGlvbihlLHQscil7dmFyIG49dGhpcyYmdGhpcy5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOnRydWV9KTt0LkVycm9yQm91bmRhcnk9dm9pZCAwO2NvbnN0IG89bihyKDUyMikpO2NsYXNzIEVycm9yQm91bmRhcnkgZXh0ZW5kcyBvLmRlZmF1bHQuUHVyZUNvbXBvbmVudHtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyk7dGhpcy5zdGF0ZT17ZXJyb3I6bnVsbH19c3RhdGljIGdldERlcml2ZWRTdGF0ZUZyb21FcnJvcihlKXtyZXR1cm57ZXJyb3I6ZX19Y29tcG9uZW50RGlkQ2F0Y2goZSx0KXt0aGlzLnByb3BzLm9uRXJyb3IoZSx0Py5jb21wb25lbnRTdGFja3x8bnVsbCk7aWYoIXRoaXMucHJvcHMuZ2xvYmFsT3ZlcmxheSl7dGhpcy5zZXRTdGF0ZSh7ZXJyb3I6ZX0pfX1yZW5kZXIoKXtyZXR1cm4gdGhpcy5zdGF0ZS5lcnJvcnx8dGhpcy5wcm9wcy5nbG9iYWxPdmVybGF5JiZ0aGlzLnByb3BzLmlzTW91bnRlZD90aGlzLnByb3BzLmdsb2JhbE92ZXJsYXk/by5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJodG1sXCIsbnVsbCxvLmRlZmF1bHQuY3JlYXRlRWxlbWVudChcImhlYWRcIixudWxsKSxvLmRlZmF1bHQuY3JlYXRlRWxlbWVudChcImJvZHlcIixudWxsKSk6bnVsbDp0aGlzLnByb3BzLmNoaWxkcmVufX10LkVycm9yQm91bmRhcnk9RXJyb3JCb3VuZGFyeX0sMjIyOmZ1bmN0aW9uKGUsdCxyKXt2YXIgbj10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0LHIsbil7aWYobj09PXVuZGVmaW5lZCluPXI7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LHIpO2lmKCFvfHwoXCJnZXRcImluIG8/IXQuX19lc01vZHVsZTpvLndyaXRhYmxlfHxvLmNvbmZpZ3VyYWJsZSkpe289e2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtyXX19fU9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG4sbyl9OmZ1bmN0aW9uKGUsdCxyLG4pe2lmKG49PT11bmRlZmluZWQpbj1yO2Vbbl09dFtyXX0pO3ZhciBvPXRoaXMmJnRoaXMuX19zZXRNb2R1bGVEZWZhdWx0fHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiZGVmYXVsdFwiLHtlbnVtZXJhYmxlOnRydWUsdmFsdWU6dH0pfTpmdW5jdGlvbihlLHQpe2VbXCJkZWZhdWx0XCJdPXR9KTt2YXIgYT10aGlzJiZ0aGlzLl9faW1wb3J0U3Rhcnx8ZnVuY3Rpb24oZSl7aWYoZSYmZS5fX2VzTW9kdWxlKXJldHVybiBlO3ZhciB0PXt9O2lmKGUhPW51bGwpZm9yKHZhciByIGluIGUpaWYociE9PVwiZGVmYXVsdFwiJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSluKHQsZSxyKTtvKHQsZSk7cmV0dXJuIHR9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTp0cnVlfSk7Y29uc3QgaT1hKHIoNTIyKSk7Y29uc3QgbD1hKHIoODUxKSk7Y29uc3Qgcz1yKDMzOCk7Y29uc3QgdT1yKDkzNik7Y29uc3QgYz1yKDM1NSk7Y29uc3QgZD1yKDc5MCk7Y29uc3QgZj1yKDg4NCk7Y29uc3QgbT1yKDQ2NCk7Y29uc3QgcD1yKDQ5NSk7ZnVuY3Rpb24gcHVzaEVycm9yRmlsdGVyRHVwbGljYXRlcyhlLHQpe3JldHVyblsuLi5lLmZpbHRlcigoZT0+ZS5ldmVudC5yZWFzb24hPT10LmV2ZW50LnJlYXNvbikpLHRdfWZ1bmN0aW9uIHJlZHVjZXIoZSx0KXtzd2l0Y2godC50eXBlKXtjYXNlIGwuVFlQRV9CVUlMRF9PSzp7cmV0dXJuey4uLmUsYnVpbGRFcnJvcjpudWxsfX1jYXNlIGwuVFlQRV9CVUlMRF9FUlJPUjp7cmV0dXJuey4uLmUsYnVpbGRFcnJvcjp0Lm1lc3NhZ2V9fWNhc2UgbC5UWVBFX0JFRk9SRV9SRUZSRVNIOntyZXR1cm57Li4uZSxyZWZyZXNoU3RhdGU6e3R5cGU6XCJwZW5kaW5nXCIsZXJyb3JzOltdfX19Y2FzZSBsLlRZUEVfUkVGUkVTSDp7cmV0dXJuey4uLmUsYnVpbGRFcnJvcjpudWxsLGVycm9yczplLnJlZnJlc2hTdGF0ZS50eXBlPT09XCJwZW5kaW5nXCI/ZS5yZWZyZXNoU3RhdGUuZXJyb3JzOltdLHJlZnJlc2hTdGF0ZTp7dHlwZTpcImlkbGVcIn19fWNhc2UgbC5UWVBFX1VOSEFORExFRF9FUlJPUjpjYXNlIGwuVFlQRV9VTkhBTkRMRURfUkVKRUNUSU9OOntzd2l0Y2goZS5yZWZyZXNoU3RhdGUudHlwZSl7Y2FzZVwiaWRsZVwiOntyZXR1cm57Li4uZSxuZXh0SWQ6ZS5uZXh0SWQrMSxlcnJvcnM6cHVzaEVycm9yRmlsdGVyRHVwbGljYXRlcyhlLmVycm9ycyx7aWQ6ZS5uZXh0SWQsZXZlbnQ6dH0pfX1jYXNlXCJwZW5kaW5nXCI6e3JldHVybnsuLi5lLG5leHRJZDplLm5leHRJZCsxLHJlZnJlc2hTdGF0ZTp7Li4uZS5yZWZyZXNoU3RhdGUsZXJyb3JzOnB1c2hFcnJvckZpbHRlckR1cGxpY2F0ZXMoZS5yZWZyZXNoU3RhdGUuZXJyb3JzLHtpZDplLm5leHRJZCxldmVudDp0fSl9fX1kZWZhdWx0OmNvbnN0IHI9ZS5yZWZyZXNoU3RhdGU7cmV0dXJuIGV9fWRlZmF1bHQ6e2NvbnN0IHI9dDtyZXR1cm4gZX19fWNvbnN0IHNob3VsZFByZXZlbnREaXNwbGF5PShlLHQpPT57aWYoIXR8fCFlKXtyZXR1cm4gZmFsc2V9cmV0dXJuIHQuaW5jbHVkZXMoZSl9O2NvbnN0IGI9ZnVuY3Rpb24gUmVhY3REZXZPdmVybGF5KHtjaGlsZHJlbjplLHByZXZlbnREaXNwbGF5OnQsZ2xvYmFsT3ZlcmxheTpyfSl7Y29uc3RbbixvXT1pLnVzZVJlZHVjZXIocmVkdWNlcix7bmV4dElkOjEsYnVpbGRFcnJvcjpudWxsLGVycm9yczpbXSxyZWZyZXNoU3RhdGU6e3R5cGU6XCJpZGxlXCJ9fSk7aS51c2VFZmZlY3QoKCgpPT57bC5vbihvKTtyZXR1cm4gZnVuY3Rpb24oKXtsLm9mZihvKX19KSxbb10pO2NvbnN0IGE9aS51c2VDYWxsYmFjaygoKGUsdCk9Pnt9KSxbXSk7Y29uc3QgYj1uLmJ1aWxkRXJyb3IhPW51bGw7Y29uc3Qgdj1Cb29sZWFuKG4uZXJyb3JzLmxlbmd0aCk7Y29uc3QgZz1iP1wiYnVpbGRcIjp2P1wicnVudGltZVwiOm51bGw7Y29uc3QgaD1nIT09bnVsbDtyZXR1cm4gaS5jcmVhdGVFbGVtZW50KGkuRnJhZ21lbnQsbnVsbCxpLmNyZWF0ZUVsZW1lbnQoZC5FcnJvckJvdW5kYXJ5LHtnbG9iYWxPdmVybGF5OnIsaXNNb3VudGVkOmgsb25FcnJvcjphfSxlPz9udWxsKSxoP2kuY3JlYXRlRWxlbWVudChzLlNoYWRvd1BvcnRhbCx7Z2xvYmFsT3ZlcmxheTpyfSxpLmNyZWF0ZUVsZW1lbnQocC5Dc3NSZXNldCxudWxsKSxpLmNyZWF0ZUVsZW1lbnQoZi5CYXNlLG51bGwpLGkuY3JlYXRlRWxlbWVudChtLkNvbXBvbmVudFN0eWxlcyxudWxsKSxzaG91bGRQcmV2ZW50RGlzcGxheShnLHQpP251bGw6Yj9pLmNyZWF0ZUVsZW1lbnQodS5CdWlsZEVycm9yLHttZXNzYWdlOm4uYnVpbGRFcnJvcn0pOnY/aS5jcmVhdGVFbGVtZW50KGMuRXJyb3JzLHtlcnJvcnM6bi5lcnJvcnN9KTp1bmRlZmluZWQpOnVuZGVmaW5lZCl9O3RbXCJkZWZhdWx0XCJdPWJ9LDg1MTpmdW5jdGlvbihlLHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTp0cnVlfSk7dC5vZmY9dC5vbj10LmVtaXQ9dC5UWVBFX1VOSEFORExFRF9SRUpFQ1RJT049dC5UWVBFX1VOSEFORExFRF9FUlJPUj10LlRZUEVfQkVGT1JFX1JFRlJFU0g9dC5UWVBFX1JFRlJFU0g9dC5UWVBFX0JVSUxEX0VSUk9SPXQuVFlQRV9CVUlMRF9PSz12b2lkIDA7dC5UWVBFX0JVSUxEX09LPVwiYnVpbGQtb2tcIjt0LlRZUEVfQlVJTERfRVJST1I9XCJidWlsZC1lcnJvclwiO3QuVFlQRV9SRUZSRVNIPVwiZmFzdC1yZWZyZXNoXCI7dC5UWVBFX0JFRk9SRV9SRUZSRVNIPVwiYmVmb3JlLWZhc3QtcmVmcmVzaFwiO3QuVFlQRV9VTkhBTkRMRURfRVJST1I9XCJ1bmhhbmRsZWQtZXJyb3JcIjt0LlRZUEVfVU5IQU5ETEVEX1JFSkVDVElPTj1cInVuaGFuZGxlZC1yZWplY3Rpb25cIjtsZXQgcj1uZXcgU2V0O2xldCBuPVtdO2Z1bmN0aW9uIGRyYWluKCl7c2V0VGltZW91dCgoZnVuY3Rpb24oKXt3aGlsZShCb29sZWFuKG4ubGVuZ3RoKSYmQm9vbGVhbihyLnNpemUpKXtjb25zdCBlPW4uc2hpZnQoKTtyLmZvckVhY2goKHQ9PnQoZSkpKX19KSwxKX1mdW5jdGlvbiBlbWl0KGUpe24ucHVzaChPYmplY3QuZnJlZXplKHsuLi5lfSkpO2RyYWluKCl9dC5lbWl0PWVtaXQ7ZnVuY3Rpb24gb24oZSl7aWYoci5oYXMoZSkpe3JldHVybiBmYWxzZX1yLmFkZChlKTtkcmFpbigpO3JldHVybiB0cnVlfXQub249b247ZnVuY3Rpb24gb2ZmKGUpe2lmKHIuaGFzKGUpKXtyLmRlbGV0ZShlKTtyZXR1cm4gdHJ1ZX1yZXR1cm4gZmFsc2V9dC5vZmY9b2ZmfSw5ODc6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQscixuKXtpZihuPT09dW5kZWZpbmVkKW49cjt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQscik7aWYoIW98fChcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKSl7bz17ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiB0W3JdfX19T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbixvKX06ZnVuY3Rpb24oZSx0LHIsbil7aWYobj09PXVuZGVmaW5lZCluPXI7ZVtuXT10W3JdfSk7dmFyIG89dGhpcyYmdGhpcy5fX3NldE1vZHVsZURlZmF1bHR8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJkZWZhdWx0XCIse2VudW1lcmFibGU6dHJ1ZSx2YWx1ZTp0fSl9OmZ1bmN0aW9uKGUsdCl7ZVtcImRlZmF1bHRcIl09dH0pO3ZhciBhPXRoaXMmJnRoaXMuX19pbXBvcnRTdGFyfHxmdW5jdGlvbihlKXtpZihlJiZlLl9fZXNNb2R1bGUpcmV0dXJuIGU7dmFyIHQ9e307aWYoZSE9bnVsbClmb3IodmFyIHIgaW4gZSlpZihyIT09XCJkZWZhdWx0XCImJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpKW4odCxlLHIpO28odCxlKTtyZXR1cm4gdH07dmFyIGk9dGhpcyYmdGhpcy5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOnRydWV9KTt0LkNvZGVGcmFtZT12b2lkIDA7Y29uc3QgbD1pKHIoOTk3KSk7Y29uc3Qgcz1hKHIoNTIyKSk7Y29uc3QgdT1pKHIoNTE4KSk7Y29uc3QgYz1yKDUwNCk7Y29uc3QgZD1mdW5jdGlvbiBDb2RlRnJhbWUoe3N0YWNrRnJhbWU6ZSxjb2RlRnJhbWU6dH0pe2NvbnN0IHI9cy51c2VNZW1vKCgoKT0+e2NvbnN0IGU9dC5zcGxpdCgvXFxyP1xcbi9nKTtjb25zdCByPWUubWFwKChlPT4vXj4/ICtcXGQrICtcXHwgWyBdKy8uZXhlYygoMCx1LmRlZmF1bHQpKGUpKT09PW51bGw/bnVsbDovXj4/ICtcXGQrICtcXHwgKCAqKS8uZXhlYygoMCx1LmRlZmF1bHQpKGUpKSkpLmZpbHRlcihCb29sZWFuKS5tYXAoKGU9PmUucG9wKCkpKS5yZWR1Y2UoKChlLHQpPT5pc05hTihlKT90Lmxlbmd0aDpNYXRoLm1pbihlLHQubGVuZ3RoKSksTmFOKTtpZihyPjEpe2NvbnN0IHQ9XCIgXCIucmVwZWF0KHIpO3JldHVybiBlLm1hcCgoKGUscik9Pn4ocj1lLmluZGV4T2YoXCJ8XCIpKT9lLnN1YnN0cmluZygwLHIpK2Uuc3Vic3RyaW5nKHIpLnJlcGxhY2UodCxcIlwiKTplKSkuam9pbihcIlxcblwiKX1yZXR1cm4gZS5qb2luKFwiXFxuXCIpfSksW3RdKTtjb25zdCBuPXMudXNlTWVtbygoKCk9PmwuZGVmYXVsdC5hbnNpVG9Kc29uKHIse2pzb246dHJ1ZSx1c2VfY2xhc3Nlczp0cnVlLHJlbW92ZV9lbXB0eTp0cnVlfSkpLFtyXSk7Y29uc3Qgbz1zLnVzZUNhbGxiYWNrKCgoKT0+e2NvbnN0IHQ9bmV3IFVSTFNlYXJjaFBhcmFtcztmb3IoY29uc3QgciBpbiBlKXt0LmFwcGVuZChyLChlW3JdPz9cIlwiKS50b1N0cmluZygpKX1zZWxmLmZldGNoKGAke3Byb2Nlc3MuZW52Ll9fTkVYVF9ST1VURVJfQkFTRVBBVEh8fFwiXCJ9L19fbmV4dGpzX2xhdW5jaC1lZGl0b3I/JHt0LnRvU3RyaW5nKCl9YCkudGhlbigoKCk9Pnt9KSwoKCk9Pntjb25zb2xlLmVycm9yKFwiVGhlcmUgd2FzIGFuIGlzc3VlIG9wZW5pbmcgdGhpcyBjb2RlIGluIHlvdXIgZWRpdG9yLlwiKX0pKX0pLFtlXSk7cmV0dXJuIHMuY3JlYXRlRWxlbWVudChcImRpdlwiLHtcImRhdGEtbmV4dGpzLWNvZGVmcmFtZVwiOnRydWV9LHMuY3JlYXRlRWxlbWVudChcImRpdlwiLG51bGwscy5jcmVhdGVFbGVtZW50KFwicFwiLHtyb2xlOlwibGlua1wiLG9uQ2xpY2s6byx0YWJJbmRleDoxLHRpdGxlOlwiQ2xpY2sgdG8gb3BlbiBpbiB5b3VyIGVkaXRvclwifSxzLmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsbnVsbCwoMCxjLmdldEZyYW1lU291cmNlKShlKSxcIiBAIFwiLGUubWV0aG9kTmFtZSkscy5jcmVhdGVFbGVtZW50KFwic3ZnXCIse3htbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIix2aWV3Qm94OlwiMCAwIDI0IDI0XCIsZmlsbDpcIm5vbmVcIixzdHJva2U6XCJjdXJyZW50Q29sb3JcIixzdHJva2VXaWR0aDpcIjJcIixzdHJva2VMaW5lY2FwOlwicm91bmRcIixzdHJva2VMaW5lam9pbjpcInJvdW5kXCJ9LHMuY3JlYXRlRWxlbWVudChcInBhdGhcIix7ZDpcIk0xOCAxM3Y2YTIgMiAwIDAgMS0yIDJINWEyIDIgMCAwIDEtMi0yVjhhMiAyIDAgMCAxIDItMmg2XCJ9KSxzLmNyZWF0ZUVsZW1lbnQoXCJwb2x5bGluZVwiLHtwb2ludHM6XCIxNSAzIDIxIDMgMjEgOVwifSkscy5jcmVhdGVFbGVtZW50KFwibGluZVwiLHt4MTpcIjEwXCIseTE6XCIxNFwiLHgyOlwiMjFcIix5MjpcIjNcIn0pKSkpLHMuY3JlYXRlRWxlbWVudChcInByZVwiLG51bGwsbi5tYXAoKChlLHQpPT5zLmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIse2tleTpgZnJhbWUtJHt0fWAsc3R5bGU6e2NvbG9yOmUuZmc/YHZhcigtLWNvbG9yLSR7ZS5mZ30pYDp1bmRlZmluZWQsLi4uZS5kZWNvcmF0aW9uPT09XCJib2xkXCI/e2ZvbnRXZWlnaHQ6ODAwfTplLmRlY29yYXRpb249PT1cIml0YWxpY1wiP3tmb250U3R5bGU6XCJpdGFsaWNcIn06dW5kZWZpbmVkfX0sZS5jb250ZW50KSkpKSl9O3QuQ29kZUZyYW1lPWR9LDQxMzpmdW5jdGlvbihlLHQscil7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOnRydWV9KTt0LkNvZGVGcmFtZT12b2lkIDA7dmFyIG49cig5ODcpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiQ29kZUZyYW1lXCIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbi5Db2RlRnJhbWV9fSl9LDM5OTpmdW5jdGlvbihlLHQscil7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOnRydWV9KTt0LnN0eWxlcz12b2lkIDA7Y29uc3Qgbj1yKDkxMCk7Y29uc3Qgbz0oMCxuLm5vb3ApYFxuICBbZGF0YS1uZXh0anMtY29kZWZyYW1lXSB7XG4gICAgb3ZlcmZsb3c6IGF1dG87XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc2l6ZS1nYXAtaGFsZik7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItYW5zaS1iZyk7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLWFuc2ktZmcpO1xuICB9XG4gIFtkYXRhLW5leHRqcy1jb2RlZnJhbWVdOjpzZWxlY3Rpb24sXG4gIFtkYXRhLW5leHRqcy1jb2RlZnJhbWVdICo6OnNlbGVjdGlvbiB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItYW5zaS1zZWxlY3Rpb24pO1xuICB9XG4gIFtkYXRhLW5leHRqcy1jb2RlZnJhbWVdICoge1xuICAgIGNvbG9yOiBpbmhlcml0O1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LXN0YWNrLW1vbm9zcGFjZSk7XG4gIH1cblxuICBbZGF0YS1uZXh0anMtY29kZWZyYW1lXSA+ICoge1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiBjYWxjKHZhcigtLXNpemUtZ2FwKSArIHZhcigtLXNpemUtZ2FwLWhhbGYpKVxuICAgICAgY2FsYyh2YXIoLS1zaXplLWdhcC1kb3VibGUpICsgdmFyKC0tc2l6ZS1nYXAtaGFsZikpO1xuICB9XG4gIFtkYXRhLW5leHRqcy1jb2RlZnJhbWVdID4gZGl2IHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgd2lkdGg6IGF1dG87XG4gICAgbWluLXdpZHRoOiAxMDAlO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1jb2xvci1hbnNpLWJyaWdodC1ibGFjayk7XG4gIH1cbiAgW2RhdGEtbmV4dGpzLWNvZGVmcmFtZV0gPiBkaXYgPiBwIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBtYXJnaW46IDA7XG4gIH1cbiAgW2RhdGEtbmV4dGpzLWNvZGVmcmFtZV0gPiBkaXYgPiBwOmhvdmVyIHtcbiAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZSBkb3R0ZWQ7XG4gIH1cbiAgW2RhdGEtbmV4dGpzLWNvZGVmcmFtZV0gZGl2ID4gcCA+IHN2ZyB7XG4gICAgd2lkdGg6IGF1dG87XG4gICAgaGVpZ2h0OiAxZW07XG4gICAgbWFyZ2luLWxlZnQ6IDhweDtcbiAgfVxuICBbZGF0YS1uZXh0anMtY29kZWZyYW1lXSBkaXYgPiBwcmUge1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB9XG5gO3Quc3R5bGVzPW99LDYxNjpmdW5jdGlvbihlLHQscil7dmFyIG49dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxyLG4pe2lmKG49PT11bmRlZmluZWQpbj1yO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxyKTtpZighb3x8KFwiZ2V0XCJpbiBvPyF0Ll9fZXNNb2R1bGU6by53cml0YWJsZXx8by5jb25maWd1cmFibGUpKXtvPXtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbcl19fX1PYmplY3QuZGVmaW5lUHJvcGVydHkoZSxuLG8pfTpmdW5jdGlvbihlLHQscixuKXtpZihuPT09dW5kZWZpbmVkKW49cjtlW25dPXRbcl19KTt2YXIgbz10aGlzJiZ0aGlzLl9fc2V0TW9kdWxlRGVmYXVsdHx8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcImRlZmF1bHRcIix7ZW51bWVyYWJsZTp0cnVlLHZhbHVlOnR9KX06ZnVuY3Rpb24oZSx0KXtlW1wiZGVmYXVsdFwiXT10fSk7dmFyIGE9dGhpcyYmdGhpcy5fX2ltcG9ydFN0YXJ8fGZ1bmN0aW9uKGUpe2lmKGUmJmUuX19lc01vZHVsZSlyZXR1cm4gZTt2YXIgdD17fTtpZihlIT1udWxsKWZvcih2YXIgciBpbiBlKWlmKHIhPT1cImRlZmF1bHRcIiYmT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikpbih0LGUscik7byh0LGUpO3JldHVybiB0fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6dHJ1ZX0pO3QuRGlhbG9nPXZvaWQgMDtjb25zdCBpPWEocig1MjIpKTtjb25zdCBsPXIoMTY5KTtjb25zdCBzPWZ1bmN0aW9uIERpYWxvZyh7Y2hpbGRyZW46ZSx0eXBlOnQsb25DbG9zZTpyLC4uLm59KXtjb25zdFtvLGFdPWkudXNlU3RhdGUobnVsbCk7Y29uc3Rbcyx1XT1pLnVzZVN0YXRlKHR5cGVvZiBkb2N1bWVudCE9PVwidW5kZWZpbmVkXCImJmRvY3VtZW50Lmhhc0ZvY3VzKCk/XCJkaWFsb2dcIjp1bmRlZmluZWQpO2NvbnN0IGM9aS51c2VDYWxsYmFjaygoZT0+e2EoZSl9KSxbXSk7KDAsbC51c2VPbkNsaWNrT3V0c2lkZSkobyxyKTtpLnVzZUVmZmVjdCgoKCk9PntpZihvPT1udWxsKXtyZXR1cm59Y29uc3QgZT1vLmdldFJvb3ROb2RlKCk7aWYoIShlIGluc3RhbmNlb2YgU2hhZG93Um9vdCkpe3JldHVybn1jb25zdCB0PWU7ZnVuY3Rpb24gaGFuZGxlcihlKXtjb25zdCByPXQuYWN0aXZlRWxlbWVudDtpZihlLmtleT09PVwiRW50ZXJcIiYmciBpbnN0YW5jZW9mIEhUTUxFbGVtZW50JiZyLmdldEF0dHJpYnV0ZShcInJvbGVcIik9PT1cImxpbmtcIil7ZS5wcmV2ZW50RGVmYXVsdCgpO2Uuc3RvcFByb3BhZ2F0aW9uKCk7ci5jbGljaygpfX1mdW5jdGlvbiBoYW5kbGVGb2N1cygpe3UoZG9jdW1lbnQuaGFzRm9jdXMoKT9cImRpYWxvZ1wiOnVuZGVmaW5lZCl9dC5hZGRFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLGhhbmRsZXIpO3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwiZm9jdXNcIixoYW5kbGVGb2N1cyk7d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJibHVyXCIsaGFuZGxlRm9jdXMpO3JldHVybigpPT57dC5yZW1vdmVFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLGhhbmRsZXIpO3dpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwiZm9jdXNcIixoYW5kbGVGb2N1cyk7d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJibHVyXCIsaGFuZGxlRm9jdXMpfX0pLFtvXSk7cmV0dXJuIGkuY3JlYXRlRWxlbWVudChcImRpdlwiLHtyZWY6YyxcImRhdGEtbmV4dGpzLWRpYWxvZ1wiOnRydWUsdGFiSW5kZXg6LTEscm9sZTpzLFwiYXJpYS1sYWJlbGxlZGJ5XCI6bltcImFyaWEtbGFiZWxsZWRieVwiXSxcImFyaWEtZGVzY3JpYmVkYnlcIjpuW1wiYXJpYS1kZXNjcmliZWRieVwiXSxcImFyaWEtbW9kYWxcIjpcInRydWVcIn0saS5jcmVhdGVFbGVtZW50KFwiZGl2XCIse1wiZGF0YS1uZXh0anMtZGlhbG9nLWJhbm5lclwiOnRydWUsY2xhc3NOYW1lOmBiYW5uZXItJHt0fWB9KSxlKX07dC5EaWFsb2c9c30sMTE6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQscixuKXtpZihuPT09dW5kZWZpbmVkKW49cjt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQscik7aWYoIW98fChcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKSl7bz17ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiB0W3JdfX19T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbixvKX06ZnVuY3Rpb24oZSx0LHIsbil7aWYobj09PXVuZGVmaW5lZCluPXI7ZVtuXT10W3JdfSk7dmFyIG89dGhpcyYmdGhpcy5fX3NldE1vZHVsZURlZmF1bHR8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJkZWZhdWx0XCIse2VudW1lcmFibGU6dHJ1ZSx2YWx1ZTp0fSl9OmZ1bmN0aW9uKGUsdCl7ZVtcImRlZmF1bHRcIl09dH0pO3ZhciBhPXRoaXMmJnRoaXMuX19pbXBvcnRTdGFyfHxmdW5jdGlvbihlKXtpZihlJiZlLl9fZXNNb2R1bGUpcmV0dXJuIGU7dmFyIHQ9e307aWYoZSE9bnVsbClmb3IodmFyIHIgaW4gZSlpZihyIT09XCJkZWZhdWx0XCImJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpKW4odCxlLHIpO28odCxlKTtyZXR1cm4gdH07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOnRydWV9KTt0LkRpYWxvZ0JvZHk9dm9pZCAwO2NvbnN0IGk9YShyKDUyMikpO2NvbnN0IGw9ZnVuY3Rpb24gRGlhbG9nQm9keSh7Y2hpbGRyZW46ZSxjbGFzc05hbWU6dH0pe3JldHVybiBpLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIix7XCJkYXRhLW5leHRqcy1kaWFsb2ctYm9keVwiOnRydWUsY2xhc3NOYW1lOnR9LGUpfTt0LkRpYWxvZ0JvZHk9bH0sOTkxOmZ1bmN0aW9uKGUsdCxyKXt2YXIgbj10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0LHIsbil7aWYobj09PXVuZGVmaW5lZCluPXI7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LHIpO2lmKCFvfHwoXCJnZXRcImluIG8/IXQuX19lc01vZHVsZTpvLndyaXRhYmxlfHxvLmNvbmZpZ3VyYWJsZSkpe289e2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtyXX19fU9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG4sbyl9OmZ1bmN0aW9uKGUsdCxyLG4pe2lmKG49PT11bmRlZmluZWQpbj1yO2Vbbl09dFtyXX0pO3ZhciBvPXRoaXMmJnRoaXMuX19zZXRNb2R1bGVEZWZhdWx0fHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiZGVmYXVsdFwiLHtlbnVtZXJhYmxlOnRydWUsdmFsdWU6dH0pfTpmdW5jdGlvbihlLHQpe2VbXCJkZWZhdWx0XCJdPXR9KTt2YXIgYT10aGlzJiZ0aGlzLl9faW1wb3J0U3Rhcnx8ZnVuY3Rpb24oZSl7aWYoZSYmZS5fX2VzTW9kdWxlKXJldHVybiBlO3ZhciB0PXt9O2lmKGUhPW51bGwpZm9yKHZhciByIGluIGUpaWYociE9PVwiZGVmYXVsdFwiJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSluKHQsZSxyKTtvKHQsZSk7cmV0dXJuIHR9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTp0cnVlfSk7dC5EaWFsb2dDb250ZW50PXZvaWQgMDtjb25zdCBpPWEocig1MjIpKTtjb25zdCBsPWZ1bmN0aW9uIERpYWxvZ0NvbnRlbnQoe2NoaWxkcmVuOmUsY2xhc3NOYW1lOnR9KXtyZXR1cm4gaS5jcmVhdGVFbGVtZW50KFwiZGl2XCIse1wiZGF0YS1uZXh0anMtZGlhbG9nLWNvbnRlbnRcIjp0cnVlLGNsYXNzTmFtZTp0fSxlKX07dC5EaWFsb2dDb250ZW50PWx9LDM0MjpmdW5jdGlvbihlLHQscil7dmFyIG49dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxyLG4pe2lmKG49PT11bmRlZmluZWQpbj1yO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxyKTtpZighb3x8KFwiZ2V0XCJpbiBvPyF0Ll9fZXNNb2R1bGU6by53cml0YWJsZXx8by5jb25maWd1cmFibGUpKXtvPXtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbcl19fX1PYmplY3QuZGVmaW5lUHJvcGVydHkoZSxuLG8pfTpmdW5jdGlvbihlLHQscixuKXtpZihuPT09dW5kZWZpbmVkKW49cjtlW25dPXRbcl19KTt2YXIgbz10aGlzJiZ0aGlzLl9fc2V0TW9kdWxlRGVmYXVsdHx8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcImRlZmF1bHRcIix7ZW51bWVyYWJsZTp0cnVlLHZhbHVlOnR9KX06ZnVuY3Rpb24oZSx0KXtlW1wiZGVmYXVsdFwiXT10fSk7dmFyIGE9dGhpcyYmdGhpcy5fX2ltcG9ydFN0YXJ8fGZ1bmN0aW9uKGUpe2lmKGUmJmUuX19lc01vZHVsZSlyZXR1cm4gZTt2YXIgdD17fTtpZihlIT1udWxsKWZvcih2YXIgciBpbiBlKWlmKHIhPT1cImRlZmF1bHRcIiYmT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikpbih0LGUscik7byh0LGUpO3JldHVybiB0fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6dHJ1ZX0pO3QuRGlhbG9nSGVhZGVyPXZvaWQgMDtjb25zdCBpPWEocig1MjIpKTtjb25zdCBsPWZ1bmN0aW9uIERpYWxvZ0hlYWRlcih7Y2hpbGRyZW46ZSxjbGFzc05hbWU6dH0pe3JldHVybiBpLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIix7XCJkYXRhLW5leHRqcy1kaWFsb2ctaGVhZGVyXCI6dHJ1ZSxjbGFzc05hbWU6dH0sZSl9O3QuRGlhbG9nSGVhZGVyPWx9LDY1MTpmdW5jdGlvbihlLHQscil7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOnRydWV9KTt0LnN0eWxlcz10LkRpYWxvZ0hlYWRlcj10LkRpYWxvZ0NvbnRlbnQ9dC5EaWFsb2dCb2R5PXQuRGlhbG9nPXZvaWQgMDt2YXIgbj1yKDYxNik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJEaWFsb2dcIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBuLkRpYWxvZ319KTt2YXIgbz1yKDExKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIkRpYWxvZ0JvZHlcIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBvLkRpYWxvZ0JvZHl9fSk7dmFyIGE9cig5OTEpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiRGlhbG9nQ29udGVudFwiLHtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGEuRGlhbG9nQ29udGVudH19KTt2YXIgaT1yKDM0Mik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJEaWFsb2dIZWFkZXJcIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBpLkRpYWxvZ0hlYWRlcn19KTt2YXIgbD1yKDIxMyk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJzdHlsZXNcIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBsLnN0eWxlc319KX0sMjEzOmZ1bmN0aW9uKGUsdCxyKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6dHJ1ZX0pO3Quc3R5bGVzPXZvaWQgMDtjb25zdCBuPXIoOTEwKTtjb25zdCBvPSgwLG4ubm9vcClgXG4gIFtkYXRhLW5leHRqcy1kaWFsb2ddIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgIG91dGxpbmU6IG5vbmU7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmFja2dyb3VuZCk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc2l6ZS1nYXApO1xuICAgIGJveC1zaGFkb3c6IDAgdmFyKC0tc2l6ZS1nYXAtaGFsZikgdmFyKC0tc2l6ZS1nYXAtZG91YmxlKVxuICAgICAgcmdiYSgwLCAwLCAwLCAwLjI1KTtcbiAgICBtYXgtaGVpZ2h0OiBjYWxjKDEwMCUgLSA1NnB4KTtcbiAgICBvdmVyZmxvdy15OiBoaWRkZW47XG4gIH1cblxuICBAbWVkaWEgKG1heC1oZWlnaHQ6IDgxMnB4KSB7XG4gICAgW2RhdGEtbmV4dGpzLWRpYWxvZy1vdmVybGF5XSB7XG4gICAgICBtYXgtaGVpZ2h0OiBjYWxjKDEwMCUgLSAxNXB4KTtcbiAgICB9XG4gIH1cblxuICBAbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpIHtcbiAgICBbZGF0YS1uZXh0anMtZGlhbG9nXSB7XG4gICAgICBtYXgtd2lkdGg6IDU0MHB4O1xuICAgICAgYm94LXNoYWRvdzogMCB2YXIoLS1zaXplLWdhcCkgdmFyKC0tc2l6ZS1nYXAtcXVhZCkgcmdiYSgwLCAwLCAwLCAwLjI1KTtcbiAgICB9XG4gIH1cblxuICBAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgICBbZGF0YS1uZXh0anMtZGlhbG9nXSB7XG4gICAgICBtYXgtd2lkdGg6IDcyMHB4O1xuICAgIH1cbiAgfVxuXG4gIEBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkge1xuICAgIFtkYXRhLW5leHRqcy1kaWFsb2ddIHtcbiAgICAgIG1heC13aWR0aDogOTYwcHg7XG4gICAgfVxuICB9XG5cbiAgW2RhdGEtbmV4dGpzLWRpYWxvZy1iYW5uZXJdIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIH1cbiAgW2RhdGEtbmV4dGpzLWRpYWxvZy1iYW5uZXJdLmJhbm5lci13YXJuaW5nIHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLWNvbG9yLWFuc2kteWVsbG93KTtcbiAgfVxuICBbZGF0YS1uZXh0anMtZGlhbG9nLWJhbm5lcl0uYmFubmVyLWVycm9yIHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLWNvbG9yLWFuc2ktcmVkKTtcbiAgfVxuXG4gIFtkYXRhLW5leHRqcy1kaWFsb2ctYmFubmVyXTo6YWZ0ZXIge1xuICAgIHotaW5kZXg6IDI7XG4gICAgY29udGVudDogJyc7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICByaWdodDogMDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICAvKiBiYW5uZXIgd2lkdGg6ICovXG4gICAgYm9yZGVyLXRvcC13aWR0aDogdmFyKC0tc2l6ZS1nYXAtaGFsZik7XG4gICAgYm9yZGVyLWJvdHRvbS13aWR0aDogMDtcbiAgICBib3JkZXItdG9wLXN0eWxlOiBzb2xpZDtcbiAgICBib3JkZXItYm90dG9tLXN0eWxlOiBzb2xpZDtcbiAgICBib3JkZXItdG9wLWNvbG9yOiBpbmhlcml0O1xuICAgIGJvcmRlci1ib3R0b20tY29sb3I6IHRyYW5zcGFyZW50O1xuICB9XG5cbiAgW2RhdGEtbmV4dGpzLWRpYWxvZy1jb250ZW50XSB7XG4gICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgbWFyZ2luOiAwO1xuICAgIC8qIGNhbGMocGFkZGluZyArIGJhbm5lciB3aWR0aCBvZmZzZXQpICovXG4gICAgcGFkZGluZzogY2FsYyh2YXIoLS1zaXplLWdhcC1kb3VibGUpICsgdmFyKC0tc2l6ZS1nYXAtaGFsZikpXG4gICAgICB2YXIoLS1zaXplLWdhcC1kb3VibGUpO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIH1cbiAgW2RhdGEtbmV4dGpzLWRpYWxvZy1jb250ZW50XSA+IFtkYXRhLW5leHRqcy1kaWFsb2ctaGVhZGVyXSB7XG4gICAgZmxleC1zaHJpbms6IDA7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc2l6ZS1nYXAtZG91YmxlKTtcbiAgfVxuICBbZGF0YS1uZXh0anMtZGlhbG9nLWNvbnRlbnRdID4gW2RhdGEtbmV4dGpzLWRpYWxvZy1ib2R5XSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGZsZXg6IDEgMSBhdXRvO1xuICB9XG5gO3Quc3R5bGVzPW99LDgzMTpmdW5jdGlvbihlLHQscil7dmFyIG49dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxyLG4pe2lmKG49PT11bmRlZmluZWQpbj1yO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxyKTtpZighb3x8KFwiZ2V0XCJpbiBvPyF0Ll9fZXNNb2R1bGU6by53cml0YWJsZXx8by5jb25maWd1cmFibGUpKXtvPXtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbcl19fX1PYmplY3QuZGVmaW5lUHJvcGVydHkoZSxuLG8pfTpmdW5jdGlvbihlLHQscixuKXtpZihuPT09dW5kZWZpbmVkKW49cjtlW25dPXRbcl19KTt2YXIgbz10aGlzJiZ0aGlzLl9fc2V0TW9kdWxlRGVmYXVsdHx8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcImRlZmF1bHRcIix7ZW51bWVyYWJsZTp0cnVlLHZhbHVlOnR9KX06ZnVuY3Rpb24oZSx0KXtlW1wiZGVmYXVsdFwiXT10fSk7dmFyIGE9dGhpcyYmdGhpcy5fX2ltcG9ydFN0YXJ8fGZ1bmN0aW9uKGUpe2lmKGUmJmUuX19lc01vZHVsZSlyZXR1cm4gZTt2YXIgdD17fTtpZihlIT1udWxsKWZvcih2YXIgciBpbiBlKWlmKHIhPT1cImRlZmF1bHRcIiYmT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikpbih0LGUscik7byh0LGUpO3JldHVybiB0fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6dHJ1ZX0pO3QuTGVmdFJpZ2h0RGlhbG9nSGVhZGVyPXZvaWQgMDtjb25zdCBpPWEocig1MjIpKTtjb25zdCBsPXIoODY1KTtjb25zdCBzPWZ1bmN0aW9uIExlZnRSaWdodERpYWxvZ0hlYWRlcih7Y2hpbGRyZW46ZSxjbGFzc05hbWU6dCxwcmV2aW91czpyLG5leHQ6bixjbG9zZTpvfSl7Y29uc3QgYT1pLnVzZVJlZihudWxsKTtjb25zdCBzPWkudXNlUmVmKG51bGwpO2NvbnN0IHU9aS51c2VSZWYobnVsbCk7Y29uc3RbYyxkXT1pLnVzZVN0YXRlKG51bGwpO2NvbnN0IGY9aS51c2VDYWxsYmFjaygoZT0+e2QoZSl9KSxbXSk7aS51c2VFZmZlY3QoKCgpPT57aWYoYz09bnVsbCl7cmV0dXJufWNvbnN0IGU9Yy5nZXRSb290Tm9kZSgpO2NvbnN0IHQ9c2VsZi5kb2N1bWVudDtmdW5jdGlvbiBoYW5kbGVyKHQpe2lmKHQua2V5PT09XCJBcnJvd0xlZnRcIil7dC5zdG9wUHJvcGFnYXRpb24oKTtpZihhLmN1cnJlbnQpe2EuY3VycmVudC5mb2N1cygpfXImJnIoKX1lbHNlIGlmKHQua2V5PT09XCJBcnJvd1JpZ2h0XCIpe3Quc3RvcFByb3BhZ2F0aW9uKCk7aWYocy5jdXJyZW50KXtzLmN1cnJlbnQuZm9jdXMoKX1uJiZuKCl9ZWxzZSBpZih0LmtleT09PVwiRXNjYXBlXCIpe3Quc3RvcFByb3BhZ2F0aW9uKCk7aWYoZSBpbnN0YW5jZW9mIFNoYWRvd1Jvb3Qpe2NvbnN0IHQ9ZS5hY3RpdmVFbGVtZW50O2lmKHQmJnQhPT11LmN1cnJlbnQmJnQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCl7dC5ibHVyKCk7cmV0dXJufX1pZihvKXtvKCl9fX1lLmFkZEV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsaGFuZGxlcik7aWYoZSE9PXQpe3QuYWRkRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIixoYW5kbGVyKX1yZXR1cm4gZnVuY3Rpb24oKXtlLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsaGFuZGxlcik7aWYoZSE9PXQpe3QucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIixoYW5kbGVyKX19fSksW28sYyxuLHJdKTtpLnVzZUVmZmVjdCgoKCk9PntpZihjPT1udWxsKXtyZXR1cm59Y29uc3QgZT1jLmdldFJvb3ROb2RlKCk7aWYoZSBpbnN0YW5jZW9mIFNoYWRvd1Jvb3Qpe2NvbnN0IHQ9ZS5hY3RpdmVFbGVtZW50O2lmKHI9PW51bGwpe2lmKGEuY3VycmVudCYmdD09PWEuY3VycmVudCl7YS5jdXJyZW50LmJsdXIoKX19ZWxzZSBpZihuPT1udWxsKXtpZihzLmN1cnJlbnQmJnQ9PT1zLmN1cnJlbnQpe3MuY3VycmVudC5ibHVyKCl9fX19KSxbYyxuLHJdKTtyZXR1cm4gaS5jcmVhdGVFbGVtZW50KFwiZGl2XCIse1wiZGF0YS1uZXh0anMtZGlhbG9nLWxlZnQtcmlnaHRcIjp0cnVlLGNsYXNzTmFtZTp0fSxpLmNyZWF0ZUVsZW1lbnQoXCJuYXZcIix7cmVmOmZ9LGkuY3JlYXRlRWxlbWVudChcImJ1dHRvblwiLHtyZWY6YSx0eXBlOlwiYnV0dG9uXCIsZGlzYWJsZWQ6cj09bnVsbD90cnVlOnVuZGVmaW5lZCxcImFyaWEtZGlzYWJsZWRcIjpyPT1udWxsP3RydWU6dW5kZWZpbmVkLG9uQ2xpY2s6cj8/dW5kZWZpbmVkfSxpLmNyZWF0ZUVsZW1lbnQoXCJzdmdcIix7dmlld0JveDpcIjAgMCAxNCAxNFwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpLmNyZWF0ZUVsZW1lbnQoXCJ0aXRsZVwiLG51bGwsXCJwcmV2aW91c1wiKSxpLmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIse2Q6XCJNNi45OTk5NiAxLjE2NjY2TDEuMTY2NjMgNi45OTk5OUw2Ljk5OTk2IDEyLjgzMzNNMTIuODMzMyA2Ljk5OTk5SDEuOTk5OTZIMTIuODMzM1pcIixzdHJva2U6XCJjdXJyZW50Q29sb3JcIixzdHJva2VXaWR0aDpcIjJcIixzdHJva2VMaW5lY2FwOlwicm91bmRcIixzdHJva2VMaW5lam9pbjpcInJvdW5kXCJ9KSkpLGkuY3JlYXRlRWxlbWVudChcImJ1dHRvblwiLHtyZWY6cyx0eXBlOlwiYnV0dG9uXCIsZGlzYWJsZWQ6bj09bnVsbD90cnVlOnVuZGVmaW5lZCxcImFyaWEtZGlzYWJsZWRcIjpuPT1udWxsP3RydWU6dW5kZWZpbmVkLG9uQ2xpY2s6bj8/dW5kZWZpbmVkfSxpLmNyZWF0ZUVsZW1lbnQoXCJzdmdcIix7dmlld0JveDpcIjAgMCAxNCAxNFwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxpLmNyZWF0ZUVsZW1lbnQoXCJ0aXRsZVwiLG51bGwsXCJuZXh0XCIpLGkuY3JlYXRlRWxlbWVudChcInBhdGhcIix7ZDpcIk02Ljk5OTk2IDEuMTY2NjZMMTIuODMzMyA2Ljk5OTk5TDYuOTk5OTYgMTIuODMzM00xLjE2NjYzIDYuOTk5OTlIMTJIMS4xNjY2M1pcIixzdHJva2U6XCJjdXJyZW50Q29sb3JcIixzdHJva2VXaWR0aDpcIjJcIixzdHJva2VMaW5lY2FwOlwicm91bmRcIixzdHJva2VMaW5lam9pbjpcInJvdW5kXCJ9KSkpLFwiwqBcIixlKSxvP2kuY3JlYXRlRWxlbWVudChcImJ1dHRvblwiLHtcImRhdGEtbmV4dGpzLWVycm9ycy1kaWFsb2ctbGVmdC1yaWdodC1jbG9zZS1idXR0b25cIjp0cnVlLHJlZjp1LHR5cGU6XCJidXR0b25cIixvbkNsaWNrOm8sXCJhcmlhLWxhYmVsXCI6XCJDbG9zZVwifSxpLmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIse1wiYXJpYS1oaWRkZW5cIjpcInRydWVcIn0saS5jcmVhdGVFbGVtZW50KGwuQ2xvc2VJY29uLG51bGwpKSk6bnVsbCl9O3QuTGVmdFJpZ2h0RGlhbG9nSGVhZGVyPXN9LDczMjpmdW5jdGlvbihlLHQscil7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOnRydWV9KTt0LnN0eWxlcz10LkxlZnRSaWdodERpYWxvZ0hlYWRlcj12b2lkIDA7dmFyIG49cig4MzEpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiTGVmdFJpZ2h0RGlhbG9nSGVhZGVyXCIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbi5MZWZ0UmlnaHREaWFsb2dIZWFkZXJ9fSk7dmFyIG89cig1NDMpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwic3R5bGVzXCIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gby5zdHlsZXN9fSl9LDU0MzpmdW5jdGlvbihlLHQscil7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOnRydWV9KTt0LnN0eWxlcz12b2lkIDA7Y29uc3Qgbj1yKDkxMCk7Y29uc3Qgbz0oMCxuLm5vb3ApYFxuICBbZGF0YS1uZXh0anMtZGlhbG9nLWxlZnQtcmlnaHRdIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgYWxpZ24tY29udGVudDogY2VudGVyO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICB9XG4gIFtkYXRhLW5leHRqcy1kaWFsb2ctbGVmdC1yaWdodF0gPiBuYXYgPiBidXR0b24ge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cbiAgICB3aWR0aDogY2FsYyh2YXIoLS1zaXplLWdhcC1kb3VibGUpICsgdmFyKC0tc2l6ZS1nYXApKTtcbiAgICBoZWlnaHQ6IGNhbGModmFyKC0tc2l6ZS1nYXAtZG91YmxlKSArIHZhcigtLXNpemUtZ2FwKSk7XG4gICAgZm9udC1zaXplOiAwO1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgODUsIDg1LCAwLjEpO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1hbnNpLXJlZCk7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4yNXMgZWFzZTtcbiAgfVxuICBbZGF0YS1uZXh0anMtZGlhbG9nLWxlZnQtcmlnaHRdID4gbmF2ID4gYnV0dG9uID4gc3ZnIHtcbiAgICB3aWR0aDogYXV0bztcbiAgICBoZWlnaHQ6IGNhbGModmFyKC0tc2l6ZS1nYXApICsgdmFyKC0tc2l6ZS1nYXAtaGFsZikpO1xuICB9XG4gIFtkYXRhLW5leHRqcy1kaWFsb2ctbGVmdC1yaWdodF0gPiBuYXYgPiBidXR0b246aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCA4NSwgODUsIDAuMik7XG4gIH1cbiAgW2RhdGEtbmV4dGpzLWRpYWxvZy1sZWZ0LXJpZ2h0XSA+IG5hdiA+IGJ1dHRvbjpkaXNhYmxlZCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDg1LCA4NSwgMC4xKTtcbiAgICBjb2xvcjogcmdiYSgyNTUsIDg1LCA4NSwgMC40KTtcbiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICB9XG5cbiAgW2RhdGEtbmV4dGpzLWRpYWxvZy1sZWZ0LXJpZ2h0XSA+IG5hdiA+IGJ1dHRvbjpmaXJzdC1vZi10eXBlIHtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zaXplLWdhcC1oYWxmKSAwIDAgdmFyKC0tc2l6ZS1nYXAtaGFsZik7XG4gICAgbWFyZ2luLXJpZ2h0OiAxcHg7XG4gIH1cbiAgW2RhdGEtbmV4dGpzLWRpYWxvZy1sZWZ0LXJpZ2h0XSA+IG5hdiA+IGJ1dHRvbjpsYXN0LW9mLXR5cGUge1xuICAgIGJvcmRlci1yYWRpdXM6IDAgdmFyKC0tc2l6ZS1nYXAtaGFsZikgdmFyKC0tc2l6ZS1nYXAtaGFsZikgMDtcbiAgfVxuXG4gIFtkYXRhLW5leHRqcy1kaWFsb2ctbGVmdC1yaWdodF0gPiBidXR0b246bGFzdC1vZi10eXBlIHtcbiAgICBib3JkZXI6IDA7XG4gICAgcGFkZGluZzogMDtcblxuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIGFwcGVhcmFuY2U6IG5vbmU7XG5cbiAgICBvcGFjaXR5OiAwLjQ7XG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjI1cyBlYXNlO1xuXG4gICAgY29sb3I6IHZhcigtLWNvbG9yLWZvbnQpO1xuICB9XG4gIFtkYXRhLW5leHRqcy1kaWFsb2ctbGVmdC1yaWdodF0gPiBidXR0b246bGFzdC1vZi10eXBlOmhvdmVyIHtcbiAgICBvcGFjaXR5OiAwLjc7XG4gIH1cbmA7dC5zdHlsZXM9b30sMTc6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQscixuKXtpZihuPT09dW5kZWZpbmVkKW49cjt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQscik7aWYoIW98fChcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKSl7bz17ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiB0W3JdfX19T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbixvKX06ZnVuY3Rpb24oZSx0LHIsbil7aWYobj09PXVuZGVmaW5lZCluPXI7ZVtuXT10W3JdfSk7dmFyIG89dGhpcyYmdGhpcy5fX3NldE1vZHVsZURlZmF1bHR8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJkZWZhdWx0XCIse2VudW1lcmFibGU6dHJ1ZSx2YWx1ZTp0fSl9OmZ1bmN0aW9uKGUsdCl7ZVtcImRlZmF1bHRcIl09dH0pO3ZhciBhPXRoaXMmJnRoaXMuX19pbXBvcnRTdGFyfHxmdW5jdGlvbihlKXtpZihlJiZlLl9fZXNNb2R1bGUpcmV0dXJuIGU7dmFyIHQ9e307aWYoZSE9bnVsbClmb3IodmFyIHIgaW4gZSlpZihyIT09XCJkZWZhdWx0XCImJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpKW4odCxlLHIpO28odCxlKTtyZXR1cm4gdH07dmFyIGk9dGhpcyYmdGhpcy5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOnRydWV9KTt0Lk92ZXJsYXk9dm9pZCAwO2NvbnN0IGw9aShyKDk3NSkpO2NvbnN0IHM9YShyKDUyMikpO2NvbnN0IHU9cig4MDApO2NvbnN0IGM9ZnVuY3Rpb24gT3ZlcmxheSh7Y2xhc3NOYW1lOmUsY2hpbGRyZW46dCxmaXhlZDpyfSl7cy51c2VFZmZlY3QoKCgpPT57KDAsdS5sb2NrKSgpO3JldHVybigpPT57KDAsdS51bmxvY2spKCl9fSksW10pO2NvbnN0W24sb109cy51c2VTdGF0ZShudWxsKTtjb25zdCBhPXMudXNlQ2FsbGJhY2soKGU9PntvKGUpfSksW10pO3MudXNlRWZmZWN0KCgoKT0+e2lmKG49PW51bGwpe3JldHVybn1jb25zdCBlPSgwLGwuZGVmYXVsdCkoe2NvbnRleHQ6bn0pO3JldHVybigpPT57ZS5kaXNlbmdhZ2UoKX19KSxbbl0pO3JldHVybiBzLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIix7XCJkYXRhLW5leHRqcy1kaWFsb2ctb3ZlcmxheVwiOnRydWUsY2xhc3NOYW1lOmUscmVmOmF9LHMuY3JlYXRlRWxlbWVudChcImRpdlwiLHtcImRhdGEtbmV4dGpzLWRpYWxvZy1iYWNrZHJvcFwiOnRydWUsXCJkYXRhLW5leHRqcy1kaWFsb2ctYmFja2Ryb3AtZml4ZWRcIjpyP3RydWU6dW5kZWZpbmVkfSksdCl9O3QuT3ZlcmxheT1jfSw4MDA6ZnVuY3Rpb24oZSx0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6dHJ1ZX0pO3QudW5sb2NrPXQubG9jaz12b2lkIDA7bGV0IHI7bGV0IG47bGV0IG89MDtmdW5jdGlvbiBsb2NrKCl7c2V0VGltZW91dCgoKCk9PntpZihvKys+MCl7cmV0dXJufWNvbnN0IGU9d2luZG93LmlubmVyV2lkdGgtZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoO2lmKGU+MCl7cj1kb2N1bWVudC5ib2R5LnN0eWxlLnBhZGRpbmdSaWdodDtkb2N1bWVudC5ib2R5LnN0eWxlLnBhZGRpbmdSaWdodD1gJHtlfXB4YH1uPWRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3c7ZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdz1cImhpZGRlblwifSkpfXQubG9jaz1sb2NrO2Z1bmN0aW9uIHVubG9jaygpe3NldFRpbWVvdXQoKCgpPT57aWYobz09PTB8fC0tbyE9PTApe3JldHVybn1pZihyIT09dW5kZWZpbmVkKXtkb2N1bWVudC5ib2R5LnN0eWxlLnBhZGRpbmdSaWdodD1yO3I9dW5kZWZpbmVkfWlmKG4hPT11bmRlZmluZWQpe2RvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3c9bjtuPXVuZGVmaW5lZH19KSl9dC51bmxvY2s9dW5sb2NrfSwyNzg6ZnVuY3Rpb24oZSx0LHIpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTp0cnVlfSk7dC5PdmVybGF5PXZvaWQgMDt2YXIgbj1yKDE3KTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIk92ZXJsYXlcIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBuLk92ZXJsYXl9fSl9LDk3NTpmdW5jdGlvbihlLHQscil7dmFyIG49dGhpcyYmdGhpcy5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOnRydWV9KTtjb25zdCBvPW4ocig3MDkpKTtjb25zdCBhPW4ocigyOTIpKTtmdW5jdGlvbiBub2RlQXJyYXkoZSl7aWYoIWUpe3JldHVybltdfWlmKEFycmF5LmlzQXJyYXkoZSkpe3JldHVybiBlfWlmKGUubm9kZVR5cGUhPT11bmRlZmluZWQpe3JldHVybltlXX1pZih0eXBlb2YgZT09PVwic3RyaW5nXCIpe2U9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChlKX1pZihlLmxlbmd0aCE9PXVuZGVmaW5lZCl7cmV0dXJuW10uc2xpY2UuY2FsbChlLDApfXRocm93IG5ldyBUeXBlRXJyb3IoXCJ1bmV4cGVjdGVkIGlucHV0IFwiK1N0cmluZyhlKSl9ZnVuY3Rpb24gY29udGV4dFRvRWxlbWVudChlKXt2YXIgdD1lLmNvbnRleHQscj1lLmxhYmVsLG49cj09PXVuZGVmaW5lZD9cImNvbnRleHQtdG8tZWxlbWVudFwiOnIsbz1lLnJlc29sdmVEb2N1bWVudCxhPWUuZGVmYXVsdFRvRG9jdW1lbnQ7dmFyIGk9bm9kZUFycmF5KHQpWzBdO2lmKG8mJmkmJmkubm9kZVR5cGU9PT1Ob2RlLkRPQ1VNRU5UX05PREUpe2k9aS5kb2N1bWVudEVsZW1lbnR9aWYoIWkmJmEpe3JldHVybiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnR9aWYoIWkpe3Rocm93IG5ldyBUeXBlRXJyb3IobitcIiByZXF1aXJlcyB2YWxpZCBvcHRpb25zLmNvbnRleHRcIil9aWYoaS5ub2RlVHlwZSE9PU5vZGUuRUxFTUVOVF9OT0RFJiZpLm5vZGVUeXBlIT09Tm9kZS5ET0NVTUVOVF9GUkFHTUVOVF9OT0RFKXt0aHJvdyBuZXcgVHlwZUVycm9yKG4rXCIgcmVxdWlyZXMgb3B0aW9ucy5jb250ZXh0IHRvIGJlIGFuIEVsZW1lbnRcIil9cmV0dXJuIGl9ZnVuY3Rpb24gZ2V0U2hhZG93SG9zdCgpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmYXJndW1lbnRzWzBdIT09dW5kZWZpbmVkP2FyZ3VtZW50c1swXTp7fSx0PWUuY29udGV4dDt2YXIgcj1jb250ZXh0VG9FbGVtZW50KHtsYWJlbDpcImdldC9zaGFkb3ctaG9zdFwiLGNvbnRleHQ6dH0pO3ZhciBuPW51bGw7d2hpbGUocil7bj1yO3I9ci5wYXJlbnROb2RlfWlmKG4ubm9kZVR5cGU9PT1uLkRPQ1VNRU5UX0ZSQUdNRU5UX05PREUmJm4uaG9zdCl7cmV0dXJuIG4uaG9zdH1yZXR1cm4gbnVsbH1mdW5jdGlvbiBnZXREb2N1bWVudChlKXtpZighZSl7cmV0dXJuIGRvY3VtZW50fWlmKGUubm9kZVR5cGU9PT1Ob2RlLkRPQ1VNRU5UX05PREUpe3JldHVybiBlfXJldHVybiBlLm93bmVyRG9jdW1lbnR8fGRvY3VtZW50fWZ1bmN0aW9uIGlzQWN0aXZlRWxlbWVudChlKXt2YXIgdD1jb250ZXh0VG9FbGVtZW50KHtsYWJlbDpcImlzL2FjdGl2ZS1lbGVtZW50XCIscmVzb2x2ZURvY3VtZW50OnRydWUsY29udGV4dDplfSk7dmFyIHI9Z2V0RG9jdW1lbnQodCk7aWYoci5hY3RpdmVFbGVtZW50PT09dCl7cmV0dXJuIHRydWV9dmFyIG49Z2V0U2hhZG93SG9zdCh7Y29udGV4dDp0fSk7aWYobiYmbi5zaGFkb3dSb290LmFjdGl2ZUVsZW1lbnQ9PT10KXtyZXR1cm4gdHJ1ZX1yZXR1cm4gZmFsc2V9ZnVuY3Rpb24gZ2V0UGFyZW50cygpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmYXJndW1lbnRzWzBdIT09dW5kZWZpbmVkP2FyZ3VtZW50c1swXTp7fSx0PWUuY29udGV4dDt2YXIgcj1bXTt2YXIgbj1jb250ZXh0VG9FbGVtZW50KHtsYWJlbDpcImdldC9wYXJlbnRzXCIsY29udGV4dDp0fSk7d2hpbGUobil7ci5wdXNoKG4pO249bi5wYXJlbnROb2RlO2lmKG4mJm4ubm9kZVR5cGUhPT1Ob2RlLkVMRU1FTlRfTk9ERSl7bj1udWxsfX1yZXR1cm4gcn12YXIgaT1bXCJtYXRjaGVzXCIsXCJ3ZWJraXRNYXRjaGVzU2VsZWN0b3JcIixcIm1vek1hdGNoZXNTZWxlY3RvclwiLFwibXNNYXRjaGVzU2VsZWN0b3JcIl07dmFyIGw9bnVsbDtmdW5jdGlvbiBmaW5kTWV0aG9kTmFtZShlKXtpLnNvbWUoKGZ1bmN0aW9uKHQpe2lmKCFlW3RdKXtyZXR1cm4gZmFsc2V9bD10O3JldHVybiB0cnVlfSkpfWZ1bmN0aW9uIGVsZW1lbnRNYXRjaGVzKGUsdCl7aWYoIWwpe2ZpbmRNZXRob2ROYW1lKGUpfXJldHVybiBlW2xdKHQpfXZhciBzPUpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoby5kZWZhdWx0KSk7dmFyIHU9cy5vcy5mYW1pbHl8fFwiXCI7dmFyIGM9dT09PVwiQW5kcm9pZFwiO3ZhciBkPXUuc2xpY2UoMCw3KT09PVwiV2luZG93c1wiO3ZhciBmPXU9PT1cIk9TIFhcIjt2YXIgbT11PT09XCJpT1NcIjt2YXIgcD1zLmxheW91dD09PVwiQmxpbmtcIjt2YXIgYj1zLmxheW91dD09PVwiR2Vja29cIjt2YXIgdj1zLmxheW91dD09PVwiVHJpZGVudFwiO3ZhciBnPXMubGF5b3V0PT09XCJFZGdlSFRNTFwiO3ZhciBoPXMubGF5b3V0PT09XCJXZWJLaXRcIjt2YXIgeT1wYXJzZUZsb2F0KHMudmVyc2lvbik7dmFyIHg9TWF0aC5mbG9vcih5KTtzLm1ham9yVmVyc2lvbj14O3MuaXM9e0FORFJPSUQ6YyxXSU5ET1dTOmQsT1NYOmYsSU9TOm0sQkxJTks6cCxHRUNLTzpiLFRSSURFTlQ6dixFREdFOmcsV0VCS0lUOmgsSUU5OnYmJng9PT05LElFMTA6diYmeD09PTEwLElFMTE6diYmeD09PTExfTtmdW5jdGlvbiBiZWZvcmUoKXt2YXIgZT17YWN0aXZlRWxlbWVudDpkb2N1bWVudC5hY3RpdmVFbGVtZW50LHdpbmRvd1Njcm9sbFRvcDp3aW5kb3cuc2Nyb2xsVG9wLHdpbmRvd1Njcm9sbExlZnQ6d2luZG93LnNjcm9sbExlZnQsYm9keVNjcm9sbFRvcDpkb2N1bWVudC5ib2R5LnNjcm9sbFRvcCxib2R5U2Nyb2xsTGVmdDpkb2N1bWVudC5ib2R5LnNjcm9sbExlZnR9O3ZhciB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJpZnJhbWVcIik7dC5zZXRBdHRyaWJ1dGUoXCJzdHlsZVwiLFwicG9zaXRpb246YWJzb2x1dGU7IHBvc2l0aW9uOmZpeGVkOyB0b3A6MDsgbGVmdDotMnB4OyB3aWR0aDoxcHg7IGhlaWdodDoxcHg7IG92ZXJmbG93OmhpZGRlbjtcIik7dC5zZXRBdHRyaWJ1dGUoXCJhcmlhLWxpdmVcIixcIm9mZlwiKTt0LnNldEF0dHJpYnV0ZShcImFyaWEtYnVzeVwiLFwidHJ1ZVwiKTt0LnNldEF0dHJpYnV0ZShcImFyaWEtaGlkZGVuXCIsXCJ0cnVlXCIpO2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodCk7dmFyIHI9dC5jb250ZW50V2luZG93O3ZhciBuPXIuZG9jdW1lbnQ7bi5vcGVuKCk7bi5jbG9zZSgpO3ZhciBvPW4uY3JlYXRlRWxlbWVudChcImRpdlwiKTtuLmJvZHkuYXBwZW5kQ2hpbGQobyk7ZS5pZnJhbWU9dDtlLndyYXBwZXI9bztlLndpbmRvdz1yO2UuZG9jdW1lbnQ9bjtyZXR1cm4gZX1mdW5jdGlvbiB0ZXN0KGUsdCl7ZS53cmFwcGVyLmlubmVySFRNTD1cIlwiO3ZhciByPXR5cGVvZiB0LmVsZW1lbnQ9PT1cInN0cmluZ1wiP2UuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0LmVsZW1lbnQpOnQuZWxlbWVudChlLndyYXBwZXIsZS5kb2N1bWVudCk7dmFyIG49dC5tdXRhdGUmJnQubXV0YXRlKHIsZS53cmFwcGVyLGUuZG9jdW1lbnQpO2lmKCFuJiZuIT09ZmFsc2Upe249cn0hci5wYXJlbnROb2RlJiZlLndyYXBwZXIuYXBwZW5kQ2hpbGQocik7biYmbi5mb2N1cyYmbi5mb2N1cygpO3JldHVybiB0LnZhbGlkYXRlP3QudmFsaWRhdGUocixuLGUuZG9jdW1lbnQpOmUuZG9jdW1lbnQuYWN0aXZlRWxlbWVudD09PW59ZnVuY3Rpb24gYWZ0ZXIoZSl7aWYoZS5hY3RpdmVFbGVtZW50PT09ZG9jdW1lbnQuYm9keSl7ZG9jdW1lbnQuYWN0aXZlRWxlbWVudCYmZG9jdW1lbnQuYWN0aXZlRWxlbWVudC5ibHVyJiZkb2N1bWVudC5hY3RpdmVFbGVtZW50LmJsdXIoKTtpZihzLmlzLklFMTApe2RvY3VtZW50LmJvZHkuZm9jdXMoKX19ZWxzZXtlLmFjdGl2ZUVsZW1lbnQmJmUuYWN0aXZlRWxlbWVudC5mb2N1cyYmZS5hY3RpdmVFbGVtZW50LmZvY3VzKCl9ZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChlLmlmcmFtZSk7d2luZG93LnNjcm9sbFRvcD1lLndpbmRvd1Njcm9sbFRvcDt3aW5kb3cuc2Nyb2xsTGVmdD1lLndpbmRvd1Njcm9sbExlZnQ7ZG9jdW1lbnQuYm9keS5zY3JvbGxUb3A9ZS5ib2R5U2Nyb2xsVG9wO2RvY3VtZW50LmJvZHkuc2Nyb2xsTGVmdD1lLmJvZHlTY3JvbGxMZWZ0fWZ1bmN0aW9uIGRldGVjdEZvY3VzKGUpe3ZhciB0PWJlZm9yZSgpO3ZhciByPXt9O09iamVjdC5rZXlzKGUpLm1hcCgoZnVuY3Rpb24obil7cltuXT10ZXN0KHQsZVtuXSl9KSk7YWZ0ZXIodCk7cmV0dXJuIHJ9dmFyIEU9XCIxLjQuMVwiO2Z1bmN0aW9uIHJlYWRMb2NhbFN0b3JhZ2UoZSl7dmFyIHQ9dm9pZCAwO3RyeXt0PXdpbmRvdy5sb2NhbFN0b3JhZ2UmJndpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShlKTt0PXQ/SlNPTi5wYXJzZSh0KTp7fX1jYXRjaChlKXt0PXt9fXJldHVybiB0fWZ1bmN0aW9uIHdyaXRlTG9jYWxTdG9yYWdlKGUsdCl7aWYoIWRvY3VtZW50Lmhhc0ZvY3VzKCkpe3RyeXt3aW5kb3cubG9jYWxTdG9yYWdlJiZ3aW5kb3cubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oZSl9Y2F0Y2goZSl7fXJldHVybn10cnl7d2luZG93LmxvY2FsU3RvcmFnZSYmd2luZG93LmxvY2FsU3RvcmFnZS5zZXRJdGVtKGUsSlNPTi5zdHJpbmdpZnkodCkpfWNhdGNoKGUpe319dmFyIF89dHlwZW9mIHdpbmRvdyE9PVwidW5kZWZpbmVkXCImJndpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50fHxcIlwiO3ZhciB3PVwiYWxseS1zdXBwb3J0cy1jYWNoZVwiO3ZhciBPPXJlYWRMb2NhbFN0b3JhZ2Uodyk7aWYoTy51c2VyQWdlbnQhPT1ffHxPLnZlcnNpb24hPT1FKXtPPXt9fU8udXNlckFnZW50PV87Ty52ZXJzaW9uPUU7dmFyIGo9e2dldDpmdW5jdGlvbiBnZXQoKXtyZXR1cm4gT30sc2V0OmZ1bmN0aW9uIHNldChlKXtPYmplY3Qua2V5cyhlKS5mb3JFYWNoKChmdW5jdGlvbih0KXtPW3RdPWVbdF19KSk7Ty50aW1lPShuZXcgRGF0ZSkudG9JU09TdHJpbmcoKTt3cml0ZUxvY2FsU3RvcmFnZSh3LE8pfX07ZnVuY3Rpb24gY3NzU2hhZG93UGllcmNpbmdEZWVwQ29tYmluYXRvcigpe3ZhciBlPXZvaWQgMDt0cnl7ZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcImh0bWwgPj4+IDpmaXJzdC1jaGlsZFwiKTtlPVwiPj4+XCJ9Y2F0Y2godCl7dHJ5e2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCJodG1sIC9kZWVwLyA6Zmlyc3QtY2hpbGRcIik7ZT1cIi9kZWVwL1wifWNhdGNoKHQpe2U9XCJcIn19cmV0dXJuIGV9dmFyIGs9XCJkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhBUUFCQUlBQUFBQUFBUC8vL3lINUJBRUFBQUFBTEFBQUFBQUJBQUVBQUFJQlJBQTdcIjt2YXIgUz17ZWxlbWVudDpcImRpdlwiLG11dGF0ZTpmdW5jdGlvbiBtdXRhdGUoZSl7ZS5pbm5lckhUTUw9JzxtYXAgbmFtZT1cImltYWdlLW1hcC10YWJpbmRleC10ZXN0XCI+JysnPGFyZWEgc2hhcGU9XCJyZWN0XCIgY29vcmRzPVwiNjMsMTksMTQ0LDQ1XCI+PC9tYXA+JysnPGltZyB1c2VtYXA9XCIjaW1hZ2UtbWFwLXRhYmluZGV4LXRlc3RcIiB0YWJpbmRleD1cIi0xXCIgYWx0PVwiXCIgc3JjPVwiJytrKydcIj4nO3JldHVybiBlLnF1ZXJ5U2VsZWN0b3IoXCJhcmVhXCIpfX07dmFyIFQ9e2VsZW1lbnQ6XCJkaXZcIixtdXRhdGU6ZnVuY3Rpb24gbXV0YXRlKGUpe2UuaW5uZXJIVE1MPSc8bWFwIG5hbWU9XCJpbWFnZS1tYXAtdGFiaW5kZXgtdGVzdFwiPicrJzxhcmVhIGhyZWY9XCIjdm9pZFwiIHRhYmluZGV4PVwiLTFcIiBzaGFwZT1cInJlY3RcIiBjb29yZHM9XCI2MywxOSwxNDQsNDVcIj48L21hcD4nKyc8aW1nIHVzZW1hcD1cIiNpbWFnZS1tYXAtdGFiaW5kZXgtdGVzdFwiIGFsdD1cIlwiIHNyYz1cIicraysnXCI+JztyZXR1cm4gZmFsc2V9LHZhbGlkYXRlOmZ1bmN0aW9uIHZhbGlkYXRlKGUsdCxyKXtpZihzLmlzLkdFQ0tPKXtyZXR1cm4gdHJ1ZX12YXIgbj1lLnF1ZXJ5U2VsZWN0b3IoXCJhcmVhXCIpO24uZm9jdXMoKTtyZXR1cm4gci5hY3RpdmVFbGVtZW50PT09bn19O3ZhciBDPXtlbGVtZW50OlwiZGl2XCIsbXV0YXRlOmZ1bmN0aW9uIG11dGF0ZShlKXtlLmlubmVySFRNTD0nPG1hcCBuYW1lPVwiaW1hZ2UtbWFwLWFyZWEtaHJlZi10ZXN0XCI+JysnPGFyZWEgc2hhcGU9XCJyZWN0XCIgY29vcmRzPVwiNjMsMTksMTQ0LDQ1XCI+PC9tYXA+JysnPGltZyB1c2VtYXA9XCIjaW1hZ2UtbWFwLWFyZWEtaHJlZi10ZXN0XCIgYWx0PVwiXCIgc3JjPVwiJytrKydcIj4nO3JldHVybiBlLnF1ZXJ5U2VsZWN0b3IoXCJhcmVhXCIpfSx2YWxpZGF0ZTpmdW5jdGlvbiB2YWxpZGF0ZShlLHQscil7aWYocy5pcy5HRUNLTyl7cmV0dXJuIHRydWV9cmV0dXJuIHIuYWN0aXZlRWxlbWVudD09PXR9fTt2YXIgRD17bmFtZTpcImNhbi1mb2N1cy1hdWRpby13aXRob3V0LWNvbnRyb2xzXCIsZWxlbWVudDpcImF1ZGlvXCIsbXV0YXRlOmZ1bmN0aW9uIG11dGF0ZShlKXt0cnl7ZS5zZXRBdHRyaWJ1dGUoXCJzcmNcIixrKX1jYXRjaChlKXt9fX07dmFyIFA9XCJkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhBUUFCQUlBQUFBQUFBUC8vL1paWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpcIjt2YXIgTT17ZWxlbWVudDpcImRpdlwiLG11dGF0ZTpmdW5jdGlvbiBtdXRhdGUoZSl7ZS5pbm5lckhUTUw9JzxtYXAgbmFtZT1cImJyb2tlbi1pbWFnZS1tYXAtdGVzdFwiPjxhcmVhIGhyZWY9XCIjdm9pZFwiIHNoYXBlPVwicmVjdFwiIGNvb3Jkcz1cIjYzLDE5LDE0NCw0NVwiPjwvbWFwPicrJzxpbWcgdXNlbWFwPVwiI2Jyb2tlbi1pbWFnZS1tYXAtdGVzdFwiIGFsdD1cIlwiIHNyYz1cIicrUCsnXCI+JztyZXR1cm4gZS5xdWVyeVNlbGVjdG9yKFwiYXJlYVwiKX19O3ZhciBOPXtlbGVtZW50OlwiZGl2XCIsbXV0YXRlOmZ1bmN0aW9uIG11dGF0ZShlKXtlLnNldEF0dHJpYnV0ZShcInRhYmluZGV4XCIsXCItMVwiKTtlLnNldEF0dHJpYnV0ZShcInN0eWxlXCIsXCJkaXNwbGF5OiAtd2Via2l0LWZsZXg7IGRpc3BsYXk6IC1tcy1mbGV4Ym94OyBkaXNwbGF5OiBmbGV4O1wiKTtlLmlubmVySFRNTD0nPHNwYW4gc3R5bGU9XCJkaXNwbGF5OiBibG9jaztcIj5oZWxsbzwvc3Bhbj4nO3JldHVybiBlLnF1ZXJ5U2VsZWN0b3IoXCJzcGFuXCIpfX07dmFyIEE9e2VsZW1lbnQ6XCJmaWVsZHNldFwiLG11dGF0ZTpmdW5jdGlvbiBtdXRhdGUoZSl7ZS5zZXRBdHRyaWJ1dGUoXCJ0YWJpbmRleFwiLDApO2Uuc2V0QXR0cmlidXRlKFwiZGlzYWJsZWRcIixcImRpc2FibGVkXCIpfX07dmFyIFI9e2VsZW1lbnQ6XCJmaWVsZHNldFwiLG11dGF0ZTpmdW5jdGlvbiBtdXRhdGUoZSl7ZS5pbm5lckhUTUw9XCI8bGVnZW5kPmxlZ2VuZDwvbGVnZW5kPjxwPmNvbnRlbnQ8L3A+XCJ9fTt2YXIgRj17ZWxlbWVudDpcInNwYW5cIixtdXRhdGU6ZnVuY3Rpb24gbXV0YXRlKGUpe2Uuc2V0QXR0cmlidXRlKFwic3R5bGVcIixcImRpc3BsYXk6IC13ZWJraXQtZmxleDsgZGlzcGxheTogLW1zLWZsZXhib3g7IGRpc3BsYXk6IGZsZXg7XCIpO2UuaW5uZXJIVE1MPSc8c3BhbiBzdHlsZT1cImRpc3BsYXk6IGJsb2NrO1wiPmhlbGxvPC9zcGFuPid9fTt2YXIgST17ZWxlbWVudDpcImZvcm1cIixtdXRhdGU6ZnVuY3Rpb24gbXV0YXRlKGUpe2Uuc2V0QXR0cmlidXRlKFwidGFiaW5kZXhcIiwwKTtlLnNldEF0dHJpYnV0ZShcImRpc2FibGVkXCIsXCJkaXNhYmxlZFwiKX19O3ZhciBMPXtlbGVtZW50OlwiYVwiLG11dGF0ZTpmdW5jdGlvbiBtdXRhdGUoZSl7ZS5ocmVmPVwiI3ZvaWRcIjtlLmlubmVySFRNTD0nPGltZyBpc21hcCBzcmM9XCInK2srJ1wiIGFsdD1cIlwiPic7cmV0dXJuIGUucXVlcnlTZWxlY3RvcihcImltZ1wiKX19O3ZhciBCPXtlbGVtZW50OlwiZGl2XCIsbXV0YXRlOmZ1bmN0aW9uIG11dGF0ZShlKXtlLmlubmVySFRNTD0nPG1hcCBuYW1lPVwiaW1hZ2UtbWFwLXRhYmluZGV4LXRlc3RcIj48YXJlYSBocmVmPVwiI3ZvaWRcIiBzaGFwZT1cInJlY3RcIiBjb29yZHM9XCI2MywxOSwxNDQsNDVcIj48L21hcD4nKyc8aW1nIHVzZW1hcD1cIiNpbWFnZS1tYXAtdGFiaW5kZXgtdGVzdFwiIHRhYmluZGV4PVwiLTFcIiBhbHQ9XCJcIiAnKydzcmM9XCInK2srJ1wiPic7cmV0dXJuIGUucXVlcnlTZWxlY3RvcihcImltZ1wiKX19O3ZhciBIPXtlbGVtZW50OmZ1bmN0aW9uIGVsZW1lbnQoZSx0KXt2YXIgcj10LmNyZWF0ZUVsZW1lbnQoXCJpZnJhbWVcIik7ZS5hcHBlbmRDaGlsZChyKTt2YXIgbj1yLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQ7bi5vcGVuKCk7bi5jbG9zZSgpO3JldHVybiByfSxtdXRhdGU6ZnVuY3Rpb24gbXV0YXRlKGUpe2Uuc3R5bGUudmlzaWJpbGl0eT1cImhpZGRlblwiO3ZhciB0PWUuY29udGVudFdpbmRvdy5kb2N1bWVudDt2YXIgcj10LmNyZWF0ZUVsZW1lbnQoXCJpbnB1dFwiKTt0LmJvZHkuYXBwZW5kQ2hpbGQocik7cmV0dXJuIHJ9LHZhbGlkYXRlOmZ1bmN0aW9uIHZhbGlkYXRlKGUpe3ZhciB0PWUuY29udGVudFdpbmRvdy5kb2N1bWVudDt2YXIgcj10LnF1ZXJ5U2VsZWN0b3IoXCJpbnB1dFwiKTtyZXR1cm4gdC5hY3RpdmVFbGVtZW50PT09cn19O3ZhciB6PSFzLmlzLldFQktJVDtmdW5jdGlvbiBmb2N1c0luWmVyb0RpbWVuc2lvbk9iamVjdCgpe3JldHVybiB6fXZhciBxPXtlbGVtZW50OlwiZGl2XCIsbXV0YXRlOmZ1bmN0aW9uIG11dGF0ZShlKXtlLnNldEF0dHJpYnV0ZShcInRhYmluZGV4XCIsXCJpbnZhbGlkLXZhbHVlXCIpfX07dmFyIFc9e2VsZW1lbnQ6XCJsYWJlbFwiLG11dGF0ZTpmdW5jdGlvbiBtdXRhdGUoZSl7ZS5zZXRBdHRyaWJ1dGUoXCJ0YWJpbmRleFwiLFwiLTFcIil9LHZhbGlkYXRlOmZ1bmN0aW9uIHZhbGlkYXRlKGUsdCxyKXt2YXIgbj1lLm9mZnNldEhlaWdodDtlLmZvY3VzKCk7cmV0dXJuIHIuYWN0aXZlRWxlbWVudD09PWV9fTt2YXIgVT1cImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QjRiV3h1Y3owaWFIUjBjRG92TDNkM2R5NTNNeTV2Y21jdk1qQXdNQzl6ZG1jaUlIaHRiXCIrXCJHNXpPbmhzYVc1clBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1TDNoc2FXNXJJaUJwWkQwaWMzWm5JajQ4ZEdWNGRDQjRQU0l4TUNJZ2VUMGlNakFpSUdsa1BTSlwiK1wiemRtY3RiR2x1YXkxMFpYaDBJajUwWlhoMFBDOTBaWGgwUGp3dmMzWm5QZz09XCI7dmFyIFY9e2VsZW1lbnQ6XCJvYmplY3RcIixtdXRhdGU6ZnVuY3Rpb24gbXV0YXRlKGUpe2Uuc2V0QXR0cmlidXRlKFwidHlwZVwiLFwiaW1hZ2Uvc3ZnK3htbFwiKTtlLnNldEF0dHJpYnV0ZShcImRhdGFcIixVKTtlLnNldEF0dHJpYnV0ZShcIndpZHRoXCIsXCIyMDBcIik7ZS5zZXRBdHRyaWJ1dGUoXCJoZWlnaHRcIixcIjUwXCIpO2Uuc3R5bGUudmlzaWJpbGl0eT1cImhpZGRlblwifX07dmFyICQ9e25hbWU6XCJjYW4tZm9jdXMtb2JqZWN0LXN2Z1wiLGVsZW1lbnQ6XCJvYmplY3RcIixtdXRhdGU6ZnVuY3Rpb24gbXV0YXRlKGUpe2Uuc2V0QXR0cmlidXRlKFwidHlwZVwiLFwiaW1hZ2Uvc3ZnK3htbFwiKTtlLnNldEF0dHJpYnV0ZShcImRhdGFcIixVKTtlLnNldEF0dHJpYnV0ZShcIndpZHRoXCIsXCIyMDBcIik7ZS5zZXRBdHRyaWJ1dGUoXCJoZWlnaHRcIixcIjUwXCIpfSx2YWxpZGF0ZTpmdW5jdGlvbiB2YWxpZGF0ZShlLHQscil7aWYocy5pcy5HRUNLTyl7cmV0dXJuIHRydWV9cmV0dXJuIHIuYWN0aXZlRWxlbWVudD09PWV9fTt2YXIgSz0hcy5pcy5JRTk7ZnVuY3Rpb24gZm9jdXNPYmplY3RTd2YoKXtyZXR1cm4gS312YXIgWj17ZWxlbWVudDpcImRpdlwiLG11dGF0ZTpmdW5jdGlvbiBtdXRhdGUoZSl7ZS5pbm5lckhUTUw9JzxtYXAgbmFtZT1cImZvY3VzLXJlZGlyZWN0LWltZy11c2VtYXBcIj48YXJlYSBocmVmPVwiI3ZvaWRcIiBzaGFwZT1cInJlY3RcIiBjb29yZHM9XCI2MywxOSwxNDQsNDVcIj48L21hcD4nKyc8aW1nIHVzZW1hcD1cIiNmb2N1cy1yZWRpcmVjdC1pbWctdXNlbWFwXCIgYWx0PVwiXCIgJysnc3JjPVwiJytrKydcIj4nO3JldHVybiBlLnF1ZXJ5U2VsZWN0b3IoXCJpbWdcIil9LHZhbGlkYXRlOmZ1bmN0aW9uIHZhbGlkYXRlKGUsdCxyKXt2YXIgbj1lLnF1ZXJ5U2VsZWN0b3IoXCJhcmVhXCIpO3JldHVybiByLmFjdGl2ZUVsZW1lbnQ9PT1ufX07dmFyIEc9e2VsZW1lbnQ6XCJmaWVsZHNldFwiLG11dGF0ZTpmdW5jdGlvbiBtdXRhdGUoZSl7ZS5pbm5lckhUTUw9JzxsZWdlbmQ+bGVnZW5kPC9sZWdlbmQ+PGlucHV0IHRhYmluZGV4PVwiLTFcIj48aW5wdXQgdGFiaW5kZXg9XCIwXCI+JztyZXR1cm4gZmFsc2V9LHZhbGlkYXRlOmZ1bmN0aW9uIHZhbGlkYXRlKGUsdCxyKXt2YXIgbj1lLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0W3RhYmluZGV4PVwiLTFcIl0nKTt2YXIgbz1lLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0W3RhYmluZGV4PVwiMFwiXScpO2UuZm9jdXMoKTtlLnF1ZXJ5U2VsZWN0b3IoXCJsZWdlbmRcIikuZm9jdXMoKTtyZXR1cm4gci5hY3RpdmVFbGVtZW50PT09biYmXCJmb2N1c2FibGVcInx8ci5hY3RpdmVFbGVtZW50PT09byYmXCJ0YWJiYWJsZVwifHxcIlwifX07dmFyIFk9e2VsZW1lbnQ6XCJkaXZcIixtdXRhdGU6ZnVuY3Rpb24gbXV0YXRlKGUpe2Uuc2V0QXR0cmlidXRlKFwic3R5bGVcIixcIndpZHRoOiAxMDBweDsgaGVpZ2h0OiA1MHB4OyBvdmVyZmxvdzogYXV0bztcIik7ZS5pbm5lckhUTUw9JzxkaXYgc3R5bGU9XCJ3aWR0aDogNTAwcHg7IGhlaWdodDogNDBweDtcIj5zY3JvbGxhYmxlIGNvbnRlbnQ8L2Rpdj4nO3JldHVybiBlLnF1ZXJ5U2VsZWN0b3IoXCJkaXZcIil9fTt2YXIgSj17ZWxlbWVudDpcImRpdlwiLG11dGF0ZTpmdW5jdGlvbiBtdXRhdGUoZSl7ZS5zZXRBdHRyaWJ1dGUoXCJzdHlsZVwiLFwid2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDUwcHg7XCIpO2UuaW5uZXJIVE1MPSc8ZGl2IHN0eWxlPVwid2lkdGg6IDUwMHB4OyBoZWlnaHQ6IDQwcHg7XCI+c2Nyb2xsYWJsZSBjb250ZW50PC9kaXY+J319O3ZhciBYPXtlbGVtZW50OlwiZGl2XCIsbXV0YXRlOmZ1bmN0aW9uIG11dGF0ZShlKXtlLnNldEF0dHJpYnV0ZShcInN0eWxlXCIsXCJ3aWR0aDogMTAwcHg7IGhlaWdodDogNTBweDsgb3ZlcmZsb3c6IGF1dG87XCIpO2UuaW5uZXJIVE1MPSc8ZGl2IHN0eWxlPVwid2lkdGg6IDUwMHB4OyBoZWlnaHQ6IDQwcHg7XCI+c2Nyb2xsYWJsZSBjb250ZW50PC9kaXY+J319O3ZhciBRPXtlbGVtZW50OlwiZGV0YWlsc1wiLG11dGF0ZTpmdW5jdGlvbiBtdXRhdGUoZSl7ZS5pbm5lckhUTUw9XCI8c3VtbWFyeT5mb288L3N1bW1hcnk+PHA+Y29udGVudDwvcD5cIjtyZXR1cm4gZS5maXJzdEVsZW1lbnRDaGlsZH19O2Z1bmN0aW9uIG1ha2VGb2N1c2FibGVGb3JlaWduT2JqZWN0KCl7dmFyIGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcImZvcmVpZ25PYmplY3RcIik7ZS53aWR0aC5iYXNlVmFsLnZhbHVlPTMwO2UuaGVpZ2h0LmJhc2VWYWwudmFsdWU9MzA7ZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiaW5wdXRcIikpO2UubGFzdENoaWxkLnR5cGU9XCJ0ZXh0XCI7cmV0dXJuIGV9ZnVuY3Rpb24gZm9jdXNTdmdGb3JlaWduT2JqZWN0SGFjayhlKXt2YXIgdD1lLm93bmVyU1ZHRWxlbWVudHx8ZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09XCJzdmdcIjtpZighdCl7cmV0dXJuIGZhbHNlfXZhciByPW1ha2VGb2N1c2FibGVGb3JlaWduT2JqZWN0KCk7ZS5hcHBlbmRDaGlsZChyKTt2YXIgbj1yLnF1ZXJ5U2VsZWN0b3IoXCJpbnB1dFwiKTtuLmZvY3VzKCk7bi5kaXNhYmxlZD10cnVlO2UucmVtb3ZlQ2hpbGQocik7cmV0dXJuIHRydWV9ZnVuY3Rpb24gZ2VuZXJhdGUoZSl7cmV0dXJuJzxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHhtbG5zOnhsaW5rPVwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiPicrZStcIjwvc3ZnPlwifWZ1bmN0aW9uIGZvY3VzKGUpe2lmKGUuZm9jdXMpe3JldHVybn10cnl7SFRNTEVsZW1lbnQucHJvdG90eXBlLmZvY3VzLmNhbGwoZSl9Y2F0Y2godCl7Zm9jdXNTdmdGb3JlaWduT2JqZWN0SGFjayhlKX19ZnVuY3Rpb24gdmFsaWRhdGUoZSx0LHIpe2ZvY3VzKHQpO3JldHVybiByLmFjdGl2ZUVsZW1lbnQ9PT10fXZhciBlZT17ZWxlbWVudDpcImRpdlwiLG11dGF0ZTpmdW5jdGlvbiBtdXRhdGUoZSl7ZS5pbm5lckhUTUw9Z2VuZXJhdGUoJzx0ZXh0IGZvY3VzYWJsZT1cInRydWVcIj5hPC90ZXh0PicpO3JldHVybiBlLnF1ZXJ5U2VsZWN0b3IoXCJ0ZXh0XCIpfSx2YWxpZGF0ZTp2YWxpZGF0ZX07dmFyIHRlPXtlbGVtZW50OlwiZGl2XCIsbXV0YXRlOmZ1bmN0aW9uIG11dGF0ZShlKXtlLmlubmVySFRNTD1nZW5lcmF0ZSgnPHRleHQgdGFiaW5kZXg9XCIwXCI+YTwvdGV4dD4nKTtyZXR1cm4gZS5xdWVyeVNlbGVjdG9yKFwidGV4dFwiKX0sdmFsaWRhdGU6dmFsaWRhdGV9O3ZhciByZT17ZWxlbWVudDpcImRpdlwiLG11dGF0ZTpmdW5jdGlvbiBtdXRhdGUoZSl7ZS5pbm5lckhUTUw9Z2VuZXJhdGUoJzx0ZXh0IHRhYmluZGV4PVwiLTFcIj5hPC90ZXh0PicpO3JldHVybiBlLnF1ZXJ5U2VsZWN0b3IoXCJ0ZXh0XCIpfSx2YWxpZGF0ZTp2YWxpZGF0ZX07dmFyIG5lPXtlbGVtZW50OlwiZGl2XCIsbXV0YXRlOmZ1bmN0aW9uIG11dGF0ZShlKXtlLmlubmVySFRNTD1nZW5lcmF0ZShbJzxnIGlkPVwiYWxseS10ZXN0LXRhcmdldFwiPjxhIHhsaW5rOmhyZWY9XCIjdm9pZFwiPjx0ZXh0Pmxpbms8L3RleHQ+PC9hPjwvZz4nLCc8dXNlIHhsaW5rOmhyZWY9XCIjYWxseS10ZXN0LXRhcmdldFwiIHg9XCIwXCIgeT1cIjBcIiB0YWJpbmRleD1cIi0xXCIgLz4nXS5qb2luKFwiXCIpKTtyZXR1cm4gZS5xdWVyeVNlbGVjdG9yKFwidXNlXCIpfSx2YWxpZGF0ZTp2YWxpZGF0ZX07dmFyIG9lPXtlbGVtZW50OlwiZGl2XCIsbXV0YXRlOmZ1bmN0aW9uIG11dGF0ZShlKXtlLmlubmVySFRNTD1nZW5lcmF0ZSgnPGZvcmVpZ25PYmplY3QgdGFiaW5kZXg9XCItMVwiPjxpbnB1dCB0eXBlPVwidGV4dFwiIC8+PC9mb3JlaWduT2JqZWN0PicpO3JldHVybiBlLnF1ZXJ5U2VsZWN0b3IoXCJmb3JlaWduT2JqZWN0XCIpfHxlLmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiZm9yZWlnbk9iamVjdFwiKVswXX0sdmFsaWRhdGU6dmFsaWRhdGV9O3ZhciBhZT1Cb29sZWFuKHMuaXMuR0VDS08mJnR5cGVvZiBTVkdFbGVtZW50IT09XCJ1bmRlZmluZWRcIiYmU1ZHRWxlbWVudC5wcm90b3R5cGUuZm9jdXMpO2Z1bmN0aW9uIGZvY3VzU3ZnSW5JZnJhbWUoKXtyZXR1cm4gYWV9dmFyIGllPXtlbGVtZW50OlwiZGl2XCIsbXV0YXRlOmZ1bmN0aW9uIG11dGF0ZShlKXtlLmlubmVySFRNTD1nZW5lcmF0ZShcIlwiKTtyZXR1cm4gZS5maXJzdENoaWxkfSx2YWxpZGF0ZTp2YWxpZGF0ZX07dmFyIGxlPXtlbGVtZW50OlwiZGl2XCIsbXV0YXRlOmZ1bmN0aW9uIG11dGF0ZShlKXtlLnNldEF0dHJpYnV0ZShcInRhYmluZGV4XCIsXCIzeFwiKX19O3ZhciBzZT17ZWxlbWVudDpcInRhYmxlXCIsbXV0YXRlOmZ1bmN0aW9uIG11dGF0ZShlLHQscil7dmFyIG49ci5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7bi5pbm5lckhUTUw9XCI8dHI+PHRkPmNlbGw8L3RkPjwvdHI+XCI7ZS5hcHBlbmRDaGlsZChuKX19O3ZhciB1ZT17ZWxlbWVudDpcInZpZGVvXCIsbXV0YXRlOmZ1bmN0aW9uIG11dGF0ZShlKXt0cnl7ZS5zZXRBdHRyaWJ1dGUoXCJzcmNcIixrKX1jYXRjaChlKXt9fX07dmFyIGNlPXMuaXMuR0VDS098fHMuaXMuVFJJREVOVHx8cy5pcy5FREdFO2Z1bmN0aW9uIHRhYnNlcXVlbmNlQXJlYUF0SW1nUG9zaXRpb24oKXtyZXR1cm4gY2V9dmFyIGRlPXtjc3NTaGFkb3dQaWVyY2luZ0RlZXBDb21iaW5hdG9yOmNzc1NoYWRvd1BpZXJjaW5nRGVlcENvbWJpbmF0b3IsZm9jdXNJblplcm9EaW1lbnNpb25PYmplY3Q6Zm9jdXNJblplcm9EaW1lbnNpb25PYmplY3QsZm9jdXNPYmplY3RTd2Y6Zm9jdXNPYmplY3RTd2YsZm9jdXNTdmdJbklmcmFtZTpmb2N1c1N2Z0luSWZyYW1lLHRhYnNlcXVlbmNlQXJlYUF0SW1nUG9zaXRpb246dGFic2VxdWVuY2VBcmVhQXRJbWdQb3NpdGlvbn07dmFyIGZlPXtmb2N1c0FyZWFJbWdUYWJpbmRleDpTLGZvY3VzQXJlYVRhYmluZGV4OlQsZm9jdXNBcmVhV2l0aG91dEhyZWY6Qyxmb2N1c0F1ZGlvV2l0aG91dENvbnRyb2xzOkQsZm9jdXNCcm9rZW5JbWFnZU1hcDpNLGZvY3VzQ2hpbGRyZW5PZkZvY3VzYWJsZUZsZXhib3g6Tixmb2N1c0ZpZWxkc2V0RGlzYWJsZWQ6QSxmb2N1c0ZpZWxkc2V0OlIsZm9jdXNGbGV4Ym94Q29udGFpbmVyOkYsZm9jdXNGb3JtRGlzYWJsZWQ6SSxmb2N1c0ltZ0lzbWFwOkwsZm9jdXNJbWdVc2VtYXBUYWJpbmRleDpCLGZvY3VzSW5IaWRkZW5JZnJhbWU6SCxmb2N1c0ludmFsaWRUYWJpbmRleDpxLGZvY3VzTGFiZWxUYWJpbmRleDpXLGZvY3VzT2JqZWN0U3ZnOiQsZm9jdXNPYmplY3RTdmdIaWRkZW46Vixmb2N1c1JlZGlyZWN0SW1nVXNlbWFwOlosZm9jdXNSZWRpcmVjdExlZ2VuZDpHLGZvY3VzU2Nyb2xsQm9keTpZLGZvY3VzU2Nyb2xsQ29udGFpbmVyV2l0aG91dE92ZXJmbG93OkosZm9jdXNTY3JvbGxDb250YWluZXI6WCxmb2N1c1N1bW1hcnk6USxmb2N1c1N2Z0ZvY3VzYWJsZUF0dHJpYnV0ZTplZSxmb2N1c1N2Z1RhYmluZGV4QXR0cmlidXRlOnRlLGZvY3VzU3ZnTmVnYXRpdmVUYWJpbmRleEF0dHJpYnV0ZTpyZSxmb2N1c1N2Z1VzZVRhYmluZGV4Om5lLGZvY3VzU3ZnRm9yZWlnbm9iamVjdFRhYmluZGV4Om9lLGZvY3VzU3ZnOmllLGZvY3VzVGFiaW5kZXhUcmFpbGluZ0NoYXJhY3RlcnM6bGUsZm9jdXNUYWJsZTpzZSxmb2N1c1ZpZGVvV2l0aG91dENvbnRyb2xzOnVlfTtmdW5jdGlvbiBleGVjdXRlVGVzdHMoKXt2YXIgZT1kZXRlY3RGb2N1cyhmZSk7T2JqZWN0LmtleXMoZGUpLmZvckVhY2goKGZ1bmN0aW9uKHQpe2VbdF09ZGVbdF0oKX0pKTtyZXR1cm4gZX12YXIgbWU9bnVsbDtmdW5jdGlvbiBfc3VwcG9ydHMoKXtpZihtZSl7cmV0dXJuIG1lfW1lPWouZ2V0KCk7aWYoIW1lLnRpbWUpe2ouc2V0KGV4ZWN1dGVUZXN0cygpKTttZT1qLmdldCgpfXJldHVybiBtZX12YXIgcGU9dm9pZCAwO3ZhciBiZT0vXlxccyooLXxcXCspP1swLTldK1xccyokLzt2YXIgdmU9L15cXHMqKC18XFwrKT9bMC05XSsuKiQvO2Z1bmN0aW9uIGlzVmFsaWRUYWJpbmRleChlKXtpZighcGUpe3BlPV9zdXBwb3J0cygpfXZhciB0PXBlLmZvY3VzVGFiaW5kZXhUcmFpbGluZ0NoYXJhY3RlcnM/dmU6YmU7dmFyIHI9Y29udGV4dFRvRWxlbWVudCh7bGFiZWw6XCJpcy92YWxpZC10YWJpbmRleFwiLHJlc29sdmVEb2N1bWVudDp0cnVlLGNvbnRleHQ6ZX0pO3ZhciBuPXIuaGFzQXR0cmlidXRlKFwidGFiaW5kZXhcIik7dmFyIG89ci5oYXNBdHRyaWJ1dGUoXCJ0YWJJbmRleFwiKTtpZighbiYmIW8pe3JldHVybiBmYWxzZX12YXIgYT1yLm93bmVyU1ZHRWxlbWVudHx8ci5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09XCJzdmdcIjtpZihhJiYhcGUuZm9jdXNTdmdUYWJpbmRleEF0dHJpYnV0ZSl7cmV0dXJuIGZhbHNlfWlmKHBlLmZvY3VzSW52YWxpZFRhYmluZGV4KXtyZXR1cm4gdHJ1ZX12YXIgaT1yLmdldEF0dHJpYnV0ZShuP1widGFiaW5kZXhcIjpcInRhYkluZGV4XCIpO2lmKGk9PT1cIi0zMjc2OFwiKXtyZXR1cm4gZmFsc2V9cmV0dXJuIEJvb2xlYW4oaSYmdC50ZXN0KGkpKX1mdW5jdGlvbiB0YWJpbmRleFZhbHVlKGUpe2lmKCFpc1ZhbGlkVGFiaW5kZXgoZSkpe3JldHVybiBudWxsfXZhciB0PWUuaGFzQXR0cmlidXRlKFwidGFiaW5kZXhcIik7dmFyIHI9dD9cInRhYmluZGV4XCI6XCJ0YWJJbmRleFwiO3ZhciBuPXBhcnNlSW50KGUuZ2V0QXR0cmlidXRlKHIpLDEwKTtyZXR1cm4gaXNOYU4obik/LTE6bn1mdW5jdGlvbiBpc1VzZXJNb2RpZnlXcml0YWJsZShlKXt2YXIgdD1lLndlYmtpdFVzZXJNb2RpZnl8fFwiXCI7cmV0dXJuIEJvb2xlYW4odCYmdC5pbmRleE9mKFwid3JpdGVcIikhPT0tMSl9ZnVuY3Rpb24gaGFzQ3NzT3ZlcmZsb3dTY3JvbGwoZSl7cmV0dXJuW2UuZ2V0UHJvcGVydHlWYWx1ZShcIm92ZXJmbG93XCIpLGUuZ2V0UHJvcGVydHlWYWx1ZShcIm92ZXJmbG93LXhcIiksZS5nZXRQcm9wZXJ0eVZhbHVlKFwib3ZlcmZsb3cteVwiKV0uc29tZSgoZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT1cImF1dG9cInx8ZT09PVwic2Nyb2xsXCJ9KSl9ZnVuY3Rpb24gaGFzQ3NzRGlzcGxheUZsZXgoZSl7cmV0dXJuIGUuZGlzcGxheS5pbmRleE9mKFwiZmxleFwiKT4tMX1mdW5jdGlvbiBpc1Njcm9sbGFibGVDb250YWluZXIoZSx0LHIsbil7aWYodCE9PVwiZGl2XCImJnQhPT1cInNwYW5cIil7cmV0dXJuIGZhbHNlfWlmKHImJnIhPT1cImRpdlwiJiZyIT09XCJzcGFuXCImJiFoYXNDc3NPdmVyZmxvd1Njcm9sbChuKSl7cmV0dXJuIGZhbHNlfXJldHVybiBlLm9mZnNldEhlaWdodDxlLnNjcm9sbEhlaWdodHx8ZS5vZmZzZXRXaWR0aDxlLnNjcm9sbFdpZHRofXZhciBnZT12b2lkIDA7ZnVuY3Rpb24gaXNGb2N1c1JlbGV2YW50UnVsZXMoKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJmFyZ3VtZW50c1swXSE9PXVuZGVmaW5lZD9hcmd1bWVudHNbMF06e30sdD1lLmNvbnRleHQscj1lLmV4Y2VwdCxuPXI9PT11bmRlZmluZWQ/e2ZsZXhib3g6ZmFsc2Usc2Nyb2xsYWJsZTpmYWxzZSxzaGFkb3c6ZmFsc2V9OnI7aWYoIWdlKXtnZT1fc3VwcG9ydHMoKX12YXIgbz1jb250ZXh0VG9FbGVtZW50KHtsYWJlbDpcImlzL2ZvY3VzLXJlbGV2YW50XCIscmVzb2x2ZURvY3VtZW50OnRydWUsY29udGV4dDp0fSk7aWYoIW4uc2hhZG93JiZvLnNoYWRvd1Jvb3Qpe3JldHVybiB0cnVlfXZhciBhPW8ubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtpZihhPT09XCJpbnB1dFwiJiZvLnR5cGU9PT1cImhpZGRlblwiKXtyZXR1cm4gZmFsc2V9aWYoYT09PVwiaW5wdXRcInx8YT09PVwic2VsZWN0XCJ8fGE9PT1cImJ1dHRvblwifHxhPT09XCJ0ZXh0YXJlYVwiKXtyZXR1cm4gdHJ1ZX1pZihhPT09XCJsZWdlbmRcIiYmZ2UuZm9jdXNSZWRpcmVjdExlZ2VuZCl7cmV0dXJuIHRydWV9aWYoYT09PVwibGFiZWxcIil7cmV0dXJuIHRydWV9aWYoYT09PVwiYXJlYVwiKXtyZXR1cm4gdHJ1ZX1pZihhPT09XCJhXCImJm8uaGFzQXR0cmlidXRlKFwiaHJlZlwiKSl7cmV0dXJuIHRydWV9aWYoYT09PVwib2JqZWN0XCImJm8uaGFzQXR0cmlidXRlKFwidXNlbWFwXCIpKXtyZXR1cm4gZmFsc2V9aWYoYT09PVwib2JqZWN0XCIpe3ZhciBpPW8uZ2V0QXR0cmlidXRlKFwidHlwZVwiKTtpZighZ2UuZm9jdXNPYmplY3RTdmcmJmk9PT1cImltYWdlL3N2Zyt4bWxcIil7cmV0dXJuIGZhbHNlfWVsc2UgaWYoIWdlLmZvY3VzT2JqZWN0U3dmJiZpPT09XCJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaFwiKXtyZXR1cm4gZmFsc2V9fWlmKGE9PT1cImlmcmFtZVwifHxhPT09XCJvYmplY3RcIil7cmV0dXJuIHRydWV9aWYoYT09PVwiZW1iZWRcInx8YT09PVwia2V5Z2VuXCIpe3JldHVybiB0cnVlfWlmKG8uaGFzQXR0cmlidXRlKFwiY29udGVudGVkaXRhYmxlXCIpKXtyZXR1cm4gdHJ1ZX1pZihhPT09XCJhdWRpb1wiJiYoZ2UuZm9jdXNBdWRpb1dpdGhvdXRDb250cm9sc3x8by5oYXNBdHRyaWJ1dGUoXCJjb250cm9sc1wiKSkpe3JldHVybiB0cnVlfWlmKGE9PT1cInZpZGVvXCImJihnZS5mb2N1c1ZpZGVvV2l0aG91dENvbnRyb2xzfHxvLmhhc0F0dHJpYnV0ZShcImNvbnRyb2xzXCIpKSl7cmV0dXJuIHRydWV9aWYoZ2UuZm9jdXNTdW1tYXJ5JiZhPT09XCJzdW1tYXJ5XCIpe3JldHVybiB0cnVlfXZhciBsPWlzVmFsaWRUYWJpbmRleChvKTtpZihhPT09XCJpbWdcIiYmby5oYXNBdHRyaWJ1dGUoXCJ1c2VtYXBcIikpe3JldHVybiBsJiZnZS5mb2N1c0ltZ1VzZW1hcFRhYmluZGV4fHxnZS5mb2N1c1JlZGlyZWN0SW1nVXNlbWFwfWlmKGdlLmZvY3VzVGFibGUmJihhPT09XCJ0YWJsZVwifHxhPT09XCJ0ZFwiKSl7cmV0dXJuIHRydWV9aWYoZ2UuZm9jdXNGaWVsZHNldCYmYT09PVwiZmllbGRzZXRcIil7cmV0dXJuIHRydWV9dmFyIHM9YT09PVwic3ZnXCI7dmFyIHU9by5vd25lclNWR0VsZW1lbnQ7dmFyIGM9by5nZXRBdHRyaWJ1dGUoXCJmb2N1c2FibGVcIik7dmFyIGQ9dGFiaW5kZXhWYWx1ZShvKTtpZihhPT09XCJ1c2VcIiYmZCE9PW51bGwmJiFnZS5mb2N1c1N2Z1VzZVRhYmluZGV4KXtyZXR1cm4gZmFsc2V9aWYoYT09PVwiZm9yZWlnbm9iamVjdFwiKXtyZXR1cm4gZCE9PW51bGwmJmdlLmZvY3VzU3ZnRm9yZWlnbm9iamVjdFRhYmluZGV4fWlmKGVsZW1lbnRNYXRjaGVzKG8sXCJzdmcgYVwiKSYmby5oYXNBdHRyaWJ1dGUoXCJ4bGluazpocmVmXCIpKXtyZXR1cm4gdHJ1ZX1pZigoc3x8dSkmJm8uZm9jdXMmJiFnZS5mb2N1c1N2Z05lZ2F0aXZlVGFiaW5kZXhBdHRyaWJ1dGUmJmQ8MCl7cmV0dXJuIGZhbHNlfWlmKHMpe3JldHVybiBsfHxnZS5mb2N1c1N2Z3x8Z2UuZm9jdXNTdmdJbklmcmFtZXx8Qm9vbGVhbihnZS5mb2N1c1N2Z0ZvY3VzYWJsZUF0dHJpYnV0ZSYmYyYmYz09PVwidHJ1ZVwiKX1pZih1KXtpZihnZS5mb2N1c1N2Z1RhYmluZGV4QXR0cmlidXRlJiZsKXtyZXR1cm4gdHJ1ZX1pZihnZS5mb2N1c1N2Z0ZvY3VzYWJsZUF0dHJpYnV0ZSl7cmV0dXJuIGM9PT1cInRydWVcIn19aWYobCl7cmV0dXJuIHRydWV9dmFyIGY9d2luZG93LmdldENvbXB1dGVkU3R5bGUobyxudWxsKTtpZihpc1VzZXJNb2RpZnlXcml0YWJsZShmKSl7cmV0dXJuIHRydWV9aWYoZ2UuZm9jdXNJbWdJc21hcCYmYT09PVwiaW1nXCImJm8uaGFzQXR0cmlidXRlKFwiaXNtYXBcIikpe3ZhciBtPWdldFBhcmVudHMoe2NvbnRleHQ6b30pLnNvbWUoKGZ1bmN0aW9uKGUpe3JldHVybiBlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1cImFcIiYmZS5oYXNBdHRyaWJ1dGUoXCJocmVmXCIpfSkpO2lmKG0pe3JldHVybiB0cnVlfX1pZighbi5zY3JvbGxhYmxlJiZnZS5mb2N1c1Njcm9sbENvbnRhaW5lcil7aWYoZ2UuZm9jdXNTY3JvbGxDb250YWluZXJXaXRob3V0T3ZlcmZsb3cpe2lmKGlzU2Nyb2xsYWJsZUNvbnRhaW5lcihvLGEpKXtyZXR1cm4gdHJ1ZX19ZWxzZSBpZihoYXNDc3NPdmVyZmxvd1Njcm9sbChmKSl7cmV0dXJuIHRydWV9fWlmKCFuLmZsZXhib3gmJmdlLmZvY3VzRmxleGJveENvbnRhaW5lciYmaGFzQ3NzRGlzcGxheUZsZXgoZikpe3JldHVybiB0cnVlfXZhciBwPW8ucGFyZW50RWxlbWVudDtpZighbi5zY3JvbGxhYmxlJiZwKXt2YXIgYj1wLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7dmFyIHY9d2luZG93LmdldENvbXB1dGVkU3R5bGUocCxudWxsKTtpZihnZS5mb2N1c1Njcm9sbEJvZHkmJmlzU2Nyb2xsYWJsZUNvbnRhaW5lcihwLGEsYix2KSl7cmV0dXJuIHRydWV9aWYoZ2UuZm9jdXNDaGlsZHJlbk9mRm9jdXNhYmxlRmxleGJveCl7aWYoaGFzQ3NzRGlzcGxheUZsZXgodikpe3JldHVybiB0cnVlfX19cmV0dXJuIGZhbHNlfWlzRm9jdXNSZWxldmFudFJ1bGVzLmV4Y2VwdD1mdW5jdGlvbigpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmYXJndW1lbnRzWzBdIT09dW5kZWZpbmVkP2FyZ3VtZW50c1swXTp7fTt2YXIgdD1mdW5jdGlvbiBpc0ZvY3VzUmVsZXZhbnQodCl7cmV0dXJuIGlzRm9jdXNSZWxldmFudFJ1bGVzKHtjb250ZXh0OnQsZXhjZXB0OmV9KX07dC5ydWxlcz1pc0ZvY3VzUmVsZXZhbnRSdWxlcztyZXR1cm4gdH07dmFyIGhlPWlzRm9jdXNSZWxldmFudFJ1bGVzLmV4Y2VwdCh7fSk7ZnVuY3Rpb24gZmluZEluZGV4KGUsdCl7aWYoZS5maW5kSW5kZXgpe3JldHVybiBlLmZpbmRJbmRleCh0KX12YXIgcj1lLmxlbmd0aDtpZihyPT09MCl7cmV0dXJuLTF9Zm9yKHZhciBuPTA7bjxyO24rKyl7aWYodChlW25dLG4sZSkpe3JldHVybiBufX1yZXR1cm4tMX1mdW5jdGlvbiBnZXRDb250ZW50RG9jdW1lbnQoZSl7dHJ5e3JldHVybiBlLmNvbnRlbnREb2N1bWVudHx8ZS5jb250ZW50V2luZG93JiZlLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnR8fGUuZ2V0U1ZHRG9jdW1lbnQmJmUuZ2V0U1ZHRG9jdW1lbnQoKXx8bnVsbH1jYXRjaChlKXtyZXR1cm4gbnVsbH19ZnVuY3Rpb24gZ2V0V2luZG93KGUpe3ZhciB0PWdldERvY3VtZW50KGUpO3JldHVybiB0LmRlZmF1bHRWaWV3fHx3aW5kb3d9dmFyIHllPXZvaWQgMDtmdW5jdGlvbiBzZWxlY3RJblNoYWRvd3MoZSl7aWYodHlwZW9mIHllIT09XCJzdHJpbmdcIil7dmFyIHQ9Y3NzU2hhZG93UGllcmNpbmdEZWVwQ29tYmluYXRvcigpO2lmKHQpe3llPVwiLCBodG1sIFwiK3QrXCIgXCJ9fWlmKCF5ZSl7cmV0dXJuIGV9cmV0dXJuIGUreWUrZS5yZXBsYWNlKC9cXHMqLFxccyovZyxcIixcIikuc3BsaXQoXCIsXCIpLmpvaW4oeWUpfXZhciB4ZT12b2lkIDA7ZnVuY3Rpb24gZmluZERvY3VtZW50SG9zdEVsZW1lbnQoZSl7aWYoIXhlKXt4ZT1zZWxlY3RJblNoYWRvd3MoXCJvYmplY3QsIGlmcmFtZVwiKX1pZihlLl9mcmFtZUVsZW1lbnQhPT11bmRlZmluZWQpe3JldHVybiBlLl9mcmFtZUVsZW1lbnR9ZS5fZnJhbWVFbGVtZW50PW51bGw7dmFyIHQ9ZS5wYXJlbnQuZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCh4ZSk7W10uc29tZS5jYWxsKHQsKGZ1bmN0aW9uKHQpe3ZhciByPWdldENvbnRlbnREb2N1bWVudCh0KTtpZihyIT09ZS5kb2N1bWVudCl7cmV0dXJuIGZhbHNlfWUuX2ZyYW1lRWxlbWVudD10O3JldHVybiB0cnVlfSkpO3JldHVybiBlLl9mcmFtZUVsZW1lbnR9ZnVuY3Rpb24gZ2V0RnJhbWVFbGVtZW50KGUpe3ZhciB0PWdldFdpbmRvdyhlKTtpZighdC5wYXJlbnR8fHQucGFyZW50PT09dCl7cmV0dXJuIG51bGx9dHJ5e3JldHVybiB0LmZyYW1lRWxlbWVudHx8ZmluZERvY3VtZW50SG9zdEVsZW1lbnQodCl9Y2F0Y2goZSl7cmV0dXJuIG51bGx9fXZhciBFZT0vXihhcmVhKSQvO2Z1bmN0aW9uIGNvbXB1dGVkU3R5bGUoZSx0KXtyZXR1cm4gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZSxudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKHQpfWZ1bmN0aW9uIG5vdERpc3BsYXllZChlKXtyZXR1cm4gZS5zb21lKChmdW5jdGlvbihlKXtyZXR1cm4gY29tcHV0ZWRTdHlsZShlLFwiZGlzcGxheVwiKT09PVwibm9uZVwifSkpfWZ1bmN0aW9uIG5vdFZpc2libGUoZSl7dmFyIHQ9ZmluZEluZGV4KGUsKGZ1bmN0aW9uKGUpe3ZhciB0PWNvbXB1dGVkU3R5bGUoZSxcInZpc2liaWxpdHlcIik7cmV0dXJuIHQ9PT1cImhpZGRlblwifHx0PT09XCJjb2xsYXBzZVwifSkpO2lmKHQ9PT0tMSl7cmV0dXJuIGZhbHNlfXZhciByPWZpbmRJbmRleChlLChmdW5jdGlvbihlKXtyZXR1cm4gY29tcHV0ZWRTdHlsZShlLFwidmlzaWJpbGl0eVwiKT09PVwidmlzaWJsZVwifSkpO2lmKHI9PT0tMSl7cmV0dXJuIHRydWV9aWYodDxyKXtyZXR1cm4gdHJ1ZX1yZXR1cm4gZmFsc2V9ZnVuY3Rpb24gY29sbGFwc2VkUGFyZW50KGUpe3ZhciB0PTE7aWYoZVswXS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09XCJzdW1tYXJ5XCIpe3Q9Mn1yZXR1cm4gZS5zbGljZSh0KS5zb21lKChmdW5jdGlvbihlKXtyZXR1cm4gZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09XCJkZXRhaWxzXCImJmUub3Blbj09PWZhbHNlfSkpfWZ1bmN0aW9uIGlzVmlzaWJsZVJ1bGVzKCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4wJiZhcmd1bWVudHNbMF0hPT11bmRlZmluZWQ/YXJndW1lbnRzWzBdOnt9LHQ9ZS5jb250ZXh0LHI9ZS5leGNlcHQsbj1yPT09dW5kZWZpbmVkP3tub3RSZW5kZXJlZDpmYWxzZSxjc3NEaXNwbGF5OmZhbHNlLGNzc1Zpc2liaWxpdHk6ZmFsc2UsZGV0YWlsc0VsZW1lbnQ6ZmFsc2UsYnJvd3NpbmdDb250ZXh0OmZhbHNlfTpyO3ZhciBvPWNvbnRleHRUb0VsZW1lbnQoe2xhYmVsOlwiaXMvdmlzaWJsZVwiLHJlc29sdmVEb2N1bWVudDp0cnVlLGNvbnRleHQ6dH0pO3ZhciBhPW8ubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtpZighbi5ub3RSZW5kZXJlZCYmRWUudGVzdChhKSl7cmV0dXJuIHRydWV9dmFyIGk9Z2V0UGFyZW50cyh7Y29udGV4dDpvfSk7dmFyIGw9YT09PVwiYXVkaW9cIiYmIW8uaGFzQXR0cmlidXRlKFwiY29udHJvbHNcIik7aWYoIW4uY3NzRGlzcGxheSYmbm90RGlzcGxheWVkKGw/aS5zbGljZSgxKTppKSl7cmV0dXJuIGZhbHNlfWlmKCFuLmNzc1Zpc2liaWxpdHkmJm5vdFZpc2libGUoaSkpe3JldHVybiBmYWxzZX1pZighbi5kZXRhaWxzRWxlbWVudCYmY29sbGFwc2VkUGFyZW50KGkpKXtyZXR1cm4gZmFsc2V9aWYoIW4uYnJvd3NpbmdDb250ZXh0KXt2YXIgcz1nZXRGcmFtZUVsZW1lbnQobyk7dmFyIHU9aXNWaXNpYmxlUnVsZXMuZXhjZXB0KG4pO2lmKHMmJiF1KHMpKXtyZXR1cm4gZmFsc2V9fXJldHVybiB0cnVlfWlzVmlzaWJsZVJ1bGVzLmV4Y2VwdD1mdW5jdGlvbigpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmYXJndW1lbnRzWzBdIT09dW5kZWZpbmVkP2FyZ3VtZW50c1swXTp7fTt2YXIgdD1mdW5jdGlvbiBpc1Zpc2libGUodCl7cmV0dXJuIGlzVmlzaWJsZVJ1bGVzKHtjb250ZXh0OnQsZXhjZXB0OmV9KX07dC5ydWxlcz1pc1Zpc2libGVSdWxlcztyZXR1cm4gdH07dmFyIF9lPWlzVmlzaWJsZVJ1bGVzLmV4Y2VwdCh7fSk7ZnVuY3Rpb24gZ2V0TWFwQnlOYW1lKGUsdCl7dmFyIHI9dC5xdWVyeVNlbGVjdG9yKCdtYXBbbmFtZT1cIicrKDAsYS5kZWZhdWx0KShlKSsnXCJdJyk7cmV0dXJuIHJ8fG51bGx9ZnVuY3Rpb24gZ2V0SW1hZ2VPZkFyZWEoZSl7dmFyIHQ9ZS5wYXJlbnRFbGVtZW50O2lmKCF0Lm5hbWV8fHQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSE9PVwibWFwXCIpe3JldHVybiBudWxsfXZhciByPWdldERvY3VtZW50KGUpO3JldHVybiByLnF1ZXJ5U2VsZWN0b3IoJ2ltZ1t1c2VtYXA9XCIjJysoMCxhLmRlZmF1bHQpKHQubmFtZSkrJ1wiXScpfHxudWxsfXZhciB3ZT12b2lkIDA7ZnVuY3Rpb24gaXNWYWxpZEFyZWEoZSl7aWYoIXdlKXt3ZT1fc3VwcG9ydHMoKX12YXIgdD1jb250ZXh0VG9FbGVtZW50KHtsYWJlbDpcImlzL3ZhbGlkLWFyZWFcIixjb250ZXh0OmV9KTt2YXIgcj10Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7aWYociE9PVwiYXJlYVwiKXtyZXR1cm4gZmFsc2V9dmFyIG49dC5oYXNBdHRyaWJ1dGUoXCJ0YWJpbmRleFwiKTtpZighd2UuZm9jdXNBcmVhVGFiaW5kZXgmJm4pe3JldHVybiBmYWxzZX12YXIgbz1nZXRJbWFnZU9mQXJlYSh0KTtpZighb3x8IV9lKG8pKXtyZXR1cm4gZmFsc2V9aWYoIXdlLmZvY3VzQnJva2VuSW1hZ2VNYXAmJighby5jb21wbGV0ZXx8IW8ubmF0dXJhbEhlaWdodHx8by5vZmZzZXRXaWR0aDw9MHx8by5vZmZzZXRIZWlnaHQ8PTApKXtyZXR1cm4gZmFsc2V9aWYoIXdlLmZvY3VzQXJlYVdpdGhvdXRIcmVmJiYhdC5ocmVmKXtyZXR1cm4gd2UuZm9jdXNBcmVhVGFiaW5kZXgmJm58fHdlLmZvY3VzQXJlYUltZ1RhYmluZGV4JiZvLmhhc0F0dHJpYnV0ZShcInRhYmluZGV4XCIpfXZhciBhPWdldFBhcmVudHMoe2NvbnRleHQ6b30pLnNsaWNlKDEpLnNvbWUoKGZ1bmN0aW9uKGUpe3ZhciB0PWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4gdD09PVwiYnV0dG9uXCJ8fHQ9PT1cImFcIn0pKTtpZihhKXtyZXR1cm4gZmFsc2V9cmV0dXJuIHRydWV9dmFyIE9lPXZvaWQgMDt2YXIgamU9dm9pZCAwO3ZhciBrZT17aW5wdXQ6dHJ1ZSxzZWxlY3Q6dHJ1ZSx0ZXh0YXJlYTp0cnVlLGJ1dHRvbjp0cnVlLGZpZWxkc2V0OnRydWUsZm9ybTp0cnVlfTtmdW5jdGlvbiBpc05hdGl2ZURpc2FibGVkU3VwcG9ydGVkKGUpe2lmKCFPZSl7T2U9X3N1cHBvcnRzKCk7aWYoT2UuZm9jdXNGaWVsZHNldERpc2FibGVkKXtkZWxldGUga2UuZmllbGRzZXR9aWYoT2UuZm9jdXNGb3JtRGlzYWJsZWQpe2RlbGV0ZSBrZS5mb3JtfWplPW5ldyBSZWdFeHAoXCJeKFwiK09iamVjdC5rZXlzKGtlKS5qb2luKFwifFwiKStcIikkXCIpfXZhciB0PWNvbnRleHRUb0VsZW1lbnQoe2xhYmVsOlwiaXMvbmF0aXZlLWRpc2FibGVkLXN1cHBvcnRlZFwiLGNvbnRleHQ6ZX0pO3ZhciByPXQubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4gQm9vbGVhbihqZS50ZXN0KHIpKX12YXIgU2U9dm9pZCAwO2Z1bmN0aW9uIGlzRGlzYWJsZWRGaWVsZHNldChlKXt2YXIgdD1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuIHQ9PT1cImZpZWxkc2V0XCImJmUuZGlzYWJsZWR9ZnVuY3Rpb24gaXNEaXNhYmxlZEZvcm0oZSl7dmFyIHQ9ZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybiB0PT09XCJmb3JtXCImJmUuZGlzYWJsZWR9ZnVuY3Rpb24gaXNEaXNhYmxlZChlKXtpZighU2Upe1NlPV9zdXBwb3J0cygpfXZhciB0PWNvbnRleHRUb0VsZW1lbnQoe2xhYmVsOlwiaXMvZGlzYWJsZWRcIixjb250ZXh0OmV9KTtpZih0Lmhhc0F0dHJpYnV0ZShcImRhdGEtYWxseS1kaXNhYmxlZFwiKSl7cmV0dXJuIHRydWV9aWYoIWlzTmF0aXZlRGlzYWJsZWRTdXBwb3J0ZWQodCkpe3JldHVybiBmYWxzZX1pZih0LmRpc2FibGVkKXtyZXR1cm4gdHJ1ZX12YXIgcj1nZXRQYXJlbnRzKHtjb250ZXh0OnR9KTtpZihyLnNvbWUoaXNEaXNhYmxlZEZpZWxkc2V0KSl7cmV0dXJuIHRydWV9aWYoIVNlLmZvY3VzRm9ybURpc2FibGVkJiZyLnNvbWUoaXNEaXNhYmxlZEZvcm0pKXtyZXR1cm4gdHJ1ZX1yZXR1cm4gZmFsc2V9ZnVuY3Rpb24gaXNPbmx5VGFiYmFibGVSdWxlcygpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmYXJndW1lbnRzWzBdIT09dW5kZWZpbmVkP2FyZ3VtZW50c1swXTp7fSx0PWUuY29udGV4dCxyPWUuZXhjZXB0LG49cj09PXVuZGVmaW5lZD97b25seUZvY3VzYWJsZUJyb3dzaW5nQ29udGV4dDpmYWxzZSx2aXNpYmxlOmZhbHNlfTpyO3ZhciBvPWNvbnRleHRUb0VsZW1lbnQoe2xhYmVsOlwiaXMvb25seS10YWJiYWJsZVwiLHJlc29sdmVEb2N1bWVudDp0cnVlLGNvbnRleHQ6dH0pO2lmKCFuLnZpc2libGUmJiFfZShvKSl7cmV0dXJuIGZhbHNlfWlmKCFuLm9ubHlGb2N1c2FibGVCcm93c2luZ0NvbnRleHQmJihzLmlzLkdFQ0tPfHxzLmlzLlRSSURFTlR8fHMuaXMuRURHRSkpe3ZhciBhPWdldEZyYW1lRWxlbWVudChvKTtpZihhKXtpZih0YWJpbmRleFZhbHVlKGEpPDApe3JldHVybiBmYWxzZX19fXZhciBpPW8ubm9kZU5hbWUudG9Mb3dlckNhc2UoKTt2YXIgbD10YWJpbmRleFZhbHVlKG8pO2lmKGk9PT1cImxhYmVsXCImJnMuaXMuR0VDS08pe3JldHVybiBsIT09bnVsbCYmbD49MH1pZihzLmlzLkdFQ0tPJiZvLm93bmVyU1ZHRWxlbWVudCYmIW8uZm9jdXMpe2lmKGk9PT1cImFcIiYmby5oYXNBdHRyaWJ1dGUoXCJ4bGluazpocmVmXCIpKXtpZihzLmlzLkdFQ0tPKXtyZXR1cm4gdHJ1ZX19fXJldHVybiBmYWxzZX1pc09ubHlUYWJiYWJsZVJ1bGVzLmV4Y2VwdD1mdW5jdGlvbigpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmYXJndW1lbnRzWzBdIT09dW5kZWZpbmVkP2FyZ3VtZW50c1swXTp7fTt2YXIgdD1mdW5jdGlvbiBpc09ubHlUYWJiYWJsZSh0KXtyZXR1cm4gaXNPbmx5VGFiYmFibGVSdWxlcyh7Y29udGV4dDp0LGV4Y2VwdDplfSl9O3QucnVsZXM9aXNPbmx5VGFiYmFibGVSdWxlcztyZXR1cm4gdH07dmFyIFRlPWlzT25seVRhYmJhYmxlUnVsZXMuZXhjZXB0KHt9KTt2YXIgQ2U9dm9pZCAwO2Z1bmN0aW9uIGlzT25seUZvY3VzUmVsZXZhbnQoZSl7dmFyIHQ9ZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO2lmKHQ9PT1cImVtYmVkXCJ8fHQ9PT1cImtleWdlblwiKXtyZXR1cm4gdHJ1ZX12YXIgcj10YWJpbmRleFZhbHVlKGUpO2lmKGUuc2hhZG93Um9vdCYmcj09PW51bGwpe3JldHVybiB0cnVlfWlmKHQ9PT1cImxhYmVsXCIpe3JldHVybiFDZS5mb2N1c0xhYmVsVGFiaW5kZXh8fHI9PT1udWxsfWlmKHQ9PT1cImxlZ2VuZFwiKXtyZXR1cm4gcj09PW51bGx9aWYoQ2UuZm9jdXNTdmdGb2N1c2FibGVBdHRyaWJ1dGUmJihlLm93bmVyU1ZHRWxlbWVudHx8dD09PVwic3ZnXCIpKXt2YXIgbj1lLmdldEF0dHJpYnV0ZShcImZvY3VzYWJsZVwiKTtyZXR1cm4gbiYmbj09PVwiZmFsc2VcIn1pZih0PT09XCJpbWdcIiYmZS5oYXNBdHRyaWJ1dGUoXCJ1c2VtYXBcIikpe3JldHVybiByPT09bnVsbHx8IUNlLmZvY3VzSW1nVXNlbWFwVGFiaW5kZXh9aWYodD09PVwiYXJlYVwiKXtyZXR1cm4haXNWYWxpZEFyZWEoZSl9cmV0dXJuIGZhbHNlfWZ1bmN0aW9uIGlzRm9jdXNhYmxlUnVsZXMoKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJmFyZ3VtZW50c1swXSE9PXVuZGVmaW5lZD9hcmd1bWVudHNbMF06e30sdD1lLmNvbnRleHQscj1lLmV4Y2VwdCxuPXI9PT11bmRlZmluZWQ/e2Rpc2FibGVkOmZhbHNlLHZpc2libGU6ZmFsc2Usb25seVRhYmJhYmxlOmZhbHNlfTpyO2lmKCFDZSl7Q2U9X3N1cHBvcnRzKCl9dmFyIG89VGUucnVsZXMuZXhjZXB0KHtvbmx5Rm9jdXNhYmxlQnJvd3NpbmdDb250ZXh0OnRydWUsdmlzaWJsZTpuLnZpc2libGV9KTt2YXIgYT1jb250ZXh0VG9FbGVtZW50KHtsYWJlbDpcImlzL2ZvY3VzYWJsZVwiLHJlc29sdmVEb2N1bWVudDp0cnVlLGNvbnRleHQ6dH0pO3ZhciBpPWhlLnJ1bGVzKHtjb250ZXh0OmEsZXhjZXB0Om59KTtpZighaXx8aXNPbmx5Rm9jdXNSZWxldmFudChhKSl7cmV0dXJuIGZhbHNlfWlmKCFuLmRpc2FibGVkJiZpc0Rpc2FibGVkKGEpKXtyZXR1cm4gZmFsc2V9aWYoIW4ub25seVRhYmJhYmxlJiZvKGEpKXtyZXR1cm4gZmFsc2V9aWYoIW4udmlzaWJsZSl7dmFyIGw9e2NvbnRleHQ6YSxleGNlcHQ6e319O2lmKENlLmZvY3VzSW5IaWRkZW5JZnJhbWUpe2wuZXhjZXB0LmJyb3dzaW5nQ29udGV4dD10cnVlfWlmKENlLmZvY3VzT2JqZWN0U3ZnSGlkZGVuKXt2YXIgcz1hLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7aWYocz09PVwib2JqZWN0XCIpe2wuZXhjZXB0LmNzc1Zpc2liaWxpdHk9dHJ1ZX19aWYoIV9lLnJ1bGVzKGwpKXtyZXR1cm4gZmFsc2V9fXZhciB1PWdldEZyYW1lRWxlbWVudChhKTtpZih1KXt2YXIgYz11Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7aWYoYz09PVwib2JqZWN0XCImJiFDZS5mb2N1c0luWmVyb0RpbWVuc2lvbk9iamVjdCl7aWYoIXUub2Zmc2V0V2lkdGh8fCF1Lm9mZnNldEhlaWdodCl7cmV0dXJuIGZhbHNlfX19dmFyIGQ9YS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO2lmKGQ9PT1cInN2Z1wiJiZDZS5mb2N1c1N2Z0luSWZyYW1lJiYhdSYmYS5nZXRBdHRyaWJ1dGUoXCJ0YWJpbmRleFwiKT09PW51bGwpe3JldHVybiBmYWxzZX1yZXR1cm4gdHJ1ZX1pc0ZvY3VzYWJsZVJ1bGVzLmV4Y2VwdD1mdW5jdGlvbigpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmYXJndW1lbnRzWzBdIT09dW5kZWZpbmVkP2FyZ3VtZW50c1swXTp7fTt2YXIgdD1mdW5jdGlvbiBpc0ZvY3VzYWJsZSh0KXtyZXR1cm4gaXNGb2N1c2FibGVSdWxlcyh7Y29udGV4dDp0LGV4Y2VwdDplfSl9O3QucnVsZXM9aXNGb2N1c2FibGVSdWxlcztyZXR1cm4gdH07dmFyIERlPWlzRm9jdXNhYmxlUnVsZXMuZXhjZXB0KHt9KTtmdW5jdGlvbiBjcmVhdGVGaWx0ZXIoZSl7dmFyIHQ9ZnVuY3Rpb24gZmlsdGVyKHQpe2lmKHQuc2hhZG93Um9vdCl7cmV0dXJuIE5vZGVGaWx0ZXIuRklMVEVSX0FDQ0VQVH1pZihlKHQpKXtyZXR1cm4gTm9kZUZpbHRlci5GSUxURVJfQUNDRVBUfXJldHVybiBOb2RlRmlsdGVyLkZJTFRFUl9TS0lQfTt0LmFjY2VwdE5vZGU9dDtyZXR1cm4gdH12YXIgUGU9Y3JlYXRlRmlsdGVyKGhlKTtmdW5jdGlvbiBxdWVyeUZvY3VzYWJsZVN0cmljdCgpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmYXJndW1lbnRzWzBdIT09dW5kZWZpbmVkP2FyZ3VtZW50c1swXTp7fSx0PWUuY29udGV4dCxyPWUuaW5jbHVkZUNvbnRleHQsbj1lLmluY2x1ZGVPbmx5VGFiYmFibGUsbz1lLnN0cmF0ZWd5O2lmKCF0KXt0PWRvY3VtZW50LmRvY3VtZW50RWxlbWVudH12YXIgYT1EZS5ydWxlcy5leGNlcHQoe29ubHlUYWJiYWJsZTpufSk7dmFyIGk9Z2V0RG9jdW1lbnQodCk7dmFyIGw9aS5jcmVhdGVUcmVlV2Fsa2VyKHQsTm9kZUZpbHRlci5TSE9XX0VMRU1FTlQsbz09PVwiYWxsXCI/UGU6Y3JlYXRlRmlsdGVyKGEpLGZhbHNlKTt2YXIgcz1bXTt3aGlsZShsLm5leHROb2RlKCkpe2lmKGwuY3VycmVudE5vZGUuc2hhZG93Um9vdCl7aWYoYShsLmN1cnJlbnROb2RlKSl7cy5wdXNoKGwuY3VycmVudE5vZGUpfXM9cy5jb25jYXQocXVlcnlGb2N1c2FibGVTdHJpY3Qoe2NvbnRleHQ6bC5jdXJyZW50Tm9kZS5zaGFkb3dSb290LGluY2x1ZGVPbmx5VGFiYmFibGU6bixzdHJhdGVneTpvfSkpfWVsc2V7cy5wdXNoKGwuY3VycmVudE5vZGUpfX1pZihyKXtpZihvPT09XCJhbGxcIil7aWYoaGUodCkpe3MudW5zaGlmdCh0KX19ZWxzZSBpZihhKHQpKXtzLnVuc2hpZnQodCl9fXJldHVybiBzfXZhciBNZT12b2lkIDA7dmFyIE5lPXZvaWQgMDtmdW5jdGlvbiBzZWxlY3RvciQyKCl7aWYoIU1lKXtNZT1fc3VwcG9ydHMoKX1pZih0eXBlb2YgTmU9PT1cInN0cmluZ1wiKXtyZXR1cm4gTmV9TmU9XCJcIisoTWUuZm9jdXNUYWJsZT9cInRhYmxlLCB0ZCxcIjpcIlwiKSsoTWUuZm9jdXNGaWVsZHNldD9cImZpZWxkc2V0LFwiOlwiXCIpK1wic3ZnIGEsXCIrXCJhW2hyZWZdLFwiK1wiYXJlYVtocmVmXSxcIitcImlucHV0LCBzZWxlY3QsIHRleHRhcmVhLCBidXR0b24sXCIrXCJpZnJhbWUsIG9iamVjdCwgZW1iZWQsXCIrXCJrZXlnZW4sXCIrKE1lLmZvY3VzQXVkaW9XaXRob3V0Q29udHJvbHM/XCJhdWRpbyxcIjpcImF1ZGlvW2NvbnRyb2xzXSxcIikrKE1lLmZvY3VzVmlkZW9XaXRob3V0Q29udHJvbHM/XCJ2aWRlbyxcIjpcInZpZGVvW2NvbnRyb2xzXSxcIikrKE1lLmZvY3VzU3VtbWFyeT9cInN1bW1hcnksXCI6XCJcIikrXCJbdGFiaW5kZXhdLFwiK1wiW2NvbnRlbnRlZGl0YWJsZV1cIjtOZT1zZWxlY3RJblNoYWRvd3MoTmUpO3JldHVybiBOZX1mdW5jdGlvbiBxdWVyeUZvY3VzYWJsZVF1aWNrKCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4wJiZhcmd1bWVudHNbMF0hPT11bmRlZmluZWQ/YXJndW1lbnRzWzBdOnt9LHQ9ZS5jb250ZXh0LHI9ZS5pbmNsdWRlQ29udGV4dCxuPWUuaW5jbHVkZU9ubHlUYWJiYWJsZTt2YXIgbz1zZWxlY3RvciQyKCk7dmFyIGE9dC5xdWVyeVNlbGVjdG9yQWxsKG8pO3ZhciBpPURlLnJ1bGVzLmV4Y2VwdCh7b25seVRhYmJhYmxlOm59KTt2YXIgbD1bXS5maWx0ZXIuY2FsbChhLGkpO2lmKHImJmkodCkpe2wudW5zaGlmdCh0KX1yZXR1cm4gbH1mdW5jdGlvbiBxdWVyeUZvY3VzYWJsZSgpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmYXJndW1lbnRzWzBdIT09dW5kZWZpbmVkP2FyZ3VtZW50c1swXTp7fSx0PWUuY29udGV4dCxyPWUuaW5jbHVkZUNvbnRleHQsbj1lLmluY2x1ZGVPbmx5VGFiYmFibGUsbz1lLnN0cmF0ZWd5LGE9bz09PXVuZGVmaW5lZD9cInF1aWNrXCI6bzt2YXIgaT1jb250ZXh0VG9FbGVtZW50KHtsYWJlbDpcInF1ZXJ5L2ZvY3VzYWJsZVwiLHJlc29sdmVEb2N1bWVudDp0cnVlLGRlZmF1bHRUb0RvY3VtZW50OnRydWUsY29udGV4dDp0fSk7dmFyIGw9e2NvbnRleHQ6aSxpbmNsdWRlQ29udGV4dDpyLGluY2x1ZGVPbmx5VGFiYmFibGU6bixzdHJhdGVneTphfTtpZihhPT09XCJxdWlja1wiKXtyZXR1cm4gcXVlcnlGb2N1c2FibGVRdWljayhsKX1lbHNlIGlmKGE9PT1cInN0cmljdFwifHxhPT09XCJhbGxcIil7cmV0dXJuIHF1ZXJ5Rm9jdXNhYmxlU3RyaWN0KGwpfXRocm93IG5ldyBUeXBlRXJyb3IoJ3F1ZXJ5L2ZvY3VzYWJsZSByZXF1aXJlcyBvcHRpb24uc3RyYXRlZ3kgdG8gYmUgb25lIG9mIFtcInF1aWNrXCIsIFwic3RyaWN0XCIsIFwiYWxsXCJdJyl9dmFyIEFlPXZvaWQgMDt2YXIgUmU9L14oZmllbGRzZXR8dGFibGV8dGR8Ym9keSkkLztmdW5jdGlvbiBpc1RhYmJhYmxlUnVsZXMoKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJmFyZ3VtZW50c1swXSE9PXVuZGVmaW5lZD9hcmd1bWVudHNbMF06e30sdD1lLmNvbnRleHQscj1lLmV4Y2VwdCxuPXI9PT11bmRlZmluZWQ/e2ZsZXhib3g6ZmFsc2Usc2Nyb2xsYWJsZTpmYWxzZSxzaGFkb3c6ZmFsc2UsdmlzaWJsZTpmYWxzZSxvbmx5VGFiYmFibGU6ZmFsc2V9OnI7aWYoIUFlKXtBZT1fc3VwcG9ydHMoKX12YXIgbz1jb250ZXh0VG9FbGVtZW50KHtsYWJlbDpcImlzL3RhYmJhYmxlXCIscmVzb2x2ZURvY3VtZW50OnRydWUsY29udGV4dDp0fSk7aWYocy5pcy5CTElOSyYmcy5pcy5BTkRST0lEJiZzLm1ham9yVmVyc2lvbj40Mil7cmV0dXJuIGZhbHNlfXZhciBhPWdldEZyYW1lRWxlbWVudChvKTtpZihhKXtpZihzLmlzLldFQktJVCYmcy5pcy5JT1Mpe3JldHVybiBmYWxzZX1pZih0YWJpbmRleFZhbHVlKGEpPDApe3JldHVybiBmYWxzZX1pZighbi52aXNpYmxlJiYocy5pcy5CTElOS3x8cy5pcy5XRUJLSVQpJiYhX2UoYSkpe3JldHVybiBmYWxzZX12YXIgaT1hLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7aWYoaT09PVwib2JqZWN0XCIpe3ZhciBsPXMubmFtZT09PVwiQ2hyb21lXCImJnMubWFqb3JWZXJzaW9uPj01NHx8cy5uYW1lPT09XCJPcGVyYVwiJiZzLm1ham9yVmVyc2lvbj49NDE7aWYocy5pcy5XRUJLSVR8fHMuaXMuQkxJTksmJiFsKXtyZXR1cm4gZmFsc2V9fX12YXIgdT1vLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7dmFyIGM9dGFiaW5kZXhWYWx1ZShvKTt2YXIgZD1jPT09bnVsbD9udWxsOmM+PTA7aWYocy5pcy5FREdFJiZzLm1ham9yVmVyc2lvbj49MTQmJmEmJm8ub3duZXJTVkdFbGVtZW50JiZjPDApe3JldHVybiB0cnVlfXZhciBmPWQhPT1mYWxzZTt2YXIgbT1jIT09bnVsbCYmYz49MDtpZihvLmhhc0F0dHJpYnV0ZShcImNvbnRlbnRlZGl0YWJsZVwiKSl7cmV0dXJuIGZ9aWYoUmUudGVzdCh1KSYmZCE9PXRydWUpe3JldHVybiBmYWxzZX1pZihzLmlzLldFQktJVCYmcy5pcy5JT1Mpe3ZhciBwPXU9PT1cImlucHV0XCImJm8udHlwZT09PVwidGV4dFwifHxvLnR5cGU9PT1cInBhc3N3b3JkXCJ8fHU9PT1cInNlbGVjdFwifHx1PT09XCJ0ZXh0YXJlYVwifHxvLmhhc0F0dHJpYnV0ZShcImNvbnRlbnRlZGl0YWJsZVwiKTtpZighcCl7dmFyIGI9d2luZG93LmdldENvbXB1dGVkU3R5bGUobyxudWxsKTtwPWlzVXNlck1vZGlmeVdyaXRhYmxlKGIpfWlmKCFwKXtyZXR1cm4gZmFsc2V9fWlmKHU9PT1cInVzZVwiJiZjIT09bnVsbCl7aWYocy5pcy5CTElOS3x8cy5pcy5XRUJLSVQmJnMubWFqb3JWZXJzaW9uPT09OSl7cmV0dXJuIHRydWV9fWlmKGVsZW1lbnRNYXRjaGVzKG8sXCJzdmcgYVwiKSYmby5oYXNBdHRyaWJ1dGUoXCJ4bGluazpocmVmXCIpKXtpZihmKXtyZXR1cm4gdHJ1ZX1pZihvLmZvY3VzJiYhQWUuZm9jdXNTdmdOZWdhdGl2ZVRhYmluZGV4QXR0cmlidXRlKXtyZXR1cm4gdHJ1ZX19aWYodT09PVwic3ZnXCImJkFlLmZvY3VzU3ZnSW5JZnJhbWUmJmYpe3JldHVybiB0cnVlfWlmKHMuaXMuVFJJREVOVHx8cy5pcy5FREdFKXtpZih1PT09XCJzdmdcIil7aWYoQWUuZm9jdXNTdmcpe3JldHVybiB0cnVlfXJldHVybiBvLmhhc0F0dHJpYnV0ZShcImZvY3VzYWJsZVwiKXx8bX1pZihvLm93bmVyU1ZHRWxlbWVudCl7aWYoQWUuZm9jdXNTdmdUYWJpbmRleEF0dHJpYnV0ZSYmbSl7cmV0dXJuIHRydWV9cmV0dXJuIG8uaGFzQXR0cmlidXRlKFwiZm9jdXNhYmxlXCIpfX1pZihvLnRhYkluZGV4PT09dW5kZWZpbmVkKXtyZXR1cm4gQm9vbGVhbihuLm9ubHlUYWJiYWJsZSl9aWYodT09PVwiYXVkaW9cIil7aWYoIW8uaGFzQXR0cmlidXRlKFwiY29udHJvbHNcIikpe3JldHVybiBmYWxzZX1lbHNlIGlmKHMuaXMuQkxJTkspe3JldHVybiB0cnVlfX1pZih1PT09XCJ2aWRlb1wiKXtpZighby5oYXNBdHRyaWJ1dGUoXCJjb250cm9sc1wiKSl7aWYocy5pcy5UUklERU5UfHxzLmlzLkVER0Upe3JldHVybiBmYWxzZX19ZWxzZSBpZihzLmlzLkJMSU5LfHxzLmlzLkdFQ0tPKXtyZXR1cm4gdHJ1ZX19aWYodT09PVwib2JqZWN0XCIpe2lmKHMuaXMuQkxJTkt8fHMuaXMuV0VCS0lUKXtyZXR1cm4gZmFsc2V9fWlmKHU9PT1cImlmcmFtZVwiKXtyZXR1cm4gZmFsc2V9aWYoIW4uc2Nyb2xsYWJsZSYmcy5pcy5HRUNLTyl7dmFyIHY9d2luZG93LmdldENvbXB1dGVkU3R5bGUobyxudWxsKTtpZihoYXNDc3NPdmVyZmxvd1Njcm9sbCh2KSl7cmV0dXJuIGZ9fWlmKHMuaXMuVFJJREVOVHx8cy5pcy5FREdFKXtpZih1PT09XCJhcmVhXCIpe3ZhciBnPWdldEltYWdlT2ZBcmVhKG8pO2lmKGcmJnRhYmluZGV4VmFsdWUoZyk8MCl7cmV0dXJuIGZhbHNlfX12YXIgaD13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShvLG51bGwpO2lmKGlzVXNlck1vZGlmeVdyaXRhYmxlKGgpKXtyZXR1cm4gby50YWJJbmRleD49MH1pZighbi5mbGV4Ym94JiZoYXNDc3NEaXNwbGF5RmxleChoKSl7aWYoYyE9PW51bGwpe3JldHVybiBtfXJldHVybiBGZShvKSYmSWUobyl9aWYoaXNTY3JvbGxhYmxlQ29udGFpbmVyKG8sdSkpe3JldHVybiBmYWxzZX12YXIgeT1vLnBhcmVudEVsZW1lbnQ7aWYoeSl7dmFyIHg9eS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3ZhciBFPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHksbnVsbCk7aWYoaXNTY3JvbGxhYmxlQ29udGFpbmVyKHksdSx4LEUpKXtyZXR1cm4gZmFsc2V9aWYoaGFzQ3NzRGlzcGxheUZsZXgoRSkpe3JldHVybiBtfX19cmV0dXJuIG8udGFiSW5kZXg+PTB9aXNUYWJiYWJsZVJ1bGVzLmV4Y2VwdD1mdW5jdGlvbigpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmYXJndW1lbnRzWzBdIT09dW5kZWZpbmVkP2FyZ3VtZW50c1swXTp7fTt2YXIgdD1mdW5jdGlvbiBpc1RhYmJhYmxlKHQpe3JldHVybiBpc1RhYmJhYmxlUnVsZXMoe2NvbnRleHQ6dCxleGNlcHQ6ZX0pfTt0LnJ1bGVzPWlzVGFiYmFibGVSdWxlcztyZXR1cm4gdH07dmFyIEZlPWhlLnJ1bGVzLmV4Y2VwdCh7ZmxleGJveDp0cnVlfSk7dmFyIEllPWlzVGFiYmFibGVSdWxlcy5leGNlcHQoe2ZsZXhib3g6dHJ1ZX0pO3ZhciBMZT1pc1RhYmJhYmxlUnVsZXMuZXhjZXB0KHt9KTtmdW5jdGlvbiBxdWVyeVRhYmJhYmxlKCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4wJiZhcmd1bWVudHNbMF0hPT11bmRlZmluZWQ/YXJndW1lbnRzWzBdOnt9LHQ9ZS5jb250ZXh0LHI9ZS5pbmNsdWRlQ29udGV4dCxuPWUuaW5jbHVkZU9ubHlUYWJiYWJsZSxvPWUuc3RyYXRlZ3k7dmFyIGE9TGUucnVsZXMuZXhjZXB0KHtvbmx5VGFiYmFibGU6bn0pO3JldHVybiBxdWVyeUZvY3VzYWJsZSh7Y29udGV4dDp0LGluY2x1ZGVDb250ZXh0OnIsaW5jbHVkZU9ubHlUYWJiYWJsZTpuLHN0cmF0ZWd5Om99KS5maWx0ZXIoYSl9ZnVuY3Rpb24gY29tcGFyZURvbVBvc2l0aW9uKGUsdCl7cmV0dXJuIGUuY29tcGFyZURvY3VtZW50UG9zaXRpb24odCkmTm9kZS5ET0NVTUVOVF9QT1NJVElPTl9GT0xMT1dJTkc/LTE6MX1mdW5jdGlvbiBzb3J0RG9tT3JkZXIoZSl7cmV0dXJuIGUuc29ydChjb21wYXJlRG9tUG9zaXRpb24pfWZ1bmN0aW9uIGdldEZpcnN0U3VjY2Vzc29yT2Zmc2V0KGUsdCl7cmV0dXJuIGZpbmRJbmRleChlLChmdW5jdGlvbihlKXtyZXR1cm4gdC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihlKSZOb2RlLkRPQ1VNRU5UX1BPU0lUSU9OX0ZPTExPV0lOR30pKX1mdW5jdGlvbiBmaW5kSW5zZXJ0aW9uT2Zmc2V0cyhlLHQscil7dmFyIG49W107dC5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgbz10cnVlO3ZhciBhPWUuaW5kZXhPZih0KTtpZihhPT09LTEpe2E9Z2V0Rmlyc3RTdWNjZXNzb3JPZmZzZXQoZSx0KTtvPWZhbHNlfWlmKGE9PT0tMSl7YT1lLmxlbmd0aH12YXIgaT1ub2RlQXJyYXkocj9yKHQpOnQpO2lmKCFpLmxlbmd0aCl7cmV0dXJufW4ucHVzaCh7b2Zmc2V0OmEscmVwbGFjZTpvLGVsZW1lbnRzOml9KX0pKTtyZXR1cm4gbn1mdW5jdGlvbiBpbnNlcnRFbGVtZW50c0F0T2Zmc2V0cyhlLHQpe3ZhciByPTA7dC5zb3J0KChmdW5jdGlvbihlLHQpe3JldHVybiBlLm9mZnNldC10Lm9mZnNldH0pKTt0LmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBuPXQucmVwbGFjZT8xOjA7dmFyIG89W3Qub2Zmc2V0K3Isbl0uY29uY2F0KHQuZWxlbWVudHMpO2Uuc3BsaWNlLmFwcGx5KGUsbyk7cis9dC5lbGVtZW50cy5sZW5ndGgtbn0pKX1mdW5jdGlvbiBtZXJnZUluRG9tT3JkZXIoKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJmFyZ3VtZW50c1swXSE9PXVuZGVmaW5lZD9hcmd1bWVudHNbMF06e30sdD1lLmxpc3Qscj1lLmVsZW1lbnRzLG49ZS5yZXNvbHZlRWxlbWVudDt2YXIgbz10LnNsaWNlKDApO3ZhciBhPW5vZGVBcnJheShyKS5zbGljZSgwKTtzb3J0RG9tT3JkZXIoYSk7dmFyIGk9ZmluZEluc2VydGlvbk9mZnNldHMobyxhLG4pO2luc2VydEVsZW1lbnRzQXRPZmZzZXRzKG8saSk7cmV0dXJuIG99dmFyIEJlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyhlLHQpe2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgbj10W3JdO24uZW51bWVyYWJsZT1uLmVudW1lcmFibGV8fGZhbHNlO24uY29uZmlndXJhYmxlPXRydWU7aWYoXCJ2YWx1ZVwiaW4gbiluLndyaXRhYmxlPXRydWU7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbi5rZXksbil9fXJldHVybiBmdW5jdGlvbihlLHQscil7aWYodClkZWZpbmVQcm9wZXJ0aWVzKGUucHJvdG90eXBlLHQpO2lmKHIpZGVmaW5lUHJvcGVydGllcyhlLHIpO3JldHVybiBlfX0oKTtmdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl7dGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKX19dmFyIEhlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gTWFwcyhlKXtfY2xhc3NDYWxsQ2hlY2sodGhpcyxNYXBzKTt0aGlzLl9kb2N1bWVudD1nZXREb2N1bWVudChlKTt0aGlzLm1hcHM9e319QmUoTWFwcyxbe2tleTpcImdldEFyZWFzRm9yXCIsdmFsdWU6ZnVuY3Rpb24gZ2V0QXJlYXNGb3IoZSl7aWYoIXRoaXMubWFwc1tlXSl7dGhpcy5hZGRNYXBCeU5hbWUoZSl9cmV0dXJuIHRoaXMubWFwc1tlXX19LHtrZXk6XCJhZGRNYXBCeU5hbWVcIix2YWx1ZTpmdW5jdGlvbiBhZGRNYXBCeU5hbWUoZSl7dmFyIHQ9Z2V0TWFwQnlOYW1lKGUsdGhpcy5fZG9jdW1lbnQpO2lmKCF0KXtyZXR1cm59dGhpcy5tYXBzW3QubmFtZV09cXVlcnlUYWJiYWJsZSh7Y29udGV4dDp0fSl9fSx7a2V5OlwiZXh0cmFjdEFyZWFzRnJvbUxpc3RcIix2YWx1ZTpmdW5jdGlvbiBleHRyYWN0QXJlYXNGcm9tTGlzdChlKXtyZXR1cm4gZS5maWx0ZXIoKGZ1bmN0aW9uKGUpe3ZhciB0PWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtpZih0IT09XCJhcmVhXCIpe3JldHVybiB0cnVlfXZhciByPWUucGFyZW50Tm9kZTtpZighdGhpcy5tYXBzW3IubmFtZV0pe3RoaXMubWFwc1tyLm5hbWVdPVtdfXRoaXMubWFwc1tyLm5hbWVdLnB1c2goZSk7cmV0dXJuIGZhbHNlfSksdGhpcyl9fV0pO3JldHVybiBNYXBzfSgpO2Z1bmN0aW9uIHNvcnRBcmVhKGUsdCl7dmFyIHI9dC5xdWVyeVNlbGVjdG9yQWxsKFwiaW1nW3VzZW1hcF1cIik7dmFyIG49bmV3IEhlKHQpO3ZhciBvPW4uZXh0cmFjdEFyZWFzRnJvbUxpc3QoZSk7aWYoIXIubGVuZ3RoKXtyZXR1cm4gb31yZXR1cm4gbWVyZ2VJbkRvbU9yZGVyKHtsaXN0Om8sZWxlbWVudHM6cixyZXNvbHZlRWxlbWVudDpmdW5jdGlvbiByZXNvbHZlRWxlbWVudChlKXt2YXIgdD1lLmdldEF0dHJpYnV0ZShcInVzZW1hcFwiKS5zbGljZSgxKTtyZXR1cm4gbi5nZXRBcmVhc0Zvcih0KX19KX12YXIgemU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKGUsdCl7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspe3ZhciBuPXRbcl07bi5lbnVtZXJhYmxlPW4uZW51bWVyYWJsZXx8ZmFsc2U7bi5jb25maWd1cmFibGU9dHJ1ZTtpZihcInZhbHVlXCJpbiBuKW4ud3JpdGFibGU9dHJ1ZTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxuLmtleSxuKX19cmV0dXJuIGZ1bmN0aW9uKGUsdCxyKXtpZih0KWRlZmluZVByb3BlcnRpZXMoZS5wcm90b3R5cGUsdCk7aWYocilkZWZpbmVQcm9wZXJ0aWVzKGUscik7cmV0dXJuIGV9fSgpO2Z1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayQxKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpe3Rocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIil9fXZhciBxZT1mdW5jdGlvbigpe2Z1bmN0aW9uIFNoYWRvd3MoZSx0KXtfY2xhc3NDYWxsQ2hlY2skMSh0aGlzLFNoYWRvd3MpO3RoaXMuY29udGV4dD1lO3RoaXMuc29ydEVsZW1lbnRzPXQ7dGhpcy5ob3N0Q291bnRlcj0xO3RoaXMuaW5Ib3N0PXt9O3RoaXMuaW5Eb2N1bWVudD1bXTt0aGlzLmhvc3RzPXt9O3RoaXMuZWxlbWVudHM9e319emUoU2hhZG93cyxbe2tleTpcIl9yZWdpc3Rlckhvc3RcIix2YWx1ZTpmdW5jdGlvbiBfcmVnaXN0ZXJIb3N0KGUpe2lmKGUuX3NvcnRpbmdJZCl7cmV0dXJufWUuX3NvcnRpbmdJZD1cInNoYWRvdy1cIit0aGlzLmhvc3RDb3VudGVyKys7dGhpcy5ob3N0c1tlLl9zb3J0aW5nSWRdPWU7dmFyIHQ9Z2V0U2hhZG93SG9zdCh7Y29udGV4dDplfSk7aWYodCl7dGhpcy5fcmVnaXN0ZXJIb3N0KHQpO3RoaXMuX3JlZ2lzdGVySG9zdFBhcmVudChlLHQpfWVsc2V7dGhpcy5pbkRvY3VtZW50LnB1c2goZSl9fX0se2tleTpcIl9yZWdpc3Rlckhvc3RQYXJlbnRcIix2YWx1ZTpmdW5jdGlvbiBfcmVnaXN0ZXJIb3N0UGFyZW50KGUsdCl7aWYoIXRoaXMuaW5Ib3N0W3QuX3NvcnRpbmdJZF0pe3RoaXMuaW5Ib3N0W3QuX3NvcnRpbmdJZF09W119dGhpcy5pbkhvc3RbdC5fc29ydGluZ0lkXS5wdXNoKGUpfX0se2tleTpcIl9yZWdpc3RlckVsZW1lbnRcIix2YWx1ZTpmdW5jdGlvbiBfcmVnaXN0ZXJFbGVtZW50KGUsdCl7aWYoIXRoaXMuZWxlbWVudHNbdC5fc29ydGluZ0lkXSl7dGhpcy5lbGVtZW50c1t0Ll9zb3J0aW5nSWRdPVtdfXRoaXMuZWxlbWVudHNbdC5fc29ydGluZ0lkXS5wdXNoKGUpfX0se2tleTpcImV4dHJhY3RFbGVtZW50c1wiLHZhbHVlOmZ1bmN0aW9uIGV4dHJhY3RFbGVtZW50cyhlKXtyZXR1cm4gZS5maWx0ZXIoKGZ1bmN0aW9uKGUpe3ZhciB0PWdldFNoYWRvd0hvc3Qoe2NvbnRleHQ6ZX0pO2lmKCF0KXtyZXR1cm4gdHJ1ZX10aGlzLl9yZWdpc3Rlckhvc3QodCk7dGhpcy5fcmVnaXN0ZXJFbGVtZW50KGUsdCk7cmV0dXJuIGZhbHNlfSksdGhpcyl9fSx7a2V5Olwic29ydFwiLHZhbHVlOmZ1bmN0aW9uIHNvcnQoZSl7dmFyIHQ9dGhpcy5faW5qZWN0SG9zdHMoZSk7dD10aGlzLl9yZXBsYWNlSG9zdHModCk7dGhpcy5fY2xlYW51cCgpO3JldHVybiB0fX0se2tleTpcIl9pbmplY3RIb3N0c1wiLHZhbHVlOmZ1bmN0aW9uIF9pbmplY3RIb3N0cyhlKXtPYmplY3Qua2V5cyh0aGlzLmhvc3RzKS5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgdD10aGlzLmVsZW1lbnRzW2VdO3ZhciByPXRoaXMuaW5Ib3N0W2VdO3ZhciBuPXRoaXMuaG9zdHNbZV0uc2hhZG93Um9vdDt0aGlzLmVsZW1lbnRzW2VdPXRoaXMuX21lcmdlKHQscixuKX0pLHRoaXMpO3JldHVybiB0aGlzLl9tZXJnZShlLHRoaXMuaW5Eb2N1bWVudCx0aGlzLmNvbnRleHQpfX0se2tleTpcIl9tZXJnZVwiLHZhbHVlOmZ1bmN0aW9uIF9tZXJnZShlLHQscil7dmFyIG49bWVyZ2VJbkRvbU9yZGVyKHtsaXN0OmUsZWxlbWVudHM6dH0pO3JldHVybiB0aGlzLnNvcnRFbGVtZW50cyhuLHIpfX0se2tleTpcIl9yZXBsYWNlSG9zdHNcIix2YWx1ZTpmdW5jdGlvbiBfcmVwbGFjZUhvc3RzKGUpe3JldHVybiBtZXJnZUluRG9tT3JkZXIoe2xpc3Q6ZSxlbGVtZW50czp0aGlzLmluRG9jdW1lbnQscmVzb2x2ZUVsZW1lbnQ6dGhpcy5fcmVzb2x2ZUhvc3RFbGVtZW50LmJpbmQodGhpcyl9KX19LHtrZXk6XCJfcmVzb2x2ZUhvc3RFbGVtZW50XCIsdmFsdWU6ZnVuY3Rpb24gX3Jlc29sdmVIb3N0RWxlbWVudChlKXt2YXIgdD1tZXJnZUluRG9tT3JkZXIoe2xpc3Q6dGhpcy5lbGVtZW50c1tlLl9zb3J0aW5nSWRdLGVsZW1lbnRzOnRoaXMuaW5Ib3N0W2UuX3NvcnRpbmdJZF0scmVzb2x2ZUVsZW1lbnQ6dGhpcy5fcmVzb2x2ZUhvc3RFbGVtZW50LmJpbmQodGhpcyl9KTt2YXIgcj10YWJpbmRleFZhbHVlKGUpO2lmKHIhPT1udWxsJiZyPi0xKXtyZXR1cm5bZV0uY29uY2F0KHQpfXJldHVybiB0fX0se2tleTpcIl9jbGVhbnVwXCIsdmFsdWU6ZnVuY3Rpb24gX2NsZWFudXAoKXtPYmplY3Qua2V5cyh0aGlzLmhvc3RzKS5mb3JFYWNoKChmdW5jdGlvbihlKXtkZWxldGUgdGhpcy5ob3N0c1tlXS5fc29ydGluZ0lkfSksdGhpcyl9fV0pO3JldHVybiBTaGFkb3dzfSgpO2Z1bmN0aW9uIHNvcnRTaGFkb3dlZChlLHQscil7dmFyIG49bmV3IHFlKHQscik7dmFyIG89bi5leHRyYWN0RWxlbWVudHMoZSk7aWYoby5sZW5ndGg9PT1lLmxlbmd0aCl7cmV0dXJuIHIoZSl9cmV0dXJuIG4uc29ydChvKX1mdW5jdGlvbiBzb3J0VGFiaW5kZXgoZSl7dmFyIHQ9e307dmFyIHI9W107dmFyIG49ZS5maWx0ZXIoKGZ1bmN0aW9uKGUpe3ZhciBuPWUudGFiSW5kZXg7aWYobj09PXVuZGVmaW5lZCl7bj10YWJpbmRleFZhbHVlKGUpfWlmKG48PTB8fG49PT1udWxsfHxuPT09dW5kZWZpbmVkKXtyZXR1cm4gdHJ1ZX1pZighdFtuXSl7dFtuXT1bXTtyLnB1c2gobil9dFtuXS5wdXNoKGUpO3JldHVybiBmYWxzZX0pKTt2YXIgbz1yLnNvcnQoKS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiB0W2VdfSkpLnJlZHVjZVJpZ2h0KChmdW5jdGlvbihlLHQpe3JldHVybiB0LmNvbmNhdChlKX0pLG4pO3JldHVybiBvfXZhciBXZT12b2lkIDA7ZnVuY3Rpb24gbW92ZUNvbnRleHRUb0JlZ2lubmluZyhlLHQpe3ZhciByPWUuaW5kZXhPZih0KTtpZihyPjApe3ZhciBuPWUuc3BsaWNlKHIsMSk7cmV0dXJuIG4uY29uY2F0KGUpfXJldHVybiBlfWZ1bmN0aW9uIHNvcnRFbGVtZW50cyhlLHQpe2lmKFdlLnRhYnNlcXVlbmNlQXJlYUF0SW1nUG9zaXRpb24pe2U9c29ydEFyZWEoZSx0KX1lPXNvcnRUYWJpbmRleChlKTtyZXR1cm4gZX1mdW5jdGlvbiBxdWVyeVRhYnNlcXVlbmNlKCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4wJiZhcmd1bWVudHNbMF0hPT11bmRlZmluZWQ/YXJndW1lbnRzWzBdOnt9LHQ9ZS5jb250ZXh0LHI9ZS5pbmNsdWRlQ29udGV4dCxuPWUuaW5jbHVkZU9ubHlUYWJiYWJsZSxvPWUuc3RyYXRlZ3k7aWYoIVdlKXtXZT1fc3VwcG9ydHMoKX12YXIgYT1ub2RlQXJyYXkodClbMF18fGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDt2YXIgaT1xdWVyeVRhYmJhYmxlKHtjb250ZXh0OmEsaW5jbHVkZUNvbnRleHQ6cixpbmNsdWRlT25seVRhYmJhYmxlOm4sc3RyYXRlZ3k6b30pO2lmKGRvY3VtZW50LmJvZHkuY3JlYXRlU2hhZG93Um9vdCYmcy5pcy5CTElOSyl7aT1zb3J0U2hhZG93ZWQoaSxhLHNvcnRFbGVtZW50cyl9ZWxzZXtpPXNvcnRFbGVtZW50cyhpLGEpfWlmKHIpe2k9bW92ZUNvbnRleHRUb0JlZ2lubmluZyhpLGEpfXJldHVybiBpfXZhciBVZT17dGFiOjksbGVmdDozNyx1cDozOCxyaWdodDozOSxkb3duOjQwLHBhZ2VVcDozMyxcInBhZ2UtdXBcIjozMyxwYWdlRG93bjozNCxcInBhZ2UtZG93blwiOjM0LGVuZDozNSxob21lOjM2LGVudGVyOjEzLGVzY2FwZToyNyxzcGFjZTozMixzaGlmdDoxNixjYXBzTG9jazoyMCxcImNhcHMtbG9ja1wiOjIwLGN0cmw6MTcsYWx0OjE4LG1ldGE6OTEscGF1c2U6MTksaW5zZXJ0OjQ1LGRlbGV0ZTo0NixiYWNrc3BhY2U6OCxfYWxpYXM6ezkxOls5Miw5MywyMjRdfX07Zm9yKHZhciBWZT0xO1ZlPDI2O1ZlKyspe1VlW1wiZlwiK1ZlXT1WZSsxMTF9Zm9yKHZhciAkZT0wOyRlPDEwOyRlKyspe3ZhciBLZT0kZSs0ODt2YXIgWmU9JGUrOTY7VWVbJGVdPUtlO1VlW1wibnVtLVwiKyRlXT1aZTtVZS5fYWxpYXNbS2VdPVtaZV19Zm9yKHZhciBHZT0wO0dlPDI2O0dlKyspe3ZhciBZZT1HZSs2NTt2YXIgSmU9U3RyaW5nLmZyb21DaGFyQ29kZShZZSkudG9Mb3dlckNhc2UoKTtVZVtKZV09WWV9dmFyIFhlPXthbHQ6XCJhbHRLZXlcIixjdHJsOlwiY3RybEtleVwiLG1ldGE6XCJtZXRhS2V5XCIsc2hpZnQ6XCJzaGlmdEtleVwifTt2YXIgUWU9T2JqZWN0LmtleXMoWGUpLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIFhlW2VdfSkpO2Z1bmN0aW9uIGNyZWF0ZUV4cGVjdGVkTW9kaWZpZXJzKGUpe3ZhciB0PWU/bnVsbDpmYWxzZTtyZXR1cm57YWx0S2V5OnQsY3RybEtleTp0LG1ldGFLZXk6dCxzaGlmdEtleTp0fX1mdW5jdGlvbiByZXNvbHZlTW9kaWZpZXJzKGUpe3ZhciB0PWUuaW5kZXhPZihcIipcIikhPT0tMTt2YXIgcj1jcmVhdGVFeHBlY3RlZE1vZGlmaWVycyh0KTtlLmZvckVhY2goKGZ1bmN0aW9uKGUpe2lmKGU9PT1cIipcIil7cmV0dXJufXZhciB0PXRydWU7dmFyIG49ZS5zbGljZSgwLDEpO2lmKG49PT1cIj9cIil7dD1udWxsfWVsc2UgaWYobj09PVwiIVwiKXt0PWZhbHNlfWlmKHQhPT10cnVlKXtlPWUuc2xpY2UoMSl9dmFyIG89WGVbZV07aWYoIW8pe3Rocm93IG5ldyBUeXBlRXJyb3IoJ1Vua25vd24gbW9kaWZpZXIgXCInK2UrJ1wiJyl9cltvXT10fSkpO3JldHVybiByfWZ1bmN0aW9uIHJlc29sdmVLZXkoZSl7dmFyIHQ9VWVbZV18fHBhcnNlSW50KGUsMTApO2lmKCF0fHx0eXBlb2YgdCE9PVwibnVtYmVyXCJ8fGlzTmFOKHQpKXt0aHJvdyBuZXcgVHlwZUVycm9yKCdVbmtub3duIGtleSBcIicrZSsnXCInKX1yZXR1cm5bdF0uY29uY2F0KFVlLl9hbGlhc1t0XXx8W10pfWZ1bmN0aW9uIG1hdGNoTW9kaWZpZXJzKGUsdCl7cmV0dXJuIVFlLnNvbWUoKGZ1bmN0aW9uKHIpe3JldHVybiB0eXBlb2YgZVtyXT09PVwiYm9vbGVhblwiJiZCb29sZWFuKHRbcl0pIT09ZVtyXX0pKX1mdW5jdGlvbiBrZXlCaW5kaW5nKGUpe3JldHVybiBlLnNwbGl0KC9cXHMrLykubWFwKChmdW5jdGlvbihlKXt2YXIgdD1lLnNwbGl0KFwiK1wiKTt2YXIgcj1yZXNvbHZlTW9kaWZpZXJzKHQuc2xpY2UoMCwtMSkpO3ZhciBuPXJlc29sdmVLZXkodC5zbGljZSgtMSkpO3JldHVybntrZXlDb2RlczpuLG1vZGlmaWVyczpyLG1hdGNoTW9kaWZpZXJzOm1hdGNoTW9kaWZpZXJzLmJpbmQobnVsbCxyKX19KSl9ZnVuY3Rpb24gZ2V0UGFyZW50Q29tcGFyYXRvcigpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmYXJndW1lbnRzWzBdIT09dW5kZWZpbmVkP2FyZ3VtZW50c1swXTp7fSx0PWUucGFyZW50LHI9ZS5lbGVtZW50LG49ZS5pbmNsdWRlU2VsZjtpZih0KXtyZXR1cm4gZnVuY3Rpb24gaXNDaGlsZE9mKGUpe3JldHVybiBCb29sZWFuKG4mJmU9PT10fHx0LmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGUpJk5vZGUuRE9DVU1FTlRfUE9TSVRJT05fQ09OVEFJTkVEX0JZKX19ZWxzZSBpZihyKXtyZXR1cm4gZnVuY3Rpb24gaXNQYXJlbnRPZihlKXtyZXR1cm4gQm9vbGVhbihuJiZyPT09ZXx8ZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihyKSZOb2RlLkRPQ1VNRU5UX1BPU0lUSU9OX0NPTlRBSU5FRF9CWSl9fXRocm93IG5ldyBUeXBlRXJyb3IoXCJ1dGlsL2NvbXBhcmUtcG9zaXRpb24jZ2V0UGFyZW50Q29tcGFyYXRvciByZXF1aXJlZCBlaXRoZXIgb3B0aW9ucy5wYXJlbnQgb3Igb3B0aW9ucy5lbGVtZW50XCIpfWZ1bmN0aW9uIHdoZW5LZXkoKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJmFyZ3VtZW50c1swXSE9PXVuZGVmaW5lZD9hcmd1bWVudHNbMF06e307dmFyIHQ9e307dmFyIHI9bm9kZUFycmF5KGUuY29udGV4dClbMF18fGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtkZWxldGUgZS5jb250ZXh0O3ZhciBuPW5vZGVBcnJheShlLmZpbHRlcik7ZGVsZXRlIGUuZmlsdGVyO3ZhciBvPU9iamVjdC5rZXlzKGUpO2lmKCFvLmxlbmd0aCl7dGhyb3cgbmV3IFR5cGVFcnJvcihcIndoZW4va2V5IHJlcXVpcmVzIGF0IGxlYXN0IG9uZSBvcHRpb24ga2V5XCIpfXZhciBhPWZ1bmN0aW9uIHJlZ2lzdGVyQmluZGluZyhlKXtlLmtleUNvZGVzLmZvckVhY2goKGZ1bmN0aW9uKHIpe2lmKCF0W3JdKXt0W3JdPVtdfXRbcl0ucHVzaChlKX0pKX07by5mb3JFYWNoKChmdW5jdGlvbih0KXtpZih0eXBlb2YgZVt0XSE9PVwiZnVuY3Rpb25cIil7dGhyb3cgbmV3IFR5cGVFcnJvcignd2hlbi9rZXkgcmVxdWlyZXMgb3B0aW9uW1wiJyt0KydcIl0gdG8gYmUgYSBmdW5jdGlvbicpfXZhciByPWZ1bmN0aW9uIGFkZENhbGxiYWNrKHIpe3IuY2FsbGJhY2s9ZVt0XTtyZXR1cm4gcn07a2V5QmluZGluZyh0KS5tYXAocikuZm9yRWFjaChhKX0pKTt2YXIgaT1mdW5jdGlvbiBoYW5kbGVLZXlEb3duKGUpe2lmKGUuZGVmYXVsdFByZXZlbnRlZCl7cmV0dXJufWlmKG4ubGVuZ3RoKXt2YXIgbz1nZXRQYXJlbnRDb21wYXJhdG9yKHtlbGVtZW50OmUudGFyZ2V0LGluY2x1ZGVTZWxmOnRydWV9KTtpZihuLnNvbWUobykpe3JldHVybn19dmFyIGE9ZS5rZXlDb2RlfHxlLndoaWNoO2lmKCF0W2FdKXtyZXR1cm59dFthXS5mb3JFYWNoKChmdW5jdGlvbih0KXtpZighdC5tYXRjaE1vZGlmaWVycyhlKSl7cmV0dXJufXQuY2FsbGJhY2suY2FsbChyLGUsbCl9KSl9O3IuYWRkRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIixpLGZhbHNlKTt2YXIgbD1mdW5jdGlvbiBkaXNlbmdhZ2UoKXtyLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsaSxmYWxzZSl9O3JldHVybntkaXNlbmdhZ2U6bH19ZnVuY3Rpb24gZGVmYXVsdF8xKHtjb250ZXh0OmV9PXt9KXtpZighZSl7ZT1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnR9cXVlcnlUYWJzZXF1ZW5jZSgpO3JldHVybiB3aGVuS2V5KHtcIj9hbHQrP3NoaWZ0K3RhYlwiOmZ1bmN0aW9uIGFsdFNoaWZ0VGFiKHQpe3QucHJldmVudERlZmF1bHQoKTt2YXIgcj1xdWVyeVRhYnNlcXVlbmNlKHtjb250ZXh0OmV9KTt2YXIgbj10LnNoaWZ0S2V5O3ZhciBvPXJbMF07dmFyIGE9cltyLmxlbmd0aC0xXTt2YXIgaT1uP286YTt2YXIgbD1uP2E6bztpZihpc0FjdGl2ZUVsZW1lbnQoaSkpe2wuZm9jdXMoKTtyZXR1cm59dmFyIHM9dm9pZCAwO3ZhciB1PXIuc29tZSgoZnVuY3Rpb24oZSx0KXtpZighaXNBY3RpdmVFbGVtZW50KGUpKXtyZXR1cm4gZmFsc2V9cz10O3JldHVybiB0cnVlfSkpO2lmKCF1KXtvLmZvY3VzKCk7cmV0dXJufXZhciBjPW4/LTE6MTtyW3MrY10uZm9jdXMoKX19KX10W1wiZGVmYXVsdFwiXT1kZWZhdWx0XzF9LDk5MzpmdW5jdGlvbihlLHQscil7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOnRydWV9KTt0LnN0eWxlcz12b2lkIDA7Y29uc3Qgbj1yKDkxMCk7Y29uc3Qgbz0oMCxuLm5vb3ApYFxuICBbZGF0YS1uZXh0anMtZGlhbG9nLW92ZXJsYXldIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgdG9wOiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIGJvdHRvbTogMDtcbiAgICBsZWZ0OiAwO1xuICAgIG92ZXJmbG93OiBhdXRvO1xuICAgIHotaW5kZXg6IDkwMDA7XG5cbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgcGFkZGluZzogMTB2aCAxNXB4IDA7XG4gIH1cblxuICBAbWVkaWEgKG1heC1oZWlnaHQ6IDgxMnB4KSB7XG4gICAgW2RhdGEtbmV4dGpzLWRpYWxvZy1vdmVybGF5XSB7XG4gICAgICBwYWRkaW5nOiAxNXB4IDE1cHggMDtcbiAgICB9XG4gIH1cblxuICBbZGF0YS1uZXh0anMtZGlhbG9nLWJhY2tkcm9wXSB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIHRvcDogMDtcbiAgICByaWdodDogMDtcbiAgICBib3R0b206IDA7XG4gICAgbGVmdDogMDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1iYWNrZHJvcCk7XG4gICAgcG9pbnRlci1ldmVudHM6IGFsbDtcbiAgICB6LWluZGV4OiAtMTtcbiAgfVxuXG4gIFtkYXRhLW5leHRqcy1kaWFsb2ctYmFja2Ryb3AtZml4ZWRdIHtcbiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICAgIC13ZWJraXQtYmFja2Ryb3AtZmlsdGVyOiBibHVyKDhweCk7XG4gICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDhweCk7XG4gIH1cbmA7dC5zdHlsZXM9b30sMzM4OmZ1bmN0aW9uKGUsdCxyKXt2YXIgbj10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0LHIsbil7aWYobj09PXVuZGVmaW5lZCluPXI7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LHIpO2lmKCFvfHwoXCJnZXRcImluIG8/IXQuX19lc01vZHVsZTpvLndyaXRhYmxlfHxvLmNvbmZpZ3VyYWJsZSkpe289e2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtyXX19fU9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG4sbyl9OmZ1bmN0aW9uKGUsdCxyLG4pe2lmKG49PT11bmRlZmluZWQpbj1yO2Vbbl09dFtyXX0pO3ZhciBvPXRoaXMmJnRoaXMuX19zZXRNb2R1bGVEZWZhdWx0fHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiZGVmYXVsdFwiLHtlbnVtZXJhYmxlOnRydWUsdmFsdWU6dH0pfTpmdW5jdGlvbihlLHQpe2VbXCJkZWZhdWx0XCJdPXR9KTt2YXIgYT10aGlzJiZ0aGlzLl9faW1wb3J0U3Rhcnx8ZnVuY3Rpb24oZSl7aWYoZSYmZS5fX2VzTW9kdWxlKXJldHVybiBlO3ZhciB0PXt9O2lmKGUhPW51bGwpZm9yKHZhciByIGluIGUpaWYociE9PVwiZGVmYXVsdFwiJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSluKHQsZSxyKTtvKHQsZSk7cmV0dXJuIHR9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTp0cnVlfSk7dC5TaGFkb3dQb3J0YWw9dm9pZCAwO2NvbnN0IGk9YShyKDUyMikpO2NvbnN0IGw9cigyNTUpO2NvbnN0IHM9ZnVuY3Rpb24gUG9ydGFsKHtjaGlsZHJlbjplLGdsb2JhbE92ZXJsYXk6dH0pe2xldCByPWkudXNlUmVmKG51bGwpO2xldCBuPWkudXNlUmVmKG51bGwpO2xldCBvPWkudXNlUmVmKG51bGwpO2xldFssYV09aS51c2VTdGF0ZSgpO2kudXNlTGF5b3V0RWZmZWN0KCgoKT0+e2NvbnN0IGU9dD9kb2N1bWVudDpyLmN1cnJlbnQub3duZXJEb2N1bWVudDtuLmN1cnJlbnQ9ZS5jcmVhdGVFbGVtZW50KFwibmV4dGpzLXBvcnRhbFwiKTtvLmN1cnJlbnQ9bi5jdXJyZW50LmF0dGFjaFNoYWRvdyh7bW9kZTpcIm9wZW5cIn0pO2UuYm9keS5hcHBlbmRDaGlsZChuLmN1cnJlbnQpO2Eoe30pO3JldHVybigpPT57aWYobi5jdXJyZW50JiZuLmN1cnJlbnQub3duZXJEb2N1bWVudCl7bi5jdXJyZW50Lm93bmVyRG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChuLmN1cnJlbnQpfX19KSxbdF0pO3JldHVybiBvLmN1cnJlbnQ/KDAsbC5jcmVhdGVQb3J0YWwpKGUsby5jdXJyZW50KTp0P251bGw6aS5jcmVhdGVFbGVtZW50KFwic3BhblwiLHtyZWY6cn0pfTt0LlNoYWRvd1BvcnRhbD1zfSwyMTU6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQscixuKXtpZihuPT09dW5kZWZpbmVkKW49cjt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQscik7aWYoIW98fChcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKSl7bz17ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiB0W3JdfX19T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbixvKX06ZnVuY3Rpb24oZSx0LHIsbil7aWYobj09PXVuZGVmaW5lZCluPXI7ZVtuXT10W3JdfSk7dmFyIG89dGhpcyYmdGhpcy5fX3NldE1vZHVsZURlZmF1bHR8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJkZWZhdWx0XCIse2VudW1lcmFibGU6dHJ1ZSx2YWx1ZTp0fSl9OmZ1bmN0aW9uKGUsdCl7ZVtcImRlZmF1bHRcIl09dH0pO3ZhciBhPXRoaXMmJnRoaXMuX19pbXBvcnRTdGFyfHxmdW5jdGlvbihlKXtpZihlJiZlLl9fZXNNb2R1bGUpcmV0dXJuIGU7dmFyIHQ9e307aWYoZSE9bnVsbClmb3IodmFyIHIgaW4gZSlpZihyIT09XCJkZWZhdWx0XCImJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpKW4odCxlLHIpO28odCxlKTtyZXR1cm4gdH07dmFyIGk9dGhpcyYmdGhpcy5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOnRydWV9KTt0LlRlcm1pbmFsPXZvaWQgMDtjb25zdCBsPWkocig5OTcpKTtjb25zdCBzPWEocig1MjIpKTtjb25zdCB1PWZ1bmN0aW9uIFRlcm1pbmFsKHtjb250ZW50OmV9KXtjb25zdCB0PXMudXNlTWVtbygoKCk9PmwuZGVmYXVsdC5hbnNpVG9Kc29uKGUse2pzb246dHJ1ZSx1c2VfY2xhc3Nlczp0cnVlLHJlbW92ZV9lbXB0eTp0cnVlfSkpLFtlXSk7cmV0dXJuIHMuY3JlYXRlRWxlbWVudChcImRpdlwiLHtcImRhdGEtbmV4dGpzLXRlcm1pbmFsXCI6dHJ1ZX0scy5jcmVhdGVFbGVtZW50KFwicHJlXCIsbnVsbCx0Lm1hcCgoKGUsdCk9PnMuY3JlYXRlRWxlbWVudChcInNwYW5cIix7a2V5OmB0ZXJtaW5hbC1lbnRyeS0ke3R9YCxzdHlsZTp7Y29sb3I6ZS5mZz9gdmFyKC0tY29sb3ItJHtlLmZnfSlgOnVuZGVmaW5lZCwuLi5lLmRlY29yYXRpb249PT1cImJvbGRcIj97Zm9udFdlaWdodDo4MDB9OmUuZGVjb3JhdGlvbj09PVwiaXRhbGljXCI/e2ZvbnRTdHlsZTpcIml0YWxpY1wifTp1bmRlZmluZWR9fSxlLmNvbnRlbnQpKSkpKX07dC5UZXJtaW5hbD11fSwyMzY6ZnVuY3Rpb24oZSx0LHIpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTp0cnVlfSk7dC5UZXJtaW5hbD12b2lkIDA7dmFyIG49cigyMTUpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiVGVybWluYWxcIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBuLlRlcm1pbmFsfX0pfSw0ODg6ZnVuY3Rpb24oZSx0LHIpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTp0cnVlfSk7dC5zdHlsZXM9dm9pZCAwO2NvbnN0IG49cig5MTApO2NvbnN0IG89KDAsbi5ub29wKWBcbiAgW2RhdGEtbmV4dGpzLXRlcm1pbmFsXSB7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc2l6ZS1nYXAtaGFsZik7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItYW5zaS1iZyk7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLWFuc2ktZmcpO1xuICB9XG4gIFtkYXRhLW5leHRqcy10ZXJtaW5hbF06OnNlbGVjdGlvbixcbiAgW2RhdGEtbmV4dGpzLXRlcm1pbmFsXSAqOjpzZWxlY3Rpb24ge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLWFuc2ktc2VsZWN0aW9uKTtcbiAgfVxuICBbZGF0YS1uZXh0anMtdGVybWluYWxdICoge1xuICAgIGNvbG9yOiBpbmhlcml0O1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LXN0YWNrLW1vbm9zcGFjZSk7XG4gIH1cbiAgW2RhdGEtbmV4dGpzLXRlcm1pbmFsXSA+ICoge1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiBjYWxjKHZhcigtLXNpemUtZ2FwKSArIHZhcigtLXNpemUtZ2FwLWhhbGYpKVxuICAgICAgY2FsYyh2YXIoLS1zaXplLWdhcC1kb3VibGUpICsgdmFyKC0tc2l6ZS1nYXAtaGFsZikpO1xuICB9XG5cbiAgW2RhdGEtbmV4dGpzLXRlcm1pbmFsXSBwcmUge1xuICAgIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDtcbiAgICB3b3JkLWJyZWFrOiBicmVhay13b3JkO1xuICB9XG5gO3Quc3R5bGVzPW99LDY4MzpmdW5jdGlvbihlLHQscil7dmFyIG49dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxyLG4pe2lmKG49PT11bmRlZmluZWQpbj1yO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxyKTtpZighb3x8KFwiZ2V0XCJpbiBvPyF0Ll9fZXNNb2R1bGU6by53cml0YWJsZXx8by5jb25maWd1cmFibGUpKXtvPXtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbcl19fX1PYmplY3QuZGVmaW5lUHJvcGVydHkoZSxuLG8pfTpmdW5jdGlvbihlLHQscixuKXtpZihuPT09dW5kZWZpbmVkKW49cjtlW25dPXRbcl19KTt2YXIgbz10aGlzJiZ0aGlzLl9fc2V0TW9kdWxlRGVmYXVsdHx8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcImRlZmF1bHRcIix7ZW51bWVyYWJsZTp0cnVlLHZhbHVlOnR9KX06ZnVuY3Rpb24oZSx0KXtlW1wiZGVmYXVsdFwiXT10fSk7dmFyIGE9dGhpcyYmdGhpcy5fX2ltcG9ydFN0YXJ8fGZ1bmN0aW9uKGUpe2lmKGUmJmUuX19lc01vZHVsZSlyZXR1cm4gZTt2YXIgdD17fTtpZihlIT1udWxsKWZvcih2YXIgciBpbiBlKWlmKHIhPT1cImRlZmF1bHRcIiYmT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikpbih0LGUscik7byh0LGUpO3JldHVybiB0fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6dHJ1ZX0pO3QuVG9hc3Q9dm9pZCAwO2NvbnN0IGk9YShyKDUyMikpO2NvbnN0IGw9ZnVuY3Rpb24gVG9hc3Qoe29uQ2xpY2s6ZSxjaGlsZHJlbjp0LGNsYXNzTmFtZTpyfSl7cmV0dXJuIGkuY3JlYXRlRWxlbWVudChcImRpdlwiLHtcImRhdGEtbmV4dGpzLXRvYXN0XCI6dHJ1ZSxvbkNsaWNrOmUsY2xhc3NOYW1lOnJ9LGkuY3JlYXRlRWxlbWVudChcImRpdlwiLHtcImRhdGEtbmV4dGpzLXRvYXN0LXdyYXBwZXJcIjp0cnVlfSx0KSl9O3QuVG9hc3Q9bH0sMTIwOmZ1bmN0aW9uKGUsdCxyKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6dHJ1ZX0pO3QuVG9hc3Q9dC5zdHlsZXM9dm9pZCAwO3ZhciBuPXIoNjkpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwic3R5bGVzXCIse2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbi5zdHlsZXN9fSk7dmFyIG89cig2ODMpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiVG9hc3RcIix7ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiBvLlRvYXN0fX0pfSw2OTpmdW5jdGlvbihlLHQscil7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOnRydWV9KTt0LnN0eWxlcz12b2lkIDA7Y29uc3Qgbj1yKDkxMCk7Y29uc3Qgbz0oMCxuLm5vb3ApYFxuICBbZGF0YS1uZXh0anMtdG9hc3RdIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgYm90dG9tOiB2YXIoLS1zaXplLWdhcC1kb3VibGUpO1xuICAgIGxlZnQ6IHZhcigtLXNpemUtZ2FwLWRvdWJsZSk7XG4gICAgbWF4LXdpZHRoOiA0MjBweDtcbiAgICB6LWluZGV4OiA5MDAwO1xuICB9XG5cbiAgQG1lZGlhIChtYXgtd2lkdGg6IDQ0MHB4KSB7XG4gICAgW2RhdGEtbmV4dGpzLXRvYXN0XSB7XG4gICAgICBtYXgtd2lkdGg6IDkwdnc7XG4gICAgICBsZWZ0OiA1dnc7XG4gICAgfVxuICB9XG5cbiAgW2RhdGEtbmV4dGpzLXRvYXN0LXdyYXBwZXJdIHtcbiAgICBwYWRkaW5nOiAxNnB4O1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXNpemUtZ2FwLWhhbGYpO1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLWFuc2ktYnJpZ2h0LXdoaXRlKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1hbnNpLXJlZCk7XG4gICAgYm94LXNoYWRvdzogMHB4IHZhcigtLXNpemUtZ2FwLWRvdWJsZSkgdmFyKC0tc2l6ZS1nYXAtcXVhZClcbiAgICAgIHJnYmEoMCwgMCwgMCwgMC4yNSk7XG4gIH1cbmA7dC5zdHlsZXM9b30sOTM2OmZ1bmN0aW9uKGUsdCxyKXt2YXIgbj10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0LHIsbil7aWYobj09PXVuZGVmaW5lZCluPXI7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LHIpO2lmKCFvfHwoXCJnZXRcImluIG8/IXQuX19lc01vZHVsZTpvLndyaXRhYmxlfHxvLmNvbmZpZ3VyYWJsZSkpe289e2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtyXX19fU9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG4sbyl9OmZ1bmN0aW9uKGUsdCxyLG4pe2lmKG49PT11bmRlZmluZWQpbj1yO2Vbbl09dFtyXX0pO3ZhciBvPXRoaXMmJnRoaXMuX19zZXRNb2R1bGVEZWZhdWx0fHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiZGVmYXVsdFwiLHtlbnVtZXJhYmxlOnRydWUsdmFsdWU6dH0pfTpmdW5jdGlvbihlLHQpe2VbXCJkZWZhdWx0XCJdPXR9KTt2YXIgYT10aGlzJiZ0aGlzLl9faW1wb3J0U3Rhcnx8ZnVuY3Rpb24oZSl7aWYoZSYmZS5fX2VzTW9kdWxlKXJldHVybiBlO3ZhciB0PXt9O2lmKGUhPW51bGwpZm9yKHZhciByIGluIGUpaWYociE9PVwiZGVmYXVsdFwiJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSluKHQsZSxyKTtvKHQsZSk7cmV0dXJuIHR9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTp0cnVlfSk7dC5zdHlsZXM9dC5CdWlsZEVycm9yPXZvaWQgMDtjb25zdCBpPWEocig1MjIpKTtjb25zdCBsPXIoNjUxKTtjb25zdCBzPXIoMjc4KTtjb25zdCB1PXIoMjM2KTtjb25zdCBjPXIoOTEwKTtjb25zdCBkPWZ1bmN0aW9uIEJ1aWxkRXJyb3Ioe21lc3NhZ2U6ZX0pe2NvbnN0IHQ9aS51c2VDYWxsYmFjaygoKCk9Pnt9KSxbXSk7cmV0dXJuIGkuY3JlYXRlRWxlbWVudChzLk92ZXJsYXkse2ZpeGVkOnRydWV9LGkuY3JlYXRlRWxlbWVudChsLkRpYWxvZyx7dHlwZTpcImVycm9yXCIsXCJhcmlhLWxhYmVsbGVkYnlcIjpcIm5leHRqc19fY29udGFpbmVyX2J1aWxkX2Vycm9yX2xhYmVsXCIsXCJhcmlhLWRlc2NyaWJlZGJ5XCI6XCJuZXh0anNfX2NvbnRhaW5lcl9idWlsZF9lcnJvcl9kZXNjXCIsb25DbG9zZTp0fSxpLmNyZWF0ZUVsZW1lbnQobC5EaWFsb2dDb250ZW50LG51bGwsaS5jcmVhdGVFbGVtZW50KGwuRGlhbG9nSGVhZGVyLHtjbGFzc05hbWU6XCJuZXh0anMtY29udGFpbmVyLWJ1aWxkLWVycm9yLWhlYWRlclwifSxpLmNyZWF0ZUVsZW1lbnQoXCJoNFwiLHtpZDpcIm5leHRqc19fY29udGFpbmVyX2J1aWxkX2Vycm9yX2xhYmVsXCJ9LFwiRmFpbGVkIHRvIGNvbXBpbGVcIikpLGkuY3JlYXRlRWxlbWVudChsLkRpYWxvZ0JvZHkse2NsYXNzTmFtZTpcIm5leHRqcy1jb250YWluZXItYnVpbGQtZXJyb3ItYm9keVwifSxpLmNyZWF0ZUVsZW1lbnQodS5UZXJtaW5hbCx7Y29udGVudDplfSksaS5jcmVhdGVFbGVtZW50KFwiZm9vdGVyXCIsbnVsbCxpLmNyZWF0ZUVsZW1lbnQoXCJwXCIse2lkOlwibmV4dGpzX19jb250YWluZXJfYnVpbGRfZXJyb3JfZGVzY1wifSxpLmNyZWF0ZUVsZW1lbnQoXCJzbWFsbFwiLG51bGwsXCJUaGlzIGVycm9yIG9jY3VycmVkIGR1cmluZyB0aGUgYnVpbGQgcHJvY2VzcyBhbmQgY2FuIG9ubHkgYmUgZGlzbWlzc2VkIGJ5IGZpeGluZyB0aGUgZXJyb3IuXCIpKSkpKSkpfTt0LkJ1aWxkRXJyb3I9ZDt0LnN0eWxlcz0oMCxjLm5vb3ApYFxuICAubmV4dGpzLWNvbnRhaW5lci1idWlsZC1lcnJvci1oZWFkZXIgPiBoNCB7XG4gICAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgfVxuXG4gIC5uZXh0anMtY29udGFpbmVyLWJ1aWxkLWVycm9yLWJvZHkgZm9vdGVyIHtcbiAgICBtYXJnaW4tdG9wOiB2YXIoLS1zaXplLWdhcCk7XG4gIH1cbiAgLm5leHRqcy1jb250YWluZXItYnVpbGQtZXJyb3ItYm9keSBmb290ZXIgcCB7XG4gICAgbWFyZ2luOiAwO1xuICB9XG5cbiAgLm5leHRqcy1jb250YWluZXItYnVpbGQtZXJyb3ItYm9keSBzbWFsbCB7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLWZvbnQpO1xuICB9XG5gfSwzNTU6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQscixuKXtpZihuPT09dW5kZWZpbmVkKW49cjt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQscik7aWYoIW98fChcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKSl7bz17ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiB0W3JdfX19T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbixvKX06ZnVuY3Rpb24oZSx0LHIsbil7aWYobj09PXVuZGVmaW5lZCluPXI7ZVtuXT10W3JdfSk7dmFyIG89dGhpcyYmdGhpcy5fX3NldE1vZHVsZURlZmF1bHR8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJkZWZhdWx0XCIse2VudW1lcmFibGU6dHJ1ZSx2YWx1ZTp0fSl9OmZ1bmN0aW9uKGUsdCl7ZVtcImRlZmF1bHRcIl09dH0pO3ZhciBhPXRoaXMmJnRoaXMuX19pbXBvcnRTdGFyfHxmdW5jdGlvbihlKXtpZihlJiZlLl9fZXNNb2R1bGUpcmV0dXJuIGU7dmFyIHQ9e307aWYoZSE9bnVsbClmb3IodmFyIHIgaW4gZSlpZihyIT09XCJkZWZhdWx0XCImJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpKW4odCxlLHIpO28odCxlKTtyZXR1cm4gdH07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOnRydWV9KTt0LnN0eWxlcz10LkVycm9ycz12b2lkIDA7Y29uc3QgaT1hKHIoNTIyKSk7Y29uc3QgbD1yKDg1MSk7Y29uc3Qgcz1yKDY1MSk7Y29uc3QgdT1yKDczMik7Y29uc3QgYz1yKDI3OCk7Y29uc3QgZD1yKDEyMCk7Y29uc3QgZj1yKDQwMyk7Y29uc3QgbT1yKDIzMyk7Y29uc3QgcD1yKDkxMCk7Y29uc3QgYj1yKDg2NSk7Y29uc3Qgdj1yKDQ4NCk7ZnVuY3Rpb24gZ2V0RXJyb3JTaWduYXR1cmUoZSl7Y29uc3R7ZXZlbnQ6dH09ZTtzd2l0Y2godC50eXBlKXtjYXNlIGwuVFlQRV9VTkhBTkRMRURfRVJST1I6Y2FzZSBsLlRZUEVfVU5IQU5ETEVEX1JFSkVDVElPTjp7cmV0dXJuYCR7dC5yZWFzb24ubmFtZX06OiR7dC5yZWFzb24ubWVzc2FnZX06OiR7dC5yZWFzb24uc3RhY2t9YH1kZWZhdWx0Ont9fWNvbnN0IHI9dDtyZXR1cm5cIlwifWNvbnN0IGc9ZnVuY3Rpb24gSG90bGlua2VkVGV4dChlKXtjb25zdHt0ZXh0OnR9PWU7Y29uc3Qgcj0vaHR0cHM/OlxcL1xcL1teXFxzLyQuPyNdLlteXFxzKSdcIl0qL2k7cmV0dXJuIGkuY3JlYXRlRWxlbWVudChpLkZyYWdtZW50LG51bGwsci50ZXN0KHQpP3Quc3BsaXQoXCIgXCIpLm1hcCgoKGUsdCxuKT0+e2lmKHIudGVzdChlKSl7Y29uc3Qgbz1yLmV4ZWMoZSk7cmV0dXJuIGkuY3JlYXRlRWxlbWVudChpLkZyYWdtZW50LHtrZXk6YGxpbmstJHt0fWB9LG8mJmkuY3JlYXRlRWxlbWVudChcImFcIix7aHJlZjpvWzBdLHRhcmdldDpcIl9ibGFua1wiLHJlbDpcIm5vcmVmZXJyZXIgbm9vcGVuZXJcIn0sZSksdD09PW4ubGVuZ3RoLTE/XCJcIjpcIiBcIil9cmV0dXJuIHQ9PT1uLmxlbmd0aC0xP2kuY3JlYXRlRWxlbWVudChpLkZyYWdtZW50LHtrZXk6YHRleHQtJHt0fWB9LGUpOmkuY3JlYXRlRWxlbWVudChpLkZyYWdtZW50LHtrZXk6YHRleHQtJHt0fWB9LGUsXCIgXCIpfSkpOnQpfTtjb25zdCBoPWZ1bmN0aW9uIEVycm9ycyh7ZXJyb3JzOmV9KXtjb25zdFt0LHJdPWkudXNlU3RhdGUoe30pO2NvbnN0W24sb109aS51c2VNZW1vKCgoKT0+e2xldCByPVtdO2xldCBuPW51bGw7Zm9yKGxldCBvPTA7bzxlLmxlbmd0aDsrK28pe2NvbnN0IGE9ZVtvXTtjb25zdHtpZDppfT1hO2lmKGkgaW4gdCl7ci5wdXNoKHRbaV0pO2NvbnRpbnVlfWlmKG8+MCl7Y29uc3QgdD1lW28tMV07aWYoZ2V0RXJyb3JTaWduYXR1cmUodCk9PT1nZXRFcnJvclNpZ25hdHVyZShhKSl7Y29udGludWV9fW49YTticmVha31yZXR1cm5bcixuXX0pLFtlLHRdKTtjb25zdCBhPWkudXNlTWVtbygoKCk9Pm4ubGVuZ3RoPDEmJkJvb2xlYW4oZS5sZW5ndGgpKSxbZS5sZW5ndGgsbi5sZW5ndGhdKTtpLnVzZUVmZmVjdCgoKCk9PntpZihvPT1udWxsKXtyZXR1cm59bGV0IGU9dHJ1ZTsoMCxmLmdldEVycm9yQnlUeXBlKShvKS50aGVuKCh0PT57aWYoZSl7cigoZT0+KHsuLi5lLFt0LmlkXTp0fSkpKX19KSwoKCk9Pnt9KSk7cmV0dXJuKCk9PntlPWZhbHNlfX0pLFtvXSk7Y29uc3RbbCxwXT1pLnVzZVN0YXRlKFwiZnVsbHNjcmVlblwiKTtjb25zdFtoLHldPWkudXNlU3RhdGUoMCk7Y29uc3QgeD1pLnVzZUNhbGxiYWNrKChlPT57ZT8ucHJldmVudERlZmF1bHQoKTt5KChlPT5NYXRoLm1heCgwLGUtMSkpKX0pLFtdKTtjb25zdCBFPWkudXNlQ2FsbGJhY2soKGU9PntlPy5wcmV2ZW50RGVmYXVsdCgpO3koKGU9Pk1hdGgubWF4KDAsTWF0aC5taW4obi5sZW5ndGgtMSxlKzEpKSkpfSksW24ubGVuZ3RoXSk7Y29uc3QgXz1pLnVzZU1lbW8oKCgpPT5uW2hdPz9udWxsKSxbaCxuXSk7aS51c2VFZmZlY3QoKCgpPT57aWYoZS5sZW5ndGg8MSl7cih7fSk7cChcImhpZGRlblwiKTt5KDApfX0pLFtlLmxlbmd0aF0pO2NvbnN0IHc9aS51c2VDYWxsYmFjaygoZT0+e2U/LnByZXZlbnREZWZhdWx0KCk7cChcIm1pbmltaXplZFwiKX0pLFtdKTtjb25zdCBPPWkudXNlQ2FsbGJhY2soKGU9PntlPy5wcmV2ZW50RGVmYXVsdCgpO3AoXCJoaWRkZW5cIil9KSxbXSk7Y29uc3Qgaj1pLnVzZUNhbGxiYWNrKChlPT57ZT8ucHJldmVudERlZmF1bHQoKTtwKFwiZnVsbHNjcmVlblwiKX0pLFtdKTtpZihlLmxlbmd0aDwxfHxfPT1udWxsKXtyZXR1cm4gbnVsbH1pZihhKXtyZXR1cm4gaS5jcmVhdGVFbGVtZW50KGMuT3ZlcmxheSxudWxsKX1pZihsPT09XCJoaWRkZW5cIil7cmV0dXJuIG51bGx9aWYobD09PVwibWluaW1pemVkXCIpe3JldHVybiBpLmNyZWF0ZUVsZW1lbnQoZC5Ub2FzdCx7Y2xhc3NOYW1lOlwibmV4dGpzLXRvYXN0LWVycm9ycy1wYXJlbnRcIixvbkNsaWNrOmp9LGkuY3JlYXRlRWxlbWVudChcImRpdlwiLHtjbGFzc05hbWU6XCJuZXh0anMtdG9hc3QtZXJyb3JzXCJ9LGkuY3JlYXRlRWxlbWVudChcInN2Z1wiLHt4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsd2lkdGg6XCIyNFwiLGhlaWdodDpcIjI0XCIsdmlld0JveDpcIjAgMCAyNCAyNFwiLGZpbGw6XCJub25lXCIsc3Ryb2tlOlwiY3VycmVudENvbG9yXCIsc3Ryb2tlV2lkdGg6XCIyXCIsc3Ryb2tlTGluZWNhcDpcInJvdW5kXCIsc3Ryb2tlTGluZWpvaW46XCJyb3VuZFwifSxpLmNyZWF0ZUVsZW1lbnQoXCJjaXJjbGVcIix7Y3g6XCIxMlwiLGN5OlwiMTJcIixyOlwiMTBcIn0pLGkuY3JlYXRlRWxlbWVudChcImxpbmVcIix7eDE6XCIxMlwiLHkxOlwiOFwiLHgyOlwiMTJcIix5MjpcIjEyXCJ9KSxpLmNyZWF0ZUVsZW1lbnQoXCJsaW5lXCIse3gxOlwiMTJcIix5MTpcIjE2XCIseDI6XCIxMi4wMVwiLHkyOlwiMTZcIn0pKSxpLmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsbnVsbCxuLmxlbmd0aCxcIiBlcnJvclwiLG4ubGVuZ3RoPjE/XCJzXCI6XCJcIiksaS5jcmVhdGVFbGVtZW50KFwiYnV0dG9uXCIse1wiZGF0YS1uZXh0anMtdG9hc3QtZXJyb3JzLWhpZGUtYnV0dG9uXCI6dHJ1ZSxjbGFzc05hbWU6XCJuZXh0anMtdG9hc3QtZXJyb3JzLWhpZGUtYnV0dG9uXCIsdHlwZTpcImJ1dHRvblwiLG9uQ2xpY2s6ZT0+e2Uuc3RvcFByb3BhZ2F0aW9uKCk7TygpfSxcImFyaWEtbGFiZWxcIjpcIkhpZGUgRXJyb3JzXCJ9LGkuY3JlYXRlRWxlbWVudChiLkNsb3NlSWNvbixudWxsKSkpKX1jb25zdCBrPVtcInNlcnZlclwiLFwiZWRnZS1zZXJ2ZXJcIl0uaW5jbHVkZXMoKDAsbS5nZXRFcnJvclNvdXJjZSkoXy5lcnJvcil8fFwiXCIpO3JldHVybiBpLmNyZWF0ZUVsZW1lbnQoYy5PdmVybGF5LG51bGwsaS5jcmVhdGVFbGVtZW50KHMuRGlhbG9nLHt0eXBlOlwiZXJyb3JcIixcImFyaWEtbGFiZWxsZWRieVwiOlwibmV4dGpzX19jb250YWluZXJfZXJyb3JzX2xhYmVsXCIsXCJhcmlhLWRlc2NyaWJlZGJ5XCI6XCJuZXh0anNfX2NvbnRhaW5lcl9lcnJvcnNfZGVzY1wiLG9uQ2xvc2U6az91bmRlZmluZWQ6d30saS5jcmVhdGVFbGVtZW50KHMuRGlhbG9nQ29udGVudCxudWxsLGkuY3JlYXRlRWxlbWVudChzLkRpYWxvZ0hlYWRlcix7Y2xhc3NOYW1lOlwibmV4dGpzLWNvbnRhaW5lci1lcnJvcnMtaGVhZGVyXCJ9LGkuY3JlYXRlRWxlbWVudCh1LkxlZnRSaWdodERpYWxvZ0hlYWRlcix7cHJldmlvdXM6aD4wP3g6bnVsbCxuZXh0Omg8bi5sZW5ndGgtMT9FOm51bGwsY2xvc2U6az91bmRlZmluZWQ6d30saS5jcmVhdGVFbGVtZW50KFwic21hbGxcIixudWxsLGkuY3JlYXRlRWxlbWVudChcInNwYW5cIixudWxsLGgrMSksXCIgb2ZcIixcIiBcIixpLmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsbnVsbCxuLmxlbmd0aCksXCIgdW5oYW5kbGVkIGVycm9yXCIsbi5sZW5ndGg8Mj9cIlwiOlwic1wiKSksaS5jcmVhdGVFbGVtZW50KFwiaDFcIix7aWQ6XCJuZXh0anNfX2NvbnRhaW5lcl9lcnJvcnNfbGFiZWxcIn0saz9cIlNlcnZlciBFcnJvclwiOlwiVW5oYW5kbGVkIFJ1bnRpbWUgRXJyb3JcIiksaS5jcmVhdGVFbGVtZW50KFwicFwiLHtpZDpcIm5leHRqc19fY29udGFpbmVyX2Vycm9yc19kZXNjXCJ9LF8uZXJyb3IubmFtZSxcIjpcIixcIiBcIixpLmNyZWF0ZUVsZW1lbnQoZyx7dGV4dDpfLmVycm9yLm1lc3NhZ2V9KSksaz9pLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIixudWxsLGkuY3JlYXRlRWxlbWVudChcInNtYWxsXCIsbnVsbCxcIlRoaXMgZXJyb3IgaGFwcGVuZWQgd2hpbGUgZ2VuZXJhdGluZyB0aGUgcGFnZS4gQW55IGNvbnNvbGUgbG9ncyB3aWxsIGJlIGRpc3BsYXllZCBpbiB0aGUgdGVybWluYWwgd2luZG93LlwiKSk6dW5kZWZpbmVkKSxpLmNyZWF0ZUVsZW1lbnQocy5EaWFsb2dCb2R5LHtjbGFzc05hbWU6XCJuZXh0anMtY29udGFpbmVyLWVycm9ycy1ib2R5XCJ9LGkuY3JlYXRlRWxlbWVudCh2LlJ1bnRpbWVFcnJvcix7a2V5Ol8uaWQudG9TdHJpbmcoKSxlcnJvcjpffSkpKSkpfTt0LkVycm9ycz1oO3Quc3R5bGVzPSgwLHAubm9vcClgXG4gIC5uZXh0anMtY29udGFpbmVyLWVycm9ycy1oZWFkZXIgPiBoMSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zaXplLWZvbnQtYmlnKTtcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tc2l6ZS1mb250LWJpZ2dlcik7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgbWFyZ2luOiAwO1xuICAgIG1hcmdpbi10b3A6IGNhbGModmFyKC0tc2l6ZS1nYXAtZG91YmxlKSArIHZhcigtLXNpemUtZ2FwLWhhbGYpKTtcbiAgfVxuICAubmV4dGpzLWNvbnRhaW5lci1lcnJvcnMtaGVhZGVyIHNtYWxsIHtcbiAgICBmb250LXNpemU6IHZhcigtLXNpemUtZm9udC1zbWFsbCk7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLWFjY2VudHMtMSk7XG4gICAgbWFyZ2luLWxlZnQ6IHZhcigtLXNpemUtZ2FwLWRvdWJsZSk7XG4gIH1cbiAgLm5leHRqcy1jb250YWluZXItZXJyb3JzLWhlYWRlciBzbWFsbCA+IHNwYW4ge1xuICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LXN0YWNrLW1vbm9zcGFjZSk7XG4gIH1cbiAgLm5leHRqcy1jb250YWluZXItZXJyb3JzLWhlYWRlciA+IHAge1xuICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LXN0YWNrLW1vbm9zcGFjZSk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zaXplLWZvbnQtc21hbGwpO1xuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1zaXplLWZvbnQtYmlnKTtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBtYXJnaW46IDA7XG4gICAgbWFyZ2luLXRvcDogdmFyKC0tc2l6ZS1nYXAtaGFsZik7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLWFuc2ktcmVkKTtcbiAgICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7XG4gIH1cbiAgLm5leHRqcy1jb250YWluZXItZXJyb3JzLWhlYWRlciA+IGRpdiA+IHNtYWxsIHtcbiAgICBtYXJnaW46IDA7XG4gICAgbWFyZ2luLXRvcDogdmFyKC0tc2l6ZS1nYXAtaGFsZik7XG4gIH1cbiAgLm5leHRqcy1jb250YWluZXItZXJyb3JzLWhlYWRlciA+IHAgPiBhIHtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItYW5zaS1yZWQpO1xuICB9XG5cbiAgLm5leHRqcy1jb250YWluZXItZXJyb3JzLWJvZHkgPiBoMjpub3QoOmZpcnN0LWNoaWxkKSB7XG4gICAgbWFyZ2luLXRvcDogY2FsYyh2YXIoLS1zaXplLWdhcC1kb3VibGUpICsgdmFyKC0tc2l6ZS1nYXApKTtcbiAgfVxuICAubmV4dGpzLWNvbnRhaW5lci1lcnJvcnMtYm9keSA+IGgyIHtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zaXplLWdhcCk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zaXplLWZvbnQtYmlnKTtcbiAgfVxuXG4gIC5uZXh0anMtdG9hc3QtZXJyb3JzLXBhcmVudCB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjJzIGVhc2U7XG4gIH1cbiAgLm5leHRqcy10b2FzdC1lcnJvcnMtcGFyZW50OmhvdmVyIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMSk7XG4gIH1cbiAgLm5leHRqcy10b2FzdC1lcnJvcnMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gIH1cbiAgLm5leHRqcy10b2FzdC1lcnJvcnMgPiBzdmcge1xuICAgIG1hcmdpbi1yaWdodDogdmFyKC0tc2l6ZS1nYXApO1xuICB9XG4gIC5uZXh0anMtdG9hc3QtZXJyb3JzLWhpZGUtYnV0dG9uIHtcbiAgICBtYXJnaW4tbGVmdDogdmFyKC0tc2l6ZS1nYXAtdHJpcGxlKTtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItYW5zaS1icmlnaHQtd2hpdGUpO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjI1cyBlYXNlO1xuICAgIG9wYWNpdHk6IDAuNztcbiAgfVxuICAubmV4dGpzLXRvYXN0LWVycm9ycy1oaWRlLWJ1dHRvbjpob3ZlciB7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxuYH0sNDg0OmZ1bmN0aW9uKGUsdCxyKXt2YXIgbj10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0LHIsbil7aWYobj09PXVuZGVmaW5lZCluPXI7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LHIpO2lmKCFvfHwoXCJnZXRcImluIG8/IXQuX19lc01vZHVsZTpvLndyaXRhYmxlfHxvLmNvbmZpZ3VyYWJsZSkpe289e2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtyXX19fU9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG4sbyl9OmZ1bmN0aW9uKGUsdCxyLG4pe2lmKG49PT11bmRlZmluZWQpbj1yO2Vbbl09dFtyXX0pO3ZhciBvPXRoaXMmJnRoaXMuX19zZXRNb2R1bGVEZWZhdWx0fHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiZGVmYXVsdFwiLHtlbnVtZXJhYmxlOnRydWUsdmFsdWU6dH0pfTpmdW5jdGlvbihlLHQpe2VbXCJkZWZhdWx0XCJdPXR9KTt2YXIgYT10aGlzJiZ0aGlzLl9faW1wb3J0U3Rhcnx8ZnVuY3Rpb24oZSl7aWYoZSYmZS5fX2VzTW9kdWxlKXJldHVybiBlO3ZhciB0PXt9O2lmKGUhPW51bGwpZm9yKHZhciByIGluIGUpaWYociE9PVwiZGVmYXVsdFwiJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSluKHQsZSxyKTtvKHQsZSk7cmV0dXJuIHR9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTp0cnVlfSk7dC5SdW50aW1lRXJyb3I9dC5zdHlsZXM9dm9pZCAwO2NvbnN0IGk9YShyKDUyMikpO2NvbnN0IGw9cig0MTMpO2NvbnN0IHM9cig5MTApO2NvbnN0IHU9cig1MDQpO2NvbnN0IGM9ZnVuY3Rpb24gQ2FsbFN0YWNrRnJhbWUoe2ZyYW1lOmV9KXtjb25zdCB0PWUub3JpZ2luYWxTdGFja0ZyYW1lPz9lLnNvdXJjZVN0YWNrRnJhbWU7Y29uc3Qgcj1Cb29sZWFuKGUub3JpZ2luYWxDb2RlRnJhbWUpO2NvbnN0IG49aS51c2VDYWxsYmFjaygoKCk9PntpZighcilyZXR1cm47Y29uc3QgZT1uZXcgVVJMU2VhcmNoUGFyYW1zO2Zvcihjb25zdCByIGluIHQpe2UuYXBwZW5kKHIsKHRbcl0/P1wiXCIpLnRvU3RyaW5nKCkpfXNlbGYuZmV0Y2goYCR7cHJvY2Vzcy5lbnYuX19ORVhUX1JPVVRFUl9CQVNFUEFUSHx8XCJcIn0vX19uZXh0anNfbGF1bmNoLWVkaXRvcj8ke2UudG9TdHJpbmcoKX1gKS50aGVuKCgoKT0+e30pLCgoKT0+e2NvbnNvbGUuZXJyb3IoXCJUaGVyZSB3YXMgYW4gaXNzdWUgb3BlbmluZyB0aGlzIGNvZGUgaW4geW91ciBlZGl0b3IuXCIpfSkpfSksW3IsdF0pO3JldHVybiBpLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIix7XCJkYXRhLW5leHRqcy1jYWxsLXN0YWNrLWZyYW1lXCI6dHJ1ZX0saS5jcmVhdGVFbGVtZW50KFwiaDNcIix7XCJkYXRhLW5leHRqcy1mcmFtZS1leHBhbmRlZFwiOkJvb2xlYW4oZS5leHBhbmRlZCl9LHQubWV0aG9kTmFtZSksaS5jcmVhdGVFbGVtZW50KFwiZGl2XCIse1wiZGF0YS1oYXMtc291cmNlXCI6cj9cInRydWVcIjp1bmRlZmluZWQsdGFiSW5kZXg6cj8xMDp1bmRlZmluZWQscm9sZTpyP1wibGlua1wiOnVuZGVmaW5lZCxvbkNsaWNrOm4sdGl0bGU6cj9cIkNsaWNrIHRvIG9wZW4gaW4geW91ciBlZGl0b3JcIjp1bmRlZmluZWR9LGkuY3JlYXRlRWxlbWVudChcInNwYW5cIixudWxsLCgwLHUuZ2V0RnJhbWVTb3VyY2UpKHQpKSxpLmNyZWF0ZUVsZW1lbnQoXCJzdmdcIix7eG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLHZpZXdCb3g6XCIwIDAgMjQgMjRcIixmaWxsOlwibm9uZVwiLHN0cm9rZTpcImN1cnJlbnRDb2xvclwiLHN0cm9rZVdpZHRoOlwiMlwiLHN0cm9rZUxpbmVjYXA6XCJyb3VuZFwiLHN0cm9rZUxpbmVqb2luOlwicm91bmRcIn0saS5jcmVhdGVFbGVtZW50KFwicGF0aFwiLHtkOlwiTTE4IDEzdjZhMiAyIDAgMCAxLTIgMkg1YTIgMiAwIDAgMS0yLTJWOGEyIDIgMCAwIDEgMi0yaDZcIn0pLGkuY3JlYXRlRWxlbWVudChcInBvbHlsaW5lXCIse3BvaW50czpcIjE1IDMgMjEgMyAyMSA5XCJ9KSxpLmNyZWF0ZUVsZW1lbnQoXCJsaW5lXCIse3gxOlwiMTBcIix5MTpcIjE0XCIseDI6XCIyMVwiLHkyOlwiM1wifSkpKSl9O2NvbnN0IGQ9ZnVuY3Rpb24gUnVudGltZUVycm9yKHtlcnJvcjplfSl7Y29uc3QgdD1pLnVzZU1lbW8oKCgpPT5lLmZyYW1lcy5maW5kSW5kZXgoKGU9PmUuZXhwYW5kZWQmJkJvb2xlYW4oZS5vcmlnaW5hbENvZGVGcmFtZSkmJkJvb2xlYW4oZS5vcmlnaW5hbFN0YWNrRnJhbWUpKSkpLFtlLmZyYW1lc10pO2NvbnN0IHI9aS51c2VNZW1vKCgoKT0+ZS5mcmFtZXNbdF0/P251bGwpLFtlLmZyYW1lcyx0XSk7Y29uc3Qgbj1pLnVzZU1lbW8oKCgpPT50PDA/W106ZS5mcmFtZXMuc2xpY2UoMCx0KSksW2UuZnJhbWVzLHRdKTtjb25zdFtvLGFdPWkudXNlU3RhdGUocj09bnVsbCk7Y29uc3Qgcz1pLnVzZUNhbGxiYWNrKCgoKT0+e2EoKGU9PiFlKSl9KSxbXSk7Y29uc3QgdT1pLnVzZU1lbW8oKCgpPT5uLmZpbHRlcigoZT0+ZS5leHBhbmRlZHx8bykpKSxbbyxuXSk7Y29uc3QgZD1pLnVzZU1lbW8oKCgpPT5lLmZyYW1lcy5zbGljZSh0KzEpKSxbZS5mcmFtZXMsdF0pO2NvbnN0IGY9aS51c2VNZW1vKCgoKT0+ZC5maWx0ZXIoKGU9PmUuZXhwYW5kZWR8fG8pKSksW28sZF0pO2NvbnN0IG09aS51c2VNZW1vKCgoKT0+ZC5sZW5ndGghPT1mLmxlbmd0aHx8byYmciE9bnVsbCksW28sZC5sZW5ndGgscixmLmxlbmd0aF0pO3JldHVybiBpLmNyZWF0ZUVsZW1lbnQoaS5GcmFnbWVudCxudWxsLHI/aS5jcmVhdGVFbGVtZW50KGkuRnJhZ21lbnQsbnVsbCxpLmNyZWF0ZUVsZW1lbnQoXCJoMlwiLG51bGwsXCJTb3VyY2VcIiksdS5tYXAoKChlLHQpPT5pLmNyZWF0ZUVsZW1lbnQoYyx7a2V5OmBsZWFkaW5nLWZyYW1lLSR7dH0tJHtvfWAsZnJhbWU6ZX0pKSksaS5jcmVhdGVFbGVtZW50KGwuQ29kZUZyYW1lLHtzdGFja0ZyYW1lOnIub3JpZ2luYWxTdGFja0ZyYW1lLGNvZGVGcmFtZTpyLm9yaWdpbmFsQ29kZUZyYW1lfSkpOnVuZGVmaW5lZCxlLmNvbXBvbmVudFN0YWNrP2kuY3JlYXRlRWxlbWVudChpLkZyYWdtZW50LG51bGwsaS5jcmVhdGVFbGVtZW50KFwiaDJcIixudWxsLFwiQ29tcG9uZW50IFN0YWNrXCIpLGUuY29tcG9uZW50U3RhY2subWFwKCgoZSx0KT0+aS5jcmVhdGVFbGVtZW50KFwiZGl2XCIse2tleTp0LFwiZGF0YS1uZXh0anMtY29tcG9uZW50LXN0YWNrLWZyYW1lXCI6dHJ1ZX0saS5jcmVhdGVFbGVtZW50KFwiaDNcIixudWxsLGUpKSkpKTpudWxsLGYubGVuZ3RoP2kuY3JlYXRlRWxlbWVudChpLkZyYWdtZW50LG51bGwsaS5jcmVhdGVFbGVtZW50KFwiaDJcIixudWxsLFwiQ2FsbCBTdGFja1wiKSxmLm1hcCgoKGUsdCk9PmkuY3JlYXRlRWxlbWVudChjLHtrZXk6YGNhbGwtc3RhY2stJHt0fS0ke299YCxmcmFtZTplfSkpKSk6dW5kZWZpbmVkLG0/aS5jcmVhdGVFbGVtZW50KGkuRnJhZ21lbnQsbnVsbCxpLmNyZWF0ZUVsZW1lbnQoXCJidXR0b25cIix7dGFiSW5kZXg6MTAsXCJkYXRhLW5leHRqcy1kYXRhLXJ1bnRpbWUtZXJyb3ItY29sbGFwc2VkLWFjdGlvblwiOnRydWUsdHlwZTpcImJ1dHRvblwiLG9uQ2xpY2s6c30sbz9cIkhpZGVcIjpcIlNob3dcIixcIiBjb2xsYXBzZWQgZnJhbWVzXCIpKTp1bmRlZmluZWQpfTt0LlJ1bnRpbWVFcnJvcj1kO3Quc3R5bGVzPSgwLHMubm9vcClgXG4gIGJ1dHRvbltkYXRhLW5leHRqcy1kYXRhLXJ1bnRpbWUtZXJyb3ItY29sbGFwc2VkLWFjdGlvbl0ge1xuICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zaXplLWZvbnQtc21hbGwpO1xuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1zaXplLWZvbnQtYmlnZ2VyKTtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItYWNjZW50cy0zKTtcbiAgfVxuXG4gIFtkYXRhLW5leHRqcy1jYWxsLXN0YWNrLWZyYW1lXTpub3QoOmxhc3QtY2hpbGQpLFxuICBbZGF0YS1uZXh0anMtY29tcG9uZW50LXN0YWNrLWZyYW1lXTpub3QoOmxhc3QtY2hpbGQpIHtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zaXplLWdhcC1kb3VibGUpO1xuICB9XG5cbiAgW2RhdGEtbmV4dGpzLWNhbGwtc3RhY2stZnJhbWVdID4gaDMsXG4gIFtkYXRhLW5leHRqcy1jb21wb25lbnQtc3RhY2stZnJhbWVdID4gaDMge1xuICAgIG1hcmdpbi10b3A6IDA7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc2l6ZS1nYXApO1xuICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LXN0YWNrLW1vbm9zcGFjZSk7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXN0YWNrLWg2KTtcbiAgfVxuICBbZGF0YS1uZXh0anMtY2FsbC1zdGFjay1mcmFtZV0gPiBoM1tkYXRhLW5leHRqcy1mcmFtZS1leHBhbmRlZD0nZmFsc2UnXSB7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXN0YWNrLWhlYWRsaW5lKTtcbiAgfVxuICBbZGF0YS1uZXh0anMtY2FsbC1zdGFjay1mcmFtZV0gPiBkaXYge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBwYWRkaW5nLWxlZnQ6IGNhbGModmFyKC0tc2l6ZS1nYXApICsgdmFyKC0tc2l6ZS1nYXAtaGFsZikpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc2l6ZS1mb250LXNtYWxsKTtcbiAgICBjb2xvcjogdmFyKC0tY29sb3Itc3RhY2stc3VibGluZSk7XG4gIH1cbiAgW2RhdGEtbmV4dGpzLWNhbGwtc3RhY2stZnJhbWVdID4gZGl2ID4gc3ZnIHtcbiAgICB3aWR0aDogYXV0bztcbiAgICBoZWlnaHQ6IHZhcigtLXNpemUtZm9udC1zbWFsbCk7XG4gICAgbWFyZ2luLWxlZnQ6IHZhcigtLXNpemUtZ2FwKTtcblxuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cblxuICBbZGF0YS1uZXh0anMtY2FsbC1zdGFjay1mcmFtZV0gPiBkaXZbZGF0YS1oYXMtc291cmNlXSB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICB9XG4gIFtkYXRhLW5leHRqcy1jYWxsLXN0YWNrLWZyYW1lXSA+IGRpdltkYXRhLWhhcy1zb3VyY2VdOmhvdmVyIHtcbiAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZSBkb3R0ZWQ7XG4gIH1cbiAgW2RhdGEtbmV4dGpzLWNhbGwtc3RhY2stZnJhbWVdID4gZGl2W2RhdGEtaGFzLXNvdXJjZV0gPiBzdmcge1xuICAgIGRpc3BsYXk6IHVuc2V0O1xuICB9XG5gfSw0MDM6ZnVuY3Rpb24oZSx0LHIpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTp0cnVlfSk7dC5nZXRFcnJvckJ5VHlwZT12b2lkIDA7Y29uc3Qgbj1yKDg1MSk7Y29uc3Qgbz1yKDIzMyk7Y29uc3QgYT1yKDUwNCk7YXN5bmMgZnVuY3Rpb24gZ2V0RXJyb3JCeVR5cGUoZSl7Y29uc3R7aWQ6dCxldmVudDpyfT1lO3N3aXRjaChyLnR5cGUpe2Nhc2Ugbi5UWVBFX1VOSEFORExFRF9FUlJPUjpjYXNlIG4uVFlQRV9VTkhBTkRMRURfUkVKRUNUSU9OOntjb25zdCBlPXtpZDp0LHJ1bnRpbWU6dHJ1ZSxlcnJvcjpyLnJlYXNvbixmcmFtZXM6YXdhaXQoMCxhLmdldE9yaWdpbmFsU3RhY2tGcmFtZXMpKHIuZnJhbWVzLCgwLG8uZ2V0RXJyb3JTb3VyY2UpKHIucmVhc29uKSxyLnJlYXNvbi50b1N0cmluZygpKX07aWYoci50eXBlPT09bi5UWVBFX1VOSEFORExFRF9FUlJPUil7ZS5jb21wb25lbnRTdGFjaz1yLmNvbXBvbmVudFN0YWNrfXJldHVybiBlfWRlZmF1bHQ6e2JyZWFrfX1jb25zdCBpPXI7dGhyb3cgbmV3IEVycm9yKFwidHlwZSBzeXN0ZW0gaW52YXJpYW50IHZpb2xhdGlvblwiKX10LmdldEVycm9yQnlUeXBlPWdldEVycm9yQnlUeXBlfSwyMzM6ZnVuY3Rpb24oZSx0LHIpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTp0cnVlfSk7dC5nZXRTZXJ2ZXJFcnJvcj10LmRlY29yYXRlU2VydmVyRXJyb3I9dC5nZXRFcnJvclNvdXJjZT10LmdldEZpbGVzeXN0ZW1GcmFtZT12b2lkIDA7Y29uc3Qgbj1yKDk3NCk7ZnVuY3Rpb24gZ2V0RmlsZXN5c3RlbUZyYW1lKGUpe2NvbnN0IHQ9ey4uLmV9O2lmKHR5cGVvZiB0LmZpbGU9PT1cInN0cmluZ1wiKXtpZih0LmZpbGUuc3RhcnRzV2l0aChcIi9cIil8fC9eW2Etel06XFxcXC9pLnRlc3QodC5maWxlKXx8dC5maWxlLnN0YXJ0c1dpdGgoXCJcXFxcXFxcXFwiKSl7dC5maWxlPWBmaWxlOi8vJHt0LmZpbGV9YH19cmV0dXJuIHR9dC5nZXRGaWxlc3lzdGVtRnJhbWU9Z2V0RmlsZXN5c3RlbUZyYW1lO2NvbnN0IG89U3ltYm9sKFwiTmV4dGpzRXJyb3JcIik7ZnVuY3Rpb24gZ2V0RXJyb3JTb3VyY2UoZSl7cmV0dXJuIGVbb118fG51bGx9dC5nZXRFcnJvclNvdXJjZT1nZXRFcnJvclNvdXJjZTtmdW5jdGlvbiBkZWNvcmF0ZVNlcnZlckVycm9yKGUsdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbyx7d3JpdGFibGU6ZmFsc2UsZW51bWVyYWJsZTpmYWxzZSxjb25maWd1cmFibGU6ZmFsc2UsdmFsdWU6dH0pfXQuZGVjb3JhdGVTZXJ2ZXJFcnJvcj1kZWNvcmF0ZVNlcnZlckVycm9yO2Z1bmN0aW9uIGdldFNlcnZlckVycm9yKGUsdCl7bGV0IHI7dHJ5e3Rocm93IG5ldyBFcnJvcihlLm1lc3NhZ2UpfWNhdGNoKGUpe3I9ZX1yLm5hbWU9ZS5uYW1lO3RyeXtyLnN0YWNrPWAke3IudG9TdHJpbmcoKX1cXG4keygwLG4ucGFyc2UpKGUuc3RhY2spLm1hcChnZXRGaWxlc3lzdGVtRnJhbWUpLm1hcCgoZT0+e2xldCB0PWAgICAgYXQgJHtlLm1ldGhvZE5hbWV9YDtpZihlLmZpbGUpe2xldCByPWUuZmlsZTtpZihlLmxpbmVOdW1iZXIpe3IrPWA6JHtlLmxpbmVOdW1iZXJ9YDtpZihlLmNvbHVtbil7cis9YDoke2UuY29sdW1ufWB9fXQrPWAgKCR7cn0pYH1yZXR1cm4gdH0pKS5qb2luKFwiXFxuXCIpfWB9Y2F0Y2h7ci5zdGFjaz1lLnN0YWNrfWRlY29yYXRlU2VydmVyRXJyb3Iocix0KTtyZXR1cm4gcn10LmdldFNlcnZlckVycm9yPWdldFNlcnZlckVycm9yfSw5MTA6ZnVuY3Rpb24oZSx0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6dHJ1ZX0pO3Qubm9vcD12b2lkIDA7ZnVuY3Rpb24gbm9vcChlLC4uLnQpe2NvbnN0IHI9ZS5sZW5ndGgtMTtyZXR1cm4gZS5zbGljZSgwLHIpLnJlZHVjZSgoKGUscixuKT0+ZStyK3Rbbl0pLFwiXCIpK2Vbcl19dC5ub29wPW5vb3B9LDYzNjpmdW5jdGlvbihlLHQscil7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOnRydWV9KTt0LnBhcnNlU3RhY2s9dm9pZCAwO2NvbnN0IG49cig5NzQpO2NvbnN0IG89L1xcL19uZXh0KFxcL3N0YXRpY1xcLy4rKS9nO2Z1bmN0aW9uIHBhcnNlU3RhY2soZSl7Y29uc3QgdD0oMCxuLnBhcnNlKShlKTtyZXR1cm4gdC5tYXAoKGU9Pnt0cnl7Y29uc3QgdD1uZXcgVVJMKGUuZmlsZSk7Y29uc3Qgcj1vLmV4ZWModC5wYXRobmFtZSk7aWYocil7Y29uc3QgdD1wcm9jZXNzLmVudi5fX05FWFRfRElTVF9ESVI/LnJlcGxhY2UoL1xcXFwvZyxcIi9cIik/LnJlcGxhY2UoL1xcLyQvLFwiXCIpO2lmKHQpe2UuZmlsZT1cImZpbGU6Ly9cIit0LmNvbmNhdChyLnBvcCgpKX19fWNhdGNoe31yZXR1cm4gZX0pKX10LnBhcnNlU3RhY2s9cGFyc2VTdGFja30sNTA0OmZ1bmN0aW9uKGUsdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOnRydWV9KTt0LmdldEZyYW1lU291cmNlPXQuZ2V0T3JpZ2luYWxTdGFja0ZyYW1lcz10LmdldE9yaWdpbmFsU3RhY2tGcmFtZT12b2lkIDA7ZnVuY3Rpb24gZ2V0T3JpZ2luYWxTdGFja0ZyYW1lKGUsdCxyKXthc3luYyBmdW5jdGlvbiBfZ2V0T3JpZ2luYWxTdGFja0ZyYW1lKCl7Y29uc3Qgbj1uZXcgVVJMU2VhcmNoUGFyYW1zO24uYXBwZW5kKFwiaXNTZXJ2ZXJcIixTdHJpbmcodD09PVwic2VydmVyXCIpKTtuLmFwcGVuZChcImlzRWRnZVNlcnZlclwiLFN0cmluZyh0PT09XCJlZGdlLXNlcnZlclwiKSk7bi5hcHBlbmQoXCJlcnJvck1lc3NhZ2VcIixyKTtmb3IoY29uc3QgdCBpbiBlKXtuLmFwcGVuZCh0LChlW3RdPz9cIlwiKS50b1N0cmluZygpKX1jb25zdCBvPW5ldyBBYm9ydENvbnRyb2xsZXI7Y29uc3QgYT1zZXRUaW1lb3V0KCgoKT0+by5hYm9ydCgpKSwzZTMpO2NvbnN0IGk9YXdhaXQgc2VsZi5mZXRjaChgJHtwcm9jZXNzLmVudi5fX05FWFRfUk9VVEVSX0JBU0VQQVRIfHxcIlwifS9fX25leHRqc19vcmlnaW5hbC1zdGFjay1mcmFtZT8ke24udG9TdHJpbmcoKX1gLHtzaWduYWw6by5zaWduYWx9KS5maW5hbGx5KCgoKT0+e2NsZWFyVGltZW91dChhKX0pKTtpZighaS5va3x8aS5zdGF0dXM9PT0yMDQpe3JldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoYXdhaXQgaS50ZXh0KCkpKX1jb25zdCBsPWF3YWl0IGkuanNvbigpO3JldHVybntlcnJvcjpmYWxzZSxyZWFzb246bnVsbCxleHRlcm5hbDpmYWxzZSxleHBhbmRlZDohQm9vbGVhbigoZS5maWxlPy5pbmNsdWRlcyhcIm5vZGVfbW9kdWxlc1wiKXx8bC5vcmlnaW5hbFN0YWNrRnJhbWU/LmZpbGU/LmluY2x1ZGVzKFwibm9kZV9tb2R1bGVzXCIpKT8/dHJ1ZSksc291cmNlU3RhY2tGcmFtZTplLG9yaWdpbmFsU3RhY2tGcmFtZTpsLm9yaWdpbmFsU3RhY2tGcmFtZSxvcmlnaW5hbENvZGVGcmFtZTpsLm9yaWdpbmFsQ29kZUZyYW1lfHxudWxsfX1pZighKGUuZmlsZT8uc3RhcnRzV2l0aChcIndlYnBhY2staW50ZXJuYWw6XCIpfHxlLmZpbGU/LnN0YXJ0c1dpdGgoXCJmaWxlOlwiKSkpe3JldHVybiBQcm9taXNlLnJlc29sdmUoe2Vycm9yOmZhbHNlLHJlYXNvbjpudWxsLGV4dGVybmFsOnRydWUsZXhwYW5kZWQ6ZmFsc2Usc291cmNlU3RhY2tGcmFtZTplLG9yaWdpbmFsU3RhY2tGcmFtZTpudWxsLG9yaWdpbmFsQ29kZUZyYW1lOm51bGx9KX1yZXR1cm4gX2dldE9yaWdpbmFsU3RhY2tGcmFtZSgpLmNhdGNoKCh0PT4oe2Vycm9yOnRydWUscmVhc29uOnQ/Lm1lc3NhZ2U/P3Q/LnRvU3RyaW5nKCk/P1wiVW5rbm93biBFcnJvclwiLGV4dGVybmFsOmZhbHNlLGV4cGFuZGVkOmZhbHNlLHNvdXJjZVN0YWNrRnJhbWU6ZSxvcmlnaW5hbFN0YWNrRnJhbWU6bnVsbCxvcmlnaW5hbENvZGVGcmFtZTpudWxsfSkpKX10LmdldE9yaWdpbmFsU3RhY2tGcmFtZT1nZXRPcmlnaW5hbFN0YWNrRnJhbWU7ZnVuY3Rpb24gZ2V0T3JpZ2luYWxTdGFja0ZyYW1lcyhlLHQscil7cmV0dXJuIFByb21pc2UuYWxsKGUubWFwKChlPT5nZXRPcmlnaW5hbFN0YWNrRnJhbWUoZSx0LHIpKSkpfXQuZ2V0T3JpZ2luYWxTdGFja0ZyYW1lcz1nZXRPcmlnaW5hbFN0YWNrRnJhbWVzO2Z1bmN0aW9uIGdldEZyYW1lU291cmNlKGUpe2xldCB0PVwiXCI7dHJ5e2NvbnN0IHI9bmV3IFVSTChlLmZpbGUpO2lmKHR5cGVvZiBnbG9iYWxUaGlzIT09XCJ1bmRlZmluZWRcIiYmZ2xvYmFsVGhpcy5sb2NhdGlvbj8ub3JpZ2luIT09ci5vcmlnaW4pe2lmKHIub3JpZ2luPT09XCJudWxsXCIpe3QrPXIucHJvdG9jb2x9ZWxzZXt0Kz1yLm9yaWdpbn19dCs9ci5wYXRobmFtZTt0Kz1cIiBcIn1jYXRjaHt0Kz0oZS5maWxlfHxcIih1bmtub3duKVwiKStcIiBcIn1pZihlLmxpbmVOdW1iZXIhPW51bGwpe2lmKGUuY29sdW1uIT1udWxsKXt0Kz1gKCR7ZS5saW5lTnVtYmVyfToke2UuY29sdW1ufSkgYH1lbHNle3QrPWAoJHtlLmxpbmVOdW1iZXJ9KSBgfX1yZXR1cm4gdC5zbGljZSgwLC0xKX10LmdldEZyYW1lU291cmNlPWdldEZyYW1lU291cmNlfSwxNjk6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQscixuKXtpZihuPT09dW5kZWZpbmVkKW49cjt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQscik7aWYoIW98fChcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKSl7bz17ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiB0W3JdfX19T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbixvKX06ZnVuY3Rpb24oZSx0LHIsbil7aWYobj09PXVuZGVmaW5lZCluPXI7ZVtuXT10W3JdfSk7dmFyIG89dGhpcyYmdGhpcy5fX3NldE1vZHVsZURlZmF1bHR8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJkZWZhdWx0XCIse2VudW1lcmFibGU6dHJ1ZSx2YWx1ZTp0fSl9OmZ1bmN0aW9uKGUsdCl7ZVtcImRlZmF1bHRcIl09dH0pO3ZhciBhPXRoaXMmJnRoaXMuX19pbXBvcnRTdGFyfHxmdW5jdGlvbihlKXtpZihlJiZlLl9fZXNNb2R1bGUpcmV0dXJuIGU7dmFyIHQ9e307aWYoZSE9bnVsbClmb3IodmFyIHIgaW4gZSlpZihyIT09XCJkZWZhdWx0XCImJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpKW4odCxlLHIpO28odCxlKTtyZXR1cm4gdH07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOnRydWV9KTt0LnVzZU9uQ2xpY2tPdXRzaWRlPXZvaWQgMDtjb25zdCBpPWEocig1MjIpKTtmdW5jdGlvbiB1c2VPbkNsaWNrT3V0c2lkZShlLHQpe2kudXNlRWZmZWN0KCgoKT0+e2lmKGU9PW51bGx8fHQ9PW51bGwpe3JldHVybn1jb25zdCBsaXN0ZW5lcj1yPT57aWYoIWV8fGUuY29udGFpbnMoci50YXJnZXQpKXtyZXR1cm59dChyKX07Y29uc3Qgcj1lLmdldFJvb3ROb2RlKCk7ci5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vkb3duXCIsbGlzdGVuZXIpO3IuYWRkRXZlbnRMaXN0ZW5lcihcInRvdWNoc3RhcnRcIixsaXN0ZW5lcik7cmV0dXJuIGZ1bmN0aW9uKCl7ci5yZW1vdmVFdmVudExpc3RlbmVyKFwibW91c2Vkb3duXCIsbGlzdGVuZXIpO3IucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInRvdWNoc3RhcnRcIixsaXN0ZW5lcil9fSksW3QsZV0pfXQudXNlT25DbGlja091dHNpZGU9dXNlT25DbGlja091dHNpZGV9LDg2NTpmdW5jdGlvbihlLHQscil7dmFyIG49dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxyLG4pe2lmKG49PT11bmRlZmluZWQpbj1yO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxyKTtpZighb3x8KFwiZ2V0XCJpbiBvPyF0Ll9fZXNNb2R1bGU6by53cml0YWJsZXx8by5jb25maWd1cmFibGUpKXtvPXtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbcl19fX1PYmplY3QuZGVmaW5lUHJvcGVydHkoZSxuLG8pfTpmdW5jdGlvbihlLHQscixuKXtpZihuPT09dW5kZWZpbmVkKW49cjtlW25dPXRbcl19KTt2YXIgbz10aGlzJiZ0aGlzLl9fc2V0TW9kdWxlRGVmYXVsdHx8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcImRlZmF1bHRcIix7ZW51bWVyYWJsZTp0cnVlLHZhbHVlOnR9KX06ZnVuY3Rpb24oZSx0KXtlW1wiZGVmYXVsdFwiXT10fSk7dmFyIGE9dGhpcyYmdGhpcy5fX2ltcG9ydFN0YXJ8fGZ1bmN0aW9uKGUpe2lmKGUmJmUuX19lc01vZHVsZSlyZXR1cm4gZTt2YXIgdD17fTtpZihlIT1udWxsKWZvcih2YXIgciBpbiBlKWlmKHIhPT1cImRlZmF1bHRcIiYmT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikpbih0LGUscik7byh0LGUpO3JldHVybiB0fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6dHJ1ZX0pO3QuQ2xvc2VJY29uPXZvaWQgMDtjb25zdCBpPWEocig1MjIpKTtjb25zdCBDbG9zZUljb249KCk9PmkuY3JlYXRlRWxlbWVudChcInN2Z1wiLHt3aWR0aDpcIjI0XCIsaGVpZ2h0OlwiMjRcIix2aWV3Qm94OlwiMCAwIDI0IDI0XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGkuY3JlYXRlRWxlbWVudChcInBhdGhcIix7ZDpcIk0xOCA2TDYgMThcIixzdHJva2U6XCJjdXJyZW50Q29sb3JcIixzdHJva2VXaWR0aDpcIjJcIixzdHJva2VMaW5lY2FwOlwicm91bmRcIixzdHJva2VMaW5lam9pbjpcInJvdW5kXCJ9KSxpLmNyZWF0ZUVsZW1lbnQoXCJwYXRoXCIse2Q6XCJNNiA2TDE4IDE4XCIsc3Ryb2tlOlwiY3VycmVudENvbG9yXCIsc3Ryb2tlV2lkdGg6XCIyXCIsc3Ryb2tlTGluZWNhcDpcInJvdW5kXCIsc3Ryb2tlTGluZWpvaW46XCJyb3VuZFwifSkpO3QuQ2xvc2VJY29uPUNsb3NlSWNvbn0sODg0OmZ1bmN0aW9uKGUsdCxyKXt2YXIgbj10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0LHIsbil7aWYobj09PXVuZGVmaW5lZCluPXI7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LHIpO2lmKCFvfHwoXCJnZXRcImluIG8/IXQuX19lc01vZHVsZTpvLndyaXRhYmxlfHxvLmNvbmZpZ3VyYWJsZSkpe289e2VudW1lcmFibGU6dHJ1ZSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtyXX19fU9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG4sbyl9OmZ1bmN0aW9uKGUsdCxyLG4pe2lmKG49PT11bmRlZmluZWQpbj1yO2Vbbl09dFtyXX0pO3ZhciBvPXRoaXMmJnRoaXMuX19zZXRNb2R1bGVEZWZhdWx0fHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiZGVmYXVsdFwiLHtlbnVtZXJhYmxlOnRydWUsdmFsdWU6dH0pfTpmdW5jdGlvbihlLHQpe2VbXCJkZWZhdWx0XCJdPXR9KTt2YXIgYT10aGlzJiZ0aGlzLl9faW1wb3J0U3Rhcnx8ZnVuY3Rpb24oZSl7aWYoZSYmZS5fX2VzTW9kdWxlKXJldHVybiBlO3ZhciB0PXt9O2lmKGUhPW51bGwpZm9yKHZhciByIGluIGUpaWYociE9PVwiZGVmYXVsdFwiJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxyKSluKHQsZSxyKTtvKHQsZSk7cmV0dXJuIHR9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTp0cnVlfSk7dC5CYXNlPXZvaWQgMDtjb25zdCBpPWEocig1MjIpKTtjb25zdCBsPXIoOTEwKTtmdW5jdGlvbiBCYXNlKCl7cmV0dXJuIGkuY3JlYXRlRWxlbWVudChcInN0eWxlXCIsbnVsbCwoMCxsLm5vb3ApYFxuICAgICAgICA6aG9zdCB7XG4gICAgICAgICAgLS1zaXplLWdhcC1oYWxmOiA0cHg7XG4gICAgICAgICAgLS1zaXplLWdhcDogOHB4O1xuICAgICAgICAgIC0tc2l6ZS1nYXAtZG91YmxlOiAxNnB4O1xuICAgICAgICAgIC0tc2l6ZS1nYXAtdHJpcGxlOiAyNHB4O1xuICAgICAgICAgIC0tc2l6ZS1nYXAtcXVhZDogMzJweDtcblxuICAgICAgICAgIC0tc2l6ZS1mb250LXNtYWxsOiAxNHB4O1xuICAgICAgICAgIC0tc2l6ZS1mb250OiAxNnB4O1xuICAgICAgICAgIC0tc2l6ZS1mb250LWJpZzogMjBweDtcbiAgICAgICAgICAtLXNpemUtZm9udC1iaWdnZXI6IDI0cHg7XG5cbiAgICAgICAgICAtLWNvbG9yLWJhY2tncm91bmQ6IHdoaXRlO1xuICAgICAgICAgIC0tY29sb3ItZm9udDogIzc1NzU3NTtcbiAgICAgICAgICAtLWNvbG9yLWJhY2tkcm9wOiByZ2JhKDE3LCAxNywgMTcsIDAuMik7XG5cbiAgICAgICAgICAtLWNvbG9yLXN0YWNrLWg2OiAjMjIyO1xuICAgICAgICAgIC0tY29sb3Itc3RhY2staGVhZGxpbmU6ICM2NjY7XG4gICAgICAgICAgLS1jb2xvci1zdGFjay1zdWJsaW5lOiAjOTk5O1xuXG4gICAgICAgICAgLS1jb2xvci1hY2NlbnRzLTE6ICM4MDgwODA7XG4gICAgICAgICAgLS1jb2xvci1hY2NlbnRzLTI6ICMyMjIyMjI7XG4gICAgICAgICAgLS1jb2xvci1hY2NlbnRzLTM6ICM0MDQwNDA7XG5cbiAgICAgICAgICAtLWZvbnQtc3RhY2stbW9ub3NwYWNlOiAnU0ZNb25vLVJlZ3VsYXInLCBDb25zb2xhcywgJ0xpYmVyYXRpb24gTW9ubycsXG4gICAgICAgICAgICBNZW5sbywgQ291cmllciwgbW9ub3NwYWNlO1xuXG4gICAgICAgICAgLS1jb2xvci1hbnNpLXNlbGVjdGlvbjogcmdiYSg5NSwgMTI2LCAxNTEsIDAuNDgpO1xuICAgICAgICAgIC0tY29sb3ItYW5zaS1iZzogIzExMTExMTtcbiAgICAgICAgICAtLWNvbG9yLWFuc2ktZmc6ICNjY2NjY2M7XG5cbiAgICAgICAgICAtLWNvbG9yLWFuc2ktd2hpdGU6ICM3Nzc3Nzc7XG4gICAgICAgICAgLS1jb2xvci1hbnNpLWJsYWNrOiAjMTQxNDE0O1xuICAgICAgICAgIC0tY29sb3ItYW5zaS1ibHVlOiAjMDBhYWZmO1xuICAgICAgICAgIC0tY29sb3ItYW5zaS1jeWFuOiAjODhkZGZmO1xuICAgICAgICAgIC0tY29sb3ItYW5zaS1ncmVlbjogIzk4ZWM2NTtcbiAgICAgICAgICAtLWNvbG9yLWFuc2ktbWFnZW50YTogI2FhODhmZjtcbiAgICAgICAgICAtLWNvbG9yLWFuc2ktcmVkOiAjZmY1NTU1O1xuICAgICAgICAgIC0tY29sb3ItYW5zaS15ZWxsb3c6ICNmZmNjMzM7XG4gICAgICAgICAgLS1jb2xvci1hbnNpLWJyaWdodC13aGl0ZTogI2ZmZmZmZjtcbiAgICAgICAgICAtLWNvbG9yLWFuc2ktYnJpZ2h0LWJsYWNrOiAjNzc3Nzc3O1xuICAgICAgICAgIC0tY29sb3ItYW5zaS1icmlnaHQtYmx1ZTogIzMzYmJmZjtcbiAgICAgICAgICAtLWNvbG9yLWFuc2ktYnJpZ2h0LWN5YW46ICNiYmVjZmY7XG4gICAgICAgICAgLS1jb2xvci1hbnNpLWJyaWdodC1ncmVlbjogI2I2ZjI5MjtcbiAgICAgICAgICAtLWNvbG9yLWFuc2ktYnJpZ2h0LW1hZ2VudGE6ICNjZWJiZmY7XG4gICAgICAgICAgLS1jb2xvci1hbnNpLWJyaWdodC1yZWQ6ICNmZjg4ODg7XG4gICAgICAgICAgLS1jb2xvci1hbnNpLWJyaWdodC15ZWxsb3c6ICNmZmQ5NjY7XG4gICAgICAgIH1cblxuICAgICAgICBAbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSB7XG4gICAgICAgICAgOmhvc3Qge1xuICAgICAgICAgICAgLS1jb2xvci1iYWNrZ3JvdW5kOiByZ2IoMjgsIDI4LCAzMCk7XG4gICAgICAgICAgICAtLWNvbG9yLWZvbnQ6IHdoaXRlO1xuICAgICAgICAgICAgLS1jb2xvci1iYWNrZHJvcDogcmdiKDQ0LCA0NCwgNDYpO1xuXG4gICAgICAgICAgICAtLWNvbG9yLXN0YWNrLWg2OiByZ2IoMjAwLCAyMDAsIDIwNCk7XG4gICAgICAgICAgICAtLWNvbG9yLXN0YWNrLWhlYWRsaW5lOiByZ2IoOTksIDk5LCAxMDIpO1xuICAgICAgICAgICAgLS1jb2xvci1zdGFjay1zdWJsaW5lOiByZ2JhKDE0MiwgMTQyLCAxNDcpO1xuXG4gICAgICAgICAgICAtLWNvbG9yLWFjY2VudHMtMzogcmdiKDExOCwgMTE4LCAxMTgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5tb25vIHtcbiAgICAgICAgICBmb250LWZhbWlseTogdmFyKC0tZm9udC1zdGFjay1tb25vc3BhY2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgaDEsXG4gICAgICAgIGgyLFxuICAgICAgICBoMyxcbiAgICAgICAgaDQsXG4gICAgICAgIGg1LFxuICAgICAgICBoNiB7XG4gICAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc2l6ZS1nYXApO1xuICAgICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgICAgICAgfVxuICAgICAgYCl9dC5CYXNlPUJhc2V9LDQ2NDpmdW5jdGlvbihlLHQscil7dmFyIG49dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxyLG4pe2lmKG49PT11bmRlZmluZWQpbj1yO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxyKTtpZighb3x8KFwiZ2V0XCJpbiBvPyF0Ll9fZXNNb2R1bGU6by53cml0YWJsZXx8by5jb25maWd1cmFibGUpKXtvPXtlbnVtZXJhYmxlOnRydWUsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbcl19fX1PYmplY3QuZGVmaW5lUHJvcGVydHkoZSxuLG8pfTpmdW5jdGlvbihlLHQscixuKXtpZihuPT09dW5kZWZpbmVkKW49cjtlW25dPXRbcl19KTt2YXIgbz10aGlzJiZ0aGlzLl9fc2V0TW9kdWxlRGVmYXVsdHx8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcImRlZmF1bHRcIix7ZW51bWVyYWJsZTp0cnVlLHZhbHVlOnR9KX06ZnVuY3Rpb24oZSx0KXtlW1wiZGVmYXVsdFwiXT10fSk7dmFyIGE9dGhpcyYmdGhpcy5fX2ltcG9ydFN0YXJ8fGZ1bmN0aW9uKGUpe2lmKGUmJmUuX19lc01vZHVsZSlyZXR1cm4gZTt2YXIgdD17fTtpZihlIT1udWxsKWZvcih2YXIgciBpbiBlKWlmKHIhPT1cImRlZmF1bHRcIiYmT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikpbih0LGUscik7byh0LGUpO3JldHVybiB0fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6dHJ1ZX0pO3QuQ29tcG9uZW50U3R5bGVzPXZvaWQgMDtjb25zdCBpPWEocig1MjIpKTtjb25zdCBsPXIoMzk5KTtjb25zdCBzPXIoNjUxKTtjb25zdCB1PXIoNTQzKTtjb25zdCBjPXIoOTkzKTtjb25zdCBkPXIoNDg4KTtjb25zdCBmPXIoMTIwKTtjb25zdCBtPXIoOTM2KTtjb25zdCBwPXIoMzU1KTtjb25zdCBiPXIoNDg0KTtjb25zdCB2PXIoOTEwKTtmdW5jdGlvbiBDb21wb25lbnRTdHlsZXMoKXtyZXR1cm4gaS5jcmVhdGVFbGVtZW50KFwic3R5bGVcIixudWxsLCgwLHYubm9vcClgXG4gICAgICAgICR7Yy5zdHlsZXN9XG4gICAgICAgICR7Zi5zdHlsZXN9XG4gICAgICAgICR7cy5zdHlsZXN9XG4gICAgICAgICR7dS5zdHlsZXN9XG4gICAgICAgICR7bC5zdHlsZXN9XG4gICAgICAgICR7ZC5zdHlsZXN9XG4gICAgICAgIFxuICAgICAgICAke20uc3R5bGVzfVxuICAgICAgICAke3Auc3R5bGVzfVxuICAgICAgICAke2Iuc3R5bGVzfVxuICAgICAgYCl9dC5Db21wb25lbnRTdHlsZXM9Q29tcG9uZW50U3R5bGVzfSw0OTU6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXRoaXMmJnRoaXMuX19jcmVhdGVCaW5kaW5nfHwoT2JqZWN0LmNyZWF0ZT9mdW5jdGlvbihlLHQscixuKXtpZihuPT09dW5kZWZpbmVkKW49cjt2YXIgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQscik7aWYoIW98fChcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKSl7bz17ZW51bWVyYWJsZTp0cnVlLGdldDpmdW5jdGlvbigpe3JldHVybiB0W3JdfX19T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbixvKX06ZnVuY3Rpb24oZSx0LHIsbil7aWYobj09PXVuZGVmaW5lZCluPXI7ZVtuXT10W3JdfSk7dmFyIG89dGhpcyYmdGhpcy5fX3NldE1vZHVsZURlZmF1bHR8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJkZWZhdWx0XCIse2VudW1lcmFibGU6dHJ1ZSx2YWx1ZTp0fSl9OmZ1bmN0aW9uKGUsdCl7ZVtcImRlZmF1bHRcIl09dH0pO3ZhciBhPXRoaXMmJnRoaXMuX19pbXBvcnRTdGFyfHxmdW5jdGlvbihlKXtpZihlJiZlLl9fZXNNb2R1bGUpcmV0dXJuIGU7dmFyIHQ9e307aWYoZSE9bnVsbClmb3IodmFyIHIgaW4gZSlpZihyIT09XCJkZWZhdWx0XCImJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpKW4odCxlLHIpO28odCxlKTtyZXR1cm4gdH07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOnRydWV9KTt0LkNzc1Jlc2V0PXZvaWQgMDtjb25zdCBpPWEocig1MjIpKTtjb25zdCBsPXIoOTEwKTtmdW5jdGlvbiBDc3NSZXNldCgpe3JldHVybiBpLmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiLG51bGwsKDAsbC5ub29wKWBcbiAgICAgICAgOmhvc3Qge1xuICAgICAgICAgIGFsbDogaW5pdGlhbDtcblxuICAgICAgICAgIC8qIHRoZSBkaXJlY3Rpb24gcHJvcGVydHkgaXMgbm90IHJlc2V0IGJ5ICdhbGwnICovXG4gICAgICAgICAgZGlyZWN0aW9uOiBsdHI7XG4gICAgICAgIH1cblxuICAgICAgICAvKiFcbiAgICAgICAgICogQm9vdHN0cmFwIFJlYm9vdCB2NC40LjEgKGh0dHBzOi8vZ2V0Ym9vdHN0cmFwLmNvbS8pXG4gICAgICAgICAqIENvcHlyaWdodCAyMDExLTIwMTkgVGhlIEJvb3RzdHJhcCBBdXRob3JzXG4gICAgICAgICAqIENvcHlyaWdodCAyMDExLTIwMTkgVHdpdHRlciwgSW5jLlxuICAgICAgICAgKiBMaWNlbnNlZCB1bmRlciBNSVQgKGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9ibG9iL21hc3Rlci9MSUNFTlNFKVxuICAgICAgICAgKiBGb3JrZWQgZnJvbSBOb3JtYWxpemUuY3NzLCBsaWNlbnNlZCBNSVQgKGh0dHBzOi8vZ2l0aHViLmNvbS9uZWNvbGFzL25vcm1hbGl6ZS5jc3MvYmxvYi9tYXN0ZXIvTElDRU5TRS5tZClcbiAgICAgICAgICovXG4gICAgICAgICosXG4gICAgICAgICo6OmJlZm9yZSxcbiAgICAgICAgKjo6YWZ0ZXIge1xuICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICAgIH1cblxuICAgICAgICA6aG9zdCB7XG4gICAgICAgICAgZm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7XG4gICAgICAgICAgbGluZS1oZWlnaHQ6IDEuMTU7XG4gICAgICAgICAgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlO1xuICAgICAgICAgIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGFydGljbGUsXG4gICAgICAgIGFzaWRlLFxuICAgICAgICBmaWdjYXB0aW9uLFxuICAgICAgICBmaWd1cmUsXG4gICAgICAgIGZvb3RlcixcbiAgICAgICAgaGVhZGVyLFxuICAgICAgICBoZ3JvdXAsXG4gICAgICAgIG1haW4sXG4gICAgICAgIG5hdixcbiAgICAgICAgc2VjdGlvbiB7XG4gICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIH1cblxuICAgICAgICA6aG9zdCB7XG4gICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICAgIGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICdTZWdvZSBVSScsIFJvYm90byxcbiAgICAgICAgICAgICdIZWx2ZXRpY2EgTmV1ZScsIEFyaWFsLCAnTm90byBTYW5zJywgc2Fucy1zZXJpZixcbiAgICAgICAgICAgICdBcHBsZSBDb2xvciBFbW9qaScsICdTZWdvZSBVSSBFbW9qaScsICdTZWdvZSBVSSBTeW1ib2wnLFxuICAgICAgICAgICAgJ05vdG8gQ29sb3IgRW1vamknO1xuICAgICAgICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICAgICAgICBmb250LXdlaWdodDogNDAwO1xuICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjU7XG4gICAgICAgICAgY29sb3I6IHZhcigtLWNvbG9yLWZvbnQpO1xuICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgICAgICAgfVxuXG4gICAgICAgIFt0YWJpbmRleD0nLTEnXTpmb2N1czpub3QoOmZvY3VzLXZpc2libGUpIHtcbiAgICAgICAgICBvdXRsaW5lOiAwICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cblxuICAgICAgICBociB7XG4gICAgICAgICAgYm94LXNpemluZzogY29udGVudC1ib3g7XG4gICAgICAgICAgaGVpZ2h0OiAwO1xuICAgICAgICAgIG92ZXJmbG93OiB2aXNpYmxlO1xuICAgICAgICB9XG5cbiAgICAgICAgaDEsXG4gICAgICAgIGgyLFxuICAgICAgICBoMyxcbiAgICAgICAgaDQsXG4gICAgICAgIGg1LFxuICAgICAgICBoNiB7XG4gICAgICAgICAgbWFyZ2luLXRvcDogMDtcbiAgICAgICAgICBtYXJnaW4tYm90dG9tOiA4cHg7XG4gICAgICAgIH1cblxuICAgICAgICBwIHtcbiAgICAgICAgICBtYXJnaW4tdG9wOiAwO1xuICAgICAgICAgIG1hcmdpbi1ib3R0b206IDE2cHg7XG4gICAgICAgIH1cblxuICAgICAgICBhYmJyW3RpdGxlXSxcbiAgICAgICAgYWJicltkYXRhLW9yaWdpbmFsLXRpdGxlXSB7XG4gICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgICAgICAgLXdlYmtpdC10ZXh0LWRlY29yYXRpb246IHVuZGVybGluZSBkb3R0ZWQ7XG4gICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmUgZG90dGVkO1xuICAgICAgICAgIGN1cnNvcjogaGVscDtcbiAgICAgICAgICBib3JkZXItYm90dG9tOiAwO1xuICAgICAgICAgIC13ZWJraXQtdGV4dC1kZWNvcmF0aW9uLXNraXAtaW5rOiBub25lO1xuICAgICAgICAgIHRleHQtZGVjb3JhdGlvbi1za2lwLWluazogbm9uZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGFkZHJlc3Mge1xuICAgICAgICAgIG1hcmdpbi1ib3R0b206IDE2cHg7XG4gICAgICAgICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgICAgICAgIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xuICAgICAgICB9XG5cbiAgICAgICAgb2wsXG4gICAgICAgIHVsLFxuICAgICAgICBkbCB7XG4gICAgICAgICAgbWFyZ2luLXRvcDogMDtcbiAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxNnB4O1xuICAgICAgICB9XG5cbiAgICAgICAgb2wgb2wsXG4gICAgICAgIHVsIHVsLFxuICAgICAgICBvbCB1bCxcbiAgICAgICAgdWwgb2wge1xuICAgICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgIH1cblxuICAgICAgICBkdCB7XG4gICAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgICAgfVxuXG4gICAgICAgIGRkIHtcbiAgICAgICAgICBtYXJnaW4tYm90dG9tOiA4cHg7XG4gICAgICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgICAgIH1cblxuICAgICAgICBibG9ja3F1b3RlIHtcbiAgICAgICAgICBtYXJnaW46IDAgMCAxNnB4O1xuICAgICAgICB9XG5cbiAgICAgICAgYixcbiAgICAgICAgc3Ryb25nIHtcbiAgICAgICAgICBmb250LXdlaWdodDogYm9sZGVyO1xuICAgICAgICB9XG5cbiAgICAgICAgc21hbGwge1xuICAgICAgICAgIGZvbnQtc2l6ZTogODAlO1xuICAgICAgICB9XG5cbiAgICAgICAgc3ViLFxuICAgICAgICBzdXAge1xuICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICBmb250LXNpemU6IDc1JTtcbiAgICAgICAgICBsaW5lLWhlaWdodDogMDtcbiAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XG4gICAgICAgIH1cblxuICAgICAgICBzdWIge1xuICAgICAgICAgIGJvdHRvbTogLTAuMjVlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIHN1cCB7XG4gICAgICAgICAgdG9wOiAtMC41ZW07XG4gICAgICAgIH1cblxuICAgICAgICBhIHtcbiAgICAgICAgICBjb2xvcjogIzAwN2JmZjtcbiAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICAgIH1cblxuICAgICAgICBhOmhvdmVyIHtcbiAgICAgICAgICBjb2xvcjogIzAwNTZiMztcbiAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGE6bm90KFtocmVmXSkge1xuICAgICAgICAgIGNvbG9yOiBpbmhlcml0O1xuICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGE6bm90KFtocmVmXSk6aG92ZXIge1xuICAgICAgICAgIGNvbG9yOiBpbmhlcml0O1xuICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHByZSxcbiAgICAgICAgY29kZSxcbiAgICAgICAga2JkLFxuICAgICAgICBzYW1wIHtcbiAgICAgICAgICBmb250LWZhbWlseTogU0ZNb25vLVJlZ3VsYXIsIE1lbmxvLCBNb25hY28sIENvbnNvbGFzLFxuICAgICAgICAgICAgJ0xpYmVyYXRpb24gTW9ubycsICdDb3VyaWVyIE5ldycsIG1vbm9zcGFjZTtcbiAgICAgICAgICBmb250LXNpemU6IDFlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIHByZSB7XG4gICAgICAgICAgbWFyZ2luLXRvcDogMDtcbiAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxNnB4O1xuICAgICAgICAgIG92ZXJmbG93OiBhdXRvO1xuICAgICAgICB9XG5cbiAgICAgICAgZmlndXJlIHtcbiAgICAgICAgICBtYXJnaW46IDAgMCAxNnB4O1xuICAgICAgICB9XG5cbiAgICAgICAgaW1nIHtcbiAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgICAgIGJvcmRlci1zdHlsZTogbm9uZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHN2ZyB7XG4gICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgICB9XG5cbiAgICAgICAgdGFibGUge1xuICAgICAgICAgIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XG4gICAgICAgIH1cblxuICAgICAgICBjYXB0aW9uIHtcbiAgICAgICAgICBwYWRkaW5nLXRvcDogMTJweDtcbiAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogMTJweDtcbiAgICAgICAgICBjb2xvcjogIzZjNzU3ZDtcbiAgICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICAgIGNhcHRpb24tc2lkZTogYm90dG9tO1xuICAgICAgICB9XG5cbiAgICAgICAgdGgge1xuICAgICAgICAgIHRleHQtYWxpZ246IGluaGVyaXQ7XG4gICAgICAgIH1cblxuICAgICAgICBsYWJlbCB7XG4gICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgIG1hcmdpbi1ib3R0b206IDhweDtcbiAgICAgICAgfVxuXG4gICAgICAgIGJ1dHRvbiB7XG4gICAgICAgICAgYm9yZGVyLXJhZGl1czogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIGJ1dHRvbjpmb2N1cyB7XG4gICAgICAgICAgb3V0bGluZTogMXB4IGRvdHRlZDtcbiAgICAgICAgICBvdXRsaW5lOiA1cHggYXV0byAtd2Via2l0LWZvY3VzLXJpbmctY29sb3I7XG4gICAgICAgIH1cblxuICAgICAgICBpbnB1dCxcbiAgICAgICAgYnV0dG9uLFxuICAgICAgICBzZWxlY3QsXG4gICAgICAgIG9wdGdyb3VwLFxuICAgICAgICB0ZXh0YXJlYSB7XG4gICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xuICAgICAgICAgIGZvbnQtc2l6ZTogaW5oZXJpdDtcbiAgICAgICAgICBsaW5lLWhlaWdodDogaW5oZXJpdDtcbiAgICAgICAgfVxuXG4gICAgICAgIGJ1dHRvbixcbiAgICAgICAgaW5wdXQge1xuICAgICAgICAgIG92ZXJmbG93OiB2aXNpYmxlO1xuICAgICAgICB9XG5cbiAgICAgICAgYnV0dG9uLFxuICAgICAgICBzZWxlY3Qge1xuICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiBub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgc2VsZWN0IHtcbiAgICAgICAgICB3b3JkLXdyYXA6IG5vcm1hbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGJ1dHRvbixcbiAgICAgICAgW3R5cGU9J2J1dHRvbiddLFxuICAgICAgICBbdHlwZT0ncmVzZXQnXSxcbiAgICAgICAgW3R5cGU9J3N1Ym1pdCddIHtcbiAgICAgICAgICAtd2Via2l0LWFwcGVhcmFuY2U6IGJ1dHRvbjtcbiAgICAgICAgfVxuXG4gICAgICAgIGJ1dHRvbjpub3QoOmRpc2FibGVkKSxcbiAgICAgICAgW3R5cGU9J2J1dHRvbiddOm5vdCg6ZGlzYWJsZWQpLFxuICAgICAgICBbdHlwZT0ncmVzZXQnXTpub3QoOmRpc2FibGVkKSxcbiAgICAgICAgW3R5cGU9J3N1Ym1pdCddOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIH1cblxuICAgICAgICBidXR0b246Oi1tb3otZm9jdXMtaW5uZXIsXG4gICAgICAgIFt0eXBlPSdidXR0b24nXTo6LW1vei1mb2N1cy1pbm5lcixcbiAgICAgICAgW3R5cGU9J3Jlc2V0J106Oi1tb3otZm9jdXMtaW5uZXIsXG4gICAgICAgIFt0eXBlPSdzdWJtaXQnXTo6LW1vei1mb2N1cy1pbm5lciB7XG4gICAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgICBib3JkZXItc3R5bGU6IG5vbmU7XG4gICAgICAgIH1cblxuICAgICAgICBpbnB1dFt0eXBlPSdyYWRpbyddLFxuICAgICAgICBpbnB1dFt0eXBlPSdjaGVja2JveCddIHtcbiAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIH1cblxuICAgICAgICBpbnB1dFt0eXBlPSdkYXRlJ10sXG4gICAgICAgIGlucHV0W3R5cGU9J3RpbWUnXSxcbiAgICAgICAgaW5wdXRbdHlwZT0nZGF0ZXRpbWUtbG9jYWwnXSxcbiAgICAgICAgaW5wdXRbdHlwZT0nbW9udGgnXSB7XG4gICAgICAgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBsaXN0Ym94O1xuICAgICAgICB9XG5cbiAgICAgICAgdGV4dGFyZWEge1xuICAgICAgICAgIG92ZXJmbG93OiBhdXRvO1xuICAgICAgICAgIHJlc2l6ZTogdmVydGljYWw7XG4gICAgICAgIH1cblxuICAgICAgICBmaWVsZHNldCB7XG4gICAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICAgIGJvcmRlcjogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIGxlZ2VuZCB7XG4gICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgICAgbWFyZ2luLWJvdHRvbTogOHB4O1xuICAgICAgICAgIGZvbnQtc2l6ZTogMjRweDtcbiAgICAgICAgICBsaW5lLWhlaWdodDogaW5oZXJpdDtcbiAgICAgICAgICBjb2xvcjogaW5oZXJpdDtcbiAgICAgICAgICB3aGl0ZS1zcGFjZTogbm9ybWFsO1xuICAgICAgICB9XG5cbiAgICAgICAgcHJvZ3Jlc3Mge1xuICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcbiAgICAgICAgfVxuXG4gICAgICAgIFt0eXBlPSdudW1iZXInXTo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbixcbiAgICAgICAgW3R5cGU9J251bWJlciddOjotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uIHtcbiAgICAgICAgICBoZWlnaHQ6IGF1dG87XG4gICAgICAgIH1cblxuICAgICAgICBbdHlwZT0nc2VhcmNoJ10ge1xuICAgICAgICAgIG91dGxpbmUtb2Zmc2V0OiAtMnB4O1xuICAgICAgICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbiAgICAgICAgfVxuXG4gICAgICAgIFt0eXBlPSdzZWFyY2gnXTo6LXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbiB7XG4gICAgICAgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgOjotd2Via2l0LWZpbGUtdXBsb2FkLWJ1dHRvbiB7XG4gICAgICAgICAgZm9udDogaW5oZXJpdDtcbiAgICAgICAgICAtd2Via2l0LWFwcGVhcmFuY2U6IGJ1dHRvbjtcbiAgICAgICAgfVxuXG4gICAgICAgIG91dHB1dCB7XG4gICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICB9XG5cbiAgICAgICAgc3VtbWFyeSB7XG4gICAgICAgICAgZGlzcGxheTogbGlzdC1pdGVtO1xuICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRlbXBsYXRlIHtcbiAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgW2hpZGRlbl0ge1xuICAgICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICAgICAgfVxuICAgICAgYCl9dC5Dc3NSZXNldD1Dc3NSZXNldH0sOTk3OmZ1bmN0aW9uKGUpe2UuZXhwb3J0cz1yZXF1aXJlKFwibmV4dC9kaXN0L2NvbXBpbGVkL2Fuc2VyXCIpfSwyOTI6ZnVuY3Rpb24oZSl7ZS5leHBvcnRzPXJlcXVpcmUoXCJuZXh0L2Rpc3QvY29tcGlsZWQvY3NzLmVzY2FwZVwiKX0sNzA5OmZ1bmN0aW9uKGUpe2UuZXhwb3J0cz1yZXF1aXJlKFwibmV4dC9kaXN0L2NvbXBpbGVkL3BsYXRmb3JtXCIpfSw5NzQ6ZnVuY3Rpb24oZSl7ZS5leHBvcnRzPXJlcXVpcmUoXCJuZXh0L2Rpc3QvY29tcGlsZWQvc3RhY2t0cmFjZS1wYXJzZXJcIil9LDUxODpmdW5jdGlvbihlKXtlLmV4cG9ydHM9cmVxdWlyZShcIm5leHQvZGlzdC9jb21waWxlZC9zdHJpcC1hbnNpXCIpfSw1MjI6ZnVuY3Rpb24oZSl7ZS5leHBvcnRzPXJlcXVpcmUoXCJyZWFjdFwiKX0sMjU1OmZ1bmN0aW9uKGUpe2UuZXhwb3J0cz1yZXF1aXJlKFwicmVhY3QtZG9tXCIpfX07dmFyIHQ9e307ZnVuY3Rpb24gX19uY2N3cGNrX3JlcXVpcmVfXyhyKXt2YXIgbj10W3JdO2lmKG4hPT11bmRlZmluZWQpe3JldHVybiBuLmV4cG9ydHN9dmFyIG89dFtyXT17ZXhwb3J0czp7fX07dmFyIGE9dHJ1ZTt0cnl7ZVtyXS5jYWxsKG8uZXhwb3J0cyxvLG8uZXhwb3J0cyxfX25jY3dwY2tfcmVxdWlyZV9fKTthPWZhbHNlfWZpbmFsbHl7aWYoYSlkZWxldGUgdFtyXX1yZXR1cm4gby5leHBvcnRzfWlmKHR5cGVvZiBfX25jY3dwY2tfcmVxdWlyZV9fIT09XCJ1bmRlZmluZWRcIilfX25jY3dwY2tfcmVxdWlyZV9fLmFiPV9fZGlybmFtZStcIi9cIjt2YXIgcj1fX25jY3dwY2tfcmVxdWlyZV9fKDIwNCk7bW9kdWxlLmV4cG9ydHM9cn0pKCk7Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/next/dist/compiled/@next/react-dev-overlay/dist/client.js\n")); /***/ }), /***/ "./node_modules/next/dist/client/add-base-path.js": /*!********************************************************!*\ !*** ./node_modules/next/dist/client/add-base-path.js ***! \********************************************************/ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"addBasePath\", ({\n enumerable: true,\n get: function() {\n return addBasePath;\n }\n}));\nconst _addpathprefix = __webpack_require__(/*! ../shared/lib/router/utils/add-path-prefix */ \"./node_modules/next/dist/shared/lib/router/utils/add-path-prefix.js\");\nconst _normalizetrailingslash = __webpack_require__(/*! ./normalize-trailing-slash */ \"./node_modules/next/dist/client/normalize-trailing-slash.js\");\nconst basePath = false || \"\";\nfunction addBasePath(path, required) {\n return (0, _normalizetrailingslash.normalizePathTrailingSlash)( false ? 0 : (0, _addpathprefix.addPathPrefix)(path, basePath));\n}\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=add-base-path.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9hZGQtYmFzZS1wYXRoLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2JBLDhDQUE2QztJQUN6Q0csT0FBTztBQUNYLENBQUMsRUFBQztBQUNGSCwrQ0FBOEM7SUFDMUNJLFlBQVk7SUFDWkMsS0FBSztRQUNELE9BQU9DO0lBQ1g7QUFDSixDQUFDLEVBQUM7QUFDRixNQUFNQyxpQkFBaUJDLG1CQUFPQSxDQUFDLHVIQUE0QztBQUMzRSxNQUFNQywwQkFBMEJELG1CQUFPQSxDQUFDLCtGQUE0QjtBQUNwRSxNQUFNRSxXQUFXQyxNQUFrQyxJQUFJO0FBQ3ZELFNBQVNMLFlBQVlRLElBQUksRUFBRUMsUUFBUTtJQUMvQixPQUFPLENBQUMsR0FBR04sd0JBQXdCTywwQkFBMEIsRUFBRUwsTUFBdURJLEdBQUdELENBQUlBLEdBQUcsQ0FBQyxHQUFHUCxlQUFlVyxhQUFhLEVBQUVKLE1BQU1KO0FBQzVLO0FBRUEsSUFBSSxDQUFDLE9BQU9SLFFBQVFpQixPQUFPLEtBQUssY0FBZSxPQUFPakIsUUFBUWlCLE9BQU8sS0FBSyxZQUFZakIsUUFBUWlCLE9BQU8sS0FBSyxJQUFJLEtBQU0sT0FBT2pCLFFBQVFpQixPQUFPLENBQUNDLFVBQVUsS0FBSyxhQUFhO0lBQ3JLcEIsT0FBT0MsY0FBYyxDQUFDQyxRQUFRaUIsT0FBTyxFQUFFLGNBQWM7UUFBRWhCLE9BQU87SUFBSztJQUNuRUgsT0FBT3FCLE1BQU0sQ0FBQ25CLFFBQVFpQixPQUFPLEVBQUVqQjtJQUMvQm9CLE9BQU9wQixPQUFPLEdBQUdBLFFBQVFpQixPQUFPO0FBQ2xDLEVBRUEseUNBQXlDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2FkZC1iYXNlLXBhdGguanM/NjEzMSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImFkZEJhc2VQYXRoXCIsIHtcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBhZGRCYXNlUGF0aDtcbiAgICB9XG59KTtcbmNvbnN0IF9hZGRwYXRocHJlZml4ID0gcmVxdWlyZShcIi4uL3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL2FkZC1wYXRoLXByZWZpeFwiKTtcbmNvbnN0IF9ub3JtYWxpemV0cmFpbGluZ3NsYXNoID0gcmVxdWlyZShcIi4vbm9ybWFsaXplLXRyYWlsaW5nLXNsYXNoXCIpO1xuY29uc3QgYmFzZVBhdGggPSBwcm9jZXNzLmVudi5fX05FWFRfUk9VVEVSX0JBU0VQQVRIIHx8IFwiXCI7XG5mdW5jdGlvbiBhZGRCYXNlUGF0aChwYXRoLCByZXF1aXJlZCkge1xuICAgIHJldHVybiAoMCwgX25vcm1hbGl6ZXRyYWlsaW5nc2xhc2gubm9ybWFsaXplUGF0aFRyYWlsaW5nU2xhc2gpKHByb2Nlc3MuZW52Ll9fTkVYVF9NQU5VQUxfQ0xJRU5UX0JBU0VfUEFUSCAmJiAhcmVxdWlyZWQgPyBwYXRoIDogKDAsIF9hZGRwYXRocHJlZml4LmFkZFBhdGhQcmVmaXgpKHBhdGgsIGJhc2VQYXRoKSk7XG59XG5cbmlmICgodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ2Z1bmN0aW9uJyB8fCAodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ29iamVjdCcgJiYgZXhwb3J0cy5kZWZhdWx0ICE9PSBudWxsKSkgJiYgdHlwZW9mIGV4cG9ydHMuZGVmYXVsdC5fX2VzTW9kdWxlID09PSAndW5kZWZpbmVkJykge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cy5kZWZhdWx0LCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gIE9iamVjdC5hc3NpZ24oZXhwb3J0cy5kZWZhdWx0LCBleHBvcnRzKTtcbiAgbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWFkZC1iYXNlLXBhdGguanMubWFwIl0sIm5hbWVzIjpbIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZXhwb3J0cyIsInZhbHVlIiwiZW51bWVyYWJsZSIsImdldCIsImFkZEJhc2VQYXRoIiwiX2FkZHBhdGhwcmVmaXgiLCJyZXF1aXJlIiwiX25vcm1hbGl6ZXRyYWlsaW5nc2xhc2giLCJiYXNlUGF0aCIsInByb2Nlc3MiLCJlbnYiLCJfX05FWFRfUk9VVEVSX0JBU0VQQVRIIiwicGF0aCIsInJlcXVpcmVkIiwibm9ybWFsaXplUGF0aFRyYWlsaW5nU2xhc2giLCJfX05FWFRfTUFOVUFMX0NMSUVOVF9CQVNFX1BBVEgiLCJhZGRQYXRoUHJlZml4IiwiZGVmYXVsdCIsIl9fZXNNb2R1bGUiLCJhc3NpZ24iLCJtb2R1bGUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/add-base-path.js\n")); /***/ }), /***/ "./node_modules/next/dist/client/add-locale.js": /*!*****************************************************!*\ !*** ./node_modules/next/dist/client/add-locale.js ***! \*****************************************************/ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"addLocale\", ({\n enumerable: true,\n get: function() {\n return addLocale;\n }\n}));\nconst _normalizetrailingslash = __webpack_require__(/*! ./normalize-trailing-slash */ \"./node_modules/next/dist/client/normalize-trailing-slash.js\");\nconst addLocale = function(path) {\n for(var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++){\n args[_key - 1] = arguments[_key];\n }\n if (false) {}\n return path;\n};\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=add-locale.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9hZGQtbG9jYWxlLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2JBLDhDQUE2QztJQUN6Q0csT0FBTztBQUNYLENBQUMsRUFBQztBQUNGSCw2Q0FBNEM7SUFDeENJLFlBQVk7SUFDWkMsS0FBSztRQUNELE9BQU9DO0lBQ1g7QUFDSixDQUFDLEVBQUM7QUFDRixNQUFNQywwQkFBMEJDLG1CQUFPQSxDQUFDLCtGQUE0QjtBQUNwRSxNQUFNRixZQUFZLFNBQVNHLElBQUk7SUFDM0IsSUFBSSxJQUFJQyxPQUFPQyxVQUFVQyxNQUFNLEVBQUVDLE9BQU8sSUFBSUMsTUFBTUosT0FBTyxJQUFJQSxPQUFPLElBQUksSUFBSUssT0FBTyxHQUFHQSxPQUFPTCxNQUFNSyxPQUFPO1FBQ3RHRixJQUFJLENBQUNFLE9BQU8sRUFBRSxHQUFHSixTQUFTLENBQUNJLEtBQUs7SUFDcEM7SUFDQSxJQUFJQyxLQUErQixFQUFFLEVBRXBDO0lBQ0QsT0FBT1A7QUFDWDtBQUVBLElBQUksQ0FBQyxPQUFPUCxRQUFRa0IsT0FBTyxLQUFLLGNBQWUsT0FBT2xCLFFBQVFrQixPQUFPLEtBQUssWUFBWWxCLFFBQVFrQixPQUFPLEtBQUssSUFBSSxLQUFNLE9BQU9sQixRQUFRa0IsT0FBTyxDQUFDQyxVQUFVLEtBQUssYUFBYTtJQUNyS3JCLE9BQU9DLGNBQWMsQ0FBQ0MsUUFBUWtCLE9BQU8sRUFBRSxjQUFjO1FBQUVqQixPQUFPO0lBQUs7SUFDbkVILE9BQU9zQixNQUFNLENBQUNwQixRQUFRa0IsT0FBTyxFQUFFbEI7SUFDL0JxQixPQUFPckIsT0FBTyxHQUFHQSxRQUFRa0IsT0FBTztBQUNsQyxFQUVBLHNDQUFzQyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9hZGQtbG9jYWxlLmpzP2UyZDkiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJhZGRMb2NhbGVcIiwge1xuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGFkZExvY2FsZTtcbiAgICB9XG59KTtcbmNvbnN0IF9ub3JtYWxpemV0cmFpbGluZ3NsYXNoID0gcmVxdWlyZShcIi4vbm9ybWFsaXplLXRyYWlsaW5nLXNsYXNoXCIpO1xuY29uc3QgYWRkTG9jYWxlID0gZnVuY3Rpb24ocGF0aCkge1xuICAgIGZvcih2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiA+IDEgPyBfbGVuIC0gMSA6IDApLCBfa2V5ID0gMTsgX2tleSA8IF9sZW47IF9rZXkrKyl7XG4gICAgICAgIGFyZ3NbX2tleSAtIDFdID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cbiAgICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX0kxOE5fU1VQUE9SVCkge1xuICAgICAgICByZXR1cm4gKDAsIF9ub3JtYWxpemV0cmFpbGluZ3NsYXNoLm5vcm1hbGl6ZVBhdGhUcmFpbGluZ1NsYXNoKShyZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvYWRkLWxvY2FsZVwiKS5hZGRMb2NhbGUocGF0aCwgLi4uYXJncykpO1xuICAgIH1cbiAgICByZXR1cm4gcGF0aDtcbn07XG5cbmlmICgodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ2Z1bmN0aW9uJyB8fCAodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ29iamVjdCcgJiYgZXhwb3J0cy5kZWZhdWx0ICE9PSBudWxsKSkgJiYgdHlwZW9mIGV4cG9ydHMuZGVmYXVsdC5fX2VzTW9kdWxlID09PSAndW5kZWZpbmVkJykge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cy5kZWZhdWx0LCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gIE9iamVjdC5hc3NpZ24oZXhwb3J0cy5kZWZhdWx0LCBleHBvcnRzKTtcbiAgbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWFkZC1sb2NhbGUuanMubWFwIl0sIm5hbWVzIjpbIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZXhwb3J0cyIsInZhbHVlIiwiZW51bWVyYWJsZSIsImdldCIsImFkZExvY2FsZSIsIl9ub3JtYWxpemV0cmFpbGluZ3NsYXNoIiwicmVxdWlyZSIsInBhdGgiLCJfbGVuIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiYXJncyIsIkFycmF5IiwiX2tleSIsInByb2Nlc3MiLCJlbnYiLCJfX05FWFRfSTE4Tl9TVVBQT1JUIiwibm9ybWFsaXplUGF0aFRyYWlsaW5nU2xhc2giLCJkZWZhdWx0IiwiX19lc01vZHVsZSIsImFzc2lnbiIsIm1vZHVsZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/add-locale.js\n")); /***/ }), /***/ "./node_modules/next/dist/client/detect-domain-locale.js": /*!***************************************************************!*\ !*** ./node_modules/next/dist/client/detect-domain-locale.js ***! \***************************************************************/ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"detectDomainLocale\", ({\n enumerable: true,\n get: function() {\n return detectDomainLocale;\n }\n}));\nconst detectDomainLocale = function() {\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n args[_key] = arguments[_key];\n }\n if (false) {}\n};\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=detect-domain-locale.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9kZXRlY3QtZG9tYWluLWxvY2FsZS5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiQSw4Q0FBNkM7SUFDekNHLE9BQU87QUFDWCxDQUFDLEVBQUM7QUFDRkgsc0RBQXFEO0lBQ2pESSxZQUFZO0lBQ1pDLEtBQUs7UUFDRCxPQUFPQztJQUNYO0FBQ0osQ0FBQyxFQUFDO0FBQ0YsTUFBTUEscUJBQXFCO0lBQ3ZCLElBQUksSUFBSUMsT0FBT0MsVUFBVUMsTUFBTSxFQUFFQyxPQUFPLElBQUlDLE1BQU1KLE9BQU9LLE9BQU8sR0FBR0EsT0FBT0wsTUFBTUssT0FBTztRQUNuRkYsSUFBSSxDQUFDRSxLQUFLLEdBQUdKLFNBQVMsQ0FBQ0ksS0FBSztJQUNoQztJQUNBLElBQUlDLEtBQStCLEVBQUUsRUFFcEM7QUFDTDtBQUVBLElBQUksQ0FBQyxPQUFPWCxRQUFRZSxPQUFPLEtBQUssY0FBZSxPQUFPZixRQUFRZSxPQUFPLEtBQUssWUFBWWYsUUFBUWUsT0FBTyxLQUFLLElBQUksS0FBTSxPQUFPZixRQUFRZSxPQUFPLENBQUNDLFVBQVUsS0FBSyxhQUFhO0lBQ3JLbEIsT0FBT0MsY0FBYyxDQUFDQyxRQUFRZSxPQUFPLEVBQUUsY0FBYztRQUFFZCxPQUFPO0lBQUs7SUFDbkVILE9BQU9tQixNQUFNLENBQUNqQixRQUFRZSxPQUFPLEVBQUVmO0lBQy9Ca0IsT0FBT2xCLE9BQU8sR0FBR0EsUUFBUWUsT0FBTztBQUNsQyxFQUVBLGdEQUFnRCIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9kZXRlY3QtZG9tYWluLWxvY2FsZS5qcz8wM2I1Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiZGV0ZWN0RG9tYWluTG9jYWxlXCIsIHtcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBkZXRlY3REb21haW5Mb2NhbGU7XG4gICAgfVxufSk7XG5jb25zdCBkZXRlY3REb21haW5Mb2NhbGUgPSBmdW5jdGlvbigpIHtcbiAgICBmb3IodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKyl7XG4gICAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuICAgIGlmIChwcm9jZXNzLmVudi5fX05FWFRfSTE4Tl9TVVBQT1JUKSB7XG4gICAgICAgIHJldHVybiByZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi9pMThuL2RldGVjdC1kb21haW4tbG9jYWxlXCIpLmRldGVjdERvbWFpbkxvY2FsZSguLi5hcmdzKTtcbiAgICB9XG59O1xuXG5pZiAoKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdmdW5jdGlvbicgfHwgKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdvYmplY3QnICYmIGV4cG9ydHMuZGVmYXVsdCAhPT0gbnVsbCkpICYmIHR5cGVvZiBleHBvcnRzLmRlZmF1bHQuX19lc01vZHVsZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMuZGVmYXVsdCwgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuICBPYmplY3QuYXNzaWduKGV4cG9ydHMuZGVmYXVsdCwgZXhwb3J0cyk7XG4gIG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cy5kZWZhdWx0O1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kZXRlY3QtZG9tYWluLWxvY2FsZS5qcy5tYXAiXSwibmFtZXMiOlsiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJleHBvcnRzIiwidmFsdWUiLCJlbnVtZXJhYmxlIiwiZ2V0IiwiZGV0ZWN0RG9tYWluTG9jYWxlIiwiX2xlbiIsImFyZ3VtZW50cyIsImxlbmd0aCIsImFyZ3MiLCJBcnJheSIsIl9rZXkiLCJwcm9jZXNzIiwiZW52IiwiX19ORVhUX0kxOE5fU1VQUE9SVCIsInJlcXVpcmUiLCJkZWZhdWx0IiwiX19lc01vZHVsZSIsImFzc2lnbiIsIm1vZHVsZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/detect-domain-locale.js\n")); /***/ }), /***/ "./node_modules/next/dist/client/dev/dev-build-watcher.js": /*!****************************************************************!*\ !*** ./node_modules/next/dist/client/dev/dev-build-watcher.js ***! \****************************************************************/ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval(__webpack_require__.ts("/* eslint-disable @typescript-eslint/no-use-before-define */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"default\", ({\n enumerable: true,\n get: function() {\n return initializeBuildWatcher;\n }\n}));\nconst _hotreloadertypes = __webpack_require__(/*! ../../server/dev/hot-reloader-types */ \"./node_modules/next/dist/server/dev/hot-reloader-types.js\");\nconst _websocket = __webpack_require__(/*! ./error-overlay/websocket */ \"./node_modules/next/dist/client/dev/error-overlay/websocket.js\");\nfunction initializeBuildWatcher(toggleCallback, position) {\n if (position === void 0) position = \"bottom-right\";\n const shadowHost = document.createElement(\"div\");\n const [verticalProperty, horizontalProperty] = position.split(\"-\");\n shadowHost.id = \"__next-build-watcher\";\n // Make sure container is fixed and on a high zIndex so it shows\n shadowHost.style.position = \"fixed\";\n // Ensure container's position to be top or bottom (default)\n shadowHost.style[verticalProperty] = \"10px\";\n // Ensure container's position to be left or right (default)\n shadowHost.style[horizontalProperty] = \"20px\";\n shadowHost.style.width = \"0\";\n shadowHost.style.height = \"0\";\n shadowHost.style.zIndex = \"99999\";\n document.body.appendChild(shadowHost);\n let shadowRoot;\n let prefix = \"\";\n if (shadowHost.attachShadow) {\n shadowRoot = shadowHost.attachShadow({\n mode: \"open\"\n });\n } else {\n // If attachShadow is undefined then the browser does not support\n // the Shadow DOM, we need to prefix all the names so there\n // will be no conflicts\n shadowRoot = shadowHost;\n prefix = \"__next-build-watcher-\";\n }\n // Container\n const container = createContainer(prefix);\n shadowRoot.appendChild(container);\n // CSS\n const css = createCss(prefix, {\n horizontalProperty,\n verticalProperty\n });\n shadowRoot.appendChild(css);\n // State\n let isVisible = false;\n let isBuilding = false;\n let timeoutId = null;\n // Handle events\n (0, _websocket.addMessageListener)((obj)=>{\n try {\n handleMessage(obj);\n } catch (e) {}\n });\n function show() {\n timeoutId && clearTimeout(timeoutId);\n isVisible = true;\n isBuilding = true;\n updateContainer();\n }\n function hide() {\n isBuilding = false;\n // Wait for the fade out transition to complete\n timeoutId = setTimeout(()=>{\n isVisible = false;\n updateContainer();\n }, 100);\n updateContainer();\n }\n function handleMessage(obj) {\n if (!(\"action\" in obj)) {\n return;\n }\n // eslint-disable-next-line default-case\n switch(obj.action){\n case _hotreloadertypes.HMR_ACTIONS_SENT_TO_BROWSER.BUILDING:\n show();\n break;\n case _hotreloadertypes.HMR_ACTIONS_SENT_TO_BROWSER.BUILT:\n case _hotreloadertypes.HMR_ACTIONS_SENT_TO_BROWSER.SYNC:\n hide();\n break;\n }\n }\n toggleCallback({\n show,\n hide\n });\n function updateContainer() {\n if (isBuilding) {\n container.classList.add(\"\" + prefix + \"building\");\n } else {\n container.classList.remove(\"\" + prefix + \"building\");\n }\n if (isVisible) {\n container.classList.add(\"\" + prefix + \"visible\");\n } else {\n container.classList.remove(\"\" + prefix + \"visible\");\n }\n }\n}\nfunction createContainer(prefix) {\n const container = document.createElement(\"div\");\n container.id = \"\" + prefix + \"container\";\n container.innerHTML = '\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
\\n ';\n return container;\n}\nfunction createCss(prefix, param) {\n let { horizontalProperty, verticalProperty } = param;\n const css = document.createElement(\"style\");\n css.textContent = \"\\n #\" + prefix + \"container {\\n position: absolute;\\n \" + verticalProperty + \": 10px;\\n \" + horizontalProperty + \": 30px;\\n\\n border-radius: 3px;\\n background: #000;\\n color: #fff;\\n font: initial;\\n cursor: initial;\\n letter-spacing: initial;\\n text-shadow: initial;\\n text-transform: initial;\\n visibility: initial;\\n\\n padding: 7px 10px 8px 10px;\\n align-items: center;\\n box-shadow: 0 11px 40px 0 rgba(0, 0, 0, 0.25), 0 2px 10px 0 rgba(0, 0, 0, 0.12);\\n\\n display: none;\\n opacity: 0;\\n transition: opacity 0.1s ease, \" + verticalProperty + \" 0.1s ease;\\n animation: \" + prefix + \"fade-in 0.1s ease-in-out;\\n }\\n\\n #\" + prefix + \"container.\" + prefix + \"visible {\\n display: flex;\\n }\\n\\n #\" + prefix + \"container.\" + prefix + \"building {\\n \" + verticalProperty + \": 20px;\\n opacity: 1;\\n }\\n\\n #\" + prefix + \"icon-wrapper {\\n width: 16px;\\n height: 16px;\\n }\\n\\n #\" + prefix + \"icon-wrapper > svg {\\n width: 100%;\\n height: 100%;\\n }\\n\\n #\" + prefix + \"icon-group {\\n animation: \" + prefix + \"strokedash 1s ease-in-out both infinite;\\n }\\n\\n @keyframes \" + prefix + \"fade-in {\\n from {\\n \" + verticalProperty + \": 10px;\\n opacity: 0;\\n }\\n to {\\n \" + verticalProperty + \": 20px;\\n opacity: 1;\\n }\\n }\\n\\n @keyframes \" + prefix + \"strokedash {\\n 0% {\\n stroke-dasharray: 0 226;\\n }\\n 80%,\\n 100% {\\n stroke-dasharray: 659 226;\\n }\\n }\\n \";\n return css;\n}\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=dev-build-watcher.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9kZXYvZGV2LWJ1aWxkLXdhdGNoZXIuanMiLCJtYXBwaW5ncyI6IkFBQUEsMERBQTBELEdBQWdCO0FBQzFFQSw4Q0FBNkM7SUFDekNHLE9BQU87QUFDWCxDQUFDLEVBQUM7QUFDRkgsMkNBQTBDO0lBQ3RDSSxZQUFZO0lBQ1pDLEtBQUs7UUFDRCxPQUFPQztJQUNYO0FBQ0osQ0FBQyxFQUFDO0FBQ0YsTUFBTUMsb0JBQW9CQyxtQkFBT0EsQ0FBQyxzR0FBcUM7QUFDdkUsTUFBTUMsYUFBYUQsbUJBQU9BLENBQUMsaUdBQTJCO0FBQ3RELFNBQVNGLHVCQUF1QkksY0FBYyxFQUFFQyxRQUFRO0lBQ3BELElBQUlBLGFBQWEsS0FBSyxHQUFHQSxXQUFXO0lBQ3BDLE1BQU1DLGFBQWFDLFNBQVNDLGFBQWEsQ0FBQztJQUMxQyxNQUFNLENBQUNDLGtCQUFrQkMsbUJBQW1CLEdBQUdMLFNBQVNNLEtBQUssQ0FBQztJQUM5REwsV0FBV00sRUFBRSxHQUFHO0lBQ2hCLGdFQUFnRTtJQUNoRU4sV0FBV08sS0FBSyxDQUFDUixRQUFRLEdBQUc7SUFDNUIsNERBQTREO0lBQzVEQyxXQUFXTyxLQUFLLENBQUNKLGlCQUFpQixHQUFHO0lBQ3JDLDREQUE0RDtJQUM1REgsV0FBV08sS0FBSyxDQUFDSCxtQkFBbUIsR0FBRztJQUN2Q0osV0FBV08sS0FBSyxDQUFDQyxLQUFLLEdBQUc7SUFDekJSLFdBQVdPLEtBQUssQ0FBQ0UsTUFBTSxHQUFHO0lBQzFCVCxXQUFXTyxLQUFLLENBQUNHLE1BQU0sR0FBRztJQUMxQlQsU0FBU1UsSUFBSSxDQUFDQyxXQUFXLENBQUNaO0lBQzFCLElBQUlhO0lBQ0osSUFBSUMsU0FBUztJQUNiLElBQUlkLFdBQVdlLFlBQVksRUFBRTtRQUN6QkYsYUFBYWIsV0FBV2UsWUFBWSxDQUFDO1lBQ2pDQyxNQUFNO1FBQ1Y7SUFDSixPQUFPO1FBQ0gsaUVBQWlFO1FBQ2pFLDJEQUEyRDtRQUMzRCx1QkFB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YyxDQUFDQyxRQUFRc0QsT0FBTyxFQUFFLGNBQWM7UUFBRXJELE9BQU87SUFBSztJQUNuRUgsT0FBTzBELE1BQU0sQ0FBQ3hELFFBQVFzRCxPQUFPLEVBQUV0RDtJQUMvQnlELE9BQU96RCxPQUFPLEdBQUdBLFFBQVFzRCxPQUFPO0FBQ2xDLEVBRUEsNkNBQTZDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2Rldi9kZXYtYnVpbGQtd2F0Y2hlci5qcz83YjM0Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby11c2UtYmVmb3JlLWRlZmluZSAqLyBcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImRlZmF1bHRcIiwge1xuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGluaXRpYWxpemVCdWlsZFdhdGNoZXI7XG4gICAgfVxufSk7XG5jb25zdCBfaG90cmVsb2FkZXJ0eXBlcyA9IHJlcXVpcmUoXCIuLi8uLi9zZXJ2ZXIvZGV2L2hvdC1yZWxvYWRlci10eXBlc1wiKTtcbmNvbnN0IF93ZWJzb2NrZXQgPSByZXF1aXJlKFwiLi9lcnJvci1vdmVybGF5L3dlYnNvY2tldFwiKTtcbmZ1bmN0aW9uIGluaXRpYWxpemVCdWlsZFdhdGNoZXIodG9nZ2xlQ2FsbGJhY2ssIHBvc2l0aW9uKSB7XG4gICAgaWYgKHBvc2l0aW9uID09PSB2b2lkIDApIHBvc2l0aW9uID0gXCJib3R0b20tcmlnaHRcIjtcbiAgICBjb25zdCBzaGFkb3dIb3N0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgICBjb25zdCBbdmVydGljYWxQcm9wZXJ0eSwgaG9yaXpvbnRhbFByb3BlcnR5XSA9IHBvc2l0aW9uLnNwbGl0KFwiLVwiKTtcbiAgICBzaGFkb3dIb3N0LmlkID0gXCJfX25leHQtYnVpbGQtd2F0Y2hlclwiO1xuICAgIC8vIE1ha2Ugc3VyZSBjb250YWluZXIgaXMgZml4ZWQgYW5kIG9uIGEgaGlnaCB6SW5kZXggc28gaXQgc2hvd3NcbiAgICBzaGFkb3dIb3N0LnN0eWxlLnBvc2l0aW9uID0gXCJmaXhlZFwiO1xuICAgIC8vIEVuc3VyZSBjb250YWluZXIncyBwb3NpdGlvbiB0byBiZSB0b3Agb3IgYm90dG9tIChkZWZhdWx0KVxuICAgIHNoYWRvd0hvc3Quc3R5bGVbdmVydGljYWxQcm9wZXJ0eV0gPSBcIjEwcHhcIjtcbiAgICAvLyBFbnN1cmUgY29udGFpbmVyJ3MgcG9zaXRpb24gdG8gYmUgbGVmdCBvciByaWdodCAoZGVmYXVsdClcbiAgICBzaGFkb3dIb3N0LnN0eWxlW2hvcml6b250YWxQcm9wZXJ0eV0gPSBcIjIwcHhcIjtcbiAgICBzaGFkb3dIb3N0LnN0eWxlLndpZHRoID0gXCIwXCI7XG4gICAgc2hhZG93SG9zdC5zdHlsZS5oZWlnaHQgPSBcIjBcIjtcbiAgICBzaGFkb3dIb3N0LnN0eWxlLnpJbmRleCA9IFwiOTk5OTlcIjtcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHNoYWRvd0hvc3QpO1xuICAgIGxldCBzaGFkb3dSb290O1xuICAgIGxldCBwcmVmaXggPSBcIlwiO1xuICAgIGlmIChzaGFkb3dIb3N0LmF0dGFjaFNoYWRvdykge1xuICAgICAgICBzaGFkb3dSb290ID0gc2hhZG93SG9zdC5hdHRhY2hTaGFkb3coe1xuICAgICAgICAgICAgbW9kZTogXCJvcGVuXCJcbiAgICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgLy8gSWYgYXR0YWNoU2hhZG93IGlzIHVuZGVmaW5lZCB0aGVuIHRoZSBicm93c2VyIGRvZXMgbm90IHN1cHBvcnRcbiAgICAgICAgLy8gdGhlIFNoYWRvdyBET00sIHdlIG5lZWQgdG8gcHJlZml4IGFsbCB0aGUgbmFtZXMgc28gdGhlcmVcbiAgICAgICAgLy8gd2lsbCBiZSBubyBjb25mbGljdHNcbiAgICAgICAgc2hhZG93Um9vdCA9IHNoYWRvd0hvc3Q7XG4gICAgICAgIHByZWZpeCA9IFwiX19uZXh0LWJ1aWxkLXdhdGNoZXItXCI7XG4gICAgfVxuICAgIC8vIENvbnRhaW5lclxuICAgIGNvbnN0IGNvbnRhaW5lciA9IGNyZWF0ZUNvbnRhaW5lcihwcmVmaXgpO1xuICAgIHNoYWRvd1Jvb3QuYXBwZW5kQ2hpbGQoY29udGFpbmVyKTtcbiAgICAvLyBDU1NcbiAgICBjb25zdCBjc3MgPSBjcmVhdGVDc3MocHJlZml4LCB7XG4gICAgICAgIGhvcml6b250YWxQcm9wZXJ0eSxcbiAgICAgICAgdmVydGljYWxQcm9wZXJ0eVxuICAgIH0pO1xuICAgIHNoYWRvd1Jvb3QuYXBwZW5kQ2hpbGQoY3NzKTtcbiAgICAvLyBTdGF0ZVxuICAgIGxldCBpc1Zpc2libGUgPSBmYWxzZTtcbiAgICBsZXQgaXNCdWlsZGluZyA9IGZhbHNlO1xuICAgIGxldCB0aW1lb3V0SWQgPSBudWxsO1xuICAgIC8vIEhhbmRsZSBldmVudHNcbiAgICAoMCwgX3dlYnNvY2tldC5hZGRNZXNzYWdlTGlzdGVuZXIpKChvYmopPT57XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBoYW5kbGVNZXNzYWdlKG9iaik7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHt9XG4gICAgfSk7XG4gICAgZnVuY3Rpb24gc2hvdygpIHtcbiAgICAgICAgdGltZW91dElkICYmIGNsZWFyVGltZW91dCh0aW1lb3V0SWQpO1xuICAgICAgICBpc1Zpc2libGUgPSB0cnVlO1xuICAgICAgICBpc0J1aWxkaW5nID0gdHJ1ZTtcbiAgICAgICAgdXBkYXRlQ29udGFpbmVyKCk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGhpZGUoKSB7XG4gICAgICAgIGlzQnVpbGRpbmcgPSBmYWxzZTtcbiAgICAgICAgLy8gV2FpdCBmb3IgdGhlIGZhZGUgb3V0IHRyYW5zaXRpb24gdG8gY29tcGxldGVcbiAgICAgICAgdGltZW91dElkID0gc2V0VGltZW91dCgoKT0+e1xuICAgICAgICAgICAgaXNWaXNpYmxlID0gZmFsc2U7XG4gICAgICAgICAgICB1cGRhdGVDb250YWluZXIoKTtcbiAgICAgICAgfSwgMTAwKTtcbiAgICAgICAgdXBkYXRlQ29udGFpbmVyKCk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGhhbmRsZU1lc3NhZ2Uob2JqKSB7XG4gICAgICAgIGlmICghKFwiYWN0aW9uXCIgaW4gb2JqKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZWZhdWx0LWNhc2VcbiAgICAgICAgc3dpdGNoKG9iai5hY3Rpb24pe1xuICAgICAgICAgICAgY2FzZSBfaG90cmVsb2FkZXJ0eXBlcy5ITVJfQUNUSU9OU19TRU5UX1RPX0JST1dTRVIuQlVJTERJTkc6XG4gICAgICAgICAgICAgICAgc2hvdygpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBfaG90cmVsb2FkZXJ0eXBlcy5ITVJfQUNUSU9OU19TRU5UX1RPX0JST1dTRVIuQlVJTFQ6XG4gICAgICAgICAgICBjYXNlIF9ob3RyZWxvYWRlcnR5cGVzLkhNUl9BQ1RJT05TX1NFTlRfVE9fQlJPV1NFUi5TWU5DOlxuICAgICAgICAgICAgICAgIGhpZGUoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cbiAgICB0b2dnbGVDYWxsYmFjayh7XG4gICAgICAgIHNob3csXG4gICAgICAgIGhpZGVcbiAgICB9KTtcbiAgICBmdW5jdGlvbiB1cGRhdGVDb250YWluZXIoKSB7XG4gICAgICAgIGlmIChpc0J1aWxkaW5nKSB7XG4gICAgICAgICAgICBjb250YWluZXIuY2xhc3NMaXN0LmFkZChcIlwiICsgcHJlZml4ICsgXCJidWlsZGluZ1wiKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnRhaW5lci5jbGFzc0xpc3QucmVtb3ZlKFwiXCIgKyBwcmVmaXggKyBcImJ1aWxkaW5nXCIpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc1Zpc2libGUpIHtcbiAgICAgICAgICAgIGNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKFwiXCIgKyBwcmVmaXggKyBcInZpc2libGVcIik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb250YWluZXIuY2xhc3NMaXN0LnJlbW92ZShcIlwiICsgcHJlZml4ICsgXCJ2aXNpYmxlXCIpO1xuICAgICAgICB9XG4gICAgfVxufVxuZnVuY3Rpb24gY3JlYXRlQ29udGFpbmVyKHByZWZpeCkge1xuICAgIGNvbnN0IGNvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gICAgY29udGFpbmVyLmlkID0gXCJcIiArIHByZWZpeCArIFwiY29udGFpbmVyXCI7XG4gICAgY29udGFpbmVyLmlubmVySFRNTCA9ICdcXG4gICAgPGRpdiBpZD1cIicgKyBwcmVmaXggKyAnaWNvbi13cmFwcGVyXCI+XFxuICAgICAgPHN2ZyB2aWV3Qm94PVwiMCAwIDIyNiAyMDBcIj5cXG4gICAgICAgIDxkZWZzPlxcbiAgICAgICAgICA8bGluZWFyR3JhZGllbnRcXG4gICAgICAgICAgICB4MT1cIjExNC43MjA3NzUlXCJcXG4gICAgICAgICAgICB5MT1cIjE4MS4yODMyNDUlXCJcXG4gICAgICAgICAgICB4Mj1cIjM5LjUzOTkzMDYlXCJcXG4gICAgICAgICAgICB5Mj1cIjEwMCVcIlxcbiAgICAgICAgICAgIGlkPVwiJyArIHByZWZpeCArICdsaW5lYXItZ3JhZGllbnRcIlxcbiAgICAgICAgICA+XFxuICAgICAgICAgICAgPHN0b3Agc3RvcC1jb2xvcj1cIiMwMDAwMDBcIiBvZmZzZXQ9XCIwJVwiIC8+XFxuICAgICAgICAgICAgPHN0b3Agc3RvcC1jb2xvcj1cIiNGRkZGRkZcIiBvZmZzZXQ9XCIxMDAlXCIgLz5cXG4gICAgICAgICAgPC9saW5lYXJHcmFkaWVudD5cXG4gICAgICAgIDwvZGVmcz5cXG4gICAgICAgIDxnIGlkPVwiJyArIHByZWZpeCArICdpY29uLWdyb3VwXCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJ1cmwoIycgKyBwcmVmaXggKyAnbGluZWFyLWdyYWRpZW50KVwiIHN0cm9rZS13aWR0aD1cIjE4XCI+XFxuICAgICAgICAgIDxwYXRoIGQ9XCJNMTEzLDUuMDgyMTkxMTcgTDQuMjgzOTM4MDEsMTk3LjUgTDIyMS43MTYwNjIsMTk3LjUgTDExMyw1LjA4MjE5MTE3IFpcIiAvPlxcbiAgICAgICAgPC9nPlxcbiAgICAgIDwvc3ZnPlxcbiAgICA8L2Rpdj5cXG4gICc7XG4gICAgcmV0dXJuIGNvbnRhaW5lcjtcbn1cbmZ1bmN0aW9uIGNyZWF0ZUNzcyhwcmVmaXgsIHBhcmFtKSB7XG4gICAgbGV0IHsgaG9yaXpvbnRhbFByb3BlcnR5LCB2ZXJ0aWNhbFByb3BlcnR5IH0gPSBwYXJhbTtcbiAgICBjb25zdCBjc3MgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIik7XG4gICAgY3NzLnRleHRDb250ZW50ID0gXCJcXG4gICAgI1wiICsgcHJlZml4ICsgXCJjb250YWluZXIge1xcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgICBcIiArIHZlcnRpY2FsUHJvcGVydHkgKyBcIjogMTBweDtcXG4gICAgICBcIiArIGhvcml6b250YWxQcm9wZXJ0eSArIFwiOiAzMHB4O1xcblxcbiAgICAgIGJvcmRlci1yYWRpdXM6IDNweDtcXG4gICAgICBiYWNrZ3JvdW5kOiAjMDAwO1xcbiAgICAgIGNvbG9yOiAjZmZmO1xcbiAgICAgIGZvbnQ6IGluaXRpYWw7XFxuICAgICAgY3Vyc29yOiBpbml0aWFsO1xcbiAgICAgIGxldHRlci1zcGFjaW5nOiBpbml0aWFsO1xcbiAgICAgIHRleHQtc2hhZG93OiBpbml0aWFsO1xcbiAgICAgIHRleHQtdHJhbnNmb3JtOiBpbml0aWFsO1xcbiAgICAgIHZpc2liaWxpdHk6IGluaXRpYWw7XFxuXFxuICAgICAgcGFkZGluZzogN3B4IDEwcHggOHB4IDEwcHg7XFxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAgICBib3gtc2hhZG93OiAwIDExcHggNDBweCAwIHJnYmEoMCwgMCwgMCwgMC4yNSksIDAgMnB4IDEwcHggMCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xcblxcbiAgICAgIGRpc3BsYXk6IG5vbmU7XFxuICAgICAgb3BhY2l0eTogMDtcXG4gICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMXMgZWFzZSwgXCIgKyB2ZXJ0aWNhbFByb3BlcnR5ICsgXCIgMC4xcyBlYXNlO1xcbiAgICAgIGFuaW1hdGlvbjogXCIgKyBwcmVmaXggKyBcImZhZGUtaW4gMC4xcyBlYXNlLWluLW91dDtcXG4gICAgfVxcblxcbiAgICAjXCIgKyBwcmVmaXggKyBcImNvbnRhaW5lci5cIiArIHByZWZpeCArIFwidmlzaWJsZSB7XFxuICAgICAgZGlzcGxheTogZmxleDtcXG4gICAgfVxcblxcbiAgICAjXCIgKyBwcmVmaXggKyBcImNvbnRhaW5lci5cIiArIHByZWZpeCArIFwiYnVpbGRpbmcge1xcbiAgICAgIFwiICsgdmVydGljYWxQcm9wZXJ0eSArIFwiOiAyMHB4O1xcbiAgICAgIG9wYWNpdHk6IDE7XFxuICAgIH1cXG5cXG4gICAgI1wiICsgcHJlZml4ICsgXCJpY29uLXdyYXBwZXIge1xcbiAgICAgIHdpZHRoOiAxNnB4O1xcbiAgICAgIGhlaWdodDogMTZweDtcXG4gICAgfVxcblxcbiAgICAjXCIgKyBwcmVmaXggKyBcImljb24td3JhcHBlciA+IHN2ZyB7XFxuICAgICAgd2lkdGg6IDEwMCU7XFxuICAgICAgaGVpZ2h0OiAxMDAlO1xcbiAgICB9XFxuXFxuICAgICNcIiArIHByZWZpeCArIFwiaWNvbi1ncm91cCB7XFxuICAgICAgYW5pbWF0aW9uOiBcIiArIHByZWZpeCArIFwic3Ryb2tlZGFzaCAxcyBlYXNlLWluLW91dCBib3RoIGluZmluaXRlO1xcbiAgICB9XFxuXFxuICAgIEBrZXlmcmFtZXMgXCIgKyBwcmVmaXggKyBcImZhZGUtaW4ge1xcbiAgICAgIGZyb20ge1xcbiAgICAgICAgXCIgKyB2ZXJ0aWNhbFByb3BlcnR5ICsgXCI6IDEwcHg7XFxuICAgICAgICBvcGFjaXR5OiAwO1xcbiAgICAgIH1cXG4gICAgICB0byB7XFxuICAgICAgICBcIiArIHZlcnRpY2FsUHJvcGVydHkgKyBcIjogMjBweDtcXG4gICAgICAgIG9wYWNpdHk6IDE7XFxuICAgICAgfVxcbiAgICB9XFxuXFxuICAgIEBrZXlmcmFtZXMgXCIgKyBwcmVmaXggKyBcInN0cm9rZWRhc2gge1xcbiAgICAgIDAlIHtcXG4gICAgICAgIHN0cm9rZS1kYXNoYXJyYXk6IDAgMjI2O1xcbiAgICAgIH1cXG4gICAgICA4MCUsXFxuICAgICAgMTAwJSB7XFxuICAgICAgICBzdHJva2UtZGFzaGFycmF5OiA2NTkgMjI2O1xcbiAgICAgIH1cXG4gICAgfVxcbiAgXCI7XG4gICAgcmV0dXJuIGNzcztcbn1cblxuaWYgKCh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnZnVuY3Rpb24nIHx8ICh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnb2JqZWN0JyAmJiBleHBvcnRzLmRlZmF1bHQgIT09IG51bGwpKSAmJiB0eXBlb2YgZXhwb3J0cy5kZWZhdWx0Ll9fZXNNb2R1bGUgPT09ICd1bmRlZmluZWQnKSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLmRlZmF1bHQsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiAgT2JqZWN0LmFzc2lnbihleHBvcnRzLmRlZmF1bHQsIGV4cG9ydHMpO1xuICBtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMuZGVmYXVsdDtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGV2LWJ1aWxkLXdhdGNoZXIuanMubWFwIl0sIm5hbWVzIjpbIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZXhwb3J0cyIsInZhbHVlIiwiZW51bWVyYWJsZSIsImdldCIsImluaXRpYWxpemVCdWlsZFdhdGNoZXIiLCJfaG90cmVsb2FkZXJ0eXBlcyIsInJlcXVpcmUiLCJfd2Vic29ja2V0IiwidG9nZ2xlQ2FsbGJhY2siLCJwb3NpdGlvbiIsInNoYWRvd0hvc3QiLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJ2ZXJ0aWNhbFByb3BlcnR5IiwiaG9yaXpvbnRhbFByb3BlcnR5Iiwic3BsaXQiLCJpZCIsInN0eWxlIiwid2lkdGgiLCJoZWlnaHQiLCJ6SW5kZXgiLCJib2R5IiwiYXBwZW5kQ2hpbGQiLCJzaGFkb3dSb290IiwicHJlZml4IiwiYXR0YWNoU2hhZG93IiwibW9kZSIsImNvbnRhaW5lciIsImNyZWF0ZUNvbnRhaW5lciIsImNzcyIsImNyZWF0ZUNzcyIsImlzVmlzaWJsZSIsImlzQnVpbGRpbmciLCJ0aW1lb3V0SWQiLCJhZGRNZXNzYWdlTGlzdGVuZXIiLCJvYmoiLCJoYW5kbGVNZXNzYWdlIiwiZSIsInNob3ciLCJjbGVhclRpbWVvdXQiLCJ1cGRhdGVDb250YWluZXIiLCJoaWRlIiwic2V0VGltZW91dCIsImFjdGlvbiIsIkhNUl9BQ1RJT05TX1NFTlRfVE9fQlJPV1NFUiIsIkJVSUxESU5HIiwiQlVJTFQiLCJTWU5DIiwiY2xhc3NMaXN0IiwiYWRkIiwicmVtb3ZlIiwiaW5uZXJIVE1MIiwicGFyYW0iLCJ0ZXh0Q29udGVudCIsImRlZmF1bHQiLCJfX2VzTW9kdWxlIiwiYXNzaWduIiwibW9kdWxlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/dev/dev-build-watcher.js\n")); /***/ }), /***/ "./node_modules/next/dist/client/dev/error-overlay/format-webpack-messages.js": /*!************************************************************************************!*\ !*** ./node_modules/next/dist/client/dev/error-overlay/format-webpack-messages.js ***! \************************************************************************************/ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval(__webpack_require__.ts("/**\nMIT License\n\nCopyright (c) 2015-present, Facebook, Inc.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n*/ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"default\", ({\n enumerable: true,\n get: function() {\n return formatWebpackMessages;\n }\n}));\nconst _interop_require_default = __webpack_require__(/*! @swc/helpers/_/_interop_require_default */ \"./node_modules/@swc/helpers/esm/_interop_require_default.js\");\nconst _stripansi = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! next/dist/compiled/strip-ansi */ \"./node_modules/next/dist/compiled/strip-ansi/index.js\"));\n// This file is based on https://github.com/facebook/create-react-app/blob/7b1a32be6ec9f99a6c9a3c66813f3ac09c4736b9/packages/react-dev-utils/formatWebpackMessages.js\n// It's been edited to remove chalk and CRA-specific logic\nconst friendlySyntaxErrorLabel = \"Syntax error:\";\nconst WEBPACK_BREAKING_CHANGE_POLYFILLS = \"\\n\\nBREAKING CHANGE: webpack < 5 used to include polyfills for node.js core modules by default.\";\nfunction isLikelyASyntaxError(message) {\n return (0, _stripansi.default)(message).includes(friendlySyntaxErrorLabel);\n}\nlet hadMissingSassError = false;\n// Cleans up webpack error messages.\nfunction formatMessage(message, verbose, importTraceNote) {\n // TODO: Replace this once webpack 5 is stable\n if (typeof message === \"object\" && message.message) {\n const filteredModuleTrace = message.moduleTrace && message.moduleTrace.filter((trace)=>!/next-(middleware|client-pages|route|edge-function)-loader\\.js/.test(trace.originName));\n let body = message.message;\n const breakingChangeIndex = body.indexOf(WEBPACK_BREAKING_CHANGE_POLYFILLS);\n if (breakingChangeIndex >= 0) {\n body = body.slice(0, breakingChangeIndex);\n }\n message = (message.moduleName ? (0, _stripansi.default)(message.moduleName) + \"\\n\" : \"\") + (message.file ? (0, _stripansi.default)(message.file) + \"\\n\" : \"\") + body + (message.details && verbose ? \"\\n\" + message.details : \"\") + (filteredModuleTrace && filteredModuleTrace.length ? (importTraceNote || \"\\n\\nImport trace for requested module:\") + filteredModuleTrace.map((trace)=>\"\\n\" + trace.moduleName).join(\"\") : \"\") + (message.stack && verbose ? \"\\n\" + message.stack : \"\");\n }\n let lines = message.split(\"\\n\");\n // Strip Webpack-added headers off errors/warnings\n // https://github.com/webpack/webpack/blob/master/lib/ModuleError.js\n lines = lines.filter((line)=>!/Module [A-z ]+\\(from/.test(line));\n // Transform parsing error into syntax error\n // TODO: move this to our ESLint formatter?\n lines = lines.map((line)=>{\n const parsingError = /Line (\\d+):(?:(\\d+):)?\\s*Parsing error: (.+)$/.exec(line);\n if (!parsingError) {\n return line;\n }\n const [, errorLine, errorColumn, errorMessage] = parsingError;\n return friendlySyntaxErrorLabel + \" \" + errorMessage + \" (\" + errorLine + \":\" + errorColumn + \")\";\n });\n message = lines.join(\"\\n\");\n // Smoosh syntax errors (commonly found in CSS)\n message = message.replace(/SyntaxError\\s+\\((\\d+):(\\d+)\\)\\s*(.+?)\\n/g, \"\" + friendlySyntaxErrorLabel + \" $3 ($1:$2)\\n\");\n // Clean up export errors\n message = message.replace(/^.*export '(.+?)' was not found in '(.+?)'.*$/gm, \"Attempted import error: '$1' is not exported from '$2'.\");\n message = message.replace(/^.*export 'default' \\(imported as '(.+?)'\\) was not found in '(.+?)'.*$/gm, \"Attempted import error: '$2' does not contain a default export (imported as '$1').\");\n message = message.replace(/^.*export '(.+?)' \\(imported as '(.+?)'\\) was not found in '(.+?)'.*$/gm, \"Attempted import error: '$1' is not exported from '$3' (imported as '$2').\");\n lines = message.split(\"\\n\");\n // Remove leading newline\n if (lines.length > 2 && lines[1].trim() === \"\") {\n lines.splice(1, 1);\n }\n // Cleans up verbose \"module not found\" messages for files and packages.\n if (lines[1] && lines[1].indexOf(\"Module not found: \") === 0) {\n lines = [\n lines[0],\n lines[1].replace(\"Error: \", \"\").replace(\"Module not found: Cannot find file:\", \"Cannot find file:\"),\n ...lines.slice(2)\n ];\n }\n // Add helpful message for users trying to use Sass for the first time\n if (lines[1] && lines[1].match(/Cannot find module.+sass/)) {\n // ./file.module.scss (<>) => ./file.module.scss\n const firstLine = lines[0].split(\"!\");\n lines[0] = firstLine[firstLine.length - 1];\n lines[1] = \"To use Next.js' built-in Sass support, you first need to install `sass`.\\n\";\n lines[1] += \"Run `npm i sass` or `yarn add sass` inside your workspace.\\n\";\n lines[1] += \"\\nLearn more: https://nextjs.org/docs/messages/install-sass\";\n // dispose of unhelpful stack trace\n lines = lines.slice(0, 2);\n hadMissingSassError = true;\n } else if (hadMissingSassError && message.match(/(sass-loader|resolve-url-loader: CSS error)/)) {\n // dispose of unhelpful stack trace following missing sass module\n lines = [];\n }\n if (!verbose) {\n message = lines.join(\"\\n\");\n // Internal stacks are generally useless so we strip them... with the\n // exception of stacks containing `webpack:` because they're normally\n // from user code generated by Webpack. For more information see\n // https://github.com/facebook/create-react-app/pull/1050\n message = message.replace(/^\\s*at\\s((?!webpack:).)*:\\d+:\\d+[\\s)]*(\\n|$)/gm, \"\") // at ... ...:x:y\n ;\n message = message.replace(/^\\s*at\\s(\\n|$)/gm, \"\") // at \n ;\n message = message.replace(/File was processed with these loaders:\\n(.+[\\\\/](next[\\\\/]dist[\\\\/].+|@next[\\\\/]react-refresh-utils[\\\\/]loader)\\.js\\n)*You may need an additional loader to handle the result of these loaders.\\n/g, \"\");\n lines = message.split(\"\\n\");\n }\n // Remove duplicated newlines\n lines = lines.filter((line, index, arr)=>index === 0 || line.trim() !== \"\" || line.trim() !== arr[index - 1].trim());\n // Reassemble the message\n message = lines.join(\"\\n\");\n return message.trim();\n}\nfunction formatWebpackMessages(json, verbose) {\n const formattedErrors = json.errors.map((message)=>{\n const isUnknownNextFontError = message.message.includes(\"An error occured in `next/font`.\");\n return formatMessage(message, isUnknownNextFontError || verbose);\n });\n const formattedWarnings = json.warnings.map((message)=>{\n return formatMessage(message, verbose);\n });\n // Reorder errors to put the most relevant ones first.\n let reactServerComponentsError = -1;\n for(let i = 0; i < formattedErrors.length; i++){\n const error = formattedErrors[i];\n if (error.includes(\"ReactServerComponentsError\")) {\n reactServerComponentsError = i;\n break;\n }\n }\n // Move the reactServerComponentsError to the top if it exists\n if (reactServerComponentsError !== -1) {\n const error = formattedErrors.splice(reactServerComponentsError, 1);\n formattedErrors.unshift(error[0]);\n }\n const result = {\n ...json,\n errors: formattedErrors,\n warnings: formattedWarnings\n };\n if (!verbose && result.errors.some(isLikelyASyntaxError)) {\n // If there are any syntax errors, show just them.\n result.errors = result.errors.filter(isLikelyASyntaxError);\n result.warnings = [];\n }\n return result;\n}\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=format-webpack-messages.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9kZXYvZXJyb3Itb3ZlcmxheS9mb3JtYXQtd2VicGFjay1tZXNzYWdlcy5qcyIsIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXNCQSxHQUFnQjtBQUNoQkEsOENBQTZDO0lBQ3pDRyxPQUFPO0FBQ1gsQ0FBQyxFQUFDO0FBQ0ZILDJDQUEwQztJQUN0Q0ksWUFBWTtJQUNaQyxLQUFLO1FBQ0QsT0FBT0M7SUFDWDtBQUNKLENBQUMsRUFBQztBQUNGLE1BQU1DLDJCQUEyQkMsbUJBQU9BLENBQUMsNEdBQXlDO0FBQ2xGLE1BQU1DLGFBQWEsV0FBVyxHQUFHRix5QkFBeUJHLENBQUMsQ0FBQ0YsbUJBQU9BLENBQUMsNEZBQStCO0FBQ25HLHFLQUFxSztBQUNySywwREFBMEQ7QUFDMUQsTUFBTUcsMkJBQTJCO0FBQ2pDLE1BQU1DLG9DQUFvQztBQUMxQyxTQUFTQyxxQkFBcUJDLE9BQU87SUFDakMsT0FBTyxDQUFDLEdBQUdMLFdBQVdNLE9BQU8sRUFBRUQsU0FBU0UsUUFBUSxDQUFDTDtBQUNyRDtBQUNBLElBQUlNLHNCQUFzQjtBQUMxQixvQ0FBb0M7QUFDcEMsU0FBU0MsY0FBY0osT0FBTyxFQUFFSyxPQUFPLEVBQUVDLGVBQWU7SUFDcEQsOENBQThDO0lBQzlDLElBQUksT0FBT04sWUFBWSxZQUFZQSxRQUFRQSxPQUFPLEVBQUU7UUFDaEQsTUFBTU8sc0JBQXNCUCxRQUFRUSxXQUFXLElBQUlSLFFBQVFRLFdBQVcsQ0FBQ0MsTUFBTSxDQUFDLENBQUNDLFFBQVEsQ0FBQyxnRUFBZ0VDLElBQUksQ0FBQ0QsTUFBTUUsVUFBVTtRQUM3SyxJQUFJQyxPQUFPYixRQUFRQSxPQUFPO1FBQzFCLE1BQU1jLHNCQUFzQkQsS0FBS0UsT0FBTyxDQUFDakI7UUFDekMsSUFBSWdCLHVCQUF1QixHQUFHO1lBQzFCRCxPQUFPQSxLQUFLRyxLQUFLLENBQUMsR0FBR0Y7UUFDekI7UUFDQWQsVUFBVSxD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UVAsZUFBZSxDQUFDTSxFQUFFO1FBQ2hDLElBQUlDLE1BQU03QyxRQUFRLENBQUMsK0JBQStCO1lBQzlDMkMsNkJBQTZCQztZQUM3QjtRQUNKO0lBQ0o7SUFDQSw4REFBOEQ7SUFDOUQsSUFBSUQsK0JBQStCLENBQUMsR0FBRztRQUNuQyxNQUFNRSxRQUFRUCxnQkFBZ0JOLE1BQU0sQ0FBQ1csNEJBQTRCO1FBQ2pFTCxnQkFBZ0JRLE9BQU8sQ0FBQ0QsS0FBSyxDQUFDLEVBQUU7SUFDcEM7SUFDQSxNQUFNRSxTQUFTO1FBQ1gsR0FBR1YsSUFBSTtRQUNQRSxRQUFRRDtRQUNSSSxVQUFVRDtJQUNkO0lBQ0EsSUFBSSxDQUFDdEMsV0FBVzRDLE9BQU9SLE1BQU0sQ0FBQ1MsSUFBSSxDQUFDbkQsdUJBQXVCO1FBQ3RELGtEQUFrRDtRQUNsRGtELE9BQU9SLE1BQU0sR0FBR1EsT0FBT1IsTUFBTSxDQUFDaEMsTUFBTSxDQUFDVjtRQUNyQ2tELE9BQU9MLFFBQVEsR0FBRyxFQUFFO0lBQ3hCO0lBQ0EsT0FBT0s7QUFDWDtBQUVBLElBQUksQ0FBQyxPQUFPN0QsUUFBUWEsT0FBTyxLQUFLLGNBQWUsT0FBT2IsUUFBUWEsT0FBTyxLQUFLLFlBQVliLFFBQVFhLE9BQU8sS0FBSyxJQUFJLEtBQU0sT0FBT2IsUUFBUWEsT0FBTyxDQUFDa0QsVUFBVSxLQUFLLGFBQWE7SUFDcktqRSxPQUFPQyxjQUFjLENBQUNDLFFBQVFhLE9BQU8sRUFBRSxjQUFjO1FBQUVaLE9BQU87SUFBSztJQUNuRUgsT0FBT2tFLE1BQU0sQ0FBQ2hFLFFBQVFhLE9BQU8sRUFBRWI7SUFDL0JpRSxPQUFPakUsT0FBTyxHQUFHQSxRQUFRYSxPQUFPO0FBQ2xDLEVBRUEsbURBQW1EIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2Rldi9lcnJvci1vdmVybGF5L2Zvcm1hdC13ZWJwYWNrLW1lc3NhZ2VzLmpzPzc1ZWMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG5NSVQgTGljZW5zZVxuXG5Db3B5cmlnaHQgKGMpIDIwMTUtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblxuUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxub2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xudG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG5mdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuXG5UaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGxcbmNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG5cblRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbklNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG5BVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG5MSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEVcblNPRlRXQVJFLlxuKi8gXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJkZWZhdWx0XCIsIHtcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBmb3JtYXRXZWJwYWNrTWVzc2FnZXM7XG4gICAgfVxufSk7XG5jb25zdCBfaW50ZXJvcF9yZXF1aXJlX2RlZmF1bHQgPSByZXF1aXJlKFwiQHN3Yy9oZWxwZXJzL18vX2ludGVyb3BfcmVxdWlyZV9kZWZhdWx0XCIpO1xuY29uc3QgX3N0cmlwYW5zaSA9IC8qI19fUFVSRV9fKi8gX2ludGVyb3BfcmVxdWlyZV9kZWZhdWx0Ll8ocmVxdWlyZShcIm5leHQvZGlzdC9jb21waWxlZC9zdHJpcC1hbnNpXCIpKTtcbi8vIFRoaXMgZmlsZSBpcyBiYXNlZCBvbiBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svY3JlYXRlLXJlYWN0LWFwcC9ibG9iLzdiMWEzMmJlNmVjOWY5OWE2YzlhM2M2NjgxM2YzYWMwOWM0NzM2YjkvcGFja2FnZXMvcmVhY3QtZGV2LXV0aWxzL2Zvcm1hdFdlYnBhY2tNZXNzYWdlcy5qc1xuLy8gSXQncyBiZWVuIGVkaXRlZCB0byByZW1vdmUgY2hhbGsgYW5kIENSQS1zcGVjaWZpYyBsb2dpY1xuY29uc3QgZnJpZW5kbHlTeW50YXhFcnJvckxhYmVsID0gXCJTeW50YXggZXJyb3I6XCI7XG5jb25zdCBXRUJQQUNLX0JSRUFLSU5HX0NIQU5HRV9QT0xZRklMTFMgPSBcIlxcblxcbkJSRUFLSU5HIENIQU5HRTogd2VicGFjayA8IDUgdXNlZCB0byBpbmNsdWRlIHBvbHlmaWxscyBmb3Igbm9kZS5qcyBjb3JlIG1vZHVsZXMgYnkgZGVmYXVsdC5cIjtcbmZ1bmN0aW9uIGlzTGlrZWx5QVN5bnRheEVycm9yKG1lc3NhZ2UpIHtcbiAgICByZXR1cm4gKDAsIF9zdHJpcGFuc2kuZGVmYXVsdCkobWVzc2FnZSkuaW5jbHVkZXMoZnJpZW5kbHlTeW50YXhFcnJvckxhYmVsKTtcbn1cbmxldCBoYWRNaXNzaW5nU2Fzc0Vycm9yID0gZmFsc2U7XG4vLyBDbGVhbnMgdXAgd2VicGFjayBlcnJvciBtZXNzYWdlcy5cbmZ1bmN0aW9uIGZvcm1hdE1lc3NhZ2UobWVzc2FnZSwgdmVyYm9zZSwgaW1wb3J0VHJhY2VOb3RlKSB7XG4gICAgLy8gVE9ETzogUmVwbGFjZSB0aGlzIG9uY2Ugd2VicGFjayA1IGlzIHN0YWJsZVxuICAgIGlmICh0eXBlb2YgbWVzc2FnZSA9PT0gXCJvYmplY3RcIiAmJiBtZXNzYWdlLm1lc3NhZ2UpIHtcbiAgICAgICAgY29uc3QgZmlsdGVyZWRNb2R1bGVUcmFjZSA9IG1lc3NhZ2UubW9kdWxlVHJhY2UgJiYgbWVzc2FnZS5tb2R1bGVUcmFjZS5maWx0ZXIoKHRyYWNlKT0+IS9uZXh0LShtaWRkbGV3YXJlfGNsaWVudC1wYWdlc3xyb3V0ZXxlZGdlLWZ1bmN0aW9uKS1sb2FkZXJcXC5qcy8udGVzdCh0cmFjZS5vcmlnaW5OYW1lKSk7XG4gICAgICAgIGxldCBib2R5ID0gbWVzc2FnZS5tZXNzYWdlO1xuICAgICAgICBjb25zdCBicmVha2luZ0NoYW5nZUluZGV4ID0gYm9keS5pbmRleE9mKFdFQlBBQ0tfQlJFQUtJTkdfQ0hBTkdFX1BPTFlGSUxMUyk7XG4gICAgICAgIGlmIChicmVha2luZ0NoYW5nZUluZGV4ID49IDApIHtcbiAgICAgICAgICAgIGJvZHkgPSBib2R5LnNsaWNlKDAsIGJyZWFraW5nQ2hhbmdlSW5kZXgpO1xuICAgICAgICB9XG4gICAgICAgIG1lc3NhZ2UgPSAobWVzc2FnZS5tb2R1bGVOYW1lID8gKDAsIF9zdHJpcGFuc2kuZGVmYXVsdCkobWVzc2FnZS5tb2R1bGVOYW1lKSArIFwiXFxuXCIgOiBcIlwiKSArIChtZXNzYWdlLmZpbGUgPyAoMCwgX3N0cmlwYW5zaS5kZWZhdWx0KShtZXNzYWdlLmZpbGUpICsgXCJcXG5cIiA6IFwiXCIpICsgYm9keSArIChtZXNzYWdlLmRldGFpbHMgJiYgdmVyYm9zZSA/IFwiXFxuXCIgKyBtZXNzYWdlLmRldGFpbHMgOiBcIlwiKSArIChmaWx0ZXJlZE1vZHVsZVRyYWNlICYmIGZpbHRlcmVkTW9kdWxlVHJhY2UubGVuZ3RoID8gKGltcG9ydFRyYWNlTm90ZSB8fCBcIlxcblxcbkltcG9ydCB0cmFjZSBmb3IgcmVxdWVzdGVkIG1vZHVsZTpcIikgKyBmaWx0ZXJlZE1vZHVsZVRyYWNlLm1hcCgodHJhY2UpPT5cIlxcblwiICsgdHJhY2UubW9kdWxlTmFtZSkuam9pbihcIlwiKSA6IFwiXCIpICsgKG1lc3NhZ2Uuc3RhY2sgJiYgdmVyYm9zZSA/IFwiXFxuXCIgKyBtZXNzYWdlLnN0YWNrIDogXCJcIik7XG4gICAgfVxuICAgIGxldCBsaW5lcyA9IG1lc3NhZ2Uuc3BsaXQoXCJcXG5cIik7XG4gICAgLy8gU3RyaXAgV2VicGFjay1hZGRlZCBoZWFkZXJzIG9mZiBlcnJvcnMvd2FybmluZ3NcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vd2VicGFjay93ZWJwYWNrL2Jsb2IvbWFzdGVyL2xpYi9Nb2R1bGVFcnJvci5qc1xuICAgIGxpbmVzID0gbGluZXMuZmlsdGVyKChsaW5lKT0+IS9Nb2R1bGUgW0EteiBdK1xcKGZyb20vLnRlc3QobGluZSkpO1xuICAgIC8vIFRyYW5zZm9ybSBwYXJzaW5nIGVycm9yIGludG8gc3ludGF4IGVycm9yXG4gICAgLy8gVE9ETzogbW92ZSB0aGlzIHRvIG91ciBFU0xpbnQgZm9ybWF0dGVyP1xuICAgIGxpbmVzID0gbGluZXMubWFwKChsaW5lKT0+e1xuICAgICAgICBjb25zdCBwYXJzaW5nRXJyb3IgPSAvTGluZSAoXFxkKyk6KD86KFxcZCspOik/XFxzKlBhcnNpbmcgZXJyb3I6ICguKykkLy5leGVjKGxpbmUpO1xuICAgICAgICBpZiAoIXBhcnNpbmdFcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuIGxpbmU7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgWywgZXJyb3JMaW5lLCBlcnJvckNvbHVtbiwgZXJyb3JNZXNzYWdlXSA9IHBhcnNpbmdFcnJvcjtcbiAgICAgICAgcmV0dXJuIGZyaWVuZGx5U3ludGF4RXJyb3JMYWJlbCArIFwiIFwiICsgZXJyb3JNZXNzYWdlICsgXCIgKFwiICsgZXJyb3JMaW5lICsgXCI6XCIgKyBlcnJvckNvbHVtbiArIFwiKVwiO1xuICAgIH0pO1xuICAgIG1lc3NhZ2UgPSBsaW5lcy5qb2luKFwiXFxuXCIpO1xuICAgIC8vIFNtb29zaCBzeW50YXggZXJyb3JzIChjb21tb25seSBmb3VuZCBpbiBDU1MpXG4gICAgbWVzc2FnZSA9IG1lc3NhZ2UucmVwbGFjZSgvU3ludGF4RXJyb3JcXHMrXFwoKFxcZCspOihcXGQrKVxcKVxccyooLis/KVxcbi9nLCBcIlwiICsgZnJpZW5kbHlTeW50YXhFcnJvckxhYmVsICsgXCIgJDMgKCQxOiQyKVxcblwiKTtcbiAgICAvLyBDbGVhbiB1cCBleHBvcnQgZXJyb3JzXG4gICAgbWVzc2FnZSA9IG1lc3NhZ2UucmVwbGFjZSgvXi4qZXhwb3J0ICcoLis/KScgd2FzIG5vdCBmb3VuZCBpbiAnKC4rPyknLiokL2dtLCBcIkF0dGVtcHRlZCBpbXBvcnQgZXJyb3I6ICckMScgaXMgbm90IGV4cG9ydGVkIGZyb20gJyQyJy5cIik7XG4gICAgbWVzc2FnZSA9IG1lc3NhZ2UucmVwbGFjZSgvXi4qZXhwb3J0ICdkZWZhdWx0JyBcXChpbXBvcnRlZCBhcyAnKC4rPyknXFwpIHdhcyBub3QgZm91bmQgaW4gJyguKz8pJy4qJC9nbSwgXCJBdHRlbXB0ZWQgaW1wb3J0IGVycm9yOiAnJDInIGRvZXMgbm90IGNvbnRhaW4gYSBkZWZhdWx0IGV4cG9ydCAoaW1wb3J0ZWQgYXMgJyQxJykuXCIpO1xuICAgIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UoL14uKmV4cG9ydCAnKC4rPyknIFxcKGltcG9ydGVkIGFzICcoLis/KSdcXCkgd2FzIG5vdCBmb3VuZCBpbiAnKC4rPyknLiokL2dtLCBcIkF0dGVtcHRlZCBpbXBvcnQgZXJyb3I6ICckMScgaXMgbm90IGV4cG9ydGVkIGZyb20gJyQzJyAoaW1wb3J0ZWQgYXMgJyQyJykuXCIpO1xuICAgIGxpbmVzID0gbWVzc2FnZS5zcGxpdChcIlxcblwiKTtcbiAgICAvLyBSZW1vdmUgbGVhZGluZyBuZXdsaW5lXG4gICAgaWYgKGxpbmVzLmxlbmd0aCA+IDIgJiYgbGluZXNbMV0udHJpbSgpID09PSBcIlwiKSB7XG4gICAgICAgIGxpbmVzLnNwbGljZSgxLCAxKTtcbiAgICB9XG4gICAgLy8gQ2xlYW5zIHVwIHZlcmJvc2UgXCJtb2R1bGUgbm90IGZvdW5kXCIgbWVzc2FnZXMgZm9yIGZpbGVzIGFuZCBwYWNrYWdlcy5cbiAgICBpZiAobGluZXNbMV0gJiYgbGluZXNbMV0uaW5kZXhPZihcIk1vZHVsZSBub3QgZm91bmQ6IFwiKSA9PT0gMCkge1xuICAgICAgICBsaW5lcyA9IFtcbiAgICAgICAgICAgIGxpbmVzWzBdLFxuICAgICAgICAgICAgbGluZXNbMV0ucmVwbGFjZShcIkVycm9yOiBcIiwgXCJcIikucmVwbGFjZShcIk1vZHVsZSBub3QgZm91bmQ6IENhbm5vdCBmaW5kIGZpbGU6XCIsIFwiQ2Fubm90IGZpbmQgZmlsZTpcIiksXG4gICAgICAgICAgICAuLi5saW5lcy5zbGljZSgyKVxuICAgICAgICBdO1xuICAgIH1cbiAgICAvLyBBZGQgaGVscGZ1bCBtZXNzYWdlIGZvciB1c2VycyB0cnlpbmcgdG8gdXNlIFNhc3MgZm9yIHRoZSBmaXJzdCB0aW1lXG4gICAgaWYgKGxpbmVzWzFdICYmIGxpbmVzWzFdLm1hdGNoKC9DYW5ub3QgZmluZCBtb2R1bGUuK3Nhc3MvKSkge1xuICAgICAgICAvLyAuL2ZpbGUubW9kdWxlLnNjc3MgKDw8bG9hZGVyIGluZm8+PikgPT4gLi9maWxlLm1vZHVsZS5zY3NzXG4gICAgICAgIGNvbnN0IGZpcnN0TGluZSA9IGxpbmVzWzBdLnNwbGl0KFwiIVwiKTtcbiAgICAgICAgbGluZXNbMF0gPSBmaXJzdExpbmVbZmlyc3RMaW5lLmxlbmd0aCAtIDFdO1xuICAgICAgICBsaW5lc1sxXSA9IFwiVG8gdXNlIE5leHQuanMnIGJ1aWx0LWluIFNhc3Mgc3VwcG9ydCwgeW91IGZpcnN0IG5lZWQgdG8gaW5zdGFsbCBgc2Fzc2AuXFxuXCI7XG4gICAgICAgIGxpbmVzWzFdICs9IFwiUnVuIGBucG0gaSBzYXNzYCBvciBgeWFybiBhZGQgc2Fzc2AgaW5zaWRlIHlvdXIgd29ya3NwYWNlLlxcblwiO1xuICAgICAgICBsaW5lc1sxXSArPSBcIlxcbkxlYXJuIG1vcmU6IGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL21lc3NhZ2VzL2luc3RhbGwtc2Fzc1wiO1xuICAgICAgICAvLyBkaXNwb3NlIG9mIHVuaGVscGZ1bCBzdGFjayB0cmFjZVxuICAgICAgICBsaW5lcyA9IGxpbmVzLnNsaWNlKDAsIDIpO1xuICAgICAgICBoYWRNaXNzaW5nU2Fzc0Vycm9yID0gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKGhhZE1pc3NpbmdTYXNzRXJyb3IgJiYgbWVzc2FnZS5tYXRjaCgvKHNhc3MtbG9hZGVyfHJlc29sdmUtdXJsLWxvYWRlcjogQ1NTIGVycm9yKS8pKSB7XG4gICAgICAgIC8vIGRpc3Bvc2Ugb2YgdW5oZWxwZnVsIHN0YWNrIHRyYWNlIGZvbGxvd2luZyBtaXNzaW5nIHNhc3MgbW9kdWxlXG4gICAgICAgIGxpbmVzID0gW107XG4gICAgfVxuICAgIGlmICghdmVyYm9zZSkge1xuICAgICAgICBtZXNzYWdlID0gbGluZXMuam9pbihcIlxcblwiKTtcbiAgICAgICAgLy8gSW50ZXJuYWwgc3RhY2tzIGFyZSBnZW5lcmFsbHkgdXNlbGVzcyBzbyB3ZSBzdHJpcCB0aGVtLi4uIHdpdGggdGhlXG4gICAgICAgIC8vIGV4Y2VwdGlvbiBvZiBzdGFja3MgY29udGFpbmluZyBgd2VicGFjazpgIGJlY2F1c2UgdGhleSdyZSBub3JtYWxseVxuICAgICAgICAvLyBmcm9tIHVzZXIgY29kZSBnZW5lcmF0ZWQgYnkgV2VicGFjay4gRm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlXG4gICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9jcmVhdGUtcmVhY3QtYXBwL3B1bGwvMTA1MFxuICAgICAgICBtZXNzYWdlID0gbWVzc2FnZS5yZXBsYWNlKC9eXFxzKmF0XFxzKCg/IXdlYnBhY2s6KS4pKjpcXGQrOlxcZCtbXFxzKV0qKFxcbnwkKS9nbSwgXCJcIikgLy8gYXQgLi4uIC4uLjp4OnlcbiAgICAgICAgO1xuICAgICAgICBtZXNzYWdlID0gbWVzc2FnZS5yZXBsYWNlKC9eXFxzKmF0XFxzPGFub255bW91cz4oXFxufCQpL2dtLCBcIlwiKSAvLyBhdCA8YW5vbnltb3VzPlxuICAgICAgICA7XG4gICAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLnJlcGxhY2UoL0ZpbGUgd2FzIHByb2Nlc3NlZCB3aXRoIHRoZXNlIGxvYWRlcnM6XFxuKC4rW1xcXFwvXShuZXh0W1xcXFwvXWRpc3RbXFxcXC9dLit8QG5leHRbXFxcXC9dcmVhY3QtcmVmcmVzaC11dGlsc1tcXFxcL11sb2FkZXIpXFwuanNcXG4pKllvdSBtYXkgbmVlZCBhbiBhZGRpdGlvbmFsIGxvYWRlciB0byBoYW5kbGUgdGhlIHJlc3VsdCBvZiB0aGVzZSBsb2FkZXJzLlxcbi9nLCBcIlwiKTtcbiAgICAgICAgbGluZXMgPSBtZXNzYWdlLnNwbGl0KFwiXFxuXCIpO1xuICAgIH1cbiAgICAvLyBSZW1vdmUgZHVwbGljYXRlZCBuZXdsaW5lc1xuICAgIGxpbmVzID0gbGluZXMuZmlsdGVyKChsaW5lLCBpbmRleCwgYXJyKT0+aW5kZXggPT09IDAgfHwgbGluZS50cmltKCkgIT09IFwiXCIgfHwgbGluZS50cmltKCkgIT09IGFycltpbmRleCAtIDFdLnRyaW0oKSk7XG4gICAgLy8gUmVhc3NlbWJsZSB0aGUgbWVzc2FnZVxuICAgIG1lc3NhZ2UgPSBsaW5lcy5qb2luKFwiXFxuXCIpO1xuICAgIHJldHVybiBtZXNzYWdlLnRyaW0oKTtcbn1cbmZ1bmN0aW9uIGZvcm1hdFdlYnBhY2tNZXNzYWdlcyhqc29uLCB2ZXJib3NlKSB7XG4gICAgY29uc3QgZm9ybWF0dGVkRXJyb3JzID0ganNvbi5lcnJvcnMubWFwKChtZXNzYWdlKT0+e1xuICAgICAgICBjb25zdCBpc1Vua25vd25OZXh0Rm9udEVycm9yID0gbWVzc2FnZS5tZXNzYWdlLmluY2x1ZGVzKFwiQW4gZXJyb3Igb2NjdXJlZCBpbiBgbmV4dC9mb250YC5cIik7XG4gICAgICAgIHJldHVybiBmb3JtYXRNZXNzYWdlKG1lc3NhZ2UsIGlzVW5rbm93bk5leHRGb250RXJyb3IgfHwgdmVyYm9zZSk7XG4gICAgfSk7XG4gICAgY29uc3QgZm9ybWF0dGVkV2FybmluZ3MgPSBqc29uLndhcm5pbmdzLm1hcCgobWVzc2FnZSk9PntcbiAgICAgICAgcmV0dXJuIGZvcm1hdE1lc3NhZ2UobWVzc2FnZSwgdmVyYm9zZSk7XG4gICAgfSk7XG4gICAgLy8gUmVvcmRlciBlcnJvcnMgdG8gcHV0IHRoZSBtb3N0IHJlbGV2YW50IG9uZXMgZmlyc3QuXG4gICAgbGV0IHJlYWN0U2VydmVyQ29tcG9uZW50c0Vycm9yID0gLTE7XG4gICAgZm9yKGxldCBpID0gMDsgaSA8IGZvcm1hdHRlZEVycm9ycy5sZW5ndGg7IGkrKyl7XG4gICAgICAgIGNvbnN0IGVycm9yID0gZm9ybWF0dGVkRXJyb3JzW2ldO1xuICAgICAgICBpZiAoZXJyb3IuaW5jbHVkZXMoXCJSZWFjdFNlcnZlckNvbXBvbmVudHNFcnJvclwiKSkge1xuICAgICAgICAgICAgcmVhY3RTZXJ2ZXJDb21wb25lbnRzRXJyb3IgPSBpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gTW92ZSB0aGUgcmVhY3RTZXJ2ZXJDb21wb25lbnRzRXJyb3IgdG8gdGhlIHRvcCBpZiBpdCBleGlzdHNcbiAgICBpZiAocmVhY3RTZXJ2ZXJDb21wb25lbnRzRXJyb3IgIT09IC0xKSB7XG4gICAgICAgIGNvbnN0IGVycm9yID0gZm9ybWF0dGVkRXJyb3JzLnNwbGljZShyZWFjdFNlcnZlckNvbXBvbmVudHNFcnJvciwgMSk7XG4gICAgICAgIGZvcm1hdHRlZEVycm9ycy51bnNoaWZ0KGVycm9yWzBdKTtcbiAgICB9XG4gICAgY29uc3QgcmVzdWx0ID0ge1xuICAgICAgICAuLi5qc29uLFxuICAgICAgICBlcnJvcnM6IGZvcm1hdHRlZEVycm9ycyxcbiAgICAgICAgd2FybmluZ3M6IGZvcm1hdHRlZFdhcm5pbmdzXG4gICAgfTtcbiAgICBpZiAoIXZlcmJvc2UgJiYgcmVzdWx0LmVycm9ycy5zb21lKGlzTGlrZWx5QVN5bnRheEVycm9yKSkge1xuICAgICAgICAvLyBJZiB0aGVyZSBhcmUgYW55IHN5bnRheCBlcnJvcnMsIHNob3cganVzdCB0aGVtLlxuICAgICAgICByZXN1bHQuZXJyb3JzID0gcmVzdWx0LmVycm9ycy5maWx0ZXIoaXNMaWtlbHlBU3ludGF4RXJyb3IpO1xuICAgICAgICByZXN1bHQud2FybmluZ3MgPSBbXTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cblxuaWYgKCh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnZnVuY3Rpb24nIHx8ICh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnb2JqZWN0JyAmJiBleHBvcnRzLmRlZmF1bHQgIT09IG51bGwpKSAmJiB0eXBlb2YgZXhwb3J0cy5kZWZhdWx0Ll9fZXNNb2R1bGUgPT09ICd1bmRlZmluZWQnKSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLmRlZmF1bHQsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiAgT2JqZWN0LmFzc2lnbihleHBvcnRzLmRlZmF1bHQsIGV4cG9ydHMpO1xuICBtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMuZGVmYXVsdDtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Zm9ybWF0LXdlYnBhY2stbWVzc2FnZXMuanMubWFwIl0sIm5hbWVzIjpbIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZXhwb3J0cyIsInZhbHVlIiwiZW51bWVyYWJsZSIsImdldCIsImZvcm1hdFdlYnBhY2tNZXNzYWdlcyIsIl9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdCIsInJlcXVpcmUiLCJfc3RyaXBhbnNpIiwiXyIsImZyaWVuZGx5U3ludGF4RXJyb3JMYWJlbCIsIldFQlBBQ0tfQlJFQUtJTkdfQ0hBTkdFX1BPTFlGSUxMUyIsImlzTGlrZWx5QVN5bnRheEVycm9yIiwibWVzc2FnZSIsImRlZmF1bHQiLCJpbmNsdWRlcyIsImhhZE1pc3NpbmdTYXNzRXJyb3IiLCJmb3JtYXRNZXNzYWdlIiwidmVyYm9zZSIsImltcG9ydFRyYWNlTm90ZSIsImZpbHRlcmVkTW9kdWxlVHJhY2UiLCJtb2R1bGVUcmFjZSIsImZpbHRlciIsInRyYWNlIiwidGVzdCIsIm9yaWdpbk5hbWUiLCJib2R5IiwiYnJlYWtpbmdDaGFuZ2VJbmRleCIsImluZGV4T2YiLCJzbGljZSIsIm1vZHVsZU5hbWUiLCJmaWxlIiwiZGV0YWlscyIsImxlbmd0aCIsIm1hcCIsImpvaW4iLCJzdGFjayIsImxpbmVzIiwic3BsaXQiLCJsaW5lIiwicGFyc2luZ0Vycm9yIiwiZXhlYyIsImVycm9yTGluZSIsImVycm9yQ29sdW1uIiwiZXJyb3JNZXNzYWdlIiwicmVwbGFjZSIsInRyaW0iLCJzcGxpY2UiLCJtYXRjaCIsImZpcnN0TGluZSIsImluZGV4IiwiYXJyIiwianNvbiIsImZvcm1hdHRlZEVycm9ycyIsImVycm9ycyIsImlzVW5rbm93bk5leHRGb250RXJyb3IiLCJmb3JtYXR0ZWRXYXJuaW5ncyIsIndhcm5pbmdzIiwicmVhY3RTZXJ2ZXJDb21wb25lbnRzRXJyb3IiLCJpIiwiZXJyb3IiLCJ1bnNoaWZ0IiwicmVzdWx0Iiwic29tZSIsIl9fZXNNb2R1bGUiLCJhc3NpZ24iLCJtb2R1bGUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/dev/error-overlay/format-webpack-messages.js\n")); /***/ }), /***/ "./node_modules/next/dist/client/dev/error-overlay/hot-dev-client.js": /*!***************************************************************************!*\ !*** ./node_modules/next/dist/client/dev/error-overlay/hot-dev-client.js ***! \***************************************************************************/ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval(__webpack_require__.ts("// TODO: Remove use of `any` type. Fix no-use-before-define violations.\n/* eslint-disable @typescript-eslint/no-use-before-define */ /**\n * MIT License\n *\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */ // This file is a modified version of the Create React App HMR dev client that\n// can be found here:\n// https://github.com/facebook/create-react-app/blob/v3.4.1/packages/react-dev-utils/webpackHotDevClient.js\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"default\", ({\n enumerable: true,\n get: function() {\n return connect;\n }\n}));\nconst _interop_require_default = __webpack_require__(/*! @swc/helpers/_/_interop_require_default */ \"./node_modules/@swc/helpers/esm/_interop_require_default.js\");\nconst _client = __webpack_require__(/*! next/dist/compiled/@next/react-dev-overlay/dist/client */ \"./node_modules/next/dist/compiled/@next/react-dev-overlay/dist/client.js\");\nconst _stripansi = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! next/dist/compiled/strip-ansi */ \"./node_modules/next/dist/compiled/strip-ansi/index.js\"));\nconst _websocket = __webpack_require__(/*! ./websocket */ \"./node_modules/next/dist/client/dev/error-overlay/websocket.js\");\nconst _formatwebpackmessages = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! ./format-webpack-messages */ \"./node_modules/next/dist/client/dev/error-overlay/format-webpack-messages.js\"));\nconst _hotreloadertypes = __webpack_require__(/*! ../../../server/dev/hot-reloader-types */ \"./node_modules/next/dist/server/dev/hot-reloader-types.js\");\nwindow.__nextDevClientId = Math.round(Math.random() * 100 + Date.now());\nlet hadRuntimeError = false;\nlet customHmrEventHandler;\nlet MODE = \"webpack\";\nfunction connect(mode) {\n MODE = mode;\n (0, _client.register)();\n (0, _websocket.addMessageListener)((payload)=>{\n if (!(\"action\" in payload)) {\n return;\n }\n try {\n processMessage(payload);\n } catch (err) {\n var _err_stack;\n console.warn(\"[HMR] Invalid message: \" + payload + \"\\n\" + ((_err_stack = err == null ? void 0 : err.stack) != null ? _err_stack : \"\"));\n }\n });\n return {\n subscribeToHmrEvent (handler) {\n customHmrEventHandler = handler;\n },\n onUnrecoverableError () {\n hadRuntimeError = true;\n }\n };\n}\n// Remember some state related to hot module replacement.\nvar isFirstCompilation = true;\nvar mostRecentCompilationHash = null;\nvar hasCompileErrors = false;\nfunction clearOutdatedErrors() {\n // Clean up outdated compile errors, if any.\n if (typeof console !== \"undefined\" && typeof console.clear === \"function\") {\n if (hasCompileErrors) {\n console.clear();\n }\n }\n}\n// Successful compilation.\nfunction handleSuccess() {\n clearOutdatedErrors();\n if (MODE === \"webpack\") {\n const isHotUpdate = !isFirstCompilation || window.__NEXT_DATA__.page !== \"/_error\" && isUpdateAvailable();\n isFirstCompilation = false;\n hasCompileErrors = false;\n // Attempt to apply hot updates or reload.\n if (isHotUpdate) {\n tryApplyUpdates(onBeforeFastRefresh, onFastRefresh);\n }\n } else {\n (0, _client.onBuildOk)();\n }\n}\n// Compilation with warnings (e.g. ESLint).\nfunction handleWarnings(warnings) {\n clearOutdatedErrors();\n const isHotUpdate = !isFirstCompilation;\n isFirstCompilation = false;\n hasCompileErrors = false;\n function printWarnings() {\n // Print warnings to the console.\n const formatted = (0, _formatwebpackmessages.default)({\n warnings: warnings,\n errors: []\n });\n if (typeof console !== \"undefined\" && typeof console.warn === \"function\") {\n var _formatted_warnings;\n for(let i = 0; i < ((_formatted_warnings = formatted.warnings) == null ? void 0 : _formatted_warnings.length); i++){\n if (i === 5) {\n console.warn(\"There were more warnings in other files.\\n\" + \"You can find a complete log in the terminal.\");\n break;\n }\n console.warn((0, _stripansi.default)(formatted.warnings[i]));\n }\n }\n }\n printWarnings();\n // Attempt to apply hot updates or reload.\n if (isHotUpdate) {\n tryApplyUpdates(onBeforeFastRefresh, onFastRefresh);\n }\n}\n// Compilation with errors (e.g. syntax error or missing modules).\nfunction handleErrors(errors) {\n clearOutdatedErrors();\n isFirstCompilation = false;\n hasCompileErrors = true;\n // \"Massage\" webpack messages.\n var formatted = (0, _formatwebpackmessages.default)({\n errors: errors,\n warnings: []\n });\n // Only show the first error.\n (0, _client.onBuildError)(formatted.errors[0]);\n // Also log them to the console.\n if (typeof console !== \"undefined\" && typeof console.error === \"function\") {\n for(var i = 0; i < formatted.errors.length; i++){\n console.error((0, _stripansi.default)(formatted.errors[i]));\n }\n }\n // Do not attempt to reload now.\n // We will reload on next success instead.\n if (false) {}\n}\nlet startLatency = undefined;\nfunction onBeforeFastRefresh(updatedModules) {\n if (updatedModules.length > 0) {\n // Only trigger a pending state if we have updates to apply\n // (cf. onFastRefresh)\n (0, _client.onBeforeRefresh)();\n }\n}\nfunction onFastRefresh(updatedModules) {\n (0, _client.onBuildOk)();\n if (updatedModules.length > 0) {\n // Only complete a pending state if we applied updates\n // (cf. onBeforeFastRefresh)\n (0, _client.onRefresh)();\n }\n if (startLatency) {\n const endLatency = Date.now();\n const latency = endLatency - startLatency;\n console.log(\"[Fast Refresh] done in \" + latency + \"ms\");\n (0, _websocket.sendMessage)(JSON.stringify({\n event: \"client-hmr-latency\",\n id: window.__nextDevClientId,\n startTime: startLatency,\n endTime: endLatency,\n page: window.location.pathname,\n updatedModules,\n // Whether the page (tab) was hidden at the time the event occurred.\n // This can impact the accuracy of the event's timing.\n isPageHidden: document.visibilityState === \"hidden\"\n }));\n if (self.__NEXT_HMR_LATENCY_CB) {\n self.__NEXT_HMR_LATENCY_CB(latency);\n }\n }\n}\n// There is a newer version of the code available.\nfunction handleAvailableHash(hash) {\n // Update last known compilation hash.\n mostRecentCompilationHash = hash;\n}\n// Handle messages from the server.\nfunction processMessage(obj) {\n if (!(\"action\" in obj)) {\n return;\n }\n switch(obj.action){\n case _hotreloadertypes.HMR_ACTIONS_SENT_TO_BROWSER.BUILDING:\n {\n startLatency = Date.now();\n console.log(\"[Fast Refresh] rebuilding\");\n break;\n }\n case _hotreloadertypes.HMR_ACTIONS_SENT_TO_BROWSER.BUILT:\n case _hotreloadertypes.HMR_ACTIONS_SENT_TO_BROWSER.SYNC:\n {\n if (obj.hash) {\n handleAvailableHash(obj.hash);\n }\n const { errors, warnings } = obj;\n const hasErrors = Boolean(errors && errors.length);\n if (hasErrors) {\n (0, _websocket.sendMessage)(JSON.stringify({\n event: \"client-error\",\n errorCount: errors.length,\n clientId: window.__nextDevClientId\n }));\n return handleErrors(errors);\n }\n const hasWarnings = Boolean(warnings && warnings.length);\n if (hasWarnings) {\n (0, _websocket.sendMessage)(JSON.stringify({\n event: \"client-warning\",\n warningCount: warnings.length,\n clientId: window.__nextDevClientId\n }));\n return handleWarnings(warnings);\n }\n (0, _websocket.sendMessage)(JSON.stringify({\n event: \"client-success\",\n clientId: window.__nextDevClientId\n }));\n return handleSuccess();\n }\n case _hotreloadertypes.HMR_ACTIONS_SENT_TO_BROWSER.SERVER_COMPONENT_CHANGES:\n {\n window.location.reload();\n return;\n }\n case _hotreloadertypes.HMR_ACTIONS_SENT_TO_BROWSER.SERVER_ERROR:\n {\n const { errorJSON } = obj;\n if (errorJSON) {\n const { message, stack } = JSON.parse(errorJSON);\n const error = new Error(message);\n error.stack = stack;\n handleErrors([\n error\n ]);\n }\n return;\n }\n default:\n {\n if (customHmrEventHandler) {\n customHmrEventHandler(obj);\n break;\n }\n break;\n }\n }\n}\n// Is there a newer version of this code available?\nfunction isUpdateAvailable() {\n /* globals __webpack_hash__ */ // __webpack_hash__ is the hash of the current compilation.\n // It's a global variable injected by Webpack.\n return mostRecentCompilationHash !== __webpack_require__.h();\n}\n// Webpack disallows updates in other states.\nfunction canApplyUpdates() {\n // @ts-expect-error TODO: module.hot exists but type needs to be added. Can't use `as any` here as webpack parses for `module.hot` calls.\n return module.hot.status() === \"idle\";\n}\nfunction afterApplyUpdates(fn) {\n if (canApplyUpdates()) {\n fn();\n } else {\n function handler(status) {\n if (status === \"idle\") {\n // @ts-expect-error TODO: module.hot exists but type needs to be added. Can't use `as any` here as webpack parses for `module.hot` calls.\n module.hot.removeStatusHandler(handler);\n fn();\n }\n }\n // @ts-expect-error TODO: module.hot exists but type needs to be added. Can't use `as any` here as webpack parses for `module.hot` calls.\n module.hot.addStatusHandler(handler);\n }\n}\n// Attempt to update code on the fly, fall back to a hard reload.\nfunction tryApplyUpdates(onBeforeHotUpdate, onHotUpdateSuccess) {\n // @ts-expect-error TODO: module.hot exists but type needs to be added. Can't use `as any` here as webpack parses for `module.hot` calls.\n if (false) {}\n if (!isUpdateAvailable() || !canApplyUpdates()) {\n (0, _client.onBuildOk)();\n return;\n }\n function handleApplyUpdates(err, updatedModules) {\n if (err || hadRuntimeError || !updatedModules) {\n if (err) {\n console.warn(\"[Fast Refresh] performing full reload\\n\\n\" + \"Fast Refresh will perform a full reload when you edit a file that's imported by modules outside of the React rendering tree.\\n\" + \"You might have a file which exports a React component but also exports a value that is imported by a non-React component file.\\n\" + \"Consider migrating the non-React component export to a separate file and importing it into both files.\\n\\n\" + \"It is also possible the parent component of the component you edited is a class component, which disables Fast Refresh.\\n\" + \"Fast Refresh requires at least one parent function component in your React tree.\");\n } else if (hadRuntimeError) {\n console.warn(\"[Fast Refresh] performing full reload because your application had an unrecoverable error\");\n }\n performFullReload(err);\n return;\n }\n if (typeof onHotUpdateSuccess === \"function\") {\n // Maybe we want to do something.\n onHotUpdateSuccess(updatedModules);\n }\n if (isUpdateAvailable()) {\n // While we were updating, there was a new update! Do it again.\n // However, this time, don't trigger a pending refresh state.\n tryApplyUpdates(updatedModules.length > 0 ? undefined : onBeforeHotUpdate, updatedModules.length > 0 ? _client.onBuildOk : onHotUpdateSuccess);\n } else {\n (0, _client.onBuildOk)();\n if (false) {}\n }\n }\n // https://webpack.js.org/api/hot-module-replacement/#check\n // @ts-expect-error TODO: module.hot exists but type needs to be added. Can't use `as any` here as webpack parses for `module.hot` calls.\n module.hot.check(/* autoApply */ false).then((updatedModules)=>{\n if (!updatedModules) {\n return null;\n }\n if (typeof onBeforeHotUpdate === \"function\") {\n onBeforeHotUpdate(updatedModules);\n }\n // @ts-expect-error TODO: module.hot exists but type needs to be added. Can't use `as any` here as webpack parses for `module.hot` calls.\n return module.hot.apply();\n }).then((updatedModules)=>{\n handleApplyUpdates(null, updatedModules);\n }, (err)=>{\n handleApplyUpdates(err, null);\n });\n}\nfunction performFullReload(err) {\n const stackTrace = err && (err.stack && err.stack.split(\"\\n\").slice(0, 5).join(\"\\n\") || err.message || err + \"\");\n (0, _websocket.sendMessage)(JSON.stringify({\n event: \"client-full-reload\",\n stackTrace,\n hadRuntimeError: !!hadRuntimeError\n }));\n window.location.reload();\n}\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=hot-dev-client.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9kZXYvZXJyb3Itb3ZlcmxheS9ob3QtZGV2LWNsaWVudC5qcyIsIm1hcHBpbmdzIjoiQUFBQSx1RUFBdUU7QUFDdkUsMERBQTBELEdBQUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FzQjVELEdBQUcsOEVBQThFO0FBQ2xGLHFCQUFxQjtBQUNyQiwyR0FBMkc7QUFDOUY7QUFDYkEsOENBQTZDO0lBQ3pDRyxPQUFPO0FBQ1gsQ0FBQyxFQUFDO0FBQ0ZILDJDQUEwQztJQUN0Q0ksWUFBWTtJQUNaQyxLQUFLO1FBQ0QsT0FBT0M7SUFDWDtBQUNKLENBQUMsRUFBQztBQUNGLE1BQU1DLDJCQUEyQkMsbUJBQU9BLENBQUMsNEdBQXlDO0FBQ2xGLE1BQU1DLFVBQVVELG1CQUFPQSxDQUFDLHdJQUF3RDtBQUNoRixNQUFNRSxhQUFhLFdBQVcsR0FBR0gseUJBQXlCSSxDQUFDLENBQUNILG1CQUFPQSxDQUFDLDRGQUErQjtBQUNuRyxNQUFNSSxhQUFhSixtQkFBT0EsQ0FBQyxtRkFBYTtBQUN4QyxNQUFNSyx5QkFBeUIsV0FBVyxHQUFHTix5QkFBeUJJLENBQUMsQ0FBQ0gsbUJBQU9BLENBQUMsK0dBQTJCO0FBQzNHLE1BQU1NLG9CQUFvQk4sbUJBQU9BLENBQUMseUdBQXdDO0FBQzFFTyxPQUFPQyxpQkFBaUIsR0FBR0MsS0FBS0MsS0FBSyxDQUFDRCxLQUFLRSxNQUFNLEtBQUssTUFBTUMsS0FBS0MsR0FBRztBQUNwRSxJQUFJQyxrQkFBa0I7QUFDdEIsSUFBSUM7QUFDSixJQUFJQyxPQUFPO0FBQ1gsU0FBU2xCLFFBQVFtQixJQUFJO0lBQ2pCRCxPQUFPQztJQUNOLElBQUdoQixRQUFRaUIsUUFBUTtJQUNuQixJQUFHZCxXQUFXZSxrQkFBa0IsRUFBRSxDQUFDQztRQUNoQyxJQUFJLENBQUUsYUFBWUEsT0FBTSxHQUFJO1lBQ3hCO1FBQ0o7UUFDQSxJQUFJO1lBQ0FDLGVBQWVEO1FBQ25CLEVBQUUsT0FBT0UsS0FB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QUssQ0FBQyxHQUFHLEdBQUdDLElBQUksQ0FBQyxTQUFTcEcsSUFBSThFLE9BQU8sSUFBSTlFLE1BQU0sRUFBQztJQUM3RyxJQUFHbEIsV0FBV2lFLFdBQVcsRUFBRUMsS0FBS0MsU0FBUyxDQUFDO1FBQ3ZDQyxPQUFPO1FBQ1ArQztRQUNBekcsaUJBQWlCLENBQUMsQ0FBQ0E7SUFDdkI7SUFDQVAsT0FBT3FFLFFBQVEsQ0FBQ3FCLE1BQU07QUFDMUI7QUFFQSxJQUFJLENBQUMsT0FBT3ZHLFFBQVFzRCxPQUFPLEtBQUssY0FBZSxPQUFPdEQsUUFBUXNELE9BQU8sS0FBSyxZQUFZdEQsUUFBUXNELE9BQU8sS0FBSyxJQUFJLEtBQU0sT0FBT3RELFFBQVFzRCxPQUFPLENBQUMyRSxVQUFVLEtBQUssYUFBYTtJQUNyS25JLE9BQU9DLGNBQWMsQ0FBQ0MsUUFBUXNELE9BQU8sRUFBRSxjQUFjO1FBQUVyRCxPQUFPO0lBQUs7SUFDbkVILE9BQU9vSSxNQUFNLENBQUNsSSxRQUFRc0QsT0FBTyxFQUFFdEQ7SUFDL0IrRyxPQUFPL0csT0FBTyxHQUFHQSxRQUFRc0QsT0FBTztBQUNsQyxFQUVBLDBDQUEwQyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9kZXYvZXJyb3Itb3ZlcmxheS9ob3QtZGV2LWNsaWVudC5qcz8xNjAwIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFRPRE86IFJlbW92ZSB1c2Ugb2YgYGFueWAgdHlwZS4gRml4IG5vLXVzZS1iZWZvcmUtZGVmaW5lIHZpb2xhdGlvbnMuXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdXNlLWJlZm9yZS1kZWZpbmUgKi8gLyoqXG4gKiBNSVQgTGljZW5zZVxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbiAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbiAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAqXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGxcbiAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4gKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRVxuICogU09GVFdBUkUuXG4gKi8gLy8gVGhpcyBmaWxlIGlzIGEgbW9kaWZpZWQgdmVyc2lvbiBvZiB0aGUgQ3JlYXRlIFJlYWN0IEFwcCBITVIgZGV2IGNsaWVudCB0aGF0XG4vLyBjYW4gYmUgZm91bmQgaGVyZTpcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9jcmVhdGUtcmVhY3QtYXBwL2Jsb2IvdjMuNC4xL3BhY2thZ2VzL3JlYWN0LWRldi11dGlscy93ZWJwYWNrSG90RGV2Q2xpZW50LmpzXG5cInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImRlZmF1bHRcIiwge1xuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGNvbm5lY3Q7XG4gICAgfVxufSk7XG5jb25zdCBfaW50ZXJvcF9yZXF1aXJlX2RlZmF1bHQgPSByZXF1aXJlKFwiQHN3Yy9oZWxwZXJzL18vX2ludGVyb3BfcmVxdWlyZV9kZWZhdWx0XCIpO1xuY29uc3QgX2NsaWVudCA9IHJlcXVpcmUoXCJuZXh0L2Rpc3QvY29tcGlsZWQvQG5leHQvcmVhY3QtZGV2LW92ZXJsYXkvZGlzdC9jbGllbnRcIik7XG5jb25zdCBfc3RyaXBhbnNpID0gLyojX19QVVJFX18qLyBfaW50ZXJvcF9yZXF1aXJlX2RlZmF1bHQuXyhyZXF1aXJlKFwibmV4dC9kaXN0L2NvbXBpbGVkL3N0cmlwLWFuc2lcIikpO1xuY29uc3QgX3dlYnNvY2tldCA9IHJlcXVpcmUoXCIuL3dlYnNvY2tldFwiKTtcbmNvbnN0IF9mb3JtYXR3ZWJwYWNrbWVzc2FnZXMgPSAvKiNfX1BVUkVfXyovIF9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdC5fKHJlcXVpcmUoXCIuL2Zvcm1hdC13ZWJwYWNrLW1lc3NhZ2VzXCIpKTtcbmNvbnN0IF9ob3RyZWxvYWRlcnR5cGVzID0gcmVxdWlyZShcIi4uLy4uLy4uL3NlcnZlci9kZXYvaG90LXJlbG9hZGVyLXR5cGVzXCIpO1xud2luZG93Ll9fbmV4dERldkNsaWVudElkID0gTWF0aC5yb3VuZChNYXRoLnJhbmRvbSgpICogMTAwICsgRGF0ZS5ub3coKSk7XG5sZXQgaGFkUnVudGltZUVycm9yID0gZmFsc2U7XG5sZXQgY3VzdG9tSG1yRXZlbnRIYW5kbGVyO1xubGV0IE1PREUgPSBcIndlYnBhY2tcIjtcbmZ1bmN0aW9uIGNvbm5lY3QobW9kZSkge1xuICAgIE1PREUgPSBtb2RlO1xuICAgICgwLCBfY2xpZW50LnJlZ2lzdGVyKSgpO1xuICAgICgwLCBfd2Vic29ja2V0LmFkZE1lc3NhZ2VMaXN0ZW5lcikoKHBheWxvYWQpPT57XG4gICAgICAgIGlmICghKFwiYWN0aW9uXCIgaW4gcGF5bG9hZCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcHJvY2Vzc01lc3NhZ2UocGF5bG9hZCk7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgdmFyIF9lcnJfc3RhY2s7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oXCJbSE1SXSBJbnZhbGlkIG1lc3NhZ2U6IFwiICsgcGF5bG9hZCArIFwiXFxuXCIgKyAoKF9lcnJfc3RhY2sgPSBlcnIgPT0gbnVsbCA/IHZvaWQgMCA6IGVyci5zdGFjaykgIT0gbnVsbCA/IF9lcnJfc3RhY2sgOiBcIlwiKSk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4ge1xuICAgICAgICBzdWJzY3JpYmVUb0htckV2ZW50IChoYW5kbGVyKSB7XG4gICAgICAgICAgICBjdXN0b21IbXJFdmVudEhhbmRsZXIgPSBoYW5kbGVyO1xuICAgICAgICB9LFxuICAgICAgICBvblVucmVjb3ZlcmFibGVFcnJvciAoKSB7XG4gICAgICAgICAgICBoYWRSdW50aW1lRXJyb3IgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfTtcbn1cbi8vIFJlbWVtYmVyIHNvbWUgc3RhdGUgcmVsYXRlZCB0byBob3QgbW9kdWxlIHJlcGxhY2VtZW50LlxudmFyIGlzRmlyc3RDb21waWxhdGlvbiA9IHRydWU7XG52YXIgbW9zdFJlY2VudENvbXBpbGF0aW9uSGFzaCA9IG51bGw7XG52YXIgaGFzQ29tcGlsZUVycm9ycyA9IGZhbHNlO1xuZnVuY3Rpb24gY2xlYXJPdXRkYXRlZEVycm9ycygpIHtcbiAgICAvLyBDbGVhbiB1cCBvdXRkYXRlZCBjb21waWxlIGVycm9ycywgaWYgYW55LlxuICAgIGlmICh0eXBlb2YgY29uc29sZSAhPT0gXCJ1bmRlZmluZWRcIiAmJiB0eXBlb2YgY29uc29sZS5jbGVhciA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIGlmIChoYXNDb21waWxlRXJyb3JzKSB7XG4gICAgICAgICAgICBjb25zb2xlLmNsZWFyKCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4vLyBTdWNjZXNzZnVsIGNvbXBpbGF0aW9uLlxuZnVuY3Rpb24gaGFuZGxlU3VjY2VzcygpIHtcbiAgICBjbGVhck91dGRhdGVkRXJyb3JzKCk7XG4gICAgaWYgKE1PREUgPT09IFwid2VicGFja1wiKSB7XG4gICAgICAgIGNvbnN0IGlzSG90VXBkYXRlID0gIWlzRmlyc3RDb21waWxhdGlvbiB8fCB3aW5kb3cuX19ORVhUX0RBVEFfXy5wYWdlICE9PSBcIi9fZXJyb3JcIiAmJiBpc1VwZGF0ZUF2YWlsYWJsZSgpO1xuICAgICAgICBpc0ZpcnN0Q29tcGlsYXRpb24gPSBmYWxzZTtcbiAgICAgICAgaGFzQ29tcGlsZUVycm9ycyA9IGZhbHNlO1xuICAgICAgICAvLyBBdHRlbXB0IHRvIGFwcGx5IGhvdCB1cGRhdGVzIG9yIHJlbG9hZC5cbiAgICAgICAgaWYgKGlzSG90VXBkYXRlKSB7XG4gICAgICAgICAgICB0cnlBcHBseVVwZGF0ZXMob25CZWZvcmVGYXN0UmVmcmVzaCwgb25GYXN0UmVmcmVzaCk7XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICAoMCwgX2NsaWVudC5vbkJ1aWxkT2spKCk7XG4gICAgfVxufVxuLy8gQ29tcGlsYXRpb24gd2l0aCB3YXJuaW5ncyAoZS5nLiBFU0xpbnQpLlxuZnVuY3Rpb24gaGFuZGxlV2FybmluZ3Mod2FybmluZ3MpIHtcbiAgICBjbGVhck91dGRhdGVkRXJyb3JzKCk7XG4gICAgY29uc3QgaXNIb3RVcGRhdGUgPSAhaXNGaXJzdENvbXBpbGF0aW9uO1xuICAgIGlzRmlyc3RDb21waWxhdGlvbiA9IGZhbHNlO1xuICAgIGhhc0NvbXBpbGVFcnJvcnMgPSBmYWxzZTtcbiAgICBmdW5jdGlvbiBwcmludFdhcm5pbmdzKCkge1xuICAgICAgICAvLyBQcmludCB3YXJuaW5ncyB0byB0aGUgY29uc29sZS5cbiAgICAgICAgY29uc3QgZm9ybWF0dGVkID0gKDAsIF9mb3JtYXR3ZWJwYWNrbWVzc2FnZXMuZGVmYXVsdCkoe1xuICAgICAgICAgICAgd2FybmluZ3M6IHdhcm5pbmdzLFxuICAgICAgICAgICAgZXJyb3JzOiBbXVxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHR5cGVvZiBjb25zb2xlICE9PSBcInVuZGVmaW5lZFwiICYmIHR5cGVvZiBjb25zb2xlLndhcm4gPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgdmFyIF9mb3JtYXR0ZWRfd2FybmluZ3M7XG4gICAgICAgICAgICBmb3IobGV0IGkgPSAwOyBpIDwgKChfZm9ybWF0dGVkX3dhcm5pbmdzID0gZm9ybWF0dGVkLndhcm5pbmdzKSA9PSBudWxsID8gdm9pZCAwIDogX2Zvcm1hdHRlZF93YXJuaW5ncy5sZW5ndGgpOyBpKyspe1xuICAgICAgICAgICAgICAgIGlmIChpID09PSA1KSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihcIlRoZXJlIHdlcmUgbW9yZSB3YXJuaW5ncyBpbiBvdGhlciBmaWxlcy5cXG5cIiArIFwiWW91IGNhbiBmaW5kIGEgY29tcGxldGUgbG9nIGluIHRoZSB0ZXJtaW5hbC5cIik7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oKDAsIF9zdHJpcGFuc2kuZGVmYXVsdCkoZm9ybWF0dGVkLndhcm5pbmdzW2ldKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcHJpbnRXYXJuaW5ncygpO1xuICAgIC8vIEF0dGVtcHQgdG8gYXBwbHkgaG90IHVwZGF0ZXMgb3IgcmVsb2FkLlxuICAgIGlmIChpc0hvdFVwZGF0ZSkge1xuICAgICAgICB0cnlBcHBseVVwZGF0ZXMob25CZWZvcmVGYXN0UmVmcmVzaCwgb25GYXN0UmVmcmVzaCk7XG4gICAgfVxufVxuLy8gQ29tcGlsYXRpb24gd2l0aCBlcnJvcnMgKGUuZy4gc3ludGF4IGVycm9yIG9yIG1pc3NpbmcgbW9kdWxlcykuXG5mdW5jdGlvbiBoYW5kbGVFcnJvcnMoZXJyb3JzKSB7XG4gICAgY2xlYXJPdXRkYXRlZEVycm9ycygpO1xuICAgIGlzRmlyc3RDb21waWxhdGlvbiA9IGZhbHNlO1xuICAgIGhhc0NvbXBpbGVFcnJvcnMgPSB0cnVlO1xuICAgIC8vIFwiTWFzc2FnZVwiIHdlYnBhY2sgbWVzc2FnZXMuXG4gICAgdmFyIGZvcm1hdHRlZCA9ICgwLCBfZm9ybWF0d2VicGFja21lc3NhZ2VzLmRlZmF1bHQpKHtcbiAgICAgICAgZXJyb3JzOiBlcnJvcnMsXG4gICAgICAgIHdhcm5pbmdzOiBbXVxuICAgIH0pO1xuICAgIC8vIE9ubHkgc2hvdyB0aGUgZmlyc3QgZXJyb3IuXG4gICAgKDAsIF9jbGllbnQub25CdWlsZEVycm9yKShmb3JtYXR0ZWQuZXJyb3JzWzBdKTtcbiAgICAvLyBBbHNvIGxvZyB0aGVtIHRvIHRoZSBjb25zb2xlLlxuICAgIGlmICh0eXBlb2YgY29uc29sZSAhPT0gXCJ1bmRlZmluZWRcIiAmJiB0eXBlb2YgY29uc29sZS5lcnJvciA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBmb3JtYXR0ZWQuZXJyb3JzLmxlbmd0aDsgaSsrKXtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoKDAsIF9zdHJpcGFuc2kuZGVmYXVsdCkoZm9ybWF0dGVkLmVycm9yc1tpXSkpO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIERvIG5vdCBhdHRlbXB0IHRvIHJlbG9hZCBub3cuXG4gICAgLy8gV2Ugd2lsbCByZWxvYWQgb24gbmV4dCBzdWNjZXNzIGluc3RlYWQuXG4gICAgaWYgKHByb2Nlc3MuZW52Ll9fTkVYVF9URVNUX01PREUpIHtcbiAgICAgICAgaWYgKHNlbGYuX19ORVhUX0hNUl9DQikge1xuICAgICAgICAgICAgc2VsZi5fX05FWFRfSE1SX0NCKGZvcm1hdHRlZC5lcnJvcnNbMF0pO1xuICAgICAgICAgICAgc2VsZi5fX05FWFRfSE1SX0NCID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cbn1cbmxldCBzdGFydExhdGVuY3kgPSB1bmRlZmluZWQ7XG5mdW5jdGlvbiBvbkJlZm9yZUZhc3RSZWZyZXNoKHVwZGF0ZWRNb2R1bGVzKSB7XG4gICAgaWYgKHVwZGF0ZWRNb2R1bGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgLy8gT25seSB0cmlnZ2VyIGEgcGVuZGluZyBzdGF0ZSBpZiB3ZSBoYXZlIHVwZGF0ZXMgdG8gYXBwbHlcbiAgICAgICAgLy8gKGNmLiBvbkZhc3RSZWZyZXNoKVxuICAgICAgICAoMCwgX2NsaWVudC5vbkJlZm9yZVJlZnJlc2gpKCk7XG4gICAgfVxufVxuZnVuY3Rpb24gb25GYXN0UmVmcmVzaCh1cGRhdGVkTW9kdWxlcykge1xuICAgICgwLCBfY2xpZW50Lm9uQnVpbGRPaykoKTtcbiAgICBpZiAodXBkYXRlZE1vZHVsZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAvLyBPbmx5IGNvbXBsZXRlIGEgcGVuZGluZyBzdGF0ZSBpZiB3ZSBhcHBsaWVkIHVwZGF0ZXNcbiAgICAgICAgLy8gKGNmLiBvbkJlZm9yZUZhc3RSZWZyZXNoKVxuICAgICAgICAoMCwgX2NsaWVudC5vblJlZnJlc2gpKCk7XG4gICAgfVxuICAgIGlmIChzdGFydExhdGVuY3kpIHtcbiAgICAgICAgY29uc3QgZW5kTGF0ZW5jeSA9IERhdGUubm93KCk7XG4gICAgICAgIGNvbnN0IGxhdGVuY3kgPSBlbmRMYXRlbmN5IC0gc3RhcnRMYXRlbmN5O1xuICAgICAgICBjb25zb2xlLmxvZyhcIltGYXN0IFJlZnJlc2hdIGRvbmUgaW4gXCIgKyBsYXRlbmN5ICsgXCJtc1wiKTtcbiAgICAgICAgKDAsIF93ZWJzb2NrZXQuc2VuZE1lc3NhZ2UpKEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgIGV2ZW50OiBcImNsaWVudC1obXItbGF0ZW5jeVwiLFxuICAgICAgICAgICAgaWQ6IHdpbmRvdy5fX25leHREZXZDbGllbnRJZCxcbiAgICAgICAgICAgIHN0YXJ0VGltZTogc3RhcnRMYXRlbmN5LFxuICAgICAgICAgICAgZW5kVGltZTogZW5kTGF0ZW5jeSxcbiAgICAgICAgICAgIHBhZ2U6IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSxcbiAgICAgICAgICAgIHVwZGF0ZWRNb2R1bGVzLFxuICAgICAgICAgICAgLy8gV2hldGhlciB0aGUgcGFnZSAodGFiKSB3YXMgaGlkZGVuIGF0IHRoZSB0aW1lIHRoZSBldmVudCBvY2N1cnJlZC5cbiAgICAgICAgICAgIC8vIFRoaXMgY2FuIGltcGFjdCB0aGUgYWNjdXJhY3kgb2YgdGhlIGV2ZW50J3MgdGltaW5nLlxuICAgICAgICAgICAgaXNQYWdlSGlkZGVuOiBkb2N1bWVudC52aXNpYmlsaXR5U3RhdGUgPT09IFwiaGlkZGVuXCJcbiAgICAgICAgfSkpO1xuICAgICAgICBpZiAoc2VsZi5fX05FWFRfSE1SX0xBVEVOQ1lfQ0IpIHtcbiAgICAgICAgICAgIHNlbGYuX19ORVhUX0hNUl9MQVRFTkNZX0NCKGxhdGVuY3kpO1xuICAgICAgICB9XG4gICAgfVxufVxuLy8gVGhlcmUgaXMgYSBuZXdlciB2ZXJzaW9uIG9mIHRoZSBjb2RlIGF2YWlsYWJsZS5cbmZ1bmN0aW9uIGhhbmRsZUF2YWlsYWJsZUhhc2goaGFzaCkge1xuICAgIC8vIFVwZGF0ZSBsYXN0IGtub3duIGNvbXBpbGF0aW9uIGhhc2guXG4gICAgbW9zdFJlY2VudENvbXBpbGF0aW9uSGFzaCA9IGhhc2g7XG59XG4vLyBIYW5kbGUgbWVzc2FnZXMgZnJvbSB0aGUgc2VydmVyLlxuZnVuY3Rpb24gcHJvY2Vzc01lc3NhZ2Uob2JqKSB7XG4gICAgaWYgKCEoXCJhY3Rpb25cIiBpbiBvYmopKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgc3dpdGNoKG9iai5hY3Rpb24pe1xuICAgICAgICBjYXNlIF9ob3RyZWxvYWRlcnR5cGVzLkhNUl9BQ1RJT05TX1NFTlRfVE9fQlJPV1NFUi5CVUlMRElORzpcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBzdGFydExhdGVuY3kgPSBEYXRlLm5vdygpO1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiW0Zhc3QgUmVmcmVzaF0gcmVidWlsZGluZ1wiKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgY2FzZSBfaG90cmVsb2FkZXJ0eXBlcy5ITVJfQUNUSU9OU19TRU5UX1RPX0JST1dTRVIuQlVJTFQ6XG4gICAgICAgIGNhc2UgX2hvdHJlbG9hZGVydHlwZXMuSE1SX0FDVElPTlNfU0VOVF9UT19CUk9XU0VSLlNZTkM6XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaWYgKG9iai5oYXNoKSB7XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZUF2YWlsYWJsZUhhc2gob2JqLmhhc2gpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCB7IGVycm9ycywgd2FybmluZ3MgfSA9IG9iajtcbiAgICAgICAgICAgICAgICBjb25zdCBoYXNFcnJvcnMgPSBCb29sZWFuKGVycm9ycyAmJiBlcnJvcnMubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICBpZiAoaGFzRXJyb3JzKSB7XG4gICAgICAgICAgICAgICAgICAgICgwLCBfd2Vic29ja2V0LnNlbmRNZXNzYWdlKShKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgICAgICAgICBldmVudDogXCJjbGllbnQtZXJyb3JcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yQ291bnQ6IGVycm9ycy5sZW5ndGgsXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRJZDogd2luZG93Ll9fbmV4dERldkNsaWVudElkXG4gICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGhhbmRsZUVycm9ycyhlcnJvcnMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBoYXNXYXJuaW5ncyA9IEJvb2xlYW4od2FybmluZ3MgJiYgd2FybmluZ3MubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICBpZiAoaGFzV2FybmluZ3MpIHtcbiAgICAgICAgICAgICAgICAgICAgKDAsIF93ZWJzb2NrZXQuc2VuZE1lc3NhZ2UpKEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50OiBcImNsaWVudC13YXJuaW5nXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICB3YXJuaW5nQ291bnQ6IHdhcm5pbmdzLmxlbmd0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudElkOiB3aW5kb3cuX19uZXh0RGV2Q2xpZW50SWRcbiAgICAgICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlV2FybmluZ3Mod2FybmluZ3MpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAoMCwgX3dlYnNvY2tldC5zZW5kTWVzc2FnZSkoSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgICAgICBldmVudDogXCJjbGllbnQtc3VjY2Vzc1wiLFxuICAgICAgICAgICAgICAgICAgICBjbGllbnRJZDogd2luZG93Ll9fbmV4dERldkNsaWVudElkXG4gICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgIHJldHVybiBoYW5kbGVTdWNjZXNzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIGNhc2UgX2hvdHJlbG9hZGVydHlwZXMuSE1SX0FDVElPTlNfU0VOVF9UT19CUk9XU0VSLlNFUlZFUl9DT01QT05FTlRfQ0hBTkdFUzpcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICBjYXNlIF9ob3RyZWxvYWRlcnR5cGVzLkhNUl9BQ1RJT05TX1NFTlRfVE9fQlJPV1NFUi5TRVJWRVJfRVJST1I6XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBlcnJvckpTT04gfSA9IG9iajtcbiAgICAgICAgICAgICAgICBpZiAoZXJyb3JKU09OKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgbWVzc2FnZSwgc3RhY2sgfSA9IEpTT04ucGFyc2UoZXJyb3JKU09OKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IobWVzc2FnZSk7XG4gICAgICAgICAgICAgICAgICAgIGVycm9yLnN0YWNrID0gc3RhY2s7XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZUVycm9ycyhbXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvclxuICAgICAgICAgICAgICAgICAgICBdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlmIChjdXN0b21IbXJFdmVudEhhbmRsZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgY3VzdG9tSG1yRXZlbnRIYW5kbGVyKG9iaik7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICB9XG59XG4vLyBJcyB0aGVyZSBhIG5ld2VyIHZlcnNpb24gb2YgdGhpcyBjb2RlIGF2YWlsYWJsZT9cbmZ1bmN0aW9uIGlzVXBkYXRlQXZhaWxhYmxlKCkge1xuICAgIC8qIGdsb2JhbHMgX193ZWJwYWNrX2hhc2hfXyAqLyAvLyBfX3dlYnBhY2tfaGFzaF9fIGlzIHRoZSBoYXNoIG9mIHRoZSBjdXJyZW50IGNvbXBpbGF0aW9uLlxuICAgIC8vIEl0J3MgYSBnbG9iYWwgdmFyaWFibGUgaW5qZWN0ZWQgYnkgV2VicGFjay5cbiAgICByZXR1cm4gbW9zdFJlY2VudENvbXBpbGF0aW9uSGFzaCAhPT0gX193ZWJwYWNrX2hhc2hfXztcbn1cbi8vIFdlYnBhY2sgZGlzYWxsb3dzIHVwZGF0ZXMgaW4gb3RoZXIgc3RhdGVzLlxuZnVuY3Rpb24gY2FuQXBwbHlVcGRhdGVzKCkge1xuICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgVE9ETzogbW9kdWxlLmhvdCBleGlzdHMgYnV0IHR5cGUgbmVlZHMgdG8gYmUgYWRkZWQuIENhbid0IHVzZSBgYXMgYW55YCBoZXJlIGFzIHdlYnBhY2sgcGFyc2VzIGZvciBgbW9kdWxlLmhvdGAgY2FsbHMuXG4gICAgcmV0dXJuIG1vZHVsZS5ob3Quc3RhdHVzKCkgPT09IFwiaWRsZVwiO1xufVxuZnVuY3Rpb24gYWZ0ZXJBcHBseVVwZGF0ZXMoZm4pIHtcbiAgICBpZiAoY2FuQXBwbHlVcGRhdGVzKCkpIHtcbiAgICAgICAgZm4oKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBmdW5jdGlvbiBoYW5kbGVyKHN0YXR1cykge1xuICAgICAgICAgICAgaWYgKHN0YXR1cyA9PT0gXCJpZGxlXCIpIHtcbiAgICAgICAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIFRPRE86IG1vZHVsZS5ob3QgZXhpc3RzIGJ1dCB0eXBlIG5lZWRzIHRvIGJlIGFkZGVkLiBDYW4ndCB1c2UgYGFzIGFueWAgaGVyZSBhcyB3ZWJwYWNrIHBhcnNlcyBmb3IgYG1vZHVsZS5ob3RgIGNhbGxzLlxuICAgICAgICAgICAgICAgIG1vZHVsZS5ob3QucmVtb3ZlU3RhdHVzSGFuZGxlcihoYW5kbGVyKTtcbiAgICAgICAgICAgICAgICBmbigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgVE9ETzogbW9kdWxlLmhvdCBleGlzdHMgYnV0IHR5cGUgbmVlZHMgdG8gYmUgYWRkZWQuIENhbid0IHVzZSBgYXMgYW55YCBoZXJlIGFzIHdlYnBhY2sgcGFyc2VzIGZvciBgbW9kdWxlLmhvdGAgY2FsbHMuXG4gICAgICAgIG1vZHVsZS5ob3QuYWRkU3RhdHVzSGFuZGxlcihoYW5kbGVyKTtcbiAgICB9XG59XG4vLyBBdHRlbXB0IHRvIHVwZGF0ZSBjb2RlIG9uIHRoZSBmbHksIGZhbGwgYmFjayB0byBhIGhhcmQgcmVsb2FkLlxuZnVuY3Rpb24gdHJ5QXBwbHlVcGRhdGVzKG9uQmVmb3JlSG90VXBkYXRlLCBvbkhvdFVwZGF0ZVN1Y2Nlc3MpIHtcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yIFRPRE86IG1vZHVsZS5ob3QgZXhpc3RzIGJ1dCB0eXBlIG5lZWRzIHRvIGJlIGFkZGVkLiBDYW4ndCB1c2UgYGFzIGFueWAgaGVyZSBhcyB3ZWJwYWNrIHBhcnNlcyBmb3IgYG1vZHVsZS5ob3RgIGNhbGxzLlxuICAgIGlmICghbW9kdWxlLmhvdCkge1xuICAgICAgICAvLyBIb3RNb2R1bGVSZXBsYWNlbWVudFBsdWdpbiBpcyBub3QgaW4gV2VicGFjayBjb25maWd1cmF0aW9uLlxuICAgICAgICBjb25zb2xlLmVycm9yKFwiSG90TW9kdWxlUmVwbGFjZW1lbnRQbHVnaW4gaXMgbm90IGluIFdlYnBhY2sgY29uZmlndXJhdGlvbi5cIik7XG4gICAgICAgIC8vIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoIWlzVXBkYXRlQXZhaWxhYmxlKCkgfHwgIWNhbkFwcGx5VXBkYXRlcygpKSB7XG4gICAgICAgICgwLCBfY2xpZW50Lm9uQnVpbGRPaykoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBmdW5jdGlvbiBoYW5kbGVBcHBseVVwZGF0ZXMoZXJyLCB1cGRhdGVkTW9kdWxlcykge1xuICAgICAgICBpZiAoZXJyIHx8IGhhZFJ1bnRpbWVFcnJvciB8fCAhdXBkYXRlZE1vZHVsZXMpIHtcbiAgICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oXCJbRmFzdCBSZWZyZXNoXSBwZXJmb3JtaW5nIGZ1bGwgcmVsb2FkXFxuXFxuXCIgKyBcIkZhc3QgUmVmcmVzaCB3aWxsIHBlcmZvcm0gYSBmdWxsIHJlbG9hZCB3aGVuIHlvdSBlZGl0IGEgZmlsZSB0aGF0J3MgaW1wb3J0ZWQgYnkgbW9kdWxlcyBvdXRzaWRlIG9mIHRoZSBSZWFjdCByZW5kZXJpbmcgdHJlZS5cXG5cIiArIFwiWW91IG1pZ2h0IGhhdmUgYSBmaWxlIHdoaWNoIGV4cG9ydHMgYSBSZWFjdCBjb21wb25lbnQgYnV0IGFsc28gZXhwb3J0cyBhIHZhbHVlIHRoYXQgaXMgaW1wb3J0ZWQgYnkgYSBub24tUmVhY3QgY29tcG9uZW50IGZpbGUuXFxuXCIgKyBcIkNvbnNpZGVyIG1pZ3JhdGluZyB0aGUgbm9uLVJlYWN0IGNvbXBvbmVudCBleHBvcnQgdG8gYSBzZXBhcmF0ZSBmaWxlIGFuZCBpbXBvcnRpbmcgaXQgaW50byBib3RoIGZpbGVzLlxcblxcblwiICsgXCJJdCBpcyBhbHNvIHBvc3NpYmxlIHRoZSBwYXJlbnQgY29tcG9uZW50IG9mIHRoZSBjb21wb25lbnQgeW91IGVkaXRlZCBpcyBhIGNsYXNzIGNvbXBvbmVudCwgd2hpY2ggZGlzYWJsZXMgRmFzdCBSZWZyZXNoLlxcblwiICsgXCJGYXN0IFJlZnJlc2ggcmVxdWlyZXMgYXQgbGVhc3Qgb25lIHBhcmVudCBmdW5jdGlvbiBjb21wb25lbnQgaW4geW91ciBSZWFjdCB0cmVlLlwiKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaGFkUnVudGltZUVycm9yKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKFwiW0Zhc3QgUmVmcmVzaF0gcGVyZm9ybWluZyBmdWxsIHJlbG9hZCBiZWNhdXNlIHlvdXIgYXBwbGljYXRpb24gaGFkIGFuIHVucmVjb3ZlcmFibGUgZXJyb3JcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwZXJmb3JtRnVsbFJlbG9hZChlcnIpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2Ygb25Ib3RVcGRhdGVTdWNjZXNzID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgIC8vIE1heWJlIHdlIHdhbnQgdG8gZG8gc29tZXRoaW5nLlxuICAgICAgICAgICAgb25Ib3RVcGRhdGVTdWNjZXNzKHVwZGF0ZWRNb2R1bGVzKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNVcGRhdGVBdmFpbGFibGUoKSkge1xuICAgICAgICAgICAgLy8gV2hpbGUgd2Ugd2VyZSB1cGRhdGluZywgdGhlcmUgd2FzIGEgbmV3IHVwZGF0ZSEgRG8gaXQgYWdhaW4uXG4gICAgICAgICAgICAvLyBIb3dldmVyLCB0aGlzIHRpbWUsIGRvbid0IHRyaWdnZXIgYSBwZW5kaW5nIHJlZnJlc2ggc3RhdGUuXG4gICAgICAgICAgICB0cnlBcHBseVVwZGF0ZXModXBkYXRlZE1vZHVsZXMubGVuZ3RoID4gMCA/IHVuZGVmaW5lZCA6IG9uQmVmb3JlSG90VXBkYXRlLCB1cGRhdGVkTW9kdWxlcy5sZW5ndGggPiAwID8gX2NsaWVudC5vbkJ1aWxkT2sgOiBvbkhvdFVwZGF0ZVN1Y2Nlc3MpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgKDAsIF9jbGllbnQub25CdWlsZE9rKSgpO1xuICAgICAgICAgICAgaWYgKHByb2Nlc3MuZW52Ll9fTkVYVF9URVNUX01PREUpIHtcbiAgICAgICAgICAgICAgICBhZnRlckFwcGx5VXBkYXRlcygoKT0+e1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZi5fX05FWFRfSE1SX0NCKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9fTkVYVF9ITVJfQ0IoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX19ORVhUX0hNUl9DQiA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBodHRwczovL3dlYnBhY2suanMub3JnL2FwaS9ob3QtbW9kdWxlLXJlcGxhY2VtZW50LyNjaGVja1xuICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgVE9ETzogbW9kdWxlLmhvdCBleGlzdHMgYnV0IHR5cGUgbmVlZHMgdG8gYmUgYWRkZWQuIENhbid0IHVzZSBgYXMgYW55YCBoZXJlIGFzIHdlYnBhY2sgcGFyc2VzIGZvciBgbW9kdWxlLmhvdGAgY2FsbHMuXG4gICAgbW9kdWxlLmhvdC5jaGVjaygvKiBhdXRvQXBwbHkgKi8gZmFsc2UpLnRoZW4oKHVwZGF0ZWRNb2R1bGVzKT0+e1xuICAgICAgICBpZiAoIXVwZGF0ZWRNb2R1bGVzKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIG9uQmVmb3JlSG90VXBkYXRlID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgIG9uQmVmb3JlSG90VXBkYXRlKHVwZGF0ZWRNb2R1bGVzKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIFRPRE86IG1vZHVsZS5ob3QgZXhpc3RzIGJ1dCB0eXBlIG5lZWRzIHRvIGJlIGFkZGVkLiBDYW4ndCB1c2UgYGFzIGFueWAgaGVyZSBhcyB3ZWJwYWNrIHBhcnNlcyBmb3IgYG1vZHVsZS5ob3RgIGNhbGxzLlxuICAgICAgICByZXR1cm4gbW9kdWxlLmhvdC5hcHBseSgpO1xuICAgIH0pLnRoZW4oKHVwZGF0ZWRNb2R1bGVzKT0+e1xuICAgICAgICBoYW5kbGVBcHBseVVwZGF0ZXMobnVsbCwgdXBkYXRlZE1vZHVsZXMpO1xuICAgIH0sIChlcnIpPT57XG4gICAgICAgIGhhbmRsZUFwcGx5VXBkYXRlcyhlcnIsIG51bGwpO1xuICAgIH0pO1xufVxuZnVuY3Rpb24gcGVyZm9ybUZ1bGxSZWxvYWQoZXJyKSB7XG4gICAgY29uc3Qgc3RhY2tUcmFjZSA9IGVyciAmJiAoZXJyLnN0YWNrICYmIGVyci5zdGFjay5zcGxpdChcIlxcblwiKS5zbGljZSgwLCA1KS5qb2luKFwiXFxuXCIpIHx8IGVyci5tZXNzYWdlIHx8IGVyciArIFwiXCIpO1xuICAgICgwLCBfd2Vic29ja2V0LnNlbmRNZXNzYWdlKShKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgIGV2ZW50OiBcImNsaWVudC1mdWxsLXJlbG9hZFwiLFxuICAgICAgICBzdGFja1RyYWNlLFxuICAgICAgICBoYWRSdW50aW1lRXJyb3I6ICEhaGFkUnVudGltZUVycm9yXG4gICAgfSkpO1xuICAgIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTtcbn1cblxuaWYgKCh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnZnVuY3Rpb24nIHx8ICh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnb2JqZWN0JyAmJiBleHBvcnRzLmRlZmF1bHQgIT09IG51bGwpKSAmJiB0eXBlb2YgZXhwb3J0cy5kZWZhdWx0Ll9fZXNNb2R1bGUgPT09ICd1bmRlZmluZWQnKSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLmRlZmF1bHQsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiAgT2JqZWN0LmFzc2lnbihleHBvcnRzLmRlZmF1bHQsIGV4cG9ydHMpO1xuICBtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMuZGVmYXVsdDtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aG90LWRldi1jbGllbnQuanMubWFwIl0sIm5hbWVzIjpbIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZXhwb3J0cyIsInZhbHVlIiwiZW51bWVyYWJsZSIsImdldCIsImNvbm5lY3QiLCJfaW50ZXJvcF9yZXF1aXJlX2RlZmF1bHQiLCJyZXF1aXJlIiwiX2NsaWVudCIsIl9zdHJpcGFuc2kiLCJfIiwiX3dlYnNvY2tldCIsIl9mb3JtYXR3ZWJwYWNrbWVzc2FnZXMiLCJfaG90cmVsb2FkZXJ0eXBlcyIsIndpbmRvdyIsIl9fbmV4dERldkNsaWVudElkIiwiTWF0aCIsInJvdW5kIiwicmFuZG9tIiwiRGF0ZSIsIm5vdyIsImhhZFJ1bnRpbWVFcnJvciIsImN1c3RvbUhtckV2ZW50SGFuZGxlciIsIk1PREUiLCJtb2RlIiwicmVnaXN0ZXIiLCJhZGRNZXNzYWdlTGlzdGVuZXIiLCJwYXlsb2FkIiwicHJvY2Vzc01lc3NhZ2UiLCJlcnIiLCJfZXJyX3N0YWNrIiwiY29uc29sZSIsIndhcm4iLCJzdGFjayIsInN1YnNjcmliZVRvSG1yRXZlbnQiLCJoYW5kbGVyIiwib25VbnJlY292ZXJhYmxlRXJyb3IiLCJpc0ZpcnN0Q29tcGlsYXRpb24iLCJtb3N0UmVjZW50Q29tcGlsYXRpb25IYXNoIiwiaGFzQ29tcGlsZUVycm9ycyIsImNsZWFyT3V0ZGF0ZWRFcnJvcnMiLCJjbGVhciIsImhhbmRsZVN1Y2Nlc3MiLCJpc0hvdFVwZGF0ZSIsIl9fTkVYVF9EQVRBX18iLCJwYWdlIiwiaXNVcGRhdGVBdmFpbGFibGUiLCJ0cnlBcHBseVVwZGF0ZXMiLCJvbkJlZm9yZUZhc3RSZWZyZXNoIiwib25GYXN0UmVmcmVzaCIsIm9uQnVpbGRPayIsImhhbmRsZVdhcm5pbmdzIiwid2FybmluZ3MiLCJwcmludFdhcm5pbmdzIiwiZm9ybWF0dGVkIiwiZGVmYXVsdCIsImVycm9ycyIsIl9mb3JtYXR0ZWRfd2FybmluZ3MiLCJpIiwibGVuZ3RoIiwiaGFuZGxlRXJyb3JzIiwib25CdWlsZEVycm9yIiwiZXJyb3IiLCJwcm9jZXNzIiwiZW52IiwiX19ORVhUX1RFU1RfTU9ERSIsInNlbGYiLCJfX05FWFRfSE1SX0NCIiwic3RhcnRMYXRlbmN5IiwidW5kZWZpbmVkIiwidXBkYXRlZE1vZHVsZXMiLCJvbkJlZm9yZVJlZnJlc2giLCJvblJlZnJlc2giLCJlbmRMYXRlbmN5IiwibGF0ZW5jeSIsImxvZyIsInNlbmRNZXNzYWdlIiwiSlNPTiIsInN0cmluZ2lmeSIsImV2ZW50IiwiaWQiLCJzdGFydFRpbWUiLCJlbmRUaW1lIiwibG9jYXRpb24iLCJwYXRobmFtZSIsImlzUGFnZUhpZGRlbiIsImRvY3VtZW50IiwidmlzaWJpbGl0eVN0YXRlIiwiX19ORVhUX0hNUl9MQVRFTkNZX0NCIiwiaGFuZGxlQXZhaWxhYmxlSGFzaCIsImhhc2giLCJvYmoiLCJhY3Rpb24iLCJITVJfQUNUSU9OU19TRU5UX1RPX0JST1dTRVIiLCJCVUlMRElORyIsIkJVSUxUIiwiU1lOQyIsImhhc0Vycm9ycyIsIkJvb2xlYW4iLCJlcnJvckNvdW50IiwiY2xpZW50SWQiLCJoYXNXYXJuaW5ncyIsIndhcm5pbmdDb3VudCIsIlNFUlZFUl9DT01QT05FTlRfQ0hBTkdFUyIsInJlbG9hZCIsIlNFUlZFUl9FUlJPUiIsImVycm9ySlNPTiIsIm1lc3NhZ2UiLCJwYXJzZSIsIkVycm9yIiwiX193ZWJwYWNrX2hhc2hfXyIsImNhbkFwcGx5VXBkYXRlcyIsIm1vZHVsZSIsImhvdCIsInN0YXR1cyIsImFmdGVyQXBwbHlVcGRhdGVzIiwiZm4iLCJyZW1vdmVTdGF0dXNIYW5kbGVyIiwiYWRkU3RhdHVzSGFuZGxlciIsIm9uQmVmb3JlSG90VXBkYXRlIiwib25Ib3RVcGRhdGVTdWNjZXNzIiwiaGFuZGxlQXBwbHlVcGRhdGVzIiwicGVyZm9ybUZ1bGxSZWxvYWQiLCJjaGVjayIsInRoZW4iLCJhcHBseSIsInN0YWNrVHJhY2UiLCJzcGxpdCIsInNsaWNlIiwiam9pbiIsIl9fZXNNb2R1bGUiLCJhc3NpZ24iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/dev/error-overlay/hot-dev-client.js\n")); /***/ }), /***/ "./node_modules/next/dist/client/dev/error-overlay/websocket.js": /*!**********************************************************************!*\ !*** ./node_modules/next/dist/client/dev/error-overlay/websocket.js ***! \**********************************************************************/ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n addMessageListener: function() {\n return addMessageListener;\n },\n sendMessage: function() {\n return sendMessage;\n },\n connectHMR: function() {\n return connectHMR;\n }\n});\nlet source;\nconst eventCallbacks = [];\nfunction getSocketProtocol(assetPrefix) {\n let protocol = location.protocol;\n try {\n // assetPrefix is a url\n protocol = new URL(assetPrefix).protocol;\n } catch (e) {}\n return protocol === \"http:\" ? \"ws\" : \"wss\";\n}\nfunction addMessageListener(callback) {\n eventCallbacks.push(callback);\n}\nfunction sendMessage(data) {\n if (!source || source.readyState !== source.OPEN) return;\n return source.send(data);\n}\nlet reconnections = 0;\nfunction connectHMR(options) {\n function init() {\n if (source) source.close();\n function handleOnline() {\n reconnections = 0;\n window.console.log(\"[HMR] connected\");\n }\n function handleMessage(event) {\n // Coerce into HMR_ACTION_TYPES as that is the format.\n const msg = JSON.parse(event.data);\n for (const eventCallback of eventCallbacks){\n eventCallback(msg);\n }\n }\n let timer;\n function handleDisconnect() {\n source.onerror = null;\n source.onclose = null;\n source.close();\n reconnections++;\n // After 25 reconnects we'll want to reload the page as it indicates the dev server is no longer running.\n if (reconnections > 25) {\n window.location.reload();\n return;\n }\n clearTimeout(timer);\n // Try again after 5 seconds\n timer = setTimeout(init, reconnections > 5 ? 5000 : 1000);\n }\n const { hostname, port } = location;\n const protocol = getSocketProtocol(options.assetPrefix || \"\");\n const assetPrefix = options.assetPrefix.replace(/^\\/+/, \"\");\n let url = protocol + \"://\" + hostname + \":\" + port + (assetPrefix ? \"/\" + assetPrefix : \"\");\n if (assetPrefix.startsWith(\"http\")) {\n url = protocol + \"://\" + assetPrefix.split(\"://\")[1];\n }\n source = new window.WebSocket(\"\" + url + options.path);\n source.onopen = handleOnline;\n source.onerror = handleDisconnect;\n source.onclose = handleDisconnect;\n source.onmessage = handleMessage;\n }\n init();\n}\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=websocket.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9kZXYvZXJyb3Itb3ZlcmxheS93ZWJzb2NrZXQuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYkEsOENBQTZDO0lBQ3pDRyxPQUFPO0FBQ1gsQ0FBQyxFQUFDO0FBQ0YsS0FBTUMsQ0FBQUEsQ0FJTjtBQUNBLFNBQVNJLFFBQVFDLE1BQU0sRUFBRUMsR0FBRztJQUN4QixJQUFJLElBQUlDLFFBQVFELElBQUlWLE9BQU9DLGNBQWMsQ0FBQ1EsUUFBUUUsTUFBTTtRQUNwREMsWUFBWTtRQUNaQyxLQUFLSCxHQUFHLENBQUNDLEtBQUs7SUFDbEI7QUFDSjtBQUNBSCxRQUFRTixTQUFTO0lBQ2JHLG9CQUFvQjtRQUNoQixPQUFPQTtJQUNYO0lBQ0FDLGFBQWE7UUFDVCxPQUFPQTtJQUNYO0lBQ0FDLFlBQVk7UUFDUixPQUFPQTtJQUNYO0FBQ0o7QUFDQSxJQUFJTztBQUNKLE1BQU1DLGlCQUFpQixFQUFFO0FBQ3pCLFNBQVNDLGtCQUFrQkMsV0FBVztJQUNsQyxJQUFJQyxXQUFXQyxTQUFTRCxRQUFRO0lBQ2hDLElBQUk7UUFDQSx1QkFBdUI7UUFDdkJBLFdBQVcsSUFBSUUsSUFBSUgsYUFBYUMsUUFBUTtJQUM1QyxFQUFFLE9BQU9HLEdBQUcsQ0FBQztJQUNiLE9BQU9ILGFBQWEsVUFBVSxPQUFPO0FBQ3pDO0FBQ0EsU0FBU2IsbUJBQW1CaUIsUUFBUTtJQUNoQ1AsZUFBZVEsSUFBSSxDQUFDRDtBQUN4QjtBQUNBLFNBQVNoQixZQUFZa0IsSUFBSTtJQUNyQixJQUFJLENBQUNWLFVBQVVBLE9BQU9XLFVBQVUsS0FBS1gsT0FBT1ksSUFBSSxFQUFFO0lBQ2xELE9BQU9aLE9BQU9hLElBQUksQ0FBQ0g7QUFDdkI7QUFDQSxJQUFJSSxnQkFBZ0I7QUFDcEIsU0FBU3JCLFdBQVdzQixPQUFPO0lBQ3ZCLFNBQVNDO1FBQ0wsSUFBSWhCLFFBQVFBLE9BQU9pQixLQUFLO1FBQ3hCLFNBQVNDO1lBQ0xKLGdCQUFnQjtZQUNoQkssT0FBT0MsT0FBTyxDQUFDQyxHQUFHLENBQUM7UUFDdkI7UUFDQSxTQUFTQyxjQUFjQyxLQUFLO1lBQ3hCLHNEQUFzRDtZQUN0RCxNQUFNQyxNQUFNQyxLQUFLQyxLQUFLLENBQUNILE1BQU1iLElBQUk7WUFDakMsS0FBSyxNQUFNaUIsaUJBQWlCMUIsZUFBZTtnQkFDdkMwQixjQUFjSDtZQUNsQjtRQUNKO1FBQ0EsSUFBSUk7UUFDSixTQUFTQztZQUNMN0IsT0FBTzhCLE9BQU8sR0FBRztZQUNqQjlCLE9BQU8rQixPQUFPLEdBQUc7WUFDakIvQixPQUFPaUIsS0FBSztZQUNaSDtZQUNBLHlHQUF5RztZQUN6RyxJQUFJQSxnQkFBZ0IsSUFBSTtnQkFDcEJLLE9BQU9kLFFBQVEsQ0FBQzJCLE1BQU07Z0JBQ3RCO1lBQ0o7WUFDQUMsYUFBYUw7WUFDYiw0QkFBNEI7WUFDNUJBLFFBQVFNLFdBQVdsQixNQUFNRixnQkFBZ0IsSUFBSSxPQUFPO1FBQ3hEO1FBQ0EsTUFBTSxFQUFFcUIsUUFBUSxFQUFFQyxJQUFJLEVBQUUsR0FBRy9CO1FBQzNCLE1BQU1ELFdBQVdGLGtCQUFrQmEsUUFBUVosV0FBVyxJQUFJO1FBQzFELE1BQU1BLGNBQWNZLFFBQVFaLFdBQVcsQ0FBQ2tDLE9BQU8sQ0FBQyxRQUFRO1FBQ3hELElBQUlDLE1BQU1sQyxXQUFXLFFBQVErQixXQUFXLE1BQU1DLE9BQVFqQyxDQUFBQSxjQUFjLE1BQU1BLGNBQWMsRUFBQztRQUN6RixJQUFJQSxZQUFZb0MsVUFBVSxDQUFDLFNBQVM7WUFDaENELE1BQU1sQyxXQUFXLFFBQVFELFlBQVlxQyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUU7UUFDeEQ7UUFDQXhDLFNBQVMsSUFBSW1CLE9BQU9zQixTQUFTLENBQUMsS0FBS0gsTUFBTXZCLFFBQVEyQixJQUFJO1FBQ3JEMUMsT0FBTzJDLE1BQU0sR0FBR3pCO1FBQ2hCbEIsT0FBTzhCLE9BQU8sR0FBR0Q7UUFDakI3QixPQUFPK0IsT0FBTyxHQUFHRjtRQUNqQjdCLE9BQU80QyxTQUFTLEdBQUd0QjtJQUN2QjtJQUNBTjtBQUNKO0FBRUEsSUFBSSxDQUFDLE9BQU81QixRQUFReUQsT0FBTyxLQUFLLGNBQWUsT0FBT3pELFFBQVF5RCxPQUFPLEtBQUssWUFBWXpELFFBQVF5RCxPQUFPLEtBQUssSUFBSSxLQUFNLE9BQU96RCxRQUFReUQsT0FBTyxDQUFDQyxVQUFVLEtBQUssYUFBYTtJQUNySzVELE9BQU9DLGNBQWMsQ0FBQ0MsUUFBUXlELE9BQU8sRUFBRSxjQUFjO1FBQUV4RCxPQUFPO0lBQUs7SUFDbkVILE9BQU82RCxNQUFNLENBQUMzRCxRQUFReUQsT0FBTyxFQUFFekQ7SUFDL0JFLE9BQU9GLE9BQU8sR0FBR0EsUUFBUXlELE9BQU87QUFDbEMsRUFFQSxxQ0FBcUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvZGV2L2Vycm9yLW92ZXJsYXkvd2Vic29ja2V0LmpzP2E5YmUiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG4wICYmIChtb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBhZGRNZXNzYWdlTGlzdGVuZXI6IG51bGwsXG4gICAgc2VuZE1lc3NhZ2U6IG51bGwsXG4gICAgY29ubmVjdEhNUjogbnVsbFxufSk7XG5mdW5jdGlvbiBfZXhwb3J0KHRhcmdldCwgYWxsKSB7XG4gICAgZm9yKHZhciBuYW1lIGluIGFsbClPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBuYW1lLCB7XG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGdldDogYWxsW25hbWVdXG4gICAgfSk7XG59XG5fZXhwb3J0KGV4cG9ydHMsIHtcbiAgICBhZGRNZXNzYWdlTGlzdGVuZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gYWRkTWVzc2FnZUxpc3RlbmVyO1xuICAgIH0sXG4gICAgc2VuZE1lc3NhZ2U6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gc2VuZE1lc3NhZ2U7XG4gICAgfSxcbiAgICBjb25uZWN0SE1SOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGNvbm5lY3RITVI7XG4gICAgfVxufSk7XG5sZXQgc291cmNlO1xuY29uc3QgZXZlbnRDYWxsYmFja3MgPSBbXTtcbmZ1bmN0aW9uIGdldFNvY2tldFByb3RvY29sKGFzc2V0UHJlZml4KSB7XG4gICAgbGV0IHByb3RvY29sID0gbG9jYXRpb24ucHJvdG9jb2w7XG4gICAgdHJ5IHtcbiAgICAgICAgLy8gYXNzZXRQcmVmaXggaXMgYSB1cmxcbiAgICAgICAgcHJvdG9jb2wgPSBuZXcgVVJMKGFzc2V0UHJlZml4KS5wcm90b2NvbDtcbiAgICB9IGNhdGNoIChlKSB7fVxuICAgIHJldHVybiBwcm90b2NvbCA9PT0gXCJodHRwOlwiID8gXCJ3c1wiIDogXCJ3c3NcIjtcbn1cbmZ1bmN0aW9uIGFkZE1lc3NhZ2VMaXN0ZW5lcihjYWxsYmFjaykge1xuICAgIGV2ZW50Q2FsbGJhY2tzLnB1c2goY2FsbGJhY2spO1xufVxuZnVuY3Rpb24gc2VuZE1lc3NhZ2UoZGF0YSkge1xuICAgIGlmICghc291cmNlIHx8IHNvdXJjZS5yZWFkeVN0YXRlICE9PSBzb3VyY2UuT1BFTikgcmV0dXJuO1xuICAgIHJldHVybiBzb3VyY2Uuc2VuZChkYXRhKTtcbn1cbmxldCByZWNvbm5lY3Rpb25zID0gMDtcbmZ1bmN0aW9uIGNvbm5lY3RITVIob3B0aW9ucykge1xuICAgIGZ1bmN0aW9uIGluaXQoKSB7XG4gICAgICAgIGlmIChzb3VyY2UpIHNvdXJjZS5jbG9zZSgpO1xuICAgICAgICBmdW5jdGlvbiBoYW5kbGVPbmxpbmUoKSB7XG4gICAgICAgICAgICByZWNvbm5lY3Rpb25zID0gMDtcbiAgICAgICAgICAgIHdpbmRvdy5jb25zb2xlLmxvZyhcIltITVJdIGNvbm5lY3RlZFwiKTtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBoYW5kbGVNZXNzYWdlKGV2ZW50KSB7XG4gICAgICAgICAgICAvLyBDb2VyY2UgaW50byBITVJfQUNUSU9OX1RZUEVTIGFzIHRoYXQgaXMgdGhlIGZvcm1hdC5cbiAgICAgICAgICAgIGNvbnN0IG1zZyA9IEpTT04ucGFyc2UoZXZlbnQuZGF0YSk7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGV2ZW50Q2FsbGJhY2sgb2YgZXZlbnRDYWxsYmFja3Mpe1xuICAgICAgICAgICAgICAgIGV2ZW50Q2FsbGJhY2sobXNnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBsZXQgdGltZXI7XG4gICAgICAgIGZ1bmN0aW9uIGhhbmRsZURpc2Nvbm5lY3QoKSB7XG4gICAgICAgICAgICBzb3VyY2Uub25lcnJvciA9IG51bGw7XG4gICAgICAgICAgICBzb3VyY2Uub25jbG9zZSA9IG51bGw7XG4gICAgICAgICAgICBzb3VyY2UuY2xvc2UoKTtcbiAgICAgICAgICAgIHJlY29ubmVjdGlvbnMrKztcbiAgICAgICAgICAgIC8vIEFmdGVyIDI1IHJlY29ubmVjdHMgd2UnbGwgd2FudCB0byByZWxvYWQgdGhlIHBhZ2UgYXMgaXQgaW5kaWNhdGVzIHRoZSBkZXYgc2VydmVyIGlzIG5vIGxvbmdlciBydW5uaW5nLlxuICAgICAgICAgICAgaWYgKHJlY29ubmVjdGlvbnMgPiAyNSkge1xuICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGltZXIpO1xuICAgICAgICAgICAgLy8gVHJ5IGFnYWluIGFmdGVyIDUgc2Vjb25kc1xuICAgICAgICAgICAgdGltZXIgPSBzZXRUaW1lb3V0KGluaXQsIHJlY29ubmVjdGlvbnMgPiA1ID8gNTAwMCA6IDEwMDApO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHsgaG9zdG5hbWUsIHBvcnQgfSA9IGxvY2F0aW9uO1xuICAgICAgICBjb25zdCBwcm90b2NvbCA9IGdldFNvY2tldFByb3RvY29sKG9wdGlvbnMuYXNzZXRQcmVmaXggfHwgXCJcIik7XG4gICAgICAgIGNvbnN0IGFzc2V0UHJlZml4ID0gb3B0aW9ucy5hc3NldFByZWZpeC5yZXBsYWNlKC9eXFwvKy8sIFwiXCIpO1xuICAgICAgICBsZXQgdXJsID0gcHJvdG9jb2wgKyBcIjovL1wiICsgaG9zdG5hbWUgKyBcIjpcIiArIHBvcnQgKyAoYXNzZXRQcmVmaXggPyBcIi9cIiArIGFzc2V0UHJlZml4IDogXCJcIik7XG4gICAgICAgIGlmIChhc3NldFByZWZpeC5zdGFydHNXaXRoKFwiaHR0cFwiKSkge1xuICAgICAgICAgICAgdXJsID0gcHJvdG9jb2wgKyBcIjovL1wiICsgYXNzZXRQcmVmaXguc3BsaXQoXCI6Ly9cIilbMV07XG4gICAgICAgIH1cbiAgICAgICAgc291cmNlID0gbmV3IHdpbmRvdy5XZWJTb2NrZXQoXCJcIiArIHVybCArIG9wdGlvbnMucGF0aCk7XG4gICAgICAgIHNvdXJjZS5vbm9wZW4gPSBoYW5kbGVPbmxpbmU7XG4gICAgICAgIHNvdXJjZS5vbmVycm9yID0gaGFuZGxlRGlzY29ubmVjdDtcbiAgICAgICAgc291cmNlLm9uY2xvc2UgPSBoYW5kbGVEaXNjb25uZWN0O1xuICAgICAgICBzb3VyY2Uub25tZXNzYWdlID0gaGFuZGxlTWVzc2FnZTtcbiAgICB9XG4gICAgaW5pdCgpO1xufVxuXG5pZiAoKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdmdW5jdGlvbicgfHwgKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdvYmplY3QnICYmIGV4cG9ydHMuZGVmYXVsdCAhPT0gbnVsbCkpICYmIHR5cGVvZiBleHBvcnRzLmRlZmF1bHQuX19lc01vZHVsZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMuZGVmYXVsdCwgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuICBPYmplY3QuYXNzaWduKGV4cG9ydHMuZGVmYXVsdCwgZXhwb3J0cyk7XG4gIG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cy5kZWZhdWx0O1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD13ZWJzb2NrZXQuanMubWFwIl0sIm5hbWVzIjpbIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZXhwb3J0cyIsInZhbHVlIiwibW9kdWxlIiwiYWRkTWVzc2FnZUxpc3RlbmVyIiwic2VuZE1lc3NhZ2UiLCJjb25uZWN0SE1SIiwiX2V4cG9ydCIsInRhcmdldCIsImFsbCIsIm5hbWUiLCJlbnVtZXJhYmxlIiwiZ2V0Iiwic291cmNlIiwiZXZlbnRDYWxsYmFja3MiLCJnZXRTb2NrZXRQcm90b2NvbCIsImFzc2V0UHJlZml4IiwicHJvdG9jb2wiLCJsb2NhdGlvbiIsIlVSTCIsImUiLCJjYWxsYmFjayIsInB1c2giLCJkYXRhIiwicmVhZHlTdGF0ZSIsIk9QRU4iLCJzZW5kIiwicmVjb25uZWN0aW9ucyIsIm9wdGlvbnMiLCJpbml0IiwiY2xvc2UiLCJoYW5kbGVPbmxpbmUiLCJ3aW5kb3ciLCJjb25zb2xlIiwibG9nIiwiaGFuZGxlTWVzc2FnZSIsImV2ZW50IiwibXNnIiwiSlNPTiIsInBhcnNlIiwiZXZlbnRDYWxsYmFjayIsInRpbWVyIiwiaGFuZGxlRGlzY29ubmVjdCIsIm9uZXJyb3IiLCJvbmNsb3NlIiwicmVsb2FkIiwiY2xlYXJUaW1lb3V0Iiwic2V0VGltZW91dCIsImhvc3RuYW1lIiwicG9ydCIsInJlcGxhY2UiLCJ1cmwiLCJzdGFydHNXaXRoIiwic3BsaXQiLCJXZWJTb2NrZXQiLCJwYXRoIiwib25vcGVuIiwib25tZXNzYWdlIiwiZGVmYXVsdCIsIl9fZXNNb2R1bGUiLCJhc3NpZ24iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/dev/error-overlay/websocket.js\n")); /***/ }), /***/ "./node_modules/next/dist/client/dev/fouc.js": /*!***************************************************!*\ !*** ./node_modules/next/dist/client/dev/fouc.js ***! \***************************************************/ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval(__webpack_require__.ts("// This wrapper function is used to safely select the best available function\n// to schedule removal of the no-FOUC styles workaround. requestAnimationFrame\n// is the ideal choice, but when used in iframes, there are no guarantees that\n// the callback will actually be called, which could stall the promise returned\n// from displayContent.\n//\n// See: https://www.vector-logic.com/blog/posts/on-request-animation-frame-and-embedded-iframes\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"displayContent\", ({\n enumerable: true,\n get: function() {\n return displayContent;\n }\n}));\nconst safeCallbackQueue = (callback)=>{\n if (window.requestAnimationFrame && window.self === window.top) {\n window.requestAnimationFrame(callback);\n } else {\n window.setTimeout(callback);\n }\n};\nfunction displayContent() {\n return new Promise((resolve)=>{\n safeCallbackQueue(function() {\n for(var x = document.querySelectorAll(\"[data-next-hide-fouc]\"), i = x.length; i--;){\n x[i].parentNode.removeChild(x[i]);\n }\n resolve();\n });\n });\n}\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=fouc.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9kZXYvZm91Yy5qcyIsIm1hcHBpbmdzIjoiQUFBQSw2RUFBNkU7QUFDN0UsOEVBQThFO0FBQzlFLDhFQUE4RTtBQUM5RSwrRUFBK0U7QUFDL0UsdUJBQXVCO0FBQ3ZCLEVBQUU7QUFDRiwrRkFBK0Y7QUFDbEY7QUFDYkEsOENBQTZDO0lBQ3pDRyxPQUFPO0FBQ1gsQ0FBQyxFQUFDO0FBQ0ZILGtEQUFpRDtJQUM3Q0ksWUFBWTtJQUNaQyxLQUFLO1FBQ0QsT0FBT0M7SUFDWDtBQUNKLENBQUMsRUFBQztBQUNGLE1BQU1DLG9CQUFvQixDQUFDQztJQUN2QixJQUFJQyxPQUFPQyxxQkFBcUIsSUFBSUQsT0FBT0UsSUFBSSxLQUFLRixPQUFPRyxHQUFHLEVBQUU7UUFDNURILE9BQU9DLHFCQUFxQixDQUFDRjtJQUNqQyxPQUFPO1FBQ0hDLE9BQU9JLFVBQVUsQ0FBQ0w7SUFDdEI7QUFDSjtBQUNBLFNBQVNGO0lBQ0wsT0FBTyxJQUFJUSxRQUFRLENBQUNDO1FBQ2hCUixrQkFBa0I7WUFDZCxJQUFJLElBQUlTLElBQUlDLFNBQVNDLGdCQUFnQixDQUFDLDBCQUEwQkMsSUFBSUgsRUFBRUksTUFBTSxFQUFFRCxLQUFLO2dCQUMvRUgsQ0FBQyxDQUFDRyxFQUFFLENBQUNFLFVBQVUsQ0FBQ0MsV0FBVyxDQUFDTixDQUFDLENBQUNHLEVBQUU7WUFDcEM7WUFDQUo7UUFDSjtJQUNKO0FBQ0o7QUFFQSxJQUFJLENBQUMsT0FBT2IsUUFBUXFCLE9BQU8sS0FBSyxjQUFlLE9BQU9yQixRQUFRcUIsT0FBTyxLQUFLLFlBQVlyQixRQUFRcUIsT0FBTyxLQUFLLElBQUksS0FBTSxPQUFPckIsUUFBUXFCLE9BQU8sQ0FBQ0MsVUFBVSxLQUFLLGFBQWE7SUFDckt4QixPQUFPQyxjQUFjLENBQUNDLFFBQVFxQixPQUFPLEVBQUUsY0FBYztRQUFFcEIsT0FBTztJQUFLO0lBQ25FSCxPQUFPeUIsTUFBTSxDQUFDdkIsUUFBUXFCLE9BQU8sRUFBRXJCO0lBQy9Cd0IsT0FBT3hCLE9BQU8sR0FBR0EsUUFBUXFCLE9BQU87QUFDbEMsRUFFQSxnQ0FBZ0MiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvZGV2L2ZvdWMuanM/MDA4NyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUaGlzIHdyYXBwZXIgZnVuY3Rpb24gaXMgdXNlZCB0byBzYWZlbHkgc2VsZWN0IHRoZSBiZXN0IGF2YWlsYWJsZSBmdW5jdGlvblxuLy8gdG8gc2NoZWR1bGUgcmVtb3ZhbCBvZiB0aGUgbm8tRk9VQyBzdHlsZXMgd29ya2Fyb3VuZC4gcmVxdWVzdEFuaW1hdGlvbkZyYW1lXG4vLyBpcyB0aGUgaWRlYWwgY2hvaWNlLCBidXQgd2hlbiB1c2VkIGluIGlmcmFtZXMsIHRoZXJlIGFyZSBubyBndWFyYW50ZWVzIHRoYXRcbi8vIHRoZSBjYWxsYmFjayB3aWxsIGFjdHVhbGx5IGJlIGNhbGxlZCwgd2hpY2ggY291bGQgc3RhbGwgdGhlIHByb21pc2UgcmV0dXJuZWRcbi8vIGZyb20gZGlzcGxheUNvbnRlbnQuXG4vL1xuLy8gU2VlOiBodHRwczovL3d3dy52ZWN0b3ItbG9naWMuY29tL2Jsb2cvcG9zdHMvb24tcmVxdWVzdC1hbmltYXRpb24tZnJhbWUtYW5kLWVtYmVkZGVkLWlmcmFtZXNcblwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiZGlzcGxheUNvbnRlbnRcIiwge1xuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGRpc3BsYXlDb250ZW50O1xuICAgIH1cbn0pO1xuY29uc3Qgc2FmZUNhbGxiYWNrUXVldWUgPSAoY2FsbGJhY2spPT57XG4gICAgaWYgKHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUgJiYgd2luZG93LnNlbGYgPT09IHdpbmRvdy50b3ApIHtcbiAgICAgICAgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZShjYWxsYmFjayk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgd2luZG93LnNldFRpbWVvdXQoY2FsbGJhY2spO1xuICAgIH1cbn07XG5mdW5jdGlvbiBkaXNwbGF5Q29udGVudCgpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpPT57XG4gICAgICAgIHNhZmVDYWxsYmFja1F1ZXVlKGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgZm9yKHZhciB4ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcIltkYXRhLW5leHQtaGlkZS1mb3VjXVwiKSwgaSA9IHgubGVuZ3RoOyBpLS07KXtcbiAgICAgICAgICAgICAgICB4W2ldLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoeFtpXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xufVxuXG5pZiAoKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdmdW5jdGlvbicgfHwgKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdvYmplY3QnICYmIGV4cG9ydHMuZGVmYXVsdCAhPT0gbnVsbCkpICYmIHR5cGVvZiBleHBvcnRzLmRlZmF1bHQuX19lc01vZHVsZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMuZGVmYXVsdCwgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuICBPYmplY3QuYXNzaWduKGV4cG9ydHMuZGVmYXVsdCwgZXhwb3J0cyk7XG4gIG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cy5kZWZhdWx0O1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1mb3VjLmpzLm1hcCJdLCJuYW1lcyI6WyJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImV4cG9ydHMiLCJ2YWx1ZSIsImVudW1lcmFibGUiLCJnZXQiLCJkaXNwbGF5Q29udGVudCIsInNhZmVDYWxsYmFja1F1ZXVlIiwiY2FsbGJhY2siLCJ3aW5kb3ciLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJzZWxmIiwidG9wIiwic2V0VGltZW91dCIsIlByb21pc2UiLCJyZXNvbHZlIiwieCIsImRvY3VtZW50IiwicXVlcnlTZWxlY3RvckFsbCIsImkiLCJsZW5ndGgiLCJwYXJlbnROb2RlIiwicmVtb3ZlQ2hpbGQiLCJkZWZhdWx0IiwiX19lc01vZHVsZSIsImFzc2lnbiIsIm1vZHVsZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/dev/fouc.js\n")); /***/ }), /***/ "./node_modules/next/dist/client/dev/hot-middleware-client.js": /*!********************************************************************!*\ !*** ./node_modules/next/dist/client/dev/hot-middleware-client.js ***! \********************************************************************/ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"default\", ({\n enumerable: true,\n get: function() {\n return _default;\n }\n}));\nconst _interop_require_default = __webpack_require__(/*! @swc/helpers/_/_interop_require_default */ \"./node_modules/@swc/helpers/esm/_interop_require_default.js\");\nconst _hotdevclient = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! ./error-overlay/hot-dev-client */ \"./node_modules/next/dist/client/dev/error-overlay/hot-dev-client.js\"));\nconst _websocket = __webpack_require__(/*! ./error-overlay/websocket */ \"./node_modules/next/dist/client/dev/error-overlay/websocket.js\");\nlet reloading = false;\nconst _default = (mode)=>{\n const devClient = (0, _hotdevclient.default)(mode);\n devClient.subscribeToHmrEvent((obj)=>{\n if (reloading) return;\n // if we're on an error/404 page, we can't reliably tell if the newly added/removed page\n // matches the current path. In that case, assume any added/removed entries should trigger a reload of the current page\n const isOnErrorPage = window.next.router.pathname === \"/404\" || window.next.router.pathname === \"/_error\";\n switch(obj.action){\n case \"reloadPage\":\n {\n (0, _websocket.sendMessage)(JSON.stringify({\n event: \"client-reload-page\",\n clientId: window.__nextDevClientId\n }));\n reloading = true;\n return window.location.reload();\n }\n case \"removedPage\":\n {\n const [page] = obj.data;\n if (page === window.next.router.pathname || isOnErrorPage) {\n (0, _websocket.sendMessage)(JSON.stringify({\n event: \"client-removed-page\",\n clientId: window.__nextDevClientId,\n page\n }));\n return window.location.reload();\n }\n return;\n }\n case \"addedPage\":\n {\n const [page] = obj.data;\n if (page === window.next.router.pathname && typeof window.next.router.components[page] === \"undefined\" || isOnErrorPage) {\n (0, _websocket.sendMessage)(JSON.stringify({\n event: \"client-added-page\",\n clientId: window.__nextDevClientId,\n page\n }));\n return window.location.reload();\n }\n return;\n }\n case \"serverError\":\n case \"devPagesManifestUpdate\":\n {\n return;\n }\n default:\n {\n throw new Error(\"Unexpected action \" + obj.action);\n }\n }\n });\n return devClient;\n};\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=hot-middleware-client.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9kZXYvaG90LW1pZGRsZXdhcmUtY2xpZW50LmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2JBLDhDQUE2QztJQUN6Q0csT0FBTztBQUNYLENBQUMsRUFBQztBQUNGSCwyQ0FBMEM7SUFDdENJLFlBQVk7SUFDWkMsS0FBSztRQUNELE9BQU9DO0lBQ1g7QUFDSixDQUFDLEVBQUM7QUFDRixNQUFNQywyQkFBMkJDLG1CQUFPQSxDQUFDLDRHQUF5QztBQUNsRixNQUFNQyxnQkFBZ0IsV0FBVyxHQUFHRix5QkFBeUJHLENBQUMsQ0FBQ0YsbUJBQU9BLENBQUMsMkdBQWdDO0FBQ3ZHLE1BQU1HLGFBQWFILG1CQUFPQSxDQUFDLGlHQUEyQjtBQUN0RCxJQUFJSSxZQUFZO0FBQ2hCLE1BQU1OLFdBQVcsQ0FBQ087SUFDZCxNQUFNQyxZQUFZLENBQUMsR0FBR0wsY0FBY00sT0FBTyxFQUFFRjtJQUM3Q0MsVUFBVUUsbUJBQW1CLENBQUMsQ0FBQ0M7UUFDM0IsSUFBSUwsV0FBVztRQUNmLHdGQUF3RjtRQUN4Rix1SEFBdUg7UUFDdkgsTUFBTU0sZ0JBQWdCQyxPQUFPQyxJQUFJLENBQUNDLE1BQU0sQ0FBQ0MsUUFBUSxLQUFLLFVBQVVILE9BQU9DLElBQUksQ0FBQ0MsTUFBTSxDQUFDQyxRQUFRLEtBQUs7UUFDaEcsT0FBT0wsSUFBSU0sTUFBTTtZQUNiLEtBQUs7Z0JBQ0Q7b0JBQ0ssSUFBR1osV0FBV2EsV0FBVyxFQUFFQyxLQUFLQyxTQUFTLENBQUM7d0JBQ3ZDQyxPQUFPO3dCQUNQQyxVQUFVVCxPQUFPVSxpQkFBaUI7b0JBQ3RDO29CQUNBakIsWUFBWTtvQkFDWixPQUFPTyxPQUFPVyxRQUFRLENBQUNDLE1BQU07Z0JBQ2pDO1lBQ0osS0FBSztnQkFDRDtvQkFDSSxNQUFNLENBQUNDLEtBQUssR0FBR2YsSUFBSWdCLElBQUk7b0JBQ3ZCLElBQUlELFNBQVNiLE9BQU9DLElBQUksQ0FBQ0MsTUFBTSxDQUFDQyxRQUFRLElBQUlKLGVBQWU7d0JBQ3RELElBQUdQLFdBQVdhLFdBQVcsRUFBRUMsS0FBS0MsU0FBUyxDQUFDOzRCQUN2Q0MsT0FBTzs0QkFDUEMsVUFBVVQsT0FBT1UsaUJBQWlCOzRCQUNsQ0c7d0JBQ0o7d0JBQ0EsT0FBT2IsT0FBT1csUUFBUSxDQUFDQyxNQUFNO29CQUNqQztvQkFDQTtnQkFDSjtZQUNKLEtBQUs7Z0JBQ0Q7b0JBQ0ksTUFBTSxDQUFDQyxLQUFLLEdBQUdmLElBQUlnQixJQUFJO29CQUN2QixJQUFJRCxTQUFTYixPQUFPQyxJQUFJLENBQUNDLE1BQU0sQ0FBQ0MsUUFBUSxJQUFJLE9BQU9ILE9BQU9DLElBQUksQ0FBQ0MsTUFBTSxDQUFDYSxVQUFVLENBQUNGLEtBQUssS0FBSyxlQUFlZCxlQUFlO3dCQUNwSCxJQUFHUCxXQUFXYSxXQUFXLEVBQUVDLEtBQUtDLFNBQVMsQ0FBQzs0QkFDdkNDLE9BQU87NEJBQ1BDLFVBQVVULE9BQU9VLGlCQUFpQjs0QkFDbENHO3dCQUNKO3dCQUNBLE9BQU9iLE9BQU9XLFFBQVEsQ0FBQ0MsTUFBTTtvQkFDakM7b0JBQ0E7Z0JBQ0o7WUFDSixLQUFLO1lBQ0wsS0FBSztnQkFDRDtvQkFDSTtnQkFDSjtZQUNKO2dCQUNJO29CQUNJLE1BQU0sSUFBSUksTUFBTSx1QkFBdUJsQixJQUFJTSxNQUFNO2dCQUNyRDtRQUNSO0lBQ0o7SUFDQSxPQUFPVDtBQUNYO0FBRUEsSUFBSSxDQUFDLE9BQU9aLFFBQVFhLE9BQU8sS0FBSyxjQUFlLE9BQU9iLFFBQVFhLE9BQU8sS0FBSyxZQUFZYixRQUFRYSxPQUFPLEtBQUssSUFBSSxLQUFNLE9BQU9iLFFBQVFhLE9BQU8sQ0FBQ3FCLFVBQVUsS0FBSyxhQUFhO0lBQ3JLcEMsT0FBT0MsY0FBYyxDQUFDQyxRQUFRYSxPQUFPLEVBQUUsY0FBYztRQUFFWixPQUFPO0lBQUs7SUFDbkVILE9BQU9xQyxNQUFNLENBQUNuQyxRQUFRYSxPQUFPLEVBQUViO0lBQy9Cb0MsT0FBT3BDLE9BQU8sR0FBR0EsUUFBUWEsT0FBTztBQUNsQyxFQUVBLGlEQUFpRCIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9kZXYvaG90LW1pZGRsZXdhcmUtY2xpZW50LmpzPzMxZDciXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJkZWZhdWx0XCIsIHtcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBfZGVmYXVsdDtcbiAgICB9XG59KTtcbmNvbnN0IF9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdCA9IHJlcXVpcmUoXCJAc3djL2hlbHBlcnMvXy9faW50ZXJvcF9yZXF1aXJlX2RlZmF1bHRcIik7XG5jb25zdCBfaG90ZGV2Y2xpZW50ID0gLyojX19QVVJFX18qLyBfaW50ZXJvcF9yZXF1aXJlX2RlZmF1bHQuXyhyZXF1aXJlKFwiLi9lcnJvci1vdmVybGF5L2hvdC1kZXYtY2xpZW50XCIpKTtcbmNvbnN0IF93ZWJzb2NrZXQgPSByZXF1aXJlKFwiLi9lcnJvci1vdmVybGF5L3dlYnNvY2tldFwiKTtcbmxldCByZWxvYWRpbmcgPSBmYWxzZTtcbmNvbnN0IF9kZWZhdWx0ID0gKG1vZGUpPT57XG4gICAgY29uc3QgZGV2Q2xpZW50ID0gKDAsIF9ob3RkZXZjbGllbnQuZGVmYXVsdCkobW9kZSk7XG4gICAgZGV2Q2xpZW50LnN1YnNjcmliZVRvSG1yRXZlbnQoKG9iaik9PntcbiAgICAgICAgaWYgKHJlbG9hZGluZykgcmV0dXJuO1xuICAgICAgICAvLyBpZiB3ZSdyZSBvbiBhbiBlcnJvci80MDQgcGFnZSwgd2UgY2FuJ3QgcmVsaWFibHkgdGVsbCBpZiB0aGUgbmV3bHkgYWRkZWQvcmVtb3ZlZCBwYWdlXG4gICAgICAgIC8vIG1hdGNoZXMgdGhlIGN1cnJlbnQgcGF0aC4gSW4gdGhhdCBjYXNlLCBhc3N1bWUgYW55IGFkZGVkL3JlbW92ZWQgZW50cmllcyBzaG91bGQgdHJpZ2dlciBhIHJlbG9hZCBvZiB0aGUgY3VycmVudCBwYWdlXG4gICAgICAgIGNvbnN0IGlzT25FcnJvclBhZ2UgPSB3aW5kb3cubmV4dC5yb3V0ZXIucGF0aG5hbWUgPT09IFwiLzQwNFwiIHx8IHdpbmRvdy5uZXh0LnJvdXRlci5wYXRobmFtZSA9PT0gXCIvX2Vycm9yXCI7XG4gICAgICAgIHN3aXRjaChvYmouYWN0aW9uKXtcbiAgICAgICAgICAgIGNhc2UgXCJyZWxvYWRQYWdlXCI6XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAoMCwgX3dlYnNvY2tldC5zZW5kTWVzc2FnZSkoSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQ6IFwiY2xpZW50LXJlbG9hZC1wYWdlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRJZDogd2luZG93Ll9fbmV4dERldkNsaWVudElkXG4gICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICAgICAgcmVsb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwicmVtb3ZlZFBhZ2VcIjpcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IFtwYWdlXSA9IG9iai5kYXRhO1xuICAgICAgICAgICAgICAgICAgICBpZiAocGFnZSA9PT0gd2luZG93Lm5leHQucm91dGVyLnBhdGhuYW1lIHx8IGlzT25FcnJvclBhZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICgwLCBfd2Vic29ja2V0LnNlbmRNZXNzYWdlKShKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQ6IFwiY2xpZW50LXJlbW92ZWQtcGFnZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudElkOiB3aW5kb3cuX19uZXh0RGV2Q2xpZW50SWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFnZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcImFkZGVkUGFnZVwiOlxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgW3BhZ2VdID0gb2JqLmRhdGE7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwYWdlID09PSB3aW5kb3cubmV4dC5yb3V0ZXIucGF0aG5hbWUgJiYgdHlwZW9mIHdpbmRvdy5uZXh0LnJvdXRlci5jb21wb25lbnRzW3BhZ2VdID09PSBcInVuZGVmaW5lZFwiIHx8IGlzT25FcnJvclBhZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICgwLCBfd2Vic29ja2V0LnNlbmRNZXNzYWdlKShKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQ6IFwiY2xpZW50LWFkZGVkLXBhZ2VcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRJZDogd2luZG93Ll9fbmV4dERldkNsaWVudElkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgXCJzZXJ2ZXJFcnJvclwiOlxuICAgICAgICAgICAgY2FzZSBcImRldlBhZ2VzTWFuaWZlc3RVcGRhdGVcIjpcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVW5leHBlY3RlZCBhY3Rpb24gXCIgKyBvYmouYWN0aW9uKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gZGV2Q2xpZW50O1xufTtcblxuaWYgKCh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnZnVuY3Rpb24nIHx8ICh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnb2JqZWN0JyAmJiBleHBvcnRzLmRlZmF1bHQgIT09IG51bGwpKSAmJiB0eXBlb2YgZXhwb3J0cy5kZWZhdWx0Ll9fZXNNb2R1bGUgPT09ICd1bmRlZmluZWQnKSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLmRlZmF1bHQsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiAgT2JqZWN0LmFzc2lnbihleHBvcnRzLmRlZmF1bHQsIGV4cG9ydHMpO1xuICBtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMuZGVmYXVsdDtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aG90LW1pZGRsZXdhcmUtY2xpZW50LmpzLm1hcCJdLCJuYW1lcyI6WyJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImV4cG9ydHMiLCJ2YWx1ZSIsImVudW1lcmFibGUiLCJnZXQiLCJfZGVmYXVsdCIsIl9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdCIsInJlcXVpcmUiLCJfaG90ZGV2Y2xpZW50IiwiXyIsIl93ZWJzb2NrZXQiLCJyZWxvYWRpbmciLCJtb2RlIiwiZGV2Q2xpZW50IiwiZGVmYXVsdCIsInN1YnNjcmliZVRvSG1yRXZlbnQiLCJvYmoiLCJpc09uRXJyb3JQYWdlIiwid2luZG93IiwibmV4dCIsInJvdXRlciIsInBhdGhuYW1lIiwiYWN0aW9uIiwic2VuZE1lc3NhZ2UiLCJKU09OIiwic3RyaW5naWZ5IiwiZXZlbnQiLCJjbGllbnRJZCIsIl9fbmV4dERldkNsaWVudElkIiwibG9jYXRpb24iLCJyZWxvYWQiLCJwYWdlIiwiZGF0YSIsImNvbXBvbmVudHMiLCJFcnJvciIsIl9fZXNNb2R1bGUiLCJhc3NpZ24iLCJtb2R1bGUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/dev/hot-middleware-client.js\n")); /***/ }), /***/ "./node_modules/next/dist/client/dev/on-demand-entries-client.js": /*!***********************************************************************!*\ !*** ./node_modules/next/dist/client/dev/on-demand-entries-client.js ***! \***********************************************************************/ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"default\", ({\n enumerable: true,\n get: function() {\n return _default;\n }\n}));\nconst _interop_require_default = __webpack_require__(/*! @swc/helpers/_/_interop_require_default */ \"./node_modules/@swc/helpers/esm/_interop_require_default.js\");\nconst _router = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! ../router */ \"./node_modules/next/dist/client/router.js\"));\nconst _websocket = __webpack_require__(/*! ./error-overlay/websocket */ \"./node_modules/next/dist/client/dev/error-overlay/websocket.js\");\nconst _default = async (page)=>{\n if (page) {\n // in AMP the router isn't initialized on the client and\n // client-transitions don't occur so ping initial page\n setInterval(()=>{\n (0, _websocket.sendMessage)(JSON.stringify({\n event: \"ping\",\n page\n }));\n }, 2500);\n } else {\n _router.default.ready(()=>{\n setInterval(()=>{\n // when notFound: true is returned we should use the notFoundPage\n // as the Router.pathname will point to the 404 page but we want\n // to ping the source page that returned notFound: true instead\n const notFoundSrcPage = self.__NEXT_DATA__.notFoundSrcPage;\n const pathname = (_router.default.pathname === \"/404\" || _router.default.pathname === \"/_error\") && notFoundSrcPage ? notFoundSrcPage : _router.default.pathname;\n (0, _websocket.sendMessage)(JSON.stringify({\n event: \"ping\",\n page: pathname\n }));\n }, 2500);\n });\n }\n};\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=on-demand-entries-client.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9kZXYvb24tZGVtYW5kLWVudHJpZXMtY2xpZW50LmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2JBLDhDQUE2QztJQUN6Q0csT0FBTztBQUNYLENBQUMsRUFBQztBQUNGSCwyQ0FBMEM7SUFDdENJLFlBQVk7SUFDWkMsS0FBSztRQUNELE9BQU9DO0lBQ1g7QUFDSixDQUFDLEVBQUM7QUFDRixNQUFNQywyQkFBMkJDLG1CQUFPQSxDQUFDLDRHQUF5QztBQUNsRixNQUFNQyxVQUFVLFdBQVcsR0FBR0YseUJBQXlCRyxDQUFDLENBQUNGLG1CQUFPQSxDQUFDLDREQUFXO0FBQzVFLE1BQU1HLGFBQWFILG1CQUFPQSxDQUFDLGlHQUEyQjtBQUN0RCxNQUFNRixXQUFXLE9BQU9NO0lBQ3BCLElBQUlBLE1BQU07UUFDTix3REFBd0Q7UUFDeEQsc0RBQXNEO1FBQ3REQyxZQUFZO1lBQ1AsSUFBR0YsV0FBV0csV0FBVyxFQUFFQyxLQUFLQyxTQUFTLENBQUM7Z0JBQ3ZDQyxPQUFPO2dCQUNQTDtZQUNKO1FBQ0osR0FBRztJQUNQLE9BQU87UUFDSEgsUUFBUVMsT0FBTyxDQUFDQyxLQUFLLENBQUM7WUFDbEJOLFlBQVk7Z0JBQ1IsaUVBQWlFO2dCQUNqRSxnRUFBZ0U7Z0JBQ2hFLCtEQUErRDtnQkFDL0QsTUFBTU8sa0JBQWtCQyxLQUFLQyxhQUFhLENBQUNGLGVBQWU7Z0JBQzFELE1BQU1HLFdBQVcsQ0FBQ2QsUUFBUVMsT0FBTyxDQUFDSyxRQUFRLEtBQUssVUFBVWQsUUFBUVMsT0FBTyxDQUFDSyxRQUFRLEtBQUssU0FBUSxLQUFNSCxrQkFBa0JBLGtCQUFrQlgsUUFBUVMsT0FBTyxDQUFDSyxRQUFRO2dCQUMvSixJQUFHWixXQUFXRyxXQUFXLEVBQUVDLEtBQUtDLFNBQVMsQ0FBQztvQkFDdkNDLE9BQU87b0JBQ1BMLE1BQU1XO2dCQUNWO1lBQ0osR0FBRztRQUNQO0lBQ0o7QUFDSjtBQUVBLElBQUksQ0FBQyxPQUFPckIsUUFBUWdCLE9BQU8sS0FBSyxjQUFlLE9BQU9oQixRQUFRZ0IsT0FBTyxLQUFLLFlBQVloQixRQUFRZ0IsT0FBTyxLQUFLLElBQUksS0FBTSxPQUFPaEIsUUFBUWdCLE9BQU8sQ0FBQ00sVUFBVSxLQUFLLGFBQWE7SUFDckt4QixPQUFPQyxjQUFjLENBQUNDLFFBQVFnQixPQUFPLEVBQUUsY0FBYztRQUFFZixPQUFPO0lBQUs7SUFDbkVILE9BQU95QixNQUFNLENBQUN2QixRQUFRZ0IsT0FBTyxFQUFFaEI7SUFDL0J3QixPQUFPeEIsT0FBTyxHQUFHQSxRQUFRZ0IsT0FBTztBQUNsQyxFQUVBLG9EQUFvRCIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9kZXYvb24tZGVtYW5kLWVudHJpZXMtY2xpZW50LmpzPzg0NWMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJkZWZhdWx0XCIsIHtcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBfZGVmYXVsdDtcbiAgICB9XG59KTtcbmNvbnN0IF9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdCA9IHJlcXVpcmUoXCJAc3djL2hlbHBlcnMvXy9faW50ZXJvcF9yZXF1aXJlX2RlZmF1bHRcIik7XG5jb25zdCBfcm91dGVyID0gLyojX19QVVJFX18qLyBfaW50ZXJvcF9yZXF1aXJlX2RlZmF1bHQuXyhyZXF1aXJlKFwiLi4vcm91dGVyXCIpKTtcbmNvbnN0IF93ZWJzb2NrZXQgPSByZXF1aXJlKFwiLi9lcnJvci1vdmVybGF5L3dlYnNvY2tldFwiKTtcbmNvbnN0IF9kZWZhdWx0ID0gYXN5bmMgKHBhZ2UpPT57XG4gICAgaWYgKHBhZ2UpIHtcbiAgICAgICAgLy8gaW4gQU1QIHRoZSByb3V0ZXIgaXNuJ3QgaW5pdGlhbGl6ZWQgb24gdGhlIGNsaWVudCBhbmRcbiAgICAgICAgLy8gY2xpZW50LXRyYW5zaXRpb25zIGRvbid0IG9jY3VyIHNvIHBpbmcgaW5pdGlhbCBwYWdlXG4gICAgICAgIHNldEludGVydmFsKCgpPT57XG4gICAgICAgICAgICAoMCwgX3dlYnNvY2tldC5zZW5kTWVzc2FnZSkoSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgIGV2ZW50OiBcInBpbmdcIixcbiAgICAgICAgICAgICAgICBwYWdlXG4gICAgICAgICAgICB9KSk7XG4gICAgICAgIH0sIDI1MDApO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIF9yb3V0ZXIuZGVmYXVsdC5yZWFkeSgoKT0+e1xuICAgICAgICAgICAgc2V0SW50ZXJ2YWwoKCk9PntcbiAgICAgICAgICAgICAgICAvLyB3aGVuIG5vdEZvdW5kOiB0cnVlIGlzIHJldHVybmVkIHdlIHNob3VsZCB1c2UgdGhlIG5vdEZvdW5kUGFnZVxuICAgICAgICAgICAgICAgIC8vIGFzIHRoZSBSb3V0ZXIucGF0aG5hbWUgd2lsbCBwb2ludCB0byB0aGUgNDA0IHBhZ2UgYnV0IHdlIHdhbnRcbiAgICAgICAgICAgICAgICAvLyB0byBwaW5nIHRoZSBzb3VyY2UgcGFnZSB0aGF0IHJldHVybmVkIG5vdEZvdW5kOiB0cnVlIGluc3RlYWRcbiAgICAgICAgICAgICAgICBjb25zdCBub3RGb3VuZFNyY1BhZ2UgPSBzZWxmLl9fTkVYVF9EQVRBX18ubm90Rm91bmRTcmNQYWdlO1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhdGhuYW1lID0gKF9yb3V0ZXIuZGVmYXVsdC5wYXRobmFtZSA9PT0gXCIvNDA0XCIgfHwgX3JvdXRlci5kZWZhdWx0LnBhdGhuYW1lID09PSBcIi9fZXJyb3JcIikgJiYgbm90Rm91bmRTcmNQYWdlID8gbm90Rm91bmRTcmNQYWdlIDogX3JvdXRlci5kZWZhdWx0LnBhdGhuYW1lO1xuICAgICAgICAgICAgICAgICgwLCBfd2Vic29ja2V0LnNlbmRNZXNzYWdlKShKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50OiBcInBpbmdcIixcbiAgICAgICAgICAgICAgICAgICAgcGFnZTogcGF0aG5hbWVcbiAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICB9LCAyNTAwKTtcbiAgICAgICAgfSk7XG4gICAgfVxufTtcblxuaWYgKCh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnZnVuY3Rpb24nIHx8ICh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnb2JqZWN0JyAmJiBleHBvcnRzLmRlZmF1bHQgIT09IG51bGwpKSAmJiB0eXBlb2YgZXhwb3J0cy5kZWZhdWx0Ll9fZXNNb2R1bGUgPT09ICd1bmRlZmluZWQnKSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLmRlZmF1bHQsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiAgT2JqZWN0LmFzc2lnbihleHBvcnRzLmRlZmF1bHQsIGV4cG9ydHMpO1xuICBtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMuZGVmYXVsdDtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9b24tZGVtYW5kLWVudHJpZXMtY2xpZW50LmpzLm1hcCJdLCJuYW1lcyI6WyJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImV4cG9ydHMiLCJ2YWx1ZSIsImVudW1lcmFibGUiLCJnZXQiLCJfZGVmYXVsdCIsIl9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdCIsInJlcXVpcmUiLCJfcm91dGVyIiwiXyIsIl93ZWJzb2NrZXQiLCJwYWdlIiwic2V0SW50ZXJ2YWwiLCJzZW5kTWVzc2FnZSIsIkpTT04iLCJzdHJpbmdpZnkiLCJldmVudCIsImRlZmF1bHQiLCJyZWFkeSIsIm5vdEZvdW5kU3JjUGFnZSIsInNlbGYiLCJfX05FWFRfREFUQV9fIiwicGF0aG5hbWUiLCJfX2VzTW9kdWxlIiwiYXNzaWduIiwibW9kdWxlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/dev/on-demand-entries-client.js\n")); /***/ }), /***/ "./node_modules/next/dist/client/has-base-path.js": /*!********************************************************!*\ !*** ./node_modules/next/dist/client/has-base-path.js ***! \********************************************************/ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"hasBasePath\", ({\n enumerable: true,\n get: function() {\n return hasBasePath;\n }\n}));\nconst _pathhasprefix = __webpack_require__(/*! ../shared/lib/router/utils/path-has-prefix */ \"./node_modules/next/dist/shared/lib/router/utils/path-has-prefix.js\");\nconst basePath = false || \"\";\nfunction hasBasePath(path) {\n return (0, _pathhasprefix.pathHasPrefix)(path, basePath);\n}\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=has-base-path.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9oYXMtYmFzZS1wYXRoLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2JBLDhDQUE2QztJQUN6Q0csT0FBTztBQUNYLENBQUMsRUFBQztBQUNGSCwrQ0FBOEM7SUFDMUNJLFlBQVk7SUFDWkMsS0FBSztRQUNELE9BQU9DO0lBQ1g7QUFDSixDQUFDLEVBQUM7QUFDRixNQUFNQyxpQkFBaUJDLG1CQUFPQSxDQUFDLHVIQUE0QztBQUMzRSxNQUFNQyxXQUFXQyxNQUFrQyxJQUFJO0FBQ3ZELFNBQVNKLFlBQVlPLElBQUk7SUFDckIsT0FBTyxDQUFDLEdBQUdOLGVBQWVPLGFBQWEsRUFBRUQsTUFBTUo7QUFDbkQ7QUFFQSxJQUFJLENBQUMsT0FBT1AsUUFBUWEsT0FBTyxLQUFLLGNBQWUsT0FBT2IsUUFBUWEsT0FBTyxLQUFLLFlBQVliLFFBQVFhLE9BQU8sS0FBSyxJQUFJLEtBQU0sT0FBT2IsUUFBUWEsT0FBTyxDQUFDQyxVQUFVLEtBQUssYUFBYTtJQUNyS2hCLE9BQU9DLGNBQWMsQ0FBQ0MsUUFBUWEsT0FBTyxFQUFFLGNBQWM7UUFBRVosT0FBTztJQUFLO0lBQ25FSCxPQUFPaUIsTUFBTSxDQUFDZixRQUFRYSxPQUFPLEVBQUViO0lBQy9CZ0IsT0FBT2hCLE9BQU8sR0FBR0EsUUFBUWEsT0FBTztBQUNsQyxFQUVBLHlDQUF5QyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9oYXMtYmFzZS1wYXRoLmpzPzVhNDkiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJoYXNCYXNlUGF0aFwiLCB7XG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gaGFzQmFzZVBhdGg7XG4gICAgfVxufSk7XG5jb25zdCBfcGF0aGhhc3ByZWZpeCA9IHJlcXVpcmUoXCIuLi9zaGFyZWQvbGliL3JvdXRlci91dGlscy9wYXRoLWhhcy1wcmVmaXhcIik7XG5jb25zdCBiYXNlUGF0aCA9IHByb2Nlc3MuZW52Ll9fTkVYVF9ST1VURVJfQkFTRVBBVEggfHwgXCJcIjtcbmZ1bmN0aW9uIGhhc0Jhc2VQYXRoKHBhdGgpIHtcbiAgICByZXR1cm4gKDAsIF9wYXRoaGFzcHJlZml4LnBhdGhIYXNQcmVmaXgpKHBhdGgsIGJhc2VQYXRoKTtcbn1cblxuaWYgKCh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnZnVuY3Rpb24nIHx8ICh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnb2JqZWN0JyAmJiBleHBvcnRzLmRlZmF1bHQgIT09IG51bGwpKSAmJiB0eXBlb2YgZXhwb3J0cy5kZWZhdWx0Ll9fZXNNb2R1bGUgPT09ICd1bmRlZmluZWQnKSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLmRlZmF1bHQsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiAgT2JqZWN0LmFzc2lnbihleHBvcnRzLmRlZmF1bHQsIGV4cG9ydHMpO1xuICBtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMuZGVmYXVsdDtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aGFzLWJhc2UtcGF0aC5qcy5tYXAiXSwibmFtZXMiOlsiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJleHBvcnRzIiwidmFsdWUiLCJlbnVtZXJhYmxlIiwiZ2V0IiwiaGFzQmFzZVBhdGgiLCJfcGF0aGhhc3ByZWZpeCIsInJlcXVpcmUiLCJiYXNlUGF0aCIsInByb2Nlc3MiLCJlbnYiLCJfX05FWFRfUk9VVEVSX0JBU0VQQVRIIiwicGF0aCIsInBhdGhIYXNQcmVmaXgiLCJkZWZhdWx0IiwiX19lc01vZHVsZSIsImFzc2lnbiIsIm1vZHVsZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/has-base-path.js\n")); /***/ }), /***/ "./node_modules/next/dist/client/head-manager.js": /*!*******************************************************!*\ !*** ./node_modules/next/dist/client/head-manager.js ***! \*******************************************************/ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n DOMAttributeNames: function() {\n return DOMAttributeNames;\n },\n isEqualNode: function() {\n return isEqualNode;\n },\n default: function() {\n return initHeadManager;\n }\n});\nconst DOMAttributeNames = {\n acceptCharset: \"accept-charset\",\n className: \"class\",\n htmlFor: \"for\",\n httpEquiv: \"http-equiv\",\n noModule: \"noModule\"\n};\nfunction reactElementToDOM(param) {\n let { type, props } = param;\n const el = document.createElement(type);\n for(const p in props){\n if (!props.hasOwnProperty(p)) continue;\n if (p === \"children\" || p === \"dangerouslySetInnerHTML\") continue;\n // we don't render undefined props to the DOM\n if (props[p] === undefined) continue;\n const attr = DOMAttributeNames[p] || p.toLowerCase();\n if (type === \"script\" && (attr === \"async\" || attr === \"defer\" || attr === \"noModule\")) {\n el[attr] = !!props[p];\n } else {\n el.setAttribute(attr, props[p]);\n }\n }\n const { children, dangerouslySetInnerHTML } = props;\n if (dangerouslySetInnerHTML) {\n el.innerHTML = dangerouslySetInnerHTML.__html || \"\";\n } else if (children) {\n el.textContent = typeof children === \"string\" ? children : Array.isArray(children) ? children.join(\"\") : \"\";\n }\n return el;\n}\nfunction isEqualNode(oldTag, newTag) {\n if (oldTag instanceof HTMLElement && newTag instanceof HTMLElement) {\n const nonce = newTag.getAttribute(\"nonce\");\n // Only strip the nonce if `oldTag` has had it stripped. An element's nonce attribute will not\n // be stripped if there is no content security policy response header that includes a nonce.\n if (nonce && !oldTag.getAttribute(\"nonce\")) {\n const cloneTag = newTag.cloneNode(true);\n cloneTag.setAttribute(\"nonce\", \"\");\n cloneTag.nonce = nonce;\n return nonce === oldTag.nonce && oldTag.isEqualNode(cloneTag);\n }\n }\n return oldTag.isEqualNode(newTag);\n}\nlet updateElements;\nif (false) {} else {\n updateElements = (type, components)=>{\n const headEl = document.getElementsByTagName(\"head\")[0];\n const headCountEl = headEl.querySelector(\"meta[name=next-head-count]\");\n if (true) {\n if (!headCountEl) {\n console.error(\"Warning: next-head-count is missing. https://nextjs.org/docs/messages/next-head-count-missing\");\n return;\n }\n }\n const headCount = Number(headCountEl.content);\n const oldTags = [];\n for(let i = 0, j = headCountEl.previousElementSibling; i < headCount; i++, j = (j == null ? void 0 : j.previousElementSibling) || null){\n var _j_tagName;\n if ((j == null ? void 0 : (_j_tagName = j.tagName) == null ? void 0 : _j_tagName.toLowerCase()) === type) {\n oldTags.push(j);\n }\n }\n const newTags = components.map(reactElementToDOM).filter((newTag)=>{\n for(let k = 0, len = oldTags.length; k < len; k++){\n const oldTag = oldTags[k];\n if (isEqualNode(oldTag, newTag)) {\n oldTags.splice(k, 1);\n return false;\n }\n }\n return true;\n });\n oldTags.forEach((t)=>{\n var _t_parentNode;\n return (_t_parentNode = t.parentNode) == null ? void 0 : _t_parentNode.removeChild(t);\n });\n newTags.forEach((t)=>headEl.insertBefore(t, headCountEl));\n headCountEl.content = (headCount - oldTags.length + newTags.length).toString();\n };\n}\nfunction initHeadManager() {\n return {\n mountedInstances: new Set(),\n updateHead: (head)=>{\n const tags = {};\n head.forEach((h)=>{\n if (// it won't be inlined. In this case revert to the original behavior\n h.type === \"link\" && h.props[\"data-optimized-fonts\"]) {\n if (document.querySelector('style[data-href=\"' + h.props[\"data-href\"] + '\"]')) {\n return;\n } else {\n h.props.href = h.props[\"data-href\"];\n h.props[\"data-href\"] = undefined;\n }\n }\n const components = tags[h.type] || [];\n components.push(h);\n tags[h.type] = components;\n });\n const titleComponent = tags.title ? tags.title[0] : null;\n let title = \"\";\n if (titleComponent) {\n const { children } = titleComponent.props;\n title = typeof children === \"string\" ? children : Array.isArray(children) ? children.join(\"\") : \"\";\n }\n if (title !== document.title) document.title = title;\n [\n \"meta\",\n \"base\",\n \"link\",\n \"style\",\n \"script\"\n ].forEach((type)=>{\n updateElements(type, tags[type] || []);\n });\n }\n };\n}\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=head-manager.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9oZWFkLW1hbmFnZXIuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYkEsOENBQTZDO0lBQ3pDRyxPQUFPO0FBQ1gsQ0FBQyxFQUFDO0FBQ0YsS0FBTUMsQ0FBQUEsQ0FJTjtBQUNBLFNBQVNJLFFBQVFDLE1BQU0sRUFBRUMsR0FBRztJQUN4QixJQUFJLElBQUlDLFFBQVFELElBQUlWLE9BQU9DLGNBQWMsQ0FBQ1EsUUFBUUUsTUFBTTtRQUNwREMsWUFBWTtRQUNaQyxLQUFLSCxHQUFHLENBQUNDLEtBQUs7SUFDbEI7QUFDSjtBQUNBSCxRQUFRTixTQUFTO0lBQ2JHLG1CQUFtQjtRQUNmLE9BQU9BO0lBQ1g7SUFDQUMsYUFBYTtRQUNULE9BQU9BO0lBQ1g7SUFDQUMsU0FBUztRQUNMLE9BQU9PO0lBQ1g7QUFDSjtBQUNBLE1BQU1ULG9CQUFvQjtJQUN0QlUsZUFBZTtJQUNmQyxXQUFXO0lBQ1hDLFNBQVM7SUFDVEMsV0FBVztJQUNYQyxVQUFVO0FBQ2Q7QUFDQSxTQUFTQyxrQkFBa0JDLEtBQUs7SUFDNUIsSUFBSSxFQUFFQyxJQUFJLEVBQUVDLEtBQUssRUFBRSxHQUFHRjtJQUN0QixNQUFNRyxLQUFLQyxTQUFTQyxhQUFhLENBQUNKO0lBQ2xDLElBQUksTUFBTUssS0FBS0osTUFBTTtRQUNqQixJQUFJLENBQUNBLE1BQU1LLGNBQWMsQ0FBQ0QsSUFBSTtRQUM5QixJQUFJQSxNQUFNLGNBQWNBLE1BQU0sMkJBQTJCO1FBQ3pELDZDQUE2QztRQUM3QyxJQUFJSixLQUFLLENBQUNJLEVBQUUsS0FBS0UsV0FBVztRQUM1QixNQUFNQyxPQUFPekIsaUJBQWlCLENBQUNzQixFQUFFLElBQUlBLEVBQUVJLFdBQVc7UUFDbEQsSUFBSVQsU0FBUyxZQUFhUSxDQUFBQSxTQUFTLFdBQVdBLFNBQVMsV0FBV0EsU0FBUyxVQUFTLEdBQUk7WUFDcEZOLEVBQUUsQ0FBQ00sS0FBSyxHQUFHLENBQUMsQ0FBQ1AsS0FBSyxDQUFD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LE1BQU02RSxJQUFJLENBQUM3RSxLQUFLLElBQUksRUFBRTtZQUN6QztRQUNKO0lBQ0o7QUFDSjtBQUVBLElBQUksQ0FBQyxPQUFPcEIsUUFBUUssT0FBTyxLQUFLLGNBQWUsT0FBT0wsUUFBUUssT0FBTyxLQUFLLFlBQVlMLFFBQVFLLE9BQU8sS0FBSyxJQUFJLEtBQU0sT0FBT0wsUUFBUUssT0FBTyxDQUFDaUcsVUFBVSxLQUFLLGFBQWE7SUFDckt4RyxPQUFPQyxjQUFjLENBQUNDLFFBQVFLLE9BQU8sRUFBRSxjQUFjO1FBQUVKLE9BQU87SUFBSztJQUNuRUgsT0FBT3lHLE1BQU0sQ0FBQ3ZHLFFBQVFLLE9BQU8sRUFBRUw7SUFDL0JFLE9BQU9GLE9BQU8sR0FBR0EsUUFBUUssT0FBTztBQUNsQyxFQUVBLHdDQUF3QyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9oZWFkLW1hbmFnZXIuanM/Y2E0YSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbjAgJiYgKG1vZHVsZS5leHBvcnRzID0ge1xuICAgIERPTUF0dHJpYnV0ZU5hbWVzOiBudWxsLFxuICAgIGlzRXF1YWxOb2RlOiBudWxsLFxuICAgIGRlZmF1bHQ6IG51bGxcbn0pO1xuZnVuY3Rpb24gX2V4cG9ydCh0YXJnZXQsIGFsbCkge1xuICAgIGZvcih2YXIgbmFtZSBpbiBhbGwpT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgbmFtZSwge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBnZXQ6IGFsbFtuYW1lXVxuICAgIH0pO1xufVxuX2V4cG9ydChleHBvcnRzLCB7XG4gICAgRE9NQXR0cmlidXRlTmFtZXM6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gRE9NQXR0cmlidXRlTmFtZXM7XG4gICAgfSxcbiAgICBpc0VxdWFsTm9kZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBpc0VxdWFsTm9kZTtcbiAgICB9LFxuICAgIGRlZmF1bHQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gaW5pdEhlYWRNYW5hZ2VyO1xuICAgIH1cbn0pO1xuY29uc3QgRE9NQXR0cmlidXRlTmFtZXMgPSB7XG4gICAgYWNjZXB0Q2hhcnNldDogXCJhY2NlcHQtY2hhcnNldFwiLFxuICAgIGNsYXNzTmFtZTogXCJjbGFzc1wiLFxuICAgIGh0bWxGb3I6IFwiZm9yXCIsXG4gICAgaHR0cEVxdWl2OiBcImh0dHAtZXF1aXZcIixcbiAgICBub01vZHVsZTogXCJub01vZHVsZVwiXG59O1xuZnVuY3Rpb24gcmVhY3RFbGVtZW50VG9ET00ocGFyYW0pIHtcbiAgICBsZXQgeyB0eXBlLCBwcm9wcyB9ID0gcGFyYW07XG4gICAgY29uc3QgZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHR5cGUpO1xuICAgIGZvcihjb25zdCBwIGluIHByb3BzKXtcbiAgICAgICAgaWYgKCFwcm9wcy5oYXNPd25Qcm9wZXJ0eShwKSkgY29udGludWU7XG4gICAgICAgIGlmIChwID09PSBcImNoaWxkcmVuXCIgfHwgcCA9PT0gXCJkYW5nZXJvdXNseVNldElubmVySFRNTFwiKSBjb250aW51ZTtcbiAgICAgICAgLy8gd2UgZG9uJ3QgcmVuZGVyIHVuZGVmaW5lZCBwcm9wcyB0byB0aGUgRE9NXG4gICAgICAgIGlmIChwcm9wc1twXSA9PT0gdW5kZWZpbmVkKSBjb250aW51ZTtcbiAgICAgICAgY29uc3QgYXR0ciA9IERPTUF0dHJpYnV0ZU5hbWVzW3BdIHx8IHAudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgaWYgKHR5cGUgPT09IFwic2NyaXB0XCIgJiYgKGF0dHIgPT09IFwiYXN5bmNcIiB8fCBhdHRyID09PSBcImRlZmVyXCIgfHwgYXR0ciA9PT0gXCJub01vZHVsZVwiKSkge1xuICAgICAgICAgICAgZWxbYXR0cl0gPSAhIXByb3BzW3BdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlKGF0dHIsIHByb3BzW3BdKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjb25zdCB7IGNoaWxkcmVuLCBkYW5nZXJvdXNseVNldElubmVySFRNTCB9ID0gcHJvcHM7XG4gICAgaWYgKGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MKSB7XG4gICAgICAgIGVsLmlubmVySFRNTCA9IGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MLl9faHRtbCB8fCBcIlwiO1xuICAgIH0gZWxzZSBpZiAoY2hpbGRyZW4pIHtcbiAgICAgICAgZWwudGV4dENvbnRlbnQgPSB0eXBlb2YgY2hpbGRyZW4gPT09IFwic3RyaW5nXCIgPyBjaGlsZHJlbiA6IEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pID8gY2hpbGRyZW4uam9pbihcIlwiKSA6IFwiXCI7XG4gICAgfVxuICAgIHJldHVybiBlbDtcbn1cbmZ1bmN0aW9uIGlzRXF1YWxOb2RlKG9sZFRhZywgbmV3VGFnKSB7XG4gICAgaWYgKG9sZFRhZyBpbnN0YW5jZW9mIEhUTUxFbGVtZW50ICYmIG5ld1RhZyBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IG5vbmNlID0gbmV3VGFnLmdldEF0dHJpYnV0ZShcIm5vbmNlXCIpO1xuICAgICAgICAvLyBPbmx5IHN0cmlwIHRoZSBub25jZSBpZiBgb2xkVGFnYCBoYXMgaGFkIGl0IHN0cmlwcGVkLiBBbiBlbGVtZW50J3Mgbm9uY2UgYXR0cmlidXRlIHdpbGwgbm90XG4gICAgICAgIC8vIGJlIHN0cmlwcGVkIGlmIHRoZXJlIGlzIG5vIGNvbnRlbnQgc2VjdXJpdHkgcG9saWN5IHJlc3BvbnNlIGhlYWRlciB0aGF0IGluY2x1ZGVzIGEgbm9uY2UuXG4gICAgICAgIGlmIChub25jZSAmJiAhb2xkVGFnLmdldEF0dHJpYnV0ZShcIm5vbmNlXCIpKSB7XG4gICAgICAgICAgICBjb25zdCBjbG9uZVRhZyA9IG5ld1RhZy5jbG9uZU5vZGUodHJ1ZSk7XG4gICAgICAgICAgICBjbG9uZVRhZy5zZXRBdHRyaWJ1dGUoXCJub25jZVwiLCBcIlwiKTtcbiAgICAgICAgICAgIGNsb25lVGFnLm5vbmNlID0gbm9uY2U7XG4gICAgICAgICAgICByZXR1cm4gbm9uY2UgPT09IG9sZFRhZy5ub25jZSAmJiBvbGRUYWcuaXNFcXVhbE5vZGUoY2xvbmVUYWcpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBvbGRUYWcuaXNFcXVhbE5vZGUobmV3VGFnKTtcbn1cbmxldCB1cGRhdGVFbGVtZW50cztcbmlmIChwcm9jZXNzLmVudi5fX05FWFRfU1RSSUNUX05FWFRfSEVBRCkge1xuICAgIHVwZGF0ZUVsZW1lbnRzID0gKHR5cGUsIGNvbXBvbmVudHMpPT57XG4gICAgICAgIGNvbnN0IGhlYWRFbCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCJoZWFkXCIpO1xuICAgICAgICBpZiAoIWhlYWRFbCkgcmV0dXJuO1xuICAgICAgICBjb25zdCBoZWFkTWV0YVRhZ3MgPSBoZWFkRWwucXVlcnlTZWxlY3RvckFsbCgnbWV0YVtuYW1lPVwibmV4dC1oZWFkXCJdJykgfHwgW107XG4gICAgICAgIGNvbnN0IG9sZFRhZ3MgPSBbXTtcbiAgICAgICAgaWYgKHR5cGUgPT09IFwibWV0YVwiKSB7XG4gICAgICAgICAgICBjb25zdCBtZXRhQ2hhcnNldCA9IGhlYWRFbC5xdWVyeVNlbGVjdG9yKFwibWV0YVtjaGFyc2V0XVwiKTtcbiAgICAgICAgICAgIGlmIChtZXRhQ2hhcnNldCkge1xuICAgICAgICAgICAgICAgIG9sZFRhZ3MucHVzaChtZXRhQ2hhcnNldCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZm9yKGxldCBpID0gMDsgaSA8IGhlYWRNZXRhVGFncy5sZW5ndGg7IGkrKyl7XG4gICAgICAgICAgICB2YXIgX2hlYWRUYWdfdGFnTmFtZTtcbiAgICAgICAgICAgIGNvbnN0IG1ldGFUYWcgPSBoZWFkTWV0YVRhZ3NbaV07XG4gICAgICAgICAgICBjb25zdCBoZWFkVGFnID0gbWV0YVRhZy5uZXh0U2libGluZztcbiAgICAgICAgICAgIGlmICgoaGVhZFRhZyA9PSBudWxsID8gdm9pZCAwIDogKF9oZWFkVGFnX3RhZ05hbWUgPSBoZWFkVGFnLnRhZ05hbWUpID09IG51bGwgPyB2b2lkIDAgOiBfaGVhZFRhZ190YWdOYW1lLnRvTG93ZXJDYXNlKCkpID09PSB0eXBlKSB7XG4gICAgICAgICAgICAgICAgb2xkVGFncy5wdXNoKGhlYWRUYWcpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5ld1RhZ3MgPSBjb21wb25lbnRzLm1hcChyZWFjdEVsZW1lbnRUb0RPTSkuZmlsdGVyKChuZXdUYWcpPT57XG4gICAgICAgICAgICBmb3IobGV0IGsgPSAwLCBsZW4gPSBvbGRUYWdzLmxlbmd0aDsgayA8IGxlbjsgaysrKXtcbiAgICAgICAgICAgICAgICBjb25zdCBvbGRUYWcgPSBvbGRUYWdzW2tdO1xuICAgICAgICAgICAgICAgIGlmIChpc0VxdWFsTm9kZShvbGRUYWcsIG5ld1RhZykpIHtcbiAgICAgICAgICAgICAgICAgICAgb2xkVGFncy5zcGxpY2UoaywgMSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSk7XG4gICAgICAgIG9sZFRhZ3MuZm9yRWFjaCgodCk9PntcbiAgICAgICAgICAgIHZhciBfdF9wYXJlbnROb2RlO1xuICAgICAgICAgICAgY29uc3QgbWV0YVRhZyA9IHQucHJldmlvdXNTaWJsaW5nO1xuICAgICAgICAgICAgaWYgKG1ldGFUYWcgJiYgbWV0YVRhZy5nZXRBdHRyaWJ1dGUoXCJuYW1lXCIpID09PSBcIm5leHQtaGVhZFwiKSB7XG4gICAgICAgICAgICAgICAgdmFyIF90X3BhcmVudE5vZGUxO1xuICAgICAgICAgICAgICAgIChfdF9wYXJlbnROb2RlMSA9IHQucGFyZW50Tm9kZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF90X3BhcmVudE5vZGUxLnJlbW92ZUNoaWxkKG1ldGFUYWcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgKF90X3BhcmVudE5vZGUgPSB0LnBhcmVudE5vZGUpID09IG51bGwgPyB2b2lkIDAgOiBfdF9wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHQpO1xuICAgICAgICB9KTtcbiAgICAgICAgbmV3VGFncy5mb3JFYWNoKCh0KT0+e1xuICAgICAgICAgICAgdmFyIF90X3RhZ05hbWU7XG4gICAgICAgICAgICBjb25zdCBtZXRhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcIm1ldGFcIik7XG4gICAgICAgICAgICBtZXRhLm5hbWUgPSBcIm5leHQtaGVhZFwiO1xuICAgICAgICAgICAgbWV0YS5jb250ZW50ID0gXCIxXCI7XG4gICAgICAgICAgICAvLyBtZXRhW2NoYXJzZXRdIG11c3QgYmUgZmlyc3QgZWxlbWVudCBzbyBzcGVjaWFsIGNhc2VcbiAgICAgICAgICAgIGlmICghKCgoX3RfdGFnTmFtZSA9IHQudGFnTmFtZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF90X3RhZ05hbWUudG9Mb3dlckNhc2UoKSkgPT09IFwibWV0YVwiICYmIHQuZ2V0QXR0cmlidXRlKFwiY2hhcnNldFwiKSkpIHtcbiAgICAgICAgICAgICAgICBoZWFkRWwuYXBwZW5kQ2hpbGQobWV0YSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBoZWFkRWwuYXBwZW5kQ2hpbGQodCk7XG4gICAgICAgIH0pO1xuICAgIH07XG59IGVsc2Uge1xuICAgIHVwZGF0ZUVsZW1lbnRzID0gKHR5cGUsIGNvbXBvbmVudHMpPT57XG4gICAgICAgIGNvbnN0IGhlYWRFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiaGVhZFwiKVswXTtcbiAgICAgICAgY29uc3QgaGVhZENvdW50RWwgPSBoZWFkRWwucXVlcnlTZWxlY3RvcihcIm1ldGFbbmFtZT1uZXh0LWhlYWQtY291bnRdXCIpO1xuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgICAgICAgICBpZiAoIWhlYWRDb3VudEVsKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIldhcm5pbmc6IG5leHQtaGVhZC1jb3VudCBpcyBtaXNzaW5nLiBodHRwczovL25leHRqcy5vcmcvZG9jcy9tZXNzYWdlcy9uZXh0LWhlYWQtY291bnQtbWlzc2luZ1wiKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaGVhZENvdW50ID0gTnVtYmVyKGhlYWRDb3VudEVsLmNvbnRlbnQpO1xuICAgICAgICBjb25zdCBvbGRUYWdzID0gW107XG4gICAgICAgIGZvcihsZXQgaSA9IDAsIGogPSBoZWFkQ291bnRFbC5wcmV2aW91c0VsZW1lbnRTaWJsaW5nOyBpIDwgaGVhZENvdW50OyBpKyssIGogPSAoaiA9PSBudWxsID8gdm9pZCAwIDogai5wcmV2aW91c0VsZW1lbnRTaWJsaW5nKSB8fCBudWxsKXtcbiAgICAgICAgICAgIHZhciBfal90YWdOYW1lO1xuICAgICAgICAgICAgaWYgKChqID09IG51bGwgPyB2b2lkIDAgOiAoX2pfdGFnTmFtZSA9IGoudGFnTmFtZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9qX3RhZ05hbWUudG9Mb3dlckNhc2UoKSkgPT09IHR5cGUpIHtcbiAgICAgICAgICAgICAgICBvbGRUYWdzLnB1c2goaik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbmV3VGFncyA9IGNvbXBvbmVudHMubWFwKHJlYWN0RWxlbWVudFRvRE9NKS5maWx0ZXIoKG5ld1RhZyk9PntcbiAgICAgICAgICAgIGZvcihsZXQgayA9IDAsIGxlbiA9IG9sZFRhZ3MubGVuZ3RoOyBrIDwgbGVuOyBrKyspe1xuICAgICAgICAgICAgICAgIGNvbnN0IG9sZFRhZyA9IG9sZFRhZ3Nba107XG4gICAgICAgICAgICAgICAgaWYgKGlzRXF1YWxOb2RlKG9sZFRhZywgbmV3VGFnKSkge1xuICAgICAgICAgICAgICAgICAgICBvbGRUYWdzLnNwbGljZShrLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9KTtcbiAgICAgICAgb2xkVGFncy5mb3JFYWNoKCh0KT0+e1xuICAgICAgICAgICAgdmFyIF90X3BhcmVudE5vZGU7XG4gICAgICAgICAgICByZXR1cm4gKF90X3BhcmVudE5vZGUgPSB0LnBhcmVudE5vZGUpID09IG51bGwgPyB2b2lkIDAgOiBfdF9wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHQpO1xuICAgICAgICB9KTtcbiAgICAgICAgbmV3VGFncy5mb3JFYWNoKCh0KT0+aGVhZEVsLmluc2VydEJlZm9yZSh0LCBoZWFkQ291bnRFbCkpO1xuICAgICAgICBoZWFkQ291bnRFbC5jb250ZW50ID0gKGhlYWRDb3VudCAtIG9sZFRhZ3MubGVuZ3RoICsgbmV3VGFncy5sZW5ndGgpLnRvU3RyaW5nKCk7XG4gICAgfTtcbn1cbmZ1bmN0aW9uIGluaXRIZWFkTWFuYWdlcigpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBtb3VudGVkSW5zdGFuY2VzOiBuZXcgU2V0KCksXG4gICAgICAgIHVwZGF0ZUhlYWQ6IChoZWFkKT0+e1xuICAgICAgICAgICAgY29uc3QgdGFncyA9IHt9O1xuICAgICAgICAgICAgaGVhZC5mb3JFYWNoKChoKT0+e1xuICAgICAgICAgICAgICAgIGlmICgvLyBJZiB0aGUgZm9udCB0YWcgaXMgbG9hZGVkIG9ubHkgb24gY2xpZW50IG5hdmlnYXRpb25cbiAgICAgICAgICAgICAgICAvLyBpdCB3b24ndCBiZSBpbmxpbmVkLiBJbiB0aGlzIGNhc2UgcmV2ZXJ0IHRvIHRoZSBvcmlnaW5hbCBiZWhhdmlvclxuICAgICAgICAgICAgICAgIGgudHlwZSA9PT0gXCJsaW5rXCIgJiYgaC5wcm9wc1tcImRhdGEtb3B0aW1pemVkLWZvbnRzXCJdKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdzdHlsZVtkYXRhLWhyZWY9XCInICsgaC5wcm9wc1tcImRhdGEtaHJlZlwiXSArICdcIl0nKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgaC5wcm9wcy5ocmVmID0gaC5wcm9wc1tcImRhdGEtaHJlZlwiXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGgucHJvcHNbXCJkYXRhLWhyZWZcIl0gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgY29tcG9uZW50cyA9IHRhZ3NbaC50eXBlXSB8fCBbXTtcbiAgICAgICAgICAgICAgICBjb21wb25lbnRzLnB1c2goaCk7XG4gICAgICAgICAgICAgICAgdGFnc1toLnR5cGVdID0gY29tcG9uZW50cztcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3QgdGl0bGVDb21wb25lbnQgPSB0YWdzLnRpdGxlID8gdGFncy50aXRsZVswXSA6IG51bGw7XG4gICAgICAgICAgICBsZXQgdGl0bGUgPSBcIlwiO1xuICAgICAgICAgICAgaWYgKHRpdGxlQ29tcG9uZW50KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBjaGlsZHJlbiB9ID0gdGl0bGVDb21wb25lbnQucHJvcHM7XG4gICAgICAgICAgICAgICAgdGl0bGUgPSB0eXBlb2YgY2hpbGRyZW4gPT09IFwic3RyaW5nXCIgPyBjaGlsZHJlbiA6IEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pID8gY2hpbGRyZW4uam9pbihcIlwiKSA6IFwiXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGl0bGUgIT09IGRvY3VtZW50LnRpdGxlKSBkb2N1bWVudC50aXRsZSA9IHRpdGxlO1xuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgIFwibWV0YVwiLFxuICAgICAgICAgICAgICAgIFwiYmFzZVwiLFxuICAgICAgICAgICAgICAgIFwibGlua1wiLFxuICAgICAgICAgICAgICAgIFwic3R5bGVcIixcbiAgICAgICAgICAgICAgICBcInNjcmlwdFwiXG4gICAgICAgICAgICBdLmZvckVhY2goKHR5cGUpPT57XG4gICAgICAgICAgICAgICAgdXBkYXRlRWxlbWVudHModHlwZSwgdGFnc1t0eXBlXSB8fCBbXSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH07XG59XG5cbmlmICgodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ2Z1bmN0aW9uJyB8fCAodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ29iamVjdCcgJiYgZXhwb3J0cy5kZWZhdWx0ICE9PSBudWxsKSkgJiYgdHlwZW9mIGV4cG9ydHMuZGVmYXVsdC5fX2VzTW9kdWxlID09PSAndW5kZWZpbmVkJykge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cy5kZWZhdWx0LCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gIE9iamVjdC5hc3NpZ24oZXhwb3J0cy5kZWZhdWx0LCBleHBvcnRzKTtcbiAgbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWhlYWQtbWFuYWdlci5qcy5tYXAiXSwibmFtZXMiOlsiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJleHBvcnRzIiwidmFsdWUiLCJtb2R1bGUiLCJET01BdHRyaWJ1dGVOYW1lcyIsImlzRXF1YWxOb2RlIiwiZGVmYXVsdCIsIl9leHBvcnQiLCJ0YXJnZXQiLCJhbGwiLCJuYW1lIiwiZW51bWVyYWJsZSIsImdldCIsImluaXRIZWFkTWFuYWdlciIsImFjY2VwdENoYXJzZXQiLCJjbGFzc05hbWUiLCJodG1sRm9yIiwiaHR0cEVxdWl2Iiwibm9Nb2R1bGUiLCJyZWFjdEVsZW1lbnRUb0RPTSIsInBhcmFtIiwidHlwZSIsInByb3BzIiwiZWwiLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJwIiwiaGFzT3duUHJvcGVydHkiLCJ1bmRlZmluZWQiLCJhdHRyIiwidG9Mb3dlckNhc2UiLCJzZXRBdHRyaWJ1dGUiLCJjaGlsZHJlbiIsImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIiwiaW5uZXJIVE1MIiwiX19odG1sIiwidGV4dENvbnRlbnQiLCJBcnJheSIsImlzQXJyYXkiLCJqb2luIiwib2xkVGFnIiwibmV3VGFnIiwiSFRNTEVsZW1lbnQiLCJub25jZSIsImdldEF0dHJpYnV0ZSIsImNsb25lVGFnIiwiY2xvbmVOb2RlIiwidXBkYXRlRWxlbWVudHMiLCJwcm9jZXNzIiwiZW52IiwiX19ORVhUX1NUUklDVF9ORVhUX0hFQUQiLCJjb21wb25lbnRzIiwiaGVhZEVsIiwicXVlcnlTZWxlY3RvciIsImhlYWRNZXRhVGFncyIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJvbGRUYWdzIiwibWV0YUNoYXJzZXQiLCJwdXNoIiwiaSIsImxlbmd0aCIsIl9oZWFkVGFnX3RhZ05hbWUiLCJtZXRhVGFnIiwiaGVhZFRhZyIsIm5leHRTaWJsaW5nIiwidGFnTmFtZSIsIm5ld1RhZ3MiLCJtYXAiLCJmaWx0ZXIiLCJrIiwibGVuIiwic3BsaWNlIiwiZm9yRWFjaCIsInQiLCJfdF9wYXJlbnROb2RlIiwicHJldmlvdXNTaWJsaW5nIiwiX3RfcGFyZW50Tm9kZTEiLCJwYXJlbnROb2RlIiwicmVtb3ZlQ2hpbGQiLCJfdF90YWdOYW1lIiwibWV0YSIsImNvbnRlbnQiLCJhcHBlbmRDaGlsZCIsImdldEVsZW1lbnRzQnlUYWdOYW1lIiwiaGVhZENvdW50RWwiLCJjb25zb2xlIiwiZXJyb3IiLCJoZWFkQ291bnQiLCJOdW1iZXIiLCJqIiwicHJldmlvdXNFbGVtZW50U2libGluZyIsIl9qX3RhZ05hbWUiLCJpbnNlcnRCZWZvcmUiLCJ0b1N0cmluZyIsIm1vdW50ZWRJbnN0YW5jZXMiLCJTZXQiLCJ1cGRhdGVIZWFkIiwiaGVhZCIsInRhZ3MiLCJoIiwiaHJlZiIsInRpdGxlQ29tcG9uZW50IiwidGl0bGUiLCJfX2VzTW9kdWxlIiwiYXNzaWduIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/head-manager.js\n")); /***/ }), /***/ "./node_modules/next/dist/client/index.js": /*!************************************************!*\ !*** ./node_modules/next/dist/client/index.js ***! \************************************************/ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval(__webpack_require__.ts("/* global location */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nconst _interop_require_wildcard = __webpack_require__(/*! @swc/helpers/_/_interop_require_wildcard */ \"./node_modules/@swc/helpers/esm/_interop_require_wildcard.js\");\nvar _s = $RefreshSig$(), _s1 = $RefreshSig$(), _s2 = $RefreshSig$();\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n version: function() {\n return version;\n },\n router: function() {\n return router;\n },\n emitter: function() {\n return emitter;\n },\n initialize: function() {\n return initialize;\n },\n hydrate: function() {\n return hydrate;\n }\n});\nconst _interop_require_default = __webpack_require__(/*! @swc/helpers/_/_interop_require_default */ \"./node_modules/@swc/helpers/esm/_interop_require_default.js\");\n__webpack_require__(/*! ../build/polyfills/polyfill-module */ \"./node_modules/next/dist/build/polyfills/polyfill-module.js\");\nconst _react = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! react */ \"./node_modules/react/index.js\"));\nconst _client = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! react-dom/client */ \"./node_modules/react-dom/client.js\"));\nconst _headmanagercontextsharedruntime = __webpack_require__(/*! ../shared/lib/head-manager-context.shared-runtime */ \"./node_modules/next/dist/shared/lib/head-manager-context.shared-runtime.js\");\nconst _mitt = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! ../shared/lib/mitt */ \"./node_modules/next/dist/shared/lib/mitt.js\"));\nconst _routercontextsharedruntime = __webpack_require__(/*! ../shared/lib/router-context.shared-runtime */ \"./node_modules/next/dist/shared/lib/router-context.shared-runtime.js\");\nconst _handlesmoothscroll = __webpack_require__(/*! ../shared/lib/router/utils/handle-smooth-scroll */ \"./node_modules/next/dist/shared/lib/router/utils/handle-smooth-scroll.js\");\nconst _isdynamic = __webpack_require__(/*! ../shared/lib/router/utils/is-dynamic */ \"./node_modules/next/dist/shared/lib/router/utils/is-dynamic.js\");\nconst _querystring = __webpack_require__(/*! ../shared/lib/router/utils/querystring */ \"./node_modules/next/dist/shared/lib/router/utils/querystring.js\");\nconst _runtimeconfigexternal = __webpack_require__(/*! ../shared/lib/runtime-config.external */ \"./node_modules/next/dist/shared/lib/runtime-config.external.js\");\nconst _utils = __webpack_require__(/*! ../shared/lib/utils */ \"./node_modules/next/dist/shared/lib/utils.js\");\nconst _portal = __webpack_require__(/*! ./portal */ \"./node_modules/next/dist/client/portal/index.js\");\nconst _headmanager = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! ./head-manager */ \"./node_modules/next/dist/client/head-manager.js\"));\nconst _pageloader = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! ./page-loader */ \"./node_modules/next/dist/client/page-loader.js\"));\nconst _performancerelayer = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! ./performance-relayer */ \"./node_modules/next/dist/client/performance-relayer.js\"));\nconst _routeannouncer = __webpack_require__(/*! ./route-announcer */ \"./node_modules/next/dist/client/route-announcer.js\");\nconst _router = __webpack_require__(/*! ./router */ \"./node_modules/next/dist/client/router.js\");\nconst _iserror = __webpack_require__(/*! ../lib/is-error */ \"./node_modules/next/dist/lib/is-error.js\");\nconst _imageconfigcontextsharedruntime = __webpack_require__(/*! ../shared/lib/image-config-context.shared-runtime */ \"./node_modules/next/dist/shared/lib/image-config-context.shared-runtime.js\");\nconst _removebasepath = __webpack_require__(/*! ./remove-base-path */ \"./node_modules/next/dist/client/remove-base-path.js\");\nconst _hasbasepath = __webpack_require__(/*! ./has-base-path */ \"./node_modules/next/dist/client/has-base-path.js\");\nconst _approutercontextsharedruntime = __webpack_require__(/*! ../shared/lib/app-router-context.shared-runtime */ \"./node_modules/next/dist/shared/lib/app-router-context.shared-runtime.js\");\nconst _adapters = __webpack_require__(/*! ../shared/lib/router/adapters */ \"./node_modules/next/dist/shared/lib/router/adapters.js\");\nconst _hooksclientcontextsharedruntime = __webpack_require__(/*! ../shared/lib/hooks-client-context.shared-runtime */ \"./node_modules/next/dist/shared/lib/hooks-client-context.shared-runtime.js\");\nconst _onrecoverableerror = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! ./on-recoverable-error */ \"./node_modules/next/dist/client/on-recoverable-error.js\"));\nconst _tracer = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! ./tracing/tracer */ \"./node_modules/next/dist/client/tracing/tracer.js\"));\nconst _reporttosocket = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! ./tracing/report-to-socket */ \"./node_modules/next/dist/client/tracing/report-to-socket.js\"));\nconst version = \"13.5.11\";\nlet router;\nconst emitter = (0, _mitt.default)();\nconst looseToArray = (input)=>[].slice.call(input);\nlet initialData;\nlet defaultLocale = undefined;\nlet asPath;\nlet pageLoader;\nlet appElement;\nlet headManager;\nlet initialMatchesMiddleware = false;\nlet lastAppProps;\nlet lastRenderReject;\nlet devClient;\nlet CachedApp, onPerfEntry;\nlet CachedComponent;\nclass Container extends _react.default.Component {\n componentDidCatch(componentErr, info) {\n this.props.fn(componentErr, info);\n }\n componentDidMount() {\n this.scrollToHash();\n // We need to replace the router state if:\n // - the page was (auto) exported and has a query string or search (hash)\n // - it was auto exported and is a dynamic route (to provide params)\n // - if it is a client-side skeleton (fallback render)\n // - if middleware matches the current page (may have rewrite params)\n // - if rewrites in next.config.js match (may have rewrite params)\n if (router.isSsr && (initialData.isFallback || initialData.nextExport && ((0, _isdynamic.isDynamicRoute)(router.pathname) || location.search || false || initialMatchesMiddleware) || initialData.props && initialData.props.__N_SSG && (location.search || false || initialMatchesMiddleware))) {\n // update query on mount for exported pages\n router.replace(router.pathname + \"?\" + String((0, _querystring.assign)((0, _querystring.urlQueryToSearchParams)(router.query), new URLSearchParams(location.search))), asPath, {\n // @ts-ignore\n // WARNING: `_h` is an internal option for handing Next.js\n // client-side hydration. Your app should _never_ use this property.\n // It may change at any time without notice.\n _h: 1,\n // Fallback pages must trigger the data fetch, so the transition is\n // not shallow.\n // Other pages (strictly updating query) happens shallowly, as data\n // requirements would already be present.\n shallow: !initialData.isFallback && !initialMatchesMiddleware\n }).catch((err)=>{\n if (!err.cancelled) throw err;\n });\n }\n }\n componentDidUpdate() {\n this.scrollToHash();\n }\n scrollToHash() {\n let { hash } = location;\n hash = hash && hash.substring(1);\n if (!hash) return;\n const el = document.getElementById(hash);\n if (!el) return;\n // If we call scrollIntoView() in here without a setTimeout\n // it won't scroll properly.\n setTimeout(()=>el.scrollIntoView(), 0);\n }\n render() {\n if (false) {} else {\n const { ReactDevOverlay } = __webpack_require__(/*! next/dist/compiled/@next/react-dev-overlay/dist/client */ \"./node_modules/next/dist/compiled/@next/react-dev-overlay/dist/client.js\");\n return /*#__PURE__*/ _react.default.createElement(ReactDevOverlay, null, this.props.children);\n }\n }\n}\nasync function initialize(opts) {\n if (opts === void 0) opts = {};\n _tracer.default.onSpanEnd(_reporttosocket.default);\n // This makes sure this specific lines are removed in production\n if (true) {\n devClient = opts.devClient;\n }\n initialData = JSON.parse(document.getElementById(\"__NEXT_DATA__\").textContent);\n window.__NEXT_DATA__ = initialData;\n defaultLocale = initialData.defaultLocale;\n const prefix = initialData.assetPrefix || \"\";\n self.__next_set_public_path__(\"\" + prefix + \"/_next/\") //eslint-disable-line\n ;\n // Initialize next/config with the environment configuration\n (0, _runtimeconfigexternal.setConfig)({\n serverRuntimeConfig: {},\n publicRuntimeConfig: initialData.runtimeConfig || {}\n });\n asPath = (0, _utils.getURL)();\n // make sure not to attempt stripping basePath for 404s\n if ((0, _hasbasepath.hasBasePath)(asPath)) {\n asPath = (0, _removebasepath.removeBasePath)(asPath);\n }\n if (false) {}\n if (initialData.scriptLoader) {\n const { initScriptLoader } = __webpack_require__(/*! ./script */ \"./node_modules/next/dist/client/script.js\");\n initScriptLoader(initialData.scriptLoader);\n }\n pageLoader = new _pageloader.default(initialData.buildId, prefix);\n const register = (param)=>{\n let [r, f] = param;\n return pageLoader.routeLoader.onEntrypoint(r, f);\n };\n if (window.__NEXT_P) {\n // Defer page registration for another tick. This will increase the overall\n // latency in hydrating the page, but reduce the total blocking time.\n window.__NEXT_P.map((p)=>setTimeout(()=>register(p), 0));\n }\n window.__NEXT_P = [];\n window.__NEXT_P.push = register;\n headManager = (0, _headmanager.default)();\n headManager.getIsSsr = ()=>{\n return router.isSsr;\n };\n appElement = document.getElementById(\"__next\");\n return {\n assetPrefix: prefix\n };\n}\nfunction renderApp(App, appProps) {\n return /*#__PURE__*/ _react.default.createElement(App, appProps);\n}\nfunction AppContainer(param) {\n _s();\n let { children } = param;\n // Create a memoized value for next/navigation router context.\n const adaptedForAppRouter = _react.default.useMemo(()=>{\n return (0, _adapters.adaptForAppRouterInstance)(router);\n }, []);\n var _self___NEXT_DATA___autoExport;\n return /*#__PURE__*/ _react.default.createElement(Container, {\n fn: (error)=>// eslint-disable-next-line @typescript-eslint/no-use-before-define\n renderError({\n App: CachedApp,\n err: error\n }).catch((err)=>console.error(\"Error rendering page: \", err))\n }, /*#__PURE__*/ _react.default.createElement(_approutercontextsharedruntime.AppRouterContext.Provider, {\n value: adaptedForAppRouter\n }, /*#__PURE__*/ _react.default.createElement(_hooksclientcontextsharedruntime.SearchParamsContext.Provider, {\n value: (0, _adapters.adaptForSearchParams)(router)\n }, /*#__PURE__*/ _react.default.createElement(_adapters.PathnameContextProviderAdapter, {\n router: router,\n isAutoExport: (_self___NEXT_DATA___autoExport = self.__NEXT_DATA__.autoExport) != null ? _self___NEXT_DATA___autoExport : false\n }, /*#__PURE__*/ _react.default.createElement(_hooksclientcontextsharedruntime.PathParamsContext.Provider, {\n value: (0, _adapters.adaptForPathParams)(router)\n }, /*#__PURE__*/ _react.default.createElement(_routercontextsharedruntime.RouterContext.Provider, {\n value: (0, _router.makePublicRouterInstance)(router)\n }, /*#__PURE__*/ _react.default.createElement(_headmanagercontextsharedruntime.HeadManagerContext.Provider, {\n value: headManager\n }, /*#__PURE__*/ _react.default.createElement(_imageconfigcontextsharedruntime.ImageConfigContext.Provider, {\n value: {\"deviceSizes\":[640,750,828,1080,1200,1920,2048,3840],\"imageSizes\":[16,32,48,64,96,128,256,384],\"path\":\"/_next/image\",\"loader\":\"default\",\"dangerouslyAllowSVG\":false,\"unoptimized\":false,\"domains\":[\"images.unsplash.com\",\"localhost\"],\"remotePatterns\":[]}\n }, children))))))));\n}\n_s(AppContainer, \"F6BSfrFQNeqenuPnUMVY/6gI8uE=\");\n_c = AppContainer;\nconst wrapApp = (App)=>(wrappedAppProps)=>{\n const appProps = {\n ...wrappedAppProps,\n Component: CachedComponent,\n err: initialData.err,\n router\n };\n return /*#__PURE__*/ _react.default.createElement(AppContainer, null, renderApp(App, appProps));\n };\n// This method handles all runtime and debug errors.\n// 404 and 500 errors are special kind of errors\n// and they are still handle via the main render method.\nfunction renderError(renderErrorProps) {\n let { App, err } = renderErrorProps;\n // In development runtime errors are caught by our overlay\n // In production we catch runtime errors using componentDidCatch which will trigger renderError\n if (true) {\n // A Next.js rendering runtime error is always unrecoverable\n // FIXME: let's make this recoverable (error in GIP client-transition)\n devClient.onUnrecoverableError();\n // We need to render an empty so that the `` can\n // render itself.\n // TODO: Fix disabled eslint rule\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n return doRender({\n App: ()=>null,\n props: {},\n Component: ()=>null,\n styleSheets: []\n });\n }\n // Make sure we log the error to the console, otherwise users can't track down issues.\n console.error(err);\n console.error(\"A client-side exception has occurred, see here for more info: https://nextjs.org/docs/messages/client-side-exception-occurred\");\n return pageLoader.loadPage(\"/_error\").then((param)=>{\n let { page: ErrorComponent, styleSheets } = param;\n return (lastAppProps == null ? void 0 : lastAppProps.Component) === ErrorComponent ? Promise.resolve().then(()=>/*#__PURE__*/ _interop_require_wildcard._(__webpack_require__(/*! ../pages/_error */ \"./node_modules/next/dist/pages/_error.js\"))).then((errorModule)=>{\n return Promise.resolve().then(()=>/*#__PURE__*/ _interop_require_wildcard._(__webpack_require__(/*! ../pages/_app */ \"./node_modules/next/dist/pages/_app.js\"))).then((appModule)=>{\n App = appModule.default;\n renderErrorProps.App = App;\n return errorModule;\n });\n }).then((m)=>({\n ErrorComponent: m.default,\n styleSheets: []\n })) : {\n ErrorComponent,\n styleSheets\n };\n }).then((param)=>{\n let { ErrorComponent, styleSheets } = param;\n var _renderErrorProps_props;\n // In production we do a normal render with the `ErrorComponent` as component.\n // If we've gotten here upon initial render, we can use the props from the server.\n // Otherwise, we need to call `getInitialProps` on `App` before mounting.\n const AppTree = wrapApp(App);\n const appCtx = {\n Component: ErrorComponent,\n AppTree,\n router,\n ctx: {\n err,\n pathname: initialData.page,\n query: initialData.query,\n asPath,\n AppTree\n }\n };\n return Promise.resolve(((_renderErrorProps_props = renderErrorProps.props) == null ? void 0 : _renderErrorProps_props.err) ? renderErrorProps.props : (0, _utils.loadGetInitialProps)(App, appCtx)).then((initProps)=>// eslint-disable-next-line @typescript-eslint/no-use-before-define\n doRender({\n ...renderErrorProps,\n err,\n Component: ErrorComponent,\n styleSheets,\n props: initProps\n }));\n });\n}\n// Dummy component that we render as a child of Root so that we can\n// toggle the correct styles before the page is rendered.\nfunction Head(param) {\n _s1();\n let { callback } = param;\n // We use `useLayoutEffect` to guarantee the callback is executed\n // as soon as React flushes the update.\n _react.default.useLayoutEffect(()=>callback(), [\n callback\n ]);\n return null;\n}\n_s1(Head, \"n7/vCynhJvM+pLkyL2DMQUF0odM=\");\n_c1 = Head;\nconst performanceMarks = {\n navigationStart: \"navigationStart\",\n beforeRender: \"beforeRender\",\n afterRender: \"afterRender\",\n afterHydrate: \"afterHydrate\",\n routeChange: \"routeChange\"\n};\nconst performanceMeasures = {\n hydration: \"Next.js-hydration\",\n beforeHydration: \"Next.js-before-hydration\",\n routeChangeToRender: \"Next.js-route-change-to-render\",\n render: \"Next.js-render\"\n};\nlet reactRoot = null;\n// On initial render a hydrate should always happen\nlet shouldHydrate = true;\nfunction clearMarks() {\n [\n performanceMarks.beforeRender,\n performanceMarks.afterHydrate,\n performanceMarks.afterRender,\n performanceMarks.routeChange\n ].forEach((mark)=>performance.clearMarks(mark));\n}\nfunction markHydrateComplete() {\n if (!_utils.ST) return;\n performance.mark(performanceMarks.afterHydrate) // mark end of hydration\n ;\n const hasBeforeRenderMark = performance.getEntriesByName(performanceMarks.beforeRender, \"mark\").length;\n if (hasBeforeRenderMark) {\n const beforeHydrationMeasure = performance.measure(performanceMeasures.beforeHydration, performanceMarks.navigationStart, performanceMarks.beforeRender);\n const hydrationMeasure = performance.measure(performanceMeasures.hydration, performanceMarks.beforeRender, performanceMarks.afterHydrate);\n if ( true && // Old versions of Safari don't return `PerformanceMeasure`s from `performance.measure()`\n beforeHydrationMeasure !== undefined && hydrationMeasure !== undefined) {\n _tracer.default.startSpan(\"navigation-to-hydration\", {\n startTime: performance.timeOrigin + beforeHydrationMeasure.startTime,\n attributes: {\n pathname: location.pathname,\n query: location.search\n }\n }).end(performance.timeOrigin + hydrationMeasure.startTime + hydrationMeasure.duration);\n }\n }\n if (onPerfEntry) {\n performance.getEntriesByName(performanceMeasures.hydration).forEach(onPerfEntry);\n }\n clearMarks();\n}\nfunction markRenderComplete() {\n if (!_utils.ST) return;\n performance.mark(performanceMarks.afterRender) // mark end of render\n ;\n const navStartEntries = performance.getEntriesByName(performanceMarks.routeChange, \"mark\");\n if (!navStartEntries.length) return;\n const hasBeforeRenderMark = performance.getEntriesByName(performanceMarks.beforeRender, \"mark\").length;\n if (hasBeforeRenderMark) {\n performance.measure(performanceMeasures.routeChangeToRender, navStartEntries[0].name, performanceMarks.beforeRender);\n performance.measure(performanceMeasures.render, performanceMarks.beforeRender, performanceMarks.afterRender);\n if (onPerfEntry) {\n performance.getEntriesByName(performanceMeasures.render).forEach(onPerfEntry);\n performance.getEntriesByName(performanceMeasures.routeChangeToRender).forEach(onPerfEntry);\n }\n }\n clearMarks();\n [\n performanceMeasures.routeChangeToRender,\n performanceMeasures.render\n ].forEach((measure)=>performance.clearMeasures(measure));\n}\nfunction renderReactElement(domEl, fn) {\n // mark start of hydrate/render\n if (_utils.ST) {\n performance.mark(performanceMarks.beforeRender);\n }\n const reactEl = fn(shouldHydrate ? markHydrateComplete : markRenderComplete);\n if (!reactRoot) {\n // Unlike with createRoot, you don't need a separate root.render() call here\n reactRoot = _client.default.hydrateRoot(domEl, reactEl, {\n onRecoverableError: _onrecoverableerror.default\n });\n // TODO: Remove shouldHydrate variable when React 18 is stable as it can depend on `reactRoot` existing\n shouldHydrate = false;\n } else {\n const startTransition = _react.default.startTransition;\n startTransition(()=>{\n reactRoot.render(reactEl);\n });\n }\n}\nfunction Root(param) {\n _s2();\n let { callbacks, children } = param;\n // We use `useLayoutEffect` to guarantee the callbacks are executed\n // as soon as React flushes the update\n _react.default.useLayoutEffect(()=>callbacks.forEach((callback)=>callback()), [\n callbacks\n ]);\n // We should ask to measure the Web Vitals after rendering completes so we\n // don't cause any hydration delay:\n _react.default.useEffect(()=>{\n (0, _performancerelayer.default)(onPerfEntry);\n }, []);\n if (false) {}\n return children;\n}\n_s2(Root, \"Gjgl5rfcc2T4sFnfEMfRvL6K4Q4=\");\n_c2 = Root;\nfunction doRender(input) {\n let { App, Component, props, err } = input;\n let styleSheets = \"initial\" in input ? undefined : input.styleSheets;\n Component = Component || lastAppProps.Component;\n props = props || lastAppProps.props;\n const appProps = {\n ...props,\n Component,\n err,\n router\n };\n // lastAppProps has to be set before ReactDom.render to account for ReactDom throwing an error.\n lastAppProps = appProps;\n let canceled = false;\n let resolvePromise;\n const renderPromise = new Promise((resolve, reject)=>{\n if (lastRenderReject) {\n lastRenderReject();\n }\n resolvePromise = ()=>{\n lastRenderReject = null;\n resolve();\n };\n lastRenderReject = ()=>{\n canceled = true;\n lastRenderReject = null;\n const error = new Error(\"Cancel rendering route\");\n error.cancelled = true;\n reject(error);\n };\n });\n // This function has a return type to ensure it doesn't start returning a\n // Promise. It should remain synchronous.\n function onStart() {\n if (!styleSheets || // We use `style-loader` in development, so we don't need to do anything\n // unless we're in production:\n \"development\" !== \"production\") {\n return false;\n }\n const currentStyleTags = looseToArray(document.querySelectorAll(\"style[data-n-href]\"));\n const currentHrefs = new Set(currentStyleTags.map((tag)=>tag.getAttribute(\"data-n-href\")));\n const noscript = document.querySelector(\"noscript[data-n-css]\");\n const nonce = noscript == null ? void 0 : noscript.getAttribute(\"data-n-css\");\n styleSheets.forEach((param)=>{\n let { href, text } = param;\n if (!currentHrefs.has(href)) {\n const styleTag = document.createElement(\"style\");\n styleTag.setAttribute(\"data-n-href\", href);\n styleTag.setAttribute(\"media\", \"x\");\n if (nonce) {\n styleTag.setAttribute(\"nonce\", nonce);\n }\n document.head.appendChild(styleTag);\n styleTag.appendChild(document.createTextNode(text));\n }\n });\n return true;\n }\n function onHeadCommit() {\n if (// unless we're in production:\n false) {}\n if (input.scroll) {\n const { x, y } = input.scroll;\n (0, _handlesmoothscroll.handleSmoothScroll)(()=>{\n window.scrollTo(x, y);\n });\n }\n }\n function onRootCommit() {\n resolvePromise();\n }\n onStart();\n const elem = /*#__PURE__*/ _react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/ _react.default.createElement(Head, {\n callback: onHeadCommit\n }), /*#__PURE__*/ _react.default.createElement(AppContainer, null, renderApp(App, appProps), /*#__PURE__*/ _react.default.createElement(_portal.Portal, {\n type: \"next-route-announcer\"\n }, /*#__PURE__*/ _react.default.createElement(_routeannouncer.RouteAnnouncer, null))));\n // We catch runtime errors using componentDidCatch which will trigger renderError\n renderReactElement(appElement, (callback)=>/*#__PURE__*/ _react.default.createElement(Root, {\n callbacks: [\n callback,\n onRootCommit\n ]\n }, true ? /*#__PURE__*/ _react.default.createElement(_react.default.StrictMode, null, elem) : 0));\n return renderPromise;\n}\nasync function render(renderingProps) {\n if (renderingProps.err) {\n await renderError(renderingProps);\n return;\n }\n try {\n await doRender(renderingProps);\n } catch (err) {\n const renderErr = (0, _iserror.getProperError)(err);\n // bubble up cancelation errors\n if (renderErr.cancelled) {\n throw renderErr;\n }\n if (true) {\n // Ensure this error is displayed in the overlay in development\n setTimeout(()=>{\n throw renderErr;\n });\n }\n await renderError({\n ...renderingProps,\n err: renderErr\n });\n }\n}\nasync function hydrate(opts) {\n let initialErr = initialData.err;\n try {\n const appEntrypoint = await pageLoader.routeLoader.whenEntrypoint(\"/_app\");\n if (\"error\" in appEntrypoint) {\n throw appEntrypoint.error;\n }\n const { component: app, exports: mod } = appEntrypoint;\n CachedApp = app;\n if (mod && mod.reportWebVitals) {\n onPerfEntry = (param)=>{\n let { id, name, startTime, value, duration, entryType, entries, attribution } = param;\n // Combines timestamp with random number for unique ID\n const uniqueID = Date.now() + \"-\" + (Math.floor(Math.random() * (9e12 - 1)) + 1e12);\n let perfStartEntry;\n if (entries && entries.length) {\n perfStartEntry = entries[0].startTime;\n }\n const webVitals = {\n id: id || uniqueID,\n name,\n startTime: startTime || perfStartEntry,\n value: value == null ? duration : value,\n label: entryType === \"mark\" || entryType === \"measure\" ? \"custom\" : \"web-vital\"\n };\n if (attribution) {\n webVitals.attribution = attribution;\n }\n mod.reportWebVitals(webVitals);\n };\n }\n const pageEntrypoint = // error, so we need to skip waiting for the entrypoint.\n true && initialData.err ? {\n error: initialData.err\n } : await pageLoader.routeLoader.whenEntrypoint(initialData.page);\n if (\"error\" in pageEntrypoint) {\n throw pageEntrypoint.error;\n }\n CachedComponent = pageEntrypoint.component;\n if (true) {\n const { isValidElementType } = __webpack_require__(/*! next/dist/compiled/react-is */ \"./node_modules/next/dist/compiled/react-is/index.js\");\n if (!isValidElementType(CachedComponent)) {\n throw new Error('The default export is not a React Component in page: \"' + initialData.page + '\"');\n }\n }\n } catch (error) {\n // This catches errors like throwing in the top level of a module\n initialErr = (0, _iserror.getProperError)(error);\n }\n if (true) {\n const { getServerError } = __webpack_require__(/*! next/dist/compiled/@next/react-dev-overlay/dist/client */ \"./node_modules/next/dist/compiled/@next/react-dev-overlay/dist/client.js\");\n // Server-side runtime errors need to be re-thrown on the client-side so\n // that the overlay is rendered.\n if (initialErr) {\n if (initialErr === initialData.err) {\n setTimeout(()=>{\n let error;\n try {\n // Generate a new error object. We `throw` it because some browsers\n // will set the `stack` when thrown, and we want to ensure ours is\n // not overridden when we re-throw it below.\n throw new Error(initialErr.message);\n } catch (e) {\n error = e;\n }\n error.name = initialErr.name;\n error.stack = initialErr.stack;\n throw getServerError(error, initialErr.source);\n });\n } else {\n setTimeout(()=>{\n throw initialErr;\n });\n }\n }\n }\n if (window.__NEXT_PRELOADREADY) {\n await window.__NEXT_PRELOADREADY(initialData.dynamicIds);\n }\n router = (0, _router.createRouter)(initialData.page, initialData.query, asPath, {\n initialProps: initialData.props,\n pageLoader,\n App: CachedApp,\n Component: CachedComponent,\n wrapApp,\n err: initialErr,\n isFallback: Boolean(initialData.isFallback),\n subscription: (info, App, scroll)=>render(Object.assign({}, info, {\n App,\n scroll\n })),\n locale: initialData.locale,\n locales: initialData.locales,\n defaultLocale,\n domainLocales: initialData.domainLocales,\n isPreview: initialData.isPreview\n });\n initialMatchesMiddleware = await router._initialMatchesMiddlewarePromise;\n const renderCtx = {\n App: CachedApp,\n initial: true,\n Component: CachedComponent,\n props: initialData.props,\n err: initialErr\n };\n if (opts == null ? void 0 : opts.beforeRender) {\n await opts.beforeRender();\n }\n render(renderCtx);\n}\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=index.js.map\nvar _c, _c1, _c2;\n$RefreshReg$(_c, \"AppContainer\");\n$RefreshReg$(_c1, \"Head\");\n$RefreshReg$(_c2, \"Root\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9pbmRleC5qcyIsIm1hcHBpbmdzIjoiQUFBQSxtQkFBbUIsR0FBZ0I7Ozs7OztBQUNuQ0EsOENBQTZDO0lBQ3pDRyxPQUFPO0FBQ1gsQ0FBQyxFQUFDO0FBQ0YsS0FBTUMsQ0FBQUEsQ0FNTjtBQUNBLFNBQVNNLFFBQVFDLE1BQU0sRUFBRUMsR0FBRztJQUN4QixJQUFJLElBQUlDLFFBQVFELElBQUlaLE9BQU9DLGNBQWMsQ0FBQ1UsUUFBUUUsTUFBTTtRQUNwREMsWUFBWTtRQUNaQyxLQUFLSCxHQUFHLENBQUNDLEtBQUs7SUFDbEI7QUFDSjtBQUNBSCxRQUFRUixTQUFTO0lBQ2JHLFNBQVM7UUFDTCxPQUFPQTtJQUNYO0lBQ0FDLFFBQVE7UUFDSixPQUFPQTtJQUNYO0lBQ0FDLFNBQVM7UUFDTCxPQUFPQTtJQUNYO0lBQ0FDLFlBQVk7UUFDUixPQUFPQTtJQUNYO0lBQ0FDLFNBQVM7UUFDTCxPQUFPQTtJQUNYO0FBQ0o7QUFDQSxNQUFNTywyQkFBMkJDLG1CQUFPQSxDQUFDLDRHQUF5QztBQUNsRkEsbUJBQU9BLENBQUMsdUdBQW9DO0FBQzVDLE1BQU1DLFNBQVMsV0FBVyxHQUFHRix5QkFBeUJHLENBQUMsQ0FBQ0YsbUJBQU9BLENBQUMsNENBQU87QUFDdkUsTUFBTUcsVUFBVSxXQUFXLEdBQUdKLHlCQUF5QkcsQ0FBQyxDQUFDRixtQkFBT0EsQ0FBQyw0REFBa0I7QUFDbkYsTUFBTUksbUNBQW1DSixtQkFBT0EsQ0FBQyxxSUFBbUQ7QUFDcEcsTUFBTUssUUFBUSxXQUFXLEdBQUdOLHlCQUF5QkcsQ0FBQyxDQUFDRixtQkFBT0EsQ0FBQyx1RUFBb0I7QUFDbkYsTUFBTU0sOEJBQThCTixtQkFBT0EsQ0FBQyx5SEFBNkM7QUFDekYsTUFBTU8sc0JBQXNCUCxtQkFBT0EsQ0FBQyxpSUFBaUQ7QUFDckYsTUFBTVEsYUFBYVIsbUJBQU9BLENBQUMsNkdBQXVDO0FBQ2xFLE1BQU1TLGVBQWVULG1CQUFPQSxD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Q0FBQ3BRLE1BQU1xRixLQUFLK0gsU0FBU2pMLE9BQU92RyxPQUFPc0YsTUFBTSxDQUFDLENBQUMsR0FBR2xCLE1BQU07Z0JBQzFEcUY7Z0JBQ0ErSDtZQUNKO1FBQ0psSixRQUFRcEYsWUFBWW9GLE1BQU07UUFDMUJKLFNBQVNoRixZQUFZZ0YsT0FBTztRQUM1Qi9FO1FBQ0FzUixlQUFldlIsWUFBWXVSLGFBQWE7UUFDeENDLFdBQVd4UixZQUFZd1IsU0FBUztJQUNwQztJQUNBalIsMkJBQTJCLE1BQU1uRCxPQUFPcVUsZ0NBQWdDO0lBQ3hFLE1BQU1DLFlBQVk7UUFDZG5MLEtBQUs1RjtRQUNMZ1IsU0FBUztRQUNUNVEsV0FBV0Y7UUFDWE0sT0FBT25CLFlBQVltQixLQUFLO1FBQ3hCd0IsS0FBSzJNO0lBQ1Q7SUFDQSxJQUFJN0wsUUFBUSxPQUFPLEtBQUssSUFBSUEsS0FBS2dHLFlBQVksRUFBRTtRQUMzQyxNQUFNaEcsS0FBS2dHLFlBQVk7SUFDM0I7SUFDQXBHLE9BQU9xTztBQUNYO0FBRUEsSUFBSSxDQUFDLE9BQU8xVSxRQUFRMkMsT0FBTyxLQUFLLGNBQWUsT0FBTzNDLFFBQVEyQyxPQUFPLEtBQUssWUFBWTNDLFFBQVEyQyxPQUFPLEtBQUssSUFBSSxLQUFNLE9BQU8zQyxRQUFRMkMsT0FBTyxDQUFDaVMsVUFBVSxLQUFLLGFBQWE7SUFDcks5VSxPQUFPQyxjQUFjLENBQUNDLFFBQVEyQyxPQUFPLEVBQUUsY0FBYztRQUFFMUMsT0FBTztJQUFLO0lBQ25FSCxPQUFPc0YsTUFBTSxDQUFDcEYsUUFBUTJDLE9BQU8sRUFBRTNDO0lBQy9CRSxPQUFPRixPQUFPLEdBQUdBLFFBQVEyQyxPQUFPO0FBQ2xDLEVBRUEsaUNBQWlDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2luZGV4LmpzPzQ2Y2IiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZ2xvYmFsIGxvY2F0aW9uICovIFwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuMCAmJiAobW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgdmVyc2lvbjogbnVsbCxcbiAgICByb3V0ZXI6IG51bGwsXG4gICAgZW1pdHRlcjogbnVsbCxcbiAgICBpbml0aWFsaXplOiBudWxsLFxuICAgIGh5ZHJhdGU6IG51bGxcbn0pO1xuZnVuY3Rpb24gX2V4cG9ydCh0YXJnZXQsIGFsbCkge1xuICAgIGZvcih2YXIgbmFtZSBpbiBhbGwpT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgbmFtZSwge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBnZXQ6IGFsbFtuYW1lXVxuICAgIH0pO1xufVxuX2V4cG9ydChleHBvcnRzLCB7XG4gICAgdmVyc2lvbjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB2ZXJzaW9uO1xuICAgIH0sXG4gICAgcm91dGVyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHJvdXRlcjtcbiAgICB9LFxuICAgIGVtaXR0ZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gZW1pdHRlcjtcbiAgICB9LFxuICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gaW5pdGlhbGl6ZTtcbiAgICB9LFxuICAgIGh5ZHJhdGU6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gaHlkcmF0ZTtcbiAgICB9XG59KTtcbmNvbnN0IF9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdCA9IHJlcXVpcmUoXCJAc3djL2hlbHBlcnMvXy9faW50ZXJvcF9yZXF1aXJlX2RlZmF1bHRcIik7XG5yZXF1aXJlKFwiLi4vYnVpbGQvcG9seWZpbGxzL3BvbHlmaWxsLW1vZHVsZVwiKTtcbmNvbnN0IF9yZWFjdCA9IC8qI19fUFVSRV9fKi8gX2ludGVyb3BfcmVxdWlyZV9kZWZhdWx0Ll8ocmVxdWlyZShcInJlYWN0XCIpKTtcbmNvbnN0IF9jbGllbnQgPSAvKiNfX1BVUkVfXyovIF9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdC5fKHJlcXVpcmUoXCJyZWFjdC1kb20vY2xpZW50XCIpKTtcbmNvbnN0IF9oZWFkbWFuYWdlcmNvbnRleHRzaGFyZWRydW50aW1lID0gcmVxdWlyZShcIi4uL3NoYXJlZC9saWIvaGVhZC1tYW5hZ2VyLWNvbnRleHQuc2hhcmVkLXJ1bnRpbWVcIik7XG5jb25zdCBfbWl0dCA9IC8qI19fUFVSRV9fKi8gX2ludGVyb3BfcmVxdWlyZV9kZWZhdWx0Ll8ocmVxdWlyZShcIi4uL3NoYXJlZC9saWIvbWl0dFwiKSk7XG5jb25zdCBfcm91dGVyY29udGV4dHNoYXJlZHJ1bnRpbWUgPSByZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi9yb3V0ZXItY29udGV4dC5zaGFyZWQtcnVudGltZVwiKTtcbmNvbnN0IF9oYW5kbGVzbW9vdGhzY3JvbGwgPSByZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvaGFuZGxlLXNtb290aC1zY3JvbGxcIik7XG5jb25zdCBfaXNkeW5hbWljID0gcmVxdWlyZShcIi4uL3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL2lzLWR5bmFtaWNcIik7XG5jb25zdCBfcXVlcnlzdHJpbmcgPSByZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvcXVlcnlzdHJpbmdcIik7XG5jb25zdCBfcnVudGltZWNvbmZpZ2V4dGVybmFsID0gcmVxdWlyZShcIi4uL3NoYXJlZC9saWIvcnVudGltZS1jb25maWcuZXh0ZXJuYWxcIik7XG5jb25zdCBfdXRpbHMgPSByZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi91dGlsc1wiKTtcbmNvbnN0IF9wb3J0YWwgPSByZXF1aXJlKFwiLi9wb3J0YWxcIik7XG5jb25zdCBfaGVhZG1hbmFnZXIgPSAvKiNfX1BVUkVfXyovIF9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdC5fKHJlcXVpcmUoXCIuL2hlYWQtbWFuYWdlclwiKSk7XG5jb25zdCBfcGFnZWxvYWRlciA9IC8qI19fUFVSRV9fKi8gX2ludGVyb3BfcmVxdWlyZV9kZWZhdWx0Ll8ocmVxdWlyZShcIi4vcGFnZS1sb2FkZXJcIikpO1xuY29uc3QgX3BlcmZvcm1hbmNlcmVsYXllciA9IC8qI19fUFVSRV9fKi8gX2ludGVyb3BfcmVxdWlyZV9kZWZhdWx0Ll8ocmVxdWlyZShcIi4vcGVyZm9ybWFuY2UtcmVsYXllclwiKSk7XG5jb25zdCBfcm91dGVhbm5vdW5jZXIgPSByZXF1aXJlKFwiLi9yb3V0ZS1hbm5vdW5jZXJcIik7XG5jb25zdCBfcm91dGVyID0gcmVxdWlyZShcIi4vcm91dGVyXCIpO1xuY29uc3QgX2lzZXJyb3IgPSByZXF1aXJlKFwiLi4vbGliL2lzLWVycm9yXCIpO1xuY29uc3QgX2ltYWdlY29uZmlnY29udGV4dHNoYXJlZHJ1bnRpbWUgPSByZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi9pbWFnZS1jb25maWctY29udGV4dC5zaGFyZWQtcnVudGltZVwiKTtcbmNvbnN0IF9yZW1vdmViYXNlcGF0aCA9IHJlcXVpcmUoXCIuL3JlbW92ZS1iYXNlLXBhdGhcIik7XG5jb25zdCBfaGFzYmFzZXBhdGggPSByZXF1aXJlKFwiLi9oYXMtYmFzZS1wYXRoXCIpO1xuY29uc3QgX2FwcHJvdXRlcmNvbnRleHRzaGFyZWRydW50aW1lID0gcmVxdWlyZShcIi4uL3NoYXJlZC9saWIvYXBwLXJvdXRlci1jb250ZXh0LnNoYXJlZC1ydW50aW1lXCIpO1xuY29uc3QgX2FkYXB0ZXJzID0gcmVxdWlyZShcIi4uL3NoYXJlZC9saWIvcm91dGVyL2FkYXB0ZXJzXCIpO1xuY29uc3QgX2hvb2tzY2xpZW50Y29udGV4dHNoYXJlZHJ1bnRpbWUgPSByZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi9ob29rcy1jbGllbnQtY29udGV4dC5zaGFyZWQtcnVudGltZVwiKTtcbmNvbnN0IF9vbnJlY292ZXJhYmxlZXJyb3IgPSAvKiNfX1BVUkVfXyovIF9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdC5fKHJlcXVpcmUoXCIuL29uLXJlY292ZXJhYmxlLWVycm9yXCIpKTtcbmNvbnN0IF90cmFjZXIgPSAvKiNfX1BVUkVfXyovIF9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdC5fKHJlcXVpcmUoXCIuL3RyYWNpbmcvdHJhY2VyXCIpKTtcbmNvbnN0IF9yZXBvcnR0b3NvY2tldCA9IC8qI19fUFVSRV9fKi8gX2ludGVyb3BfcmVxdWlyZV9kZWZhdWx0Ll8ocmVxdWlyZShcIi4vdHJhY2luZy9yZXBvcnQtdG8tc29ja2V0XCIpKTtcbmNvbnN0IHZlcnNpb24gPSBcIjEzLjUuMTFcIjtcbmxldCByb3V0ZXI7XG5jb25zdCBlbWl0dGVyID0gKDAsIF9taXR0LmRlZmF1bHQpKCk7XG5jb25zdCBsb29zZVRvQXJyYXkgPSAoaW5wdXQpPT5bXS5zbGljZS5jYWxsKGlucHV0KTtcbmxldCBpbml0aWFsRGF0YTtcbmxldCBkZWZhdWx0TG9jYWxlID0gdW5kZWZpbmVkO1xubGV0IGFzUGF0aDtcbmxldCBwYWdlTG9hZGVyO1xubGV0IGFwcEVsZW1lbnQ7XG5sZXQgaGVhZE1hbmFnZXI7XG5sZXQgaW5pdGlhbE1hdGNoZXNNaWRkbGV3YXJlID0gZmFsc2U7XG5sZXQgbGFzdEFwcFByb3BzO1xubGV0IGxhc3RSZW5kZXJSZWplY3Q7XG5sZXQgZGV2Q2xpZW50O1xubGV0IENhY2hlZEFwcCwgb25QZXJmRW50cnk7XG5sZXQgQ2FjaGVkQ29tcG9uZW50O1xuY2xhc3MgQ29udGFpbmVyIGV4dGVuZHMgX3JlYWN0LmRlZmF1bHQuQ29tcG9uZW50IHtcbiAgICBjb21wb25lbnREaWRDYXRjaChjb21wb25lbnRFcnIsIGluZm8pIHtcbiAgICAgICAgdGhpcy5wcm9wcy5mbihjb21wb25lbnRFcnIsIGluZm8pO1xuICAgIH1cbiAgICBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICAgICAgdGhpcy5zY3JvbGxUb0hhc2goKTtcbiAgICAgICAgLy8gV2UgbmVlZCB0byByZXBsYWNlIHRoZSByb3V0ZXIgc3RhdGUgaWY6XG4gICAgICAgIC8vIC0gdGhlIHBhZ2Ugd2FzIChhdXRvKSBleHBvcnRlZCBhbmQgaGFzIGEgcXVlcnkgc3RyaW5nIG9yIHNlYXJjaCAoaGFzaClcbiAgICAgICAgLy8gLSBpdCB3YXMgYXV0byBleHBvcnRlZCBhbmQgaXMgYSBkeW5hbWljIHJvdXRlICh0byBwcm92aWRlIHBhcmFtcylcbiAgICAgICAgLy8gLSBpZiBpdCBpcyBhIGNsaWVudC1zaWRlIHNrZWxldG9uIChmYWxsYmFjayByZW5kZXIpXG4gICAgICAgIC8vIC0gaWYgbWlkZGxld2FyZSBtYXRjaGVzIHRoZSBjdXJyZW50IHBhZ2UgKG1heSBoYXZlIHJld3JpdGUgcGFyYW1zKVxuICAgICAgICAvLyAtIGlmIHJld3JpdGVzIGluIG5leHQuY29uZmlnLmpzIG1hdGNoIChtYXkgaGF2ZSByZXdyaXRlIHBhcmFtcylcbiAgICAgICAgaWYgKHJvdXRlci5pc1NzciAmJiAoaW5pdGlhbERhdGEuaXNGYWxsYmFjayB8fCBpbml0aWFsRGF0YS5uZXh0RXhwb3J0ICYmICgoMCwgX2lzZHluYW1pYy5pc0R5bmFtaWNSb3V0ZSkocm91dGVyLnBhdGhuYW1lKSB8fCBsb2NhdGlvbi5zZWFyY2ggfHwgcHJvY2Vzcy5lbnYuX19ORVhUX0hBU19SRVdSSVRFUyB8fCBpbml0aWFsTWF0Y2hlc01pZGRsZXdhcmUpIHx8IGluaXRpYWxEYXRhLnByb3BzICYmIGluaXRpYWxEYXRhLnByb3BzLl9fTl9TU0cgJiYgKGxvY2F0aW9uLnNlYXJjaCB8fCBwcm9jZXNzLmVudi5fX05FWFRfSEFTX1JFV1JJVEVTIHx8IGluaXRpYWxNYXRjaGVzTWlkZGxld2FyZSkpKSB7XG4gICAgICAgICAgICAvLyB1cGRhdGUgcXVlcnkgb24gbW91bnQgZm9yIGV4cG9ydGVkIHBhZ2VzXG4gICAgICAgICAgICByb3V0ZXIucmVwbGFjZShyb3V0ZXIucGF0aG5hbWUgKyBcIj9cIiArIFN0cmluZygoMCwgX3F1ZXJ5c3RyaW5nLmFzc2lnbikoKDAsIF9xdWVyeXN0cmluZy51cmxRdWVyeVRvU2VhcmNoUGFyYW1zKShyb3V0ZXIucXVlcnkpLCBuZXcgVVJMU2VhcmNoUGFyYW1zKGxvY2F0aW9uLnNlYXJjaCkpKSwgYXNQYXRoLCB7XG4gICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgIC8vIFdBUk5JTkc6IGBfaGAgaXMgYW4gaW50ZXJuYWwgb3B0aW9uIGZvciBoYW5kaW5nIE5leHQuanNcbiAgICAgICAgICAgICAgICAvLyBjbGllbnQtc2lkZSBoeWRyYXRpb24uIFlvdXIgYXBwIHNob3VsZCBfbmV2ZXJfIHVzZSB0aGlzIHByb3BlcnR5LlxuICAgICAgICAgICAgICAgIC8vIEl0IG1heSBjaGFuZ2UgYXQgYW55IHRpbWUgd2l0aG91dCBub3RpY2UuXG4gICAgICAgICAgICAgICAgX2g6IDEsXG4gICAgICAgICAgICAgICAgLy8gRmFsbGJhY2sgcGFnZXMgbXVzdCB0cmlnZ2VyIHRoZSBkYXRhIGZldGNoLCBzbyB0aGUgdHJhbnNpdGlvbiBpc1xuICAgICAgICAgICAgICAgIC8vIG5vdCBzaGFsbG93LlxuICAgICAgICAgICAgICAgIC8vIE90aGVyIHBhZ2VzIChzdHJpY3RseSB1cGRhdGluZyBxdWVyeSkgaGFwcGVucyBzaGFsbG93bHksIGFzIGRhdGFcbiAgICAgICAgICAgICAgICAvLyByZXF1aXJlbWVudHMgd291bGQgYWxyZWFkeSBiZSBwcmVzZW50LlxuICAgICAgICAgICAgICAgIHNoYWxsb3c6ICFpbml0aWFsRGF0YS5pc0ZhbGxiYWNrICYmICFpbml0aWFsTWF0Y2hlc01pZGRsZXdhcmVcbiAgICAgICAgICAgIH0pLmNhdGNoKChlcnIpPT57XG4gICAgICAgICAgICAgICAgaWYgKCFlcnIuY2FuY2VsbGVkKSB0aHJvdyBlcnI7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjb21wb25lbnREaWRVcGRhdGUoKSB7XG4gICAgICAgIHRoaXMuc2Nyb2xsVG9IYXNoKCk7XG4gICAgfVxuICAgIHNjcm9sbFRvSGFzaCgpIHtcbiAgICAgICAgbGV0IHsgaGFzaCB9ID0gbG9jYXRpb247XG4gICAgICAgIGhhc2ggPSBoYXNoICYmIGhhc2guc3Vic3RyaW5nKDEpO1xuICAgICAgICBpZiAoIWhhc2gpIHJldHVybjtcbiAgICAgICAgY29uc3QgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChoYXNoKTtcbiAgICAgICAgaWYgKCFlbCkgcmV0dXJuO1xuICAgICAgICAvLyBJZiB3ZSBjYWxsIHNjcm9sbEludG9WaWV3KCkgaW4gaGVyZSB3aXRob3V0IGEgc2V0VGltZW91dFxuICAgICAgICAvLyBpdCB3b24ndCBzY3JvbGwgcHJvcGVybHkuXG4gICAgICAgIHNldFRpbWVvdXQoKCk9PmVsLnNjcm9sbEludG9WaWV3KCksIDApO1xuICAgIH1cbiAgICByZW5kZXIoKSB7XG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnByb3BzLmNoaWxkcmVuO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgeyBSZWFjdERldk92ZXJsYXkgfSA9IHJlcXVpcmUoXCJuZXh0L2Rpc3QvY29tcGlsZWQvQG5leHQvcmVhY3QtZGV2LW92ZXJsYXkvZGlzdC9jbGllbnRcIik7XG4gICAgICAgICAgICByZXR1cm4gLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFJlYWN0RGV2T3ZlcmxheSwgbnVsbCwgdGhpcy5wcm9wcy5jaGlsZHJlbik7XG4gICAgICAgIH1cbiAgICB9XG59XG5hc3luYyBmdW5jdGlvbiBpbml0aWFsaXplKG9wdHMpIHtcbiAgICBpZiAob3B0cyA9PT0gdm9pZCAwKSBvcHRzID0ge307XG4gICAgX3RyYWNlci5kZWZhdWx0Lm9uU3BhbkVuZChfcmVwb3J0dG9zb2NrZXQuZGVmYXVsdCk7XG4gICAgLy8gVGhpcyBtYWtlcyBzdXJlIHRoaXMgc3BlY2lmaWMgbGluZXMgYXJlIHJlbW92ZWQgaW4gcHJvZHVjdGlvblxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJkZXZlbG9wbWVudFwiKSB7XG4gICAgICAgIGRldkNsaWVudCA9IG9wdHMuZGV2Q2xpZW50O1xuICAgIH1cbiAgICBpbml0aWFsRGF0YSA9IEpTT04ucGFyc2UoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJfX05FWFRfREFUQV9fXCIpLnRleHRDb250ZW50KTtcbiAgICB3aW5kb3cuX19ORVhUX0RBVEFfXyA9IGluaXRpYWxEYXRhO1xuICAgIGRlZmF1bHRMb2NhbGUgPSBpbml0aWFsRGF0YS5kZWZhdWx0TG9jYWxlO1xuICAgIGNvbnN0IHByZWZpeCA9IGluaXRpYWxEYXRhLmFzc2V0UHJlZml4IHx8IFwiXCI7XG4gICAgc2VsZi5fX25leHRfc2V0X3B1YmxpY19wYXRoX18oXCJcIiArIHByZWZpeCArIFwiL19uZXh0L1wiKSAvL2VzbGludC1kaXNhYmxlLWxpbmVcbiAgICA7XG4gICAgLy8gSW5pdGlhbGl6ZSBuZXh0L2NvbmZpZyB3aXRoIHRoZSBlbnZpcm9ubWVudCBjb25maWd1cmF0aW9uXG4gICAgKDAsIF9ydW50aW1lY29uZmlnZXh0ZXJuYWwuc2V0Q29uZmlnKSh7XG4gICAgICAgIHNlcnZlclJ1bnRpbWVDb25maWc6IHt9LFxuICAgICAgICBwdWJsaWNSdW50aW1lQ29uZmlnOiBpbml0aWFsRGF0YS5ydW50aW1lQ29uZmlnIHx8IHt9XG4gICAgfSk7XG4gICAgYXNQYXRoID0gKDAsIF91dGlscy5nZXRVUkwpKCk7XG4gICAgLy8gbWFrZSBzdXJlIG5vdCB0byBhdHRlbXB0IHN0cmlwcGluZyBiYXNlUGF0aCBmb3IgNDA0c1xuICAgIGlmICgoMCwgX2hhc2Jhc2VwYXRoLmhhc0Jhc2VQYXRoKShhc1BhdGgpKSB7XG4gICAgICAgIGFzUGF0aCA9ICgwLCBfcmVtb3ZlYmFzZXBhdGgucmVtb3ZlQmFzZVBhdGgpKGFzUGF0aCk7XG4gICAgfVxuICAgIGlmIChwcm9jZXNzLmVudi5fX05FWFRfSTE4Tl9TVVBQT1JUKSB7XG4gICAgICAgIGNvbnN0IHsgbm9ybWFsaXplTG9jYWxlUGF0aCB9ID0gcmVxdWlyZShcIi4uL3NoYXJlZC9saWIvaTE4bi9ub3JtYWxpemUtbG9jYWxlLXBhdGhcIik7XG4gICAgICAgIGNvbnN0IHsgZGV0ZWN0RG9tYWluTG9jYWxlIH0gPSByZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi9pMThuL2RldGVjdC1kb21haW4tbG9jYWxlXCIpO1xuICAgICAgICBjb25zdCB7IHBhcnNlUmVsYXRpdmVVcmwgfSA9IHJlcXVpcmUoXCIuLi9zaGFyZWQvbGliL3JvdXRlci91dGlscy9wYXJzZS1yZWxhdGl2ZS11cmxcIik7XG4gICAgICAgIGNvbnN0IHsgZm9ybWF0VXJsIH0gPSByZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvZm9ybWF0LXVybFwiKTtcbiAgICAgICAgaWYgKGluaXRpYWxEYXRhLmxvY2FsZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IHBhcnNlZEFzID0gcGFyc2VSZWxhdGl2ZVVybChhc1BhdGgpO1xuICAgICAgICAgICAgY29uc3QgbG9jYWxlUGF0aFJlc3VsdCA9IG5vcm1hbGl6ZUxvY2FsZVBhdGgocGFyc2VkQXMucGF0aG5hbWUsIGluaXRpYWxEYXRhLmxvY2FsZXMpO1xuICAgICAgICAgICAgaWYgKGxvY2FsZVBhdGhSZXN1bHQuZGV0ZWN0ZWRMb2NhbGUpIHtcbiAgICAgICAgICAgICAgICBwYXJzZWRBcy5wYXRobmFtZSA9IGxvY2FsZVBhdGhSZXN1bHQucGF0aG5hbWU7XG4gICAgICAgICAgICAgICAgYXNQYXRoID0gZm9ybWF0VXJsKHBhcnNlZEFzKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gZGVyaXZlIHRoZSBkZWZhdWx0IGxvY2FsZSBpZiBpdCB3YXNuJ3QgZGV0ZWN0ZWQgaW4gdGhlIGFzUGF0aFxuICAgICAgICAgICAgICAgIC8vIHNpbmNlIHdlIGRvbid0IHByZXJlbmRlciBzdGF0aWMgcGFnZXMgd2l0aCBhbGwgcG9zc2libGUgZGVmYXVsdFxuICAgICAgICAgICAgICAgIC8vIGxvY2FsZXNcbiAgICAgICAgICAgICAgICBkZWZhdWx0TG9jYWxlID0gaW5pdGlhbERhdGEubG9jYWxlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gYXR0ZW1wdCBkZXRlY3RpbmcgZGVmYXVsdCBsb2NhbGUgYmFzZWQgb24gaG9zdG5hbWVcbiAgICAgICAgICAgIGNvbnN0IGRldGVjdGVkRG9tYWluID0gZGV0ZWN0RG9tYWluTG9jYWxlKHByb2Nlc3MuZW52Ll9fTkVYVF9JMThOX0RPTUFJTlMsIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSk7XG4gICAgICAgICAgICAvLyBUT0RPOiBpbnZlc3RpZ2F0ZSBpZiBkZWZhdWx0TG9jYWxlIG5lZWRzIHRvIGJlIHBvcHVsYXRlZCBhZnRlclxuICAgICAgICAgICAgLy8gaHlkcmF0aW9uIHRvIHByZXZlbnQgbWlzbWF0Y2hlZCByZW5kZXJzXG4gICAgICAgICAgICBpZiAoZGV0ZWN0ZWREb21haW4pIHtcbiAgICAgICAgICAgICAgICBkZWZhdWx0TG9jYWxlID0gZGV0ZWN0ZWREb21haW4uZGVmYXVsdExvY2FsZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoaW5pdGlhbERhdGEuc2NyaXB0TG9hZGVyKSB7XG4gICAgICAgIGNvbnN0IHsgaW5pdFNjcmlwdExvYWRlciB9ID0gcmVxdWlyZShcIi4vc2NyaXB0XCIpO1xuICAgICAgICBpbml0U2NyaXB0TG9hZGVyKGluaXRpYWxEYXRhLnNjcmlwdExvYWRlcik7XG4gICAgfVxuICAgIHBhZ2VMb2FkZXIgPSBuZXcgX3BhZ2Vsb2FkZXIuZGVmYXVsdChpbml0aWFsRGF0YS5idWlsZElkLCBwcmVmaXgpO1xuICAgIGNvbnN0IHJlZ2lzdGVyID0gKHBhcmFtKT0+e1xuICAgICAgICBsZXQgW3IsIGZdID0gcGFyYW07XG4gICAgICAgIHJldHVybiBwYWdlTG9hZGVyLnJvdXRlTG9hZGVyLm9uRW50cnlwb2ludChyLCBmKTtcbiAgICB9O1xuICAgIGlmICh3aW5kb3cuX19ORVhUX1ApIHtcbiAgICAgICAgLy8gRGVmZXIgcGFnZSByZWdpc3RyYXRpb24gZm9yIGFub3RoZXIgdGljay4gVGhpcyB3aWxsIGluY3JlYXNlIHRoZSBvdmVyYWxsXG4gICAgICAgIC8vIGxhdGVuY3kgaW4gaHlkcmF0aW5nIHRoZSBwYWdlLCBidXQgcmVkdWNlIHRoZSB0b3RhbCBibG9ja2luZyB0aW1lLlxuICAgICAgICB3aW5kb3cuX19ORVhUX1AubWFwKChwKT0+c2V0VGltZW91dCgoKT0+cmVnaXN0ZXIocCksIDApKTtcbiAgICB9XG4gICAgd2luZG93Ll9fTkVYVF9QID0gW107XG4gICAgd2luZG93Ll9fTkVYVF9QLnB1c2ggPSByZWdpc3RlcjtcbiAgICBoZWFkTWFuYWdlciA9ICgwLCBfaGVhZG1hbmFnZXIuZGVmYXVsdCkoKTtcbiAgICBoZWFkTWFuYWdlci5nZXRJc1NzciA9ICgpPT57XG4gICAgICAgIHJldHVybiByb3V0ZXIuaXNTc3I7XG4gICAgfTtcbiAgICBhcHBFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJfX25leHRcIik7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgYXNzZXRQcmVmaXg6IHByZWZpeFxuICAgIH07XG59XG5mdW5jdGlvbiByZW5kZXJBcHAoQXBwLCBhcHBQcm9wcykge1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoQXBwLCBhcHBQcm9wcyk7XG59XG5mdW5jdGlvbiBBcHBDb250YWluZXIocGFyYW0pIHtcbiAgICBsZXQgeyBjaGlsZHJlbiB9ID0gcGFyYW07XG4gICAgLy8gQ3JlYXRlIGEgbWVtb2l6ZWQgdmFsdWUgZm9yIG5leHQvbmF2aWdhdGlvbiByb3V0ZXIgY29udGV4dC5cbiAgICBjb25zdCBhZGFwdGVkRm9yQXBwUm91dGVyID0gX3JlYWN0LmRlZmF1bHQudXNlTWVtbygoKT0+e1xuICAgICAgICByZXR1cm4gKDAsIF9hZGFwdGVycy5hZGFwdEZvckFwcFJvdXRlckluc3RhbmNlKShyb3V0ZXIpO1xuICAgIH0sIFtdKTtcbiAgICB2YXIgX3NlbGZfX19ORVhUX0RBVEFfX19hdXRvRXhwb3J0O1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoQ29udGFpbmVyLCB7XG4gICAgICAgIGZuOiAoZXJyb3IpPT4vLyBUT0RPOiBGaXggZGlzYWJsZWQgZXNsaW50IHJ1bGVcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdXNlLWJlZm9yZS1kZWZpbmVcbiAgICAgICAgICAgIHJlbmRlckVycm9yKHtcbiAgICAgICAgICAgICAgICBBcHA6IENhY2hlZEFwcCxcbiAgICAgICAgICAgICAgICBlcnI6IGVycm9yXG4gICAgICAgICAgICB9KS5jYXRjaCgoZXJyKT0+Y29uc29sZS5lcnJvcihcIkVycm9yIHJlbmRlcmluZyBwYWdlOiBcIiwgZXJyKSlcbiAgICB9LCAvKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoX2FwcHJvdXRlcmNvbnRleHRzaGFyZWRydW50aW1lLkFwcFJvdXRlckNvbnRleHQuUHJvdmlkZXIsIHtcbiAgICAgICAgdmFsdWU6IGFkYXB0ZWRGb3JBcHBSb3V0ZXJcbiAgICB9LCAvKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoX2hvb2tzY2xpZW50Y29udGV4dHNoYXJlZHJ1bnRpbWUuU2VhcmNoUGFyYW1zQ29udGV4dC5Qcm92aWRlciwge1xuICAgICAgICB2YWx1ZTogKDAsIF9hZGFwdGVycy5hZGFwdEZvclNlYXJjaFBhcmFtcykocm91dGVyKVxuICAgIH0sIC8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChfYWRhcHRlcnMuUGF0aG5hbWVDb250ZXh0UHJvdmlkZXJBZGFwdGVyLCB7XG4gICAgICAgIHJvdXRlcjogcm91dGVyLFxuICAgICAgICBpc0F1dG9FeHBvcnQ6IChfc2VsZl9fX05FWFRfREFUQV9fX2F1dG9FeHBvcnQgPSBzZWxmLl9fTkVYVF9EQVRBX18uYXV0b0V4cG9ydCkgIT0gbnVsbCA/IF9zZWxmX19fTkVYVF9EQVRBX19fYXV0b0V4cG9ydCA6IGZhbHNlXG4gICAgfSwgLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KF9ob29rc2NsaWVudGNvbnRleHRzaGFyZWRydW50aW1lLlBhdGhQYXJhbXNDb250ZXh0LlByb3ZpZGVyLCB7XG4gICAgICAgIHZhbHVlOiAoMCwgX2FkYXB0ZXJzLmFkYXB0Rm9yUGF0aFBhcmFtcykocm91dGVyKVxuICAgIH0sIC8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChfcm91dGVyY29udGV4dHNoYXJlZHJ1bnRpbWUuUm91dGVyQ29udGV4dC5Qcm92aWRlciwge1xuICAgICAgICB2YWx1ZTogKDAsIF9yb3V0ZXIubWFrZVB1YmxpY1JvdXRlckluc3RhbmNlKShyb3V0ZXIpXG4gICAgfSwgLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KF9oZWFkbWFuYWdlcmNvbnRleHRzaGFyZWRydW50aW1lLkhlYWRNYW5hZ2VyQ29udGV4dC5Qcm92aWRlciwge1xuICAgICAgICB2YWx1ZTogaGVhZE1hbmFnZXJcbiAgICB9LCAvKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoX2ltYWdlY29uZmlnY29udGV4dHNoYXJlZHJ1bnRpbWUuSW1hZ2VDb25maWdDb250ZXh0LlByb3ZpZGVyLCB7XG4gICAgICAgIHZhbHVlOiBwcm9jZXNzLmVudi5fX05FWFRfSU1BR0VfT1BUU1xuICAgIH0sIGNoaWxkcmVuKSkpKSkpKSk7XG59XG5jb25zdCB3cmFwQXBwID0gKEFwcCk9Pih3cmFwcGVkQXBwUHJvcHMpPT57XG4gICAgICAgIGNvbnN0IGFwcFByb3BzID0ge1xuICAgICAgICAgICAgLi4ud3JhcHBlZEFwcFByb3BzLFxuICAgICAgICAgICAgQ29tcG9uZW50OiBDYWNoZWRDb21wb25lbnQsXG4gICAgICAgICAgICBlcnI6IGluaXRpYWxEYXRhLmVycixcbiAgICAgICAgICAgIHJvdXRlclxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KEFwcENvbnRhaW5lciwgbnVsbCwgcmVuZGVyQXBwKEFwcCwgYXBwUHJvcHMpKTtcbiAgICB9O1xuLy8gVGhpcyBtZXRob2QgaGFuZGxlcyBhbGwgcnVudGltZSBhbmQgZGVidWcgZXJyb3JzLlxuLy8gNDA0IGFuZCA1MDAgZXJyb3JzIGFyZSBzcGVjaWFsIGtpbmQgb2YgZXJyb3JzXG4vLyBhbmQgdGhleSBhcmUgc3RpbGwgaGFuZGxlIHZpYSB0aGUgbWFpbiByZW5kZXIgbWV0aG9kLlxuZnVuY3Rpb24gcmVuZGVyRXJyb3IocmVuZGVyRXJyb3JQcm9wcykge1xuICAgIGxldCB7IEFwcCwgZXJyIH0gPSByZW5kZXJFcnJvclByb3BzO1xuICAgIC8vIEluIGRldmVsb3BtZW50IHJ1bnRpbWUgZXJyb3JzIGFyZSBjYXVnaHQgYnkgb3VyIG92ZXJsYXlcbiAgICAvLyBJbiBwcm9kdWN0aW9uIHdlIGNhdGNoIHJ1bnRpbWUgZXJyb3JzIHVzaW5nIGNvbXBvbmVudERpZENhdGNoIHdoaWNoIHdpbGwgdHJpZ2dlciByZW5kZXJFcnJvclxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgICAgICAgLy8gQSBOZXh0LmpzIHJlbmRlcmluZyBydW50aW1lIGVycm9yIGlzIGFsd2F5cyB1bnJlY292ZXJhYmxlXG4gICAgICAgIC8vIEZJWE1FOiBsZXQncyBtYWtlIHRoaXMgcmVjb3ZlcmFibGUgKGVycm9yIGluIEdJUCBjbGllbnQtdHJhbnNpdGlvbilcbiAgICAgICAgZGV2Q2xpZW50Lm9uVW5yZWNvdmVyYWJsZUVycm9yKCk7XG4gICAgICAgIC8vIFdlIG5lZWQgdG8gcmVuZGVyIGFuIGVtcHR5IDxBcHA+IHNvIHRoYXQgdGhlIGA8UmVhY3REZXZPdmVybGF5PmAgY2FuXG4gICAgICAgIC8vIHJlbmRlciBpdHNlbGYuXG4gICAgICAgIC8vIFRPRE86IEZpeCBkaXNhYmxlZCBlc2xpbnQgcnVsZVxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVzZS1iZWZvcmUtZGVmaW5lXG4gICAgICAgIHJldHVybiBkb1JlbmRlcih7XG4gICAgICAgICAgICBBcHA6ICgpPT5udWxsLFxuICAgICAgICAgICAgcHJvcHM6IHt9LFxuICAgICAgICAgICAgQ29tcG9uZW50OiAoKT0+bnVsbCxcbiAgICAgICAgICAgIHN0eWxlU2hlZXRzOiBbXVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgLy8gTWFrZSBzdXJlIHdlIGxvZyB0aGUgZXJyb3IgdG8gdGhlIGNvbnNvbGUsIG90aGVyd2lzZSB1c2VycyBjYW4ndCB0cmFjayBkb3duIGlzc3Vlcy5cbiAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgY29uc29sZS5lcnJvcihcIkEgY2xpZW50LXNpZGUgZXhjZXB0aW9uIGhhcyBvY2N1cnJlZCwgc2VlIGhlcmUgZm9yIG1vcmUgaW5mbzogaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvY2xpZW50LXNpZGUtZXhjZXB0aW9uLW9jY3VycmVkXCIpO1xuICAgIHJldHVybiBwYWdlTG9hZGVyLmxvYWRQYWdlKFwiL19lcnJvclwiKS50aGVuKChwYXJhbSk9PntcbiAgICAgICAgbGV0IHsgcGFnZTogRXJyb3JDb21wb25lbnQsIHN0eWxlU2hlZXRzIH0gPSBwYXJhbTtcbiAgICAgICAgcmV0dXJuIChsYXN0QXBwUHJvcHMgPT0gbnVsbCA/IHZvaWQgMCA6IGxhc3RBcHBQcm9wcy5Db21wb25lbnQpID09PSBFcnJvckNvbXBvbmVudCA/IGltcG9ydChcIi4uL3BhZ2VzL19lcnJvclwiKS50aGVuKChlcnJvck1vZHVsZSk9PntcbiAgICAgICAgICAgIHJldHVybiBpbXBvcnQoXCIuLi9wYWdlcy9fYXBwXCIpLnRoZW4oKGFwcE1vZHVsZSk9PntcbiAgICAgICAgICAgICAgICBBcHAgPSBhcHBNb2R1bGUuZGVmYXVsdDtcbiAgICAgICAgICAgICAgICByZW5kZXJFcnJvclByb3BzLkFwcCA9IEFwcDtcbiAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3JNb2R1bGU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSkudGhlbigobSk9Pih7XG4gICAgICAgICAgICAgICAgRXJyb3JDb21wb25lbnQ6IG0uZGVmYXVsdCxcbiAgICAgICAgICAgICAgICBzdHlsZVNoZWV0czogW11cbiAgICAgICAgICAgIH0pKSA6IHtcbiAgICAgICAgICAgIEVycm9yQ29tcG9uZW50LFxuICAgICAgICAgICAgc3R5bGVTaGVldHNcbiAgICAgICAgfTtcbiAgICB9KS50aGVuKChwYXJhbSk9PntcbiAgICAgICAgbGV0IHsgRXJyb3JDb21wb25lbnQsIHN0eWxlU2hlZXRzIH0gPSBwYXJhbTtcbiAgICAgICAgdmFyIF9yZW5kZXJFcnJvclByb3BzX3Byb3BzO1xuICAgICAgICAvLyBJbiBwcm9kdWN0aW9uIHdlIGRvIGEgbm9ybWFsIHJlbmRlciB3aXRoIHRoZSBgRXJyb3JDb21wb25lbnRgIGFzIGNvbXBvbmVudC5cbiAgICAgICAgLy8gSWYgd2UndmUgZ290dGVuIGhlcmUgdXBvbiBpbml0aWFsIHJlbmRlciwgd2UgY2FuIHVzZSB0aGUgcHJvcHMgZnJvbSB0aGUgc2VydmVyLlxuICAgICAgICAvLyBPdGhlcndpc2UsIHdlIG5lZWQgdG8gY2FsbCBgZ2V0SW5pdGlhbFByb3BzYCBvbiBgQXBwYCBiZWZvcmUgbW91bnRpbmcuXG4gICAgICAgIGNvbnN0IEFwcFRyZWUgPSB3cmFwQXBwKEFwcCk7XG4gICAgICAgIGNvbnN0IGFwcEN0eCA9IHtcbiAgICAgICAgICAgIENvbXBvbmVudDogRXJyb3JDb21wb25lbnQsXG4gICAgICAgICAgICBBcHBUcmVlLFxuICAgICAgICAgICAgcm91dGVyLFxuICAgICAgICAgICAgY3R4OiB7XG4gICAgICAgICAgICAgICAgZXJyLFxuICAgICAgICAgICAgICAgIHBhdGhuYW1lOiBpbml0aWFsRGF0YS5wYWdlLFxuICAgICAgICAgICAgICAgIHF1ZXJ5OiBpbml0aWFsRGF0YS5xdWVyeSxcbiAgICAgICAgICAgICAgICBhc1BhdGgsXG4gICAgICAgICAgICAgICAgQXBwVHJlZVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCgoX3JlbmRlckVycm9yUHJvcHNfcHJvcHMgPSByZW5kZXJFcnJvclByb3BzLnByb3BzKSA9PSBudWxsID8gdm9pZCAwIDogX3JlbmRlckVycm9yUHJvcHNfcHJvcHMuZXJyKSA/IHJlbmRlckVycm9yUHJvcHMucHJvcHMgOiAoMCwgX3V0aWxzLmxvYWRHZXRJbml0aWFsUHJvcHMpKEFwcCwgYXBwQ3R4KSkudGhlbigoaW5pdFByb3BzKT0+Ly8gVE9ETzogRml4IGRpc2FibGVkIGVzbGludCBydWxlXG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVzZS1iZWZvcmUtZGVmaW5lXG4gICAgICAgICAgICBkb1JlbmRlcih7XG4gICAgICAgICAgICAgICAgLi4ucmVuZGVyRXJyb3JQcm9wcyxcbiAgICAgICAgICAgICAgICBlcnIsXG4gICAgICAgICAgICAgICAgQ29tcG9uZW50OiBFcnJvckNvbXBvbmVudCxcbiAgICAgICAgICAgICAgICBzdHlsZVNoZWV0cyxcbiAgICAgICAgICAgICAgICBwcm9wczogaW5pdFByb3BzXG4gICAgICAgICAgICB9KSk7XG4gICAgfSk7XG59XG4vLyBEdW1teSBjb21wb25lbnQgdGhhdCB3ZSByZW5kZXIgYXMgYSBjaGlsZCBvZiBSb290IHNvIHRoYXQgd2UgY2FuXG4vLyB0b2dnbGUgdGhlIGNvcnJlY3Qgc3R5bGVzIGJlZm9yZSB0aGUgcGFnZSBpcyByZW5kZXJlZC5cbmZ1bmN0aW9uIEhlYWQocGFyYW0pIHtcbiAgICBsZXQgeyBjYWxsYmFjayB9ID0gcGFyYW07XG4gICAgLy8gV2UgdXNlIGB1c2VMYXlvdXRFZmZlY3RgIHRvIGd1YXJhbnRlZSB0aGUgY2FsbGJhY2sgaXMgZXhlY3V0ZWRcbiAgICAvLyBhcyBzb29uIGFzIFJlYWN0IGZsdXNoZXMgdGhlIHVwZGF0ZS5cbiAgICBfcmVhY3QuZGVmYXVsdC51c2VMYXlvdXRFZmZlY3QoKCk9PmNhbGxiYWNrKCksIFtcbiAgICAgICAgY2FsbGJhY2tcbiAgICBdKTtcbiAgICByZXR1cm4gbnVsbDtcbn1cbmNvbnN0IHBlcmZvcm1hbmNlTWFya3MgPSB7XG4gICAgbmF2aWdhdGlvblN0YXJ0OiBcIm5hdmlnYXRpb25TdGFydFwiLFxuICAgIGJlZm9yZVJlbmRlcjogXCJiZWZvcmVSZW5kZXJcIixcbiAgICBhZnRlclJlbmRlcjogXCJhZnRlclJlbmRlclwiLFxuICAgIGFmdGVySHlkcmF0ZTogXCJhZnRlckh5ZHJhdGVcIixcbiAgICByb3V0ZUNoYW5nZTogXCJyb3V0ZUNoYW5nZVwiXG59O1xuY29uc3QgcGVyZm9ybWFuY2VNZWFzdXJlcyA9IHtcbiAgICBoeWRyYXRpb246IFwiTmV4dC5qcy1oeWRyYXRpb25cIixcbiAgICBiZWZvcmVIeWRyYXRpb246IFwiTmV4dC5qcy1iZWZvcmUtaHlkcmF0aW9uXCIsXG4gICAgcm91dGVDaGFuZ2VUb1JlbmRlcjogXCJOZXh0LmpzLXJvdXRlLWNoYW5nZS10by1yZW5kZXJcIixcbiAgICByZW5kZXI6IFwiTmV4dC5qcy1yZW5kZXJcIlxufTtcbmxldCByZWFjdFJvb3QgPSBudWxsO1xuLy8gT24gaW5pdGlhbCByZW5kZXIgYSBoeWRyYXRlIHNob3VsZCBhbHdheXMgaGFwcGVuXG5sZXQgc2hvdWxkSHlkcmF0ZSA9IHRydWU7XG5mdW5jdGlvbiBjbGVhck1hcmtzKCkge1xuICAgIFtcbiAgICAgICAgcGVyZm9ybWFuY2VNYXJrcy5iZWZvcmVSZW5kZXIsXG4gICAgICAgIHBlcmZvcm1hbmNlTWFya3MuYWZ0ZXJIeWRyYXRlLFxuICAgICAgICBwZXJmb3JtYW5jZU1hcmtzLmFmdGVyUmVuZGVyLFxuICAgICAgICBwZXJmb3JtYW5jZU1hcmtzLnJvdXRlQ2hhbmdlXG4gICAgXS5mb3JFYWNoKChtYXJrKT0+cGVyZm9ybWFuY2UuY2xlYXJNYXJrcyhtYXJrKSk7XG59XG5mdW5jdGlvbiBtYXJrSHlkcmF0ZUNvbXBsZXRlKCkge1xuICAgIGlmICghX3V0aWxzLlNUKSByZXR1cm47XG4gICAgcGVyZm9ybWFuY2UubWFyayhwZXJmb3JtYW5jZU1hcmtzLmFmdGVySHlkcmF0ZSkgLy8gbWFyayBlbmQgb2YgaHlkcmF0aW9uXG4gICAgO1xuICAgIGNvbnN0IGhhc0JlZm9yZVJlbmRlck1hcmsgPSBwZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlOYW1lKHBlcmZvcm1hbmNlTWFya3MuYmVmb3JlUmVuZGVyLCBcIm1hcmtcIikubGVuZ3RoO1xuICAgIGlmIChoYXNCZWZvcmVSZW5kZXJNYXJrKSB7XG4gICAgICAgIGNvbnN0IGJlZm9yZUh5ZHJhdGlvbk1lYXN1cmUgPSBwZXJmb3JtYW5jZS5tZWFzdXJlKHBlcmZvcm1hbmNlTWVhc3VyZXMuYmVmb3JlSHlkcmF0aW9uLCBwZXJmb3JtYW5jZU1hcmtzLm5hdmlnYXRpb25TdGFydCwgcGVyZm9ybWFuY2VNYXJrcy5iZWZvcmVSZW5kZXIpO1xuICAgICAgICBjb25zdCBoeWRyYXRpb25NZWFzdXJlID0gcGVyZm9ybWFuY2UubWVhc3VyZShwZXJmb3JtYW5jZU1lYXN1cmVzLmh5ZHJhdGlvbiwgcGVyZm9ybWFuY2VNYXJrcy5iZWZvcmVSZW5kZXIsIHBlcmZvcm1hbmNlTWFya3MuYWZ0ZXJIeWRyYXRlKTtcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcImRldmVsb3BtZW50XCIgJiYgLy8gT2xkIHZlcnNpb25zIG9mIFNhZmFyaSBkb24ndCByZXR1cm4gYFBlcmZvcm1hbmNlTWVhc3VyZWBzIGZyb20gYHBlcmZvcm1hbmNlLm1lYXN1cmUoKWBcbiAgICAgICAgYmVmb3JlSHlkcmF0aW9uTWVhc3VyZSAhPT0gdW5kZWZpbmVkICYmIGh5ZHJhdGlvbk1lYXN1cmUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgX3RyYWNlci5kZWZhdWx0LnN0YXJ0U3BhbihcIm5hdmlnYXRpb24tdG8taHlkcmF0aW9uXCIsIHtcbiAgICAgICAgICAgICAgICBzdGFydFRpbWU6IHBlcmZvcm1hbmNlLnRpbWVPcmlnaW4gKyBiZWZvcmVIeWRyYXRpb25NZWFzdXJlLnN0YXJ0VGltZSxcbiAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgICAgICAgICAgICAgIHBhdGhuYW1lOiBsb2NhdGlvbi5wYXRobmFtZSxcbiAgICAgICAgICAgICAgICAgICAgcXVlcnk6IGxvY2F0aW9uLnNlYXJjaFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLmVuZChwZXJmb3JtYW5jZS50aW1lT3JpZ2luICsgaHlkcmF0aW9uTWVhc3VyZS5zdGFydFRpbWUgKyBoeWRyYXRpb25NZWFzdXJlLmR1cmF0aW9uKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAob25QZXJmRW50cnkpIHtcbiAgICAgICAgcGVyZm9ybWFuY2UuZ2V0RW50cmllc0J5TmFtZShwZXJmb3JtYW5jZU1lYXN1cmVzLmh5ZHJhdGlvbikuZm9yRWFjaChvblBlcmZFbnRyeSk7XG4gICAgfVxuICAgIGNsZWFyTWFya3MoKTtcbn1cbmZ1bmN0aW9uIG1hcmtSZW5kZXJDb21wbGV0ZSgpIHtcbiAgICBpZiAoIV91dGlscy5TVCkgcmV0dXJuO1xuICAgIHBlcmZvcm1hbmNlLm1hcmsocGVyZm9ybWFuY2VNYXJrcy5hZnRlclJlbmRlcikgLy8gbWFyayBlbmQgb2YgcmVuZGVyXG4gICAgO1xuICAgIGNvbnN0IG5hdlN0YXJ0RW50cmllcyA9IHBlcmZvcm1hbmNlLmdldEVudHJpZXNCeU5hbWUocGVyZm9ybWFuY2VNYXJrcy5yb3V0ZUNoYW5nZSwgXCJtYXJrXCIpO1xuICAgIGlmICghbmF2U3RhcnRFbnRyaWVzLmxlbmd0aCkgcmV0dXJuO1xuICAgIGNvbnN0IGhhc0JlZm9yZVJlbmRlck1hcmsgPSBwZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlOYW1lKHBlcmZvcm1hbmNlTWFya3MuYmVmb3JlUmVuZGVyLCBcIm1hcmtcIikubGVuZ3RoO1xuICAgIGlmIChoYXNCZWZvcmVSZW5kZXJNYXJrKSB7XG4gICAgICAgIHBlcmZvcm1hbmNlLm1lYXN1cmUocGVyZm9ybWFuY2VNZWFzdXJlcy5yb3V0ZUNoYW5nZVRvUmVuZGVyLCBuYXZTdGFydEVudHJpZXNbMF0ubmFtZSwgcGVyZm9ybWFuY2VNYXJrcy5iZWZvcmVSZW5kZXIpO1xuICAgICAgICBwZXJmb3JtYW5jZS5tZWFzdXJlKHBlcmZvcm1hbmNlTWVhc3VyZXMucmVuZGVyLCBwZXJmb3JtYW5jZU1hcmtzLmJlZm9yZVJlbmRlciwgcGVyZm9ybWFuY2VNYXJrcy5hZnRlclJlbmRlcik7XG4gICAgICAgIGlmIChvblBlcmZFbnRyeSkge1xuICAgICAgICAgICAgcGVyZm9ybWFuY2UuZ2V0RW50cmllc0J5TmFtZShwZXJmb3JtYW5jZU1lYXN1cmVzLnJlbmRlcikuZm9yRWFjaChvblBlcmZFbnRyeSk7XG4gICAgICAgICAgICBwZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlOYW1lKHBlcmZvcm1hbmNlTWVhc3VyZXMucm91dGVDaGFuZ2VUb1JlbmRlcikuZm9yRWFjaChvblBlcmZFbnRyeSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgY2xlYXJNYXJrcygpO1xuICAgIFtcbiAgICAgICAgcGVyZm9ybWFuY2VNZWFzdXJlcy5yb3V0ZUNoYW5nZVRvUmVuZGVyLFxuICAgICAgICBwZXJmb3JtYW5jZU1lYXN1cmVzLnJlbmRlclxuICAgIF0uZm9yRWFjaCgobWVhc3VyZSk9PnBlcmZvcm1hbmNlLmNsZWFyTWVhc3VyZXMobWVhc3VyZSkpO1xufVxuZnVuY3Rpb24gcmVuZGVyUmVhY3RFbGVtZW50KGRvbUVsLCBmbikge1xuICAgIC8vIG1hcmsgc3RhcnQgb2YgaHlkcmF0ZS9yZW5kZXJcbiAgICBpZiAoX3V0aWxzLlNUKSB7XG4gICAgICAgIHBlcmZvcm1hbmNlLm1hcmsocGVyZm9ybWFuY2VNYXJrcy5iZWZvcmVSZW5kZXIpO1xuICAgIH1cbiAgICBjb25zdCByZWFjdEVsID0gZm4oc2hvdWxkSHlkcmF0ZSA/IG1hcmtIeWRyYXRlQ29tcGxldGUgOiBtYXJrUmVuZGVyQ29tcGxldGUpO1xuICAgIGlmICghcmVhY3RSb290KSB7XG4gICAgICAgIC8vIFVubGlrZSB3aXRoIGNyZWF0ZVJvb3QsIHlvdSBkb24ndCBuZWVkIGEgc2VwYXJhdGUgcm9vdC5yZW5kZXIoKSBjYWxsIGhlcmVcbiAgICAgICAgcmVhY3RSb290ID0gX2NsaWVudC5kZWZhdWx0Lmh5ZHJhdGVSb290KGRvbUVsLCByZWFjdEVsLCB7XG4gICAgICAgICAgICBvblJlY292ZXJhYmxlRXJyb3I6IF9vbnJlY292ZXJhYmxlZXJyb3IuZGVmYXVsdFxuICAgICAgICB9KTtcbiAgICAgICAgLy8gVE9ETzogUmVtb3ZlIHNob3VsZEh5ZHJhdGUgdmFyaWFibGUgd2hlbiBSZWFjdCAxOCBpcyBzdGFibGUgYXMgaXQgY2FuIGRlcGVuZCBvbiBgcmVhY3RSb290YCBleGlzdGluZ1xuICAgICAgICBzaG91bGRIeWRyYXRlID0gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qgc3RhcnRUcmFuc2l0aW9uID0gX3JlYWN0LmRlZmF1bHQuc3RhcnRUcmFuc2l0aW9uO1xuICAgICAgICBzdGFydFRyYW5zaXRpb24oKCk9PntcbiAgICAgICAgICAgIHJlYWN0Um9vdC5yZW5kZXIocmVhY3RFbCk7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbmZ1bmN0aW9uIFJvb3QocGFyYW0pIHtcbiAgICBsZXQgeyBjYWxsYmFja3MsIGNoaWxkcmVuIH0gPSBwYXJhbTtcbiAgICAvLyBXZSB1c2UgYHVzZUxheW91dEVmZmVjdGAgdG8gZ3VhcmFudGVlIHRoZSBjYWxsYmFja3MgYXJlIGV4ZWN1dGVkXG4gICAgLy8gYXMgc29vbiBhcyBSZWFjdCBmbHVzaGVzIHRoZSB1cGRhdGVcbiAgICBfcmVhY3QuZGVmYXVsdC51c2VMYXlvdXRFZmZlY3QoKCk9PmNhbGxiYWNrcy5mb3JFYWNoKChjYWxsYmFjayk9PmNhbGxiYWNrKCkpLCBbXG4gICAgICAgIGNhbGxiYWNrc1xuICAgIF0pO1xuICAgIC8vIFdlIHNob3VsZCBhc2sgdG8gbWVhc3VyZSB0aGUgV2ViIFZpdGFscyBhZnRlciByZW5kZXJpbmcgY29tcGxldGVzIHNvIHdlXG4gICAgLy8gZG9uJ3QgY2F1c2UgYW55IGh5ZHJhdGlvbiBkZWxheTpcbiAgICBfcmVhY3QuZGVmYXVsdC51c2VFZmZlY3QoKCk9PntcbiAgICAgICAgKDAsIF9wZXJmb3JtYW5jZXJlbGF5ZXIuZGVmYXVsdCkob25QZXJmRW50cnkpO1xuICAgIH0sIFtdKTtcbiAgICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX1RFU1RfTU9ERSkge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvcnVsZXMtb2YtaG9va3NcbiAgICAgICAgX3JlYWN0LmRlZmF1bHQudXNlRWZmZWN0KCgpPT57XG4gICAgICAgICAgICB3aW5kb3cuX19ORVhUX0hZRFJBVEVEID0gdHJ1ZTtcbiAgICAgICAgICAgIGlmICh3aW5kb3cuX19ORVhUX0hZRFJBVEVEX0NCKSB7XG4gICAgICAgICAgICAgICAgd2luZG93Ll9fTkVYVF9IWURSQVRFRF9DQigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCBbXSk7XG4gICAgfVxuICAgIHJldHVybiBjaGlsZHJlbjtcbn1cbmZ1bmN0aW9uIGRvUmVuZGVyKGlucHV0KSB7XG4gICAgbGV0IHsgQXBwLCBDb21wb25lbnQsIHByb3BzLCBlcnIgfSA9IGlucHV0O1xuICAgIGxldCBzdHlsZVNoZWV0cyA9IFwiaW5pdGlhbFwiIGluIGlucHV0ID8gdW5kZWZpbmVkIDogaW5wdXQuc3R5bGVTaGVldHM7XG4gICAgQ29tcG9uZW50ID0gQ29tcG9uZW50IHx8IGxhc3RBcHBQcm9wcy5Db21wb25lbnQ7XG4gICAgcHJvcHMgPSBwcm9wcyB8fCBsYXN0QXBwUHJvcHMucHJvcHM7XG4gICAgY29uc3QgYXBwUHJvcHMgPSB7XG4gICAgICAgIC4uLnByb3BzLFxuICAgICAgICBDb21wb25lbnQsXG4gICAgICAgIGVycixcbiAgICAgICAgcm91dGVyXG4gICAgfTtcbiAgICAvLyBsYXN0QXBwUHJvcHMgaGFzIHRvIGJlIHNldCBiZWZvcmUgUmVhY3REb20ucmVuZGVyIHRvIGFjY291bnQgZm9yIFJlYWN0RG9tIHRocm93aW5nIGFuIGVycm9yLlxuICAgIGxhc3RBcHBQcm9wcyA9IGFwcFByb3BzO1xuICAgIGxldCBjYW5jZWxlZCA9IGZhbHNlO1xuICAgIGxldCByZXNvbHZlUHJvbWlzZTtcbiAgICBjb25zdCByZW5kZXJQcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCk9PntcbiAgICAgICAgaWYgKGxhc3RSZW5kZXJSZWplY3QpIHtcbiAgICAgICAgICAgIGxhc3RSZW5kZXJSZWplY3QoKTtcbiAgICAgICAgfVxuICAgICAgICByZXNvbHZlUHJvbWlzZSA9ICgpPT57XG4gICAgICAgICAgICBsYXN0UmVuZGVyUmVqZWN0ID0gbnVsbDtcbiAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgfTtcbiAgICAgICAgbGFzdFJlbmRlclJlamVjdCA9ICgpPT57XG4gICAgICAgICAgICBjYW5jZWxlZCA9IHRydWU7XG4gICAgICAgICAgICBsYXN0UmVuZGVyUmVqZWN0ID0gbnVsbDtcbiAgICAgICAgICAgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKFwiQ2FuY2VsIHJlbmRlcmluZyByb3V0ZVwiKTtcbiAgICAgICAgICAgIGVycm9yLmNhbmNlbGxlZCA9IHRydWU7XG4gICAgICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICB9O1xuICAgIH0pO1xuICAgIC8vIFRoaXMgZnVuY3Rpb24gaGFzIGEgcmV0dXJuIHR5cGUgdG8gZW5zdXJlIGl0IGRvZXNuJ3Qgc3RhcnQgcmV0dXJuaW5nIGFcbiAgICAvLyBQcm9taXNlLiBJdCBzaG91bGQgcmVtYWluIHN5bmNocm9ub3VzLlxuICAgIGZ1bmN0aW9uIG9uU3RhcnQoKSB7XG4gICAgICAgIGlmICghc3R5bGVTaGVldHMgfHwgLy8gV2UgdXNlIGBzdHlsZS1sb2FkZXJgIGluIGRldmVsb3BtZW50LCBzbyB3ZSBkb24ndCBuZWVkIHRvIGRvIGFueXRoaW5nXG4gICAgICAgIC8vIHVubGVzcyB3ZSdyZSBpbiBwcm9kdWN0aW9uOlxuICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjdXJyZW50U3R5bGVUYWdzID0gbG9vc2VUb0FycmF5KGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCJzdHlsZVtkYXRhLW4taHJlZl1cIikpO1xuICAgICAgICBjb25zdCBjdXJyZW50SHJlZnMgPSBuZXcgU2V0KGN1cnJlbnRTdHlsZVRhZ3MubWFwKCh0YWcpPT50YWcuZ2V0QXR0cmlidXRlKFwiZGF0YS1uLWhyZWZcIikpKTtcbiAgICAgICAgY29uc3Qgbm9zY3JpcHQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwibm9zY3JpcHRbZGF0YS1uLWNzc11cIik7XG4gICAgICAgIGNvbnN0IG5vbmNlID0gbm9zY3JpcHQgPT0gbnVsbCA/IHZvaWQgMCA6IG5vc2NyaXB0LmdldEF0dHJpYnV0ZShcImRhdGEtbi1jc3NcIik7XG4gICAgICAgIHN0eWxlU2hlZXRzLmZvckVhY2goKHBhcmFtKT0+e1xuICAgICAgICAgICAgbGV0IHsgaHJlZiwgdGV4dCB9ID0gcGFyYW07XG4gICAgICAgICAgICBpZiAoIWN1cnJlbnRIcmVmcy5oYXMoaHJlZikpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzdHlsZVRhZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiKTtcbiAgICAgICAgICAgICAgICBzdHlsZVRhZy5zZXRBdHRyaWJ1dGUoXCJkYXRhLW4taHJlZlwiLCBocmVmKTtcbiAgICAgICAgICAgICAgICBzdHlsZVRhZy5zZXRBdHRyaWJ1dGUoXCJtZWRpYVwiLCBcInhcIik7XG4gICAgICAgICAgICAgICAgaWYgKG5vbmNlKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0eWxlVGFnLnNldEF0dHJpYnV0ZShcIm5vbmNlXCIsIG5vbmNlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChzdHlsZVRhZyk7XG4gICAgICAgICAgICAgICAgc3R5bGVUYWcuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGV4dCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGZ1bmN0aW9uIG9uSGVhZENvbW1pdCgpIHtcbiAgICAgICAgaWYgKC8vIFdlIHVzZSBgc3R5bGUtbG9hZGVyYCBpbiBkZXZlbG9wbWVudCwgc28gd2UgZG9uJ3QgbmVlZCB0byBkbyBhbnl0aGluZ1xuICAgICAgICAvLyB1bmxlc3Mgd2UncmUgaW4gcHJvZHVjdGlvbjpcbiAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwicHJvZHVjdGlvblwiICYmIC8vIFdlIGNhbiBza2lwIHRoaXMgZHVyaW5nIGh5ZHJhdGlvbi4gUnVubmluZyBpdCB3b250IGNhdXNlIGFueSBoYXJtLCBidXRcbiAgICAgICAgLy8gd2UgbWF5IGFzIHdlbGwgc2F2ZSB0aGUgQ1BVIGN5Y2xlczpcbiAgICAgICAgc3R5bGVTaGVldHMgJiYgLy8gRW5zdXJlIHRoaXMgcmVuZGVyIHdhcyBub3QgY2FuY2VsZWRcbiAgICAgICAgIWNhbmNlbGVkKSB7XG4gICAgICAgICAgICBjb25zdCBkZXNpcmVkSHJlZnMgPSBuZXcgU2V0KHN0eWxlU2hlZXRzLm1hcCgocyk9PnMuaHJlZikpO1xuICAgICAgICAgICAgY29uc3QgY3VycmVudFN0eWxlVGFncyA9IGxvb3NlVG9BcnJheShkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwic3R5bGVbZGF0YS1uLWhyZWZdXCIpKTtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRIcmVmcyA9IGN1cnJlbnRTdHlsZVRhZ3MubWFwKCh0YWcpPT50YWcuZ2V0QXR0cmlidXRlKFwiZGF0YS1uLWhyZWZcIikpO1xuICAgICAgICAgICAgLy8gVG9nZ2xlIGA8c3R5bGU+YCB0YWdzIG9uIG9yIG9mZiBkZXBlbmRpbmcgb24gaWYgdGhleSdyZSBuZWVkZWQ6XG4gICAgICAgICAgICBmb3IobGV0IGlkeCA9IDA7IGlkeCA8IGN1cnJlbnRIcmVmcy5sZW5ndGg7ICsraWR4KXtcbiAgICAgICAgICAgICAgICBpZiAoZGVzaXJlZEhyZWZzLmhhcyhjdXJyZW50SHJlZnNbaWR4XSkpIHtcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFN0eWxlVGFnc1tpZHhdLnJlbW92ZUF0dHJpYnV0ZShcIm1lZGlhXCIpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTdHlsZVRhZ3NbaWR4XS5zZXRBdHRyaWJ1dGUoXCJtZWRpYVwiLCBcInhcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gUmVvcmRlciBzdHlsZXMgaW50byBpbnRlbmRlZCBvcmRlcjpcbiAgICAgICAgICAgIGxldCByZWZlcmVuY2VOb2RlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIm5vc2NyaXB0W2RhdGEtbi1jc3NdXCIpO1xuICAgICAgICAgICAgaWYgKC8vIFRoaXMgc2hvdWxkIGJlIGFuIGludmFyaWFudDpcbiAgICAgICAgICAgIHJlZmVyZW5jZU5vZGUpIHtcbiAgICAgICAgICAgICAgICBzdHlsZVNoZWV0cy5mb3JFYWNoKChwYXJhbSk9PntcbiAgICAgICAgICAgICAgICAgICAgbGV0IHsgaHJlZiB9ID0gcGFyYW07XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRhcmdldFRhZyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ3N0eWxlW2RhdGEtbi1ocmVmPVwiJyArIGhyZWYgKyAnXCJdJyk7XG4gICAgICAgICAgICAgICAgICAgIGlmICgvLyBUaGlzIHNob3VsZCBiZSBhbiBpbnZhcmlhbnQ6XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldFRhZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlTm9kZS5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh0YXJnZXRUYWcsIHJlZmVyZW5jZU5vZGUubmV4dFNpYmxpbmcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlTm9kZSA9IHRhcmdldFRhZztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gRmluYWxseSwgY2xlYW4gdXAgc2VydmVyIHJlbmRlcmVkIHN0eWxlc2hlZXRzOlxuICAgICAgICAgICAgbG9vc2VUb0FycmF5KGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCJsaW5rW2RhdGEtbi1wXVwiKSkuZm9yRWFjaCgoZWwpPT57XG4gICAgICAgICAgICAgICAgZWwucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlbCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaW5wdXQuc2Nyb2xsKSB7XG4gICAgICAgICAgICBjb25zdCB7IHgsIHkgfSA9IGlucHV0LnNjcm9sbDtcbiAgICAgICAgICAgICgwLCBfaGFuZGxlc21vb3Roc2Nyb2xsLmhhbmRsZVNtb290aFNjcm9sbCkoKCk9PntcbiAgICAgICAgICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oeCwgeSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBvblJvb3RDb21taXQoKSB7XG4gICAgICAgIHJlc29sdmVQcm9taXNlKCk7XG4gICAgfVxuICAgIG9uU3RhcnQoKTtcbiAgICBjb25zdCBlbGVtID0gLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KF9yZWFjdC5kZWZhdWx0LkZyYWdtZW50LCBudWxsLCAvKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoSGVhZCwge1xuICAgICAgICBjYWxsYmFjazogb25IZWFkQ29tbWl0XG4gICAgfSksIC8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChBcHBDb250YWluZXIsIG51bGwsIHJlbmRlckFwcChBcHAsIGFwcFByb3BzKSwgLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KF9wb3J0YWwuUG9ydGFsLCB7XG4gICAgICAgIHR5cGU6IFwibmV4dC1yb3V0ZS1hbm5vdW5jZXJcIlxuICAgIH0sIC8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChfcm91dGVhbm5vdW5jZXIuUm91dGVBbm5vdW5jZXIsIG51bGwpKSkpO1xuICAgIC8vIFdlIGNhdGNoIHJ1bnRpbWUgZXJyb3JzIHVzaW5nIGNvbXBvbmVudERpZENhdGNoIHdoaWNoIHdpbGwgdHJpZ2dlciByZW5kZXJFcnJvclxuICAgIHJlbmRlclJlYWN0RWxlbWVudChhcHBFbGVtZW50LCAoY2FsbGJhY2spPT4vKiNfX1BVUkVfXyovIF9yZWFjdC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoUm9vdCwge1xuICAgICAgICAgICAgY2FsbGJhY2tzOiBbXG4gICAgICAgICAgICAgICAgY2FsbGJhY2ssXG4gICAgICAgICAgICAgICAgb25Sb290Q29tbWl0XG4gICAgICAgICAgICBdXG4gICAgICAgIH0sIHByb2Nlc3MuZW52Ll9fTkVYVF9TVFJJQ1RfTU9ERSA/IC8qI19fUFVSRV9fKi8gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChfcmVhY3QuZGVmYXVsdC5TdHJpY3RNb2RlLCBudWxsLCBlbGVtKSA6IGVsZW0pKTtcbiAgICByZXR1cm4gcmVuZGVyUHJvbWlzZTtcbn1cbmFzeW5jIGZ1bmN0aW9uIHJlbmRlcihyZW5kZXJpbmdQcm9wcykge1xuICAgIGlmIChyZW5kZXJpbmdQcm9wcy5lcnIpIHtcbiAgICAgICAgYXdhaXQgcmVuZGVyRXJyb3IocmVuZGVyaW5nUHJvcHMpO1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IGRvUmVuZGVyKHJlbmRlcmluZ1Byb3BzKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgY29uc3QgcmVuZGVyRXJyID0gKDAsIF9pc2Vycm9yLmdldFByb3BlckVycm9yKShlcnIpO1xuICAgICAgICAvLyBidWJibGUgdXAgY2FuY2VsYXRpb24gZXJyb3JzXG4gICAgICAgIGlmIChyZW5kZXJFcnIuY2FuY2VsbGVkKSB7XG4gICAgICAgICAgICB0aHJvdyByZW5kZXJFcnI7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcImRldmVsb3BtZW50XCIpIHtcbiAgICAgICAgICAgIC8vIEVuc3VyZSB0aGlzIGVycm9yIGlzIGRpc3BsYXllZCBpbiB0aGUgb3ZlcmxheSBpbiBkZXZlbG9wbWVudFxuICAgICAgICAgICAgc2V0VGltZW91dCgoKT0+e1xuICAgICAgICAgICAgICAgIHRocm93IHJlbmRlckVycjtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IHJlbmRlckVycm9yKHtcbiAgICAgICAgICAgIC4uLnJlbmRlcmluZ1Byb3BzLFxuICAgICAgICAgICAgZXJyOiByZW5kZXJFcnJcbiAgICAgICAgfSk7XG4gICAgfVxufVxuYXN5bmMgZnVuY3Rpb24gaHlkcmF0ZShvcHRzKSB7XG4gICAgbGV0IGluaXRpYWxFcnIgPSBpbml0aWFsRGF0YS5lcnI7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgYXBwRW50cnlwb2ludCA9IGF3YWl0IHBhZ2VMb2FkZXIucm91dGVMb2FkZXIud2hlbkVudHJ5cG9pbnQoXCIvX2FwcFwiKTtcbiAgICAgICAgaWYgKFwiZXJyb3JcIiBpbiBhcHBFbnRyeXBvaW50KSB7XG4gICAgICAgICAgICB0aHJvdyBhcHBFbnRyeXBvaW50LmVycm9yO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHsgY29tcG9uZW50OiBhcHAsIGV4cG9ydHM6IG1vZCB9ID0gYXBwRW50cnlwb2ludDtcbiAgICAgICAgQ2FjaGVkQXBwID0gYXBwO1xuICAgICAgICBpZiAobW9kICYmIG1vZC5yZXBvcnRXZWJWaXRhbHMpIHtcbiAgICAgICAgICAgIG9uUGVyZkVudHJ5ID0gKHBhcmFtKT0+e1xuICAgICAgICAgICAgICAgIGxldCB7IGlkLCBuYW1lLCBzdGFydFRpbWUsIHZhbHVlLCBkdXJhdGlvbiwgZW50cnlUeXBlLCBlbnRyaWVzLCBhdHRyaWJ1dGlvbiB9ID0gcGFyYW07XG4gICAgICAgICAgICAgICAgLy8gQ29tYmluZXMgdGltZXN0YW1wIHdpdGggcmFuZG9tIG51bWJlciBmb3IgdW5pcXVlIElEXG4gICAgICAgICAgICAgICAgY29uc3QgdW5pcXVlSUQgPSBEYXRlLm5vdygpICsgXCItXCIgKyAoTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogKDllMTIgLSAxKSkgKyAxZTEyKTtcbiAgICAgICAgICAgICAgICBsZXQgcGVyZlN0YXJ0RW50cnk7XG4gICAgICAgICAgICAgICAgaWYgKGVudHJpZXMgJiYgZW50cmllcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgcGVyZlN0YXJ0RW50cnkgPSBlbnRyaWVzWzBdLnN0YXJ0VGltZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3Qgd2ViVml0YWxzID0ge1xuICAgICAgICAgICAgICAgICAgICBpZDogaWQgfHwgdW5pcXVlSUQsXG4gICAgICAgICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgICAgICAgIHN0YXJ0VGltZTogc3RhcnRUaW1lIHx8IHBlcmZTdGFydEVudHJ5LFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdmFsdWUgPT0gbnVsbCA/IGR1cmF0aW9uIDogdmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiBlbnRyeVR5cGUgPT09IFwibWFya1wiIHx8IGVudHJ5VHlwZSA9PT0gXCJtZWFzdXJlXCIgPyBcImN1c3RvbVwiIDogXCJ3ZWItdml0YWxcIlxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgaWYgKGF0dHJpYnV0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIHdlYlZpdGFscy5hdHRyaWJ1dGlvbiA9IGF0dHJpYnV0aW9uO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBtb2QucmVwb3J0V2ViVml0YWxzKHdlYlZpdGFscyk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHBhZ2VFbnRyeXBvaW50ID0gLy8gVGhlIGRldiBzZXJ2ZXIgZmFpbHMgdG8gc2VydmUgc2NyaXB0IGFzc2V0cyB3aGVuIHRoZXJlJ3MgYSBoeWRyYXRpb25cbiAgICAgICAgLy8gZXJyb3IsIHNvIHdlIG5lZWQgdG8gc2tpcCB3YWl0aW5nIGZvciB0aGUgZW50cnlwb2ludC5cbiAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwiZGV2ZWxvcG1lbnRcIiAmJiBpbml0aWFsRGF0YS5lcnIgPyB7XG4gICAgICAgICAgICBlcnJvcjogaW5pdGlhbERhdGEuZXJyXG4gICAgICAgIH0gOiBhd2FpdCBwYWdlTG9hZGVyLnJvdXRlTG9hZGVyLndoZW5FbnRyeXBvaW50KGluaXRpYWxEYXRhLnBhZ2UpO1xuICAgICAgICBpZiAoXCJlcnJvclwiIGluIHBhZ2VFbnRyeXBvaW50KSB7XG4gICAgICAgICAgICB0aHJvdyBwYWdlRW50cnlwb2ludC5lcnJvcjtcbiAgICAgICAgfVxuICAgICAgICBDYWNoZWRDb21wb25lbnQgPSBwYWdlRW50cnlwb2ludC5jb21wb25lbnQ7XG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgaXNWYWxpZEVsZW1lbnRUeXBlIH0gPSByZXF1aXJlKFwibmV4dC9kaXN0L2NvbXBpbGVkL3JlYWN0LWlzXCIpO1xuICAgICAgICAgICAgaWYgKCFpc1ZhbGlkRWxlbWVudFR5cGUoQ2FjaGVkQ29tcG9uZW50KSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIGRlZmF1bHQgZXhwb3J0IGlzIG5vdCBhIFJlYWN0IENvbXBvbmVudCBpbiBwYWdlOiBcIicgKyBpbml0aWFsRGF0YS5wYWdlICsgJ1wiJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAvLyBUaGlzIGNhdGNoZXMgZXJyb3JzIGxpa2UgdGhyb3dpbmcgaW4gdGhlIHRvcCBsZXZlbCBvZiBhIG1vZHVsZVxuICAgICAgICBpbml0aWFsRXJyID0gKDAsIF9pc2Vycm9yLmdldFByb3BlckVycm9yKShlcnJvcik7XG4gICAgfVxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJkZXZlbG9wbWVudFwiKSB7XG4gICAgICAgIGNvbnN0IHsgZ2V0U2VydmVyRXJyb3IgfSA9IHJlcXVpcmUoXCJuZXh0L2Rpc3QvY29tcGlsZWQvQG5leHQvcmVhY3QtZGV2LW92ZXJsYXkvZGlzdC9jbGllbnRcIik7XG4gICAgICAgIC8vIFNlcnZlci1zaWRlIHJ1bnRpbWUgZXJyb3JzIG5lZWQgdG8gYmUgcmUtdGhyb3duIG9uIHRoZSBjbGllbnQtc2lkZSBzb1xuICAgICAgICAvLyB0aGF0IHRoZSBvdmVybGF5IGlzIHJlbmRlcmVkLlxuICAgICAgICBpZiAoaW5pdGlhbEVycikge1xuICAgICAgICAgICAgaWYgKGluaXRpYWxFcnIgPT09IGluaXRpYWxEYXRhLmVycikge1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCk9PntcbiAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yO1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gR2VuZXJhdGUgYSBuZXcgZXJyb3Igb2JqZWN0LiBXZSBgdGhyb3dgIGl0IGJlY2F1c2Ugc29tZSBicm93c2Vyc1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2lsbCBzZXQgdGhlIGBzdGFja2Agd2hlbiB0aHJvd24sIGFuZCB3ZSB3YW50IHRvIGVuc3VyZSBvdXJzIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBub3Qgb3ZlcnJpZGRlbiB3aGVuIHdlIHJlLXRocm93IGl0IGJlbG93LlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGluaXRpYWxFcnIubWVzc2FnZSk7XG4gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yID0gZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlcnJvci5uYW1lID0gaW5pdGlhbEVyci5uYW1lO1xuICAgICAgICAgICAgICAgICAgICBlcnJvci5zdGFjayA9IGluaXRpYWxFcnIuc3RhY2s7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IGdldFNlcnZlckVycm9yKGVycm9yLCBpbml0aWFsRXJyLnNvdXJjZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCk9PntcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgaW5pdGlhbEVycjtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAod2luZG93Ll9fTkVYVF9QUkVMT0FEUkVBRFkpIHtcbiAgICAgICAgYXdhaXQgd2luZG93Ll9fTkVYVF9QUkVMT0FEUkVBRFkoaW5pdGlhbERhdGEuZHluYW1pY0lkcyk7XG4gICAgfVxuICAgIHJvdXRlciA9ICgwLCBfcm91dGVyLmNyZWF0ZVJvdXRlcikoaW5pdGlhbERhdGEucGFnZSwgaW5pdGlhbERhdGEucXVlcnksIGFzUGF0aCwge1xuICAgICAgICBpbml0aWFsUHJvcHM6IGluaXRpYWxEYXRhLnByb3BzLFxuICAgICAgICBwYWdlTG9hZGVyLFxuICAgICAgICBBcHA6IENhY2hlZEFwcCxcbiAgICAgICAgQ29tcG9uZW50OiBDYWNoZWRDb21wb25lbnQsXG4gICAgICAgIHdyYXBBcHAsXG4gICAgICAgIGVycjogaW5pdGlhbEVycixcbiAgICAgICAgaXNGYWxsYmFjazogQm9vbGVhbihpbml0aWFsRGF0YS5pc0ZhbGxiYWNrKSxcbiAgICAgICAgc3Vic2NyaXB0aW9uOiAoaW5mbywgQXBwLCBzY3JvbGwpPT5yZW5kZXIoT2JqZWN0LmFzc2lnbih7fSwgaW5mbywge1xuICAgICAgICAgICAgICAgIEFwcCxcbiAgICAgICAgICAgICAgICBzY3JvbGxcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgbG9jYWxlOiBpbml0aWFsRGF0YS5sb2NhbGUsXG4gICAgICAgIGxvY2FsZXM6IGluaXRpYWxEYXRhLmxvY2FsZXMsXG4gICAgICAgIGRlZmF1bHRMb2NhbGUsXG4gICAgICAgIGRvbWFpbkxvY2FsZXM6IGluaXRpYWxEYXRhLmRvbWFpbkxvY2FsZXMsXG4gICAgICAgIGlzUHJldmlldzogaW5pdGlhbERhdGEuaXNQcmV2aWV3XG4gICAgfSk7XG4gICAgaW5pdGlhbE1hdGNoZXNNaWRkbGV3YXJlID0gYXdhaXQgcm91dGVyLl9pbml0aWFsTWF0Y2hlc01pZGRsZXdhcmVQcm9taXNlO1xuICAgIGNvbnN0IHJlbmRlckN0eCA9IHtcbiAgICAgICAgQXBwOiBDYWNoZWRBcHAsXG4gICAgICAgIGluaXRpYWw6IHRydWUsXG4gICAgICAgIENvbXBvbmVudDogQ2FjaGVkQ29tcG9uZW50LFxuICAgICAgICBwcm9wczogaW5pdGlhbERhdGEucHJvcHMsXG4gICAgICAgIGVycjogaW5pdGlhbEVyclxuICAgIH07XG4gICAgaWYgKG9wdHMgPT0gbnVsbCA/IHZvaWQgMCA6IG9wdHMuYmVmb3JlUmVuZGVyKSB7XG4gICAgICAgIGF3YWl0IG9wdHMuYmVmb3JlUmVuZGVyKCk7XG4gICAgfVxuICAgIHJlbmRlcihyZW5kZXJDdHgpO1xufVxuXG5pZiAoKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdmdW5jdGlvbicgfHwgKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdvYmplY3QnICYmIGV4cG9ydHMuZGVmYXVsdCAhPT0gbnVsbCkpICYmIHR5cGVvZiBleHBvcnRzLmRlZmF1bHQuX19lc01vZHVsZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMuZGVmYXVsdCwgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuICBPYmplY3QuYXNzaWduKGV4cG9ydHMuZGVmYXVsdCwgZXhwb3J0cyk7XG4gIG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cy5kZWZhdWx0O1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiXSwibmFtZXMiOlsiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJleHBvcnRzIiwidmFsdWUiLCJtb2R1bGUiLCJ2ZXJzaW9uIiwicm91dGVyIiwiZW1pdHRlciIsImluaXRpYWxpemUiLCJoeWRyYXRlIiwiX2V4cG9ydCIsInRhcmdldCIsImFsbCIsIm5hbWUiLCJlbnVtZXJhYmxlIiwiZ2V0IiwiX2ludGVyb3BfcmVxdWlyZV9kZWZhdWx0IiwicmVxdWlyZSIsIl9yZWFjdCIsIl8iLCJfY2xpZW50IiwiX2hlYWRtYW5hZ2VyY29udGV4dHNoYXJlZHJ1bnRpbWUiLCJfbWl0dCIsIl9yb3V0ZXJjb250ZXh0c2hhcmVkcnVudGltZSIsIl9oYW5kbGVzbW9vdGhzY3JvbGwiLCJfaXNkeW5hbWljIiwiX3F1ZXJ5c3RyaW5nIiwiX3J1bnRpbWVjb25maWdleHRlcm5hbCIsIl91dGlscyIsIl9wb3J0YWwiLCJfaGVhZG1hbmFnZXIiLCJfcGFnZWxvYWRlciIsIl9wZXJmb3JtYW5jZXJlbGF5ZXIiLCJfcm91dGVhbm5vdW5jZXIiLCJfcm91dGVyIiwiX2lzZXJyb3IiLCJfaW1hZ2Vjb25maWdjb250ZXh0c2hhcmVkcnVudGltZSIsIl9yZW1vdmViYXNlcGF0aCIsIl9oYXNiYXNlcGF0aCIsIl9hcHByb3V0ZXJjb250ZXh0c2hhcmVkcnVudGltZSIsIl9hZGFwdGVycyIsIl9ob29rc2NsaWVudGNvbnRleHRzaGFyZWRydW50aW1lIiwiX29ucmVjb3ZlcmFibGVlcnJvciIsIl90cmFjZXIiLCJfcmVwb3J0dG9zb2NrZXQiLCJkZWZhdWx0IiwibG9vc2VUb0FycmF5IiwiaW5wdXQiLCJzbGljZSIsImNhbGwiLCJpbml0aWFsRGF0YSIsImRlZmF1bHRMb2NhbGUiLCJ1bmRlZmluZWQiLCJhc1BhdGgiLCJwYWdlTG9hZGVyIiwiYXBwRWxlbWVudCIsImhlYWRNYW5hZ2VyIiwiaW5pdGlhbE1hdGNoZXNNaWRkbGV3YXJlIiwibGFzdEFwcFByb3BzIiwibGFzdFJlbmRlclJlamVjdCIsImRldkNsaWVudCIsIkNhY2hlZEFwcCIsIm9uUGVyZkVudHJ5IiwiQ2FjaGVkQ29tcG9uZW50IiwiQ29udGFpbmVyIiwiQ29tcG9uZW50IiwiY29tcG9uZW50RGlkQ2F0Y2giLCJjb21wb25lbnRFcnIiLCJpbmZvIiwicHJvcHMiLCJmbiIsImNvbXBvbmVudERpZE1vdW50Iiwic2Nyb2xsVG9IYXNoIiwiaXNTc3IiLCJpc0ZhbGxiYWNrIiwibmV4dEV4cG9ydCIsImlzRHluYW1pY1JvdXRlIiwicGF0aG5hbWUiLCJsb2NhdGlvbiIsInNlYXJjaCIsInByb2Nlc3MiLCJlbnYiLCJfX05FWFRfSEFTX1JFV1JJVEVTIiwiX19OX1NTRyIsInJlcGxhY2UiLCJTdHJpbmciLCJhc3NpZ24iLCJ1cmxRdWVyeVRvU2VhcmNoUGFyYW1zIiwicXVlcnkiLCJVUkxTZWFyY2hQYXJhbXMiLCJfaCIsInNoYWxsb3ciLCJjYXRjaCIsImVyciIsImNhbmNlbGxlZCIsImNvbXBvbmVudERpZFVwZGF0ZSIsImhhc2giLCJzdWJzdHJpbmciLCJlbCIsImRvY3VtZW50IiwiZ2V0RWxlbWVudEJ5SWQiLCJzZXRUaW1lb3V0Iiwic2Nyb2xsSW50b1ZpZXciLCJyZW5kZXIiLCJjaGlsZHJlbiIsIlJlYWN0RGV2T3ZlcmxheSIsImNyZWF0ZUVsZW1lbnQiLCJvcHRzIiwib25TcGFuRW5kIiwiSlNPTiIsInBhcnNlIiwidGV4dENvbnRlbnQiLCJ3aW5kb3ciLCJfX05FWFRfREFUQV9fIiwicHJlZml4IiwiYXNzZXRQcmVmaXgiLCJzZWxmIiwiX19uZXh0X3NldF9wdWJsaWNfcGF0aF9fIiwic2V0Q29uZmlnIiwic2VydmVyUnVudGltZUNvbmZpZyIsInB1YmxpY1J1bnRpbWVDb25maWciLCJydW50aW1lQ29uZmlnIiwiZ2V0VVJMIiwiaGFzQmFzZVBhdGgiLCJyZW1vdmVCYXNlUGF0aCIsIl9fTkVYVF9JMThOX1NVUFBPUlQiLCJub3JtYWxpemVMb2NhbGVQYXRoIiwiZGV0ZWN0RG9tYWluTG9jYWxlIiwicGFyc2VSZWxhdGl2ZVVybCIsImZvcm1hdFVybCIsImxvY2FsZXMiLCJwYXJzZWRBcyIsImxvY2FsZVBhdGhSZXN1bHQiLCJkZXRlY3RlZExvY2FsZSIsImxvY2FsZSIsImRldGVjdGVkRG9tYWluIiwiX19ORVhUX0kxOE5fRE9NQUlOUyIsImhvc3RuYW1lIiwic2NyaXB0TG9hZGVyIiwiaW5pdFNjcmlwdExvYWRlciIsImJ1aWxkSWQiLCJyZWdpc3RlciIsInBhcmFtIiwiciIsImYiLCJyb3V0ZUxvYWRlciIsIm9uRW50cnlwb2ludCIsIl9fTkVYVF9QIiwibWFwIiwicCIsInB1c2giLCJnZXRJc1NzciIsInJlbmRlckFwcCIsIkFwcCIsImFwcFByb3BzIiwiQXBwQ29udGFpbmVyIiwiYWRhcHRlZEZvckFwcFJvdXRlciIsInVzZU1lbW8iLCJhZGFwdEZvckFwcFJvdXRlckluc3RhbmNlIiwiX3NlbGZfX19ORVhUX0RBVEFfX19hdXRvRXhwb3J0IiwiZXJyb3IiLCJyZW5kZXJFcnJvciIsImNvbnNvbGUiLCJBcHBSb3V0ZXJDb250ZXh0IiwiUHJvdmlkZXIiLCJTZWFyY2hQYXJhbXNDb250ZXh0IiwiYWRhcHRGb3JTZWFyY2hQYXJhbXMiLCJQYXRobmFtZUNvbnRleHRQcm92aWRlckFkYXB0ZXIiLCJpc0F1dG9FeHBvcnQiLCJhdXRvRXhwb3J0IiwiUGF0aFBhcmFtc0NvbnRleHQiLCJhZGFwdEZvclBhdGhQYXJhbXMiLCJSb3V0ZXJDb250ZXh0IiwibWFrZVB1YmxpY1JvdXRlckluc3RhbmNlIiwiSGVhZE1hbmFnZXJDb250ZXh0IiwiSW1hZ2VDb25maWdDb250ZXh0IiwiX19ORVhUX0lNQUdFX09QVFMiLCJ3cmFwQXBwIiwid3JhcHBlZEFwcFByb3BzIiwicmVuZGVyRXJyb3JQcm9wcyIsIm9uVW5yZWNvdmVyYWJsZUVycm9yIiwiZG9SZW5kZXIiLCJzdHlsZVNoZWV0cyIsImxvYWRQYWdlIiwidGhlbiIsInBhZ2UiLCJFcnJvckNvbXBvbmVudCIsImVycm9yTW9kdWxlIiwiYXBwTW9kdWxlIiwibSIsIl9yZW5kZXJFcnJvclByb3BzX3Byb3BzIiwiQXBwVHJlZSIsImFwcEN0eCIsImN0eCIsIlByb21pc2UiLCJyZXNvbHZlIiwibG9hZEdldEluaXRpYWxQcm9wcyIsImluaXRQcm9wcyIsIkhlYWQiLCJjYWxsYmFjayIsInVzZUxheW91dEVmZmVjdCIsInBlcmZvcm1hbmNlTWFya3MiLCJuYXZpZ2F0aW9uU3RhcnQiLCJiZWZvcmVSZW5kZXIiLCJhZnRlclJlbmRlciIsImFmdGVySHlkcmF0ZSIsInJvdXRlQ2hhbmdlIiwicGVyZm9ybWFuY2VNZWFzdXJlcyIsImh5ZHJhdGlvbiIsImJlZm9yZUh5ZHJhdGlvbiIsInJvdXRlQ2hhbmdlVG9SZW5kZXIiLCJyZWFjdFJvb3QiLCJzaG91bGRIeWRyYXRlIiwiY2xlYXJNYXJrcyIsImZvckVhY2giLCJtYXJrIiwicGVyZm9ybWFuY2UiLCJtYXJrSHlkcmF0ZUNvbXBsZXRlIiwiU1QiLCJoYXNCZWZvcmVSZW5kZXJNYXJrIiwiZ2V0RW50cmllc0J5TmFtZSIsImxlbmd0aCIsImJlZm9yZUh5ZHJhdGlvbk1lYXN1cmUiLCJtZWFzdXJlIiwiaHlkcmF0aW9uTWVhc3VyZSIsInN0YXJ0U3BhbiIsInN0YXJ0VGltZSIsInRpbWVPcmlnaW4iLCJhdHRyaWJ1dGVzIiwiZW5kIiwiZHVyYXRpb24iLCJtYXJrUmVuZGVyQ29tcGxldGUiLCJuYXZTdGFydEVudHJpZXMiLCJjbGVhck1lYXN1cmVzIiwicmVuZGVyUmVhY3RFbGVtZW50IiwiZG9tRWwiLCJyZWFjdEVsIiwiaHlkcmF0ZVJvb3QiLCJvblJlY292ZXJhYmxlRXJyb3IiLCJzdGFydFRyYW5zaXRpb24iLCJSb290IiwiY2FsbGJhY2tzIiwidXNlRWZmZWN0IiwiX19ORVhUX1RFU1RfTU9ERSIsIl9fTkVYVF9IWURSQVRFRCIsIl9fTkVYVF9IWURSQVRFRF9DQiIsImNhbmNlbGVkIiwicmVzb2x2ZVByb21pc2UiLCJyZW5kZXJQcm9taXNlIiwicmVqZWN0IiwiRXJyb3IiLCJvblN0YXJ0IiwiY3VycmVudFN0eWxlVGFncyIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJjdXJyZW50SHJlZnMiLCJTZXQiLCJ0YWciLCJnZXRBdHRyaWJ1dGUiLCJub3NjcmlwdCIsInF1ZXJ5U2VsZWN0b3IiLCJub25jZSIsImhyZWYiLCJ0ZXh0IiwiaGFzIiwic3R5bGVUYWciLCJzZXRBdHRyaWJ1dGUiLCJoZWFkIiwiYXBwZW5kQ2hpbGQiLCJjcmVhdGVUZXh0Tm9kZSIsIm9uSGVhZENvbW1pdCIsImRlc2lyZWRIcmVmcyIsInMiLCJpZHgiLCJyZW1vdmVBdHRyaWJ1dGUiLCJyZWZlcmVuY2VOb2RlIiwidGFyZ2V0VGFnIiwicGFyZW50Tm9kZSIsImluc2VydEJlZm9yZSIsIm5leHRTaWJsaW5nIiwicmVtb3ZlQ2hpbGQiLCJzY3JvbGwiLCJ4IiwieSIsImhhbmRsZVNtb290aFNjcm9sbCIsInNjcm9sbFRvIiwib25Sb290Q29tbWl0IiwiZWxlbSIsIkZyYWdtZW50IiwiUG9ydGFsIiwidHlwZSIsIlJvdXRlQW5ub3VuY2VyIiwiX19ORVhUX1NUUklDVF9NT0RFIiwiU3RyaWN0TW9kZSIsInJlbmRlcmluZ1Byb3BzIiwicmVuZGVyRXJyIiwiZ2V0UHJvcGVyRXJyb3IiLCJpbml0aWFsRXJyIiwiYXBwRW50cnlwb2ludCIsIndoZW5FbnRyeXBvaW50IiwiY29tcG9uZW50IiwiYXBwIiwibW9kIiwicmVwb3J0V2ViVml0YWxzIiwiaWQiLCJlbnRyeVR5cGUiLCJlbnRyaWVzIiwiYXR0cmlidXRpb24iLCJ1bmlxdWVJRCIsIkRhdGUiLCJub3ciLCJNYXRoIiwiZmxvb3IiLCJyYW5kb20iLCJwZXJmU3RhcnRFbnRyeSIsIndlYlZpdGFscyIsImxhYmVsIiwicGFnZUVudHJ5cG9pbnQiLCJpc1ZhbGlkRWxlbWVudFR5cGUiLCJnZXRTZXJ2ZXJFcnJvciIsIm1lc3NhZ2UiLCJlIiwic3RhY2siLCJzb3VyY2UiLCJfX05FWFRfUFJFTE9BRFJFQURZIiwiZHluYW1pY0lkcyIsImNyZWF0ZVJvdXRlciIsImluaXRpYWxQcm9wcyIsIkJvb2xlYW4iLCJzdWJzY3JpcHRpb24iLCJkb21haW5Mb2NhbGVzIiwiaXNQcmV2aWV3IiwiX2luaXRpYWxNYXRjaGVzTWlkZGxld2FyZVByb21pc2UiLCJyZW5kZXJDdHgiLCJpbml0aWFsIiwiX19lc01vZHVsZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/index.js\n")); /***/ }), /***/ "./node_modules/next/dist/client/next-dev.js": /*!***************************************************!*\ !*** ./node_modules/next/dist/client/next-dev.js ***! \***************************************************/ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval(__webpack_require__.ts("// TODO: Remove use of `any` type.\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nconst _interop_require_default = __webpack_require__(/*! @swc/helpers/_/_interop_require_default */ \"./node_modules/@swc/helpers/esm/_interop_require_default.js\");\n__webpack_require__(/*! ./webpack */ \"./node_modules/next/dist/client/webpack.js\");\nconst _ = __webpack_require__(/*! ./ */ \"./node_modules/next/dist/client/index.js\");\nconst _hotmiddlewareclient = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! ./dev/hot-middleware-client */ \"./node_modules/next/dist/client/dev/hot-middleware-client.js\"));\nconst _pagebootstrap = __webpack_require__(/*! ./page-bootstrap */ \"./node_modules/next/dist/client/page-bootstrap.js\");\n__webpack_require__(/*! ./setup-hydration-warning */ \"./node_modules/next/dist/client/setup-hydration-warning.js\");\nwindow.next = {\n version: _.version,\n // router is initialized later so it has to be live-binded\n get router () {\n return _.router;\n },\n emitter: _.emitter\n};\nconst devClient = (0, _hotmiddlewareclient.default)(\"webpack\");\n(0, _.initialize)({\n devClient\n}).then((param)=>{\n let { assetPrefix } = param;\n return (0, _pagebootstrap.pageBootrap)(assetPrefix);\n}).catch((err)=>{\n console.error(\"Error was not caught\", err);\n});\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=next-dev.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9uZXh0LWRldi5qcyIsIm1hcHBpbmdzIjoiQUFBQSxrQ0FBa0M7QUFDckI7QUFDYkEsOENBQTZDO0lBQ3pDRyxPQUFPO0FBQ1gsQ0FBQyxFQUFDO0FBQ0YsTUFBTUMsMkJBQTJCQyxtQkFBT0EsQ0FBQyw0R0FBeUM7QUFDbEZBLG1CQUFPQSxDQUFDLDZEQUFXO0FBQ25CLE1BQU1DLElBQUlELG1CQUFPQSxDQUFDLG9EQUFJO0FBQ3RCLE1BQU1FLHVCQUF1QixXQUFXLEdBQUdILHlCQUF5QkUsQ0FBQyxDQUFDRCxtQkFBT0EsQ0FBQyxpR0FBNkI7QUFDM0csTUFBTUcsaUJBQWlCSCxtQkFBT0EsQ0FBQywyRUFBa0I7QUFDakRBLG1CQUFPQSxDQUFDLDZGQUEyQjtBQUNuQ0ksT0FBT0MsSUFBSSxHQUFHO0lBQ1ZDLFNBQVNMLEVBQUVLLE9BQU87SUFDbEIsMERBQTBEO0lBQzFELElBQUlDLFVBQVU7UUFDVixPQUFPTixFQUFFTSxNQUFNO0lBQ25CO0lBQ0FDLFNBQVNQLEVBQUVPLE9BQU87QUFDdEI7QUFDQSxNQUFNQyxZQUFZLENBQUMsR0FBR1AscUJBQXFCUSxPQUFPLEVBQUU7QUFDbkQsSUFBR1QsRUFBRVUsVUFBVSxFQUFFO0lBQ2RGO0FBQ0osR0FBR0csSUFBSSxDQUFDLENBQUNDO0lBQ0wsSUFBSSxFQUFFQyxXQUFXLEVBQUUsR0FBR0Q7SUFDdEIsT0FBTyxDQUFDLEdBQUdWLGVBQWVZLFdBQVcsRUFBRUQ7QUFDM0MsR0FBR0UsS0FBSyxDQUFDLENBQUNDO0lBQ05DLFFBQVFDLEtBQUssQ0FBQyx3QkFBd0JGO0FBQzFDO0FBRUEsSUFBSSxDQUFDLE9BQU9wQixRQUFRYSxPQUFPLEtBQUssY0FBZSxPQUFPYixRQUFRYSxPQUFPLEtBQUssWUFBWWIsUUFBUWEsT0FBTyxLQUFLLElBQUksS0FBTSxPQUFPYixRQUFRYSxPQUFPLENBQUNVLFVBQVUsS0FBSyxhQUFhO0lBQ3JLekIsT0FBT0MsY0FBYyxDQUFDQyxRQUFRYSxPQUFPLEVBQUUsY0FBYztRQUFFWixPQUFPO0lBQUs7SUFDbkVILE9BQU8wQixNQUFNLENBQUN4QixRQUFRYSxPQUFPLEVBQUViO0lBQy9CeUIsT0FBT3pCLE9BQU8sR0FBR0EsUUFBUWEsT0FBTztBQUNsQyxFQUVBLG9DQUFvQyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9uZXh0LWRldi5qcz8zNTE1Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFRPRE86IFJlbW92ZSB1c2Ugb2YgYGFueWAgdHlwZS5cblwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuY29uc3QgX2ludGVyb3BfcmVxdWlyZV9kZWZhdWx0ID0gcmVxdWlyZShcIkBzd2MvaGVscGVycy9fL19pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdFwiKTtcbnJlcXVpcmUoXCIuL3dlYnBhY2tcIik7XG5jb25zdCBfID0gcmVxdWlyZShcIi4vXCIpO1xuY29uc3QgX2hvdG1pZGRsZXdhcmVjbGllbnQgPSAvKiNfX1BVUkVfXyovIF9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdC5fKHJlcXVpcmUoXCIuL2Rldi9ob3QtbWlkZGxld2FyZS1jbGllbnRcIikpO1xuY29uc3QgX3BhZ2Vib290c3RyYXAgPSByZXF1aXJlKFwiLi9wYWdlLWJvb3RzdHJhcFwiKTtcbnJlcXVpcmUoXCIuL3NldHVwLWh5ZHJhdGlvbi13YXJuaW5nXCIpO1xud2luZG93Lm5leHQgPSB7XG4gICAgdmVyc2lvbjogXy52ZXJzaW9uLFxuICAgIC8vIHJvdXRlciBpcyBpbml0aWFsaXplZCBsYXRlciBzbyBpdCBoYXMgdG8gYmUgbGl2ZS1iaW5kZWRcbiAgICBnZXQgcm91dGVyICgpIHtcbiAgICAgICAgcmV0dXJuIF8ucm91dGVyO1xuICAgIH0sXG4gICAgZW1pdHRlcjogXy5lbWl0dGVyXG59O1xuY29uc3QgZGV2Q2xpZW50ID0gKDAsIF9ob3RtaWRkbGV3YXJlY2xpZW50LmRlZmF1bHQpKFwid2VicGFja1wiKTtcbigwLCBfLmluaXRpYWxpemUpKHtcbiAgICBkZXZDbGllbnRcbn0pLnRoZW4oKHBhcmFtKT0+e1xuICAgIGxldCB7IGFzc2V0UHJlZml4IH0gPSBwYXJhbTtcbiAgICByZXR1cm4gKDAsIF9wYWdlYm9vdHN0cmFwLnBhZ2VCb290cmFwKShhc3NldFByZWZpeCk7XG59KS5jYXRjaCgoZXJyKT0+e1xuICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvciB3YXMgbm90IGNhdWdodFwiLCBlcnIpO1xufSk7XG5cbmlmICgodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ2Z1bmN0aW9uJyB8fCAodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ29iamVjdCcgJiYgZXhwb3J0cy5kZWZhdWx0ICE9PSBudWxsKSkgJiYgdHlwZW9mIGV4cG9ydHMuZGVmYXVsdC5fX2VzTW9kdWxlID09PSAndW5kZWZpbmVkJykge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cy5kZWZhdWx0LCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gIE9iamVjdC5hc3NpZ24oZXhwb3J0cy5kZWZhdWx0LCBleHBvcnRzKTtcbiAgbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPW5leHQtZGV2LmpzLm1hcCJdLCJuYW1lcyI6WyJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImV4cG9ydHMiLCJ2YWx1ZSIsIl9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdCIsInJlcXVpcmUiLCJfIiwiX2hvdG1pZGRsZXdhcmVjbGllbnQiLCJfcGFnZWJvb3RzdHJhcCIsIndpbmRvdyIsIm5leHQiLCJ2ZXJzaW9uIiwicm91dGVyIiwiZW1pdHRlciIsImRldkNsaWVudCIsImRlZmF1bHQiLCJpbml0aWFsaXplIiwidGhlbiIsInBhcmFtIiwiYXNzZXRQcmVmaXgiLCJwYWdlQm9vdHJhcCIsImNhdGNoIiwiZXJyIiwiY29uc29sZSIsImVycm9yIiwiX19lc01vZHVsZSIsImFzc2lnbiIsIm1vZHVsZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/next-dev.js\n")); /***/ }), /***/ "./node_modules/next/dist/client/normalize-trailing-slash.js": /*!*******************************************************************!*\ !*** ./node_modules/next/dist/client/normalize-trailing-slash.js ***! \*******************************************************************/ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"normalizePathTrailingSlash\", ({\n enumerable: true,\n get: function() {\n return normalizePathTrailingSlash;\n }\n}));\nconst _removetrailingslash = __webpack_require__(/*! ../shared/lib/router/utils/remove-trailing-slash */ \"./node_modules/next/dist/shared/lib/router/utils/remove-trailing-slash.js\");\nconst _parsepath = __webpack_require__(/*! ../shared/lib/router/utils/parse-path */ \"./node_modules/next/dist/shared/lib/router/utils/parse-path.js\");\nconst normalizePathTrailingSlash = (path)=>{\n if (!path.startsWith(\"/\") || undefined) {\n return path;\n }\n const { pathname, query, hash } = (0, _parsepath.parsePath)(path);\n if (false) {}\n return \"\" + (0, _removetrailingslash.removeTrailingSlash)(pathname) + query + hash;\n};\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=normalize-trailing-slash.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9ub3JtYWxpemUtdHJhaWxpbmctc2xhc2guanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYkEsOENBQTZDO0lBQ3pDRyxPQUFPO0FBQ1gsQ0FBQyxFQUFDO0FBQ0ZILDhEQUE2RDtJQUN6REksWUFBWTtJQUNaQyxLQUFLO1FBQ0QsT0FBT0M7SUFDWDtBQUNKLENBQUMsRUFBQztBQUNGLE1BQU1DLHVCQUF1QkMsbUJBQU9BLENBQUMsbUlBQWtEO0FBQ3ZGLE1BQU1DLGFBQWFELG1CQUFPQSxDQUFDLDZHQUF1QztBQUNsRSxNQUFNRiw2QkFBNkIsQ0FBQ0k7SUFDaEMsSUFBSSxDQUFDQSxLQUFLQyxVQUFVLENBQUMsUUFBUUMsU0FBd0MsRUFBRTtRQUNuRSxPQUFPRjtJQUNYO0lBQ0EsTUFBTSxFQUFFSyxRQUFRLEVBQUVDLEtBQUssRUFBRUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxHQUFHUixXQUFXUyxTQUFTLEVBQUVSO0lBQzVELElBQUlFLEtBQWlDLEVBQUUsRUFRdEM7SUFDRCxPQUFPLEtBQUssQ0FBQyxHQUFHTCxxQkFBcUJjLG1CQUFtQixFQUFFTixZQUFZQyxRQUFRQztBQUNsRjtBQUVBLElBQUksQ0FBQyxPQUFPZixRQUFRcUIsT0FBTyxLQUFLLGNBQWUsT0FBT3JCLFFBQVFxQixPQUFPLEtBQUssWUFBWXJCLFFBQVFxQixPQUFPLEtBQUssSUFBSSxLQUFNLE9BQU9yQixRQUFRcUIsT0FBTyxDQUFDQyxVQUFVLEtBQUssYUFBYTtJQUNyS3hCLE9BQU9DLGNBQWMsQ0FBQ0MsUUFBUXFCLE9BQU8sRUFBRSxjQUFjO1FBQUVwQixPQUFPO0lBQUs7SUFDbkVILE9BQU95QixNQUFNLENBQUN2QixRQUFRcUIsT0FBTyxFQUFFckI7SUFDL0J3QixPQUFPeEIsT0FBTyxHQUFHQSxRQUFRcUIsT0FBTztBQUNsQyxFQUVBLG9EQUFvRCIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9ub3JtYWxpemUtdHJhaWxpbmctc2xhc2guanM/NGMyZSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIm5vcm1hbGl6ZVBhdGhUcmFpbGluZ1NsYXNoXCIsIHtcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBub3JtYWxpemVQYXRoVHJhaWxpbmdTbGFzaDtcbiAgICB9XG59KTtcbmNvbnN0IF9yZW1vdmV0cmFpbGluZ3NsYXNoID0gcmVxdWlyZShcIi4uL3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL3JlbW92ZS10cmFpbGluZy1zbGFzaFwiKTtcbmNvbnN0IF9wYXJzZXBhdGggPSByZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvcGFyc2UtcGF0aFwiKTtcbmNvbnN0IG5vcm1hbGl6ZVBhdGhUcmFpbGluZ1NsYXNoID0gKHBhdGgpPT57XG4gICAgaWYgKCFwYXRoLnN0YXJ0c1dpdGgoXCIvXCIpIHx8IHByb2Nlc3MuZW52Ll9fTkVYVF9NQU5VQUxfVFJBSUxJTkdfU0xBU0gpIHtcbiAgICAgICAgcmV0dXJuIHBhdGg7XG4gICAgfVxuICAgIGNvbnN0IHsgcGF0aG5hbWUsIHF1ZXJ5LCBoYXNoIH0gPSAoMCwgX3BhcnNlcGF0aC5wYXJzZVBhdGgpKHBhdGgpO1xuICAgIGlmIChwcm9jZXNzLmVudi5fX05FWFRfVFJBSUxJTkdfU0xBU0gpIHtcbiAgICAgICAgaWYgKC9cXC5bXi9dK1xcLz8kLy50ZXN0KHBhdGhuYW1lKSkge1xuICAgICAgICAgICAgcmV0dXJuIFwiXCIgKyAoMCwgX3JlbW92ZXRyYWlsaW5nc2xhc2gucmVtb3ZlVHJhaWxpbmdTbGFzaCkocGF0aG5hbWUpICsgcXVlcnkgKyBoYXNoO1xuICAgICAgICB9IGVsc2UgaWYgKHBhdGhuYW1lLmVuZHNXaXRoKFwiL1wiKSkge1xuICAgICAgICAgICAgcmV0dXJuIFwiXCIgKyBwYXRobmFtZSArIHF1ZXJ5ICsgaGFzaDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBwYXRobmFtZSArIFwiL1wiICsgcXVlcnkgKyBoYXNoO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBcIlwiICsgKDAsIF9yZW1vdmV0cmFpbGluZ3NsYXNoLnJlbW92ZVRyYWlsaW5nU2xhc2gpKHBhdGhuYW1lKSArIHF1ZXJ5ICsgaGFzaDtcbn07XG5cbmlmICgodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ2Z1bmN0aW9uJyB8fCAodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ29iamVjdCcgJiYgZXhwb3J0cy5kZWZhdWx0ICE9PSBudWxsKSkgJiYgdHlwZW9mIGV4cG9ydHMuZGVmYXVsdC5fX2VzTW9kdWxlID09PSAndW5kZWZpbmVkJykge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cy5kZWZhdWx0LCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gIE9iamVjdC5hc3NpZ24oZXhwb3J0cy5kZWZhdWx0LCBleHBvcnRzKTtcbiAgbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPW5vcm1hbGl6ZS10cmFpbGluZy1zbGFzaC5qcy5tYXAiXSwibmFtZXMiOlsiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJleHBvcnRzIiwidmFsdWUiLCJlbnVtZXJhYmxlIiwiZ2V0Iiwibm9ybWFsaXplUGF0aFRyYWlsaW5nU2xhc2giLCJfcmVtb3ZldHJhaWxpbmdzbGFzaCIsInJlcXVpcmUiLCJfcGFyc2VwYXRoIiwicGF0aCIsInN0YXJ0c1dpdGgiLCJwcm9jZXNzIiwiZW52IiwiX19ORVhUX01BTlVBTF9UUkFJTElOR19TTEFTSCIsInBhdGhuYW1lIiwicXVlcnkiLCJoYXNoIiwicGFyc2VQYXRoIiwiX19ORVhUX1RSQUlMSU5HX1NMQVNIIiwidGVzdCIsInJlbW92ZVRyYWlsaW5nU2xhc2giLCJlbmRzV2l0aCIsImRlZmF1bHQiLCJfX2VzTW9kdWxlIiwiYXNzaWduIiwibW9kdWxlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/normalize-trailing-slash.js\n")); /***/ }), /***/ "./node_modules/next/dist/client/on-recoverable-error.js": /*!***************************************************************!*\ !*** ./node_modules/next/dist/client/on-recoverable-error.js ***! \***************************************************************/ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"default\", ({\n enumerable: true,\n get: function() {\n return onRecoverableError;\n }\n}));\nconst _nossrerror = __webpack_require__(/*! ../shared/lib/lazy-dynamic/no-ssr-error */ \"./node_modules/next/dist/shared/lib/lazy-dynamic/no-ssr-error.js\");\nfunction onRecoverableError(err) {\n // Using default react onRecoverableError\n // x-ref: https://github.com/facebook/react/blob/d4bc16a7d69eb2ea38a88c8ac0b461d5f72cdcab/packages/react-dom/src/client/ReactDOMRoot.js#L83\n const defaultOnRecoverableError = typeof reportError === \"function\" ? reportError : (error)=>{\n window.console.error(error);\n };\n // Skip certain custom errors which are not expected to be reported on client\n if (err.digest === _nossrerror.NEXT_DYNAMIC_NO_SSR_CODE) return;\n defaultOnRecoverableError(err);\n}\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=on-recoverable-error.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9vbi1yZWNvdmVyYWJsZS1lcnJvci5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiQSw4Q0FBNkM7SUFDekNHLE9BQU87QUFDWCxDQUFDLEVBQUM7QUFDRkgsMkNBQTBDO0lBQ3RDSSxZQUFZO0lBQ1pDLEtBQUs7UUFDRCxPQUFPQztJQUNYO0FBQ0osQ0FBQyxFQUFDO0FBQ0YsTUFBTUMsY0FBY0MsbUJBQU9BLENBQUMsaUhBQXlDO0FBQ3JFLFNBQVNGLG1CQUFtQkcsR0FBRztJQUMzQix5Q0FBeUM7SUFDekMsMklBQTJJO0lBQzNJLE1BQU1DLDRCQUE0QixPQUFPQyxnQkFBZ0IsYUFDekRBLGNBQWMsQ0FBQ0M7UUFDWEMsT0FBT0MsT0FBTyxDQUFDRixLQUFLLENBQUNBO0lBQ3pCO0lBQ0EsNkVBQTZFO0lBQzdFLElBQUlILElBQUlNLE1BQU0sS0FBS1IsWUFBWVMsd0JBQXdCLEVBQUU7SUFDekROLDBCQUEwQkQ7QUFDOUI7QUFFQSxJQUFJLENBQUMsT0FBT1AsUUFBUWUsT0FBTyxLQUFLLGNBQWUsT0FBT2YsUUFBUWUsT0FBTyxLQUFLLFlBQVlmLFFBQVFlLE9BQU8sS0FBSyxJQUFJLEtBQU0sT0FBT2YsUUFBUWUsT0FBTyxDQUFDQyxVQUFVLEtBQUssYUFBYTtJQUNyS2xCLE9BQU9DLGNBQWMsQ0FBQ0MsUUFBUWUsT0FBTyxFQUFFLGNBQWM7UUFBRWQsT0FBTztJQUFLO0lBQ25FSCxPQUFPbUIsTUFBTSxDQUFDakIsUUFBUWUsT0FBTyxFQUFFZjtJQUMvQmtCLE9BQU9sQixPQUFPLEdBQUdBLFFBQVFlLE9BQU87QUFDbEMsRUFFQSxnREFBZ0QiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvb24tcmVjb3ZlcmFibGUtZXJyb3IuanM/ZWI5MiJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImRlZmF1bHRcIiwge1xuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIG9uUmVjb3ZlcmFibGVFcnJvcjtcbiAgICB9XG59KTtcbmNvbnN0IF9ub3NzcmVycm9yID0gcmVxdWlyZShcIi4uL3NoYXJlZC9saWIvbGF6eS1keW5hbWljL25vLXNzci1lcnJvclwiKTtcbmZ1bmN0aW9uIG9uUmVjb3ZlcmFibGVFcnJvcihlcnIpIHtcbiAgICAvLyBVc2luZyBkZWZhdWx0IHJlYWN0IG9uUmVjb3ZlcmFibGVFcnJvclxuICAgIC8vIHgtcmVmOiBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvYmxvYi9kNGJjMTZhN2Q2OWViMmVhMzhhODhjOGFjMGI0NjFkNWY3MmNkY2FiL3BhY2thZ2VzL3JlYWN0LWRvbS9zcmMvY2xpZW50L1JlYWN0RE9NUm9vdC5qcyNMODNcbiAgICBjb25zdCBkZWZhdWx0T25SZWNvdmVyYWJsZUVycm9yID0gdHlwZW9mIHJlcG9ydEVycm9yID09PSBcImZ1bmN0aW9uXCIgPyAvLyBlbXVsYXRpbmcgYW4gdW5jYXVnaHQgSmF2YVNjcmlwdCBlcnJvci5cbiAgICByZXBvcnRFcnJvciA6IChlcnJvcik9PntcbiAgICAgICAgd2luZG93LmNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgIH07XG4gICAgLy8gU2tpcCBjZXJ0YWluIGN1c3RvbSBlcnJvcnMgd2hpY2ggYXJlIG5vdCBleHBlY3RlZCB0byBiZSByZXBvcnRlZCBvbiBjbGllbnRcbiAgICBpZiAoZXJyLmRpZ2VzdCA9PT0gX25vc3NyZXJyb3IuTkVYVF9EWU5BTUlDX05PX1NTUl9DT0RFKSByZXR1cm47XG4gICAgZGVmYXVsdE9uUmVjb3ZlcmFibGVFcnJvcihlcnIpO1xufVxuXG5pZiAoKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdmdW5jdGlvbicgfHwgKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdvYmplY3QnICYmIGV4cG9ydHMuZGVmYXVsdCAhPT0gbnVsbCkpICYmIHR5cGVvZiBleHBvcnRzLmRlZmF1bHQuX19lc01vZHVsZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMuZGVmYXVsdCwgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuICBPYmplY3QuYXNzaWduKGV4cG9ydHMuZGVmYXVsdCwgZXhwb3J0cyk7XG4gIG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cy5kZWZhdWx0O1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1vbi1yZWNvdmVyYWJsZS1lcnJvci5qcy5tYXAiXSwibmFtZXMiOlsiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJleHBvcnRzIiwidmFsdWUiLCJlbnVtZXJhYmxlIiwiZ2V0Iiwib25SZWNvdmVyYWJsZUVycm9yIiwiX25vc3NyZXJyb3IiLCJyZXF1aXJlIiwiZXJyIiwiZGVmYXVsdE9uUmVjb3ZlcmFibGVFcnJvciIsInJlcG9ydEVycm9yIiwiZXJyb3IiLCJ3aW5kb3ciLCJjb25zb2xlIiwiZGlnZXN0IiwiTkVYVF9EWU5BTUlDX05PX1NTUl9DT0RFIiwiZGVmYXVsdCIsIl9fZXNNb2R1bGUiLCJhc3NpZ24iLCJtb2R1bGUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/on-recoverable-error.js\n")); /***/ }), /***/ "./node_modules/next/dist/client/page-bootstrap.js": /*!*********************************************************!*\ !*** ./node_modules/next/dist/client/page-bootstrap.js ***! \*********************************************************/ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"pageBootrap\", ({\n enumerable: true,\n get: function() {\n return pageBootrap;\n }\n}));\nconst _interop_require_default = __webpack_require__(/*! @swc/helpers/_/_interop_require_default */ \"./node_modules/@swc/helpers/esm/_interop_require_default.js\");\nconst _ = __webpack_require__(/*! ./ */ \"./node_modules/next/dist/client/index.js\");\nconst _ondemandentriesclient = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! ./dev/on-demand-entries-client */ \"./node_modules/next/dist/client/dev/on-demand-entries-client.js\"));\nconst _devbuildwatcher = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! ./dev/dev-build-watcher */ \"./node_modules/next/dist/client/dev/dev-build-watcher.js\"));\nconst _fouc = __webpack_require__(/*! ./dev/fouc */ \"./node_modules/next/dist/client/dev/fouc.js\");\nconst _websocket = __webpack_require__(/*! ./dev/error-overlay/websocket */ \"./node_modules/next/dist/client/dev/error-overlay/websocket.js\");\nconst _querystring = __webpack_require__(/*! ../shared/lib/router/utils/querystring */ \"./node_modules/next/dist/shared/lib/router/utils/querystring.js\");\nconst _hotreloadertypes = __webpack_require__(/*! ../server/dev/hot-reloader-types */ \"./node_modules/next/dist/server/dev/hot-reloader-types.js\");\nfunction pageBootrap(assetPrefix) {\n (0, _websocket.connectHMR)({\n assetPrefix,\n path: \"/_next/webpack-hmr\"\n });\n return (0, _.hydrate)({\n beforeRender: _fouc.displayContent\n }).then(()=>{\n (0, _ondemandentriesclient.default)();\n let buildIndicatorHandler;\n if (true) {\n (0, _devbuildwatcher.default)((handler)=>{\n buildIndicatorHandler = handler;\n }, \"bottom-right\");\n }\n let reloading = false;\n (0, _websocket.addMessageListener)((payload)=>{\n if (reloading) return;\n if (\"action\" in payload) {\n if (payload.action === _hotreloadertypes.HMR_ACTIONS_SENT_TO_BROWSER.SERVER_ERROR) {\n const { stack, message } = JSON.parse(payload.errorJSON);\n const error = new Error(message);\n error.stack = stack;\n throw error;\n } else if (payload.action === _hotreloadertypes.HMR_ACTIONS_SENT_TO_BROWSER.RELOAD_PAGE) {\n reloading = true;\n window.location.reload();\n } else if (payload.action === _hotreloadertypes.HMR_ACTIONS_SENT_TO_BROWSER.DEV_PAGES_MANIFEST_UPDATE) {\n fetch(\"\" + assetPrefix + \"/_next/static/development/_devPagesManifest.json\").then((res)=>res.json()).then((manifest)=>{\n window.__DEV_PAGES_MANIFEST = manifest;\n }).catch((err)=>{\n console.log(\"Failed to fetch devPagesManifest\", err);\n });\n }\n } else if (\"event\" in payload) {\n if (payload.event === _hotreloadertypes.HMR_ACTIONS_SENT_TO_BROWSER.MIDDLEWARE_CHANGES) {\n return window.location.reload();\n } else if (payload.event === _hotreloadertypes.HMR_ACTIONS_SENT_TO_BROWSER.SERVER_ONLY_CHANGES) {\n const { pages } = payload;\n // Make sure to reload when the dev-overlay is showing for an\n // API route\n // TODO: Fix `__NEXT_PAGE` type\n if (pages.includes(_.router.query.__NEXT_PAGE)) {\n return window.location.reload();\n }\n if (!_.router.clc && pages.includes(_.router.pathname)) {\n console.log(\"Refreshing page data due to server-side change\");\n buildIndicatorHandler == null ? void 0 : buildIndicatorHandler.show();\n const clearIndicator = ()=>buildIndicatorHandler == null ? void 0 : buildIndicatorHandler.hide();\n _.router.replace(_.router.pathname + \"?\" + String((0, _querystring.assign)((0, _querystring.urlQueryToSearchParams)(_.router.query), new URLSearchParams(location.search))), _.router.asPath, {\n scroll: false\n }).catch(()=>{\n // trigger hard reload when failing to refresh data\n // to show error overlay properly\n location.reload();\n }).finally(clearIndicator);\n }\n }\n }\n });\n });\n}\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=page-bootstrap.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9wYWdlLWJvb3RzdHJhcC5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiQSw4Q0FBNkM7SUFDekNHLE9BQU87QUFDWCxDQUFDLEVBQUM7QUFDRkgsK0NBQThDO0lBQzFDSSxZQUFZO0lBQ1pDLEtBQUs7UUFDRCxPQUFPQztJQUNYO0FBQ0osQ0FBQyxFQUFDO0FBQ0YsTUFBTUMsMkJBQTJCQyxtQkFBT0EsQ0FBQyw0R0FBeUM7QUFDbEYsTUFBTUMsSUFBSUQsbUJBQU9BLENBQUMsb0RBQUk7QUFDdEIsTUFBTUUseUJBQXlCLFdBQVcsR0FBR0gseUJBQXlCRSxDQUFDLENBQUNELG1CQUFPQSxDQUFDLHVHQUFnQztBQUNoSCxNQUFNRyxtQkFBbUIsV0FBVyxHQUFHSix5QkFBeUJFLENBQUMsQ0FBQ0QsbUJBQU9BLENBQUMseUZBQXlCO0FBQ25HLE1BQU1JLFFBQVFKLG1CQUFPQSxDQUFDLCtEQUFZO0FBQ2xDLE1BQU1LLGFBQWFMLG1CQUFPQSxDQUFDLHFHQUErQjtBQUMxRCxNQUFNTSxlQUFlTixtQkFBT0EsQ0FBQywrR0FBd0M7QUFDckUsTUFBTU8sb0JBQW9CUCxtQkFBT0EsQ0FBQyxtR0FBa0M7QUFDcEUsU0FBU0YsWUFBWVUsV0FBVztJQUMzQixJQUFHSCxXQUFXSSxVQUFVLEVBQUU7UUFDdkJEO1FBQ0FFLE1BQU07SUFDVjtJQUNBLE9BQU8sQ0FBQyxHQUFHVCxFQUFFVSxPQUFPLEVBQUU7UUFDbEJDLGNBQWNSLE1BQU1TLGNBQWM7SUFDdEMsR0FBR0MsSUFBSSxDQUFDO1FBQ0gsSUFBR1osdUJBQXVCYSxPQUFPO1FBQ2xDLElBQUlDO1FBQ0osSUFBSUMsSUFBa0MsRUFBRTtZQUNuQyxJQUFHZCxpQkFBaUJZLE9BQU8sRUFBRSxDQUFDSztnQkFDM0JKLHdCQUF3Qkk7WUFDNUIsR0FBR0gsY0FBMkM7UUFDbEQ7UUFDQSxJQUFJSyxZQUFZO1FBQ2YsSUFBR2pCLFdBQVdrQixrQkFBa0IsRUFBRSxDQUFDQztZ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O0lBQ25FSCxPQUFPd0UsTUFBTSxDQUFDdEUsUUFBUXFCLE9BQU8sRUFBRXJCO0lBQy9COEUsT0FBTzlFLE9BQU8sR0FBR0EsUUFBUXFCLE9BQU87QUFDbEMsRUFFQSwwQ0FBMEMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvcGFnZS1ib290c3RyYXAuanM/ZWVkMSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcInBhZ2VCb290cmFwXCIsIHtcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBwYWdlQm9vdHJhcDtcbiAgICB9XG59KTtcbmNvbnN0IF9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdCA9IHJlcXVpcmUoXCJAc3djL2hlbHBlcnMvXy9faW50ZXJvcF9yZXF1aXJlX2RlZmF1bHRcIik7XG5jb25zdCBfID0gcmVxdWlyZShcIi4vXCIpO1xuY29uc3QgX29uZGVtYW5kZW50cmllc2NsaWVudCA9IC8qI19fUFVSRV9fKi8gX2ludGVyb3BfcmVxdWlyZV9kZWZhdWx0Ll8ocmVxdWlyZShcIi4vZGV2L29uLWRlbWFuZC1lbnRyaWVzLWNsaWVudFwiKSk7XG5jb25zdCBfZGV2YnVpbGR3YXRjaGVyID0gLyojX19QVVJFX18qLyBfaW50ZXJvcF9yZXF1aXJlX2RlZmF1bHQuXyhyZXF1aXJlKFwiLi9kZXYvZGV2LWJ1aWxkLXdhdGNoZXJcIikpO1xuY29uc3QgX2ZvdWMgPSByZXF1aXJlKFwiLi9kZXYvZm91Y1wiKTtcbmNvbnN0IF93ZWJzb2NrZXQgPSByZXF1aXJlKFwiLi9kZXYvZXJyb3Itb3ZlcmxheS93ZWJzb2NrZXRcIik7XG5jb25zdCBfcXVlcnlzdHJpbmcgPSByZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvcXVlcnlzdHJpbmdcIik7XG5jb25zdCBfaG90cmVsb2FkZXJ0eXBlcyA9IHJlcXVpcmUoXCIuLi9zZXJ2ZXIvZGV2L2hvdC1yZWxvYWRlci10eXBlc1wiKTtcbmZ1bmN0aW9uIHBhZ2VCb290cmFwKGFzc2V0UHJlZml4KSB7XG4gICAgKDAsIF93ZWJzb2NrZXQuY29ubmVjdEhNUikoe1xuICAgICAgICBhc3NldFByZWZpeCxcbiAgICAgICAgcGF0aDogXCIvX25leHQvd2VicGFjay1obXJcIlxuICAgIH0pO1xuICAgIHJldHVybiAoMCwgXy5oeWRyYXRlKSh7XG4gICAgICAgIGJlZm9yZVJlbmRlcjogX2ZvdWMuZGlzcGxheUNvbnRlbnRcbiAgICB9KS50aGVuKCgpPT57XG4gICAgICAgICgwLCBfb25kZW1hbmRlbnRyaWVzY2xpZW50LmRlZmF1bHQpKCk7XG4gICAgICAgIGxldCBidWlsZEluZGljYXRvckhhbmRsZXI7XG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5fX05FWFRfQlVJTERfSU5ESUNBVE9SKSB7XG4gICAgICAgICAgICAoMCwgX2RldmJ1aWxkd2F0Y2hlci5kZWZhdWx0KSgoaGFuZGxlcik9PntcbiAgICAgICAgICAgICAgICBidWlsZEluZGljYXRvckhhbmRsZXIgPSBoYW5kbGVyO1xuICAgICAgICAgICAgfSwgcHJvY2Vzcy5lbnYuX19ORVhUX0JVSUxEX0lORElDQVRPUl9QT1NJVElPTik7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHJlbG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAoMCwgX3dlYnNvY2tldC5hZGRNZXNzYWdlTGlzdGVuZXIpKChwYXlsb2FkKT0+e1xuICAgICAgICAgICAgaWYgKHJlbG9hZGluZykgcmV0dXJuO1xuICAgICAgICAgICAgaWYgKFwiYWN0aW9uXCIgaW4gcGF5bG9hZCkge1xuICAgICAgICAgICAgICAgIGlmIChwYXlsb2FkLmFjdGlvbiA9PT0gX2hvdHJlbG9hZGVydHlwZXMuSE1SX0FDVElPTlNfU0VOVF9UT19CUk9XU0VSLlNFUlZFUl9FUlJPUikge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHN0YWNrLCBtZXNzYWdlIH0gPSBKU09OLnBhcnNlKHBheWxvYWQuZXJyb3JKU09OKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IobWVzc2FnZSk7XG4gICAgICAgICAgICAgICAgICAgIGVycm9yLnN0YWNrID0gc3RhY2s7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocGF5bG9hZC5hY3Rpb24gPT09IF9ob3RyZWxvYWRlcnR5cGVzLkhNUl9BQ1RJT05TX1NFTlRfVE9fQlJPV1NFUi5SRUxPQURfUEFHRSkge1xuICAgICAgICAgICAgICAgICAgICByZWxvYWRpbmcgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChwYXlsb2FkLmFjdGlvbiA9PT0gX2hvdHJlbG9hZGVydHlwZXMuSE1SX0FDVElPTlNfU0VOVF9UT19CUk9XU0VSLkRFVl9QQUdFU19NQU5JRkVTVF9VUERBVEUpIHtcbiAgICAgICAgICAgICAgICAgICAgZmV0Y2goXCJcIiArIGFzc2V0UHJlZml4ICsgXCIvX25leHQvc3RhdGljL2RldmVsb3BtZW50L19kZXZQYWdlc01hbmlmZXN0Lmpzb25cIikudGhlbigocmVzKT0+cmVzLmpzb24oKSkudGhlbigobWFuaWZlc3QpPT57XG4gICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cuX19ERVZfUEFHRVNfTUFOSUZFU1QgPSBtYW5pZmVzdDtcbiAgICAgICAgICAgICAgICAgICAgfSkuY2F0Y2goKGVycik9PntcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiRmFpbGVkIHRvIGZldGNoIGRldlBhZ2VzTWFuaWZlc3RcIiwgZXJyKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChcImV2ZW50XCIgaW4gcGF5bG9hZCkge1xuICAgICAgICAgICAgICAgIGlmIChwYXlsb2FkLmV2ZW50ID09PSBfaG90cmVsb2FkZXJ0eXBlcy5ITVJfQUNUSU9OU19TRU5UX1RPX0JST1dTRVIuTUlERExFV0FSRV9DSEFOR0VTKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChwYXlsb2FkLmV2ZW50ID09PSBfaG90cmVsb2FkZXJ0eXBlcy5ITVJfQUNUSU9OU19TRU5UX1RPX0JST1dTRVIuU0VSVkVSX09OTFlfQ0hBTkdFUykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHBhZ2VzIH0gPSBwYXlsb2FkO1xuICAgICAgICAgICAgICAgICAgICAvLyBNYWtlIHN1cmUgdG8gcmVsb2FkIHdoZW4gdGhlIGRldi1vdmVybGF5IGlzIHNob3dpbmcgZm9yIGFuXG4gICAgICAgICAgICAgICAgICAgIC8vIEFQSSByb3V0ZVxuICAgICAgICAgICAgICAgICAgICAvLyBUT0RPOiBGaXggYF9fTkVYVF9QQUdFYCB0eXBlXG4gICAgICAgICAgICAgICAgICAgIGlmIChwYWdlcy5pbmNsdWRlcyhfLnJvdXRlci5xdWVyeS5fX05FWFRfUEFHRSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKCFfLnJvdXRlci5jbGMgJiYgcGFnZXMuaW5jbHVkZXMoXy5yb3V0ZXIucGF0aG5hbWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIlJlZnJlc2hpbmcgcGFnZSBkYXRhIGR1ZSB0byBzZXJ2ZXItc2lkZSBjaGFuZ2VcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICBidWlsZEluZGljYXRvckhhbmRsZXIgPT0gbnVsbCA/IHZvaWQgMCA6IGJ1aWxkSW5kaWNhdG9ySGFuZGxlci5zaG93KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjbGVhckluZGljYXRvciA9ICgpPT5idWlsZEluZGljYXRvckhhbmRsZXIgPT0gbnVsbCA/IHZvaWQgMCA6IGJ1aWxkSW5kaWNhdG9ySGFuZGxlci5oaWRlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBfLnJvdXRlci5yZXBsYWNlKF8ucm91dGVyLnBhdGhuYW1lICsgXCI/XCIgKyBTdHJpbmcoKDAsIF9xdWVyeXN0cmluZy5hc3NpZ24pKCgwLCBfcXVlcnlzdHJpbmcudXJsUXVlcnlUb1NlYXJjaFBhcmFtcykoXy5yb3V0ZXIucXVlcnkpLCBuZXcgVVJMU2VhcmNoUGFyYW1zKGxvY2F0aW9uLnNlYXJjaCkpKSwgXy5yb3V0ZXIuYXNQYXRoLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsOiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfSkuY2F0Y2goKCk9PntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0cmlnZ2VyIGhhcmQgcmVsb2FkIHdoZW4gZmFpbGluZyB0byByZWZyZXNoIGRhdGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0byBzaG93IGVycm9yIG92ZXJsYXkgcHJvcGVybHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbi5yZWxvYWQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLmZpbmFsbHkoY2xlYXJJbmRpY2F0b3IpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9KTtcbn1cblxuaWYgKCh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnZnVuY3Rpb24nIHx8ICh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnb2JqZWN0JyAmJiBleHBvcnRzLmRlZmF1bHQgIT09IG51bGwpKSAmJiB0eXBlb2YgZXhwb3J0cy5kZWZhdWx0Ll9fZXNNb2R1bGUgPT09ICd1bmRlZmluZWQnKSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLmRlZmF1bHQsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiAgT2JqZWN0LmFzc2lnbihleHBvcnRzLmRlZmF1bHQsIGV4cG9ydHMpO1xuICBtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMuZGVmYXVsdDtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cGFnZS1ib290c3RyYXAuanMubWFwIl0sIm5hbWVzIjpbIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZXhwb3J0cyIsInZhbHVlIiwiZW51bWVyYWJsZSIsImdldCIsInBhZ2VCb290cmFwIiwiX2ludGVyb3BfcmVxdWlyZV9kZWZhdWx0IiwicmVxdWlyZSIsIl8iLCJfb25kZW1hbmRlbnRyaWVzY2xpZW50IiwiX2RldmJ1aWxkd2F0Y2hlciIsIl9mb3VjIiwiX3dlYnNvY2tldCIsIl9xdWVyeXN0cmluZyIsIl9ob3RyZWxvYWRlcnR5cGVzIiwiYXNzZXRQcmVmaXgiLCJjb25uZWN0SE1SIiwicGF0aCIsImh5ZHJhdGUiLCJiZWZvcmVSZW5kZXIiLCJkaXNwbGF5Q29udGVudCIsInRoZW4iLCJkZWZhdWx0IiwiYnVpbGRJbmRpY2F0b3JIYW5kbGVyIiwicHJvY2VzcyIsImVudiIsIl9fTkVYVF9CVUlMRF9JTkRJQ0FUT1IiLCJoYW5kbGVyIiwiX19ORVhUX0JVSUxEX0lORElDQVRPUl9QT1NJVElPTiIsInJlbG9hZGluZyIsImFkZE1lc3NhZ2VMaXN0ZW5lciIsInBheWxvYWQiLCJhY3Rpb24iLCJITVJfQUNUSU9OU19TRU5UX1RPX0JST1dTRVIiLCJTRVJWRVJfRVJST1IiLCJzdGFjayIsIm1lc3NhZ2UiLCJKU09OIiwicGFyc2UiLCJlcnJvckpTT04iLCJlcnJvciIsIkVycm9yIiwiUkVMT0FEX1BBR0UiLCJ3aW5kb3ciLCJsb2NhdGlvbiIsInJlbG9hZCIsIkRFVl9QQUdFU19NQU5JRkVTVF9VUERBVEUiLCJmZXRjaCIsInJlcyIsImpzb24iLCJtYW5pZmVzdCIsIl9fREVWX1BBR0VTX01BTklGRVNUIiwiY2F0Y2giLCJlcnIiLCJjb25zb2xlIiwibG9nIiwiZXZlbnQiLCJNSURETEVXQVJFX0NIQU5HRVMiLCJTRVJWRVJfT05MWV9DSEFOR0VTIiwicGFnZXMiLCJpbmNsdWRlcyIsInJvdXRlciIsInF1ZXJ5IiwiX19ORVhUX1BBR0UiLCJjbGMiLCJwYXRobmFtZSIsInNob3ciLCJjbGVhckluZGljYXRvciIsImhpZGUiLCJyZXBsYWNlIiwiU3RyaW5nIiwiYXNzaWduIiwidXJsUXVlcnlUb1NlYXJjaFBhcmFtcyIsIlVSTFNlYXJjaFBhcmFtcyIsInNlYXJjaCIsImFzUGF0aCIsInNjcm9sbCIsImZpbmFsbHkiLCJfX2VzTW9kdWxlIiwibW9kdWxlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/page-bootstrap.js\n")); /***/ }), /***/ "./node_modules/next/dist/client/page-loader.js": /*!******************************************************!*\ !*** ./node_modules/next/dist/client/page-loader.js ***! \******************************************************/ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"default\", ({\n enumerable: true,\n get: function() {\n return PageLoader;\n }\n}));\nconst _interop_require_default = __webpack_require__(/*! @swc/helpers/_/_interop_require_default */ \"./node_modules/@swc/helpers/esm/_interop_require_default.js\");\nconst _addbasepath = __webpack_require__(/*! ./add-base-path */ \"./node_modules/next/dist/client/add-base-path.js\");\nconst _interpolateas = __webpack_require__(/*! ../shared/lib/router/utils/interpolate-as */ \"./node_modules/next/dist/shared/lib/router/utils/interpolate-as.js\");\nconst _getassetpathfromroute = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! ../shared/lib/router/utils/get-asset-path-from-route */ \"./node_modules/next/dist/shared/lib/router/utils/get-asset-path-from-route.js\"));\nconst _addlocale = __webpack_require__(/*! ./add-locale */ \"./node_modules/next/dist/client/add-locale.js\");\nconst _isdynamic = __webpack_require__(/*! ../shared/lib/router/utils/is-dynamic */ \"./node_modules/next/dist/shared/lib/router/utils/is-dynamic.js\");\nconst _parserelativeurl = __webpack_require__(/*! ../shared/lib/router/utils/parse-relative-url */ \"./node_modules/next/dist/shared/lib/router/utils/parse-relative-url.js\");\nconst _removetrailingslash = __webpack_require__(/*! ../shared/lib/router/utils/remove-trailing-slash */ \"./node_modules/next/dist/shared/lib/router/utils/remove-trailing-slash.js\");\nconst _routeloader = __webpack_require__(/*! ./route-loader */ \"./node_modules/next/dist/client/route-loader.js\");\nconst _constants = __webpack_require__(/*! ../shared/lib/constants */ \"./node_modules/next/dist/shared/lib/constants.js\");\nclass PageLoader {\n getPageList() {\n if (false) {} else {\n if (window.__DEV_PAGES_MANIFEST) {\n return window.__DEV_PAGES_MANIFEST.pages;\n } else {\n this.promisedDevPagesManifest || (this.promisedDevPagesManifest = fetch(this.assetPrefix + \"/_next/static/development/\" + _constants.DEV_CLIENT_PAGES_MANIFEST).then((res)=>res.json()).then((manifest)=>{\n window.__DEV_PAGES_MANIFEST = manifest;\n return manifest.pages;\n }).catch((err)=>{\n console.log(\"Failed to fetch devPagesManifest:\", err);\n throw new Error(\"Failed to fetch _devPagesManifest.json. Is something blocking that network request?\\n\" + \"Read more: https://nextjs.org/docs/messages/failed-to-fetch-devpagesmanifest\");\n }));\n return this.promisedDevPagesManifest;\n }\n }\n }\n getMiddleware() {\n if (false) {} else {\n if (window.__DEV_MIDDLEWARE_MATCHERS) {\n return window.__DEV_MIDDLEWARE_MATCHERS;\n } else {\n if (!this.promisedMiddlewareMatchers) {\n // TODO: Decide what should happen when fetching fails instead of asserting\n // @ts-ignore\n this.promisedMiddlewareMatchers = fetch(this.assetPrefix + \"/_next/static/\" + this.buildId + \"/\" + _constants.DEV_MIDDLEWARE_MANIFEST).then((res)=>res.json()).then((matchers)=>{\n window.__DEV_MIDDLEWARE_MATCHERS = matchers;\n return matchers;\n }).catch((err)=>{\n console.log(\"Failed to fetch _devMiddlewareManifest\", err);\n });\n }\n // TODO Remove this assertion as this could be undefined\n return this.promisedMiddlewareMatchers;\n }\n }\n }\n getDataHref(params) {\n const { asPath, href, locale } = params;\n const { pathname: hrefPathname, query, search } = (0, _parserelativeurl.parseRelativeUrl)(href);\n const { pathname: asPathname } = (0, _parserelativeurl.parseRelativeUrl)(asPath);\n const route = (0, _removetrailingslash.removeTrailingSlash)(hrefPathname);\n if (route[0] !== \"/\") {\n throw new Error('Route name should start with a \"/\", got \"' + route + '\"');\n }\n const getHrefForSlug = (path)=>{\n const dataRoute = (0, _getassetpathfromroute.default)((0, _removetrailingslash.removeTrailingSlash)((0, _addlocale.addLocale)(path, locale)), \".json\");\n return (0, _addbasepath.addBasePath)(\"/_next/data/\" + this.buildId + dataRoute + search, true);\n };\n return getHrefForSlug(params.skipInterpolation ? asPathname : (0, _isdynamic.isDynamicRoute)(route) ? (0, _interpolateas.interpolateAs)(hrefPathname, asPathname, query).result : route);\n }\n _isSsg(/** the route (file-system path) */ route) {\n return this.promisedSsgManifest.then((manifest)=>manifest.has(route));\n }\n loadPage(route) {\n return this.routeLoader.loadRoute(route).then((res)=>{\n if (\"component\" in res) {\n return {\n page: res.component,\n mod: res.exports,\n styleSheets: res.styles.map((o)=>({\n href: o.href,\n text: o.content\n }))\n };\n }\n throw res.error;\n });\n }\n prefetch(route) {\n return this.routeLoader.prefetch(route);\n }\n constructor(buildId, assetPrefix){\n this.routeLoader = (0, _routeloader.createRouteLoader)(assetPrefix);\n this.buildId = buildId;\n this.assetPrefix = assetPrefix;\n this.promisedSsgManifest = new Promise((resolve)=>{\n if (window.__SSG_MANIFEST) {\n resolve(window.__SSG_MANIFEST);\n } else {\n window.__SSG_MANIFEST_CB = ()=>{\n resolve(window.__SSG_MANIFEST);\n };\n }\n });\n }\n}\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=page-loader.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9wYWdlLWxvYWRlci5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiQSw4Q0FBNkM7SUFDekNHLE9BQU87QUFDWCxDQUFDLEVBQUM7QUFDRkgsMkNBQTBDO0lBQ3RDSSxZQUFZO0lBQ1pDLEtBQUs7UUFDRCxPQUFPQztJQUNYO0FBQ0osQ0FBQyxFQUFDO0FBQ0YsTUFBTUMsMkJBQTJCQyxtQkFBT0EsQ0FBQyw0R0FBeUM7QUFDbEYsTUFBTUMsZUFBZUQsbUJBQU9BLENBQUMseUVBQWlCO0FBQzlDLE1BQU1FLGlCQUFpQkYsbUJBQU9BLENBQUMscUhBQTJDO0FBQzFFLE1BQU1HLHlCQUF5QixXQUFXLEdBQUdKLHlCQUF5QkssQ0FBQyxDQUFDSixtQkFBT0EsQ0FBQywySUFBc0Q7QUFDdEksTUFBTUssYUFBYUwsbUJBQU9BLENBQUMsbUVBQWM7QUFDekMsTUFBTU0sYUFBYU4sbUJBQU9BLENBQUMsNkdBQXVDO0FBQ2xFLE1BQU1PLG9CQUFvQlAsbUJBQU9BLENBQUMsNkhBQStDO0FBQ2pGLE1BQU1RLHVCQUF1QlIsbUJBQU9BLENBQUMsbUlBQWtEO0FBQ3ZGLE1BQU1TLGVBQWVULG1CQUFPQSxDQUFDLHVFQUFnQjtBQUM3QyxNQUFNVSxhQUFhVixtQkFBT0EsQ0FBQyxpRkFBeUI7QUFDcEQsTUFBTUY7SUFDRmEsY0FBYztRQUNWLElBQUlDLEtBQXFDLEVBQUUsRUFFMUMsTUFBTTtZQUNILElBQUlLLE9BQU9DLG9CQUFvQixFQUFFO2dCQUM3QixPQUFPRCxPQUFPQyxvQkFBb0IsQ0FBQ0MsS0FBSztZQUM1QyxPQUFPO2dCQUNILElBQUksQ0FBQ0Msd0JBQXdCLElBQUssS0FBSSxDQUFDQSx3QkFBd0IsR0FBR0MsTUFBTSxJQUFJLENBQUNDLFdBQVcsR0FBRywrQkFBK0JaLFdBQVdhLHlCQUF5QixFQUFFVCxJQUFJLENBQUMsQ0FBQ1UsTUFBTUEsSUFBSUMsSUFBSSxJQUFJWCxJQUFJLENBQUMsQ0FBQ0M7b0JBQzFMRSxPQUFPQyxvQkFBb0IsR0FBR0g7b0JBQzlCLE9BQU9BLFNBQVNJLEtBQUs7Z0JBQ3pCLEdBQUdPLEtBQUssQ0FBQyxDQUFDQztvQkFDTkMsUUFBUUMsR0FBRyxDQUFDLHFDQUFxQ0Y7b0JBQ2pELE1BQU0sSUFBSUcsTUFBTSwwRkFBMEY7Z0JBQzlHLEVBQUM7Z0JBQ0QsT0FBTyxJQUFJLENBQUNWLHdCQUF3QjtZQUN4QztRQUNKO0lBQ0o7SUFDQVcsZ0JBQWdCO1FBQ1osSUFBSW5CLEtBQXFDLEVBQUUsRUFJMUMsTUFBTTtZQUNILElBQUlLLE9BQU9vQix5QkFBeUIsRUFBRTtnQkFDbEMsT0FBT3BCLE9BQU9vQix5QkFBeUI7WUFDM0MsT0FBTztnQkFDSCxJQUFJLENBQUMsSUFBSSxDQUFDQywwQkFBMEIsRUFBRTtvQkFDbEMsMkVBQTJFO29CQUMzRSxhQUFhO29CQUNiLElBQUksQ0FBQ0EsMEJBQTBCLEdBQUdqQixNQUFNLElBQUksQ0FBQ0MsV0FBVyxHQUFHLG1CQUFtQixJQUFJLENBQUNpQixPQUFPLEdBQUcsTUFBTTdCLFdBQVc4Qix1QkFBdUIsRUFBRTFCLElBQUksQ0FBQyxDQUFDVSxNQUFNQSxJQUFJQyxJQUFJLElBQUlYLElBQUksQ0FBQyxDQUFDMkI7d0JBQ2pLeEIsT0FBT29CLHlCQUF5QixHQUFHSTt3QkFDbkMsT0FBT0E7b0JBQ1gsR0FBR2YsS0FBSyxDQUFDLENBQUNDO3dCQUNOQyxRQUFRQyxHQUFHLENBQUMsMENBQTBDRjtvQkFDMUQ7Z0JBQ0o7Z0JBQ0Esd0RBQXdEO2dCQUN4RCxPQUFPLElBQUksQ0FBQ1csMEJBQTBCO1lBQzFDO1FBQ0o7SUFDSjtJQUNBSSxZQUFZQyxNQUFNLEVBQUU7UUFDaEIsTUFBTSxFQUFFQyxNQUFNLEVBQUVDLElBQUksRUFBRUMsTUFBTSxFQUFFLEdBQUdIO1FBQ2pDLE1BQU0sRUFBRUksVUFBVUMsWUFBWSxFQUFFQyxLQUFLLEVBQUVDLE1BQU0sRUFBRSxHQUFHLENBQUMsR0FBRzNDLGtCQUFrQjRDLGdCQUFnQixFQUFFTjtRQUMxRixNQUFNLEVBQUVFLFVBQVVLLFVBQVUsRUFBRSxHQUFHLENBQUMsR0FBRzdDLGtCQUFrQjRDLGdCQUFnQixFQUFFUDtRQUN6RSxNQUFNUyxRQUFRLENBQUMsR0FBRzdDLHFCQUFxQjhDLG1CQUFtQixFQUFFTjtRQUM1RCxJQUFJSyxLQUFLLENBQUMsRUFBRSxLQUFLLEtBQUs7WUFDbEIsTUFBTSxJQUFJdkIsTUFBTSw4Q0FBOEN1QixRQUFRO1FBQzFFO1FBQ0EsTUFBTUUsaUJBQWlCLENBQUNDO1lBQ3BCLE1BQU1DLFlBQVksQ0FBQyxHQUFHdEQsdUJBQXVCdUQsT0FBTyxFQUFFLENBQUMsR0FBR2xELHFCQUFxQjhDLG1CQUFtQixFQUFFLENBQUMsR0FBR2pELFdBQVdzRCxTQUFTLEVBQUVILE1BQU1WLFVBQVU7WUFDOUksT0FBTyxDQUFDLEdBQUc3QyxhQUFhMkQsV0FBVyxFQUFFLGlCQUFpQixJQUFJLENBQUNyQixPQUFPLEdBQUdrQixZQUFZUCxRQUFRO1FBQzdGO1FBQ0EsT0FBT0ssZUFBZVosT0FBT2tCLGlCQUFpQixHQUFHVCxhQUFhLENBQUMsR0FBRzlDLFdBQVd3RCxjQUFjLEVBQUVULFNBQVMsQ0FBQyxHQUFHbkQsZUFBZTZELGFBQWEsRUFBRWYsY0FBY0ksWUFBWUgsT0FBT2UsTUFBTSxHQUFHWDtJQUN0TDtJQUNBWSxPQUFPLGlDQUFpQyxHQUFHWixLQUFLLEVBQUU7UUFDOUMsT0FBTyxJQUFJLENBQUNhLG1CQUFtQixDQUFDcEQsSUFBSSxDQUFDLENBQUNDLFdBQVdBLFNBQVNvRCxHQUFHLENBQUNkO0lBQ2xFO0lBQ0FlLFNBQVNmLEtBQUssRUFBRTtRQUNaLE9BQU8sSUFBSSxDQUFDZ0IsV0FBVyxDQUFDQyxTQUFTLENBQUNqQixPQUFPdkMsSUFBSSxDQUFDLENBQUNVO1lBQzNDLElBQUksZUFBZUEsS0FBSztnQkFDcEIsT0FBTztvQkFDSCtDLE1BQU0vQyxJQUFJZ0QsU0FBUztvQkFDbkJDLEtBQUtqRCxJQUFJOUIsT0FBTztvQkFDaEJnRixhQUFhbEQsSUFBSW1ELE1BQU0sQ0FBQ0MsR0FBRyxDQUFDLENBQUNDLElBQUs7NEJBQzFCaEMsTUFBTWdDLEVBQUVoQyxJQUFJOzRCQUNaaUMsTUFBTUQsRUFBRUUsT0FBTzt3QkFDbkI7Z0JBQ1I7WUFDSjtZQUNBLE1BQU12RCxJQUFJd0QsS0FBSztRQUNuQjtJQUNKO0lBQ0FDLFNBQVM1QixLQUFLLEVBQUU7UUFDWixPQUFPLElBQUksQ0FBQ2dCLFdBQVcsQ0FBQ1ksUUFBUSxDQUFDNUI7SUFDckM7SUFDQTZCLFlBQVkzQyxPQUFPLEVBQUVqQixXQUFXLENBQUM7UUFDN0IsSUFBSSxDQUFDK0MsV0FBVyxHQUFHLENBQUMsR0FBRzVELGFBQWEwRSxpQkFBaUIsRUFBRTdEO1FBQ3ZELElBQUksQ0FBQ2lCLE9BQU8sR0FBR0E7UUFDZixJQUFJLENBQUNqQixXQUFXLEdBQUdBO1FBQ25CLElBQUksQ0FBQzRDLG1CQUFtQixHQUFHLElBQUlrQixRQUFRLENBQUNDO1lBQ3BDLElBQUlwRSxPQUFPcUUsY0FBYyxFQUFFO2dCQUN2QkQsUUFBUXBFLE9BQU9xRSxjQUFjO1lBQ2pDLE9BQU87Z0JBQ0hyRSxPQUFPc0UsaUJBQWlCLEdBQUc7b0JBQ3ZCRixRQUFRcEUsT0FBT3FFLGNBQWM7Z0JBQ2pDO1lBQ0o7UUFDSjtJQUNKO0FBQ0o7QUFFQSxJQUFJLENBQUMsT0FBTzVGLFFBQVFnRSxPQUFPLEtBQUssY0FBZSxPQUFPaEUsUUFBUWdFLE9BQU8sS0FBSyxZQUFZaEUsUUFBUWdFLE9BQU8sS0FBSyxJQUFJLEtBQU0sT0FBT2hFLFFBQVFnRSxPQUFPLENBQUM4QixVQUFVLEtBQUssYUFBYTtJQUNyS2hHLE9BQU9DLGNBQWMsQ0FBQ0MsUUFBUWdFLE9BQU8sRUFBRSxjQUFjO1FBQUUvRCxPQUFPO0lBQUs7SUFDbkVILE9BQU9pRyxNQUFNLENBQUMvRixRQUFRZ0UsT0FBTyxFQUFFaEU7SUFDL0JnRyxPQUFPaEcsT0FBTyxHQUFHQSxRQUFRZ0UsT0FBTztBQUNsQyxFQUVBLHVDQUF1QyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9wYWdlLWxvYWRlci5qcz9lODdhIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiZGVmYXVsdFwiLCB7XG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gUGFnZUxvYWRlcjtcbiAgICB9XG59KTtcbmNvbnN0IF9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdCA9IHJlcXVpcmUoXCJAc3djL2hlbHBlcnMvXy9faW50ZXJvcF9yZXF1aXJlX2RlZmF1bHRcIik7XG5jb25zdCBfYWRkYmFzZXBhdGggPSByZXF1aXJlKFwiLi9hZGQtYmFzZS1wYXRoXCIpO1xuY29uc3QgX2ludGVycG9sYXRlYXMgPSByZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvaW50ZXJwb2xhdGUtYXNcIik7XG5jb25zdCBfZ2V0YXNzZXRwYXRoZnJvbXJvdXRlID0gLyojX19QVVJFX18qLyBfaW50ZXJvcF9yZXF1aXJlX2RlZmF1bHQuXyhyZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvZ2V0LWFzc2V0LXBhdGgtZnJvbS1yb3V0ZVwiKSk7XG5jb25zdCBfYWRkbG9jYWxlID0gcmVxdWlyZShcIi4vYWRkLWxvY2FsZVwiKTtcbmNvbnN0IF9pc2R5bmFtaWMgPSByZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvaXMtZHluYW1pY1wiKTtcbmNvbnN0IF9wYXJzZXJlbGF0aXZldXJsID0gcmVxdWlyZShcIi4uL3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL3BhcnNlLXJlbGF0aXZlLXVybFwiKTtcbmNvbnN0IF9yZW1vdmV0cmFpbGluZ3NsYXNoID0gcmVxdWlyZShcIi4uL3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL3JlbW92ZS10cmFpbGluZy1zbGFzaFwiKTtcbmNvbnN0IF9yb3V0ZWxvYWRlciA9IHJlcXVpcmUoXCIuL3JvdXRlLWxvYWRlclwiKTtcbmNvbnN0IF9jb25zdGFudHMgPSByZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi9jb25zdGFudHNcIik7XG5jbGFzcyBQYWdlTG9hZGVyIHtcbiAgICBnZXRQYWdlTGlzdCgpIHtcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcInByb2R1Y3Rpb25cIikge1xuICAgICAgICAgICAgcmV0dXJuICgwLCBfcm91dGVsb2FkZXIuZ2V0Q2xpZW50QnVpbGRNYW5pZmVzdCkoKS50aGVuKChtYW5pZmVzdCk9Pm1hbmlmZXN0LnNvcnRlZFBhZ2VzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICh3aW5kb3cuX19ERVZfUEFHRVNfTUFOSUZFU1QpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gd2luZG93Ll9fREVWX1BBR0VTX01BTklGRVNULnBhZ2VzO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnByb21pc2VkRGV2UGFnZXNNYW5pZmVzdCB8fCAodGhpcy5wcm9taXNlZERldlBhZ2VzTWFuaWZlc3QgPSBmZXRjaCh0aGlzLmFzc2V0UHJlZml4ICsgXCIvX25leHQvc3RhdGljL2RldmVsb3BtZW50L1wiICsgX2NvbnN0YW50cy5ERVZfQ0xJRU5UX1BBR0VTX01BTklGRVNUKS50aGVuKChyZXMpPT5yZXMuanNvbigpKS50aGVuKChtYW5pZmVzdCk9PntcbiAgICAgICAgICAgICAgICAgICAgd2luZG93Ll9fREVWX1BBR0VTX01BTklGRVNUID0gbWFuaWZlc3Q7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBtYW5pZmVzdC5wYWdlcztcbiAgICAgICAgICAgICAgICB9KS5jYXRjaCgoZXJyKT0+e1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIkZhaWxlZCB0byBmZXRjaCBkZXZQYWdlc01hbmlmZXN0OlwiLCBlcnIpO1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJGYWlsZWQgdG8gZmV0Y2ggX2RldlBhZ2VzTWFuaWZlc3QuanNvbi4gSXMgc29tZXRoaW5nIGJsb2NraW5nIHRoYXQgbmV0d29yayByZXF1ZXN0P1xcblwiICsgXCJSZWFkIG1vcmU6IGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL21lc3NhZ2VzL2ZhaWxlZC10by1mZXRjaC1kZXZwYWdlc21hbmlmZXN0XCIpO1xuICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wcm9taXNlZERldlBhZ2VzTWFuaWZlc3Q7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2V0TWlkZGxld2FyZSgpIHtcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcInByb2R1Y3Rpb25cIikge1xuICAgICAgICAgICAgY29uc3QgbWlkZGxld2FyZU1hdGNoZXJzID0gcHJvY2Vzcy5lbnYuX19ORVhUX01JRERMRVdBUkVfTUFUQ0hFUlM7XG4gICAgICAgICAgICB3aW5kb3cuX19NSURETEVXQVJFX01BVENIRVJTID0gbWlkZGxld2FyZU1hdGNoZXJzID8gbWlkZGxld2FyZU1hdGNoZXJzIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgcmV0dXJuIHdpbmRvdy5fX01JRERMRVdBUkVfTUFUQ0hFUlM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAod2luZG93Ll9fREVWX01JRERMRVdBUkVfTUFUQ0hFUlMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gd2luZG93Ll9fREVWX01JRERMRVdBUkVfTUFUQ0hFUlM7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5wcm9taXNlZE1pZGRsZXdhcmVNYXRjaGVycykge1xuICAgICAgICAgICAgICAgICAgICAvLyBUT0RPOiBEZWNpZGUgd2hhdCBzaG91bGQgaGFwcGVuIHdoZW4gZmV0Y2hpbmcgZmFpbHMgaW5zdGVhZCBvZiBhc3NlcnRpbmdcbiAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgICB0aGlzLnByb21pc2VkTWlkZGxld2FyZU1hdGNoZXJzID0gZmV0Y2godGhpcy5hc3NldFByZWZpeCArIFwiL19uZXh0L3N0YXRpYy9cIiArIHRoaXMuYnVpbGRJZCArIFwiL1wiICsgX2NvbnN0YW50cy5ERVZfTUlERExFV0FSRV9NQU5JRkVTVCkudGhlbigocmVzKT0+cmVzLmpzb24oKSkudGhlbigobWF0Y2hlcnMpPT57XG4gICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cuX19ERVZfTUlERExFV0FSRV9NQVRDSEVSUyA9IG1hdGNoZXJzO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXJzO1xuICAgICAgICAgICAgICAgICAgICB9KS5jYXRjaCgoZXJyKT0+e1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJGYWlsZWQgdG8gZmV0Y2ggX2Rldk1pZGRsZXdhcmVNYW5pZmVzdFwiLCBlcnIpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gVE9ETyBSZW1vdmUgdGhpcyBhc3NlcnRpb24gYXMgdGhpcyBjb3VsZCBiZSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wcm9taXNlZE1pZGRsZXdhcmVNYXRjaGVycztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBnZXREYXRhSHJlZihwYXJhbXMpIHtcbiAgICAgICAgY29uc3QgeyBhc1BhdGgsIGhyZWYsIGxvY2FsZSB9ID0gcGFyYW1zO1xuICAgICAgICBjb25zdCB7IHBhdGhuYW1lOiBocmVmUGF0aG5hbWUsIHF1ZXJ5LCBzZWFyY2ggfSA9ICgwLCBfcGFyc2VyZWxhdGl2ZXVybC5wYXJzZVJlbGF0aXZlVXJsKShocmVmKTtcbiAgICAgICAgY29uc3QgeyBwYXRobmFtZTogYXNQYXRobmFtZSB9ID0gKDAsIF9wYXJzZXJlbGF0aXZldXJsLnBhcnNlUmVsYXRpdmVVcmwpKGFzUGF0aCk7XG4gICAgICAgIGNvbnN0IHJvdXRlID0gKDAsIF9yZW1vdmV0cmFpbGluZ3NsYXNoLnJlbW92ZVRyYWlsaW5nU2xhc2gpKGhyZWZQYXRobmFtZSk7XG4gICAgICAgIGlmIChyb3V0ZVswXSAhPT0gXCIvXCIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUm91dGUgbmFtZSBzaG91bGQgc3RhcnQgd2l0aCBhIFwiL1wiLCBnb3QgXCInICsgcm91dGUgKyAnXCInKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBnZXRIcmVmRm9yU2x1ZyA9IChwYXRoKT0+e1xuICAgICAgICAgICAgY29uc3QgZGF0YVJvdXRlID0gKDAsIF9nZXRhc3NldHBhdGhmcm9tcm91dGUuZGVmYXVsdCkoKDAsIF9yZW1vdmV0cmFpbGluZ3NsYXNoLnJlbW92ZVRyYWlsaW5nU2xhc2gpKCgwLCBfYWRkbG9jYWxlLmFkZExvY2FsZSkocGF0aCwgbG9jYWxlKSksIFwiLmpzb25cIik7XG4gICAgICAgICAgICByZXR1cm4gKDAsIF9hZGRiYXNlcGF0aC5hZGRCYXNlUGF0aCkoXCIvX25leHQvZGF0YS9cIiArIHRoaXMuYnVpbGRJZCArIGRhdGFSb3V0ZSArIHNlYXJjaCwgdHJ1ZSk7XG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBnZXRIcmVmRm9yU2x1ZyhwYXJhbXMuc2tpcEludGVycG9sYXRpb24gPyBhc1BhdGhuYW1lIDogKDAsIF9pc2R5bmFtaWMuaXNEeW5hbWljUm91dGUpKHJvdXRlKSA/ICgwLCBfaW50ZXJwb2xhdGVhcy5pbnRlcnBvbGF0ZUFzKShocmVmUGF0aG5hbWUsIGFzUGF0aG5hbWUsIHF1ZXJ5KS5yZXN1bHQgOiByb3V0ZSk7XG4gICAgfVxuICAgIF9pc1NzZygvKiogdGhlIHJvdXRlIChmaWxlLXN5c3RlbSBwYXRoKSAqLyByb3V0ZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5wcm9taXNlZFNzZ01hbmlmZXN0LnRoZW4oKG1hbmlmZXN0KT0+bWFuaWZlc3QuaGFzKHJvdXRlKSk7XG4gICAgfVxuICAgIGxvYWRQYWdlKHJvdXRlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJvdXRlTG9hZGVyLmxvYWRSb3V0ZShyb3V0ZSkudGhlbigocmVzKT0+e1xuICAgICAgICAgICAgaWYgKFwiY29tcG9uZW50XCIgaW4gcmVzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgcGFnZTogcmVzLmNvbXBvbmVudCxcbiAgICAgICAgICAgICAgICAgICAgbW9kOiByZXMuZXhwb3J0cyxcbiAgICAgICAgICAgICAgICAgICAgc3R5bGVTaGVldHM6IHJlcy5zdHlsZXMubWFwKChvKT0+KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBocmVmOiBvLmhyZWYsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogby5jb250ZW50XG4gICAgICAgICAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhyb3cgcmVzLmVycm9yO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgcHJlZmV0Y2gocm91dGUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucm91dGVMb2FkZXIucHJlZmV0Y2gocm91dGUpO1xuICAgIH1cbiAgICBjb25zdHJ1Y3RvcihidWlsZElkLCBhc3NldFByZWZpeCl7XG4gICAgICAgIHRoaXMucm91dGVMb2FkZXIgPSAoMCwgX3JvdXRlbG9hZGVyLmNyZWF0ZVJvdXRlTG9hZGVyKShhc3NldFByZWZpeCk7XG4gICAgICAgIHRoaXMuYnVpbGRJZCA9IGJ1aWxkSWQ7XG4gICAgICAgIHRoaXMuYXNzZXRQcmVmaXggPSBhc3NldFByZWZpeDtcbiAgICAgICAgdGhpcy5wcm9taXNlZFNzZ01hbmlmZXN0ID0gbmV3IFByb21pc2UoKHJlc29sdmUpPT57XG4gICAgICAgICAgICBpZiAod2luZG93Ll9fU1NHX01BTklGRVNUKSB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZSh3aW5kb3cuX19TU0dfTUFOSUZFU1QpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB3aW5kb3cuX19TU0dfTUFOSUZFU1RfQ0IgPSAoKT0+e1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHdpbmRvdy5fX1NTR19NQU5JRkVTVCk7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG5pZiAoKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdmdW5jdGlvbicgfHwgKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdvYmplY3QnICYmIGV4cG9ydHMuZGVmYXVsdCAhPT0gbnVsbCkpICYmIHR5cGVvZiBleHBvcnRzLmRlZmF1bHQuX19lc01vZHVsZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMuZGVmYXVsdCwgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuICBPYmplY3QuYXNzaWduKGV4cG9ydHMuZGVmYXVsdCwgZXhwb3J0cyk7XG4gIG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cy5kZWZhdWx0O1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1wYWdlLWxvYWRlci5qcy5tYXAiXSwibmFtZXMiOlsiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJleHBvcnRzIiwidmFsdWUiLCJlbnVtZXJhYmxlIiwiZ2V0IiwiUGFnZUxvYWRlciIsIl9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdCIsInJlcXVpcmUiLCJfYWRkYmFzZXBhdGgiLCJfaW50ZXJwb2xhdGVhcyIsIl9nZXRhc3NldHBhdGhmcm9tcm91dGUiLCJfIiwiX2FkZGxvY2FsZSIsIl9pc2R5bmFtaWMiLCJfcGFyc2VyZWxhdGl2ZXVybCIsIl9yZW1vdmV0cmFpbGluZ3NsYXNoIiwiX3JvdXRlbG9hZGVyIiwiX2NvbnN0YW50cyIsImdldFBhZ2VMaXN0IiwicHJvY2VzcyIsImdldENsaWVudEJ1aWxkTWFuaWZlc3QiLCJ0aGVuIiwibWFuaWZlc3QiLCJzb3J0ZWRQYWdlcyIsIndpbmRvdyIsIl9fREVWX1BBR0VTX01BTklGRVNUIiwicGFnZXMiLCJwcm9taXNlZERldlBhZ2VzTWFuaWZlc3QiLCJmZXRjaCIsImFzc2V0UHJlZml4IiwiREVWX0NMSUVOVF9QQUdFU19NQU5JRkVTVCIsInJlcyIsImpzb24iLCJjYXRjaCIsImVyciIsImNvbnNvbGUiLCJsb2ciLCJFcnJvciIsImdldE1pZGRsZXdhcmUiLCJtaWRkbGV3YXJlTWF0Y2hlcnMiLCJlbnYiLCJfX05FWFRfTUlERExFV0FSRV9NQVRDSEVSUyIsIl9fTUlERExFV0FSRV9NQVRDSEVSUyIsInVuZGVmaW5lZCIsIl9fREVWX01JRERMRVdBUkVfTUFUQ0hFUlMiLCJwcm9taXNlZE1pZGRsZXdhcmVNYXRjaGVycyIsImJ1aWxkSWQiLCJERVZfTUlERExFV0FSRV9NQU5JRkVTVCIsIm1hdGNoZXJzIiwiZ2V0RGF0YUhyZWYiLCJwYXJhbXMiLCJhc1BhdGgiLCJocmVmIiwibG9jYWxlIiwicGF0aG5hbWUiLCJocmVmUGF0aG5hbWUiLCJxdWVyeSIsInNlYXJjaCIsInBhcnNlUmVsYXRpdmVVcmwiLCJhc1BhdGhuYW1lIiwicm91dGUiLCJyZW1vdmVUcmFpbGluZ1NsYXNoIiwiZ2V0SHJlZkZvclNsdWciLCJwYXRoIiwiZGF0YVJvdXRlIiwiZGVmYXVsdCIsImFkZExvY2FsZSIsImFkZEJhc2VQYXRoIiwic2tpcEludGVycG9sYXRpb24iLCJpc0R5bmFtaWNSb3V0ZSIsImludGVycG9sYXRlQXMiLCJyZXN1bHQiLCJfaXNTc2ciLCJwcm9taXNlZFNzZ01hbmlmZXN0IiwiaGFzIiwibG9hZFBhZ2UiLCJyb3V0ZUxvYWRlciIsImxvYWRSb3V0ZSIsInBhZ2UiLCJjb21wb25lbnQiLCJtb2QiLCJzdHlsZVNoZWV0cyIsInN0eWxlcyIsIm1hcCIsIm8iLCJ0ZXh0IiwiY29udGVudCIsImVycm9yIiwicHJlZmV0Y2giLCJjb25zdHJ1Y3RvciIsImNyZWF0ZVJvdXRlTG9hZGVyIiwiUHJvbWlzZSIsInJlc29sdmUiLCJfX1NTR19NQU5JRkVTVCIsIl9fU1NHX01BTklGRVNUX0NCIiwiX19lc01vZHVsZSIsImFzc2lnbiIsIm1vZHVsZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/page-loader.js\n")); /***/ }), /***/ "./node_modules/next/dist/client/performance-relayer.js": /*!**************************************************************!*\ !*** ./node_modules/next/dist/client/performance-relayer.js ***! \**************************************************************/ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval(__webpack_require__.ts("/* global location */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"default\", ({\n enumerable: true,\n get: function() {\n return _default;\n }\n}));\n// copied to prevent pulling in un-necessary utils\nconst WEB_VITALS = [\n \"CLS\",\n \"FCP\",\n \"FID\",\n \"INP\",\n \"LCP\",\n \"TTFB\"\n];\nconst initialHref = location.href;\nlet isRegistered = false;\nlet userReportHandler;\nfunction onReport(metric) {\n if (userReportHandler) {\n userReportHandler(metric);\n }\n // This code is not shipped, executed, or present in the client-side\n // JavaScript bundle unless explicitly enabled in your application.\n //\n // When this feature is enabled, we'll make it very clear by printing a\n // message during the build (`next build`).\n if (false) { var _window___NEXT_DATA__; }\n}\nconst _default = (onPerfEntry)=>{\n // Update function if it changes:\n userReportHandler = onPerfEntry;\n // Only register listeners once:\n if (isRegistered) {\n return;\n }\n isRegistered = true;\n const attributions = undefined;\n for (const webVital of WEB_VITALS){\n try {\n let mod;\n if (false) {}\n if (!mod) {\n mod = __webpack_require__(/*! next/dist/compiled/web-vitals */ \"./node_modules/next/dist/compiled/web-vitals/web-vitals.js\");\n }\n mod[\"on\" + webVital](onReport);\n } catch (err) {\n // Do nothing if the module fails to load\n console.warn(\"Failed to track \" + webVital + \" web-vital\", err);\n }\n }\n};\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=performance-relayer.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9wZXJmb3JtYW5jZS1yZWxheWVyLmpzIiwibWFwcGluZ3MiOiJBQUFBLG1CQUFtQixHQUFnQjtBQUNuQ0EsOENBQTZDO0lBQ3pDRyxPQUFPO0FBQ1gsQ0FBQyxFQUFDO0FBQ0ZILDJDQUEwQztJQUN0Q0ksWUFBWTtJQUNaQyxLQUFLO1FBQ0QsT0FBT0M7SUFDWDtBQUNKLENBQUMsRUFBQztBQUNGLGtEQUFrRDtBQUNsRCxNQUFNQyxhQUFhO0lBQ2Y7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0NBQ0g7QUFDRCxNQUFNQyxjQUFjQyxTQUFTQyxJQUFJO0FBQ2pDLElBQUlDLGVBQWU7QUFDbkIsSUFBSUM7QUFDSixTQUFTQyxTQUFTQyxNQUFNO0lBQ3BCLElBQUlGLG1CQUFtQjtRQUNuQkEsa0JBQWtCRTtJQUN0QjtJQUNBLG9FQUFvRTtJQUNwRSxtRUFBbUU7SUFDbkUsRUFBRTtJQUNGLHVFQUF1RTtJQUN2RSwyQ0FBMkM7SUFDM0MsSUFBSUMsS0FDMkIsRUFBRSw4QkFtQ2hDO0FBQ0w7QUFDQSxNQUFNVCxXQUFXLENBQUN5QztJQUNkLGlDQUFpQztJQUNqQ25DLG9CQUFvQm1DO0lBQ3BCLGdDQUFnQztJQUNoQyxJQUFJcEMsY0FBYztRQUNkO0lBQ0o7SUFDQUEsZUFBZTtJQUNmLE1BQU1xQyxlQUFlakMsU0FBeUM7SUFDOUQsS0FBSyxNQUFNbUMsWUFBWTNDLFdBQVc7UUFDOUIsSUFBSTtZQUNBLElBQUk0QztZQUNKLElBQUlwQyxLQUE2QyxFQUFFLEVBSWxEO1lBQ0QsSUFBSSxDQUFDb0MsS0FBSztnQkFDTkEsTUFBTUcsbUJBQU9BLENBQUMsaUdBQStCO1lBQ2pEO1lBQ0FILEdBQUcsQ0FBQyxPQUFPRCxTQUFTLENBQUNyQztRQUN6QixFQUFFLE9BQU9pQyxLQUFLO1lBQ1YseUNBQXlDO1lBQ3pDRixRQUFRVyxJQUFJLENBQUMscUJBQXFCTCxXQUFXLGNBQWNKO1FBQy9EO0lBQ0o7QUFDSjtBQUVBLElBQUksQ0FBQyxPQUFPNUMsUUFBUXNELE9BQU8sS0FBSyxjQUFlLE9BQU90RCxRQUFRc0QsT0FBTyxLQUFLLFlBQVl0RCxRQUFRc0QsT0FBTyxLQUFLLElBQUksS0FBTSxPQUFPdEQsUUFBUXNELE9BQU8sQ0FBQ0MsVUFBVSxLQUFLLGFBQWE7SUFDckt6RCxPQUFPQyxjQUFjLENBQUNDLFFBQVFzRCxPQUFPLEVBQUUsY0FBYztRQUFFckQsT0FBTztJQUFLO0lBQ25FSCxPQUFPMEQsTUFBTSxDQUFDeEQsUUFBUXNELE9BQU8sRUFBRXREO0lBQy9CeUQsT0FBT3pELE9BQU8sR0FBR0EsUUFBUXNELE9BQU87QUFDbEMsRUFFQSwrQ0FBK0MiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvcGVyZm9ybWFuY2UtcmVsYXllci5qcz9lZjcxIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGdsb2JhbCBsb2NhdGlvbiAqLyBcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImRlZmF1bHRcIiwge1xuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIF9kZWZhdWx0O1xuICAgIH1cbn0pO1xuLy8gY29waWVkIHRvIHByZXZlbnQgcHVsbGluZyBpbiB1bi1uZWNlc3NhcnkgdXRpbHNcbmNvbnN0IFdFQl9WSVRBTFMgPSBbXG4gICAgXCJDTFNcIixcbiAgICBcIkZDUFwiLFxuICAgIFwiRklEXCIsXG4gICAgXCJJTlBcIixcbiAgICBcIkxDUFwiLFxuICAgIFwiVFRGQlwiXG5dO1xuY29uc3QgaW5pdGlhbEhyZWYgPSBsb2NhdGlvbi5ocmVmO1xubGV0IGlzUmVnaXN0ZXJlZCA9IGZhbHNlO1xubGV0IHVzZXJSZXBvcnRIYW5kbGVyO1xuZnVuY3Rpb24gb25SZXBvcnQobWV0cmljKSB7XG4gICAgaWYgKHVzZXJSZXBvcnRIYW5kbGVyKSB7XG4gICAgICAgIHVzZXJSZXBvcnRIYW5kbGVyKG1ldHJpYyk7XG4gICAgfVxuICAgIC8vIFRoaXMgY29kZSBpcyBub3Qgc2hpcHBlZCwgZXhlY3V0ZWQsIG9yIHByZXNlbnQgaW4gdGhlIGNsaWVudC1zaWRlXG4gICAgLy8gSmF2YVNjcmlwdCBidW5kbGUgdW5sZXNzIGV4cGxpY2l0bHkgZW5hYmxlZCBpbiB5b3VyIGFwcGxpY2F0aW9uLlxuICAgIC8vXG4gICAgLy8gV2hlbiB0aGlzIGZlYXR1cmUgaXMgZW5hYmxlZCwgd2UnbGwgbWFrZSBpdCB2ZXJ5IGNsZWFyIGJ5IHByaW50aW5nIGFcbiAgICAvLyBtZXNzYWdlIGR1cmluZyB0aGUgYnVpbGQgKGBuZXh0IGJ1aWxkYCkuXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcInByb2R1Y3Rpb25cIiAmJiAvLyBUaGlzIGZpZWxkIGlzIGVtcHR5IHVubGVzcyB5b3UgZXhwbGljaXRseSBjb25maWd1cmUgaXQ6XG4gICAgcHJvY2Vzcy5lbnYuX19ORVhUX0FOQUxZVElDU19JRCkge1xuICAgICAgICB2YXIgX3dpbmRvd19fX05FWFRfREFUQV9fO1xuICAgICAgICBjb25zdCBib2R5ID0ge1xuICAgICAgICAgICAgZHNuOiBwcm9jZXNzLmVudi5fX05FWFRfQU5BTFlUSUNTX0lELFxuICAgICAgICAgICAgaWQ6IG1ldHJpYy5pZCxcbiAgICAgICAgICAgIHBhZ2U6IChfd2luZG93X19fTkVYVF9EQVRBX18gPSB3aW5kb3cuX19ORVhUX0RBVEFfXykgPT0gbnVsbCA/IHZvaWQgMCA6IF93aW5kb3dfX19ORVhUX0RBVEFfXy5wYWdlLFxuICAgICAgICAgICAgaHJlZjogaW5pdGlhbEhyZWYsXG4gICAgICAgICAgICBldmVudF9uYW1lOiBtZXRyaWMubmFtZSxcbiAgICAgICAgICAgIHZhbHVlOiBtZXRyaWMudmFsdWUudG9TdHJpbmcoKSxcbiAgICAgICAgICAgIHNwZWVkOiBcImNvbm5lY3Rpb25cIiBpbiBuYXZpZ2F0b3IgJiYgbmF2aWdhdG9yW1wiY29ubmVjdGlvblwiXSAmJiBcImVmZmVjdGl2ZVR5cGVcIiBpbiBuYXZpZ2F0b3JbXCJjb25uZWN0aW9uXCJdID8gbmF2aWdhdG9yW1wiY29ubmVjdGlvblwiXVtcImVmZmVjdGl2ZVR5cGVcIl0gOiBcIlwiXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbXG4gICAgICAgICAgICBuZXcgVVJMU2VhcmNoUGFyYW1zKGJvZHkpLnRvU3RyaW5nKClcbiAgICAgICAgXSwge1xuICAgICAgICAgICAgLy8gVGhpcyBjb250ZW50IHR5cGUgaXMgbmVjZXNzYXJ5IGZvciBgc2VuZEJlYWNvbmA6XG4gICAgICAgICAgICB0eXBlOiBcImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZFwiXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCB2aXRhbHNVcmwgPSBcImh0dHBzOi8vdml0YWxzLnZlcmNlbC1pbnNpZ2h0cy5jb20vdjEvdml0YWxzXCI7XG4gICAgICAgIC8vIE5hdmlnYXRvciBoYXMgdG8gYmUgYm91bmQgdG8gZW5zdXJlIGl0IGRvZXMgbm90IGVycm9yIGluIHNvbWUgYnJvd3NlcnNcbiAgICAgICAgLy8gaHR0cHM6Ly94Z3dhbmcubWUvcG9zdHMveW91LW1heS1ub3Qta25vdy1iZWFjb24vI2l0LW1heS10aHJvdy1lcnJvciUyQy1iZS1zdXJlLXRvLWNhdGNoXG4gICAgICAgIGNvbnN0IHNlbmQgPSBuYXZpZ2F0b3Iuc2VuZEJlYWNvbiAmJiBuYXZpZ2F0b3Iuc2VuZEJlYWNvbi5iaW5kKG5hdmlnYXRvcik7XG4gICAgICAgIGZ1bmN0aW9uIGZhbGxiYWNrU2VuZCgpIHtcbiAgICAgICAgICAgIGZldGNoKHZpdGFsc1VybCwge1xuICAgICAgICAgICAgICAgIGJvZHk6IGJsb2IsXG4gICAgICAgICAgICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgICAgICAgICAgICBjcmVkZW50aWFsczogXCJvbWl0XCIsXG4gICAgICAgICAgICAgICAga2VlcGFsaXZlOiB0cnVlXG4gICAgICAgICAgICB9KS5jYXRjaChjb25zb2xlLmVycm9yKTtcbiAgICAgICAgfVxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8gSWYgc2VuZCBpcyB1bmRlZmluZWQgaXQnbGwgdGhyb3cgYXMgd2VsbC4gVGhpcyByZWR1Y2VzIG91dHB1dCBjb2RlIHNpemUuXG4gICAgICAgICAgICBzZW5kKHZpdGFsc1VybCwgYmxvYikgfHwgZmFsbGJhY2tTZW5kKCk7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgZmFsbGJhY2tTZW5kKCk7XG4gICAgICAgIH1cbiAgICB9XG59XG5jb25zdCBfZGVmYXVsdCA9IChvblBlcmZFbnRyeSk9PntcbiAgICAvLyBVcGRhdGUgZnVuY3Rpb24gaWYgaXQgY2hhbmdlczpcbiAgICB1c2VyUmVwb3J0SGFuZGxlciA9IG9uUGVyZkVudHJ5O1xuICAgIC8vIE9ubHkgcmVnaXN0ZXIgbGlzdGVuZXJzIG9uY2U6XG4gICAgaWYgKGlzUmVnaXN0ZXJlZCkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGlzUmVnaXN0ZXJlZCA9IHRydWU7XG4gICAgY29uc3QgYXR0cmlidXRpb25zID0gcHJvY2Vzcy5lbnYuX19ORVhUX1dFQl9WSVRBTFNfQVRUUklCVVRJT047XG4gICAgZm9yIChjb25zdCB3ZWJWaXRhbCBvZiBXRUJfVklUQUxTKXtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGxldCBtb2Q7XG4gICAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX0hBU19XRUJfVklUQUxTX0FUVFJJQlVUSU9OKSB7XG4gICAgICAgICAgICAgICAgaWYgKGF0dHJpYnV0aW9ucyA9PSBudWxsID8gdm9pZCAwIDogYXR0cmlidXRpb25zLmluY2x1ZGVzKHdlYlZpdGFsKSkge1xuICAgICAgICAgICAgICAgICAgICBtb2QgPSByZXF1aXJlKFwibmV4dC9kaXN0L2NvbXBpbGVkL3dlYi12aXRhbHMtYXR0cmlidXRpb25cIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFtb2QpIHtcbiAgICAgICAgICAgICAgICBtb2QgPSByZXF1aXJlKFwibmV4dC9kaXN0L2NvbXBpbGVkL3dlYi12aXRhbHNcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBtb2RbXCJvblwiICsgd2ViVml0YWxdKG9uUmVwb3J0KTtcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAvLyBEbyBub3RoaW5nIGlmIHRoZSBtb2R1bGUgZmFpbHMgdG8gbG9hZFxuICAgICAgICAgICAgY29uc29sZS53YXJuKFwiRmFpbGVkIHRvIHRyYWNrIFwiICsgd2ViVml0YWwgKyBcIiB3ZWItdml0YWxcIiwgZXJyKTtcbiAgICAgICAgfVxuICAgIH1cbn07XG5cbmlmICgodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ2Z1bmN0aW9uJyB8fCAodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ29iamVjdCcgJiYgZXhwb3J0cy5kZWZhdWx0ICE9PSBudWxsKSkgJiYgdHlwZW9mIGV4cG9ydHMuZGVmYXVsdC5fX2VzTW9kdWxlID09PSAndW5kZWZpbmVkJykge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cy5kZWZhdWx0LCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gIE9iamVjdC5hc3NpZ24oZXhwb3J0cy5kZWZhdWx0LCBleHBvcnRzKTtcbiAgbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXBlcmZvcm1hbmNlLXJlbGF5ZXIuanMubWFwIl0sIm5hbWVzIjpbIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZXhwb3J0cyIsInZhbHVlIiwiZW51bWVyYWJsZSIsImdldCIsIl9kZWZhdWx0IiwiV0VCX1ZJVEFMUyIsImluaXRpYWxIcmVmIiwibG9jYXRpb24iLCJocmVmIiwiaXNSZWdpc3RlcmVkIiwidXNlclJlcG9ydEhhbmRsZXIiLCJvblJlcG9ydCIsIm1ldHJpYyIsInByb2Nlc3MiLCJlbnYiLCJfX05FWFRfQU5BTFlUSUNTX0lEIiwiX3dpbmRvd19fX05FWFRfREFUQV9fIiwiYm9keSIsImRzbiIsImlkIiwicGFnZSIsIndpbmRvdyIsIl9fTkVYVF9EQVRBX18iLCJldmVudF9uYW1lIiwibmFtZSIsInRvU3RyaW5nIiwic3BlZWQiLCJuYXZpZ2F0b3IiLCJibG9iIiwiQmxvYiIsIlVSTFNlYXJjaFBhcmFtcyIsInR5cGUiLCJ2aXRhbHNVcmwiLCJzZW5kIiwic2VuZEJlYWNvbiIsImJpbmQiLCJmYWxsYmFja1NlbmQiLCJmZXRjaCIsIm1ldGhvZCIsImNyZWRlbnRpYWxzIiwia2VlcGFsaXZlIiwiY2F0Y2giLCJjb25zb2xlIiwiZXJyb3IiLCJlcnIiLCJvblBlcmZFbnRyeSIsImF0dHJpYnV0aW9ucyIsIl9fTkVYVF9XRUJfVklUQUxTX0FUVFJJQlVUSU9OIiwid2ViVml0YWwiLCJtb2QiLCJfX05FWFRfSEFTX1dFQl9WSVRBTFNfQVRUUklCVVRJT04iLCJpbmNsdWRlcyIsInJlcXVpcmUiLCJ3YXJuIiwiZGVmYXVsdCIsIl9fZXNNb2R1bGUiLCJhc3NpZ24iLCJtb2R1bGUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/performance-relayer.js\n")); /***/ }), /***/ "./node_modules/next/dist/client/portal/index.js": /*!*******************************************************!*\ !*** ./node_modules/next/dist/client/portal/index.js ***! \*******************************************************/ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"Portal\", ({\n enumerable: true,\n get: function() {\n return Portal;\n }\n}));\nconst _react = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\nconst _reactdom = __webpack_require__(/*! react-dom */ \"./node_modules/react-dom/index.js\");\nconst Portal = (param)=>{\n let { children, type } = param;\n const [portalNode, setPortalNode] = (0, _react.useState)(null);\n (0, _react.useEffect)(()=>{\n const element = document.createElement(type);\n document.body.appendChild(element);\n setPortalNode(element);\n return ()=>{\n document.body.removeChild(element);\n };\n }, [\n type\n ]);\n return portalNode ? /*#__PURE__*/ (0, _reactdom.createPortal)(children, portalNode) : null;\n};\n_c = Portal;\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=index.js.map\nvar _c;\n$RefreshReg$(_c, \"Portal\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9wb3J0YWwvaW5kZXguanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYkEsOENBQTZDO0lBQ3pDRyxPQUFPO0FBQ1gsQ0FBQyxFQUFDO0FBQ0ZILDBDQUF5QztJQUNyQ0ksWUFBWTtJQUNaQyxLQUFLO1FBQ0QsT0FBT0M7SUFDWDtBQUNKLENBQUMsRUFBQztBQUNGLE1BQU1DLFNBQVNDLG1CQUFPQSxDQUFDLDRDQUFPO0FBQzlCLE1BQU1DLFlBQVlELG1CQUFPQSxDQUFDLG9EQUFXO0FBQ3JDLE1BQU1GLFNBQVMsQ0FBQ0k7SUFDWixJQUFJLEVBQUVDLFFBQVEsRUFBRUMsSUFBSSxFQUFFLEdBQUdGO0lBQ3pCLE1BQU0sQ0FBQ0csWUFBWUMsY0FBYyxHQUFHLENBQUMsR0FBR1AsT0FBT1EsUUFBUSxFQUFFO0lBQ3hELElBQUdSLE9BQU9TLFNBQVMsRUFBRTtRQUNsQixNQUFNQyxVQUFVQyxTQUFTQyxhQUFhLENBQUNQO1FBQ3ZDTSxTQUFTRSxJQUFJLENBQUNDLFdBQVcsQ0FBQ0o7UUFDMUJILGNBQWNHO1FBQ2QsT0FBTztZQUNIQyxTQUFTRSxJQUFJLENBQUNFLFdBQVcsQ0FBQ0w7UUFDOUI7SUFDSixHQUFHO1FBQ0NMO0tBQ0g7SUFDRCxPQUFPQyxhQUEyQixXQUFILEdBQUksSUFBR0osVUFBVWMsWUFBWSxFQUFFWixVQUFVRSxjQUFjO0FBQzFGO0tBZE1QO0FBZ0JOLElBQUksQ0FBQyxPQUFPSixRQUFRc0IsT0FBTyxLQUFLLGNBQWUsT0FBT3RCLFFBQVFzQixPQUFPLEtBQUssWUFBWXRCLFFBQVFzQixPQUFPLEtBQUssSUFBSSxLQUFNLE9BQU90QixRQUFRc0IsT0FBTyxDQUFDQyxVQUFVLEtBQUssYUFBYTtJQUNyS3pCLE9BQU9DLGNBQWMsQ0FBQ0MsUUFBUXNCLE9BQU8sRUFBRSxjQUFjO1FBQUVyQixPQUFPO0lBQUs7SUFDbkVILE9BQU8wQixNQUFNLENBQUN4QixRQUFRc0IsT0FBTyxFQUFFdEI7SUFDL0J5QixPQUFPekIsT0FBTyxHQUFHQSxRQUFRc0IsT0FBTztBQUNsQyxFQUVBLGlDQUFpQyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9wb3J0YWwvaW5kZXguanM/MzFhMiJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlBvcnRhbFwiLCB7XG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gUG9ydGFsO1xuICAgIH1cbn0pO1xuY29uc3QgX3JlYWN0ID0gcmVxdWlyZShcInJlYWN0XCIpO1xuY29uc3QgX3JlYWN0ZG9tID0gcmVxdWlyZShcInJlYWN0LWRvbVwiKTtcbmNvbnN0IFBvcnRhbCA9IChwYXJhbSk9PntcbiAgICBsZXQgeyBjaGlsZHJlbiwgdHlwZSB9ID0gcGFyYW07XG4gICAgY29uc3QgW3BvcnRhbE5vZGUsIHNldFBvcnRhbE5vZGVdID0gKDAsIF9yZWFjdC51c2VTdGF0ZSkobnVsbCk7XG4gICAgKDAsIF9yZWFjdC51c2VFZmZlY3QpKCgpPT57XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHR5cGUpO1xuICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGVsZW1lbnQpO1xuICAgICAgICBzZXRQb3J0YWxOb2RlKGVsZW1lbnQpO1xuICAgICAgICByZXR1cm4gKCk9PntcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZWxlbWVudCk7XG4gICAgICAgIH07XG4gICAgfSwgW1xuICAgICAgICB0eXBlXG4gICAgXSk7XG4gICAgcmV0dXJuIHBvcnRhbE5vZGUgPyAvKiNfX1BVUkVfXyovICgwLCBfcmVhY3Rkb20uY3JlYXRlUG9ydGFsKShjaGlsZHJlbiwgcG9ydGFsTm9kZSkgOiBudWxsO1xufTtcblxuaWYgKCh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnZnVuY3Rpb24nIHx8ICh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnb2JqZWN0JyAmJiBleHBvcnRzLmRlZmF1bHQgIT09IG51bGwpKSAmJiB0eXBlb2YgZXhwb3J0cy5kZWZhdWx0Ll9fZXNNb2R1bGUgPT09ICd1bmRlZmluZWQnKSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLmRlZmF1bHQsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiAgT2JqZWN0LmFzc2lnbihleHBvcnRzLmRlZmF1bHQsIGV4cG9ydHMpO1xuICBtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMuZGVmYXVsdDtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIl0sIm5hbWVzIjpbIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZXhwb3J0cyIsInZhbHVlIiwiZW51bWVyYWJsZSIsImdldCIsIlBvcnRhbCIsIl9yZWFjdCIsInJlcXVpcmUiLCJfcmVhY3Rkb20iLCJwYXJhbSIsImNoaWxkcmVuIiwidHlwZSIsInBvcnRhbE5vZGUiLCJzZXRQb3J0YWxOb2RlIiwidXNlU3RhdGUiLCJ1c2VFZmZlY3QiLCJlbGVtZW50IiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50IiwiYm9keSIsImFwcGVuZENoaWxkIiwicmVtb3ZlQ2hpbGQiLCJjcmVhdGVQb3J0YWwiLCJkZWZhdWx0IiwiX19lc01vZHVsZSIsImFzc2lnbiIsIm1vZHVsZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/portal/index.js\n")); /***/ }), /***/ "./node_modules/next/dist/client/remove-base-path.js": /*!***********************************************************!*\ !*** ./node_modules/next/dist/client/remove-base-path.js ***! \***********************************************************/ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"removeBasePath\", ({\n enumerable: true,\n get: function() {\n return removeBasePath;\n }\n}));\nconst _hasbasepath = __webpack_require__(/*! ./has-base-path */ \"./node_modules/next/dist/client/has-base-path.js\");\nconst basePath = false || \"\";\nfunction removeBasePath(path) {\n if (false) {}\n // Can't trim the basePath if it has zero length!\n if (basePath.length === 0) return path;\n path = path.slice(basePath.length);\n if (!path.startsWith(\"/\")) path = \"/\" + path;\n return path;\n}\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=remove-base-path.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9yZW1vdmUtYmFzZS1wYXRoLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2JBLDhDQUE2QztJQUN6Q0csT0FBTztBQUNYLENBQUMsRUFBQztBQUNGSCxrREFBaUQ7SUFDN0NJLFlBQVk7SUFDWkMsS0FBSztRQUNELE9BQU9DO0lBQ1g7QUFDSixDQUFDLEVBQUM7QUFDRixNQUFNQyxlQUFlQyxtQkFBT0EsQ0FBQyx5RUFBaUI7QUFDOUMsTUFBTUMsV0FBV0MsTUFBa0MsSUFBSTtBQUN2RCxTQUFTSixlQUFlTyxJQUFJO0lBQ3hCLElBQUlILEtBQTBDLEVBQUUsRUFJL0M7SUFDRCxpREFBaUQ7SUFDakQsSUFBSUQsU0FBU08sTUFBTSxLQUFLLEdBQUcsT0FBT0g7SUFDbENBLE9BQU9BLEtBQUtJLEtBQUssQ0FBQ1IsU0FBU08sTUFBTTtJQUNqQyxJQUFJLENBQUNILEtBQUtLLFVBQVUsQ0FBQyxNQUFNTCxPQUFPLE1BQU1BO0lBQ3hDLE9BQU9BO0FBQ1g7QUFFQSxJQUFJLENBQUMsT0FBT1gsUUFBUWlCLE9BQU8sS0FBSyxjQUFlLE9BQU9qQixRQUFRaUIsT0FBTyxLQUFLLFlBQVlqQixRQUFRaUIsT0FBTyxLQUFLLElBQUksS0FBTSxPQUFPakIsUUFBUWlCLE9BQU8sQ0FBQ0MsVUFBVSxLQUFLLGFBQWE7SUFDcktwQixPQUFPQyxjQUFjLENBQUNDLFFBQVFpQixPQUFPLEVBQUUsY0FBYztRQUFFaEIsT0FBTztJQUFLO0lBQ25FSCxPQUFPcUIsTUFBTSxDQUFDbkIsUUFBUWlCLE9BQU8sRUFBRWpCO0lBQy9Cb0IsT0FBT3BCLE9BQU8sR0FBR0EsUUFBUWlCLE9BQU87QUFDbEMsRUFFQSw0Q0FBNEMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvcmVtb3ZlLWJhc2UtcGF0aC5qcz9iNGYxIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwicmVtb3ZlQmFzZVBhdGhcIiwge1xuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHJlbW92ZUJhc2VQYXRoO1xuICAgIH1cbn0pO1xuY29uc3QgX2hhc2Jhc2VwYXRoID0gcmVxdWlyZShcIi4vaGFzLWJhc2UtcGF0aFwiKTtcbmNvbnN0IGJhc2VQYXRoID0gcHJvY2Vzcy5lbnYuX19ORVhUX1JPVVRFUl9CQVNFUEFUSCB8fCBcIlwiO1xuZnVuY3Rpb24gcmVtb3ZlQmFzZVBhdGgocGF0aCkge1xuICAgIGlmIChwcm9jZXNzLmVudi5fX05FWFRfTUFOVUFMX0NMSUVOVF9CQVNFX1BBVEgpIHtcbiAgICAgICAgaWYgKCEoMCwgX2hhc2Jhc2VwYXRoLmhhc0Jhc2VQYXRoKShwYXRoKSkge1xuICAgICAgICAgICAgcmV0dXJuIHBhdGg7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gQ2FuJ3QgdHJpbSB0aGUgYmFzZVBhdGggaWYgaXQgaGFzIHplcm8gbGVuZ3RoIVxuICAgIGlmIChiYXNlUGF0aC5sZW5ndGggPT09IDApIHJldHVybiBwYXRoO1xuICAgIHBhdGggPSBwYXRoLnNsaWNlKGJhc2VQYXRoLmxlbmd0aCk7XG4gICAgaWYgKCFwYXRoLnN0YXJ0c1dpdGgoXCIvXCIpKSBwYXRoID0gXCIvXCIgKyBwYXRoO1xuICAgIHJldHVybiBwYXRoO1xufVxuXG5pZiAoKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdmdW5jdGlvbicgfHwgKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdvYmplY3QnICYmIGV4cG9ydHMuZGVmYXVsdCAhPT0gbnVsbCkpICYmIHR5cGVvZiBleHBvcnRzLmRlZmF1bHQuX19lc01vZHVsZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMuZGVmYXVsdCwgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuICBPYmplY3QuYXNzaWduKGV4cG9ydHMuZGVmYXVsdCwgZXhwb3J0cyk7XG4gIG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cy5kZWZhdWx0O1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1yZW1vdmUtYmFzZS1wYXRoLmpzLm1hcCJdLCJuYW1lcyI6WyJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImV4cG9ydHMiLCJ2YWx1ZSIsImVudW1lcmFibGUiLCJnZXQiLCJyZW1vdmVCYXNlUGF0aCIsIl9oYXNiYXNlcGF0aCIsInJlcXVpcmUiLCJiYXNlUGF0aCIsInByb2Nlc3MiLCJlbnYiLCJfX05FWFRfUk9VVEVSX0JBU0VQQVRIIiwicGF0aCIsIl9fTkVYVF9NQU5VQUxfQ0xJRU5UX0JBU0VfUEFUSCIsImhhc0Jhc2VQYXRoIiwibGVuZ3RoIiwic2xpY2UiLCJzdGFydHNXaXRoIiwiZGVmYXVsdCIsIl9fZXNNb2R1bGUiLCJhc3NpZ24iLCJtb2R1bGUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/remove-base-path.js\n")); /***/ }), /***/ "./node_modules/next/dist/client/remove-locale.js": /*!********************************************************!*\ !*** ./node_modules/next/dist/client/remove-locale.js ***! \********************************************************/ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"removeLocale\", ({\n enumerable: true,\n get: function() {\n return removeLocale;\n }\n}));\nconst _parsepath = __webpack_require__(/*! ../shared/lib/router/utils/parse-path */ \"./node_modules/next/dist/shared/lib/router/utils/parse-path.js\");\nfunction removeLocale(path, locale) {\n if (false) {}\n return path;\n}\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=remove-locale.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9yZW1vdmUtbG9jYWxlLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2JBLDhDQUE2QztJQUN6Q0csT0FBTztBQUNYLENBQUMsRUFBQztBQUNGSCxnREFBK0M7SUFDM0NJLFlBQVk7SUFDWkMsS0FBSztRQUNELE9BQU9DO0lBQ1g7QUFDSixDQUFDLEVBQUM7QUFDRixNQUFNQyxhQUFhQyxtQkFBT0EsQ0FBQyw2R0FBdUM7QUFDbEUsU0FBU0YsYUFBYUcsSUFBSSxFQUFFQyxNQUFNO0lBQzlCLElBQUlDLEtBQStCLEVBQUUsRUFLcEM7SUFDRCxPQUFPRjtBQUNYO0FBRUEsSUFBSSxDQUFDLE9BQU9QLFFBQVFvQixPQUFPLEtBQUssY0FBZSxPQUFPcEIsUUFBUW9CLE9BQU8sS0FBSyxZQUFZcEIsUUFBUW9CLE9BQU8sS0FBSyxJQUFJLEtBQU0sT0FBT3BCLFFBQVFvQixPQUFPLENBQUNDLFVBQVUsS0FBSyxhQUFhO0lBQ3JLdkIsT0FBT0MsY0FBYyxDQUFDQyxRQUFRb0IsT0FBTyxFQUFFLGNBQWM7UUFBRW5CLE9BQU87SUFBSztJQUNuRUgsT0FBT3dCLE1BQU0sQ0FBQ3RCLFFBQVFvQixPQUFPLEVBQUVwQjtJQUMvQnVCLE9BQU92QixPQUFPLEdBQUdBLFFBQVFvQixPQUFPO0FBQ2xDLEVBRUEseUNBQXlDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L3JlbW92ZS1sb2NhbGUuanM/NDc1MyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcInJlbW92ZUxvY2FsZVwiLCB7XG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gcmVtb3ZlTG9jYWxlO1xuICAgIH1cbn0pO1xuY29uc3QgX3BhcnNlcGF0aCA9IHJlcXVpcmUoXCIuLi9zaGFyZWQvbGliL3JvdXRlci91dGlscy9wYXJzZS1wYXRoXCIpO1xuZnVuY3Rpb24gcmVtb3ZlTG9jYWxlKHBhdGgsIGxvY2FsZSkge1xuICAgIGlmIChwcm9jZXNzLmVudi5fX05FWFRfSTE4Tl9TVVBQT1JUKSB7XG4gICAgICAgIGNvbnN0IHsgcGF0aG5hbWUgfSA9ICgwLCBfcGFyc2VwYXRoLnBhcnNlUGF0aCkocGF0aCk7XG4gICAgICAgIGNvbnN0IHBhdGhMb3dlciA9IHBhdGhuYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIGNvbnN0IGxvY2FsZUxvd2VyID0gbG9jYWxlID09IG51bGwgPyB2b2lkIDAgOiBsb2NhbGUudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgcmV0dXJuIGxvY2FsZSAmJiAocGF0aExvd2VyLnN0YXJ0c1dpdGgoXCIvXCIgKyBsb2NhbGVMb3dlciArIFwiL1wiKSB8fCBwYXRoTG93ZXIgPT09IFwiL1wiICsgbG9jYWxlTG93ZXIpID8gXCJcIiArIChwYXRobmFtZS5sZW5ndGggPT09IGxvY2FsZS5sZW5ndGggKyAxID8gXCIvXCIgOiBcIlwiKSArIHBhdGguc2xpY2UobG9jYWxlLmxlbmd0aCArIDEpIDogcGF0aDtcbiAgICB9XG4gICAgcmV0dXJuIHBhdGg7XG59XG5cbmlmICgodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ2Z1bmN0aW9uJyB8fCAodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ29iamVjdCcgJiYgZXhwb3J0cy5kZWZhdWx0ICE9PSBudWxsKSkgJiYgdHlwZW9mIGV4cG9ydHMuZGVmYXVsdC5fX2VzTW9kdWxlID09PSAndW5kZWZpbmVkJykge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cy5kZWZhdWx0LCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gIE9iamVjdC5hc3NpZ24oZXhwb3J0cy5kZWZhdWx0LCBleHBvcnRzKTtcbiAgbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXJlbW92ZS1sb2NhbGUuanMubWFwIl0sIm5hbWVzIjpbIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZXhwb3J0cyIsInZhbHVlIiwiZW51bWVyYWJsZSIsImdldCIsInJlbW92ZUxvY2FsZSIsIl9wYXJzZXBhdGgiLCJyZXF1aXJlIiwicGF0aCIsImxvY2FsZSIsInByb2Nlc3MiLCJlbnYiLCJfX05FWFRfSTE4Tl9TVVBQT1JUIiwicGF0aG5hbWUiLCJwYXJzZVBhdGgiLCJwYXRoTG93ZXIiLCJ0b0xvd2VyQ2FzZSIsImxvY2FsZUxvd2VyIiwic3RhcnRzV2l0aCIsImxlbmd0aCIsInNsaWNlIiwiZGVmYXVsdCIsIl9fZXNNb2R1bGUiLCJhc3NpZ24iLCJtb2R1bGUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/remove-locale.js\n")); /***/ }), /***/ "./node_modules/next/dist/client/request-idle-callback.js": /*!****************************************************************!*\ !*** ./node_modules/next/dist/client/request-idle-callback.js ***! \****************************************************************/ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n requestIdleCallback: function() {\n return requestIdleCallback;\n },\n cancelIdleCallback: function() {\n return cancelIdleCallback;\n }\n});\nconst requestIdleCallback = typeof self !== \"undefined\" && self.requestIdleCallback && self.requestIdleCallback.bind(window) || function(cb) {\n let start = Date.now();\n return self.setTimeout(function() {\n cb({\n didTimeout: false,\n timeRemaining: function() {\n return Math.max(0, 50 - (Date.now() - start));\n }\n });\n }, 1);\n};\nconst cancelIdleCallback = typeof self !== \"undefined\" && self.cancelIdleCallback && self.cancelIdleCallback.bind(window) || function(id) {\n return clearTimeout(id);\n};\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=request-idle-callback.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9yZXF1ZXN0LWlkbGUtY2FsbGJhY2suanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYkEsOENBQTZDO0lBQ3pDRyxPQUFPO0FBQ1gsQ0FBQyxFQUFDO0FBQ0YsS0FBTUMsQ0FBQUEsQ0FHTjtBQUNBLFNBQVNHLFFBQVFDLE1BQU0sRUFBRUMsR0FBRztJQUN4QixJQUFJLElBQUlDLFFBQVFELElBQUlULE9BQU9DLGNBQWMsQ0FBQ08sUUFBUUUsTUFBTTtRQUNwREMsWUFBWTtRQUNaQyxLQUFLSCxHQUFHLENBQUNDLEtBQUs7SUFDbEI7QUFDSjtBQUNBSCxRQUFRTCxTQUFTO0lBQ2JHLHFCQUFxQjtRQUNqQixPQUFPQTtJQUNYO0lBQ0FDLG9CQUFvQjtRQUNoQixPQUFPQTtJQUNYO0FBQ0o7QUFDQSxNQUFNRCxzQkFBc0IsT0FBT1EsU0FBUyxlQUFlQSxLQUFLUixtQkFBbUIsSUFBSVEsS0FBS1IsbUJBQW1CLENBQUNTLElBQUksQ0FBQ0MsV0FBVyxTQUFTQyxFQUFFO0lBQ3ZJLElBQUlDLFFBQVFDLEtBQUtDLEdBQUc7SUFDcEIsT0FBT04sS0FBS08sVUFBVSxDQUFDO1FBQ25CSixHQUFHO1lBQ0NLLFlBQVk7WUFDWkMsZUFBZTtnQkFDWCxPQUFPQyxLQUFLQyxHQUFHLENBQUMsR0FBRyxLQUFNTixDQUFBQSxLQUFLQyxHQUFHLEtBQUtGLEtBQUk7WUFDOUM7UUFDSjtJQUNKLEdBQUc7QUFDUDtBQUNBLE1BQU1YLHFCQUFxQixPQUFPTyxTQUFTLGVBQWVBLEtBQUtQLGtCQUFrQixJQUFJTyxLQUFLUCxrQkFBa0IsQ0FBQ1EsSUFBSSxDQUFDQyxXQUFXLFNBQVNVLEVBQUU7SUFDcEksT0FBT0MsYUFBYUQ7QUFDeEI7QUFFQSxJQUFJLENBQUMsT0FBT3ZCLFFBQVF5QixPQUFPLEtBQUssY0FBZSxPQUFPekIsUUFBUXlCLE9BQU8sS0FBSyxZQUFZekIsUUFBUXlCLE9BQU8sS0FBSyxJQUFJLEtBQU0sT0FBT3pCLFFBQVF5QixPQUFPLENBQUNDLFVBQVUsS0FBSyxhQUFhO0lBQ3JLNUIsT0FBT0MsY0FBYyxDQUFDQyxRQUFReUIsT0FBTyxFQUFFLGNBQWM7UUFBRXhCLE9BQU87SUFBSztJQUNuRUgsT0FBTzZCLE1BQU0sQ0FBQzNCLFFBQVF5QixPQUFPLEVBQUV6QjtJQUMvQkUsT0FBT0YsT0FBTyxHQUFHQSxRQUFReUIsT0FBTztBQUNsQyxFQUVBLGlEQUFpRCIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9yZXF1ZXN0LWlkbGUtY2FsbGJhY2suanM/MWUyMCJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbjAgJiYgKG1vZHVsZS5leHBvcnRzID0ge1xuICAgIHJlcXVlc3RJZGxlQ2FsbGJhY2s6IG51bGwsXG4gICAgY2FuY2VsSWRsZUNhbGxiYWNrOiBudWxsXG59KTtcbmZ1bmN0aW9uIF9leHBvcnQodGFyZ2V0LCBhbGwpIHtcbiAgICBmb3IodmFyIG5hbWUgaW4gYWxsKU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIG5hbWUsIHtcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgZ2V0OiBhbGxbbmFtZV1cbiAgICB9KTtcbn1cbl9leHBvcnQoZXhwb3J0cywge1xuICAgIHJlcXVlc3RJZGxlQ2FsbGJhY2s6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gcmVxdWVzdElkbGVDYWxsYmFjaztcbiAgICB9LFxuICAgIGNhbmNlbElkbGVDYWxsYmFjazogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBjYW5jZWxJZGxlQ2FsbGJhY2s7XG4gICAgfVxufSk7XG5jb25zdCByZXF1ZXN0SWRsZUNhbGxiYWNrID0gdHlwZW9mIHNlbGYgIT09IFwidW5kZWZpbmVkXCIgJiYgc2VsZi5yZXF1ZXN0SWRsZUNhbGxiYWNrICYmIHNlbGYucmVxdWVzdElkbGVDYWxsYmFjay5iaW5kKHdpbmRvdykgfHwgZnVuY3Rpb24oY2IpIHtcbiAgICBsZXQgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgIHJldHVybiBzZWxmLnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgIGNiKHtcbiAgICAgICAgICAgIGRpZFRpbWVvdXQ6IGZhbHNlLFxuICAgICAgICAgICAgdGltZVJlbWFpbmluZzogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIE1hdGgubWF4KDAsIDUwIC0gKERhdGUubm93KCkgLSBzdGFydCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9LCAxKTtcbn07XG5jb25zdCBjYW5jZWxJZGxlQ2FsbGJhY2sgPSB0eXBlb2Ygc2VsZiAhPT0gXCJ1bmRlZmluZWRcIiAmJiBzZWxmLmNhbmNlbElkbGVDYWxsYmFjayAmJiBzZWxmLmNhbmNlbElkbGVDYWxsYmFjay5iaW5kKHdpbmRvdykgfHwgZnVuY3Rpb24oaWQpIHtcbiAgICByZXR1cm4gY2xlYXJUaW1lb3V0KGlkKTtcbn07XG5cbmlmICgodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ2Z1bmN0aW9uJyB8fCAodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ29iamVjdCcgJiYgZXhwb3J0cy5kZWZhdWx0ICE9PSBudWxsKSkgJiYgdHlwZW9mIGV4cG9ydHMuZGVmYXVsdC5fX2VzTW9kdWxlID09PSAndW5kZWZpbmVkJykge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cy5kZWZhdWx0LCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gIE9iamVjdC5hc3NpZ24oZXhwb3J0cy5kZWZhdWx0LCBleHBvcnRzKTtcbiAgbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXJlcXVlc3QtaWRsZS1jYWxsYmFjay5qcy5tYXAiXSwibmFtZXMiOlsiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJleHBvcnRzIiwidmFsdWUiLCJtb2R1bGUiLCJyZXF1ZXN0SWRsZUNhbGxiYWNrIiwiY2FuY2VsSWRsZUNhbGxiYWNrIiwiX2V4cG9ydCIsInRhcmdldCIsImFsbCIsIm5hbWUiLCJlbnVtZXJhYmxlIiwiZ2V0Iiwic2VsZiIsImJpbmQiLCJ3aW5kb3ciLCJjYiIsInN0YXJ0IiwiRGF0ZSIsIm5vdyIsInNldFRpbWVvdXQiLCJkaWRUaW1lb3V0IiwidGltZVJlbWFpbmluZyIsIk1hdGgiLCJtYXgiLCJpZCIsImNsZWFyVGltZW91dCIsImRlZmF1bHQiLCJfX2VzTW9kdWxlIiwiYXNzaWduIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/request-idle-callback.js\n")); /***/ }), /***/ "./node_modules/next/dist/client/resolve-href.js": /*!*******************************************************!*\ !*** ./node_modules/next/dist/client/resolve-href.js ***! \*******************************************************/ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"resolveHref\", ({\n enumerable: true,\n get: function() {\n return resolveHref;\n }\n}));\nconst _querystring = __webpack_require__(/*! ../shared/lib/router/utils/querystring */ \"./node_modules/next/dist/shared/lib/router/utils/querystring.js\");\nconst _formaturl = __webpack_require__(/*! ../shared/lib/router/utils/format-url */ \"./node_modules/next/dist/shared/lib/router/utils/format-url.js\");\nconst _omit = __webpack_require__(/*! ../shared/lib/router/utils/omit */ \"./node_modules/next/dist/shared/lib/router/utils/omit.js\");\nconst _utils = __webpack_require__(/*! ../shared/lib/utils */ \"./node_modules/next/dist/shared/lib/utils.js\");\nconst _normalizetrailingslash = __webpack_require__(/*! ./normalize-trailing-slash */ \"./node_modules/next/dist/client/normalize-trailing-slash.js\");\nconst _islocalurl = __webpack_require__(/*! ../shared/lib/router/utils/is-local-url */ \"./node_modules/next/dist/shared/lib/router/utils/is-local-url.js\");\nconst _utils1 = __webpack_require__(/*! ../shared/lib/router/utils */ \"./node_modules/next/dist/shared/lib/router/utils/index.js\");\nconst _interpolateas = __webpack_require__(/*! ../shared/lib/router/utils/interpolate-as */ \"./node_modules/next/dist/shared/lib/router/utils/interpolate-as.js\");\nfunction resolveHref(router, href, resolveAs) {\n // we use a dummy base url for relative urls\n let base;\n let urlAsString = typeof href === \"string\" ? href : (0, _formaturl.formatWithValidation)(href);\n // repeated slashes and backslashes in the URL are considered\n // invalid and will never match a Next.js page/file\n const urlProtoMatch = urlAsString.match(/^[a-zA-Z]{1,}:\\/\\//);\n const urlAsStringNoProto = urlProtoMatch ? urlAsString.slice(urlProtoMatch[0].length) : urlAsString;\n const urlParts = urlAsStringNoProto.split(\"?\");\n if ((urlParts[0] || \"\").match(/(\\/\\/|\\\\)/)) {\n console.error(\"Invalid href '\" + urlAsString + \"' passed to next/router in page: '\" + router.pathname + \"'. Repeated forward-slashes (//) or backslashes \\\\ are not valid in the href.\");\n const normalizedUrl = (0, _utils.normalizeRepeatedSlashes)(urlAsStringNoProto);\n urlAsString = (urlProtoMatch ? urlProtoMatch[0] : \"\") + normalizedUrl;\n }\n // Return because it cannot be routed by the Next.js router\n if (!(0, _islocalurl.isLocalURL)(urlAsString)) {\n return resolveAs ? [\n urlAsString\n ] : urlAsString;\n }\n try {\n base = new URL(urlAsString.startsWith(\"#\") ? router.asPath : router.pathname, \"http://n\");\n } catch (_) {\n // fallback to / for invalid asPath values e.g. //\n base = new URL(\"/\", \"http://n\");\n }\n try {\n const finalUrl = new URL(urlAsString, base);\n finalUrl.pathname = (0, _normalizetrailingslash.normalizePathTrailingSlash)(finalUrl.pathname);\n let interpolatedAs = \"\";\n if ((0, _utils1.isDynamicRoute)(finalUrl.pathname) && finalUrl.searchParams && resolveAs) {\n const query = (0, _querystring.searchParamsToUrlQuery)(finalUrl.searchParams);\n const { result, params } = (0, _interpolateas.interpolateAs)(finalUrl.pathname, finalUrl.pathname, query);\n if (result) {\n interpolatedAs = (0, _formaturl.formatWithValidation)({\n pathname: result,\n hash: finalUrl.hash,\n query: (0, _omit.omit)(query, params)\n });\n }\n }\n // if the origin didn't change, it means we received a relative href\n const resolvedHref = finalUrl.origin === base.origin ? finalUrl.href.slice(finalUrl.origin.length) : finalUrl.href;\n return resolveAs ? [\n resolvedHref,\n interpolatedAs || resolvedHref\n ] : resolvedHref;\n } catch (_) {\n return resolveAs ? [\n urlAsString\n ] : urlAsString;\n }\n}\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=resolve-href.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9yZXNvbHZlLWhyZWYuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYkEsOENBQTZDO0lBQ3pDRyxPQUFPO0FBQ1gsQ0FBQyxFQUFDO0FBQ0ZILCtDQUE4QztJQUMxQ0ksWUFBWTtJQUNaQyxLQUFLO1FBQ0QsT0FBT0M7SUFDWDtBQUNKLENBQUMsRUFBQztBQUNGLE1BQU1DLGVBQWVDLG1CQUFPQSxDQUFDLCtHQUF3QztBQUNyRSxNQUFNQyxhQUFhRCxtQkFBT0EsQ0FBQyw2R0FBdUM7QUFDbEUsTUFBTUUsUUFBUUYsbUJBQU9BLENBQUMsaUdBQWlDO0FBQ3ZELE1BQU1HLFNBQVNILG1CQUFPQSxDQUFDLHlFQUFxQjtBQUM1QyxNQUFNSSwwQkFBMEJKLG1CQUFPQSxDQUFDLCtGQUE0QjtBQUNwRSxNQUFNSyxjQUFjTCxtQkFBT0EsQ0FBQyxpSEFBeUM7QUFDckUsTUFBTU0sVUFBVU4sbUJBQU9BLENBQUMsNkZBQTRCO0FBQ3BELE1BQU1PLGlCQUFpQlAsbUJBQU9BLENBQUMscUhBQTJDO0FBQzFFLFNBQVNGLFlBQVlVLE1BQU0sRUFBRUMsSUFBSSxFQUFFQyxTQUFTO0lBQ3hDLDRDQUE0QztJQUM1QyxJQUFJQztJQUNKLElBQUlDLGNBQWMsT0FBT0gsU0FBUyxXQUFXQSxPQUFPLENBQUMsR0FBR1IsV0FBV1ksb0JBQW9CLEVBQUVKO0lBQ3pGLDZEQUE2RDtJQUM3RCxtREFBbUQ7SUFDbkQsTUFBTUssZ0JBQWdCRixZQUFZRyxLQUFLLENBQUM7SUFDeEMsTUFBTUMscUJBQXFCRixnQkFBZ0JGLFlBQVlLLEtBQUssQ0FBQ0gsYUFBYSxDQUFDLEVBQUUsQ0FBQ0ksTUFBTSxJQUFJTjtJQUN4RixNQUFNTyxXQUFXSCxtQkFBbUJJLEtBQUssQ0FBQztJQUMxQyxJQUFJLENBQUNELFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBQyxFQUFHSixLQUFLLENBQUMsY0FBYztRQUN4Q00sUUFBUUMsS0FBSyxDQUFDLG1CQUFtQlYsY0FBYyx1Q0FBdUNKLE9BQU9lLFFBQVEsR0FBRztRQUN4RyxNQUFNQyxnQkFBZ0IsQ0FBQyxHQUFHckIsT0FBT3NCLHdCQUF3QixFQUFFVDtRQUMzREosY0FBYyxDQUFDRSxnQkFBZ0JBLGFBQWEsQ0FBQyxFQUFFLEdBQUcsRUFBQyxJQUFLVTtJQUM1RDtJQUNBLDJEQUEyRDtJQUMzRCxJQUFJLENBQUMsQ0FBQyxHQUFHbkIsWUFBWXFCLFVBQVUsRUFBRWQsY0FBYztRQUMzQyxPQUFPRixZQUFZO1lBQ2ZFO1NBQ0gsR0FBR0E7SUFDUjtJQUNBLElBQUk7UUFDQUQsT0FBTyxJQUFJZ0IsSUFBSWYsWUFBWWdCLFVBQVUsQ0FBQyxPQUFPcEIsT0FBT3FCLE1BQU0sR0FBR3JCLE9BQU9lLFFBQVEsRUFBRTtJQUNsRixFQUFFLE9BQU9PLEdBQUc7UUFDUixrREFBa0Q7UUFDbERuQixPQUFPLElBQUlnQixJQUFJLEtBQUs7SUFDeEI7SUFDQSxJQUFJO1FBQ0EsTUFBTUksV0FBVyxJQUFJSixJQUFJZixhQUFhRDtRQUN0Q29CLFNBQVNSLFFBQVEsR0FBRyxDQUFDLEdBQUduQix3QkFBd0I0QiwwQkFBMEIsRUFBRUQsU0FBU1IsUUFBUTtRQUM3RixJQUFJVSxpQkFBaUI7UUFDckIsSUFBSSxDQUFDLEdBQUczQixRQUFRNEIsY0FBYyxFQUFFSCxTQUFTUixRQUFRLEtBQUtRLFNBQVNJLFlBQVksSUFBSXpCLFdBQVc7WUFDdEYsTUFBTTBCLFFBQVEsQ0FBQyxHQUFHckMsYUFBYXNDLHNCQUFzQixFQUFFTixTQUFTSSxZQUFZO1lBQzVFLE1BQU0sRUFBRUcsTUFBTSxFQUFFQyxNQUFNLEVBQUUsR0FBRyxDQUFDLEdBQUdoQyxlQUFlaUMsYUFBYSxFQUFFVCxTQUFTUixRQUFRLEVBQUVRLFNBQVNSLFFBQVEsRUFBRWE7WUFDbkcsSUFBSUUsUUFBUTtnQkFDUkwsaUJBQWlCLENBQUMsR0FBR2hDLFdBQVdZLG9CQUFvQixFQUFFO29CQUNsRFUsVUFBVWU7b0JBQ1ZHLE1BQU1WLFNBQVNVLElBQUk7b0JBQ25CTCxPQUFPLENBQUMsR0FBR2xDLE1BQU13QyxJQUFJLEVBQUVOLE9BQU9HO2dCQUNsQztZQUNKO1FBQ0o7UUFDQSxvRUFBb0U7UUFDcEUsTUFBTUksZUFBZVosU0FBU2EsTUFBTSxLQUFLakMsS0FBS2lDLE1BQU0sR0FBR2IsU0FBU3RCLElBQUksQ0FBQ1EsS0FBSyxDQUFDYyxTQUFTYSxNQUFNLENBQUMxQixNQUFNLElBQUlhLFNBQVN0QixJQUFJO1FBQ2xILE9BQU9DLFlBQVk7WUFDZmlDO1lBQ0FWLGtCQUFrQlU7U0FDckIsR0FBR0E7SUFDUixFQUFFLE9BQU9iLEdBQUc7UUFDUixPQUFPcEIsWUFBWTtZQUNmRTtTQUNILEdBQUdBO0lBQ1I7QUFDSjtBQUVBLElBQUksQ0FBQyxPQUFPbEIsUUFBUW1ELE9BQU8sS0FBSyxjQUFlLE9BQU9uRCxRQUFRbUQsT0FBTyxLQUFLLFlBQVluRCxRQUFRbUQsT0FBTyxLQUFLLElBQUksS0FBTSxPQUFPbkQsUUFBUW1ELE9BQU8sQ0FBQ0MsVUFBVSxLQUFLLGFBQWE7SUFDckt0RCxPQUFPQyxjQUFjLENBQUNDLFFBQVFtRCxPQUFPLEVBQUUsY0FBYztRQUFFbEQsT0FBTztJQUFLO0lBQ25FSCxPQUFPdUQsTUFBTSxDQUFDckQsUUFBUW1ELE9BQU8sRUFBRW5EO0lBQy9Cc0QsT0FBT3RELE9BQU8sR0FBR0EsUUFBUW1ELE9BQU87QUFDbEMsRUFFQSx3Q0FBd0MiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvcmVzb2x2ZS1ocmVmLmpzPzJmOWUiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJyZXNvbHZlSHJlZlwiLCB7XG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gcmVzb2x2ZUhyZWY7XG4gICAgfVxufSk7XG5jb25zdCBfcXVlcnlzdHJpbmcgPSByZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvcXVlcnlzdHJpbmdcIik7XG5jb25zdCBfZm9ybWF0dXJsID0gcmVxdWlyZShcIi4uL3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL2Zvcm1hdC11cmxcIik7XG5jb25zdCBfb21pdCA9IHJlcXVpcmUoXCIuLi9zaGFyZWQvbGliL3JvdXRlci91dGlscy9vbWl0XCIpO1xuY29uc3QgX3V0aWxzID0gcmVxdWlyZShcIi4uL3NoYXJlZC9saWIvdXRpbHNcIik7XG5jb25zdCBfbm9ybWFsaXpldHJhaWxpbmdzbGFzaCA9IHJlcXVpcmUoXCIuL25vcm1hbGl6ZS10cmFpbGluZy1zbGFzaFwiKTtcbmNvbnN0IF9pc2xvY2FsdXJsID0gcmVxdWlyZShcIi4uL3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL2lzLWxvY2FsLXVybFwiKTtcbmNvbnN0IF91dGlsczEgPSByZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHNcIik7XG5jb25zdCBfaW50ZXJwb2xhdGVhcyA9IHJlcXVpcmUoXCIuLi9zaGFyZWQvbGliL3JvdXRlci91dGlscy9pbnRlcnBvbGF0ZS1hc1wiKTtcbmZ1bmN0aW9uIHJlc29sdmVIcmVmKHJvdXRlciwgaHJlZiwgcmVzb2x2ZUFzKSB7XG4gICAgLy8gd2UgdXNlIGEgZHVtbXkgYmFzZSB1cmwgZm9yIHJlbGF0aXZlIHVybHNcbiAgICBsZXQgYmFzZTtcbiAgICBsZXQgdXJsQXNTdHJpbmcgPSB0eXBlb2YgaHJlZiA9PT0gXCJzdHJpbmdcIiA/IGhyZWYgOiAoMCwgX2Zvcm1hdHVybC5mb3JtYXRXaXRoVmFsaWRhdGlvbikoaHJlZik7XG4gICAgLy8gcmVwZWF0ZWQgc2xhc2hlcyBhbmQgYmFja3NsYXNoZXMgaW4gdGhlIFVSTCBhcmUgY29uc2lkZXJlZFxuICAgIC8vIGludmFsaWQgYW5kIHdpbGwgbmV2ZXIgbWF0Y2ggYSBOZXh0LmpzIHBhZ2UvZmlsZVxuICAgIGNvbnN0IHVybFByb3RvTWF0Y2ggPSB1cmxBc1N0cmluZy5tYXRjaCgvXlthLXpBLVpdezEsfTpcXC9cXC8vKTtcbiAgICBjb25zdCB1cmxBc1N0cmluZ05vUHJvdG8gPSB1cmxQcm90b01hdGNoID8gdXJsQXNTdHJpbmcuc2xpY2UodXJsUHJvdG9NYXRjaFswXS5sZW5ndGgpIDogdXJsQXNTdHJpbmc7XG4gICAgY29uc3QgdXJsUGFydHMgPSB1cmxBc1N0cmluZ05vUHJvdG8uc3BsaXQoXCI/XCIpO1xuICAgIGlmICgodXJsUGFydHNbMF0gfHwgXCJcIikubWF0Y2goLyhcXC9cXC98XFxcXCkvKSkge1xuICAgICAgICBjb25zb2xlLmVycm9yKFwiSW52YWxpZCBocmVmICdcIiArIHVybEFzU3RyaW5nICsgXCInIHBhc3NlZCB0byBuZXh0L3JvdXRlciBpbiBwYWdlOiAnXCIgKyByb3V0ZXIucGF0aG5hbWUgKyBcIicuIFJlcGVhdGVkIGZvcndhcmQtc2xhc2hlcyAoLy8pIG9yIGJhY2tzbGFzaGVzIFxcXFwgYXJlIG5vdCB2YWxpZCBpbiB0aGUgaHJlZi5cIik7XG4gICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRVcmwgPSAoMCwgX3V0aWxzLm5vcm1hbGl6ZVJlcGVhdGVkU2xhc2hlcykodXJsQXNTdHJpbmdOb1Byb3RvKTtcbiAgICAgICAgdXJsQXNTdHJpbmcgPSAodXJsUHJvdG9NYXRjaCA/IHVybFByb3RvTWF0Y2hbMF0gOiBcIlwiKSArIG5vcm1hbGl6ZWRVcmw7XG4gICAgfVxuICAgIC8vIFJldHVybiBiZWNhdXNlIGl0IGNhbm5vdCBiZSByb3V0ZWQgYnkgdGhlIE5leHQuanMgcm91dGVyXG4gICAgaWYgKCEoMCwgX2lzbG9jYWx1cmwuaXNMb2NhbFVSTCkodXJsQXNTdHJpbmcpKSB7XG4gICAgICAgIHJldHVybiByZXNvbHZlQXMgPyBbXG4gICAgICAgICAgICB1cmxBc1N0cmluZ1xuICAgICAgICBdIDogdXJsQXNTdHJpbmc7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAgIGJhc2UgPSBuZXcgVVJMKHVybEFzU3RyaW5nLnN0YXJ0c1dpdGgoXCIjXCIpID8gcm91dGVyLmFzUGF0aCA6IHJvdXRlci5wYXRobmFtZSwgXCJodHRwOi8vblwiKTtcbiAgICB9IGNhdGNoIChfKSB7XG4gICAgICAgIC8vIGZhbGxiYWNrIHRvIC8gZm9yIGludmFsaWQgYXNQYXRoIHZhbHVlcyBlLmcuIC8vXG4gICAgICAgIGJhc2UgPSBuZXcgVVJMKFwiL1wiLCBcImh0dHA6Ly9uXCIpO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICBjb25zdCBmaW5hbFVybCA9IG5ldyBVUkwodXJsQXNTdHJpbmcsIGJhc2UpO1xuICAgICAgICBmaW5hbFVybC5wYXRobmFtZSA9ICgwLCBfbm9ybWFsaXpldHJhaWxpbmdzbGFzaC5ub3JtYWxpemVQYXRoVHJhaWxpbmdTbGFzaCkoZmluYWxVcmwucGF0aG5hbWUpO1xuICAgICAgICBsZXQgaW50ZXJwb2xhdGVkQXMgPSBcIlwiO1xuICAgICAgICBpZiAoKDAsIF91dGlsczEuaXNEeW5hbWljUm91dGUpKGZpbmFsVXJsLnBhdGhuYW1lKSAmJiBmaW5hbFVybC5zZWFyY2hQYXJhbXMgJiYgcmVzb2x2ZUFzKSB7XG4gICAgICAgICAgICBjb25zdCBxdWVyeSA9ICgwLCBfcXVlcnlzdHJpbmcuc2VhcmNoUGFyYW1zVG9VcmxRdWVyeSkoZmluYWxVcmwuc2VhcmNoUGFyYW1zKTtcbiAgICAgICAgICAgIGNvbnN0IHsgcmVzdWx0LCBwYXJhbXMgfSA9ICgwLCBfaW50ZXJwb2xhdGVhcy5pbnRlcnBvbGF0ZUFzKShmaW5hbFVybC5wYXRobmFtZSwgZmluYWxVcmwucGF0aG5hbWUsIHF1ZXJ5KTtcbiAgICAgICAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgICAgICAgICBpbnRlcnBvbGF0ZWRBcyA9ICgwLCBfZm9ybWF0dXJsLmZvcm1hdFdpdGhWYWxpZGF0aW9uKSh7XG4gICAgICAgICAgICAgICAgICAgIHBhdGhuYW1lOiByZXN1bHQsXG4gICAgICAgICAgICAgICAgICAgIGhhc2g6IGZpbmFsVXJsLmhhc2gsXG4gICAgICAgICAgICAgICAgICAgIHF1ZXJ5OiAoMCwgX29taXQub21pdCkocXVlcnksIHBhcmFtcylcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBpZiB0aGUgb3JpZ2luIGRpZG4ndCBjaGFuZ2UsIGl0IG1lYW5zIHdlIHJlY2VpdmVkIGEgcmVsYXRpdmUgaHJlZlxuICAgICAgICBjb25zdCByZXNvbHZlZEhyZWYgPSBmaW5hbFVybC5vcmlnaW4gPT09IGJhc2Uub3JpZ2luID8gZmluYWxVcmwuaHJlZi5zbGljZShmaW5hbFVybC5vcmlnaW4ubGVuZ3RoKSA6IGZpbmFsVXJsLmhyZWY7XG4gICAgICAgIHJldHVybiByZXNvbHZlQXMgPyBbXG4gICAgICAgICAgICByZXNvbHZlZEhyZWYsXG4gICAgICAgICAgICBpbnRlcnBvbGF0ZWRBcyB8fCByZXNvbHZlZEhyZWZcbiAgICAgICAgXSA6IHJlc29sdmVkSHJlZjtcbiAgICB9IGNhdGNoIChfKSB7XG4gICAgICAgIHJldHVybiByZXNvbHZlQXMgPyBbXG4gICAgICAgICAgICB1cmxBc1N0cmluZ1xuICAgICAgICBdIDogdXJsQXNTdHJpbmc7XG4gICAgfVxufVxuXG5pZiAoKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdmdW5jdGlvbicgfHwgKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdvYmplY3QnICYmIGV4cG9ydHMuZGVmYXVsdCAhPT0gbnVsbCkpICYmIHR5cGVvZiBleHBvcnRzLmRlZmF1bHQuX19lc01vZHVsZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMuZGVmYXVsdCwgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuICBPYmplY3QuYXNzaWduKGV4cG9ydHMuZGVmYXVsdCwgZXhwb3J0cyk7XG4gIG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cy5kZWZhdWx0O1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1yZXNvbHZlLWhyZWYuanMubWFwIl0sIm5hbWVzIjpbIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZXhwb3J0cyIsInZhbHVlIiwiZW51bWVyYWJsZSIsImdldCIsInJlc29sdmVIcmVmIiwiX3F1ZXJ5c3RyaW5nIiwicmVxdWlyZSIsIl9mb3JtYXR1cmwiLCJfb21pdCIsIl91dGlscyIsIl9ub3JtYWxpemV0cmFpbGluZ3NsYXNoIiwiX2lzbG9jYWx1cmwiLCJfdXRpbHMxIiwiX2ludGVycG9sYXRlYXMiLCJyb3V0ZXIiLCJocmVmIiwicmVzb2x2ZUFzIiwiYmFzZSIsInVybEFzU3RyaW5nIiwiZm9ybWF0V2l0aFZhbGlkYXRpb24iLCJ1cmxQcm90b01hdGNoIiwibWF0Y2giLCJ1cmxBc1N0cmluZ05vUHJvdG8iLCJzbGljZSIsImxlbmd0aCIsInVybFBhcnRzIiwic3BsaXQiLCJjb25zb2xlIiwiZXJyb3IiLCJwYXRobmFtZSIsIm5vcm1hbGl6ZWRVcmwiLCJub3JtYWxpemVSZXBlYXRlZFNsYXNoZXMiLCJpc0xvY2FsVVJMIiwiVVJMIiwic3RhcnRzV2l0aCIsImFzUGF0aCIsIl8iLCJmaW5hbFVybCIsIm5vcm1hbGl6ZVBhdGhUcmFpbGluZ1NsYXNoIiwiaW50ZXJwb2xhdGVkQXMiLCJpc0R5bmFtaWNSb3V0ZSIsInNlYXJjaFBhcmFtcyIsInF1ZXJ5Iiwic2VhcmNoUGFyYW1zVG9VcmxRdWVyeSIsInJlc3VsdCIsInBhcmFtcyIsImludGVycG9sYXRlQXMiLCJoYXNoIiwib21pdCIsInJlc29sdmVkSHJlZiIsIm9yaWdpbiIsImRlZmF1bHQiLCJfX2VzTW9kdWxlIiwiYXNzaWduIiwibW9kdWxlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/resolve-href.js\n")); /***/ }), /***/ "./node_modules/next/dist/client/route-announcer.js": /*!**********************************************************!*\ !*** ./node_modules/next/dist/client/route-announcer.js ***! \**********************************************************/ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval(__webpack_require__.ts("\nvar _s = $RefreshSig$();\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n RouteAnnouncer: function() {\n return RouteAnnouncer;\n },\n default: function() {\n return _default;\n }\n});\nconst _interop_require_default = __webpack_require__(/*! @swc/helpers/_/_interop_require_default */ \"./node_modules/@swc/helpers/esm/_interop_require_default.js\");\nconst _react = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! react */ \"./node_modules/react/index.js\"));\nconst _router = __webpack_require__(/*! ./router */ \"./node_modules/next/dist/client/router.js\");\nconst nextjsRouteAnnouncerStyles = {\n border: 0,\n clip: \"rect(0 0 0 0)\",\n height: \"1px\",\n margin: \"-1px\",\n overflow: \"hidden\",\n padding: 0,\n position: \"absolute\",\n top: 0,\n width: \"1px\",\n // https://medium.com/@jessebeach/beware-smushed-off-screen-accessible-text-5952a4c2cbfe\n whiteSpace: \"nowrap\",\n wordWrap: \"normal\"\n};\nconst RouteAnnouncer = ()=>{\n _s();\n const { asPath } = (0, _router.useRouter)();\n const [routeAnnouncement, setRouteAnnouncement] = _react.default.useState(\"\");\n // Only announce the path change, but not for the first load because screen\n // reader will do that automatically.\n const previouslyLoadedPath = _react.default.useRef(asPath);\n // Every time the path changes, announce the new page’s title following this\n // priority: first the document title (from head), otherwise the first h1, or\n // if none of these exist, then the pathname from the URL. This methodology is\n // inspired by Marcy Sutton’s accessible client routing user testing. More\n // information can be found here:\n // https://www.gatsbyjs.com/blog/2019-07-11-user-testing-accessible-client-routing/\n _react.default.useEffect(()=>{\n // If the path hasn't change, we do nothing.\n if (previouslyLoadedPath.current === asPath) return;\n previouslyLoadedPath.current = asPath;\n if (document.title) {\n setRouteAnnouncement(document.title);\n } else {\n const pageHeader = document.querySelector(\"h1\");\n var _pageHeader_innerText;\n const content = (_pageHeader_innerText = pageHeader == null ? void 0 : pageHeader.innerText) != null ? _pageHeader_innerText : pageHeader == null ? void 0 : pageHeader.textContent;\n setRouteAnnouncement(content || asPath);\n }\n }, [\n asPath\n ]);\n return /*#__PURE__*/ _react.default.createElement(\"p\", {\n \"aria-live\": \"assertive\" // Make the announcement immediately.\n ,\n id: \"__next-route-announcer__\",\n role: \"alert\",\n style: nextjsRouteAnnouncerStyles\n }, routeAnnouncement);\n};\n_s(RouteAnnouncer, \"YC5SCNeVaenA6x7RBk3t0O2D/M8=\");\n_c = RouteAnnouncer;\nconst _default = RouteAnnouncer;\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=route-announcer.js.map\nvar _c;\n$RefreshReg$(_c, \"RouteAnnouncer\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9yb3V0ZS1hbm5vdW5jZXIuanMiLCJtYXBwaW5ncyI6IkFBQWE7O0FBQ2JBLDhDQUE2QztJQUN6Q0csT0FBTztBQUNYLENBQUMsRUFBQztBQUNGLEtBQU1DLENBQUFBLENBR047QUFDQSxTQUFTRyxRQUFRQyxNQUFNLEVBQUVDLEdBQUc7SUFDeEIsSUFBSSxJQUFJQyxRQUFRRCxJQUFJVCxPQUFPQyxjQUFjLENBQUNPLFFBQVFFLE1BQU07UUFDcERDLFlBQVk7UUFDWkMsS0FBS0gsR0FBRyxDQUFDQyxLQUFLO0lBQ2xCO0FBQ0o7QUFDQUgsUUFBUUwsU0FBUztJQUNiRyxnQkFBZ0I7UUFDWixPQUFPQTtJQUNYO0lBQ0FDLFNBQVM7UUFDTCxPQUFPTztJQUNYO0FBQ0o7QUFDQSxNQUFNQywyQkFBMkJDLG1CQUFPQSxDQUFDLDRHQUF5QztBQUNsRixNQUFNQyxTQUFTLFdBQVcsR0FBR0YseUJBQXlCRyxDQUFDLENBQUNGLG1CQUFPQSxDQUFDLDRDQUFPO0FBQ3ZFLE1BQU1HLFVBQVVILG1CQUFPQSxDQUFDLDJEQUFVO0FBQ2xDLE1BQU1JLDZCQUE2QjtJQUMvQkMsUUFBUTtJQUNSQyxNQUFNO0lBQ05DLFFBQVE7SUFDUkMsUUFBUTtJQUNSQyxVQUFVO0lBQ1ZDLFNBQVM7SUFDVEMsVUFBVTtJQUNWQyxLQUFLO0lBQ0xDLE9BQU87SUFDUCx3RkFBd0Y7SUFDeEZDLFlBQVk7SUFDWkMsVUFBVTtBQUNkO0FBQ0EsTUFBTXpCLGlCQUFpQjs7SUFDbkIsTUFBTSxFQUFFMEIsTUFBTSxFQUFFLEdBQUcsQ0FBQyxHQUFHYixRQUFRYyxTQUFTO0lBQ3hDLE1BQU0sQ0FBQ0MsbUJBQW1CQyxxQkFBcUIsR0FBR2xCLE9BQU9WLE9BQU8sQ0FBQzZCLFFBQVEsQ0FBQztJQUMxRSwyRUFBMkU7SUFDM0UscUNBQXFDO0lBQ3JDLE1BQU1DLHVCQUF1QnBCLE9BQU9WLE9BQU8sQ0FBQytCLE1BQU0sQ0FBQ047SUFDbkQsNEVBQTRFO0lBQzVFLDZFQUE2RTtJQUM3RSw4RUFBOEU7SUFDOUUsMEVBQTBFO0lBQzFFLGlDQUFpQztJQUNqQyxtRkFBbUY7SUFDbkZmLE9BQU9WLE9BQU8sQ0FBQ2dDLFNBQVMsQ0FBQztRQUNyQiw0Q0FBNEM7UUFDNUMsSUFBSUYscUJBQXFCRyxPQUFPLEtBQUtSLFFBQVE7UUFDN0NLLHFCQUFxQkcsT0FBTyxHQUFHUjtRQUMvQixJQUFJUyxTQUFTQyxLQUFLLEVBQUU7WUFDaEJQLHFCQUFxQk0sU0FBU0MsS0FBSztRQUN2QyxPQUFPO1lBQ0gsTUFBTUMsYUFBYUYsU0FBU0csYUFBYSxDQUFDO1lBQzFDLElBQUlDO1lBQ0osTUFBTUMsVUFBVSxDQUFDRCx3QkFBd0JGLGNBQWMsT0FBTyxLQUFLLElBQUlBLFdBQVdJLFNBQVMsS0FBSyxPQUFPRix3QkFBd0JGLGNBQWMsT0FBTyxLQUFLLElBQUlBLFdBQVdLLFdBQVc7WUFDbkxiLHFCQUFxQlcsV0FBV2Q7UUFDcEM7SUFDSixHQUNBO1FBQ0lBO0tBQ0g7SUFDRCxPQUFPLFdBQVcsR0FBR2YsT0FBT1YsT0FBTyxDQUFDMEMsYUFBYSxDQUFDLEtBQUs7UUFDbkQsYUFBYSxZQUFZLHFDQUFxQzs7UUFFOURDLElBQUk7UUFDSkMsTUFBTTtRQUNOQyxPQUFPaEM7SUFDWCxHQUFHYztBQUNQO0dBbkNNNUI7S0FBQUE7QUFvQ04sTUFBTVEsV0FBV1I7QUFFakIsSUFBSSxDQUFDLE9BQU9ILFFBQVFJLE9BQU8sS0FBSyxjQUFlLE9BQU9KLFFBQVFJLE9BQU8sS0FBSyxZQUFZSixRQUFRSSxPQUFPLEtBQUssSUFBSSxLQUFNLE9BQU9KLFFBQVFJLE9BQU8sQ0FBQzhDLFVBQVUsS0FBSyxhQUFhO0lBQ3JLcEQsT0FBT0MsY0FBYyxDQUFDQyxRQUFRSSxPQUFPLEVBQUUsY0FBYztRQUFFSCxPQUFPO0lBQUs7SUFDbkVILE9BQU9xRCxNQUFNLENBQUNuRCxRQUFRSSxPQUFPLEVBQUVKO0lBQy9CRSxPQUFPRixPQUFPLEdBQUdBLFFBQVFJLE9BQU87QUFDbEMsRUFFQSwyQ0FBMkMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvcm91dGUtYW5ub3VuY2VyLmpzPzU4MjciXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG4wICYmIChtb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBSb3V0ZUFubm91bmNlcjogbnVsbCxcbiAgICBkZWZhdWx0OiBudWxsXG59KTtcbmZ1bmN0aW9uIF9leHBvcnQodGFyZ2V0LCBhbGwpIHtcbiAgICBmb3IodmFyIG5hbWUgaW4gYWxsKU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIG5hbWUsIHtcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgZ2V0OiBhbGxbbmFtZV1cbiAgICB9KTtcbn1cbl9leHBvcnQoZXhwb3J0cywge1xuICAgIFJvdXRlQW5ub3VuY2VyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIFJvdXRlQW5ub3VuY2VyO1xuICAgIH0sXG4gICAgZGVmYXVsdDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBfZGVmYXVsdDtcbiAgICB9XG59KTtcbmNvbnN0IF9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdCA9IHJlcXVpcmUoXCJAc3djL2hlbHBlcnMvXy9faW50ZXJvcF9yZXF1aXJlX2RlZmF1bHRcIik7XG5jb25zdCBfcmVhY3QgPSAvKiNfX1BVUkVfXyovIF9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdC5fKHJlcXVpcmUoXCJyZWFjdFwiKSk7XG5jb25zdCBfcm91dGVyID0gcmVxdWlyZShcIi4vcm91dGVyXCIpO1xuY29uc3QgbmV4dGpzUm91dGVBbm5vdW5jZXJTdHlsZXMgPSB7XG4gICAgYm9yZGVyOiAwLFxuICAgIGNsaXA6IFwicmVjdCgwIDAgMCAwKVwiLFxuICAgIGhlaWdodDogXCIxcHhcIixcbiAgICBtYXJnaW46IFwiLTFweFwiLFxuICAgIG92ZXJmbG93OiBcImhpZGRlblwiLFxuICAgIHBhZGRpbmc6IDAsXG4gICAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgICB0b3A6IDAsXG4gICAgd2lkdGg6IFwiMXB4XCIsXG4gICAgLy8gaHR0cHM6Ly9tZWRpdW0uY29tL0BqZXNzZWJlYWNoL2Jld2FyZS1zbXVzaGVkLW9mZi1zY3JlZW4tYWNjZXNzaWJsZS10ZXh0LTU5NTJhNGMyY2JmZVxuICAgIHdoaXRlU3BhY2U6IFwibm93cmFwXCIsXG4gICAgd29yZFdyYXA6IFwibm9ybWFsXCJcbn07XG5jb25zdCBSb3V0ZUFubm91bmNlciA9ICgpPT57XG4gICAgY29uc3QgeyBhc1BhdGggfSA9ICgwLCBfcm91dGVyLnVzZVJvdXRlcikoKTtcbiAgICBjb25zdCBbcm91dGVBbm5vdW5jZW1lbnQsIHNldFJvdXRlQW5ub3VuY2VtZW50XSA9IF9yZWFjdC5kZWZhdWx0LnVzZVN0YXRlKFwiXCIpO1xuICAgIC8vIE9ubHkgYW5ub3VuY2UgdGhlIHBhdGggY2hhbmdlLCBidXQgbm90IGZvciB0aGUgZmlyc3QgbG9hZCBiZWNhdXNlIHNjcmVlblxuICAgIC8vIHJlYWRlciB3aWxsIGRvIHRoYXQgYXV0b21hdGljYWxseS5cbiAgICBjb25zdCBwcmV2aW91c2x5TG9hZGVkUGF0aCA9IF9yZWFjdC5kZWZhdWx0LnVzZVJlZihhc1BhdGgpO1xuICAgIC8vIEV2ZXJ5IHRpbWUgdGhlIHBhdGggY2hhbmdlcywgYW5ub3VuY2UgdGhlIG5ldyBwYWdl4oCZcyB0aXRsZSBmb2xsb3dpbmcgdGhpc1xuICAgIC8vIHByaW9yaXR5OiBmaXJzdCB0aGUgZG9jdW1lbnQgdGl0bGUgKGZyb20gaGVhZCksIG90aGVyd2lzZSB0aGUgZmlyc3QgaDEsIG9yXG4gICAgLy8gaWYgbm9uZSBvZiB0aGVzZSBleGlzdCwgdGhlbiB0aGUgcGF0aG5hbWUgZnJvbSB0aGUgVVJMLiBUaGlzIG1ldGhvZG9sb2d5IGlzXG4gICAgLy8gaW5zcGlyZWQgYnkgTWFyY3kgU3V0dG9u4oCZcyBhY2Nlc3NpYmxlIGNsaWVudCByb3V0aW5nIHVzZXIgdGVzdGluZy4gTW9yZVxuICAgIC8vIGluZm9ybWF0aW9uIGNhbiBiZSBmb3VuZCBoZXJlOlxuICAgIC8vIGh0dHBzOi8vd3d3LmdhdHNieWpzLmNvbS9ibG9nLzIwMTktMDctMTEtdXNlci10ZXN0aW5nLWFjY2Vzc2libGUtY2xpZW50LXJvdXRpbmcvXG4gICAgX3JlYWN0LmRlZmF1bHQudXNlRWZmZWN0KCgpPT57XG4gICAgICAgIC8vIElmIHRoZSBwYXRoIGhhc24ndCBjaGFuZ2UsIHdlIGRvIG5vdGhpbmcuXG4gICAgICAgIGlmIChwcmV2aW91c2x5TG9hZGVkUGF0aC5jdXJyZW50ID09PSBhc1BhdGgpIHJldHVybjtcbiAgICAgICAgcHJldmlvdXNseUxvYWRlZFBhdGguY3VycmVudCA9IGFzUGF0aDtcbiAgICAgICAgaWYgKGRvY3VtZW50LnRpdGxlKSB7XG4gICAgICAgICAgICBzZXRSb3V0ZUFubm91bmNlbWVudChkb2N1bWVudC50aXRsZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBwYWdlSGVhZGVyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcImgxXCIpO1xuICAgICAgICAgICAgdmFyIF9wYWdlSGVhZGVyX2lubmVyVGV4dDtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRlbnQgPSAoX3BhZ2VIZWFkZXJfaW5uZXJUZXh0ID0gcGFnZUhlYWRlciA9PSBudWxsID8gdm9pZCAwIDogcGFnZUhlYWRlci5pbm5lclRleHQpICE9IG51bGwgPyBfcGFnZUhlYWRlcl9pbm5lclRleHQgOiBwYWdlSGVhZGVyID09IG51bGwgPyB2b2lkIDAgOiBwYWdlSGVhZGVyLnRleHRDb250ZW50O1xuICAgICAgICAgICAgc2V0Um91dGVBbm5vdW5jZW1lbnQoY29udGVudCB8fCBhc1BhdGgpO1xuICAgICAgICB9XG4gICAgfSwgLy8gVE9ETzogc3dpdGNoIHRvIHBhdGhuYW1lICsgcXVlcnkgb2JqZWN0IG9mIGR5bmFtaWMgcm91dGUgcmVxdWlyZW1lbnRzXG4gICAgW1xuICAgICAgICBhc1BhdGhcbiAgICBdKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyBfcmVhY3QuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwicFwiLCB7XG4gICAgICAgIFwiYXJpYS1saXZlXCI6IFwiYXNzZXJ0aXZlXCIgLy8gTWFrZSB0aGUgYW5ub3VuY2VtZW50IGltbWVkaWF0ZWx5LlxuICAgICAgICAsXG4gICAgICAgIGlkOiBcIl9fbmV4dC1yb3V0ZS1hbm5vdW5jZXJfX1wiLFxuICAgICAgICByb2xlOiBcImFsZXJ0XCIsXG4gICAgICAgIHN0eWxlOiBuZXh0anNSb3V0ZUFubm91bmNlclN0eWxlc1xuICAgIH0sIHJvdXRlQW5ub3VuY2VtZW50KTtcbn07XG5jb25zdCBfZGVmYXVsdCA9IFJvdXRlQW5ub3VuY2VyO1xuXG5pZiAoKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdmdW5jdGlvbicgfHwgKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdvYmplY3QnICYmIGV4cG9ydHMuZGVmYXVsdCAhPT0gbnVsbCkpICYmIHR5cGVvZiBleHBvcnRzLmRlZmF1bHQuX19lc01vZHVsZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMuZGVmYXVsdCwgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuICBPYmplY3QuYXNzaWduKGV4cG9ydHMuZGVmYXVsdCwgZXhwb3J0cyk7XG4gIG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cy5kZWZhdWx0O1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1yb3V0ZS1hbm5vdW5jZXIuanMubWFwIl0sIm5hbWVzIjpbIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZXhwb3J0cyIsInZhbHVlIiwibW9kdWxlIiwiUm91dGVBbm5vdW5jZXIiLCJkZWZhdWx0IiwiX2V4cG9ydCIsInRhcmdldCIsImFsbCIsIm5hbWUiLCJlbnVtZXJhYmxlIiwiZ2V0IiwiX2RlZmF1bHQiLCJfaW50ZXJvcF9yZXF1aXJlX2RlZmF1bHQiLCJyZXF1aXJlIiwiX3JlYWN0IiwiXyIsIl9yb3V0ZXIiLCJuZXh0anNSb3V0ZUFubm91bmNlclN0eWxlcyIsImJvcmRlciIsImNsaXAiLCJoZWlnaHQiLCJtYXJnaW4iLCJvdmVyZmxvdyIsInBhZGRpbmciLCJwb3NpdGlvbiIsInRvcCIsIndpZHRoIiwid2hpdGVTcGFjZSIsIndvcmRXcmFwIiwiYXNQYXRoIiwidXNlUm91dGVyIiwicm91dGVBbm5vdW5jZW1lbnQiLCJzZXRSb3V0ZUFubm91bmNlbWVudCIsInVzZVN0YXRlIiwicHJldmlvdXNseUxvYWRlZFBhdGgiLCJ1c2VSZWYiLCJ1c2VFZmZlY3QiLCJjdXJyZW50IiwiZG9jdW1lbnQiLCJ0aXRsZSIsInBhZ2VIZWFkZXIiLCJxdWVyeVNlbGVjdG9yIiwiX3BhZ2VIZWFkZXJfaW5uZXJUZXh0IiwiY29udGVudCIsImlubmVyVGV4dCIsInRleHRDb250ZW50IiwiY3JlYXRlRWxlbWVudCIsImlkIiwicm9sZSIsInN0eWxlIiwiX19lc01vZHVsZSIsImFzc2lnbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/route-announcer.js\n")); /***/ }), /***/ "./node_modules/next/dist/client/route-loader.js": /*!*******************************************************!*\ !*** ./node_modules/next/dist/client/route-loader.js ***! \*******************************************************/ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n markAssetError: function() {\n return markAssetError;\n },\n isAssetError: function() {\n return isAssetError;\n },\n getClientBuildManifest: function() {\n return getClientBuildManifest;\n },\n createRouteLoader: function() {\n return createRouteLoader;\n }\n});\nconst _interop_require_default = __webpack_require__(/*! @swc/helpers/_/_interop_require_default */ \"./node_modules/@swc/helpers/esm/_interop_require_default.js\");\nconst _getassetpathfromroute = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! ../shared/lib/router/utils/get-asset-path-from-route */ \"./node_modules/next/dist/shared/lib/router/utils/get-asset-path-from-route.js\"));\nconst _trustedtypes = __webpack_require__(/*! ./trusted-types */ \"./node_modules/next/dist/client/trusted-types.js\");\nconst _requestidlecallback = __webpack_require__(/*! ./request-idle-callback */ \"./node_modules/next/dist/client/request-idle-callback.js\");\nconst _deploymentid = __webpack_require__(/*! ../build/deployment-id */ \"./node_modules/next/dist/build/deployment-id.js\");\n// 3.8s was arbitrarily chosen as it's what https://web.dev/interactive\n// considers as \"Good\" time-to-interactive. We must assume something went\n// wrong beyond this point, and then fall-back to a full page transition to\n// show the user something of value.\nconst MS_MAX_IDLE_DELAY = 3800;\nfunction withFuture(key, map, generator) {\n let entry = map.get(key);\n if (entry) {\n if (\"future\" in entry) {\n return entry.future;\n }\n return Promise.resolve(entry);\n }\n let resolver;\n const prom = new Promise((resolve)=>{\n resolver = resolve;\n });\n map.set(key, entry = {\n resolve: resolver,\n future: prom\n });\n return generator ? generator() // eslint-disable-next-line no-sequences\n .then((value)=>(resolver(value), value)).catch((err)=>{\n map.delete(key);\n throw err;\n }) : prom;\n}\nconst ASSET_LOAD_ERROR = Symbol(\"ASSET_LOAD_ERROR\");\nfunction markAssetError(err) {\n return Object.defineProperty(err, ASSET_LOAD_ERROR, {});\n}\nfunction isAssetError(err) {\n return err && ASSET_LOAD_ERROR in err;\n}\nfunction hasPrefetch(link) {\n try {\n link = document.createElement(\"link\");\n return(// with relList.support\n !!window.MSInputMethodContext && !!document.documentMode || link.relList.supports(\"prefetch\"));\n } catch (e) {\n return false;\n }\n}\nconst canPrefetch = hasPrefetch();\nconst getAssetQueryString = ()=>{\n return (0, _deploymentid.getDeploymentIdQueryOrEmptyString)();\n};\nfunction prefetchViaDom(href, as, link) {\n return new Promise((resolve, reject)=>{\n const selector = '\\n link[rel=\"prefetch\"][href^=\"' + href + '\"],\\n link[rel=\"preload\"][href^=\"' + href + '\"],\\n script[src^=\"' + href + '\"]';\n if (document.querySelector(selector)) {\n return resolve();\n }\n link = document.createElement(\"link\");\n // The order of property assignment here is intentional:\n if (as) link.as = as;\n link.rel = \"prefetch\";\n link.crossOrigin = undefined;\n link.onload = resolve;\n link.onerror = ()=>reject(markAssetError(new Error(\"Failed to prefetch: \" + href)));\n // `href` should always be last:\n link.href = href;\n document.head.appendChild(link);\n });\n}\nfunction appendScript(src, script) {\n return new Promise((resolve, reject)=>{\n script = document.createElement(\"script\");\n // The order of property assignment here is intentional.\n // 1. Setup success/failure hooks in case the browser synchronously\n // executes when `src` is set.\n script.onload = resolve;\n script.onerror = ()=>reject(markAssetError(new Error(\"Failed to load script: \" + src)));\n // 2. Configure the cross-origin attribute before setting `src` in case the\n // browser begins to fetch.\n script.crossOrigin = undefined;\n // 3. Finally, set the source and inject into the DOM in case the child\n // must be appended for fetching to start.\n script.src = src;\n document.body.appendChild(script);\n });\n}\n// We wait for pages to be built in dev before we start the route transition\n// timeout to prevent an un-necessary hard navigation in development.\nlet devBuildPromise;\n// Resolve a promise that times out after given amount of milliseconds.\nfunction resolvePromiseWithTimeout(p, ms, err) {\n return new Promise((resolve, reject)=>{\n let cancelled = false;\n p.then((r)=>{\n // Resolved, cancel the timeout\n cancelled = true;\n resolve(r);\n }).catch(reject);\n // We wrap these checks separately for better dead-code elimination in\n // production bundles.\n if (true) {\n (devBuildPromise || Promise.resolve()).then(()=>{\n (0, _requestidlecallback.requestIdleCallback)(()=>setTimeout(()=>{\n if (!cancelled) {\n reject(err);\n }\n }, ms));\n });\n }\n if (false) {}\n });\n}\nfunction getClientBuildManifest() {\n if (self.__BUILD_MANIFEST) {\n return Promise.resolve(self.__BUILD_MANIFEST);\n }\n const onBuildManifest = new Promise((resolve)=>{\n // Mandatory because this is not concurrent safe:\n const cb = self.__BUILD_MANIFEST_CB;\n self.__BUILD_MANIFEST_CB = ()=>{\n resolve(self.__BUILD_MANIFEST);\n cb && cb();\n };\n });\n return resolvePromiseWithTimeout(onBuildManifest, MS_MAX_IDLE_DELAY, markAssetError(new Error(\"Failed to load client build manifest\")));\n}\nfunction getFilesForRoute(assetPrefix, route) {\n if (true) {\n const scriptUrl = assetPrefix + \"/_next/static/chunks/pages\" + encodeURI((0, _getassetpathfromroute.default)(route, \".js\")) + getAssetQueryString();\n return Promise.resolve({\n scripts: [\n (0, _trustedtypes.__unsafeCreateTrustedScriptURL)(scriptUrl)\n ],\n // Styles are handled by `style-loader` in development:\n css: []\n });\n }\n return getClientBuildManifest().then((manifest)=>{\n if (!(route in manifest)) {\n throw markAssetError(new Error(\"Failed to lookup route: \" + route));\n }\n const allFiles = manifest[route].map((entry)=>assetPrefix + \"/_next/\" + encodeURI(entry));\n return {\n scripts: allFiles.filter((v)=>v.endsWith(\".js\")).map((v)=>(0, _trustedtypes.__unsafeCreateTrustedScriptURL)(v) + getAssetQueryString()),\n css: allFiles.filter((v)=>v.endsWith(\".css\")).map((v)=>v + getAssetQueryString())\n };\n });\n}\nfunction createRouteLoader(assetPrefix) {\n const entrypoints = new Map();\n const loadedScripts = new Map();\n const styleSheets = new Map();\n const routes = new Map();\n function maybeExecuteScript(src) {\n // With HMR we might need to \"reload\" scripts when they are\n // disposed and readded. Executing scripts twice has no functional\n // differences\n if (false) {} else {\n return appendScript(src);\n }\n }\n function fetchStyleSheet(href) {\n let prom = styleSheets.get(href);\n if (prom) {\n return prom;\n }\n styleSheets.set(href, prom = fetch(href).then((res)=>{\n if (!res.ok) {\n throw new Error(\"Failed to load stylesheet: \" + href);\n }\n return res.text().then((text)=>({\n href: href,\n content: text\n }));\n }).catch((err)=>{\n throw markAssetError(err);\n }));\n return prom;\n }\n return {\n whenEntrypoint (route) {\n return withFuture(route, entrypoints);\n },\n onEntrypoint (route, execute) {\n (execute ? Promise.resolve().then(()=>execute()).then((exports1)=>({\n component: exports1 && exports1.default || exports1,\n exports: exports1\n }), (err)=>({\n error: err\n })) : Promise.resolve(undefined)).then((input)=>{\n const old = entrypoints.get(route);\n if (old && \"resolve\" in old) {\n if (input) {\n entrypoints.set(route, input);\n old.resolve(input);\n }\n } else {\n if (input) {\n entrypoints.set(route, input);\n } else {\n entrypoints.delete(route);\n }\n // when this entrypoint has been resolved before\n // the route is outdated and we want to invalidate\n // this cache entry\n routes.delete(route);\n }\n });\n },\n loadRoute (route, prefetch) {\n return withFuture(route, routes, ()=>{\n let devBuildPromiseResolve;\n if (true) {\n devBuildPromise = new Promise((resolve)=>{\n devBuildPromiseResolve = resolve;\n });\n }\n return resolvePromiseWithTimeout(getFilesForRoute(assetPrefix, route).then((param)=>{\n let { scripts, css } = param;\n return Promise.all([\n entrypoints.has(route) ? [] : Promise.all(scripts.map(maybeExecuteScript)),\n Promise.all(css.map(fetchStyleSheet))\n ]);\n }).then((res)=>{\n return this.whenEntrypoint(route).then((entrypoint)=>({\n entrypoint,\n styles: res[1]\n }));\n }), MS_MAX_IDLE_DELAY, markAssetError(new Error(\"Route did not complete loading: \" + route))).then((param)=>{\n let { entrypoint, styles } = param;\n const res = Object.assign({\n styles: styles\n }, entrypoint);\n return \"error\" in entrypoint ? entrypoint : res;\n }).catch((err)=>{\n if (prefetch) {\n // we don't want to cache errors during prefetch\n throw err;\n }\n return {\n error: err\n };\n }).finally(()=>devBuildPromiseResolve == null ? void 0 : devBuildPromiseResolve());\n });\n },\n prefetch (route) {\n // https://github.com/GoogleChromeLabs/quicklink/blob/453a661fa1fa940e2d2e044452398e38c67a98fb/src/index.mjs#L115-L118\n // License: Apache 2.0\n let cn;\n if (cn = navigator.connection) {\n // Don't prefetch if using 2G or if Save-Data is enabled.\n if (cn.saveData || /2g/.test(cn.effectiveType)) return Promise.resolve();\n }\n return getFilesForRoute(assetPrefix, route).then((output)=>Promise.all(canPrefetch ? output.scripts.map((script)=>prefetchViaDom(script.toString(), \"script\")) : [])).then(()=>{\n (0, _requestidlecallback.requestIdleCallback)(()=>this.loadRoute(route, true).catch(()=>{}));\n }).catch(()=>{});\n }\n };\n}\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=route-loader.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9yb3V0ZS1sb2FkZXIuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYkEsOENBQTZDO0lBQ3pDRyxPQUFPO0FBQ1gsQ0FBQyxFQUFDO0FBQ0YsS0FBTUMsQ0FBQUEsQ0FLTjtBQUNBLFNBQVNLLFFBQVFDLE1BQU0sRUFBRUMsR0FBRztJQUN4QixJQUFJLElBQUlDLFFBQVFELElBQUlYLE9BQU9DLGNBQWMsQ0FBQ1MsUUFBUUUsTUFBTTtRQUNwREMsWUFBWTtRQUNaQyxLQUFLSCxHQUFHLENBQUNDLEtBQUs7SUFDbEI7QUFDSjtBQUNBSCxRQUFRUCxTQUFTO0lBQ2JHLGdCQUFnQjtRQUNaLE9BQU9BO0lBQ1g7SUFDQUMsY0FBYztRQUNWLE9BQU9BO0lBQ1g7SUFDQUMsd0JBQXdCO1FBQ3BCLE9BQU9BO0lBQ1g7SUFDQUMsbUJBQW1CO1FBQ2YsT0FBT0E7SUFDWDtBQUNKO0FBQ0EsTUFBTU8sMkJBQTJCQyxtQkFBT0EsQ0FBQyw0R0FBeUM7QUFDbEYsTUFBTUMseUJBQXlCLFdBQVcsR0FBR0YseUJBQXlCRyxDQUFDLENBQUNGLG1CQUFPQSxDQUFDLDJJQUFzRDtBQUN0SSxNQUFNRyxnQkFBZ0JILG1CQUFPQSxDQUFDLHlFQUFpQjtBQUMvQyxNQUFNSSx1QkFBdUJKLG1CQUFPQSxDQUFDLHlGQUF5QjtBQUM5RCxNQUFNSyxnQkFBZ0JMLG1CQUFPQSxDQUFDLCtFQUF3QjtBQUN0RCx1RUFBdUU7QUFDdkUseUVBQXlFO0FBQ3pFLDJFQUEyRTtBQUMzRSxvQ0FBb0M7QUFDcEMsTUFBTU0sb0JBQW9CO0FBQzFCLFNBQVNDLFdBQVdDLEdBQUcsRUFBRUMsR0FBRyxFQUFFQyxTQUFTO0lBQ25DLElBQUlDLFFBQVFGLElBQUlYLEdBQUcsQ0FBQ1U7SUFDcEIsSUFBSUcsT0FBTztRQUNQLElBQUksWUFBWUEsT0FBTztZQUNuQixPQUFPQSxNQUFNQyxNQUFNO1FBQ3ZCO1FBQ0EsT0FBT0MsUUFBUUMsT0FBTyxDQUFDSDtJQUMzQjtJQUNBLElBQUlJO0lBQ0osTUFBTUMsT0FBTyxJQUFJSCxRQUFRLENBQUNDO1FBQ3RCQyxXQUFXRDtJQUNmO0lBQ0FMLElBQUlRLEdBQUcsQ0FBQ1QsS0FBS0csUUFBUTtRQUNqQkcsU0FBU0M7UUFDVEgsUUFBUUk7SUFDWjtJQUNBLE9BQU9OLFlBQVlBLFlBQVcsd0NBQXdDO0tBQ3JFUSxJQUFJLENBQUMsQ0FBQy9CLFFBQVM0QixDQUFBQSxTQUFTNUIsUUFBUUEsS0FBSSxHQUFJZ0MsS0FBSyxDQUFDLENBQUNDO1FBQzVDWCxJQUFJWSxNQUFNLENBQUNiO1FBQ1gsTUFBTVk7SUFDVixLQUFLSjtBQUNUO0FBQ0EsTUFBTU0sbUJBQW1CQyxPQUFPO0FBQ2hDLFNBQVNsQyxlQUFlK0IsR0FBRztJQUN2QixPQUFPcEMsT0FBT0MsY0FBYyxDQUFDbUMsS0FBS0Usa0JBQWtCLENBQUM7QUFDekQ7QUFDQSxTQUFTaEMsYUFBYThCLEdBQUc7SUFDckIsT0FBT0EsT0FBT0Usb0JBQW9CRjtBQUN0QztBQUNBLFNBQVNJLFlBQVlDLElBQUk7SUFDckIsSUFBSTtRQUNBQSxPQUFPQyxTQUFTQyxhQUFhLENBQUM7UUFDOUIsT0FDQSx1QkFBdUI7UUFDdkIsQ0FBQyxDQUFDQyxPQUFPQyxvQkFBb0IsSUFBSSxDQUFDLENBQUNILFNBQVNJLFlBQVksSUFBSUwsS0FBS00sT0FBTyxDQUFDQyxRQUFRLENBQUM7SUFDdEYsRUFBRSxPQUFPQyxHQUFHO1FBQ1IsT0FBTztJQUNYO0FBQ0o7QUFDQSxNQUFNQyxjQUFjVjtBQUNwQixNQUFNVyxzQkFBc0I7SUFDeEIsT0FBTyxDQUFDLEdBQUc5QixjQUFjK0IsaUNBQWlDO0FBQzlEO0FBQ0EsU0FBU0MsZUFBZUMsSUFBSSxFQUFFQyxFQUFFLEVBQUVkLElBQUk7SUFDbEMsT0FBTyxJQUFJWixRQUFRLENBQUNDLFNBQVMwQjtRQUN6QixNQUFNQyxXQUFXLHlDQUF5Q0gsT0FBTywyQ0FBMkNBLE9BQU8sNkJBQTZCQSxPQUFPO1FBQ3ZKLElBQUlaLFNBQVNnQixhQUFhLENBQUNELFdBQVc7WUFDbEMsT0FBTzNCO1FBQ1g7UUFDQVcsT0FBT0MsU0FBU0MsYUFBYSxDQUFDO1FBQzlCLHdEQUF3RDtRQUN4RCxJQUFJWSxJQUFJZCxLQUFLYyxFQUFFLEdBQUdBO1FBQ2xCZCxLQUFLa0IsR0FBRyxHQUFHO1FBQ1hsQixLQUFLbUIsV0FBVyxHQUFHQyxTQUErQjtRQUNsRHBCLEtBQUt1QixNQUFNLEdBQUdsQztRQUNkVyxLQUFLd0IsT0FBTyxHQUFHLElBQUlULE9BQU9uRCxlQUFlLElBQUk2RCxNQUFNLHlCQUF5Qlo7UUFDNUUsZ0NBQWdDO1FBQ2hDYixLQUFLYSxJQUFJLEdBQUdBO1FBQ1paLFNBQVN5QixJQUFJLENBQUNDLFdBQVcsQ0FBQzNCO0lBQzlCO0FBQ0o7QUFDQSxTQUFTNEIsYUFBYUMsR0FBRyxFQUFFQyxNQUFNO0lBQzdCLE9BQU8sSUFBSTFDLFFBQVEsQ0FBQ0MsU0FBUzBCO1FBQ3pCZSxTQUFTN0IsU0FBU0MsYUFBYSxDQUFDO1FBQ2hDLHdEQUF3RDtRQUN4RCxtRUFBbUU7UUFDbkUsaUNBQWlDO1FBQ2pDNEIsT0FBT1AsTUFBTSxHQUFHbEM7UUFDaEJ5QyxPQUFPTixPQUFPLEdBQUcsSUFBSVQsT0FBT25ELGVBQWUsSUFBSTZELE1BQU0sNEJBQTRCSTtRQUNqRiwyRUFBMkU7UUFDM0UsOEJBQThCO1FBQzlCQyxPQUFPWCxXQUFXLEdBQUdDLFNBQStCO1FBQ3BELHVFQUF1RTtRQUN2RSw2Q0FBNkM7UUFDN0NVLE9BQU9ELEdBQUcsR0FBR0E7UUFDYjVCLFNBQVM4QixJQUFJLENBQUNKLFdBQVcsQ0FBQ0c7SUFDOUI7QUFDSjtBQUNBLDRFQUE0RTtBQUM1RSxxRUFBcUU7QUFDckUsSUFBSUU7QUFDSix1RUFBdUU7QUFDdkUsU0FBU0MsMEJBQTBCQyxDQUFDLEVBQUVDLEVBQUUsRUFBRXhDLEdBQUc7SUFDekMsT0FBTyxJQUFJUCxRQUFRLENBQUNDLFNBQVMwQjtRQUN6QixJQUFJcUIsWUFBWTtRQUNoQkYsRUFBRXpDLElBQUksQ0FBQyxDQUFDNEM7WUFDSiwrQkFBK0I7WUFDL0JELFlBQVk7WUFDWi9DLFFBQVFnRDtRQUNaLEdBQUczQyxLQUFLLENBQUNxQjtRQUNULHNFQUFzRTtRQUN0RSxzQkFBc0I7UUFDdEIsSUFBSUssSUFBc0MsRUFBRTtZQUN2Q1ksQ0FBQUEsbUJBQW1CNUMsUUFBUUMsT0FBTyxFQUFDLEVBQUdJLElBQUksQ0FBQztnQkFDdkMsSUFBR2QscUJBQXFCMkQsbUJBQW1CLEVBQUUsSUFBSUMsV0FBVzt3QkFDckQsSUFBSSxDQUFDSCxXQUFXOzRCQUNackIsT0FBT3BCO3dCQUNYO29CQUNKLEdBQUd3QztZQUNYO1FBQ0o7UUFDQSxJQUFJZixLQUFzQyxFQUFFLEVBTTNDO0lBQ0w7QUFDSjtBQUNBLFNBQVN0RDtJQUNMLElBQUkwRSxLQUFLQyxnQkFBZ0IsRUFBRTtRQUN2QixPQUFPckQsUUFBUUMsT0FBTyxDQUFDbUQsS0FBS0MsZ0JBQWdCO0lBQ2hEO0lBQ0EsTUFBTUMsa0JBQWtCLElBQUl0RCxRQUFRLENBQUNDO1FBQ2pDLGlEQUFpRDtRQUNqRCxNQUFNc0QsS0FBS0gsS0FBS0ksbUJBQW1CO1FBQ25DSixLQUFLSSxtQkFBbUIsR0FBRztZQUN2QnZELFFBQVFtRCxLQUFLQyxnQkFBZ0I7WUFDN0JFLE1BQU1BO1FBQ1Y7SUFDSjtJQUNBLE9BQU9WLDBCQUEwQlMsaUJBQWlCN0QsbUJBQW1CakIsZUFBZSxJQUFJNkQsTUFBTTtBQUNsRztBQUNBLFNBQVNvQixpQkFBaUJDLFdBQVcsRUFBRUMsS0FBSztJQUN4QyxJQUFJM0IsSUFBc0MsRUFBRTtRQUN4QyxNQUFNNEIsWUFBWUYsY0FBYywrQkFBK0JHLFVBQVUsQ0FBQyxHQUFHekUsdUJBQXVCMEUsT0FBTyxFQUFFSCxPQUFPLFVBQVVyQztRQUM5SCxPQUFPdEIsUUFBUUMsT0FBTyxDQUFDO1lBQ25COEQsU0FBUztnQkFDSixJQUFHekUsY0FBYzBFLDhCQUE4QixFQUFFSjthQUNyRDtZQUNELHVEQUF1RDtZQUN2REssS0FBSyxFQUFFO1FBQ1g7SUFDSjtJQUNBLE9BQU92Rix5QkFBeUIyQixJQUFJLENBQUMsQ0FBQzZEO1FBQ2xDLElBQUksQ0FBRVAsQ0FBQUEsU0FBU08sUUFBTyxHQUFJO1lBQ3RCLE1BQU0xRixlQUFlLElBQUk2RCxNQUFNLDZCQUE2QnNCO1FBQ2hFO1FBQ0EsTUFBTVEsV0FBV0QsUUFBUSxDQUFDUCxNQUFNLENBQUMvRCxHQUFHLENBQUMsQ0FBQ0UsUUFBUTRELGNBQWMsWUFBWUcsVUFBVS9EO1FBQ2xGLE9BQU87WUFDSGlFLFNBQVNJLFNBQVNDLE1BQU0sQ0FBQyxDQUFDQyxJQUFJQSxFQUFFQyxRQUFRLENBQUMsUUFBUTFFLEdBQUcsQ0FBQyxDQUFDeUUsSUFBSSxDQUFDLEdBQUcvRSxjQUFjMEUsOEJBQThCLEVBQUVLLEtBQUsvQztZQUNqSDJDLEtBQUtFLFNBQVNDLE1BQU0sQ0FBQyxDQUFDQyxJQUFJQSxFQUFFQyxRQUFRLENBQUMsU0FBUzFFLEdBQUcsQ0FBQyxDQUFDeUUsSUFBSUEsSUFBSS9DO1FBQy9EO0lBQ0o7QUFDSjtBQUNBLFNBQVMzQyxrQkFBa0IrRSxXQUFXO0lBQ2xDLE1BQU1hLGNBQWMsSUFBSUM7SUFDeEIsTUFBTUMsZ0JBQWdCLElBQUlEO0lBQzFCLE1BQU1FLGNBQWMsSUFBSUY7SUFDeEIsTUFBTUcsU0FBUyxJQUFJSDtJQUNuQixTQUFTSSxtQkFBbUJuQyxHQUFHO1FBQzNCLDJEQUEyRDtRQUMzRCxrRUFBa0U7UUFDbEUsY0FBYztRQUNkLElBQUlULEtBQXNDLEVBQUUsRUFXM0MsTUFBTTtZQUNILE9BQU9RLGFBQWFDO1FBQ3hCO0lBQ0o7SUFDQSxTQUFTcUMsZ0JBQWdCckQsSUFBSTtRQUN6QixJQUFJdEIsT0FBT3VFLFlBQVl6RixHQUFHLENBQUN3QztRQUMzQixJQUFJdEIsTUFBTTtZQUNOLE9BQU9BO1FBQ1g7UUFDQXVFLFlBQVl0RSxHQUFHLENBQUNxQixNQUFNdEIsT0FBTzRFLE1BQU10RCxNQUFNcEIsSUFBSSxDQUFDLENBQUMyRTtZQUMzQyxJQUFJLENBQUNBLElBQUlDLEVBQUUsRUFBRTtnQkFDVCxNQUFNLElBQUk1QyxNQUFNLGdDQUFnQ1o7WUFDcEQ7WUFDQSxPQUFPdUQsSUFBSUUsSUFBSSxHQUFHN0UsSUFBSSxDQUFDLENBQUM2RSxPQUFRO29CQUN4QnpELE1BQU1BO29CQUNOMEQsU0FBU0Q7Z0JBQ2I7UUFDUixHQUFHNUUsS0FBSyxDQUFDLENBQUNDO1lBQ04sTUFBTS9CLGVBQWUrQjtRQUN6QjtRQUNBLE9BQU9KO0lBQ1g7SUFDQSxPQUFPO1FBQ0hpRixnQkFBZ0J6QixLQUFLO1lBQ2pCLE9BQU9qRSxXQUFXaUUsT0FBT1k7UUFDN0I7UUFDQWMsY0FBYzFCLEtBQUssRUFBRTJCLE9BQU87WUFDdkJBLENBQUFBLFVBQVV0RixRQUFRQyxPQUFPLEdBQUdJLElBQUksQ0FBQyxJQUFJaUYsV0FBV2pGLElBQUksQ0FBQyxDQUFDa0YsV0FBWTtvQkFDM0RDLFdBQVdELFlBQVlBLFNBQVN6QixPQUFPLElBQUl5QjtvQkFDM0NsSCxTQUFTa0g7Z0JBQ2IsSUFBSSxDQUFDaEYsTUFBTztvQkFDUmtGLE9BQU9sRjtnQkFDWCxNQUFNUCxRQUFRQyxPQUFPLENBQUN5RixVQUFTLEVBQUdyRixJQUFJLENBQUMsQ0FBQ3NGO2dCQUN4QyxNQUFNQyxNQUFNckIsWUFBWXRGLEdBQUcsQ0FBQzBFO2dCQUM1QixJQUFJaUMsT0FBTyxhQUFhQSxLQUFLO29CQUN6QixJQUFJRCxPQUFPO3dCQUNQcEIsWUFBWW5FLEdBQUcsQ0FBQ3VELE9BQU9nQzt3QkFDdkJDLElBQUkzRixPQUFPLENBQUMwRjtvQkFDaEI7Z0JBQ0osT0FBTztvQkFDSCxJQUFJQSxPQUFPO3dCQUNQcEIsWUFBWW5FLEdBQUcsQ0FBQ3VELE9BQU9nQztvQkFDM0IsT0FBTzt3QkFDSHBCLFlBQVkvRCxNQUFNLENBQUNtRDtvQkFDdkI7b0JBQ0EsZ0RBQWdEO29CQUNoRCxrREFBa0Q7b0JBQ2xELG1CQUFtQjtvQkFDbkJnQixPQUFPbkUsTUFBTSxDQUFDbUQ7Z0JBQ2xCO1lBQ0o7UUFDSjtRQUNBa0MsV0FBV2xDLEtBQUssRUFBRW1DLFFBQVE7WUFDdEIsT0FBT3BHLFdBQVdpRSxPQUFPZ0IsUUFBUTtnQkFDN0IsSUFBSW9CO2dCQUNKLElBQUkvRCxJQUFzQyxFQUFFO29CQUN4Q1ksa0JBQWtCLElBQUk1QyxRQUFRLENBQUNDO3dCQUMzQjhGLHlCQUF5QjlGO29CQUM3QjtnQkFDSjtnQkFDQSxPQUFPNEMsMEJBQTBCWSxpQkFBaUJDLGFBQWFDLE9BQU90RCxJQUFJLENBQUMsQ0FBQzJGO29CQUN4RSxJQUFJLEVBQUVqQyxPQUFPLEVBQUVFLEdBQUcsRUFBRSxHQUFHK0I7b0JBQ3ZCLE9BQU9oRyxRQUFRbEIsR0FBRyxDQUFDO3dCQUNmeUYsWUFBWTBCLEdBQUcsQ0FBQ3RDLFNBQVMsRUFBRSxHQUFHM0QsUUFBUWxCLEdBQUcsQ0FBQ2lGLFFBQVFuRSxHQUFHLENBQUNnRjt3QkFDdEQ1RSxRQUFRbEIsR0FBRyxDQUFDbUYsSUFBSXJFLEdBQUcsQ0FBQ2tGO3FCQUN2QjtnQkFDTCxHQUFHekUsSUFBSSxDQUFDLENBQUMyRTtvQkFDTCxPQUFPLElBQUksQ0FBQ0ksY0FBYyxDQUFDekIsT0FBT3RELElBQUksQ0FBQyxDQUFDNkYsYUFBYzs0QkFDOUNBOzRCQUNBQyxRQUFRbkIsR0FBRyxDQUFDLEVBQUU7d0JBQ2xCO2dCQUNSLElBQUl2RixtQkFBbUJqQixlQUFlLElBQUk2RCxNQUFNLHFDQUFxQ3NCLFNBQVN0RCxJQUFJLENBQUMsQ0FBQzJGO29CQUNoRyxJQUFJLEVBQUVFLFVBQVUsRUFBRUMsTUFBTSxFQUFFLEdBQUdIO29CQUM3QixNQUFNaEIsTUFBTTdHLE9BQU9pSSxNQUFNLENBQUM7d0JBQ3RCRCxRQUFRQTtvQkFDWixHQUFHRDtvQkFDSCxPQUFPLFdBQVdBLGFBQWFBLGFBQWFsQjtnQkFDaEQsR0FBRzFFLEtBQUssQ0FBQyxDQUFDQztvQkFDTixJQUFJdUYsVUFBVTt3QkFDVixnREFBZ0Q7d0JBQ2hELE1BQU12RjtvQkFDVjtvQkFDQSxPQUFPO3dCQUNIa0YsT0FBT2xGO29CQUNYO2dCQUNKLEdBQUc4RixPQUFPLENBQUMsSUFBSU4sMEJBQTBCLE9BQU8sS0FBSyxJQUFJQTtZQUM3RDtRQUNKO1FBQ0FELFVBQVVuQyxLQUFLO1lBQ1gsc0hBQXNIO1lBQ3RILHNCQUFzQjtZQUN0QixJQUFJMkM7WUFDSixJQUFJQSxLQUFLQyxVQUFVQyxVQUFVLEVBQUU7Z0JBQzNCLHlEQUF5RDtnQkFDekQsSUFBSUYsR0FBR0csUUFBUSxJQUFJLEtBQUtDLElBQUksQ0FBQ0osR0FBR0ssYUFBYSxHQUFHLE9BQU8zRyxRQUFRQyxPQUFPO1lBQzFFO1lBQ0EsT0FBT3dELGlCQUFpQkMsYUFBYUMsT0FBT3RELElBQUksQ0FBQyxDQUFDdUcsU0FBUzVHLFFBQVFsQixHQUFHLENBQUN1QyxjQUFjdUYsT0FBTzdDLE9BQU8sQ0FBQ25FLEdBQUcsQ0FBQyxDQUFDOEMsU0FBU2xCLGVBQWVrQixPQUFPbUMsUUFBUSxJQUFJLGFBQWEsRUFBRSxHQUFHeEUsSUFBSSxDQUFDO2dCQUN0SyxJQUFHZCxxQkFBcUIyRCxtQkFBbUIsRUFBRSxJQUFJLElBQUksQ0FBQzJDLFNBQVMsQ0FBQ2xDLE9BQU8sTUFBTXJELEtBQUssQ0FBQyxLQUFLO1lBQzdGLEdBQUdBLEtBQUssQ0FDUixLQUFLO1FBQ1Q7SUFDSjtBQUNKO0FBRUEsSUFBSSxDQUFDLE9BQU9qQyxRQUFReUYsT0FBTyxLQUFLLGNBQWUsT0FBT3pGLFFBQVF5RixPQUFPLEtBQUssWUFBWXpGLFFBQVF5RixPQUFPLEtBQUssSUFBSSxLQUFNLE9BQU96RixRQUFReUYsT0FBTyxDQUFDK0MsVUFBVSxLQUFLLGFBQWE7SUFDcksxSSxPQUFPQyxjQUFjLENBQUNDLFFBQVF5RixPQUFPLEVBQUUsY0FBYztRQUFFeEYsT0FBTztJQUFLO0lBQ25FSCxPQUFPaUksTUFBTSxDQUFDL0gsUUFBUXlGLE9BQU8sRUFBRXpGO0lBQy9CRSxPQUFPRixPQUFPLEdBQUdBLFFBQVF5RixPQUFPO0FBQ2xDLEVBRUEsd0NBQXdDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L3JvdXRlLWxvYWRlci5qcz9lYTM0Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuMCAmJiAobW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgbWFya0Fzc2V0RXJyb3I6IG51bGwsXG4gICAgaXNBc3NldEVycm9yOiBudWxsLFxuICAgIGdldENsaWVudEJ1aWxkTWFuaWZlc3Q6IG51bGwsXG4gICAgY3JlYXRlUm91dGVMb2FkZXI6IG51bGxcbn0pO1xuZnVuY3Rpb24gX2V4cG9ydCh0YXJnZXQsIGFsbCkge1xuICAgIGZvcih2YXIgbmFtZSBpbiBhbGwpT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgbmFtZSwge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBnZXQ6IGFsbFtuYW1lXVxuICAgIH0pO1xufVxuX2V4cG9ydChleHBvcnRzLCB7XG4gICAgbWFya0Fzc2V0RXJyb3I6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gbWFya0Fzc2V0RXJyb3I7XG4gICAgfSxcbiAgICBpc0Fzc2V0RXJyb3I6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gaXNBc3NldEVycm9yO1xuICAgIH0sXG4gICAgZ2V0Q2xpZW50QnVpbGRNYW5pZmVzdDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBnZXRDbGllbnRCdWlsZE1hbmlmZXN0O1xuICAgIH0sXG4gICAgY3JlYXRlUm91dGVMb2FkZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gY3JlYXRlUm91dGVMb2FkZXI7XG4gICAgfVxufSk7XG5jb25zdCBfaW50ZXJvcF9yZXF1aXJlX2RlZmF1bHQgPSByZXF1aXJlKFwiQHN3Yy9oZWxwZXJzL18vX2ludGVyb3BfcmVxdWlyZV9kZWZhdWx0XCIpO1xuY29uc3QgX2dldGFzc2V0cGF0aGZyb21yb3V0ZSA9IC8qI19fUFVSRV9fKi8gX2ludGVyb3BfcmVxdWlyZV9kZWZhdWx0Ll8ocmVxdWlyZShcIi4uL3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL2dldC1hc3NldC1wYXRoLWZyb20tcm91dGVcIikpO1xuY29uc3QgX3RydXN0ZWR0eXBlcyA9IHJlcXVpcmUoXCIuL3RydXN0ZWQtdHlwZXNcIik7XG5jb25zdCBfcmVxdWVzdGlkbGVjYWxsYmFjayA9IHJlcXVpcmUoXCIuL3JlcXVlc3QtaWRsZS1jYWxsYmFja1wiKTtcbmNvbnN0IF9kZXBsb3ltZW50aWQgPSByZXF1aXJlKFwiLi4vYnVpbGQvZGVwbG95bWVudC1pZFwiKTtcbi8vIDMuOHMgd2FzIGFyYml0cmFyaWx5IGNob3NlbiBhcyBpdCdzIHdoYXQgaHR0cHM6Ly93ZWIuZGV2L2ludGVyYWN0aXZlXG4vLyBjb25zaWRlcnMgYXMgXCJHb29kXCIgdGltZS10by1pbnRlcmFjdGl2ZS4gV2UgbXVzdCBhc3N1bWUgc29tZXRoaW5nIHdlbnRcbi8vIHdyb25nIGJleW9uZCB0aGlzIHBvaW50LCBhbmQgdGhlbiBmYWxsLWJhY2sgdG8gYSBmdWxsIHBhZ2UgdHJhbnNpdGlvbiB0b1xuLy8gc2hvdyB0aGUgdXNlciBzb21ldGhpbmcgb2YgdmFsdWUuXG5jb25zdCBNU19NQVhfSURMRV9ERUxBWSA9IDM4MDA7XG5mdW5jdGlvbiB3aXRoRnV0dXJlKGtleSwgbWFwLCBnZW5lcmF0b3IpIHtcbiAgICBsZXQgZW50cnkgPSBtYXAuZ2V0KGtleSk7XG4gICAgaWYgKGVudHJ5KSB7XG4gICAgICAgIGlmIChcImZ1dHVyZVwiIGluIGVudHJ5KSB7XG4gICAgICAgICAgICByZXR1cm4gZW50cnkuZnV0dXJlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoZW50cnkpO1xuICAgIH1cbiAgICBsZXQgcmVzb2x2ZXI7XG4gICAgY29uc3QgcHJvbSA9IG5ldyBQcm9taXNlKChyZXNvbHZlKT0+e1xuICAgICAgICByZXNvbHZlciA9IHJlc29sdmU7XG4gICAgfSk7XG4gICAgbWFwLnNldChrZXksIGVudHJ5ID0ge1xuICAgICAgICByZXNvbHZlOiByZXNvbHZlcixcbiAgICAgICAgZnV0dXJlOiBwcm9tXG4gICAgfSk7XG4gICAgcmV0dXJuIGdlbmVyYXRvciA/IGdlbmVyYXRvcigpLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlcXVlbmNlc1xuICAgIC50aGVuKCh2YWx1ZSk9PihyZXNvbHZlcih2YWx1ZSksIHZhbHVlKSkuY2F0Y2goKGVycik9PntcbiAgICAgICAgbWFwLmRlbGV0ZShrZXkpO1xuICAgICAgICB0aHJvdyBlcnI7XG4gICAgfSkgOiBwcm9tO1xufVxuY29uc3QgQVNTRVRfTE9BRF9FUlJPUiA9IFN5bWJvbChcIkFTU0VUX0xPQURfRVJST1JcIik7XG5mdW5jdGlvbiBtYXJrQXNzZXRFcnJvcihlcnIpIHtcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGVyciwgQVNTRVRfTE9BRF9FUlJPUiwge30pO1xufVxuZnVuY3Rpb24gaXNBc3NldEVycm9yKGVycikge1xuICAgIHJldHVybiBlcnIgJiYgQVNTRVRfTE9BRF9FUlJPUiBpbiBlcnI7XG59XG5mdW5jdGlvbiBoYXNQcmVmZXRjaChsaW5rKSB7XG4gICAgdHJ5IHtcbiAgICAgICAgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJsaW5rXCIpO1xuICAgICAgICByZXR1cm4oLy8gZGV0ZWN0IElFMTEgc2luY2UgaXQgc3VwcG9ydHMgcHJlZmV0Y2ggYnV0IGlzbid0IGRldGVjdGVkXG4gICAgICAgIC8vIHdpdGggcmVsTGlzdC5zdXBwb3J0XG4gICAgICAgICEhd2luZG93Lk1TSW5wdXRNZXRob2RDb250ZXh0ICYmICEhZG9jdW1lbnQuZG9jdW1lbnRNb2RlIHx8IGxpbmsucmVsTGlzdC5zdXBwb3J0cyhcInByZWZldGNoXCIpKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG59XG5jb25zdCBjYW5QcmVmZXRjaCA9IGhhc1ByZWZldGNoKCk7XG5jb25zdCBnZXRBc3NldFF1ZXJ5U3RyaW5nID0gKCk9PntcbiAgICByZXR1cm4gKDAsIF9kZXBsb3ltZW50aWQuZ2V0RGVwbG95bWVudElkUXVlcnlPckVtcHR5U3RyaW5nKSgpO1xufTtcbmZ1bmN0aW9uIHByZWZldGNoVmlhRG9tKGhyZWYsIGFzLCBsaW5rKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpPT57XG4gICAgICAgIGNvbnN0IHNlbGVjdG9yID0gJ1xcbiAgICAgIGxpbmtbcmVsPVwicHJlZmV0Y2hcIl1baHJlZl49XCInICsgaHJlZiArICdcIl0sXFxuICAgICAgbGlua1tyZWw9XCJwcmVsb2FkXCJdW2hyZWZePVwiJyArIGhyZWYgKyAnXCJdLFxcbiAgICAgIHNjcmlwdFtzcmNePVwiJyArIGhyZWYgKyAnXCJdJztcbiAgICAgICAgaWYgKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzb2x2ZSgpO1xuICAgICAgICB9XG4gICAgICAgIGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwibGlua1wiKTtcbiAgICAgICAgLy8gVGhlIG9yZGVyIG9mIHByb3BlcnR5IGFzc2lnbm1lbnQgaGVyZSBpcyBpbnRlbnRpb25hbDpcbiAgICAgICAgaWYgKGFzKSBsaW5rLmFzID0gYXM7XG4gICAgICAgIGxpbmsucmVsID0gXCJwcmVmZXRjaFwiO1xuICAgICAgICBsaW5rLmNyb3NzT3JpZ2luID0gcHJvY2Vzcy5lbnYuX19ORVhUX0NST1NTX09SSUdJTjtcbiAgICAgICAgbGluay5vbmxvYWQgPSByZXNvbHZlO1xuICAgICAgICBsaW5rLm9uZXJyb3IgPSAoKT0+cmVqZWN0KG1hcmtBc3NldEVycm9yKG5ldyBFcnJvcihcIkZhaWxlZCB0byBwcmVmZXRjaDogXCIgKyBocmVmKSkpO1xuICAgICAgICAvLyBgaHJlZmAgc2hvdWxkIGFsd2F5cyBiZSBsYXN0OlxuICAgICAgICBsaW5rLmhyZWYgPSBocmVmO1xuICAgICAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKGxpbmspO1xuICAgIH0pO1xufVxuZnVuY3Rpb24gYXBwZW5kU2NyaXB0KHNyYywgc2NyaXB0KSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpPT57XG4gICAgICAgIHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzY3JpcHRcIik7XG4gICAgICAgIC8vIFRoZSBvcmRlciBvZiBwcm9wZXJ0eSBhc3NpZ25tZW50IGhlcmUgaXMgaW50ZW50aW9uYWwuXG4gICAgICAgIC8vIDEuIFNldHVwIHN1Y2Nlc3MvZmFpbHVyZSBob29rcyBpbiBjYXNlIHRoZSBicm93c2VyIHN5bmNocm9ub3VzbHlcbiAgICAgICAgLy8gICAgZXhlY3V0ZXMgd2hlbiBgc3JjYCBpcyBzZXQuXG4gICAgICAgIHNjcmlwdC5vbmxvYWQgPSByZXNvbHZlO1xuICAgICAgICBzY3JpcHQub25lcnJvciA9ICgpPT5yZWplY3QobWFya0Fzc2V0RXJyb3IobmV3IEVycm9yKFwiRmFpbGVkIHRvIGxvYWQgc2NyaXB0OiBcIiArIHNyYykpKTtcbiAgICAgICAgLy8gMi4gQ29uZmlndXJlIHRoZSBjcm9zcy1vcmlnaW4gYXR0cmlidXRlIGJlZm9yZSBzZXR0aW5nIGBzcmNgIGluIGNhc2UgdGhlXG4gICAgICAgIC8vICAgIGJyb3dzZXIgYmVnaW5zIHRvIGZldGNoLlxuICAgICAgICBzY3JpcHQuY3Jvc3NPcmlnaW4gPSBwcm9jZXNzLmVudi5fX05FWFRfQ1JPU1NfT1JJR0lOO1xuICAgICAgICAvLyAzLiBGaW5hbGx5LCBzZXQgdGhlIHNvdXJjZSBhbmQgaW5qZWN0IGludG8gdGhlIERPTSBpbiBjYXNlIHRoZSBjaGlsZFxuICAgICAgICAvLyAgICBtdXN0IGJlIGFwcGVuZGVkIGZvciBmZXRjaGluZyB0byBzdGFydC5cbiAgICAgICAgc2NyaXB0LnNyYyA9IHNyYztcbiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChzY3JpcHQpO1xuICAgIH0pO1xufVxuLy8gV2Ugd2FpdCBmb3IgcGFnZXMgdG8gYmUgYnVpbHQgaW4gZGV2IGJlZm9yZSB3ZSBzdGFydCB0aGUgcm91dGUgdHJhbnNpdGlvblxuLy8gdGltZW91dCB0byBwcmV2ZW50IGFuIHVuLW5lY2Vzc2FyeSBoYXJkIG5hdmlnYXRpb24gaW4gZGV2ZWxvcG1lbnQuXG5sZXQgZGV2QnVpbGRQcm9taXNlO1xuLy8gUmVzb2x2ZSBhIHByb21pc2UgdGhhdCB0aW1lcyBvdXQgYWZ0ZXIgZ2l2ZW4gYW1vdW50IG9mIG1pbGxpc2Vjb25kcy5cbmZ1bmN0aW9uIHJlc29sdmVQcm9taXNlV2l0aFRpbWVvdXQocCwgbXMsIGVycikge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KT0+e1xuICAgICAgICBsZXQgY2FuY2VsbGVkID0gZmFsc2U7XG4gICAgICAgIHAudGhlbigocik9PntcbiAgICAgICAgICAgIC8vIFJlc29sdmVkLCBjYW5jZWwgdGhlIHRpbWVvdXRcbiAgICAgICAgICAgIGNhbmNlbGxlZCA9IHRydWU7XG4gICAgICAgICAgICByZXNvbHZlKHIpO1xuICAgICAgICB9KS5jYXRjaChyZWplY3QpO1xuICAgICAgICAvLyBXZSB3cmFwIHRoZXNlIGNoZWNrcyBzZXBhcmF0ZWx5IGZvciBiZXR0ZXIgZGVhZC1jb2RlIGVsaW1pbmF0aW9uIGluXG4gICAgICAgIC8vIHByb2R1Y3Rpb24gYnVuZGxlcy5cbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcImRldmVsb3BtZW50XCIpIHtcbiAgICAgICAgICAgIChkZXZCdWlsZFByb21pc2UgfHwgUHJvbWlzZS5yZXNvbHZlKCkpLnRoZW4oKCk9PntcbiAgICAgICAgICAgICAgICAoMCwgX3JlcXVlc3RpZGxlY2FsbGJhY2sucmVxdWVzdElkbGVDYWxsYmFjaykoKCk9PnNldFRpbWVvdXQoKCk9PntcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghY2FuY2VsbGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sIG1zKSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwiZGV2ZWxvcG1lbnRcIikge1xuICAgICAgICAgICAgKDAsIF9yZXF1ZXN0aWRsZWNhbGxiYWNrLnJlcXVlc3RJZGxlQ2FsbGJhY2spKCgpPT5zZXRUaW1lb3V0KCgpPT57XG4gICAgICAgICAgICAgICAgICAgIGlmICghY2FuY2VsbGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIG1zKSk7XG4gICAgICAgIH1cbiAgICB9KTtcbn1cbmZ1bmN0aW9uIGdldENsaWVudEJ1aWxkTWFuaWZlc3QoKSB7XG4gICAgaWYgKHNlbGYuX19CVUlMRF9NQU5JRkVTVCkge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHNlbGYuX19CVUlMRF9NQU5JRkVTVCk7XG4gICAgfVxuICAgIGNvbnN0IG9uQnVpbGRNYW5pZmVzdCA9IG5ldyBQcm9taXNlKChyZXNvbHZlKT0+e1xuICAgICAgICAvLyBNYW5kYXRvcnkgYmVjYXVzZSB0aGlzIGlzIG5vdCBjb25jdXJyZW50IHNhZmU6XG4gICAgICAgIGNvbnN0IGNiID0gc2VsZi5fX0JVSUxEX01BTklGRVNUX0NCO1xuICAgICAgICBzZWxmLl9fQlVJTERfTUFOSUZFU1RfQ0IgPSAoKT0+e1xuICAgICAgICAgICAgcmVzb2x2ZShzZWxmLl9fQlVJTERfTUFOSUZFU1QpO1xuICAgICAgICAgICAgY2IgJiYgY2IoKTtcbiAgICAgICAgfTtcbiAgICB9KTtcbiAgICByZXR1cm4gcmVzb2x2ZVByb21pc2VXaXRoVGltZW91dChvbkJ1aWxkTWFuaWZlc3QsIE1TX01BWF9JRExFX0RFTEFZLCBtYXJrQXNzZXRFcnJvcihuZXcgRXJyb3IoXCJGYWlsZWQgdG8gbG9hZCBjbGllbnQgYnVpbGQgbWFuaWZlc3RcIikpKTtcbn1cbmZ1bmN0aW9uIGdldEZpbGVzRm9yUm91dGUoYXNzZXRQcmVmaXgsIHJvdXRlKSB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcImRldmVsb3BtZW50XCIpIHtcbiAgICAgICAgY29uc3Qgc2NyaXB0VXJsID0gYXNzZXRQcmVmaXggKyBcIi9fbmV4dC9zdGF0aWMvY2h1bmtzL3BhZ2VzXCIgKyBlbmNvZGVVUkkoKDAsIF9nZXRhc3NldHBhdGhmcm9tcm91dGUuZGVmYXVsdCkocm91dGUsIFwiLmpzXCIpKSArIGdldEFzc2V0UXVlcnlTdHJpbmcoKTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7XG4gICAgICAgICAgICBzY3JpcHRzOiBbXG4gICAgICAgICAgICAgICAgKDAsIF90cnVzdGVkdHlwZXMuX191bnNhZmVDcmVhdGVUcnVzdGVkU2NyaXB0VVJMKShzY3JpcHRVcmwpXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgLy8gU3R5bGVzIGFyZSBoYW5kbGVkIGJ5IGBzdHlsZS1sb2FkZXJgIGluIGRldmVsb3BtZW50OlxuICAgICAgICAgICAgY3NzOiBbXVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGdldENsaWVudEJ1aWxkTWFuaWZlc3QoKS50aGVuKChtYW5pZmVzdCk9PntcbiAgICAgICAgaWYgKCEocm91dGUgaW4gbWFuaWZlc3QpKSB7XG4gICAgICAgICAgICB0aHJvdyBtYXJrQXNzZXRFcnJvcihuZXcgRXJyb3IoXCJGYWlsZWQgdG8gbG9va3VwIHJvdXRlOiBcIiArIHJvdXRlKSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYWxsRmlsZXMgPSBtYW5pZmVzdFtyb3V0ZV0ubWFwKChlbnRyeSk9PmFzc2V0UHJlZml4ICsgXCIvX25leHQvXCIgKyBlbmNvZGVVUkkoZW50cnkpKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHNjcmlwdHM6IGFsbEZpbGVzLmZpbHRlcigodik9PnYuZW5kc1dpdGgoXCIuanNcIikpLm1hcCgodik9PigwLCBfdHJ1c3RlZHR5cGVzLl9fdW5zYWZlQ3JlYXRlVHJ1c3RlZFNjcmlwdFVSTCkodikgKyBnZXRBc3NldFF1ZXJ5U3RyaW5nKCkpLFxuICAgICAgICAgICAgY3NzOiBhbGxGaWxlcy5maWx0ZXIoKHYpPT52LmVuZHNXaXRoKFwiLmNzc1wiKSkubWFwKCh2KT0+diArIGdldEFzc2V0UXVlcnlTdHJpbmcoKSlcbiAgICAgICAgfTtcbiAgICB9KTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZVJvdXRlTG9hZGVyKGFzc2V0UHJlZml4KSB7XG4gICAgY29uc3QgZW50cnlwb2ludHMgPSBuZXcgTWFwKCk7XG4gICAgY29uc3QgbG9hZGVkU2NyaXB0cyA9IG5ldyBNYXAoKTtcbiAgICBjb25zdCBzdHlsZVNoZWV0cyA9IG5ldyBNYXAoKTtcbiAgICBjb25zdCByb3V0ZXMgPSBuZXcgTWFwKCk7XG4gICAgZnVuY3Rpb24gbWF5YmVFeGVjdXRlU2NyaXB0KHNyYykge1xuICAgICAgICAvLyBXaXRoIEhNUiB3ZSBtaWdodCBuZWVkIHRvIFwicmVsb2FkXCIgc2NyaXB0cyB3aGVuIHRoZXkgYXJlXG4gICAgICAgIC8vIGRpc3Bvc2VkIGFuZCByZWFkZGVkLiBFeGVjdXRpbmcgc2NyaXB0cyB0d2ljZSBoYXMgbm8gZnVuY3Rpb25hbFxuICAgICAgICAvLyBkaWZmZXJlbmNlc1xuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwiZGV2ZWxvcG1lbnRcIikge1xuICAgICAgICAgICAgbGV0IHByb20gPSBsb2FkZWRTY3JpcHRzLmdldChzcmMudG9TdHJpbmcoKSk7XG4gICAgICAgICAgICBpZiAocHJvbSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBwcm9tO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gU2tpcCBleGVjdXRpbmcgc2NyaXB0IGlmIGl0J3MgYWxyZWFkeSBpbiB0aGUgRE9NOlxuICAgICAgICAgICAgaWYgKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ3NjcmlwdFtzcmNePVwiJyArIHNyYyArICdcIl0nKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxvYWRlZFNjcmlwdHMuc2V0KHNyYy50b1N0cmluZygpLCBwcm9tID0gYXBwZW5kU2NyaXB0KHNyYykpO1xuICAgICAgICAgICAgcmV0dXJuIHByb207XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gYXBwZW5kU2NyaXB0KHNyYyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gZmV0Y2hTdHlsZVNoZWV0KGhyZWYpIHtcbiAgICAgICAgbGV0IHByb20gPSBzdHlsZVNoZWV0cy5nZXQoaHJlZik7XG4gICAgICAgIGlmIChwcm9tKSB7XG4gICAgICAgICAgICByZXR1cm4gcHJvbTtcbiAgICAgICAgfVxuICAgICAgICBzdHlsZVNoZWV0cy5zZXQoaHJlZiwgcHJvbSA9IGZldGNoKGhyZWYpLnRoZW4oKHJlcyk9PntcbiAgICAgICAgICAgIGlmICghcmVzLm9rKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRmFpbGVkIHRvIGxvYWQgc3R5bGVzaGVldDogXCIgKyBocmVmKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZXMudGV4dCgpLnRoZW4oKHRleHQpPT4oe1xuICAgICAgICAgICAgICAgICAgICBocmVmOiBocmVmLFxuICAgICAgICAgICAgICAgICAgICBjb250ZW50OiB0ZXh0XG4gICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICB9KS5jYXRjaCgoZXJyKT0+e1xuICAgICAgICAgICAgdGhyb3cgbWFya0Fzc2V0RXJyb3IoZXJyKTtcbiAgICAgICAgfSkpO1xuICAgICAgICByZXR1cm4gcHJvbTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgd2hlbkVudHJ5cG9pbnQgKHJvdXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gd2l0aEZ1dHVyZShyb3V0ZSwgZW50cnlwb2ludHMpO1xuICAgICAgICB9LFxuICAgICAgICBvbkVudHJ5cG9pbnQgKHJvdXRlLCBleGVjdXRlKSB7XG4gICAgICAgICAgICAoZXhlY3V0ZSA/IFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PmV4ZWN1dGUoKSkudGhlbigoZXhwb3J0czEpPT4oe1xuICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQ6IGV4cG9ydHMxICYmIGV4cG9ydHMxLmRlZmF1bHQgfHwgZXhwb3J0czEsXG4gICAgICAgICAgICAgICAgICAgIGV4cG9ydHM6IGV4cG9ydHMxXG4gICAgICAgICAgICAgICAgfSksIChlcnIpPT4oe1xuICAgICAgICAgICAgICAgICAgICBlcnJvcjogZXJyXG4gICAgICAgICAgICAgICAgfSkpIDogUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCkpLnRoZW4oKGlucHV0KT0+e1xuICAgICAgICAgICAgICAgIGNvbnN0IG9sZCA9IGVudHJ5cG9pbnRzLmdldChyb3V0ZSk7XG4gICAgICAgICAgICAgICAgaWYgKG9sZCAmJiBcInJlc29sdmVcIiBpbiBvbGQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbnRyeXBvaW50cy5zZXQocm91dGUsIGlucHV0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9sZC5yZXNvbHZlKGlucHV0KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZW50cnlwb2ludHMuc2V0KHJvdXRlLCBpbnB1dCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbnRyeXBvaW50cy5kZWxldGUocm91dGUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gdGhpcyBlbnRyeXBvaW50IGhhcyBiZWVuIHJlc29sdmVkIGJlZm9yZVxuICAgICAgICAgICAgICAgICAgICAvLyB0aGUgcm91dGUgaXMgb3V0ZGF0ZWQgYW5kIHdlIHdhbnQgdG8gaW52YWxpZGF0ZVxuICAgICAgICAgICAgICAgICAgICAvLyB0aGlzIGNhY2hlIGVudHJ5XG4gICAgICAgICAgICAgICAgICAgIHJvdXRlcy5kZWxldGUocm91dGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBsb2FkUm91dGUgKHJvdXRlLCBwcmVmZXRjaCkge1xuICAgICAgICAgICAgcmV0dXJuIHdpdGhGdXR1cmUocm91dGUsIHJvdXRlcywgKCk9PntcbiAgICAgICAgICAgICAgICBsZXQgZGV2QnVpbGRQcm9taXNlUmVzb2x2ZTtcbiAgICAgICAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwiZGV2ZWxvcG1lbnRcIikge1xuICAgICAgICAgICAgICAgICAgICBkZXZCdWlsZFByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSk9PntcbiAgICAgICAgICAgICAgICAgICAgICAgIGRldkJ1aWxkUHJvbWlzZVJlc29sdmUgPSByZXNvbHZlO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmVQcm9taXNlV2l0aFRpbWVvdXQoZ2V0RmlsZXNGb3JSb3V0ZShhc3NldFByZWZpeCwgcm91dGUpLnRoZW4oKHBhcmFtKT0+e1xuICAgICAgICAgICAgICAgICAgICBsZXQgeyBzY3JpcHRzLCBjc3MgfSA9IHBhcmFtO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoW1xuICAgICAgICAgICAgICAgICAgICAgICAgZW50cnlwb2ludHMuaGFzKHJvdXRlKSA/IFtdIDogUHJvbWlzZS5hbGwoc2NyaXB0cy5tYXAobWF5YmVFeGVjdXRlU2NyaXB0KSksXG4gICAgICAgICAgICAgICAgICAgICAgICBQcm9taXNlLmFsbChjc3MubWFwKGZldGNoU3R5bGVTaGVldCkpXG4gICAgICAgICAgICAgICAgICAgIF0pO1xuICAgICAgICAgICAgICAgIH0pLnRoZW4oKHJlcyk9PntcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMud2hlbkVudHJ5cG9pbnQocm91dGUpLnRoZW4oKGVudHJ5cG9pbnQpPT4oe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5cG9pbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGVzOiByZXNbMV1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICB9KSwgTVNfTUFYX0lETEVfREVMQVksIG1hcmtBc3NldEVycm9yKG5ldyBFcnJvcihcIlJvdXRlIGRpZCBub3QgY29tcGxldGUgbG9hZGluZzogXCIgKyByb3V0ZSkpKS50aGVuKChwYXJhbSk9PntcbiAgICAgICAgICAgICAgICAgICAgbGV0IHsgZW50cnlwb2ludCwgc3R5bGVzIH0gPSBwYXJhbTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzID0gT2JqZWN0LmFzc2lnbih7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZXM6IHN0eWxlc1xuICAgICAgICAgICAgICAgICAgICB9LCBlbnRyeXBvaW50KTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFwiZXJyb3JcIiBpbiBlbnRyeXBvaW50ID8gZW50cnlwb2ludCA6IHJlcztcbiAgICAgICAgICAgICAgICB9KS5jYXRjaCgoZXJyKT0+e1xuICAgICAgICAgICAgICAgICAgICBpZiAocHJlZmV0Y2gpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdlIGRvbid0IHdhbnQgdG8gY2FjaGUgZXJyb3JzIGR1cmluZyBwcmVmZXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvcjogZXJyXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSkuZmluYWxseSgoKT0+ZGV2QnVpbGRQcm9taXNlUmVzb2x2ZSA9PSBudWxsID8gdm9pZCAwIDogZGV2QnVpbGRQcm9taXNlUmVzb2x2ZSgpKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBwcmVmZXRjaCAocm91dGUpIHtcbiAgICAgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9Hb29nbGVDaHJvbWVMYWJzL3F1aWNrbGluay9ibG9iLzQ1M2E2NjFmYTFmYTk0MGUyZDJlMDQ0NDUyMzk4ZTM4YzY3YTk4ZmIvc3JjL2luZGV4Lm1qcyNMMTE1LUwxMThcbiAgICAgICAgICAgIC8vIExpY2Vuc2U6IEFwYWNoZSAyLjBcbiAgICAgICAgICAgIGxldCBjbjtcbiAgICAgICAgICAgIGlmIChjbiA9IG5hdmlnYXRvci5jb25uZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgLy8gRG9uJ3QgcHJlZmV0Y2ggaWYgdXNpbmcgMkcgb3IgaWYgU2F2ZS1EYXRhIGlzIGVuYWJsZWQuXG4gICAgICAgICAgICAgICAgaWYgKGNuLnNhdmVEYXRhIHx8IC8yZy8udGVzdChjbi5lZmZlY3RpdmVUeXBlKSkgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGdldEZpbGVzRm9yUm91dGUoYXNzZXRQcmVmaXgsIHJvdXRlKS50aGVuKChvdXRwdXQpPT5Qcm9taXNlLmFsbChjYW5QcmVmZXRjaCA/IG91dHB1dC5zY3JpcHRzLm1hcCgoc2NyaXB0KT0+cHJlZmV0Y2hWaWFEb20oc2NyaXB0LnRvU3RyaW5nKCksIFwic2NyaXB0XCIpKSA6IFtdKSkudGhlbigoKT0+e1xuICAgICAgICAgICAgICAgICgwLCBfcmVxdWVzdGlkbGVjYWxsYmFjay5yZXF1ZXN0SWRsZUNhbGxiYWNrKSgoKT0+dGhpcy5sb2FkUm91dGUocm91dGUsIHRydWUpLmNhdGNoKCgpPT57fSkpO1xuICAgICAgICAgICAgfSkuY2F0Y2goLy8gc3dhbGxvdyBwcmVmZXRjaCBlcnJvcnNcbiAgICAgICAgICAgICgpPT57fSk7XG4gICAgICAgIH1cbiAgICB9O1xufVxuXG5pZiAoKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdmdW5jdGlvbicgfHwgKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdvYmplY3QnICYmIGV4cG9ydHMuZGVmYXVsdCAhPT0gbnVsbCkpICYmIHR5cGVvZiBleHBvcnRzLmRlZmF1bHQuX19lc01vZHVsZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMuZGVmYXVsdCwgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuICBPYmplY3QuYXNzaWduKGV4cG9ydHMuZGVmYXVsdCwgZXhwb3J0cyk7XG4gIG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cy5kZWZhdWx0O1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1yb3V0ZS1sb2FkZXIuanMubWFwIl0sIm5hbWVzIjpbIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZXhwb3J0cyIsInZhbHVlIiwibW9kdWxlIiwibWFya0Fzc2V0RXJyb3IiLCJpc0Fzc2V0RXJyb3IiLCJnZXRDbGllbnRCdWlsZE1hbmlmZXN0IiwiY3JlYXRlUm91dGVMb2FkZXIiLCJfZXhwb3J0IiwidGFyZ2V0IiwiYWxsIiwibmFtZSIsImVudW1lcmFibGUiLCJnZXQiLCJfaW50ZXJvcF9yZXF1aXJlX2RlZmF1bHQiLCJyZXF1aXJlIiwiX2dldGFzc2V0cGF0aGZyb21yb3V0ZSIsIl8iLCJfdHJ1c3RlZHR5cGVzIiwiX3JlcXVlc3RpZGxlY2FsbGJhY2siLCJfZGVwbG95bWVudGlkIiwiTVNfTUFYX0lETEVfREVMQVkiLCJ3aXRoRnV0dXJlIiwia2V5IiwibWFwIiwiZ2VuZXJhdG9yIiwiZW50cnkiLCJmdXR1cmUiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlc29sdmVyIiwicHJvbSIsInNldCIsInRoZW4iLCJjYXRjaCIsImVyciIsImRlbGV0ZSIsIkFTU0VUX0xPQURfRVJST1IiLCJTeW1ib2wiLCJoYXNQcmVmZXRjaCIsImxpbmsiLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJ3aW5kb3ciLCJNU0lucHV0TWV0aG9kQ29udGV4dCIsImRvY3VtZW50TW9kZSIsInJlbExpc3QiLCJzdXBwb3J0cyIsImUiLCJjYW5QcmVmZXRjaCIsImdldEFzc2V0UXVlcnlTdHJpbmciLCJnZXREZXBsb3ltZW50SWRRdWVyeU9yRW1wdHlTdHJpbmciLCJwcmVmZXRjaFZpYURvbSIsImhyZWYiLCJhcyIsInJlamVjdCIsInNlbGVjdG9yIiwicXVlcnlTZWxlY3RvciIsInJlbCIsImNyb3NzT3JpZ2luIiwicHJvY2VzcyIsImVudiIsIl9fTkVYVF9DUk9TU19PUklHSU4iLCJvbmxvYWQiLCJvbmVycm9yIiwiRXJyb3IiLCJoZWFkIiwiYXBwZW5kQ2hpbGQiLCJhcHBlbmRTY3JpcHQiLCJzcmMiLCJzY3JpcHQiLCJib2R5IiwiZGV2QnVpbGRQcm9taXNlIiwicmVzb2x2ZVByb21pc2VXaXRoVGltZW91dCIsInAiLCJtcyIsImNhbmNlbGxlZCIsInIiLCJyZXF1ZXN0SWRsZUNhbGxiYWNrIiwic2V0VGltZW91dCIsInNlbGYiLCJfX0JVSUxEX01BTklGRVNUIiwib25CdWlsZE1hbmlmZXN0IiwiY2IiLCJfX0JVSUxEX01BTklGRVNUX0NCIiwiZ2V0RmlsZXNGb3JSb3V0ZSIsImFzc2V0UHJlZml4Iiwicm91dGUiLCJzY3JpcHRVcmwiLCJlbmNvZGVVUkkiLCJkZWZhdWx0Iiwic2NyaXB0cyIsIl9fdW5zYWZlQ3JlYXRlVHJ1c3RlZFNjcmlwdFVSTCIsImNzcyIsIm1hbmlmZXN0IiwiYWxsRmlsZXMiLCJmaWx0ZXIiLCJ2IiwiZW5kc1dpdGgiLCJlbnRyeXBvaW50cyIsIk1hcCIsImxvYWRlZFNjcmlwdHMiLCJzdHlsZVNoZWV0cyIsInJvdXRlcyIsIm1heWJlRXhlY3V0ZVNjcmlwdCIsInRvU3RyaW5nIiwiZmV0Y2hTdHlsZVNoZWV0IiwiZmV0Y2giLCJyZXMiLCJvayIsInRleHQiLCJjb250ZW50Iiwid2hlbkVudHJ5cG9pbnQiLCJvbkVudHJ5cG9pbnQiLCJleGVjdXRlIiwiZXhwb3J0czEiLCJjb21wb25lbnQiLCJlcnJvciIsInVuZGVmaW5lZCIsImlucHV0Iiwib2xkIiwibG9hZFJvdXRlIiwicHJlZmV0Y2giLCJkZXZCdWlsZFByb21pc2VSZXNvbHZlIiwicGFyYW0iLCJoYXMiLCJlbnRyeXBvaW50Iiwic3R5bGVzIiwiYXNzaWduIiwiZmluYWxseSIsImNuIiwibmF2aWdhdG9yIiwiY29ubmVjdGlvbiIsInNhdmVEYXRhIiwidGVzdCIsImVmZmVjdGl2ZVR5cGUiLCJvdXRwdXQiLCJfX2VzTW9kdWxlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/route-loader.js\n")); /***/ }), /***/ "./node_modules/next/dist/client/router.js": /*!*************************************************!*\ !*** ./node_modules/next/dist/client/router.js ***! \*************************************************/ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval(__webpack_require__.ts("/* global window */ \nvar _s = $RefreshSig$();\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n Router: function() {\n return _router.default;\n },\n // Export the singletonRouter and this is the public API.\n default: function() {\n return _default;\n },\n withRouter: function() {\n return _withrouter.default;\n },\n useRouter: function() {\n return useRouter;\n },\n createRouter: function() {\n return createRouter;\n },\n makePublicRouterInstance: function() {\n return makePublicRouterInstance;\n }\n});\nconst _interop_require_default = __webpack_require__(/*! @swc/helpers/_/_interop_require_default */ \"./node_modules/@swc/helpers/esm/_interop_require_default.js\");\nconst _react = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! react */ \"./node_modules/react/index.js\"));\nconst _router = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! ../shared/lib/router/router */ \"./node_modules/next/dist/shared/lib/router/router.js\"));\nconst _routercontextsharedruntime = __webpack_require__(/*! ../shared/lib/router-context.shared-runtime */ \"./node_modules/next/dist/shared/lib/router-context.shared-runtime.js\");\nconst _iserror = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! ../lib/is-error */ \"./node_modules/next/dist/lib/is-error.js\"));\nconst _withrouter = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! ./with-router */ \"./node_modules/next/dist/client/with-router.js\"));\nconst singletonRouter = {\n router: null,\n readyCallbacks: [],\n ready (callback) {\n if (this.router) return callback();\n if (true) {\n this.readyCallbacks.push(callback);\n }\n }\n};\n// Create public properties and methods of the router in the singletonRouter\nconst urlPropertyFields = [\n \"pathname\",\n \"route\",\n \"query\",\n \"asPath\",\n \"components\",\n \"isFallback\",\n \"basePath\",\n \"locale\",\n \"locales\",\n \"defaultLocale\",\n \"isReady\",\n \"isPreview\",\n \"isLocaleDomain\",\n \"domainLocales\"\n];\nconst routerEvents = [\n \"routeChangeStart\",\n \"beforeHistoryChange\",\n \"routeChangeComplete\",\n \"routeChangeError\",\n \"hashChangeStart\",\n \"hashChangeComplete\"\n];\nconst coreMethodFields = [\n \"push\",\n \"replace\",\n \"reload\",\n \"back\",\n \"prefetch\",\n \"beforePopState\"\n];\n// Events is a static property on the router, the router doesn't have to be initialized to use it\nObject.defineProperty(singletonRouter, \"events\", {\n get () {\n return _router.default.events;\n }\n});\nfunction getRouter() {\n if (!singletonRouter.router) {\n const message = \"No router instance found.\\n\" + 'You should only use \"next/router\" on the client side of your app.\\n';\n throw new Error(message);\n }\n return singletonRouter.router;\n}\nurlPropertyFields.forEach((field)=>{\n // Here we need to use Object.defineProperty because we need to return\n // the property assigned to the actual router\n // The value might get changed as we change routes and this is the\n // proper way to access it\n Object.defineProperty(singletonRouter, field, {\n get () {\n const router = getRouter();\n return router[field];\n }\n });\n});\ncoreMethodFields.forEach((field)=>{\n singletonRouter[field] = function() {\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n args[_key] = arguments[_key];\n }\n const router = getRouter();\n return router[field](...args);\n };\n});\nrouterEvents.forEach((event)=>{\n singletonRouter.ready(()=>{\n _router.default.events.on(event, function() {\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n args[_key] = arguments[_key];\n }\n const eventField = \"on\" + event.charAt(0).toUpperCase() + event.substring(1);\n const _singletonRouter = singletonRouter;\n if (_singletonRouter[eventField]) {\n try {\n _singletonRouter[eventField](...args);\n } catch (err) {\n console.error(\"Error when running the Router event: \" + eventField);\n console.error((0, _iserror.default)(err) ? err.message + \"\\n\" + err.stack : err + \"\");\n }\n }\n });\n });\n});\nconst _default = singletonRouter;\nfunction useRouter() {\n _s();\n const router = _react.default.useContext(_routercontextsharedruntime.RouterContext);\n if (!router) {\n throw new Error(\"NextRouter was not mounted. https://nextjs.org/docs/messages/next-router-not-mounted\");\n }\n return router;\n}\n_s(useRouter, \"rbAhEc3dLGnVlsHWaSDsgP4MZS0=\");\nfunction createRouter() {\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n args[_key] = arguments[_key];\n }\n singletonRouter.router = new _router.default(...args);\n singletonRouter.readyCallbacks.forEach((cb)=>cb());\n singletonRouter.readyCallbacks = [];\n return singletonRouter.router;\n}\nfunction makePublicRouterInstance(router) {\n const scopedRouter = router;\n const instance = {};\n for (const property of urlPropertyFields){\n if (typeof scopedRouter[property] === \"object\") {\n instance[property] = Object.assign(Array.isArray(scopedRouter[property]) ? [] : {}, scopedRouter[property]) // makes sure query is not stateful\n ;\n continue;\n }\n instance[property] = scopedRouter[property];\n }\n // Events is a static property on the router, the router doesn't have to be initialized to use it\n instance.events = _router.default.events;\n coreMethodFields.forEach((field)=>{\n instance[field] = function() {\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n args[_key] = arguments[_key];\n }\n return scopedRouter[field](...args);\n };\n });\n return instance;\n}\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=router.js.map\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9yb3V0ZXIuanMiLCJtYXBwaW5ncyI6IkFBQUEsaUJBQWlCLEdBQWdCOztBQUNqQ0EsOENBQTZDO0lBQ3pDRyxPQUFPO0FBQ1gsQ0FBQyxFQUFDO0FBQ0YsS0FBTUMsQ0FBQUEsQ0FPTjtBQUNBLFNBQVNPLFFBQVFDLE1BQU0sRUFBRUMsR0FBRztJQUN4QixJQUFJLElBQUlDLFFBQVFELElBQUliLE9BQU9DLGNBQWMsQ0FBQ1csUUFBUUUsTUFBTTtRQUNwREMsWUFBWTtRQUNaQyxLQUFLSCxHQUFHLENBQUNDLEtBQUs7SUFDbEI7QUFDSjtBQUNBSCxRQUFRVCxTQUFTO0lBQ2JHLFFBQVE7UUFDSixPQUFPWSxRQUFRWCxPQUFPO0lBQzFCO0lBQ0EseURBQXlEO0lBQ3pEQSxTQUFTO1FBQ0wsT0FBT1k7SUFDWDtJQUNBWCxZQUFZO1FBQ1IsT0FBT1ksWUFBWWIsT0FBTztJQUM5QjtJQUNBRSxXQUFXO1FBQ1AsT0FBT0E7SUFDWDtJQUNBQyxjQUFjO1FBQ1YsT0FBT0E7SUFDWDtJQUNBQywwQkFBMEI7UUFDdEIsT0FBT0E7SUFDWDtBQUNKO0FBQ0EsTUFBTVUsMkJBQTJCQyxtQkFBT0EsQ0FBQyw0R0FBeUM7QUFDbEYsTUFBTUMsU0FBUyxXQUFXLEdBQUdGLHlCQUF5QkcsQ0FBQyxDQUFDRixtQkFBT0EsQ0FBQyw0Q0FBTztBQUN2RSxNQUFNSixVQUFVLFdBQVcsR0FBR0cseUJBQXlCRyxDQUFDLENBQUNGLG1CQUFPQSxDQUFDLHlGQUE2QjtBQUM5RixNQUFNRyw4QkFBOEJILG1CQUFPQSxDQUFDLHlIQUE2QztBQUN6RixNQUFNSSxXQUFXLFdBQVcsR0FBR0wseUJBQXlCRyxDQUFDLENBQUNGLG1CQUFPQSxDQUFDLGlFQUFpQjtBQUNuRixNQUFNRixjQUFjLFdBQVcsR0FBR0MseUJBQXlCRyxDQUFDLENBQUNGLG1CQUFPQSxDQUFDLHFFQUFlO0FBQ3BGLE1BQU1LLGtCQUFrQjtJQUNwQkMsUUFBUTtJQUNSQyxn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LEtBQUssR0FBR0osU0FBUyxDQUFDSSxLQUFLO1lBQ2hDO1lBQ0EsT0FBT2UsWUFBWSxDQUFDckIsTUFBTSxJQUFJSTtRQUNsQztJQUNKO0lBQ0EsT0FBT2tCO0FBQ1g7QUFFQSxJQUFJLENBQUMsT0FBTzVELFFBQVFJLE9BQU8sS0FBSyxjQUFlLE9BQU9KLFFBQVFJLE9BQU8sS0FBSyxZQUFZSixRQUFRSSxPQUFPLEtBQUssSUFBSSxLQUFNLE9BQU9KLFFBQVFJLE9BQU8sQ0FBQzRELFVBQVUsS0FBSyxhQUFhO0lBQ3JLbEUsT0FBT0MsY0FBYyxDQUFDQyxRQUFRSSxPQUFPLEVBQUUsY0FBYztRQUFFSCxPQUFPO0lBQUs7SUFDbkVILE9BQU9nRSxNQUFNLENBQUM5RCxRQUFRSSxPQUFPLEVBQUVKO0lBQy9CRSxPQUFPRixPQUFPLEdBQUdBLFFBQVFJLE9BQU87QUFDbEMsRUFFQSxrQ0FBa0MiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvcm91dGVyLmpzPzMxZmMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZ2xvYmFsIHdpbmRvdyAqLyBcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbjAgJiYgKG1vZHVsZS5leHBvcnRzID0ge1xuICAgIFJvdXRlcjogbnVsbCxcbiAgICBkZWZhdWx0OiBudWxsLFxuICAgIHdpdGhSb3V0ZXI6IG51bGwsXG4gICAgdXNlUm91dGVyOiBudWxsLFxuICAgIGNyZWF0ZVJvdXRlcjogbnVsbCxcbiAgICBtYWtlUHVibGljUm91dGVySW5zdGFuY2U6IG51bGxcbn0pO1xuZnVuY3Rpb24gX2V4cG9ydCh0YXJnZXQsIGFsbCkge1xuICAgIGZvcih2YXIgbmFtZSBpbiBhbGwpT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgbmFtZSwge1xuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBnZXQ6IGFsbFtuYW1lXVxuICAgIH0pO1xufVxuX2V4cG9ydChleHBvcnRzLCB7XG4gICAgUm91dGVyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIF9yb3V0ZXIuZGVmYXVsdDtcbiAgICB9LFxuICAgIC8vIEV4cG9ydCB0aGUgc2luZ2xldG9uUm91dGVyIGFuZCB0aGlzIGlzIHRoZSBwdWJsaWMgQVBJLlxuICAgIGRlZmF1bHQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gX2RlZmF1bHQ7XG4gICAgfSxcbiAgICB3aXRoUm91dGVyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIF93aXRocm91dGVyLmRlZmF1bHQ7XG4gICAgfSxcbiAgICB1c2VSb3V0ZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdXNlUm91dGVyO1xuICAgIH0sXG4gICAgY3JlYXRlUm91dGVyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZVJvdXRlcjtcbiAgICB9LFxuICAgIG1ha2VQdWJsaWNSb3V0ZXJJbnN0YW5jZTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBtYWtlUHVibGljUm91dGVySW5zdGFuY2U7XG4gICAgfVxufSk7XG5jb25zdCBfaW50ZXJvcF9yZXF1aXJlX2RlZmF1bHQgPSByZXF1aXJlKFwiQHN3Yy9oZWxwZXJzL18vX2ludGVyb3BfcmVxdWlyZV9kZWZhdWx0XCIpO1xuY29uc3QgX3JlYWN0ID0gLyojX19QVVJFX18qLyBfaW50ZXJvcF9yZXF1aXJlX2RlZmF1bHQuXyhyZXF1aXJlKFwicmVhY3RcIikpO1xuY29uc3QgX3JvdXRlciA9IC8qI19fUFVSRV9fKi8gX2ludGVyb3BfcmVxdWlyZV9kZWZhdWx0Ll8ocmVxdWlyZShcIi4uL3NoYXJlZC9saWIvcm91dGVyL3JvdXRlclwiKSk7XG5jb25zdCBfcm91dGVyY29udGV4dHNoYXJlZHJ1bnRpbWUgPSByZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi9yb3V0ZXItY29udGV4dC5zaGFyZWQtcnVudGltZVwiKTtcbmNvbnN0IF9pc2Vycm9yID0gLyojX19QVVJFX18qLyBfaW50ZXJvcF9yZXF1aXJlX2RlZmF1bHQuXyhyZXF1aXJlKFwiLi4vbGliL2lzLWVycm9yXCIpKTtcbmNvbnN0IF93aXRocm91dGVyID0gLyojX19QVVJFX18qLyBfaW50ZXJvcF9yZXF1aXJlX2RlZmF1bHQuXyhyZXF1aXJlKFwiLi93aXRoLXJvdXRlclwiKSk7XG5jb25zdCBzaW5nbGV0b25Sb3V0ZXIgPSB7XG4gICAgcm91dGVyOiBudWxsLFxuICAgIHJlYWR5Q2FsbGJhY2tzOiBbXSxcbiAgICByZWFkeSAoY2FsbGJhY2spIHtcbiAgICAgICAgaWYgKHRoaXMucm91dGVyKSByZXR1cm4gY2FsbGJhY2soKTtcbiAgICAgICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICAgIHRoaXMucmVhZHlDYWxsYmFja3MucHVzaChjYWxsYmFjayk7XG4gICAgICAgIH1cbiAgICB9XG59O1xuLy8gQ3JlYXRlIHB1YmxpYyBwcm9wZXJ0aWVzIGFuZCBtZXRob2RzIG9mIHRoZSByb3V0ZXIgaW4gdGhlIHNpbmdsZXRvblJvdXRlclxuY29uc3QgdXJsUHJvcGVydHlGaWVsZHMgPSBbXG4gICAgXCJwYXRobmFtZVwiLFxuICAgIFwicm91dGVcIixcbiAgICBcInF1ZXJ5XCIsXG4gICAgXCJhc1BhdGhcIixcbiAgICBcImNvbXBvbmVudHNcIixcbiAgICBcImlzRmFsbGJhY2tcIixcbiAgICBcImJhc2VQYXRoXCIsXG4gICAgXCJsb2NhbGVcIixcbiAgICBcImxvY2FsZXNcIixcbiAgICBcImRlZmF1bHRMb2NhbGVcIixcbiAgICBcImlzUmVhZHlcIixcbiAgICBcImlzUHJldmlld1wiLFxuICAgIFwiaXNMb2NhbGVEb21haW5cIixcbiAgICBcImRvbWFpbkxvY2FsZXNcIlxuXTtcbmNvbnN0IHJvdXRlckV2ZW50cyA9IFtcbiAgICBcInJvdXRlQ2hhbmdlU3RhcnRcIixcbiAgICBcImJlZm9yZUhpc3RvcnlDaGFuZ2VcIixcbiAgICBcInJvdXRlQ2hhbmdlQ29tcGxldGVcIixcbiAgICBcInJvdXRlQ2hhbmdlRXJyb3JcIixcbiAgICBcImhhc2hDaGFuZ2VTdGFydFwiLFxuICAgIFwiaGFzaENoYW5nZUNvbXBsZXRlXCJcbl07XG5jb25zdCBjb3JlTWV0aG9kRmllbGRzID0gW1xuICAgIFwicHVzaFwiLFxuICAgIFwicmVwbGFjZVwiLFxuICAgIFwicmVsb2FkXCIsXG4gICAgXCJiYWNrXCIsXG4gICAgXCJwcmVmZXRjaFwiLFxuICAgIFwiYmVmb3JlUG9wU3RhdGVcIlxuXTtcbi8vIEV2ZW50cyBpcyBhIHN0YXRpYyBwcm9wZXJ0eSBvbiB0aGUgcm91dGVyLCB0aGUgcm91dGVyIGRvZXNuJ3QgaGF2ZSB0byBiZSBpbml0aWFsaXplZCB0byB1c2UgaXRcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShzaW5nbGV0b25Sb3V0ZXIsIFwiZXZlbnRzXCIsIHtcbiAgICBnZXQgKCkge1xuICAgICAgICByZXR1cm4gX3JvdXRlci5kZWZhdWx0LmV2ZW50cztcbiAgICB9XG59KTtcbmZ1bmN0aW9uIGdldFJvdXRlcigpIHtcbiAgICBpZiAoIXNpbmdsZXRvblJvdXRlci5yb3V0ZXIpIHtcbiAgICAgICAgY29uc3QgbWVzc2FnZSA9IFwiTm8gcm91dGVyIGluc3RhbmNlIGZvdW5kLlxcblwiICsgJ1lvdSBzaG91bGQgb25seSB1c2UgXCJuZXh0L3JvdXRlclwiIG9uIHRoZSBjbGllbnQgc2lkZSBvZiB5b3VyIGFwcC5cXG4nO1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XG4gICAgfVxuICAgIHJldHVybiBzaW5nbGV0b25Sb3V0ZXIucm91dGVyO1xufVxudXJsUHJvcGVydHlGaWVsZHMuZm9yRWFjaCgoZmllbGQpPT57XG4gICAgLy8gSGVyZSB3ZSBuZWVkIHRvIHVzZSBPYmplY3QuZGVmaW5lUHJvcGVydHkgYmVjYXVzZSB3ZSBuZWVkIHRvIHJldHVyblxuICAgIC8vIHRoZSBwcm9wZXJ0eSBhc3NpZ25lZCB0byB0aGUgYWN0dWFsIHJvdXRlclxuICAgIC8vIFRoZSB2YWx1ZSBtaWdodCBnZXQgY2hhbmdlZCBhcyB3ZSBjaGFuZ2Ugcm91dGVzIGFuZCB0aGlzIGlzIHRoZVxuICAgIC8vIHByb3BlciB3YXkgdG8gYWNjZXNzIGl0XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHNpbmdsZXRvblJvdXRlciwgZmllbGQsIHtcbiAgICAgICAgZ2V0ICgpIHtcbiAgICAgICAgICAgIGNvbnN0IHJvdXRlciA9IGdldFJvdXRlcigpO1xuICAgICAgICAgICAgcmV0dXJuIHJvdXRlcltmaWVsZF07XG4gICAgICAgIH1cbiAgICB9KTtcbn0pO1xuY29yZU1ldGhvZEZpZWxkcy5mb3JFYWNoKChmaWVsZCk9PntcbiAgICBzaW5nbGV0b25Sb3V0ZXJbZmllbGRdID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIGZvcih2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKXtcbiAgICAgICAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgcm91dGVyID0gZ2V0Um91dGVyKCk7XG4gICAgICAgIHJldHVybiByb3V0ZXJbZmllbGRdKC4uLmFyZ3MpO1xuICAgIH07XG59KTtcbnJvdXRlckV2ZW50cy5mb3JFYWNoKChldmVudCk9PntcbiAgICBzaW5nbGV0b25Sb3V0ZXIucmVhZHkoKCk9PntcbiAgICAgICAgX3JvdXRlci5kZWZhdWx0LmV2ZW50cy5vbihldmVudCwgZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICBmb3IodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKyl7XG4gICAgICAgICAgICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGV2ZW50RmllbGQgPSBcIm9uXCIgKyBldmVudC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIGV2ZW50LnN1YnN0cmluZygxKTtcbiAgICAgICAgICAgIGNvbnN0IF9zaW5nbGV0b25Sb3V0ZXIgPSBzaW5nbGV0b25Sb3V0ZXI7XG4gICAgICAgICAgICBpZiAoX3NpbmdsZXRvblJvdXRlcltldmVudEZpZWxkXSkge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIF9zaW5nbGV0b25Sb3V0ZXJbZXZlbnRGaWVsZF0oLi4uYXJncyk7XG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvciB3aGVuIHJ1bm5pbmcgdGhlIFJvdXRlciBldmVudDogXCIgKyBldmVudEZpZWxkKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcigoMCwgX2lzZXJyb3IuZGVmYXVsdCkoZXJyKSA/IGVyci5tZXNzYWdlICsgXCJcXG5cIiArIGVyci5zdGFjayA6IGVyciArIFwiXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSk7XG59KTtcbmNvbnN0IF9kZWZhdWx0ID0gc2luZ2xldG9uUm91dGVyO1xuZnVuY3Rpb24gdXNlUm91dGVyKCkge1xuICAgIGNvbnN0IHJvdXRlciA9IF9yZWFjdC5kZWZhdWx0LnVzZUNvbnRleHQoX3JvdXRlcmNvbnRleHRzaGFyZWRydW50aW1lLlJvdXRlckNvbnRleHQpO1xuICAgIGlmICghcm91dGVyKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk5leHRSb3V0ZXIgd2FzIG5vdCBtb3VudGVkLiBodHRwczovL25leHRqcy5vcmcvZG9jcy9tZXNzYWdlcy9uZXh0LXJvdXRlci1ub3QtbW91bnRlZFwiKTtcbiAgICB9XG4gICAgcmV0dXJuIHJvdXRlcjtcbn1cbmZ1bmN0aW9uIGNyZWF0ZVJvdXRlcigpIHtcbiAgICBmb3IodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKyl7XG4gICAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuICAgIHNpbmdsZXRvblJvdXRlci5yb3V0ZXIgPSBuZXcgX3JvdXRlci5kZWZhdWx0KC4uLmFyZ3MpO1xuICAgIHNpbmdsZXRvblJvdXRlci5yZWFkeUNhbGxiYWNrcy5mb3JFYWNoKChjYik9PmNiKCkpO1xuICAgIHNpbmdsZXRvblJvdXRlci5yZWFkeUNhbGxiYWNrcyA9IFtdO1xuICAgIHJldHVybiBzaW5nbGV0b25Sb3V0ZXIucm91dGVyO1xufVxuZnVuY3Rpb24gbWFrZVB1YmxpY1JvdXRlckluc3RhbmNlKHJvdXRlcikge1xuICAgIGNvbnN0IHNjb3BlZFJvdXRlciA9IHJvdXRlcjtcbiAgICBjb25zdCBpbnN0YW5jZSA9IHt9O1xuICAgIGZvciAoY29uc3QgcHJvcGVydHkgb2YgdXJsUHJvcGVydHlGaWVsZHMpe1xuICAgICAgICBpZiAodHlwZW9mIHNjb3BlZFJvdXRlcltwcm9wZXJ0eV0gPT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgICAgIGluc3RhbmNlW3Byb3BlcnR5XSA9IE9iamVjdC5hc3NpZ24oQXJyYXkuaXNBcnJheShzY29wZWRSb3V0ZXJbcHJvcGVydHldKSA/IFtdIDoge30sIHNjb3BlZFJvdXRlcltwcm9wZXJ0eV0pIC8vIG1ha2VzIHN1cmUgcXVlcnkgaXMgbm90IHN0YXRlZnVsXG4gICAgICAgICAgICA7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBpbnN0YW5jZVtwcm9wZXJ0eV0gPSBzY29wZWRSb3V0ZXJbcHJvcGVydHldO1xuICAgIH1cbiAgICAvLyBFdmVudHMgaXMgYSBzdGF0aWMgcHJvcGVydHkgb24gdGhlIHJvdXRlciwgdGhlIHJvdXRlciBkb2Vzbid0IGhhdmUgdG8gYmUgaW5pdGlhbGl6ZWQgdG8gdXNlIGl0XG4gICAgaW5zdGFuY2UuZXZlbnRzID0gX3JvdXRlci5kZWZhdWx0LmV2ZW50cztcbiAgICBjb3JlTWV0aG9kRmllbGRzLmZvckVhY2goKGZpZWxkKT0+e1xuICAgICAgICBpbnN0YW5jZVtmaWVsZF0gPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIGZvcih2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKXtcbiAgICAgICAgICAgICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHNjb3BlZFJvdXRlcltmaWVsZF0oLi4uYXJncyk7XG4gICAgICAgIH07XG4gICAgfSk7XG4gICAgcmV0dXJuIGluc3RhbmNlO1xufVxuXG5pZiAoKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdmdW5jdGlvbicgfHwgKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdvYmplY3QnICYmIGV4cG9ydHMuZGVmYXVsdCAhPT0gbnVsbCkpICYmIHR5cGVvZiBleHBvcnRzLmRlZmF1bHQuX19lc01vZHVsZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMuZGVmYXVsdCwgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuICBPYmplY3QuYXNzaWduKGV4cG9ydHMuZGVmYXVsdCwgZXhwb3J0cyk7XG4gIG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cy5kZWZhdWx0O1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1yb3V0ZXIuanMubWFwIl0sIm5hbWVzIjpbIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZXhwb3J0cyIsInZhbHVlIiwibW9kdWxlIiwiUm91dGVyIiwiZGVmYXVsdCIsIndpdGhSb3V0ZXIiLCJ1c2VSb3V0ZXIiLCJjcmVhdGVSb3V0ZXIiLCJtYWtlUHVibGljUm91dGVySW5zdGFuY2UiLCJfZXhwb3J0IiwidGFyZ2V0IiwiYWxsIiwibmFtZSIsImVudW1lcmFibGUiLCJnZXQiLCJfcm91dGVyIiwiX2RlZmF1bHQiLCJfd2l0aHJvdXRlciIsIl9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdCIsInJlcXVpcmUiLCJfcmVhY3QiLCJfIiwiX3JvdXRlcmNvbnRleHRzaGFyZWRydW50aW1lIiwiX2lzZXJyb3IiLCJzaW5nbGV0b25Sb3V0ZXIiLCJyb3V0ZXIiLCJyZWFkeUNhbGxiYWNrcyIsInJlYWR5IiwiY2FsbGJhY2siLCJwdXNoIiwidXJsUHJvcGVydHlGaWVsZHMiLCJyb3V0ZXJFdmVudHMiLCJjb3JlTWV0aG9kRmllbGRzIiwiZXZlbnRzIiwiZ2V0Um91dGVyIiwibWVzc2FnZSIsIkVycm9yIiwiZm9yRWFjaCIsImZpZWxkIiwiX2xlbiIsImFyZ3VtZW50cyIsImxlbmd0aCIsImFyZ3MiLCJBcnJheSIsIl9rZXkiLCJldmVudCIsIm9uIiwiZXZlbnRGaWVsZCIsImNoYXJBdCIsInRvVXBwZXJDYXNlIiwic3Vic3RyaW5nIiwiX3NpbmdsZXRvblJvdXRlciIsImVyciIsImNvbnNvbGUiLCJlcnJvciIsInN0YWNrIiwidXNlQ29udGV4dCIsIlJvdXRlckNvbnRleHQiLCJjYiIsInNjb3BlZFJvdXRlciIsImluc3RhbmNlIiwicHJvcGVydHkiLCJhc3NpZ24iLCJpc0FycmF5IiwiX19lc01vZHVsZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/router.js\n")); /***/ }), /***/ "./node_modules/next/dist/client/script.js": /*!*************************************************!*\ !*** ./node_modules/next/dist/client/script.js ***! \*************************************************/ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval(__webpack_require__.ts("/* __next_internal_client_entry_do_not_use__ cjs */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n handleClientScriptLoad: function() {\n return handleClientScriptLoad;\n },\n initScriptLoader: function() {\n return initScriptLoader;\n },\n default: function() {\n return _default;\n }\n});\nconst _interop_require_default = __webpack_require__(/*! @swc/helpers/_/_interop_require_default */ \"./node_modules/@swc/helpers/esm/_interop_require_default.js\");\nconst _interop_require_wildcard = __webpack_require__(/*! @swc/helpers/_/_interop_require_wildcard */ \"./node_modules/@swc/helpers/esm/_interop_require_wildcard.js\");\nconst _reactdom = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! react-dom */ \"./node_modules/react-dom/index.js\"));\nconst _react = /*#__PURE__*/ _interop_require_wildcard._(__webpack_require__(/*! react */ \"./node_modules/react/index.js\"));\nconst _headmanagercontextsharedruntime = __webpack_require__(/*! ../shared/lib/head-manager-context.shared-runtime */ \"./node_modules/next/dist/shared/lib/head-manager-context.shared-runtime.js\");\nconst _headmanager = __webpack_require__(/*! ./head-manager */ \"./node_modules/next/dist/client/head-manager.js\");\nconst _requestidlecallback = __webpack_require__(/*! ./request-idle-callback */ \"./node_modules/next/dist/client/request-idle-callback.js\");\nconst ScriptCache = new Map();\nconst LoadCache = new Set();\nconst ignoreProps = [\n \"onLoad\",\n \"onReady\",\n \"dangerouslySetInnerHTML\",\n \"children\",\n \"onError\",\n \"strategy\",\n \"stylesheets\"\n];\nconst insertStylesheets = (stylesheets)=>{\n // Case 1: Styles for afterInteractive/lazyOnload with appDir injected via handleClientScriptLoad\n //\n // Using ReactDOM.preinit to feature detect appDir and inject styles\n // Stylesheets might have already been loaded if initialized with Script component\n // Re-inject styles here to handle scripts loaded via handleClientScriptLoad\n // ReactDOM.preinit handles dedup and ensures the styles are loaded only once\n if (_reactdom.default.preinit) {\n stylesheets.forEach((stylesheet)=>{\n _reactdom.default.preinit(stylesheet, {\n as: \"style\"\n });\n });\n return;\n }\n // Case 2: Styles for afterInteractive/lazyOnload with pages injected via handleClientScriptLoad\n //\n // We use this function to load styles when appdir is not detected\n // TODO: Use React float APIs to load styles once available for pages dir\n if (true) {\n let head = document.head;\n stylesheets.forEach((stylesheet)=>{\n let link = document.createElement(\"link\");\n link.type = \"text/css\";\n link.rel = \"stylesheet\";\n link.href = stylesheet;\n head.appendChild(link);\n });\n }\n};\nconst loadScript = (props)=>{\n const { src, id, onLoad = ()=>{}, onReady = null, dangerouslySetInnerHTML, children = \"\", strategy = \"afterInteractive\", onError, stylesheets } = props;\n const cacheKey = id || src;\n // Script has already loaded\n if (cacheKey && LoadCache.has(cacheKey)) {\n return;\n }\n // Contents of this script are already loading/loaded\n if (ScriptCache.has(src)) {\n LoadCache.add(cacheKey);\n // It is possible that multiple `next/script` components all have same \"src\", but has different \"onLoad\"\n // This is to make sure the same remote script will only load once, but \"onLoad\" are executed in order\n ScriptCache.get(src).then(onLoad, onError);\n return;\n }\n /** Execute after the script first loaded */ const afterLoad = ()=>{\n // Run onReady for the first time after load event\n if (onReady) {\n onReady();\n }\n // add cacheKey to LoadCache when load successfully\n LoadCache.add(cacheKey);\n };\n const el = document.createElement(\"script\");\n const loadPromise = new Promise((resolve, reject)=>{\n el.addEventListener(\"load\", function(e) {\n resolve();\n if (onLoad) {\n onLoad.call(this, e);\n }\n afterLoad();\n });\n el.addEventListener(\"error\", function(e) {\n reject(e);\n });\n }).catch(function(e) {\n if (onError) {\n onError(e);\n }\n });\n if (dangerouslySetInnerHTML) {\n // Casting since lib.dom.d.ts doesn't have TrustedHTML yet.\n el.innerHTML = dangerouslySetInnerHTML.__html || \"\";\n afterLoad();\n } else if (children) {\n el.textContent = typeof children === \"string\" ? children : Array.isArray(children) ? children.join(\"\") : \"\";\n afterLoad();\n } else if (src) {\n el.src = src;\n // do not add cacheKey into LoadCache for remote script here\n // cacheKey will be added to LoadCache when it is actually loaded (see loadPromise above)\n ScriptCache.set(src, loadPromise);\n }\n for (const [k, value] of Object.entries(props)){\n if (value === undefined || ignoreProps.includes(k)) {\n continue;\n }\n const attr = _headmanager.DOMAttributeNames[k] || k.toLowerCase();\n el.setAttribute(attr, value);\n }\n if (strategy === \"worker\") {\n el.setAttribute(\"type\", \"text/partytown\");\n }\n el.setAttribute(\"data-nscript\", strategy);\n // Load styles associated with this script\n if (stylesheets) {\n insertStylesheets(stylesheets);\n }\n document.body.appendChild(el);\n};\nfunction handleClientScriptLoad(props) {\n const { strategy = \"afterInteractive\" } = props;\n if (strategy === \"lazyOnload\") {\n window.addEventListener(\"load\", ()=>{\n (0, _requestidlecallback.requestIdleCallback)(()=>loadScript(props));\n });\n } else {\n loadScript(props);\n }\n}\nfunction loadLazyScript(props) {\n if (document.readyState === \"complete\") {\n (0, _requestidlecallback.requestIdleCallback)(()=>loadScript(props));\n } else {\n window.addEventListener(\"load\", ()=>{\n (0, _requestidlecallback.requestIdleCallback)(()=>loadScript(props));\n });\n }\n}\nfunction addBeforeInteractiveToCache() {\n const scripts = [\n ...document.querySelectorAll('[data-nscript=\"beforeInteractive\"]'),\n ...document.querySelectorAll('[data-nscript=\"beforePageRender\"]')\n ];\n scripts.forEach((script)=>{\n const cacheKey = script.id || script.getAttribute(\"src\");\n LoadCache.add(cacheKey);\n });\n}\nfunction initScriptLoader(scriptLoaderItems) {\n scriptLoaderItems.forEach(handleClientScriptLoad);\n addBeforeInteractiveToCache();\n}\nfunction Script(props) {\n const { id, src = \"\", onLoad = ()=>{}, onReady = null, strategy = \"afterInteractive\", onError, stylesheets, ...restProps } = props;\n // Context is available only during SSR\n const { updateScripts, scripts, getIsSsr, appDir, nonce } = (0, _react.useContext)(_headmanagercontextsharedruntime.HeadManagerContext);\n /**\n * - First mount:\n * 1. The useEffect for onReady executes\n * 2. hasOnReadyEffectCalled.current is false, but the script hasn't loaded yet (not in LoadCache)\n * onReady is skipped, set hasOnReadyEffectCalled.current to true\n * 3. The useEffect for loadScript executes\n * 4. hasLoadScriptEffectCalled.current is false, loadScript executes\n * Once the script is loaded, the onLoad and onReady will be called by then\n * [If strict mode is enabled / is wrapped in component]\n * 5. The useEffect for onReady executes again\n * 6. hasOnReadyEffectCalled.current is true, so entire effect is skipped\n * 7. The useEffect for loadScript executes again\n * 8. hasLoadScriptEffectCalled.current is true, so entire effect is skipped\n *\n * - Second mount:\n * 1. The useEffect for onReady executes\n * 2. hasOnReadyEffectCalled.current is false, but the script has already loaded (found in LoadCache)\n * onReady is called, set hasOnReadyEffectCalled.current to true\n * 3. The useEffect for loadScript executes\n * 4. The script is already loaded, loadScript bails out\n * [If strict mode is enabled / is wrapped in component]\n * 5. The useEffect for onReady executes again\n * 6. hasOnReadyEffectCalled.current is true, so entire effect is skipped\n * 7. The useEffect for loadScript executes again\n * 8. hasLoadScriptEffectCalled.current is true, so entire effect is skipped\n */ const hasOnReadyEffectCalled = (0, _react.useRef)(false);\n (0, _react.useEffect)(()=>{\n const cacheKey = id || src;\n if (!hasOnReadyEffectCalled.current) {\n // Run onReady if script has loaded before but component is re-mounted\n if (onReady && cacheKey && LoadCache.has(cacheKey)) {\n onReady();\n }\n hasOnReadyEffectCalled.current = true;\n }\n }, [\n onReady,\n id,\n src\n ]);\n const hasLoadScriptEffectCalled = (0, _react.useRef)(false);\n (0, _react.useEffect)(()=>{\n if (!hasLoadScriptEffectCalled.current) {\n if (strategy === \"afterInteractive\") {\n loadScript(props);\n } else if (strategy === \"lazyOnload\") {\n loadLazyScript(props);\n }\n hasLoadScriptEffectCalled.current = true;\n }\n }, [\n props,\n strategy\n ]);\n if (strategy === \"beforeInteractive\" || strategy === \"worker\") {\n if (updateScripts) {\n scripts[strategy] = (scripts[strategy] || []).concat([\n {\n id,\n src,\n onLoad,\n onReady,\n onError,\n ...restProps\n }\n ]);\n updateScripts(scripts);\n } else if (getIsSsr && getIsSsr()) {\n // Script has already loaded during SSR\n LoadCache.add(id || src);\n } else if (getIsSsr && !getIsSsr()) {\n loadScript(props);\n }\n }\n // For the app directory, we need React Float to preload these scripts.\n if (appDir) {\n // Injecting stylesheets here handles beforeInteractive and worker scripts correctly\n // For other strategies injecting here ensures correct stylesheet order\n // ReactDOM.preinit handles loading the styles in the correct order,\n // also ensures the stylesheet is loaded only once and in a consistent manner\n //\n // Case 1: Styles for beforeInteractive/worker with appDir - handled here\n // Case 2: Styles for beforeInteractive/worker with pages dir - Not handled yet\n // Case 3: Styles for afterInteractive/lazyOnload with appDir - handled here\n // Case 4: Styles for afterInteractive/lazyOnload with pages dir - handled in insertStylesheets function\n if (stylesheets) {\n stylesheets.forEach((styleSrc)=>{\n _reactdom.default.preinit(styleSrc, {\n as: \"style\"\n });\n });\n }\n // Before interactive scripts need to be loaded by Next.js' runtime instead\n // of native